Previous 15994 Revisions Next

r4680 Wednesday 13th May, 2009 at 02:45:49 UTC by Nathan Woods
Updated to MAME 0.131u1 core; some drivers disabled
[docs]messnew.txt
[src/build]file2str.c
[src/emu]audit.c cheat.c clifront.c config.c cpuexec.c cpuintrf.h debugger.c devintrf.c devintrf.h drawgfx.c drawgfx.h driver.c driver.h emupal.c inptport.c input.c inputseq.c mame.c mconfig.c memory.c memory.h output.c render.c rendfont.c rendlay.c restrack.c restrack.h romload.c romload.h sound.c state.c streams.c tilemap.c timer.c ui.c uiinput.c uimenu.c validity.c video.c video.h
[src/emu/cpu]drcbec.c drcbex86.c drcfe.c vtlb.c x86log.c
[src/emu/cpu/asap]asap.c
[src/emu/cpu/cop400]cop400.c
[src/emu/cpu/cubeqcpu]cubeqcpu.c
[src/emu/cpu/esrip]esrip.c
[src/emu/cpu/g65816]g65816.c g65816.h g65816op.h
[src/emu/cpu/h83002]h8_16.c h8_8.c h8ops.h
[src/emu/cpu/i386]i386.c
[src/emu/cpu/i8085]i8085.c
[src/emu/cpu/i860]i860.c i860.h i860dec.c
[src/emu/cpu/jaguar]jaguar.c
[src/emu/cpu/konami]konami.c konami.h
[src/emu/cpu/m37710]m37710.c m37710op.h
[src/emu/cpu/m68000]m68000.h m68kcpu.c
[src/emu/cpu/mb86233]mb86233.c
[src/emu/cpu/mc68hc11]mc68hc11.c
[src/emu/cpu/mcs51]mcs51dasm.c
[src/emu/cpu/mips]mips3.c psx.c r3000.c
[src/emu/cpu/se3208]se3208.c
[src/emu/cpu/sh2]sh2.c sh2comn.c
[src/emu/cpu/sh4]sh4.c sh4.h sh4comn.c sh4comn.h
[src/emu/cpu/sharc]sharc.c
[src/emu/cpu/tlcs900]tlcs900.c
[src/emu/cpu/tms32025]tms32025.c
[src/emu/cpu/tms34010]tms34010.c
[src/emu/cpu/z180]z180.c
[src/emu/cpu/z80]z80daisy.c
[src/emu/debug]debugcmt.c debugcon.c debugcpu.c debugvw.c
[src/emu/machine]6522via.c 6526cia.c 6532riot.c 6821pia.c 6850acia.c 68681.c 74123.c 8237dma.c 8255ppi.c 8257dma.c at28c16.c cdp1852.c eepromdev.c f3853.c i2cmem.c i2cmemdev.c idectrl.c intelfsh.c laserdsc.h latch8.c ldcore.c mc146818.c microtch.c msm6242.c pci.c pic8259.c pit8253.c scsi.c smc91c9x.c timekpr.c wd33c93.c x2212.c x76f041.c x76f100.c z80ctc.c z80dma.c z80pio.c z80sio.c
[src/emu/sound]aica.c ay8910.c c140.c cdda.c cem3394.c discrete.c dmadac.c es5506.c filter.c ics2115.c k005289.c k051649.c k053260.c k054539.c namco.c psx.c qsound.c samples.c samples.h scsp.c segapcm.c sid.c sidvoice.c sidvoice.h sn76496.c sp0256.c tms5110.c tms5220.c votrax.c wave.c ymf271.c ymf278b.c ymz280b.c
[src/emu/video]generic.c generic.h mc6845.c poly.c resnet.c s2636.c s2636.h tms34061.c tms9928a.c v9938.c vector.c voodoo.c
[src/ldplayer]ldplayer.c
[src/mame]mame.mak mamedriv.c
[src/mame/audio]8080bw.c amiga.c attckufo.c aztarac.c bzone.c carnival.c cchasm.c cclimber.c cliffhgr.c cyberbal.c dcs.c dkong.c exidy.c exidy440.c fghtbskt.c flower.c galaxian.c geebee.c gomoku.c gottlieb.c harddriv.c irem.c jaguar.c jedi.c leland.c mario.c mcr.c meadows.c n8080.c phoenix.c pleiads.c polepos.c redalert.c redbaron.c segag80r.c segasnd.c seibu.c senjyo.c spacefb.c starwars.c suna8.c tiamc1.c timeplt.c trackfld.c turbo.c warpwarp.c wiping.c
[src/mame/drivers]20pacgal.c 2mindril.c 40love.c 86lions.c 88games.c acefruit.c acommand.c actfancr.c adp.c aerofgt.c airbustr.c aladbl.c alg.c aliens.c alpha68k.c amspdwy.c angelkds.c aquarium.c arabian.c arcadecl.c arcadia.c argus.c arkanoid.c artmagic.c ashnojoe.c asterix.c asteroid.c astinvad.c astrocde.c astrof.c asuka.c atarig1.c atarig42.c atarigt.c atarigx2.c atarisy1.c atarisy2.c ataxx.c atetris.c aztarac.c backfire.c balsente.c baraduke.c batman.c battlane.c battlera.c battlex.c battlnts.c bbusters.c beaminv.c beathead.c berzerk.c bfcobra.c bfm_sc1.c bfm_sc2.c bfmsys85.c big10.c bigevglf.c bigfghtr.c bingoc.c bishi.c bishjan.c bking.c bladestl.c blktiger.c blockhl.c blockout.c blstroid.c blueprnt.c bmcbowl.c bnstars.c boogwing.c bottom9.c boxer.c brkthru.c btime.c btoads.c bublbobl.c buggychl.c buster.c bwidow.c bwing.c bzone.c cabal.c calchase.c capbowl.c carjmbre.c cave.c cball.c cbuster.c ccastles.c cchasm.c cclimber.c centiped.c chaknpop.c cham24.c champbas.c chanbara.c changela.c cheekyms.c chinagat.c chqflag.c cidelsa.c cinemat.c circus.c circusc.c cischeat.c citycon.c cliffhgr.c cloak.c cloud9.c cninja.c cntsteer.c coinmstr.c cojag.c combatsc.c commando.c compgolf.c contra.c coolpool.c coolridr.c cop01.c cosmic.c cowrace.c cps1.c cps2.c cps3.c crbaloon.c crgolf.c crimfght.c crospang.c crshrace.c crystal.c cshooter.c cubeqst.c cubocd32.c cultures.c cvs.c cyberbal.c cybertnk.c dacholer.c dambustr.c darius.c darkhors.c darkmist.c darkseal.c dassault.c dblewing.c dbz.c dcheese.c dcon.c dday.c ddayjlc.c ddealer.c ddenlovr.c ddragon.c ddragon3.c ddrible.c deadang.c dec0.c dec8.c deco156.c deco32.c deco_mlc.c decocass.c deniam.c deshoros.c destroyr.c dgpix.c dietgo.c discoboy.c diverboy.c djboy.c djmain.c dkong.c dlair.c dogfgt.c dooyong.c dorachan.c dotrikun.c dragrace.c dribling.c drmicro.c dunhuang.c dwarfd.c dynax.c egghunt.c enigma2.c eolith.c eolith16.c epos.c equites.c ertictac.c esd16.c esh.c espial.c esripsys.c exedexes.c exerion.c exidy.c exidy440.c exprraid.c exterm.c exzisus.c f1gp.c fantland.c fastfred.c fastlane.c fcombat.c fcrash.c feversoc.c fgoal.c finalizr.c findout.c firebeat.c firetrap.c firetrk.c fitfight.c flkatck.c flower.c flstory.c flyball.c foodf.c forte2.c fortecar.c freekick.c fromanc2.c fromance.c funkybee.c funkyjet.c funworld.c funybubl.c fuukifg2.c fuukifg3.c gaelco.c gaelco2.c gaelco3d.c gaiden.c galaga.c galastrm.c galaxia.c galaxian.c galaxold.c galivan.c galpani2.c galpani3.c galpanic.c galspnbl.c gamecstl.c gameplan.c gaplus.c gauntlet.c gbusters.c gcpinbal.c genesis.c getrivia.c gijoe.c ginganin.c gladiatr.c glass.c gng.c go2000.c goal92.c goindol.c goldstar.c gomoku.c gotcha.c gottlieb.c gotya.c gpworld.c gradius3.c grchamp.c gridlee.c groundfx.c gstream.c gstriker.c gticlub.c guab.c gumbo.c gunbustr.c gundealr.c halleys.c hanaawas.c hanaroku.c hcastle.c hexa.c hexion.c higemaru.c highvdeo.c himesiki.c hnayayoi.c hng64.c holeland.c homedata.c homerun.c hornet.c hotblock.c hshavoc.c hvyunit.c hyhoo.c hyperspt.c hyprduel.c igs017.c igs_blit.c igs_m027.c igspoker.c ilpag.c imolagp.c inufuku.c iqblock.c irobot.c ironhors.c istellar.c itech32.c itech8.c itgambl2.c itgambl3.c itgamble.c jack.c jackal.c jackie.c jalmah.c jangou.c jantotsu.c jchan.c jedi.c jongkyo.c jpmimpct.c jpmsys5.c jrpacman.c junofrst.c kaneko16.c kangaroo.c karnov.c kchamp.c kingdrby.c kingobox.c kingpin.c kinst.c klax.c kncljoe.c koftball.c koikoi.c konamigq.c konamigv.c konamigx.c konamim2.c kopunch.c ksayakyu.c ksys573.c kungfur.c kyugo.c ladybug.c ladyfrog.c laserbas.c laserbat.c lasso.c lastduel.c lastfght.c legionna.c leland.c lemmings.c lethal.c lethalj.c lgp.c liberate.c limenko.c lkage.c lockon.c looping.c lordgun.c lsasquad.c ltcasino.c luckgrln.c lwings.c m10.c m107.c m14.c* m62.c m63.c m72.c m90.c m92.c macrossp.c macs.c madalien.c madmotor.c magicard.c magmax.c mainevt.c mainsnk.c malzak.c mappy.c marinedt.c mario.c markham.c mastboy.c matmania.c maxaflex.c maygay1b.c maygayv1.c mayumi.c mazerbla.c mcatadv.c meadows.c mediagx.c megadriv.c megadriv.h megaplay.c megasys1.c megatech.c megazone.c merit.c meritm.c metlclsh.c metro.c mexico86.c mgolf.c mhavoc.c micro3d.c midvunit.c midzeus.c mikie.c mil4000.c mirage.c mirax.c missb2.c missile.c mitchell.c mjkjidai.c mjsister.c mlanding.c model1.c model2.c model3.c mogura.c momoko.c moo.c mosaic.c mouser.c mpu4.c mpu4drvr.c mquake.c mrflea.c mrjong.c ms32.c msisaac.c mugsmash.c multfish.c multigam.c munchmo.c mustache.c mwarr.c mystston.c mystwarr.c namcofl.c namcoic.c namcona1.c namconb1.c namcos1.c namcos11.c namcos12.c namcos2.c namcos21.c namcos22.c namcos23.c namcos86.c naomi.c naughtyb.c nbmj8688.c nbmj8891.c nbmj8991.c nbmj9195.c nemesis.c neodrvr.c neogeo.c news.c nightgal.c ninjakd2.c ninjaw.c niyanpai.c nmg5.c nmk16.c norautp.c nova2001.c nwk-tr.c nycaptor.c nyny.c offtwall.c ohmygod.c ojankohs.c olibochu.c omegrace.c oneshot.c onetwo.c opwolf.c orbit.c othldrby.c othunder.c overdriv.c pacland.c pacman.c pandoras.c panicr.c paradise.c parodius.c pasha2.c pass.c pbaction.c pcat_nit.c pcktgal.c pcxt.c pengo.c peplus.c pgm.c phoenix.c pingpong.c pipedrm.c pipeline.c pirates.c pitnrun.c pkscram.c pktgaldx.c plygonet.c pntnpuzl.c pokechmp.c polepos.c policetr.c polyplay.c poolshrk.c pooyan.c popeye.c popper.c powerins.c ppmast93.c prehisle.c progolf.c psikyo.c psikyo4.c psikyosh.c psychic5.c pturn.c puckpkmn.c punchout.c pushman.c qdrmfgp.c qix.c quizdna.c quizo.c quizpani.c quizpun2.c r2dtank.c rabbit.c raiden.c raiden2.c rainbow.c rallyx.c rampart.c rastan.c rcorsair.c re900.c redalert.c redclash.c relief.c renegade.c retofinv.c rmhaihai.c rockrage.c rocnrope.c rohga.c rollerg.c rollrace.c roul.c royalmah.c rpunch.c runaway.c rungun.c safarir.c sandscrp.c sangho.c sauro.c sbasketb.c sbowling.c sbrkout.c sbugger.c scotrsht.c scregg.c seattle.c segac2.c segae.c segae.h segag80r.c segag80v.c segahang.c segaorun.c segas16a.c segas16b.c segas18.c segas24.c segas32.c segaxbd.c segaybd.c seibuspi.c seicross.c senjyo.c seta.c seta2.c sf.c sfbonus.c sfkick.c sg1000a.c shadfrce.c shangha3.c shanghai.c shangkid.c shaolins.c shisen.c shootout.c shougi.c shuuz.c sidearms.c sidepckt.c silkroad.c simpl156.c simpsons.c skimaxx.c* skullxbo.c skyarmy.c skyfox.c skykid.c skylncr.c skyraid.c slapfght.c slapshot.c sliver.c slotcarn.c snesb.c snk.c snk68.c snowbros.c solomon.c sonson.c sothello.c spacefb.c spbactn.c spcforce.c spdodgeb.c speedspn.c spiders.c splash.c spool99.c sprcros2.c sprint2.c sprint4.c sprint8.c spy.c srmp2.c srmp5.c srmp6.c srumbler.c ssf2md.c ssfindo.c sshangha.c ssingles.c sslam.c ssozumo.c sspeedr.c ssv.c st0016.c stactics.c stadhero.c starcrus.c starshp1.c starwars.c statriv2.c strnskil.c stv.c stvinit.c suna16.c suna8.c supbtime.c superchs.c superdq.c superqix.c supertnk.c suprgolf.c suprloco.c suprnova.c suprridr.c suprslam.c surpratk.c system1.c system16.c system18.c tagteam.c tail2nos.c taito_b.c taito_f2.c taito_f3.c taito_h.c taito_l.c taito_o.c* taito_x.c taito_z.c taitoair.c taitogn.c taitojc.c taitosj.c taitowlf.c tank8.c tankbatt.c tankbust.c taotaido.c tatsumi.c tbowl.c tcl.c tecmo.c tecmo16.c tecmosys.c tehkanwc.c tempest.c terracre.c tetrisp2.c thayers.c thedeep.c thepit.c thunderj.c thunderx.c tiamc1.c tickee.c tigeroad.c timelimt.c timeplt.c tmaster.c tmnt.c tnzs.c toaplan1.c toaplan2.c toki.c tomcat.c topshoot.c topspeed.c toratora.c toypop.c tp84.c trackfld.c travrusa.c triplhnt.c trucocl.c trvmadns.c trvquest.c tryout.c tsamurai.c ttchamp.c tubep.c tugboat.c tumbleb.c tumblep.c turbo.c tutankhm.c twin16.c twincobr.c twins.c tx1.c uapce.c ultraman.c ultratnk.c ultrsprt.c undrfire.c upscope.c usgames.c vamphalf.c vaportra.c vastar.c vball.c vcombat.c vegaeo.c vegas.c vendetta.c vicdual.c videopin.c videopkr.c vigilant.c vindictr.c viper.c volfied.c wardner.c warpwarp.c warriorb.c wc90.c wc90b.c wecleman.c welltris.c wgp.c wheelfir.c williams.c wink.c wiping.c witch.c wiz.c wolfpack.c wwfsstar.c wwfwfest.c xain.c xexex.c xmen.c xxmissio.c xybots.c xyonix.c yumefuda.c yunsun16.c yunsung8.c zaccaria.c zaxxon.c zerozone.c zn.c zodiack.c zr107.c
[src/mame/includes]atari.h espial.h esripsys.h genesis.h gottlieb.h konamipt.h lockon.h lordgun.h* model1.h namcoic.h namcos2.h namcos22.h naomi.h ninjakd2.h nmk16.h pitnrun.h slapfght.h
[src/mame/machine]ajax.c amiga.c archimds.c arkanoid.c asic65.c asteroid.c atari.c atari_vg.c atarifb.c atarigen.c bagman.c balsente.c beezer.c bigevglf.c bublbobl.c buggychl.c carpolo.c cclimber.c cps2crpt.c cubocd32.c dc.c dec0.c deco102.c deco156.c decocass.c decocrpt.c docastle.c fd1089.c fddebug.c flstory.c galaxold.c harddriv.c irobot.c jackal.c kabuki.c konami1.c konamigx.c konppc.c leland.c lkage.c lsasquad.c mathbox.c mc8123.c mexico86.c mhavoc.c midtunit.c midwunit.c midyunit.c model1.c mw8080bw.c n64.c namco50.c namcond1.c namcos1.c namcos2.c naomi.c naomibd.c nb1413m3.c neoboot.c neocrypt.c neoprot.c nycaptor.c opwolf.c pitnrun.c playch10.c qix.c rainbow.c retofinv.c s16fd.c s24fd.c scramble.c scudsp.c segacrpt.c segaic16.c segas32.c seicop.c simpsons.c slapfght.c slikshot.c snes.c snesdsp1.c starwars.c stfight.c stvcd.c stvprot.c system16.c taitosj.c tatsumi.c ticket.c tnzs.c toaplan1.c twincobr.c tx1.c vertigo.c volfied.c vsnes.c williams.c xevious.c zs01.c
[src/mame/video]1942.c 20pacgal.c 40love.c aeroboto.c aliens.c amiga.c amigaaga.c arabian.c argus.c arkanoid.c armedf.c astrocde.c atari.c atarigt.c atarimo.c atarirle.c atarisy1.c atarisy2.c attckufo.c balsente.c battlane.c battlera.c beathead.c bfm_adr2.c bfm_dm01.c bigevglf.c bionicc.c blktiger.c blstroid.c btime.c btoads.c bwing.c capbowl.c carpolo.c cave.c cbasebal.c cchasm.c changela.c cidelsa.c cinemat.c circus.c cloak.c cloud9.c combatsc.c commando.c contra.c cps1.c crgolf.c crimfght.c crshrace.c cvs.c darius.c dc.c dcheese.c dec0.c dec8.c deco16ic.c deco32.c deco_mlc.c decocass.c dkong.c dogfgt.c dooyong.c dotrikun.c drmicro.c dynax.c dynduke.c eolith.c equites.c espial.c esripsys.c exedexes.c exerion.c exidy.c exidy440.c exterm.c flstory.c fromanc2.c fromance.c fuukifg3.c gaelco2.c gaelco3d.c gaiden.c galastrm.c galaxian.c galaxold.c galpani2.c gameplan.c genesis.c ginganin.c glass.c gng.c goal92.c goldstar.c gottlieb.c gradius3.c grchamp.c gridlee.c groundfx.c gtia.c gticlub.c gunbustr.c harddriv.c hd63484.c hd63484.h himesiki.c hnayayoi.c hng64.c homedata.c hyprduel.c irobot.c itech32.c jagobj.c jaguar.c jedi.c kan_pand.c kaneko16.c kangaroo.c karnov.c konamiic.c ladyfrog.c lastduel.c legionna.c leland.c lemmings.c lethalj.c liberate.c liberatr.c lockon.c lordgun.c lwings.c m10.c m107.c m3raster.c m58.c m72.c m92.c macrossp.c madalien.c madmotor.c magmax.c malzak.c mario.c matmania.c mayumi.c mcatadv.c mcr68.c megasys1.c megazone.c metlclsh.c metro.c midtunit.c midvunit.c midyunit.c midzeus.c midzeus2.c mitchell.c mjsister.c model1.c model2.c model2rd.c model3.c mole.c mrdo.c mrjong.c munchmo.c mystston.c mystwarr.c n64.c namcofl.c namcona1.c namconb1.c namcos1.c namcos2.c namcos21.c namcos22.c naughtyb.c nbmj8688.c nbmj8891.c nbmj8991.c nbmj9195.c nemesis.c neogeo.c ninjakd2.c ninjaw.c niyanpai.c nmk16.c nycaptor.c ojankohs.c othldrby.c othunder.c pacland.c pastelg.c pgm.c phoenix.c pitnrun.c playch10.c policetr.c popeye.c ppu2c0x.c psikyo.c psikyosh.c psx.c psychic5.c qix.c quasar.c quizdna.c realbrk.c redalert.c rohga.c rpunch.c sauro.c segag80r.c segaic16.c segaic24.c segas18.c segas32.c segasyse.c segaybd.c seibuspi.c seta2.c shadfrce.c sidearms.c simpl156.c simpsons.c skydiver.c skyraid.c slapshot.c spacefb.c spbactn.c speedspn.c splash.c srumbler.c sshangha.c ssv.c st0016.c stactics.c stadhero.c starcrus.c starshp1.c stvvdp1.c stvvdp2.c suna16.c suna8.c superchs.c superqix.c suprnova.c system1.c taito_b.c taito_f2.c taito_f3.c taito_o.c* taitoic.c taitojc.c taitosj.c taotaido.c tatsumi.c tceptor.c tecmo16.c thepit.c thief.c thoop2.c tia.c tiamc1.c tigeroad.c tmnt.c toaplan1.c toaplan2.c toki.c toobin.c tryout.c tubep.c tunhunt.c turbo.c twin16.c twincobr.c tx1.c undrfire.c vdc.c victory.c vigilant.c vindictr.c volfied.c vsnes.c wecleman.c williams.c wolfpack.c xmen.c zaxxon.c
[src/mess]artworkx.c eventlst.c eventlst.h image.c inputx.c mess.c mess.mak messdriv.c mscommon.c uimess.c
[src/mess/audio]lynx.c mac.c ted7360.c vic6560.c
[src/mess/devices]bitbngr.c thomflop.c ti99cart.c
[src/mess/drivers]a2600.c a7800.c abc80.c abc80x.c adam.c ami1200.c amiga.c amstrad.c apexc.c aquarius.c atari.c atarist.c atom.c avigo.c bbc.c bw2.c c128.c c16.c c64.c c65.c coco.c comquest.c cybiko.c dgn_beta.c einstein.c exelv.c ip22.c kc.c kyocera.c lviv.c lynx.c mbee.c msx.c nc.c newbrain.c oric.c osborne1.c osi.c pcw.c pcw16.c pentagon.c pet.c pmd85.c pp01.c ql.c rt1715.c saturn.c scorpion.c sg1000.c sms.c spc1000.c specpls3.c svi318.c ti85.c timex.c tmc1800.c tmc2000e.c tmc600.c vc4000.c vector06.c vip.c vtech2.c x68k.c z88.c
[src/mess/formats]csw_cas.c thom_cas.c tzx_cas.c uef_cas.c
[src/mess/includes]msx_slot.h
[src/mess/machine]99_usbsm.c a7800.c abcbus.c advision.c aim65.c amigacrt.c amigakbd.c amstrad.c apple1.c apple2.c apple2gs.c apple3.c at45dbxx.c ataricrt.c ay3600.c b2m.c bebox.c c128.c c16.c c64.c c65.c cgenie.c comx35.c electron.c galaxy.c gamecom.c gb.c genesis.c hp48.c i82439tx.c i8271.c kaypro.c kc.c lisa.c llc.c lviv.c lynx.c mc10.c mpc105.c mpc105.h msx.c msx_slot.c mtx.c mz700.c nascom1.c nec765.c nes.c odyssey2.c ondra.c oric.c orion.c osborne1.c partner.c pc.c pc1251.c pc1350.c pc8801.c pc_fdc.c pc_hdc.c pc_turbo.c pce.c pdp1.c pecom.c pet.c pk8020.c pmd85.c primo.c radio86.c smartmed.c sms.c snescart.c special.c sst39vfx.c strata.c svi318.c sym1.c ti85.c ti99_4x.c trs80.c vc1541.c vector06.c vtech1.c vtech2.c wswan.c z1013.c zx.c zx8302.c
[src/mess/osd/winui]swconfig.c
[src/mess/tools/castool]stubs.c
[src/mess/video]733_asr.c abc800.c abc802.c abc806.c advision.c aim65.c apple2.c apple2gs.c apple3.c arcadia.c avigo.c cdp1861.c cdp1862.c cdp1864.c cgenie.c channelf.c coco3.c comx35.c cpschngr.c crt.c crt.h crtc6845.c hd66421.c i82720.c k1ge.c kc.c m6847.c mekd2.c microtan.c newport.c odyssey2.c pc8801.c pc_cga.c pc_ega.c pc_mda.c pc_vga.c pdp1.c pecom.c pocketc.c smsvdp.c special.c spectrum.c ssystem3.c ted7360.c ti85.c tmc600.c tms3556.c tms3556.h tx0.c vc4000.c vdc8563.c vic6560.c vic6567.c x68k.c
[src/osd/windows]d3d8intf.c d3d9intf.c debugwin.c drawd3d.c drawdd.c drawgdi.c input.c ledutil.c output.c video.c winalloc.c window.c windows.mak winprefix.h
[src/tools]chdman.c jedutil.c ldresample.c ldverify.c regrep.c romcmp.c src2html.c

src/build/file2str.c
r4679r4680
8080   }
8181
8282   /* write the initial header */
83   fprintf(dst, "extern const %s %s[];\n", type, varname);
8384   fprintf(dst, "const %s %s[] =\n{\n\t", type, varname);
8485
8586   /* write out the data */
src/mame/audio/cchasm.c
r4679r4680
3333{
3434   sound_flags |= 0x40;
3535   soundlatch4_w(space, offset, data);
36   cpu_set_input_line(space->machine->cpu[0], 1, HOLD_LINE);
36   cputag_set_input_line(space->machine, "maincpu", 1, HOLD_LINE);
3737}
3838
3939WRITE16_HANDLER( cchasm_io_w )
r4679r4680
5252         sound_flags |= 0x80;
5353         soundlatch2_w (space, offset, data);
5454         z80ctc_trg2_w (ctc, 0, 1);
55         cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_NMI, PULSE_LINE);
55         cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
5656         break;
5757      case 2:
5858         led = data;
r4679r4680
8686
8787static void ctc_interrupt (const device_config *device, int state)
8888{
89   cpu_set_input_line(device->machine->cpu[1], 0, state);
89   cputag_set_input_line(device->machine, "audiocpu", 0, state);
9090}
9191
9292static WRITE8_DEVICE_HANDLER( ctc_timer_1_w )
src/mame/audio/suna8.c
r4679r4680
5151   int i, len = memory_region_length(machine, "samples");
5252   UINT8 *ROM = memory_region(machine, "samples");
5353
54   samplebuf = auto_malloc(len * sizeof(samplebuf[0]));
54   samplebuf = auto_alloc_array(machine, INT16, len);
5555
5656   for(i=0;i<len;i++)
5757      samplebuf[i] = (INT8)(ROM[i] ^ 0x80) * 256;
src/mame/audio/spacefb.c
r4679r4680
3838{
3939   const device_config *samples = devtag_get_device(space->machine, "samples");
4040
41   cpu_set_input_line(space->machine->cpu[1], 0, (data & 0x02) ? CLEAR_LINE : ASSERT_LINE);
41   cputag_set_input_line(space->machine, "audiocpu", 0, (data & 0x02) ? CLEAR_LINE : ASSERT_LINE);
4242
4343   /* enemy killed */
4444   if (!(data & 0x01) && (spacefb_sound_latch & 0x01))  sample_start(samples, 0,0,0);
src/mame/audio/warpwarp.c
r4679r4680
208208   running_machine *machine = device->machine;
209209   int i;
210210
211   decay = (INT16 *) auto_malloc(32768 * sizeof(INT16));
211   decay = auto_alloc_array(machine, INT16, 32768);
212212
213213    for( i = 0; i < 0x8000; i++ )
214214      decay[0x7fff-i] = (INT16) (0x7fff/exp(1.0*i/4096));
src/mame/audio/jaguar.c
r4679r4680
191191
192192void jaguar_dsp_suspend(running_machine *machine)
193193{
194   cpu_suspend(machine->cpu[2], SUSPEND_REASON_SPIN, 1);
194   cputag_suspend(machine, "audiocpu", SUSPEND_REASON_SPIN, 1);
195195}
196196
197197
198198void jaguar_dsp_resume(running_machine *machine)
199199{
200   cpu_resume(machine->cpu[2], SUSPEND_REASON_SPIN);
200   cputag_resume(machine, "audiocpu", SUSPEND_REASON_SPIN);
201201}
202202
203203
r4679r4680
212212{
213213   if (gpu_irq_state & dsp_regs[JINTCTRL] & 0x1f)
214214   {
215      cpu_set_input_line(machine->cpu[1], 1, ASSERT_LINE);
215      cputag_set_input_line(machine, "gpu", 1, ASSERT_LINE);
216216      jaguar_gpu_resume(machine);
217217   }
218218   else
219      cpu_set_input_line(machine->cpu[1], 1, CLEAR_LINE);
219      cputag_set_input_line(machine, "gpu", 1, CLEAR_LINE);
220220}
221221
222222
r4679r4680
270270   }
271271
272272#if ENABLE_SPEEDUP_HACKS
273   memory_install_write32_handler(cpu_get_address_space(machine->cpu[2], ADDRESS_SPACE_PROGRAM), 0xf1a100, 0xf1a103, 0, 0, dsp_flags_w);
273   memory_install_write32_handler(cputag_get_address_space(machine, "audiocpu", ADDRESS_SPACE_PROGRAM), 0xf1a100, 0xf1a103, 0, 0, dsp_flags_w);
274274#endif
275275}
276276
r4679r4680
362362static WRITE32_HANDLER( dsp_flags_w )
363363{
364364   /* write the data through */
365   jaguardsp_ctrl_w(space->machine->cpu[2], offset, data, mem_mask);
365   jaguardsp_ctrl_w(cputag_get_cpu(space->machine, "audiocpu"), offset, data, mem_mask);
366366
367367   /* if they were clearing the A2S interrupt, see if we are headed for the spin */
368368   /* loop with R22 != 0; if we are, just start spinning again */
369   if (space->cpu == space->machine->cpu[2] && ACCESSING_BITS_8_15 && (data & 0x400))
369   if (space->cpu == cputag_get_cpu(space->machine, "audiocpu") && ACCESSING_BITS_8_15 && (data & 0x400))
370370   {
371371      /* see if we're going back to the spin loop */
372372      if (!(data & 0x04000) && cpu_get_reg(space->cpu, JAGUAR_R22) != 0)
r4679r4680
393393static TIMER_CALLBACK( serial_chunky_callback )
394394{
395395   /* assert the A2S IRQ on CPU #2 (DSP) */
396   cpu_set_input_line(machine->cpu[2], 1, ASSERT_LINE);
396   cputag_set_input_line(machine, "audiocpu", 1, ASSERT_LINE);
397397   jaguar_dsp_resume(machine);
398398
399399   /* fix flaky code in interrupt handler which thwarts our speedup */
r4679r4680
412412static TIMER_CALLBACK( serial_callback )
413413{
414414   /* assert the A2S IRQ on CPU #2 (DSP) */
415   cpu_set_input_line(machine->cpu[2], 1, ASSERT_LINE);
415   cputag_set_input_line(machine, "audiocpu", 1, ASSERT_LINE);
416416   jaguar_dsp_resume(machine);
417417}
418418
r4679r4680
468468         break;
469469   }
470470}
471
472
src/mame/audio/phoenix.c
r4679r4680
524524   int i, j;
525525   UINT32 shiftreg;
526526
527   poly18 = (UINT32 *)auto_malloc((1ul << (18-5)) * sizeof(UINT32));
527   poly18 = auto_alloc_array(machine, UINT32, 1ul << (18-5));
528528
529529    shiftreg = 0;
530530   for( i = 0; i < (1ul << (18-5)); i++ )
src/mame/audio/n8080.c
r4679r4680
201201   }
202202   if (changes & ((1 << 0x2) | (1 << 0x3) | (1 << 0x5)))
203203   {
204      generic_pulse_irq_line(machine->cpu[1], 0);
204      generic_pulse_irq_line(cputag_get_cpu(machine, "audiocpu"), 0);
205205   }
206206}
207207
r4679r4680
225225   }
226226   if (changes & ((1 << 0x2) | (1 << 0x3) | (1 << 0x5)))
227227   {
228      generic_pulse_irq_line(machine->cpu[1], 0);
228      generic_pulse_irq_line(cputag_get_cpu(machine, "audiocpu"), 0);
229229   }
230230}
231231
r4679r4680
240240
241241   if (changes & (1 << 6))
242242   {
243      generic_pulse_irq_line(machine->cpu[1], 0);
243      generic_pulse_irq_line(cputag_get_cpu(machine, "audiocpu"), 0);
244244   }
245245}
246246
src/mame/audio/amiga.c
r4679r4680
8282
8383static TIMER_CALLBACK( signal_irq )
8484{
85   amiga_custom_w(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), REG_INTREQ, 0x8000 | (0x80 << param), 0xffff);
85   amiga_custom_w(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), REG_INTREQ, 0x8000 | (0x80 << param), 0xffff);
8686}
8787
8888
r4679r4680
124124
125125static STREAM_UPDATE( amiga_stream_update )
126126{
127   amiga_audio *audio = param;
127   amiga_audio *audio = (amiga_audio *)param;
128128   int channum, sampoffs = 0;
129129
130130   /* if all DMA off, disable all channels */
r4679r4680
267267   int i;
268268
269269   /* allocate a new audio state */
270   audio_state = device->token;
270   audio_state = (amiga_audio *)device->token;
271271   for (i = 0; i < 4; i++)
272272   {
273273      audio_state->channel[i].index = i;
src/mame/audio/timeplt.c
r4679r4680
110110   if (timeplt_last_irq_state == 0 && data)
111111   {
112112      /* setting bit 0 low then high triggers IRQ on the sound CPU */
113      cpu_set_input_line_and_vector(space->machine->cpu[1],0,HOLD_LINE,0xff);
113      cputag_set_input_line_and_vector(space->machine, "tpsound", 0, HOLD_LINE, 0xff);
114114   }
115115
116116   timeplt_last_irq_state = data;
src/mame/audio/cyberbal.c
r4679r4680
6363   memory_set_bankptr(space->machine, 8, &bank_base[0x1000 * ((data >> 6) & 3)]);
6464   coin_counter_w(1, (data >> 5) & 1);
6565   coin_counter_w(0, (data >> 4) & 1);
66   cpu_set_input_line(space->machine->cpu[3], INPUT_LINE_RESET, (data & 0x08) ? CLEAR_LINE : ASSERT_LINE);
66   cputag_set_input_line(space->machine, "dac", INPUT_LINE_RESET, (data & 0x08) ? CLEAR_LINE : ASSERT_LINE);
6767   if (!(data & 0x01)) devtag_reset(space->machine, "ym");
6868}
6969
r4679r4680
9797
9898static void update_sound_68k_interrupts(running_machine *machine)
9999{
100   cpu_set_input_line(machine->cpu[3], 6, fast_68k_int ? ASSERT_LINE : CLEAR_LINE);
101   cpu_set_input_line(machine->cpu[3], 2, io_68k_int   ? ASSERT_LINE : CLEAR_LINE);
100   cputag_set_input_line(machine, "dac", 6, fast_68k_int ? ASSERT_LINE : CLEAR_LINE);
101   cputag_set_input_line(machine, "dac", 2, io_68k_int   ? ASSERT_LINE : CLEAR_LINE);
102102}
103103
104104
src/mame/audio/galaxian.c
r4679r4680
197197   sample_set_volume(device, CHANNEL_LFO+1, LFO_VOLUME);
198198   sample_set_volume(device, CHANNEL_LFO+2, LFO_VOLUME);
199199
200   noisewave = auto_malloc(NOISE_LENGTH * sizeof(INT16));
200   noisewave = auto_alloc_array(machine, INT16, NOISE_LENGTH);
201201
202202#define SHOOT_SEC 2
203203   shoot_rate = machine->sample_rate;
204204   shoot_length = SHOOT_SEC * shoot_rate;
205   shootwave = auto_malloc(shoot_length * sizeof(INT16));
205   shootwave = auto_alloc_array(machine, INT16, shoot_length);
206206
207207   /*
208208     * The RNG shifter is clocked with RNG_RATE, bit 17 is
src/mame/audio/trackfld.c
r4679r4680
8686    if (last == 0 && data)
8787    {
8888        /* setting bit 0 low then high triggers IRQ on the sound CPU */
89        cpu_set_input_line_and_vector(space->machine->cpu[1],0,HOLD_LINE,0xff);
89        cputag_set_input_line_and_vector(space->machine, "audiocpu", 0, HOLD_LINE, 0xff);
9090    }
9191
9292    last = data;
src/mame/audio/turbo.c
r4679r4680
7373WRITE8_DEVICE_HANDLER( turbo_sound_a_w )
7474{
7575   const device_config *samples = devtag_get_device(device->machine, "samples");
76   turbo_state *state = device->machine->driver_data;
76   turbo_state *state = (turbo_state *)device->machine->driver_data;
7777   UINT8 diff = data ^ state->sound_state[0];
7878   state->sound_state[0] = data;
7979
r4679r4680
122122WRITE8_DEVICE_HANDLER( turbo_sound_b_w )
123123{
124124   const device_config *samples = devtag_get_device(device->machine, "samples");
125   turbo_state *state = device->machine->driver_data;
125   turbo_state *state = (turbo_state *)device->machine->driver_data;
126126   UINT8 diff = data ^ state->sound_state[1];
127127   state->sound_state[1] = data;
128128
r4679r4680
145145WRITE8_DEVICE_HANDLER( turbo_sound_c_w )
146146{
147147   const device_config *samples = devtag_get_device(device->machine, "samples");
148   turbo_state *state = device->machine->driver_data;
148   turbo_state *state = (turbo_state *)device->machine->driver_data;
149149
150150   /* OSEL1-2 */
151151   state->turbo_osel = (state->turbo_osel & 1) | ((data & 3) << 1);
r4679r4680
295295
296296WRITE8_DEVICE_HANDLER( subroc3d_sound_a_w )
297297{
298   turbo_state *state = device->machine->driver_data;
298   turbo_state *state = (turbo_state *)device->machine->driver_data;
299299   state->sound_state[0] = data;
300300
301301   /* DIS0-3 contained in bits 0-3 */
r4679r4680
326326WRITE8_DEVICE_HANDLER( subroc3d_sound_b_w )
327327{
328328   const device_config *samples = devtag_get_device(device->machine, "samples");
329   turbo_state *state = device->machine->driver_data;
329   turbo_state *state = (turbo_state *)device->machine->driver_data;
330330   UINT8 diff = data ^ state->sound_state[1];
331331   state->sound_state[1] = data;
332332
r4679r4680
382382WRITE8_DEVICE_HANDLER( subroc3d_sound_c_w )
383383{
384384   const device_config *samples = devtag_get_device(device->machine, "samples");
385   turbo_state *state = device->machine->driver_data;
385   turbo_state *state = (turbo_state *)device->machine->driver_data;
386386   UINT8 diff = data ^ state->sound_state[2];
387387   state->sound_state[2] = data;
388388
r4679r4680
507507WRITE8_DEVICE_HANDLER( buckrog_sound_a_w )
508508{
509509   const device_config *samples = devtag_get_device(device->machine, "samples");
510   turbo_state *state = device->machine->driver_data;
510   turbo_state *state = (turbo_state *)device->machine->driver_data;
511511   UINT8 diff = data ^ state->sound_state[0];
512512   state->sound_state[0] = data;
513513
r4679r4680
533533WRITE8_DEVICE_HANDLER( buckrog_sound_b_w )
534534{
535535   const device_config *samples = devtag_get_device(device->machine, "samples");
536   turbo_state *state = device->machine->driver_data;
536   turbo_state *state = (turbo_state *)device->machine->driver_data;
537537   UINT8 diff = data ^ state->sound_state[1];
538538   state->sound_state[1] = data;
539539
src/mame/audio/redbaron.c
r4679r4680
172172{
173173   int i;
174174
175   vol_lookup = (INT16 *)auto_malloc(32768 * sizeof(INT16));
175   vol_lookup = auto_alloc_array(device->machine, INT16, 32768);
176176   for( i = 0; i < 0x8000; i++ )
177177      vol_lookup[0x7fff-i] = (INT16) (0x7fff/exp(1.0*i/4096));
178178
src/mame/audio/senjyo.c
r4679r4680
7676   running_machine *machine = device->machine;
7777   int i;
7878
79   _single = (INT16 *)auto_malloc(SINGLE_LENGTH*2);
79   _single = auto_alloc_array(machine, INT16, SINGLE_LENGTH);
8080
8181   for (i = 0;i < SINGLE_LENGTH;i++)      /* freq = ctc2 zco / 8 */
8282      _single[i] = ((i/SINGLE_DIVIDER)&0x01)*127*256;
src/mame/audio/exidy440.c
r4679r4680
166166
167167   /* allocate the sample cache */
168168   length = memory_region_length(machine, "cvsd") * 16 + MAX_CACHE_ENTRIES * sizeof(sound_cache_entry);
169   sound_cache = auto_malloc(length);
169   sound_cache = (sound_cache_entry *)auto_alloc_array(machine, UINT8, length);
170170
171171   /* determine the hard end of the cache and reset */
172172   sound_cache_max = (sound_cache_entry *)((UINT8 *)sound_cache + length);
173173   reset_sound_cache();
174174
175175   /* allocate the mixer buffer */
176   mixer_buffer_left = auto_malloc(2 * device->clock * sizeof(INT32));
176   mixer_buffer_left = auto_alloc_array(machine, INT32, 2 * device->clock);
177177   mixer_buffer_right = mixer_buffer_left + device->clock;
178178
179179   if (SOUND_LOG)
r4679r4680
339339static READ8_HANDLER( sound_command_r )
340340{
341341   /* clear the FIRQ that got us here and acknowledge the read to the main CPU */
342   cpu_set_input_line(space->machine->cpu[1], 1, CLEAR_LINE);
342   cputag_set_input_line(space->machine, "audiocpu", 1, CLEAR_LINE);
343343   exidy440_sound_command_ack = 1;
344344
345345   return exidy440_sound_command;
r4679r4680
375375
376376static WRITE8_HANDLER( sound_interrupt_clear_w )
377377{
378   cpu_set_input_line(space->machine->cpu[1], 0, CLEAR_LINE);
378   cputag_set_input_line(space->machine, "audiocpu", 0, CLEAR_LINE);
379379}
380380
381381
r4679r4680
774774   int chunk_start;
775775
776776   /* compute the charge, decay, and leak constants */
777   charge = pow(exp(-1), 1.0 / (FILTER_CHARGE_TC * (double)frequency));
778   decay = pow(exp(-1), 1.0 / (FILTER_DECAY_TC * (double)frequency));
779   leak = pow(exp(-1), 1.0 / (INTEGRATOR_LEAK_TC * (double)frequency));
777   charge = pow(exp(-1.0), 1.0 / (FILTER_CHARGE_TC * (double)frequency));
778   decay = pow(exp(-1.0), 1.0 / (FILTER_DECAY_TC * (double)frequency));
779   leak = pow(exp(-1.0), 1.0 / (INTEGRATOR_LEAK_TC * (double)frequency));
780780
781781   /* compute the gain */
782782   gain = SAMPLE_GAIN;
src/mame/audio/bzone.c
r4679r4680
274274{
275275   int i;
276276
277   discharge = (INT16 *)auto_malloc(32768 * sizeof(INT16));
277   discharge = auto_alloc_array(device->machine, INT16, 32768);
278278   for( i = 0; i < 0x8000; i++ )
279279      discharge[0x7fff-i] = (INT16) (0x7fff/exp(1.0*i/4096));
280280
src/mame/audio/cclimber.c
r4679r4680
1818   running_machine *machine = device->machine;
1919   samplebuf = 0;
2020   if (memory_region(machine, "samples"))
21      samplebuf = auto_malloc(sizeof(*samplebuf)*2*memory_region_length(machine, "samples"));
21      samplebuf = auto_alloc_array(machine, INT16, 2 * memory_region_length(machine, "samples"));
2222}
2323
2424
src/mame/audio/mcr.c
r4679r4680
6969/* Chip Squeak Deluxe-specific globals */
7070static const device_config *csdeluxe_sound_cpu;
7171static UINT8 csdeluxe_status;
72static const pia6821_interface csdeluxe_pia_intf;
7372
7473/* Turbo Chip Squeak-specific globals */
7574static const device_config *turbocs_sound_cpu;
7675static UINT8 turbocs_status;
77static const pia6821_interface turbocs_pia_intf;
7876
7977/* Sounds Good-specific globals */
8078static const device_config *soundsgood_sound_cpu;
8179static UINT8 soundsgood_status;
82static const pia6821_interface soundsgood_pia_intf;
8380
8481/* Squawk n' Talk-specific globals */
8582static const device_config *squawkntalk_sound_cpu;
8683static UINT8 squawkntalk_tms_command;
8784static UINT8 squawkntalk_tms_strobes;
88static const pia6821_interface squawkntalk_pia0_intf;
89static const pia6821_interface squawkntalk_pia1_intf;
9085
9186
9287
src/mame/audio/cliffhgr.c
r4679r4680
2525   8
2626};
2727
28DISCRETE_SOUND_EXTERN(cliffhgr);
29
2830DISCRETE_SOUND_START(cliffhgr)
2931   DISCRETE_INPUT_LOGIC(CLIFF_ENABLE_SND_1)
3032   DISCRETE_INPUT_LOGIC(CLIFF_ENABLE_SND_2)
src/mame/audio/segasnd.c
r4679r4680
214214   speech_latch = data;
215215
216216   /* the high bit goes directly to the INT line */
217   cpu_set_input_line(machine->cpu[1], 0, (data & 0x80) ? CLEAR_LINE : ASSERT_LINE);
217   cputag_set_input_line(machine, "audiocpu", 0, (data & 0x80) ? CLEAR_LINE : ASSERT_LINE);
218218
219219   /* a clock on the high bit clocks a 1 into T0 */
220220   if (!(old & 0x80) && (data & 0x80))
r4679r4680
650650   assert(usb.cpu != NULL);
651651
652652   /* allocate work RAM */
653   usb.work_ram = auto_malloc(0x400);
653   usb.work_ram = auto_alloc_array(machine, UINT8, 0x400);
654654
655655   /* create a sound stream */
656656   usb.stream = stream_create(device, 0, 1, SAMPLE_RATE, NULL, usb_stream_update);
src/mame/audio/aztarac.c
r4679r4680
2323      soundlatch_w(space, offset, data);
2424      sound_status ^= 0x21;
2525      if (sound_status & 0x20)
26         cpu_set_input_line(space->machine->cpu[1], 0, HOLD_LINE);
26         cputag_set_input_line(space->machine, "audiocpu", 0, HOLD_LINE);
2727   }
2828}
2929
r4679r4680
5151    if (sound_status & 0x10)
5252        cpu_set_input_line(device,0,HOLD_LINE);
5353}
54
55
src/mame/audio/irem.c
r4679r4680
4040   if ((data & 0x80) == 0)
4141      soundlatch_w(space, 0, data & 0x7f);
4242   else
43      cpu_set_input_line(space->machine->cpu[1], 0, ASSERT_LINE);
43      cputag_set_input_line(space->machine, "iremsound", 0, ASSERT_LINE);
4444}
4545
4646
r4679r4680
152152
153153static WRITE8_HANDLER( sound_irq_ack_w )
154154{
155   cpu_set_input_line(space->machine->cpu[1], 0, CLEAR_LINE);
155   cputag_set_input_line(space->machine, "iremsound", 0, CLEAR_LINE);
156156}
157157
158158
r4679r4680
191191{
192192   const device_config *msm2 = devtag_get_device(device->machine, "msm2");
193193
194   cpu_set_input_line(device->machine->cpu[1], INPUT_LINE_NMI, PULSE_LINE);
194   cputag_set_input_line(device->machine, "iremsound", INPUT_LINE_NMI, PULSE_LINE);
195195
196196   /* the first MSM5205 clocks the second */
197197   if (msm2 != NULL)
198198   {
199      msm5205_vclk_w(msm2,1);
200      msm5205_vclk_w(msm2,0);
199      msm5205_vclk_w(msm2, 1);
200      msm5205_vclk_w(msm2, 0);
201201   }
202202}
203203
src/mame/audio/wiping.c
r4679r4680
5252
5353
5454/* build a table to divide by the number of voices; gain is specified as gain*16 */
55static void make_mixer_table(int voices, int gain)
55static void make_mixer_table(running_machine *machine, int voices, int gain)
5656{
5757   int count = voices * 128;
5858   int i;
5959
6060   /* allocate memory */
61   mixer_table = auto_malloc(256 * voices * sizeof(INT16));
61   mixer_table = auto_alloc_array(machine, INT16, 256 * voices);
6262
6363   /* find the middle of the table */
6464   mixer_lookup = mixer_table + (128 * voices);
r4679r4680
167167   stream = stream_create(device, 0, 1, samplerate, NULL, wiping_update_mono);
168168
169169   /* allocate a pair of buffers to mix into - 1 second's worth should be more than enough */
170   mixer_buffer = auto_malloc(2 * sizeof(short) * samplerate);
170   mixer_buffer = auto_alloc_array(machine, short, 2 * samplerate);
171171   mixer_buffer_2 = mixer_buffer + samplerate;
172172
173173   /* build the mixer table */
174   make_mixer_table(8, defgain);
174   make_mixer_table(device->machine, 8, defgain);
175175
176176   /* extract globals from the interface */
177177   num_voices = 8;
src/mame/audio/meadows.c
r4679r4680
6868      /* amplitude is a combination of the upper 4 bits of 0c01 */
6969      /* and bit 4 merged from S2650's flag output */
7070      amp = ((meadows_0c03 & ENABLE_CTR1) == 0) ? 0 : (meadows_0c01 & 0xf0) >> 1;
71      if( cpu_get_reg(machine->cpu[0], S2650_FO) )
71      if( cpu_get_reg(cputag_get_cpu(machine, "maincpu"), S2650_FO) )
7272         amp += 0x80;
7373      /* calculate frequency for counter #1 */
7474      /* bit 0..3 of 0c01 are ctr preset */
src/mame/audio/leland.c
r4679r4680
142142   dac_stream = stream_create(device, 0, 1, 256*60, NULL, leland_update);
143143
144144   /* allocate memory */
145   dac_buffer[0] = auto_malloc(DAC_BUFFER_SIZE);
146   dac_buffer[1] = auto_malloc(DAC_BUFFER_SIZE);
145   dac_buffer[0] = auto_alloc_array(device->machine, UINT8, DAC_BUFFER_SIZE);
146   dac_buffer[1] = auto_alloc_array(device->machine, UINT8, DAC_BUFFER_SIZE);
147147}
148148
149149
r4679r4680
380380
381381static STREAM_UPDATE( leland_80186_dma_update )
382382{
383   const address_space *dmaspace = param;
383   const address_space *dmaspace = (const address_space *)param;
384384   stream_sample_t *buffer = outputs[0];
385385   int i, j;
386386
r4679r4680
651651   if (LOG_INTERRUPTS) logerror("(%f) **** Acknowledged interrupt vector %02X\n", attotime_to_double(timer_get_time(device->machine)), i80186.intr.poll_status & 0x1f);
652652
653653   /* clear the interrupt */
654   device_set_info_int(device, CPUINFO_INT_INPUT_STATE + 0, CLEAR_LINE);
654   cpu_set_info(device, CPUINFO_INT_INPUT_STATE + 0, CLEAR_LINE);
655655   i80186.intr.pending = 0;
656656
657657   /* clear the request and set the in-service bit */
r4679r4680
759759   /* generate the appropriate interrupt */
760760   i80186.intr.poll_status = 0x8000 | new_vector;
761761   if (!i80186.intr.pending)
762      cpu_set_input_line(machine->cpu[2], 0, ASSERT_LINE);
762      cputag_set_input_line(machine, "audiocpu", 0, ASSERT_LINE);
763763   i80186.intr.pending = 1;
764764   if (LOG_INTERRUPTS) logerror("(%f) **** Requesting interrupt vector %02X\n", attotime_to_double(timer_get_time(machine)), new_vector);
765765}
r4679r4680
16951695   }
16961696
16971697   /* /RESET */
1698   cpu_set_input_line(space->machine->cpu[2], INPUT_LINE_RESET, data & 0x80  ? CLEAR_LINE : ASSERT_LINE);
1698   cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_RESET, data & 0x80  ? CLEAR_LINE : ASSERT_LINE);
16991699
17001700   /* /NMI */
17011701/*  If the master CPU doesn't get a response by the time it's ready to send
17021702    the next command, it uses an NMI to force the issue; unfortunately, this
17031703    seems to really screw up the sound system. It turns out it's better to
17041704    just wait for the original interrupt to occur naturally */
1705/*  cpu_set_input_line(space->machine->cpu[2], INPUT_LINE_NMI, data & 0x40  ? CLEAR_LINE : ASSERT_LINE);*/
1705/*  cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, data & 0x40  ? CLEAR_LINE : ASSERT_LINE);*/
17061706
17071707   /* INT0 */
17081708   if (data & 0x20)
r4679r4680
17771777static TIMER_CALLBACK( delayed_response_r )
17781778{
17791779   int checkpc = param;
1780   int pc = cpu_get_reg(machine->cpu[0], Z80_PC);
1781   int oldaf = cpu_get_reg(machine->cpu[0], Z80_AF);
1780   int pc = cpu_get_reg(cputag_get_cpu(machine, "master"), Z80_PC);
1781   int oldaf = cpu_get_reg(cputag_get_cpu(machine, "master"), Z80_AF);
17821782
17831783   /* This is pretty cheesy, but necessary. Since the CPUs run in round-robin order,
17841784       synchronizing on the write to this register from the slave side does nothing.
r4679r4680
17911791      if (LOG_COMM) logerror("(Updated sound response latch to %02X)\n", sound_response);
17921792
17931793      oldaf = (oldaf & 0x00ff) | (sound_response << 8);
1794      cpu_set_reg(machine->cpu[0], Z80_AF, oldaf);
1794      cpu_set_reg(cputag_get_cpu(machine, "master"), Z80_AF, oldaf);
17951795   }
17961796   else
17971797      logerror("ERROR: delayed_response_r - current PC = %04X, checkPC = %04X\n", pc, checkpc);
src/mame/audio/carnival.c
r4679r4680
4444
4545
4646#define   PSG_CLOCK      (3579545 / 3)   /* Hz */
47#define CPU_MUSIC_ID    (1)             /* music CPU id number */
4847
4948
5049/* output port 0x01 definitions - sound effect drive outputs */
r4679r4680
237236
238237   if ( bitsGoneHigh & OUT_PORT_2_MUSIC_RESET )
239238      /* reset output is no longer asserted active low */
240      cpu_set_input_line(space->machine->cpu[CPU_MUSIC_ID], INPUT_LINE_RESET, PULSE_LINE );
239      cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_RESET, PULSE_LINE );
241240}
242241
243242
src/mame/audio/gomoku.c
r4679r4680
5353
5454
5555/* build a table to divide by the number of voices; gain is specified as gain*16 */
56static void make_mixer_table(int voices, int gain)
56static void make_mixer_table(running_machine *machine, int voices, int gain)
5757{
5858   int count = voices * 128;
5959   int i;
6060
6161   /* allocate memory */
62   mixer_table = auto_malloc(256 * voices * sizeof(INT16));
62   mixer_table = auto_alloc_array(machine, INT16, 256 * voices);
6363
6464   /* find the middle of the table */
6565   mixer_lookup = mixer_table + (128 * voices);
r4679r4680
170170   stream = stream_create(device, 0, 1, samplerate, NULL, gomoku_update_mono);
171171
172172   /* allocate a pair of buffers to mix into - 1 second's worth should be more than enough */
173   mixer_buffer = auto_malloc(2 * sizeof(short) * samplerate);
173   mixer_buffer = auto_alloc_array(machine, short, 2 * samplerate);
174174   mixer_buffer_2 = mixer_buffer + samplerate;
175175
176176   /* build the mixer table */
177   make_mixer_table(8, defgain);
177   make_mixer_table(machine, 8, defgain);
178178
179179   /* extract globals from the interface */
180180   num_voices = MAX_VOICES;
src/mame/audio/dkong.c
r4679r4680
304304
305305static DISCRETE_STEP( dkong_custom_mixer )
306306{
307   struct dkong_custom_mixer_context *context = node->context;
307   struct dkong_custom_mixer_context *context = (struct dkong_custom_mixer_context *)node->context;
308308
309309   int      in_1    = (int)DKONG_CUSTOM_IN1;
310310
r4679r4680
323323
324324static DISCRETE_RESET( dkong_custom_mixer )
325325{
326   struct dkong_custom_mixer_context *context = node->context;
326   struct dkong_custom_mixer_context *context = (struct dkong_custom_mixer_context *)node->context;
327327
328328   /* everything is based on the input to the O.C. inverter */
329329   /* precalculate current from In1 */
r4679r4680
975975
976976static SOUND_START( dkong)
977977{
978   dkong_state *state = machine->driver_data;
978   dkong_state *state = (dkong_state *)machine->driver_data;
979979
980980   state->snd_rom = memory_region(machine, "soundcpu");
981981   state->dev_vp2 = devtag_get_device(machine, "virtual_p2");
r4679r4680
11061106
11071107static READ8_DEVICE_HANDLER( dkong_tune_r )
11081108{
1109   dkong_state *state = device->machine->driver_data;
1109   dkong_state *state = (dkong_state *)device->machine->driver_data;
11101110   UINT8 page = latch8_r(state->dev_vp2,0) & 0x47;
11111111
11121112   if ( page & 0x40 )
r4679r4680
11351135WRITE8_HANDLER( dkong_audio_irq_w )
11361136{
11371137   if (data)
1138      cpu_set_input_line(space->machine->cpu[1], 0, ASSERT_LINE);
1138      cputag_set_input_line(space->machine, "soundcpu", 0, ASSERT_LINE);
11391139   else
1140      cpu_set_input_line(space->machine->cpu[1], 0, CLEAR_LINE);
1140      cputag_set_input_line(space->machine, "soundcpu", 0, CLEAR_LINE);
11411141}
11421142
11431143
src/mame/audio/harddriv.c
r4679r4680
5353{
5454   rombase = (UINT8 *)memory_region(machine, "serialroms");
5555   romsize = memory_region_length(machine, "serialroms");
56   comram = (UINT16 *)auto_malloc(0x400);
56   comram = auto_alloc_array(machine, UINT16, 0x400/2);
5757   last_bio_cycles = 0;
5858}
5959
src/mame/audio/seibu.c
r4679r4680
105105void seibu_sound_decrypt(running_machine *machine,const char *cpu,int length)
106106{
107107   const address_space *space = cputag_get_address_space(machine, cpu, ADDRESS_SPACE_PROGRAM);
108   UINT8 *decrypt = auto_malloc(length);
108   UINT8 *decrypt = auto_alloc_array(machine, UINT8, length);
109109   UINT8 *rom = memory_region(machine, cpu);
110110   int i;
111111
r4679r4680
144144
145145static STREAM_UPDATE( seibu_adpcm_callback )
146146{
147   seibu_adpcm_state *state = param;
147   seibu_adpcm_state *state = (seibu_adpcm_state *)param;
148148   stream_sample_t *dest = outputs[0];
149149
150150   while (state->playing && samples > 0)
r4679r4680
172172static DEVICE_START( seibu_adpcm )
173173{
174174   running_machine *machine = device->machine;
175   seibu_adpcm_state *state = device->token;
175   seibu_adpcm_state *state = (seibu_adpcm_state *)device->token;
176176
177177   state->playing = 0;
178178   state->stream = stream_create(device, 0, 1, device->clock, state, seibu_adpcm_callback);
r4679r4680
215215
216216WRITE8_DEVICE_HANDLER( seibu_adpcm_adr_w )
217217{
218   seibu_adpcm_state *state = device->token;
218   seibu_adpcm_state *state = (seibu_adpcm_state *)device->token;
219219
220220   if (state->stream)
221221      stream_update(state->stream);
r4679r4680
232232
233233WRITE8_DEVICE_HANDLER( seibu_adpcm_ctl_w )
234234{
235   seibu_adpcm_state *state = device->token;
235   seibu_adpcm_state *state = (seibu_adpcm_state *)device->token;
236236
237237   // sequence is 00 02 01 each time.
238238   if (state->stream)
src/mame/audio/geebee.c
r4679r4680
116116   running_machine *machine = device->machine;
117117   int i;
118118
119   decay = (UINT16 *)auto_malloc(32768 * sizeof(INT16));
119   decay = auto_alloc_array(machine, UINT16, 32768);
120120
121121    for( i = 0; i < 0x8000; i++ )
122122      decay[0x7fff-i] = (INT16) (0x7fff/exp(1.0*i/4096));
src/mame/audio/fghtbskt.c
r4679r4680
2424   int i, len = memory_region_length(machine, "samples");
2525   UINT8 *ROM = memory_region(machine, "samples");
2626
27   samplebuf = auto_malloc(len * 2);
27   samplebuf = auto_alloc_array(machine, INT16, len);
2828
2929   for(i=0;i<len;i++)
3030      samplebuf[i] = ((INT8)(ROM[i] ^ 0x80)) * 256;
src/mame/audio/tiamc1.c
r4679r4680
246246
247247static STREAM_UPDATE( tiamc1_sound_update )
248248{
249   int count, o0, o1, o2, len, or = 0;
249   int count, o0, o1, o2, len, orval = 0;
250250
251251   len = samples * CLOCK_DIVIDER;
252252
r4679r4680
271271      o1 = timer8253_get_output(&timer0, 1) ? 1 : 0;
272272      o2 = timer8253_get_output(&timer0, 2) ? 1 : 0;
273273
274      or = (or << 1) | (((o0 | o1) ^ 0xff) & o2);
274      orval = (orval << 1) | (((o0 | o1) ^ 0xff) & o2);
275275
276276      if ((count + 1) % CLOCK_DIVIDER == 0) {
277         outputs[0][count / CLOCK_DIVIDER] = or ? 0x2828 : 0;
278         or = 0;
277         outputs[0][count / CLOCK_DIVIDER] = orval ? 0x2828 : 0;
278         orval = 0;
279279      }
280280   }
281281}
src/mame/audio/segag80r.c
r4679r4680
946946        D3    = /INT line
947947    */
948948   n7751_command = data & 0x07;
949   cpu_set_input_line(device->machine->cpu[1], 0, ((data & 0x08) == 0) ? ASSERT_LINE : CLEAR_LINE);
949   cputag_set_input_line(device->machine, "audiocpu", 0, ((data & 0x08) == 0) ? ASSERT_LINE : CLEAR_LINE);
950950   cpuexec_boost_interleave(device->machine, attotime_zero, ATTOTIME_IN_USEC(100));
951951}
952952
src/mame/audio/pleiads.c
r4679r4680
459459   int i, j;
460460   UINT32 shiftreg;
461461
462   poly18 = (UINT32 *)auto_malloc((1ul << (18-5)) * sizeof(UINT32));
462   poly18 = auto_alloc_array(machine, UINT32, 1ul << (18-5));
463463
464464   shiftreg = 0;
465465   for( i = 0; i < (1ul << (18-5)); i++ )
src/mame/audio/flower.c
r4679r4680
5252
5353
5454/* build a table to divide by the number of voices; gain is specified as gain*16 */
55static void make_mixer_table(int voices, int gain)
55static void make_mixer_table(running_machine *machine, int voices, int gain)
5656{
5757   int count = voices * 128;
5858   int i;
5959
6060   /* allocate memory */
61   mixer_table = auto_malloc(256 * voices * sizeof(INT16));
61   mixer_table = auto_alloc_array(machine, INT16, 256 * voices);
6262
6363   /* find the middle of the table */
6464   mixer_lookup = mixer_table + (128 * voices);
r4679r4680
162162   stream = stream_create(device, 0, 1, samplerate, 0, flower_update_mono);
163163
164164   /* allocate a pair of buffers to mix into - 1 second's worth should be more than enough */
165   mixer_buffer = auto_malloc(2 * sizeof(short) * samplerate);
165   mixer_buffer = auto_alloc_array(device->machine, short, 2 * samplerate);
166166   mixer_buffer_2 = mixer_buffer + samplerate;
167167
168168   /* build the mixer table */
169   make_mixer_table(8, defgain);
169   make_mixer_table(machine, 8, defgain);
170170
171171   /* extract globals from the interface */
172172   num_voices = 8;
src/mame/audio/redalert.c
r4679r4680
4343static UINT8 ay8910_latch_1;
4444static UINT8 ay8910_latch_2;
4545
46static UINT8 ay8910_latch_1;
4746
4847
49
5048/*************************************
5149 *
5250 *  Read Alert analog sounds
r4679r4680
8381   /* D7 is also connected to the NMI input of the CPU -
8482       the NMI is actually toggled by a 74121 */
8583   if ((data & 0x80) == 0x00)
86      cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_NMI, PULSE_LINE);
84      cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
8785}
8886
8987
r4679r4680
166164WRITE8_HANDLER( redalert_voice_command_w )
167165{
168166   soundlatch2_w(space, 0, (data & 0x78) >> 3);
169   cpu_set_input_line(space->machine->cpu[2], I8085_RST75_LINE, (~data & 0x80) ? ASSERT_LINE : CLEAR_LINE);
167   cputag_set_input_line(space->machine, "voice", I8085_RST75_LINE, (~data & 0x80) ? ASSERT_LINE : CLEAR_LINE);
170168}
171169
172170
r4679r4680
293291{
294292   /* the byte is connected to port A of the AY8910 */
295293   soundlatch_w(space, 0, data);
296   cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_NMI, PULSE_LINE);
294   cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
297295}
298296
299297
src/mame/audio/starwars.c
r4679r4680
6565
6666static void snd_interrupt(const device_config *device, int state)
6767{
68   cpu_set_input_line(device->machine->cpu[1], M6809_IRQ_LINE, state);
68   cputag_set_input_line(device->machine, "audiocpu", M6809_IRQ_LINE, state);
6969}
7070
7171
r4679r4680
148148   riot6532_porta_in_set(riot, 0x00, 0xc0);
149149
150150   /* reset sound CPU here  */
151   cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_RESET, PULSE_LINE);
151   cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_RESET, PULSE_LINE);
152152}
src/mame/audio/mario.c
r4679r4680
190190
191191static DISCRETE_STEP( mario_custom_run )
192192{
193   struct mario_custom_run_context *context = node->context;
193   struct mario_custom_run_context *context = (struct mario_custom_run_context *)node->context;
194194
195195   double   t1   = 0.5 / LS624_F(MARIO_CUSTOM_C1, MARIO_CUSTOM_IN1, RUN_VCO_VOLTAGE);
196196   double   t2   = 0.5 / LS624_F(MARIO_CUSTOM_C2, MARIO_CUSTOM_IN2, RUN_VCO_VOLTAGE);
r4679r4680
248248
249249static DISCRETE_RESET( mario_custom_run )
250250{
251   struct mario_custom_run_context *context = node->context;
251   struct mario_custom_run_context *context = (struct mario_custom_run_context *)node->context;
252252
253253   context->remain1 = 0.0;
254254   context->remain2 = 0.0;
r4679r4680
363363
364364static void set_ea(const address_space *space, int ea)
365365{
366   mario_state   *state = space->machine->driver_data;
366   mario_state   *state = (mario_state *)space->machine->driver_data;
367367   //printf("ea: %d\n", ea);
368368   //cputag_set_input_line(machine, "audiocpu", MCS48_INPUT_EA, (ea) ? ASSERT_LINE : CLEAR_LINE);
369369   if (state->eabank != 0)
r4679r4680
378378
379379static SOUND_START( mario )
380380{
381   mario_state   *state = machine->driver_data;
381   mario_state   *state = (mario_state *)machine->driver_data;
382382   const device_config *audiocpu = cputag_get_cpu(machine, "audiocpu");
383383#if USE_8039
384384   UINT8 *SND = memory_region(machine, "audiocpu");
r4679r4680
390390   if (audiocpu != NULL && cpu_get_type(audiocpu) != CPU_Z80)
391391   {
392392      state->eabank = 1;
393      memory_install_read8_handler(cpu_get_address_space(audiocpu, ADDRESS_SPACE_PROGRAM), 0x000, 0x7ff, 0, 0, SMH_BANK1);
393      memory_install_read8_handler(cpu_get_address_space(audiocpu, ADDRESS_SPACE_PROGRAM), 0x000, 0x7ff, 0, 0, (read8_space_func)SMH_BANK(1));
394394      memory_configure_bank(machine, 1, 0, 1, memory_region(machine, "audiocpu"), 0);
395395       memory_configure_bank(machine, 1, 1, 1, memory_region(machine, "audiocpu") + 0x1000, 0x800);
396396   }
r4679r4680
401401
402402static SOUND_RESET( mario )
403403{
404   mario_state   *state = machine->driver_data;
405   const address_space *space = cpu_get_address_space(machine->cpu[1], ADDRESS_SPACE_PROGRAM);
404   mario_state   *state = (mario_state *)machine->driver_data;
405   const address_space *space = cputag_get_address_space(machine, "audiocpu", ADDRESS_SPACE_PROGRAM);
406406
407407#if USE_8039
408408    set_ea(machine, 1);
r4679r4680
480480
481481WRITE8_HANDLER( masao_sh_irqtrigger_w )
482482{
483   mario_state   *state = space->machine->driver_data;
483   mario_state   *state = (mario_state *)space->machine->driver_data;
484484
485485   if (state->last == 1 && data == 0)
486486   {
r4679r4680
513513/* Misc samples */
514514WRITE8_HANDLER( mario_sh3_w )
515515{
516   mario_state   *state = space->machine->driver_data;
516   mario_state   *state = (mario_state *)space->machine->driver_data;
517517
518518   switch (offset)
519519   {
src/mame/audio/gottlieb.c
r4679r4680
9696
9797static void snd_interrupt(const device_config *device, int state)
9898{
99   cpu_set_input_line(device->machine->cpu[1], M6502_IRQ_LINE, state);
99   cputag_set_input_line(device->machine, "audiocpu", M6502_IRQ_LINE, state);
100100}
101101
102102
r4679r4680
109109static void r6532_portb_w(const device_config *device, UINT8 newdata, UINT8 olddata)
110110{
111111   /* unsure if this is ever used, but the NMI is connected to the RIOT's PB7 */
112   cpu_set_input_line(device->machine->cpu[1], INPUT_LINE_NMI, (newdata & 0x80) ? CLEAR_LINE : ASSERT_LINE);
112   cputag_set_input_line(device->machine, "audiocpu", INPUT_LINE_NMI, (newdata & 0x80) ? CLEAR_LINE : ASSERT_LINE);
113113}
114114
115115
r4679r4680
222222/* callback for the timer */
223223static TIMER_CALLBACK( gottlieb_nmi_generate )
224224{
225   cpu_set_input_line(machine->cpu[1],INPUT_LINE_NMI,PULSE_LINE);
225   cputag_set_input_line(machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
226226}
227227
228228
src/mame/audio/dcs.c
r4679r4680
997997   /* supports both RAM and ROM variants */
998998   if (dram_in_mb != 0)
999999   {
1000      dcs.sounddata = auto_malloc(dram_in_mb << 20);
1000      dcs.sounddata = auto_alloc_array(machine, UINT16, dram_in_mb << (20-1));
10011001      dcs.sounddata_words = (dram_in_mb << 20) / 2;
10021002   }
10031003   else
r4679r4680
10101010      memory_configure_bank(machine, 20, 0, dcs.sounddata_banks, dcs.sounddata, soundbank_words*2);
10111011
10121012   /* allocate memory for the SRAM */
1013   dcs_sram = auto_malloc(0x8000*4);
1013   dcs_sram = auto_alloc_array(machine, UINT16, 0x8000*4/2);
10141014
10151015   /* create the timers */
10161016   dcs.internal_timer = timer_alloc(machine, internal_timer_callback, NULL);
r4679r4680
11141114   /* if SRAM disabled, clean it out */
11151115   if (SDRC_SM_EN == 0)
11161116   {
1117      memory_install_readwrite32_handler(dcs.program, 0x0800, 0x3fff, 0, 0, SMH_UNMAP, SMH_UNMAP);
1118      memory_install_readwrite16_handler(dcs.data, 0x0800, 0x37ff, 0, 0, SMH_UNMAP, SMH_UNMAP);
1117      memory_install_readwrite32_handler(dcs.program, 0x0800, 0x3fff, 0, 0, (read32_space_func)SMH_UNMAP, (write32_space_func)SMH_UNMAP);
1118      memory_install_readwrite16_handler(dcs.data, 0x0800, 0x37ff, 0, 0, (read16_space_func)SMH_UNMAP, (write16_space_func)SMH_UNMAP);
11191119   }
11201120
11211121   /* otherwise, map the SRAM */
11221122   else
11231123   {
11241124      /* first start with a clean program map */
1125      memory_install_readwrite32_handler(dcs.program, 0x0800, 0x3fff, 0, 0, SMH_BANK21, SMH_BANK21);
1125      memory_install_readwrite32_handler(dcs.program, 0x0800, 0x3fff, 0, 0, (read32_space_func)SMH_BANK(21), (write32_space_func)SMH_BANK(21));
11261126      memory_set_bankptr(machine, 21, dcs_sram + 0x4800);
11271127
11281128      /* set up the data map based on the SRAM banking */
11291129      /* map 0: ram from 0800-37ff */
11301130      if (SDRC_SM_BK == 0)
11311131      {
1132         memory_install_readwrite16_handler(dcs.data, 0x0800, 0x17ff, 0, 0, SMH_BANK22, SMH_BANK22);
1133         memory_install_readwrite16_handler(dcs.data, 0x1800, 0x27ff, 0, 0, SMH_BANK23, SMH_BANK23);
1134         memory_install_readwrite16_handler(dcs.data, 0x2800, 0x37ff, 0, 0, SMH_BANK24,  SMH_BANK24);
1132         memory_install_readwrite16_handler(dcs.data, 0x0800, 0x17ff, 0, 0, (read16_space_func)SMH_BANK(22), (write16_space_func)SMH_BANK(22));
1133         memory_install_readwrite16_handler(dcs.data, 0x1800, 0x27ff, 0, 0, (read16_space_func)SMH_BANK(23), (write16_space_func)SMH_BANK(23));
1134         memory_install_readwrite16_handler(dcs.data, 0x2800, 0x37ff, 0, 0, (read16_space_func)SMH_BANK(24), (write16_space_func)SMH_BANK(24));
11351135         memory_set_bankptr(machine, 22, dcs_sram + 0x0000);
11361136         memory_set_bankptr(machine, 23, dcs_sram + 0x1000);
11371137         memory_set_bankptr(machine, 24, dcs_sram + 0x2000);
r4679r4680
11401140      /* map 1: nothing from 0800-17ff, alternate RAM at 1800-27ff, same RAM at 2800-37ff */
11411141      else
11421142      {
1143         memory_install_readwrite16_handler(dcs.data, 0x0800, 0x17ff, 0, 0, SMH_UNMAP, SMH_UNMAP);
1144         memory_install_readwrite16_handler(dcs.data, 0x1800, 0x27ff, 0, 0, SMH_BANK23, SMH_BANK23);
1145         memory_install_readwrite16_handler(dcs.data, 0x2800, 0x37ff, 0, 0, SMH_BANK24, SMH_BANK24);
1143         memory_install_readwrite16_handler(dcs.data, 0x0800, 0x17ff, 0, 0, (read16_space_func)SMH_UNMAP, (write16_space_func)SMH_UNMAP);
1144         memory_install_readwrite16_handler(dcs.data, 0x1800, 0x27ff, 0, 0, (read16_space_func)SMH_BANK(23), (write16_space_func)SMH_BANK(23));
1145         memory_install_readwrite16_handler(dcs.data, 0x2800, 0x37ff, 0, 0, (read16_space_func)SMH_BANK(24), (write16_space_func)SMH_BANK(24));
11461146         memory_set_bankptr(machine, 23, dcs_sram + 0x3000);
11471147         memory_set_bankptr(machine, 24, dcs_sram + 0x2000);
11481148      }
r4679r4680
11531153   {
11541154      int baseaddr = (SDRC_ROM_ST == 0) ? 0x0000 : (SDRC_ROM_ST == 1) ? 0x3000 : 0x3400;
11551155      int pagesize = (SDRC_ROM_SZ == 0 && SDRC_ROM_ST != 0) ? 4096 : 1024;
1156      memory_install_read16_handler(dcs.data, baseaddr, baseaddr + pagesize - 1, 0, 0, SMH_BANK25);
1156      memory_install_read16_handler(dcs.data, baseaddr, baseaddr + pagesize - 1, 0, 0, (read16_space_func)SMH_BANK(25));
11571157   }
11581158
11591159   /* map the DRAM page as bank 26 */
11601160   if (SDRC_DM_ST != 0)
11611161   {
11621162      int baseaddr = (SDRC_DM_ST == 1) ? 0x0000 : (SDRC_DM_ST == 2) ? 0x3000 : 0x3400;
1163      memory_install_readwrite16_handler(dcs.data, baseaddr, baseaddr + 0x3ff, 0, 0, SMH_BANK26, SMH_BANK26);
1163      memory_install_readwrite16_handler(dcs.data, baseaddr, baseaddr + 0x3ff, 0, 0, (read16_space_func)SMH_BANK(26), (write16_space_func)SMH_BANK(26));
11641164   }
11651165
11661166   /* update the bank pointers */
src/mame/audio/jedi.c
r4679r4680
2222
2323static SOUND_START( jedi )
2424{
25   jedi_state *state = machine->driver_data;
25   jedi_state *state = (jedi_state *)machine->driver_data;
2626
2727   /* set up save state */
2828   state_save_register_global(machine, state->audio_latch);
r4679r4680
4040
4141static SOUND_RESET( jedi )
4242{
43   jedi_state *state = machine->driver_data;
43   jedi_state *state = (jedi_state *)machine->driver_data;
4444
4545   /* init globals */
4646   state->audio_latch = 0;
r4679r4680
6060
6161static WRITE8_HANDLER( irq_ack_w )
6262{
63   cpu_set_input_line(space->machine->cpu[1], M6502_IRQ_LINE, CLEAR_LINE);
63   cputag_set_input_line(space->machine, "audiocpu", M6502_IRQ_LINE, CLEAR_LINE);
6464}
6565
6666
r4679r4680
7373
7474WRITE8_HANDLER( jedi_audio_reset_w )
7575{
76   cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_RESET, (data & 1) ? CLEAR_LINE : ASSERT_LINE);
76   cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_RESET, (data & 1) ? CLEAR_LINE : ASSERT_LINE);
7777}
7878
7979
8080static TIMER_CALLBACK( delayed_audio_latch_w )
8181{
82   jedi_state *state = machine->driver_data;
82   jedi_state *state = (jedi_state *)machine->driver_data;
8383
8484   state->audio_latch = param;
8585   *state->audio_comm_stat |= 0x80;
r4679r4680
9494
9595static READ8_HANDLER( audio_latch_r )
9696{
97   jedi_state *state = space->machine->driver_data;
97   jedi_state *state = (jedi_state *)space->machine->driver_data;
9898
9999   *state->audio_comm_stat &= ~0x80;
100100   return state->audio_latch;
r4679r4680
103103
104104CUSTOM_INPUT( jedi_audio_comm_stat_r )
105105{
106   jedi_state *state = field->port->machine->driver_data;
106   jedi_state *state = (jedi_state *)field->port->machine->driver_data;
107107   return *state->audio_comm_stat >> 6;
108108}
109109
r4679r4680
117117
118118READ8_HANDLER( jedi_audio_ack_latch_r )
119119{
120   jedi_state *state = space->machine->driver_data;
120   jedi_state *state = (jedi_state *)space->machine->driver_data;
121121
122122   *state->audio_comm_stat &= ~0x40;
123123   return state->audio_ack_latch;
r4679r4680
126126
127127static WRITE8_HANDLER( audio_ack_latch_w )
128128{
129   jedi_state *state = space->machine->driver_data;
129   jedi_state *state = (jedi_state *)space->machine->driver_data;
130130
131131   state->audio_ack_latch = data;
132132   *state->audio_comm_stat |= 0x40;
r4679r4680
142142
143143static WRITE8_HANDLER( speech_strobe_w )
144144{
145   jedi_state *state = space->machine->driver_data;
145   jedi_state *state = (jedi_state *)space->machine->driver_data;
146146   int new_speech_strobe_state = (~offset >> 8) & 1;
147147
148148   if ((new_speech_strobe_state != state->speech_strobe_state) && new_speech_strobe_state)
src/mame/audio/attckufo.c
r4679r4680
219219   noisesize = NOISE_FREQUENCY_MAX * NOISE_BUFFER_SIZE_SEC;
220220   noisepos = 0;
221221   noisesamples = 1;
222   noise = (INT8*) auto_malloc (noisesize * sizeof (noise[0]));
222   noise = auto_alloc_array(device->machine, INT8, noisesize);
223223   {
224224      int noiseshift = 0x7ffff8;
225225      char data;
r4679r4680
254254   tone1pos = tone2pos = tone3pos = 0;
255255   tone1samples = tone2samples = tone3samples = 1;
256256
257   tone = (INT16*) auto_malloc (tonesize * sizeof (tone[0]));
257   tone = auto_alloc_array(device->machine, INT16, tonesize);
258258
259259   for (i = 0; i < tonesize; i++)
260260   {
src/mame/audio/polepos.c
r4679r4680
6262   }
6363
6464   /* determine the effective clock rate */
65   clock = (cpu_get_clock(device->machine->cpu[0]) / 16) * ((sample_msb + 1) * 64 + sample_lsb + 1) / (64*64);
65   clock = (cputag_get_clock(device->machine, "maincpu") / 16) * ((sample_msb + 1) * 64 + sample_lsb + 1) / (64*64);
6666   step = (clock << 12) / OUTPUT_RATE;
6767
6868   /* determine the volume */
src/mame/audio/exidy.c
r4679r4680
114114static WRITE_LINE_DEVICE_HANDLER( update_irq_state )
115115{
116116   const device_config *pia = devtag_get_device(device->machine, "pia1");
117   cpu_set_input_line(device->machine->cpu[1], M6502_IRQ_LINE, (pia6821_get_irq_b(pia) | riot_irq_state) ? ASSERT_LINE : CLEAR_LINE);
117   cputag_set_input_line(device->machine, "audiocpu", M6502_IRQ_LINE, (pia6821_get_irq_b(pia) | riot_irq_state) ? ASSERT_LINE : CLEAR_LINE);
118118}
119119
120120
r4679r4680
462462static void r6532_porta_w(const device_config *device, UINT8 newdata, UINT8 olddata)
463463{
464464   if (has_mc3417)
465      cpu_set_input_line(device->machine->cpu[2], INPUT_LINE_RESET, (newdata & 0x10) ? CLEAR_LINE : ASSERT_LINE);
465      cputag_set_input_line(device->machine, "cvsd", INPUT_LINE_RESET, (newdata & 0x10) ? CLEAR_LINE : ASSERT_LINE);
466466}
467467
468468
src/mame/audio/8080bw.c
r4679r4680
920920
921921static STATE_POSTLOAD( schaser_reinit_555_time_remain )
922922{
923    const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
923    const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
924924    schaser_effect_555_time_remain = double_to_attotime(schaser_effect_555_time_remain_savable);
925925    schaser_sh_port_2_w(space, 0, port_2_last_extra);
926926}
r4679r4680
943943
944944MACHINE_RESET( schaser )
945945{
946   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
946   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
947947   schaser_effect_555_is_low = 0;
948948   timer_adjust_oneshot(schaser_effect_555_timer, attotime_never, 0);
949949   schaser_sh_port_1_w(space, 0, 0);
src/mame/machine/nycaptor.c
r4679r4680
5656   if ((ddrB & 0x02) && (~data & 0x02) && (portB_out & 0x02))
5757   {
5858      portA_in = from_main;
59      if (main_sent) cpu_set_input_line(space->machine->cpu[3],0,CLEAR_LINE);
59      if (main_sent) cputag_set_input_line(space->machine, "mcu", 0, CLEAR_LINE);
6060      main_sent = 0;
6161
6262   }
r4679r4680
103103
104104   from_main = data;
105105   main_sent = 1;
106   cpu_set_input_line(space->machine->cpu[3],0,ASSERT_LINE);
106   cputag_set_input_line(space->machine, "mcu", 0, ASSERT_LINE);
107107}
108108
109109READ8_HANDLER( nycaptor_mcu_r )
src/mame/machine/rainbow.c
r4679r4680
821821
822822   for (i = 0; i < 8; i++)
823823   {
824      CRAM[i] = auto_malloc(0x400);
824      CRAM[i] = auto_alloc_array(machine, UINT8, 0x400);
825825
826826      state_save_register_item_pointer(machine, "cchip", NULL, i, CRAM[i], 0x400);
827827   }
src/mame/machine/scudsp.c
r4679r4680
318318   if(LEF) dsp_reg.pc = (data & 0xff);
319319   if(EXF) dsp_execute_program(space);
320320   if(EF && (!(stv_scu[40] & 0x0020)))
321      cpu_set_input_line_and_vector(space->machine->cpu[0], 0xa, HOLD_LINE , 0x45);
321      cputag_set_input_line_and_vector(space->machine, "maincpu", 0xa, HOLD_LINE , 0x45);
322322}
323323
324324void dsp_prg_data(UINT32 data)
src/mame/machine/xevious.c
r4679r4680
4545
4646   battles_customio_prev_command = battles_customio_command;
4747
48   if( battles_customio_command & 0x10 ){
49      if( battles_customio_command_count == 0 ){
50         cpu_set_input_line(machine->cpu[3], INPUT_LINE_NMI, PULSE_LINE);
51      }else{
52         cpu_set_input_line(machine->cpu[0], INPUT_LINE_NMI, PULSE_LINE);
53         cpu_set_input_line(machine->cpu[3], INPUT_LINE_NMI, PULSE_LINE);
48   if( battles_customio_command & 0x10 )
49   {
50      if( battles_customio_command_count == 0 )
51      {
52         cputag_set_input_line(machine, "sub3", INPUT_LINE_NMI, PULSE_LINE);
5453      }
55   }else{
56      cpu_set_input_line(machine->cpu[0], INPUT_LINE_NMI, PULSE_LINE);
57      cpu_set_input_line(machine->cpu[3], INPUT_LINE_NMI, PULSE_LINE);
54      else
55      {
56         cputag_set_input_line(machine, "maincpu", INPUT_LINE_NMI, PULSE_LINE);
57         cputag_set_input_line(machine, "sub3", INPUT_LINE_NMI, PULSE_LINE);
58      }
5859   }
60   else
61   {
62      cputag_set_input_line(machine, "maincpu", INPUT_LINE_NMI, PULSE_LINE);
63      cputag_set_input_line(machine, "sub3", INPUT_LINE_NMI, PULSE_LINE);
64   }
5965   battles_customio_command_count++;
6066}
6167
src/mame/machine/cubocd32.c
r4679r4680
122122
123123      akiko.cdrom_numtracks = cdrom_get_last_track(akiko.cdrom)+3;
124124
125      akiko.cdrom_toc = (UINT8*)auto_malloc(13*akiko.cdrom_numtracks);
125      akiko.cdrom_toc = auto_alloc_array(machine, UINT8, 13*akiko.cdrom_numtracks);
126126      memset( akiko.cdrom_toc, 0, 13*akiko.cdrom_numtracks);
127127
128128      p = akiko.cdrom_toc;
r4679r4680
356356   if ( akiko.cdrom_status[0] & akiko.cdrom_status[1] )
357357   {
358358      if (LOG_AKIKO_CD) logerror( "Akiko CD IRQ\n" );
359      amiga_custom_w(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), REG_INTREQ, 0x8000 | INTENA_PORTS, 0xffff);
359      amiga_custom_w(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), REG_INTREQ, 0x8000 | INTENA_PORTS, 0xffff);
360360   }
361361}
362362
r4679r4680
524524
525525   if ( param == 0x05 )
526526   {
527      const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
527      const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
528528      if (LOG_AKIKO_CD) logerror( "AKIKO: Completing Command %d\n", param );
529529
530530      resp[0] = 0x06;
src/mame/machine/fd1089.c
r4679r4680
125125
126126struct parameters
127127{
128   int xor;
128   int xorval;
129129   int s7,s6,s5,s4,s3,s2,s1,s0;
130130};
131131
r4679r4680
257257   table = rearrange_key(key, opcode);
258258
259259   p = &addr_params[table >> 4];
260   val = BITSWAP8(val, p->s7,p->s6,p->s5,p->s4,p->s3,p->s2,p->s1,p->s0) ^ p->xor;
260   val = BITSWAP8(val, p->s7,p->s6,p->s5,p->s4,p->s3,p->s2,p->s1,p->s0) ^ p->xorval;
261261
262262   if (BIT(table,3)) val ^= 0x01;
263263   if (BIT(table,0)) val ^= 0xb1;
r4679r4680
296296
297297   q = &data_params[family];
298298
299   val ^= q->xor;
299   val ^= q->xorval;
300300   val = BITSWAP8(val, q->s7,q->s6,q->s5,q->s4,q->s3,q->s2,q->s1,q->s0);
301301
302302   return val;
r4679r4680
305305static int decode_fd1089b(int val,int key,int opcode)
306306{
307307   int table;
308   int xor;
308   int xorval;
309309
310310   const struct parameters *p;
311311
r4679r4680
316316   table = rearrange_key(key, opcode);
317317
318318   p = &addr_params[table >> 4];
319   val = BITSWAP8(val, p->s7,p->s6,p->s5,p->s4,p->s3,p->s2,p->s1,p->s0) ^ p->xor;
319   val = BITSWAP8(val, p->s7,p->s6,p->s5,p->s4,p->s3,p->s2,p->s1,p->s0) ^ p->xorval;
320320
321321   if (BIT(table,3)) val ^= 0x01;
322322   if (BIT(table,0)) val ^= 0xb1;
r4679r4680
327327
328328   val = basetable_fd1089[val];
329329
330   xor = 0;
330   xorval = 0;
331331   if (opcode == 0)
332332   {
333      if (BIT(~table,6) & BIT(table,2)) xor ^= 0x01;
334      if (BIT(table,4)) xor ^= 0x01;
333      if (BIT(~table,6) & BIT(table,2)) xorval ^= 0x01;
334      if (BIT(table,4)) xorval ^= 0x01;
335335   }
336336   else
337337   {
338      if (BIT(table,6) & BIT(table,2)) xor ^= 0x01;
339      if (BIT(table,5)) xor ^= 0x01;
338      if (BIT(table,6) & BIT(table,2)) xorval ^= 0x01;
339      if (BIT(table,5)) xorval ^= 0x01;
340340   }
341341
342   val ^= xor;
342   val ^= xorval;
343343
344344   if (BIT(table,2))
345345   {
r4679r4680
403403   UINT16 *rom = (UINT16 *)memory_region(machine, "maincpu");
404404   int size = memory_region_length(machine, "maincpu");
405405   int A;
406   decrypted = (UINT16 *)auto_malloc(size);
406   decrypted = auto_alloc_array(machine, UINT16, size/2);
407407
408408   memory_set_decrypted_region(space, 0x000000, size - 1, decrypted);
409409
src/mame/machine/playch10.c
r4679r4680
2828 *************************************/
2929MACHINE_RESET( pc10 )
3030{
31   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
31   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
3232   const device_config *ppu = devtag_get_device(machine, "ppu");
3333
3434   /* initialize latches and flip-flops */
r4679r4680
103103
104104WRITE8_HANDLER( pc10_GAMERES_w )
105105{
106   cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_RESET, ( data & 1 ) ? CLEAR_LINE : ASSERT_LINE );
106   cputag_set_input_line(space->machine, "cart", INPUT_LINE_RESET, ( data & 1 ) ? CLEAR_LINE : ASSERT_LINE );
107107}
108108
109109WRITE8_HANDLER( pc10_GAMESTOP_w )
110110{
111   cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_HALT, ( data & 1 ) ? CLEAR_LINE : ASSERT_LINE );
111   cputag_set_input_line(space->machine, "cart", INPUT_LINE_HALT, ( data & 1 ) ? CLEAR_LINE : ASSERT_LINE );
112112}
113113
114114WRITE8_HANDLER( pc10_PPURES_w )
r4679r4680
441441DRIVER_INIT( pcaboard )
442442{
443443   /* switches vrom with writes to the $803e-$8041 area */
444   memory_install_write8_handler(cpu_get_address_space(machine->cpu[1], ADDRESS_SPACE_PROGRAM), 0x8000, 0x8fff, 0, 0, aboard_vrom_switch_w );
444   memory_install_write8_handler(cputag_get_address_space(machine, "cart", ADDRESS_SPACE_PROGRAM), 0x8000, 0x8fff, 0, 0, aboard_vrom_switch_w );
445445
446446   /* common init */
447447   DRIVER_INIT_CALL(playch10);
r4679r4680
471471   memcpy( &prg[0x08000], &prg[0x28000], 0x8000 );
472472
473473   /* Roms are banked at $8000 to $bfff */
474   memory_install_write8_handler(cpu_get_address_space(machine->cpu[1], ADDRESS_SPACE_PROGRAM), 0x8000, 0xffff, 0, 0, bboard_rom_switch_w );
474   memory_install_write8_handler(cputag_get_address_space(machine, "cart", ADDRESS_SPACE_PROGRAM), 0x8000, 0xffff, 0, 0, bboard_rom_switch_w );
475475
476476   /* common init */
477477   DRIVER_INIT_CALL(playch10);
r4679r4680
493493DRIVER_INIT( pccboard )
494494{
495495   /* switches vrom with writes to $6000 */
496   memory_install_write8_handler(cpu_get_address_space(machine->cpu[1], ADDRESS_SPACE_PROGRAM), 0x6000, 0x6000, 0, 0, cboard_vrom_switch_w );
496   memory_install_write8_handler(cputag_get_address_space(machine, "cart", ADDRESS_SPACE_PROGRAM), 0x6000, 0x6000, 0, 0, cboard_vrom_switch_w );
497497
498498   /* common init */
499499   DRIVER_INIT_CALL(playch10);
r4679r4680
514514   mmc1_rom_mask = 0x07;
515515
516516   /* MMC mapper at writes to $8000-$ffff */
517   memory_install_write8_handler(cpu_get_address_space(machine->cpu[1], ADDRESS_SPACE_PROGRAM), 0x8000, 0xffff, 0, 0, mmc1_rom_switch_w );
517   memory_install_write8_handler(cputag_get_address_space(machine, "cart", ADDRESS_SPACE_PROGRAM), 0x8000, 0xffff, 0, 0, mmc1_rom_switch_w );
518518
519519   /* common init */
520520   DRIVER_INIT_CALL(playch10);
r4679r4680
525525DRIVER_INIT( pcdboard_2 )
526526{
527527   /* extra ram at $6000-$7fff */
528   memory_install_readwrite8_handler(cpu_get_address_space(machine->cpu[1], ADDRESS_SPACE_PROGRAM), 0x6000, 0x7fff, 0, 0, SMH_BANK1, SMH_BANK1 );
529   memory_set_bankptr(machine, 1, auto_malloc(0x2000));
528   memory_install_readwrite8_handler(cputag_get_address_space(machine, "cart", ADDRESS_SPACE_PROGRAM), 0x6000, 0x7fff, 0, 0, (read8_space_func)SMH_BANK(1), (write8_space_func)SMH_BANK(1) );
529   memory_set_bankptr(machine, 1, auto_alloc_array(machine, UINT8, 0x2000));
530530
531531   /* common init */
532532   DRIVER_INIT_CALL(pcdboard);
r4679r4680
617617   memcpy( &prg[0x08000], &prg[0x28000], 0x8000 );
618618
619619   /* basically a mapper 9 on a nes */
620   memory_install_write8_handler(cpu_get_address_space(machine->cpu[1], ADDRESS_SPACE_PROGRAM), 0x8000, 0xffff, 0, 0, eboard_rom_switch_w );
620   memory_install_write8_handler(cputag_get_address_space(machine, "cart", ADDRESS_SPACE_PROGRAM), 0x8000, 0xffff, 0, 0, eboard_rom_switch_w );
621621
622622   /* ppu_latch callback */
623623   ppu_latch = mapper9_latch;
624624
625625   /* nvram at $6000-$6fff */
626   memory_install_readwrite8_handler(cpu_get_address_space(machine->cpu[1], ADDRESS_SPACE_PROGRAM), 0x6000, 0x6fff, 0, 0, SMH_BANK1, SMH_BANK1 );
627   memory_set_bankptr(machine, 1, auto_malloc(0x1000));
626   memory_install_readwrite8_handler(cputag_get_address_space(machine, "cart", ADDRESS_SPACE_PROGRAM), 0x6000, 0x6fff, 0, 0, (read8_space_func)SMH_BANK(1), (write8_space_func)SMH_BANK(1) );
627   memory_set_bankptr(machine, 1, auto_alloc_array(machine, UINT8, 0x1000));
628628
629629   /* common init */
630630   DRIVER_INIT_CALL(playch10);
r4679r4680
645645   mmc1_rom_mask = 0x07;
646646
647647   /* MMC mapper at writes to $8000-$ffff */
648   memory_install_write8_handler(cpu_get_address_space(machine->cpu[1], ADDRESS_SPACE_PROGRAM), 0x8000, 0xffff, 0, 0, mmc1_rom_switch_w );
648   memory_install_write8_handler(cputag_get_address_space(machine, "cart", ADDRESS_SPACE_PROGRAM), 0x8000, 0xffff, 0, 0, mmc1_rom_switch_w );
649649
650650   /* common init */
651651   DRIVER_INIT_CALL(playch10);
r4679r4680
656656DRIVER_INIT( pcfboard_2 )
657657{
658658   /* extra ram at $6000-$6fff */
659   memory_install_readwrite8_handler(cpu_get_address_space(machine->cpu[1], ADDRESS_SPACE_PROGRAM), 0x6000, 0x6fff, 0, 0, SMH_BANK1, SMH_BANK1 );
660   memory_set_bankptr(machine, 1, auto_malloc(0x1000));
659   memory_install_readwrite8_handler(cputag_get_address_space(machine, "cart", ADDRESS_SPACE_PROGRAM), 0x6000, 0x6fff, 0, 0, (read8_space_func)SMH_BANK(1), (write8_space_func)SMH_BANK(1) );
660   memory_set_bankptr(machine, 1, auto_alloc_array(machine, UINT8, 0x1000));
661661
662662   /* common init */
663663   DRIVER_INIT_CALL(pcfboard);
r4679r4680
681681      if ( --gboard_scanline_counter == -1 )
682682      {
683683         gboard_scanline_counter = gboard_scanline_latch;
684         generic_pulse_irq_line(device->machine->cpu[1], 0);
684         generic_pulse_irq_line(cputag_get_cpu(device->machine, "cart"), 0);
685685      }
686686   }
687687}
r4679r4680
831831   memcpy( &prg[0x0c000], &prg[0x4c000], 0x4000 );
832832
833833   /* MMC3 mapper at writes to $8000-$ffff */
834   memory_install_write8_handler(cpu_get_address_space(machine->cpu[1], ADDRESS_SPACE_PROGRAM), 0x8000, 0xffff, 0, 0, gboard_rom_switch_w );
834   memory_install_write8_handler(cputag_get_address_space(machine, "cart", ADDRESS_SPACE_PROGRAM), 0x8000, 0xffff, 0, 0, gboard_rom_switch_w );
835835
836836   /* extra ram at $6000-$7fff */
837   memory_install_readwrite8_handler(cpu_get_address_space(machine->cpu[1], ADDRESS_SPACE_PROGRAM), 0x6000, 0x7fff, 0, 0, SMH_BANK1, SMH_BANK1 );
838   memory_set_bankptr(machine, 1, auto_malloc(0x2000));
837   memory_install_readwrite8_handler(cputag_get_address_space(machine, "cart", ADDRESS_SPACE_PROGRAM), 0x6000, 0x7fff, 0, 0, (read8_space_func)SMH_BANK(1), (write8_space_func)SMH_BANK(1) );
838   memory_set_bankptr(machine, 1, auto_alloc_array(machine, UINT8, 0x2000));
839839
840840   gboard_banks[0] = 0x1e;
841841   gboard_banks[1] = 0x1f;
r4679r4680
883883   memcpy( &prg[0x08000], &prg[0x10000], 0x8000 );
884884
885885   /* Roms are banked at $8000 to $bfff */
886   memory_install_write8_handler(cpu_get_address_space(machine->cpu[1], ADDRESS_SPACE_PROGRAM), 0x8000, 0xffff, 0, 0, iboard_rom_switch_w );
886   memory_install_write8_handler(cputag_get_address_space(machine, "cart", ADDRESS_SPACE_PROGRAM), 0x8000, 0xffff, 0, 0, iboard_rom_switch_w );
887887
888888   /* common init */
889889   DRIVER_INIT_CALL(playch10);
r4679r4680
948948   memcpy( &prg[0x0c000], &prg[0x4c000], 0x4000 );
949949
950950   /* Roms are banked at $8000 to $bfff */
951   memory_install_write8_handler(cpu_get_address_space(machine->cpu[1], ADDRESS_SPACE_PROGRAM), 0x8000, 0xffff, 0, 0, hboard_rom_switch_w );
951   memory_install_write8_handler(cputag_get_address_space(machine, "cart", ADDRESS_SPACE_PROGRAM), 0x8000, 0xffff, 0, 0, hboard_rom_switch_w );
952952
953953   /* extra ram at $6000-$7fff */
954   memory_install_readwrite8_handler(cpu_get_address_space(machine->cpu[1], ADDRESS_SPACE_PROGRAM), 0x6000, 0x7fff, 0, 0, SMH_BANK1, SMH_BANK1 );
955   memory_set_bankptr(machine, 1, auto_malloc(0x2000));
954   memory_install_readwrite8_handler(cputag_get_address_space(machine, "cart", ADDRESS_SPACE_PROGRAM), 0x6000, 0x7fff, 0, 0, (read8_space_func)SMH_BANK(1), (write8_space_func)SMH_BANK(1) );
955   memory_set_bankptr(machine, 1, auto_alloc_array(machine, UINT8, 0x2000));
956956
957957   gboard_banks[0] = 0x1e;
958958   gboard_banks[1] = 0x1f;
r4679r4680
980980   mmc1_rom_mask = 0x0f;
981981
982982   /* extra ram at $6000-$7fff */
983   memory_install_readwrite8_handler(cpu_get_address_space(machine->cpu[1], ADDRESS_SPACE_PROGRAM), 0x6000, 0x7fff, 0, 0, SMH_BANK1, SMH_BANK1 );
984   memory_set_bankptr(machine, 1, auto_malloc(0x2000));
983   memory_install_readwrite8_handler(cputag_get_address_space(machine, "cart", ADDRESS_SPACE_PROGRAM), 0x6000, 0x7fff, 0, 0, (read8_space_func)SMH_BANK(1), (write8_space_func)SMH_BANK(1) );
984   memory_set_bankptr(machine, 1, auto_alloc_array(machine, UINT8, 0x2000));
985985
986986   /* Roms are banked at $8000 to $bfff */
987   memory_install_write8_handler(cpu_get_address_space(machine->cpu[1], ADDRESS_SPACE_PROGRAM), 0x8000, 0xffff, 0, 0, mmc1_rom_switch_w );
987   memory_install_write8_handler(cputag_get_address_space(machine, "cart", ADDRESS_SPACE_PROGRAM), 0x8000, 0xffff, 0, 0, mmc1_rom_switch_w );
988988
989989   /* common init */
990990   DRIVER_INIT_CALL(playch10);
src/mame/machine/stvprot.c
r4679r4680
329329
330330void install_standard_protection(running_machine *machine)
331331{
332   memory_install_readwrite32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x4fffff0, 0x4ffffff, 0, 0, a_bus_ctrl_r, a_bus_ctrl_w);
332   memory_install_readwrite32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x4fffff0, 0x4ffffff, 0, 0, a_bus_ctrl_r, a_bus_ctrl_w);
333333}
334334
335335static READ32_HANDLER(astrass_prot_r)
r4679r4680
363363void install_astrass_protection(running_machine *machine)
364364{
365365   ctrl_index = -1;
366   memory_install_readwrite32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x4fffff0, 0x4ffffff, 0, 0, astrass_prot_r, astrass_prot_w);
366   memory_install_readwrite32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x4fffff0, 0x4ffffff, 0, 0, astrass_prot_r, astrass_prot_w);
367367}
368368
369369
r4679r4680
505505{
506506   /* It uploads 2 tables here, then performs what looks like a number of transfers, setting
507507       a source address of some kind (scrambled?) and then making many reads from a single address */
508   memory_install_readwrite32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x37FFFF0, 0x37FFFFF, 0, 0, decathlt_prot_r, decathlt_prot_w);
508   memory_install_readwrite32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x37FFFF0, 0x37FFFFF, 0, 0, decathlt_prot_r, decathlt_prot_w);
509509   /* It uploads 2 tables here too, but nothing else, mirror? unused? */
510//  memory_install_readwrite32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x27FFFF0, 0x27FFFFF, 0, 0, decathlt_prot_r, decathlt_prot_w);
510//  memory_install_readwrite32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x27FFFF0, 0x27FFFFF, 0, 0, decathlt_prot_r, decathlt_prot_w);
511511}
512512
513513void stv_register_protection_savestates(running_machine *machine)
src/mame/machine/bublbobl.c
r4679r4680
2424   /* bit 3 n.c. */
2525
2626   /* bit 4 resets second Z80 */
27   cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_RESET, (data & 0x10) ? CLEAR_LINE : ASSERT_LINE);
27   cputag_set_input_line(space->machine, "slave", INPUT_LINE_RESET, (data & 0x10) ? CLEAR_LINE : ASSERT_LINE);
2828
2929   /* bit 5 resets mcu */
30   if (space->machine->cpu[3] != NULL) // only if we have a MCU
31      cpu_set_input_line(space->machine->cpu[3], INPUT_LINE_RESET, (data & 0x20) ? CLEAR_LINE : ASSERT_LINE);
30   if (cputag_get_cpu(space->machine, "mcu") != NULL) // only if we have a MCU
31      cputag_set_input_line(space->machine, "mcu", INPUT_LINE_RESET, (data & 0x20) ? CLEAR_LINE : ASSERT_LINE);
3232
3333   /* bit 6 enables display */
3434   bublbobl_video_enable = data & 0x40;
r4679r4680
5555
5656WRITE8_HANDLER( bublbobl_nmitrigger_w )
5757{
58   cpu_set_input_line(space->machine->cpu[1],INPUT_LINE_NMI,PULSE_LINE);
58   cputag_set_input_line(space->machine, "slave", INPUT_LINE_NMI, PULSE_LINE);
5959}
6060
6161
r4679r4680
9494
9595static TIMER_CALLBACK( nmi_callback )
9696{
97   if (sound_nmi_enable) cpu_set_input_line(machine->cpu[2],INPUT_LINE_NMI,PULSE_LINE);
97   if (sound_nmi_enable) cputag_set_input_line(machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
9898   else pending_nmi = 1;
9999}
100100
r4679r4680
114114   sound_nmi_enable = 1;
115115   if (pending_nmi)
116116   {
117      cpu_set_input_line(space->machine->cpu[2],INPUT_LINE_NMI,PULSE_LINE);
117      cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
118118      pending_nmi = 0;
119119   }
120120}
121121
122122WRITE8_HANDLER(soundcpu_reset_w)
123123{
124   cpu_set_input_line(space->machine->cpu[2], INPUT_LINE_RESET, data ? ASSERT_LINE : CLEAR_LINE);
124   cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_RESET, data ? ASSERT_LINE : CLEAR_LINE);
125125}
126126
127127READ8_HANDLER( sound_status_r )
r4679r4680
207207   if ((port1_out & 0x40) && (~data & 0x40))
208208   {
209209//      logerror("triggering IRQ on main CPU\n");
210      cpu_set_input_line_vector(space->machine->cpu[0],0,bublbobl_mcu_sharedram[0]);
211      cpu_set_input_line(space->machine->cpu[0],0,HOLD_LINE);
210      cpu_set_input_line_vector(cputag_get_cpu(space->machine, "maincpu"), 0, bublbobl_mcu_sharedram[0]);
211      cputag_set_input_line(space->machine, "maincpu", 0, HOLD_LINE);
212212   }
213213
214214   // bit 7: select read or write shared RAM
r4679r4680
347347
348348WRITE8_HANDLER( boblbobl_ic43_b_w )
349349{
350   static const int xor[4] = { 4, 1, 8, 2 };
350   static const int xorval[4] = { 4, 1, 8, 2 };
351351
352352//  logerror("%04x: ic43_b_w (offs %d) %02x\n",cpu_get_pc(space->cpu),offset,data);
353   ic43_b = (data >> 4) ^ xor[offset];
353   ic43_b = (data >> 4) ^ xorval[offset];
354354}
355355
356356READ8_HANDLER( boblbobl_ic43_b_r )
r4679r4680
487487      /* hack to get random EXTEND letters (who is supposed to do this? 68705? PAL?) */
488488      bublbobl_mcu_sharedram[0x7c] = mame_rand(space->machine)%6;
489489
490      cpu_set_input_line_vector(space->machine->cpu[0],0,bublbobl_mcu_sharedram[0]);
491      cpu_set_input_line(space->machine->cpu[0],0,HOLD_LINE);
490      cpu_set_input_line_vector(cputag_get_cpu(space->machine, "maincpu"), 0, bublbobl_mcu_sharedram[0]);
491      cputag_set_input_line(space->machine, "maincpu", 0, HOLD_LINE);
492492   }
493493   if ((ddrB & 0x40) && (~data & 0x40) && (portB_out & 0x40))
494494   {
src/mame/machine/s16fd.c
r4679r4680
109109}
110110
111111/* Callback for CMP.L instructions (state change) */
112static void fd1094_cmp_callback(const device_config *device, UINT32 val, int reg)
112static void fd1094_cmp_callback(const device_config *device, UINT32 val, UINT8 reg)
113113{
114114   if (reg == 0 && (val & 0x0000ffff) == 0x0000ffff) // ?
115115   {
r4679r4680
150150   fd1094_setstate_and_decrypt(device->machine, FD1094_STATE_RESET);
151151   fd1094_kludge_reset_values();
152152
153   device_set_info_fct(device, CPUINFO_FCT_M68K_CMPILD_CALLBACK, (genf *)fd1094_cmp_callback);
154   device_set_info_fct(device, CPUINFO_FCT_M68K_RTE_CALLBACK, (genf *)fd1094_rte_callback);
153   m68k_set_cmpild_callback(device, fd1094_cmp_callback);
154   m68k_set_rte_callback(device, fd1094_rte_callback);
155155   cpu_set_irq_callback(device, fd1094_int_callback);
156156
157157   device_reset(device);
r4679r4680
210210
211211   for (i = 0; i < CACHE_ENTRIES; i++)
212212   {
213      fd1094_cacheregion[i] = auto_malloc(fd1094_cpuregionsize);
213      fd1094_cacheregion[i] = auto_alloc_array(machine, UINT16, fd1094_cpuregionsize/2);
214214      fd1094_cached_states[i] = -1;
215215   }
216216     fd1094_current_cacheposition = 0;
src/mame/machine/asic65.c
r4679r4680
145145
146146void asic65_reset(running_machine *machine, int state)
147147{
148   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
148   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
149149
150150   /* rom-based means reset and clear states */
151151   if (asic65.cpu != NULL)
src/mame/machine/docastle.c
r4679r4680
8181
8282WRITE8_HANDLER( docastle_nmitrigger_w )
8383{
84   cpu_set_input_line(space->machine->cpu[1],INPUT_LINE_NMI,PULSE_LINE);
84   cputag_set_input_line(space->machine, "slave", INPUT_LINE_NMI, PULSE_LINE);
8585}
src/mame/machine/tnzs.c
r4679r4680
4444{
4545   UINT8 data;
4646
47   data = upi41_master_r(space->machine->cpu[2], offset & 1);
47   data = upi41_master_r(cputag_get_cpu(space->machine, "mcu"), offset & 1);
4848   cpu_yield(space->cpu);
4949
5050//  logerror("PC %04x: read %02x from mcu $c00%01x\n", cpu_get_previouspc(space->cpu), data, offset);
r4679r4680
5656{
5757//  logerror("PC %04x: write %02x to mcu $c00%01x\n", cpu_get_previouspc(space->cpu), data, offset);
5858
59   upi41_master_w(space->machine->cpu[2], offset & 1, data);
59   upi41_master_w(cputag_get_cpu(space->machine, "mcu"), offset & 1, data);
6060}
6161
6262
r4679r4680
521521   mcu_type = MCU_DRTOPPEL;
522522
523523   /* drtoppel writes to the palette RAM area even if it has PROMs! We have to patch it out. */
524   memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xf800, 0xfbff, 0, 0, SMH_NOP);
524   memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xf800, 0xfbff, 0, 0, (write8_space_func)SMH_NOP);
525525}
526526
527527DRIVER_INIT( chukatai )
r4679r4680
533533{
534534   mcu_type = MCU_TNZS;
535535   /* we need to install a kludge to avoid problems with a bug in the original code */
536//  memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xef10, 0xef10, 0, 0, tnzs_sync_kludge_w);
536//  memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xef10, 0xef10, 0, 0, tnzs_sync_kludge_w);
537537}
538538
539539DRIVER_INIT( tnzsb )
r4679r4680
541541   mcu_type = MCU_NONE_TNZSB;
542542
543543   /* we need to install a kludge to avoid problems with a bug in the original code */
544//  memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xef10, 0xef10, 0, 0, tnzs_sync_kludge_w);
544//  memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xef10, 0xef10, 0, 0, tnzs_sync_kludge_w);
545545}
546546
547547DRIVER_INIT( kabukiz )
r4679r4680
554554   mcu_type = MCU_NONE_INSECTX;
555555
556556   /* this game has no mcu, replace the handler with plain input port handlers */
557   memory_install_read_port_handler(cpu_get_address_space(machine->cpu[1], ADDRESS_SPACE_PROGRAM), 0xc000, 0xc000, 0, 0, "IN0" );
558   memory_install_read_port_handler(cpu_get_address_space(machine->cpu[1], ADDRESS_SPACE_PROGRAM), 0xc001, 0xc001, 0, 0, "IN1" );
559   memory_install_read_port_handler(cpu_get_address_space(machine->cpu[1], ADDRESS_SPACE_PROGRAM), 0xc002, 0xc002, 0, 0, "IN2" );
557   memory_install_read_port_handler(cputag_get_address_space(machine, "sub", ADDRESS_SPACE_PROGRAM), 0xc000, 0xc000, 0, 0, "IN0" );
558   memory_install_read_port_handler(cputag_get_address_space(machine, "sub", ADDRESS_SPACE_PROGRAM), 0xc001, 0xc001, 0, 0, "IN1" );
559   memory_install_read_port_handler(cputag_get_address_space(machine, "sub", ADDRESS_SPACE_PROGRAM), 0xc002, 0xc002, 0, 0, "IN2" );
560560}
561561
562562DRIVER_INIT( kageki )
r4679r4680
665665
666666   /* bit 4 resets the second CPU */
667667   if (data & 0x10)
668      cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_RESET, CLEAR_LINE);
668      cputag_set_input_line(space->machine, "sub", INPUT_LINE_RESET, CLEAR_LINE);
669669   else
670      cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_RESET, ASSERT_LINE);
670      cputag_set_input_line(space->machine, "sub", INPUT_LINE_RESET, ASSERT_LINE);
671671
672672   /* bits 0-2 select RAM/ROM bank */
673673   memory_set_bankptr (space->machine, 1, &RAM[0x10000 + 0x4000 * (data & 0x07)]);
r4679r4680
686686            /* bit 2 resets the mcu */
687687            if (data & 0x04)
688688            {
689               if (space->machine->cpu[2] != NULL && cpu_get_type(space->machine->cpu[2]) == CPU_I8742)
690                  cpu_set_input_line(space->machine->cpu[2], INPUT_LINE_RESET, PULSE_LINE);
689               if (cputag_get_cpu(space->machine, "mcu") != NULL && cpu_get_type(cputag_get_cpu(space->machine, "mcu")) == CPU_I8742)
690                  cputag_set_input_line(space->machine, "mcu", INPUT_LINE_RESET, PULSE_LINE);
691691            }
692692            /* Coin count and lockout is handled by the i8742 */
693693            break;
src/mame/machine/atari.c
r4679r4680
5353         logerror("atari interrupt_cb TIMR1\n");
5454   }
5555
56   cpu_set_input_line(device->machine->cpu[0], 0, HOLD_LINE);
56   cputag_set_input_line(device->machine, "maincpu", 0, HOLD_LINE);
5757}
5858
5959/**************************************************************
r4679r4680
108108   if ( new_mmu & 0x80 )
109109   {
110110      logerror("%s MMU SELFTEST RAM\n", machine->gamedrv->name);
111      rbank2 = SMH_NOP;
112      wbank2 = SMH_NOP;
111      rbank2 = (read8_space_func)SMH_NOP;
112      wbank2 = (write8_space_func)SMH_NOP;
113113   }
114114   else
115115   {
116116      logerror("%s MMU SELFTEST ROM\n", machine->gamedrv->name);
117      rbank2 = SMH_BANK2;
118      wbank2 = SMH_UNMAP;
117      rbank2 = (read8_space_func)SMH_BANK(2);
118      wbank2 = (write8_space_func)SMH_UNMAP;
119119   }
120   memory_install_readwrite8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x5000, 0x57ff, 0, 0, rbank2, wbank2);
121   if (rbank2 == SMH_BANK2)
120   memory_install_readwrite8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x5000, 0x57ff, 0, 0, rbank2, wbank2);
121   if (rbank2 == (read8_space_func)SMH_BANK(2))
122122      memory_set_bankptr(machine, 2, memory_region(machine, "maincpu") + 0x5000);
123123}
124124
src/mame/machine/midyunit.c
r4679r4680
298298
299299      case SOUND_CVSD:
300300         williams_cvsd_init(machine);
301         memory_install_readwrite8_handler(cpu_get_address_space(machine->cpu[1], ADDRESS_SPACE_PROGRAM), prot_start, prot_end, 0, 0, SMH_BANK9, SMH_BANK9);
302         memory_set_bankptr(machine, 9, auto_malloc(0x80));
301         memory_install_readwrite8_handler(cpu_get_address_space(machine->cpu[1], ADDRESS_SPACE_PROGRAM), prot_start, prot_end, 0, 0, (read8_space_func)SMH_BANK(9), (write8_space_func)SMH_BANK(9));
302         memory_set_bankptr(machine, 9, auto_alloc_array(machine, UINT8, 0x80));
303303         break;
304304
305305      case SOUND_ADPCM:
306306         williams_adpcm_init(machine);
307         memory_install_readwrite8_handler(cpu_get_address_space(machine->cpu[1], ADDRESS_SPACE_PROGRAM), prot_start, prot_end, 0, 0, SMH_BANK9, SMH_BANK9);
308         memory_set_bankptr(machine, 9, auto_malloc(0x80));
307         memory_install_readwrite8_handler(cpu_get_address_space(machine->cpu[1], ADDRESS_SPACE_PROGRAM), prot_start, prot_end, 0, 0, (read8_space_func)SMH_BANK(9), (write8_space_func)SMH_BANK(9));
308         memory_set_bankptr(machine, 9, auto_alloc_array(machine, UINT8, 0x80));
309309         break;
310310
311311      case SOUND_NARC:
312312         williams_narc_init(machine);
313         memory_install_readwrite8_handler(cpu_get_address_space(machine->cpu[1], ADDRESS_SPACE_PROGRAM), prot_start, prot_end, 0, 0, SMH_BANK9, SMH_BANK9);
314         memory_set_bankptr(machine, 9, auto_malloc(0x80));
313         memory_install_readwrite8_handler(cpu_get_address_space(machine->cpu[1], ADDRESS_SPACE_PROGRAM), prot_start, prot_end, 0, 0, (read8_space_func)SMH_BANK(9), (write8_space_func)SMH_BANK(9));
314         memory_set_bankptr(machine, 9, auto_alloc_array(machine, UINT8, 0x80));
315315         break;
316316
317317      case SOUND_YAWDIM:
r4679r4680
479479   init_generic(machine, 6, SOUND_ADPCM, 0xfa8d, 0xfa9c);
480480
481481   /* special inputs */
482   memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x01c00000, 0x01c0005f, 0, 0, term2_input_r);
483   memory_install_write16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x01e00000, 0x01e0001f, 0, 0, term2_sound_w);
482   memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x01c00000, 0x01c0005f, 0, 0, term2_input_r);
483   memory_install_write16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x01e00000, 0x01e0001f, 0, 0, term2_sound_w);
484484
485485   /* HACK: this prevents the freeze on the movies */
486486   /* until we figure whats causing it, this is better than nothing */
487   t2_hack_mem = memory_install_write16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x010aa0e0, 0x010aa0ff, 0, 0, hack_w);
487   t2_hack_mem = memory_install_write16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x010aa0e0, 0x010aa0ff, 0, 0, hack_w);
488488}
489489
490490DRIVER_INIT( term2 ) { term2_init_common(machine, term2_hack_w); }
src/mame/machine/flstory.c
r4679r4680
6868   if ((ddrB & 0x02) && (~data & 0x02) && (portB_out & 0x02))
6969   {
7070      portA_in = from_main;
71      if (main_sent) cpu_set_input_line(space->machine->cpu[2],0,CLEAR_LINE);
71      if (main_sent)
72         cputag_set_input_line(space->machine, "mcu", 0, CLEAR_LINE);
7273      main_sent = 0;
73logerror("read command %02x from main cpu\n",portA_in);
74logerror("read command %02x from main cpu\n", portA_in);
7475   }
7576   if ((ddrB & 0x04) && (data & 0x04) && (~portB_out & 0x04))
7677   {
77logerror("send command %02x to main cpu\n",portA_out);
78logerror("send command %02x to main cpu\n", portA_out);
7879      from_mcu = portA_out;
7980      mcu_sent = 1;
8081   }
r4679r4680
9596   portC_in = 0;
9697   if (main_sent) portC_in |= 0x01;
9798   if (!mcu_sent) portC_in |= 0x02;
98//logerror("%04x: 68705 port C read %02x\n",cpu_get_pc(space->cpu),portC_in);
99//logerror("%04x: 68705 port C read %02x\n", cpu_get_pc(space->cpu), portC_in);
99100   return (portC_out & ddrC) | (portC_in & ~ddrC);
100101}
101102
102103WRITE8_HANDLER( flstory_68705_portC_w )
103104{
104logerror("%04x: 68705 port C write %02x\n",cpu_get_pc(space->cpu),data);
105logerror("%04x: 68705 port C write %02x\n", cpu_get_pc(space->cpu), data);
105106   portC_out = data;
106107}
107108
r4679r4680
112113
113114WRITE8_HANDLER( flstory_mcu_w )
114115{
115logerror("%04x: mcu_w %02x\n",cpu_get_pc(space->cpu),data);
116logerror("%04x: mcu_w %02x\n", cpu_get_pc(space->cpu), data);
116117   from_main = data;
117118   main_sent = 1;
118   cpu_set_input_line(space->machine->cpu[2],0,ASSERT_LINE);
119   cputag_set_input_line(space->machine, "mcu", 0, ASSERT_LINE);
119120}
120121
121122READ8_HANDLER( flstory_mcu_r )
122123{
123logerror("%04x: mcu_r %02x\n",cpu_get_pc(space->cpu),from_mcu);
124logerror("%04x: mcu_r %02x\n",cpu_get_pc(space->cpu), from_mcu);
124125   mcu_sent = 0;
125126   return from_mcu;
126127}
r4679r4680
131132
132133   /* bit 0 = when 1, mcu is ready to receive data from main cpu */
133134   /* bit 1 = when 1, mcu has sent data to the main cpu */
134//logerror("%04x: mcu_status_r\n",cpu_get_pc(space->cpu));
135//logerror("%04x: mcu_status_r\n", cpu_get_pc(space->cpu));
135136   if (!main_sent) res |= 0x01;
136137   if (mcu_sent) res |= 0x02;
137138
r4679r4680
140141
141142WRITE8_HANDLER( onna34ro_mcu_w )
142143{
143   UINT16 score_adr = onna34ro_workram[0x29e]*0x100 + onna34ro_workram[0x29d];
144   UINT16 score_adr = onna34ro_workram[0x29e] * 0x100 + onna34ro_workram[0x29d];
144145
145146   switch (data)
146147   {
src/mame/machine/naomi.c
r4679r4680
2323
2424DRIVER_INIT(naomi)
2525{
26   memory_install_read64_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xc2ad238, 0xc2ad23f, 0, 0, naomi_bios_idle_skip_r); // rev e bios
26   memory_install_read64_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xc2ad238, 0xc2ad23f, 0, 0, naomi_bios_idle_skip_r); // rev e bios
2727   jvsboard_type = JVSBD_DEFAULT;
2828}
2929
30DRIVER_INIT(naomi_mp)
31{
32   memory_install_read64_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xc2ad238, 0xc2ad23f, 0, 0, naomi_bios_idle_skip_r); // rev e bios
33   jvsboard_type = JVSBD_MAHJONG;
34}
35
3036static READ64_HANDLER( naomigd_ggxxsla_idle_skip_r )
3137{
3238   if (cpu_get_pc(space->cpu)==0x0c0c9adc)
r4679r4680
3743
3844DRIVER_INIT( ggxxsla )
3945{
40   memory_install_read64_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xc1aae18, 0xc1aae1f, 0, 0, naomigd_ggxxsla_idle_skip_r);
46   memory_install_read64_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xc1aae18, 0xc1aae1f, 0, 0, naomigd_ggxxsla_idle_skip_r);
4147   DRIVER_INIT_CALL(naomi);
4248}
4349
r4679r4680
5258
5359DRIVER_INIT( ggxx )
5460{
55   memory_install_read64_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xc1837b8, 0xc1837bf, 0, 0, naomigd_ggxx_idle_skip_r);
61   memory_install_read64_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xc1837b8, 0xc1837bf, 0, 0, naomigd_ggxx_idle_skip_r);
5662   DRIVER_INIT_CALL(naomi);
5763}
5864
r4679r4680
6975
7076DRIVER_INIT( ggxxrl )
7177{
72   memory_install_read64_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xc18d6c8, 0xc18d6cf, 0, 0, naomigd_ggxxrl_idle_skip_r);
78   memory_install_read64_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xc18d6c8, 0xc18d6cf, 0, 0, naomigd_ggxxrl_idle_skip_r);
7379   DRIVER_INIT_CALL(naomi);
7480}
src/mame/machine/segas32.c
r4679r4680
3838   int i;
3939   const address_space *space = cputag_get_address_space(machine, "mcu", ADDRESS_SPACE_PROGRAM);
4040   UINT8 *rom = memory_region(machine, "mcu");
41   UINT8* decrypted = auto_malloc(0x100000);
42   UINT8* temp = malloc_or_die(0x100000);
41   UINT8* decrypted = auto_alloc_array(machine, UINT8, 0x100000);
42   UINT8* temp = alloc_array_or_die(UINT8, 0x100000);
4343
4444   // set CPU3 opcode base
4545   memory_set_decrypted_region(space, 0x00000, 0xfffff, decrypted);
src/mame/machine/slapfght.c
r4679r4680
1111#include "includes/slapfght.h"
1212
1313
14UINT8 *slapfight_dpram;
15size_t slapfight_dpram_size;
16
1714static int slapfight_status;
1815static int getstar_sequence_index;
1916static int getstar_sh_intenabled;
r4679r4680
4441   getstar_sh_intenabled = 0;   /* disable sound cpu interrupts */
4542
4643   /* SOUND CPU */
47   cpu_set_input_line(machine->cpu[1], INPUT_LINE_RESET, ASSERT_LINE);
44   cputag_set_input_line(machine, "audiocpu", INPUT_LINE_RESET, ASSERT_LINE);
4845
4946   /* MCU */
5047   mcu_val = 0;
5148}
5249
53/* Interrupt handlers cpu & sound */
54
55WRITE8_HANDLER( slapfight_dpram_w )
56{
57    slapfight_dpram[offset]=data;
58}
59
60READ8_HANDLER( slapfight_dpram_r )
61{
62    return slapfight_dpram[offset];
63}
64
65
66
6750/* Slapfight CPU input/output ports
6851
6952  These ports seem to control memory access
r4679r4680
7356/* Reset and hold sound CPU */
7457WRITE8_HANDLER( slapfight_port_00_w )
7558{
76   cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_RESET, ASSERT_LINE);
59   cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_RESET, ASSERT_LINE);
7760   getstar_sh_intenabled = 0;
7861}
7962
8063/* Release reset on sound CPU */
8164WRITE8_HANDLER( slapfight_port_01_w )
8265{
83   cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_RESET, CLEAR_LINE);
66   cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_RESET, CLEAR_LINE);
8467}
8568
8669/* Disable and clear hardware interrupt */
r4679r4680
739722   if ((ddrB & 0x02) && (~data & 0x02) && (portB_out & 0x02))
740723   {
741724      portA_in = from_main;
742      if (main_sent) cpu_set_input_line(space->machine->cpu[2],0,CLEAR_LINE);
725      if (main_sent) cputag_set_input_line(space->machine, "mcu", 0, CLEAR_LINE);
743726      main_sent = 0;
744727   }
745728   if ((ddrB & 0x04) && (data & 0x04) && (~portB_out & 0x04))
r4679r4680
779762{
780763   from_main = data;
781764   main_sent = 1;
782   mcu_sent=0;
783   cpu_set_input_line(space->machine->cpu[2],0,ASSERT_LINE);
765   mcu_sent = 0;
766   cputag_set_input_line(space->machine, "mcu", 0, ASSERT_LINE);
784767}
785768
786769READ8_HANDLER( tigerh_mcu_r )
src/mame/machine/asteroid.c
r4679r4680
128128
129129WRITE8_HANDLER( astdelux_led_w )
130130{
131   set_led_status(offset,(data&0x80)?0:1);
131   set_led_status(offset, (data & 0x80) ? 0 : 1);
132132}
133133
134134
135135MACHINE_RESET( asteroid )
136136{
137   asteroid_bank_switch_w(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM),0,0);
138   avgdvg_reset_w(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM),0,0);
137   asteroid_bank_switch_w(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0, 0);
138   avgdvg_reset_w(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0, 0);
139139}
src/mame/machine/mhavoc.c
r4679r4680
4444      alpha_irq_clock++;
4545      if ((alpha_irq_clock & 0x0c) == 0x0c)
4646      {
47         cpu_set_input_line(machine->cpu[0], 0, ASSERT_LINE);
47         cputag_set_input_line(machine, "alpha", 0, ASSERT_LINE);
4848         alpha_irq_clock_enable = 0;
4949      }
5050   }
r4679r4680
5353   if (has_gamma_cpu)
5454   {
5555      gamma_irq_clock++;
56      cpu_set_input_line(machine->cpu[1], 0, (gamma_irq_clock & 0x08) ? ASSERT_LINE : CLEAR_LINE);
56      cputag_set_input_line(machine, "gamma", 0, (gamma_irq_clock & 0x08) ? ASSERT_LINE : CLEAR_LINE);
5757   }
5858}
5959
r4679r4680
6161WRITE8_HANDLER( mhavoc_alpha_irq_ack_w )
6262{
6363   /* clear the line and reset the clock */
64   cpu_set_input_line(space->machine->cpu[0], 0, CLEAR_LINE);
64   cputag_set_input_line(space->machine, "alpha", 0, CLEAR_LINE);
6565   alpha_irq_clock = 0;
6666   alpha_irq_clock_enable = 1;
6767}
r4679r4680
7070WRITE8_HANDLER( mhavoc_gamma_irq_ack_w )
7171{
7272   /* clear the line and reset the clock */
73   cpu_set_input_line(space->machine->cpu[1], 0, CLEAR_LINE);
73   cputag_set_input_line(space->machine, "gamma", 0, CLEAR_LINE);
7474   gamma_irq_clock = 0;
7575}
7676
r4679r4680
8484
8585MACHINE_RESET( mhavoc )
8686{
87   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
88   has_gamma_cpu = (machine->cpu[1] != NULL);
87   const address_space *space = cputag_get_address_space(machine, "alpha", ADDRESS_SPACE_PROGRAM);
88   has_gamma_cpu = (cputag_get_cpu(machine, "gamma") != NULL);
8989
9090   memory_configure_bank(machine, 1, 0, 1, mhavoc_zram0, 0);
9191   memory_configure_bank(machine, 1, 1, 1, mhavoc_zram1, 0);
r4679r4680
146146   alpha_data = param;
147147
148148   /* signal with an NMI pulse */
149   cpu_set_input_line(machine->cpu[1], INPUT_LINE_NMI, PULSE_LINE);
149   cputag_set_input_line(machine, "gamma", INPUT_LINE_NMI, PULSE_LINE);
150150
151151   /* the sound CPU needs to reply in 250microseconds (according to Neil Bradley) */
152152   timer_set(machine, ATTOTIME_IN_USEC(250), NULL, 0, 0);
r4679r4680
227227
228228CUSTOM_INPUT( mhavoc_bit67_r )
229229{
230   const char *tag1 = param;
230   const char *tag1 = (const char *)param;
231231   const char *tag2 = tag1 + strlen(tag1) + 1;
232232   return input_port_read(field->port->machine, player_1 ? tag2 : tag1) & 0x03;
233233}
r4679r4680
271271   player_1 = (data >> 5) & 1;
272272
273273   /* Bit 3 = Gamma reset */
274   cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_RESET, (data & 0x08) ? CLEAR_LINE : ASSERT_LINE);
274   cputag_set_input_line(space->machine, "gamma", INPUT_LINE_RESET, (data & 0x08) ? CLEAR_LINE : ASSERT_LINE);
275275   if (!(data & 0x08))
276276   {
277277      logerror("\t\t\t\t*** resetting gamma processor. ***\n");
r4679r4680
341341{
342342   /* install the speech support that was only optionally stuffed for use */
343343   /* in the Return to Vax hack */
344   memory_install_write8_handler(cpu_get_address_space(machine->cpu[1], ADDRESS_SPACE_PROGRAM), 0x5800, 0x5800, 0, 0, mhavocrv_speech_data_w);
345   memory_install_write8_handler(cpu_get_address_space(machine->cpu[1], ADDRESS_SPACE_PROGRAM), 0x5900, 0x5900, 0, 0, mhavocrv_speech_strobe_w);
344   memory_install_write8_handler(cputag_get_address_space(machine, "gamma", ADDRESS_SPACE_PROGRAM), 0x5800, 0x5800, 0, 0, mhavocrv_speech_data_w);
345   memory_install_write8_handler(cputag_get_address_space(machine, "gamma", ADDRESS_SPACE_PROGRAM), 0x5900, 0x5900, 0, 0, mhavocrv_speech_strobe_w);
346346}
src/mame/machine/decocass.c
r4679r4680
103103   decocass_sound_ack |= 0x80;
104104   /* remove snd cpu data ack bit. i don't see it in the schems, but... */
105105   decocass_sound_ack &= ~0x40;
106   cpu_set_input_line(space->machine->cpu[1], M6502_IRQ_LINE, ASSERT_LINE);
106   cputag_set_input_line(space->machine, "audiocpu", M6502_IRQ_LINE, ASSERT_LINE);
107107}
108108
109109READ8_HANDLER( decocass_sound_data_r )
r4679r4680
131131{
132132   UINT8 data = soundlatch_r(space, 0);
133133   LOG(4,("CPU %s sound command <- $%02x\n", space->cpu->tag, data));
134   cpu_set_input_line(space->machine->cpu[1], M6502_IRQ_LINE, CLEAR_LINE);
134   cputag_set_input_line(space->machine, "audiocpu", M6502_IRQ_LINE, CLEAR_LINE);
135135   decocass_sound_ack &= ~0x80;
136136   return data;
137137}
r4679r4680
140140{
141141   int scanline = param;
142142   audio_nmi_state = scanline & 8;
143   cpu_set_input_line(timer->machine->cpu[1], INPUT_LINE_NMI, (audio_nmi_enabled && audio_nmi_state) ? ASSERT_LINE : CLEAR_LINE);
143   cputag_set_input_line(timer->machine, "audiocpu", INPUT_LINE_NMI, (audio_nmi_enabled && audio_nmi_state) ? ASSERT_LINE : CLEAR_LINE);
144144}
145145
146146WRITE8_HANDLER( decocass_sound_nmi_enable_w )
147147{
148148   audio_nmi_enabled = 1;
149   cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_NMI, (audio_nmi_enabled && audio_nmi_state) ? ASSERT_LINE : CLEAR_LINE);
149   cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, (audio_nmi_enabled && audio_nmi_state) ? ASSERT_LINE : CLEAR_LINE);
150150}
151151
152152READ8_HANDLER( decocass_sound_nmi_enable_r )
153153{
154154   audio_nmi_enabled = 1;
155   cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_NMI, (audio_nmi_enabled && audio_nmi_state) ? ASSERT_LINE : CLEAR_LINE);
155   cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, (audio_nmi_enabled && audio_nmi_state) ? ASSERT_LINE : CLEAR_LINE);
156156   return 0xff;
157157}
158158
r4679r4680
172172
173173WRITE8_HANDLER( decocass_nmi_reset_w )
174174{
175   cpu_set_input_line(space->machine->cpu[0], INPUT_LINE_NMI, CLEAR_LINE );
175   cputag_set_input_line(space->machine, "maincpu", INPUT_LINE_NMI, CLEAR_LINE );
176176}
177177
178178WRITE8_HANDLER( decocass_quadrature_decoder_reset_w )
r4679r4680
246246   decocass_reset = data;
247247
248248   /* CPU #1 active high reset */
249   cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_RESET, data & 0x01);
249   cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_RESET, data & 0x01);
250250
251251   /* on reset also disable audio NMI */
252252   if (data & 1)
253253   {
254254      audio_nmi_enabled = 0;
255      cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_NMI, (audio_nmi_enabled && audio_nmi_state) ? ASSERT_LINE : CLEAR_LINE);
255      cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, (audio_nmi_enabled && audio_nmi_state) ? ASSERT_LINE : CLEAR_LINE);
256256   }
257257
258258   /* 8041 active low reset */
259   cpu_set_input_line(space->machine->cpu[2], INPUT_LINE_RESET, (data & 0x08) ^ 0x08);
259   cputag_set_input_line(space->machine, "mcu", INPUT_LINE_RESET, (data & 0x08) ^ 0x08);
260260}
261261
262262
r4679r4680
314314   if (1 == (offset & 1))
315315   {
316316      if (0 == (offset & E5XX_MASK))
317         data = upi41_master_r(space->machine->cpu[2], 1);
317         data = upi41_master_r(cputag_get_cpu(space->machine, "mcu"), 1);
318318      else
319319         data = 0xff;
320320
r4679r4680
344344      }
345345
346346      if (0 == (offset & E5XX_MASK))
347         data = upi41_master_r(space->machine->cpu[2], 0);
347         data = upi41_master_r(cputag_get_cpu(space->machine, "mcu"), 0);
348348      else
349349         data = 0xff;
350350
r4679r4680
393393   if (1 == (offset & 1))
394394   {
395395      if (0 == (offset & E5XX_MASK))
396         data = upi41_master_r(space->machine->cpu[2], 1);
396         data = upi41_master_r(cputag_get_cpu(space->machine, "mcu"), 1);
397397      else
398398         data = 0xff;
399399
r4679r4680
423423      }
424424
425425      if (0 == (offset & E5XX_MASK))
426         data = upi41_master_r(space->machine->cpu[2], 0);
426         data = upi41_master_r(cputag_get_cpu(space->machine, "mcu"), 0);
427427      else
428428         data = 0xff;
429429
r4679r4680
472472   if (1 == (offset & 1))
473473   {
474474      if (0 == (offset & E5XX_MASK))
475         data = upi41_master_r(space->machine->cpu[2], 1);
475         data = upi41_master_r(cputag_get_cpu(space->machine, "mcu"), 1);
476476      else
477477         data = 0xff;
478478
r4679r4680
502502      }
503503
504504      if (0 == (offset & E5XX_MASK))
505         data = upi41_master_r(space->machine->cpu[2], 0);
505         data = upi41_master_r(cputag_get_cpu(space->machine, "mcu"), 0);
506506      else
507507         data = 0xff;
508508
r4679r4680
551551   if (1 == (offset & 1))
552552   {
553553      if (0 == (offset & E5XX_MASK))
554         data = upi41_master_r(space->machine->cpu[2], 1);
554         data = upi41_master_r(cputag_get_cpu(space->machine, "mcu"), 1);
555555      else
556556         data = 0xff;
557557
r4679r4680
581581      }
582582
583583      if (0 == (offset & E5XX_MASK))
584         data = upi41_master_r(space->machine->cpu[2], 0);
584         data = upi41_master_r(cputag_get_cpu(space->machine, "mcu"), 0);
585585      else
586586         data = 0xff;
587587
r4679r4680
632632   if (1 == (offset & 1))
633633   {
634634      if (0 == (offset & E5XX_MASK))
635         data = upi41_master_r(space->machine->cpu[2], 1);
635         data = upi41_master_r(cputag_get_cpu(space->machine, "mcu"), 1);
636636      else
637637         data = 0xff;
638638
r4679r4680
662662      }
663663
664664      if (0 == (offset & E5XX_MASK))
665         data = upi41_master_r(space->machine->cpu[2], 0);
665         data = upi41_master_r(cputag_get_cpu(space->machine, "mcu"), 0);
666666      else
667667         data = 0xff;
668668
r4679r4680
725725   else
726726   {
727727      if (0 == (offset & E5XX_MASK))
728         data = upi41_master_r(space->machine->cpu[2], offset);
728         data = upi41_master_r(cputag_get_cpu(space->machine, "mcu"), offset);
729729      else
730730         data = offset & 0xff;
731731
r4679r4680
762762         LOG(3,("PROM:%s D2:%d", type2_xx_latch ? "on" : "off", type2_d2_latch));
763763      }
764764   }
765   upi41_master_w(space->machine->cpu[2], offset & 1, data);
765   upi41_master_w(cputag_get_cpu(space->machine, "mcu"), offset & 1, data);
766766
767767#ifdef MAME_DEBUG
768768   decocass_fno(offset, data);
r4679r4680
803803      {
804804         if (0 == (offset & E5XX_MASK))
805805         {
806            data = upi41_master_r(space->machine->cpu[2], 1);
806            data = upi41_master_r(cputag_get_cpu(space->machine, "mcu"), 1);
807807            LOG(4,("%10s 6502-PC: %04x decocass_type3_r(%02x): $%02x <- 8041 STATUS\n", attotime_string(timer_get_time(space->machine), 6), cpu_get_previouspc(space->cpu), offset, data));
808808         }
809809         else
r4679r4680
824824      {
825825         if (0 == (offset & E5XX_MASK))
826826         {
827            save = upi41_master_r(space->machine->cpu[2], 0);
827            save = upi41_master_r(cputag_get_cpu(space->machine, "mcu"), 0);
828828            switch (type3_swap)
829829            {
830830            case TYPE3_SWAP_01:
r4679r4680
996996      }
997997   }
998998   LOG(3,("%10s 6502-PC: %04x decocass_e5xx_w(%02x): $%02x -> %s\n", attotime_string(timer_get_time(space->machine), 6), cpu_get_previouspc(space->cpu), offset, data, offset & 1 ? "8041-CMND" : "8041-DATA"));
999   upi41_master_w(space->machine->cpu[2], offset, data);
999   upi41_master_w(cputag_get_cpu(space->machine, "mcu"), offset, data);
10001000}
10011001
10021002/***************************************************************************
r4679r4680
10191019   {
10201020      if (0 == (offset & E5XX_MASK))
10211021      {
1022         data = upi41_master_r(space->machine->cpu[2], 1);
1022         data = upi41_master_r(cputag_get_cpu(space->machine, "mcu"), 1);
10231023         LOG(4,("%10s 6502-PC: %04x decocass_type4_r(%02x): $%02x <- 8041 STATUS\n", attotime_string(timer_get_time(space->machine), 6), cpu_get_previouspc(space->cpu), offset, data));
10241024      }
10251025      else
r4679r4680
10421042      {
10431043         if (0 == (offset & E5XX_MASK))
10441044         {
1045            data = upi41_master_r(space->machine->cpu[2], 0);
1045            data = upi41_master_r(cputag_get_cpu(space->machine, "mcu"), 0);
10461046            LOG(3,("%10s 6502-PC: %04x decocass_type4_r(%02x): $%02x '%c' <- open bus (D0 replaced with latch)\n", attotime_string(timer_get_time(space->machine), 6), cpu_get_previouspc(space->cpu), offset, data, (data >= 32) ? data : '.'));
10471047         }
10481048         else
r4679r4680
10821082      }
10831083   }
10841084   LOG(3,("%10s 6502-PC: %04x decocass_e5xx_w(%02x): $%02x -> %s\n", attotime_string(timer_get_time(space->machine), 6), cpu_get_previouspc(space->cpu), offset, data, offset & 1 ? "8041-CMND" : "8041-DATA"));
1085   upi41_master_w(space->machine->cpu[2], offset, data);
1085   upi41_master_w(cputag_get_cpu(space->machine, "mcu"), offset, data);
10861086}
10871087
10881088/***************************************************************************
r4679r4680
11021102   {
11031103      if (0 == (offset & E5XX_MASK))
11041104      {
1105         data = upi41_master_r(space->machine->cpu[2], 1);
1105         data = upi41_master_r(cputag_get_cpu(space->machine, "mcu"), 1);
11061106         LOG(4,("%10s 6502-PC: %04x decocass_type5_r(%02x): $%02x <- 8041 STATUS\n", attotime_string(timer_get_time(space->machine), 6), cpu_get_previouspc(space->cpu), offset, data));
11071107      }
11081108      else
r4679r4680
11221122      {
11231123         if (0 == (offset & E5XX_MASK))
11241124         {
1125            data = upi41_master_r(space->machine->cpu[2], 0);
1125            data = upi41_master_r(cputag_get_cpu(space->machine, "mcu"), 0);
11261126            LOG(3,("%10s 6502-PC: %04x decocass_type5_r(%02x): $%02x '%c' <- open bus (D0 replaced with latch)\n", attotime_string(timer_get_time(space->machine), 6), cpu_get_previouspc(space->cpu), offset, data, (data >= 32) ? data : '.'));
11271127         }
11281128         else
r4679r4680
11591159      }
11601160   }
11611161   LOG(3,("%10s 6502-PC: %04x decocass_e5xx_w(%02x): $%02x -> %s\n", attotime_string(timer_get_time(space->machine), 6), cpu_get_previouspc(space->cpu), offset, data, offset & 1 ? "8041-CMND" : "8041-DATA"));
1162   upi41_master_w(space->machine->cpu[2], offset, data);
1162   upi41_master_w(cputag_get_cpu(space->machine, "mcu"), offset, data);
11631163}
11641164
11651165/***************************************************************************
r4679r4680
11781178   {
11791179      if (0 == (offset & E5XX_MASK))
11801180      {
1181         data = upi41_master_r(space->machine->cpu[2], 1);
1181         data = upi41_master_r(cputag_get_cpu(space->machine, "mcu"), 1);
11821182         LOG(4,("%10s 6502-PC: %04x decocass_nodong_r(%02x): $%02x <- 8041 STATUS\n", attotime_string(timer_get_time(space->machine), 6), cpu_get_previouspc(space->cpu), offset, data));
11831183      }
11841184      else
r4679r4680
11911191   {
11921192      if (0 == (offset & E5XX_MASK))
11931193      {
1194         data = upi41_master_r(space->machine->cpu[2], 0);
1194         data = upi41_master_r(cputag_get_cpu(space->machine, "mcu"), 0);
11951195         LOG(3,("%10s 6502-PC: %04x decocass_nodong_r(%02x): $%02x '%c' <- open bus (D0 replaced with latch)\n", attotime_string(timer_get_time(space->machine), 6), cpu_get_previouspc(space->cpu), offset, data, (data >= 32) ? data : '.'));
11961196      }
11971197      else
r4679r4680
12631263   if (0 == (offset & E5XX_MASK))
12641264   {
12651265      LOG(3,("%10s 6502-PC: %04x decocass_e5xx_w(%02x): $%02x -> %s\n", attotime_string(timer_get_time(space->machine), 6), cpu_get_previouspc(space->cpu), offset, data, offset & 1 ? "8041-CMND" : "8041-DATA"));
1266      upi41_master_w(space->machine->cpu[2], offset & 1, data);
1266      upi41_master_w(cputag_get_cpu(space->machine, "mcu"), offset & 1, data);
12671267#ifdef MAME_DEBUG
12681268      decocass_fno(offset, data);
12691269#endif
r4679r4680
19961996      UINT32 dataclock = tape->clockpos - REGION_BOT_GAP_END_CLOCK;
19971997
19981998      /* compute the block number */
1999      tape->region = REGION_DATA_BLOCK_0 + dataclock / (TAPE_CLOCKS_PER_BYTE * BYTE_BLOCK_TOTAL);
1999      tape->region = (tape_region)(REGION_DATA_BLOCK_0 + dataclock / (TAPE_CLOCKS_PER_BYTE * BYTE_BLOCK_TOTAL));
20002000      dataclock -= (tape->region - REGION_DATA_BLOCK_0) * TAPE_CLOCKS_PER_BYTE * BYTE_BLOCK_TOTAL;
20012001
20022002      /* compute the byte within the block */
2003      tape->bytenum = dataclock / TAPE_CLOCKS_PER_BYTE;
2003      tape->bytenum = (tape_byte)(dataclock / TAPE_CLOCKS_PER_BYTE);
20042004      dataclock -= tape->bytenum * TAPE_CLOCKS_PER_BYTE;
20052005
20062006      /* compute the bit within the byte */
src/mame/machine/twincobr.c
r4679r4680
7272   switch (main_ram_seg) {
7373      case 0x30000:
7474      case 0x40000:
75      case 0x50000:   mainspace = cpu_get_address_space(space->machine->cpu[0], ADDRESS_SPACE_PROGRAM);
75      case 0x50000:   mainspace = cputag_get_address_space(space->machine, "maincpu", ADDRESS_SPACE_PROGRAM);
7676                  input_data = memory_read_word(mainspace, main_ram_seg + dsp_addr_w);
7777                  break;
7878      default:      logerror("DSP PC:%04x Warning !!! IO reading from %08x (port 1)\n",cpu_get_previouspc(space->cpu),main_ram_seg + dsp_addr_w); break;
r4679r4680
9090   switch (main_ram_seg) {
9191      case 0x30000:   if ((dsp_addr_w < 3) && (data == 0)) dsp_execute = 1;
9292      case 0x40000:
93      case 0x50000:   mainspace = cpu_get_address_space(space->machine->cpu[0], ADDRESS_SPACE_PROGRAM);
93      case 0x50000:   mainspace = cputag_get_address_space(space->machine, "maincpu", ADDRESS_SPACE_PROGRAM);
9494                  memory_write_word(mainspace, main_ram_seg + dsp_addr_w, data);
9595                  break;
9696      default:      logerror("DSP PC:%04x Warning !!! IO writing to %08x (port 1)\n",cpu_get_previouspc(space->cpu),main_ram_seg + dsp_addr_w); break;
r4679r4680
122122   switch (main_ram_seg) {
123123      case 0x7000:
124124      case 0x8000:
125      case 0xa000:   mainspace = cpu_get_address_space(space->machine->cpu[0], ADDRESS_SPACE_PROGRAM);
125      case 0xa000:   mainspace = cputag_get_address_space(space->machine, "maincpu", ADDRESS_SPACE_PROGRAM);
126126                  input_data =  memory_read_byte(mainspace, main_ram_seg + (dsp_addr_w + 0))
127127                           | (memory_read_byte(mainspace, main_ram_seg + (dsp_addr_w + 1)) << 8);
128128                  break;
r4679r4680
141141   switch (main_ram_seg) {
142142      case 0x7000:   if ((dsp_addr_w < 3) && (data == 0)) dsp_execute = 1;
143143      case 0x8000:
144      case 0xa000:   mainspace = cpu_get_address_space(space->machine->cpu[0], ADDRESS_SPACE_PROGRAM);
144      case 0xa000:   mainspace = cputag_get_address_space(space->machine, "maincpu", ADDRESS_SPACE_PROGRAM);
145145                  memory_write_byte(mainspace, main_ram_seg + (dsp_addr_w + 0), (data & 0xff));
146146                  memory_write_byte(mainspace, main_ram_seg + (dsp_addr_w + 1), ((data >> 8) & 0xff));
147147                  break;
r4679r4680
164164   if (data == 0) {
165165      if (dsp_execute) {
166166         LOG(("Turning the main CPU on\n"));
167         cpu_set_input_line(space->machine->cpu[0], INPUT_LINE_HALT, CLEAR_LINE);
167         cputag_set_input_line(space->machine, "maincpu", INPUT_LINE_HALT, CLEAR_LINE);
168168         dsp_execute = 0;
169169      }
170170      twincobr_dsp_BIO = ASSERT_LINE;
r4679r4680
201201   twincobr_dsp_on = enable;
202202   if (enable) {
203203      LOG(("Turning DSP on and main CPU off\n"));
204      cpu_set_input_line(machine->cpu[2], INPUT_LINE_HALT, CLEAR_LINE);
205      cpu_set_input_line(machine->cpu[2], 0, ASSERT_LINE); /* TMS32010 INT */
206      cpu_set_input_line(machine->cpu[0], INPUT_LINE_HALT, ASSERT_LINE);
204      cputag_set_input_line(machine, "dsp", INPUT_LINE_HALT, CLEAR_LINE);
205      cputag_set_input_line(machine, "dsp", 0, ASSERT_LINE); /* TMS32010 INT */
206      cputag_set_input_line(machine, "maincpu", INPUT_LINE_HALT, ASSERT_LINE);
207207   }
208208   else {
209209      LOG(("Turning DSP off\n"));
210      cpu_set_input_line(machine->cpu[2], 0, CLEAR_LINE); /* TMS32010 INT */
211      cpu_set_input_line(machine->cpu[2], INPUT_LINE_HALT, ASSERT_LINE);
210      cputag_set_input_line(machine, "dsp", 0, CLEAR_LINE); /* TMS32010 INT */
211      cputag_set_input_line(machine, "dsp", INPUT_LINE_HALT, ASSERT_LINE);
212212   }
213213}
214214
r4679r4680
287287      /****** The following apply to Flying Shark/Wardner only ******/
288288      case 0x00:   /* This means assert the INT line to the DSP */
289289               LOG(("Turning DSP on and main CPU off\n"));
290               cpu_set_input_line(space->machine->cpu[2], INPUT_LINE_HALT, CLEAR_LINE);
291               cpu_set_input_line(space->machine->cpu[2], 0, ASSERT_LINE); /* TMS32010 INT */
292               cpu_set_input_line(space->machine->cpu[0], INPUT_LINE_HALT, ASSERT_LINE);
290               cputag_set_input_line(space->machine, "dsp", INPUT_LINE_HALT, CLEAR_LINE);
291               cputag_set_input_line(space->machine, "dsp", 0, ASSERT_LINE); /* TMS32010 INT */
292               cputag_set_input_line(space->machine, "maincpu", INPUT_LINE_HALT, ASSERT_LINE);
293293               break;
294294      case 0x01:   /* This means inhibit the INT line to the DSP */
295295               LOG(("Turning DSP off\n"));
296               cpu_set_input_line(space->machine->cpu[2], 0, CLEAR_LINE); /* TMS32010 INT */
297               cpu_set_input_line(space->machine->cpu[2], INPUT_LINE_HALT, ASSERT_LINE);
296               cputag_set_input_line(space->machine, "dsp", 0, CLEAR_LINE); /* TMS32010 INT */
297               cputag_set_input_line(space->machine, "dsp", INPUT_LINE_HALT, ASSERT_LINE);
298298               break;
299299   }
300300}
src/mame/machine/konppc.c
r4679r4680
4747   for (i=0; i < num_boards; i++)
4848   {
4949      dsp_comm_ppc[i][0] = 0x00;
50      dsp_shared_ram[i] = auto_malloc(DSP_BANK_SIZE * 2);
50      dsp_shared_ram[i] = auto_alloc_array(machine, UINT32, DSP_BANK_SIZE * 2/4);
5151      dsp_shared_ram_bank[i] = 0;
5252
5353      dsp_state[i] = 0x80;
r4679r4680
5858      nwk_fifo_read_ptr[i] = 0;
5959      nwk_fifo_write_ptr[i] = 0;
6060
61      nwk_fifo[i] = auto_malloc(sizeof(UINT32) * 0x800);
62      nwk_ram[i] = auto_malloc(sizeof(UINT32) * 0x2000);
61      nwk_fifo[i] = auto_alloc_array(machine, UINT32, 0x800);
62      nwk_ram[i] = auto_alloc_array(machine, UINT32, 0x2000);
6363
6464      state_save_register_item_array(machine, "konppc", NULL, i, dsp_comm_ppc[i]);
6565      state_save_register_item_array(machine, "konppc", NULL, i, dsp_comm_sharc[i]);
r4679r4680
413413   int i;
414414   for (i=0; i < MAX_K033906_CHIPS; i++)
415415   {
416      K033906_reg[i] = auto_malloc(sizeof(UINT32) * 256);
417      K033906_ram[i] = auto_malloc(sizeof(UINT32) * 32768);
416      K033906_reg[i] = auto_alloc_array(machine, UINT32, 256);
417      K033906_ram[i] = auto_alloc_array(machine, UINT32, 32768);
418418      state_save_register_item_pointer(machine, "K033906", NULL, i, K033906_reg[i], 256);
419419      state_save_register_item_pointer(machine, "K033906", NULL, i, K033906_ram[i], 32768);
420420   }
src/mame/machine/atari_vg.c
r4679r4680
129129}
130130
131131
132static DEVICE_SET_INFO( atari_vg_earom )
133{
134   switch (state)
135   {
136      /* no parameters to set */
137   }
138}
139
140
141132DEVICE_GET_INFO( atari_vg_earom )
142133{
143134   switch (state)
r4679r4680
148139      case DEVINFO_INT_CLASS:                     info->i = DEVICE_CLASS_PERIPHERAL;      break;
149140
150141      /* --- the following bits of info are returned as pointers to data or functions --- */
151      case DEVINFO_FCT_SET_INFO:                  info->set_info = DEVICE_SET_INFO_NAME(atari_vg_earom); break;
152142      case DEVINFO_FCT_START:                     info->start = DEVICE_START_NAME(atari_vg_earom);break;
153143      case DEVINFO_FCT_NVRAM:                     info->nvram = DEVICE_NVRAM_NAME(atari_vg_earom); break;
154144      case DEVINFO_FCT_STOP:                     /* Nothing */                     break;
src/mame/machine/irobot.c
r4679r4680
180180    if (scanline == 224) irvg_vblank=1;
181181    logerror("SCANLINE CALLBACK %d\n",scanline);
182182    /* set the IRQ line state based on the 32V line state */
183    cpu_set_input_line(machine->cpu[0], M6809_IRQ_LINE, (scanline & 32) ? ASSERT_LINE : CLEAR_LINE);
183    cputag_set_input_line(machine, "maincpu", M6809_IRQ_LINE, (scanline & 32) ? ASSERT_LINE : CLEAR_LINE);
184184
185185    /* set a callback for the next 32-scanline increment */
186186    scanline += 32;
r4679r4680
208208   /* set an initial timer to go off on scanline 0 */
209209   timer_set(machine, video_screen_get_time_until_pos(machine->primary_screen, 0, 0), NULL, 0, scanline_callback);
210210
211   irobot_rom_banksel_w(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM),0,0);
212   irobot_out0_w(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM),0,0);
211   irobot_rom_banksel_w(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM),0,0);
212   irobot_out0_w(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM),0,0);
213213   irobot_combase = comRAM[0];
214214   irobot_combase_mb = comRAM[1];
215215   irobot_outx = 0;
r4679r4680
375375   int i;
376376
377377   /* allocate RAM */
378   mbops = auto_malloc(sizeof(irmb_ops) * 1024);
378   mbops = auto_alloc_array(machine, irmb_ops, 1024);
379379
380380   for (i = 0; i < 1024; i++)
381381   {
r4679r4680
457457{
458458    logerror("mb done. ");
459459   irmb_running = 0;
460   cpu_set_input_line(machine->cpu[0], M6809_FIRQ_LINE, ASSERT_LINE);
460   cputag_set_input_line(machine, "maincpu", M6809_FIRQ_LINE, ASSERT_LINE);
461461}
462462
463463
r4679r4680
861861      timer_adjust_oneshot(irmb_timer, attotime_mul(ATTOTIME_IN_NSEC(200), icount), 0);
862862   }
863863#else
864   cpu_set_input_line(machine->cpu[0], M6809_FIRQ_LINE, ASSERT_LINE);
864   cputag_set_input_line(machine, "maincpu", M6809_FIRQ_LINE, ASSERT_LINE);
865865#endif
866866   irmb_running=1;
867867}
src/mame/machine/leland.c
r4679r4680
365365MACHINE_START( leland )
366366{
367367   /* allocate extra stuff */
368   battery_ram = auto_malloc(LELAND_BATTERY_RAM_SIZE);
368   battery_ram = auto_alloc_array(machine, UINT8, LELAND_BATTERY_RAM_SIZE);
369369
370370   /* start scanline interrupts going */
371371   master_int_timer = timer_alloc(machine, leland_interrupt_callback, NULL);
r4679r4680
409409      memory_set_bankptr(machine, 3, &slave_base[0x10000]);
410410
411411   /* if we have an I80186 CPU, reset it */
412   if (machine->cpu[2] != NULL && cpu_get_type(machine->cpu[2]) == CPU_I80186)
412   if (cputag_get_cpu(machine, "audiocpu") != NULL && cpu_get_type(cputag_get_cpu(machine, "audiocpu")) == CPU_I80186)
413413      leland_80186_sound_init();
414414}
415415
r4679r4680
417417MACHINE_START( ataxx )
418418{
419419   /* set the odd data banks */
420   battery_ram = auto_malloc(LELAND_BATTERY_RAM_SIZE);
421   extra_tram = auto_malloc(ATAXX_EXTRA_TRAM_SIZE);
420   battery_ram = auto_alloc_array(machine, UINT8, LELAND_BATTERY_RAM_SIZE);
421   extra_tram = auto_alloc_array(machine, UINT8, ATAXX_EXTRA_TRAM_SIZE);
422422
423423   /* start scanline interrupts going */
424424   master_int_timer = timer_alloc(machine, ataxx_interrupt_callback, NULL);
r4679r4680
474474
475475   /* interrupts generated on the VA10 line, which is every */
476476   /* 16 scanlines starting with scanline #8 */
477   cpu_set_input_line(machine->cpu[0], 0, HOLD_LINE);
477   cputag_set_input_line(machine, "master", 0, HOLD_LINE);
478478
479479   /* set a timer for the next one */
480480   scanline += 16;
r4679r4680
489489   int scanline = param;
490490
491491   /* interrupts generated according to the interrupt control register */
492   cpu_set_input_line(machine->cpu[0], 0, HOLD_LINE);
492   cputag_set_input_line(machine, "master", 0, HOLD_LINE);
493493
494494   /* set a timer for the next one */
495495   timer_adjust_oneshot(master_int_timer, video_screen_get_time_until_pos(machine->primary_screen, scanline, 0), scanline);
r4679r4680
11581158
11591159      case 0x01:   /* /GIN1 */
11601160         result = input_port_read(space->machine, "IN1");
1161         if (cpu_get_reg(space->machine->cpu[1], Z80_HALT))
1161         if (cpu_get_reg(cputag_get_cpu(space->machine, "slave"), Z80_HALT))
11621162            result ^= 0x01;
11631163         break;
11641164
11651165      case 0x02:   /* /GIN2 */
11661166      case 0x12:
1167         cpu_set_input_line(space->machine->cpu[0], INPUT_LINE_NMI, CLEAR_LINE);
1167         cputag_set_input_line(space->machine, "master", INPUT_LINE_NMI, CLEAR_LINE);
11681168         break;
11691169
11701170      case 0x03:   /* /IGID */
r4679r4680
11951195   switch (offset)
11961196   {
11971197      case 0x09:   /* /MCONT */
1198         cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_RESET, (data & 0x01) ? CLEAR_LINE : ASSERT_LINE);
1198         cputag_set_input_line(space->machine, "slave", INPUT_LINE_RESET, (data & 0x01) ? CLEAR_LINE : ASSERT_LINE);
11991199         wcol_enable = (data & 0x02);
1200         cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_NMI, (data & 0x04) ? CLEAR_LINE : ASSERT_LINE);
1201         cpu_set_input_line(space->machine->cpu[1], 0, (data & 0x08) ? CLEAR_LINE : ASSERT_LINE);
1200         cputag_set_input_line(space->machine, "slave", INPUT_LINE_NMI, (data & 0x04) ? CLEAR_LINE : ASSERT_LINE);
1201         cputag_set_input_line(space->machine, "slave", 0, (data & 0x08) ? CLEAR_LINE : ASSERT_LINE);
12021202
12031203         if (LOG_EEPROM) logerror("%04X:EE write %d%d%d\n", cpu_get_pc(space->cpu),
12041204               (data >> 6) & 1, (data >> 5) & 1, (data >> 4) & 1);
r4679r4680
12381238
12391239      case 0x07:   /* /SLVBLK */
12401240         result = input_port_read(space->machine, "IN1");
1241         if (cpu_get_reg(space->machine->cpu[1], Z80_HALT))
1241         if (cpu_get_reg(cputag_get_cpu(space->machine, "slave"), Z80_HALT))
12421242            result ^= 0x01;
12431243         break;
12441244
r4679r4680
12701270         break;
12711271
12721272      case 0x05:   /* /SLV0 */
1273         cpu_set_input_line(space->machine->cpu[1], 0, (data & 0x01) ? CLEAR_LINE : ASSERT_LINE);
1274         cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_NMI, (data & 0x04) ? CLEAR_LINE : ASSERT_LINE);
1275         cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_RESET, (data & 0x10) ? CLEAR_LINE : ASSERT_LINE);
1273         cputag_set_input_line(space->machine, "slave", 0, (data & 0x01) ? CLEAR_LINE : ASSERT_LINE);
1274         cputag_set_input_line(space->machine, "slave", INPUT_LINE_NMI, (data & 0x04) ? CLEAR_LINE : ASSERT_LINE);
1275         cputag_set_input_line(space->machine, "slave", INPUT_LINE_RESET, (data & 0x10) ? CLEAR_LINE : ASSERT_LINE);
12761276         break;
12771277
12781278      case 0x08:   /*  */
src/mame/machine/neoboot.c
r4679r4680
2424   int i;
2525   int cx_size = memory_region_length( machine, "sprites" );
2626   UINT8 *rom = memory_region( machine, "sprites" );
27   UINT8 *buf = malloc_or_die( cx_size );
27   UINT8 *buf = alloc_array_or_die(UINT8, cx_size );
2828
2929   memcpy( buf, rom, cx_size );
3030
r4679r4680
4444
4545   if (value == 1)
4646   {
47      UINT8 *buf = malloc_or_die( sx_size );
47      UINT8 *buf = alloc_array_or_die(UINT8, sx_size );
4848      memcpy( buf, rom, sx_size );
4949
5050      for( i = 0; i < sx_size; i += 0x10 )
r4679r4680
7272{
7373   /* the protection chip does some *very* strange things to the rom */
7474   UINT8 *src = memory_region(machine, "maincpu");
75   UINT8 *dst = malloc_or_die( 0x600000 );
75   UINT8 *dst = alloc_array_or_die(UINT8, 0x600000 );
7676   UINT16 *rom = (UINT16 *)memory_region(machine, "maincpu");
7777   int i;
7878   static const int sec[] = { 0x3, 0x8, 0x7, 0xC, 0x1, 0xA, 0x6, 0xD };
r4679r4680
178178
179179void install_kof10th_protection ( running_machine *machine )
180180{
181   memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x2fe000, 0x2fffff, 0, 0, kof10th_RAMB_r);
182   memory_install_write16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x200000, 0x23ffff, 0, 0, kof10th_custom_w);
183   memory_install_write16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x240000, 0x2fffff, 0, 0, kof10th_bankswitch_w);
181   memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x2fe000, 0x2fffff, 0, 0, kof10th_RAMB_r);
182   memory_install_write16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x200000, 0x23ffff, 0, 0, kof10th_custom_w);
183   memory_install_write16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x240000, 0x2fffff, 0, 0, kof10th_bankswitch_w);
184184}
185185
186186void decrypt_kof10th(running_machine *machine)
187187{
188188   int i, j;
189   UINT8 *dst = malloc_or_die(0x900000);
189   UINT8 *dst = alloc_array_or_die(UINT8, 0x900000);
190190   UINT8 *src = memory_region( machine, "maincpu" );
191191
192192      memcpy(dst + 0x000000, src + 0x700000, 0x100000); // Correct (Verified in Uni-bios)
r4679r4680
219219   UINT8  *src = memory_region(machine, "maincpu");
220220   UINT16 *buf = (UINT16*)memory_region(machine, "audiocrypt");
221221   UINT8 *srom = (UINT8*)memory_region(machine, "fixed");
222   UINT8 *sbuf = malloc_or_die(0x20000);
222   UINT8 *sbuf = alloc_array_or_die(UINT8, 0x20000);
223223
224   UINT8 *dst = malloc_or_die(0x200000);
224   UINT8 *dst = alloc_array_or_die(UINT8, 0x200000);
225225
226226   memcpy(dst,buf,0x200000);
227227   memcpy(src+0x000000,dst+0x060000,0x20000);
r4679r4680
257257{
258258   int i, j, ofst;
259259   UINT8 *src = memory_region( machine, "maincpu" );
260   UINT8 *dst = malloc_or_die(0x80);
260   UINT8 *dst = alloc_array_or_die(UINT8, 0x80);
261261
262262   for (i = 0; i < 0x800000; i+=0x80)
263263   {
r4679r4680
318318      { 8, 0, 7, 3, 4, 5, 6, 2, 1 },
319319   };
320320
321   UINT8 *dst = malloc_or_die( 0x10000 );
321   UINT8 *dst = alloc_array_or_die(UINT8, 0x10000 );
322322
323323   for ( i = 0; i < size; i+=0x10000 )
324324   {
r4679r4680
344344   int i,j;
345345
346346   UINT8 *src = memory_region(machine, "maincpu");
347   UINT8 *dst = malloc_or_die(0x80);
347   UINT8 *dst = alloc_array_or_die(UINT8, 0x80);
348348
349349   memmove(src, src + 0x300000, 0x500000);
350350
r4679r4680
367367void kf2k2mp2_px_decrypt( running_machine *machine )
368368{
369369   UINT8 *src = memory_region(machine, "maincpu");
370   UINT8 *dst = malloc_or_die(0x600000);
370   UINT8 *dst = alloc_array_or_die(UINT8, 0x600000);
371371
372372   memcpy (dst + 0x000000, src + 0x1C0000, 0x040000);
373373   memcpy (dst + 0x040000, src + 0x140000, 0x080000);
r4679r4680
387387   int i,j;
388388   int tilesize=128;
389389
390   UINT8* rom = malloc_or_die(16*tilesize);   // 16 tiles buffer
390   UINT8* rom = alloc_array_or_die(UINT8, 16*tilesize);   // 16 tiles buffer
391391   UINT8* realrom = memory_region(machine, "sprites") + start*tilesize;
392392
393393   for (i = 0; i < (end-start)/16; i++) {
r4679r4680
442442void decrypt_cthd2003( running_machine *machine )
443443{
444444   UINT8 *romdata = memory_region(machine, "fixed");
445   UINT8 *tmp = malloc_or_die(8*128*128);
445   UINT8 *tmp = alloc_array_or_die(UINT8, 8*128*128);
446446
447447   memcpy(tmp+8*0*128, romdata+8*0*128, 8*32*128);
448448   memcpy(tmp+8*32*128, romdata+8*64*128, 8*32*128);
r4679r4680
485485   UINT16 *mem16 = (UINT16 *)memory_region(machine, "maincpu");
486486
487487   /* special ROM banking handler */
488   memory_install_write16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x2ffff0, 0x2fffff, 0, 0, cthd2003_bankswitch_w);
488   memory_install_write16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x2ffff0, 0x2fffff, 0, 0, cthd2003_bankswitch_w);
489489
490490   // theres still a problem on the character select screen but it seems to be related to cpu core timing issues,
491491   // overclocking the 68k prevents it.
r4679r4680
527527{
528528   int rom_size = memory_region_length( machine, "fixed" );
529529   UINT8 *rom = memory_region( machine, "fixed" );
530   UINT8 *buf = malloc_or_die( rom_size );
530   UINT8 *buf = alloc_array_or_die(UINT8, rom_size );
531531   int i;
532532   int ofst;
533533
r4679r4680
556556void decrypt_ct2k3sp( running_machine *machine )
557557{
558558   UINT8 *romdata = memory_region(machine, "audiocpu")+0x10000;
559   UINT8*tmp = malloc_or_die(8*128*128);
559   UINT8*tmp = alloc_array_or_die(UINT8, 8*128*128);
560560   memcpy(tmp+8*0*128, romdata+8*0*128, 8*32*128);
561561   memcpy(tmp+8*32*128, romdata+8*64*128, 8*32*128);
562562   memcpy(tmp+8*64*128, romdata+8*32*128, 8*32*128);
r4679r4680
576576void decrypt_ct2k3sa( running_machine *machine )
577577{
578578   UINT8 *romdata = memory_region(machine, "audiocpu")+0x10000;
579   UINT8*tmp = malloc_or_die(8*128*128);
579   UINT8*tmp = alloc_array_or_die(UINT8, 8*128*128);
580580   memcpy(tmp+8*0*128, romdata+8*0*128, 8*32*128);
581581   memcpy(tmp+8*32*128, romdata+8*64*128, 8*32*128);
582582   memcpy(tmp+8*64*128, romdata+8*32*128, 8*32*128);
r4679r4680
634634void decrypt_kof2k4se_68k( running_machine *machine )
635635{
636636   UINT8 *src = memory_region(machine, "maincpu")+0x100000;
637   UINT8 *dst = malloc_or_die(0x400000);
637   UINT8 *dst = alloc_array_or_die(UINT8, 0x400000);
638638   int i;
639639   static const int sec[] = {0x300000,0x200000,0x100000,0x000000};
640640      memcpy(dst,src,0x400000);
r4679r4680
664664   int i;
665665   UINT8 *src = memory_region( machine, "maincpu" );
666666   UINT16 *rom = (UINT16*)memory_region( machine, "maincpu" );
667   UINT8 *dst = malloc_or_die(0x600000);
667   UINT8 *dst = alloc_array_or_die(UINT8, 0x600000);
668668
669669   {
670670      static const int sec[] = { 0x3, 0x8, 0x7, 0xC, 0x1, 0xA, 0x6, 0xD };
r4679r4680
729729void install_ms5plus_protection(running_machine *machine)
730730{
731731   // special ROM banking handler / additional protection
732   memory_install_readwrite16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM),0x2ffff0, 0x2fffff,0, 0, mslug5_prot_r, ms5plus_bankswitch_w);
732   memory_install_readwrite16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM),0x2ffff0, 0x2fffff,0, 0, mslug5_prot_r, ms5plus_bankswitch_w);
733733}
734734
735735
r4679r4680
744744   int i;
745745   int size = memory_region_length( machine, "maincpu" );
746746   UINT8 *src = memory_region( machine, "maincpu" );
747   UINT8 *dst = malloc_or_die( size );
747   UINT8 *dst = alloc_array_or_die(UINT8, size );
748748   int ofst;
749749   for( i = 0; i < size / 0x100000; i++ ){
750750      memcpy( &dst[ i * 0x100000 ], &src[ sec[ i ] * 0x100000 ], 0x100000 );
r4679r4680
773773   int i;
774774   int size = memory_region_length( machine, "sprites" );
775775   UINT8 *src = memory_region( machine, "sprites" );
776   UINT8 *dst = malloc_or_die( size );
776   UINT8 *dst = alloc_array_or_die(UINT8, size );
777777   int ofst;
778778   memcpy( dst, src, size );
779779   for( i = 0; i < size / 0x80; i++ ){
r4679r4680
800800   };
801801   int size = memory_region_length( machine, "maincpu" );
802802   UINT8 *src = memory_region( machine, "maincpu" );
803   UINT8 *dst = malloc_or_die( size );
803   UINT8 *dst = alloc_array_or_die(UINT8, size );
804804   int i;
805805   int ofst;
806806   memcpy( dst, src, size );
r4679r4680
845845   };
846846   int size = memory_region_length( machine, "maincpu" );
847847   UINT8 *src = memory_region( machine, "maincpu" );
848   UINT8 *dst = malloc_or_die( size );
848   UINT8 *dst = alloc_array_or_die(UINT8, size );
849849   memcpy( dst, src, size );
850850   for( i = 0; i < 6; i++ ){
851851      memcpy( &src[ i * 0x100000 ], &dst[ sec[ i ] * 0x100000 ], 0x100000 );
r4679r4680
864864   };
865865   int size = memory_region_length( machine, "maincpu" );
866866   UINT8 *src = memory_region( machine, "maincpu" );
867   UINT8 *dst = malloc_or_die( size );
867   UINT8 *dst = alloc_array_or_die(UINT8, size );
868868   int i;
869869   int ofst;
870870   memcpy( dst, src, size );
r4679r4680
961961
962962    int rom_size = 0x800000;
963963    UINT8 *rom = memory_region( machine, "maincpu" );
964    UINT8 *buf = malloc_or_die( rom_size );
964    UINT8 *buf = alloc_array_or_die(UINT8, rom_size );
965965    memcpy( buf, rom, rom_size );
966966
967967    for( i = 0; i < rom_size / 0x100000; i++ ){
r4679r4680
972972
973973void kf2k3bl_install_protection(running_machine *machine)
974974{
975    memory_install_readwrite16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x2fe000, 0x2fffff, 0, 0, kof2003_r, kof2003_w );
975    memory_install_readwrite16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x2fe000, 0x2fffff, 0, 0, kof2003_r, kof2003_w );
976976}
977977
978978
r4679r4680
981981
982982void kf2k3pl_px_decrypt( running_machine *machine )
983983{
984   UINT16*tmp = malloc_or_die(0x100000);
984   UINT16*tmp = alloc_array_or_die(UINT16, 0x100000/2);
985985   UINT16*rom = (UINT16*)memory_region( machine, "maincpu" );
986986   int j;
987987   int i;
r4679r4680
10001000
10011001void kf2k3pl_install_protection(running_machine *machine)
10021002{
1003    memory_install_readwrite16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x2fe000, 0x2fffff, 0, 0, kof2003_r, kof2003p_w );
1003    memory_install_readwrite16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x2fe000, 0x2fffff, 0, 0, kof2003_r, kof2003p_w );
10041004}
10051005
10061006
r4679r4680
10311031
10321032void kf2k3upl_install_protection(running_machine *machine)
10331033{
1034    memory_install_readwrite16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x2fe000, 0x2fffff, 0, 0, kof2003_r, kof2003_w );
1034    memory_install_readwrite16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x2fe000, 0x2fffff, 0, 0, kof2003_r, kof2003_w );
10351035}
10361036
10371037
r4679r4680
10421042{
10431043   int px_size = memory_region_length( machine, "maincpu" );
10441044   UINT8 *rom = memory_region( machine, "maincpu" );
1045   UINT8 *buf = malloc_or_die( px_size );
1045   UINT8 *buf = alloc_array_or_die(UINT8, px_size );
10461046   int ofst;
10471047   int i;
10481048
r4679r4680
10851085{
10861086   /* decrypt Z80 */
10871087   UINT8 *rom = memory_region( machine, "audiocpu" )+0x10000;
1088   UINT8 *buf = malloc_or_die( 0x20000 );
1088   UINT8 *buf = alloc_array_or_die(UINT8, 0x20000 );
10891089   int i, j=0;
10901090   memcpy( buf, rom, 0x20000 );
10911091   for( i=0x00000; i<0x20000; i++ )
src/mame/machine/kabuki.c
r4679r4680
163163{
164164   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
165165   UINT8 *rom = memory_region(machine, "maincpu");
166   UINT8 *decrypt = auto_malloc(memory_region_length(machine, "maincpu"));
166   UINT8 *decrypt = auto_alloc_array(machine, UINT8, memory_region_length(machine, "maincpu"));
167167   int numbanks = (memory_region_length(machine, "maincpu") - 0x10000) / 0x4000;
168168   int i;
169169
r4679r4680
203203static void cps1_decode(running_machine *machine,int swap_key1,int swap_key2,int addr_key,int xor_key)
204204{
205205   const address_space *space = cputag_get_address_space(machine, "audiocpu", ADDRESS_SPACE_PROGRAM);
206   UINT8 *decrypt = auto_malloc(0x8000);
206   UINT8 *decrypt = auto_alloc_array(machine, UINT8, 0x8000);
207207   UINT8 *rom = memory_region(machine, "audiocpu");
208208
209209   memory_set_decrypted_region(space, 0x0000, 0x7fff, decrypt);
src/mame/machine/konamigx.c
r4679r4680
106106   cmask = colormask[tilebpp];
107107
108108   src_pitch = src_bitmap->rowpixels;
109   src_base = src_bitmap->base;
109   src_base = (UINT16 *)src_bitmap->base;
110110
111111   dst_ptr = dst_base;
112112   cy = starty;
r4679r4680
374374   pal_base  = machine->pens + gfx->color_base + (color % gfx->total_colors) * granularity;
375375   shd_base  = machine->shadow_table;
376376
377   dst_ptr   = bitmap->base;
377   dst_ptr   = (UINT32 *)bitmap->base;
378378   dst_pitch = bitmap->rowpixels;
379379   dst_minx  = cliprect->min_x;
380380   dst_maxx  = cliprect->max_x;
r4679r4680
10471047   gx_primode = 0;
10481048
10491049   gx_objzbuf = (UINT8 *)priority_bitmap->base;
1050   gx_shdzbuf = auto_malloc(GX_ZBUFSIZE);
1051   gx_objpool = auto_malloc(sizeof(struct GX_OBJ) * (GX_MAX_OBJECTS));
1050   gx_shdzbuf = auto_alloc_array(machine, UINT8, GX_ZBUFSIZE);
1051   gx_objpool = auto_alloc_array(machine, struct GX_OBJ, GX_MAX_OBJECTS);
10521052
10531053   K053247_export_config(&K053247_ram, &K053247_gfx, &K053247_callback, &K053247_dx, &K053247_dy);
10541054   K054338_export_config(&K054338_shdRGB);
10551055
10561056   if (objdma)
10571057   {
1058      gx_spriteram = auto_malloc(0x1000);
1058      gx_spriteram = auto_alloc_array(machine, UINT16, 0x1000/2);
10591059      gx_objdma = 1;
10601060   }
10611061   else
r4679r4680
21082108void fantjour_dma_install(running_machine *machine)
21092109{
21102110   state_save_register_global_array(machine, fantjour_dma);
2111   memory_install_write32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xdb0000, 0xdb001f, 0, 0, fantjour_dma_w);
2111   memory_install_write32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xdb0000, 0xdb001f, 0, 0, fantjour_dma_w);
21122112   memset(fantjour_dma, 0, sizeof(fantjour_dma));
21132113}
21142114
src/mame/machine/toaplan1.c
r4679r4680
6666   const address_space *mainspace;
6767   UINT16 input_data = 0;
6868   switch (main_ram_seg) {
69      case 0xc00000:   mainspace = cpu_get_address_space(space->machine->cpu[0], ADDRESS_SPACE_PROGRAM);
69      case 0xc00000:   mainspace = cputag_get_address_space(space->machine, "maincpu", ADDRESS_SPACE_PROGRAM);
7070                  input_data = memory_read_word(mainspace, main_ram_seg + dsp_addr_w);
7171                  break;
7272      default:      logerror("DSP PC:%04x Warning !!! IO reading from %08x (port 1)\n",cpu_get_previouspc(space->cpu),main_ram_seg + dsp_addr_w);
r4679r4680
8383   dsp_execute = 0;
8484   switch (main_ram_seg) {
8585      case 0xc00000:   if ((dsp_addr_w < 3) && (data == 0)) dsp_execute = 1;
86                  mainspace = cpu_get_address_space(space->machine->cpu[0], ADDRESS_SPACE_PROGRAM);
86                  mainspace = cputag_get_address_space(space->machine, "maincpu", ADDRESS_SPACE_PROGRAM);
8787                  memory_write_word(mainspace, main_ram_seg + dsp_addr_w, data);
8888                  break;
8989      default:      logerror("DSP PC:%04x Warning !!! IO writing to %08x (port 1)\n",cpu_get_previouspc(space->cpu),main_ram_seg + dsp_addr_w);
r4679r4680
105105   if (data == 0) {
106106      if (dsp_execute) {
107107         logerror("Turning 68000 on\n");
108         cpu_set_input_line(space->machine->cpu[0], INPUT_LINE_HALT, CLEAR_LINE);
108         cputag_set_input_line(space->machine, "maincpu", INPUT_LINE_HALT, CLEAR_LINE);
109109         dsp_execute = 0;
110110      }
111111      demonwld_dsp_BIO = ASSERT_LINE;
r4679r4680
124124   if (enable)
125125   {
126126      logerror("Turning DSP on and 68000 off\n");
127      cpu_set_input_line(machine->cpu[2], INPUT_LINE_HALT, CLEAR_LINE);
128      cpu_set_input_line(machine->cpu[2], 0, ASSERT_LINE); /* TMS32010 INT */
129      cpu_set_input_line(machine->cpu[0], INPUT_LINE_HALT, ASSERT_LINE);
127      cputag_set_input_line(machine, "dsp", INPUT_LINE_HALT, CLEAR_LINE);
128      cputag_set_input_line(machine, "dsp", 0, ASSERT_LINE); /* TMS32010 INT */
129      cputag_set_input_line(machine, "audiocpu", INPUT_LINE_HALT, ASSERT_LINE);
130130   }
131131   else
132132   {
133133      logerror("Turning DSP off\n");
134      cpu_set_input_line(machine->cpu[2], 0, CLEAR_LINE); /* TMS32010 INT */
135      cpu_set_input_line(machine->cpu[2], INPUT_LINE_HALT, ASSERT_LINE);
134      cputag_set_input_line(machine, "dsp", 0, CLEAR_LINE); /* TMS32010 INT */
135      cputag_set_input_line(machine, "dsp", INPUT_LINE_HALT, ASSERT_LINE);
136136   }
137137}
138138static STATE_POSTLOAD( demonwld_restore_dsp )
r4679r4680
231231
232232   if (ACCESSING_BITS_0_7 && (data == 0))
233233   {
234      logerror("PC:%04x  Resetting Sound CPU and Sound chip (%08x)\n",cpu_get_previouspc(space->cpu),data);
234      logerror("PC:%04x  Resetting Sound CPU and Sound chip (%08x)\n", cpu_get_previouspc(space->cpu), data);
235235      devtag_reset(space->machine, "ym");
236      if (space->machine->cpu[1] != NULL && cpu_get_type(space->machine->cpu[1]) == CPU_Z80)
237         cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_RESET, PULSE_LINE);
236      if (cputag_get_cpu(space->machine, "audiocpu") != NULL && cpu_get_type(cputag_get_cpu(space->machine, "audiocpu")) == CPU_Z80)
237         cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_RESET, PULSE_LINE);
238238   }
239239}
240240
src/mame/machine/stvcd.c
r4679r4680
15071507      free((void *)curdir);
15081508   }
15091509
1510   curdir = (direntryT *)malloc_or_die(sizeof(direntryT)*numentries);
1510   curdir = alloc_array_or_die(direntryT, numentries);
15111511   curentry = curdir;
15121512   numfiles = numentries;
15131513
src/mame/machine/ticket.c
r4679r4680
161161***************************************************************************/
162162static TIMER_CALLBACK( ticket_dispenser_toggle )
163163{
164   struct ticket_state *dispenser = ptr;
164   struct ticket_state *dispenser = (struct ticket_state *)ptr;
165165
166166   /* If we still have power, keep toggling ticket states. */
167167   if (dispenser->power)
src/mame/machine/dc.c
r4679r4680
242242   }
243243
244244   level=dc_compute_interrupt_level(machine);
245   device_set_info_int(machine->cpu[0], CPUINFO_INT_SH4_IRLn_INPUT, 15-level);
245   sh4_set_irln_input(cputag_get_cpu(machine, "maincpu"), 15-level);
246246}
247247
248/******************************************************
249JVS init packets
250The function packets goes like this:
251[0] Function number
252[1] Number of "devices"
253[2] Parameter of the device
254[3] End flag (always zero)
255******************************************************/
256static int jvs_mux_data;
257
248258static int jvsboard_init(int pos)
249259{
250260   // four bytes for every available function
251   // first function
261   //1 digital inputs
252262   maple0x86data2[pos+10]=1;
253   maple0x86data2[pos+11]=2; // number of players
254   maple0x86data2[pos+12]=9+4; // switches per player (27 = mahjong)
263   if(jvsboard_type == JVSBD_MAHJONG)
264   {
265      maple0x86data2[pos+11]=1; // number of players
266      maple0x86data2[pos+12]=22; // switches per player (27 = mahjong)
267      jvs_mux_data = 1;
268   }
269   else //if JVSBD_DEFAULT
270   {
271      maple0x86data2[pos+11]=2; // number of players
272      maple0x86data2[pos+12]=9+4; // switches per player (27 = mahjong)
273   }
255274   maple0x86data2[pos+13]=0;
256   // second function
275   //2 coin slots
257276   maple0x86data2[pos+14]=2;
258277   maple0x86data2[pos+15]=2; // number of coin slots
259278   maple0x86data2[pos+16]=0;
260279   maple0x86data2[pos+17]=0;
261   // third function
280   //3 ad stick
262281   maple0x86data2[pos+18]=3;
263282   maple0x86data2[pos+19]=2; // analog channels
264283   maple0x86data2[pos+20]=8; // bits per channel
265284   maple0x86data2[pos+21]=0;
266   // no more functions
285   //4 rotary
267286   maple0x86data2[pos+22]=0;
287   //5 keyboard
288   //6 (touch?) screen
289   //7 card reader
290   //8 hopper out
291   //9 driver out
292   //10 analog out
293   //11 character
294   //12 backup
295
268296   maple0x86data2[pos+7]=13+2;
269297   return 13;
270298}
271299
272static void jvsboard_indirect_read(running_machine *machine, int pos)
300static int jvsboard_indirect_read(running_machine *machine, int pos)
273301{
274302   // report1,jvsbytes repeated for each function
275   // first function
303   //1 digital inputs
276304   maple0x86data2[pos+ 9]=1; // report
277305   maple0x86data2[pos+10]=0; // bits TEST TILT1 TILT2 TILT3 ? ? ? ?
278   maple0x86data2[pos+11]=input_port_read(machine, "IN1"); // bits 1Pstart 1Pservice 1Pup 1Pdown 1Pleft 1Pright 1Ppush1 1Ppush2
279   maple0x86data2[pos+12]=input_port_read(machine, "IN2"); // bits 1Ppush3 1Ppush4 1Ppush5 1Ppush6 1Ppush7 1Ppush8 ...
280   maple0x86data2[pos+13]=input_port_read(machine, "IN3"); // bits 2Pstart 2Pservice 2Pup 2Pdown 2Pleft 2Pright 2Ppush1 2Ppush2
281   maple0x86data2[pos+14]=input_port_read(machine, "IN4"); // bits 2Ppush3 2Ppush4 2Ppush5 2Ppush6 2Ppush7 2Ppush8 ...
282   // second function
306   if(jvsboard_type == JVSBD_MAHJONG)
307   {
308      maple0x86data2[pos+11]=0;
309      switch(jvs_mux_data)
310      {
311         case 0x01: maple0x86data2[pos+12]=input_port_read(machine, "IN1"); break;
312         case 0x02: maple0x86data2[pos+12]=input_port_read(machine, "IN2"); break;
313         case 0x04: maple0x86data2[pos+12]=input_port_read(machine, "IN3"); break;
314         case 0x08: maple0x86data2[pos+12]=input_port_read(machine, "IN4"); break;
315         case 0x10: maple0x86data2[pos+12]=0; break;
316      }
317      maple0x86data2[pos+13]=0;
318      maple0x86data2[pos+14]=0;
319
320      jvs_mux_data<<=1;
321      if(jvs_mux_data >= 0x20) { jvs_mux_data = 1; }
322   }
323   else
324   {
325      maple0x86data2[pos+11]=input_port_read(machine, "IN1"); // bits 1Pstart 1Pservice 1Pup 1Pdown 1Pleft 1Pright 1Ppush1 1Ppush2
326      maple0x86data2[pos+12]=input_port_read(machine, "IN2"); // bits 1Ppush3 1Ppush4 1Ppush5 1Ppush6 1Ppush7 1Ppush8 ...
327      maple0x86data2[pos+13]=input_port_read(machine, "IN3"); // bits 2Pstart 2Pservice 2Pup 2Pdown 2Pleft 2Pright 2Ppush1 2Ppush2
328      maple0x86data2[pos+14]=input_port_read(machine, "IN4"); // bits 2Ppush3 2Ppush4 2Ppush5 2Ppush6 2Ppush7 2Ppush8 ...
329   }
330   //2 coin slots
283331   maple0x86data2[pos+15]=1; // report
284332   maple0x86data2[pos+16]=(dc_coin_counts[0] >> 8) & 0xff; // 1CONDITION, 1SLOT COIN(bit13-8)
285333   maple0x86data2[pos+17]=dc_coin_counts[0] & 0xff; // 1SLOT COIN(bit7-0)
286334   maple0x86data2[pos+18]=(dc_coin_counts[1] >> 8) & 0xff; // 2CONDITION, 2SLOT COIN(bit13-8)
287335   maple0x86data2[pos+19]=dc_coin_counts[1] & 0xff; // 2SLOT COIN(bit7-0)
288   // third function
336   //3 ad stick
289337   maple0x86data2[pos+20]=1; // report
290338   maple0x86data2[pos+21]=0xff; // channel 1 bits 7-0
291339   maple0x86data2[pos+22]=0; // channel 1
292340   maple0x86data2[pos+23]=0; // channel 2 bits 7-0
293341   maple0x86data2[pos+24]=0xff; // channel 2
342   //4 rotary
343   maple0x86data2[pos+25]=0;
344   maple0x86data2[pos+26]=0;
345   //5 keyboard
346   //6 (touch?) screen
347   //7 card reader
348   //8 hopper out
349   //9 driver out
350   //10 analog out
351   //11 character
352   //12 backup
353
354   maple0x86data2[pos+7]=17+2;
355   return 17;
294356}
295357
296358static int jvsboard_direct_read(running_machine *machine)
r4679r4680
305367   maple0x86data2[0x19] = 0x01;
306368
307369   /* read the inputs */
370   //1 digital inputs
308371   maple0x86data2[0x1a]=1;
309   maple0x86data2[0x1b]=2; //number of players
310   maple0x86data2[0x1c]=input_port_read(machine, "IN1");
311   maple0x86data2[0x1d]=input_port_read(machine, "IN2");
312   maple0x86data2[0x1e]=input_port_read(machine, "IN3");
313   maple0x86data2[0x1f]=input_port_read(machine, "IN4");
372   if(jvsboard_type == JVSBD_MAHJONG)
373      maple0x86data2[0x1b]=1; //number of players
374   else //if JVSBD_DEFAULT
375      maple0x86data2[0x1b]=2; //number of players
376   if(jvsboard_type == JVSBD_MAHJONG)
377   {
378      maple0x86data2[0x1c]=input_port_read(machine, "IN1");
379      maple0x86data2[0x1d]=input_port_read(machine, "IN2");
380      maple0x86data2[0x1e]=input_port_read(machine, "IN3");
381      maple0x86data2[0x1f]=input_port_read(machine, "IN4");
382   }
383   else
384   {
385      maple0x86data2[0x1c]=input_port_read(machine, "IN1");
386      maple0x86data2[0x1d]=input_port_read(machine, "IN2");
387      maple0x86data2[0x1e]=input_port_read(machine, "IN3");
388      maple0x86data2[0x1f]=input_port_read(machine, "IN4");
389   }
390   //2 coin slots
314391   maple0x86data2[0x20]=1;
315392   maple0x86data2[0x21]=(dc_coin_counts[0] >> 8) & 0xff; //coin counter read-back hi byte
316393   maple0x86data2[0x22]=dc_coin_counts[0] & 0xff; //coin counter read-back lo byte
317394   maple0x86data2[0x23]=(dc_coin_counts[1] >> 8) & 0xff;
318395   maple0x86data2[0x24]=dc_coin_counts[1] & 0xff;
396   //3 ad stick
319397   maple0x86data2[0x25]=1;
320398   maple0x86data2[0x26]=1;
321399   maple0x86data2[0x27]=0;
322400   maple0x86data2[0x28]=0;
323401   maple0x86data2[0x29]=0;
402   //4 rotary
403   //5 keyboard
404   //6 (touch?) screen
405   //7 card reader
406   //8 hopper out
407   //9 driver out
408   //10 analog out
409   //11 character
410   //12 backup
324411   maple0x86data2[0x2a]=0;
325412   /*0x2b-0x2f rotary inputs */
326413   //...
r4679r4680
369456         ddtdata.direction=0;
370457         ddtdata.channel=2;
371458         ddtdata.mode=25; //011001
372         device_set_info_ptr(space->machine->cpu[0],CPUINFO_PTR_SH4_EXTERNAL_DDT_DMA,&ddtdata);
459         sh4_dma_ddt(cputag_get_cpu(space->machine, "maincpu"),&ddtdata);
373460         #if DEBUG_SYSCTRL
374461         if ((address >= 0x11000000) && (address <= 0x11FFFFFF))
375462            if (dc_sysctrl_regs[SB_LMMODE0])
r4679r4680
478565               ddtdata.direction=0;   // 0 source to buffer, 1 buffer to source
479566               ddtdata.channel= -1;   // not used
480567               ddtdata.mode= -1;      // copy from/to buffer
481               device_set_info_ptr(space->machine->cpu[0], CPUINFO_PTR_SH4_EXTERNAL_DDT_DMA, &ddtdata);
568               sh4_dma_ddt(cputag_get_cpu(space->machine, "maincpu"), &ddtdata);
482569
483570               maple_regs[reg] = 0;
484571               endflag=buff[0] & 0x80000000;
r4679r4680
510597                        ddtdata.direction=0;
511598                        ddtdata.channel= -1;
512599                        ddtdata.mode=-1;
513                        device_set_info_ptr(space->machine->cpu[0],CPUINFO_PTR_SH4_EXTERNAL_DDT_DMA,&ddtdata);
600                        sh4_dma_ddt(cputag_get_cpu(space->machine, "maincpu"),&ddtdata);
514601                        chk=0;
515602                        for (a=1;a < length;a++)
516603                        {
r4679r4680
538625                        ddtdata.direction=0;
539626                        ddtdata.channel= -1;
540627                        ddtdata.mode=-1;
541                        device_set_info_ptr(space->machine->cpu[0],CPUINFO_PTR_SH4_EXTERNAL_DDT_DMA,&ddtdata);
628                        sh4_dma_ddt(cputag_get_cpu(space->machine, "maincpu"),&ddtdata);
542629
543630                        subcommand = buff[0] & 0xff;
544631                        #if DEBUG_MAPLE
r4679r4680
613700                                 case 0xf1: // set address
614701                                    break;
615702                                 case 0x10:
616                                    strcpy((char *)(maple0x86data2+0x11+10), "MAME test JVS I/O board"); // name
617                                    maple0x86data2[pos+7]=24+2;
618                                    tocopy += 24;
703                                    strcpy((char *)(maple0x86data2+0x11+10), "SEGA ENTERPRISES,LTD.\nI/O BD JVS\n837-13551"); // name
704                                    maple0x86data2[pos+7]=24+21+2;
705                                    tocopy += 24+21;
619706                                    break;
620707                                 case 0x11:
621708                                    maple0x86data2[pos+10]=0x13; // version bcd
r4679r4680
634721                                    break;
635722                                 case 0x14:
636723                                    {
637                                       static int dma_bytes;
638                                       dma_bytes = jvsboard_init(pos);
639                                       tocopy += dma_bytes;
724                                       tocopy += jvsboard_init(pos);
640725                                    }
641726                                    break;
642727                                 case 0x21:
r4679r4680
739824               ddtdata.destination=destination;
740825               ddtdata.buffer=buff;
741826               ddtdata.direction=1;
742               device_set_info_ptr(space->machine->cpu[0],CPUINFO_PTR_SH4_EXTERNAL_DDT_DMA,&ddtdata);
827               sh4_dma_ddt(cputag_get_cpu(space->machine, "maincpu"),&ddtdata);
743828
744829               if (endflag)
745830               {
r4679r4680
770855
771856INPUT_CHANGED( dc_coin_slots_callback )
772857{
773   UINT32 *counter = param;
858   UINT32 *counter = (UINT32 *)param;
774859
775860   /* check for a 0 -> 1 transition */
776861   if (!oldval && newval)
r4679r4680
861946         ddtdata.channel= -1;   // not used
862947         ddtdata.mode= -1;      // copy from/to buffer
863948          mame_printf_verbose("G1CTRL: transfer %x from ROM %08x to sdram %08x\n", g1bus_regs[SB_GDLEN], dmaoffset, g1bus_regs[SB_GDSTAR]);
864         device_set_info_ptr(space->machine->cpu[0], CPUINFO_PTR_SH4_EXTERNAL_DDT_DMA, &ddtdata);
949         sh4_dma_ddt(cputag_get_cpu(space->machine, "maincpu"), &ddtdata);
865950         g1bus_regs[SB_GDST]=0;
866951         dc_sysctrl_regs[SB_ISTNRM] |= IST_DMA_GDROM;
867952         dc_update_interrupt_status(space->machine);
r4679r4680
10521137MACHINE_RESET( dc )
10531138{
10541139   /* halt the ARM7 */
1055   cpu_set_input_line(machine->cpu[1], INPUT_LINE_RESET, ASSERT_LINE);
1140   cputag_set_input_line(machine, "soundcpu", INPUT_LINE_RESET, ASSERT_LINE);
10561141
10571142   memset(dc_sysctrl_regs, 0, sizeof(dc_sysctrl_regs));
10581143   memset(maple_regs, 0, sizeof(maple_regs));
r4679r4680
10911176      if (dat & 1)
10921177      {
10931178         /* halt the ARM7 */
1094         cpu_set_input_line(device->machine->cpu[1], INPUT_LINE_RESET, ASSERT_LINE);
1179         cputag_set_input_line(device->machine, "soundcpu", INPUT_LINE_RESET, ASSERT_LINE);
10951180      }
10961181      else
10971182      {
10981183         /* it's alive ! */
1099         cpu_set_input_line(device->machine->cpu[1], INPUT_LINE_RESET, CLEAR_LINE);
1184         cputag_set_input_line(device->machine, "soundcpu", INPUT_LINE_RESET, CLEAR_LINE);
11001185      }
11011186    }
11021187
src/mame/machine/scramble.c
r4679r4680
2020{
2121   MACHINE_RESET_CALL(galaxold);
2222
23   if (machine->cpu[1] != NULL)
23   if (cputag_get_cpu(machine, "audiocpu") != NULL)
2424      scramble_sh_init(machine);
2525
2626  security_2B_counter = 0;
r4679r4680
7171                       0x2b, 0x2a, 0x28, 0x29, 0x09, 0x08, 0x0a, 0x0b,
7272                       0x0f, 0x0e, 0x0c, 0x0d, 0x2d, 0x2c, 0x2e, 0x2f,
7373                       0x27, 0x26, 0x24, 0x25, 0x05, 0x04, 0x06, 0x07 };
74   UINT8 val = input_port_read(field->port->machine, param);
74   UINT8 val = input_port_read(field->port->machine, (const char *)param);
7575
7676   return remap[val >> 2];
7777}
r4679r4680
8686
8787static READ8_DEVICE_HANDLER( scramble_protection_r )
8888{
89   switch (cpu_get_pc(device->machine->cpu[0]))
89   switch (cpu_get_pc(cputag_get_cpu(device->machine, "maincpu")))
9090   {
9191   case 0x00a8: return 0xf0;
9292   case 0x00be: return 0xb0;
r4679r4680
234234
235235DRIVER_INIT( scobra )
236236{
237   memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xa803, 0xa803, 0, 0, scrambold_background_enable_w);
237   memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xa803, 0xa803, 0, 0, scrambold_background_enable_w);
238238}
239239
240240DRIVER_INIT( atlantis )
241241{
242   memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x6803, 0x6803, 0, 0, scrambold_background_enable_w);
242   memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x6803, 0x6803, 0, 0, scrambold_background_enable_w);
243243}
244244
245245DRIVER_INIT( scramble )
r4679r4680
249249
250250DRIVER_INIT( stratgyx )
251251{
252   memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xb000, 0xb000, 0, 0, scrambold_background_green_w);
253   memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xb002, 0xb002, 0, 0, scrambold_background_blue_w);
254   memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xb00a, 0xb00a, 0, 0, scrambold_background_red_w);
252   memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xb000, 0xb000, 0, 0, scrambold_background_green_w);
253   memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xb002, 0xb002, 0, 0, scrambold_background_blue_w);
254   memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xb00a, 0xb00a, 0, 0, scrambold_background_red_w);
255255}
256256
257257DRIVER_INIT( tazmani2 )
258258{
259   memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xb002, 0xb002, 0, 0, scrambold_background_enable_w);
259   memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xb002, 0xb002, 0, 0, scrambold_background_enable_w);
260260}
261261
262262DRIVER_INIT( ckongs )
r4679r4680
266266DRIVER_INIT( mariner )
267267{
268268   /* extra ROM */
269   memory_install_readwrite8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x5800, 0x67ff, 0, 0, SMH_BANK1, SMH_UNMAP);
269   memory_install_readwrite8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x5800, 0x67ff, 0, 0, (read8_space_func)SMH_BANK(1), (write8_space_func)SMH_UNMAP);
270270   memory_set_bankptr(machine, 1, memory_region(machine, "maincpu") + 0x5800);
271271
272   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x9008, 0x9008, 0, 0, mariner_protection_2_r);
273   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xb401, 0xb401, 0, 0, mariner_protection_1_r);
272   memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x9008, 0x9008, 0, 0, mariner_protection_2_r);
273   memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xb401, 0xb401, 0, 0, mariner_protection_1_r);
274274
275275   /* ??? (it's NOT a background enable) */
276   /*memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x6803, 0x6803, 0, 0, SMH_NOP);*/
276   /*memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x6803, 0x6803, 0, 0, (write8_space_func)SMH_NOP);*/
277277}
278278
279279DRIVER_INIT( frogger )
r4679r4680
323323
324324      for (j = 0; j < 16; j++)
325325      {
326         offs_t new = BITSWAP8(j,7,6,5,4,2,0,3,1);
326         offs_t newval = BITSWAP8(j,7,6,5,4,2,0,3,1);
327327
328         swapbuffer[j] = RAM[i + new];
328         swapbuffer[j] = RAM[i + newval];
329329      }
330330
331331      memcpy(&RAM[i], swapbuffer, 16);
r4679r4680
349349   UINT8 *ROM = memory_region(machine, "maincpu");
350350
351351   /* banked ROM */
352   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x0000, 0x3fff, 0, 0, SMH_BANK1);
352   memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x0000, 0x3fff, 0, 0, (read8_space_func)SMH_BANK(1));
353353   memory_configure_bank(machine, 1, 0, 2, &ROM[0x00000], 0x10000);
354354   cavelon_banksw(machine);
355355
356356   /* A15 switches memory banks */
357   memory_install_readwrite8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x8000, 0xffff, 0, 0, cavelon_banksw_r, cavelon_banksw_w);
357   memory_install_readwrite8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x8000, 0xffff, 0, 0, cavelon_banksw_r, cavelon_banksw_w);
358358
359   memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x2000, 0x2000, 0, 0, SMH_NOP);   /* ??? */
360   memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x3800, 0x3801, 0, 0, SMH_NOP);  /* looks suspicously like
359   memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x2000, 0x2000, 0, 0, (write8_space_func)SMH_NOP);   /* ??? */
360   memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x3800, 0x3801, 0, 0, (write8_space_func)SMH_NOP);  /* looks suspicously like
361361                                                               an AY8910, but not sure */
362362   state_save_register_global(machine, cavelon_bank);
363363}
r4679r4680
366366
367367DRIVER_INIT( darkplnt )
368368{
369   memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xb00a, 0xb00a, 0, 0, darkplnt_bullet_color_w);
369   memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xb00a, 0xb00a, 0, 0, darkplnt_bullet_color_w);
370370}
371371
372372DRIVER_INIT( mimonkey )
r4679r4680
402402      ctr++;
403403   }
404404
405   memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xa804, 0xa804, 0, 0, scrambold_background_enable_w);
405   memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xa804, 0xa804, 0, 0, scrambold_background_enable_w);
406406}
407407
408408DRIVER_INIT( mimonsco )
409409{
410   memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xa804, 0xa804, 0, 0, scrambold_background_enable_w);
410   memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xa804, 0xa804, 0, 0, scrambold_background_enable_w);
411411}
412412
413413DRIVER_INIT( mimonscr )
414414{
415   memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x6804, 0x6804, 0, 0, scrambold_background_enable_w);
415   memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x6804, 0x6804, 0, 0, scrambold_background_enable_w);
416416}
417417
418418
r4679r4680
439439   RAM = memory_region(machine, "gfx1");
440440   len = memory_region_length(machine, "gfx1");
441441
442   scratch = malloc_or_die(len);
442   scratch = alloc_array_or_die(UINT8, len);
443443
444444      memcpy(scratch, RAM, len);
445445
r4679r4680
476476   RAM = memory_region(machine, "gfx1");
477477   len = memory_region_length(machine, "gfx1");
478478
479   scratch = malloc_or_die(len);
479   scratch = alloc_array_or_die(UINT8, len);
480480
481481      memcpy(scratch, RAM, len);
482482
r4679r4680
512512   RAM = memory_region(machine, "gfx1");
513513   len = memory_region_length(machine, "gfx1");
514514
515   scratch = malloc_or_die(len);
515   scratch = alloc_array_or_die(UINT8, len);
516516
517517      memcpy(scratch, RAM, len);
518518
r4679r4680
550550   RAM = memory_region(machine, "gfx1");
551551   len = memory_region_length(machine, "gfx1");
552552
553   scratch = malloc_or_die(len);
553   scratch = alloc_array_or_die(UINT8, len);
554554
555555      memcpy(scratch, RAM, len);
556556
src/mame/machine/midtunit.c
r4679r4680
447447   init_tunit_generic(machine, SOUND_ADPCM);
448448
449449   /* protection */
450   memory_install_readwrite16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1b00000, 0x1b6ffff, 0, 0, mk_prot_r, mk_prot_w);
450   memory_install_readwrite16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1b00000, 0x1b6ffff, 0, 0, mk_prot_r, mk_prot_w);
451451
452452   /* sound chip protection (hidden RAM) */
453   memory_install_readwrite8_handler(cpu_get_address_space(machine->cpu[1], ADDRESS_SPACE_PROGRAM), 0xfb9c, 0xfbc6, 0, 0, SMH_BANK9, SMH_BANK9);
454   memory_set_bankptr(machine, 9, auto_malloc(0x80));
453   memory_install_readwrite8_handler(cpu_get_address_space(machine->cpu[1], ADDRESS_SPACE_PROGRAM), 0xfb9c, 0xfbc6, 0, 0, (read8_space_func)SMH_BANK(9), (write8_space_func)SMH_BANK(9));
454   memory_set_bankptr(machine, 9, auto_alloc_array(machine, UINT8, 0x80));
455455}
456456
457457static void init_nbajam_common(running_machine *machine, int te_protection)
r4679r4680
463463   if (!te_protection)
464464   {
465465      nbajam_prot_table = nbajam_prot_values;
466      memory_install_readwrite16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1b14020, 0x1b2503f, 0, 0, nbajam_prot_r, nbajam_prot_w);
466      memory_install_readwrite16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1b14020, 0x1b2503f, 0, 0, nbajam_prot_r, nbajam_prot_w);
467467   }
468468   else
469469   {
470470      nbajam_prot_table = nbajamte_prot_values;
471      memory_install_readwrite16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1b15f40, 0x1b37f5f, 0, 0, nbajam_prot_r, nbajam_prot_w);
472      memory_install_readwrite16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1b95f40, 0x1bb7f5f, 0, 0, nbajam_prot_r, nbajam_prot_w);
471      memory_install_readwrite16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1b15f40, 0x1b37f5f, 0, 0, nbajam_prot_r, nbajam_prot_w);
472      memory_install_readwrite16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1b95f40, 0x1bb7f5f, 0, 0, nbajam_prot_r, nbajam_prot_w);
473473   }
474474
475475   /* sound chip protection (hidden RAM) */
476476   if (!te_protection)
477      memory_install_readwrite8_handler(cpu_get_address_space(machine->cpu[1], ADDRESS_SPACE_PROGRAM), 0xfbaa, 0xfbd4, 0, 0, SMH_BANK9, SMH_BANK9);
477      memory_install_readwrite8_handler(cpu_get_address_space(machine->cpu[1], ADDRESS_SPACE_PROGRAM), 0xfbaa, 0xfbd4, 0, 0, (read8_space_func)SMH_BANK(9), (write8_space_func)SMH_BANK(9));
478478   else
479      memory_install_readwrite8_handler(cpu_get_address_space(machine->cpu[1], ADDRESS_SPACE_PROGRAM), 0xfbec, 0xfc16, 0, 0, SMH_BANK9, SMH_BANK9);
480   memory_set_bankptr(machine, 9, auto_malloc(0x80));
479      memory_install_readwrite8_handler(cpu_get_address_space(machine->cpu[1], ADDRESS_SPACE_PROGRAM), 0xfbec, 0xfc16, 0, 0, (read8_space_func)SMH_BANK(9), (write8_space_func)SMH_BANK(9));
480   memory_set_bankptr(machine, 9, auto_alloc_array(machine, UINT8, 0x80));
481481}
482482
483483DRIVER_INIT( nbajam )
r4679r4680
496496   init_tunit_generic(machine, SOUND_ADPCM_LARGE);
497497
498498   /* looks like the watchdog needs to be disabled */
499   memory_install_write16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x01d81060, 0x01d8107f, 0, 0, SMH_NOP);
499   memory_install_write16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x01d81060, 0x01d8107f, 0, 0, (write16_space_func)SMH_NOP);
500500
501501   /* protection */
502   memory_install_readwrite16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1b00000, 0x1bfffff, 0, 0, jdredd_prot_r, jdredd_prot_w);
502   memory_install_readwrite16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1b00000, 0x1bfffff, 0, 0, jdredd_prot_r, jdredd_prot_w);
503503
504504   /* sound chip protection (hidden RAM) */
505   memory_install_readwrite8_handler(cpu_get_address_space(machine->cpu[1], ADDRESS_SPACE_PROGRAM), 0xfbcf, 0xfbf9, 0, 0, SMH_BANK7, SMH_BANK9);
506   memory_set_bankptr(machine, 9, auto_malloc(0x80));
505   memory_install_readwrite8_handler(cpu_get_address_space(machine->cpu[1], ADDRESS_SPACE_PROGRAM), 0xfbcf, 0xfbf9, 0, 0, (read8_space_func)SMH_BANK(7), (write8_space_func)SMH_BANK(9));
506   memory_set_bankptr(machine, 9, auto_alloc_array(machine, UINT8, 0x80));
507507
508508#if ENABLE_ALL_JDREDD_LEVELS
509509   /* how about the final levels? */
510   jdredd_hack = memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xFFBA7FF0, 0xFFBA7FFf, 0, 0, jdredd_hack_r);
510   jdredd_hack = memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xFFBA7FF0, 0xFFBA7FFf, 0, 0, jdredd_hack_r);
511511#endif
512512}
513513
r4679r4680
528528   midtunit_gfx_rom_large = 1;
529529
530530   /* protection */
531   memory_install_write16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x00f20c60, 0x00f20c7f, 0, 0, mk2_prot_w);
532   memory_install_write16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x00f42820, 0x00f4283f, 0, 0, mk2_prot_w);
533   memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x01a190e0, 0x01a190ff, 0, 0, mk2_prot_r);
534   memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x01a191c0, 0x01a191df, 0, 0, mk2_prot_shift_r);
535   memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x01a3d0c0, 0x01a3d0ff, 0, 0, mk2_prot_r);
536   memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x01d9d1e0, 0x01d9d1ff, 0, 0, mk2_prot_const_r);
537   memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x01def920, 0x01def93f, 0, 0, mk2_prot_const_r);
531   memory_install_write16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x00f20c60, 0x00f20c7f, 0, 0, mk2_prot_w);
532   memory_install_write16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x00f42820, 0x00f4283f, 0, 0, mk2_prot_w);
533   memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x01a190e0, 0x01a190ff, 0, 0, mk2_prot_r);
534   memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x01a191c0, 0x01a191df, 0, 0, mk2_prot_shift_r);
535   memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x01a3d0c0, 0x01a3d0ff, 0, 0, mk2_prot_r);
536   memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x01d9d1e0, 0x01d9d1ff, 0, 0, mk2_prot_const_r);
537   memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x01def920, 0x01def93f, 0, 0, mk2_prot_const_r);
538538}
539539
540540
src/mame/machine/pitnrun.c
r4679r4680
1919{
2020   zaccept = 1;
2121   zready = 0;
22   cpu_set_input_line(machine->cpu[2],0,CLEAR_LINE);
22   cputag_set_input_line(machine, "mcu", 0, CLEAR_LINE);
2323}
2424
2525static TIMER_CALLBACK( pitnrun_mcu_real_data_r )
r4679r4680
3636static TIMER_CALLBACK( pitnrun_mcu_real_data_w )
3737{
3838   zready = 1;
39   cpu_set_input_line(machine->cpu[2],0,ASSERT_LINE);
39   cputag_set_input_line(machine, "mcu", 0, ASSERT_LINE);
4040   fromz80 = param;
4141}
4242
r4679r4680
106106
107107WRITE8_HANDLER( pitnrun_68705_portB_w )
108108{
109   const address_space *cpu0space = cpu_get_address_space(space->machine->cpu[0], ADDRESS_SPACE_PROGRAM);
109   const address_space *cpu0space = cputag_get_address_space(space->machine, "maincpu", ADDRESS_SPACE_PROGRAM);
110110   if (~data & 0x02)
111111   {
112112      /* 68705 is going to read data from the Z80 */
113113      timer_call_after_resynch(space->machine, NULL, 0,pitnrun_mcu_data_real_r);
114      cpu_set_input_line(space->machine->cpu[2],0,CLEAR_LINE);
114      cputag_set_input_line(space->machine, "mcu",0,CLEAR_LINE);
115115      portA_in = fromz80;
116116   }
117117   if (~data & 0x04)
r4679r4680
151151{
152152   return (zready << 0) | (zaccept << 1);
153153}
154
155
156
src/mame/machine/konami1.c
r4679r4680
4747   int size = memory_region_length(machine, cpu);
4848   int A;
4949
50   UINT8 *decrypted = auto_malloc(size);
50   UINT8 *decrypted = auto_alloc_array(machine, UINT8, size);
5151   memory_set_decrypted_region(space, 0x0000, 0xffff, decrypted);
5252
5353   for (A = 0;A < size;A++)
src/mame/machine/carpolo.c
r4679r4680
8989
9090static void TTL74148_3S_cb(running_machine *machine)
9191{
92   cpu_set_input_line(machine->cpu[0], M6502_IRQ_LINE, TTL74148_output_valid_r(TTL74148_3S) ? CLEAR_LINE : ASSERT_LINE);
92   cputag_set_input_line(machine, "maincpu", M6502_IRQ_LINE, TTL74148_output_valid_r(TTL74148_3S) ? CLEAR_LINE : ASSERT_LINE);
9393}
9494
9595
src/mame/machine/fddebug.c
r4679r4680
286286static int does_key_work_for_constraints(const UINT16 *base, UINT8 *key);
287287static UINT32 reconstruct_base_seed(int keybaseaddr, UINT32 startseed);
288288
289static void build_optable(void);
289static void build_optable(running_machine *machine);
290290static int validate_ea(const address_space *space, UINT32 pc, UINT8 modereg, const UINT8 *parambase, UINT32 flags);
291291static int validate_opcode(const address_space *space, UINT32 pc, const UINT8 *opdata, int maxwords);
292292
r4679r4680
490490   assert(coderegion_words == keystatus_words);
491491
492492   /* allocate memory for the ignore table */
493   ignorepc = auto_malloc(1 << 23);
494   memset(ignorepc, 0, 1 << 23);
493   ignorepc = auto_alloc_array_clear(machine, UINT8, 1 << 23);
495494
496495   /* allocate memory for the undo buffer */
497   undobuff = auto_malloc(keystatus_words * 2);
496   undobuff = auto_alloc_array(machine, UINT8, keystatus_words * 2);
498497   memcpy(undobuff, keystatus, keystatus_words * 2);
499498
500499   /* allocate memory for the possible seeds array */
501   possible_seed = auto_malloc(65536 * sizeof(possible_seed[0]));
500   possible_seed = auto_alloc_array(machine, UINT32, 65536);
502501
503502   /* build the opcode table */
504   build_optable();
503   build_optable(machine);
505504
506505   /* set up default constraints */
507506   constcount = 0;
r4679r4680
20892088    build_optable - build up the opcode table
20902089-----------------------------------------------*/
20912090
2092static void build_optable(void)
2091static void build_optable(running_machine *machine)
20932092{
20942093   int opnum, inum;
20952094
20962095   /* allocate and initialize the opcode table */
2097   optable = auto_malloc(65536 * sizeof(optable[0]));
2096   optable = auto_alloc_array(machine, optable_entry, 65536);
20982097   for (opnum = 0; opnum < 65536; opnum++)
20992098   {
21002099      optable[opnum].flags = OF_INVALID;
src/mame/machine/namcos1.c
r4679r4680
6464static WRITE8_HANDLER( bank15_w ) { (*namcos1_active_bank[14].bank_handler_w)(space, offset + namcos1_active_bank[14].bank_offset, data); }
6565static WRITE8_HANDLER( bank16_w ) { (*namcos1_active_bank[15].bank_handler_w)(space, offset + namcos1_active_bank[15].bank_offset, data); }
6666
67static const read8_space_func ram_bank_handler_r[16] =
68{
69   SMH_BANK1 ,SMH_BANK2 ,SMH_BANK3 ,SMH_BANK4 ,
70   SMH_BANK5 ,SMH_BANK6 ,SMH_BANK7 ,SMH_BANK8 ,
71   SMH_BANK9 ,SMH_BANK10,SMH_BANK11,SMH_BANK12,
72   SMH_BANK13,SMH_BANK14,SMH_BANK15,SMH_BANK16
73};
74
75static const write8_space_func ram_bank_handler_w[16] =
76{
77   SMH_BANK1 ,SMH_BANK2 ,SMH_BANK3 ,SMH_BANK4 ,
78   SMH_BANK5 ,SMH_BANK6 ,SMH_BANK7 ,SMH_BANK8 ,
79   SMH_BANK9 ,SMH_BANK10,SMH_BANK11,SMH_BANK12,
80   SMH_BANK13,SMH_BANK14,SMH_BANK15,SMH_BANK16
81};
82
8367static const read8_space_func io_bank_handler_r[16] =
8468{
8569   bank1_r, bank2_r, bank3_r, bank4_r,
r4679r4680
11094static unsigned int key_quotient, key_reminder, key_numerator_high_word;
11195static UINT8 key[8];
11296
97// used by faceoff and tankforce 4 player (input multiplex)
98static READ8_HANDLER( faceoff_inputs_r );
11399
114100static READ8_HANDLER( no_key_r )
115101{
r4679r4680
601587      namcos1_reset = data & 1;
602588   }
603589
604   cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_RESET, (data & 1) ? CLEAR_LINE : ASSERT_LINE);
605   cpu_set_input_line(space->machine->cpu[2], INPUT_LINE_RESET, (data & 1) ? CLEAR_LINE : ASSERT_LINE);
606   cpu_set_input_line(space->machine->cpu[3], INPUT_LINE_RESET, (data & 1) ? CLEAR_LINE : ASSERT_LINE);
590   cputag_set_input_line(space->machine, "sub", INPUT_LINE_RESET, (data & 1) ? CLEAR_LINE : ASSERT_LINE);
591   cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_RESET, (data & 1) ? CLEAR_LINE : ASSERT_LINE);
592   cputag_set_input_line(space->machine, "mcu", INPUT_LINE_RESET, (data & 1) ? CLEAR_LINE : ASSERT_LINE);
607593}
608594
609595
r4679r4680
681667/* Main bankswitching routine */
682668static void set_bank(running_machine *machine, int banknum, const bankhandler *handler)
683669{
684   const address_space *space = cpu_get_address_space(machine->cpu[(banknum >> 3) & 1], ADDRESS_SPACE_PROGRAM);
670   static const char *const cputags[] = { "maincpu", "sub" };
671   const address_space *space = cputag_get_address_space(machine, cputags[(banknum >> 3) & 1], ADDRESS_SPACE_PROGRAM);
685672   int bankstart = (banknum & 7) * 0x2000;
686673
687674   /* for BANK handlers , memory direct and OP-code base */
r4679r4680
692679   if (!handler->bank_handler_r)
693680   {
694681      if (namcos1_active_bank[banknum].bank_handler_r)
695         memory_install_read8_handler(space, bankstart, bankstart + 0x1fff, 0, 0, ram_bank_handler_r[banknum]);
682         memory_install_read8_handler(space, bankstart, bankstart + 0x1fff, 0, 0, (read8_space_func)SMH_BANK(banknum + 1));
696683   }
697684   else
698685   {
r4679r4680
706693      if (!handler->bank_handler_w)
707694      {
708695         if (namcos1_active_bank[banknum].bank_handler_w)
709            memory_install_write8_handler(space, bankstart, bankstart + 0x1fff, 0, 0, ram_bank_handler_w[banknum]);
696            memory_install_write8_handler(space, bankstart, bankstart + 0x1fff, 0, 0, (write8_space_func)SMH_BANK(banknum + 1));
710697      }
711698      else
712699      {
r4679r4680
748735{
749736//  logerror("cpu %s: namcos1_bankswitch_w offset %04x data %02x\n", space->cpu->tag, offset, data);
750737
751   namcos1_bankswitch(space->machine, (space->cpu == space->machine->cpu[0]) ? 0 : 1, offset, data);
738   namcos1_bankswitch(space->machine, (space->cpu == cputag_get_cpu(space->machine, "maincpu")) ? 0 : 1, offset, data);
752739}
753740
754741/* Sub cpu set start bank port */
r4679r4680
789776   int i;
790777
791778   /**** kludge alert ****/
792   UINT8 *dummyrom = auto_malloc(0x2000);
779   UINT8 *dummyrom = auto_alloc_array(machine, UINT8, 0x2000);
793780
794781   /* when the games want to reset because the test switch has been flipped (or
795782       because the protection checks failed!) they just set the top bits of bank #7
r4679r4680
873860   namcos1_bankswitch(machine, 1, 0x0e01, 0xff);
874861
875862   /* reset Cpu 0 and stop all other CPUs */
876   device_reset(machine->cpu[0]);
877   cpu_set_input_line(machine->cpu[1], INPUT_LINE_RESET, ASSERT_LINE);
878   cpu_set_input_line(machine->cpu[2], INPUT_LINE_RESET, ASSERT_LINE);
879   cpu_set_input_line(machine->cpu[3], INPUT_LINE_RESET, ASSERT_LINE);
863   device_reset(cputag_get_cpu(machine, "maincpu"));
864   cputag_set_input_line(machine, "sub", INPUT_LINE_RESET, ASSERT_LINE);
865   cputag_set_input_line(machine, "audiocpu", INPUT_LINE_RESET, ASSERT_LINE);
866   cputag_set_input_line(machine, "mcu", INPUT_LINE_RESET, ASSERT_LINE);
880867
881868   /* mcu patch data clear */
882869   mcu_patch_data = 0;
r4679r4680
988975   key_top4      = specific->key_reg6;
989976
990977   /* S1 RAM pointer set */
991   s1ram = auto_malloc(0x8000);
992   namcos1_triram = auto_malloc(0x800);
993   namcos1_paletteram = auto_malloc(0x8000);
978   s1ram = auto_alloc_array(machine, UINT8, 0x8000);
979   namcos1_triram = auto_alloc_array(machine, UINT8, 0x800);
980   namcos1_paletteram = auto_alloc_array(machine, UINT8, 0x8000);
994981
995982   /* Register volatile user memory for save state */
996983   state_save_register_global_pointer(machine, s1ram, 0x8000);
r4679r4680
12081195   namcos1_driver_init(machine, &tankfrce_specific);
12091196}
12101197
1211// Inputs are multiplexed, somehow
1212static READ8_HANDLER( tankfrc4_input_r )
1213{
12141198
1215   switch (offset)
1216   {
1217      case 0:
1218         return mame_rand(space->machine);
12191199
1220      case 1:
1221         return mame_rand(space->machine);
1222
1223   }
1224   return 0x00;
1225
1226}
1227
12281200DRIVER_INIT( tankfrc4 )
12291201{
12301202   static const struct namcos1_specific tankfrce_specific=
r4679r4680
12331205   };
12341206   namcos1_driver_init(machine, &tankfrce_specific);
12351207
1236   memory_install_read8_handler(cpu_get_address_space(machine->cpu[3], ADDRESS_SPACE_PROGRAM), 0x1400, 0x1401, 0, 0, tankfrc4_input_r);
1208   memory_install_read8_handler(cputag_get_address_space(machine, "mcu", ADDRESS_SPACE_PROGRAM), 0x1400, 0x1401, 0, 0, faceoff_inputs_r);
12371209}
12381210
12391211/*******************************************************************************
r4679r4680
13241296DRIVER_INIT( quester )
13251297{
13261298   namcos1_driver_init(machine, NULL);
1327   memory_install_read8_handler(cpu_get_address_space(machine->cpu[3], ADDRESS_SPACE_PROGRAM), 0x1400, 0x1401, 0, 0, quester_paddle_r);
1299   memory_install_read8_handler(cputag_get_address_space(machine, "mcu", ADDRESS_SPACE_PROGRAM), 0x1400, 0x1401, 0, 0, quester_paddle_r);
13281300}
13291301
13301302
r4679r4680
14131385DRIVER_INIT( berabohm )
14141386{
14151387   namcos1_driver_init(machine, NULL);
1416   memory_install_read8_handler(cpu_get_address_space(machine->cpu[3], ADDRESS_SPACE_PROGRAM), 0x1400, 0x1401, 0, 0, berabohm_buttons_r);
1388   memory_install_read8_handler(cputag_get_address_space(machine, "mcu", ADDRESS_SPACE_PROGRAM), 0x1400, 0x1401, 0, 0, berabohm_buttons_r);
14171389}
14181390
14191391
r4679r4680
14831455DRIVER_INIT( faceoff )
14841456{
14851457   namcos1_driver_init(machine, NULL);
1486   memory_install_read8_handler(cpu_get_address_space(machine->cpu[3], ADDRESS_SPACE_PROGRAM), 0x1400, 0x1401, 0, 0, faceoff_inputs_r);
1458   memory_install_read8_handler(cputag_get_address_space(machine, "mcu", ADDRESS_SPACE_PROGRAM), 0x1400, 0x1401, 0, 0, faceoff_inputs_r);
14871459}
src/mame/machine/segaic16.c
r4679r4680
216216         if ((oldval ^ chip->regs[offset]) & 3)
217217         {
218218            if ((chip->regs[offset] & 3) == 3)
219               fd1094_machine_init(space->machine->cpu[0]);
219               fd1094_machine_init(chip->cpu);
220220
221221            /* fd1094_machine_init calls device_reset on the CPU, so we must do this afterwards */
222222            cpu_set_input_line(chip->cpu, INPUT_LINE_RESET, (chip->regs[offset] & 3) == 3 ? ASSERT_LINE : CLEAR_LINE);
r4679r4680
383383
384384            if (decrypt)
385385            {
386               decrypted = fd1094_get_decrypted_base();
386               decrypted = (UINT8 *)fd1094_get_decrypted_base();
387387               if (!decrypted)
388                  decrypted = fd1089_get_decrypted_base();
388                  decrypted = (UINT8 *)fd1089_get_decrypted_base();
389389            }
390390
391391            memory_configure_bank(machine, banknum, 0, 1, (UINT8 *)chip->cpu->region + region_start, 0);
src/mame/machine/buggychl.c
r4679r4680
1010{
1111   mcu_sent = 0;
1212   main_sent = 0;
13   cpu_set_input_line(machine->cpu[2],0,CLEAR_LINE);
13   cputag_set_input_line(machine, "mcu", 0, CLEAR_LINE);
1414}
1515
1616
r4679r4680
7070
7171WRITE8_HANDLER( buggychl_68705_portB_w )
7272{
73logerror("%04x: 68705 port B write %02x\n",cpu_get_pc(space->cpu),data);
73logerror("%04x: 68705 port B write %02x\n", cpu_get_pc(space->cpu), data);
7474
7575   if ((ddrB & 0x02) && (~data & 0x02) && (portB_out & 0x02))
7676   {
7777      portA_in = from_main;
78      if (main_sent) cpu_set_input_line(space->machine->cpu[2],0,CLEAR_LINE);
78      if (main_sent) cputag_set_input_line(space->machine, "mcu", 0, CLEAR_LINE);
7979      main_sent = 0;
80logerror("read command %02x from main cpu\n",portA_in);
80logerror("read command %02x from main cpu\n", portA_in);
8181   }
8282   if ((ddrB & 0x04) && (data & 0x04) && (~portB_out & 0x04))
8383   {
84logerror("send command %02x to main cpu\n",portA_out);
84logerror("send command %02x to main cpu\n", portA_out);
8585      from_mcu = portA_out;
8686      mcu_sent = 1;
8787   }
r4679r4680
111111   portC_in = 0;
112112   if (main_sent) portC_in |= 0x01;
113113   if (!mcu_sent) portC_in |= 0x02;
114logerror("%04x: 68705 port C read %02x\n",cpu_get_pc(space->cpu),portC_in);
114logerror("%04x: 68705 port C read %02x\n", cpu_get_pc(space->cpu), portC_in);
115115   return (portC_out & ddrC) | (portC_in & ~ddrC);
116116}
117117
118118WRITE8_HANDLER( buggychl_68705_portC_w )
119119{
120logerror("%04x: 68705 port C write %02x\n",cpu_get_pc(space->cpu),data);
120logerror("%04x: 68705 port C write %02x\n", cpu_get_pc(space->cpu), data);
121121   portC_out = data;
122122}
123123
r4679r4680
129129
130130WRITE8_HANDLER( buggychl_mcu_w )
131131{
132logerror("%04x: mcu_w %02x\n",cpu_get_pc(space->cpu),data);
132logerror("%04x: mcu_w %02x\n", cpu_get_pc(space->cpu), data);
133133   from_main = data;
134134   main_sent = 1;
135   cpu_set_input_line(space->machine->cpu[2],0,ASSERT_LINE);
135   cputag_set_input_line(space->machine, "mcu", 0, ASSERT_LINE);
136136}
137137
138138READ8_HANDLER( buggychl_mcu_r )
139139{
140logerror("%04x: mcu_r %02x\n",cpu_get_pc(space->cpu),from_mcu);
140logerror("%04x: mcu_r %02x\n", cpu_get_pc(space->cpu), from_mcu);
141141   mcu_sent = 0;
142142   return from_mcu;
143143}
src/mame/machine/deco156.c
r4679r4680
126126{
127127   UINT32 *rom = (UINT32 *)memory_region(machine, "maincpu");
128128   int length = memory_region_length(machine, "maincpu");
129   UINT32 *buf = malloc_or_die(length);
129   UINT32 *buf = alloc_array_or_die(UINT32, length/4);
130130
131131      memcpy(buf, rom, length);
132132      decrypt(buf, rom, length);
src/mame/machine/n64.c
r4679r4680
2525   {
2626      mi_interrupt |= interrupt;
2727
28      cpu_set_input_line(machine->cpu[0], INPUT_LINE_IRQ0, ASSERT_LINE);
28      cputag_set_input_line(machine, "maincpu", INPUT_LINE_IRQ0, ASSERT_LINE);
2929   }
3030}
3131
r4679r4680
3535
3636   //if (!mi_interrupt)
3737   {
38      cpu_set_input_line(machine->cpu[0], INPUT_LINE_IRQ0, CLEAR_LINE);
38      cputag_set_input_line(machine, "maincpu", INPUT_LINE_IRQ0, CLEAR_LINE);
3939   }
4040}
4141
r4679r4680
233233         return (sp_dma_skip << 20) | (sp_dma_count << 12) | sp_dma_length;
234234
235235      case 0x10/4:      // SP_STATUS_REG
236            return cpu_get_reg(space->machine->cpu[1], RSP_SR);
236            return cpu_get_reg(cputag_get_cpu(space->machine, "rsp"), RSP_SR);
237237
238238      case 0x14/4:      // SP_DMA_FULL_REG
239239         return 0;
r4679r4680
255255            return 0;
256256
257257        case 0x40000/4:     // PC
258            return cpu_get_reg(space->machine->cpu[1], RSP_PC) & 0x00000fff;
258            return cpu_get_reg(cputag_get_cpu(space->machine, "rsp"), RSP_PC) & 0x00000fff;
259259
260260        default:
261261            logerror("sp_reg_r: %08X, %08X at %08X\n", offset, mem_mask, cpu_get_pc(space->cpu));
r4679r4680
303303                    //  cpu_spinuntil_trigger(space->cpu, 6789);
304304
305305                        // printf( "Clearing RSP_STATUS_HALT\n" );
306                        cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_HALT, CLEAR_LINE);
307                        cpu_set_reg(space->machine->cpu[1], RSP_SR, cpu_get_reg(space->machine->cpu[1], RSP_SR) & ~RSP_STATUS_HALT );
306                        cputag_set_input_line(space->machine, "rsp", INPUT_LINE_HALT, CLEAR_LINE);
307                        cpu_set_reg(cputag_get_cpu(space->machine, "rsp"), RSP_SR, cpu_get_reg(cputag_get_cpu(space->machine, "rsp"), RSP_SR) & ~RSP_STATUS_HALT );
308308                        // RSP_STATUS &= ~RSP_STATUS_HALT;
309309                    //}
310310                    //else
r4679r4680
315315                if (data & 0x00000002)      // set halt
316316                {
317317                    // printf( "Setting RSP_STATUS_HALT\n" );
318                    cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_HALT, ASSERT_LINE);
319                    cpu_set_reg(space->machine->cpu[1], RSP_SR, cpu_get_reg(space->machine->cpu[1], RSP_SR) | RSP_STATUS_HALT );
318                    cputag_set_input_line(space->machine, "rsp", INPUT_LINE_HALT, ASSERT_LINE);
319                    cpu_set_reg(cputag_get_cpu(space->machine, "rsp"), RSP_SR, cpu_get_reg(cputag_get_cpu(space->machine, "rsp"), RSP_SR) | RSP_STATUS_HALT );
320320                    // RSP_STATUS |= RSP_STATUS_HALT;
321321                }
322322                if (data & 0x00000004)
323323                {
324324                    //printf( "Clearing RSP_STATUS_BROKE\n" );
325                    cpu_set_reg(space->machine->cpu[1], RSP_SR, cpu_get_reg(space->machine->cpu[1], RSP_SR) & ~RSP_STATUS_BROKE );
325                    cpu_set_reg(cputag_get_cpu(space->machine, "rsp"), RSP_SR, cpu_get_reg(cputag_get_cpu(space->machine, "rsp"), RSP_SR) & ~RSP_STATUS_BROKE );
326326                    // RSP_STATUS &= ~RSP_STATUS_BROKE;     // clear broke
327327                }
328328                if (data & 0x00000008)      // clear interrupt
r4679r4680
336336                if (data & 0x00000020)
337337                {
338338                    // printf( "Clearing RSP_STATUS_SSTEP\n" );
339                    cpu_set_reg(space->machine->cpu[1], RSP_SR, cpu_get_reg(space->machine->cpu[1], RSP_SR) & ~RSP_STATUS_SSTEP );
339                    cpu_set_reg(cputag_get_cpu(space->machine, "rsp"), RSP_SR, cpu_get_reg(cputag_get_cpu(space->machine, "rsp"), RSP_SR) & ~RSP_STATUS_SSTEP );
340340                    // RSP_STATUS &= ~RSP_STATUS_SSTEP;     // clear single step
341341                }
342342                if (data & 0x00000040)
343343                {
344344                    //printf( "Setting RSP_STATUS_SSTEP\n" );
345                    cpu_set_reg(space->machine->cpu[1], RSP_SR, cpu_get_reg(space->machine->cpu[1], RSP_SR) | RSP_STATUS_SSTEP );
346                    if( !( cpu_get_reg(space->machine->cpu[1], RSP_SR) & ( RSP_STATUS_BROKE | RSP_STATUS_HALT ) ) )
345                    cpu_set_reg(cputag_get_cpu(space->machine, "rsp"), RSP_SR, cpu_get_reg(cputag_get_cpu(space->machine, "rsp"), RSP_SR) | RSP_STATUS_SSTEP );
346                    if( !( cpu_get_reg(cputag_get_cpu(space->machine, "rsp"), RSP_SR) & ( RSP_STATUS_BROKE | RSP_STATUS_HALT ) ) )
347347                    {
348                        cpu_set_reg(space->machine->cpu[1], RSP_STEPCNT, 1 );
348                        cpu_set_reg(cputag_get_cpu(space->machine, "rsp"), RSP_STEPCNT, 1 );
349349                    }
350350                    // RSP_STATUS |= RSP_STATUS_SSTEP;      // set single step
351351                }
352352                if (data & 0x00000080)
353353                {
354                    cpu_set_reg(space->machine->cpu[1], RSP_SR, cpu_get_reg(space->machine->cpu[1], RSP_SR) & ~RSP_STATUS_INTR_BREAK );
354                    cpu_set_reg(cputag_get_cpu(space->machine, "rsp"), RSP_SR, cpu_get_reg(cputag_get_cpu(space->machine, "rsp"), RSP_SR) & ~RSP_STATUS_INTR_BREAK );
355355                    // RSP_STATUS &= ~RSP_STATUS_INTR_BREAK;    // clear interrupt on break
356356                }
357357                if (data & 0x00000100)
358358                {
359                    cpu_set_reg(space->machine->cpu[1], RSP_SR, cpu_get_reg(space->machine->cpu[1], RSP_SR) | RSP_STATUS_INTR_BREAK );
359                    cpu_set_reg(cputag_get_cpu(space->machine, "rsp"), RSP_SR, cpu_get_reg(cputag_get_cpu(space->machine, "rsp"), RSP_SR) | RSP_STATUS_INTR_BREAK );
360360                    // RSP_STATUS |= RSP_STATUS_INTR_BREAK; // set interrupt on break
361361                }
362362                if (data & 0x00000200)
363363                {
364                    cpu_set_reg(space->machine->cpu[1], RSP_SR, cpu_get_reg(space->machine->cpu[1], RSP_SR) & ~RSP_STATUS_SIGNAL0 );
364                    cpu_set_reg(cputag_get_cpu(space->machine, "rsp"), RSP_SR, cpu_get_reg(cputag_get_cpu(space->machine, "rsp"), RSP_SR) & ~RSP_STATUS_SIGNAL0 );
365365                    // RSP_STATUS &= ~RSP_STATUS_SIGNAL0;       // clear signal 0
366366                }
367367                if (data & 0x00000400)
368368                {
369                    cpu_set_reg(space->machine->cpu[1], RSP_SR, cpu_get_reg(space->machine->cpu[1], RSP_SR) | RSP_STATUS_SIGNAL0 );
369                    cpu_set_reg(cputag_get_cpu(space->machine, "rsp"), RSP_SR, cpu_get_reg(cputag_get_cpu(space->machine, "rsp"), RSP_SR) | RSP_STATUS_SIGNAL0 );
370370                    // RSP_STATUS |= RSP_STATUS_SIGNAL0;        // set signal 0
371371                }
372372                if (data & 0x00000800)
373373                {
374                    cpu_set_reg(space->machine->cpu[1], RSP_SR, cpu_get_reg(space->machine->cpu[1], RSP_SR) & ~RSP_STATUS_SIGNAL1 );
374                    cpu_set_reg(cputag_get_cpu(space->machine, "rsp"), RSP_SR, cpu_get_reg(cputag_get_cpu(space->machine, "rsp"), RSP_SR) & ~RSP_STATUS_SIGNAL1 );
375375                    // RSP_STATUS &= ~RSP_STATUS_SIGNAL1;       // clear signal 1
376376                }
377377                if (data & 0x00001000)
378378                {
379                    cpu_set_reg(space->machine->cpu[1], RSP_SR, cpu_get_reg(space->machine->cpu[1], RSP_SR) | RSP_STATUS_SIGNAL1 );
379                    cpu_set_reg(cputag_get_cpu(space->machine, "rsp"), RSP_SR, cpu_get_reg(cputag_get_cpu(space->machine, "rsp"), RSP_SR) | RSP_STATUS_SIGNAL1 );
380380                    // RSP_STATUS |= RSP_STATUS_SIGNAL1;        // set signal 1
381381                }
382382                if (data & 0x00002000)
383383                {
384                    cpu_set_reg(space->machine->cpu[1], RSP_SR, cpu_get_reg(space->machine->cpu[1], RSP_SR) & ~RSP_STATUS_SIGNAL2 );
384                    cpu_set_reg(cputag_get_cpu(space->machine, "rsp"), RSP_SR, cpu_get_reg(cputag_get_cpu(space->machine, "rsp"), RSP_SR) & ~RSP_STATUS_SIGNAL2 );
385385                    // RSP_STATUS &= ~RSP_STATUS_SIGNAL2;       // clear signal 2
386386                }
387387                if (data & 0x00004000)
388388                {
389                    cpu_set_reg(space->machine->cpu[1], RSP_SR, cpu_get_reg(space->machine->cpu[1], RSP_SR) | RSP_STATUS_SIGNAL2 );
389                    cpu_set_reg(cputag_get_cpu(space->machine, "rsp"), RSP_SR, cpu_get_reg(cputag_get_cpu(space->machine, "rsp"), RSP_SR) | RSP_STATUS_SIGNAL2 );
390390                    // RSP_STATUS |= RSP_STATUS_SIGNAL2;        // set signal 2
391391                }
392392                if (data & 0x00008000)
393393                {
394                    cpu_set_reg(space->machine->cpu[1], RSP_SR, cpu_get_reg(space->machine->cpu[1], RSP_SR) & ~RSP_STATUS_SIGNAL3 );
394                    cpu_set_reg(cputag_get_cpu(space->machine, "rsp"), RSP_SR, cpu_get_reg(cputag_get_cpu(space->machine, "rsp"), RSP_SR) & ~RSP_STATUS_SIGNAL3 );
395395                    // RSP_STATUS &= ~RSP_STATUS_SIGNAL3;       // clear signal 3
396396                }
397397                if (data & 0x00010000)
398398                {
399                    cpu_set_reg(space->machine->cpu[1], RSP_SR, cpu_get_reg(space->machine->cpu[1], RSP_SR) | RSP_STATUS_SIGNAL3 );
399                    cpu_set_reg(cputag_get_cpu(space->machine, "rsp"), RSP_SR, cpu_get_reg(cputag_get_cpu(space->machine, "rsp"), RSP_SR) | RSP_STATUS_SIGNAL3 );
400400                    // RSP_STATUS |= RSP_STATUS_SIGNAL3;        // set signal 3
401401                }
402402                if (data & 0x00020000)
403403                {
404                    cpu_set_reg(space->machine->cpu[1], RSP_SR, cpu_get_reg(space->machine->cpu[1], RSP_SR) & ~RSP_STATUS_SIGNAL4 );
404                    cpu_set_reg(cputag_get_cpu(space->machine, "rsp"), RSP_SR, cpu_get_reg(cputag_get_cpu(space->machine, "rsp"), RSP_SR) & ~RSP_STATUS_SIGNAL4 );
405405                    // RSP_STATUS &= ~RSP_STATUS_SIGNAL4;       // clear signal 4
406406                }
407407                if (data & 0x00040000)
408408                {
409                    cpu_set_reg(space->machine->cpu[1], RSP_SR, cpu_get_reg(space->machine->cpu[1], RSP_SR) | RSP_STATUS_SIGNAL4 );
409                    cpu_set_reg(cputag_get_cpu(space->machine, "rsp"), RSP_SR, cpu_get_reg(cputag_get_cpu(space->machine, "rsp"), RSP_SR) | RSP_STATUS_SIGNAL4 );
410410                    // RSP_STATUS |= RSP_STATUS_SIGNAL4;        // set signal 4
411411                }
412412                if (data & 0x00080000)
413413                {
414                    cpu_set_reg(space->machine->cpu[1], RSP_SR, cpu_get_reg(space->machine->cpu[1], RSP_SR) & ~RSP_STATUS_SIGNAL5 );
414                    cpu_set_reg(cputag_get_cpu(space->machine, "rsp"), RSP_SR, cpu_get_reg(cputag_get_cpu(space->machine, "rsp"), RSP_SR) & ~RSP_STATUS_SIGNAL5 );
415415                    // RSP_STATUS &= ~RSP_STATUS_SIGNAL5;       // clear signal 5
416416                }
417417                if (data & 0x00100000)
418418                {
419                    cpu_set_reg(space->machine->cpu[1], RSP_SR, cpu_get_reg(space->machine->cpu[1], RSP_SR) | RSP_STATUS_SIGNAL5 );
419                    cpu_set_reg(cputag_get_cpu(space->machine, "rsp"), RSP_SR, cpu_get_reg(cputag_get_cpu(space->machine, "rsp"), RSP_SR) | RSP_STATUS_SIGNAL5 );
420420                    // RSP_STATUS |= RSP_STATUS_SIGNAL5;        // set signal 5
421421                }
422422                if (data & 0x00200000)
423423                {
424                    cpu_set_reg(space->machine->cpu[1], RSP_SR, cpu_get_reg(space->machine->cpu[1], RSP_SR) & ~RSP_STATUS_SIGNAL6 );
424                    cpu_set_reg(cputag_get_cpu(space->machine, "rsp"), RSP_SR, cpu_get_reg(cputag_get_cpu(space->machine, "rsp"), RSP_SR) & ~RSP_STATUS_SIGNAL6 );
425425                    // RSP_STATUS &= ~RSP_STATUS_SIGNAL6;       // clear signal 6
426426                }
427427                if (data & 0x00400000)
428428                {
429                    cpu_set_reg(space->machine->cpu[1], RSP_SR, cpu_get_reg(space->machine->cpu[1], RSP_SR) | RSP_STATUS_SIGNAL6 );
429                    cpu_set_reg(cputag_get_cpu(space->machine, "rsp"), RSP_SR, cpu_get_reg(cputag_get_cpu(space->machine, "rsp"), RSP_SR) | RSP_STATUS_SIGNAL6 );
430430                    // RSP_STATUS |= RSP_STATUS_SIGNAL6;        // set signal 6
431431                }
432432                if (data & 0x00800000)
433433                {
434                    cpu_set_reg(space->machine->cpu[1], RSP_SR, cpu_get_reg(space->machine->cpu[1], RSP_SR) & ~RSP_STATUS_SIGNAL7 );
434                    cpu_set_reg(cputag_get_cpu(space->machine, "rsp"), RSP_SR, cpu_get_reg(cputag_get_cpu(space->machine, "rsp"), RSP_SR) & ~RSP_STATUS_SIGNAL7 );
435435                    // RSP_STATUS &= ~RSP_STATUS_SIGNAL7;       // clear signal 7
436436                }
437437                if (data & 0x01000000)
438438                {
439                    cpu_set_reg(space->machine->cpu[1], RSP_SR, cpu_get_reg(space->machine->cpu[1], RSP_SR) | RSP_STATUS_SIGNAL7 );
439                    cpu_set_reg(cputag_get_cpu(space->machine, "rsp"), RSP_SR, cpu_get_reg(cputag_get_cpu(space->machine, "rsp"), RSP_SR) | RSP_STATUS_SIGNAL7 );
440440                    // RSP_STATUS |= RSP_STATUS_SIGNAL7;        // set signal 7
441441                }
442442                break;
r4679r4680
458458        {
459459            case 0x00/4:        // SP_PC_REG
460460                //printf( "Setting PC to: %08x\n", 0x04001000 | (data & 0xfff ) );
461                if( device_get_info_int(space->machine->cpu[1], CPUINFO_INT_REGISTER + RSP_NEXTPC) != 0xffffffff )
461                if( cpu_get_reg(cputag_get_cpu(space->machine, "rsp"), RSP_NEXTPC) != 0xffffffff )
462462                {
463                    device_set_info_int(space->machine->cpu[1], CPUINFO_INT_REGISTER + RSP_NEXTPC, 0x04001000 | (data & 0xfff));
463                    cpu_set_reg(cputag_get_cpu(space->machine, "rsp"), RSP_NEXTPC, 0x04001000 | (data & 0xfff));
464464                }
465465                else
466466                {
467                    device_set_info_int(space->machine->cpu[1], CPUINFO_INT_REGISTER + RSP_PC, 0x04001000 | (data & 0xfff));
467                    cpu_set_reg(cputag_get_cpu(space->machine, "rsp"), RSP_PC, 0x04001000 | (data & 0xfff));
468468                }
469469                break;
470470
r4679r4680
15691569
15701570MACHINE_START( n64 )
15711571{
1572   mips3drc_set_options(machine->cpu[0], MIPS3DRC_FASTEST_OPTIONS + MIPS3DRC_STRICT_VERIFY);
1572   mips3drc_set_options(cputag_get_cpu(machine, "maincpu"), MIPS3DRC_FASTEST_OPTIONS + MIPS3DRC_STRICT_VERIFY);
15731573
15741574      /* configure fast RAM regions for DRC */
1575   mips3drc_add_fastram(machine->cpu[0], 0x00000000, 0x007fffff, FALSE, rdram);
1575   mips3drc_add_fastram(cputag_get_cpu(machine, "maincpu"), 0x00000000, 0x007fffff, FALSE, rdram);
15761576}
15771577
15781578MACHINE_RESET( n64 )
r4679r4680
16341634   audio_timer = timer_alloc(machine, audio_timer_callback, NULL);
16351635   timer_adjust_oneshot(audio_timer, attotime_never, 0);
16361636
1637   cpu_set_input_line(machine->cpu[1], INPUT_LINE_HALT, ASSERT_LINE);
1637   cputag_set_input_line(machine, "rsp", INPUT_LINE_HALT, ASSERT_LINE);
16381638
16391639    // bootcode differs between CIC-chips, so we can use its checksum to detect the CIC-chip
16401640    boot_checksum = 0;
src/mame/machine/stfight.c
r4679r4680
5353   UINT8 *rom = memory_region(machine, "maincpu");
5454   int A;
5555
56   decrypt = auto_malloc(0x8000);
56   decrypt = auto_alloc_array(machine, UINT8, 0x8000);
5757   memory_set_decrypted_region(space, 0x0000, 0x7fff, decrypt);
5858
5959   for (A = 0;A < 0x8000;A++)
r4679r4680
9393
9494MACHINE_RESET( stfight )
9595{
96   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
96   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
9797   adpcm_data_offs = adpcm_data_end = 0;
9898   toggle = 0;
9999   fm_data = 0;
r4679r4680
123123static TIMER_CALLBACK( stfight_interrupt_1 )
124124{
125125    // Do a RST08
126    cpu_set_input_line_and_vector(machine->cpu[0],0,HOLD_LINE,0xcf);
126    cputag_set_input_line_and_vector(machine, "maincpu", 0, HOLD_LINE, 0xcf);
127127}
128128
129129INTERRUPT_GEN( stfight_vb_interrupt )
130130{
131131    // Do a RST10
132    cpu_set_input_line_and_vector(device,0,HOLD_LINE,0xd7);
132    cpu_set_input_line_and_vector(device, 0, HOLD_LINE, 0xd7);
133133    timer_set(device->machine, ATTOTIME_IN_HZ(120), NULL, 0, stfight_interrupt_1);
134134}
135135
src/mame/machine/volfied.c
r4679r4680
486486
487487void volfied_cchip_init(running_machine *machine)
488488{
489   cchip_ram=auto_malloc(0x400 * 8);
489   cchip_ram=auto_alloc_array(machine, UINT8, 0x400 * 8);
490490
491491   state_save_register_global(machine, current_bank);
492492   state_save_register_global(machine, current_cmd);
src/mame/machine/balsente.c
r4679r4680
1616
1717
1818/* local prototypes */
19static void poly17_init(void);
19static void poly17_init(running_machine *machine);
2020static void counter_set_out(running_machine *machine, int which, int gate);
2121static TIMER_CALLBACK( counter_callback );
2222static TIMER_CALLBACK( clock_counter_0_ff );
r4679r4680
103103
104104static TIMER_CALLBACK( irq_off )
105105{
106   cpu_set_input_line(machine->cpu[0], M6809_IRQ_LINE, CLEAR_LINE);
106   cputag_set_input_line(machine, "maincpu", M6809_IRQ_LINE, CLEAR_LINE);
107107}
108108
109109
r4679r4680
116116      timer_adjust_oneshot(scanline_timer, video_screen_get_time_until_pos(machine->primary_screen, param + 64, 0), param + 64);
117117
118118   /* IRQ starts on scanline 0, 64, 128, etc. */
119   cpu_set_input_line(machine->cpu[0], M6809_IRQ_LINE, ASSERT_LINE);
119   cputag_set_input_line(machine, "maincpu", M6809_IRQ_LINE, ASSERT_LINE);
120120
121121   /* it will turn off on the next HBLANK */
122122   timer_set(machine, video_screen_get_time_until_pos(machine->primary_screen, param, BALSENTE_HBSTART), NULL, 0, irq_off);
r4679r4680
148148
149149MACHINE_RESET( balsente )
150150{
151   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
151   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
152152   int numbanks, i;
153153
154154   /* create the polynomial tables */
155   poly17_init();
155   poly17_init(machine);
156156
157157   /* reset counters; counter 2's gate is tied high */
158158   memset(counter, 0, sizeof(counter));
r4679r4680
199199   memory_configure_bank(machine, 2, 0, numbanks, &memory_region(machine, "maincpu")[0x12000], 0x6000);
200200   memory_set_bank(space->machine, 1, 0);
201201   memory_set_bank(space->machine, 2, 0);
202   device_reset(machine->cpu[0]);
202   device_reset(cputag_get_cpu(machine, "maincpu"));
203203
204204   /* start a timer to generate interrupts */
205205   scanline_timer = timer_alloc(machine, interrupt_timer, NULL);
r4679r4680
267267#define POLY17_SHR   10
268268#define POLY17_ADD   0x18000
269269
270static void poly17_init(void)
270static void poly17_init(running_machine *machine)
271271{
272272   UINT32 i, x = 0;
273273   UINT8 *p, *r;
274274
275275   /* allocate memory */
276   p = poly17 = auto_malloc(POLY17_SIZE + 1);
277   r = rand17 = auto_malloc(POLY17_SIZE + 1);
276   p = poly17 = auto_alloc_array(machine, UINT8, POLY17_SIZE + 1);
277   r = rand17 = auto_alloc_array(machine, UINT8, POLY17_SIZE + 1);
278278
279279   /* generate the polynomial */
280280   for (i = 0; i < POLY17_SIZE; i++)
r4679r4680
475475   /* apply the change */
476476   if (new_state && !(m6850_status & 0x80))
477477   {
478      cpu_set_input_line(machine->cpu[0], M6809_FIRQ_LINE, ASSERT_LINE);
478      cputag_set_input_line(machine, "maincpu", M6809_FIRQ_LINE, ASSERT_LINE);
479479      m6850_status |= 0x80;
480480   }
481481   else if (!new_state && (m6850_status & 0x80))
482482   {
483      cpu_set_input_line(machine->cpu[0], M6809_FIRQ_LINE, CLEAR_LINE);
483      cputag_set_input_line(machine, "maincpu", M6809_FIRQ_LINE, CLEAR_LINE);
484484      m6850_status &= ~0x80;
485485   }
486486
r4679r4680
493493   /* apply the change */
494494   if (new_state && !(m6850_sound_status & 0x80))
495495   {
496      cpu_set_input_line(machine->cpu[1], INPUT_LINE_NMI, ASSERT_LINE);
496      cputag_set_input_line(machine, "audiocpu", INPUT_LINE_NMI, ASSERT_LINE);
497497      m6850_sound_status |= 0x80;
498498   }
499499   else if (!new_state && (m6850_sound_status & 0x80))
500500   {
501      cpu_set_input_line(machine->cpu[1], INPUT_LINE_NMI, CLEAR_LINE);
501      cputag_set_input_line(machine, "audiocpu", INPUT_LINE_NMI, CLEAR_LINE);
502502      m6850_sound_status &= ~0x80;
503503   }
504504}
r4679r4680
784784{
785785   /* OUT on counter 2 is hooked to the /INT line on the Z80 */
786786   if (which == 2)
787      cpu_set_input_line(machine->cpu[1], 0, out ? ASSERT_LINE : CLEAR_LINE);
787      cputag_set_input_line(machine, "audiocpu", 0, out ? ASSERT_LINE : CLEAR_LINE);
788788
789789   /* OUT on counter 0 is hooked to the GATE line on counter 1 */
790790   else if (which == 0)
src/mame/machine/deco102.c
r4679r4680
2828      { 12,15,8,13,9,11,14,10, 6,5,4,3,2,1,0,7 }, { 11,12,13,14,15,8,9,10, 4,5,7,1,6,3,2,0 },
2929      { 13,8,12,14,11,15,10,9, 7,6,5,4,3,2,1,0 }, { 15,14,13,12,11,10,9,8, 0,6,7,4,3,2,1,5 }
3030   };
31   int j, xor;
31   int j, xorval;
3232   const UINT8 *bs;
3333
3434   // calculate bitswap to use
r4679r4680
3939   // calculate xor to use
4040   j = (address ^ select_xor) & 0x0f;
4141   if (address & 0x40000) j ^= 2;   // boogwing
42   xor = xors[j];
42   xorval = xors[j];
4343
4444   // decrypt
45   return xor ^ BITSWAP16(data,
45   return xorval ^ BITSWAP16(data,
4646            bs[0],bs[1],bs[2],bs[3],bs[4],bs[5],bs[6],bs[7],
4747            bs[8],bs[9],bs[10],bs[11],bs[12],bs[13],bs[14],bs[15]);
4848}
r4679r4680
5353   const address_space *space = cputag_get_address_space(machine, cputag, ADDRESS_SPACE_PROGRAM);
5454   UINT16 *rom = (UINT16 *)memory_region(machine, cputag);
5555   int size = memory_region_length(machine, cputag);
56   UINT16 *opcodes = auto_malloc(size);
57   UINT16 *buf = malloc_or_die(size);
56   UINT16 *opcodes = auto_alloc_array(machine, UINT16, size / 2);
57   UINT16 *buf = alloc_array_or_die(UINT16, size / 2);
5858
59      memcpy(buf,rom,size);
59      memcpy(buf, rom, size);
6060
6161      memory_set_decrypted_region(space, 0, size - 1, opcodes);
62      m68k_set_encrypted_opcode_range(machine->cpu[0],0,size);
62      m68k_set_encrypted_opcode_range(cputag_get_cpu(machine, cputag), 0, size);
6363
64      for (i = 0;i < size/2;i++)
64      for (i = 0; i < size / 2; i++)
6565      {
6666         int src;
6767
src/mame/machine/vsnes.c
r4679r4680
292292DRIVER_INIT( vsnormal )
293293{
294294   /* vrom switching is enabled with bit 2 of $4016 */
295   memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x4016, 0x4016, 0, 0, vsnormal_vrom_banking );
295   memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x4016, 0x4016, 0, 0, vsnormal_vrom_banking );
296296}
297297
298298static WRITE8_HANDLER( ppuRC2C05_protection )
r4679r4680
323323   DRIVER_INIT_CALL(vsnormal);
324324
325325   /* extra ram at $6000 is enabled with bit 1 of $4016 */
326   memory_install_readwrite8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x6000, 0x7fff, 0, 0, SMH_BANK1, SMH_BANK1 );
327   memory_set_bankptr(machine, 1, auto_malloc(0x2000));
326   memory_install_readwrite8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x6000, 0x7fff, 0, 0, (read8_space_func)SMH_BANK(1), (write8_space_func)SMH_BANK(1) );
327   memory_set_bankptr(machine, 1, auto_alloc_array(machine, UINT8, 0x2000));
328328
329329   /* now override the vidaccess callback */
330330   /* we need to remap color tables */
r4679r4680
390390DRIVER_INIT( duckhunt )
391391{
392392   /* vrom switching is enabled with bit 2 of $4016 */
393   memory_install_readwrite8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x4016, 0x4016, 0, 0, gun_in0_r, gun_in0_w );
393   memory_install_readwrite8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x4016, 0x4016, 0, 0, gun_in0_r, gun_in0_w );
394394
395395   /* common init */
396396   init_vsnes(machine);
r4679r4680
439439   memcpy( &prg[0x08000], &prg[0x18000], 0x8000 );
440440
441441   /* banking is done with writes to the $8000-$ffff area */
442   memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x8000, 0xffff, 0, 0, goonies_rom_banking );
442   memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x8000, 0xffff, 0, 0, goonies_rom_banking );
443443
444444   /* common init */
445445   init_vsnes(machine);
r4679r4680
456456   memcpy( &prg[0x08000], &prg[0x18000], 0x8000 );
457457
458458   /* banking is done with writes to the $8000-$ffff area */
459   memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x8000, 0xffff, 0, 0, goonies_rom_banking );
459   memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x8000, 0xffff, 0, 0, goonies_rom_banking );
460460
461461   /* common init */
462462   init_vsnes(machine);
r4679r4680
482482{
483483
484484   /* vrom switching is enabled with bit 2 of $4016 */
485   memory_install_readwrite8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x4016, 0x4016, 0, 0, gun_in0_r, gun_in0_w );
485   memory_install_readwrite8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x4016, 0x4016, 0, 0, gun_in0_r, gun_in0_w );
486486
487487   /* common init */
488488   init_vsnes(machine);
r4679r4680
527527   memcpy (&prg[0x08000], &prg[0x12000], 0x2000);
528528
529529   /* Protection */
530   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x2002, 0x2002, 0, 0, vsgshoe_security_r );
531   memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x2000, 0x2001, 0, 0, ppuRC2C05_protection );
530   memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x2002, 0x2002, 0, 0, vsgshoe_security_r );
531   memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x2000, 0x2001, 0, 0, ppuRC2C05_protection );
532532
533533   /* vrom switching is enabled with bit 2 of $4016 */
534   memory_install_readwrite8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x4016, 0x4016, 0, 0, gun_in0_r, vsgshoe_gun_in0_w );
534   memory_install_readwrite8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x4016, 0x4016, 0, 0, gun_in0_r, vsgshoe_gun_in0_w );
535535
536536   /* common init */
537537   init_vsnes(machine);
r4679r4680
669669   memcpy( &prg[0x0c000], &prg[0x1c000], 0x4000 );
670670
671671   /* MMC1 mapper at writes to $8000-$ffff */
672   memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x8000, 0xffff, 0, 0, drmario_rom_banking );
672   memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x8000, 0xffff, 0, 0, drmario_rom_banking );
673673
674674   drmario_shiftreg = 0;
675675   drmario_shiftcount = 0;
r4679r4680
766766   memcpy( &prg[0x08000], &prg[0x28000], 0x8000 );
767767
768768      /* banking is done with writes to the $8000-$ffff area */
769   memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x8000, 0xffff, 0, 0, castlevania_rom_banking );
769   memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x8000, 0xffff, 0, 0, castlevania_rom_banking );
770770
771771   /* common init */
772772   init_vsnes(machine);
r4679r4680
794794   memcpy( &prg[0x08000], &prg[0x28000], 0x8000 );
795795
796796      /* banking is done with writes to the $8000-$ffff area */
797   memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x8000, 0xffff, 0, 0, castlevania_rom_banking );
797   memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x8000, 0xffff, 0, 0, castlevania_rom_banking );
798798
799799   /* tap on the PPU, due to some tricky protection */
800   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x2002, 0x2002, 0, 0, topgun_security_r );
801   memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x2000, 0x2001, 0, 0, ppuRC2C05_protection );
800   memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x2002, 0x2002, 0, 0, topgun_security_r );
801   memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x2000, 0x2001, 0, 0, ppuRC2C05_protection );
802802
803803   /* common init */
804804   init_vsnes(machine);
r4679r4680
848848static void mapper4_irq ( const device_config *device, int scanline, int vblank, int blanked )
849849{
850850   mame_printf_debug("entra\n");
851   if ((scanline < BOTTOM_VISIBLE_SCANLINE) || (scanline == NUM_SCANLINE-1))
851   if ((scanline < BOTTOM_VISIBLE_SCANLINE) || (scanline == NUM_SCANLINE - 1))
852852   {
853853      if ((IRQ_enable) && !blanked)
854854      {
855855         if (IRQ_count == 0)
856856         {
857857            IRQ_count = IRQ_count_latch;
858            cpu_set_input_line (device->machine->cpu[0], 0, HOLD_LINE);
858            cputag_set_input_line(device->machine, "maincpu", 0, HOLD_LINE);
859859         }
860860         IRQ_count --;
861861      }
r4679r4680
979979   memcpy( &prg[0xe000], &prg[(MMC3_prg_chunks-1) * 0x4000 + 0x12000], 0x2000 );
980980
981981   /* MMC3 mapper at writes to $8000-$ffff */
982   memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x8000, 0xffff, 0, 0, mapper4_w );
982   memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x8000, 0xffff, 0, 0, mapper4_w );
983983
984984   /* extra ram at $6000-$7fff */
985   memory_install_readwrite8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x6000, 0x7fff, 0, 0, SMH_BANK1, SMH_BANK1 );
986   memory_set_bankptr(machine, 1, auto_malloc(0x2000));
985   memory_install_readwrite8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x6000, 0x7fff, 0, 0, (read8_space_func)SMH_BANK(1), (write8_space_func)SMH_BANK(1) );
986   memory_set_bankptr(machine, 1, auto_alloc_array(machine, UINT8, 0x2000));
987987
988988   /* common init */
989989   init_vsnes(machine);
r4679r4680
10241024   DRIVER_INIT_CALL(MMC3);
10251025
10261026   /* RBI Base ball hack */
1027   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x5e00, 0x5e01, 0, 0, rbi_hack_r) ;
1027   memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x5e00, 0x5e01, 0, 0, rbi_hack_r) ;
10281028
10291029   remapped_colortable = rp2c04003_colortable;
10301030}
r4679r4680
10741074   DRIVER_INIT_CALL(MMC3);
10751075
10761076   /* Vs. Super Xevious Protection */
1077   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x54ff, 0x54ff, 0, 0, supxevs_read_prot_1_r );
1078   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x5678, 0x5678, 0, 0, supxevs_read_prot_2_r );
1079   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x578f, 0x578f, 0, 0, supxevs_read_prot_3_r );
1080   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x5567, 0x5567, 0, 0, supxevs_read_prot_4_r );
1077   memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x54ff, 0x54ff, 0, 0, supxevs_read_prot_1_r );
1078   memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x5678, 0x5678, 0, 0, supxevs_read_prot_2_r );
1079   memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x578f, 0x578f, 0, 0, supxevs_read_prot_3_r );
1080   memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x5567, 0x5567, 0, 0, supxevs_read_prot_4_r );
10811081
10821082   remapped_colortable = rp2c04001_colortable;
10831083}
r4679r4680
11091109   DRIVER_INIT_CALL(MMC3);
11101110
11111111   /* security device at $5e00-$5e01 */
1112   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x5e00, 0x5e01, 0, 0, tko_security_r );
1112   memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x5e00, 0x5e01, 0, 0, tko_security_r );
11131113
11141114   /* now override the vidaccess callback */
11151115   /* we need to remap color tables */
r4679r4680
11231123{
11241124   DRIVER_INIT_CALL(MMC3);
11251125
1126   memory_install_readwrite8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x4016, 0x4016, 0, 0, gun_in0_r, gun_in0_w );
1126   memory_install_readwrite8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x4016, 0x4016, 0, 0, gun_in0_r, gun_in0_w );
11271127
11281128   vsnes_gun_controller = 1;
11291129   vsnes_do_vrom_bank = 0;
r4679r4680
11781178   memcpy( &prg[0x08000], &prg[0x10000], 0x4000 );
11791179   memcpy( &prg[0x0c000], &prg[0x2c000], 0x4000 );
11801180
1181   memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x8000, 0xffff, 0, 0, mapper68_rom_banking );
1181   memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x8000, 0xffff, 0, 0, mapper68_rom_banking );
11821182
11831183   init_vsnes(machine);
11841184
r4679r4680
11931193static WRITE8_HANDLER ( set_bnglngby_irq_w )
11941194{
11951195   ret = data;
1196   cpu_set_input_line(space->machine->cpu[0], 0, ( data & 2 ) ? ASSERT_LINE : CLEAR_LINE );
1196   cputag_set_input_line(space->machine, "maincpu", 0, ( data & 2 ) ? ASSERT_LINE : CLEAR_LINE );
11971197   /* other values ??? */
11981198   /* 0, 4, 84 */
11991199}
r4679r4680
12051205
12061206DRIVER_INIT( bnglngby )
12071207{
1208   memory_install_readwrite8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x0231, 0x0231, 0, 0, set_bnglngby_irq_r, set_bnglngby_irq_w );
1208   memory_install_readwrite8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x0231, 0x0231, 0, 0, set_bnglngby_irq_r, set_bnglngby_irq_w );
12091209
12101210   /* extra ram */
1211   memory_install_readwrite8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x6000, 0x7fff, 0, 0, SMH_BANK1, SMH_BANK1 );
1212   memory_set_bankptr(machine, 1, auto_malloc(0x2000));
1211   memory_install_readwrite8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x6000, 0x7fff, 0, 0, (read8_space_func)SMH_BANK(1), (write8_space_func)SMH_BANK(1) );
1212   memory_set_bankptr(machine, 1, auto_alloc_array(machine, UINT8, 0x2000));
12131213
12141214   ret = 0;
12151215
r4679r4680
12381238   //Maybe it should be a DOP (double NOP)
12391239
12401240   /* Protection */
1241   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x2002, 0x2002, 0, 0, jajamaru_security_r );
1242   memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x2000, 0x2001, 0, 0, ppuRC2C05_protection );
1241   memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x2002, 0x2002, 0, 0, jajamaru_security_r );
1242   memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x2000, 0x2001, 0, 0, ppuRC2C05_protection );
12431243
12441244   /* common init */
12451245   init_vsnes(machine);
r4679r4680
12611261DRIVER_INIT( mightybj )
12621262{
12631263   /* Protection */
1264   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x2002, 0x2002, 0, 0, mightybj_security_r );
1265   memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x2000, 0x2001, 0, 0, ppuRC2C05_protection );
1264   memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x2002, 0x2002, 0, 0, mightybj_security_r );
1265   memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x2000, 0x2001, 0, 0, ppuRC2C05_protection );
12661266
12671267   /* common init */
12681268   init_vsnes(machine);
r4679r4680
12731273
12741274static WRITE8_HANDLER( vstennis_vrom_banking )
12751275{
1276   const device_config *other_cpu = (space->cpu == space->machine->cpu[0]) ? space->machine->cpu[1] : space->machine->cpu[0];
1276   const device_config *other_cpu = (space->cpu == cputag_get_cpu(space->machine, "maincpu")) ? cputag_get_cpu(space->machine, "sub") : cputag_get_cpu(space->machine, "maincpu");
12771277   const device_config *ppu1 = devtag_get_device(space->machine, "ppu1");
12781278   const device_config *ppu2 = devtag_get_device(space->machine, "ppu2");
12791279
12801280   /* switch vrom */
1281   ppu2c0x_set_videorom_bank( (space->cpu == space->machine->cpu[0]) ? ppu1 : ppu2, 0, 8, ( data & 4 ) ? 1 : 0, 512 );
1281   ppu2c0x_set_videorom_bank( (space->cpu == cputag_get_cpu(space->machine, "maincpu")) ? ppu1 : ppu2, 0, 8, ( data & 4 ) ? 1 : 0, 512 );
12821282
12831283   /* bit 1 ( data & 2 ) triggers irq on the other cpu */
12841284   cpu_set_input_line(other_cpu, 0, ( data & 2 ) ? CLEAR_LINE : ASSERT_LINE );
12851285
12861286   /* move along */
1287   if (space->cpu == space->machine->cpu[0])
1287   if (space->cpu == cputag_get_cpu(space->machine, "maincpu"))
12881288      vsnes_in0_w( space, offset, data );
12891289   else
12901290      vsnes_in0_1_w( space, offset, data );
r4679r4680
12951295   UINT8 *prg = memory_region( machine, "maincpu" );
12961296
12971297   /* vrom switching is enabled with bit 2 of $4016 */
1298   memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x4016, 0x4016, 0, 0, vstennis_vrom_banking );
1299   memory_install_write8_handler(cpu_get_address_space(machine->cpu[1], ADDRESS_SPACE_PROGRAM), 0x4016, 0x4016, 0, 0, vstennis_vrom_banking );
1298   memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x4016, 0x4016, 0, 0, vstennis_vrom_banking );
1299   memory_install_write8_handler(cputag_get_address_space(machine, "sub", ADDRESS_SPACE_PROGRAM), 0x4016, 0x4016, 0, 0, vstennis_vrom_banking );
13001300
13011301   /* shared ram at $6000 */
1302   memory_install_readwrite8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x6000, 0x7fff, 0, 0, SMH_BANK1, SMH_BANK1 );
1303   memory_install_readwrite8_handler(cpu_get_address_space(machine->cpu[1], ADDRESS_SPACE_PROGRAM), 0x6000, 0x7fff, 0, 0, SMH_BANK1, SMH_BANK1 );
1302   memory_install_readwrite8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x6000, 0x7fff, 0, 0, (read8_space_func)SMH_BANK(1), (write8_space_func)SMH_BANK(1) );
1303   memory_install_readwrite8_handler(cputag_get_address_space(machine, "sub", ADDRESS_SPACE_PROGRAM), 0x6000, 0x7fff, 0, 0, (read8_space_func)SMH_BANK(1), (write8_space_func)SMH_BANK(1) );
13041304
13051305   memory_set_bankptr(machine, 1, &prg[0x6000]);
13061306}
r4679r4680
13701370DRIVER_INIT( vstetris )
13711371{
13721372   /* extra ram at $6000 is enabled with bit 1 of $4016 */
1373   memory_install_readwrite8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x6000, 0x7fff, 0, 0, SMH_BANK1, SMH_BANK1 );
1374   memory_set_bankptr(machine, 1, auto_malloc(0x2000));
1373   memory_install_readwrite8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x6000, 0x7fff, 0, 0, (read8_space_func)SMH_BANK(1), (write8_space_func)SMH_BANK(1) );
1374   memory_set_bankptr(machine, 1, auto_alloc_array(machine, UINT8, 0x2000));
13751375
13761376   init_vsnes(machine);
13771377   DRIVER_INIT_CALL(vsnormal);
src/mame/machine/qix.c
r4679r4680
226226
227227MACHINE_RESET( qix )
228228{
229   qix_state *state = machine->driver_data;
229   qix_state *state = (qix_state *)machine->driver_data;
230230
231231   /* reset the coin counter register */
232232   state->coinctrl = 0x00;
r4679r4680
235235
236236MACHINE_START( qixmcu )
237237{
238   qix_state *state = machine->driver_data;
238   qix_state *state = (qix_state *)machine->driver_data;
239239
240240   /* set up save states */
241241   state_save_register_global_array(machine, state->_68705_port_in);
r4679r4680
347347
348348READ8_DEVICE_HANDLER( qixmcu_coin_r )
349349{
350   qix_state *state = device->machine->driver_data;
350   qix_state *state = (qix_state *)device->machine->driver_data;
351351
352352   logerror("6809:qixmcu_coin_r = %02X\n", state->_68705_port_out[0]);
353353   return state->_68705_port_out[0];
r4679r4680
356356
357357static WRITE8_DEVICE_HANDLER( qixmcu_coin_w )
358358{
359   qix_state *state = device->machine->driver_data;
359   qix_state *state = (qix_state *)device->machine->driver_data;
360360
361361   logerror("6809:qixmcu_coin_w = %02X\n", data);
362362   /* this is a callback called by pia6821_w(), so I don't need to synchronize */
r4679r4680
367367
368368static WRITE8_DEVICE_HANDLER( qixmcu_coinctrl_w )
369369{
370   qix_state *state = device->machine->driver_data;
370   qix_state *state = (qix_state *)device->machine->driver_data;
371371
372372   /* if (!(data & 0x04)) */
373373   if (data & 0x04)
r4679r4680
396396
397397READ8_HANDLER( qix_68705_portA_r )
398398{
399   qix_state *state = space->machine->driver_data;
399   qix_state *state = (qix_state *)space->machine->driver_data;
400400
401401   UINT8 ddr = state->_68705_ddr[0];
402402   UINT8 out = state->_68705_port_out[0];
r4679r4680
408408
409409READ8_HANDLER( qix_68705_portB_r )
410410{
411   qix_state *state = space->machine->driver_data;
411   qix_state *state = (qix_state *)space->machine->driver_data;
412412
413413   UINT8 ddr = state->_68705_ddr[1];
414414   UINT8 out = state->_68705_port_out[1];
r4679r4680
419419
420420READ8_HANDLER( qix_68705_portC_r )
421421{
422   qix_state *state = space->machine->driver_data;
422   qix_state *state = (qix_state *)space->machine->driver_data;
423423
424424   UINT8 ddr = state->_68705_ddr[2];
425425   UINT8 out = state->_68705_port_out[2];
r4679r4680
437437
438438WRITE8_HANDLER( qix_68705_portA_w )
439439{
440   qix_state *state = space->machine->driver_data;
440   qix_state *state = (qix_state *)space->machine->driver_data;
441441
442442   logerror("68705:portA_w = %02X\n", data);
443443   state->_68705_port_out[0] = data;
r4679r4680
446446
447447WRITE8_HANDLER( qix_68705_portB_w )
448448{
449   qix_state *state = space->machine->driver_data;
449   qix_state *state = (qix_state *)space->machine->driver_data;
450450
451451   state->_68705_port_out[1] = data;
452452   coin_lockout_w(0, (~data >> 6) & 1);
r4679r4680
456456
457457WRITE8_HANDLER( qix_68705_portC_w )
458458{
459   qix_state *state = space->machine->driver_data;
459   qix_state *state = (qix_state *)space->machine->driver_data;
460460
461461   state->_68705_port_out[2] = data;
462462}
r4679r4680
536536
537537static READ8_DEVICE_HANDLER( slither_trak_lr_r )
538538{
539   qix_state *state = device->machine->driver_data;
539   qix_state *state = (qix_state *)device->machine->driver_data;
540540
541541   return input_port_read(device->machine, state->flip ? "AN3" : "AN1");
542542}
r4679r4680
544544
545545static READ8_DEVICE_HANDLER( slither_trak_ud_r )
546546{
547   qix_state *state = device->machine->driver_data;
547   qix_state *state = (qix_state *)device->machine->driver_data;
548548
549549   return input_port_read(device->machine, state->flip ? "AN2" : "AN0");
550550}
src/mame/machine/mexico86.c
r4679r4680
2222*/
2323WRITE8_HANDLER( mexico86_f008_w )
2424{
25   cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_RESET, (data & 4) ? CLEAR_LINE : ASSERT_LINE);
26    if (space->machine->cpu[2] != NULL)
25   cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_RESET, (data & 4) ? CLEAR_LINE : ASSERT_LINE);
26    if (cputag_get_cpu(space->machine, "mcu") != NULL)
2727   {
2828      // mexico 86, knight boy
29      cpu_set_input_line(space->machine->cpu[2], INPUT_LINE_RESET, (data & 2) ? CLEAR_LINE : ASSERT_LINE);
29      cputag_set_input_line(space->machine, "mcu", INPUT_LINE_RESET, (data & 2) ? CLEAR_LINE : ASSERT_LINE);
3030   }
3131   else
3232   {
r4679r4680
318318   }
319319   if ((ddrB & 0x20) && (data & 0x20) && (~portB_out & 0x20))
320320   {
321      cpu_set_input_line_vector(space->machine->cpu[0],0,mexico86_protection_ram[0]);
322      cpu_set_input_line(space->machine->cpu[0], 0, HOLD_LINE); //AT: HOLD_LINE works better in Z80 interrupt mode 1.
321      cpu_set_input_line_vector(cputag_get_cpu(space->machine, "maincpu"), 0, mexico86_protection_ram[0]);
322      cputag_set_input_line(space->machine, "maincpu", 0, HOLD_LINE); //AT: HOLD_LINE works better in Z80 interrupt mode 1.
323323   }
324324   if ((ddrB & 0x40) && (~data & 0x40) && (portB_out & 0x40))
325325   {
src/mame/machine/snes.c
r4679r4680
8181static TIMER_CALLBACK( snes_nmi_tick )
8282{
8383   // pull NMI
84   cpu_set_input_line(machine->cpu[0], G65816_LINE_NMI, HOLD_LINE );
84   cputag_set_input_line(machine, "maincpu", G65816_LINE_NMI, HOLD_LINE );
8585
8686   // don't happen again
8787   timer_adjust_oneshot(snes_nmi_timer, attotime_never, 0);
r4679r4680
9393   // (don't need to switch to the 65816 context, we don't do anything dependant on it)
9494   snes_latch_counters(machine);
9595   snes_ram[TIMEUP] = 0x80;   /* Indicate that irq occured */
96   cpu_set_input_line(machine->cpu[0], G65816_LINE_IRQ, HOLD_LINE );
96   cputag_set_input_line(machine, "maincpu", G65816_LINE_IRQ, HOLD_LINE );
9797
9898   // don't happen again
9999   timer_adjust_oneshot(snes_hirq_timer, attotime_never, 0);
r4679r4680
107107static TIMER_CALLBACK( snes_scanline_tick )
108108{
109109   // make sure we're in the 65816's context since we're messing with the OAM and stuff
110   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
110   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
111111
112112   /* Increase current line - we want to latch on this line during it, not after it */
113113   snes_ppu.beam.current_vert = video_screen_get_vpos(machine->primary_screen);
r4679r4680
123123         snes_ram[TIMEUP] = 0x80;   /* Indicate that irq occured */
124124         // IRQ latches the counters, do it now
125125         snes_latch_counters(machine);
126         cpu_set_input_line(machine->cpu[0], G65816_LINE_IRQ, HOLD_LINE );
126         cputag_set_input_line(machine, "maincpu", G65816_LINE_IRQ, HOLD_LINE );
127127      }
128128   }
129129   /* Horizontal IRQ timer */
r4679r4680
169169      if( snes_ram[NMITIMEN] & 0x80 )   /* NMI only signaled if this bit set */
170170      {
171171         // NMI goes off about 12 cycles after this (otherwise Chrono Trigger, NFL QB Club, etc. lock up)
172         timer_adjust_oneshot(snes_nmi_timer, cpu_clocks_to_attotime(machine->cpu[0], 12), 0);
172         timer_adjust_oneshot(snes_nmi_timer, cputag_clocks_to_attotime(machine, "maincpu", 12), 0);
173173      }
174174   }
175175
r4679r4680
229229      snes_ram[STAT77] &= 0x3f;      /* Clear Time Over and Range Over bits */
230230      snes_ram[STAT78] ^= 0x80;      /* Toggle field flag */
231231
232      cpu_set_input_line(machine->cpu[0], G65816_LINE_NMI, CLEAR_LINE );
232      cputag_set_input_line(machine, "maincpu", G65816_LINE_NMI, CLEAR_LINE );
233233   }
234234
235235   timer_adjust_oneshot(snes_scanline_timer, attotime_never, 0);
r4679r4680
239239/* This is called at the start of hblank *before* the scanline indicated in current_vert! */
240240static TIMER_CALLBACK( snes_hblank_tick )
241241{
242   const address_space *cpu0space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
242   const address_space *cpu0space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
243243   int nextscan;
244244
245245   snes_ppu.beam.current_vert = video_screen_get_vpos(machine->primary_screen);
r4679r4680
10361036      case MEMSEL:   /* Access cycle designation in memory (2) area */
10371037         /* FIXME: Need to adjust the speed only during access of banks 0x80+
10381038             * Currently we are just increasing it no matter what */
1039//          cpu_set_clockscale(space->machine->cpu[0], (data & 0x1) ? 1.335820896 : 1.0 );
1039//          cpu_set_clockscale(cputag_get_cpu(space->machine, "maincpu"), (data & 0x1) ? 1.335820896 : 1.0 );
10401040#ifdef SNES_DBG_REG_W
10411041         if( (data & 0x1) != (snes_ram[MEMSEL] & 0x1) )
10421042            mame_printf_debug( "CPU speed: %f Mhz\n", (data & 0x1) ? 3.58 : 2.68 );
r4679r4680
15191519
15201520static void snes_init_ram(running_machine *machine)
15211521{
1522   const address_space *cpu0space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
1522   const address_space *cpu0space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
15231523   int i;
15241524
15251525   /* Init DSP1 */
r4679r4680
16311631
16321632MACHINE_START( snes )
16331633{
1634   snes_vram = auto_malloc(SNES_VRAM_SIZE);
1635   snes_cgram = auto_malloc(SNES_CGRAM_SIZE);
1636   snes_oam = auto_malloc(SNES_OAM_SIZE);
1637   memory_set_direct_update_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), snes_direct);
1638   memory_set_direct_update_handler(cpu_get_address_space(machine->cpu[1], ADDRESS_SPACE_PROGRAM), spc_direct);
1634   snes_vram = auto_alloc_array(machine, UINT8, SNES_VRAM_SIZE);
1635   snes_cgram = auto_alloc_array(machine, UINT16, SNES_CGRAM_SIZE/2);
1636   snes_oam = auto_alloc_array(machine, UINT16, SNES_OAM_SIZE/2);
1637   memory_set_direct_update_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), snes_direct);
1638   memory_set_direct_update_handler(cputag_get_address_space(machine, "soundcpu", ADDRESS_SPACE_PROGRAM), spc_direct);
16391639
16401640   // power-on sets these registers like this
16411641   snes_ram[WRIO] = 0xff;
r4679r4680
16681668/* for mame we use an init, maybe we will need more for the different games */
16691669DRIVER_INIT( snes )
16701670{
1671   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
1671   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
16721672   UINT16 total_blocks, read_blocks;
16731673   UINT8  *rom;
16741674
16751675   rom = memory_region(machine, "user3");
1676   snes_ram = auto_malloc(0x1000000);
1676   snes_ram = auto_alloc_array(machine, UINT8, 0x1000000);
16771677   memset(snes_ram, 0, 0x1000000);
16781678
16791679   /* all NSS games seem to use MODE 20 */
r4679r4680
17341734
17351735DRIVER_INIT( snes_hirom )
17361736{
1737   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
1737   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
17381738   UINT16 total_blocks, read_blocks;
17391739   UINT8  *rom;
17401740
17411741   rom = memory_region(machine, "user3");
1742   snes_ram = auto_malloc(0x1000000);
1742   snes_ram = auto_alloc_array(machine, UINT8, 0x1000000);
17431743   memset(snes_ram, 0, 0x1000000);
17441744
17451745   snes_cart.mode = SNES_MODE_21;
src/mame/machine/mc8123.c
r4679r4680
377377void mc8123_decrypt_rom(running_machine *machine, const char *cpu, const char *keyrgn, int banknum, int numbanks)
378378{
379379   const address_space *space = cputag_get_address_space(machine, cpu, ADDRESS_SPACE_PROGRAM);
380   UINT8 *decrypted1 = auto_malloc(numbanks == 1 ? 0xc000 : 0x8000);
381   UINT8 *decrypted2 = numbanks > 1 ? auto_malloc(0x4000 * numbanks) : decrypted1 + 0x8000;
380   UINT8 *decrypted1 = auto_alloc_array(machine, UINT8, numbanks == 1 ? 0xc000 : 0x8000);
381   UINT8 *decrypted2 = numbanks > 1 ? auto_alloc_array(machine, UINT8, 0x4000 * numbanks) : decrypted1 + 0x8000;
382382   UINT8 *rom = memory_region(machine, cpu);
383383   UINT8 *key = memory_region(machine, keyrgn);
384384   int A, bank;
src/mame/machine/taitosj.c
r4679r4680
4444
4545MACHINE_RESET( taitosj )
4646{
47   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
47   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
4848   /* set the default ROM bank (many games only have one bank and */
4949   /* never write to the bank selector register) */
5050   taitosj_bankswitch_w(space, 0, 0);
r4679r4680
5353   zaccept = 1;
5454   zready = 0;
5555   busreq = 0;
56    if (machine->cpu[2] != NULL)
57      cpu_set_input_line(machine->cpu[2],0,CLEAR_LINE);
56    if (cputag_get_cpu(machine, "mcu") != NULL)
57      cputag_set_input_line(machine, "mcu", 0, CLEAR_LINE);
5858
5959   spacecr_prot_value = 0;
6060}
r4679r4680
113113static TIMER_CALLBACK( taitosj_mcu_real_data_w )
114114{
115115   zready = 1;
116   cpu_set_input_line(machine->cpu[2],0,ASSERT_LINE);
116   cputag_set_input_line(machine, "mcu", 0, ASSERT_LINE);
117117   fromz80 = param;
118118}
119119
r4679r4680
189189
190190WRITE8_HANDLER( taitosj_68705_portB_w )
191191{
192   LOG(("%04x: 68705 port B write %02x\n",cpu_get_pc(space->cpu),data));
192   LOG(("%04x: 68705 port B write %02x\n", cpu_get_pc(space->cpu), data));
193193
194194   if (~data & 0x01)
195195   {
196      LOG(("%04x: 68705  68INTRQ **NOT SUPPORTED**!\n",cpu_get_pc(space->cpu)));
196      LOG(("%04x: 68705  68INTRQ **NOT SUPPORTED**!\n", cpu_get_pc(space->cpu)));
197197   }
198198   if (~data & 0x02)
199199   {
200200      /* 68705 is going to read data from the Z80 */
201      timer_call_after_resynch(space->machine, NULL, 0,taitosj_mcu_data_real_r);
202      cpu_set_input_line(space->machine->cpu[2],0,CLEAR_LINE);
201      timer_call_after_resynch(space->machine, NULL, 0, taitosj_mcu_data_real_r);
202      cputag_set_input_line(space->machine, "mcu", 0, CLEAR_LINE);
203203      portA_in = fromz80;
204      LOG(("%04x: 68705 <- Z80 %02x\n",cpu_get_pc(space->cpu),portA_in));
204      LOG(("%04x: 68705 <- Z80 %02x\n", cpu_get_pc(space->cpu), portA_in));
205205   }
206206   if (~data & 0x08)
207207      busreq = 1;
r4679r4680
209209      busreq = 0;
210210   if (~data & 0x04)
211211   {
212      LOG(("%04x: 68705 -> Z80 %02x\n",cpu_get_pc(space->cpu),portA_out));
212      LOG(("%04x: 68705 -> Z80 %02x\n", cpu_get_pc(space->cpu), portA_out));
213213
214214      /* 68705 is writing data for the Z80 */
215      timer_call_after_resynch(space->machine, NULL, portA_out,taitosj_mcu_status_real_w);
215      timer_call_after_resynch(space->machine, NULL, portA_out, taitosj_mcu_status_real_w);
216216   }
217217   if (~data & 0x10)
218218   {
219      const address_space *cpu0space = cpu_get_address_space(space->machine->cpu[0], ADDRESS_SPACE_PROGRAM);
220      LOG(("%04x: 68705 write %02x to address %04x\n",cpu_get_pc(space->cpu),portA_out,address));
219      const address_space *cpu0space = cputag_get_address_space(space->machine, "maincpu", ADDRESS_SPACE_PROGRAM);
220      LOG(("%04x: 68705 write %02x to address %04x\n",cpu_get_pc(space->cpu), portA_out, address));
221221
222222      memory_write_byte(cpu0space, address, portA_out);
223223
r4679r4680
226226   }
227227   if (~data & 0x20)
228228   {
229      const address_space *cpu0space = cpu_get_address_space(space->machine->cpu[0], ADDRESS_SPACE_PROGRAM);
229      const address_space *cpu0space = cputag_get_address_space(space->machine, "maincpu", ADDRESS_SPACE_PROGRAM);
230230      portA_in = memory_read_byte(cpu0space, address);
231      LOG(("%04x: 68705 read %02x from address %04x\n",cpu_get_pc(space->cpu),portA_in,address));
231      LOG(("%04x: 68705 read %02x from address %04x\n", cpu_get_pc(space->cpu), portA_in, address));
232232   }
233233   if (~data & 0x40)
234234   {
235      LOG(("%04x: 68705 address low %02x\n",cpu_get_pc(space->cpu),portA_out));
235      LOG(("%04x: 68705 address low %02x\n", cpu_get_pc(space->cpu), portA_out));
236236      address = (address & 0xff00) | portA_out;
237237   }
238238   if (~data & 0x80)
239239   {
240      LOG(("%04x: 68705 address high %02x\n",cpu_get_pc(space->cpu),portA_out));
240      LOG(("%04x: 68705 address high %02x\n", cpu_get_pc(space->cpu), portA_out));
241241      address = (address & 0x00ff) | (portA_out << 8);
242242   }
243243}
src/mame/machine/amiga.c
r4679r4680
300300
301301MACHINE_RESET( amiga )
302302{
303//  const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
304
305303   /* set m68k reset  function */
306   device_set_info_fct(machine->cpu[0], CPUINFO_FCT_M68K_RESET_CALLBACK, (genf *)amiga_m68k_reset);
304   m68k_set_reset_callback(cputag_get_cpu(machine, "maincpu"), amiga_m68k_reset);
307305
308   amiga_m68k_reset(machine->cpu[0]);
306   amiga_m68k_reset(cputag_get_cpu(machine, "maincpu"));
309307
310308   /* call the system-specific callback */
311309   if (amiga_intf->reset_callback)
r4679r4680
333331   if (scanline == 0)
334332   {
335333      /* signal VBLANK IRQ */
336      amiga_custom_w(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), REG_INTREQ, 0x8000 | INTENA_VERTB, 0xffff);
334      amiga_custom_w(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), REG_INTREQ, 0x8000 | INTENA_VERTB, 0xffff);
337335
338336      /* clock the first CIA TOD */
339337      cia_clock_tod(cia_0);
r4679r4680
379377   if (CUSTOM_REG(REG_INTENA) & 0x4000)
380378   {
381379      /* Serial transmit buffer empty, disk block finished, software interrupts */
382      cpu_set_input_line(machine->cpu[0], 1, ints & 0x0007 ? ASSERT_LINE : CLEAR_LINE);
380      cputag_set_input_line(machine, "maincpu", 1, ints & 0x0007 ? ASSERT_LINE : CLEAR_LINE);
383381
384382      /* I/O ports and timer interrupts */
385      cpu_set_input_line(machine->cpu[0], 2, ints & 0x0008 ? ASSERT_LINE : CLEAR_LINE);
383      cputag_set_input_line(machine, "maincpu", 2, ints & 0x0008 ? ASSERT_LINE : CLEAR_LINE);
386384
387385      /* Copper, VBLANK, blitter interrupts */
388      cpu_set_input_line(machine->cpu[0], 3, ints & 0x0070 ? ASSERT_LINE : CLEAR_LINE);
386      cputag_set_input_line(machine, "maincpu", 3, ints & 0x0070 ? ASSERT_LINE : CLEAR_LINE);
389387
390388      /* Audio interrupts */
391      cpu_set_input_line(machine->cpu[0], 4, ints & 0x0780 ? ASSERT_LINE : CLEAR_LINE);
389      cputag_set_input_line(machine, "maincpu", 4, ints & 0x0780 ? ASSERT_LINE : CLEAR_LINE);
392390
393391      /* Serial receive buffer full, disk sync match */
394      cpu_set_input_line(machine->cpu[0], 5, ints & 0x1800 ? ASSERT_LINE : CLEAR_LINE);
392      cputag_set_input_line(machine, "maincpu", 5, ints & 0x1800 ? ASSERT_LINE : CLEAR_LINE);
395393
396394      /* External interrupts */
397      cpu_set_input_line(machine->cpu[0], 6, ints & 0x2000 ? ASSERT_LINE : CLEAR_LINE);
395      cputag_set_input_line(machine, "maincpu", 6, ints & 0x2000 ? ASSERT_LINE : CLEAR_LINE);
398396   }
399397   else
400398   {
401      cpu_set_input_line(machine->cpu[0], 1, CLEAR_LINE);
402      cpu_set_input_line(machine->cpu[0], 2, CLEAR_LINE);
403      cpu_set_input_line(machine->cpu[0], 3, CLEAR_LINE);
404      cpu_set_input_line(machine->cpu[0], 4, CLEAR_LINE);
405      cpu_set_input_line(machine->cpu[0], 5, CLEAR_LINE);
406      cpu_set_input_line(machine->cpu[0], 6, CLEAR_LINE);
399      cputag_set_input_line(machine, "maincpu", 1, CLEAR_LINE);
400      cputag_set_input_line(machine, "maincpu", 2, CLEAR_LINE);
401      cputag_set_input_line(machine, "maincpu", 3, CLEAR_LINE);
402      cputag_set_input_line(machine, "maincpu", 4, CLEAR_LINE);
403      cputag_set_input_line(machine, "maincpu", 5, CLEAR_LINE);
404      cputag_set_input_line(machine, "maincpu", 6, CLEAR_LINE);
407405   }
408406}
409407
r4679r4680
424422
425423CUSTOM_INPUT( amiga_joystick_convert )
426424{
427   UINT8 bits = input_port_read(field->port->machine, param);
425   UINT8 bits = input_port_read(field->port->machine, (const char *)param);
428426   int up = (bits >> 0) & 1;
429427   int down = (bits >> 1) & 1;
430428   int left = (bits >> 2) & 1;
r4679r4680
944942   CUSTOM_REG(REG_DMACON) &= ~0x4000;
945943
946944   /* signal an interrupt */
947   amiga_custom_w(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), REG_INTREQ, 0x8000 | INTENA_BLIT, 0xffff);
945   amiga_custom_w(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), REG_INTREQ, 0x8000 | INTENA_BLIT, 0xffff);
948946
949947   /* reset the blitter timer */
950948   timer_reset( amiga_blitter_timer, attotime_never);
r4679r4680
10981096
10991097void amiga_cia_0_irq(const device_config *device, int state)
11001098{
1101   amiga_custom_w(cpu_get_address_space(device->machine->cpu[0], ADDRESS_SPACE_PROGRAM), REG_INTREQ, (state ? 0x8000 : 0x0000) | INTENA_PORTS, 0xffff);
1099   amiga_custom_w(cputag_get_address_space(device->machine, "maincpu", ADDRESS_SPACE_PROGRAM), REG_INTREQ, (state ? 0x8000 : 0x0000) | INTENA_PORTS, 0xffff);
11021100}
11031101
11041102
11051103void amiga_cia_1_irq(const device_config *device, int state)
11061104{
1107   amiga_custom_w(cpu_get_address_space(device->machine->cpu[0], ADDRESS_SPACE_PROGRAM), REG_INTREQ, (state ? 0x8000 : 0x0000) | INTENA_EXTER, 0xffff);
1105   amiga_custom_w(cputag_get_address_space(device->machine, "maincpu", ADDRESS_SPACE_PROGRAM), REG_INTREQ, (state ? 0x8000 : 0x0000) | INTENA_EXTER, 0xffff);
11081106}
11091107
11101108
r4679r4680
11171115
11181116static void custom_reset(running_machine *machine)
11191117{
1120   int clock = cpu_get_clock(machine->cpu[0]);
1118   int clock = cputag_get_clock(machine, "maincpu");
11211119   UINT16   vidmode = (clock == AMIGA_68000_NTSC_CLOCK || clock == AMIGA_68EC020_NTSC_CLOCK ) ? 0x1000 : 0x0000; /* NTSC or PAL? */
11221120
11231121   CUSTOM_REG(REG_DDFSTRT) = 0x18;
r4679r4680
12601258   CUSTOM_REG(REG_SERDATR) |= 0x3000;
12611259
12621260   /* signal an interrupt */
1263   amiga_custom_w(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), REG_INTREQ, 0x8000 | INTENA_TBE, 0xffff);
1261   amiga_custom_w(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), REG_INTREQ, 0x8000 | INTENA_TBE, 0xffff);
12641262}
12651263
12661264
r4679r4680
14361434         CUSTOM_REG(offset) = data;
14371435
14381436         if ( temp & 0x8000  ) /* if we're generating irq's, delay a bit */
1439            timer_adjust_oneshot( amiga_irq_timer, cpu_clocks_to_attotime( space->machine->cpu[0], AMIGA_IRQ_DELAY_CYCLES ), 0);
1437            timer_adjust_oneshot( amiga_irq_timer, cputag_clocks_to_attotime(space->machine, "maincpu", AMIGA_IRQ_DELAY_CYCLES ), 0);
14401438         else /* if we're clearing irq's, process right away */
14411439            update_irqs(space->machine);
14421440         break;
r4679r4680
15111509
15121510void amiga_serial_in_w(running_machine *machine, UINT16 data)
15131511{
1514   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
1512   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
15151513   int mask = (CUSTOM_REG(REG_SERPER) & 0x8000) ? 0x1ff : 0xff;
15161514
15171515   /* copy the data to the low 8 bits of SERDATR and set RBF */
r4679r4680
15331531attotime amiga_get_serial_char_period(running_machine *machine)
15341532{
15351533   UINT32 divisor = (CUSTOM_REG(REG_SERPER) & 0x7fff) + 1;
1536   UINT32 baud = cpu_get_clock(machine->cpu[0]) / 2 / divisor;
1534   UINT32 baud = cputag_get_clock(machine, "maincpu") / 2 / divisor;
15371535   UINT32 numbits = 2 + ((CUSTOM_REG(REG_SERPER) & 0x8000) ? 9 : 8);
15381536   return attotime_mul(ATTOTIME_IN_HZ(baud), numbits);
15391537}
r4679r4680
15551553   assert_always((device->size & (device->size - 1)) == 0, "device->size must be power of 2!");
15561554
15571555   /* allocate memory and link it in at the end of the list */
1558   dev = auto_malloc(sizeof(*dev));
1556   dev = auto_alloc(machine, autoconfig_device);
15591557   dev->next = NULL;
15601558   for (d = &autoconfig_list; *d; d = &(*d)->next) ;
15611559   *d = dev;
src/mame/machine/vertigo.c
r4679r4680
7777static void update_irq(running_machine *machine)
7878{
7979   if (irq_state < 7)
80      cpu_set_input_line(machine->cpu[0], irq_state ^ 7, CLEAR_LINE);
80      cputag_set_input_line(machine, "maincpu", irq_state ^ 7, CLEAR_LINE);
8181
8282   irq_state = TTL74148_output_r(0);
8383
8484   if (irq_state < 7)
85      cpu_set_input_line(machine->cpu[0], irq_state ^ 7, ASSERT_LINE);
85      cputag_set_input_line(machine, "maincpu", irq_state ^ 7, ASSERT_LINE);
8686}
8787
8888
r4679r4680
9696static PIT8253_OUTPUT_CHANGED( v_irq4_w )
9797{
9898   update_irq_encoder(device->machine, INPUT_LINE_IRQ4, state);
99   vertigo_vproc(cpu_attotime_to_clocks(device->machine->cpu[0], attotime_sub(timer_get_time(device->machine), irq4_time)), state);
99   vertigo_vproc(cputag_attotime_to_clocks(device->machine, "maincpu", attotime_sub(timer_get_time(device->machine), irq4_time)), state);
100100   irq4_time = timer_get_time(device->machine);
101101}
102102
r4679r4680
104104static PIT8253_OUTPUT_CHANGED( v_irq3_w )
105105{
106106   if (state)
107      cpu_set_input_line(device->machine->cpu[1], INPUT_LINE_IRQ0, ASSERT_LINE);
107      cputag_set_input_line(device->machine, "audiocpu", INPUT_LINE_IRQ0, ASSERT_LINE);
108108
109109   update_irq_encoder(device->machine, INPUT_LINE_IRQ3, state);
110110}
r4679r4680
164164{
165165   /* Reset sound cpu */
166166   if ((data & 2) == 0)
167      cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_RESET, ASSERT_LINE);
167      cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_RESET, ASSERT_LINE);
168168   else
169      cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_RESET, CLEAR_LINE);
169      cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_RESET, CLEAR_LINE);
170170}
171171
172172
r4679r4680
174174{
175175   exidy440_sound_command = param;
176176   exidy440_sound_command_ack = 0;
177   cpu_set_input_line(machine->cpu[1], INPUT_LINE_IRQ1, ASSERT_LINE);
177   cputag_set_input_line(machine, "audiocpu", INPUT_LINE_IRQ1, ASSERT_LINE);
178178
179179   /* It is important that the sound cpu ACKs the sound command
180180       quickly. Otherwise the main CPU gives up with sound. Boosting
src/mame/machine/lkage.c
r4679r4680
6868   if ((ddrB & 0x02) && (~data & 0x02) && (portB_out & 0x02))
6969   {
7070      portA_in = from_main;
71      if (main_sent) cpu_set_input_line(space->machine->cpu[2],0,CLEAR_LINE);
71      if (main_sent) cputag_set_input_line(space->machine, "mcu", 0, CLEAR_LINE);
7272      main_sent = 0;
7373logerror("read command %02x from main cpu\n",portA_in);
7474   }
r4679r4680
116116logerror("%04x: mcu_w %02x\n",cpu_get_pc(space->cpu),data);
117117   from_main = data;
118118   main_sent = 1;
119   cpu_set_input_line(space->machine->cpu[2],0,ASSERT_LINE);
119   cputag_set_input_line(space->machine, "mcu", 0, ASSERT_LINE);
120120}
121121
122122READ8_HANDLER( lkage_mcu_r )
src/mame/machine/neoprot.c
r4679r4680
104104{
105105   /* the protection involves reading and writing addresses in the */
106106   /* 0x2xxxxx range. There are several checks all around the code. */
107   memory_install_readwrite16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x200000, 0x2fffff, 0, 0, fatfury2_protection_16_r, fatfury2_protection_16_w);
107   memory_install_readwrite16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x200000, 0x2fffff, 0, 0, fatfury2_protection_16_r, fatfury2_protection_16_w);
108108
109109   state_save_register_global(machine, fatfury2_prot_data);
110110}
r4679r4680
146146   /* when 0x20aaaa contains 0x0090 (word) then 0x100 (normally the neogeo header) should return 0x00c200fd
147147   worked out using real hw */
148148
149   memory_install_write16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x20aaaa, 0x20aaab, 0, 0, kof98_prot_w);
149   memory_install_write16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x20aaaa, 0x20aaab, 0, 0, kof98_prot_w);
150150}
151151
152152
r4679r4680
402402{
403403   state_save_register_global(machine, neogeo_rng);
404404
405   memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), addr1, addr1 + 1, 0, 0, sma_random_r);
406   memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), addr2, addr2 + 1, 0, 0, sma_random_r);
405   memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), addr1, addr1 + 1, 0, 0, sma_random_r);
406   memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), addr2, addr2 + 1, 0, 0, sma_random_r);
407407}
408408
409409
410410void kof99_install_protection(running_machine *machine)
411411{
412   memory_install_write16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x2ffff0, 0x2ffff1, 0, 0, kof99_bankswitch_w);
413   memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x2fe446, 0x2fe447, 0, 0, prot_9a37_r);
412   memory_install_write16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x2ffff0, 0x2ffff1, 0, 0, kof99_bankswitch_w);
413   memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x2fe446, 0x2fe447, 0, 0, prot_9a37_r);
414414
415415   sma_install_random_read_handler(machine, 0x2ffff8, 0x2ffffa);
416416}
r4679r4680
418418
419419void garou_install_protection(running_machine *machine)
420420{
421   memory_install_write16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x2fffc0, 0x2fffc1, 0, 0, garou_bankswitch_w);
422   memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x2fe446, 0x2fe447, 0, 0, prot_9a37_r);
421   memory_install_write16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x2fffc0, 0x2fffc1, 0, 0, garou_bankswitch_w);
422   memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x2fe446, 0x2fe447, 0, 0, prot_9a37_r);
423423
424424   sma_install_random_read_handler(machine, 0x2fffcc, 0x2ffff0);
425425}
r4679r4680
427427
428428void garouo_install_protection(running_machine *machine)
429429{
430   memory_install_write16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x2fffc0, 0x2fffc1, 0, 0, garouo_bankswitch_w);
431   memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x2fe446, 0x2fe447, 0, 0, prot_9a37_r);
430   memory_install_write16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x2fffc0, 0x2fffc1, 0, 0, garouo_bankswitch_w);
431   memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x2fe446, 0x2fe447, 0, 0, prot_9a37_r);
432432
433433   sma_install_random_read_handler(machine, 0x2fffcc, 0x2ffff0);
434434}
r4679r4680
436436
437437void mslug3_install_protection(running_machine *machine)
438438{
439   memory_install_write16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x2fffe4, 0x2fffe5, 0, 0, mslug3_bankswitch_w);
440   memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x2fe446, 0x2fe447, 0, 0, prot_9a37_r);
439   memory_install_write16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x2fffe4, 0x2fffe5, 0, 0, mslug3_bankswitch_w);
440   memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x2fe446, 0x2fe447, 0, 0, prot_9a37_r);
441441
442442//  sma_install_random_read_handler(machine, 0x2ffff8, 0x2ffffa);
443443}
r4679r4680
445445
446446void kof2000_install_protection(running_machine *machine)
447447{
448   memory_install_write16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x2fffec, 0x2fffed, 0, 0, kof2000_bankswitch_w);
449   memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x2fe446, 0x2fe447, 0, 0, prot_9a37_r);
448   memory_install_write16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x2fffec, 0x2fffed, 0, 0, kof2000_bankswitch_w);
449   memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x2fe446, 0x2fe447, 0, 0, prot_9a37_r);
450450
451451   sma_install_random_read_handler(machine, 0x2fffd8, 0x2fffda);
452452}
r4679r4680
521521
522522void install_pvc_protection( running_machine *machine )
523523{
524   pvc_cartridge_ram = auto_malloc(0x2000);
524   pvc_cartridge_ram = auto_alloc_array(machine, UINT16, 0x2000/2);
525525   state_save_register_global_pointer(machine, pvc_cartridge_ram, 0x2000 / 2);
526526
527   memory_install_readwrite16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x2fe000, 0x2fffff, 0, 0, pvc_prot_r, pvc_prot_w);
527   memory_install_readwrite16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x2fe000, 0x2fffff, 0, 0, pvc_prot_r, pvc_prot_w);
528528}
src/mame/machine/atarigen.c
r4679r4680
321321
322322static TIMER_CALLBACK( scanline_interrupt_callback )
323323{
324   const device_config *screen = ptr;
324   const device_config *screen = (const device_config *)ptr;
325325   emu_timer *timer = get_scanline_interrupt_timer_for_screen(screen);
326326
327327   /* generate the interrupt */
r4679r4680
556556      atarigen_slapstic = memory_install_readwrite16_handler(cpu_get_address_space(device, ADDRESS_SPACE_PROGRAM), base, base + 0x7fff, 0, mirror, atarigen_slapstic_r, atarigen_slapstic_w);
557557
558558      /* allocate memory for a copy of bank 0 */
559      atarigen_slapstic_bank0 = auto_malloc(0x2000);
559      atarigen_slapstic_bank0 = auto_alloc_array(device->machine, UINT8, 0x2000);
560560      memcpy(atarigen_slapstic_bank0, atarigen_slapstic, 0x2000);
561561
562562      /* ensure we recopy memory for the bank */
r4679r4680
984984
985985static TIMER_CALLBACK( scanline_timer_callback )
986986{
987   const device_config *screen = ptr;
987   const device_config *screen = (const device_config *)ptr;
988988   int scanline = param;
989989
990990   /* callback */
r4679r4680
10491049
10501050static TIMER_CALLBACK( atarivc_eof_update )
10511051{
1052   const device_config *screen = ptr;
1052   const device_config *screen = (const device_config *)ptr;
10531053   emu_timer *timer = get_atarivc_eof_update_timer_for_screen(screen);
10541054   int i;
10551055
r4679r4680
15841584
15851585void atarigen_swap_mem(void *ptr1, void *ptr2, int bytes)
15861586{
1587   UINT8 *p1 = ptr1;
1588   UINT8 *p2 = ptr2;
1587   UINT8 *p1 = (UINT8 *)ptr1;
1588   UINT8 *p2 = (UINT8 *)ptr2;
15891589   while (bytes--)
15901590   {
15911591      int temp = *p1;
r4679r4680
16081608   int c, x, y;
16091609
16101610   /* allocate memory for the assembled data */
1611   srcdata = auto_malloc(gx0->total_elements * gx0->width * gx0->height);
1611   srcdata = auto_alloc_array(machine, UINT8, gx0->total_elements * gx0->width * gx0->height);
16121612
16131613   /* loop over elements */
16141614   dest = srcdata;
src/mame/machine/zs01.c
r4679r4680
8181
8282   if( data == NULL )
8383   {
84      data = auto_malloc(
84      data = auto_alloc_array(machine, UINT8,
8585         SIZE_RESPONSE_TO_RESET +
8686         SIZE_KEY +
8787         SIZE_KEY +
r4679r4680
9090
9191   if( ds2401 == NULL )
9292   {
93      ds2401 = auto_malloc( SIZE_DATA_BUFFER );
93      ds2401 = auto_alloc_array(machine, UINT8, SIZE_DATA_BUFFER );
9494   }
9595
9696   c->cs = 0;
src/mame/machine/midwunit.c
r4679r4680
257257{
258258   /* only signal if not in loopback state */
259259   if (uart[1] != 0x66)
260      cpu_set_input_line(machine->cpu[0], 1, state ? ASSERT_LINE : CLEAR_LINE);
260      cputag_set_input_line(machine, "maincpu", 1, state ? ASSERT_LINE : CLEAR_LINE);
261261}
262262
263263
r4679r4680
466466DRIVER_INIT( umk3 )
467467{
468468   init_mk3_common(machine);
469   umk3_palette = memory_install_write16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x0106a060, 0x0106a09f, 0, 0, umk3_palette_hack_w);
469   umk3_palette = memory_install_write16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x0106a060, 0x0106a09f, 0, 0, umk3_palette_hack_w);
470470}
471471
472472DRIVER_INIT( umk3r11 )
473473{
474474   init_mk3_common(machine);
475   umk3_palette = memory_install_write16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x0106a060, 0x0106a09f, 0, 0, umk3_palette_hack_w);
475   umk3_palette = memory_install_write16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x0106a060, 0x0106a09f, 0, 0, umk3_palette_hack_w);
476476}
477477
478478
r4679r4680
557557   init_wunit_generic(machine);
558558
559559   /* enable I/O shuffling */
560   memory_install_write16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x01800000, 0x0180000f, 0, 0, wwfmania_io_0_w);
560   memory_install_write16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x01800000, 0x0180000f, 0, 0, wwfmania_io_0_w);
561561
562562   /* serial prefixes 430, 528 */
563563   midway_serial_pic_init(machine, 528);
src/mame/machine/namcos2.c
r4679r4680
100100
101101MACHINE_START( namcos2 )
102102{
103   namcos2_eeprom = auto_malloc(namcos2_eeprom_size);
103   namcos2_eeprom = auto_alloc_array(machine, UINT8, namcos2_eeprom_size);
104104}
105105
106106MACHINE_RESET( namcos2 )
src/mame/machine/namco50.c
r4679r4680
254254
255255static TIMER_CALLBACK( namco_50xx_irq_clear )
256256{
257   const device_config *cpu = ptr;
257   const device_config *cpu = (const device_config *)ptr;
258258   cpu_set_input_line(cpu, 0, CLEAR_LINE);
259259}
260260
src/mame/machine/neocrypt.c
r4679r4680
537537
538538   rom_size = memory_region_length(machine, "sprites");
539539
540   buf = malloc_or_die(rom_size);
540   buf = alloc_array_or_die(UINT8, rom_size);
541541
542542   rom = memory_region(machine, "sprites");
543543
r4679r4680
674674/* ms5pcb and svcpcb have an additional scramble on top of the standard CMC scrambling */
675675void svcpcb_gfx_decrypt(running_machine *machine)
676676{
677   static const UINT8 xor[ 4 ] = { 0x34, 0x21, 0xc4, 0xe9 };
677   static const UINT8 xorval[ 4 ] = { 0x34, 0x21, 0xc4, 0xe9 };
678678   int i;
679679   int ofst;
680680   int rom_size = memory_region_length( machine, "sprites" );
681681   UINT8 *rom = memory_region( machine, "sprites" );
682   UINT8 *buf = malloc_or_die( rom_size );
682   UINT8 *buf = alloc_array_or_die(UINT8, rom_size );
683683
684684   for( i = 0; i < rom_size; i++ )
685685   {
686      rom[ i ] ^= xor[ (i % 4) ];
686      rom[ i ] ^= xorval[ (i % 4) ];
687687   }
688688   for( i = 0; i < rom_size; i += 4 )
689689   {
r4679r4680
724724/* Thanks to Razoola & Halrin for the info */
725725void kf2k3pcb_gfx_decrypt(running_machine *machine)
726726{
727   static const UINT8 xor[ 4 ] = { 0x34, 0x21, 0xc4, 0xe9 };
727   static const UINT8 xorval[ 4 ] = { 0x34, 0x21, 0xc4, 0xe9 };
728728   int i;
729729   int ofst;
730730   int rom_size = memory_region_length( machine, "sprites" );
731731   UINT8 *rom = memory_region( machine, "sprites" );
732   UINT8 *buf = malloc_or_die( rom_size );
732   UINT8 *buf = alloc_array_or_die(UINT8, rom_size );
733733
734734   for ( i = 0; i < rom_size; i++ )
735735   {
736      rom[ i ] ^= xor[ (i % 4) ];
736      rom[ i ] ^= xorval[ (i % 4) ];
737737   }
738738   for ( i = 0; i < rom_size; i+=4 )
739739   {
r4679r4680
891891   size_t rom_size = 0x80000;
892892   UINT8* rom2 = memory_region(machine, "audiocpu");
893893
894   UINT8* buffer = malloc_or_die(rom_size);
894   UINT8* buffer = alloc_array_or_die(UINT8, rom_size);
895895
896896   UINT32 i;
897897
r4679r4680
957957void kof98_decrypt_68k(running_machine *machine)
958958{
959959   UINT8 *src = memory_region(machine, "maincpu");
960   UINT8 *dst = malloc_or_die(0x200000);
960   UINT8 *dst = alloc_array_or_die(UINT8, 0x200000);
961961   int i, j, k;
962962   static const UINT32 sec[]={0x000000,0x100000,0x000004,0x100004,0x10000a,0x00000a,0x10000e,0x00000e};
963963   static const UINT32 pos[]={0x000,0x004,0x00a,0x00e};
r4679r4680
11741174   int i;
11751175   static const int sec[]={0x100000,0x280000,0x300000,0x180000,0x000000,0x380000,0x200000,0x080000};
11761176   UINT8 *src = memory_region(machine, "maincpu")+0x100000;
1177   UINT8 *dst = malloc_or_die(0x400000);
1177   UINT8 *dst = alloc_array_or_die(UINT8, 0x400000);
11781178      memcpy( dst, src, 0x400000 );
11791179      for( i=0; i<8; ++i )
11801180      {
r4679r4680
11891189   int i;
11901190   static const int sec[]={0x100000,0x280000,0x300000,0x180000,0x000000,0x380000,0x200000,0x080000};
11911191   UINT8 *src = memory_region(machine, "maincpu")+0x100000;
1192   UINT8 *dst = malloc_or_die(0x400000);
1192   UINT8 *dst = alloc_array_or_die(UINT8, 0x400000);
11931193      memcpy( dst, src, 0x400000);
11941194      for( i=0; i<8; ++i )
11951195      {
r4679r4680
12041204   int i;
12051205   static const int sec[]={0x000000,0x080000,0x700000,0x680000,0x500000,0x180000,0x200000,0x480000,0x300000,0x780000,0x600000,0x280000,0x100000,0x580000,0x400000,0x380000};
12061206   UINT8 *src = memory_region(machine, "maincpu");
1207   UINT8 *dst = malloc_or_die(0x800000);
1207   UINT8 *dst = alloc_array_or_die(UINT8, 0x800000);
12081208
12091209      memcpy( dst, src, 0x800000 );
12101210      for( i=0; i<16; ++i )
r4679r4680
12201220   int i;
12211221   static const int sec[]={0x000000,0x080000,0x500000,0x480000,0x600000,0x580000,0x700000,0x280000,0x100000,0x680000,0x400000,0x780000,0x200000,0x380000,0x300000,0x180000};
12221222   UINT8 *src = memory_region(machine, "maincpu");
1223   UINT8 *dst = malloc_or_die(0x800000);
1223   UINT8 *dst = alloc_array_or_die(UINT8, 0x800000);
12241224
12251225      memcpy( dst, src, 0x800000 );
12261226      for( i=0; i<16; ++i )
r4679r4680
12401240   int ofst;
12411241   int rom_size = 0x800000;
12421242   UINT8 *rom = memory_region( machine, "maincpu" );
1243   UINT8 *buf = malloc_or_die( rom_size );
1243   UINT8 *buf = alloc_array_or_die(UINT8, rom_size );
12441244
12451245   for( i = 0; i < 0x100000; i++ )
12461246   {
r4679r4680
12851285   int ofst;
12861286   int rom_size = 0x800000;
12871287   UINT8 *rom = memory_region( machine, "maincpu" );
1288   UINT8 *buf = malloc_or_die( rom_size );
1288   UINT8 *buf = alloc_array_or_die(UINT8, rom_size );
12891289
12901290   for( i = 0; i < 0x100000; i++ )
12911291   {
r4679r4680
13291329   int ofst;
13301330   int rom_size = 0x900000;
13311331   UINT8 *rom = memory_region( machine, "maincpu" );
1332   UINT8 *buf = malloc_or_die( rom_size );
1332   UINT8 *buf = alloc_array_or_die(UINT8, rom_size );
13331333
13341334   for (i = 0; i < 0x100000; i++)
13351335   {
r4679r4680
13721372   int ofst;
13731373   int rom_size = 0x900000;
13741374   UINT8 *rom = memory_region( machine, "maincpu" );
1375   UINT8 *buf = malloc_or_die( rom_size );
1375   UINT8 *buf = alloc_array_or_die(UINT8, rom_size );
13761376
13771377   for (i = 0; i < 0x100000; i++)
13781378   {
r4679r4680
14201420   int ofst;
14211421   int rom_size = 0x900000;
14221422   UINT8 *rom = memory_region( machine, "maincpu" );
1423   UINT8 *buf = malloc_or_die( rom_size );
1423   UINT8 *buf = alloc_array_or_die(UINT8, rom_size );
14241424
14251425   for (i = 0; i < 0x100000; i++)
14261426   {
r4679r4680
14751475
14761476   if( rom != NULL )
14771477   {   /* swap address lines on the whole ROMs */
1478      UINT16 *buffer = malloc_or_die((value / 2) * sizeof(UINT16));
1478      UINT16 *buffer = alloc_array_or_die(UINT16, value / 2);
14791479
14801480      for( i = 0; i < size / 2; i += ( value / 2 ) )
14811481      {
r4679r4680
15101510      {0x4b,0xa4,0x63,0x46,0xf0,0x91,0xea,0x62},
15111511      {0x4b,0xa4,0x63,0x46,0xf0,0x91,0xea,0x62}};
15121512   UINT8 *src = memory_region(machine, "ym");
1513   UINT8 *buf = malloc_or_die(0x1000000);
1513   UINT8 *buf = alloc_array_or_die(UINT8, 0x1000000);
15141514   int i, j, d;
15151515
15161516   memcpy(buf,src,0x1000000);
r4679r4680
15541554      0xd3,0xd2,0x5c,0x5d,0x57,0x56,0xd8,0xd9,
15551555   };
15561556   UINT16*src= (UINT16*)memory_region( machine, "mainbios" );
1557   UINT16*buf= malloc_or_die(0x80000);
1557   UINT16*buf= alloc_array_or_die(UINT16, 0x80000/2);
15581558   int   a,addr;
15591559
15601560      for (a=0;a<0x80000/2;a++)
src/mame/machine/naomibd.c
r4679r4680
112112
113113int naomibd_interrupt_callback(const device_config *device, naomibd_interrupt_func callback)
114114{
115   naomibd_config *config = device->inline_config;
115   naomibd_config *config = (naomibd_config *)device->inline_config;
116116   //naomibd_state *v = get_safe_token(device);
117117
118118   config->interrupt = callback;
r4679r4680
522522
523523static DEVICE_START( naomibd )
524524{
525   const naomibd_config *config = device->inline_config;
525   const naomibd_config *config = (const naomibd_config *)device->inline_config;
526526   naomibd_state *v = get_safe_token(device);
527527
528528   /* validate some basic stuff */
r4679r4680
618618}
619619
620620/*-------------------------------------------------
621    device set info callback
622-------------------------------------------------*/
623
624static DEVICE_SET_INFO( naomibd )
625{
626   switch (state)
627   {
628      /* no parameters to set yet */
629   }
630}
631
632
633/*-------------------------------------------------
634621    device get info callback
635622-------------------------------------------------*/
636623
637624DEVICE_GET_INFO( naomibd )
638625{
639   const naomibd_config *config = (device != NULL) ? device->inline_config : NULL;
626   const naomibd_config *config = (device != NULL) ? (const naomibd_config *)device->inline_config : NULL;
640627   switch (state)
641628   {
642629      /* --- the following bits of info are returned as 64-bit signed integers --- */
r4679r4680
651638      case DEVINFO_PTR_MEMORY:            info->p = get_safe_token(device)->memory;      break;
652639
653640      /* --- the following bits of info are returned as pointers to data or functions --- */
654      case DEVINFO_FCT_SET_INFO:            info->set_info = DEVICE_SET_INFO_NAME(naomibd); break;
655641      case DEVINFO_FCT_START:               info->start = DEVICE_START_NAME(naomibd);      break;
656642      case DEVINFO_FCT_STOP:               info->stop = DEVICE_STOP_NAME(naomibd);         break;
657643      case DEVINFO_FCT_RESET:               info->reset = DEVICE_RESET_NAME(naomibd);      break;
src/mame/machine/tx1.c
r4679r4680
174174   if (SN74S516.X == 0)
175175   {
176176      mame_printf_debug("%s:SN74S516 tried to divide by zero\n", cpuexec_describe_context(machine));
177      SN74S516.ZW.Z = 0xffff;
177      SN74S516.ZW.Z = (INT16)0xffff;
178178      SN74S516.ZW.W = 0xffff;
179179      SN74S516.ZWfl = 0;
180180      return;
r4679r4680
402402   }
403403
404404   math.dbgaddr = math.promaddr;
405   math.dbgpc = cpu_get_previouspc(machine->cpu[1]);
405   math.dbgpc = cpu_get_previouspc(cputag_get_cpu(machine, "math_cpu"));
406406}
407407
408408
src/mame/machine/cclimber.c
r4679r4680
88{
99   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
1010   UINT8 *rom = memory_region(machine, "maincpu");
11   UINT8 *decrypt = auto_malloc(0x10000);
11   UINT8 *decrypt = auto_alloc_array(machine, UINT8, 0x10000);
1212   int A;
1313
1414   memory_set_decrypted_region(space, 0x0000, 0xffff, decrypt);
src/mame/machine/s24fd.c
r4679r4680
9090}
9191
9292/* Callback for CMP.L instructions (state change) */
93static void s24_fd1094_cmp_callback(const device_config *device, UINT32 val, int reg)
93static void s24_fd1094_cmp_callback(const device_config *device, UINT32 val, UINT8 reg)
9494{
9595   if (reg == 0 && (val & 0x0000ffff) == 0x0000ffff) // ?
9696   {
r4679r4680
131131   s24_fd1094_setstate_and_decrypt(machine, FD1094_STATE_RESET);
132132   s24_fd1094_kludge_reset_values();
133133
134   device_set_info_fct(machine->cpu[1], CPUINFO_FCT_M68K_CMPILD_CALLBACK, (genf *)s24_fd1094_cmp_callback);
135   device_set_info_fct(machine->cpu[1], CPUINFO_FCT_M68K_RTE_CALLBACK, (genf *)s24_fd1094_rte_callback);
134   m68k_set_cmpild_callback(machine->cpu[1], s24_fd1094_cmp_callback);
135   m68k_set_rte_callback(machine->cpu[1], s24_fd1094_rte_callback);
136136   cpu_set_irq_callback(machine->cpu[1], s24_fd1094_int_callback);
137137
138138   device_reset(machine->cpu[1]);
r4679r4680
167167
168168   for (i=0;i<S16_NUMCACHE;i++)
169169   {
170      s24_fd1094_cacheregion[i]=auto_malloc(s24_fd1094_cpuregionsize);
170      s24_fd1094_cacheregion[i]=auto_alloc_array(machine, UINT16, s24_fd1094_cpuregionsize/2);
171171   }
172172
173173   /* flush the cached state array */
src/mame/machine/tatsumi.c
r4679r4680
4646
4747   COMBINE_DATA(&tatsumi_control_word);
4848
49   if (tatsumi_control_word&0x7f00)
49   if (tatsumi_control_word & 0x7f00)
5050   {
5151      logerror("Unknown control Word: %04x\n",tatsumi_control_word);
52      cpu_set_input_line(space->machine->cpu[3], INPUT_LINE_HALT, CLEAR_LINE); // ?
52      cputag_set_input_line(space->machine, "sub2", INPUT_LINE_HALT, CLEAR_LINE); // ?
5353   }
5454
55   if (tatsumi_control_word&0x10)
56      cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_HALT, ASSERT_LINE);
55   if (tatsumi_control_word & 0x10)
56      cputag_set_input_line(space->machine, "sub", INPUT_LINE_HALT, ASSERT_LINE);
5757   else
58      cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_HALT, CLEAR_LINE);
58      cputag_set_input_line(space->machine, "sub", INPUT_LINE_HALT, CLEAR_LINE);
5959
60   if (tatsumi_control_word&0x80)
61      cpu_set_input_line(space->machine->cpu[2], INPUT_LINE_HALT, ASSERT_LINE);
60   if (tatsumi_control_word & 0x80)
61      cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_HALT, ASSERT_LINE);
6262   else
63      cpu_set_input_line(space->machine->cpu[2], INPUT_LINE_HALT, CLEAR_LINE);
63      cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_HALT, CLEAR_LINE);
6464
6565   tatsumi_last_control=tatsumi_control_word;
6666}
r4679r4680
6969// D0 = /GRDACC - Allow 68000 access to road pattern RAM
7070WRITE16_HANDLER( apache3_z80_ctrl_w )
7171{
72   cpu_set_input_line(space->machine->cpu[3], INPUT_LINE_HALT, data & 2 ? ASSERT_LINE : CLEAR_LINE);
72   cputag_set_input_line(space->machine, "sub2", INPUT_LINE_HALT, data & 2 ? ASSERT_LINE : CLEAR_LINE);
7373}
7474
7575READ16_HANDLER( apache3_v30_v20_r )
7676{
77   const address_space *targetspace = cpu_get_address_space(space->machine->cpu[2], ADDRESS_SPACE_PROGRAM);
77   const address_space *targetspace = cputag_get_address_space(space->machine, "audiocpu", ADDRESS_SPACE_PROGRAM);
7878
7979   /* Each V20 byte maps to a V30 word */
80   if ((tatsumi_control_word&0xe0)==0xe0)
81      offset+=0xf8000; /* Upper half */
82   else if ((tatsumi_control_word&0xe0)==0xc0)
83      offset+=0xf0000;
84   else if ((tatsumi_control_word&0xe0)==0x80)
85      offset+=0x00000; // main ram
80   if ((tatsumi_control_word & 0xe0) == 0xe0)
81      offset += 0xf8000; /* Upper half */
82   else if ((tatsumi_control_word & 0xe0) == 0xc0)
83      offset += 0xf0000;
84   else if ((tatsumi_control_word & 0xe0) == 0x80)
85      offset += 0x00000; // main ram
8686   else
87      logerror("%08x: unmapped read z80 rom %08x\n",cpu_get_pc(space->cpu),offset);
87      logerror("%08x: unmapped read z80 rom %08x\n", cpu_get_pc(space->cpu), offset);
8888   return 0xff00 | memory_read_byte(targetspace, offset);
8989}
9090
9191WRITE16_HANDLER( apache3_v30_v20_w )
9292{
93   const address_space *targetspace = cpu_get_address_space(space->machine->cpu[2], ADDRESS_SPACE_PROGRAM);
93   const address_space *targetspace = cputag_get_address_space(space->machine, "audiocpu", ADDRESS_SPACE_PROGRAM);
9494
95   if ((tatsumi_control_word&0xe0)!=0x80)
96      logerror("%08x: write unmapped v30 rom %08x\n",cpu_get_pc(space->cpu),offset);
95   if ((tatsumi_control_word & 0xe0) != 0x80)
96      logerror("%08x: write unmapped v30 rom %08x\n", cpu_get_pc(space->cpu), offset);
9797
9898   /* Only 8 bits of the V30 data bus are connected - ignore writes to the other half */
9999   if (ACCESSING_BITS_0_7)
100100   {
101      memory_write_byte(targetspace, offset, data&0xff);
101      memory_write_byte(targetspace, offset, data & 0xff);
102102   }
103103}
104104
r4679r4680
109109
110110WRITE16_HANDLER( apache3_z80_w )
111111{
112   apache3_z80_ram[offset]=data&0xff;
112   apache3_z80_ram[offset] = data & 0xff;
113113}
114114
115115READ8_HANDLER( apache3_adc_r )
r4679r4680
150150
151151READ16_HANDLER( roundup_v30_z80_r )
152152{
153   const address_space *targetspace = cpu_get_address_space(space->machine->cpu[2], ADDRESS_SPACE_PROGRAM);
153   const address_space *targetspace = cputag_get_address_space(space->machine, "audiocpu", ADDRESS_SPACE_PROGRAM);
154154
155155   /* Each Z80 byte maps to a V30 word */
156   if (tatsumi_control_word&0x20)
157      offset+=0x8000; /* Upper half */
156   if (tatsumi_control_word & 0x20)
157      offset += 0x8000; /* Upper half */
158158
159159   return 0xff00 | memory_read_byte(targetspace, offset);
160160}
161161
162162WRITE16_HANDLER( roundup_v30_z80_w )
163163{
164   const address_space *targetspace = cpu_get_address_space(space->machine->cpu[2], ADDRESS_SPACE_PROGRAM);
164   const address_space *targetspace = cputag_get_address_space(space->machine, "audiocpu", ADDRESS_SPACE_PROGRAM);
165165
166166   /* Only 8 bits of the V30 data bus are connected - ignore writes to the other half */
167167   if (ACCESSING_BITS_0_7)
168168   {
169      if (tatsumi_control_word&0x20)
170         offset+=0x8000; /* Upper half of Z80 address space */
169      if (tatsumi_control_word & 0x20)
170         offset += 0x8000; /* Upper half of Z80 address space */
171171
172      memory_write_byte(targetspace, offset, data&0xff);
172      memory_write_byte(targetspace, offset, data & 0xff);
173173   }
174174}
175175
r4679r4680
178178{
179179   COMBINE_DATA(&tatsumi_control_word);
180180
181   if (tatsumi_control_word&0x10)
182      cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_HALT, ASSERT_LINE);
181   if (tatsumi_control_word & 0x10)
182      cputag_set_input_line(space->machine, "sub", INPUT_LINE_HALT, ASSERT_LINE);
183183   else
184      cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_HALT, CLEAR_LINE);
184      cputag_set_input_line(space->machine, "sub", INPUT_LINE_HALT, CLEAR_LINE);
185185
186   if (tatsumi_control_word&0x4)
187      cpu_set_input_line(space->machine->cpu[2], INPUT_LINE_HALT, ASSERT_LINE);
186   if (tatsumi_control_word & 0x4)
187      cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_HALT, ASSERT_LINE);
188188   else
189      cpu_set_input_line(space->machine->cpu[2], INPUT_LINE_HALT, CLEAR_LINE);
189      cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_HALT, CLEAR_LINE);
190190
191//  if (offset==1 && (tatsumi_control_w&0xfeff)!=(last_bank&0xfeff))
192//      logerror("%08x:  Changed bank to %04x (%d)\n",cpu_get_pc(space->cpu),tatsumi_control_w,offset);
191//  if (offset == 1 && (tatsumi_control_w & 0xfeff) != (last_bank & 0xfeff))
192//      logerror("%08x:  Changed bank to %04x (%d)\n", cpu_get_pc(space->cpu), tatsumi_control_w,offset);
193193
194194//todo - watchdog
195195
r4679r4680
211211        Changed bank to 0060 (0)
212212    */
213213
214   if ((tatsumi_control_word&0x8)==0 && !(tatsumi_last_control&0x8))
215      cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_IRQ4, ASSERT_LINE);
214   if ((tatsumi_control_word & 0x8) == 0 && !(tatsumi_last_control & 0x8))
215      cputag_set_input_line(space->machine, "sub", INPUT_LINE_IRQ4, ASSERT_LINE);
216216//  if (tatsumi_control_w&0x200)
217217//      cpu_set_reset_line(1, CLEAR_LINE);
218218//  else
r4679r4680
223223//  if ((tatsumi_control_w&0x200)==0 && (last_bank&0x200)==0x200)
224224//      logerror("68k reset\n");
225225
226   if (tatsumi_control_word==0x3a00) {
226   if (tatsumi_control_word == 0x3a00)
227   {
227228//      cpu_set_reset_line(1, CLEAR_LINE);
228   //  logerror("68k on\n");
229
229//      logerror("68k on\n");
230230   }
231231
232   tatsumi_last_control=tatsumi_control_word;
232   tatsumi_last_control = tatsumi_control_word;
233233}
234234
235235WRITE16_HANDLER( roundup5_d0000_w )
236236{
237237   COMBINE_DATA(&roundup5_d0000_ram[offset]);
238//  logerror("d_68k_d0000_w %06x %04x\n",cpu_get_pc(space->cpu),data);
238//  logerror("d_68k_d0000_w %06x %04x\n", cpu_get_pc(space->cpu), data);
239239}
240240
241241WRITE16_HANDLER( roundup5_e0000_w )
r4679r4680
245245    */
246246
247247   COMBINE_DATA(&roundup5_e0000_ram[offset]);
248   cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_IRQ4, CLEAR_LINE); // guess, probably wrong
248   cputag_set_input_line(space->machine, "sub", INPUT_LINE_IRQ4, CLEAR_LINE); // guess, probably wrong
249249
250//  logerror("d_68k_e0000_w %06x %04x\n",cpu_get_pc(space->cpu),data);
250//  logerror("d_68k_e0000_w %06x %04x\n", cpu_get_pc(space->cpu), data);
251251}
252252
253253/******************************************************************************/
254254
255255READ16_HANDLER(cyclwarr_control_r)
256256{
257//  logerror("%08x:  control_r\n",cpu_get_pc(space->cpu));
257//  logerror("%08x:  control_r\n", cpu_get_pc(space->cpu));
258258   return tatsumi_control_word;
259259}
260260
r4679r4680
262262{
263263   COMBINE_DATA(&tatsumi_control_word);
264264
265//  if ((tatsumi_control_word&0xfe)!=(tatsumi_last_control&0xfe))
266//      logerror("%08x:  control_w %04x\n",cpu_get_pc(space->cpu),data);
265//  if ((tatsumi_control_word&0xfe) != (tatsumi_last_control&0xfe))
266//      logerror("%08x:  control_w %04x\n", cpu_get_pc(space->cpu), data);
267267
268268/*
269269
r4679r4680
274274
275275*/
276276
277   if ((tatsumi_control_word&4)==4 && (tatsumi_last_control&4)==0) {
277   if ((tatsumi_control_word & 4) == 4 && (tatsumi_last_control & 4) == 0)
278   {
278279//      logerror("68k 2 halt\n");
279      cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_HALT, ASSERT_LINE);
280      cputag_set_input_line(space->machine, "sub", INPUT_LINE_HALT, ASSERT_LINE);
280281   }
281282
282   if ((tatsumi_control_word&4)==0 && (tatsumi_last_control&4)==4) {
283   if ((tatsumi_control_word & 4) == 0 && (tatsumi_last_control & 4) == 4)
284   {
283285//      logerror("68k 2 irq go\n");
284      cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_HALT, CLEAR_LINE);
286      cputag_set_input_line(space->machine, "sub", INPUT_LINE_HALT, CLEAR_LINE);
285287   }
286288
287289
288290   // hack
289   if (cpu_get_pc(space->cpu)==0x2c3c34) {
291   if (cpu_get_pc(space->cpu) == 0x2c3c34)
292   {
290293//      cpu_set_reset_line(1, CLEAR_LINE);
291   //  logerror("hack 68k2 on\n");
294//      logerror("hack 68k2 on\n");
292295   }
293296
294   tatsumi_last_control=tatsumi_control_word;
297   tatsumi_last_control = tatsumi_control_word;
295298}
296299
297300/******************************************************************************/
src/mame/machine/arkanoid.c
r4679r4680
131131
132132CUSTOM_INPUT( arkanoid_input_mux )
133133{
134   const char *tag1 = param;
134   const char *tag1 = (const char *)param;
135135   const char *tag2 = tag1 + strlen(tag1) + 1;
136136   return input_port_read(field->port->machine, (arkanoid_paddle_select == 0) ? tag1 : tag2);
137137}
src/mame/machine/archimds.c
r4679r4680
5454
5555   if (ioc_regs[6] & mask)
5656   {
57      cpu_set_input_line(machine->cpu[0], ARM_IRQ_LINE, ASSERT_LINE);
57      cputag_set_input_line(machine, "maincpu", ARM_IRQ_LINE, ASSERT_LINE);
5858   }
5959}
6060
r4679r4680
6464
6565   if (ioc_regs[10] & mask)
6666   {
67      cpu_set_input_line(machine->cpu[0], ARM_IRQ_LINE, PULSE_LINE);
67      cputag_set_input_line(machine, "maincpu", ARM_IRQ_LINE, PULSE_LINE);
6868   }
6969}
7070
r4679r4680
7474
7575   if (ioc_regs[14] & mask)
7676   {
77      cpu_set_input_line(machine->cpu[0], ARM_FIRQ_LINE, PULSE_LINE);
77      cputag_set_input_line(machine, "maincpu", ARM_FIRQ_LINE, PULSE_LINE);
7878   }
7979}
8080
r4679r4680
265265
266266void archimedes_driver_init(running_machine *machine)
267267{
268   memory_set_direct_update_handler( cpu_get_address_space( machine->cpu[0], ADDRESS_SPACE_PROGRAM ), a310_setopbase);
268   memory_set_direct_update_handler( cputag_get_address_space( machine, "maincpu", ADDRESS_SPACE_PROGRAM ), a310_setopbase);
269269}
270270
271271static const char *const ioc_regnames[] =
r4679r4680
382382            // if that did it, clear the IRQ
383383            if (ioc_regs[4] == 0)
384384            {
385               cpu_set_input_line(space->machine->cpu[0], ARM_IRQ_LINE, CLEAR_LINE);
385               cputag_set_input_line(space->machine, "maincpu", ARM_IRQ_LINE, CLEAR_LINE);
386386            }
387387            break;
388388
src/mame/machine/galaxold.c
r4679r4680
311311   offs_t i;
312312   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
313313   UINT8 *rom = memory_region(machine, "maincpu");
314   UINT8 *decrypt = auto_malloc(0x8000);
314   UINT8 *decrypt = auto_alloc_array(machine, UINT8, 0x8000);
315315
316316   memory_set_decrypted_region(space, 0x0000, 0x7fff, decrypt);
317317
src/mame/machine/retofinv.c
r4679r4680
5757   if ((ddrB & 0x02) && (~data & 0x02) && (portB_out & 0x02))
5858   {
5959      portA_in = from_main;
60      if (main_sent) cpu_set_input_line(space->machine->cpu[3],0,CLEAR_LINE);
60      if (main_sent) cputag_set_input_line(space->machine, "68705", 0, CLEAR_LINE);
6161      main_sent = 0;
6262//logerror("read command %02x from main cpu\n",portA_in);
6363   }
r4679r4680
114114logerror("%04x: mcu_w %02x\n",cpu_get_pc(space->cpu),data);
115115   from_main = data;
116116   main_sent = 1;
117   cpu_set_input_line(space->machine->cpu[3],0,ASSERT_LINE);
117   cputag_set_input_line(space->machine, "68705", 0, ASSERT_LINE);
118118}
119119
120120READ8_HANDLER( retofinv_mcu_r )
src/mame/machine/slikshot.c
r4679r4680
506506
507507   /* this is a big kludge: only allow a reset if the Z80 is stopped */
508508   /* at its endpoint; otherwise, we never get a result from the Z80 */
509   if ((data & 0x10) || cpu_get_reg(machine->cpu[2], Z80_PC) == 0x13a)
509   if ((data & 0x10) || cpu_get_reg(cputag_get_cpu(machine, "sub"), Z80_PC) == 0x13a)
510510   {
511      cpu_set_input_line(machine->cpu[2], INPUT_LINE_RESET, (data & 0x10) ? CLEAR_LINE : ASSERT_LINE);
511      cputag_set_input_line(machine, "sub", INPUT_LINE_RESET, (data & 0x10) ? CLEAR_LINE : ASSERT_LINE);
512512
513513      /* on the rising edge, make the crosshair visible again */
514514      if ((data & 0x10) && !(z80_ctrl & 0x10))
src/mame/machine/snesdsp1.c
r4679r4680
4040        unsigned int writes;
4141};
4242
43static const struct DSP1_Command mCommandTable[0x40];
44static const INT16 DSP1_MaxAZS_Exp[16];
45static const INT16 DSP1_SinTable[256];
46static const INT16 DSP1_MulTable[256];
43
44//////////////////////////////////////////////////////////////////
45
46// Data ROM, as logged from a DSP-1B with the 0x1f command;
47// it contains the tables and constants used by the commands.
48// The tables used are: two shift tables (0x022-0x031 and 0x031-0x040 -this last one
49// with an error in 0x03c which has survived to all the DSP-1 revisions-); a inverse
50// table (used as initial guess) at 0x065-0x0e4; a square root table (used also
51// as initial guess) at 0x0e5-0x115; two sin and cos tables (used as nodes to construct
52// a interpolation curve) at, respectively, 0x116-0x197 and 0x196-0x215.
53// As a curiosity, in the positions 0x21c-0x31c it's contained a
54// 257-points arccos table that, apparently, have been not used anywhere
55// (maybe for the MaxAZS_Exp table?).
56
4757static UINT16 DSP1_DataRom[1024];
4858
4959static struct SharedData { // some RAM variables shared between commands
r4679r4680
121131
122132//////////////////////////////////////////////////////////////////
123133
134// The info on this table follows Overload's docs.
135
136static const struct DSP1_Command mCommandTable[0x40] =
137{
138   {&DSP1_multiply, 2, 1},   //0x00
139   {&DSP1_attitudeA, 4, 0},    //0x01
140   {&DSP1_parameter, 7, 4},   //0x02
141   {&DSP1_subjectiveA, 3, 3},    //0x03
142   {&DSP1_triangle, 2, 2},   //0x04
143   {&DSP1_attitudeA, 4, 0},   //0x01
144   {&DSP1_project, 3, 3},   //0x06
145   {&DSP1_memoryTest, 1, 1},   //0x0f
146   {&DSP1_radius, 3, 2},   //0x08
147   {&DSP1_objectiveA, 3, 3},   //0x0d
148   {&DSP1_raster, 1, 4},   // 0x0a. This will normally work in continuous mode
149   {&DSP1_scalarA, 3, 1},   //0x0b
150   {&DSP1_rotate, 3, 2},   //0x0c
151   {&DSP1_objectiveA, 3, 3},   //0x0d
152   {&DSP1_target, 2, 2},   //0x0e
153   {&DSP1_memoryTest, 1, 1},   //0x0f
154
155   {&DSP1_inverse, 2, 2},   //0x10
156   {&DSP1_attitudeB, 4, 0},   //0x11
157   {&DSP1_parameter, 7, 4},   //0x02
158   {&DSP1_subjectiveB, 3, 3},   //0x13
159   {&DSP1_gyrate, 6, 3},   //0x14
160   {&DSP1_attitudeB, 4, 0},   //0x11
161   {&DSP1_project, 3, 3},   //0x06
162   {&DSP1_memoryDump, 1, 1024},   //0x1f
163   {&DSP1_range, 4, 1},   //0x18
164   {&DSP1_objectiveB, 3, 3},   //0x1d
165   {0, 0, 0},   // 0x1a; the chip freezes
166   {&DSP1_scalarB, 3, 1},   //0x1b
167   {&DSP1_polar, 6, 3},   //0x1c
168   {&DSP1_objectiveB, 3, 3},   //0x1d
169   {&DSP1_target, 2, 2},   //0x0e
170   {&DSP1_memoryDump, 1, 1024},   //0x1f
171
172   {&DSP1_multiply2, 2, 1},   //0x20
173   {&DSP1_attitudeC, 4, 0},   //0x21
174   {&DSP1_parameter, 7, 4},   //0x02
175   {&DSP1_subjectiveC, 3, 3},   //0x23
176   {&DSP1_triangle, 2, 2},   //0x04
177   {&DSP1_attitudeC, 4, 0},   //0x21
178   {&DSP1_project, 3, 3},   //0x06
179   {&DSP1_memorySize, 1, 1},    //0x2f
180   {&DSP1_distance, 3, 1},   //0x28
181   {&DSP1_objectiveC, 3, 3},   //0x2d
182   {0, 0, 0},   // 0x1a; the chip freezes
183   {&DSP1_scalarC, 3, 1},   //0x2b
184   {&DSP1_rotate, 3, 2},   //0x0c
185   {&DSP1_objectiveC, 3, 3},   //0x2d
186   {&DSP1_target, 2, 2},   //0x0e
187   {&DSP1_memorySize, 1, 1},   //0x2f
188
189   {&DSP1_inverse, 2, 2},   //0x10
190   {&DSP1_attitudeA, 4, 0},   //0x01
191   {&DSP1_parameter, 7, 4},   //0x02
192   {&DSP1_subjectiveA, 3, 3},   //0x03
193   {&DSP1_gyrate, 6, 3},   //0x14
194   {&DSP1_attitudeA, 4, 0},   //0x01
195   {&DSP1_project, 3, 3},   //0x06
196   {&DSP1_memoryDump, 1, 1024},   //0x1f
197   {&DSP1_range2, 4, 1},   //0x38
198   {&DSP1_objectiveA, 3, 3},   //0x0d
199   {0, 0, 0},   // 0x1a; the chip freezes
200   {&DSP1_scalarA, 3, 1},   //0x0b
201   {&DSP1_polar, 6, 3},   //0x1c
202   {&DSP1_objectiveA, 3, 3},   //0x0d
203   {&DSP1_target, 2, 2},   //0x0e
204   {&DSP1_memoryDump, 1, 1024},   //0x1f
205};
206
207//////////////////////////////////////////////////////////////////
208
209static const INT16 DSP1_MaxAZS_Exp[16] = {
210   0x38b4, 0x38b7, 0x38ba, 0x38be, 0x38c0, 0x38c4, 0x38c7, 0x38ca,
211   0x38ce, 0x38d0, 0x38d4, 0x38d7, 0x38da, 0x38dd, 0x38e0, 0x38e4
212};
213
214//////////////////////////////////////////////////////////////////
215
216static const INT16 DSP1_SinTable[256] = {
217   0x0000,  0x0324,  0x0647,  0x096a,  0x0c8b,  0x0fab,  0x12c8,  0x15e2,
218   0x18f8,  0x1c0b,  0x1f19,  0x2223,  0x2528,  0x2826,  0x2b1f,  0x2e11,
219   0x30fb,  0x33de,  0x36ba,  0x398c,  0x3c56,  0x3f17,  0x41ce,  0x447a,
220   0x471c,  0x49b4,  0x4c3f,  0x4ebf,  0x5133,  0x539b,  0x55f5,  0x5842,
221   0x5a82,  0x5cb4,  0x5ed7,  0x60ec,  0x62f2,  0x64e8,  0x66cf,  0x68a6,
222   0x6a6d,  0x6c24,  0x6dca,  0x6f5f,  0x70e2,  0x7255,  0x73b5,  0x7504,
223   0x7641,  0x776c,  0x7884,  0x798a,  0x7a7d,  0x7b5d,  0x7c29,  0x7ce3,
224   0x7d8a,  0x7e1d,  0x7e9d,  0x7f09,  0x7f62,  0x7fa7,  0x7fd8,  0x7ff6,
225   0x7fff,  0x7ff6,  0x7fd8,  0x7fa7,  0x7f62,  0x7f09,  0x7e9d,  0x7e1d,
226   0x7d8a,  0x7ce3,  0x7c29,  0x7b5d,  0x7a7d,  0x798a,  0x7884,  0x776c,
227   0x7641,  0x7504,  0x73b5,  0x7255,  0x70e2,  0x6f5f,  0x6dca,  0x6c24,
228   0x6a6d,  0x68a6,  0x66cf,  0x64e8,  0x62f2,  0x60ec,  0x5ed7,  0x5cb4,
229   0x5a82,  0x5842,  0x55f5,  0x539b,  0x5133,  0x4ebf,  0x4c3f,  0x49b4,
230   0x471c,  0x447a,  0x41ce,  0x3f17,  0x3c56,  0x398c,  0x36ba,  0x33de,
231   0x30fb,  0x2e11,  0x2b1f,  0x2826,  0x2528,  0x2223,  0x1f19,  0x1c0b,
232   0x18f8,  0x15e2,  0x12c8,  0x0fab,  0x0c8b,  0x096a,  0x0647,  0x0324,
233   -0x0000, -0x0324, -0x0647, -0x096a, -0x0c8b, -0x0fab, -0x12c8, -0x15e2,
234   -0x18f8, -0x1c0b, -0x1f19, -0x2223, -0x2528, -0x2826, -0x2b1f, -0x2e11,
235   -0x30fb, -0x33de, -0x36ba, -0x398c, -0x3c56, -0x3f17, -0x41ce, -0x447a,
236   -0x471c, -0x49b4, -0x4c3f, -0x4ebf, -0x5133, -0x539b, -0x55f5, -0x5842,
237   -0x5a82, -0x5cb4, -0x5ed7, -0x60ec, -0x62f2, -0x64e8, -0x66cf, -0x68a6,
238   -0x6a6d, -0x6c24, -0x6dca, -0x6f5f, -0x70e2, -0x7255, -0x73b5, -0x7504,
239   -0x7641, -0x776c, -0x7884, -0x798a, -0x7a7d, -0x7b5d, -0x7c29, -0x7ce3,
240   -0x7d8a, -0x7e1d, -0x7e9d, -0x7f09, -0x7f62, -0x7fa7, -0x7fd8, -0x7ff6,
241   -0x7fff, -0x7ff6, -0x7fd8, -0x7fa7, -0x7f62, -0x7f09, -0x7e9d, -0x7e1d,
242   -0x7d8a, -0x7ce3, -0x7c29, -0x7b5d, -0x7a7d, -0x798a, -0x7884, -0x776c,
243   -0x7641, -0x7504, -0x73b5, -0x7255, -0x70e2, -0x6f5f, -0x6dca, -0x6c24,
244   -0x6a6d, -0x68a6, -0x66cf, -0x64e8, -0x62f2, -0x60ec, -0x5ed7, -0x5cb4,
245   -0x5a82, -0x5842, -0x55f5, -0x539b, -0x5133, -0x4ebf, -0x4c3f, -0x49b4,
246   -0x471c, -0x447a, -0x41ce, -0x3f17, -0x3c56, -0x398c, -0x36ba, -0x33de,
247   -0x30fb, -0x2e11, -0x2b1f, -0x2826, -0x2528, -0x2223, -0x1f19, -0x1c0b,
248   -0x18f8, -0x15e2, -0x12c8, -0x0fab, -0x0c8b, -0x096a, -0x0647, -0x0324};
249
250   //////////////////////////////////////////////////////////////////
251
252// Optimised for Performance
253static const INT16 DSP1_MulTable[256] = {
254      0x0000,  0x0003,  0x0006,  0x0009,  0x000c,  0x000f,  0x0012,  0x0015,
255      0x0019,  0x001c,  0x001f,  0x0022,  0x0025,  0x0028,  0x002b,  0x002f,
256      0x0032,  0x0035,  0x0038,  0x003b,  0x003e,  0x0041,  0x0045,  0x0048,
257      0x004b,  0x004e,  0x0051,  0x0054,  0x0057,  0x005b,  0x005e,  0x0061,
258      0x0064,  0x0067,  0x006a,  0x006d,  0x0071,  0x0074,  0x0077,  0x007a,
259      0x007d,  0x0080,  0x0083,  0x0087,  0x008a,  0x008d,  0x0090,  0x0093,
260      0x0096,  0x0099,  0x009d,  0x00a0,  0x00a3,  0x00a6,  0x00a9,  0x00ac,
261      0x00af,  0x00b3,  0x00b6,  0x00b9,  0x00bc,  0x00bf,  0x00c2,  0x00c5,
262      0x00c9,  0x00cc,  0x00cf,  0x00d2,  0x00d5,  0x00d8,  0x00db,  0x00df,
263      0x00e2,  0x00e5,  0x00e8,  0x00eb,  0x00ee,  0x00f1,  0x00f5,  0x00f8,
264      0x00fb,  0x00fe,  0x0101,  0x0104,  0x0107,  0x010b,  0x010e,  0x0111,
265      0x0114,  0x0117,  0x011a,  0x011d,  0x0121,  0x0124,  0x0127,  0x012a,
266      0x012d,  0x0130,  0x0133,  0x0137,  0x013a,  0x013d,  0x0140,  0x0143,
267      0x0146,  0x0149,  0x014d,  0x0150,  0x0153,  0x0156,  0x0159,  0x015c,
268      0x015f,  0x0163,  0x0166,  0x0169,  0x016c,  0x016f,  0x0172,  0x0175,
269      0x0178,  0x017c,  0x017f,  0x0182,  0x0185,  0x0188,  0x018b,  0x018e,
270      0x0192,  0x0195,  0x0198,  0x019b,  0x019e,  0x01a1,  0x01a4,  0x01a8,
271      0x01ab,  0x01ae,  0x01b1,  0x01b4,  0x01b7,  0x01ba,  0x01be,  0x01c1,
272      0x01c4,  0x01c7,  0x01ca,  0x01cd,  0x01d0,  0x01d4,  0x01d7,  0x01da,
273      0x01dd,  0x01e0,  0x01e3,  0x01e6,  0x01ea,  0x01ed,  0x01f0,  0x01f3,
274      0x01f6,  0x01f9,  0x01fc,  0x0200,  0x0203,  0x0206,  0x0209,  0x020c,
275      0x020f,  0x0212,  0x0216,  0x0219,  0x021c,  0x021f,  0x0222,  0x0225,
276      0x0228,  0x022c,  0x022f,  0x0232,  0x0235,  0x0238,  0x023b,  0x023e,
277      0x0242,  0x0245,  0x0248,  0x024b,  0x024e,  0x0251,  0x0254,  0x0258,
278      0x025b,  0x025e,  0x0261,  0x0264,  0x0267,  0x026a,  0x026e,  0x0271,
279      0x0274,  0x0277,  0x027a,  0x027d,  0x0280,  0x0284,  0x0287,  0x028a,
280      0x028d,  0x0290,  0x0293,  0x0296,  0x029a,  0x029d,  0x02a0,  0x02a3,
281      0x02a6,  0x02a9,  0x02ac,  0x02b0,  0x02b3,  0x02b6,  0x02b9,  0x02bc,
282      0x02bf,  0x02c2,  0x02c6,  0x02c9,  0x02cc,  0x02cf,  0x02d2,  0x02d5,
283      0x02d8,  0x02db,  0x02df,  0x02e2,  0x02e5,  0x02e8,  0x02eb,  0x02ee,
284      0x02f1,  0x02f5,  0x02f8,  0x02fb,  0x02fe,  0x0301,  0x0304,  0x0307,
285      0x030b,  0x030e,  0x0311,  0x0314,  0x0317,  0x031a,  0x031d,  0x0321};
286
287//////////////////////////////////////////////////////////////////
288
124289static UINT8 DSP1_getSr(void)
125290{
126291   mSrLowByteAccess = ~mSrLowByteAccess;
r4679r4680
294459
295460//////////////////////////////////////////////////////////////////
296461
297// The info on this table follows Overload's docs.
298
299static const struct DSP1_Command mCommandTable[0x40] =
300{
301   {&DSP1_multiply, 2, 1},   //0x00
302   {&DSP1_attitudeA, 4, 0},    //0x01
303   {&DSP1_parameter, 7, 4},   //0x02
304   {&DSP1_subjectiveA, 3, 3},    //0x03
305   {&DSP1_triangle, 2, 2},   //0x04
306   {&DSP1_attitudeA, 4, 0},   //0x01
307   {&DSP1_project, 3, 3},   //0x06
308   {&DSP1_memoryTest, 1, 1},   //0x0f
309   {&DSP1_radius, 3, 2},   //0x08
310   {&DSP1_objectiveA, 3, 3},   //0x0d
311   {&DSP1_raster, 1, 4},   // 0x0a. This will normally work in continuous mode
312   {&DSP1_scalarA, 3, 1},   //0x0b
313   {&DSP1_rotate, 3, 2},   //0x0c
314   {&DSP1_objectiveA, 3, 3},   //0x0d
315   {&DSP1_target, 2, 2},   //0x0e
316   {&DSP1_memoryTest, 1, 1},   //0x0f
317
318   {&DSP1_inverse, 2, 2},   //0x10
319   {&DSP1_attitudeB, 4, 0},   //0x11
320   {&DSP1_parameter, 7, 4},   //0x02
321   {&DSP1_subjectiveB, 3, 3},   //0x13
322   {&DSP1_gyrate, 6, 3},   //0x14
323   {&DSP1_attitudeB, 4, 0},   //0x11
324   {&DSP1_project, 3, 3},   //0x06
325   {&DSP1_memoryDump, 1, 1024},   //0x1f
326   {&DSP1_range, 4, 1},   //0x18
327   {&DSP1_objectiveB, 3, 3},   //0x1d
328   {0, 0, 0},   // 0x1a; the chip freezes
329   {&DSP1_scalarB, 3, 1},   //0x1b
330   {&DSP1_polar, 6, 3},   //0x1c
331   {&DSP1_objectiveB, 3, 3},   //0x1d
332   {&DSP1_target, 2, 2},   //0x0e
333   {&DSP1_memoryDump, 1, 1024},   //0x1f
334
335   {&DSP1_multiply2, 2, 1},   //0x20
336   {&DSP1_attitudeC, 4, 0},   //0x21
337   {&DSP1_parameter, 7, 4},   //0x02
338   {&DSP1_subjectiveC, 3, 3},   //0x23
339   {&DSP1_triangle, 2, 2},   //0x04
340   {&DSP1_attitudeC, 4, 0},   //0x21
341   {&DSP1_project, 3, 3},   //0x06
342   {&DSP1_memorySize, 1, 1},    //0x2f
343   {&DSP1_distance, 3, 1},   //0x28
344   {&DSP1_objectiveC, 3, 3},   //0x2d
345   {0, 0, 0},   // 0x1a; the chip freezes
346   {&DSP1_scalarC, 3, 1},   //0x2b
347   {&DSP1_rotate, 3, 2},   //0x0c
348   {&DSP1_objectiveC, 3, 3},   //0x2d
349   {&DSP1_target, 2, 2},   //0x0e
350   {&DSP1_memorySize, 1, 1},   //0x2f
351
352   {&DSP1_inverse, 2, 2},   //0x10
353   {&DSP1_attitudeA, 4, 0},   //0x01
354   {&DSP1_parameter, 7, 4},   //0x02
355   {&DSP1_subjectiveA, 3, 3},   //0x03
356   {&DSP1_gyrate, 6, 3},   //0x14
357   {&DSP1_attitudeA, 4, 0},   //0x01
358   {&DSP1_project, 3, 3},   //0x06
359   {&DSP1_memoryDump, 1, 1024},   //0x1f
360   {&DSP1_range2, 4, 1},   //0x38
361   {&DSP1_objectiveA, 3, 3},   //0x0d
362   {0, 0, 0},   // 0x1a; the chip freezes
363   {&DSP1_scalarA, 3, 1},   //0x0b
364   {&DSP1_polar, 6, 3},   //0x1c
365   {&DSP1_objectiveA, 3, 3},   //0x0d
366   {&DSP1_target, 2, 2},   //0x0e
367   {&DSP1_memoryDump, 1, 1024},   //0x1f
368};
369
370//////////////////////////////////////////////////////////////////
371
372462static void DSP1_memoryTest(INT16 *input, INT16 *output)
373463{
374464//   INT16 *Size = &input[0];
r4679r4680
9701060
9711061//////////////////////////////////////////////////////////////////
9721062
973static const INT16 DSP1_MaxAZS_Exp[16] = {
974   0x38b4, 0x38b7, 0x38ba, 0x38be, 0x38c0, 0x38c4, 0x38c7, 0x38ca,
975   0x38ce, 0x38d0, 0x38d4, 0x38d7, 0x38da, 0x38dd, 0x38e0, 0x38e4
976};
9771063
978//////////////////////////////////////////////////////////////////
979
980
9811064// Set-up the projection framework. Besides returning some values, it store in RAM some values that
9821065// will be used by the other three projection commands (raster, target an project)
9831066// Input:
r4679r4680
13361419
13371420   if (Angle < 0) {
13381421      if (Angle == -32768) return 0;
1339      return -sin(-Angle);
1422      return -sin((double)-Angle);
13401423   }
13411424   S = DSP1_SinTable[Angle >> 8] + (DSP1_MulTable[Angle & 0xff] * DSP1_SinTable[0x40 + (Angle >> 8)] >> 15);
13421425   if (S > 32767) S = 32767;
r4679r4680
15331616{
15341617   return (C * DSP1_DataRom[0x0031 + E] >> 15);
15351618}
1536
1537//////////////////////////////////////////////////////////////////
1538
1539static const INT16 DSP1_SinTable[256] = {
1540   0x0000,  0x0324,  0x0647,  0x096a,  0x0c8b,  0x0fab,  0x12c8,  0x15e2,
1541   0x18f8,  0x1c0b,  0x1f19,  0x2223,  0x2528,  0x2826,  0x2b1f,  0x2e11,
1542   0x30fb,  0x33de,  0x36ba,  0x398c,  0x3c56,  0x3f17,  0x41ce,  0x447a,
1543   0x471c,  0x49b4,  0x4c3f,  0x4ebf,  0x5133,  0x539b,  0x55f5,  0x5842,
1544   0x5a82,  0x5cb4,  0x5ed7,  0x60ec,  0x62f2,  0x64e8,  0x66cf,  0x68a6,
1545   0x6a6d,  0x6c24,  0x6dca,  0x6f5f,  0x70e2,  0x7255,  0x73b5,  0x7504,
1546   0x7641,  0x776c,  0x7884,  0x798a,  0x7a7d,  0x7b5d,  0x7c29,  0x7ce3,
1547   0x7d8a,  0x7e1d,  0x7e9d,  0x7f09,  0x7f62,  0x7fa7,  0x7fd8,  0x7ff6,
1548   0x7fff,  0x7ff6,  0x7fd8,  0x7fa7,  0x7f62,  0x7f09,  0x7e9d,  0x7e1d,
1549   0x7d8a,  0x7ce3,  0x7c29,  0x7b5d,  0x7a7d,  0x798a,  0x7884,  0x776c,
1550   0x7641,  0x7504,  0x73b5,  0x7255,  0x70e2,  0x6f5f,  0x6dca,  0x6c24,
1551   0x6a6d,  0x68a6,  0x66cf,  0x64e8,  0x62f2,  0x60ec,  0x5ed7,  0x5cb4,
1552   0x5a82,  0x5842,  0x55f5,  0x539b,  0x5133,  0x4ebf,  0x4c3f,  0x49b4,
1553   0x471c,  0x447a,  0x41ce,  0x3f17,  0x3c56,  0x398c,  0x36ba,  0x33de,
1554   0x30fb,  0x2e11,  0x2b1f,  0x2826,  0x2528,  0x2223,  0x1f19,  0x1c0b,
1555   0x18f8,  0x15e2,  0x12c8,  0x0fab,  0x0c8b,  0x096a,  0x0647,  0x0324,
1556   -0x0000, -0x0324, -0x0647, -0x096a, -0x0c8b, -0x0fab, -0x12c8, -0x15e2,
1557   -0x18f8, -0x1c0b, -0x1f19, -0x2223, -0x2528, -0x2826, -0x2b1f, -0x2e11,
1558   -0x30fb, -0x33de, -0x36ba, -0x398c, -0x3c56, -0x3f17, -0x41ce, -0x447a,
1559   -0x471c, -0x49b4, -0x4c3f, -0x4ebf, -0x5133, -0x539b, -0x55f5, -0x5842,
1560   -0x5a82, -0x5cb4, -0x5ed7, -0x60ec, -0x62f2, -0x64e8, -0x66cf, -0x68a6,
1561   -0x6a6d, -0x6c24, -0x6dca, -0x6f5f, -0x70e2, -0x7255, -0x73b5, -0x7504,
1562   -0x7641, -0x776c, -0x7884, -0x798a, -0x7a7d, -0x7b5d, -0x7c29, -0x7ce3,
1563   -0x7d8a, -0x7e1d, -0x7e9d, -0x7f09, -0x7f62, -0x7fa7, -0x7fd8, -0x7ff6,
1564   -0x7fff, -0x7ff6, -0x7fd8, -0x7fa7, -0x7f62, -0x7f09, -0x7e9d, -0x7e1d,
1565   -0x7d8a, -0x7ce3, -0x7c29, -0x7b5d, -0x7a7d, -0x798a, -0x7884, -0x776c,
1566   -0x7641, -0x7504, -0x73b5, -0x7255, -0x70e2, -0x6f5f, -0x6dca, -0x6c24,
1567   -0x6a6d, -0x68a6, -0x66cf, -0x64e8, -0x62f2, -0x60ec, -0x5ed7, -0x5cb4,
1568   -0x5a82, -0x5842, -0x55f5, -0x539b, -0x5133, -0x4ebf, -0x4c3f, -0x49b4,
1569   -0x471c, -0x447a, -0x41ce, -0x3f17, -0x3c56, -0x398c, -0x36ba, -0x33de,
1570   -0x30fb, -0x2e11, -0x2b1f, -0x2826, -0x2528, -0x2223, -0x1f19, -0x1c0b,
1571   -0x18f8, -0x15e2, -0x12c8, -0x0fab, -0x0c8b, -0x096a, -0x0647, -0x0324};
1572
1573   //////////////////////////////////////////////////////////////////
1574
1575// Optimised for Performance
1576static const INT16 DSP1_MulTable[256] = {
1577      0x0000,  0x0003,  0x0006,  0x0009,  0x000c,  0x000f,  0x0012,  0x0015,
1578      0x0019,  0x001c,  0x001f,  0x0022,  0x0025,  0x0028,  0x002b,  0x002f,
1579      0x0032,  0x0035,  0x0038,  0x003b,  0x003e,  0x0041,  0x0045,  0x0048,
1580      0x004b,  0x004e,  0x0051,  0x0054,  0x0057,  0x005b,  0x005e,  0x0061,
1581      0x0064,  0x0067,  0x006a,  0x006d,  0x0071,  0x0074,  0x0077,  0x007a,
1582      0x007d,  0x0080,  0x0083,  0x0087,  0x008a,  0x008d,  0x0090,  0x0093,
1583      0x0096,  0x0099,  0x009d,  0x00a0,  0x00a3,  0x00a6,  0x00a9,  0x00ac,
1584      0x00af,  0x00b3,  0x00b6,  0x00b9,  0x00bc,  0x00bf,  0x00c2,  0x00c5,
1585      0x00c9,  0x00cc,  0x00cf,  0x00d2,  0x00d5,  0x00d8,  0x00db,  0x00df,
1586      0x00e2,  0x00e5,  0x00e8,  0x00eb,  0x00ee,  0x00f1,  0x00f5,  0x00f8,
1587      0x00fb,  0x00fe,  0x0101,  0x0104,  0x0107,  0x010b,  0x010e,  0x0111,
1588      0x0114,  0x0117,  0x011a,  0x011d,  0x0121,  0x0124,  0x0127,  0x012a,
1589      0x012d,  0x0130,  0x0133,  0x0137,  0x013a,  0x013d,  0x0140,  0x0143,
1590      0x0146,  0x0149,  0x014d,  0x0150,  0x0153,  0x0156,  0x0159,  0x015c,
1591      0x015f,  0x0163,  0x0166,  0x0169,  0x016c,  0x016f,  0x0172,  0x0175,
1592      0x0178,  0x017c,  0x017f,  0x0182,  0x0185,  0x0188,  0x018b,  0x018e,
1593      0x0192,  0x0195,  0x0198,  0x019b,  0x019e,  0x01a1,  0x01a4,  0x01a8,
1594      0x01ab,  0x01ae,  0x01b1,  0x01b4,  0x01b7,  0x01ba,  0x01be,  0x01c1,
1595      0x01c4,  0x01c7,  0x01ca,  0x01cd,  0x01d0,  0x01d4,  0x01d7,  0x01da,
1596      0x01dd,  0x01e0,  0x01e3,  0x01e6,  0x01ea,  0x01ed,  0x01f0,  0x01f3,
1597      0x01f6,  0x01f9,  0x01fc,  0x0200,  0x0203,  0x0206,  0x0209,  0x020c,
1598      0x020f,  0x0212,  0x0216,  0x0219,  0x021c,  0x021f,  0x0222,  0x0225,
1599      0x0228,  0x022c,  0x022f,  0x0232,  0x0235,  0x0238,  0x023b,  0x023e,
1600      0x0242,  0x0245,  0x0248,  0x024b,  0x024e,  0x0251,  0x0254,  0x0258,
1601      0x025b,  0x025e,  0x0261,  0x0264,  0x0267,  0x026a,  0x026e,  0x0271,
1602      0x0274,  0x0277,  0x027a,  0x027d,  0x0280,  0x0284,  0x0287,  0x028a,
1603      0x028d,  0x0290,  0x0293,  0x0296,  0x029a,  0x029d,  0x02a0,  0x02a3,
1604      0x02a6,  0x02a9,  0x02ac,  0x02b0,  0x02b3,  0x02b6,  0x02b9,  0x02bc,
1605      0x02bf,  0x02c2,  0x02c6,  0x02c9,  0x02cc,  0x02cf,  0x02d2,  0x02d5,
1606      0x02d8,  0x02db,  0x02df,  0x02e2,  0x02e5,  0x02e8,  0x02eb,  0x02ee,
1607      0x02f1,  0x02f5,  0x02f8,  0x02fb,  0x02fe,  0x0301,  0x0304,  0x0307,
1608      0x030b,  0x030e,  0x0311,  0x0314,  0x0317,  0x031a,  0x031d,  0x0321};
1609
1610//////////////////////////////////////////////////////////////////
1611
1612// Data ROM, as logged from a DSP-1B with the 0x1f command;
1613// it contains the tables and constants used by the commands.
1614// The tables used are: two shift tables (0x022-0x031 and 0x031-0x040 -this last one
1615// with an error in 0x03c which has survived to all the DSP-1 revisions-); a inverse
1616// table (used as initial guess) at 0x065-0x0e4; a square root table (used also
1617// as initial guess) at 0x0e5-0x115; two sin and cos tables (used as nodes to construct
1618// a interpolation curve) at, respectively, 0x116-0x197 and 0x196-0x215.
1619// As a curiosity, in the positions 0x21c-0x31c it's contained a
1620// 257-points arccos table that, apparently, have been not used anywhere
1621// (maybe for the MaxAZS_Exp table?).
1622static UINT16 DSP1_DataRom[1024];
src/mame/machine/mathbox.c
r4679r4680
341341}
342342
343343
344static DEVICE_SET_INFO( mathbox )
345{
346   switch (state)
347   {
348      /* no parameters to set */
349   }
350}
351
352
353344DEVICE_GET_INFO( mathbox )
354345{
355346   switch (state)
r4679r4680
360351      case DEVINFO_INT_CLASS:                     info->i = DEVICE_CLASS_PERIPHERAL;      break;
361352
362353      /* --- the following bits of info are returned as pointers to data or functions --- */
363      case DEVINFO_FCT_SET_INFO:                  info->set_info = DEVICE_SET_INFO_NAME(mathbox); break;
364354      case DEVINFO_FCT_START:                     info->start = DEVICE_START_NAME(mathbox);break;
365355      case DEVINFO_FCT_STOP:                     /* Nothing */                     break;
366356      case DEVINFO_FCT_RESET:                     info->reset = DEVICE_RESET_NAME(mathbox);break;
src/mame/machine/harddriv.c
r4679r4680
157157{
158158   /* predetermine memory regions */
159159   sim_memory = (UINT16 *)memory_region(machine, "user1");
160   som_memory = (UINT16 *)auto_malloc(0x8000);
160   som_memory = auto_alloc_array(machine, UINT16, 0x8000/2);
161161   sim_memory_size = memory_region_length(machine, "user1") / 2;
162162   adsp_pgm_memory_word = (UINT16 *)((UINT8 *)hdadsp_pgm_memory + 1);
163163}
r4679r4680
895895      if (commands)
896896      {
897897         INT16 *base = (INT16 *)&som_memory[param * 0x2000];
898         INT16 *end = base + (UINT16)*base++;
899         INT16 *current = base;
900         INT16 *table = base + (UINT16)*current++;
898         INT16 *end = base + (UINT16)*base;
899         INT16 *current = base + 1;
900         INT16 *table = base + 1 + (UINT16)*current++;
901901
902902         fprintf(commands, "\n---------------\n");
903903
r4679r4680
11991199   logerror("%06X:hd68k_ds3_gdata_r(%04X)\n", cpu_get_previouspc(space->cpu), ds3_gdata);
12001200
12011201   /* attempt to optimize the transfer if conditions are right */
1202   if (space->cpu == space->machine->cpu[0] && pc == hdds3_transfer_pc &&
1202   if (space->cpu == cputag_get_cpu(space->machine, "maincpu") && pc == hdds3_transfer_pc &&
12031203      !(!ds3_g68flag && ds3_g68irqs) && !(ds3_gflag && ds3_gfirqs))
12041204   {
12051205      UINT32 destaddr = cpu_get_reg(space->cpu, M68K_A1);
src/mame/machine/segacrpt.c
r4679r4680
241241   int length = memory_region_length(machine, cputag);
242242   int cryptlen = MIN(length, 0x8000);
243243   UINT8 *rom = memory_region(machine, cputag);
244   UINT8 *decrypted = auto_malloc(0xc000);
244   UINT8 *decrypted = auto_alloc_array(machine, UINT8, 0xc000);
245245
246246   memory_set_decrypted_region(space, 0x0000, cryptlen - 1, decrypted);
247247
248248   for (A = 0x0000;A < cryptlen;A++)
249249   {
250      int xor = 0;
250      int xorval = 0;
251251
252252      UINT8 src = rom[A];
253253
r4679r4680
260260      if (src & 0x80)
261261      {
262262         col = 3 - col;
263         xor = 0xa8;
263         xorval = 0xa8;
264264      }
265265
266266      /* decode the opcodes */
267      decrypted[A] = (src & ~0xa8) | (convtable[2*row][col] ^ xor);
267      decrypted[A] = (src & ~0xa8) | (convtable[2*row][col] ^ xorval);
268268
269269      /* decode the data */
270      rom[A] = (src & ~0xa8) | (convtable[2*row+1][col] ^ xor);
270      rom[A] = (src & ~0xa8) | (convtable[2*row+1][col] ^ xorval);
271271
272272      if (convtable[2*row][col] == 0xff)   /* table incomplete! (for development) */
273273         decrypted[A] = 0xee;
r4679r4680
462462   const address_space *space = cputag_get_address_space(machine, cputag, ADDRESS_SPACE_PROGRAM);
463463   UINT8 *rom = memory_region(machine, regiontag);
464464   int bankstart;
465   decrypted = auto_malloc(0x6000*3);
465   decrypted = auto_alloc_array(machine, UINT8, 0x6000*3);
466466
467467
468468   for(bankstart=0;bankstart<0x6000*3;bankstart+=0x6000)
469469   for (A = 0x0000;A < 0x6000;A++)
470470   {
471      int xor = 0;
471      int xorval = 0;
472472
473473      UINT8 src = rom[A+bankstart];
474474
r4679r4680
481481      if (src & 0x80)
482482      {
483483         col = 3 - col;
484         xor = 0xa8;
484         xorval = 0xa8;
485485      }
486486
487487      /* decode the opcodes */
488      decrypted[A+bankstart] = (src & ~0xa8) | (convtable[2*row][col] ^ xor);
488      decrypted[A+bankstart] = (src & ~0xa8) | (convtable[2*row][col] ^ xorval);
489489
490490      /* decode the data */
491      rom[A+bankstart] = (src & ~0xa8) | (convtable[2*row+1][col] ^ xor);
491      rom[A+bankstart] = (src & ~0xa8) | (convtable[2*row+1][col] ^ xorval);
492492   }
493493
494494   memory_configure_bank(machine, 1,0,3, memory_region(machine, regiontag),0x6000);
r4679r4680
819819
820820   const address_space *space = cputag_get_address_space(machine, cputag, ADDRESS_SPACE_PROGRAM);
821821   UINT8 *rom = memory_region(machine, cputag);
822   decrypted = auto_malloc(0x9000);
822   decrypted = auto_alloc_array(machine, UINT8, 0x9000);
823823
824824   for (A = 0x0000;A < 0x9000;A++)
825825   {
826      int xor = 0;
826      int xorval = 0;
827827
828828      UINT8 src = rom[A];
829829
r4679r4680
836836      if (src & 0x80)
837837      {
838838         col = 3 - col;
839         xor = 0xa8;
839         xorval = 0xa8;
840840      }
841841
842842      /* special handling for banked area */
r4679r4680
844844         row = (A & 1) + (((A >> 4) & 1) << 1) + (((A >> 8) & 1) << 2);
845845
846846      /* decode the opcodes */
847      decrypted[A] = (src & ~0xa8) | (convtable[2*row][col] ^ xor);
847      decrypted[A] = (src & ~0xa8) | (convtable[2*row][col] ^ xorval);
848848
849849      /* decode the data */
850      rom[A] = (src & ~0xa8) | (convtable[2*row+1][col] ^ xor);
850      rom[A] = (src & ~0xa8) | (convtable[2*row+1][col] ^ xorval);
851851   }
852852
853853   memory_configure_bank(machine, 1,0,8, memory_region(machine, cputag)+0x7000,0x0400);
r4679r4680
11191119
11201120   const address_space *space = cputag_get_address_space(machine, cputag, ADDRESS_SPACE_PROGRAM);
11211121   UINT8 *rom = memory_region(machine, cputag);
1122   UINT8 *decrypted = auto_malloc(0x8000);
1122   UINT8 *decrypted = auto_alloc_array(machine, UINT8, 0x8000);
11231123
11241124   memory_set_decrypted_region(space, 0x0000, 0x7fff, decrypted);
11251125
src/mame/machine/dec0.c
r4679r4680
463463static TIMER_CALLBACK( i8751_callback )
464464{
465465   /* Signal main cpu microcontroller task is complete */
466   cpu_set_input_line(machine->cpu[0],5,HOLD_LINE);
467   i8751_timer=NULL;
466   cputag_set_input_line(machine, "maincpu", 5, HOLD_LINE);
467   i8751_timer = NULL;
468468
469469   logerror("i8751:  Timer called!!!\n");
470470}
r4679r4680
473473void dec0_i8751_write(running_machine *machine, int data)
474474{
475475   /* Writes to this address cause an IRQ to the i8751 microcontroller */
476   if (GAME==1) hbarrel_i8751_write(data);
477   if (GAME==2) baddudes_i8751_write(machine, data);
478   if (GAME==3) birdtry_i8751_write(machine, data);
476   if (GAME == 1) hbarrel_i8751_write(data);
477   if (GAME == 2) baddudes_i8751_write(machine, data);
478   if (GAME == 3) birdtry_i8751_write(machine, data);
479479
480   cpu_set_input_line(machine->cpu[0],5,HOLD_LINE);
480   cputag_set_input_line(machine, "maincpu", 5, HOLD_LINE);
481481
482482   /* Simulate the processing time of the i8751, time value is guessed
483483    if (i8751_timer)
r4679r4680
525525
526526   robocop_shared_ram[offset]=data&0xff;
527527
528   if (offset==0x7ff) /* A control address - not standard ram */
529      cpu_set_input_line(space->machine->cpu[2],0,HOLD_LINE);
528   if (offset == 0x7ff) /* A control address - not standard ram */
529      cputag_set_input_line(space->machine, "sub", 0, HOLD_LINE);
530530}
531531
532532/******************************************************************************/
r4679r4680
537537   UINT8 *RAM = memory_region(machine, cputag);
538538
539539   /* Read each byte, decrypt it */
540   for (i=0x00000; i<0x10000; i++)
541      RAM[i]=(RAM[i] & 0x7e) | ((RAM[i] & 0x1) << 7) | ((RAM[i] & 0x80) >> 7);
540   for (i = 0x00000; i < 0x10000; i++)
541      RAM[i] = (RAM[i] & 0x7e) | ((RAM[i] & 0x1) << 7) | ((RAM[i] & 0x80) >> 7);
542542}
543543
544544DRIVER_INIT( hippodrm )
545545{
546546   UINT8 *RAM = memory_region(machine, "sub");
547547
548   memory_install_readwrite16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x180000, 0x180fff, 0, 0, hippodrm_68000_share_r, hippodrm_68000_share_w);
549   memory_install_write16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xffc800, 0xffcfff, 0, 0, sprite_mirror_w);
548   memory_install_readwrite16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x180000, 0x180fff, 0, 0, hippodrm_68000_share_r, hippodrm_68000_share_w);
549   memory_install_write16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xffc800, 0xffcfff, 0, 0, sprite_mirror_w);
550550
551551   h6280_decrypt(machine, "sub");
552552
553553   /* The protection cpu has additional memory mapped protection! */
554   RAM[0x189]=0x60; /* RTS prot area */
555   RAM[0x1af]=0x60; /* RTS prot area */
556   RAM[0x1db]=0x60; /* RTS prot area */
557   RAM[0x21a]=0x60; /* RTS prot area */
554   RAM[0x189] = 0x60; /* RTS prot area */
555   RAM[0x1af] = 0x60; /* RTS prot area */
556   RAM[0x1db] = 0x60; /* RTS prot area */
557   RAM[0x21a] = 0x60; /* RTS prot area */
558558}
559559
560560DRIVER_INIT( slyspy )
r4679r4680
564564   h6280_decrypt(machine, "audiocpu");
565565
566566   /* Slyspy sound cpu has some protection */
567   RAM[0xf2d]=0xea;
568   RAM[0xf2e]=0xea;
567   RAM[0xf2d] = 0xea;
568   RAM[0xf2e] = 0xea;
569569}
570570
571571DRIVER_INIT( robocop )
572572{
573   memory_install_readwrite16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x180000, 0x180fff, 0, 0, robocop_68000_share_r, robocop_68000_share_w);
573   memory_install_readwrite16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x180000, 0x180fff, 0, 0, robocop_68000_share_r, robocop_68000_share_w);
574574}
575575
576576DRIVER_INIT( baddudes )
577577{
578   GAME=2;
578   GAME = 2;
579579}
580580
581581DRIVER_INIT( hbarrel )
582582{
583   GAME=1;
583   GAME = 1;
584584{ /* Remove this patch once processing time of i8751 is simulated */
585585UINT16 *rom = (UINT16 *)memory_region(machine, "maincpu");
586586rom[0xb68/2] = 0x8008;
r4679r4680
589589
590590DRIVER_INIT( hbarrelw )
591591{
592   GAME=1;
592   GAME = 1;
593593{ /* Remove this patch once processing time of i8751 is simulated */
594594UINT16 *rom = (UINT16 *)memory_region(machine, "maincpu");
595595rom[0xb3e/2] = 0x8008;
src/mame/machine/beezer.c
r4679r4680
5151static WRITE8_DEVICE_HANDLER( b_via_0_pa_w )
5252{
5353   if ((data & 0x08) == 0)
54      cpu_set_input_line(device->machine->cpu[1], INPUT_LINE_RESET, ASSERT_LINE);
54      cputag_set_input_line(device->machine, "audiocpu", INPUT_LINE_RESET, ASSERT_LINE);
5555   else
56      cpu_set_input_line(device->machine->cpu[1], INPUT_LINE_RESET, CLEAR_LINE);
56      cputag_set_input_line(device->machine, "audiocpu", INPUT_LINE_RESET, CLEAR_LINE);
5757
5858   if ((data & 0x04) == 0)
5959   {
r4679r4680
117117   else
118118   {
119119      UINT8 *rom = memory_region(space->machine, "maincpu") + 0x10000;
120      memory_install_readwrite8_handler(space, 0xc000, 0xcfff, 0, 0, SMH_BANK1, SMH_BANK1);
120      memory_install_readwrite8_handler(space, 0xc000, 0xcfff, 0, 0, (read8_space_func)SMH_BANK(1), (write8_space_func)SMH_BANK(1));
121121      memory_set_bankptr(space->machine, 1, rom + (data & 0x07) * 0x2000 + ((data & 0x08) ? 0x1000: 0));
122122   }
123123}
124
125
src/mame/machine/lsasquad.c
r4679r4680
1818
1919static TIMER_CALLBACK( nmi_callback )
2020{
21   if (sound_nmi_enable) cpu_set_input_line(machine->cpu[1],INPUT_LINE_NMI,PULSE_LINE);
21   if (sound_nmi_enable) cputag_set_input_line(machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
2222   else pending_nmi = 1;
2323}
2424
r4679r4680
3232   sound_nmi_enable = 1;
3333   if (pending_nmi)
3434   {
35      cpu_set_input_line(space->machine->cpu[1],INPUT_LINE_NMI,PULSE_LINE);
35      cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
3636      pending_nmi = 0;
3737   }
3838}
r4679r4680
145145   if ((ddrB & 0x02) && (~data & 0x02) && (portB_out & 0x02))
146146   {
147147      portA_in = from_main;
148      if (main_sent) cpu_set_input_line(space->machine->cpu[2],0,CLEAR_LINE);
148      if (main_sent) cputag_set_input_line(space->machine, "mcu", 0, CLEAR_LINE);
149149      main_sent = 0;
150150//logerror("read command %02x from main cpu\n",portA_in);
151151   }
r4679r4680
169169//logerror("%04x: mcu_w %02x\n",cpu_get_pc(space->cpu),data);
170170   from_main = data;
171171   main_sent = 1;
172   cpu_set_input_line(space->machine->cpu[2],0,ASSERT_LINE);
172   cputag_set_input_line(space->machine, "mcu", 0, ASSERT_LINE);
173173}
174174
175175READ8_HANDLER( lsasquad_mcu_r )
src/mame/machine/williams.c
r4679r4680
311311   int combined_state = pia6821_get_irq_a(pia_1) | pia6821_get_irq_b(pia_1);
312312
313313   /* IRQ to the main CPU */
314   cpu_set_input_line(device->machine->cpu[0], M6809_IRQ_LINE, combined_state ? ASSERT_LINE : CLEAR_LINE);
314   cputag_set_input_line(device->machine, "maincpu", M6809_IRQ_LINE, combined_state ? ASSERT_LINE : CLEAR_LINE);
315315}
316316
317317
318318static void williams_main_firq(const device_config *device, int state)
319319{
320320   /* FIRQ to the main CPU */
321   cpu_set_input_line(device->machine->cpu[0], M6809_FIRQ_LINE, state ? ASSERT_LINE : CLEAR_LINE);
321   cputag_set_input_line(device->machine, "maincpu", M6809_FIRQ_LINE, state ? ASSERT_LINE : CLEAR_LINE);
322322}
323323
324324
r4679r4680
328328   int combined_state = pia6821_get_irq_a(pia_2) | pia6821_get_irq_b(pia_2);
329329
330330   /* IRQ to the sound CPU */
331   cpu_set_input_line(device->machine->cpu[1], M6800_IRQ_LINE, combined_state ? ASSERT_LINE : CLEAR_LINE);
331   cputag_set_input_line(device->machine, "soundcpu", M6800_IRQ_LINE, combined_state ? ASSERT_LINE : CLEAR_LINE);
332332}
333333
334334
r4679r4680
346346   int combined_state = pia6821_get_irq_b(pia_0) | pia6821_get_irq_a(pia_1) | pia6821_get_irq_b(pia_1);
347347
348348   /* IRQ to the main CPU */
349   cpu_set_input_line(device->machine->cpu[0], M6809_IRQ_LINE, combined_state ? ASSERT_LINE : CLEAR_LINE);
349   cputag_set_input_line(device->machine, "maincpu", M6809_IRQ_LINE, combined_state ? ASSERT_LINE : CLEAR_LINE);
350350}
351351
352352
r4679r4680
357357   int combined_state = pia6821_get_irq_a(pia_0) | pia6821_get_irq_b(pia_0) | pia6821_get_irq_a(pia_1) | pia6821_get_irq_b(pia_1);
358358
359359   /* IRQ to the main CPU */
360   cpu_set_input_line(device->machine->cpu[0], M6809_IRQ_LINE, combined_state ? ASSERT_LINE : CLEAR_LINE);
360   cputag_set_input_line(device->machine, "maincpu", M6809_IRQ_LINE, combined_state ? ASSERT_LINE : CLEAR_LINE);
361361}
362362
363363
r4679r4680
452452
453453static STATE_POSTLOAD( williams2_postload )
454454{
455   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
455   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
456456   williams2_bank_select_w(space, 0, vram_bank);
457457}
458458
459459
460460MACHINE_RESET( williams2 )
461461{
462   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
462   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
463463
464464   /* configure memory banks */
465465   memory_configure_bank(machine, 1, 0, 1, williams_videoram, 0);
r4679r4680
508508   {
509509      /* page 0 is video ram */
510510      case 0:
511         memory_install_read8_handler(space, 0x0000, 0x8fff, 0, 0, SMH_BANK1);
512         memory_install_write8_handler(space, 0x8000, 0x87ff, 0, 0, SMH_BANK4);
511         memory_install_read8_handler(space, 0x0000, 0x8fff, 0, 0, (read8_space_func)SMH_BANK(1));
512         memory_install_write8_handler(space, 0x8000, 0x87ff, 0, 0, (write8_space_func)SMH_BANK(4));
513513         memory_set_bank(space->machine, 1, 0);
514514         memory_set_bankptr(space->machine, 4, &williams_videoram[0x8000]);
515515         break;
r4679r4680
517517      /* pages 1 and 2 are ROM */
518518      case 1:
519519      case 2:
520         memory_install_read8_handler(space, 0x0000, 0x8fff, 0, 0, SMH_BANK1);
521         memory_install_write8_handler(space, 0x8000, 0x87ff, 0, 0, SMH_BANK4);
520         memory_install_read8_handler(space, 0x0000, 0x8fff, 0, 0, (read8_space_func)(read8_space_func)(read8_space_func)(read8_space_func)(read8_space_func)(read8_space_func)(read8_space_func)(read8_space_func)(read8_space_func)(read8_space_func)(read8_space_func)(read8_space_func)(read8_space_func)(read8_space_func)(read8_space_func)(read8_space_func)(read8_space_func)SMH_BANK(1));
521         memory_install_write8_handler(space, 0x8000, 0x87ff, 0, 0, (write8_space_func)(write8_space_func)(write8_space_func)(write8_space_func)(write8_space_func)(write8_space_func)(write8_space_func)(write8_space_func)(write8_space_func)(write8_space_func)(write8_space_func)(write8_space_func)(write8_space_func)(write8_space_func)(write8_space_func)(write8_space_func)(write8_space_func)SMH_BANK(4));
522522         memory_set_bank(space->machine, 1, 1 + ((vram_bank & 6) >> 1));
523523         memory_set_bankptr(space->machine, 4, &williams_videoram[0x8000]);
524524         break;
525525
526526      /* page 3 accesses palette RAM; the remaining areas are as if page 1 ROM was selected */
527527      case 3:
528         memory_install_readwrite8_handler(space, 0x8000, 0x87ff, 0, 0, SMH_BANK4, williams2_paletteram_w);
528         memory_install_readwrite8_handler(space, 0x8000, 0x87ff, 0, 0, (read8_space_func)SMH_BANK(4), williams2_paletteram_w);
529529         memory_set_bank(space->machine, 1, 1 + ((vram_bank & 4) >> 1));
530530         memory_set_bankptr(space->machine, 4, paletteram);
531531         break;
r4679r4680
587587
588588CUSTOM_INPUT( williams_mux_r )
589589{
590   const char *tag = param;
590   const char *tag = (const char *)param;
591591
592592   if (port_select != 0)
593593      tag += strlen(tag) + 1;
r4679r4680
730730
731731static STATE_POSTLOAD( defender_postload )
732732{
733   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
733   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
734734   defender_bank_select_w(space, 0, vram_bank);
735735}
736736
737737
738738MACHINE_RESET( defender )
739739{
740   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
740   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
741741
742742   MACHINE_RESET_CALL(williams_common);
743743
r4679r4680
777777      case 7:
778778      case 8:
779779      case 9:
780         memory_install_readwrite8_handler(space, 0xc000, 0xcfff, 0, 0, SMH_BANK1, SMH_UNMAP);
780         memory_install_readwrite8_handler(space, 0xc000, 0xcfff, 0, 0, (read8_space_func)SMH_BANK(1), (write8_space_func)SMH_UNMAP);
781781         memory_set_bank(space->machine, 1, vram_bank - 1);
782782         break;
783783
784784      /* pages A-F are not connected */
785785      default:
786         memory_install_readwrite8_handler(space, 0xc000, 0xcfff, 0, 0, SMH_NOP, SMH_NOP);
786         memory_install_readwrite8_handler(space, 0xc000, 0xcfff, 0, 0, (read8_space_func)SMH_NOP, (write8_space_func)SMH_NOP);
787787         break;
788788   }
789789}
r4679r4680
883883
884884static READ8_DEVICE_HANDLER( lottofun_input_port_0_r )
885885{
886   const address_space *space = cpu_get_address_space(device->machine->cpu[0], ADDRESS_SPACE_PROGRAM);
886   const address_space *space = cputag_get_address_space(device->machine, "maincpu", ADDRESS_SPACE_PROGRAM);
887887
888888   /* merge in the ticket dispenser status */
889   return input_port_read(device->machine, "IN0") | ticket_dispenser_r(space,offset);
889   return input_port_read(device->machine, "IN0") | ticket_dispenser_r(space, offset);
890890}
891891
892892
src/mame/machine/system16.c
r4679r4680
88UINT16 *sys16_extraram2;
99UINT16 *sys16_extraram3;
1010
11static void patch_codeX( UINT16 *mem, offs_t offset, int data ){
11static void patch_codeX( UINT16 *mem, offs_t offset, int data )
12{
1213   int aligned_offset = offset&0xfffffe;
1314   int old_word = mem[aligned_offset/2];
1415
r4679r4680
2021   mem[aligned_offset/2] = data;
2122}
2223
23void sys16_patch_code( running_machine *machine, const sys16_patch *data, int count ){
24void sys16_patch_code( running_machine *machine, const sys16_patch *data, int count )
25{
2426   int i;
2527   UINT16 *mem = (UINT16 *)memory_region(machine, "maincpu");
2628   for (i=0; i<count; i++)
r4679r4680
2830}
2931
3032
31MACHINE_RESET( sys16_onetime ){
33MACHINE_RESET( sys16_onetime )
34{
3235   sys16_bg1_trans=0;
3336   sys16_rowscroll_scroll=0;
3437   sys18_splittab_bg_x=0;
r4679r4680
5558
5659/* sound */
5760
58static void sound_cause_nmi( const device_config *device, int chip ){
61static void sound_cause_nmi( const device_config *device, int chip )
62{
5963   /* upd7759 callback */
60   cpu_set_input_line(device->machine->cpu[1], INPUT_LINE_NMI, PULSE_LINE);
64   cputag_set_input_line(device->machine, "soundcpu", INPUT_LINE_NMI, PULSE_LINE);
6165}
6266
6367
src/mame/machine/namcond1.c
r4679r4680
4848    namcond1_h8_irq5_enabled = 0;
4949
5050    // halt the MCU
51    cpu_set_input_line(machine->cpu[1],INPUT_LINE_RESET,ASSERT_LINE);
51    cputag_set_input_line(machine, "mcu", INPUT_LINE_RESET, ASSERT_LINE);
5252}
5353
5454// instance of the shared ram pointer
r4679r4680
9797            // this is a kludge until we emulate the h8
9898       if ((namcond1_h8_irq5_enabled == 0) && (data != 0x0000))
9999       {
100          cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_RESET, CLEAR_LINE);
100          cputag_set_input_line(space->machine, "mcu", INPUT_LINE_RESET, CLEAR_LINE);
101101       }
102102            namcond1_h8_irq5_enabled = ( data != 0x0000 );
103103            break;
src/mame/machine/cps2crpt.c
r4679r4680
635635   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
636636   UINT16 *rom = (UINT16 *)memory_region(machine, "maincpu");
637637   int length = memory_region_length(machine, "maincpu");
638   UINT16 *dec = auto_malloc(length);
638   UINT16 *dec = auto_alloc_array(machine, UINT16, length/2);
639639   int i;
640640   UINT32 key1[4];
641641   struct optimised_sbox sboxes1[4*4];
r4679r4680
721721   }
722722
723723   memory_set_decrypted_region(space, 0x000000, length - 1, dec);
724   m68k_set_encrypted_opcode_range(machine->cpu[0],0,length);
724   m68k_set_encrypted_opcode_range(cputag_get_cpu(machine, "maincpu"), 0, length);
725725}
726726
727727
r4679r4680
961961   { "progearj", { 0x9f7edc56,0x39fb47be }, 0x400000 },   // 0C81 63A1 B8D3  cmpi.l  #$63A1B8D3,D1
962962   { "progeara", { 0x658ab128,0xfddc9b5e }, 0x400000 },   // 0C81 63A1 B8D3  cmpi.l  #$63A1B8D3,D1
963963
964   { 0 }   // end of table
964   { NULL, { 0,0 }, 0 }   // end of table
965965};
966966
967967
src/mame/machine/decocrpt.c
r4679r4680
602602{
603603   UINT16 *rom = (UINT16 *)memory_region(machine, rgntag);
604604   int len = memory_region_length(machine, rgntag)/2;
605   UINT16 *buffer = malloc_or_die(len*2);
605   UINT16 *buffer = alloc_array_or_die(UINT16, len);
606606   int i;
607607
608608   /* we work on 16-bit words but data is loaded as 8-bit, so swap bytes on LSB machines */
src/mame/machine/opwolf.c
r4679r4680
695695   {
696696      // Simulate time for command to execute (exact timing unknown, this is close)
697697      current_cmd=0xf5;
698      timer_set(machine, cpu_clocks_to_attotime(machine->cpu[0],80000), NULL, 0, opwolf_timer_callback);
698      timer_set(machine, cputag_clocks_to_attotime(machine, "maincpu", 80000), NULL, 0, opwolf_timer_callback);
699699   }
700700   cchip_last_7a=cchip_ram[0x7a];
701701
r4679r4680
720720
721721void opwolf_cchip_init(running_machine *machine)
722722{
723   cchip_ram=auto_malloc(0x400 * 8);
723   cchip_ram=auto_alloc_array(machine, UINT8, 0x400 * 8);
724724
725725   state_save_register_global(machine, current_bank);
726726   state_save_register_global(machine, current_cmd);
src/mame/machine/starwars.c
r4679r4680
174174   UINT8 *src = memory_region(machine, "user2");
175175   int cnt, val;
176176
177   PROM_STR = auto_malloc(1024 * sizeof(PROM_STR[0]));
178   PROM_MAS = auto_malloc(1024 * sizeof(PROM_MAS[0]));
179   PROM_AM = auto_malloc(1024 * sizeof(PROM_AM[0]));
177   PROM_STR = auto_alloc_array(machine, UINT8, 1024);
178   PROM_MAS = auto_alloc_array(machine, UINT8, 1024);
179   PROM_AM = auto_alloc_array(machine, UINT8, 1024);
180180
181181   for (cnt = 0; cnt < 1024; cnt++)
182182   {
src/mame/machine/nb1413m3.c
r4679r4680
5555
5656      if (nb1413m3_nmi_enable)
5757      {
58         cpu_set_input_line(machine->cpu[0], INPUT_LINE_NMI, PULSE_LINE);
58         cputag_set_input_line(machine, "maincpu", INPUT_LINE_NMI, PULSE_LINE);
5959         nb1413m3_nmi_count++;
6060      }
6161
src/mame/machine/atarifb.c
r4679r4680
125125
126126WRITE8_HANDLER( atarifb_out3_w )
127127{
128   int loop = cpu_getiloops(space->machine->cpu[0]);
128   int loop = cpu_getiloops(cputag_get_cpu(space->machine, "maincpu"));
129129
130130   switch (loop)
131131   {
src/mame/machine/simpsons.c
r4679r4680
9898
9999READ8_HANDLER( simpsons_sound_interrupt_r )
100100{
101   cpu_set_input_line_and_vector(space->machine->cpu[1], 0, HOLD_LINE, 0xff );
101   cputag_set_input_line_and_vector(space->machine, "audiocpu", 0, HOLD_LINE, 0xff );
102102   return 0x00;
103103}
104104
r4679r4680
123123{
124124   UINT8 *RAM = memory_region(machine, "maincpu");
125125
126   konami_configure_set_lines(machine->cpu[0], simpsons_banking);
126   konami_configure_set_lines(cputag_get_cpu(machine, "maincpu"), simpsons_banking);
127127
128128   paletteram = &RAM[0x88000];
129129   simpsons_xtraram = &RAM[0x89000];
src/mame/machine/model1.c
r4679r4680
19231923void model1_tgp_reset(running_machine *machine, int swa)
19241924{
19251925   ram_adr = 0;
1926   ram_data = auto_malloc(0x10000*4);
1926   ram_data = auto_alloc_array(machine, UINT32, 0x10000);
19271927   memset(ram_data, 0, 0x10000*4);
19281928
19291929   fifoout_rpos = 0;
r4679r4680
19691969static UINT32 copro_fifoin_data[FIFO_SIZE];
19701970static int copro_fifoin_num;
19711971
1972void model1_vr_tgp_reset( void )
1972void model1_vr_tgp_reset( running_machine *machine )
19731973{
19741974   ram_adr = 0;
1975   ram_data = auto_malloc(0x8000*4);
1975   ram_data = auto_alloc_array(machine, UINT32, 0x8000);
19761976   memset(ram_data, 0, 0x8000*4);
19771977
19781978   copro_fifoout_rpos = 0;
r4679r4680
20322032   if (copro_fifoout_num == 0)
20332033   {
20342034      // Reading from empty FIFO causes the v60 to enter wait state
2035      v60_stall(space->machine->cpu[0]);
2035      v60_stall(cputag_get_cpu(space->machine, "maincpu"));
20362036
20372037      timer_call_after_resynch(space->machine, NULL, 0, NULL);
20382038
src/mame/machine/seicop.c
r4679r4680
871871      /*WRONG*/
872872      case (0x65c/2):
873873      {
874         soundlatch_w(space,1,data&0xff);
875         cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_NMI, PULSE_LINE );
874         soundlatch_w(space, 1, data & 0xff);
875         cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE );
876876         break;
877877      }
878878      /*video regs (not scrollram,something else)*/
r4679r4680
888888      /*bootleg sound HW*/
889889      /*case (0x740/2):
890890        {
891            soundlatch_w(1,data&0x00ff);
892            cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_NMI, PULSE_LINE );
891            soundlatch_w(space, 1, data & 0x00ff);
892            cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE );
893893            break;
894894        }*/
895895   }
src/mame/machine/ajax.c
r4679r4680
142142            watchdog_reset_w(space, 0, data);
143143         else{
144144            if (firq_enable)   /* Cause interrupt on slave CPU */
145               cpu_set_input_line(space->machine->cpu[1], M6809_FIRQ_LINE, HOLD_LINE);
145               cputag_set_input_line(space->machine, "sub", M6809_FIRQ_LINE, HOLD_LINE);
146146         }
147147         break;
148148      case 0x01:   /* Cause interrupt on audio CPU */
149         cpu_set_input_line(space->machine->cpu[2], 0, HOLD_LINE);
149         cputag_set_input_line(space->machine, "audiocpu", 0, HOLD_LINE);
150150         break;
151151      case 0x02:   /* Sound command number */
152152         soundlatch_w(space,offset,data);
r4679r4680
204204
205205MACHINE_RESET( ajax )
206206{
207   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
207   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
208208   ajax_bankswitch_w(space, 0, 0);
209209   ajax_bankswitch_2_w(space, 0, 0);
210210}
src/mame/machine/bigevglf.c
r4679r4680
4545
4646   if ((ddrB & 0x02) && (~portB_out & 0x02) && (data & 0x02)) /* positive going transition of the clock */
4747   {
48      cpu_set_input_line(space->machine->cpu[3],0,CLEAR_LINE);
48      cputag_set_input_line(space->machine, "mcu", 0, CLEAR_LINE);
4949      main_sent = 0;
5050
5151   }
r4679r4680
8686{
8787   portA_in = data;
8888   main_sent = 1;
89   cpu_set_input_line(space->machine->cpu[3],0,ASSERT_LINE);
89   cputag_set_input_line(space->machine, "mcu", 0, ASSERT_LINE);
9090}
9191
9292
src/mame/machine/bagman.c
r4679r4680
212212{
213213UINT8 line;
214214
215   line = offset*4;
216   columnvalue[line  ] = data&1;
217   columnvalue[line+1] = 1-(data&1);
215   line = offset * 4;
216   columnvalue[line    ] = data & 1;
217   columnvalue[line + 1] = 1 - (data & 1);
218218}
219219
220220MACHINE_RESET( bagman )
221221{
222   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
223   bagman_pal16r6_w(space,0,1);   /*pin 2*/
224   bagman_pal16r6_w(space,1,1);   /*pin 3*/
225   bagman_pal16r6_w(space,2,1);   /*pin 4*/
226   bagman_pal16r6_w(space,3,1);   /*pin 5*/
227   bagman_pal16r6_w(space,4,1);   /*pin 6*/
228   bagman_pal16r6_w(space,5,1);   /*pin 7*/
229   bagman_pal16r6_w(space,6,1);   /*pin 8*/
230   bagman_pal16r6_w(space,7,1);   /*pin 9*/
222   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
223   bagman_pal16r6_w(space, 0, 1);   /*pin 2*/
224   bagman_pal16r6_w(space, 1, 1);   /*pin 3*/
225   bagman_pal16r6_w(space, 2, 1);   /*pin 4*/
226   bagman_pal16r6_w(space, 3, 1);   /*pin 5*/
227   bagman_pal16r6_w(space, 4, 1);   /*pin 6*/
228   bagman_pal16r6_w(space, 5, 1);   /*pin 7*/
229   bagman_pal16r6_w(space, 6, 1);   /*pin 8*/
230   bagman_pal16r6_w(space, 7, 1);   /*pin 9*/
231231   update_pal();
232232}
233233
234234READ8_HANDLER( bagman_pal16r6_r )
235235{
236236   update_pal();
237   return   (outvalue[6]) + (outvalue[5]<<1) + (outvalue[4]<<2) +
238      (outvalue[3]<<3) + (outvalue[2]<<4) + (outvalue[1]<<5);
237   return   (outvalue[6]) + (outvalue[5] << 1) + (outvalue[4] << 2) +
238      (outvalue[3] << 3) + (outvalue[2] << 4) + (outvalue[1] << 5);
239239
240240/* Bagman schematics show that this is right mapping order of PAL outputs to bits.
241241** This is the PAL 16R6 shown almost in the middle of the schematics.
src/mame/machine/jackal.c
r4679r4680
2323
2424   // HACK: running at the nominal clock rate, music stops working
2525   // at the beginning of the game. This fixes it.
26   cpu_set_clockscale(machine->cpu[1], 1.2f);
26   cpu_set_clockscale(cputag_get_cpu(machine, "slave"), 1.2f);
2727
2828   memory_set_bankptr(machine, 1,&rgn[0x4000]);
2929    jackal_rambank = rgn;
src/mame/machine/mw8080bw.c
r4679r4680
6666   int vpos = video_screen_get_vpos(machine->primary_screen);
6767   UINT8 counter = vpos_to_vysnc_chain_counter(vpos);
6868   UINT8 vector = 0xc7 | ((counter & 0x40) >> 2) | ((~counter & 0x40) >> 3);
69   cpu_set_input_line_and_vector(machine->cpu[0], 0, HOLD_LINE, vector);
69   cputag_set_input_line_and_vector(machine, "maincpu", 0, HOLD_LINE, vector);
7070
7171   /* set up for next interrupt */
7272   if (counter == MW8080BW_INT_TRIGGER_COUNT_1)
src/mame/mamedriv.c
r4679r4680
339339   DRIVER( ccboot2 )   /* bootleg */
340340   DRIVER( ckong )      /* (c) 1981 Falcon */
341341   DRIVER( ckonga )   /* (c) 1981 Falcon */
342   DRIVER( ckong2j )   /* (c) 1981 Falcon */
342343   DRIVER( ckongjeu )   /* bootleg */
343344   DRIVER( ckongo )   /* bootleg */
344345   DRIVER( ckongalc )   /* bootleg */
r4679r4680
647648   DRIVER( xevios )   /* bootleg */
648649   DRIVER( battles )   /* bootleg */
649650   DRIVER( sxevious )   /* (c) 1984 */
651   DRIVER( sxeviousj )   /* (c) 1984 */
650652   DRIVER( superpac )   /* (c) 1982 */
651653   DRIVER( superpcm )   /* (c) 1982 Midway */
652654   DRIVER( pacnpal )   /* (c) 1983 */
r4679r4680
895897   DRIVER( motoxgo )   /* (c) 1997 */
896898   DRIVER( timecrs2 )   /* (c) 1997 */
897899   DRIVER( timcrs2b )   /* (c) 1997 */
900   DRIVER( panicprk )   /* (c) 1998 */
898901   DRIVER( 500gp )      /* (c) 1999 */
899902   DRIVER( finfurl2 )   /* (c) 1999 */
900903   DRIVER( finfrl2j )   /* (c) 1999 */
r4679r4680
13781381   DRIVER( andromed )   /* (c) 1979 */
13791382   DRIVER( ipminvad )   /* M10 no copyright notice */
13801383   DRIVER( ipminva1 )   /* M10 incomplete dump */
1384   DRIVER( ptrmj )      /* M14 (c) 1979  */
13811385   DRIVER( skychut )   /* Irem [1980] */
13821386   DRIVER( spacbeam )   /* M15 no copyright notice */
13831387   DRIVER( greenber )   /* Irem */
r4679r4680
16181622   DRIVER( pitnruna )   /* PR  (c) 1984 Taito Corporation */
16191623   DRIVER( lkage )      /* A54 (c) 1984 Taito Corporation */
16201624   DRIVER( lkageo )   /* A54 (c) 1984 Taito Corporation */
1625   DRIVER( lkageoo )   /* A54 (c) 1984 Taito Corporation */
16211626   DRIVER( lkageb )   /* bootleg */
16221627   DRIVER( lkageb2 )   /* bootleg */
16231628   DRIVER( lkageb3 )   /* bootleg */
r4679r4680
19041909   DRIVER( scia )      /* C09 (c) 1989 Taito Corporation Japan (World) */
19051910   DRIVER( scij )      /* C09 (c) 1989 Taito Corporation Japan (World) */
19061911   DRIVER( sciu )      /* C09 (c) 1989 Taito America Corporation (US) */
1912   DRIVER( scin )      /* C09 (c) 1991 Taito Corporation Japan (Negro Torino hack) */
19071913   DRIVER( bshark )   /* C34 (c) 1989 Taito America Corporation (US) */
19081914   DRIVER( bsharkj )   /* C34 (c) 1989 Taito Corporation (Japan) */
19091915   DRIVER( aquajack )   /* B77 (c) 1990 Taito Corporation Japan (World) */
r4679r4680
24262432   DRIVER( 1943 )      /*  6/1987 (c) 1987 (US) */
24272433   DRIVER( 1943j )      /*  6/1987 (c) 1987 (Japan) */
24282434   DRIVER( blktiger )   /*  8/1987 (c) 1987 (US) */
2429   DRIVER( bktigrb1 )   /* bootleg */
2430   DRIVER( bktigrb2 )   /* bootleg */
2435   DRIVER( blktigerb1 )/* bootleg */
2436   DRIVER( blktigerb2 )/* bootleg */
24312437   DRIVER( blkdrgon )   /*  8/1987 (c) 1987 (Japan) */
2432   DRIVER( blkdrgnb )   /* bootleg, hacked to say Black Tiger */
2438   DRIVER( blkdrgonb )   /* bootleg, hacked to say Black Tiger */
24332439   DRIVER( sf )      /*  8/1987 (c) 1987 (World) */
24342440   DRIVER( sfus )      /*  8/1987 (c) 1987 (US) */
24352441   DRIVER( sfjp )      /*  8/1987 (c) 1987 (Japan) */
r4679r4680
31673173   DRIVER( ddr4mj )   /* 2000 - Dance Dance Revolution 4th Mix (G*A33 VER. JAA) */
31683174   DRIVER( ddr4ms )   /* 2000 - Dance Dance Revolution Solo 4th Mix (G*A33 VER. ABA) */
31693175   DRIVER( ddr4msj )   /* 2000 - Dance Dance Revolution Solo 4th Mix (G*A33 VER. JBA) */
3176   DRIVER( dsfdr )      /* 2000 - Dancing Stage Featuring Disney's Rave (GCA37JAA) */
31703177   DRIVER( ddrusa )   /* 2000 - Dance Dance Revolution USA (G*A44 VER. UAA) */
31713178   DRIVER( ddr4mp )   /* 2000 - Dance Dance Revolution 4th Mix Plus (G*A34 VER. JAA) */
31723179   DRIVER( ddr4mps )   /* 2000 - Dance Dance Revolution 4th Mix Plus Solo (G*A34 VER. JAA) */
r4679r4680
42264233   DRIVER( mt_mwalk )   /* 40 */
42274234   DRIVER( mt_crack )   /* 41 */
42284235            /* 42 */
4229            /* 43 */
4236   DRIVER( mt_shado )   /* 43 */
42304237   DRIVER( mt_arrow )   /* 44 */
42314238            /* 45 */
42324239            /* 46 */
r4679r4680
42344241   DRIVER( mt_wwar )   /* 48 */
42354242   DRIVER( mt_bbros )   /* 49 */
42364243            /* 50 */
4237            /* 51 */
4244   DRIVER( mt_srage )   /* 51 */
42384245   DRIVER( mt_sonic )   /* 52 */
42394246   DRIVER( mt_sonia )   /* ^^ */
42404247   DRIVER( mt_fshrk )   /* 53 */
r4679r4680
42834290                  /* 1999.05 Taisen Puzzle Kurutto Stone */
42844291                  /* 1999.06 Ringout 4x4 */
42854292   DRIVER( f355bios )   /* 1999.07 F355 Challenge */
4293   DRIVER( f355 )
42864294   DRIVER( shangril )   /* 1999.08 Dengen Tenshi Taisen Janshi Shangri-la */
42874295                  /* 1999.08 Unou Nouryoku Check Machine Touch de UNO! */
42884296   DRIVER( vs2_2k )   /* 1999.08 Virtua Striker 2 version 2000 */
r4679r4680
43944402   DRIVER( undefeat )   /* 2005.10 Under Defeat */
43954403                  /* 2005.12 Radirgy (Rev. A) */
43964404   DRIVER( kurucham )   /* 2006.03 Kurukuru Chameleon */
4397   DRIVER( trgheart )   /* 2006.05 Trigger Heart Exelica */
4405                  /* 2006.05 Trigger Heart Exelica */
43984406                  /* 2006.07 Touch de Zunou */
43994407                  /* 2006.08 Senkou no Rondo SP */
4400   DRIVER( jingystm )   /* 2006.09 Jingi Storm */
4401   DRIVER( karous )   /* 2006.11 Karous */
4408                  /* 2006.09 Jingi Storm */
4409                  /* 2006.11 Karous */
44024410                  /* 2006.12 Guilty Gear XX Accent Core */
4403   DRIVER( meltyb )   /* 2006.12 Melty Blood Act Cadenza ver.B */
4404   DRIVER( takoron )   /* 2006.12.16 Noukone Puzzle Takoron */
4405   DRIVER( meltyba )   /* 2007.03 Melty Blood Act Cadenza ver.B Syuuseiban(ver.B2) */
4411                  /* 2006.12 Melty Blood Act Cadenza ver.B */
4412                  /* 2006.12.16 Noukone Puzzle Takoron */
4413                  /* 2007.03 Melty Blood Act Cadenza ver.B Syuuseiban(ver.B2) */
44064414
44074415   DRIVER( ngdup23a )   /* DIMM Firmware Updater */
44084416   DRIVER( ngdup23c )
r4679r4680
45294537                  /* 2005.04 Virtua Striker 4 ver.A */
45304538                  /* 2005.08 Avalon no Kagi ver.2.5 Kagi Seisen */
45314539                  /* 2005.12 Mario Kart Arcade Grand Prix */
4532   DRIVER( vs42006 )   /* 2006.05 Virtua Striker 4 ver.2006 */
4540                  /* 2006.05 Virtua Striker 4 ver.2006 */
45334541                  /* 2007.03 Mario Kart Arcade Grand Prix 2 */
45344542
45354543   DRIVER( tfupdate )   /* Triforce GDROM Boot Update (GDT-0011) */
r4679r4680
46954703   DRIVER( boomrang )   /* (c) 1983 */
46964704   DRIVER( boomrana )   /* (c) 1983 */
46974705   DRIVER( kamikcab )   /* (c) 1984 */
4706   DRIVER( yellowcj )   /* (c) 1984 */
46984707   DRIVER( yellowcb )   /* bootleg */
46994708   DRIVER( liberate )   /* (c) 1984  Data East Corporation */
47004709   DRIVER( dualaslt )   /* (c) 1984  Data East USA (US) */
r4679r4680
50165025   DRIVER( spbactn )   /* 9002 - (c) 1991 Tecmo */
50175026   DRIVER( spbactnj )   /* 9002 - (c) 1991 Tecmo */
50185027   DRIVER( fstarfrc )   /* (c) 1992 Tecmo */
5028   DRIVER( fstarfrcj )   /* (c) 1992 Tecmo */
50195029   DRIVER( ginkun )   /* (c) 1995 Tecmo */
50205030   DRIVER( deroon )   /* (c) 1996 Tecmo */
50215031   DRIVER( tkdensho )   /* (c) 1996 Tecmo */
r4679r4680
51705180   DRIVER( aliensu )   /* GX875 (c) 1990 (US) */
51715181   DRIVER( aliensj )   /* GX875 (c) 1990 (Japan) */
51725182   DRIVER( aliensj2 )   /* GX875 (c) 1990 (Japan) */
5183   DRIVER( aliensa )   /* GX875 (c) 1990 (Asia) */
51735184   DRIVER( suratk )   /* GX911 (c) 1990 (World) */
51745185   DRIVER( suratka )   /* GX911 (c) 1990 (Asia) */
51755186   DRIVER( suratkj )   /* GX911 (c) 1990 (Japan) */
r4679r4680
59215932   DRIVER( hydrap2 )   /* (proto)          (c) 1990 */
59225933   DRIVER( pitfight )   /* 136081           (c) 1990 */
59235934   DRIVER( pitfigh6 )   /* 136081           (c) 1990 */
5935   DRIVER( pitfigh5 )   /* 136081           (c) 1990 */
59245936   DRIVER( pitfigh4 )   /* 136081           (c) 1990 */
59255937   DRIVER( pitfigh3 )   /* 136081           (c) 1990 */
59265938   DRIVER( pitfighj )   /* Japan */
r4679r4680
61656177   DRIVER( karnovr )   /* 0066 (c) 1994 Data East Corporation */
61666178   DRIVER( gururin )   /* 0067 (c) 1994 Face */
61676179   DRIVER( pspikes2 )   /* 0068 (c) 1994 Video System Co. */
6180            /* Super Volley '94 was once released in Mar.1994, and recalled. Then released as Power Spikes 2 (with some tweaks). */
61686181   DRIVER( fatfury3 )   /* 0069 (c) 1995 SNK */
61696182   DRIVER( zupapa )   /* 0070 Zupapa - released in 2001, 1994 prototype probably exists */
61706183            /* 0071 Bang Bang Busters (prototype) 1994 Visco */
r4679r4680
62226235   DRIVER( kof96h )   /* 0214 (c) 1996 SNK */
62236236   DRIVER( ssideki4 )   /* 0215 (c) 1996 SNK */
62246237   DRIVER( kizuna )   /* 0216 (c) 1996 SNK */
6238            /*  Fu-un Super Tag Battle Special Version (4-player battle available) exists */
62256239   DRIVER( ninjamas )   /* 0217 (c) 1996 ADK / SNK */
62266240   DRIVER( ragnagrd )   /* 0218 (c) 1996 Saurus */
62276241   DRIVER( pgoal )      /* 0219 (c) 1996 Saurus */
r4679r4680
63466360   /* Hyper NeoGeo 64 uses a 3 digit rom code? */
63476361
63486362    DRIVER( hng64 )
6349   DRIVER( roadedge )    /* 001? Roads Edge / Round Trip RV */
6350            /* 002? Samurai Shodown 64 / Samurai Spirits 64 */
6351            /* 003? Xtreme Rally / Off Beat Racer! */
6352            /* 004? Beast Busters: Second Nightmare */
6353   DRIVER( sams64_2 )   /* 005? Samurai Shodown: Warrior's Rage / Samurai Spirits: Asura Zanmaden */
6354   DRIVER( fatfurwa )   /* 006? Fatal Fury: Wild Ambition / Garou Densetsu: Wild Ambition */
6355   DRIVER( buriki )   /* 007 (c) 1999 SNK */
6363   DRIVER( roadedge )    /* 001 1997/09/10 Roads Edge / Round Trip RV */
6364   DRIVER( sams64 )   /* 002 1997/12/19 Samurai Shodown 64 / Samurai Spirits 64 */
6365   DRIVER( xrally )   /* 003 1998/05/13 Xtreme Rally / Off Beat Racer! */
6366   DRIVER( bbust2 )   /* 004 1998/09/11 Beast Busters: Second Nightmare */
6367   DRIVER( sams64_2 )   /* 005 1998/10/16 Samurai Shodown: Warrior's Rage / Samurai Spirits: Asura Zanmaden */
6368   DRIVER( fatfurwa )   /* 006 1999/01/28 Fatal Fury: Wild Ambition / Garou Densetsu: Wild Ambition */
6369   DRIVER( buriki )   /* 007 1999/05/21 Buriki One */
63566370
63576371   /* Alpha Denshi games */
63586372   DRIVER( shougi )
r4679r4680
64616475   DRIVER( tstrikea )   /* Game Room  */
64626476   DRIVER( ctribe )   /* TA-0028 (c) 1990 (US) */
64636477   DRIVER( ctribe1 )   /* TA-0028 (c) 1990 (US) - Set 1? */
6478   DRIVER( ctribej )   /* TA-0028 (c) 1990 (Japan) */
64646479   DRIVER( ctribeb )   /* bootleg */
64656480   DRIVER( ctribb2 )   /* bootleg */
64666481   DRIVER( blockout )   /* TA-0029 (c) 1989 + California Dreams */
r4679r4680
66836698   DRIVER( crusnwld )   /* (c) 1996 Midway */
66846699   DRIVER( crusnw23 )   /* (c) 1996 Midway */
66856700   DRIVER( crusnw20 )   /* (c) 1996 Midway */
6701   DRIVER( crusnw17 )   /* (c) 1996 Midway */
66866702   DRIVER( crusnw13 )   /* (c) 1996 Midway */
66876703   DRIVER( offroadc )   /* (c) 1997 Midway (v1.40) */
66886704   DRIVER( offrodc3 )   /* (c) 1997 Midway (v1.30) */
r4679r4680
68816897   DRIVER( zeroteam )   /* (c) 1993 Seibu Kaihatsu */
68826898   DRIVER( zeroteaa )   /* (c) 1993 Seibu Kaihatsu */
68836899   DRIVER( zeroteab )   /* (c) 1993 Seibu Kaihatsu */
6900   DRIVER( zeroteac )   /* (c) 1993 Seibu Kaihatsu */
68846901   DRIVER( zerotsel )   /* (c) 1993 Seibu Kaihatsu */
68856902   DRIVER( nzerotea )   /* (c) 1993 Seibu Kaihatsu */
68866903   DRIVER( xsedae )   /* (c) 1995 Dream Island */
r4679r4680
69386955   DRIVER( cabal )      /* (c) 1988 Tad + Fabtek license */
69396956   DRIVER( cabala )   /* (c) 1988 Tad + Fabtek license */
69406957   DRIVER( cabalbl )   /* bootleg */
6958   DRIVER( cabalbl2 )   /* bootleg */
69416959   DRIVER( cabalus )   /* (c) 1988 Tad + Fabtek license */
69426960   DRIVER( cabalus2 )   /* (c) 1988 Tad + Fabtek license */
69436961   DRIVER( toki )      /* (c) 1989 Tad (World) */
r4679r4680
72297247   DRIVER( wrallyb )   /* (c) 1993 - Ref 930217 */
72307248   DRIVER( glass )      /* (c) 1993 - Ref 931021 */
72317249   DRIVER( glass10 )   /* (c) 1993 - Ref 931021 */
7232   DRIVER( glass10a )   /* (c) 1993 - Ref 931021 */
7250   DRIVER( glassbrk )   /* (c) 1993 - Ref 931021 shows "Break Edition" on a real PCB */
72337251   DRIVER( targeth )   /* (c) 1994 - Ref 940531 */
72347252   DRIVER( thoop2 )   /* (c) 1994 - Ref ??? */
72357253   DRIVER( aligator )   /* (c) 1994 - Ref 940411 */
r4679r4680
80638081   DRIVER( kinst210 )   /* (c) 1995 Rare */
80648082
80658083   /* Nihon System games */
8084   DRIVER( gigas )      /* (c) 1986 Sega */
80668085   DRIVER( gigasb )   /* (c) 1986 bootleg */
80678086   DRIVER( gigasm2b )   /* (c) 1986 bootleg */
80688087   DRIVER( oigas )      /* (c) 1986 bootleg */
r4679r4680
85928611   DRIVER( spitboss )   /* (c) 1988 Merit */
85938612   DRIVER( pitbosss )   /* (c) 1990 Merit */
85948613   DRIVER( pitbossm )   /* (c) 1994 Merit */
8614   DRIVER( pbst30 )   /* (c) 1994 Merit */
8615   DRIVER( pbst30b )   /* (c) 1993 Merit */
85958616   DRIVER( megat3 )   /* (c) 1996 Merit */
85968617   DRIVER( megat3a )   /* (c) 1996 Merit */
85978618   DRIVER( megat3ca )   /* (c) 1996 Merit */
r4679r4680
89308951   DRIVER( paranoia )   /* (c) 1990 Naxat Soft */
89318952   DRIVER( vcombat )   /* (c) 1993 VR8 Inc. */
89328953   DRIVER( shadfgtr )   /* (c) 1993 DUTECH Inc. */
8954   DRIVER( skimaxx )   /* (c) 1996 Kyle Hodgetts/ICE */
89338955   DRIVER( blackt96 )   /* (c) 1996 D.G.R.M. of Korea */
89348956   DRIVER( magictg )   /* (c) 199? Acclaim */
89358957   DRIVER( magictga )   /* (c) 199? Acclaim */
r4679r4680
89648986   /* H8/3337 italian gambling games */
89658987   DRIVER( ntcash )   /* (c) 1999 unknown */
89668988   DRIVER( wizard )   /* (c) 1999 A.A. */
8989   DRIVER( trstar2k )   /* (c) 1999 A.M. */
89678990   DRIVER( laser2k1 )   /* (c) 2001 unknown */
89688991   DRIVER( mdrink )   /* (c) 2001 unknown */
89698992   DRIVER( te0144 )   /* (c) 2001 unknown */
r4679r4680
89718994   DRIVER( millsun )   /* (c) 200? unknown */
89728995   DRIVER( sspac2k1 )   /* (c) 200? unknown */
89738996   DRIVER( elvis )      /* (c) 200? unknown */
8997   DRIVER( sstar )      /* (c) 200? unknown */
89748998
89758999   /* Intel 8086-based italian gambling games */
89769000   DRIVER( newmcard )   /* (c) 19?? unknown */
r4679r4680
90689092   DRIVER( nfb96seb )   /* bootleg */
90699093   DRIVER( carb2002 )   /* bootleg */
90709094   DRIVER( carb2003 )   /* bootleg */
9095   DRIVER( nfm )      /* bootleg */
90719096
90729097   DRIVER( ladylinr )   /* (c) 198? TAB Austria */
90739098   DRIVER( kkojnoli )   /* 198? south korean hack */
r4679r4680
93069331   /* Hi-Lo Poker-based */
93079332   DRIVER( gtipoker )   /* (c) 1983 GTI Inc */
93089333   DRIVER( norautp )   /* (c) 1988? Noraut */
9334   DRIVER( norautjp )   /* (c) 1988? Noraut */
93099335   DRIVER( norautpn )   /* (c) 1990? unknown */
93109336
93119337   /* Sanki Denshi Kogyo */
src/mame/includes/nmk16.h
r4679r4680
66extern UINT16 *afega_vram_1, *afega_scroll_1;
77
88
9READ16_HANDLER( nmk_bgvideoram_r );
109WRITE16_HANDLER( nmk_bgvideoram_w );
11READ16_HANDLER( nmk_fgvideoram_r );
1210WRITE16_HANDLER( nmk_fgvideoram_w );
13READ16_HANDLER( nmk_txvideoram_r );
1411WRITE16_HANDLER( nmk_txvideoram_w );
1512WRITE16_HANDLER( nmk_scroll_w );
1613WRITE16_HANDLER( nmk_scroll_2_w );
src/mame/includes/ninjakd2.h
r4679r4680
2020
2121extern VIDEO_START( ninjakd2 );
2222extern VIDEO_START( mnight );
23extern VIDEO_START( arkarea );
2324extern VIDEO_START( robokid );
2425extern VIDEO_START( omegaf );
2526extern VIDEO_UPDATE( ninjakd2 );
src/mame/includes/naomi.h
r4679r4680
1313};
1414
1515extern DRIVER_INIT( naomi );
16extern DRIVER_INIT( naomi_mp );
17
1618extern DRIVER_INIT( ggxxsla );
1719extern DRIVER_INIT( ggxxrl );
1820extern DRIVER_INIT( ggxx );
src/mame/includes/esripsys.h
r4679r4680
1616#define CMOS_RAM_SIZE         (2048)
1717#define FDT_RAM_SIZE         (2048 * sizeof(UINT16))
1818
19enum
20{
21   ESRIPSYS_GAME_CPU  = 0,
22   ESRIPSYS_FRAME_CPU = 1,
23   ESRIPSYS_VIDEO_CPU = 2,
24   ESRIPSYS_SOUND_CPU = 3,
25};
26
2719/*----------- defined in video/esripsys.c -----------*/
2820
2921extern int esripsys_hblank;
src/mame/includes/namcos2.h
r4679r4680
207207/* MASTER CPU RAM MEMORY                                      */
208208/**************************************************************/
209209
210#define NAMCOS2_68K_MASTER_RAM_W   SMH_BANK3
211#define NAMCOS2_68K_MASTER_RAM_R   SMH_BANK3
210#define NAMCOS2_68K_MASTER_RAM_W   SMH_BANK(3)
211#define NAMCOS2_68K_MASTER_RAM_R   SMH_BANK(3)
212212
213213/**************************************************************/
214214/* SLAVE CPU RAM MEMORY                                       */
215215/**************************************************************/
216216
217#define NAMCOS2_68K_SLAVE_RAM_W    SMH_BANK4
218#define NAMCOS2_68K_SLAVE_RAM_R    SMH_BANK4
217#define NAMCOS2_68K_SLAVE_RAM_W    SMH_BANK(4)
218#define NAMCOS2_68K_SLAVE_RAM_R    SMH_BANK(4)
219219
220220/**************************************************************/
221221/*                                                            */
222222/**************************************************************/
223#define BANKED_SOUND_ROM_R      SMH_BANK6
223#define BANKED_SOUND_ROM_R      SMH_BANK(6)
224224#define CPU3_ROM1            6         /* Bank number */
225225
226226/**************************************************************/
src/mame/includes/model1.h
r4679r4680
1919
2020ADDRESS_MAP_EXTERN( model1_vr_tgp_map, 32 );
2121
22void model1_vr_tgp_reset( void );
22void model1_vr_tgp_reset( running_machine *machine );
2323void model1_tgp_reset(running_machine *machine, int swa);
2424
2525
src/mame/includes/lockon.h
r4679r4680
1414#define VBEND            0
1515#define VTOTAL            280
1616
17enum
18{
19   MAIN_CPU = 0,
20   GROUND_CPU,
21   OBJECT_CPU,
22   SOUND_CPU
23};
24
2517/*----------- defined in drivers/lockon.c -----------*/
2618extern UINT8  lockon_ctrl_reg;
2719extern UINT32 lockon_main_inten;
src/mame/includes/atari.h
r4679r4680
2424WRITE8_DEVICE_HANDLER(a600xl_pia_pb_w);
2525
2626/* This is needed in MESS as well for Atari 8bit drivers */
27void atari_machine_start(running_machine *machine);   
27void atari_machine_start(running_machine *machine);
2828
2929MACHINE_START( atarixl );
3030
src/mame/includes/slapfght.h
r4679r4680
3434
3535MACHINE_RESET( slapfight );
3636
37extern UINT8 *slapfight_dpram;
38extern size_t slapfight_dpram_size;
39WRITE8_HANDLER( slapfight_dpram_w );
40READ8_HANDLER( slapfight_dpram_r );
41
4237READ8_HANDLER( slapfight_port_00_r );
4338WRITE8_HANDLER( slapfight_port_00_w );
4439WRITE8_HANDLER( slapfight_port_01_w );
src/mame/includes/namcoic.h
r4679r4680
121121/* C355 Motion Object Emulation */
122122
123123/* for palXOR, supply either 0x0 (normal) or 0xf (palette mapping reversed) */
124void namco_obj_init( int gfxbank, int palXOR, int (*code2tile)( int code ) );
124void namco_obj_init( running_machine *machine, int gfxbank, int palXOR, int (*code2tile)( int code ) );
125125void namco_obj_draw(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect, int pri );
126126
127127WRITE16_HANDLER( namco_obj16_w );
src/mame/includes/lordgun.h
r0r4680
1/***************************************************************************
2
3                      -= IGS Lord Of Gun =-
4
5*************************************************************************/
6
7/*----------- defined in video/lordgun.c -----------*/
8
9extern UINT16 *lordgun_vram_0, *lordgun_scroll_x_0, *lordgun_scroll_y_0;
10extern UINT16 *lordgun_vram_1, *lordgun_scroll_x_1, *lordgun_scroll_y_1;
11extern UINT16 *lordgun_vram_2, *lordgun_scroll_x_2, *lordgun_scroll_y_2;
12extern UINT16 *lordgun_vram_3, *lordgun_scroll_x_3, *lordgun_scroll_y_3;
13extern UINT16 *lordgun_scrollram;
14extern int lordgun_whitescreen;
15
16typedef struct _lordgun_gun_data lordgun_gun_data;
17struct _lordgun_gun_data
18{
19   int      scr_x,   scr_y;
20   UINT16   hw_x,   hw_y;
21};
22
23extern lordgun_gun_data lordgun_gun[2];
24
25
26WRITE16_HANDLER( lordgun_vram_0_w );
27WRITE16_HANDLER( lordgun_vram_1_w );
28WRITE16_HANDLER( lordgun_vram_2_w );
29WRITE16_HANDLER( lordgun_vram_3_w );
30
31void lordgun_update_gun(running_machine *machine, int i);
32
33VIDEO_START( lordgun );
34VIDEO_UPDATE( lordgun );
src/mame/includes/espial.h
r4679r4680
77/*----------- defined in drivers/espial.c -----------*/
88
99MACHINE_RESET( espial );
10MACHINE_START( espial );
1011
1112WRITE8_HANDLER( zodiac_master_interrupt_enable_w );
1213INTERRUPT_GEN( zodiac_master_interrupt );
src/mame/includes/pitnrun.h
r4679r4680
2626WRITE8_HANDLER(pitnrun_color_select_w);
2727WRITE8_HANDLER( pitnrun_char_bank_select );
2828WRITE8_HANDLER( pitnrun_scroll_w );
29READ8_HANDLER( pitnrun_videoram_r );
30READ8_HANDLER( pitnrun_videoram2_r );
3129
3230PALETTE_INIT(pitnrun);
3331VIDEO_START(pitnrun);
src/mame/includes/gottlieb.h
r4679r4680
3737extern WRITE8_HANDLER( gottlieb_paletteram_w );
3838
3939VIDEO_START( gottlieb );
40VIDEO_START( screwloo );
4041VIDEO_UPDATE( gottlieb );
src/mame/includes/konamipt.h
r4679r4680
228228   PORT_BIT(  0x2000, IP_ACTIVE_LOW, IPT_BUTTON2        ) PORT_PLAYER(player) \
229229   PORT_BIT(  0x4000, IP_ACTIVE_LOW, button3            ) PORT_PLAYER(player)
230230
231#define KONAMI16_LSB_40_UDLR( player, button3 )   \
232   PORT_BIT(  0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    ) PORT_PLAYER(player) \
233   PORT_BIT(  0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  ) PORT_PLAYER(player) \
234   PORT_BIT(  0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  ) PORT_PLAYER(player) \
235   PORT_BIT(  0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(player) \
236   PORT_BIT(  0x0010, IP_ACTIVE_LOW, IPT_BUTTON1        ) PORT_PLAYER(player) \
237   PORT_BIT(  0x0020, IP_ACTIVE_LOW, IPT_BUTTON2        ) PORT_PLAYER(player) \
238   PORT_BIT(  0x0040, IP_ACTIVE_LOW, button3            ) PORT_PLAYER(player)
239
240#define KONAMI16_MSB_40_UDLR( player, button3 )   \
241   PORT_BIT(  0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    ) PORT_PLAYER(player) \
242   PORT_BIT(  0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  ) PORT_PLAYER(player) \
243   PORT_BIT(  0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  ) PORT_PLAYER(player) \
244   PORT_BIT(  0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(player) \
245   PORT_BIT(  0x1000, IP_ACTIVE_LOW, IPT_BUTTON1        ) PORT_PLAYER(player) \
246   PORT_BIT(  0x2000, IP_ACTIVE_LOW, IPT_BUTTON2        ) PORT_PLAYER(player) \
247   PORT_BIT(  0x4000, IP_ACTIVE_LOW, button3            ) PORT_PLAYER(player)
248
231249#define KONAMI16_LSB( player, button3, start )   \
232250   KONAMI16_LSB_40( player, button3 )         \
233251   PORT_BIT(  0x0080, IP_ACTIVE_LOW, start )
r4679r4680
236254   KONAMI16_MSB_40( player, button3 )         \
237255   PORT_BIT(  0x8000, IP_ACTIVE_LOW, start )
238256
257#define KONAMI16_LSB_UDLR( player, button3, start )   \
258   KONAMI16_LSB_40_UDLR( player, button3 )         \
259   PORT_BIT(  0x0080, IP_ACTIVE_LOW, start )
239260
261#define KONAMI16_MSB_UDLR( player, button3, start )   \
262   KONAMI16_MSB_40_UDLR( player, button3 )         \
263   PORT_BIT(  0x8000, IP_ACTIVE_LOW, start )
264
265
240266/******************** System Inputs (Coin, Start & Service) *******************/
241267
242268#define KONAMI8_SYSTEM_10   \
src/mame/includes/namcos22.h
r4679r4680
7272VIDEO_START( namcos22s );
7373VIDEO_UPDATE( namcos22s );
7474
75void namcos22_draw_direct_poly( const UINT16 *pSource );
75void namcos22_draw_direct_poly( running_machine *machine, const UINT16 *pSource );
7676extern UINT32 namcos22_point_rom_r( offs_t offs );
7777extern void namcos22_enable_slave_simulation( void );
src/mame/includes/genesis.h
r4679r4680
11/* Todo, reorganise, cleanup etc.*/
22
3#include "sound/okim6295.h"
4#include "sound/sn76496.h"
5#include "sound/2612intf.h"
6#include "sound/upd7759.h"
7
83/*----------- defined in drivers/megaplay.c -----------*/
94
105extern UINT16 *ic36_ram;
src/mame/mame.mak
r4679r4680
692692
693693$(MAMEOBJ)/irem.a: \
694694   $(DRIVERS)/m10.o $(VIDEO)/m10.o \
695   $(DRIVERS)/m14.o \
695696   $(DRIVERS)/m52.o $(VIDEO)/m52.o \
696697   $(DRIVERS)/m57.o $(VIDEO)/m57.o \
697698   $(DRIVERS)/m58.o $(VIDEO)/m58.o \
r4679r4680
12741275   $(DRIVERS)/nycaptor.o $(MACHINE)/nycaptor.o $(VIDEO)/nycaptor.o \
12751276   $(DRIVERS)/opwolf.o $(MACHINE)/opwolf.o \
12761277   $(DRIVERS)/othunder.o $(VIDEO)/othunder.o \
1277   $(DRIVERS)/parentj.o \
12781278   $(DRIVERS)/pitnrun.o $(MACHINE)/pitnrun.o $(VIDEO)/pitnrun.o \
12791279   $(DRIVERS)/qix.o $(MACHINE)/qix.o $(AUDIO)/qix.o $(VIDEO)/qix.o \
12801280   $(DRIVERS)/rainbow.o $(MACHINE)/rainbow.o \
r4679r4680
12931293   $(DRIVERS)/taito_l.o $(VIDEO)/taito_l.o \
12941294   $(DRIVERS)/taito_x.o $(MACHINE)/cchip.o \
12951295   $(DRIVERS)/taito_z.o $(VIDEO)/taito_z.o \
1296   $(DRIVERS)/taito_o.o $(VIDEO)/taito_o.o \
12961297   $(DRIVERS)/taitoair.o $(VIDEO)/taitoair.o \
12971298   $(DRIVERS)/taitojc.o $(VIDEO)/taitojc.o \
12981299   $(DRIVERS)/taitopjc.o $\
r4679r4680
15751576   $(DRIVERS)/rcorsair.o \
15761577   $(DRIVERS)/re900.o \
15771578   $(DRIVERS)/shangkid.o $(VIDEO)/shangkid.o \
1579   $(DRIVERS)/skimaxx.o \
15781580   $(DRIVERS)/skyarmy.o \
15791581   $(DRIVERS)/skylncr.o \
15801582   $(DRIVERS)/sliver.o \
src/mame/video/nycaptor.c
r4679r4680
7070
7171VIDEO_START( nycaptor )
7272{
73  nycaptor_spriteram = auto_malloc (160);
73  nycaptor_spriteram = auto_alloc_array(machine, UINT8, 160);
7474  bg_tilemap = tilemap_create( machine, get_tile_info,tilemap_scan_rows,8,8,32,32 );
7575
7676  tilemap_set_transmask(bg_tilemap,0,0xf800,0x7ff); //split 0
r4679r4680
7878  tilemap_set_transmask(bg_tilemap,2,0xfffc,0x0003);//split 2
7979  tilemap_set_transmask(bg_tilemap,3,0xfff0,0x000f);//split 3
8080
81   paletteram = auto_malloc(0x200);
82   paletteram_2 = auto_malloc(0x200);
81   paletteram = auto_alloc_array(machine, UINT8, 0x200);
82   paletteram_2 = auto_alloc_array(machine, UINT8, 0x200);
8383   tilemap_set_scroll_cols(bg_tilemap,32);
8484}
8585
src/mame/video/mitchell.c
r4679r4680
5959   /*
6060        OBJ RAM
6161    */
62   pang_objram=auto_malloc(pang_videoram_size);
63   memset(pang_objram, 0, pang_videoram_size);
62   pang_objram=auto_alloc_array_clear(machine, UINT8, pang_videoram_size);
6463
6564   /*
6665        Palette RAM
6766    */
68   paletteram = auto_malloc(2*machine->config->total_colors);
69   memset(paletteram, 0, 2*machine->config->total_colors);
67   paletteram = auto_alloc_array_clear(machine, UINT8, 2*machine->config->total_colors);
7068}
7169
7270
src/mame/video/blktiger.c
r4679r4680
7171
7272VIDEO_START( blktiger )
7373{
74   scroll_ram = auto_malloc(BGRAM_BANK_SIZE * BGRAM_BANKS);
74   scroll_ram = auto_alloc_array(machine, UINT8, BGRAM_BANK_SIZE * BGRAM_BANKS);
7575
7676   tx_tilemap =    tilemap_create(machine, get_tx_tile_info,tilemap_scan_rows,8,8,32,32);
7777   bg_tilemap8x4 = tilemap_create(machine, get_bg_tile_info,bg8x4_scan,          16,16,128,64);
r4679r4680
160160   coin_counter_w(1,data & 2);
161161
162162   /* bit 5 resets the sound CPU */
163   cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_RESET, (data & 0x20) ? ASSERT_LINE : CLEAR_LINE);
163   cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_RESET, (data & 0x20) ? ASSERT_LINE : CLEAR_LINE);
164164
165165   /* bit 6 flips screen */
166166   flip_screen_set(space->machine, data & 0x40);
r4679r4680
244244
245245VIDEO_EOF( blktiger )
246246{
247   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
247   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
248248
249249   buffer_spriteram_w(space, 0, 0);
250250}
src/mame/video/dynduke.c
r4679r4680
244244
245245VIDEO_EOF( dynduke )
246246{
247   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
247   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
248248
249   buffer_spriteram16_w(space,0,0,0xffff); // Could be a memory location instead
249   buffer_spriteram16_w(space, 0, 0, 0xffff); // Could be a memory location instead
250250}
src/mame/video/hd63484.c
r4679r4680
7272   "RGCPY","RGCPY","RGCPY","RGCPY"    /* Fx */
7373};
7474
75void HD63484_start(void)
75void HD63484_start(running_machine *machine)
7676{
7777   fifo_counter = 0;
78   HD63484_ram = auto_malloc(HD63484_RAM_SIZE * sizeof(*HD63484_ram));
79   memset(HD63484_ram, 0, HD63484_RAM_SIZE * sizeof(*HD63484_ram));
78   HD63484_ram = auto_alloc_array_clear(machine, UINT16, HD63484_RAM_SIZE);
8079}
8180
8281static void doclr16(int opcode,UINT16 fill,int *dst,INT16 _ax,INT16 _ay)
src/mame/video/deco_mlc.c
r4679r4680
2727   else
2828      colour_mask=0x1f;
2929
30//  temp_bitmap = auto_bitmap_alloc( 512, 512, BITMAP_FORMAT_RGB32 );
31   mlc_buffered_spriteram = auto_malloc(0x3000);
30//  temp_bitmap = auto_bitmap_alloc( machine, 512, 512, BITMAP_FORMAT_RGB32 );
31   mlc_buffered_spriteram = auto_alloc_array(machine, UINT32, 0x3000/4);
3232}
3333
3434#ifdef UNUSED_FUNCTION
src/mame/video/tunhunt.c
r4679r4680
7272    We keep track of dirty lines and cache the expanded bitmap.
7373    With max RLE expansion, bitmap size is 256x64.
7474    */
75   tmpbitmap = auto_bitmap_alloc(256, 64, video_screen_get_format(machine->primary_screen));
75   tmpbitmap = auto_bitmap_alloc(machine, 256, 64, video_screen_get_format(machine->primary_screen));
7676
7777   fg_tilemap = tilemap_create(machine, get_fg_tile_info, tilemap_scan_cols, 8, 8, 32, 32);
7878
src/mame/video/tryout.c
r4679r4680
175175   fg_tilemap = tilemap_create(machine, get_fg_tile_info,get_fg_memory_offset,8,8,32,32);
176176   bg_tilemap = tilemap_create(machine, get_bg_tile_info,get_bg_memory_offset,16,16,64,16);
177177
178   tryout_vram=auto_malloc(8 * 0x800);
179   tryout_vram_gfx=auto_malloc(0x6000);
178   tryout_vram=auto_alloc_array(machine, UINT8, 8 * 0x800);
179   tryout_vram_gfx=auto_alloc_array(machine, UINT8, 0x6000);
180180
181181   gfx_element_set_source(machine->gfx[2], tryout_vram_gfx);
182182
src/mame/video/hd63484.h
r4679r4680
33extern UINT16 *HD63484_ram;
44extern UINT16 HD63484_reg[256/2];
55
6void HD63484_start(void);
6void HD63484_start(running_machine *machine);
77
88READ16_HANDLER( HD63484_status_r );
99WRITE16_HANDLER( HD63484_address_w );
src/mame/video/madmotor.c
r4679r4680
1111UINT16 *madmotor_pf1_rowscroll;
1212UINT16 *madmotor_pf1_data,*madmotor_pf2_data,*madmotor_pf3_data;
1313
14static UINT16 madmotor_pf1_control[16];
15static UINT16 madmotor_pf2_control[16];
16static UINT16 madmotor_pf3_control[16];
14UINT16 *madmotor_pf1_control;
15UINT16 *madmotor_pf2_control;
16UINT16 *madmotor_pf3_control;
1717
1818static int flipscreen;
1919static tilemap *madmotor_pf1_tilemap,*madmotor_pf2_tilemap,*madmotor_pf3_tilemap,*madmotor_pf3a_tilemap;
r4679r4680
125125
126126/******************************************************************************/
127127
128READ16_HANDLER( madmotor_pf1_data_r )
129{
130   return madmotor_pf1_data[offset];
131}
132
133READ16_HANDLER( madmotor_pf2_data_r )
134{
135   return madmotor_pf2_data[offset];
136}
137
138READ16_HANDLER( madmotor_pf3_data_r )
139{
140   return madmotor_pf3_data[offset];
141}
142
143128WRITE16_HANDLER( madmotor_pf1_data_w )
144129{
145130   COMBINE_DATA(&madmotor_pf1_data[offset]);
r4679r4680
163148   tilemap_mark_tile_dirty(madmotor_pf3a_tilemap,offset);
164149}
165150
166WRITE16_HANDLER( madmotor_pf1_control_w )
167{
168   COMBINE_DATA(&madmotor_pf1_control[offset]);
169}
170
171WRITE16_HANDLER( madmotor_pf2_control_w )
172{
173   COMBINE_DATA(&madmotor_pf2_control[offset]);
174}
175
176WRITE16_HANDLER( madmotor_pf3_control_w )
177{
178   COMBINE_DATA(&madmotor_pf3_control[offset]);
179}
180
181READ16_HANDLER( madmotor_pf1_rowscroll_r )
182{
183   return madmotor_pf1_rowscroll[offset];
184}
185
186WRITE16_HANDLER( madmotor_pf1_rowscroll_w )
187{
188   COMBINE_DATA(&madmotor_pf1_rowscroll[offset]);
189}
190
191151/******************************************************************************/
192152
193153static void draw_sprites(running_machine *machine, bitmap_t *bitmap,const rectangle *cliprect,int pri_mask,int pri_val)
src/mame/video/mystston.c
r4679r4680
4747
4848static TIMER_CALLBACK( interrupt_callback )
4949{
50   mystston_state *state = machine->driver_data;
50   mystston_state *state = (mystston_state *)machine->driver_data;
5151   int scanline = param;
5252
5353   mystston_on_scanline_interrupt(machine);
r4679r4680
125125
126126WRITE8_HANDLER( mystston_video_control_w )
127127{
128   mystston_state *state = space->machine->driver_data;
128   mystston_state *state = (mystston_state *)space->machine->driver_data;
129129
130130   *state->video_control = data;
131131
r4679r4680
151151
152152static TILE_GET_INFO( get_bg_tile_info )
153153{
154   mystston_state *state = machine->driver_data;
154   mystston_state *state = (mystston_state *)machine->driver_data;
155155
156156   int page = (*state->video_control & 0x04) << 8;
157157   int code = ((state->bg_videoram[page | 0x200 | tile_index] & 0x01) << 8) | state->bg_videoram[page | tile_index];
r4679r4680
163163
164164static TILE_GET_INFO( get_fg_tile_info )
165165{
166   mystston_state *state = machine->driver_data;
166   mystston_state *state = (mystston_state *)machine->driver_data;
167167
168168   int code = ((state->fg_videoram[0x400 | tile_index] & 0x07) << 8) | state->fg_videoram[tile_index];
169169   int color = ((*state->video_control & 0x01) << 1) | ((*state->video_control & 0x02) >> 1);
r4679r4680
219219
220220static VIDEO_START( mystston )
221221{
222   mystston_state *state = machine->driver_data;
222   mystston_state *state = (mystston_state *)machine->driver_data;
223223
224224   state->bg_tilemap = tilemap_create(machine, get_bg_tile_info, tilemap_scan_cols_flip_x, 16, 16, 16, 32);
225225
r4679r4680
240240
241241static VIDEO_RESET( mystston )
242242{
243   mystston_state *state = machine->driver_data;
243   mystston_state *state = (mystston_state *)machine->driver_data;
244244
245245   timer_adjust_oneshot(state->interrupt_timer, video_screen_get_time_until_pos(machine->primary_screen, FIRST_INT_VPOS - 1, INT_HPOS), FIRST_INT_VPOS);
246246}
r4679r4680
255255
256256static VIDEO_UPDATE( mystston )
257257{
258   mystston_state *state = screen->machine->driver_data;
258   mystston_state *state = (mystston_state *)screen->machine->driver_data;
259259
260260   int flip = (*state->video_control & 0x80) ^ ((input_port_read(screen->machine, "DSW1") & 0x20) << 2);
261261
src/mame/video/midyunit.c
r4679r4680
7070static VIDEO_START( common )
7171{
7272   /* allocate memory */
73   midyunit_cmos_ram = auto_malloc(0x2000 * 4);
74   local_videoram = auto_malloc(0x80000);
75   pen_map = auto_malloc(65536 * sizeof(pen_map[0]));
73   midyunit_cmos_ram = auto_alloc_array(machine, UINT16, (0x2000 * 4)/2);
74   local_videoram = auto_alloc_array_clear(machine, UINT16, 0x80000/2);
75   pen_map = auto_alloc_array(machine, pen_t, 65536);
7676
77   /* we have to erase this since we rely on upper bits being 0 */
78   memset(local_videoram, 0, 0x80000);
79
8077   /* reset all the globals */
8178   midyunit_cmos_page = 0;
8279   autoerase_enable = 0;
r4679r4680
8885
8986   /* register for state saving */
9087   state_save_register_global(machine, autoerase_enable);
91   state_save_register_global_pointer(machine, local_videoram, 0x80000/sizeof(local_videoram[0]));
92   state_save_register_global_pointer(machine, midyunit_cmos_ram, (0x2000 * 4)/sizeof(midyunit_cmos_ram[0]));
88   state_save_register_global_pointer(machine, local_videoram, 0x80000/2);
89   state_save_register_global_pointer(machine, midyunit_cmos_ram, (0x2000 * 4)/2);
9390   state_save_register_global(machine, videobank_select);
9491   state_save_register_global_array(machine, dma_register);
9592}
r4679r4680
389386static TIMER_CALLBACK( dma_callback )
390387{
391388   dma_register[DMA_COMMAND] &= ~0x8000; /* tell the cpu we're done */
392   cpu_set_input_line(machine->cpu[0], 0, ASSERT_LINE);
389   cputag_set_input_line(machine, "maincpu", 0, ASSERT_LINE);
393390}
394391
395392
r4679r4680
452449
453450   /* high bit triggers action */
454451   command = dma_register[DMA_COMMAND];
455   cpu_set_input_line(space->machine->cpu[0], 0, CLEAR_LINE);
452   cputag_set_input_line(space->machine, "maincpu", 0, CLEAR_LINE);
456453   if (!(command & 0x8000))
457454      return;
458455
src/mame/video/stvvdp1.c
r4679r4680
19871987
19881988   /* not here! this is done every frame drawn even if the cpu isn't running eg in the debugger */
19891989//  if(!(stv_scu[40] & 0x2000)) /*Sprite draw end irq*/
1990//      cpu_set_input_line_and_vector(machine->cpu[0], 2, HOLD_LINE , 0x4d);
1990//      cputag_set_input_line_and_vector(machine, "maincpu", 2, HOLD_LINE , 0x4d);
19911991
19921992   if (vdp1_sprite_log) logerror ("End of list processing!\n");
19931993}
r4679r4680
20952095
20962096int stv_vdp1_start ( running_machine *machine )
20972097{
2098   stv_vdp1_regs = auto_malloc ( 0x040000 );
2099   stv_vdp1_vram = auto_malloc ( 0x100000 );
2100   stv_vdp1_gfx_decode = auto_malloc( 0x100000 );
2098   stv_vdp1_regs = auto_alloc_array_clear(machine, UINT32, 0x040000/4 );
2099   stv_vdp1_vram = auto_alloc_array_clear(machine, UINT32, 0x100000/4 );
2100   stv_vdp1_gfx_decode = auto_alloc_array(machine, UINT8, 0x100000 );
21012101
2102   stv_vdp1_shading_data = auto_malloc( sizeof(struct stv_vdp1_poly_scanline_data) );
2102   stv_vdp1_shading_data = auto_alloc(machine, struct stv_vdp1_poly_scanline_data);
21032103
2104   memset(stv_vdp1_regs, 0, 0x040000);
2105   memset(stv_vdp1_vram, 0, 0x100000);
2104   stv_framebuffer[0] = auto_alloc_array(machine, UINT16, 1024 * 256 * 2 ); /* *2 is for double interlace */
2105   stv_framebuffer[1] = auto_alloc_array(machine, UINT16, 1024 * 256 * 2 );
21062106
2107   stv_framebuffer[0] = auto_malloc( 1024 * 256 * sizeof(UINT16) * 2 ); /* *2 is for double interlace */
2108   stv_framebuffer[1] = auto_malloc( 1024 * 256 * sizeof(UINT16) * 2 );
2107   stv_framebuffer_display_lines = auto_alloc_array(machine, UINT16 *, 512);
2108   stv_framebuffer_draw_lines = auto_alloc_array(machine, UINT16 *, 512);
21092109
2110   stv_framebuffer_display_lines = auto_malloc( 512 * sizeof(UINT16*) );
2111   stv_framebuffer_draw_lines = auto_malloc( 512 * sizeof(UINT16*) );
2112
21132110   stv_framebuffer_width = stv_framebuffer_height = 0;
21142111   stv_framebuffer_mode = -1;
21152112   stv_framebuffer_double_interlace = -1;
src/mame/video/nbmj9195.c
r4679r4680
413413   int height = video_screen_get_height(machine->primary_screen);
414414
415415   nbmj9195_tmpbitmap[0] = video_screen_auto_bitmap_alloc(machine->primary_screen);
416   nbmj9195_videoram[0] = auto_malloc(width * height * sizeof(UINT16));
417   nbmj9195_palette = auto_malloc(0x200 * sizeof(UINT8));
418   nbmj9195_clut[0] = auto_malloc(0x1000 * sizeof(UINT8));
419   memset(nbmj9195_videoram[0], 0x0000, (width * height * sizeof(UINT16)));
416   nbmj9195_videoram[0] = auto_alloc_array_clear(machine, UINT16, width * height);
417   nbmj9195_palette = auto_alloc_array(machine, UINT8, 0x200);
418   nbmj9195_clut[0] = auto_alloc_array(machine, UINT8, 0x1000);
420419   nbmj9195_scanline[0] = nbmj9195_scanline[1] = SCANLINE_MIN;
421420   nb19010_busyflag = 1;
422421   gfxdraw_mode = 0;
r4679r4680
429428
430429   nbmj9195_tmpbitmap[0] = video_screen_auto_bitmap_alloc(machine->primary_screen);
431430   nbmj9195_tmpbitmap[1] = video_screen_auto_bitmap_alloc(machine->primary_screen);
432   nbmj9195_videoram[0] = auto_malloc(width * height * sizeof(UINT16));
433   nbmj9195_videoram[1] = auto_malloc(width * height * sizeof(UINT16));
434   nbmj9195_palette = auto_malloc(0x200 * sizeof(UINT8));
435   nbmj9195_clut[0] = auto_malloc(0x1000 * sizeof(UINT8));
436   nbmj9195_clut[1] = auto_malloc(0x1000 * sizeof(UINT8));
437   memset(nbmj9195_videoram[0], 0x0000, (width * height * sizeof(UINT16)));
438   memset(nbmj9195_videoram[1], 0x0000, (width * height * sizeof(UINT16)));
431   nbmj9195_videoram[0] = auto_alloc_array_clear(machine, UINT16, width * height);
432   nbmj9195_videoram[1] = auto_alloc_array_clear(machine, UINT16, width * height);
433   nbmj9195_palette = auto_alloc_array(machine, UINT8, 0x200);
434   nbmj9195_clut[0] = auto_alloc_array(machine, UINT8, 0x1000);
435   nbmj9195_clut[1] = auto_alloc_array(machine, UINT8, 0x1000);
439436   nbmj9195_scanline[0] = nbmj9195_scanline[1] = SCANLINE_MIN;
440437   nb19010_busyflag = 1;
441438   gfxdraw_mode = 1;
r4679r4680
448445
449446   nbmj9195_tmpbitmap[0] = video_screen_auto_bitmap_alloc(machine->primary_screen);
450447   nbmj9195_tmpbitmap[1] = video_screen_auto_bitmap_alloc(machine->primary_screen);
451   nbmj9195_videoram[0] = auto_malloc(width * height * sizeof(UINT16));
452   nbmj9195_videoram[1] = auto_malloc(width * height * sizeof(UINT16));
453   nbmj9195_videoworkram[0] = auto_malloc(width * height * sizeof(UINT16));
454   nbmj9195_videoworkram[1] = auto_malloc(width * height * sizeof(UINT16));
455   nbmj9195_nb22090_palette = auto_malloc(0xc00 * sizeof(UINT8));
456   nbmj9195_clut[0] = auto_malloc(0x1000 * sizeof(UINT8));
457   nbmj9195_clut[1] = auto_malloc(0x1000 * sizeof(UINT8));
458   memset(nbmj9195_videoram[0], 0x0000, (width * height * sizeof(UINT16)));
459   memset(nbmj9195_videoram[1], 0x0000, (width * height * sizeof(UINT16)));
460   memset(nbmj9195_videoworkram[0], 0x0000, (width * height * sizeof(UINT16)));
461   memset(nbmj9195_videoworkram[1], 0x0000, (width * height * sizeof(UINT16)));
448   nbmj9195_videoram[0] = auto_alloc_array_clear(machine, UINT16, width * height);
449   nbmj9195_videoram[1] = auto_alloc_array_clear(machine, UINT16, width * height);
450   nbmj9195_videoworkram[0] = auto_alloc_array_clear(machine, UINT16, width * height);
451   nbmj9195_videoworkram[1] = auto_alloc_array_clear(machine, UINT16, width * height);
452   nbmj9195_nb22090_palette = auto_alloc_array(machine, UINT8, 0xc00);
453   nbmj9195_clut[0] = auto_alloc_array(machine, UINT8, 0x1000);
454   nbmj9195_clut[1] = auto_alloc_array(machine, UINT8, 0x1000);
462455   nbmj9195_scanline[0] = nbmj9195_scanline[1] = SCANLINE_MIN;
463456   nb19010_busyflag = 1;
464457   gfxdraw_mode = 2;
src/mame/video/simpl156.c
r4679r4680
135135VIDEO_START( simpl156 )
136136{
137137   /* allocate the ram as 16-bit (we do it here because the CPU is 32-bit) */
138   deco16_pf1_data = auto_malloc(0x2000);
139   deco16_pf2_data = auto_malloc(0x2000);
140   deco16_pf1_rowscroll = auto_malloc(0x800);
141   deco16_pf2_rowscroll = auto_malloc(0x800);
142   deco16_pf12_control = auto_malloc(0x10);
143   paletteram16 =  auto_malloc(0x1000);
138   deco16_pf1_data = auto_alloc_array(machine, UINT16, 0x2000/2);
139   deco16_pf2_data = auto_alloc_array(machine, UINT16, 0x2000/2);
140   deco16_pf1_rowscroll = auto_alloc_array(machine, UINT16, 0x800/2);
141   deco16_pf2_rowscroll = auto_alloc_array(machine, UINT16, 0x800/2);
142   deco16_pf12_control = auto_alloc_array(machine, UINT16, 0x10/2);
143   paletteram16 =  auto_alloc_array(machine, UINT16, 0x1000/2);
144144
145145   /* and register the allocated ram so that save states still work */
146146   state_save_register_global_pointer(machine, deco16_pf1_data, 0x2000/2);
src/mame/video/twincobr.c
r4679r4680
120120
121121   twincobr_create_tilemaps(machine);
122122
123   twincobr_txvideoram16 = auto_malloc(twincobr_txvideoram_size*2);
124   memset(twincobr_txvideoram16,0,twincobr_txvideoram_size*2);
123   twincobr_txvideoram16 = auto_alloc_array_clear(machine, UINT16, twincobr_txvideoram_size);
124   twincobr_fgvideoram16 = auto_alloc_array_clear(machine, UINT16, twincobr_fgvideoram_size);
125   twincobr_bgvideoram16 = auto_alloc_array_clear(machine, UINT16, twincobr_bgvideoram_size);
125126
126   twincobr_fgvideoram16 = auto_malloc(twincobr_fgvideoram_size*2);
127   memset(twincobr_fgvideoram16,0,twincobr_fgvideoram_size*2);
128
129   twincobr_bgvideoram16 = auto_malloc(twincobr_bgvideoram_size*2);
130   memset(twincobr_bgvideoram16,0,twincobr_bgvideoram_size*2);
131
132127   twincobr_display_on = 0;
133128   twincobr_display(twincobr_display_on);
134129
r4679r4680
514509
515510VIDEO_EOF( toaplan0 )
516511{
517   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
512   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
518513
519514   /* Spriteram is always 1 frame ahead, suggesting spriteram buffering.
520515        There are no CPU output registers that control this so we
src/mame/video/arabian.c
r4679r4680
172172   /* allocate a common bitmap to use for both planes */
173173   /* plane A (top plane with motion objects) is in the upper 4 bits */
174174   /* plane B (bottom plane with playfield) is in the lower 4 bits */
175   main_bitmap = auto_malloc(BITMAP_WIDTH * BITMAP_HEIGHT);
175   main_bitmap = auto_alloc_array(machine, UINT8, BITMAP_WIDTH * BITMAP_HEIGHT);
176176
177177   /* allocate memory for the converted graphics data */
178   converted_gfx = auto_malloc(0x8000 * 2);
178   converted_gfx = auto_alloc_array(machine, UINT8, 0x8000 * 2);
179179
180180   /*--------------------------------------------------
181181        transform graphics data into more usable format
src/mame/video/galpani2.c
r4679r4680
131131
132132VIDEO_START( galpani2 )
133133{
134   galpani2_bg15_bitmap  = auto_bitmap_alloc(256*8, 256, BITMAP_FORMAT_INDEXED16);
135   galpani2_bg8_bitmap_0 = auto_bitmap_alloc(512, 256, BITMAP_FORMAT_INDEXED16);
136   galpani2_bg8_bitmap_1 = auto_bitmap_alloc(512, 256, BITMAP_FORMAT_INDEXED16);
134   galpani2_bg15_bitmap  = auto_bitmap_alloc(machine, 256*8, 256, BITMAP_FORMAT_INDEXED16);
135   galpani2_bg8_bitmap_0 = auto_bitmap_alloc(machine, 512, 256, BITMAP_FORMAT_INDEXED16);
136   galpani2_bg8_bitmap_1 = auto_bitmap_alloc(machine, 512, 256, BITMAP_FORMAT_INDEXED16);
137137
138138   VIDEO_START_CALL(kaneko16_sprites);
139139}
r4679r4680
151151{
152152   int layers_ctrl = -1;
153153
154   galpani2_mcu_run(screen->machine);
155
156154#ifdef MAME_DEBUG
157155if (input_code_pressed(KEYCODE_Z))
158156{   int msk = 0;
src/mame/video/taito_o.c
r0r4680
1/***************************************************************************
2
3Based on taito_h.c
4
5***************************************************************************/
6
7#include "driver.h"
8#include "taitoic.h"
9
10
11/* These are hand-tuned values */
12static const int zoomy_conv_table[] =
13{
14/*    +0   +1   +2   +3   +4   +5   +6   +7    +8   +9   +a   +b   +c   +d   +e   +f */
15   0x00,0x01,0x01,0x02,0x02,0x03,0x04,0x05, 0x06,0x06,0x07,0x08,0x09,0x0a,0x0a,0x0b,   /* 0x00 */
16   0x0b,0x0c,0x0c,0x0d,0x0e,0x0e,0x0f,0x10, 0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x16,
17   0x17,0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e, 0x1f,0x20,0x21,0x22,0x24,0x25,0x26,0x27,
18   0x28,0x2a,0x2b,0x2c,0x2e,0x30,0x31,0x32, 0x34,0x36,0x37,0x38,0x3a,0x3c,0x3e,0x3f,
19
20   0x40,0x41,0x42,0x42,0x43,0x43,0x44,0x44, 0x45,0x45,0x46,0x46,0x47,0x47,0x48,0x49,   /* 0x40 */
21   0x4a,0x4a,0x4b,0x4b,0x4c,0x4d,0x4e,0x4f, 0x4f,0x50,0x51,0x51,0x52,0x53,0x54,0x55,
22   0x56,0x57,0x58,0x59,0x5a,0x5b,0x5c,0x5d, 0x5e,0x5f,0x60,0x61,0x62,0x63,0x64,0x66,
23   0x67,0x68,0x6a,0x6b,0x6c,0x6e,0x6f,0x71, 0x72,0x74,0x76,0x78,0x80,0x7b,0x7d,0x7f
24};
25
26VIDEO_START( parentj )
27{
28   TC0080VCO_vh_start(machine,0,0,1,1,-2);
29}
30
31
32static void parentj_draw_sprites(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect, int priority)
33{
34   /* Y chain size is 16/32?/64/64? pixels. X chain size
35       is always 64 pixels. */
36
37   static const int size[] = { 1, 2, 4, 4 };
38   int x0, y0, x, y, dx, dy, ex, ey, zx, zy;
39   int ysize;
40   int j, k;
41   int offs;               /* sprite RAM offset */
42   int tile_offs;            /* sprite chain offset */
43   int zoomx, zoomy;         /* zoom value */
44
45   for (offs = 0x03f8 / 2 ; offs >= 0 ; offs -= 0x008 / 2)
46   {
47      if (offs <  0x01b0 && priority == 0)   continue;
48      if (offs >= 0x01b0 && priority == 1)   continue;
49
50      x0        =  TC0080VCO_spriteram[offs + 1] & 0x3ff;
51      y0        =  TC0080VCO_spriteram[offs + 0] & 0x3ff;
52      zoomx     = (TC0080VCO_spriteram[offs + 2] & 0x7f00) >> 8;
53      zoomy     = (TC0080VCO_spriteram[offs + 2] & 0x007f);
54      tile_offs = (TC0080VCO_spriteram[offs + 3] & 0x1fff) << 2;
55      ysize     = size[ ( TC0080VCO_spriteram[ offs ] & 0x0c00 ) >> 10 ];
56
57      if (tile_offs)
58      {
59         /* Convert zoomy value to real value as zoomx */
60         zoomy = zoomy_conv_table[zoomy];
61
62         if (zoomx < 63)
63         {
64            dx = 8 + (zoomx + 2) / 8;
65            ex = (zoomx + 2) % 8;
66            zx = ((dx << 1) + ex) << 11;
67         }
68         else
69         {
70            dx = 16 + (zoomx - 63) / 4;
71            ex = (zoomx - 63) % 4;
72            zx = (dx + ex) << 12;
73         }
74
75         if (zoomy < 63)
76         {
77            dy = 8 + (zoomy + 2) / 8;
78            ey = (zoomy + 2) % 8;
79            zy = ((dy << 1) + ey) << 11;
80         }
81         else
82         {
83            dy = 16 + (zoomy - 63) / 4;
84            ey = (zoomy - 63) % 4;
85            zy = (dy + ey) << 12;
86         }
87
88         if (x0 >= 0x200) x0 -= 0x400;
89         if (y0 >= 0x200) y0 -= 0x400;
90
91         if (TC0080VCO_flipscreen)
92         {
93            x0 = 497 - x0;
94            y0 = 498 - y0;
95            dx = -dx;
96            dy = -dy;
97         }
98         else
99         {
100            x0 += 1;
101            y0 += 2;
102         }
103
104         y = y0;
105         for (j = 0 ; j < ysize ; j ++)
106         {
107            x = x0;
108            for (k = 0 ; k < 4 ; k ++)
109            {
110               if (tile_offs >= 0x1000)
111               {
112                  int tile, color, flipx, flipy;
113
114                  tile  = TC0080VCO_chain_ram_0[tile_offs] & 0x7fff;
115                  color = TC0080VCO_chain_ram_1[tile_offs] & 0x001f;
116                  flipx = TC0080VCO_chain_ram_1[tile_offs] & 0x0040;
117                  flipy = TC0080VCO_chain_ram_1[tile_offs] & 0x0080;
118
119                  if (TC0080VCO_flipscreen)
120                  {
121                     flipx ^= 0x0040;
122                     flipy ^= 0x0080;
123                  }
124
125                  drawgfxzoom( bitmap, machine -> gfx[0],
126                         tile,
127                         color,
128                         flipx, flipy,
129                         x, y,
130                         cliprect,
131                         TRANSPARENCY_PEN, 0,
132                         zx, zy
133                  );
134               }
135               tile_offs ++;
136               x += dx;
137            }
138            y += dy;
139         }
140      }
141   }
142}
143
144
145VIDEO_UPDATE( parentj )
146{
147   TC0080VCO_tilemap_update(screen->machine);
148   bitmap_fill(bitmap, cliprect, 0);
149   TC0080VCO_tilemap_draw(screen->machine,bitmap,cliprect,0,TILEMAP_DRAW_OPAQUE,0);
150   parentj_draw_sprites(screen->machine,bitmap,cliprect,0);
151   parentj_draw_sprites(screen->machine,bitmap,cliprect,1);
152   TC0080VCO_tilemap_draw(screen->machine,bitmap,cliprect,1,0,0);
153   TC0080VCO_tilemap_draw(screen->machine,bitmap,cliprect,2,0,0);
154   return 0;
155}
156
157
src/mame/video/thief.c
r4679r4680
103103VIDEO_START( thief ){
104104   memset( &thief_coprocessor, 0x00, sizeof(thief_coprocessor) );
105105
106   videoram = auto_malloc( 0x2000*4*2 );
107   memset( videoram, 0, 0x2000*4*2 );
106   videoram = auto_alloc_array_clear(machine, UINT8, 0x2000*4*2 );
108107
109   thief_coprocessor.image_ram = auto_malloc( 0x2000 );
110   thief_coprocessor.context_ram = auto_malloc( 0x400 );
108   thief_coprocessor.image_ram = auto_alloc_array(machine, UINT8, 0x2000 );
109   thief_coprocessor.context_ram = auto_alloc_array(machine, UINT8, 0x400 );
111110}
112111
113112VIDEO_UPDATE( thief ){
src/mame/video/exterm.c
r4679r4680
7878   int x;
7979
8080   /* get parameters for the slave CPU */
81   tms34010_get_display_params(screen->machine->cpu[1], &fgparams);
81   tms34010_get_display_params(cputag_get_cpu(screen->machine, "slave"), &fgparams);
8282
8383   /* compute info about the slave vram */
8484   if (fgparams.enabled && scanline >= fgparams.veblnk && scanline < fgparams.vsblnk && fgparams.heblnk < fgparams.hsblnk)
src/mame/video/policetr.c
r4679r4680
4848   srcbitmap_height_mask = (memory_region_length(machine, "gfx1") / SRCBITMAP_WIDTH) - 1;
4949
5050   /* the destination bitmap is not directly accessible to the CPU */
51   dstbitmap = auto_malloc(DSTBITMAP_WIDTH * DSTBITMAP_HEIGHT);
51   dstbitmap = auto_alloc_array(machine, UINT8, DSTBITMAP_WIDTH * DSTBITMAP_HEIGHT);
5252}
5353
5454
r4679r4680
245245
246246            /* latch 0x50 clears IRQ4 */
247247            case 0x50:
248               cpu_set_input_line(space->machine->cpu[0], R3000_IRQ4, CLEAR_LINE);
248               cputag_set_input_line(space->machine, "audiocpu", R3000_IRQ4, CLEAR_LINE);
249249               break;
250250
251251            /* latch 0x60 clears IRQ5 */
252252            case 0x60:
253               cpu_set_input_line(space->machine->cpu[0], R3000_IRQ5, CLEAR_LINE);
253               cputag_set_input_line(space->machine, "audiocpu", R3000_IRQ5, CLEAR_LINE);
254254               break;
255255
256256            /* log anything else */
src/mame/video/seibuspi.c
r4679r4680
494494   tilemap_set_transparent_pen(mid_layer, 63);
495495   tilemap_set_transparent_pen(fore_layer, 63);
496496
497   tilemap_ram = auto_malloc(0x4000);
498   palette_ram = auto_malloc(0x3000);
499   sprite_ram = auto_malloc(0x1000);
500   memset(tilemap_ram, 0, 0x4000);
501   memset(palette_ram, 0, 0x3000);
502   memset(sprite_ram, 0, 0x1000);
497   tilemap_ram = auto_alloc_array_clear(machine, UINT32, 0x4000/4);
498   palette_ram = auto_alloc_array_clear(machine, UINT32, 0x3000/4);
499   sprite_ram = auto_alloc_array_clear(machine, UINT32, 0x1000/4);
503500
504501   sprite_bpp = 6;
505502   sprite_dma_length = 0x1000;
r4679r4680
663660{
664661   int i;
665662
666   palette_ram = auto_malloc(0x4000);
667   sprite_ram = auto_malloc(0x2000);
668   memset(palette_ram, 0, 0x4000);
669   memset(sprite_ram, 0, 0x2000);
663   palette_ram = auto_alloc_array_clear(machine, UINT32, 0x4000/4);
664   sprite_ram = auto_alloc_array_clear(machine, UINT32, 0x2000/4);
670665
671666   sprite_bpp = 8;
672667   sprite_dma_length = 0x2000;
src/mame/video/sauro.c
r4679r4680
152152
153153/* Tricky Doc */
154154
155WRITE8_HANDLER ( trckydoc_spriteram_mirror_w )
156{
157   spriteram[offset] = data;
158}
159
160155VIDEO_START( trckydoc )
161156{
162157   bg_tilemap = tilemap_create(machine, get_tile_info_bg, tilemap_scan_cols,
src/mame/video/midtunit.c
r4679r4680
8686VIDEO_START( midtunit )
8787{
8888   /* allocate memory */
89   local_videoram = auto_malloc(0x100000);
89   local_videoram = auto_alloc_array(machine, UINT16, 0x100000/2);
9090
9191   /* reset all the globals */
9292   gfxbank_offset[0] = 0x000000;
r4679r4680
593593static TIMER_CALLBACK( dma_callback )
594594{
595595   dma_register[DMA_COMMAND] &= ~0x8000; /* tell the cpu we're done */
596   cpu_set_input_line(machine->cpu[0], 0, ASSERT_LINE);
596   cputag_set_input_line(machine, "maincpu", 0, ASSERT_LINE);
597597}
598598
599599
r4679r4680
683683
684684   /* high bit triggers action */
685685   command = dma_register[DMA_COMMAND];
686   cpu_set_input_line(space->machine->cpu[0], 0, CLEAR_LINE);
686   cputag_set_input_line(space->machine, "maincpu", 0, CLEAR_LINE);
687687   if (!(command & 0x8000))
688688      return;
689689
src/mame/video/carpolo.c
r4679r4680
162162{
163163   bitmap_format format = video_screen_get_format(machine->primary_screen);
164164
165   sprite_sprite_collision_bitmap1 = auto_bitmap_alloc(SPRITE_WIDTH*2, SPRITE_HEIGHT*2, format);
166   sprite_sprite_collision_bitmap2 = auto_bitmap_alloc(SPRITE_WIDTH*2, SPRITE_HEIGHT*2, format);
165   sprite_sprite_collision_bitmap1 = auto_bitmap_alloc(machine, SPRITE_WIDTH*2, SPRITE_HEIGHT*2, format);
166   sprite_sprite_collision_bitmap2 = auto_bitmap_alloc(machine, SPRITE_WIDTH*2, SPRITE_HEIGHT*2, format);
167167
168   sprite_goal_collision_bitmap1 = auto_bitmap_alloc(SPRITE_WIDTH+GOAL_WIDTH, SPRITE_HEIGHT+GOAL_HEIGHT, format);
169   sprite_goal_collision_bitmap2 = auto_bitmap_alloc(SPRITE_WIDTH+GOAL_WIDTH, SPRITE_HEIGHT+GOAL_HEIGHT, format);
168   sprite_goal_collision_bitmap1 = auto_bitmap_alloc(machine, SPRITE_WIDTH+GOAL_WIDTH, SPRITE_HEIGHT+GOAL_HEIGHT, format);
169   sprite_goal_collision_bitmap2 = auto_bitmap_alloc(machine, SPRITE_WIDTH+GOAL_WIDTH, SPRITE_HEIGHT+GOAL_HEIGHT, format);
170170
171   sprite_border_collision_bitmap = auto_bitmap_alloc(SPRITE_WIDTH, SPRITE_HEIGHT, format);
171   sprite_border_collision_bitmap = auto_bitmap_alloc(machine, SPRITE_WIDTH, SPRITE_HEIGHT, format);
172172
173173    state_save_register_global_bitmap(machine, sprite_sprite_collision_bitmap1);
174174    state_save_register_global_bitmap(machine, sprite_sprite_collision_bitmap2);
src/mame/video/drmicro.c
r4679r4680
112112
113113VIDEO_START( drmicro)
114114{
115   drmicro_videoram = auto_malloc(0x1000);
115   drmicro_videoram = auto_alloc_array(machine, UINT8, 0x1000);
116116
117117   drmicro_bg1 = tilemap_create(machine, get_bg1_tile_info, tilemap_scan_rows, 8,8,32,32);
118118   drmicro_bg2 = tilemap_create(machine, get_bg2_tile_info, tilemap_scan_rows, 8,8,32,32);
src/mame/video/system1.c
r4679r4680
105105
106106static TILE_GET_INFO( tile_get_info )
107107{
108   UINT8 *rambase = param;
108   const UINT8 *rambase = (const UINT8 *)param;
109109   UINT32 tiledata = rambase[tile_index*2+0] | (rambase[tile_index*2+1] << 8);
110110   UINT32 code = ((tiledata >> 4) & 0x800) | (tiledata & 0x7ff);
111111   UINT32 color = (tiledata >> 5) & 0xff;
r4679r4680
126126   int pagenum;
127127
128128   /* allocate memory for the collision arrays */
129   mix_collide = auto_malloc(64);
130   memset(mix_collide, 0, 64);
131   sprite_collide = auto_malloc(1024);
132   memset(sprite_collide, 0, 1024);
129   mix_collide = auto_alloc_array_clear(machine, UINT8, 64);
130   sprite_collide = auto_alloc_array_clear(machine, UINT8, 1024);
133131
134132   /* allocate memory for videoram */
135133   tilemap_pages = pagecount;
136   videoram = auto_malloc(0x800 * pagecount);
137   memset(videoram, 0, 0x800 * pagecount);
134   videoram = auto_alloc_array_clear(machine, UINT8, 0x800 * pagecount);
138135
139136   /* create the tilemap pages */
140137   for (pagenum = 0; pagenum < pagecount; pagenum++)
r4679r4680
145142   }
146143
147144   /* allocate a temporary bitmap for sprite rendering */
148   sprite_bitmap = auto_bitmap_alloc(256, 256, BITMAP_FORMAT_INDEXED16);
145   sprite_bitmap = auto_bitmap_alloc(machine, 256, 256, BITMAP_FORMAT_INDEXED16);
149146
150147   /* register for save stats */
151148   state_save_register_global(machine, system1_video_mode);
src/mame/video/niyanpai.c
r4679r4680
382382   niyanpai_tmpbitmap[0] = video_screen_auto_bitmap_alloc(machine->primary_screen);
383383   niyanpai_tmpbitmap[1] = video_screen_auto_bitmap_alloc(machine->primary_screen);
384384   niyanpai_tmpbitmap[2] = video_screen_auto_bitmap_alloc(machine->primary_screen);
385   niyanpai_videoram[0] = auto_malloc(width * height * sizeof(short));
386   niyanpai_videoram[1] = auto_malloc(width * height * sizeof(short));
387   niyanpai_videoram[2] = auto_malloc(width * height * sizeof(short));
388   niyanpai_videoworkram[0] = auto_malloc(width * height * sizeof(short));
389   niyanpai_videoworkram[1] = auto_malloc(width * height * sizeof(short));
390   niyanpai_videoworkram[2] = auto_malloc(width * height * sizeof(short));
391   niyanpai_palette = auto_malloc(0x480 * sizeof(short));
392   niyanpai_clut[0] = auto_malloc(0x1000 * sizeof(char));
393   niyanpai_clut[1] = auto_malloc(0x1000 * sizeof(char));
394   niyanpai_clut[2] = auto_malloc(0x1000 * sizeof(char));
395   memset(niyanpai_videoram[0], 0x0000, (width * height * sizeof(short)));
396   memset(niyanpai_videoram[1], 0x0000, (width * height * sizeof(short)));
397   memset(niyanpai_videoram[2], 0x0000, (width * height * sizeof(short)));
398   memset(niyanpai_videoworkram[0], 0x0000, (width * height * sizeof(short)));
399   memset(niyanpai_videoworkram[1], 0x0000, (width * height * sizeof(short)));
400   memset(niyanpai_videoworkram[2], 0x0000, (width * height * sizeof(short)));
385   niyanpai_videoram[0] = auto_alloc_array_clear(machine, UINT16, width * height);
386   niyanpai_videoram[1] = auto_alloc_array_clear(machine, UINT16, width * height);
387   niyanpai_videoram[2] = auto_alloc_array_clear(machine, UINT16, width * height);
388   niyanpai_videoworkram[0] = auto_alloc_array_clear(machine, UINT16, width * height);
389   niyanpai_videoworkram[1] = auto_alloc_array_clear(machine, UINT16, width * height);
390   niyanpai_videoworkram[2] = auto_alloc_array_clear(machine, UINT16, width * height);
391   niyanpai_palette = auto_alloc_array(machine, UINT16, 0x480);
392   niyanpai_clut[0] = auto_alloc_array(machine, UINT8, 0x1000);
393   niyanpai_clut[1] = auto_alloc_array(machine, UINT8, 0x1000);
394   niyanpai_clut[2] = auto_alloc_array(machine, UINT8, 0x1000);
401395   nb19010_busyflag = 1;
402396}
403397
src/mame/video/stvvdp2.c
r4679r4680
48604860   else
48614861   {
48624862      if ( stv_vdp2_roz_bitmap[iRP-1] == NULL )
4863         stv_vdp2_roz_bitmap[iRP-1] = auto_bitmap_alloc(4096, 4096, video_screen_get_format(machine->primary_screen));
4863         stv_vdp2_roz_bitmap[iRP-1] = auto_bitmap_alloc(machine, 4096, 4096, video_screen_get_format(machine->primary_screen));
48644864
48654865      roz_clip_rect.min_x = roz_clip_rect.min_y = 0;
48664866      if ( (iRP == 1 && STV_VDP2_RAOVR == 3) ||
r4679r4680
52565256WRITE32_HANDLER ( stv_vdp2_regs_w )
52575257{
52585258   static UINT8 old_crmd;
5259   static UINT16 old_tvmd;
52595260   COMBINE_DATA(&stv_vdp2_regs[offset]);
52605261
52615262   if(old_crmd != STV_VDP2_CRMD)
r4679r4680
52635264      old_crmd = STV_VDP2_CRMD;
52645265      refresh_palette_data(space->machine);
52655266   }
5267   if(old_tvmd != STV_VDP2_TVMD)
5268   {
5269      old_tvmd = STV_VDP2_TVMD;
5270      stv_vdp2_dynamic_res_change(space->machine);
5271   }
52665272}
52675273
52685274static UINT8 get_hblank(running_machine *machine)
r4679r4680
53835389
53845390static int stv_vdp2_start (running_machine *machine)
53855391{
5386   stv_vdp2_regs = auto_malloc ( 0x040000 );
5387   stv_vdp2_vram = auto_malloc ( 0x100000 ); // actually we only need half of it since we don't emulate extra 4mbit ram cart.
5388   stv_vdp2_cram = auto_malloc ( 0x080000 );
5389   stv_vdp2_gfx_decode = auto_malloc ( 0x100000 );
5392   stv_vdp2_regs = auto_alloc_array_clear(machine, UINT32, 0x040000/4 );
5393   stv_vdp2_vram = auto_alloc_array_clear(machine, UINT32, 0x100000/4 ); // actually we only need half of it since we don't emulate extra 4mbit ram cart.
5394   stv_vdp2_cram = auto_alloc_array_clear(machine, UINT32, 0x080000/4 );
5395   stv_vdp2_gfx_decode = auto_alloc_array(machine, UINT8, 0x100000 );
53905396
5391   memset(stv_vdp2_regs, 0, 0x040000);
5392   memset(stv_vdp2_vram, 0, 0x100000);
5393   memset(stv_vdp2_cram, 0, 0x080000);
5394
53955397   stv_vdp2_render_rbg0 = 1;
53965398//  machine->gfx[0]->color_granularity=4;
53975399//  machine->gfx[1]->color_granularity=4;
r4679r4680
62086210VIDEO_UPDATE( stv_vdp2 )
62096211{
62106212   static UINT8 pri;
6211   stv_vdp2_dynamic_res_change(screen->machine);
6212
62136213   video_update_vdp1(screen->machine);
62146214
62156215   stv_vdp2_fade_effects(screen->machine);
src/mame/video/exedexes.c
r4679r4680
243243
244244VIDEO_EOF( exedexes )
245245{
246   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
246   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
247247
248248   buffer_spriteram_w(space, 0, 0);
249249}
src/mame/video/jedi.c
r4679r4680
3030
3131static VIDEO_START( jedi )
3232{
33   jedi_state *state = machine->driver_data;
33   jedi_state *state = (jedi_state *)machine->driver_data;
3434
3535   /* register for saving */
3636   state_save_register_global(machine, state->vscroll);
r4679r4680
110110
111111WRITE8_HANDLER( jedi_vscroll_w )
112112{
113   jedi_state *state = space->machine->driver_data;
113   jedi_state *state = (jedi_state *)space->machine->driver_data;
114114
115115   state->vscroll = data | (offset << 8);
116116}
r4679r4680
118118
119119WRITE8_HANDLER( jedi_hscroll_w )
120120{
121   jedi_state *state = space->machine->driver_data;
121   jedi_state *state = (jedi_state *)space->machine->driver_data;
122122
123123   state->hscroll = data | (offset << 8);
124124}
r4679r4680
329329
330330static VIDEO_UPDATE( jedi )
331331{
332   jedi_state *state = screen->machine->driver_data;
332   jedi_state *state = (jedi_state *)screen->machine->driver_data;
333333
334334   /* if no video, clear it all to black */
335335   if (*state->video_off & 0x01)
src/mame/video/suprnova.c
r4679r4680
912912   skns_tilemap_B = tilemap_create(machine, get_tilemap_B_tile_info,tilemap_scan_rows,16,16,64, 64);
913913      tilemap_set_transparent_pen(skns_tilemap_B,0);
914914
915   sprite_bitmap = auto_bitmap_alloc(1024,1024,BITMAP_FORMAT_INDEXED16);
915   sprite_bitmap = auto_bitmap_alloc(machine,1024,1024,BITMAP_FORMAT_INDEXED16);
916916
917   tilemap_bitmap_lower = auto_bitmap_alloc(320,240,BITMAP_FORMAT_INDEXED16);
918   tilemap_bitmapflags_lower = auto_bitmap_alloc(320,240,BITMAP_FORMAT_INDEXED8);
917   tilemap_bitmap_lower = auto_bitmap_alloc(machine,320,240,BITMAP_FORMAT_INDEXED16);
918   tilemap_bitmapflags_lower = auto_bitmap_alloc(machine,320,240,BITMAP_FORMAT_INDEXED8);
919919
920   tilemap_bitmap_higher = auto_bitmap_alloc(320,240,BITMAP_FORMAT_INDEXED16);
921   tilemap_bitmapflags_higher = auto_bitmap_alloc(320,240,BITMAP_FORMAT_INDEXED8);
920   tilemap_bitmap_higher = auto_bitmap_alloc(machine,320,240,BITMAP_FORMAT_INDEXED16);
921   tilemap_bitmapflags_higher = auto_bitmap_alloc(machine,320,240,BITMAP_FORMAT_INDEXED8);
922922
923923   machine->gfx[2]->color_granularity=256;
924924   machine->gfx[3]->color_granularity=256;
src/mame/video/seta2.c
r4679r4680
359359   machine->gfx[4]->color_granularity = 16;
360360   machine->gfx[5]->color_granularity = 16;
361361
362   buffered_spriteram16 = auto_malloc(spriteram_size);
362   buffered_spriteram16 = auto_alloc_array(machine, UINT16, spriteram_size/2);
363363
364364   yoffset = 0;
365365}
src/mame/video/namcofl.c
r4679r4680
122122VIDEO_START( namcofl )
123123{
124124   namco_tilemap_init( machine, NAMCONB1_TILEGFX, memory_region(machine, NAMCONB1_TILEMASKREGION), TilemapCB );
125   namco_obj_init(NAMCONB1_SPRITEGFX,0x0,FLobjcode2tile);
125   namco_obj_init(machine,NAMCONB1_SPRITEGFX,0x0,FLobjcode2tile);
126126   namco_roz_init(machine,NAMCONB1_ROTGFX,NAMCONB1_ROTMASKREGION);
127127}
src/mame/video/dynax.c
r4679r4680
746746
747747VIDEO_START( hanamai )
748748{
749   dynax_pixmap[0][0] = auto_malloc(256*256);
750   dynax_pixmap[0][1] = auto_malloc(256*256);
751   dynax_pixmap[1][0] = auto_malloc(256*256);
752   dynax_pixmap[1][1] = auto_malloc(256*256);
753   dynax_pixmap[2][0] = auto_malloc(256*256);
754   dynax_pixmap[2][1] = auto_malloc(256*256);
755   dynax_pixmap[3][0] = auto_malloc(256*256);
756   dynax_pixmap[3][1] = auto_malloc(256*256);
749   dynax_pixmap[0][0] = auto_alloc_array(machine, UINT8, 256*256);
750   dynax_pixmap[0][1] = auto_alloc_array(machine, UINT8, 256*256);
751   dynax_pixmap[1][0] = auto_alloc_array(machine, UINT8, 256*256);
752   dynax_pixmap[1][1] = auto_alloc_array(machine, UINT8, 256*256);
753   dynax_pixmap[2][0] = auto_alloc_array(machine, UINT8, 256*256);
754   dynax_pixmap[2][1] = auto_alloc_array(machine, UINT8, 256*256);
755   dynax_pixmap[3][0] = auto_alloc_array(machine, UINT8, 256*256);
756   dynax_pixmap[3][1] = auto_alloc_array(machine, UINT8, 256*256);
757757
758758   Video_Reset();
759759   layer_layout = LAYOUT_HANAMAI;
r4679r4680
761761
762762VIDEO_START( hnoridur )
763763{
764   dynax_pixmap[0][0] = auto_malloc(256*256);
765   dynax_pixmap[0][1] = auto_malloc(256*256);
766   dynax_pixmap[1][0] = auto_malloc(256*256);
767   dynax_pixmap[1][1] = auto_malloc(256*256);
768   dynax_pixmap[2][0] = auto_malloc(256*256);
769   dynax_pixmap[2][1] = auto_malloc(256*256);
770   dynax_pixmap[3][0] = auto_malloc(256*256);
771   dynax_pixmap[3][1] = auto_malloc(256*256);
764   dynax_pixmap[0][0] = auto_alloc_array(machine, UINT8, 256*256);
765   dynax_pixmap[0][1] = auto_alloc_array(machine, UINT8, 256*256);
766   dynax_pixmap[1][0] = auto_alloc_array(machine, UINT8, 256*256);
767   dynax_pixmap[1][1] = auto_alloc_array(machine, UINT8, 256*256);
768   dynax_pixmap[2][0] = auto_alloc_array(machine, UINT8, 256*256);
769   dynax_pixmap[2][1] = auto_alloc_array(machine, UINT8, 256*256);
770   dynax_pixmap[3][0] = auto_alloc_array(machine, UINT8, 256*256);
771   dynax_pixmap[3][1] = auto_alloc_array(machine, UINT8, 256*256);
772772
773773   Video_Reset();
774774   layer_layout = LAYOUT_HNORIDUR;
r4679r4680
784784
785785VIDEO_START( sprtmtch )
786786{
787   dynax_pixmap[0][0] = auto_malloc(256*256);
788   dynax_pixmap[0][1] = auto_malloc(256*256);
789   dynax_pixmap[1][0] = auto_malloc(256*256);
790   dynax_pixmap[1][1] = auto_malloc(256*256);
791   dynax_pixmap[2][0] = auto_malloc(256*256);
792   dynax_pixmap[2][1] = auto_malloc(256*256);
787   dynax_pixmap[0][0] = auto_alloc_array(machine, UINT8, 256*256);
788   dynax_pixmap[0][1] = auto_alloc_array(machine, UINT8, 256*256);
789   dynax_pixmap[1][0] = auto_alloc_array(machine, UINT8, 256*256);
790   dynax_pixmap[1][1] = auto_alloc_array(machine, UINT8, 256*256);
791   dynax_pixmap[2][0] = auto_alloc_array(machine, UINT8, 256*256);
792   dynax_pixmap[2][1] = auto_alloc_array(machine, UINT8, 256*256);
793793
794794   Video_Reset();
795795   layer_layout = LAYOUT_DRGPUNCH;
r4679r4680
797797
798798VIDEO_START( jantouki )
799799{
800   dynax_pixmap[0][0] = auto_malloc(256*256);
801   dynax_pixmap[0][1] = auto_malloc(256*256);
802   dynax_pixmap[1][0] = auto_malloc(256*256);
803   dynax_pixmap[1][1] = auto_malloc(256*256);
804   dynax_pixmap[2][0] = auto_malloc(256*256);
805   dynax_pixmap[2][1] = auto_malloc(256*256);
806   dynax_pixmap[3][0] = auto_malloc(256*256);
807   dynax_pixmap[3][1] = auto_malloc(256*256);
808   dynax_pixmap[4][0] = auto_malloc(256*256);
809   dynax_pixmap[4][1] = auto_malloc(256*256);
810   dynax_pixmap[5][0] = auto_malloc(256*256);
811   dynax_pixmap[5][1] = auto_malloc(256*256);
812   dynax_pixmap[6][0] = auto_malloc(256*256);
813   dynax_pixmap[6][1] = auto_malloc(256*256);
814   dynax_pixmap[7][0] = auto_malloc(256*256);
815   dynax_pixmap[7][1] = auto_malloc(256*256);
800   dynax_pixmap[0][0] = auto_alloc_array(machine, UINT8, 256*256);
801   dynax_pixmap[0][1] = auto_alloc_array(machine, UINT8, 256*256);
802   dynax_pixmap[1][0] = auto_alloc_array(machine, UINT8, 256*256);
803   dynax_pixmap[1][1] = auto_alloc_array(machine, UINT8, 256*256);
804   dynax_pixmap[2][0] = auto_alloc_array(machine, UINT8, 256*256);
805   dynax_pixmap[2][1] = auto_alloc_array(machine, UINT8, 256*256);
806   dynax_pixmap[3][0] = auto_alloc_array(machine, UINT8, 256*256);
807   dynax_pixmap[3][1] = auto_alloc_array(machine, UINT8, 256*256);
808   dynax_pixmap[4][0] = auto_alloc_array(machine, UINT8, 256*256);
809   dynax_pixmap[4][1] = auto_alloc_array(machine, UINT8, 256*256);
810   dynax_pixmap[5][0] = auto_alloc_array(machine, UINT8, 256*256);
811   dynax_pixmap[5][1] = auto_alloc_array(machine, UINT8, 256*256);
812   dynax_pixmap[6][0] = auto_alloc_array(machine, UINT8, 256*256);
813   dynax_pixmap[6][1] = auto_alloc_array(machine, UINT8, 256*256);
814   dynax_pixmap[7][0] = auto_alloc_array(machine, UINT8, 256*256);
815   dynax_pixmap[7][1] = auto_alloc_array(machine, UINT8, 256*256);
816816
817817   Video_Reset();
818818   layer_layout = LAYOUT_JANTOUKI;
r4679r4680
822822
823823VIDEO_START( mjdialq2 )
824824{
825   dynax_pixmap[0][0] = auto_malloc(256*256);
826   dynax_pixmap[1][0] = auto_malloc(256*256);
825   dynax_pixmap[0][0] = auto_alloc_array(machine, UINT8, 256*256);
826   dynax_pixmap[1][0] = auto_alloc_array(machine, UINT8, 256*256);
827827
828828   Video_Reset();
829829   layer_layout = LAYOUT_MJDIALQ2;
src/mame/video/contra.c
r4679r4680
162162   fg_tilemap = tilemap_create(machine, get_fg_tile_info,tilemap_scan_rows,8,8,32,32);
163163   tx_tilemap = tilemap_create(machine, get_tx_tile_info,tilemap_scan_rows,     8,8,32,32);
164164
165   private_spriteram = auto_malloc(0x800);
166   private_spriteram_2 = auto_malloc(0x800);
165   private_spriteram = auto_alloc_array(machine, UINT8, 0x800);
166   private_spriteram_2 = auto_alloc_array(machine, UINT8, 0x800);
167167
168168   bg_clip = *video_screen_get_visible_area(machine->primary_screen);
169169   bg_clip.min_x += 40;
src/mame/video/volfied.c
r4679r4680
1313
1414VIDEO_START( volfied )
1515{
16   video_ram = auto_malloc(0x40000 * sizeof (UINT16));
16   video_ram = auto_alloc_array(machine, UINT16, 0x40000);
1717
1818   state_save_register_global_pointer(machine, video_ram, 0x40000);
1919   state_save_register_global(machine, video_ctrl);
src/mame/video/balsente.c
r4679r4680
3939   sprite_bank[1] = memory_region(machine, "gfx1") + 0x10000;
4040
4141   /* allocate a local copy of video RAM */
42   local_videoram = auto_malloc(256 * 256);
42   local_videoram = auto_alloc_array(machine, UINT8, 256 * 256);
4343
4444   /* determine sprite size */
4545   sprite_data = memory_region(machine, "gfx1");
src/mame/video/itech32.c
r4679r4680
204204   int i;
205205
206206   /* allocate memory */
207   videoram16 = auto_malloc(VRAM_WIDTH * (itech32_vram_height + 16) * 2 * 2);
207   videoram16 = auto_alloc_array(machine, UINT16, VRAM_WIDTH * (itech32_vram_height + 16) * 2);
208208   memset(videoram16, 0xff, VRAM_WIDTH * (itech32_vram_height + 16) * 2 * 2);
209209
210210   /* videoplane[0] is the foreground; videoplane[1] is the background */
src/mame/video/amiga.c
r4679r4680
224224      if (LOG_COPPER)
225225         logerror("%02X.%02X: Write to %s = %04x\n", last_scanline, xpos / 2, amiga_custom_names[copper_pending_offset & 0xff], copper_pending_data);
226226
227      amiga_custom_w(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), copper_pending_offset, copper_pending_data, 0xffff);
227      amiga_custom_w(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), copper_pending_offset, copper_pending_data, 0xffff);
228228      copper_pending_offset = 0;
229229   }
230230
src/mame/video/undrfire.c
r4679r4680
2424{
2525   int i;
2626
27   spritelist = auto_malloc(0x4000 * sizeof(*spritelist));
27   spritelist = auto_alloc_array(machine, struct tempsprite, 0x4000);
2828
2929   TC0100SCN_vh_start(machine,1,TC0100SCN_GFX_NUM,50,8,0,0,0,0,0);
3030   TC0480SCP_vh_start(machine,TC0480SCP_GFX_NUM,0,0x24,0,-1,0,0,0,0);
src/mame/video/malzak.c
r4679r4680
6060   int height = video_screen_get_height(machine->primary_screen);
6161
6262   /* configure the S2636 chips */
63//  s2636_0 = s2636_config(malzak_s2636_0_ram, height, width, -8, -16);
64//  s2636_1 = s2636_config(malzak_s2636_1_ram, height, width, -9, -16);
65   s2636_0 = s2636_config(malzak_s2636_0_ram, height, width,  0, -16);
66   s2636_1 = s2636_config(malzak_s2636_1_ram, height, width,  0, -16);
63//  s2636_0 = s2636_config(machine, malzak_s2636_0_ram, height, width, -8, -16);
64//  s2636_1 = s2636_config(machine, malzak_s2636_1_ram, height, width, -9, -16);
65   s2636_0 = s2636_config(machine, malzak_s2636_0_ram, height, width,  0, -16);
66   s2636_1 = s2636_config(machine, malzak_s2636_1_ram, height, width,  0, -16);
6767}
6868
6969VIDEO_UPDATE( malzak )
src/mame/video/deco32.c
r4679r4680
207207        Word 2:
208208            0xf000: Block height
209209            0x0f00: Block width
210            0x00c0: Unused?
211            0x0020: Priority
210            0x0080: Unused?
211            0x0040: Priority
212212            0x001f: Colour
213213        Word 3:
214214            0xffff: Sprite value
r4679r4680
224224      if (sy==0x00000108 && !sprite)
225225         continue; //fix!!!!!
226226
227      if (spritedata[offs+2]&0x20)
228         prival=0xfffe; // under PF2
227      if ((spritedata[offs+2]&0x60)==0x00)
228      {
229         prival = 0; // above everything
230      }
231      else if ((spritedata[offs+2]&0x60)==0x20)
232      {
233         prival = 0xfff0; // above the 2nd playfield
234      }
235      else if ((spritedata[offs+2]&0x60)==0x40)
236      {
237         prival = 0xfffc; // above the 1st playfield
238      }
229239      else
230         prival=0; // above everything
240      {
241         // never used?
242         prival = 0xfffe; // under everything
243      }
231244
232245      sx = spritedata[offs+1];
233246
r4679r4680
272285                  fx,fy,
273286                  sx + x_mult * (w-x),sy + y_mult * (h-y),
274287                  cliprect,TRANSPARENCY_PEN,0,prival);
288
289            // wrap-around y
290            pdrawgfx(bitmap,machine->gfx[gfxbank],
291                  sprite + y + h * x,
292                  colour,
293                  fx,fy,
294                  sx + x_mult * (w-x),sy + y_mult * (h-y) - 512,
295                  cliprect,TRANSPARENCY_PEN,0,prival);
275296         }
276297      }
277298   }
r4679r4680
953974   pf1a_tilemap =tilemap_create(machine, get_pf1a_tile_info,   deco16_scan_rows,16,16,64,32);
954975   pf2_tilemap = tilemap_create(machine, get_pf2_tile_info,    deco16_scan_rows,16,16,64,32);
955976   pf3_tilemap = tilemap_create(machine, get_ca_pf3_tile_info, tilemap_scan_rows,16,16,32,32);
956   deco32_raster_display_list=auto_malloc(10 * 256);
977   deco32_raster_display_list=auto_alloc_array(machine, UINT16, 10 * 256 / 2);
957978   memset(deco32_raster_display_list, 0, 10 * 256);
958979
959980   tilemap_set_transparent_pen(pf1_tilemap,0);
r4679r4680
973994   pf3_tilemap = tilemap_create(machine, get_pf3_tile_info, deco16_scan_rows, 16,16,64,32);
974995   pf4_tilemap = tilemap_create(machine, get_pf4_tile_info, deco16_scan_rows, 16,16,64,32);
975996   pf1a_tilemap =0;
976   dirty_palette = auto_malloc(4096);
997   dirty_palette = auto_alloc_array(machine, UINT8, 4096);
977998
978999   deco_allocate_sprite_bitmap(machine);
9791000
r4679r4680
9931014   pf3_tilemap = tilemap_create(machine, get_ll_pf3_tile_info, deco16_scan_rows,16,16,64,32);
9941015   pf4_tilemap = tilemap_create(machine, get_ll_pf4_tile_info, deco16_scan_rows,     16,16,64,32);
9951016   pf1a_tilemap =tilemap_create(machine, get_pf1a_tile_info,   deco16_scan_rows,16,16,64,32);
996   dirty_palette = auto_malloc(4096);
997   deco32_raster_display_list = auto_malloc(10 * 256);
1017   dirty_palette = auto_alloc_array(machine, UINT8, 4096);
1018   deco32_raster_display_list = auto_alloc_array(machine, UINT16, 10 * 256 / 2);
9981019
9991020   tilemap_set_transparent_pen(pf1_tilemap,0);
10001021   tilemap_set_transparent_pen(pf2_tilemap,0);
r4679r4680
10151036   pf3_tilemap = tilemap_create(machine, get_ll_pf3_tile_info, deco16_scan_rows,16,16,32,32);
10161037   pf4_tilemap = tilemap_create(machine, get_ll_pf4_tile_info, deco16_scan_rows,     16,16,32,32);
10171038   pf1a_tilemap =tilemap_create(machine, get_pf1a_tile_info,   deco16_scan_rows,16,16,64,32);
1018   dirty_palette = auto_malloc(4096);
1019   deco32_raster_display_list = auto_malloc(10 * 256);
1039   dirty_palette = auto_alloc_array(machine, UINT8, 4096);
1040   deco32_raster_display_list = auto_alloc_array(machine, UINT16, 10 * 256 / 2);
10201041   memset(deco32_raster_display_list, 0, 10 * 256);
10211042
10221043   tilemap_set_transparent_pen(pf1_tilemap,0);
r4679r4680
10401061   pf3_tilemap = tilemap_create(machine, get_pf3_tile_info, deco16_scan_rows,16,16,64,32);
10411062   pf4_tilemap = tilemap_create(machine, get_pf4_tile_info, deco16_scan_rows,     16,16,64,32);
10421063   pf1a_tilemap =0;
1043   dirty_palette = auto_malloc(4096);
1064   dirty_palette = auto_alloc_array(machine, UINT8, 4096);
10441065
10451066   width = video_screen_get_width(machine->primary_screen);
10461067   height = video_screen_get_height(machine->primary_screen);
1047   sprite0_mix_bitmap=auto_bitmap_alloc(width, height, BITMAP_FORMAT_INDEXED16 );
1048   sprite1_mix_bitmap=auto_bitmap_alloc(width, height, BITMAP_FORMAT_INDEXED16 );
1049   tilemap_alpha_bitmap=auto_bitmap_alloc(width, height, BITMAP_FORMAT_INDEXED16 );
1068   sprite0_mix_bitmap=auto_bitmap_alloc(machine, width, height, BITMAP_FORMAT_INDEXED16 );
1069   sprite1_mix_bitmap=auto_bitmap_alloc(machine, width, height, BITMAP_FORMAT_INDEXED16 );
1070   tilemap_alpha_bitmap=auto_bitmap_alloc(machine, width, height, BITMAP_FORMAT_INDEXED16 );
10501071
10511072   tilemap_set_transparent_pen(pf1_tilemap,0);
10521073   tilemap_set_transparent_pen(pf2_tilemap,0);
r4679r4680
12421263   bitmap_fill(priority_bitmap,cliprect,0);
12431264   if ((deco32_pri&1)==0) {
12441265      if (pf3_enable)
1245         tilemap_draw(bitmap,cliprect,pf3_tilemap,TILEMAP_DRAW_OPAQUE,0);
1266         tilemap_draw(bitmap,cliprect,pf3_tilemap,TILEMAP_DRAW_OPAQUE,1);
12461267      else
12471268         bitmap_fill(bitmap,cliprect,get_black_pen(screen->machine));
12481269
12491270      if (deco32_raster_display_position)
1250         tilemap_raster_draw(bitmap,cliprect,0,1);
1271         tilemap_raster_draw(bitmap,cliprect,0,2);
12511272      else
1252         tilemap_draw(bitmap,cliprect,pf2_tilemap,0,1);
1273         tilemap_draw(bitmap,cliprect,pf2_tilemap,0,2);
12531274   } else {
12541275      if (pf2_enable) {
12551276         if (deco32_raster_display_position)
1256            tilemap_raster_draw(bitmap,cliprect,TILEMAP_DRAW_OPAQUE,0);
1277            tilemap_raster_draw(bitmap,cliprect,TILEMAP_DRAW_OPAQUE,1);
12571278         else
1258            tilemap_draw(bitmap,cliprect,pf2_tilemap,0,0);
1279            tilemap_draw(bitmap,cliprect,pf2_tilemap,0,1);
12591280      }
12601281      else
12611282         bitmap_fill(bitmap,cliprect,get_black_pen(screen->machine));
12621283
1263      tilemap_draw(bitmap,cliprect,pf3_tilemap,0,1);
1284      tilemap_draw(bitmap,cliprect,pf3_tilemap,0,2);
12641285   }
12651286
12661287   /* PF1 can be in 8x8 mode or 16x16 mode */
12671288   if (deco32_pf12_control[6]&0x80)
1268      tilemap_draw(bitmap,cliprect,pf1_tilemap,0,2);
1289      tilemap_draw(bitmap,cliprect,pf1_tilemap,0,4);
12691290   else
1270      tilemap_draw(bitmap,cliprect,pf1a_tilemap,0,2);
1291      tilemap_draw(bitmap,cliprect,pf1a_tilemap,0,4);
12711292
12721293   captaven_draw_sprites(screen->machine,bitmap,cliprect,buffered_spriteram32,3);
12731294
src/mame/video/midzeus.c
r4679r4680
247247   int i;
248248
249249   /* allocate memory for "wave" RAM */
250   waveram[0] = auto_malloc(WAVERAM0_WIDTH * WAVERAM0_HEIGHT * 8);
251   waveram[1] = auto_malloc(WAVERAM1_WIDTH * WAVERAM1_HEIGHT * 8);
250   waveram[0] = auto_alloc_array(machine, UINT32, WAVERAM0_WIDTH * WAVERAM0_HEIGHT * 8/4);
251   waveram[1] = auto_alloc_array(machine, UINT32, WAVERAM1_WIDTH * WAVERAM1_HEIGHT * 8/4);
252252
253253   /* initialize a 5-5-5 palette */
254254   for (i = 0; i < 32768; i++)
r4679r4680
615615               // zeusbase[0x46] = ??? = 0x00000000
616616               // zeusbase[0x4c] = ??? = 0x00808080 (brightness?)
617617               // zeusbase[0x4e] = ??? = 0x00808080 (brightness?)
618               poly_extra_data *extra = poly_get_extra_data(poly);
618               poly_extra_data *extra = (poly_extra_data *)poly_get_extra_data(poly);
619619               poly_vertex vert[4];
620620
621621               vert[0].x = (INT16)zeusbase[0x08];
r4679r4680
655655                we simply assert immediately if this is enabled. invasn needs this for proper
656656                operations */
657657         if (zeusbase[0x80] & 0x02000000)
658            cpu_set_input_line(machine->cpu[0], 2, ASSERT_LINE);
658            cputag_set_input_line(machine, "maincpu", 2, ASSERT_LINE);
659659         else
660            cpu_set_input_line(machine->cpu[0], 2, CLEAR_LINE);
660            cputag_set_input_line(machine, "maincpu", 2, CLEAR_LINE);
661661         break;
662662
663663      case 0x84:
r4679r4680
700700            const UINT32 *src;
701701
702702            if (zeusbase[0xb6] & 0x80000000)
703               src = waveram1_ptr_from_expanded_addr(zeusbase[0xb4]);
703               src = (const UINT32 *)waveram1_ptr_from_expanded_addr(zeusbase[0xb4]);
704704            else
705               src = waveram0_ptr_from_expanded_addr(zeusbase[0xb4]);
705               src = (const UINT32 *)waveram0_ptr_from_expanded_addr(zeusbase[0xb4]);
706706
707707            poly_wait(poly, "vram_read");
708708            zeusbase[0xb0] = WAVERAM_READ32(src, 0);
r4679r4680
12011201         clipvert[i].y += 0.0005f;
12021202   }
12031203
1204   extra = poly_get_extra_data(poly);
1204   extra = (poly_extra_data *)poly_get_extra_data(poly);
12051205   extra->solidcolor = zeusbase[0x00] & 0x7fff;
12061206   extra->zoffset = zeusbase[0x7e] >> 16;
12071207   extra->alpha = zeusbase[0x4e];
r4679r4680
12231223
12241224static void render_poly_4bit(void *dest, INT32 scanline, const poly_extent *extent, const void *extradata, int threadid)
12251225{
1226   const poly_extra_data *extra = extradata;
1226   const poly_extra_data *extra = (const poly_extra_data *)extradata;
12271227   INT32 curz = extent->param[0].start;
12281228   INT32 curu = extent->param[1].start;
12291229   INT32 curv = extent->param[2].start;
r4679r4680
12801280
12811281static void render_poly_8bit(void *dest, INT32 scanline, const poly_extent *extent, const void *extradata, int threadid)
12821282{
1283   const poly_extra_data *extra = extradata;
1283   const poly_extra_data *extra = (const poly_extra_data *)extradata;
12841284   INT32 curz = extent->param[0].start;
12851285   INT32 curu = extent->param[1].start;
12861286   INT32 curv = extent->param[2].start;
r4679r4680
13371337
13381338static void render_poly_shade(void *dest, INT32 scanline, const poly_extent *extent, const void *extradata, int threadid)
13391339{
1340   const poly_extra_data *extra = extradata;
1340   const poly_extra_data *extra = (const poly_extra_data *)extradata;
13411341   int x;
13421342
13431343   for (x = extent->startx; x < extent->stopx; x++)
r4679r4680
13641364
13651365static void render_poly_solid(void *dest, INT32 scanline, const poly_extent *extent, const void *extradata, int threadid)
13661366{
1367   const poly_extra_data *extra = extradata;
1367   const poly_extra_data *extra = (const poly_extra_data *)extradata;
13681368   UINT16 color = extra->solidcolor;
13691369   INT32 curz = (INT32)(extent->param[0].start);
13701370   INT32 curv = extent->param[2].start;
r4679r4680
13901390
13911391static void render_poly_solid_fixedz(void *dest, INT32 scanline, const poly_extent *extent, const void *extradata, int threadid)
13921392{
1393   const poly_extra_data *extra = extradata;
1393   const poly_extra_data *extra = (const poly_extra_data *)extradata;
13941394   UINT16 color = extra->solidcolor;
13951395   UINT16 depth = extra->zoffset;
13961396   int x;
r4679r4680
14271427   } recent_entries[100];
14281428
14291429   UINT32 numoctets = (length_and_base >> 24) + 1;
1430   const UINT32 *ptr = waveram0_ptr_from_block_addr(length_and_base);
1430   const UINT32 *ptr = (const UINT32 *)waveram0_ptr_from_block_addr(length_and_base);
14311431   UINT32 checksum = length_and_base;
14321432   int foundit = FALSE;
14331433   int i;
src/mame/video/argus.c
r4679r4680
321321   tilemap_set_transparent_pen(tx_tilemap,  15);
322322
323323   /* dummy RAM for back ground */
324   argus_dummy_bg0ram = auto_malloc(0x800);
324   argus_dummy_bg0ram = auto_alloc_array(machine, UINT8, 0x800);
325325
326   jal_blend_table = auto_malloc(0xc00);
326   jal_blend_table = auto_alloc_array(machine, UINT8, 0xc00);
327327}
328328
329329VIDEO_RESET( argus )
r4679r4680
346346
347347   mosaicbitmap = video_screen_auto_bitmap_alloc(machine->primary_screen);
348348
349   jal_blend_table = auto_malloc(0xc00);
349   jal_blend_table = auto_alloc_array(machine, UINT8, 0xc00);
350350}
351351
352352VIDEO_RESET( valtric )
r4679r4680
365365   tilemap_set_transparent_pen(bg1_tilemap, 15);
366366   tilemap_set_transparent_pen(tx_tilemap,  15);
367367
368   butasan_pagedram[0] = auto_malloc(0x1000);
369   butasan_pagedram[1] = auto_malloc(0x1000);
368   butasan_pagedram[0] = auto_alloc_array(machine, UINT8, 0x1000);
369   butasan_pagedram[1] = auto_alloc_array(machine, UINT8, 0x1000);
370370
371371   butasan_bg0ram     = &butasan_pagedram[0][0x000];
372372   butasan_bg0backram = &butasan_pagedram[0][0x800];
373373   butasan_txram      = &butasan_pagedram[1][0x000];
374374   butasan_txbackram  = &butasan_pagedram[1][0x800];
375375
376   jal_blend_table = auto_malloc(0xc00);
376   jal_blend_table = auto_alloc_array(machine, UINT8, 0xc00);
377377   //jal_blend_table = NULL;
378378}
379379
src/mame/video/grchamp.c
r4679r4680
1616{
1717   static const int resistances[3] = { 100, 270, 470 };
1818   double rweights[3], gweights[3], bweights[2];
19   grchamp_state *state = machine->driver_data;
19   grchamp_state *state = (grchamp_state *)machine->driver_data;
2020   int i;
2121
2222   /* compute the color output resistor weights */
r4679r4680
5454
5555WRITE8_HANDLER( grchamp_left_w )
5656{
57   grchamp_state *state = space->machine->driver_data;
57   grchamp_state *state = (grchamp_state *)space->machine->driver_data;
5858   state->leftram[offset] = data;
5959   tilemap_mark_tile_dirty(state->left_tilemap, offset);
6060}
6161
6262WRITE8_HANDLER( grchamp_center_w )
6363{
64   grchamp_state *state = space->machine->driver_data;
64   grchamp_state *state = (grchamp_state *)space->machine->driver_data;
6565   state->centerram[offset] = data;
6666   tilemap_mark_tile_dirty(state->center_tilemap, offset);
6767}
6868
6969WRITE8_HANDLER( grchamp_right_w )
7070{
71   grchamp_state *state = space->machine->driver_data;
71   grchamp_state *state = (grchamp_state *)space->machine->driver_data;
7272   state->rightram[offset] = data;
7373   tilemap_mark_tile_dirty(state->right_tilemap, offset);
7474}
7575
7676static TILE_GET_INFO( get_text_tile_info )
7777{
78   grchamp_state *state = machine->driver_data;
78   grchamp_state *state = (grchamp_state *)machine->driver_data;
7979   SET_TILE_INFO(0, state->videoram[tile_index], 0, 0);
8080}
8181
8282static TILE_GET_INFO( get_left_tile_info )
8383{
84   grchamp_state *state = machine->driver_data;
84   grchamp_state *state = (grchamp_state *)machine->driver_data;
8585   SET_TILE_INFO(1, state->leftram[tile_index], 0, 0);
8686}
8787
8888static TILE_GET_INFO( get_right_tile_info )
8989{
90   grchamp_state *state = machine->driver_data;
90   grchamp_state *state = (grchamp_state *)machine->driver_data;
9191   SET_TILE_INFO(2, state->rightram[tile_index], 0, 0);
9292}
9393
9494static TILE_GET_INFO( get_center_tile_info )
9595{
96   grchamp_state *state = machine->driver_data;
96   grchamp_state *state = (grchamp_state *)machine->driver_data;
9797   SET_TILE_INFO(3, state->centerram[tile_index], 0, 0);
9898}
9999
r4679r4680
105105
106106VIDEO_START( grchamp )
107107{
108   grchamp_state *state = machine->driver_data;
108   grchamp_state *state = (grchamp_state *)machine->driver_data;
109109
110   state->work_bitmap = auto_bitmap_alloc(32,32,video_screen_get_format(machine->primary_screen));
110   state->work_bitmap = auto_bitmap_alloc(machine,32,32,video_screen_get_format(machine->primary_screen));
111111
112112   /* allocate tilemaps for each of the three sections */
113113   state->text_tilemap = tilemap_create(machine, get_text_tile_info, tilemap_scan_rows,  8,8, 32,32);
r4679r4680
368368      MAKE_RGB(RGB_MAX,RGB_MAX,RGB_MAX)
369369   };
370370
371   grchamp_state *state = screen->machine->driver_data;
371   grchamp_state *state = (grchamp_state *)screen->machine->driver_data;
372372   const UINT8 *amedata = memory_region(screen->machine, "gfx5");
373373   const UINT8 *headdata = memory_region(screen->machine, "gfx6");
374374   const UINT8 *pldata = memory_region(screen->machine, "gfx7");
src/mame/video/gaiden.c
r4679r4680
9292   int height = video_screen_get_height(machine->primary_screen);
9393
9494   /* set up tile layers */
95   tile_bitmap_bg = auto_bitmap_alloc(width, height, BITMAP_FORMAT_INDEXED16);
96   tile_bitmap_fg = auto_bitmap_alloc(width, height, BITMAP_FORMAT_INDEXED16);
95   tile_bitmap_bg = auto_bitmap_alloc(machine, width, height, BITMAP_FORMAT_INDEXED16);
96   tile_bitmap_fg = auto_bitmap_alloc(machine, width, height, BITMAP_FORMAT_INDEXED16);
9797
9898   background = tilemap_create(machine, get_bg_tile_info,      tilemap_scan_rows,16,16,64,32);
9999   foreground = tilemap_create(machine, get_fg_tile_info_raiga,tilemap_scan_rows,16,16,64,32);
r4679r4680
104104   tilemap_set_transparent_pen(text_layer,0);
105105
106106   /* set up sprites */
107   sprite_bitmap = auto_bitmap_alloc(width, height, BITMAP_FORMAT_INDEXED16);
107   sprite_bitmap = auto_bitmap_alloc(machine, width, height, BITMAP_FORMAT_INDEXED16);
108108}
109109
110110VIDEO_START( drgnbowl )
src/mame/video/zaxxon.c
r4679r4680
167167VIDEO_START( congo )
168168{
169169   /* allocate our own spriteram since it is not accessible by the main CPU */
170   spriteram = auto_malloc(0x100);
170   spriteram = auto_alloc_array(machine, UINT8, 0x100);
171171
172172   /* register for save states */
173173   state_save_register_global(machine, congo_fg_bank);
src/mame/video/karnov.c
r4679r4680
205205VIDEO_START( karnov )
206206{
207207   /* Allocate bitmaps */
208   bitmap_f = auto_bitmap_alloc(512,512,video_screen_get_format(machine->primary_screen));
208   bitmap_f = auto_bitmap_alloc(machine,512,512,video_screen_get_format(machine->primary_screen));
209209
210210   fix_tilemap=tilemap_create(machine, get_fix_tile_info,tilemap_scan_rows,8,8,32,32);
211211
r4679r4680
215215VIDEO_START( wndrplnt )
216216{
217217   /* Allocate bitmaps */
218   bitmap_f = auto_bitmap_alloc(512,512,video_screen_get_format(machine->primary_screen));
218   bitmap_f = auto_bitmap_alloc(machine,512,512,video_screen_get_format(machine->primary_screen));
219219
220220   fix_tilemap=tilemap_create(machine, get_fix_tile_info,tilemap_scan_cols,8,8,32,32);
221221
src/mame/video/lwings.c
r4679r4680
289289
290290VIDEO_EOF( lwings )
291291{
292   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
292   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
293293
294   buffer_spriteram_w(space,0,0);
294   buffer_spriteram_w(space, 0, 0);
295295}
src/mame/video/segaybd.c
r4679r4680
3232   segaic16_palette_init(0x2000);
3333
3434   /* allocate a bitmap for the yboard layer */
35   yboard_bitmap = auto_bitmap_alloc(512, 512, BITMAP_FORMAT_INDEXED16);
35   yboard_bitmap = auto_bitmap_alloc(machine, 512, 512, BITMAP_FORMAT_INDEXED16);
3636
3737   /* initialize the sprites */
3838   segaic16_sprites_init(machine, 0, SEGAIC16_SPRITES_YBOARD_16B, 0x800, 0);
src/mame/video/speedspn.c
r4679r4680
2020
2121VIDEO_START(speedspn)
2222{
23   speedspn_vidram = auto_malloc(0x1000 * 2);
23   speedspn_vidram = auto_alloc_array(machine, UINT8, 0x1000 * 2);
2424   speedspn_tilemap = tilemap_create(machine, get_speedspn_tile_info,tilemap_scan_cols, 8, 8,64,32);
2525}
2626
src/mame/video/amigaaga.c
r4679r4680
276276      if (LOG_COPPER)
277277         logerror("%02X.%02X: Write to %s = %04x\n", last_scanline, xpos / 2, amiga_custom_names[copper_pending_offset & 0xff], copper_pending_data);
278278
279      amiga_custom_w(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), copper_pending_offset, copper_pending_data, 0xffff);
279      amiga_custom_w(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), copper_pending_offset, copper_pending_data, 0xffff);
280280      copper_pending_offset = 0;
281281   }
282282
src/mame/video/cloak.c
r4679r4680
174174{
175175   bg_tilemap = tilemap_create(machine, get_bg_tile_info, tilemap_scan_rows, 8, 8, 32, 32);
176176
177   bitmap_videoram1 = auto_malloc(256*256);
178   bitmap_videoram2 = auto_malloc(256*256);
179   palette_ram = auto_malloc(NUM_PENS * sizeof(palette_ram[0]));
177   bitmap_videoram1 = auto_alloc_array(machine, UINT8, 256*256);
178   bitmap_videoram2 = auto_alloc_array(machine, UINT8, 256*256);
179   palette_ram = auto_alloc_array(machine, UINT16, NUM_PENS);
180180
181181   set_current_bitmap_videoram_pointer();
182182
src/mame/video/gticlub.c
r4679r4680
4444   int i;
4545   for (i=0; i<MAX_K001006_CHIPS; i++)
4646   {
47      K001006_pal_ram[i] = auto_malloc(0x800*sizeof(UINT16));
48      memset(K001006_pal_ram[i], 0, 0x800*sizeof(UINT16));
49      K001006_unknown_ram[i] = auto_malloc(0x1000*sizeof(UINT16));
50      memset(K001006_unknown_ram[i], 0, 0x1000*sizeof(UINT16));
47      K001006_pal_ram[i] = auto_alloc_array_clear(machine, UINT16, 0x800);
48      K001006_unknown_ram[i] = auto_alloc_array_clear(machine, UINT16, 0x1000);
5149      K001006_addr[i] = 0;
5250      K001006_device_sel[i] = 0;
53      K001006_palette[i] = auto_malloc(0x800*sizeof(UINT32));
51      K001006_palette[i] = auto_alloc_array(machine, UINT32, 0x800);
5452      memset(K001006_palette[i], 0, 0x800*sizeof(UINT32));
5553   }
5654}
r4679r4680
208206
209207   int width = video_screen_get_width(machine->primary_screen);
210208   int height = video_screen_get_height(machine->primary_screen);
211   K001005_zbuffer = auto_bitmap_alloc(width, height, BITMAP_FORMAT_INDEXED32);
209   K001005_zbuffer = auto_bitmap_alloc(machine, width, height, BITMAP_FORMAT_INDEXED32);
212210
213211   gfxrom = memory_region(machine, "gfx1");
214212
215213   K001005_bitmap[0] = video_screen_auto_bitmap_alloc(machine->primary_screen);
216214   K001005_bitmap[1] = video_screen_auto_bitmap_alloc(machine->primary_screen);
217215
218   K001005_texture = auto_malloc(0x800000);
216   K001005_texture = auto_alloc_array(machine, UINT8, 0x800000);
219217
220   K001005_ram[0] = auto_malloc(0x140000 * sizeof(UINT16));
221   K001005_ram[1] = auto_malloc(0x140000 * sizeof(UINT16));
218   K001005_ram[0] = auto_alloc_array(machine, UINT16, 0x140000);
219   K001005_ram[1] = auto_alloc_array(machine, UINT16, 0x140000);
222220
223   K001005_fifo = auto_malloc(0x800 * sizeof(UINT32));
221   K001005_fifo = auto_alloc_array(machine, UINT32, 0x800);
224222
225   K001005_3d_fifo = auto_malloc(0x10000 * sizeof(UINT32));
223   K001005_3d_fifo = auto_alloc_array(machine, UINT32, 0x10000);
226224
227225   poly = poly_alloc(machine, 4000, sizeof(poly_extra_data), POLYFLAG_ALLOW_QUADS);
228226   add_exit_callback(machine, K001005_exit);
r4679r4680
458456
459457static void draw_scanline(void *dest, INT32 scanline, const poly_extent *extent, const void *extradata, int threadid)
460458{
461   const poly_extra_data *extra = extradata;
462   bitmap_t *destmap = dest;
459   const poly_extra_data *extra = (const poly_extra_data *)extradata;
460   bitmap_t *destmap = (bitmap_t *)dest;
463461   float z = extent->param[0].start;
464462   float dz = extent->param[0].dpdx;
465463   UINT32 *fb = BITMAP_ADDR32(destmap, scanline, 0);
r4679r4680
486484
487485static void draw_scanline_tex(void *dest, INT32 scanline, const poly_extent *extent, const void *extradata, int threadid)
488486{
489   const poly_extra_data *extra = extradata;
490   bitmap_t *destmap = dest;
487   const poly_extra_data *extra = (const poly_extra_data *)extradata;
488   bitmap_t *destmap = (bitmap_t *)dest;
491489   UINT8 *texrom = gfxrom + (extra->texture_page * 0x40000);
492490   int pal_chip = (extra->texture_palette & 0x8) ? 1 : 0;
493491   int palette_index = (extra->texture_palette & 0x7) * 256;
r4679r4680
554552   {
555553      if (K001005_3d_fifo[i] == 0x80000003)
556554      {
557         poly_extra_data *extra = poly_get_extra_data(poly);
555         poly_extra_data *extra = (poly_extra_data *)poly_get_extra_data(poly);
558556         poly_vertex v[4];
559557         int r, g, b, a;
560558         UINT32 color;
r4679r4680
607605         // 0x01: -------- -------- ----x-x- x-x-x-x-    Texture X / 8
608606         // 0x01: -------- -------- -----x-x -x-x-x-x    Texture Y / 8
609607
610         poly_extra_data *extra = poly_get_extra_data(poly);
608         poly_extra_data *extra = (poly_extra_data *)poly_get_extra_data(poly);
611609         poly_vertex v[4];
612610         int tx, ty;
613611         UINT32 color = 0;
r4679r4680
721719
722720         while ((K001005_3d_fifo[index] & 0xffffff00) != 0x80000000 && index < K001005_3d_fifo_ptr)
723721         {
724            poly_extra_data *extra = poly_get_extra_data(poly);
722            poly_extra_data *extra = (poly_extra_data *)poly_get_extra_data(poly);
725723            int new_verts = 0;
726724
727725            if (poly_type)
r4679r4680
806804      else if (K001005_3d_fifo[i] == 0x80000006 || K001005_3d_fifo[i] == 0x80000026 ||
807805             K001005_3d_fifo[i] == 0x80000020 || K001005_3d_fifo[i] == 0x80000022)
808806      {
809         poly_extra_data *extra = poly_get_extra_data(poly);
807         poly_extra_data *extra = (poly_extra_data *)poly_get_extra_data(poly);
810808         poly_vertex v[4];
811809         int r, g, b, a;
812810         UINT32 color;
r4679r4680
861859
862860         while ((K001005_3d_fifo[index] & 0xffffff00) != 0x80000000 && index < K001005_3d_fifo_ptr)
863861         {
864            poly_extra_data *extra = poly_get_extra_data(poly);
862            poly_extra_data *extra = (poly_extra_data *)poly_get_extra_data(poly);
865863            int new_verts = 0;
866864
867865            if (poly_type)
src/mame/video/namcona1.c
r4679r4680
292292      tilemap_palette_bank[i] = -1;
293293   }
294294
295   shaperam           = auto_malloc( 0x2000*4 );
296   cgram              = auto_malloc( 0x1000*0x40 );
295   shaperam           = auto_alloc_array(machine, UINT16, 0x2000*4/2 );
296   cgram              = auto_alloc_array(machine, UINT16, 0x1000*0x40/2 );
297297
298298   machine->gfx[0] = gfx_element_alloc( machine, &cg_layout_8bpp, (UINT8 *)cgram, machine->config->total_colors/256, 0 );
299299   machine->gfx[1] = gfx_element_alloc( machine, &cg_layout_4bpp, (UINT8 *)cgram, machine->config->total_colors/16, 0 );
src/mame/video/armedf.c
r4679r4680
352352
353353VIDEO_EOF( armedf )
354354{
355   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
355   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
356356
357357   buffer_spriteram16_w(space,0,0,0xffff);
358358}
src/mame/video/dkong.c
r4679r4680
201201
202202PALETTE_INIT( dkong2b)
203203{
204   dkong_state *state = machine->driver_data;
204   dkong_state *state = (dkong_state *)machine->driver_data;
205205   rgb_t   *rgb;
206206   int i;
207207
r4679r4680
230230
231231PALETTE_INIT( dkong4b )
232232{
233   dkong_state *state = machine->driver_data;
233   dkong_state *state = (dkong_state *)machine->driver_data;
234234   int i;
235235   int r,g,b;
236236
r4679r4680
268268
269269PALETTE_INIT( radarscp )
270270{
271   dkong_state *state = machine->driver_data;
271   dkong_state *state = (dkong_state *)machine->driver_data;
272272   int i;
273273   int r,g,b;
274274
r4679r4680
332332
333333PALETTE_INIT( radarsc1 )
334334{
335   dkong_state *state = machine->driver_data;
335   dkong_state *state = (dkong_state *)machine->driver_data;
336336   int i;
337337   int r,g,b;
338338
r4679r4680
432432
433433PALETTE_INIT( dkong3 )
434434{
435   dkong_state *state = machine->driver_data;
435   dkong_state *state = (dkong_state *)machine->driver_data;
436436   rgb_t   *rgb;
437437
438438   rgb = compute_res_net_all(color_prom, &dkong3_decode_info, &dkong3_net_info);
r4679r4680
447447
448448static TILE_GET_INFO( dkong_bg_tile_info )
449449{
450   dkong_state *state = machine->driver_data;
450   dkong_state *state = (dkong_state *)machine->driver_data;
451451   int code = state->video_ram[tile_index] + 256 * state->gfx_bank;
452452   int color = (state->color_codes[tile_index % 32 + 32 * (tile_index / 32 / 4)] & 0x0f) + 0x10 * state->palette_bank;
453453
r4679r4680
456456
457457static TILE_GET_INFO( radarsc1_bg_tile_info )
458458{
459   dkong_state *state = machine->driver_data;
459   dkong_state *state = (dkong_state *)machine->driver_data;
460460   int code = state->video_ram[tile_index] + 256 * state->gfx_bank;
461461   int color = (state->color_codes[tile_index % 32] & 0x0f);
462462   color = color | (state->palette_bank<<4);
r4679r4680
472472
473473WRITE8_HANDLER( dkong_videoram_w )
474474{
475   dkong_state *state = space->machine->driver_data;
475   dkong_state *state = (dkong_state *)space->machine->driver_data;
476476
477477   if (state->video_ram[offset] != data)
478478   {
r4679r4680
483483
484484WRITE8_HANDLER( dkongjr_gfxbank_w )
485485{
486   dkong_state *state = space->machine->driver_data;
486   dkong_state *state = (dkong_state *)space->machine->driver_data;
487487
488488   if (state->gfx_bank != (data & 0x01))
489489   {
r4679r4680
494494
495495WRITE8_HANDLER( dkong3_gfxbank_w )
496496{
497   dkong_state *state = space->machine->driver_data;
497   dkong_state *state = (dkong_state *)space->machine->driver_data;
498498
499499   if (state->gfx_bank != (~data & 0x01))
500500   {
r4679r4680
505505
506506WRITE8_HANDLER( dkong_palettebank_w )
507507{
508   dkong_state *state = space->machine->driver_data;
508   dkong_state *state = (dkong_state *)space->machine->driver_data;
509509   int newbank;
510510
511511   newbank = state->palette_bank;
r4679r4680
524524
525525WRITE8_HANDLER( radarscp_grid_enable_w )
526526{
527   dkong_state *state = space->machine->driver_data;
527   dkong_state *state = (dkong_state *)space->machine->driver_data;
528528
529529   state->grid_on = data & 0x01;
530530}
531531
532532WRITE8_HANDLER( radarscp_grid_color_w )
533533{
534   dkong_state *state = space->machine->driver_data;
534   dkong_state *state = (dkong_state *)space->machine->driver_data;
535535
536536   state->grid_col = (data & 0x07) ^ 0x07;
537537   /* popmessage("Gridcol: %d", state->grid_col); */
r4679r4680
539539
540540WRITE8_HANDLER( dkong_flipscreen_w )
541541{
542   dkong_state *state = space->machine->driver_data;
542   dkong_state *state = (dkong_state *)space->machine->driver_data;
543543
544544   state->flip = ~data & 0x01;
545545}
546546
547547WRITE8_HANDLER( dkong_spritebank_w )
548548{
549   dkong_state *state = space->machine->driver_data;
549   dkong_state *state = (dkong_state *)space->machine->driver_data;
550550
551551   state->sprite_bank = data & 0x01;
552552}
r4679r4680
559559
560560static void draw_sprites(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect, UINT32 mask_bank, UINT32 shift_bits)
561561{
562   dkong_state *state = machine->driver_data;
562   dkong_state *state = (dkong_state *)machine->driver_data;
563563   int offs;
564564   int scanline_vf;   /* buffering scanline including flip */
565565   int scanline_vfc;        /* line buffering scanline including flip - this is the cached scanline_vf*/
r4679r4680
691691
692692INLINE double CD4049(running_machine *machine, double x)
693693{
694   dkong_state *state = machine->driver_data;
694   dkong_state *state = (dkong_state *)machine->driver_data;
695695
696696   if (x>0)
697697       return exp(-state->cd4049_a * pow(x,state->cd4049_b));
r4679r4680
713713
714714static void radarscp_step(running_machine *machine, int line_cnt)
715715{
716   dkong_state *state = machine->driver_data;
716   dkong_state *state = (dkong_state *)machine->driver_data;
717717   const device_config *dev6h = devtag_get_device(machine, "ls259.6h");
718718   const device_config *devvp2 = devtag_get_device(machine, "virtual_p2");
719719
r4679r4680
839839
840840static void radarscp_scanline(running_machine *machine, int scanline)
841841{
842   dkong_state *state = machine->driver_data;
842   dkong_state *state = (dkong_state *)machine->driver_data;
843843   const UINT8 *table = state->gfx3;
844844   int       table_len = state->gfx3_len;
845845   int          x,y,offset;
r4679r4680
876876
877877static TIMER_CALLBACK( scanline_callback )
878878{
879   dkong_state *state = machine->driver_data;
879   dkong_state *state = (dkong_state *)machine->driver_data;
880880   int scanline = param;
881881
882882   if ((state->hardware_type == HARDWARE_TRS02) || (state->hardware_type == HARDWARE_TRS01))
r4679r4680
892892
893893static void check_palette(running_machine *machine)
894894{
895   dkong_state *state = machine->driver_data;
895   dkong_state *state = (dkong_state *)machine->driver_data;
896896   const input_port_config *port;
897897   int newset;
898898
r4679r4680
921921
922922static VIDEO_START( dkong_base )
923923{
924   dkong_state *state = machine->driver_data;
924   dkong_state *state = (dkong_state *)machine->driver_data;
925925
926926   state->cd4049_b = (log(0.0 - log(cd4049_al)) - log(0.0 - log((1.0-cd4049_al))) ) / log(cd4049_vh/cd4049_vl);
927927   state->cd4049_a = log(0.0 - log(cd4049_al)) - state->cd4049_b * log(cd4049_vh);
r4679r4680
942942
943943VIDEO_START( dkong )
944944{
945   dkong_state *state = machine->driver_data;
945   dkong_state *state = (dkong_state *)machine->driver_data;
946946
947947   VIDEO_START_CALL(dkong_base);
948948
r4679r4680
978978
979979VIDEO_UPDATE( dkong )
980980{
981   dkong_state *state = screen->machine->driver_data;
981   dkong_state *state = (dkong_state *)screen->machine->driver_data;
982982
983983   tilemap_set_flip(ALL_TILEMAPS, state->flip ? TILEMAP_FLIPX | TILEMAP_FLIPY : 0);
984984   tilemap_set_scrollx(state->bg_tilemap, 0, state->flip ?  0 : 0);
r4679r4680
10061006
10071007VIDEO_UPDATE( pestplce )
10081008{
1009   dkong_state *state = screen->machine->driver_data;
1009   dkong_state *state = (dkong_state *)screen->machine->driver_data;
10101010   int offs;
10111011
10121012   tilemap_draw(bitmap, cliprect, state->bg_tilemap, 0, 0);
r4679r4680
10291029
10301030VIDEO_UPDATE( spclforc )
10311031{
1032   dkong_state *state = screen->machine->driver_data;
1032   dkong_state *state = (dkong_state *)screen->machine->driver_data;
10331033
10341034   tilemap_draw(bitmap, cliprect, state->bg_tilemap, 0, 0);
10351035
src/mame/video/skyraid.c
r4679r4680
1717
1818VIDEO_START( skyraid )
1919{
20   helper = auto_bitmap_alloc(128, 240, video_screen_get_format(machine->primary_screen));
20   helper = auto_bitmap_alloc(machine, 128, 240, video_screen_get_format(machine->primary_screen));
2121}
2222
2323
src/mame/video/psx.c
r4679r4680
293293   m_debug.b_clear = 1;
294294   m_debug.n_coord = 0;
295295   m_debug.n_skip = 0;
296   m_debug.mesh = auto_bitmap_alloc(width, height, BITMAP_FORMAT_INDEXED16 );
296   m_debug.mesh = auto_bitmap_alloc(machine, width, height, BITMAP_FORMAT_INDEXED16 );
297297   m_debug.machine = machine;
298298}
299299
r4679r4680
640640   m_n_lightgun_y = 0;
641641
642642   m_n_vram_size = width * height;
643   m_p_vram = auto_malloc( m_n_vram_size * 2 );
644   memset( m_p_vram, 0x00, m_n_vram_size * 2 );
643   m_p_vram = auto_alloc_array_clear(machine, UINT16, m_n_vram_size );
645644
646645   for( n_line = 0; n_line < 1024; n_line++ )
647646   {
src/mame/video/metlclsh.c
r4679r4680
142142
143143VIDEO_START( metlclsh )
144144{
145   metlclsh_otherram = auto_malloc(0x800);   // banked ram
145   metlclsh_otherram = auto_alloc_array(machine, UINT8, 0x800);   // banked ram
146146
147147   bg_tilemap = tilemap_create(machine, get_bg_tile_info,metlclsh_bgtilemap_scan,16,16,32,16);
148148   fg_tilemap = tilemap_create(machine, get_fg_tile_info,tilemap_scan_rows,8,8,32,32);
src/mame/video/aliens.c
r4679r4680
5353
5454VIDEO_START( aliens )
5555{
56   paletteram = auto_malloc(0x400);
56   paletteram = auto_alloc_array(machine, UINT8, 0x400);
5757
5858   layer_colorbase[0] = 0;
5959   layer_colorbase[1] = 4;
src/mame/video/vdc.c
r4679r4680
8282INTERRUPT_GEN( pce_interrupt )
8383{
8484   /* Draw the last scanline */
85   if ( vce.current_bitmap_line >= 14 && vce.current_bitmap_line < 14 + 242 ) {
85   if ( vce.current_bitmap_line >= 14 && vce.current_bitmap_line < 14 + 242 )
86   {
8687      /* We are in the active display area */
8788      /* First fill the line with the overscan color */
8889      draw_overscan_line(vce.current_bitmap_line );
8990
9091      /* Check if we need to draw more just the overscan color */
91      if ( vdc[0].current_segment == STATE_VDW ) {
92      if ( vdc[0].current_segment == STATE_VDW )
93      {
9294         /* 0 - no sprite and background pixels drawn
9395               1 - background pixel drawn
9496               otherwise is 2 + sprite# */
r4679r4680
105107         pce_refresh_line( 0, vdc[0].current_segment_line, 0, drawn, line_buffer);
106108
107109         /* Draw VDC #0 sprite layer */
108         if(vdc[0].vdc_data[CR].w & CR_SB) {
110         if(vdc[0].vdc_data[CR].w & CR_SB)
111         {
109112            pce_refresh_sprites(device->machine, 0, vdc[0].current_segment_line, drawn, line_buffer);
110113         }
111114      }
112   } else {
115   }
116   else
117   {
113118      /* We are in one of the blanking areas */
114119      draw_black_line(device->machine, vce.current_bitmap_line );
115120   }
r4679r4680
122127INTERRUPT_GEN( sgx_interrupt )
123128{
124129   /* Draw the last scanline */
125   if ( vce.current_bitmap_line >= 14 && vce.current_bitmap_line < 14 + 242 ) {
130   if ( vce.current_bitmap_line >= 14 && vce.current_bitmap_line < 14 + 242 )
131   {
126132      /* We are in the active display area */
127133      /* First fill the line with the overscan color */
128134      draw_sgx_overscan_line(vce.current_bitmap_line );
129135
130136      /* Check if we need to draw more just the overscan color */
131      if ( vdc[0].current_segment == STATE_VDW ) {
137      if ( vdc[0].current_segment == STATE_VDW )
138      {
132139         /* 0 - no sprite and background pixels drawn
133140               1 - background pixel drawn
134141               otherwise is 2 + sprite# */
r4679r4680
147154         pce_refresh_line( 0, vdc[0].current_segment_line, 0, drawn[0], temp_buffer[0]);
148155
149156         /* Draw VDC #0 sprite layer */
150         if(vdc[0].vdc_data[CR].w & CR_SB) {
157         if(vdc[0].vdc_data[CR].w & CR_SB)
158         {
151159            pce_refresh_sprites(device->machine, 0, vdc[0].current_segment_line, drawn[0], temp_buffer[0]);
152160         }
153161
r4679r4680
155163         pce_refresh_line( 1, vdc[1].current_segment_line, 1, drawn[1], temp_buffer[1]);
156164
157165         /* Draw VDC #1 sprite layer */
158         if ( vdc[1].vdc_data[CR].w & CR_SB ) {
166         if ( vdc[1].vdc_data[CR].w & CR_SB )
167         {
159168            pce_refresh_sprites(device->machine, 1, vdc[1].current_segment_line, drawn[1], temp_buffer[1]);
160169         }
161170
162171         line_buffer = BITMAP_ADDR16( vce.bmp, vce.current_bitmap_line, 86 );
163172         /* Combine the output of both VDCs */
164         for( i = 0; i < 512; i++ ) {
173         for( i = 0; i < 512; i++ )
174         {
165175            int cur_prio = vpc.prio_map[i];
166176
167            if ( vpc.vpc_prio[cur_prio].vdc0_enabled ) {
168               if ( vpc.vpc_prio[cur_prio].vdc1_enabled ) {
169                  switch( vpc.vpc_prio[cur_prio].prio ) {
177            if ( vpc.vpc_prio[cur_prio].vdc0_enabled )
178            {
179               if ( vpc.vpc_prio[cur_prio].vdc1_enabled )
180               {
181                  switch( vpc.vpc_prio[cur_prio].prio )
182                  {
170183                  case 0:   /* BG1 SP1 BG0 SP0 */
171                     if ( drawn[0][i] ) {
184                     if ( drawn[0][i] )
185                     {
172186                        line_buffer[i] = temp_buffer[0][i];
173                     } else if ( drawn[1][i] ) {
187                     }
188                     else if ( drawn[1][i] )
189                     {
174190                        line_buffer[i] = temp_buffer[1][i];
175191                     }
176192                     break;
177193                  case 1:   /* BG1 BG0 SP1 SP0 */
178                     if ( drawn[0][i] ) {
179                        if ( drawn[0][i] > 1 ) {
194                     if ( drawn[0][i] )
195                     {
196                        if ( drawn[0][i] > 1 )
197                        {
180198                           line_buffer[i] = temp_buffer[0][i];
181                        } else {
182                           if ( drawn[1][i] > 1 ) {
199                        }
200                        else
201                        {
202                           if ( drawn[1][i] > 1 )
203                           {
183204                              line_buffer[i] = temp_buffer[1][i];
184                           } else {
205                           }
206                           else
207                           {
185208                              line_buffer[i] = temp_buffer[0][i];
186209                           }
187210                        }
188                     } else if ( drawn[1][i] ) {
211                     }
212                     else if ( drawn[1][i] )
213                     {
189214                        line_buffer[i] = temp_buffer[1][i];
190215                     }
191216                     break;
r4679r4680
195220                                   BG0 + SP0 => SP0
196221                                   BG1 + SP0 => BG1
197222                                   SP0 + SP1 => SP0 */
198                     if ( drawn[0][i] ) {
199                        if ( drawn[0][i] > 1 ) {
200                           if ( drawn[1][i] == 1 ) {
223                     if ( drawn[0][i] )
224                     {
225                        if ( drawn[0][i] > 1 )
226                        {
227                           if ( drawn[1][i] == 1 )
228                           {
201229                              line_buffer[i] = temp_buffer[1][i];
202                           } else {
230                           }
231                           else
232                           {
203233                              line_buffer[i] = temp_buffer[0][i];
204234                           }
205                        } else {
235                        }
236                        else
237                        {
206238                           line_buffer[i] = temp_buffer[0][i];
207239                        }
208                     } else if ( drawn[1][i] ) {
240                     }
241                     else if ( drawn[1][i] )
242                     {
209243                        line_buffer[i] = temp_buffer[1][i];
210244                     }
211245                     break;
212246                  }
213               } else {
214                  if ( drawn[0][i] ) {
247               }
248               else
249               {
250                  if ( drawn[0][i] )
251                  {
215252                     line_buffer[i] = temp_buffer[0][i];
216253                  }
217254               }
218            } else {
219               if ( vpc.vpc_prio[cur_prio].vdc1_enabled ) {
220                  if ( drawn[1][i] ) {
255            }
256            else
257            {
258               if ( vpc.vpc_prio[cur_prio].vdc1_enabled )
259               {
260                  if ( drawn[1][i] )
261                  {
221262                     line_buffer[i] = temp_buffer[1][i];
222263                  }
223264               }
224265            }
225266         }
226267      }
227   } else {
268   }
269   else
270   {
228271      /* We are in one of the blanking areas */
229272      draw_black_line(device->machine, vce.current_bitmap_line );
230273   }
r4679r4680
235278   vdc_advance_line(device->machine, 1 );
236279}
237280
238static void vdc_advance_line(running_machine *machine, int which) {
281static void vdc_advance_line(running_machine *machine, int which)
282{
239283   int ret = 0;
240284
241285   vdc[which].curline += 1;
242286   vdc[which].current_segment_line += 1;
243287   vdc[which].raster_count += 1;
244288
245   if ( vdc[which].satb_countdown ) {
289   if ( vdc[which].satb_countdown )
290   {
246291      vdc[which].satb_countdown -= 1;
247      if ( vdc[which].satb_countdown == 0 ) {
248         if ( vdc[which].vdc_data[DCR].w & DCR_DSC ) {
292      if ( vdc[which].satb_countdown == 0 )
293      {
294         if ( vdc[which].vdc_data[DCR].w & DCR_DSC )
295         {
249296            vdc[which].status |= VDC_DS;   /* set satb done flag */
250297            ret = 1;
251298         }
252299      }
253300   }
254301
255   if ( vce.current_bitmap_line == 0 ) {
302   if ( vce.current_bitmap_line == 0 )
303   {
256304      vdc[which].current_segment = STATE_VSW;
257305      vdc[which].current_segment_line = 0;
258306      vdc[which].vblank_triggered = 0;
259307      vdc[which].curline = 0;
260308   }
261309
262   if ( STATE_VSW == vdc[which].current_segment && vdc[which].current_segment_line >= ( vdc[which].vdc_data[VPR].b.l & 0x1F ) ) {
310   if ( STATE_VSW == vdc[which].current_segment && vdc[which].current_segment_line >= ( vdc[which].vdc_data[VPR].b.l & 0x1F ) )
311   {
263312      vdc[which].current_segment = STATE_VDS;
264313      vdc[which].current_segment_line = 0;
265314   }
266315
267   if ( STATE_VDS == vdc[which].current_segment && vdc[which].current_segment_line >= vdc[which].vdc_data[VPR].b.h ) {
316   if ( STATE_VDS == vdc[which].current_segment && vdc[which].current_segment_line >= vdc[which].vdc_data[VPR].b.h )
317   {
268318      vdc[which].current_segment = STATE_VDW;
269319      vdc[which].current_segment_line = 0;
270320      vdc[which].raster_count = 0x40;
271321   }
272322
273   if ( STATE_VDW == vdc[which].current_segment && vdc[which].current_segment_line > ( vdc[which].vdc_data[VDW].w & 0x01FF ) ) {
323   if ( STATE_VDW == vdc[which].current_segment && vdc[which].current_segment_line > ( vdc[which].vdc_data[VDW].w & 0x01FF ) )
324   {
274325      vdc[which].current_segment = STATE_VCR;
275326      vdc[which].current_segment_line = 0;
276327
277328      /* Generate VBlank interrupt, sprite DMA */
278329      vdc[which].vblank_triggered = 1;
279      if ( vdc[which].vdc_data[CR].w & CR_VR ) {
330      if ( vdc[which].vdc_data[CR].w & CR_VR )
331      {
280332         vdc[which].status |= VDC_VD;
281333         ret = 1;
282334      }
283335
284336      /* do VRAM > SATB DMA if the enable bit is set or the DVSSR reg. was written to */
285      if( ( vdc[which].vdc_data[DCR].w & DCR_DSR ) || vdc[which].dvssr_write ) {
337      if( ( vdc[which].vdc_data[DCR].w & DCR_DSR ) || vdc[which].dvssr_write )
338      {
286339         int i;
287340
288341         vdc[which].dvssr_write = 0;
289342
290         for( i = 0; i < 256; i++ ) {
343         for( i = 0; i < 256; i++ )
344         {
291345            vdc[which].sprite_ram[i] = ( vdc[which].vram[ ( vdc[which].vdc_data[DVSSR].w << 1 ) + i * 2 + 1 ] << 8 ) | vdc[which].vram[ ( vdc[which].vdc_data[DVSSR].w << 1 ) + i * 2 ];
292346         }
293347
294348         /* generate interrupt if needed */
295         if ( vdc[which].vdc_data[DCR].w & DCR_DSC ) {
349         if ( vdc[which].vdc_data[DCR].w & DCR_DSC )
350         {
296351            vdc[which].satb_countdown = 4;
297352         }
298353      }
299354   }
300355
301   if ( STATE_VCR == vdc[which].current_segment ) {
302      if ( vdc[which].current_segment_line >= 3 && vdc[which].current_segment_line >= vdc[which].vdc_data[VCR].b.l ) {
356   if ( STATE_VCR == vdc[which].current_segment )
357   {
358      if ( vdc[which].current_segment_line >= 3 && vdc[which].current_segment_line >= vdc[which].vdc_data[VCR].b.l )
359      {
303360         vdc[which].current_segment = STATE_VSW;
304361         vdc[which].current_segment_line = 0;
305362         vdc[which].curline = 0;
r4679r4680
307364   }
308365
309366   /* generate interrupt on line compare if necessary */
310   if ( vdc[which].raster_count == vdc[which].vdc_data[RCR].w && vdc[which].vdc_data[CR].w & CR_RC ) {
367   if ( vdc[which].raster_count == vdc[which].vdc_data[RCR].w && vdc[which].vdc_data[CR].w & CR_RC )
368   {
311369      vdc[which].status |= VDC_RR;
312370      ret = 1;
313371   }
314372
315373   /* handle frame events */
316   if(vdc[which].curline == 261 && ! vdc[which].vblank_triggered ) {
374   if(vdc[which].curline == 261 && ! vdc[which].vblank_triggered )
375   {
317376
318377      vdc[which].vblank_triggered = 1;
319      if(vdc[which].vdc_data[CR].w & CR_VR) {   /* generate IRQ1 if enabled */
378      if(vdc[which].vdc_data[CR].w & CR_VR)
379      {   /* generate IRQ1 if enabled */
320380         vdc[which].status |= VDC_VD;   /* set vblank flag */
321381         ret = 1;
322382      }
323383
324384      /* do VRAM > SATB DMA if the enable bit is set or the DVSSR reg. was written to */
325      if ( ( vdc[which].vdc_data[DCR].w & DCR_DSR ) || vdc[which].dvssr_write ) {
385      if ( ( vdc[which].vdc_data[DCR].w & DCR_DSR ) || vdc[which].dvssr_write )
386      {
326387         int i;
327388
328389         vdc[which].dvssr_write = 0;
329390#ifdef MAME_DEBUG
330391         assert(((vdc[which].vdc_data[DVSSR].w<<1) + 512) <= 0x10000);
331392#endif
332         for( i = 0; i < 256; i++ ) {
393         for( i = 0; i < 256; i++ )
394         {
333395            vdc[which].sprite_ram[i] = ( vdc[which].vram[ ( vdc[which].vdc_data[DVSSR].w << 1 ) + i * 2 + 1 ] << 8 ) | vdc[which].vram[ ( vdc[which].vdc_data[DVSSR].w << 1 ) + i * 2 ];
334396         }
335397
336398         /* generate interrupt if needed */
337         if(vdc[which].vdc_data[DCR].w & DCR_DSC) {
399         if(vdc[which].vdc_data[DCR].w & DCR_DSC)
400         {
338401            vdc[which].satb_countdown = 4;
339402         }
340403      }
341404   }
342405
343406   if (ret)
344      cpu_set_input_line(machine->cpu[0], 0, HOLD_LINE);
407      cputag_set_input_line(machine, "maincpu", 0, HOLD_LINE);
345408}
346409
347410VIDEO_START( pce )
r4679r4680
354417   memset(&vpc, 0, sizeof(vpc));
355418
356419   /* allocate VRAM */
357   vdc[0].vram = auto_malloc(0x10000);
358   vdc[1].vram = auto_malloc(0x10000);
420   vdc[0].vram = auto_alloc_array(machine, UINT8, 0x10000);
421   vdc[1].vram = auto_alloc_array(machine, UINT8, 0x10000);
359422   memset(vdc[0].vram, 0, 0x10000);
360423   memset(vdc[1].vram, 0, 0x10000);
361424
r4679r4680
401464      line_buffer[i] = color_base + vce.vce_data[0x100].w;
402465}
403466
404static void draw_sgx_overscan_line(int line) {
467static void draw_sgx_overscan_line(int line)
468{
405469   int i;
406470
407471   /* Are we in greyscale mode or in color mode? */
r4679r4680
535599static UINT8 vdc_r( running_machine *machine, int which, offs_t offset )
536600{
537601   int temp = 0;
538   switch(offset&3)
602   switch(offset & 3)
539603   {
540604      case 0x00:
541605         temp = vdc[which].status;
542606         vdc[which].status &= ~(VDC_VD | VDC_RR | VDC_CR | VDC_OR | VDC_DS);
543         cpu_set_input_line(machine->cpu[0],0,CLEAR_LINE);
607         cputag_set_input_line(machine, "maincpu", 0, CLEAR_LINE);
544608         break;
545609
546610      case 0x02:
547         temp = vram_read(which, vdc[which].vdc_data[MARR].w*2+0);
611         temp = vram_read(which, vdc[which].vdc_data[MARR].w * 2 + 0);
548612         break;
549613
550614      case 0x03:
551         temp = vram_read(which, vdc[which].vdc_data[MARR].w*2+1);
552         if ( vdc[which].vdc_register ==VxR ) {
615         temp = vram_read(which, vdc[which].vdc_data[MARR].w * 2 + 1);
616         if ( vdc[which].vdc_register == VxR )
617         {
553618            vdc[which].vdc_data[MARR].w += vdc[which].inc;
554619         }
555620         break;
r4679r4680
562627READ8_HANDLER( vdc_0_r ) {   return vdc_r( space->machine, 0, offset ); }
563628READ8_HANDLER( vdc_1_r ) {   return vdc_r( space->machine, 1, offset ); }
564629
565PALETTE_INIT( vce ) {
630PALETTE_INIT( vce )
631{
566632   int i;
567633
568   for( i = 0; i < 512; i++ ) {
634   for( i = 0; i < 512; i++ )
635   {
569636      int r = (( i >> 3) & 7) << 5;
570637      int g = (( i >> 6) & 7) << 5;
571638      int b = (( i     ) & 7) << 5;
r4679r4680
701768            if ( ! ( c & 0x0F ) )
702769               c &= 0x0F;
703770
704            if ( phys_x >= 0 && phys_x < vdc[which].physical_width ) {
771            if ( phys_x >= 0 && phys_x < vdc[which].physical_width )
772            {
705773               drawn[ pixel ] = c ? 1 : 0;
706774               if ( c || ! external_input )
707775                  line_buffer[ pixel ] = color_base + vce.vce_data[c].w;
708776               pixel++;
709               if ( vdc[which].physical_width != 512 ) {
710                  while ( pixel < ( ( ( phys_x + 1 ) * 512 ) / vdc[which].physical_width ) ) {
777               if ( vdc[which].physical_width != 512 )
778               {
779                  while ( pixel < ( ( ( phys_x + 1 ) * 512 ) / vdc[which].physical_width ) )
780                  {
711781                     drawn[ pixel ] = c ? 1 : 0;
712782                     if ( c || ! external_input )
713783                        line_buffer[ pixel ] = color_base + vce.vce_data[c].w;
r4679r4680
757827static void pce_refresh_sprites(running_machine *machine, int which, int line, UINT8 *drawn, UINT16 *line_buffer)
758828{
759829    int i;
760   UINT8 sprites_drawn=0;
830   UINT8 sprites_drawn = 0;
761831
762832   /* Are we in greyscale mode or in color mode? */
763833   int color_base = vce.vce_control & 0x80 ? 512 : 0;
764834
765835   /* count up: Highest priority is Sprite 0 */
766   for(i=0; i<64; i++)
836   for(i = 0; i < 64; i++)
767837   {
768838      static const int cgy_table[] = {16, 32, 64, 64};
769839
770      int obj_y = (vdc[which].sprite_ram[(i<<2)+0] & 0x03FF) - 64;
771      int obj_x = (vdc[which].sprite_ram[(i<<2)+1] & 0x03FF) - 32;
772      int obj_i = (vdc[which].sprite_ram[(i<<2)+2] & 0x07FE);
773      int obj_a = (vdc[which].sprite_ram[(i<<2)+3]);
840      int obj_y = (vdc[which].sprite_ram[(i << 2) + 0] & 0x03FF) - 64;
841      int obj_x = (vdc[which].sprite_ram[(i << 2) + 1] & 0x03FF) - 32;
842      int obj_i = (vdc[which].sprite_ram[(i << 2) + 2] & 0x07FE);
843      int obj_a = (vdc[which].sprite_ram[(i << 2) + 3]);
774844      int cgx   = (obj_a >> 8) & 1;   /* sprite width */
775845      int cgy   = (obj_a >> 12) & 3;  /* sprite height */
776846      int hf    = (obj_a >> 11) & 1;  /* horizontal flip */
r4679r4680
786856      if ((obj_x == -32) || (obj_x >= vdc[which].physical_width)) continue;
787857
788858      /* no need to draw an object that's ABOVE where we are. */
789      if((obj_y + obj_h)<line) continue;
859      if((obj_y + obj_h) < line) continue;
790860
791861      /* If CGX is set, bit 0 of sprite pattern index is forced to 0 */
792862      if ( cgx )
r4679r4680
800870      if ( cgy & 2 )
801871         obj_i &= ~12;
802872
803      if (obj_l < obj_h) {
873      if (obj_l < obj_h)
874      {
804875
805876         sprites_drawn++;
806         if(sprites_drawn > 16) {
877         if(sprites_drawn > 16)
878         {
807879            vdc[which].status |= VDC_OR;
808            if(vdc[which].vdc_data[CR].w&CR_OV)
809               cpu_set_input_line(machine->cpu[0], 0, ASSERT_LINE);
880            if(vdc[which].vdc_data[CR].w & CR_OV)
881               cputag_set_input_line(machine, "maincpu", 0, ASSERT_LINE);
810882            continue;  /* Should cause an interrupt */
811883         }
812884
r4679r4680
820892
821893            conv_obj(which, obj_i + (cgypos << 2), obj_l, hf, vf, buf);
822894
823            for(x=0;x<16;x++)
895            for(x = 0; x < 16; x++)
824896            {
825               if(((obj_x + x)<(vdc[which].physical_width))&&((obj_x + x)>=0))
897               if(((obj_x + x) < (vdc[which].physical_width)) && ((obj_x + x) >= 0))
826898               {
827                  if ( buf[x] ) {
828                     if( drawn[pixel_x] < 2 ) {
829                        if( priority || drawn[pixel_x] == 0 ) {
899                  if ( buf[x] )
900                   {
901                     if( drawn[pixel_x] < 2 )
902                     {
903                        if( priority || drawn[pixel_x] == 0 )
904                        {
830905                           line_buffer[pixel_x] = color_base + vce.vce_data[0x100 + (palette << 4) + buf[x]].w;
831                           if ( vdc[which].physical_width != 512 ) {
906                           if ( vdc[which].physical_width != 512 )
907                           {
832908                              int dp = 1;
833                              while ( pixel_x + dp < ( ( ( obj_x + x + 1 ) * 512 ) / vdc[which].physical_width ) ) {
909                              while ( pixel_x + dp < ( ( ( obj_x + x + 1 ) * 512 ) / vdc[which].physical_width ) )
910                              {
834911                                 drawn[pixel_x + dp] = i + 2;
835912                                 line_buffer[pixel_x + dp] = color_base + vce.vce_data[0x100 + (palette << 4) + buf[x]].w;
836913                                 dp++;
r4679r4680
840917                        drawn[pixel_x] = i + 2;
841918                     }
842919                     /* Check for sprite #0 collision */
843                     else if (drawn[pixel_x]==2)
920                     else if (drawn[pixel_x] == 2)
844921                     {
845                        if(vdc[which].vdc_data[CR].w&CR_CC)
846                           cpu_set_input_line(machine->cpu[0], 0, ASSERT_LINE);
847                        vdc[which].status|=VDC_CR;
922                        if(vdc[which].vdc_data[CR].w & CR_CC)
923                           cputag_set_input_line(machine, "maincpu", 0, ASSERT_LINE);
924                        vdc[which].status |= VDC_CR;
848925                     }
849926                  }
850927               }
851               if ( vdc[which].physical_width != 512 ) {
928               if ( vdc[which].physical_width != 512 )
929               {
852930                  pixel_x = ( ( obj_x + x + 1 ) * 512 ) / vdc[which].physical_width;
853               } else {
931               }
932               else
933               {
854934                  pixel_x += 1;
855935               }
856936            }
r4679r4680
862942
863943            conv_obj(which, obj_i + (cgypos << 2) + (hf ? 2 : 0), obj_l, hf, vf, buf);
864944
865            for(x=0;x<16;x++)
945            for(x = 0; x < 16; x++)
866946            {
867               if(((obj_x + x)<(vdc[which].physical_width))&&((obj_x + x)>=0))
947               if(((obj_x + x) < (vdc[which].physical_width)) && ((obj_x + x) >= 0))
868948               {
869                  if ( buf[x] ) {
870                     if( drawn[pixel_x] < 2 ) {
871                        if ( priority || drawn[pixel_x] == 0 ) {
949                  if ( buf[x] )
950                  {
951                     if( drawn[pixel_x] < 2 )
952                     {
953                        if ( priority || drawn[pixel_x] == 0 )
954                        {
872955                           line_buffer[pixel_x] = color_base + vce.vce_data[0x100 + (palette << 4) + buf[x]].w;
873                           if ( vdc[which].physical_width != 512 ) {
956                           if ( vdc[which].physical_width != 512 )
957                           {
874958                              int dp = 1;
875                              while ( pixel_x + dp < ( ( ( obj_x + x + 1 ) * 512 ) / vdc[which].physical_width ) ) {
959                              while ( pixel_x + dp < ( ( ( obj_x + x + 1 ) * 512 ) / vdc[which].physical_width ) )
960                              {
876961                                 drawn[pixel_x + dp] = i + 2;
877962                                 line_buffer[pixel_x + dp] = color_base + vce.vce_data[0x100 + (palette << 4) + buf[x]].w;
878963                                 dp++;
r4679r4680
882967                        drawn[pixel_x] = i + 2;
883968                     }
884969                     /* Check for sprite #0 collision */
885                     else if ( drawn[pixel_x] == 2 ) {
886                        if(vdc[which].vdc_data[CR].w&CR_CC)
887                           cpu_set_input_line(machine->cpu[0], 0, ASSERT_LINE);
888                        vdc[which].status|=VDC_CR;
970                     else if ( drawn[pixel_x] == 2 )
971                     {
972                        if(vdc[which].vdc_data[CR].w & CR_CC)
973                           cputag_set_input_line(machine, "maincpu", 0, ASSERT_LINE);
974                        vdc[which].status |= VDC_CR;
889975                     }
890976                  }
891977               }
892               if ( vdc[which].physical_width != 512 ) {
978               if ( vdc[which].physical_width != 512 )
979               {
893980                  pixel_x = ( ( obj_x + x + 1 ) * 512 ) / vdc[which].physical_width;
894               } else {
981               }
982               else
983               {
895984                  pixel_x += 1;
896985               }
897986            }
r4679r4680
900989                   is only drawn if there are 2 open slots.
901990                */
902991            sprites_drawn++;
903            if( sprites_drawn > 16 ) {
992            if( sprites_drawn > 16 )
993            {
904994               vdc[which].status |= VDC_OR;
905995               if(vdc[which].vdc_data[CR].w&CR_OV)
906                  cpu_set_input_line(machine->cpu[0], 0, ASSERT_LINE);
907            } else {
996                  cputag_set_input_line(machine, "maincpu", 0, ASSERT_LINE);
997            }
998            else
999            {
9081000               conv_obj(which, obj_i + (cgypos << 2) + (hf ? 0 : 2), obj_l, hf, vf, buf);
909               for(x=0;x<16;x++)
1001               for(x = 0; x < 16; x++)
9101002               {
911                  if(((obj_x + 0x10 + x)<(vdc[which].physical_width))&&((obj_x + 0x10 + x)>=0))
1003                  if(((obj_x + 0x10 + x) < (vdc[which].physical_width)) && ((obj_x + 0x10 + x) >= 0))
9121004                  {
913                     if ( buf[x] ) {
914                        if( drawn[pixel_x] < 2 ) {
915                           if( priority || drawn[pixel_x] == 0 ) {
1005                     if ( buf[x] )
1006                     {
1007                        if( drawn[pixel_x] < 2 )
1008                        {
1009                           if( priority || drawn[pixel_x] == 0 )
1010                           {
9161011                              line_buffer[pixel_x] = color_base + vce.vce_data[0x100 + (palette << 4) + buf[x]].w;
917                              if ( vdc[which].physical_width != 512 ) {
1012                              if ( vdc[which].physical_width != 512 )
1013                              {
9181014                                 int dp = 1;
919                                 while ( pixel_x + dp < ( ( ( obj_x + x + 17 ) * 512 ) / vdc[which].physical_width ) ) {
1015                                 while ( pixel_x + dp < ( ( ( obj_x + x + 17 ) * 512 ) / vdc[which].physical_width ) )
1016                                 {
9201017                                    drawn[pixel_x + dp] = i + 2;
9211018                                    line_buffer[pixel_x + dp] = color_base + vce.vce_data[0x100 + (palette << 4) + buf[x]].w;
9221019                                    dp++;
r4679r4680
9261023                           drawn[pixel_x] = i + 2;
9271024                        }
9281025                        /* Check for sprite #0 collision */
929                        else if ( drawn[pixel_x]==2 ) {
930                           if(vdc[which].vdc_data[CR].w&CR_CC)
931                              cpu_set_input_line(machine->cpu[0], 0, ASSERT_LINE);
932                           vdc[which].status|=VDC_CR;
1026                        else if ( drawn[pixel_x] == 2 )
1027                         {
1028                           if(vdc[which].vdc_data[CR].w & CR_CC)
1029                              cputag_set_input_line(machine, "maincpu", 0, ASSERT_LINE);
1030                           vdc[which].status |= VDC_CR;
9331031                        }
9341032                     }
9351033                  }
936                  if ( vdc[which].physical_width != 512 ) {
1034                  if ( vdc[which].physical_width != 512 )
1035                  {
9371036                     pixel_x = ( ( obj_x + x + 17 ) * 512 ) / vdc[which].physical_width;
938                  } else {
1037                  }
1038                  else
1039                  {
9391040                     pixel_x += 1;
9401041                  }
9411042               }
r4679r4680
9801081   vdc[which].vdc_data[LENR].w = len;
9811082   if(dvc)
9821083   {
983      cpu_set_input_line(machine->cpu[0], 0, ASSERT_LINE);
1084      cputag_set_input_line(machine, "maincpu", 0, ASSERT_LINE);
9841085   }
9851086
9861087}
9871088
988static void vpc_update_prio_map( void ) {
1089static void vpc_update_prio_map( void )
1090{
9891091   int i;
9901092
991   for( i = 0; i < 512; i++ ) {
1093   for( i = 0; i < 512; i++ )
1094   {
9921095      vpc.prio_map[i] = 0;
993      if ( vpc.window1.w < 0x40 || i > vpc.window1.w ) {
1096      if ( vpc.window1.w < 0x40 || i > vpc.window1.w )
1097      {
9941098         vpc.prio_map[i] |= 1;
9951099      }
996      if ( vpc.window2.w < 0x40 || i > vpc.window2.w ) {
1100      if ( vpc.window2.w < 0x40 || i > vpc.window2.w )
1101      {
9971102         vpc.prio_map[i] |= 2;
9981103      }
9991104   }
10001105}
10011106
1002WRITE8_HANDLER( vpc_w ) {
1107WRITE8_HANDLER( vpc_w )
1108{
10031109//if ( offset < 2 )
10041110//printf("VPC write offset %02X, data %02X\n", offset, data );
1005   switch( offset & 0x07 ) {
1111   switch( offset & 0x07 )
1112   {
10061113   case 0x00:   /* Priority register #0 */
10071114      vpc.priority.b.l = data;
10081115      vpc.vpc_prio[0].prio = ( data >> 2 ) & 3;
r4679r4680
10431150   }
10441151}
10451152
1046READ8_HANDLER( vpc_r ) {
1153READ8_HANDLER( vpc_r )
1154{
10471155   UINT8 data = 0;
1048   switch( offset & 0x07 ) {
1156   switch( offset & 0x07 )
1157   {
10491158   case 0x00:  /* Priority register #0 */
10501159      data = vpc.priority.b.l;
10511160      break;
r4679r4680
10701179
10711180static void vpc_init( running_machine *machine )
10721181{
1073   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
1182   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
10741183   vpc_w( space, 0, 0x11 );
10751184   vpc_w( space, 1, 0x11 );
10761185   vpc.window1.w = 0;
r4679r4680
10781187   vpc.vdc_select = 0;
10791188}
10801189
1081WRITE8_HANDLER( sgx_vdc_w ) {
1082   if ( vpc.vdc_select ) {
1190WRITE8_HANDLER( sgx_vdc_w )
1191{
1192   if ( vpc.vdc_select )
1193   {
10831194      vdc_1_w( space, offset, data );
1084   } else {
1195   }
1196   else
1197   {
10851198      vdc_0_w( space, offset, data );
10861199   }
10871200}
10881201
1089READ8_HANDLER( sgx_vdc_r ) {
1202READ8_HANDLER( sgx_vdc_r )
1203{
10901204   return ( vpc.vdc_select ) ? vdc_1_r( space, offset ) : vdc_0_r( space, offset );
10911205}
10921206
src/mame/video/kaneko16.c
r4679r4680
125125VIDEO_START( kaneko16_sprites )
126126{
127127   /* 0x400 sprites max */
128   spritelist.first_sprite = (struct tempsprite *)auto_malloc(0x400 * sizeof(spritelist.first_sprite[0]));
128   spritelist.first_sprite = auto_alloc_array(machine, struct tempsprite, 0x400);
129129}
130130
131131VIDEO_START( kaneko16_1xVIEW2_tilemaps )
r4679r4680
256256
257257   /* Render the hi-color static backgrounds held in the ROMs */
258258
259   kaneko16_bg15_bitmap = auto_bitmap_alloc(256 * 32, 256 * 1, BITMAP_FORMAT_INDEXED16);
259   kaneko16_bg15_bitmap = auto_bitmap_alloc(machine, 256 * 32, 256 * 1, BITMAP_FORMAT_INDEXED16);
260260
261261/*
262262    8aba is used as background color
src/mame/video/goldstar.c
r4679r4680
2626static UINT8 cmaster_girl_num;
2727static UINT8 cmaster_girl_pal;
2828static UINT8 cm_enable_reg;
29static UINT8 cm_girl_scroll;
2930
31WRITE8_HANDLER( cm_girl_scroll_w )
32{
33   cm_girl_scroll = data;
34   /*
35        xxxx ----  yscroll
36        ---- xxxx  xscroll
37
38        this isn't very fine scrolling, but i see no other registers.
39        1000 1000 is the center of the screen.
40    */
41}
42
3043WRITE8_HANDLER( cm_outport0_w )
3144{
3245   cm_enable_reg = data;
r4679r4680
213226   cmaster_girl_num = (data >> 4)&0x7;
214227   cmaster_girl_pal = (data >> 2)&0x3;
215228
229   //bgcolor = (data & 0x03) >> 0;
230
231   // apparently some boards have this colour scheme?
232   // i'm not convinced it isn't just a different prom on them
233   #if 0
234   bgcolor = 0;
235   bgcolor |= (data & 0x01) << 1;
236   bgcolor |= (data & 0x02) >> 1;
237   #else
216238   bgcolor = (data & 0x03) >> 0;
239   #endif
240
217241   tilemap_mark_all_tiles_dirty (goldstar_reel1_tilemap);
218242   tilemap_mark_all_tiles_dirty (goldstar_reel2_tilemap);
219243   tilemap_mark_all_tiles_dirty (goldstar_reel3_tilemap);
r4679r4680
262286      if (memory_region(screen->machine,"user1"))
263287      {
264288         const gfx_element *gfx = screen->machine->gfx[2];
265         drawgfxzoom(bitmap,gfx,cmaster_girl_num,cmaster_girl_pal,0,0,32*8,16*8,cliprect,TRANSPARENCY_PEN,0, 0x20000, 0x10000);
289         int girlyscroll = (INT8)((cm_girl_scroll & 0xf0));
290         int girlxscroll = (INT8)((cm_girl_scroll & 0x0f)<<4);
291
292         drawgfxzoom(bitmap,gfx,cmaster_girl_num,cmaster_girl_pal,0,0,-(girlxscroll*2),-(girlyscroll),cliprect,TRANSPARENCY_PEN,0, 0x20000, 0x10000);
266293      }
267294   }
268295
src/mame/video/20pacgal.c
r4679r4680
292292
293293static VIDEO_UPDATE( 20pacgal )
294294{
295   const _20pacgal_state *state = screen->machine->driver_data;
295   const _20pacgal_state *state = (_20pacgal_state *)screen->machine->driver_data;
296296
297297   draw_chars(state, bitmap);
298298   draw_sprites(state, bitmap);
src/mame/video/spbactn.c
r4679r4680
113113   int width = video_screen_get_width(machine->primary_screen);
114114   int height = video_screen_get_height(machine->primary_screen);
115115
116   tile_bitmap_bg = auto_bitmap_alloc(width, height, BITMAP_FORMAT_INDEXED16);
117   tile_bitmap_fg = auto_bitmap_alloc(width, height, BITMAP_FORMAT_INDEXED16);
116   tile_bitmap_bg = auto_bitmap_alloc(machine, width, height, BITMAP_FORMAT_INDEXED16);
117   tile_bitmap_fg = auto_bitmap_alloc(machine, width, height, BITMAP_FORMAT_INDEXED16);
118118}
119119
120120VIDEO_UPDATE( spbactn )
src/mame/video/atarimo.c
r4679r4680
246246   mo->gfxelement[idx].total_colors = 65536;
247247}
248248
249static atarimo_data atarimo[ATARIMO_MAX];
250static emu_timer *force_update_timer;
251249
252250/*---------------------------------------------------------------
253251    init_savestate: Initialize save states
r4679r4680
406404   mo->slipram       = (map == 0) ? &atarimo_0_slipram : &atarimo_1_slipram;
407405
408406   /* allocate the temp bitmap */
409   mo->bitmap        = auto_bitmap_alloc(video_screen_get_width(machine->primary_screen), video_screen_get_height(machine->primary_screen), BITMAP_FORMAT_INDEXED16);
407   mo->bitmap        = auto_bitmap_alloc(machine, video_screen_get_width(machine->primary_screen), video_screen_get_height(machine->primary_screen), BITMAP_FORMAT_INDEXED16);
410408   bitmap_fill(mo->bitmap, NULL, desc->transpen);
411409
412410   /* allocate the spriteram */
413   mo->spriteram = auto_malloc(sizeof(mo->spriteram[0]) * mo->spriteramsize);
411   mo->spriteram = auto_alloc_array_clear(machine, atarimo_entry, mo->spriteramsize);
414412
415   /* clear it to zero */
416   memset(mo->spriteram, 0, sizeof(mo->spriteram[0]) * mo->spriteramsize);
417
418413   /* allocate the code lookup */
419   mo->codelookup = auto_malloc(sizeof(mo->codelookup[0]) * round_to_powerof2(mo->codemask.mask));
414   mo->codelookup = auto_alloc_array(machine, UINT16, round_to_powerof2(mo->codemask.mask));
420415
421416   /* initialize it 1:1 */
422417   for (i = 0; i < round_to_powerof2(mo->codemask.mask); i++)
423418      mo->codelookup[i] = i;
424419
425420   /* allocate the color lookup */
426   mo->colorlookup = auto_malloc(sizeof(mo->colorlookup[0]) * round_to_powerof2(mo->colormask.mask));
421   mo->colorlookup = auto_alloc_array(machine, UINT8, round_to_powerof2(mo->colormask.mask));
427422
428423   /* initialize it 1:1 */
429424   for (i = 0; i < round_to_powerof2(mo->colormask.mask); i++)
r4679r4680
432427   /* allocate dirty grid */
433428   mo->dirtywidth = (video_screen_get_width(machine->primary_screen) >> mo->tilexshift) + 2;
434429   mo->dirtyheight = (video_screen_get_height(machine->primary_screen) >> mo->tileyshift) + 2;
435   mo->dirtygrid = auto_malloc(mo->dirtywidth * mo->dirtyheight);
430   mo->dirtygrid = auto_alloc_array(machine, UINT8, mo->dirtywidth * mo->dirtyheight);
436431
437432   /* allocate the gfx lookup */
438   mo->gfxlookup = auto_malloc(sizeof(mo->gfxlookup[0]) * round_to_powerof2(mo->gfxmask.mask));
433   mo->gfxlookup = auto_alloc_array(machine, UINT8, round_to_powerof2(mo->gfxmask.mask));
439434
440435   /* initialize it with the gfxindex we were passed in */
441436   for (i = 0; i < round_to_powerof2(mo->gfxmask.mask); i++)
src/mame/video/redalert.c
r4679r4680
138138
139139static VIDEO_START( redalert )
140140{
141   redalert_bitmap_colorram = auto_malloc(0x0400);
141   redalert_bitmap_colorram = auto_alloc_array(machine, UINT8, 0x0400);
142142
143143   state_save_register_global_pointer(machine, redalert_bitmap_colorram, 0x0400);
144144
src/mame/video/stadhero.c
r4679r4680
159159   pf1_tilemap =     tilemap_create(machine, get_pf1_tile_info,tilemap_scan_rows, 8, 8,32,32);
160160   pf2_tilemap =     tilemap_create(machine, get_pf2_tile_info,stadhero_scan,     16,16,64,64);
161161
162   stadhero_pf2_data = auto_malloc(0x2000 * 2);
162   stadhero_pf2_data = auto_alloc_array(machine, UINT16, 0x2000);
163163
164164   tilemap_set_transparent_pen(pf1_tilemap,0);
165165}
src/mame/video/simpsons.c
r4679r4680
104104{
105105   if (bank & 1)
106106   {
107      memory_install_readwrite8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x0000, 0x0fff, 0, 0, SMH_BANK5, paletteram_xBBBBBGGGGGRRRRR_be_w);
107      memory_install_readwrite8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x0000, 0x0fff, 0, 0, (read8_space_func)SMH_BANK(5), paletteram_xBBBBBGGGGGRRRRR_be_w);
108108      memory_set_bankptr(machine, 5, paletteram);
109109   }
110110   else
111      memory_install_readwrite8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x0000, 0x0fff, 0, 0, K052109_r, K052109_w);
111      memory_install_readwrite8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x0000, 0x0fff, 0, 0, K052109_r, K052109_w);
112112
113113   if (bank & 2)
114      memory_install_readwrite8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x2000, 0x3fff, 0, 0, simpsons_K053247_r, simpsons_K053247_w);
114      memory_install_readwrite8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x2000, 0x3fff, 0, 0, simpsons_K053247_r, simpsons_K053247_w);
115115   else
116      memory_install_readwrite8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x2000, 0x3fff, 0, 0, simpsons_K052109_r, simpsons_K052109_w);
116      memory_install_readwrite8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x2000, 0x3fff, 0, 0, simpsons_K052109_r, simpsons_K052109_w);
117117}
118118
119119
src/mame/video/model1.c
r4679r4680
14381438   sys24_tile_vh_start(machine, 0x3fff);
14391439
14401440   poly_rom = (UINT32 *)memory_region(machine, "user1");
1441   poly_ram = auto_malloc(0x400000*4);
1442   memset(poly_ram, 0, 0x400000*4);
1443   tgp_ram = auto_malloc((0x100000-0x40000)*2);
1444   memset(tgp_ram, 0, (0x100000-0x40000)*2);
1445   pointdb = auto_malloc(1000000*2*sizeof(struct point));
1446   memset(pointdb, 0, 1000000*2*sizeof(struct point));
1447   quaddb  = auto_malloc(1000000*sizeof(struct quad));
1448   memset(quaddb, 0, 1000000*sizeof(struct quad));
1449   quadind = auto_malloc(1000000*sizeof(struct quad *));
1450   memset(quadind, 0, 1000000*sizeof(struct quad *));
1441   poly_ram = auto_alloc_array_clear(machine, UINT32, 0x400000);
1442   tgp_ram = auto_alloc_array_clear(machine, UINT16, 0x100000-0x40000);
1443   pointdb = auto_alloc_array_clear(machine, struct point, 1000000*2);
1444   quaddb  = auto_alloc_array_clear(machine, struct quad, 1000000);
1445   quadind = auto_alloc_array_clear(machine, struct quad *, 1000000);
14511446
14521447   pointpt = pointdb;
14531448   quadpt = quaddb;
src/mame/video/taito_b.c
r4679r4680
161161static void hitice_clear_pixel_bitmap(running_machine *machine)
162162{
163163   int i;
164   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
164   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
165165
166    for (i = 0;i < 0x40000;i++)
167      hitice_pixelram_w(space,i,0,0xffff);
166    for (i = 0; i < 0x40000; i++)
167      hitice_pixelram_w(space, i, 0, 0xffff);
168168}
169169
170170static TILE_GET_INFO( get_bg_tile_info )
r4679r4680
175175   SET_TILE_INFO(
176176      1,
177177      tile,
178      b_bg_color_base + (color&0x3f),
179      TILE_FLIPYX((color & 0x00c0)>>6));
178      b_bg_color_base + (color & 0x3f),
179      TILE_FLIPYX((color & 0x00c0) >> 6));
180180}
181181
182182static TILE_GET_INFO( get_fg_tile_info )
r4679r4680
187187   SET_TILE_INFO(
188188      1,
189189      tile,
190      b_fg_color_base + (color&0x3f),
191      TILE_FLIPYX((color & 0x00c0)>>6));
190      b_fg_color_base + (color & 0x3f),
191      TILE_FLIPYX((color & 0x00c0) >> 6));
192192}
193193
194194static TILE_GET_INFO( get_tx_tile_info )
r4679r4680
205205
206206static VIDEO_START( taitob_core )
207207{
208   framebuffer[0] = auto_bitmap_alloc(512,256, video_screen_get_format(machine->primary_screen));
209   framebuffer[1] = auto_bitmap_alloc(512,256, video_screen_get_format(machine->primary_screen));
208   framebuffer[0] = auto_bitmap_alloc(machine,512,256, video_screen_get_format(machine->primary_screen));
209   framebuffer[1] = auto_bitmap_alloc(machine,512,256, video_screen_get_format(machine->primary_screen));
210210   pixel_bitmap = NULL;  /* only hitice needs this */
211211
212212   bg_tilemap = tilemap_create(machine, get_bg_tile_info,tilemap_scan_rows,     16,16,64,64);
r4679r4680
279279{
280280  VIDEO_START_CALL(taitob_color_order0);
281281
282  pixel_bitmap = auto_bitmap_alloc(1024,512,video_screen_get_format(machine->primary_screen));
282  pixel_bitmap = auto_bitmap_alloc(machine,1024,512,video_screen_get_format(machine->primary_screen));
283283
284284  state_save_register_global_bitmap(machine, pixel_bitmap);
285285}
src/mame/video/taitoic.c
r4679r4680
806806         PC080SN_tilemap[i][1] = tilemap_create(machine, PC080SN_get_tile_info[i][1],tilemap_scan_rows,8,8,128,64);
807807      }
808808
809      PC080SN_ram[i] = auto_malloc(PC080SN_RAM_SIZE);
809      PC080SN_ram[i] = auto_alloc_array_clear(machine, UINT16, PC080SN_RAM_SIZE/2);
810810
811811      PC080SN_bg_ram[i][0]       = PC080SN_ram[i] + 0x0000 /2;
812812      PC080SN_bg_ram[i][1]       = PC080SN_ram[i] + 0x8000 /2;
813813      PC080SN_bgscroll_ram[i][0] = PC080SN_ram[i] + 0x4000 /2;
814814      PC080SN_bgscroll_ram[i][1] = PC080SN_ram[i] + 0xc000 /2;
815      memset(PC080SN_ram[i],0,PC080SN_RAM_SIZE);
816815
817816      state_save_register_item_pointer(machine, "PC080SN", NULL, i, PC080SN_ram[i], PC080SN_RAM_SIZE/2);
818817      state_save_register_item_array(machine, "PC080SN", NULL, i, PC080SN_ctrl[i]);
r4679r4680
12231222
12241223   PC090OJ_buffer = use_buffer;
12251224
1226   PC090OJ_ram = auto_malloc(PC090OJ_RAM_SIZE);
1227   PC090OJ_ram_buffered = auto_malloc(PC090OJ_RAM_SIZE);
1225   PC090OJ_ram = auto_alloc_array_clear(machine, UINT16, PC090OJ_RAM_SIZE/2);
1226   PC090OJ_ram_buffered = auto_alloc_array_clear(machine, UINT16, PC090OJ_RAM_SIZE/2);
12281227
1229   memset(PC090OJ_ram,0,PC090OJ_RAM_SIZE);
1230   memset(PC090OJ_ram_buffered,0,PC090OJ_RAM_SIZE);
1231
12321228   state_save_register_global_pointer(machine, PC090OJ_ram, PC090OJ_RAM_SIZE/2);
12331229   state_save_register_global_pointer(machine, PC090OJ_ram_buffered, PC090OJ_RAM_SIZE/2);
12341230   state_save_register_global(machine, PC090OJ_ctrl);
r4679r4680
15251521
15261522   TC0080VCO_tilemap[0] = tilemap_create(machine, TC0080VCO_get_bg0_tile_info_0,tilemap_scan_rows,16,16,64,64);
15271523   TC0080VCO_tilemap[1] = tilemap_create(machine, TC0080VCO_get_bg1_tile_info_0,tilemap_scan_rows,16,16,64,64);
1528   TC0080VCO_ram = auto_malloc(TC0080VCO_RAM_SIZE);
1524   TC0080VCO_ram = auto_alloc_array_clear(machine, UINT16, TC0080VCO_RAM_SIZE/2);
15291525
1530   memset( TC0080VCO_ram,0,TC0080VCO_RAM_SIZE );
15311526   TC0080VCO_set_layer_ptrs();
15321527
15331528   /* use the given gfx set for bg tiles*/
r4679r4680
22832278
22842279      TC0100SCN_cliprect[i] = myclip;
22852280
2286      TC0100SCN_ram[i] = auto_malloc(TC0100SCN_RAM_SIZE);
2281      TC0100SCN_ram[i] = auto_alloc_array_clear(machine, UINT16, TC0100SCN_RAM_SIZE/2);
22872282
22882283      TC0100SCN_set_layer_ptrs(i);
2289      memset(TC0100SCN_ram[i],0,TC0100SCN_RAM_SIZE);
22902284
22912285      {
22922286         state_save_register_item_pointer(machine, "TC0100SCN", NULL, i, TC0100SCN_ram[i], TC0100SCN_RAM_SIZE/2);
r4679r4680
27242718
27252719void TC0280GRD_vh_start(running_machine *machine, int gfxnum)
27262720{
2727   TC0280GRD_ram = auto_malloc(TC0280GRD_RAM_SIZE);
2721   TC0280GRD_ram = auto_alloc_array(machine, UINT16, TC0280GRD_RAM_SIZE/2);
27282722   TC0280GRD_tilemap = tilemap_create(machine, TC0280GRD_get_tile_info,tilemap_scan_rows,8,8,64,64);
27292723
27302724   state_save_register_global_pointer(machine, TC0280GRD_ram, TC0280GRD_RAM_SIZE/2);
r4679r4680
30863080      TC0480SCP_tilemap[3][1] = tilemap_create(machine, tc480_get_tile_info[3],tilemap_scan_rows,16,16,64,32);
30873081      TC0480SCP_tilemap[4][1] = tilemap_create(machine, tc480_get_tile_info[4],tilemap_scan_rows,8,8,64,64);
30883082
3089      TC0480SCP_ram = auto_malloc(TC0480SCP_RAM_SIZE);
3083      TC0480SCP_ram = auto_alloc_array_clear(machine, UINT16, TC0480SCP_RAM_SIZE/2);
30903084
30913085      TC0480SCP_set_layer_ptrs();
3092      memset(TC0480SCP_ram,0,TC0480SCP_RAM_SIZE);
30933086
30943087      state_save_register_global_pointer(machine, TC0480SCP_ram, TC0480SCP_RAM_SIZE/2);
30953088      state_save_register_global_array(machine, TC0480SCP_ctrl);
r4679r4680
38053798
38063799void TC0150ROD_vh_start(running_machine *machine)
38073800{
3808   TC0150ROD_ram = auto_malloc(TC0150ROD_RAM_SIZE);
3801   TC0150ROD_ram = auto_alloc_array(machine, UINT16, TC0150ROD_RAM_SIZE/2);
38093802
38103803   state_save_register_global_pointer(machine, TC0150ROD_ram, TC0150ROD_RAM_SIZE/2);
38113804}
r4679r4680
46024595
46034596void TC0110PCR_vh_start(running_machine *machine)
46044597{
4605   TC0110PCR_ram[0] = auto_malloc(TC0110PCR_RAM_SIZE * sizeof(*TC0110PCR_ram[0]));
4598   TC0110PCR_ram[0] = auto_alloc_array(machine, UINT16, TC0110PCR_RAM_SIZE);
46064599
46074600   state_save_register_global_pointer(machine, TC0110PCR_ram[0], TC0110PCR_RAM_SIZE);
46084601   state_save_register_postload(machine, TC0110PCR_restore_colors, (void *)0);
r4679r4680
46124605
46134606void TC0110PCR_1_vh_start(running_machine *machine)
46144607{
4615   TC0110PCR_ram[1] = auto_malloc(TC0110PCR_RAM_SIZE * sizeof(*TC0110PCR_ram[1]));
4608   TC0110PCR_ram[1] = auto_alloc_array(machine, UINT16, TC0110PCR_RAM_SIZE);
46164609
46174610   state_save_register_global_pointer(machine, TC0110PCR_ram[1], TC0110PCR_RAM_SIZE);
46184611   state_save_register_postload(machine, TC0110PCR_restore_colors, (void *)1);
r4679r4680
46204613
46214614void TC0110PCR_2_vh_start(running_machine *machine)
46224615{
4623   TC0110PCR_ram[2] = auto_malloc(TC0110PCR_RAM_SIZE * sizeof(*TC0110PCR_ram[2]));
4616   TC0110PCR_ram[2] = auto_alloc_array(machine, UINT16, TC0110PCR_RAM_SIZE);
46244617
46254618   state_save_register_global_pointer(machine, TC0110PCR_ram[2], TC0110PCR_RAM_SIZE);
46264619   state_save_register_postload(machine, TC0110PCR_restore_colors, (void *)2);
src/mame/video/suna8.c
r4679r4680
171171
172172
173173
174static void suna8_vh_start_common(int dim)
174static void suna8_vh_start_common(running_machine *machine, int dim)
175175{
176176   suna8_text_dim = dim;
177177   if (!(suna8_text_dim > 0))
178178   {
179      paletteram   =   auto_malloc(0x200 * 2);
180      spriteram   =   auto_malloc(0x2000 * 2);
179      paletteram   =   auto_alloc_array(machine, UINT8, 0x200 * 2);
180      spriteram   =   auto_alloc_array(machine, UINT8, 0x2000 * 2);
181181      suna8_spritebank  = 0;
182182      suna8_palettebank = 0;
183183   }
r4679r4680
191191#endif
192192}
193193
194VIDEO_START( suna8_textdim0 )   { suna8_vh_start_common(0);  }
195VIDEO_START( suna8_textdim8 )   { suna8_vh_start_common(8);  }
196VIDEO_START( suna8_textdim12 )   { suna8_vh_start_common(12); }
194VIDEO_START( suna8_textdim0 )   { suna8_vh_start_common(machine, 0);  }
195VIDEO_START( suna8_textdim8 )   { suna8_vh_start_common(machine, 8);  }
196VIDEO_START( suna8_textdim12 )   { suna8_vh_start_common(machine, 12); }
197197
198198/***************************************************************************
199199
src/mame/video/btime.c
r4679r4680
152152    int width = 256;
153153    int height = 256;
154154    bitmap_format format = video_screen_get_format(machine->primary_screen);
155    background_bitmap = auto_bitmap_alloc(2*width, height, format);
155    background_bitmap = auto_bitmap_alloc(machine, 2*width, height, format);
156156
157157    VIDEO_START_CALL(btime);
158158}
src/mame/video/cps1.c
r4679r4680
20552055      palette_set_color(machine,i,MAKE_RGB(0,0,0));
20562056   }
20572057
2058    cps1_buffered_obj = auto_malloc (cps1_obj_size);
2059    memset(cps1_buffered_obj, 0x00, cps1_obj_size);
2058    cps1_buffered_obj = auto_alloc_array_clear(machine, UINT16, cps1_obj_size/2);
20602059
20612060   if (cps_version==2)
20622061   {
2063      cps2_buffered_obj = auto_malloc (cps2_obj_size);
2064      memset(cps2_buffered_obj, 0x00, cps2_obj_size);
2062      cps2_buffered_obj = auto_alloc_array_clear(machine, UINT16, cps2_obj_size/2);
20652063   }
20662064
20672065   memset(cps1_gfxram, 0, cps1_gfxram_size);   /* Clear GFX RAM */
src/mame/video/starcrus.c
r4679r4680
5555
5656VIDEO_START( starcrus )
5757{
58   ship1_vid = auto_bitmap_alloc(16,16,video_screen_get_format(machine->primary_screen));
59   ship2_vid = auto_bitmap_alloc(16,16,video_screen_get_format(machine->primary_screen));
58   ship1_vid = auto_bitmap_alloc(machine,16,16,video_screen_get_format(machine->primary_screen));
59   ship2_vid = auto_bitmap_alloc(machine,16,16,video_screen_get_format(machine->primary_screen));
6060
61   proj1_vid = auto_bitmap_alloc(16,16,video_screen_get_format(machine->primary_screen));
62   proj2_vid = auto_bitmap_alloc(16,16,video_screen_get_format(machine->primary_screen));
61   proj1_vid = auto_bitmap_alloc(machine,16,16,video_screen_get_format(machine->primary_screen));
62   proj2_vid = auto_bitmap_alloc(machine,16,16,video_screen_get_format(machine->primary_screen));
6363}
6464
6565WRITE8_HANDLER( starcrus_ship_parm_1_w )
src/mame/video/stactics.c
r4679r4680
9191
9292WRITE8_HANDLER( stactics_scroll_ram_w )
9393{
94   stactics_state *state = space->machine->driver_data;
94   stactics_state *state = (stactics_state *)space->machine->driver_data;
9595
9696   if (data & 0x01)
9797   {
r4679r4680
114114
115115CUSTOM_INPUT( stactics_get_frame_count_d3 )
116116{
117   stactics_state *state = field->port->machine->driver_data;
117   stactics_state *state = (stactics_state *)field->port->machine->driver_data;
118118
119119   return (state->frame_count >> 3) & 0x01;
120120}
r4679r4680
129129
130130WRITE8_HANDLER( stactics_speed_latch_w )
131131{
132   stactics_state *state = space->machine->driver_data;
132   stactics_state *state = (stactics_state *)space->machine->driver_data;
133133
134134   /* This writes to a shift register which is clocked by   */
135135   /* a 555 oscillator.  This value determines the speed of */
r4679r4680
156156
157157WRITE8_HANDLER( stactics_shot_trigger_w )
158158{
159   stactics_state *state = space->machine->driver_data;
159   stactics_state *state = (stactics_state *)space->machine->driver_data;
160160
161161   state->shot_standby = 0;
162162}
r4679r4680
164164
165165WRITE8_HANDLER( stactics_shot_flag_clear_w )
166166{
167   stactics_state *state = space->machine->driver_data;
167   stactics_state *state = (stactics_state *)space->machine->driver_data;
168168
169169   state->shot_arrive = 0;
170170}
r4679r4680
172172
173173CUSTOM_INPUT( stactics_get_shot_standby )
174174{
175   stactics_state *state = field->port->machine->driver_data;
175   stactics_state *state = (stactics_state *)field->port->machine->driver_data;
176176
177177   return state->shot_standby;
178178}
r4679r4680
180180
181181CUSTOM_INPUT( stactics_get_not_shot_arrive )
182182{
183   stactics_state *state = field->port->machine->driver_data;
183   stactics_state *state = (stactics_state *)field->port->machine->driver_data;
184184
185185   return !state->shot_arrive;
186186}
r4679r4680
367367
368368static VIDEO_START( stactics )
369369{
370   stactics_state *state = machine->driver_data;
370   stactics_state *state = (stactics_state *)machine->driver_data;
371371
372372   state->y_scroll_d = 0;
373373   state->y_scroll_e = 0;
r4679r4680
390390
391391static VIDEO_UPDATE( stactics )
392392{
393   stactics_state *state = screen->machine->driver_data;
393   stactics_state *state = (stactics_state *)screen->machine->driver_data;
394394
395395   update_beam(state);
396396   draw_background(state, bitmap, cliprect);
src/mame/video/gaelco3d.c
r4679r4680
8383
8484   width = video_screen_get_width(machine->primary_screen);
8585   height = video_screen_get_height(machine->primary_screen);
86   zbuffer = auto_bitmap_alloc(width, height, BITMAP_FORMAT_INDEXED16);
86   zbuffer = auto_bitmap_alloc(machine, width, height, BITMAP_FORMAT_INDEXED16);
8787
88   palette = auto_malloc(32768 * sizeof(palette[0]));
89   polydata_buffer = auto_malloc(MAX_POLYDATA * sizeof(polydata_buffer[0]));
88   palette = auto_alloc_array(machine, rgb_t, 32768);
89   polydata_buffer = auto_alloc_array(machine, UINT32, MAX_POLYDATA);
9090
9191   /* save states */
9292
r4679r4680
144144   float voz_base = convert_tms3203x_fp_to_float(polydata[7]) * 256.0f - midx * voz_dx - midy * voz_dy;
145145   float ooz_base = convert_tms3203x_fp_to_float(polydata[8]) - midx * ooz_dx - midy * ooz_dy;
146146   float uoz_base = convert_tms3203x_fp_to_float(polydata[9]) * 256.0f - midx * uoz_dx - midy * uoz_dy;
147   poly_extra_data *extra = poly_get_extra_data(poly);
147   poly_extra_data *extra = (poly_extra_data *)poly_get_extra_data(poly);
148148   int color = (polydata[10] & 0x7f) << 8;
149149   poly_vertex vert[MAX_VERTICES];
150150   UINT32 data;
r4679r4680
223223
224224static void render_noz_noperspective(void *destbase, INT32 scanline, const poly_extent *extent, const void *extradata, int threadid)
225225{
226   const poly_extra_data *extra = extradata;
227   bitmap_t *bitmap = destbase;
226   const poly_extra_data *extra = (const poly_extra_data *)extradata;
227   bitmap_t *bitmap = (bitmap_t *)destbase;
228228   float zbase = recip_approx(extra->ooz_base);
229229   float uoz_step = extra->uoz_dx * zbase;
230230   float voz_step = extra->voz_dx * zbase;
r4679r4680
264264
265265static void render_normal(void *destbase, INT32 scanline, const poly_extent *extent, const void *extradata, int threadid)
266266{
267   const poly_extra_data *extra = extradata;
268   bitmap_t *bitmap = destbase;
267   const poly_extra_data *extra = (const poly_extra_data *)extradata;
268   bitmap_t *bitmap = (bitmap_t *)destbase;
269269   float ooz_dx = extra->ooz_dx;
270270   float uoz_dx = extra->uoz_dx;
271271   float voz_dx = extra->voz_dx;
r4679r4680
316316
317317static void render_alphablend(void *destbase, INT32 scanline, const poly_extent *extent, const void *extradata, int threadid)
318318{
319   const poly_extra_data *extra = extradata;
320   bitmap_t *bitmap = destbase;
319   const poly_extra_data *extra = (const poly_extra_data *)extradata;
320   bitmap_t *bitmap = (bitmap_t *)destbase;
321321   float ooz_dx = extra->ooz_dx;
322322   float uoz_dx = extra->uoz_dx;
323323   float voz_dx = extra->voz_dx;
src/mame/video/lethalj.c
r4679r4680
9191VIDEO_START( lethalj )
9292{
9393   /* allocate video RAM for screen */
94   screenram = auto_malloc(BLITTER_DEST_WIDTH * BLITTER_DEST_HEIGHT * sizeof(screenram[0]));
94   screenram = auto_alloc_array(machine, UINT16, BLITTER_DEST_WIDTH * BLITTER_DEST_HEIGHT);
9595
9696   /* predetermine blitter info */
9797   blitter_base = (UINT16 *)memory_region(machine, "gfx1");
r4679r4680
108108
109109static TIMER_CALLBACK( gen_ext1_int )
110110{
111   cpu_set_input_line(machine->cpu[0], 0, ASSERT_LINE);
111   cputag_set_input_line(machine, "maincpu", 0, ASSERT_LINE);
112112}
113113
114114
r4679r4680
170170
171171   /* clear the IRQ on offset 0 */
172172   else if (offset == 0)
173      cpu_set_input_line(space->machine->cpu[0], 0, CLEAR_LINE);
173      cputag_set_input_line(space->machine, "maincpu", 0, CLEAR_LINE);
174174}
175175
176176
src/mame/video/galaxian.c
r4679r4680
290290
291291static void sprites_draw(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect, const UINT8 *spritebase);
292292
293static void stars_init(void);
293static void stars_init(running_machine *machine);
294294static void stars_update_origin(running_machine *machine);
295295static void stars_draw_row(bitmap_t *bitmap, int maxx, int y, UINT32 star_offs, UINT8 starmask);
296296
r4679r4680
468468   background_green = 0;
469469
470470   /* initialize stars */
471   stars_init();
471   stars_init(machine);
472472
473473   /* register for save states */
474474   state_save_register(machine);
r4679r4680
810810 *
811811 *************************************/
812812
813static void stars_init(void)
813static void stars_init(running_machine *machine)
814814{
815815   UINT32 shiftreg;
816816   int i;
r4679r4680
820820   stars_blink_state = 0;
821821
822822   /* precalculate the RNG */
823   stars = auto_malloc(STAR_RNG_PERIOD);
823   stars = auto_alloc_array(machine, UINT8, STAR_RNG_PERIOD);
824824   shiftreg = 0;
825825   for (i = 0; i < STAR_RNG_PERIOD; i++)
826826   {
src/mame/video/othldrby.c
r4679r4680
6363   bg_tilemap[1] = tilemap_create(machine, get_tile_info1,tilemap_scan_rows,16,16,32,32);
6464   bg_tilemap[2] = tilemap_create(machine, get_tile_info2,tilemap_scan_rows,16,16,32,32);
6565
66   vram = auto_malloc(VIDEORAM_SIZE * sizeof(vram[0]));
67   buf_spriteram = auto_malloc(2*SPRITERAM_SIZE * sizeof(buf_spriteram[0]));
66   vram = auto_alloc_array(machine, UINT16, VIDEORAM_SIZE);
67   buf_spriteram = auto_alloc_array(machine, UINT16, 2*SPRITERAM_SIZE);
6868
6969   buf_spriteram2 = buf_spriteram + SPRITERAM_SIZE;
7070
src/mame/video/hyprduel.c
r4679r4680
309309 the tile's sizes to be known at startup - which we don't!
310310*/
311311
312static void alloc_empty_tiles(void)
312static void alloc_empty_tiles(running_machine *machine)
313313{
314314   int code,i;
315315
316   empty_tiles = auto_malloc(16*16*16);
316   empty_tiles = auto_alloc_array(machine, UINT8, 16*16*16);
317317
318318   for (code = 0;code < 0x10;code++)
319319      for (i = 0;i < 16*16;i++)
r4679r4680
340340
341341VIDEO_START( hyprduel_14220 )
342342{
343   alloc_empty_tiles();
344   hyprduel_tiletable_old = auto_malloc(hyprduel_tiletable_size);
345   dirtyindex = auto_malloc(hyprduel_tiletable_size/4);
343   alloc_empty_tiles(machine);
344   hyprduel_tiletable_old = auto_alloc_array(machine, UINT16, hyprduel_tiletable_size/2);
345   dirtyindex = auto_alloc_array(machine, UINT8, hyprduel_tiletable_size/4);
346346
347347   bg_tilemap[0] = tilemap_create(machine, get_tile_info_0_8bit,tilemap_scan_rows,8,8,WIN_NX,WIN_NY);
348348   bg_tilemap[1] = tilemap_create(machine, get_tile_info_1_8bit,tilemap_scan_rows,8,8,WIN_NX,WIN_NY);
src/mame/video/namconb1.c
r4679r4680
166166VIDEO_START( namconb1 )
167167{
168168   namco_tilemap_init( machine, NAMCONB1_TILEGFX, memory_region(machine, NAMCONB1_TILEMASKREGION), NB1TilemapCB );
169   namco_obj_init(NAMCONB1_SPRITEGFX,0x0,NB1objcode2tile);
169   namco_obj_init(machine,NAMCONB1_SPRITEGFX,0x0,NB1objcode2tile);
170170} /* namconb1 */
171171
172172/****************************************************************************************************/
r4679r4680
228228VIDEO_START( namconb2 )
229229{
230230   namco_tilemap_init(machine, NAMCONB1_TILEGFX, memory_region(machine, NAMCONB1_TILEMASKREGION), NB2TilemapCB );
231   namco_obj_init(NAMCONB1_SPRITEGFX,0x0,NB2objcode2tile);
231   namco_obj_init(machine,NAMCONB1_SPRITEGFX,0x0,NB2objcode2tile);
232232   namco_roz_init(machine, NAMCONB1_ROTGFX,NAMCONB1_ROTMASKREGION);
233233} /* namconb2_vh_start */
src/mame/video/flstory.c
r4679r4680
3434{
3535   int code = videoram[tile_index*2];
3636   int attr = videoram[tile_index*2+1];
37   int tile_number = tile_number = ((attr & 0x38) << 5) + code;
37   int tile_number = ((attr & 0x38) << 5) + code;
3838   int flags = ((attr & 0x40) ? TILE_FLIPX : 0) | ((attr & 0x80) ? TILE_FLIPY : 0);
3939
4040   SET_TILE_INFO(
r4679r4680
5353   tilemap_set_transmask(bg_tilemap,1,0x8000,0x7fff); /* split type 1 has pen 15 transparent in front half */
5454   tilemap_set_scroll_cols(bg_tilemap,32);
5555
56   paletteram = auto_malloc(0x200);
57   paletteram_2 = auto_malloc(0x200);
56   paletteram = auto_alloc_array(machine, UINT8, 0x200);
57   paletteram_2 = auto_alloc_array(machine, UINT8, 0x200);
5858}
5959
6060VIDEO_START( victnine )
r4679r4680
6262   bg_tilemap = tilemap_create( machine, victnine_get_tile_info,tilemap_scan_rows,8,8,32,32 );
6363   tilemap_set_scroll_cols(bg_tilemap,32);
6464
65   paletteram = auto_malloc(0x200);
66   paletteram_2 = auto_malloc(0x200);
65   paletteram = auto_alloc_array(machine, UINT8, 0x200);
66   paletteram_2 = auto_alloc_array(machine, UINT8, 0x200);
6767}
6868
6969WRITE8_HANDLER( flstory_videoram_w )
src/mame/video/tia.c
r4679r4680
274274   int cx = video_screen_get_width(machine->primary_screen);
275275
276276   screen_height = video_screen_get_height(machine->primary_screen);
277   helper[0] = auto_bitmap_alloc(cx, TIA_MAX_SCREEN_HEIGHT, video_screen_get_format(machine->primary_screen));
278   helper[1] = auto_bitmap_alloc(cx, TIA_MAX_SCREEN_HEIGHT, video_screen_get_format(machine->primary_screen));
279   helper[2] = auto_bitmap_alloc(cx, TIA_MAX_SCREEN_HEIGHT, video_screen_get_format(machine->primary_screen));
277   helper[0] = auto_bitmap_alloc(machine, cx, TIA_MAX_SCREEN_HEIGHT, video_screen_get_format(machine->primary_screen));
278   helper[1] = auto_bitmap_alloc(machine, cx, TIA_MAX_SCREEN_HEIGHT, video_screen_get_format(machine->primary_screen));
279   helper[2] = auto_bitmap_alloc(machine, cx, TIA_MAX_SCREEN_HEIGHT, video_screen_get_format(machine->primary_screen));
280280}
281281
282282
src/mame/video/model2.c
r4679r4680
331331 *
332332 *******************************************/
333333
334static void model2_3d_init( UINT16 *texture_rom )
334static void model2_3d_init( running_machine *machine, UINT16 *texture_rom )
335335{
336336   memset( &raster, 0, sizeof( raster_state ) );
337337
338338   raster.texture_rom = texture_rom;
339   raster.texture_ram = auto_malloc(0x10000 * sizeof(UINT16));
340   raster.log_ram = auto_malloc(0x40000 * sizeof(UINT8));
341   raster.tri_list = auto_malloc(MAX_TRIANGLES * sizeof(triangle));
342   raster.tri_sorted_list = auto_malloc(0x10000 * sizeof( triangle * ));
339   raster.texture_ram = auto_alloc_array(machine, UINT16, 0x10000);
340   raster.log_ram = auto_alloc_array(machine, UINT8, 0x40000);
341   raster.tri_list = auto_alloc_array(machine, triangle, MAX_TRIANGLES);
342   raster.tri_sorted_list = auto_alloc_array(machine, triangle *, 0x10000);
343343}
344344
345345/*******************************************
r4679r4680
511511         if ( ztri != NULL )
512512         {
513513            while( ztri->next != NULL )
514               ztri = ztri->next;
514               ztri = (triangle *)ztri->next;
515515         }
516516
517517         /* go through the clipped vertex list, adding triangles */
r4679r4680
748748         if ( ztri != NULL )
749749         {
750750            while( ztri->next != NULL )
751               ztri = ztri->next;
751               ztri = (triangle *)ztri->next;
752752         }
753753
754754         /* go through the clipped vertex list, adding triangles */
r4679r4680
929929
930930static void model2_3d_render( bitmap_t *bitmap, triangle *tri, const rectangle *cliprect )
931931{
932   poly_extra_data *extra = poly_get_extra_data(poly);
932   poly_extra_data *extra = (poly_extra_data *)poly_get_extra_data(poly);
933933   UINT8      renderer;
934934   rectangle   vp;
935935
r4679r4680
10851085            model2_3d_project( tri );
10861086            model2_3d_render( bitmap, tri, cliprect );
10871087
1088            tri = tri->next;
1088            tri = (triangle *)tri->next;
10891089         }
10901090      }
10911091   }
r4679r4680
13121312 *
13131313 *******************************************/
13141314
1315static void geo_init( UINT32 *polygon_rom )
1315static void geo_init( running_machine *machine, UINT32 *polygon_rom )
13161316{
13171317   memset( &geo, 0, sizeof( geo_state ) );
13181318
13191319   geo.polygon_rom = polygon_rom;
1320   geo.polygon_ram0 = auto_malloc(0x8000 * sizeof(UINT32));
1321   geo.polygon_ram1 = auto_malloc(0x8000 * sizeof(UINT32));
1320   geo.polygon_ram0 = auto_alloc_array(machine, UINT32, 0x8000);
1321   geo.polygon_ram1 = auto_alloc_array(machine, UINT32, 0x8000);
13221322}
13231323
13241324/*******************************************
r4679r4680
27072707   add_exit_callback(machine, model2_exit);
27082708
27092709   /* initialize the geometry engine */
2710   geo_init( (UINT32*)memory_region(machine, "user2") );
2710   geo_init( machine, (UINT32*)memory_region(machine, "user2") );
27112711
27122712   /* initialize the hardware rasterizer */
2713   model2_3d_init( (UINT16*)memory_region(machine, "user3") );
2713   model2_3d_init( machine, (UINT16*)memory_region(machine, "user3") );
27142714}
27152715
27162716static void convert_bitmap( running_machine *machine, bitmap_t *dst, bitmap_t *src, const rectangle *rect )
src/mame/video/sshangha.c
r4679r4680
1515
1616/******************************************************************************/
1717
18WRITE16_HANDLER( sshangha_palette_24bit_w )
19{
20   int r,g,b;
21
22   COMBINE_DATA(&paletteram16[offset]);
23   if (offset&1) offset--;
24
25   b = (paletteram16[offset] >> 0) & 0xff;
26   g = (paletteram16[offset+1] >> 8) & 0xff;
27   r = (paletteram16[offset+1] >> 0) & 0xff;
28
29   palette_set_color(space->machine,offset/2,MAKE_RGB(r,g,b));
30}
31
3218static void sshangha_tilemap_draw(bitmap_t *bitmap, const rectangle *cliprect)
3319{
3420   const bitmap_t *bitmap0 = tilemap_get_pixmap(pf1_16x16_tilemap);
src/mame/video/leland.c
r4679r4680
8686static VIDEO_START( leland )
8787{
8888   /* allocate memory */
89   leland_video_ram = auto_malloc(VRAM_SIZE);
89   leland_video_ram = auto_alloc_array_clear(machine, UINT8, VRAM_SIZE);
9090
91   /* reset videoram */
92   memset(leland_video_ram, 0, VRAM_SIZE);
93
9491   /* scanline timer */
9592   scanline_timer = timer_alloc(machine, scanline_callback, NULL);
9693   timer_adjust_oneshot(scanline_timer, video_screen_get_time_until_pos(machine->primary_screen, 0, 0), 0);
r4679r4680
104101   VIDEO_START_CALL(leland);
105102
106103   /* allocate memory */
107   ataxx_qram = auto_malloc(QRAM_SIZE);
108
109   /* reset QRAM */
110   memset(ataxx_qram, 0, QRAM_SIZE);
104   ataxx_qram = auto_alloc_array_clear(machine, UINT8, QRAM_SIZE);
111105}
112106
113107
r4679r4680
319313
320314static TIMER_CALLBACK( leland_delayed_mvram_w )
321315{
322   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
316   const address_space *space = cputag_get_address_space(machine, "master", ADDRESS_SPACE_PROGRAM);
323317
324318   int num = (param >> 16) & 1;
325319   int offset = (param >> 8) & 0xff;
src/mame/video/segaic24.c
r4679r4680
143143         break;
144144   assert(sys24_char_gfx_index != MAX_GFX_ELEMENTS);
145145
146   sys24_char_ram = auto_malloc(0x80000);
146   sys24_char_ram = auto_alloc_array(machine, UINT16, 0x80000/2);
147147
148   sys24_tile_ram = auto_malloc(0x10000);
148   sys24_tile_ram = auto_alloc_array(machine, UINT16, 0x10000/2);
149149
150150   sys24_tile_layer[0] = tilemap_create(machine, sys24_tile_info_0s, tilemap_scan_rows,  8, 8, 64, 64);
151151   sys24_tile_layer[1] = tilemap_create(machine, sys24_tile_info_0w, tilemap_scan_rows,  8, 8, 64, 64);
r4679r4680
172172   int y;
173173   const UINT16 *source  = ((UINT16 *)bm->base) + sx + sy*bm->rowpixels;
174174   const UINT8  *trans = ((UINT8 *) tm->base) + sx + sy*tm->rowpixels;
175   UINT8        *prib = priority_bitmap->base;
176   UINT16       *dest = dm->base;
175   UINT8        *prib = (UINT8 *)priority_bitmap->base;
176   UINT16       *dest = (UINT16 *)dm->base;
177177
178178   tpri |= TILEMAP_PIXEL_LAYER0;
179179
r4679r4680
306306   int y;
307307   const UINT16 *source  = ((UINT16 *)bm->base) + sx + sy*bm->rowpixels;
308308   const UINT8  *trans = ((UINT8 *) tm->base) + sx + sy*tm->rowpixels;
309   UINT16       *dest = dm->base;
309   UINT16       *dest = (UINT16 *)dm->base;
310310   const pen_t  *pens   = machine->pens;
311311
312312   tpri |= TILEMAP_PIXEL_LAYER0;
r4679r4680
649649
650650void sys24_sprite_vh_start(running_machine *machine)
651651{
652   sys24_sprite_ram = auto_malloc(0x40000);
652   sys24_sprite_ram = auto_alloc_array(machine, UINT16, 0x40000/2);
653653
654654   state_save_register_global_pointer(machine, sys24_sprite_ram, 0x40000/2);
655655   //  kc = 0;
src/mame/video/popeye.c
r4679r4680
244244
245245VIDEO_START( skyskipr )
246246{
247   popeye_bitmapram = auto_malloc(popeye_bitmapram_size);
248   tmpbitmap2 = auto_bitmap_alloc(1024,1024,video_screen_get_format(machine->primary_screen));   /* actually 1024x512 but not rolling over vertically? */
247   popeye_bitmapram = auto_alloc_array(machine, UINT8, popeye_bitmapram_size);
248   tmpbitmap2 = auto_bitmap_alloc(machine,1024,1024,video_screen_get_format(machine->primary_screen));   /* actually 1024x512 but not rolling over vertically? */
249249
250250   bitmap_type = TYPE_SKYSKIPR;
251251
r4679r4680
261261
262262VIDEO_START( popeye )
263263{
264   popeye_bitmapram = auto_malloc(popeye_bitmapram_size);
265   tmpbitmap2 = auto_bitmap_alloc(512,512,video_screen_get_format(machine->primary_screen));
264   popeye_bitmapram = auto_alloc_array(machine, UINT8, popeye_bitmapram_size);
265   tmpbitmap2 = auto_bitmap_alloc(machine,512,512,video_screen_get_format(machine->primary_screen));
266266
267267   bitmap_type = TYPE_POPEYE;
268268
r4679r4680
279279static void draw_background(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect)
280280{
281281   int offs;
282   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
282   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
283283
284284   if (lastflip != flip_screen_get(machine))
285285   {
src/mame/video/lordgun.c
r4679r4680
3636***************************************************************************/
3737
3838#include "driver.h"
39#include "lordgun.h"
3940
4041// Variables needed by driver:
4142
r4679r4680
4647UINT16 *lordgun_scrollram;
4748int lordgun_whitescreen;
4849
49struct
50{
51   int      scr_x,   scr_y;
52   UINT16   hw_x,   hw_y;
53}   lordgun_gun[2];
50lordgun_gun_data lordgun_gun[2];
5451
5552
5653/***************************************************************************
src/mame/video/lemmings.c
r4679r4680
9393
9494VIDEO_START( lemmings )
9595{
96   bitmap0 = auto_bitmap_alloc(2048,256,video_screen_get_format(machine->primary_screen));
96   bitmap0 = auto_bitmap_alloc(machine,2048,256,video_screen_get_format(machine->primary_screen));
9797   vram_tilemap = tilemap_create(machine, get_tile_info,tilemap_scan_cols,8,8,64,32);
9898
99   vram_buffer = (UINT8*)auto_malloc(2048*64); /* 64 bytes per VRAM character */
100   sprite_triple_buffer_0 = (UINT16*)auto_malloc(0x800);
101   sprite_triple_buffer_1 = (UINT16*)auto_malloc(0x800);
99   vram_buffer = auto_alloc_array(machine, UINT8, 2048*64); /* 64 bytes per VRAM character */
100   sprite_triple_buffer_0 = auto_alloc_array(machine, UINT16, 0x800/2);
101   sprite_triple_buffer_1 = auto_alloc_array(machine, UINT16, 0x800/2);
102102
103103   tilemap_set_transparent_pen(vram_tilemap,0);
104104   bitmap_fill(bitmap0,0,0x100);
src/mame/video/espial.c
r4679r4680
103103   bg_tilemap = tilemap_create(machine, get_tile_info,tilemap_scan_rows,8,8,32,32);
104104
105105   tilemap_set_scroll_cols(bg_tilemap, 32);
106
107   state_save_register_global(machine, flipscreen);
106108}
107109
108110VIDEO_START( netwars )
r4679r4680
112114
113115   tilemap_set_scroll_cols(bg_tilemap, 32);
114116   tilemap_set_scrolldy(bg_tilemap, 0, 0x100);
117
118   state_save_register_global(machine, flipscreen);
115119}
116120
117121
src/mame/video/tiamc1.c
r4679r4680
103103   int r, g, b, ir, ig, ib;
104104   float tcol;
105105
106   palette = auto_malloc(256 * sizeof(*palette));
106   palette = auto_alloc_array(machine, rgb_t, 256);
107107
108108   for (col = 0; col < 256; col++) {
109109      ir = (col >> 3) & 7;
r4679r4680
134134{
135135   UINT8 *video_ram;
136136
137   video_ram = auto_malloc(0x3040);
138   memset(video_ram, 0, 0x3040);
137   video_ram = auto_alloc_array_clear(machine, UINT8, 0x3040);
139138
140139        tiamc1_charram = video_ram + 0x0800;     /* Ram is banked */
141140        tiamc1_tileram = video_ram + 0x0000;
src/mame/video/toaplan1.c
r4679r4680
267267}
268268
269269
270static void toaplan1_paletteram_alloc(void)
270static void toaplan1_paletteram_alloc(running_machine *machine)
271271{
272   paletteram16 = auto_malloc(toaplan1_colorram1_size + toaplan1_colorram2_size);
272   paletteram16 = auto_alloc_array(machine, UINT16, (toaplan1_colorram1_size + toaplan1_colorram2_size)/2);
273273}
274274
275static void toaplan1_vram_alloc(void)
275static void toaplan1_vram_alloc(running_machine *machine)
276276{
277   pf1_tilevram16 = auto_malloc(TOAPLAN1_TILEVRAM_SIZE);
278   memset(pf1_tilevram16,0,TOAPLAN1_TILEVRAM_SIZE);
279
280   pf2_tilevram16 = auto_malloc(TOAPLAN1_TILEVRAM_SIZE);
281   memset(pf2_tilevram16,0,TOAPLAN1_TILEVRAM_SIZE);
282
283   pf3_tilevram16 = auto_malloc(TOAPLAN1_TILEVRAM_SIZE);
284   memset(pf3_tilevram16,0,TOAPLAN1_TILEVRAM_SIZE);
285
286   pf4_tilevram16 = auto_malloc(TOAPLAN1_TILEVRAM_SIZE);
287   memset(pf4_tilevram16,0,TOAPLAN1_TILEVRAM_SIZE);
277   pf1_tilevram16 = auto_alloc_array_clear(machine, UINT16, TOAPLAN1_TILEVRAM_SIZE/2);
278   pf2_tilevram16 = auto_alloc_array_clear(machine, UINT16, TOAPLAN1_TILEVRAM_SIZE/2);
279   pf3_tilevram16 = auto_alloc_array_clear(machine, UINT16, TOAPLAN1_TILEVRAM_SIZE/2);
280   pf4_tilevram16 = auto_alloc_array_clear(machine, UINT16, TOAPLAN1_TILEVRAM_SIZE/2);
288281}
289282
290static void toaplan1_spritevram_alloc(void)
283static void toaplan1_spritevram_alloc(running_machine *machine)
291284{
292   spriteram16 = auto_malloc(TOAPLAN1_SPRITERAM_SIZE);
293   memset(spriteram16,0,TOAPLAN1_SPRITERAM_SIZE);
285   spriteram16 = auto_alloc_array_clear(machine, UINT16, TOAPLAN1_SPRITERAM_SIZE/2);
286   buffered_spriteram16 = auto_alloc_array_clear(machine, UINT16, TOAPLAN1_SPRITERAM_SIZE/2);
287   toaplan1_spritesizeram16 = auto_alloc_array_clear(machine, UINT16, TOAPLAN1_SPRITESIZERAM_SIZE/2);
288   toaplan1_buffered_spritesizeram16 = auto_alloc_array_clear(machine, UINT16, TOAPLAN1_SPRITESIZERAM_SIZE/2);
294289
295   buffered_spriteram16 = auto_malloc(TOAPLAN1_SPRITERAM_SIZE);
296   memset(buffered_spriteram16,0,TOAPLAN1_SPRITERAM_SIZE);
297
298   toaplan1_spritesizeram16 = auto_malloc(TOAPLAN1_SPRITESIZERAM_SIZE);
299   memset(toaplan1_spritesizeram16,0,TOAPLAN1_SPRITESIZERAM_SIZE);
300
301   toaplan1_buffered_spritesizeram16 = auto_malloc(TOAPLAN1_SPRITESIZERAM_SIZE);
302   memset(toaplan1_buffered_spritesizeram16,0,TOAPLAN1_SPRITESIZERAM_SIZE);
303
304290   spriteram_size = TOAPLAN1_SPRITERAM_SIZE;
305291}
306292
r4679r4680
318304
319305static STATE_POSTLOAD( rallybik_flipscreen )
320306{
321   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
307   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
322308   rallybik_bcu_flipscreen_w(space, 0, bcu_flipscreen, 0xffff);
323309}
324310
325311static STATE_POSTLOAD( toaplan1_flipscreen )
326312{
327   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
313   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
328314   toaplan1_bcu_flipscreen_w(space, 0, bcu_flipscreen, 0xffff);
329315}
330316
r4679r4680
332318VIDEO_START( rallybik )
333319{
334320   toaplan1_create_tilemaps(machine);
335   toaplan1_paletteram_alloc();
336   toaplan1_vram_alloc();
321   toaplan1_paletteram_alloc(machine);
322   toaplan1_vram_alloc(machine);
337323
338324   scrollx_offs1 = 0x0d + 6;
339325   scrollx_offs2 = 0x0d + 4;
r4679r4680
375361VIDEO_START( toaplan1 )
376362{
377363   toaplan1_create_tilemaps(machine);
378   toaplan1_paletteram_alloc();
379   toaplan1_vram_alloc();
380   toaplan1_spritevram_alloc();
364   toaplan1_paletteram_alloc(machine);
365   toaplan1_vram_alloc(machine);
366   toaplan1_spritevram_alloc(machine);
381367
382368   scrollx_offs1 = 0x1ef + 6;
383369   scrollx_offs2 = 0x1ef + 4;
r4679r4680
12311217
12321218VIDEO_EOF( rallybik )
12331219{
1234   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
1220   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
12351221   buffer_spriteram16_w(space, 0, 0, 0xffff);
12361222}
12371223
12381224VIDEO_EOF( toaplan1 )
12391225{
1240   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
1226   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
12411227   buffer_spriteram16_w(space, 0, 0, 0xffff);
12421228   memcpy(toaplan1_buffered_spritesizeram16, toaplan1_spritesizeram16, TOAPLAN1_SPRITESIZERAM_SIZE);
12431229}
12441230
12451231VIDEO_EOF( samesame )
12461232{
1247   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
1233   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
12481234   buffer_spriteram16_w(space, 0, 0, 0xffff);
12491235   memcpy(toaplan1_buffered_spritesizeram16, toaplan1_spritesizeram16, TOAPLAN1_SPRITESIZERAM_SIZE);
1250   cpu_set_input_line(machine->cpu[0], M68K_IRQ_2, HOLD_LINE);   /* Frame done */
1236   cputag_set_input_line(machine, "maincpu", M68K_IRQ_2, HOLD_LINE);   /* Frame done */
12511237}
src/mame/video/segag80r.c
r4679r4680
211211   gfx_element_set_source(machine->gfx[0], &videoram[0x800]);
212212
213213   /* allocate paletteram */
214   paletteram = auto_malloc(0x80);
214   paletteram = auto_alloc_array(machine, UINT8, 0x80);
215215
216216   /* initialize the particulars for each type of background PCB */
217217   switch (segag80r_background_pcb)
r4679r4680
608608   {
609609      /* port 0: irq ack */
610610      case 0:
611         cpu_set_input_line(space->machine->cpu[0], 0, CLEAR_LINE);
611         cputag_set_input_line(space->machine, "maincpu", 0, CLEAR_LINE);
612612         break;
613613
614614      /* port 1: background control
src/mame/video/hnayayoi.c
r4679r4680
1717static int total_pixmaps;
1818
1919
20static void common_vh_start(int num_pixmaps)
20static void common_vh_start(running_machine *machine, int num_pixmaps)
2121{
2222   int i;
2323
r4679r4680
2727   {
2828      if (i < total_pixmaps)
2929      {
30         pixmap[i] = auto_malloc(256*256);
30         pixmap[i] = auto_alloc_array(machine, UINT8, 256*256);
3131      }
3232      else
3333         pixmap[i] = NULL;
r4679r4680
3636
3737VIDEO_START( hnayayoi )
3838{
39   common_vh_start(4);   /* 4 bitmaps -> 2 layers */
39   common_vh_start(machine, 4);   /* 4 bitmaps -> 2 layers */
4040}
4141
4242VIDEO_START( untoucha )
4343{
44   common_vh_start(8);   /* 8 bitmaps -> 4 layers */
44   common_vh_start(machine, 8);   /* 8 bitmaps -> 4 layers */
4545}
4646
4747
src/mame/video/tmnt.c
r4679r4680
335335      static int last;
336336
337337      /* bit 0/1 = coin counters */
338      coin_counter_w(0,data & 0x01);
339      coin_counter_w(1,data & 0x02);   /* 2 players version */
338      coin_counter_w(0, data & 0x01);
339      coin_counter_w(1, data & 0x02);   /* 2 players version */
340340
341341      /* bit 3 high then low triggers irq on sound CPU */
342342      if (last == 0x08 && (data & 0x08) == 0)
343         cpu_set_input_line_and_vector(space->machine->cpu[1],0,HOLD_LINE,0xff);
343         cputag_set_input_line_and_vector(space->machine, "audiocpu", 0, HOLD_LINE, 0xff);
344344
345345      last = data & 0x08;
346346
347347      /* bit 5 = irq enable */
348      interrupt_enable_w(space,0,data & 0x20);
348      interrupt_enable_w(space, 0, data & 0x20);
349349
350350      /* bit 7 = enable char ROM reading through the video RAM */
351351      K052109_set_RMRD_line((data & 0x80) ? ASSERT_LINE : CLEAR_LINE);
r4679r4680
362362
363363
364364      /* bit 0 = coin counter */
365      coin_counter_w(0,data & 0x01);
365      coin_counter_w(0, data & 0x01);
366366
367367      /* bit 2 = trigger irq on sound CPU */
368368      if (last == 0x04 && (data & 0x04) == 0)
369         cpu_set_input_line_and_vector(space->machine->cpu[1],0,HOLD_LINE,0xff);
369         cputag_set_input_line_and_vector(space->machine, "audiocpu", 0, HOLD_LINE, 0xff);
370370
371371      last = data & 0x04;
372372
r4679r4680
383383
384384
385385      /* bit 0,1 = coin counter */
386      coin_counter_w(0,data & 0x01);
387      coin_counter_w(1,data & 0x02);
386      coin_counter_w(0, data & 0x01);
387      coin_counter_w(1, data & 0x02);
388388
389389      /* bit 2 = trigger irq on sound CPU */
390390      if (last == 0x00 && (data & 0x04) == 0x04)
391         cpu_set_input_line_and_vector(space->machine->cpu[1],0,HOLD_LINE,0xff);
391         cputag_set_input_line_and_vector(space->machine, "audiocpu", 0, HOLD_LINE, 0xff);
392392
393393      last = data & 0x04;
394394
src/mame/video/dc.c
r4679r4680
99#include "render.h"
1010#include "rendutil.h"
1111
12static int vblc=0;
1213#define DEBUG_FIFO_POLY (0)
1314#define DEBUG_PVRCTRL   (0)
1415#define DEBUG_PVRTA   (0)
1516#define DEBUG_PVRTA_REGS (0)
16#define DEBUG_PVRDLIST   (0)
17#define DEBUG_VERTICES   (1)
17#define DEBUG_PVRDLIST   (1)
1818#define DEBUG_PALRAM (1)
1919
2020#define NUM_BUFFERS 4
r4679r4680
2828static UINT32 dilated0[15][1024];
2929static UINT32 dilated1[15][1024];
3030static int dilatechose[64];
31static float wbuffer[480][640];
3132
3233UINT64 *dc_texture_ram;
3334static UINT32 tafifo_buff[32];
r4679r4680
4243static bitmap_t *fakeframebuffer_bitmap;
4344static void testdrawscreen(const running_machine *machine,bitmap_t *bitmap,const rectangle *cliprect);
4445
45typedef struct
46typedef struct texinfo {
47   UINT32 address, vqbase;
48   int sizex, sizey, sizes, pf, palette, mode, mipmapped;
49
50   UINT32 (*r)(struct texinfo *t, float x, float y);
51   int palbase, cd;
52} texinfo;
53
54typedef   struct
4655{
47   float x;
48   float y;
49   float z;
50   float u;
51   float v;
56   float x, y, w, u, v;
5257} vert;
5358
5459typedef struct
5560{
56   int positionx, positiony;
57   int sizex, sizey;
58   UINT32 textureaddress;
59   float u, v, du, dv;
60   int texturemode;
61   int texturesizex, texturesizey, texturesizes, texturepf, texturepalette;
61   int svert, evert;
62   texinfo ti;
63} strip;
6264
63   vert a,b,c,d;
64
65} testsprites;
66
67#if DEBUG_VERTICES
68typedef   struct
69{
70   int x;
71   int y;
72   int endofstrip;
73} testvertices;
74#endif
75
7665typedef struct {
77   testsprites showsprites[2048];
66   vert verts[65536];
67   strip strips[65536];
7868
79   #if DEBUG_VERTICES
80   testvertices showvertices[65536];
81   #endif
82
83   int testsprites_size, testsprites_toerase, testvertices_size;
69   int verts_size, strips_size;
8470   UINT32 ispbase;
8571   UINT32 fbwsof1;
8672   UINT32 fbwsof2;
r4679r4680
10894
10995static pvrta_state state_ta;
11096
97
98INLINE UINT32 cv_1555(UINT16 c)
99{
100   return
101      (c & 0x8000 ? 0xff000000 : 0) |
102      ((c << 9) & 0x00f80000) | ((c << 4) & 0x00070000) |
103      ((c << 6) & 0x0000f800) | ((c << 1) & 0x00000700) |
104      ((c << 3) & 0x000000f8) | ((c >> 2) & 0x00000007);
105}
106
107INLINE UINT32 cv_1555z(UINT16 c)
108{
109   return
110      (c & 0x8000 ? 0xff000000 : 0) |
111      ((c << 9) & 0x00f80000) |
112      ((c << 6) & 0x0000f800) |
113      ((c << 3) & 0x000000f8);
114}
115
116INLINE UINT32 cv_565(UINT16 c)
117{
118   return
119      0xff000000 |
120      ((c << 8) & 0x00f80000) | ((c << 3) & 0x00070000) |
121      ((c << 5) & 0x0000fc00) | ((c >> 1) & 0x00000300) |
122      ((c << 3) & 0x000000f8) | ((c >> 2) & 0x00000007);
123}
124
125INLINE UINT32 cv_565z(UINT16 c)
126{
127   return
128      0xff000000 |
129      ((c << 8) & 0x00f80000) |
130      ((c << 5) & 0x0000fc00) |
131      ((c << 3) & 0x000000f8);
132}
133
134INLINE UINT32 cv_4444(UINT16 c)
135{
136   return
137       ((c << 16) & 0xf0000000) | ((c << 12) & 0x0f000000) |
138      ((c << 12) & 0x00f00000) | ((c <<  8) & 0x000f0000) |
139      ((c <<  8) & 0x0000f000) | ((c <<  4) & 0x00000f00) |
140      ((c <<  4) & 0x000000f0) | ((c      ) & 0x0000000f);
141}
142
143INLINE UINT32 cv_4444z(UINT16 c)
144{
145   return
146       ((c << 16) & 0xf0000000) |
147      ((c << 12) & 0x00f00000) |
148      ((c <<  8) & 0x0000f000) |
149      ((c <<  4) & 0x000000f0);
150}
151
152INLINE UINT32 cv_yuv(UINT16 c1, UINT16 c2, int x)
153{
154   int u = 11*((c1 & 0xff) - 128);
155   int v = 11*((c2 & 0xff) - 128);
156   int y = (x & 1 ? c2 : c1) >> 8;
157   int r = y + v/8;
158   int g = y - u/32 - v/16;
159   int b = y + (3*u)/16;
160   r = r < 0 ? 0 : r > 255 ? 255 : r;
161   g = g < 0 ? 0 : g > 255 ? 255 : g;
162   b = b < 0 ? 0 : b > 255 ? 255 : b;
163   return 0xff000000 | (r << 16) | (g << 8) | b;
164}
165
166
167static UINT32 tex_r_yuv_n(texinfo *t, float x, float y)
168{
169   int xt = ((int)x) & (t->sizex-1);
170   int yt = ((int)y) & (t->sizey-1);
171   int addrp = t->address + (t->sizex*yt + (xt & ~1))*2;
172   UINT16 c1 = *(UINT16 *)(((UINT8 *)dc_texture_ram) + WORD_XOR_LE(addrp));
173   UINT16 c2 = *(UINT16 *)(((UINT8 *)dc_texture_ram) + WORD_XOR_LE(addrp+2));
174   return cv_yuv(c1, c2, xt);
175}
176
177static UINT32 tex_r_1555_n(texinfo *t, float x, float y)
178{
179   int xt = ((int)x) & (t->sizex-1);
180   int yt = ((int)y) & (t->sizey-1);
181   int addrp = t->address + (t->sizex*yt + xt)*2;
182   return cv_1555z(*(UINT16 *)(((UINT8 *)dc_texture_ram) + WORD_XOR_LE(addrp)));
183}
184
185static UINT32 tex_r_1555_tw(texinfo *t, float x, float y)
186{
187   int xt = ((int)x) & (t->sizex-1);
188   int yt = ((int)y) & (t->sizey-1);
189   int addrp = t->address + (dilated1[t->cd][xt] + dilated0[t->cd][yt])*2;
190   return cv_1555(*(UINT16 *)(((UINT8 *)dc_texture_ram) + WORD_XOR_LE(addrp)));
191}
192
193static UINT32 tex_r_1555_vq(texinfo *t, float x, float y)
194{
195   int xt = ((int)x) & (t->sizex-1);
196   int yt = ((int)y) & (t->sizey-1);
197   int idx = ((UINT8 *)dc_texture_ram)[BYTE_XOR_LE(t->address + dilated1[t->cd][xt >> 1] + dilated0[t->cd][yt >> 1])];
198   int addrp = t->vqbase + 8*idx + (dilated1[t->cd][xt & 1] + dilated0[t->cd][yt & 1])*2;
199   return cv_1555(*(UINT16 *)(((UINT8 *)dc_texture_ram) + WORD_XOR_LE(addrp)));
200}
201
202static UINT32 tex_r_565_n(texinfo *t, float x, float y)
203{
204   int xt = ((int)x) & (t->sizex-1);
205   int yt = ((int)y) & (t->sizey-1);
206   int addrp = t->address + (t->sizex*yt + xt)*2;
207   return cv_565z(*(UINT16 *)(((UINT8 *)dc_texture_ram) + WORD_XOR_LE(addrp)));
208}
209
210static UINT32 tex_r_565_tw(texinfo *t, float x, float y)
211{
212   int xt = ((int)x) & (t->sizex-1);
213   int yt = ((int)y) & (t->sizey-1);
214   int addrp = t->address + (dilated1[t->cd][xt] + dilated0[t->cd][yt])*2;
215   return cv_565(*(UINT16 *)(((UINT8 *)dc_texture_ram) + WORD_XOR_LE(addrp)));
216}
217
218static UINT32 tex_r_565_vq(texinfo *t, float x, float y)
219{
220   int xt = ((int)x) & (t->sizex-1);
221   int yt = ((int)y) & (t->sizey-1);
222   int idx = ((UINT8 *)dc_texture_ram)[BYTE_XOR_LE(t->address + dilated1[t->cd][xt >> 1] + dilated0[t->cd][yt >> 1])];
223   int addrp = t->vqbase + 8*idx + (dilated1[t->cd][xt & 1] + dilated0[t->cd][yt & 1])*2;
224   return cv_565(*(UINT16 *)(((UINT8 *)dc_texture_ram) + WORD_XOR_LE(addrp)));
225}
226
227static UINT32 tex_r_4444_n(texinfo *t, float x, float y)
228{
229   int xt = ((int)x) & (t->sizex-1);
230   int yt = ((int)y) & (t->sizey-1);
231   int addrp = t->address + (t->sizex*yt + xt)*2;
232   return cv_4444z(*(UINT16 *)(((UINT8 *)dc_texture_ram) + WORD_XOR_LE(addrp)));
233}
234
235static UINT32 tex_r_4444_tw(texinfo *t, float x, float y)
236{
237   int xt = ((int)x) & (t->sizex-1);
238   int yt = ((int)y) & (t->sizey-1);
239   int addrp = t->address + (dilated1[t->cd][xt] + dilated0[t->cd][yt])*2;
240   return cv_4444(*(UINT16 *)(((UINT8 *)dc_texture_ram) + WORD_XOR_LE(addrp)));
241}
242
243static UINT32 tex_r_4444_vq(texinfo *t, float x, float y)
244{
245   int xt = ((int)x) & (t->sizex-1);
246   int yt = ((int)y) & (t->sizey-1);
247   int idx = ((UINT8 *)dc_texture_ram)[BYTE_XOR_LE(t->address + dilated1[t->cd][xt >> 1] + dilated0[t->cd][yt >> 1])];
248   int addrp = t->vqbase + 8*idx + (dilated1[t->cd][xt & 1] + dilated0[t->cd][yt & 1])*2;
249   return cv_4444(*(UINT16 *)(((UINT8 *)dc_texture_ram) + WORD_XOR_LE(addrp)));
250}
251
252static UINT32 tex_r_p4_1555_tw(texinfo *t, float x, float y)
253{
254   int xt = ((int)x) & (t->sizex-1);
255   int yt = ((int)y) & (t->sizey-1);
256   int off = dilated1[t->cd][xt] + dilated0[t->cd][yt];
257   int addrp = t->address + (off >> 1);
258   int c = (((UINT8 *)dc_texture_ram)[BYTE_XOR_LE(addrp)] >> ((off & 1) << 2)) & 0xf;
259   return cv_1555(pvrta_regs[t->palbase + c]);
260}
261
262static UINT32 tex_r_p4_1555_vq(texinfo *t, float x, float y)
263{
264   int xt = ((int)x) & (t->sizex-1);
265   int yt = ((int)y) & (t->sizey-1);
266   int idx = ((UINT8 *)dc_texture_ram)[BYTE_XOR_LE(t->address + dilated1[t->cd][xt >> 1] + dilated0[t->cd][yt >> 1])];
267   int addrp = t->vqbase + 8*idx + dilated1[t->cd][xt & 1] + dilated0[t->cd][yt & 3];
268   int c = ((UINT8 *)dc_texture_ram)[BYTE_XOR_LE(addrp)] & 0xf;
269   return cv_1555(pvrta_regs[t->palbase + c]);
270}
271
272static UINT32 tex_r_p4_565_tw(texinfo *t, float x, float y)
273{
274   int xt = ((int)x) & (t->sizex-1);
275   int yt = ((int)y) & (t->sizey-1);
276   int off = dilated1[t->cd][xt] + dilated0[t->cd][yt];
277   int addrp = t->address + (off >> 1);
278   int c = (((UINT8 *)dc_texture_ram)[BYTE_XOR_LE(addrp)] >> ((off & 1) << 2)) & 0xf;
279   return cv_565(pvrta_regs[t->palbase + c]);
280}
281
282static UINT32 tex_r_p4_565_vq(texinfo *t, float x, float y)
283{
284   int xt = ((int)x) & (t->sizex-1);
285   int yt = ((int)y) & (t->sizey-1);
286   int idx = ((UINT8 *)dc_texture_ram)[BYTE_XOR_LE(t->address + dilated1[t->cd][xt >> 1] + dilated0[t->cd][yt >> 1])];
287   int addrp = t->vqbase + 8*idx + dilated1[t->cd][xt & 1] + dilated0[t->cd][yt & 3];
288   int c = ((UINT8 *)dc_texture_ram)[BYTE_XOR_LE(addrp)] & 0xf;
289   return cv_565(pvrta_regs[t->palbase + c]);
290}
291
292static UINT32 tex_r_p4_4444_tw(texinfo *t, float x, float y)
293{
294   int xt = ((int)x) & (t->sizex-1);
295   int yt = ((int)y) & (t->sizey-1);
296   int off = dilated1[t->cd][xt] + dilated0[t->cd][yt];
297   int addrp = t->address + (off >> 1);
298   int c = (((UINT8 *)dc_texture_ram)[BYTE_XOR_LE(addrp)] >> ((off & 1) << 2)) & 0xf;
299   return cv_4444(pvrta_regs[t->palbase + c]);
300}
301
302static UINT32 tex_r_p4_4444_vq(texinfo *t, float x, float y)
303{
304   int xt = ((int)x) & (t->sizex-1);
305   int yt = ((int)y) & (t->sizey-1);
306   int idx = ((UINT8 *)dc_texture_ram)[BYTE_XOR_LE(t->address + dilated1[t->cd][xt >> 1] + dilated0[t->cd][yt >> 1])];
307   int addrp = t->vqbase + 8*idx + dilated1[t->cd][xt & 1] + dilated0[t->cd][yt & 3];
308   int c = ((UINT8 *)dc_texture_ram)[BYTE_XOR_LE(addrp)] & 0xf;
309   return cv_4444(pvrta_regs[t->palbase + c]);
310}
311
312static UINT32 tex_r_p4_8888_tw(texinfo *t, float x, float y)
313{
314   int xt = ((int)x) & (t->sizex-1);
315   int yt = ((int)y) & (t->sizey-1);
316   int off = dilated1[t->cd][xt] + dilated0[t->cd][yt];
317   int addrp = t->address + (off >> 1);
318   int c = (((UINT8 *)dc_texture_ram)[BYTE_XOR_LE(addrp)] >> ((off & 1) << 2)) & 0xf;
319   return pvrta_regs[t->palbase + c];
320}
321
322static UINT32 tex_r_p4_8888_vq(texinfo *t, float x, float y)
323{
324   int xt = ((int)x) & (t->sizex-1);
325   int yt = ((int)y) & (t->sizey-1);
326   int idx = ((UINT8 *)dc_texture_ram)[BYTE_XOR_LE(t->address + dilated1[t->cd][xt >> 1] + dilated0[t->cd][yt >> 1])];
327   int addrp = t->vqbase + 8*idx + dilated1[t->cd][xt & 1] + dilated0[t->cd][yt & 3];
328   int c = ((UINT8 *)dc_texture_ram)[BYTE_XOR_LE(addrp)] & 0xf;
329   return pvrta_regs[t->palbase + c];
330}
331
332static UINT32 tex_r_p8_1555_tw(texinfo *t, float x, float y)
333{
334   int xt = ((int)x) & (t->sizex-1);
335   int yt = ((int)y) & (t->sizey-1);
336   int addrp = t->address + dilated1[t->cd][xt] + dilated0[t->cd][yt];
337   int c = ((UINT8 *)dc_texture_ram)[BYTE_XOR_LE(addrp)];
338   return cv_1555(pvrta_regs[t->palbase + c]);
339}
340
341static UINT32 tex_r_p8_1555_vq(texinfo *t, float x, float y)
342{
343   int xt = ((int)x) & (t->sizex-1);
344   int yt = ((int)y) & (t->sizey-1);
345   int idx = ((UINT8 *)dc_texture_ram)[BYTE_XOR_LE(t->address + dilated1[t->cd][xt >> 1] + dilated0[t->cd][yt >> 1])];
346   int addrp = t->vqbase + 8*idx + dilated1[t->cd][xt & 1] + dilated0[t->cd][yt & 3];
347   int c = ((UINT8 *)dc_texture_ram)[BYTE_XOR_LE(addrp)];
348   return cv_1555(pvrta_regs[t->palbase + c]);
349}
350
351static UINT32 tex_r_p8_565_tw(texinfo *t, float x, float y)
352{
353   int xt = ((int)x) & (t->sizex-1);
354   int yt = ((int)y) & (t->sizey-1);
355   int addrp = t->address + dilated1[t->cd][xt] + dilated0[t->cd][yt];
356   int c = ((UINT8 *)dc_texture_ram)[BYTE_XOR_LE(addrp)];
357   return cv_565(pvrta_regs[t->palbase + c]);
358}
359
360static UINT32 tex_r_p8_565_vq(texinfo *t, float x, float y)
361{
362   int xt = ((int)x) & (t->sizex-1);
363   int yt = ((int)y) & (t->sizey-1);
364   int idx = ((UINT8 *)dc_texture_ram)[BYTE_XOR_LE(t->address + dilated1[t->cd][xt >> 1] + dilated0[t->cd][yt >> 1])];
365   int addrp = t->vqbase + 8*idx + dilated1[t->cd][xt & 1] + dilated0[t->cd][yt & 3];
366   int c = ((UINT8 *)dc_texture_ram)[BYTE_XOR_LE(addrp)];
367   return cv_565(pvrta_regs[t->palbase + c]);
368}
369
370static UINT32 tex_r_p8_4444_tw(texinfo *t, float x, float y)
371{
372   int xt = ((int)x) & (t->sizex-1);
373   int yt = ((int)y) & (t->sizey-1);
374   int addrp = t->address + dilated1[t->cd][xt] + dilated0[t->cd][yt];
375   int c = ((UINT8 *)dc_texture_ram)[BYTE_XOR_LE(addrp)];
376   return cv_4444(pvrta_regs[t->palbase + c]);
377}
378
379static UINT32 tex_r_p8_4444_vq(texinfo *t, float x, float y)
380{
381   int xt = ((int)x) & (t->sizex-1);
382   int yt = ((int)y) & (t->sizey-1);
383   int idx = ((UINT8 *)dc_texture_ram)[BYTE_XOR_LE(t->address + dilated1[t->cd][xt >> 1] + dilated0[t->cd][yt >> 1])];
384   int addrp = t->vqbase + 8*idx + dilated1[t->cd][xt & 1] + dilated0[t->cd][yt & 3];
385   int c = ((UINT8 *)dc_texture_ram)[BYTE_XOR_LE(addrp)];
386   return cv_4444(pvrta_regs[t->palbase + c]);
387}
388
389static UINT32 tex_r_p8_8888_tw(texinfo *t, float x, float y)
390{
391   int xt = ((int)x) & (t->sizex-1);
392   int yt = ((int)y) & (t->sizey-1);
393   int addrp = t->address + dilated1[t->cd][xt] + dilated0[t->cd][yt];
394   int c = ((UINT8 *)dc_texture_ram)[BYTE_XOR_LE(addrp)];
395   return pvrta_regs[t->palbase + c];
396}
397
398static UINT32 tex_r_p8_8888_vq(texinfo *t, float x, float y)
399{
400   int xt = ((int)x) & (t->sizex-1);
401   int yt = ((int)y) & (t->sizey-1);
402   int idx = ((UINT8 *)dc_texture_ram)[BYTE_XOR_LE(t->address + dilated1[t->cd][xt >> 1] + dilated0[t->cd][yt >> 1])];
403   int addrp = t->vqbase + 8*idx + dilated1[t->cd][xt & 1] + dilated0[t->cd][yt & 3];
404   int c = ((UINT8 *)dc_texture_ram)[BYTE_XOR_LE(addrp)];
405   return pvrta_regs[t->palbase + c];
406}
407
408
409static UINT32 tex_r_default(texinfo *t, float x, float y)
410{
411   return ((int)x ^ (int)y) & 4 ? 0xffffff00 : 0xff0000ff;
412}
413
414static void tex_prepare(texinfo *t)
415{
416   int miptype = 0;
417
418   t->r = tex_r_default;
419   t->cd = dilatechose[t->sizes];
420   t->palbase = 0;
421   t->vqbase = t->address;
422
423   //  fprintf(stderr, "tex %d %d %d %d\n", t->pf, t->mode, pvrta_regs[PAL_RAM_CTRL], t->mipmapped);
424
425   switch(t->pf) {
426   case 0: // 1555
427      switch(t->mode) {
428      case 0:  t->r = tex_r_1555_tw; miptype = 2; break;
429      case 1:  t->r = tex_r_1555_n;  miptype = 2; break;
430      default: t->r = tex_r_1555_vq; miptype = 3; t->address += 0x800; break;
431      }
432      break;
433
434   case 1: // 565
435      switch(t->mode) {
436      case 0:  t->r = tex_r_565_tw; miptype = 2; break;
437      case 1:  t->r = tex_r_565_n;  miptype = 2; break;
438      default: t->r = tex_r_565_vq; miptype = 3; t->address += 0x800; break;
439      }
440      break;
441
442   case 2: // 4444
443      switch(t->mode) {
444      case 0:  t->r = tex_r_4444_tw; miptype = 2; break;
445      case 1:  t->r = tex_r_4444_n;  miptype = 2; break;
446      default: t->r = tex_r_4444_vq; miptype = 3; t->address += 0x800; break;
447      }
448      break;
449
450   case 3: // yuv422
451      switch(t->mode) {
452      case 0:  /*t->r = tex_r_yuv_tw*/; miptype = -1; break;
453      case 1:  t->r = tex_r_yuv_n; miptype = -1; break;
454      default: /*t->r = tex_r_yuv_vq*/; miptype = -1; break;
455      }
456      break;
457
458   case 4: // bumpmap
459      break;
460
461   case 5: // 4bpp palette
462      t->palbase = 0x400 | ((t->palette & 0x3f) << 4);
463      switch(t->mode) {
464      case 0: case 1:
465         miptype = 0;
466
467         switch(pvrta_regs[PAL_RAM_CTRL]) {
468         case 0: t->r = tex_r_p4_1555_tw; break;
469         case 1: t->r = tex_r_p4_565_tw;  break;
470         case 2: t->r = tex_r_p4_4444_tw; break;
471         case 3: t->r = tex_r_p4_8888_tw; break;
472         }
473         break;
474      default:
475         miptype = 3; // ?
476
477         switch(pvrta_regs[PAL_RAM_CTRL]) {
478         case 0: t->r = tex_r_p4_1555_vq; t->address += 0x800; break;
479         case 1: t->r = tex_r_p4_565_vq;  t->address += 0x800; break;
480         case 2: t->r = tex_r_p4_4444_vq; t->address += 0x800; break;
481         case 3: t->r = tex_r_p4_8888_vq; t->address += 0x800; break;
482         }
483         break;
484      }
485      break;
486
487   case 6: // 8bpp palette
488      t->palbase = 0x400 | ((t->palette & 0x30) << 4);
489      switch(t->mode) {
490      case 0: case 1:
491         miptype = 1;
492
493         switch(pvrta_regs[PAL_RAM_CTRL]) {
494         case 0: t->r = tex_r_p8_1555_tw; break;
495         case 1: t->r = tex_r_p8_565_tw; break;
496         case 2: t->r = tex_r_p8_4444_tw; break;
497         case 3: t->r = tex_r_p8_8888_tw; break;
498         }
499         break;
500      default:
501         miptype = 3; // ?
502
503         switch(pvrta_regs[PAL_RAM_CTRL]) {
504         case 0: t->r = tex_r_p8_1555_vq; t->address += 0x800; break;
505         case 1: t->r = tex_r_p8_565_vq;  t->address += 0x800; break;
506         case 2: t->r = tex_r_p8_4444_vq; t->address += 0x800; break;
507         case 3: t->r = tex_r_p8_8888_vq; t->address += 0x800; break;
508         }
509         break;
510      }
511      break;
512
513   case 9: // reserved
514      break;
515   }
516
517   if (t->mipmapped)
518   {
519      // full offset tables for reference,
520      // we don't do mipmapping, so don't use anything < 8x8
521      // first table is half-bytes
522
523      // 4BPP palette textures
524      // Texture size _4-bit_ offset value for starting address
525      // 1x1          0x00003
526      // 2x2          0x00004
527      // 4x4          0x00008
528      // 8x8          0x00018
529      // 16x16        0x00058
530      // 32x32        0x00158
531      // 64x64        0x00558
532      // 128x128      0x01558
533      // 256x256      0x05558
534      // 512x512      0x15558
535      // 1024x1024    0x55558
536
537      // 8BPP palette textures
538      // Texture size Byte offset value for starting address
539      // 1x1          0x00003
540      // 2x2          0x00004
541      // 4x4          0x00008
542      // 8x8          0x00018
543      // 16x16        0x00058
544      // 32x32        0x00158
545      // 64x64        0x00558
546      // 128x128      0x01558
547      // 256x256      0x05558
548      // 512x512      0x15558
549      // 1024x1024    0x55558
550
551      // Non-palette textures
552      // Texture size Byte offset value for starting address
553      // 1x1          0x00006
554      // 2x2          0x00008
555      // 4x4          0x00010
556      // 8x8          0x00030
557      // 16x16        0x000B0
558      // 32x32        0x002B0
559      // 64x64        0x00AB0
560      // 128x128      0x02AB0
561      // 256x256      0x0AAB0
562      // 512x512      0x2AAB0
563      // 1024x1024    0xAAAB0
564
565      // VQ textures
566      // Texture size Byte offset value for starting address
567      // 1x1          0x00000
568      // 2x2          0x00001
569      // 4x4          0x00002
570      // 8x8          0x00006
571      // 16x16        0x00016
572      // 32x32        0x00056
573      // 64x64        0x00156
574      // 128x128      0x00556
575      // 256x256      0x01556
576      // 512x512      0x05556
577      // 1024x1024    0x15556
578
579      static const int mipmap_4_8_offset[8] = { 0x00018, 0x00058, 0x00158, 0x00558, 0x01558, 0x05558, 0x15558, 0x55558 };  // 4bpp (4bit offset) / 8bpp (8bit offset)
580      static const int mipmap_np_offset[8] =  { 0x00030, 0x000B0, 0x002B0, 0x00AB0, 0x02AB0, 0x0AAB0, 0x2AAB0, 0xAAAB0 };  // nonpalette textures
581      static const int mipmap_vq_offset[8] =  { 0x00006, 0x00016, 0x00056, 0x00156, 0x00556, 0x01556, 0x05556, 0x15556 }; // vq textures
582
583      switch (miptype)
584      {
585
586         case 0: // 4bpp
587            //printf("4bpp\n");
588            t->address += mipmap_4_8_offset[t->sizes&7]>>1;
589            break;
590
591         case 1: // 8bpp
592            //printf("8bpp\n");
593            t->address += mipmap_4_8_offset[t->sizes&7];
594            break;
595
596         case 2: // nonpalette
597            //printf("np\n");
598            t->address += mipmap_np_offset[t->sizes&7];
599            break;
600
601         case 3: // vq
602            //printf("vq\n");
603            t->address += mipmap_vq_offset[t->sizes&7];
604            break;
605      }
606   }
607
608}
609
610static void tex_get_info(texinfo *ti, pvrta_state *sa)
611{
612   ti->address = sa->textureaddress;
613   ti->sizex   = sa->textureusize;
614   ti->sizey   = sa->texturevsize;
615   ti->mode    = sa->scanorder + sa->vqcompressed*2;
616   ti->sizes   = sa->texturesizes;
617   ti->pf      = sa->pixelformat;
618   ti->mipmapped  = sa->mipmapped;
619   ti->palette = sa->paletteselector;
620   tex_prepare(ti);
621}
622
111623// register decode helper
112624INLINE int decode_reg_64(UINT32 offset, UINT64 mem_mask, UINT64 *shift)
113625{
r4679r4680
154666      UINT32 pvr_addr;
155667      UINT32 sys_addr;
156668      UINT32 size;
669      UINT8 sel;
157670      UINT8 dir;
158671      UINT8 flag;
159672      UINT8 start;
r4679r4680
168681      case SB_PDSTAR: pvr_dma.sys_addr = dat; break;
169682      case SB_PDLEN: pvr_dma.size = dat; break;
170683      case SB_PDDIR: pvr_dma.dir = dat & 1; break;
171      case SB_PDTSEL: mame_printf_verbose("PVRCTRL: initiation mode %x\n",dat); break;
684      case SB_PDTSEL:
685         pvr_dma.sel = dat & 1;
686         if(pvr_dma.sel & 1)
687            printf("Warning: Unsupported irq mode trigger PVR-DMA\n");
688         break;
172689      case SB_PDEN: pvr_dma.flag = dat & 1; break;
173690      case SB_PDST:
174691         pvr_dma.start = dat & 1;
175         /*We need to know where this is actually used on Naomi, for testing purpose.*/
176         if(pvr_dma.start) { printf("Warning: PVR-DMA start\n"); }
177692
178693         if(pvr_dma.flag && pvr_dma.start)
179694         {
r4679r4680
181696            dst = pvr_dma.pvr_addr;
182697            src = pvr_dma.sys_addr;
183698            size = 0;
699
700            /* used by usagui and sprtjam*/
701            printf("PVR-DMA start\n");
702            printf("%08x %08x %08x\n",pvr_dma.pvr_addr,pvr_dma.sys_addr,pvr_dma.size);
703            printf("src %s dst %08x\n",pvr_dma.dir ? "->" : "<-",pvr_dma.sel);
704
184705            /* 0 rounding size = 16 Mbytes */
185706            if(pvr_dma.size == 0) { pvr_dma.size = 0x100000; }
186707
r4679r4680
252773   dat = (UINT32)(data >> shift);
253774   old = pvrta_regs[reg];
254775   pvrta_regs[reg] = dat; // 5f8000+reg*4=dat
776
255777   switch (reg)
256778   {
257779   case SOFTRESET:
r4679r4680
418940      state_ta.grab[state_ta.grabsel].ispbase=pvrta_regs[TA_ISP_BASE];
419941      state_ta.grab[state_ta.grabsel].busy=0;
420942      state_ta.grab[state_ta.grabsel].valid=1;
421      state_ta.grab[state_ta.grabsel].testsprites_size=0;
422      state_ta.grab[state_ta.grabsel].testvertices_size=0;
943      state_ta.grab[state_ta.grabsel].verts_size=0;
944      state_ta.grab[state_ta.grabsel].strips_size=0;
423945      break;
424946   case TA_LIST_CONT:
425947   #if DEBUG_PVRTA
r4679r4680
449971
450972    */
451973
974   receiveddata *rd = &state_ta.grab[state_ta.grabsel];
975
452976   // Para Control
453977   state_ta.paracontrol=(tafifo_buff[0] >> 24) & 0xff;
454978   // 0 end of list
r4679r4680
6671191            #endif
6681192            if (state_ta.texture == 1)
6691193            {
670               #if DEBUG_PVRDLIST
671               mame_printf_verbose(" A(%f,%f) B(%f,%f) C(%f,%f)\n",u2f(tafifo_buff[13] & 0xffff0000),u2f((tafifo_buff[13] & 0xffff) << 16),u2f(tafifo_buff[14] & 0xffff0000),u2f((tafifo_buff[14] & 0xffff) << 16),u2f(tafifo_buff[15] & 0xffff0000),u2f((tafifo_buff[15] & 0xffff) << 16));
672               #endif
1194               if (rd->verts_size <= 65530)
1195               {
1196                  strip *ts;
1197                  vert *tv = &rd->verts[rd->verts_size];
1198                  tv[0].x = u2f(tafifo_buff[0x1]);
1199                  tv[0].y = u2f(tafifo_buff[0x2]);
1200                  tv[0].w = u2f(tafifo_buff[0x3]);
1201                  tv[1].x = u2f(tafifo_buff[0x4]);
1202                  tv[1].y = u2f(tafifo_buff[0x5]);
1203                  tv[1].w = u2f(tafifo_buff[0x6]);
1204                  tv[3].x = u2f(tafifo_buff[0x7]);
1205                  tv[3].y = u2f(tafifo_buff[0x8]);
1206                  tv[3].w = u2f(tafifo_buff[0x9]);
1207                  tv[2].x = u2f(tafifo_buff[0xa]);
1208                  tv[2].y = u2f(tafifo_buff[0xb]);
1209                  tv[2].w = tv[0].w+tv[3].w-tv[1].w;
1210                  tv[0].u = u2f(tafifo_buff[0xd] & 0xffff0000);
1211                  tv[0].v = u2f(tafifo_buff[0xd] << 16);
1212                  tv[1].u = u2f(tafifo_buff[0xe] & 0xffff0000);
1213                  tv[1].v = u2f(tafifo_buff[0xe] << 16);
1214                  tv[3].u = u2f(tafifo_buff[0xf] & 0xffff0000);
1215                  tv[3].v = u2f(tafifo_buff[0xf] << 16);
1216                  tv[2].u = tv[0].u+tv[3].u-tv[1].u;
1217                  tv[2].v = tv[0].v+tv[3].v-tv[1].v;
6731218
674               /* add a sprite to our 'test sprites' list */
675               /* sprites are used for the Naomi Bios logo + text for example */
676               /* -- this is wildly inaccurate! */
677               testsprites* testsprite = &state_ta.grab[state_ta.grabsel].showsprites[state_ta.grab[state_ta.grabsel].testsprites_size];
1219                  ts = &rd->strips[rd->strips_size++];
1220                  tex_get_info(&ts->ti, &state_ta);
1221                  ts->svert = rd->verts_size;
1222                  ts->evert = rd->verts_size + 3;
6781223
679               /* Sprite Type 1 (for Sprite)
680                     0x00 Parameter Control Word (see above)
681                     0x04 A.X
682                     0x08 A.Y
683                     0x0C A.Z
684                     0x10 B.X
685                     0x14 B.Y
686                     0x18 B.Z
687                     0x1C C.X
688                     0x20 C.Y
689                     0x24 C.Z
690                     0x28 D.X
691                     0x2C D.Y
692                     0x30 (ignored) D.Z is calculated from the Plane Equation
693                     0x34 AU/AV (16-bits each)
694                     0x38 BU/BV (16-bits each)
695                     0x3C CU/CV  (16-bits each)
696
697                     note: DU/DV is calculated, not specified
698                    */
699
700               testsprite->a.x = u2f(tafifo_buff[0x04/4]);
701               testsprite->a.y = u2f(tafifo_buff[0x08/4]);
702               testsprite->a.z = u2f(tafifo_buff[0x0c/4]);
703               testsprite->b.x = u2f(tafifo_buff[0x10/4]);
704               testsprite->b.y = u2f(tafifo_buff[0x14/4]);
705               testsprite->b.z = u2f(tafifo_buff[0x18/4]);
706               testsprite->c.x = u2f(tafifo_buff[0x1c/4]);
707               testsprite->c.y = u2f(tafifo_buff[0x20/4]);
708               testsprite->c.z = u2f(tafifo_buff[0x24/4]);
709
710               testsprite->d.x = u2f(tafifo_buff[0x28/4]);
711               testsprite->d.y = u2f(tafifo_buff[0x2c/4]);
712               testsprite->d.z = 0.0f;// calculated
713
714               testsprite->a.u = u2f( (tafifo_buff[0x34/4]&0xffff0000) );
715               testsprite->a.v = u2f( (tafifo_buff[0x34/4]&0x0000ffff)<<16);
716               testsprite->b.u = u2f( (tafifo_buff[0x38/4]&0xffff0000) );
717               testsprite->b.v = u2f( (tafifo_buff[0x38/4]&0x0000ffff)<<16);
718               testsprite->c.u = u2f( (tafifo_buff[0x3c/4]&0xffff0000) );
719               testsprite->c.v = u2f( (tafifo_buff[0x3c/4]&0x0000ffff)<<16);
720               testsprite->d.u = 0.0f;// calculated
721               testsprite->d.v = 0.0f;// calculated
722
723               /*
724                    printf("Sending a sprite with\n%f %f %f - %f %f\n %f %f %f - %f %f\n%f %f %f - %f %f\n%f %f %f - %f %f\n",
725                    testsprite->a.x, testsprite->a.y, testsprite->a.z, testsprite->a.u, testsprite->a.v,
726                    testsprite->b.x, testsprite->b.y, testsprite->b.z, testsprite->b.u, testsprite->b.v,
727                    testsprite->c.x, testsprite->c.y, testsprite->c.z, testsprite->c.u, testsprite->c.v,
728                    testsprite->d.x, testsprite->d.y, testsprite->d.z, testsprite->d.u, testsprite->d.v);
729                    */
730
731               /*
732                    horizontal test mode
733                    224.000000 224.000000 999.999939 - 0.000000 0.609375
734                    232.000000 224.000000 999.999939 - 1.000000 0.609375
735                    232.000000 232.000000 999.999939 - 1.000000 0.617188
736                    224.000000 232.000000
737                    should calculate      999.999939 - 0.000000 0.617188
738
739
740                    vertical test mode
741                      8.000000 184.000000 999.999939 - 0.000000 0.617188
742                     16.000000 184.000000 999.999939 - 0.000000 0.609375
743                     16.000000 192.000000 999.999939 - 1.000000 0.609375
744                      8.000000 192.000000
745                    should calculate      999.999939 - 1.000000 0.617188
746                    */
747
748               // old code, used for the test drawing
749               testsprite->positionx=testsprite->a.x;
750               testsprite->positiony=testsprite->a.y;
751               testsprite->sizex=u2f(tafifo_buff[4])-u2f(tafifo_buff[1]);
752               testsprite->sizey=u2f(tafifo_buff[8])-u2f(tafifo_buff[2]);
753               testsprite->u=u2f(tafifo_buff[13] & 0xffff0000);
754               testsprite->v=u2f((tafifo_buff[13] & 0xffff) << 16);
755               testsprite->du=u2f(tafifo_buff[14] & 0xffff0000)-testsprite->u;
756               testsprite->dv=u2f((tafifo_buff[15] & 0xffff) << 16)-testsprite->v;
757               testsprite->textureaddress=state_ta.textureaddress;
758               testsprite->texturesizex=state_ta.textureusize;
759               testsprite->texturesizey=state_ta.texturevsize;
760               testsprite->texturemode=state_ta.scanorder+state_ta.vqcompressed*2;
761               testsprite->texturesizes=state_ta.texturesizes;
762               testsprite->texturepf=state_ta.pixelformat;
763               testsprite->texturepalette=state_ta.paletteselector;
764
765               state_ta.grab[state_ta.grabsel].testsprites_size++;
1224                  rd->verts_size += 4;
1225               }
7661226            }
7671227         }
7681228         else if (state_ta.global_paratype == 4)
7691229         {
7701230            #if DEBUG_PVRDLIST
7711231            mame_printf_verbose(" Vertex polygon");
772            mame_printf_verbose(" V(%f,%f,%f)", u2f(tafifo_buff[1]), u2f(tafifo_buff[2]), u2f(tafifo_buff[3]));
1232            mame_printf_verbose(" V(%f,%f,%f) T(%f,%f)", u2f(tafifo_buff[1]), u2f(tafifo_buff[2]), u2f(tafifo_buff[3]), u2f(tafifo_buff[4]), u2f(tafifo_buff[5]));
7731233            mame_printf_verbose("\n");
7741234            #endif
775#if DEBUG_VERTICES
776            if (state_ta.grab[state_ta.grabsel].testvertices_size <= 65530)
1235            if (rd->verts_size <= 65530)
7771236            {
778               /* add a vertex to our 'testverticies' list */
1237               /* add a vertex to our list */
7791238               /* this is used for 3d stuff, ie most of the graphics (see guilty gear, confidential mission, maze of the kings etc.) */
7801239               /* -- this is also wildly inaccurate! */
781               testvertices* testvertex = &state_ta.grab[state_ta.grabsel].showvertices[state_ta.grab[state_ta.grabsel].testvertices_size];
1240               vert *tv = &rd->verts[rd->verts_size];
7821241
783               testvertex->x=u2f(tafifo_buff[1]);
784               testvertex->y=u2f(tafifo_buff[2]);
785               testvertex->endofstrip=state_ta.endofstrip;
1242               tv->x=u2f(tafifo_buff[1]);
1243               tv->y=u2f(tafifo_buff[2]);
1244               tv->w=u2f(tafifo_buff[3]);
1245               tv->u=u2f(tafifo_buff[4]);
1246               tv->v=u2f(tafifo_buff[5]);
1247
1248               if((!rd->strips_size) ||
1249                  rd->strips[rd->strips_size-1].evert != -1)
1250               {
1251                  strip *ts = &rd->strips[rd->strips_size++];
1252                  tex_get_info(&ts->ti, &state_ta);
1253                  ts->svert = rd->verts_size;
1254                  ts->evert = -1;
1255               }
1256               if(state_ta.endofstrip)
1257                  rd->strips[rd->strips_size-1].evert = rd->verts_size;
1258               rd->verts_size++;
7861259            }
787            state_ta.grab[state_ta.grabsel].testvertices_size++;
788#endif
7891260         }
7901261      }
7911262   }
r4679r4680
8751346         dilatechose[(b << 3) + a]=3+(a < b ? a : b);
8761347}
8771348
878#if DEBUG_VERTICES
1349void render_hline(bitmap_t *bitmap, texinfo *ti, int y, float xl, float xr, float ul, float ur, float vl, float vr, float wl, float wr)
1350{
1351   int xxl, xxr;
1352   float dx, dudx, dvdx, dwdx;
1353   UINT32 *tdata;
1354   float *wbufline;
8791355
1356   if(xr < 0 || xl >= 640)
1357      return;
8801358
881INLINE void testdrawline(bitmap_t *bitmap, testvertices* from, testvertices* to)
882{
883UINT32 *bmpaddr;
884int ix, iy, i, inc, x, y, dx, dy, plotx, ploty;
885int dxix, dyiy;
886render_bounds line, clip;
1359   xxl = (int)xl;
1360   xxr = (int)xr;
8871361
888   clip.x0=0;
889   clip.y0=0;
890   clip.x1=639;
891   clip.y1=479;
892   line.x0=from->x;
893   line.y0=from->y;
894   line.x1=to->x;
895   line.y1=to->y;
896   if (render_clip_line(&line, &clip))
1362   if(xxl == xxr)
8971363      return;
898   dx=line.x1-line.x0;
899   dy=line.y1-line.y0;
900   plotx=line.x0;
901   ploty=line.y0;
902   ix = abs(dx);
903   iy = abs(dy);
904   inc = MAX(ix,iy);
905   x = y = 0;
906   dxix = (dx ? dx/ix : 0);
907   dyiy = (dy ? dy/iy : 0);
9081364
909   for (i=0; i <= inc; ++i)
910    {
911      x += ix;  y += iy;
1365   dx = xr-xl;
1366   dudx = (ur-ul)/dx;
1367   dvdx = (vr-vl)/dx;
1368   dwdx = (wr-wl)/dx;
9121369
913      if (x > inc)
914      {
915         x -= inc;
916         plotx += dxix;
917         bmpaddr = BITMAP_ADDR32(bitmap,ploty,plotx);
918         *bmpaddr = MAKE_RGB(0, 0, 255);
1370   if(xl < 0) {
1371      ul += -dudx*xl;
1372      vl += -dvdx*xl;
1373      wl += -dwdx*xl;
1374      xxl = 0;
1375   } else {
1376      float dt = xxl - xl;
1377      ul += dudx*dt;
1378      vl += dvdx*dt;
1379      wl += dwdx*dt;
1380   }
1381
1382   // Target the pixel center
1383   ul += 0.5*dudx;
1384   vl += 0.5*dvdx;
1385   wl += 0.5*dwdx;
1386
1387   if(xxr > 640)
1388      xxr = 640;
1389
1390   tdata = BITMAP_ADDR32(bitmap, y, xxl);
1391   wbufline = &wbuffer[y][xxl];
1392
1393   while(xxl < xxr) {
1394      if((wl > *wbufline)) {
1395         UINT32 c;
1396         float u = ul/wl;
1397         float v = vl/wl;
1398
1399         c = ti->r(ti, u, v);
1400
1401         if((c & 0xff000000) == 0xff000000) {
1402            *wbufline = wl;
1403            *tdata = c;
1404         } else if(c & 0xff000000) {
1405            int a = (c >> 24)+1;
1406            int ca = 256-a;
1407            UINT32 c2 = *tdata;
1408            *tdata = ((((c & 0xff00ff)*a + (c2 & 0xff00ff)*ca) & 0xff00ff00) |
1409                    (((c & 0xff00)*a + (c2 & 0xff00)*ca) & 0xff0000)) >> 8;
1410         }
9191411      }
920      if (y > inc)
921      {
922         y -= inc;
923         ploty += dyiy;
924         bmpaddr = BITMAP_ADDR32(bitmap,ploty,plotx);
925         *bmpaddr = MAKE_RGB(0, 0, 255);
926      }
1412      wbufline++;
1413      tdata++;
1414
1415      ul += dudx;
1416      vl += dvdx;
1417      wl += dwdx;
1418      xxl ++;
9271419   }
9281420}
9291421
930INLINE void testdrawpoly(bitmap_t *bitmap, testvertices **v)
1422void render_span(bitmap_t *bitmap, texinfo *ti,
1423                 int y0, int y1, float adj,
1424                 float *xl, float *xr,
1425                 float *ul, float *ur,
1426                 float *vl, float *vr,
1427                 float *wl, float *wr,
1428                 float dxldy, float dxrdy,
1429                 float duldy, float durdy,
1430                 float dvldy, float dvrdy,
1431                 float dwldy, float dwrdy)
9311432{
932   testdrawline(bitmap,v[0],v[1]);
933   testdrawline(bitmap,v[1],v[2]);
934   testdrawline(bitmap,v[2],v[0]);
1433   if(y1 > 480)
1434      y1 = 480;
1435   if(y1 <= 0) {
1436      *xl += dxldy*(y1-y0);
1437      *xr += dxrdy*(y1-y0);
1438      *ul += duldy*(y1-y0);
1439      *ur += durdy*(y1-y0);
1440      *vl += dvldy*(y1-y0);
1441      *vr += dvrdy*(y1-y0);
1442      *wl += dwldy*(y1-y0);
1443      *wr += dwrdy*(y1-y0);
1444      return;
1445   }
1446   if(y0 < 0) {
1447      *xl += -dxldy*y0;
1448      *xr += -dxrdy*y0;
1449      *ul += -duldy*y0;
1450      *ur += -durdy*y0;
1451      *vl += -dvldy*y0;
1452      *vr += -dvrdy*y0;
1453      *wl += -dwldy*y0;
1454      *wr += -dwrdy*y0;
1455      y0 = 0;
1456   }
1457
1458   if(adj) {
1459      *xl += adj*dxldy;
1460      *xr += adj*dxrdy;
1461      *ul += adj*duldy;
1462      *ur += adj*durdy;
1463      *vl += adj*dvldy;
1464      *vr += adj*dvrdy;
1465      *wl += adj*dwldy;
1466      *wr += adj*dwrdy;
1467   }
1468   while(y0 < y1) {
1469      render_hline(bitmap, ti, y0, *xl, *xr, *ul, *ur, *vl, *vr, *wl, *wr);
1470
1471      *xl += dxldy;
1472      *xr += dxrdy;
1473      *ul += duldy;
1474      *ur += durdy;
1475      *vl += dvldy;
1476      *vr += dvrdy;
1477      *wl += dwldy;
1478      *wr += dwrdy;
1479      y0 ++;
1480   }
9351481}
9361482
1483static void sort_vertices(const vert *v, int *i0, int *i1, int *i2)
1484{
1485   float miny, maxy;
1486   int imin, imax, imid;
1487   miny = maxy = v[0].y;
1488   imin = imax = 0;
9371489
938#endif
1490   if(miny > v[1].y) {
1491      miny = v[1].y;
1492      imin = 1;
1493   } else if(maxy < v[1].y) {
1494      maxy = v[1].y;
1495      imax = 1;
1496   }
9391497
940#if 0
941INLINE UINT32 alpha_blend_r16_565(UINT32 d, UINT32 s, UINT8 level)
1498   if(miny > v[2].y) {
1499      miny = v[2].y;
1500      imin = 2;
1501   } else if(maxy < v[2].y) {
1502      maxy = v[2].y;
1503      imax = 2;
1504   }
1505
1506   imid = (imin == 0 || imax == 0) ? (imin == 1 || imax == 1) ? 2 : 1 : 0;
1507
1508   *i0 = imin;
1509   *i1 = imid;
1510   *i2 = imax;
1511}
1512
1513
1514static void render_tri_sorted(bitmap_t *bitmap, texinfo *ti, const vert *v0, const vert *v1, const vert *v2)
9421515{
943   int alphad = 256 - level;
944   return ((((s & 0x001f) * level + (d & 0x001f) * alphad) >> 8)) |
945         ((((s & 0x07e0) * level + (d & 0x07e0) * alphad) >> 8) & 0x07e0) |
946         ((((s & 0xf800) * level + (d & 0xf800) * alphad) >> 8) & 0xf800);
1516   int y0, y1, y2;
1517   float dy01, dy02, dy12;
1518   float dy;
1519
1520   float dx01dy, dx02dy, dx12dy, du01dy, du02dy, du12dy, dv01dy, dv02dy, dv12dy, dw01dy, dw02dy, dw12dy;
1521
1522   float xl, xr, ul, ur, vl, vr, wl, wr;
1523
1524   if(v0->y >= 480 || v2->y < 0)
1525      return;
1526
1527   y0 = (int)(v0->y);
1528   y1 = (int)(v1->y);
1529   y2 = (int)(v2->y);
1530
1531   dy01 = y1-y0;
1532   dy02 = y2-y0;
1533   dy12 = y2-y1;
1534
1535   dx01dy = dy01 ? (v1->x-v0->x)/dy01 : 0;
1536   dx02dy = dy02 ? (v2->x-v0->x)/dy02 : 0;
1537   dx12dy = dy12 ? (v2->x-v1->x)/dy12 : 0;
1538
1539   du01dy = dy01 ? (v1->u-v0->u)/dy01 : 0;
1540   du02dy = dy02 ? (v2->u-v0->u)/dy02 : 0;
1541   du12dy = dy12 ? (v2->u-v1->u)/dy12 : 0;
1542
1543   dv01dy = dy01 ? (v1->v-v0->v)/dy01 : 0;
1544   dv02dy = dy02 ? (v2->v-v0->v)/dy02 : 0;
1545   dv12dy = dy12 ? (v2->v-v1->v)/dy12 : 0;
1546
1547   dw01dy = dy01 ? (v1->w-v0->w)/dy01 : 0;
1548   dw02dy = dy02 ? (v2->w-v0->w)/dy02 : 0;
1549   dw12dy = dy12 ? (v2->w-v1->w)/dy12 : 0;
1550
1551   // Target the pixel center
1552   dy = (y0-v0->y) + 0.5;
1553
1554   xl = v0->x;
1555   xr = v0->x;
1556   ul = v0->u;
1557   ur = v0->u;
1558   vl = v0->v;
1559   vr = v0->v;
1560   wl = v0->w;
1561   wr = v0->w;
1562
1563   if(!dy01) {
1564      if(!dy12)
1565         return;
1566      if(v1->x > v0->x) {
1567         xr = v1->x;
1568         ur = v1->u;
1569         vr = v1->v;
1570         wr = v1->w;
1571         render_span(bitmap, ti, y1, y2, dy, &xl, &xr, &ul, &ur, &vl, &vr, &wl, &wr, dx02dy, dx12dy, du02dy, du12dy, dv02dy, dv12dy, dw02dy, dw12dy);
1572      } else {
1573         xl = v1->x;
1574         ul = v1->u;
1575         vl = v1->v;
1576         wl = v1->w;
1577         render_span(bitmap, ti, y1, y2, dy, &xl, &xr, &ul, &ur, &vl, &vr, &wl, &wr, dx12dy, dx02dy, du12dy, du02dy, dv12dy, dv02dy, dw12dy, dw02dy);
1578      }
1579   } else if(!dy12) {
1580      if(v2->x > v1->x)
1581         render_span(bitmap, ti, y0, y1, dy, &xl, &xr, &ul, &ur, &vl, &vr, &wl, &wr, dx01dy, dx02dy, du01dy, du02dy, dv01dy, dv02dy, dw01dy, dw02dy);
1582      else
1583         render_span(bitmap, ti, y0, y1, dy, &xl, &xr, &ul, &ur, &vl, &vr, &wl, &wr, dx02dy, dx01dy, du02dy, du01dy, dv02dy, dv01dy, dw02dy, dw01dy);
1584   } else {
1585      if(dx01dy < dx02dy) {
1586         render_span(bitmap, ti, y0, y1, dy, &xl, &xr, &ul, &ur, &vl, &vr, &wl, &wr, dx01dy, dx02dy, du01dy, du02dy, dv01dy, dv02dy, dw01dy, dw02dy);
1587         render_span(bitmap, ti, y1, y2,  0, &xl, &xr, &ul, &ur, &vl, &vr, &wl, &wr, dx12dy, dx02dy, du12dy, du02dy, dv12dy, dv02dy, dw12dy, dw02dy);
1588      } else {
1589         render_span(bitmap, ti, y0, y1, dy, &xl, &xr, &ul, &ur, &vl, &vr, &wl, &wr, dx02dy, dx01dy, du02dy, du01dy, dv02dy, dv01dy, dw02dy, dw01dy);
1590         render_span(bitmap, ti, y1, y2,  0, &xl, &xr, &ul, &ur, &vl, &vr, &wl, &wr, dx02dy, dx12dy, du02dy, du12dy, dv02dy, dv12dy, dw02dy, dw12dy);
1591      }
1592   }
9471593}
948#endif
9491594
950/// !!
1595static void render_tri(bitmap_t *bitmap, texinfo *ti, const vert *v)
1596{
1597   int i0, i1, i2;
9511598
1599   sort_vertices(v, &i0, &i1, &i2);
1600   render_tri_sorted(bitmap, ti, v+i0, v+i1, v+i2);
1601}
1602
9521603static void testdrawscreen(const running_machine *machine,bitmap_t *bitmap,const rectangle *cliprect)
9531604{
954
955   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
956   int cs,x,y,dx,dy,xi,yi,a,rs,ns;
957   float iu,iv,u,v;
958   UINT32 addrp;
959   UINT32 *bmpaddr;
960   int xt,yt,cd;
1605   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
1606   int cs,rs,ns;
9611607   UINT32 c;
9621608#if 0
9631609   int stride;
r4679r4680
9961642   }
9971643#endif
9981644
999   ns=state_ta.grab[rs].testsprites_size;
1645   ns=state_ta.grab[rs].strips_size;
1646   if(ns)
1647      memset(wbuffer, 0x00, sizeof(wbuffer));
1648
10001649   for (cs=0;cs < ns;cs++)
10011650   {
1002      dx=state_ta.grab[rs].showsprites[cs].sizex;
1003      dy=state_ta.grab[rs].showsprites[cs].sizey;
1004      iu=state_ta.grab[rs].showsprites[cs].du/dx;
1005      iv=state_ta.grab[rs].showsprites[cs].dv/dy;
1006      cd=dilatechose[state_ta.grab[rs].showsprites[cs].texturesizes];
1651      strip *ts = &state_ta.grab[rs].strips[cs];
1652      int sv = ts->svert;
1653      int ev = ts->evert;
1654      int i;
1655      if(ev == -1)
1656         continue;
10071657
1008      if ((state_ta.grab[rs].showsprites[cs].positionx+dx) > 640)
1009         dx=640-state_ta.grab[rs].showsprites[cs].positionx;
1010      if ((state_ta.grab[rs].showsprites[cs].positiony+dy) > 480)
1011         dy=480-state_ta.grab[rs].showsprites[cs].positiony;
1012      xi=0;
1013      yi=0;
1014
1015      if (state_ta.grab[rs].showsprites[cs].positionx < 0)
1016         xi=-state_ta.grab[rs].showsprites[cs].positionx;
1017      if (state_ta.grab[rs].showsprites[cs].positiony < 0)
1018         yi=-state_ta.grab[rs].showsprites[cs].positiony;
1019
1020      for (y = yi;y < dy;y++)
1658      for(i=sv; i <= ev; i++)
10211659      {
1022         for (x = xi;x < dx;x++)
1023         {
1024            // find the coordinates
1025            u=state_ta.grab[rs].showsprites[cs].u+iu*x;
1026            v=state_ta.grab[rs].showsprites[cs].v+iv*y;
1027            yt=v*(state_ta.grab[rs].showsprites[cs].texturesizey-1);
1028            xt=u*(state_ta.grab[rs].showsprites[cs].texturesizex-1);
1029
1030            a=255;
1031            switch (state_ta.grab[rs].showsprites[cs].texturepf)
1032            {
1033            case 0: // 1555
1034               // find the address
1035               if (state_ta.grab[rs].showsprites[cs].texturemode == 1)
1036                  addrp=state_ta.grab[rs].showsprites[cs].textureaddress+(state_ta.grab[rs].showsprites[cs].texturesizex*yt+xt)*2;
1037               else if (state_ta.grab[rs].showsprites[cs].texturemode == 0) // twiddled
1038                  addrp=state_ta.grab[rs].showsprites[cs].textureaddress+(dilated1[cd][xt] + dilated0[cd][yt])*2;
1039               else // vq-compressed
1040               {
1041                  c=0x800+(dilated1[cd][xt >> 1] + dilated0[cd][yt >> 1]);
1042                  c=*(((UINT8 *)dc_texture_ram) + BYTE_XOR_LE(state_ta.grab[rs].showsprites[cs].textureaddress+c));
1043                  addrp=state_ta.grab[rs].showsprites[cs].textureaddress+c*8+(dilated1[cd][xt & 1] + dilated0[cd][yt & 1])*2;
1044               }
1045               // read datum
1046               c=*(((UINT16 *)dc_texture_ram) + (WORD2_XOR_LE(addrp) >> 1));
1047               // find the color and draw
1048               a=(((c & 0x8000) >> 8)*255)/0x80;
1049               c=MAKE_RGB((c&0x7c00) >> 7, (c&0x3e0) >> 2, (c&0x1f) << 3);
1050               break;
1051            case 1: // 565
1052               // find the address
1053               if (state_ta.grab[rs].showsprites[cs].texturemode == 1)
1054                  addrp=state_ta.grab[rs].showsprites[cs].textureaddress+(state_ta.grab[rs].showsprites[cs].texturesizex*yt+xt)*2;
1055               else if (state_ta.grab[rs].showsprites[cs].texturemode == 0) // twiddled
1056                  addrp=state_ta.grab[rs].showsprites[cs].textureaddress+(dilated1[cd][xt] + dilated0[cd][yt])*2;
1057               else // vq-compressed
1058               {
1059                  c=0x800+(dilated1[cd][xt >> 1] + dilated0[cd][yt >> 1]);
1060                  c=*(((UINT8 *)dc_texture_ram) + BYTE_XOR_LE(state_ta.grab[rs].showsprites[cs].textureaddress+c));
1061                  addrp=state_ta.grab[rs].showsprites[cs].textureaddress+c*8+(dilated1[cd][xt & 1] + dilated0[cd][yt & 1])*2;
1062               }
1063               // read datum
1064               c=*(((UINT16 *)dc_texture_ram) + (WORD2_XOR_LE(addrp) >> 1));
1065               // find the color and draw
1066               a=255;
1067               c=MAKE_RGB((c&0xf800) >> 8, (c&0x7e0) >> 3, (c&0x1f) << 3);
1068               break;
1069            case 2: // 4444
1070               // find the address
1071               if (state_ta.grab[rs].showsprites[cs].texturemode == 1)
1072                  addrp=state_ta.grab[rs].showsprites[cs].textureaddress+(state_ta.grab[rs].showsprites[cs].texturesizex*yt+xt)*2;
1073               else if (state_ta.grab[rs].showsprites[cs].texturemode == 0) // twiddled
1074                  addrp=state_ta.grab[rs].showsprites[cs].textureaddress+(dilated1[cd][xt] + dilated0[cd][yt])*2;
1075               else // vq-compressed
1076               {
1077                  c=0x800+(dilated1[cd][xt >> 1] + dilated0[cd][yt >> 1]);
1078                  c=*(((UINT8 *)dc_texture_ram) + BYTE_XOR_LE(state_ta.grab[rs].showsprites[cs].textureaddress+c));
1079                  addrp=state_ta.grab[rs].showsprites[cs].textureaddress+c*8+(dilated1[cd][xt & 1] + dilated0[cd][yt & 1])*2;
1080               }
1081               // read datum
1082               c=*(((UINT16 *)dc_texture_ram) + (WORD2_XOR_LE(addrp) >> 1));
1083               // find the color and draw
1084               a=(((c & 0xf000) >> 8)*255)/0xf0;
1085               c=MAKE_RGB((c&0xf00) >> 4, c&0xf0, (c&0xf) << 4);
1086               break;
1087            case 3: // yuv422
1088               break;
1089            case 4: // bumpmap
1090               break;
1091            case 5: // 4 bpp palette
1092               if (state_ta.grab[rs].showsprites[cs].texturemode & 2) // vq-compressed
1093               {
1094                  c=0x800+(dilated1[cd][xt >> 1] + dilated0[cd][yt >> 2]);
1095                  c=*(((UINT8 *)dc_texture_ram) + BYTE_XOR_LE(state_ta.grab[rs].showsprites[cs].textureaddress+c));
1096                  addrp=state_ta.grab[rs].showsprites[cs].textureaddress+c*8+(dilated1[cd][xt & 1] + dilated0[cd][yt & 3]);
1097               }
1098               else
1099               {
1100                  addrp=state_ta.grab[rs].showsprites[cs].textureaddress+(dilated1[cd][xt] + dilated0[cd][yt]);
1101               }
1102               c=*(((UINT8 *)dc_texture_ram) + BYTE_XOR_LE(addrp));
1103               c=((state_ta.grab[rs].showsprites[cs].texturepalette & 0x3f) << 4) + (c & 0xf);
1104               c=pvrta_regs[0x1000/4+c];
1105               switch (pvrta_regs[PAL_RAM_CTRL])
1106               {
1107               case 0: // argb1555
1108                  a=(((c & 0x8000) >> 8)*255)/0x80;
1109                  c=MAKE_RGB((c&0x7c00) >> 7, (c&0x3e0) >> 2, (c&0x1f) << 3);
1110                  break;
1111               case 1: // rgb565
1112                  a=255;
1113                  c=MAKE_RGB((c&0xf800) >> 8, (c&0x7e0) >> 3, (c&0x1f) << 3);
1114                  break;
1115               case 2: // argb4444
1116                  a=(((c & 0xf000) >> 8)*255)/0xf0;
1117                  c=MAKE_RGB((c&0xf00) >> 4, c&0xf0, (c&0xf) << 4);
1118                  break;
1119               case 3: // argb8888
1120                  a=(c & 0xff000000) >> 24;
1121                  c=MAKE_RGB((c&0xff0000) >> 16, (c&0xff00) >> 8, c&0xff);
1122                  break;
1123               }
1124               break;
1125            case 6: // 8 bpp palette
1126               if (state_ta.grab[rs].showsprites[cs].texturemode & 2) // vq-compressed
1127               {
1128                  c=0x800+(dilated1[cd][xt >> 1] + dilated0[cd][yt >> 2]);
1129                  c=*(((UINT8 *)dc_texture_ram) + BYTE_XOR_LE(state_ta.grab[rs].showsprites[cs].textureaddress+c));
1130                  addrp=state_ta.grab[rs].showsprites[cs].textureaddress+c*8+(dilated1[cd][xt & 1] + dilated0[cd][yt & 3]);
1131               }
1132               else
1133               {
1134                  addrp=state_ta.grab[rs].showsprites[cs].textureaddress+(dilated1[cd][xt] + dilated0[cd][yt]);
1135               }
1136               c=*(((UINT8 *)dc_texture_ram) + BYTE_XOR_LE(addrp));
1137               c=((state_ta.grab[rs].showsprites[cs].texturepalette & 0x30) << 4) | c;
1138               c=pvrta_regs[0x1000/4+c];
1139               switch (pvrta_regs[PAL_RAM_CTRL])
1140               {
1141               case 0: // argb1555
1142                  a=(((c & 0x8000) >> 8)*255)/0x80;
1143                  c=MAKE_RGB((c&0x7c00) >> 7, (c&0x3e0) >> 2, (c&0x1f) << 3);
1144                  break;
1145               case 1: // rgb565
1146                  a=255;
1147                  c=MAKE_RGB((c&0xf800) >> 8, (c&0x7e0) >> 3, (c&0x1f) << 3);
1148                  break;
1149               case 2: // argb4444
1150                  a=(((c & 0xf000) >> 8)*255)/0xf0;
1151                  c=MAKE_RGB((c&0xf00) >> 4, c&0xf0, (c&0xf) << 4);
1152                  break;
1153               case 3: // argb8888
1154                  a=(c & 0xff000000) >> 24;
1155                  c=MAKE_RGB((c&0xff0000) >> 16, (c&0xff00) >> 8, c&0xff);
1156                  break;
1157               }
1158               break;
1159            case 7: // reserved
1160               break;
1161            } // switch
1162            bmpaddr=BITMAP_ADDR32(bitmap,state_ta.grab[rs].showsprites[cs].positiony+y,state_ta.grab[rs].showsprites[cs].positionx+x);
1163            *bmpaddr = alpha_blend_r32(*bmpaddr, c, a);
1164#if 0
1165            // write into framebuffer
1166            switch (pvrta_regs[FB_W_CTRL] & 7)
1167            {
1168            case 0: // 0555 KRGB 16 bit
1169               k=pvrta_regs[FB_W_CTRL] & 0x8000;
1170               addrp=state_ta.grab[s].fbwsof1+(state_ta.grab[s].showsprites[cs].positiony+y)*stride+(state_ta.grab[s].showsprites[cs].positionx+x)*2;
1171               bmpaddr16=((UINT16 *)dc_texture_ram) + (WORD2_XOR_LE(addrp) >> 1);
1172               *bmpaddr16=k | alpha_blend_r16(*bmpaddr16,((c & 0xf80000) >> 9) | ((c & 0xf800) >> 6) | ((c & 0xf8) >> 3),a);
1173               break;
1174            case 1: // 565 RGB 16 bit
1175               addrp=state_ta.grab[rs].fbwsof1+(state_ta.grab[rs].showsprites[cs].positiony+y)*stride+(state_ta.grab[rs].showsprites[cs].positionx+x)*2;
1176               bmpaddr16=((UINT16 *)dc_texture_ram) + (WORD2_XOR_LE(addrp) >> 1);
1177               //*bmpaddr16=alpha_blend_r16_565(*bmpaddr16,((c & 0xf80000) >> 8) | ((c & 0xfc00) >> 5) | ((c & 0xf8) >> 3),a);
1178               *bmpaddr16=((c & 0xf80000) >> 8) | ((c & 0xfc00) >> 5) | ((c & 0xf8) >> 3);
1179               break;
1180            case 2: // 4444 ARGB 16 bit
1181               break;
1182            case 3: // 1555 ARGB 16 bit
1183               break;
1184            case 4: // 888 RGB 24 bit packed
1185               break;
1186            case 5: // 0888 KRGB 32 bit
1187               break;
1188            case 6: // 8888 ARGB 32 bit
1189               break;
1190            case 7: // reserved
1191               break;
1192            } // switch
1193#endif
1194         }
1660         vert *tv = state_ta.grab[rs].verts + i;
1661         tv->u = tv->u * ts->ti.sizex * tv->w;
1662         tv->v = tv->v * ts->ti.sizey * tv->w;
11951663      }
11961664
1197      #if 1
1198      // test--draw the verts fore each quad as polys too
1199      {
1200         testvertices vv[4];
1201         testvertices* v[3];
1202
1203         vv[0].x = state_ta.grab[rs].showsprites[cs].a.x;
1204         vv[0].y = state_ta.grab[rs].showsprites[cs].a.y;
1205         vv[1].x = state_ta.grab[rs].showsprites[cs].b.x;
1206         vv[1].y = state_ta.grab[rs].showsprites[cs].b.y;
1207         vv[2].x = state_ta.grab[rs].showsprites[cs].c.x;
1208         vv[2].y = state_ta.grab[rs].showsprites[cs].c.y;
1209         vv[3].x = state_ta.grab[rs].showsprites[cs].d.x;
1210         vv[3].y = state_ta.grab[rs].showsprites[cs].d.y;
1211
1212         v[0] = &vv[0];
1213         v[1] = &vv[1];
1214         v[2] = &vv[2];
1215         testdrawpoly(bitmap,v);
1216         v[0] = &vv[0];
1217         v[1] = &vv[2];
1218         v[2] = &vv[3];
1219         testdrawpoly(bitmap,v);
1220      }
1221      #endif
1665      for(i=sv; i <= ev-2; i++)
1666         render_tri(bitmap, &ts->ti, state_ta.grab[rs].verts + i);
12221667   }
12231668   state_ta.grab[rs].busy=0;
1224#if DEBUG_VERTICES
1225   a = state_ta.grab[rs].testvertices_size;
1226   if (a > 65530)
1227      a = 65530;
1228
1229   cs = 0;
1230
1231   while (cs<a)
1232   {
1233      testvertices *v[3];
1234
1235      v[0] = &state_ta.grab[rs].showvertices[cs]; cs++;
1236      v[1] = &state_ta.grab[rs].showvertices[cs]; cs++;
1237      v[2] = &state_ta.grab[rs].showvertices[cs]; cs++;
1238
1239      testdrawpoly(bitmap,v);
1240
1241      if (v[2]->endofstrip==0)
1242      {
1243         cs-=2;
1244      }
1245   }
1246#endif
12471669}
12481670
12491671#if 0
r4679r4680
14541876   timer_adjust_oneshot(endofrender_timer_tsp, attotime_never, 0);
14551877   timer_adjust_oneshot(endofrender_timer_video, attotime_never, 0);
14561878
1457   fakeframebuffer_bitmap = auto_bitmap_alloc(1024,1024,BITMAP_FORMAT_RGB32);
1879   fakeframebuffer_bitmap = auto_bitmap_alloc(machine,1024,1024,BITMAP_FORMAT_RGB32);
14581880
14591881}
14601882
r4679r4680
14831905#endif
14841906
14851907   // copy our fake framebuffer bitmap (where things have been rendered) to the screen
1486   for (y = visarea->min_y ; y < visarea->max_y ; y++)
1908   for (y = visarea->min_y ; y <= visarea->max_y ; y++)
14871909   {
1488      for (x = visarea->min_x ; x < visarea->max_x ; x++)
1910      for (x = visarea->min_x ; x <= visarea->max_x ; x++)
14891911      {
14901912         UINT32* src = BITMAP_ADDR32(fakeframebuffer_bitmap, y, x);
14911913         UINT32* dst = BITMAP_ADDR32(bitmap, y, x);
r4679r4680
15021924
15031925   dc_sysctrl_regs[SB_ISTNRM] |= IST_VBL_IN; // V Blank-in interrupt
15041926   dc_update_interrupt_status(machine);
1927   vblc++;
15051928
15061929   timer_adjust_oneshot(vbout_timer, video_screen_get_time_until_pos(machine->primary_screen, 0, 0), 0);
15071930}
src/mame/video/mole.c
r4679r4680
2929
3030VIDEO_START( mole )
3131{
32   tileram = (UINT16 *)auto_malloc(0x400 * sizeof(UINT16));
32   tileram = auto_alloc_array(machine, UINT16, 0x400);
3333
3434   bg_tilemap = tilemap_create(machine, get_bg_tile_info, tilemap_scan_rows, 8, 8, 40, 25);
3535}
src/mame/video/jagobj.c
r4679r4680
2424 *
2525 *************************************/
2626
27void jagobj_init(void)
27void jagobj_init(running_machine *machine)
2828{
2929   int i;
3030
3131   /* allocate memory for tables */
32   blend_y = auto_malloc(256 * 256);
33   blend_cc = auto_malloc(256 * 256);
32   blend_y = auto_alloc_array(machine, UINT8, 256 * 256);
33   blend_cc = auto_alloc_array(machine, UINT8, 256 * 256);
3434
3535   /* fill tables */
3636   for (i = 0; i < 256 * 256; i++)
src/mame/video/taitojc.c
r4679r4680
189189
190190   tilemap_set_transparent_pen(taitojc_tilemap, 0);
191191
192   taitojc_char_ram = auto_malloc(0x4000);
193   taitojc_tile_ram = auto_malloc(0x4000);
192   taitojc_char_ram = auto_alloc_array_clear(machine, UINT32, 0x4000/4);
193   taitojc_tile_ram = auto_alloc_array_clear(machine, UINT32, 0x4000/4);
194194
195   memset(taitojc_char_ram, 0, 0x4000);
196   memset(taitojc_tile_ram, 0, 0x4000);
197
198195   /* create the char set (gfx will then be updated dynamically from RAM) */
199196   machine->gfx[taitojc_gfx_index] = gfx_element_alloc(machine, &taitojc_char_layout, (UINT8 *)taitojc_char_ram, machine->config->total_colors / 16, 0);
200197
201   taitojc_texture = auto_malloc(0x400000);
198   taitojc_texture = auto_alloc_array(machine, UINT8, 0x400000);
202199
203200   framebuffer = video_screen_auto_bitmap_alloc(machine->primary_screen);
204201
205202   width = video_screen_get_width(machine->primary_screen);
206203   height = video_screen_get_height(machine->primary_screen);
207   zbuffer = auto_bitmap_alloc(width, height, BITMAP_FORMAT_INDEXED16);
204   zbuffer = auto_bitmap_alloc(machine, width, height, BITMAP_FORMAT_INDEXED16);
208205}
209206
210207//static int tick = 0;
r4679r4680
292289
293290static void render_solid_scan(void *dest, INT32 scanline, const poly_extent *extent, const void *extradata, int threadid)
294291{
295   bitmap_t *destmap = dest;
292   bitmap_t *destmap = (bitmap_t *)dest;
296293   float z = extent->param[0].start;
297294   int color = extent->param[1].start;
298295   float dz = extent->param[0].dpdx;
r4679r4680
316313
317314static void render_shade_scan(void *dest, INT32 scanline, const poly_extent *extent, const void *extradata, int threadid)
318315{
319   bitmap_t *destmap = dest;
316   bitmap_t *destmap = (bitmap_t *)dest;
320317   float z = extent->param[0].start;
321318   float color = extent->param[1].start;
322319   float dz = extent->param[0].dpdx;
r4679r4680
343340
344341static void render_texture_scan(void *dest, INT32 scanline, const poly_extent *extent, const void *extradata, int threadid)
345342{
346   const poly_extra_data *extra = extradata;
347   bitmap_t *destmap = dest;
343   const poly_extra_data *extra = (const poly_extra_data *)extradata;
344   bitmap_t *destmap = (bitmap_t *)dest;
348345   float z = extent->param[0].start;
349346   float u = extent->param[1].start;
350347   float v = extent->param[2].start;
r4679r4680
437434            // 0x12: Vertex 3 X
438435            // 0x13: Vertex 3 Z
439436
440            poly_extra_data *extra = poly_get_extra_data(poly);
437            poly_extra_data *extra = (poly_extra_data *)poly_get_extra_data(poly);
441438            UINT16 texbase;
442439
443440            /*
r4679r4680
555552            // 0x18: Vertex 4 X
556553            // 0x19: Vertex 4 Z
557554
558            poly_extra_data *extra = poly_get_extra_data(poly);
555            poly_extra_data *extra = (poly_extra_data *)poly_get_extra_data(poly);
559556            UINT16 texbase;
560557
561558            /*
src/mame/video/pitnrun.c
r4679r4680
6464   tilemap_mark_all_tiles_dirty( bg );
6565}
6666
67
68READ8_HANDLER( pitnrun_videoram_r )
69{
70   return videoram[offset];
71}
72
73READ8_HANDLER( pitnrun_videoram2_r )
74{
75   return pitnrun_videoram2[offset];
76}
77
7867WRITE8_HANDLER( pitnrun_char_bank_select )
7968{
8069   if(pitnrun_char_bank!=data)
r4679r4680
181170   fg = tilemap_create( machine, get_tile_info1,tilemap_scan_rows,8,8,32,32 );
182171   bg = tilemap_create( machine, get_tile_info2,tilemap_scan_rows,8,8,32*4,32 );
183172   tilemap_set_transparent_pen( fg, 0 );
184   tmp_bitmap[0] = auto_bitmap_alloc(128,128,video_screen_get_format(machine->primary_screen));
185   tmp_bitmap[1] = auto_bitmap_alloc(128,128,video_screen_get_format(machine->primary_screen));
186   tmp_bitmap[2] = auto_bitmap_alloc(128,128,video_screen_get_format(machine->primary_screen));
187   tmp_bitmap[3] = auto_bitmap_alloc(128,128,video_screen_get_format(machine->primary_screen));
173   tmp_bitmap[0] = auto_bitmap_alloc(machine,128,128,video_screen_get_format(machine->primary_screen));
174   tmp_bitmap[1] = auto_bitmap_alloc(machine,128,128,video_screen_get_format(machine->primary_screen));
175   tmp_bitmap[2] = auto_bitmap_alloc(machine,128,128,video_screen_get_format(machine->primary_screen));
176   tmp_bitmap[3] = auto_bitmap_alloc(machine,128,128,video_screen_get_format(machine->primary_screen));
188177   pitnrun_spotlights(machine);
189178}
190179
src/mame/video/segaic16.c
r4679r4680
402402   UINT16         latched_yscroll[4];            /* latched Y scroll values */
403403   UINT16         latched_pageselect[4];         /* latched page select values */
404404   INT32         xoffs;                     /* X scroll offset */
405   tilemap *tilemaps[16];               /* up to 16 tilemap pages */
406   tilemap *textmap;                  /* a single text tilemap */
407   struct tilemap_callback_info tilemap_info[16];   /* callback info for 16 tilemap pages */
405   tilemap *      tilemaps[16];               /* up to 16 tilemap pages */
406   tilemap *      textmap;                  /* a single text tilemap */
407   struct tilemap_callback_info tmap_info[16];      /* callback info for 16 tilemap pages */
408408   struct tilemap_callback_info textmap_info;      /* callback info for a single textmap page */
409409   void         (*reset)(running_machine *machine, struct tilemap_info *info);/* reset callback */
410410   void         (*draw_layer)(running_machine *machine, struct tilemap_info *info, bitmap_t *bitmap, const rectangle *cliprect, int which, int flags, int priority);
r4679r4680
808808
809809static TILE_GET_INFO( segaic16_tilemap_16a_tile_info )
810810{
811   const struct tilemap_callback_info *info = param;
811   const struct tilemap_callback_info *info = (const struct tilemap_callback_info *)param;
812812   UINT16 data = info->rambase[tile_index];
813813   int code = ((data >> 1) & 0x1000) | (data & 0xfff);
814814   int color = (data >> 5) & 0x7f;
r4679r4680
820820
821821static TILE_GET_INFO( segaic16_tilemap_16a_text_info )
822822{
823   const struct tilemap_callback_info *info = param;
823   const struct tilemap_callback_info *info = (const struct tilemap_callback_info *)param;
824824   UINT16 data = info->rambase[tile_index];
825825   int color = (data >> 8) & 0x07;
826826   int code = data & 0xff;
r4679r4680
10201020
10211021static TILE_GET_INFO( segaic16_tilemap_16b_tile_info )
10221022{
1023   const struct tilemap_callback_info *info = param;
1023   const struct tilemap_callback_info *info = (const struct tilemap_callback_info *)param;
10241024   UINT16 data = info->rambase[tile_index];
10251025   int color = (data >> 6) & 0x7f;
10261026   int code = data & 0x1fff;
r4679r4680
10341034
10351035static TILE_GET_INFO( segaic16_tilemap_16b_text_info )
10361036{
1037   const struct tilemap_callback_info *info = param;
1037   const struct tilemap_callback_info *info = (const struct tilemap_callback_info *)param;
10381038   UINT16 data = info->rambase[tile_index];
10391039   int bank = info->bank[0];
10401040   int color = (data >> 9) & 0x07;
r4679r4680
10471047
10481048static TILE_GET_INFO( segaic16_tilemap_16b_alt_tile_info )
10491049{
1050   const struct tilemap_callback_info *info = param;
1050   const struct tilemap_callback_info *info = (const struct tilemap_callback_info *)param;
10511051   UINT16 data = info->rambase[tile_index];
10521052   int color = (data >> 5) & 0x7f;
10531053   int code = data & 0x1fff;
r4679r4680
10611061
10621062static TILE_GET_INFO( segaic16_tilemap_16b_alt_text_info )
10631063{
1064   const struct tilemap_callback_info *info = param;
1064   const struct tilemap_callback_info *info = (const struct tilemap_callback_info *)param;
10651065   UINT16 data = info->rambase[tile_index];
10661066   int bank = info->bank[0];
10671067   int color = (data >> 8) & 0x07;
r4679r4680
12871287      info->tilemaps[pagenum] = tilemap_create(machine, get_tile_info, tilemap_scan_rows,  8,8, 64,32);
12881288
12891289      /* configure the tilemap */
1290      info->tilemap_info[pagenum].rambase = info->tileram + pagenum * 64*32;
1291      info->tilemap_info[pagenum].bank = info->bank;
1292      info->tilemap_info[pagenum].banksize = info->banksize;
1293      tilemap_set_user_data(info->tilemaps[pagenum], &info->tilemap_info[pagenum]);
1290      info->tmap_info[pagenum].rambase = info->tileram + pagenum * 64*32;
1291      info->tmap_info[pagenum].bank = info->bank;
1292      info->tmap_info[pagenum].banksize = info->banksize;
1293      tilemap_set_user_data(info->tilemaps[pagenum], &info->tmap_info[pagenum]);
12941294      tilemap_set_palette_offset(info->tilemaps[pagenum], colorbase);
12951295      tilemap_set_transparent_pen(info->tilemaps[pagenum], 0);
12961296      tilemap_set_scrolldx(info->tilemaps[pagenum], 0, 22);
r4679r4680
27342734
27352735   /* if the sprites need buffering, allocate memory for the buffer */
27362736   if (buffer)
2737      info->buffer = auto_malloc(info->ramsize);
2737      info->buffer = auto_alloc_array(machine, UINT16, info->ramsize/2);
27382738
27392739   state_save_register_item(machine, "segaic16_sp", NULL, which, info->flip);
27402740   state_save_register_item(machine, "segaic16_sp", NULL, which, info->shadow);
r4679r4680
29112911   int len = memory_region_length(machine, "gfx3");
29122912
29132913   /* allocate memory for the unpacked road data */
2914   info->gfx = auto_malloc(256 * 512);
2914   info->gfx = auto_alloc_array(machine, UINT8, 256 * 512);
29152915
29162916   /* loop over rows */
29172917   for (y = 0; y < 256; y++)
r4679r4680
31723172   int len = memory_region_length(machine, "gfx3");
31733173
31743174   /* allocate memory for the unpacked road data */
3175   info->gfx = auto_malloc((256 * 2 + 1) * 512);
3175   info->gfx = auto_alloc_array(machine, UINT8, (256 * 2 + 1) * 512);
31763176
31773177   /* loop over rows */
31783178   for (y = 0; y < 256 * 2; y++)
r4679r4680
34043404
34053405      case SEGAIC16_ROAD_OUTRUN:
34063406      case SEGAIC16_ROAD_XBOARD:
3407         info->buffer = auto_malloc(0x1000);
3407         info->buffer = auto_alloc_array(machine, UINT16, 0x1000/2);
34083408         info->draw = segaic16_road_outrun_draw;
34093409         segaic16_road_outrun_decode(machine, info);
34103410         break;
r4679r4680
35083508   }
35093509
35103510   /* allocate a buffer for swapping */
3511   info->buffer = auto_malloc(info->ramsize);
3511   info->buffer = auto_alloc_array(machine, UINT16, info->ramsize/2);
35123512
35133513   state_save_register_item(machine, "segaic16_rot", NULL, which, info->colorbase);
35143514   state_save_register_item_pointer(machine, "segaic16_rot", NULL, which, ((UINT8 *) info->buffer), info->ramsize);
src/mame/video/midzeus2.c
r4679r4680
257257
258258static TIMER_CALLBACK( int_timer_callback )
259259{
260   cpu_set_input_line(machine->cpu[0], 2, ASSERT_LINE);
260   cputag_set_input_line(machine, "maincpu", 2, ASSERT_LINE);
261261}
262262
263263
264264VIDEO_START( midzeus2 )
265265{
266266   /* allocate memory for "wave" RAM */
267   waveram[0] = auto_malloc(WAVERAM0_WIDTH * WAVERAM0_HEIGHT * 8);
268   waveram[1] = auto_malloc(WAVERAM1_WIDTH * WAVERAM1_HEIGHT * 12);
267   waveram[0] = auto_alloc_array(machine, UINT32, WAVERAM0_WIDTH * WAVERAM0_HEIGHT * 8/4);
268   waveram[1] = auto_alloc_array(machine, UINT32, WAVERAM1_WIDTH * WAVERAM1_HEIGHT * 12/4);
269269
270270   /* initialize polygon engine */
271271   poly = poly_alloc(machine, 10000, sizeof(poly_extra_data), POLYFLAG_ALLOW_QUADS);
r4679r4680
390390      if (input_code_pressed(KEYCODE_RIGHT) && width < 512) { width <<= 1; while (input_code_pressed(KEYCODE_RIGHT)) ; }
391391
392392      if (yoffs < 0) yoffs = 0;
393      base = waveram0_ptr_from_expanded_addr(yoffs << 16);
393      base = (const UINT64 *)waveram0_ptr_from_expanded_addr(yoffs << 16);
394394
395395      for (y = cliprect->min_y; y <= cliprect->max_y; y++)
396396      {
r4679r4680
498498         break;
499499   if (*tailptr == NULL)
500500   {
501      *tailptr = malloc_or_die(sizeof(reg_info));
501      *tailptr = alloc_or_die(reg_info);
502502      (*tailptr)->next = NULL;
503503      (*tailptr)->value = data;
504504      regdata_count[offset]++;
r4679r4680
742742         break;
743743   if (*tailptr == NULL)
744744   {
745      *tailptr = malloc_or_die(sizeof(reg_info));
745      *tailptr = alloc_or_die(reg_info);
746746      (*tailptr)->next = NULL;
747747      (*tailptr)->value = value;
748748      subregdata_count[which]++;
r4679r4680
12131213         clipvert[i].y += 0.0005f;
12141214   }
12151215
1216   extra = poly_get_extra_data(poly);
1216   extra = (poly_extra_data *)poly_get_extra_data(poly);
12171217   switch (texmode)
12181218   {
12191219      case 0x01d:      /* crusnexo: RHS of score bar */
r4679r4680
12721272
12731273static void render_poly_8bit(void *dest, INT32 scanline, const poly_extent *extent, const void *extradata, int threadid)
12741274{
1275   const poly_extra_data *extra = extradata;
1275   const poly_extra_data *extra = (const poly_extra_data *)extradata;
12761276   INT32 curz = extent->param[0].start;
12771277   INT32 curu = extent->param[1].start;
12781278   INT32 curv = extent->param[2].start;
src/mame/video/liberatr.c
r4679r4680
227227           many segments it will take to store the description, allocate the
228228           space for it and copy the data to it.
229229        */
230      buffer = auto_malloc(2*(128 + total_segment_count));
230      buffer = auto_alloc_array(machine, UINT8, 2*(128 + total_segment_count));
231231
232232      liberatr_planet->frames[longitude] = buffer;
233233
r4679r4680
267267
268268VIDEO_START( liberatr )
269269{
270   liberatr_videoram = auto_malloc(0x10000);
270   liberatr_videoram = auto_alloc_array(machine, UINT8, 0x10000);
271271
272272   /* allocate the planet descriptor structure */
273   liberatr_planets[0] = auto_malloc(sizeof(planet));
274   liberatr_planets[1] = auto_malloc(sizeof(planet));
273   liberatr_planets[0] = auto_alloc(machine, planet);
274   liberatr_planets[1] = auto_alloc(machine, planet);
275275
276276   /* for each planet in the planet ROMs */
277277   liberatr_init_planet(machine, liberatr_planets[0], &memory_region(machine, "gfx1")[0x2000]);
src/mame/video/bionicc.c
r4679r4680
243243
244244VIDEO_EOF( bionicc )
245245{
246   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
246   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
247247
248   buffer_spriteram16_w(space,0,0,0xffff);
248   buffer_spriteram16_w(space, 0, 0, 0xffff);
249249}
src/mame/video/psikyo.c
r4679r4680
215215                           16,16,
216216                           0x100, 0x10 );
217217
218   spritebuf1 = auto_malloc(0x2000);
219   spritebuf2 = auto_malloc(0x2000);
218   spritebuf1 = auto_alloc_array(machine, UINT32, 0x2000/4);
219   spritebuf2 = auto_alloc_array(machine, UINT32, 0x2000/4);
220220
221221      tilemap_set_scroll_rows(tilemap_0_size0,0x80*16);   // line scrolling
222222      tilemap_set_scroll_cols(tilemap_0_size0,1);
src/mame/video/pgm.c
r4679r4680
326326   tilemap_set_transparent_pen(pgm_bg_tilemap,31);
327327   tilemap_set_scroll_rows(pgm_bg_tilemap,64*32);
328328
329   tmppgmbitmap = auto_bitmap_alloc(448,224,BITMAP_FORMAT_RGB32);
329   tmppgmbitmap = auto_bitmap_alloc(machine,448,224,BITMAP_FORMAT_RGB32);
330330
331331   for (i=0; i < 0x1200/2; i++)
332332      palette_set_color(machine, i, MAKE_RGB(0, 0, 0));
333333
334   pgm_spritebufferram = auto_malloc (0xa00);
334   pgm_spritebufferram = auto_alloc_array(machine, UINT16, 0xa00/2);
335335
336336   /* we render each sprite to a bitmap then copy the bitmap to screen bitmap with zooming */
337337   /* easier this way because of the funky sprite format */
338   sprite_temp_render = auto_malloc(0x400*0x200*2);
338   sprite_temp_render = auto_alloc_array(machine, UINT16, 0x400*0x200);
339339}
340340
341341VIDEO_UPDATE( pgm )
src/mame/video/namcos21.c
r4679r4680
6464} /* winrun_gpu_videoram_r */
6565
6666static void
67AllocatePolyFrameBuffer( void )
67AllocatePolyFrameBuffer( running_machine *machine )
6868{
69   mpPolyFrameBufferZ     = auto_malloc( FRAMEBUFFER_SIZE_IN_BYTES );
70   mpPolyFrameBufferPens  = auto_malloc( FRAMEBUFFER_SIZE_IN_BYTES );
69   mpPolyFrameBufferZ     = auto_alloc_array(machine, UINT16, FRAMEBUFFER_SIZE_IN_BYTES/2 );
70   mpPolyFrameBufferPens  = auto_alloc_array(machine, UINT16, FRAMEBUFFER_SIZE_IN_BYTES/2 );
7171
72   mpPolyFrameBufferZ2    = auto_malloc( FRAMEBUFFER_SIZE_IN_BYTES );
73   mpPolyFrameBufferPens2 = auto_malloc( FRAMEBUFFER_SIZE_IN_BYTES );
72   mpPolyFrameBufferZ2    = auto_alloc_array(machine, UINT16, FRAMEBUFFER_SIZE_IN_BYTES/2 );
73   mpPolyFrameBufferPens2 = auto_alloc_array(machine, UINT16, FRAMEBUFFER_SIZE_IN_BYTES/2 );
7474
7575   namcos21_ClearPolyFrameBuffer();
7676   namcos21_ClearPolyFrameBuffer();
r4679r4680
129129{
130130   if( namcos2_gametype == NAMCOS21_WINRUN91 )
131131   {
132      videoram = auto_malloc(0x80000);
132      videoram = auto_alloc_array(machine, UINT8, 0x80000);
133133   }
134   AllocatePolyFrameBuffer();
135   namco_obj_init(
134   AllocatePolyFrameBuffer(machine);
135   namco_obj_init(machine,
136136      0,      /* gfx bank */
137137      0xf,   /* reverse palette mapping */
138138      objcode2tile );
r4679r4680
254254   double z;
255255} edge;
256256
257#define SWAP(A,B) { const void *temp = A; A = B; B = temp; }
257#define SWAP(T,A,B) { const T *temp = A; A = B; B = temp; }
258258
259259static void
260260renderscanline_flat( const edge *e1, const edge *e2, int sy, unsigned color, int depthcueenable )
261261{
262262   if( e1->x > e2->x )
263263   {
264      SWAP(e1,e2);
264      SWAP(edge,e1,e2);
265265   }
266266
267267   {
r4679r4680
335335   {
336336      if( v0->y > v1->y )
337337      {
338         SWAP(v0,v1);
338         SWAP(vertex,v0,v1);
339339      }
340340      else if( v1->y > v2->y )
341341      {
342         SWAP(v1,v2);
342         SWAP(vertex,v1,v2);
343343      }
344344      else
345345      {
src/mame/video/model3.c
r4679r4680
172172   width = video_screen_get_width(machine->primary_screen);
173173   height = video_screen_get_height(machine->primary_screen);
174174   bitmap3d = video_screen_auto_bitmap_alloc(machine->primary_screen);
175   zbuffer = auto_bitmap_alloc(width, height, BITMAP_FORMAT_INDEXED32);
175   zbuffer = auto_bitmap_alloc(machine, width, height, BITMAP_FORMAT_INDEXED32);
176176
177   m3_char_ram = auto_malloc(0x100000);
178   m3_tile_ram = auto_malloc(0x8000);
177   m3_char_ram = auto_alloc_array_clear(machine, UINT64, 0x100000/8);
178   m3_tile_ram = auto_alloc_array_clear(machine, UINT64, 0x8000/8);
179179
180   memset(m3_char_ram, 0, 0x100000);
181   memset(m3_tile_ram, 0, 0x8000);
180   pal_lookup = auto_alloc_array_clear(machine, UINT16, 65536);
182181
183   pal_lookup = auto_malloc(65536*2);
184   memset(pal_lookup, 0, 65536*2);
182   texture_fifo = auto_alloc_array_clear(machine, UINT32, 0x100000/4);
185183
186   texture_fifo = auto_malloc(0x100000);
187
188184   /* 2x 4MB texture sheets */
189   texture_ram[0] = auto_malloc(0x400000);
190   texture_ram[1] = auto_malloc(0x400000);
185   texture_ram[0] = auto_alloc_array(machine, UINT16, 0x400000/2);
186   texture_ram[1] = auto_alloc_array(machine, UINT16, 0x400000/2);
191187
192188   /* 1MB Display List RAM */
193   display_list_ram = auto_malloc(0x100000);
189   display_list_ram = auto_alloc_array_clear(machine, UINT32, 0x100000/4);
194190   /* 4MB for nodes (< Step 2.0 have only 2MB) */
195   culling_ram = auto_malloc(0x400000);
191   culling_ram = auto_alloc_array_clear(machine, UINT32, 0x400000/4);
196192   /* 4MB Polygon RAM */
197   polygon_ram = auto_malloc(0x400000);
193   polygon_ram = auto_alloc_array_clear(machine, UINT32, 0x400000/4);
198194
199   memset(display_list_ram, 0, 0x100000);
200   memset(culling_ram, 0, 0x400000);
201   memset(polygon_ram, 0, 0x400000);
202   memset(texture_fifo, 0, 0x100000);
203
204195   tick = 0;
205196   debug_layer_disable = 0;
206197   vid_reg0 = 0;
r4679r4680
583574         return tex;
584575
585576   /* create a new texture */
586   tex = malloc_or_die(sizeof(cached_texture) + (2 * pixwidth * 2 * pixheight) * sizeof(rgb_t));
577   tex = (cached_texture *)alloc_array_or_die(UINT8, sizeof(cached_texture) + (2 * pixwidth * 2 * pixheight) * sizeof(rgb_t));
587578   tex->width = texwidth;
588579   tex->height = texheight;
589580   tex->format = format;
r4679r4680
10891080
10901081static void render_one(TRIANGLE *tri)
10911082{
1092   poly_extra_data *extra = poly_get_extra_data(poly);
1083   poly_extra_data *extra = (poly_extra_data *)poly_get_extra_data(poly);
10931084   poly_draw_scanline_func callback = NULL;
10941085
10951086   tri->v[0].pz = 1.0f / tri->v[0].pz;
src/mame/video/gameplan.c
r4679r4680
7171
7272static VIDEO_UPDATE( gameplan )
7373{
74   gameplan_state *state = screen->machine->driver_data;
74   gameplan_state *state = (gameplan_state *)screen->machine->driver_data;
7575   pen_t pens[GAMEPLAN_NUM_PENS];
7676   offs_t offs;
7777
r4679r4680
9191
9292static VIDEO_UPDATE( leprechn )
9393{
94   gameplan_state *state = screen->machine->driver_data;
94   gameplan_state *state = (gameplan_state *)screen->machine->driver_data;
9595   pen_t pens[LEPRECHN_NUM_PENS];
9696   offs_t offs;
9797
r4679r4680
118118
119119static WRITE8_DEVICE_HANDLER( video_data_w )
120120{
121   gameplan_state *state = device->machine->driver_data;
121   gameplan_state *state = (gameplan_state *)device->machine->driver_data;
122122
123123   state->video_data = data;
124124}
r4679r4680
126126
127127static WRITE8_DEVICE_HANDLER( gameplan_video_command_w )
128128{
129   gameplan_state *state = device->machine->driver_data;
129   gameplan_state *state = (gameplan_state *)device->machine->driver_data;
130130
131131   state->video_command = data & 0x07;
132132}
r4679r4680
134134
135135static WRITE8_DEVICE_HANDLER( leprechn_video_command_w )
136136{
137   gameplan_state *state = device->machine->driver_data;
137   gameplan_state *state = (gameplan_state *)device->machine->driver_data;
138138
139139   state->video_command = (data >> 3) & 0x07;
140140}
r4679r4680
151151
152152static WRITE8_DEVICE_HANDLER( video_command_trigger_w )
153153{
154   gameplan_state *state = device->machine->driver_data;
154   gameplan_state *state = (gameplan_state *)device->machine->driver_data;
155155
156156   if (data == 0)
157157   {
r4679r4680
214214
215215static TIMER_CALLBACK( via_irq_delayed )
216216{
217   cpu_set_input_line(machine->cpu[0], 0, param);
217   cputag_set_input_line(machine, "maincpu", 0, param);
218218}
219219
220220
r4679r4680
266266
267267static TIMER_CALLBACK( via_0_ca1_timer_callback )
268268{
269   gameplan_state *state = machine->driver_data;
269   gameplan_state *state = (gameplan_state *)machine->driver_data;
270270   const device_config *via = devtag_get_device(machine, "via6522_0");
271271
272272   /* !VBLANK is connected to CA1 */
r4679r4680
300300
301301static VIDEO_START( common )
302302{
303   gameplan_state *state = machine->driver_data;
303   gameplan_state *state = (gameplan_state *)machine->driver_data;
304304
305305   state->videoram_size = (HBSTART - HBEND) * (VBSTART - VBEND);
306   state->videoram = auto_malloc(state->videoram_size);
306   state->videoram = auto_alloc_array(machine, UINT8, state->videoram_size);
307307
308308   create_via_0_timer(machine, state);
309309
r4679r4680
343343
344344static VIDEO_RESET( gameplan )
345345{
346   start_via_0_timer(machine, machine->driver_data);
346   start_via_0_timer(machine, (gameplan_state *)machine->driver_data);
347347}
348348
349349
src/mame/video/capbowl.c
r4679r4680
2323
2424static void generate_interrupt(running_machine *machine, int state)
2525{
26   cpu_set_input_line(machine->cpu[0], M6809_FIRQ_LINE, state);
26   cputag_set_input_line(machine, "maincpu", M6809_FIRQ_LINE, state);
2727}
2828
2929static const struct tms34061_interface tms34061intf =
src/mame/video/darius.c
r4679r4680
4242{
4343   fg_tilemap = tilemap_create(machine, get_fg_tile_info,tilemap_scan_rows,8,8,128,64);
4444
45   spritelist = auto_malloc(0x800 * sizeof(*spritelist));
45   spritelist = auto_alloc_array(machine, struct tempsprite, 0x800);
4646
4747   /* (chips, gfxnum, x_offs, y_offs, y_invert, opaque, dblwidth) */
4848   PC080SN_vh_start(machine,1,1,-16,8,0,1,1);
src/mame/video/cbasebal.c
r4679r4680
4545
4646VIDEO_START( cbasebal )
4747{
48   cbasebal_textram = auto_malloc(0x1000);
49   cbasebal_scrollram = auto_malloc(0x1000);
48   cbasebal_textram = auto_alloc_array(machine, UINT8, 0x1000);
49   cbasebal_scrollram = auto_alloc_array(machine, UINT8, 0x1000);
5050
5151   bg_tilemap = tilemap_create(machine, get_bg_tile_info,tilemap_scan_rows,   16,16,64,32);
5252   fg_tilemap = tilemap_create(machine, get_fg_tile_info,tilemap_scan_rows,8,8,64,32);
src/mame/video/beathead.c
r4679r4680
4343
4444VIDEO_START( beathead )
4545{
46   hsyncram = auto_malloc(0x800);
46   hsyncram = auto_alloc_array(machine, UINT8, 0x800);
4747}
4848
4949
r4679r4680
114114   if ((oldword & 8) && !(newword & 8) && video_screen_get_vpos(space->machine->primary_screen) != 261)
115115   {
116116      logerror("Suspending time! (scanline = %d)\n", video_screen_get_vpos(space->machine->primary_screen));
117      cpu_set_input_line(space->machine->cpu[0], INPUT_LINE_HALT, ASSERT_LINE);
117      cputag_set_input_line(space->machine, "maincpu", INPUT_LINE_HALT, ASSERT_LINE);
118118   }
119119}
120120
src/mame/video/st0016.c
r4679r4680
435435VIDEO_START( st0016 )
436436{
437437   int gfx_index=0;
438   st0016_charram=auto_malloc(ST0016_MAX_CHAR_BANK*ST0016_CHAR_BANK_SIZE);
439   st0016_spriteram=auto_malloc(ST0016_MAX_SPR_BANK*ST0016_SPR_BANK_SIZE);
440   st0016_paletteram=auto_malloc(ST0016_MAX_PAL_BANK*ST0016_PAL_BANK_SIZE);
438   st0016_charram=auto_alloc_array(machine, UINT8, ST0016_MAX_CHAR_BANK*ST0016_CHAR_BANK_SIZE);
439   st0016_spriteram=auto_alloc_array(machine, UINT8, ST0016_MAX_SPR_BANK*ST0016_SPR_BANK_SIZE);
440   st0016_paletteram=auto_alloc_array(machine, UINT8, ST0016_MAX_PAL_BANK*ST0016_PAL_BANK_SIZE);
441441
442442   /* find first empty slot to decode gfx */
443443   for (gfx_index = 0; gfx_index < MAX_GFX_ELEMENTS; gfx_index++)
r4679r4680
468468      break;
469469
470470      case 3: //super eagle shot
471         speglsht_bitmap = auto_bitmap_alloc( 512, 5122, BITMAP_FORMAT_INDEXED16 );
471         speglsht_bitmap = auto_bitmap_alloc(machine, 512, 5122, BITMAP_FORMAT_INDEXED16 );
472472      break;
473473
474474      case 4: //mayjinsen 1&2
src/mame/video/cchasm.c
r4679r4680
2323
2424static TIMER_CALLBACK( cchasm_refresh_end )
2525{
26    cpu_set_input_line (machine->cpu[0], 2, ASSERT_LINE);
26    cputag_set_input_line (machine, "maincpu", 2, ASSERT_LINE);
2727}
2828
2929static void cchasm_refresh (running_machine *machine)
r4679r4680
114114         cchasm_refresh(space->machine);
115115         break;
116116      case 0xf7:
117         cpu_set_input_line (space->machine->cpu[0], 2, CLEAR_LINE);
117         cputag_set_input_line (space->machine, "maincpu", 2, CLEAR_LINE);
118118         break;
119119      }
120120   }
src/mame/video/qix.c
r4679r4680
4343
4444static VIDEO_START( qix )
4545{
46   qix_state *state = machine->driver_data;
46   qix_state *state = (qix_state *)machine->driver_data;
4747
4848   /* allocate memory for the full video RAM */
49   state->videoram = auto_malloc(256 * 256);
49   state->videoram = auto_alloc_array(machine, UINT8, 256 * 256);
5050
5151   /* set up save states */
5252   state_save_register_global_pointer(machine, state->videoram, 256 * 256);
r4679r4680
6565
6666static MC6845_ON_DE_CHANGED( display_enable_changed )
6767{
68   qix_state *state = device->machine->driver_data;
68   qix_state *state = (qix_state *)device->machine->driver_data;
6969
7070   /* on the rising edge, latch the scanline */
7171   if (display_enabled)
r4679r4680
8888
8989WRITE8_DEVICE_HANDLER( qix_flip_screen_w )
9090{
91   qix_state *state = device->machine->driver_data;
91   qix_state *state = (qix_state *)device->machine->driver_data;
9292
9393   state->flip = data;
9494}
r4679r4680
112112
113113static READ8_HANDLER( qix_videoram_r )
114114{
115   qix_state *state = space->machine->driver_data;
115   qix_state *state = (qix_state *)space->machine->driver_data;
116116
117117   /* add in the upper bit of the address latch */
118118   offset += (state->videoram_address[0] & 0x80) << 8;
r4679r4680
122122
123123static WRITE8_HANDLER( qix_videoram_w )
124124{
125   qix_state *state = space->machine->driver_data;
125   qix_state *state = (qix_state *)space->machine->driver_data;
126126
127127   /* update the screen in case the game is writing "behind" the beam -
128128       Zookeeper likes to do this */
r4679r4680
138138
139139static WRITE8_HANDLER( slither_videoram_w )
140140{
141   qix_state *state = space->machine->driver_data;
141   qix_state *state = (qix_state *)space->machine->driver_data;
142142
143143   /* update the screen in case the game is writing "behind" the beam -
144144       Zookeeper likes to do this */
r4679r4680
170170
171171static READ8_HANDLER( qix_addresslatch_r )
172172{
173   qix_state *state = space->machine->driver_data;
173   qix_state *state = (qix_state *)space->machine->driver_data;
174174
175175   /* compute the value at the address latch */
176176   offset = (state->videoram_address[0] << 8) | state->videoram_address[1];
r4679r4680
180180
181181static WRITE8_HANDLER( qix_addresslatch_w )
182182{
183   qix_state *state = space->machine->driver_data;
183   qix_state *state = (qix_state *)space->machine->driver_data;
184184
185185   /* update the screen in case the game is writing "behind" the beam */
186186   video_screen_update_now(space->machine->primary_screen);
r4679r4680
195195
196196static WRITE8_HANDLER( slither_addresslatch_w )
197197{
198   qix_state *state = space->machine->driver_data;
198   qix_state *state = (qix_state *)space->machine->driver_data;
199199
200200   /* update the screen in case the game is writing "behind" the beam */
201201   video_screen_update_now(space->machine->primary_screen);
r4679r4680
220220
221221static WRITE8_HANDLER( qix_paletteram_w )
222222{
223   qix_state *state = space->machine->driver_data;
223   qix_state *state = (qix_state *)space->machine->driver_data;
224224
225225   UINT8 old_data = state->paletteram[offset];
226226
r4679r4680
236236
237237WRITE8_HANDLER( qix_palettebank_w )
238238{
239   qix_state *state = space->machine->driver_data;
239   qix_state *state = (qix_state *)space->machine->driver_data;
240240
241241   /* set the bank value */
242242   if (state->palette_bank != (data & 3))
r4679r4680
308308
309309static MC6845_BEGIN_UPDATE( begin_update )
310310{
311   qix_state *state = device->machine->driver_data;
311   qix_state *state = (qix_state *)device->machine->driver_data;
312312
313313#if 0
314314   // note the confusing bit order!
r4679r4680
326326
327327static MC6845_UPDATE_ROW( update_row )
328328{
329   qix_state *state = device->machine->driver_data;
329   qix_state *state = (qix_state *)device->machine->driver_data;
330330   UINT32 *dest = BITMAP_ADDR32(bitmap, y, 0);
331331   UINT16 x;
332332
src/mame/video/himesiki.c
r4679r4680
2929
3030VIDEO_START( himesiki )
3131{
32   himesiki_bg_ram = auto_malloc(0x1000);
32   himesiki_bg_ram = auto_alloc_array(machine, UINT8, 0x1000);
3333   himesiki_bg_tilemap = tilemap_create( machine, get_bg_tile_info,tilemap_scan_rows,8,8,64,32 );
3434}
3535
src/mame/video/atarirle.c
r4679r4680
135135    STATIC FUNCTION DECLARATIONS
136136***************************************************************************/
137137
138static void build_rle_tables(void);
138static void build_rle_tables(running_machine *machine);
139139static int count_objects(const UINT16 *base, int length);
140140static void prescan_rle(const atarirle_data *mo, int which);
141141static void sort_and_render(running_machine *machine, atarirle_data *mo);
r4679r4680
278278   assert_always(map >= 0 && map < ATARIRLE_MAX, "Invalid map index");
279279
280280   /* build and allocate the generic tables */
281   build_rle_tables();
281   build_rle_tables(machine);
282282
283283   /* determine the masks first */
284284   convert_mask(&desc->codemask,     &mo->codemask);
r4679r4680
326326   }
327327
328328   /* allocate the object info */
329   mo->info = auto_malloc(sizeof(mo->info[0]) * mo->objectcount);
329   mo->info = auto_alloc_array_clear(machine, atarirle_info, mo->objectcount);
330330
331331   /* fill in the data */
332   memset(mo->info, 0, sizeof(mo->info[0]) * mo->objectcount);
333332   for (i = 0; i < mo->objectcount; i++)
334333      prescan_rle(mo, i);
335334
336335   /* allocate the spriteram */
337   mo->spriteram = auto_malloc(sizeof(mo->spriteram[0]) * mo->spriteramsize);
336   mo->spriteram = auto_alloc_array_clear(machine, atarirle_entry, mo->spriteramsize);
338337
339   /* clear it to zero */
340   memset(mo->spriteram, 0, sizeof(mo->spriteram[0]) * mo->spriteramsize);
341
342338   /* allocate bitmaps */
343339   width = video_screen_get_width(machine->primary_screen);
344340   height = video_screen_get_height(machine->primary_screen);
345341
346   mo->vram[0][0] = auto_bitmap_alloc(width, height, BITMAP_FORMAT_INDEXED16);
347   mo->vram[0][1] = auto_bitmap_alloc(width, height, BITMAP_FORMAT_INDEXED16);
342   mo->vram[0][0] = auto_bitmap_alloc(machine, width, height, BITMAP_FORMAT_INDEXED16);
343   mo->vram[0][1] = auto_bitmap_alloc(machine, width, height, BITMAP_FORMAT_INDEXED16);
348344   bitmap_fill(mo->vram[0][0], NULL, 0);
349345   bitmap_fill(mo->vram[0][1], NULL, 0);
350346
351347   /* allocate alternate bitmaps if needed */
352348   if (mo->vrammask.mask != 0)
353349   {
354      mo->vram[1][0] = auto_bitmap_alloc(width, height, BITMAP_FORMAT_INDEXED16);
355      mo->vram[1][1] = auto_bitmap_alloc(width, height, BITMAP_FORMAT_INDEXED16);
350      mo->vram[1][0] = auto_bitmap_alloc(machine, width, height, BITMAP_FORMAT_INDEXED16);
351      mo->vram[1][1] = auto_bitmap_alloc(machine, width, height, BITMAP_FORMAT_INDEXED16);
356352      bitmap_fill(mo->vram[1][0], NULL, 0);
357353      bitmap_fill(mo->vram[1][1], NULL, 0);
358354   }
r4679r4680
540536    build_rle_tables: Builds internal table for RLE mapping.
541537---------------------------------------------------------------*/
542538
543static void build_rle_tables(void)
539static void build_rle_tables(running_machine *machine)
544540{
545541   UINT16 *base;
546542   int i;
547543
548544   /* allocate all 5 tables */
549   base = auto_malloc(0x500 * sizeof(UINT16));
545   base = auto_alloc_array(machine, UINT16, 0x500);
550546
551547   /* assign the tables */
552548   rle_table[0] = &base[0x000];
src/mame/video/glass.c
r4679r4680
133133{
134134   pant[0] = tilemap_create(machine, get_tile_info_glass_screen0,tilemap_scan_rows,16,16,32,32);
135135   pant[1] = tilemap_create(machine, get_tile_info_glass_screen1,tilemap_scan_rows,16,16,32,32);
136   screen_bitmap = auto_bitmap_alloc (320, 200, video_screen_get_format(machine->primary_screen));
136   screen_bitmap = auto_bitmap_alloc (machine, 320, 200, video_screen_get_format(machine->primary_screen));
137137
138138   tilemap_set_transparent_pen(pant[0],0);
139139   tilemap_set_transparent_pen(pant[1],0);
src/mame/video/mcatadv.c
r4679r4680
252252   mcatadv_tilemap2 = tilemap_create(machine, get_mcatadv_tile_info2,tilemap_scan_rows, 16, 16,32,32);
253253   tilemap_set_transparent_pen(mcatadv_tilemap2,0);
254254
255   spriteram_old = auto_malloc(spriteram_size);
256   vidregs_old = auto_malloc(0xf);
255   spriteram_old = auto_alloc_array_clear(machine, UINT16, spriteram_size/2);
256   vidregs_old = auto_alloc_array(machine, UINT16, 0xf/2);
257257
258   memset(spriteram_old,0,spriteram_size);
259
260258   palette_bank1 = 0;
261259   palette_bank2 = 0;
262260}
src/mame/video/cinemat.c
r4679r4680
8484WRITE8_HANDLER(cinemat_vector_control_w)
8585{
8686   int r, g, b, i;
87   const device_config *cpu = cputag_get_cpu(space->machine, "maincpu");
8788
8889   switch (color_mode)
8990   {
r4679r4680
9798         /* X register as the intensity */
9899         if (data != last_control && data)
99100         {
100            int xval = cpu_get_reg(space->machine->cpu[0], CCPU_X) & 0x0f;
101            int xval = cpu_get_reg(cpu, CCPU_X) & 0x0f;
101102            i = (xval + 1) * 255 / 16;
102103            vector_color = MAKE_RGB(i,i,i);
103104         }
r4679r4680
108109         /* X register as the intensity */
109110         if (data != last_control && data)
110111         {
111            int xval = cpu_get_reg(space->machine->cpu[0], CCPU_X);
112            int xval = cpu_get_reg(cpu, CCPU_X);
112113            xval = (~xval >> 2) & 0x3f;
113114            i = (xval + 1) * 255 / 64;
114115            vector_color = MAKE_RGB(i,i,i);
r4679r4680
120121         /* as 4-4-4 BGR values */
121122         if (data != last_control && data)
122123         {
123            int xval = cpu_get_reg(space->machine->cpu[0], CCPU_X);
124            int xval = cpu_get_reg(cpu, CCPU_X);
124125            r = (~xval >> 0) & 0x0f;
125126            r = r * 255 / 15;
126127            g = (~xval >> 4) & 0x0f;
r4679r4680
141142            /* on an IV instruction if data == 0 here */
142143            if (data != last_control && !data)
143144            {
144               lastx = cpu_get_reg(space->machine->cpu[0], CCPU_X);
145               lasty = cpu_get_reg(space->machine->cpu[0], CCPU_Y);
145               lastx = cpu_get_reg(cpu, CCPU_X);
146               lasty = cpu_get_reg(cpu, CCPU_Y);
146147            }
147148
148149            /* on the rising edge of the data value, latch the Y register */
149150            /* as 2-3-3 BGR values */
150151            if (data != last_control && data)
151152            {
152               int yval = cpu_get_reg(space->machine->cpu[0], CCPU_Y);
153               int yval = cpu_get_reg(cpu, CCPU_Y);
153154               r = (~yval >> 0) & 0x07;
154155               r = r * 255 / 7;
155156               g = (~yval >> 3) & 0x07;
r4679r4680
159160               vector_color = MAKE_RGB(r,g,b);
160161
161162               /* restore the original X,Y values */
162               cpu_set_reg(space->machine->cpu[0], CCPU_X, lastx);
163               cpu_set_reg(space->machine->cpu[0], CCPU_Y, lasty);
163               cpu_set_reg(cpu, CCPU_X, lastx);
164               cpu_set_reg(cpu, CCPU_Y, lasty);
164165            }
165166         }
166167         break;
r4679r4680
225226   VIDEO_UPDATE_CALL(vector);
226227   vector_clear_list();
227228
228   ccpu_wdt_timer_trigger(screen->machine->cpu[0]);
229   ccpu_wdt_timer_trigger(cputag_get_cpu(screen->machine, "maincpu"));
229230
230231   return 0;
231232}
src/mame/video/toaplan2.c
r4679r4680
458458}
459459
460460
461static void toaplan2_vram_alloc(int controller)
461static void toaplan2_vram_alloc(running_machine *machine, int controller)
462462{
463   spriteram16_new[controller] = auto_malloc(TOAPLAN2_SPRITERAM_SIZE);
464   memset(spriteram16_new[controller],0,TOAPLAN2_SPRITERAM_SIZE);
463   spriteram16_new[controller] = auto_alloc_array_clear(machine, UINT16, TOAPLAN2_SPRITERAM_SIZE/2);
464   spriteram16_now[controller] = auto_alloc_array_clear(machine, UINT16, TOAPLAN2_SPRITERAM_SIZE/2);
465   topvideoram16[controller] = auto_alloc_array_clear(machine, UINT16, TOAPLAN2_TOP_VRAM_SIZE/2);
466   fgvideoram16[controller] = auto_alloc_array_clear(machine, UINT16, TOAPLAN2_FG_VRAM_SIZE/2);
467   bgvideoram16[controller] = auto_alloc_array_clear(machine, UINT16, TOAPLAN2_BG_VRAM_SIZE/2);
465468
466   spriteram16_now[controller] = auto_malloc(TOAPLAN2_SPRITERAM_SIZE);
467   memset(spriteram16_now[controller],0,TOAPLAN2_SPRITERAM_SIZE);
468
469   topvideoram16[controller] = auto_malloc(TOAPLAN2_TOP_VRAM_SIZE);
470   memset(topvideoram16[controller],0,TOAPLAN2_TOP_VRAM_SIZE);
471
472   fgvideoram16[controller] = auto_malloc(TOAPLAN2_FG_VRAM_SIZE);
473   memset(fgvideoram16[controller],0,TOAPLAN2_FG_VRAM_SIZE);
474
475   bgvideoram16[controller] = auto_malloc(TOAPLAN2_BG_VRAM_SIZE);
476   memset(bgvideoram16[controller],0,TOAPLAN2_BG_VRAM_SIZE);
477
478469   spriteram16_n[controller] = spriteram16_now[controller];
479470}
480471
481472static void toaplan2_vh_start(running_machine *machine, int controller)
482473{
483   toaplan2_vram_alloc(controller);
474   toaplan2_vram_alloc(machine, controller);
484475
485476   if (controller == 0)
486477   {
r4679r4680
556547
557548VIDEO_START( truxton2_0 )
558549{
559   toaplan2_vram_alloc(0);
550   toaplan2_vram_alloc(machine, 0);
560551   truxton2_create_tilemaps_0(machine);
561552
562553   if (machine->gfx[2]->srcdata == NULL)
r4679r4680
586577
587578VIDEO_START( bgaregga_0 )
588579{
589   toaplan2_vram_alloc(0);
580   toaplan2_vram_alloc(machine, 0);
590581   truxton2_create_tilemaps_0(machine);
591582   tilemap_set_scrolldx(tx_tilemap, 0x1d4, 0x2a);
592583   defaultOffsets();
r4679r4680
595586
596587VIDEO_START( batrider_0 )
597588{
598   raizing_tx_gfxram16 = auto_malloc(RAIZING_TX_GFXRAM_SIZE);
599   memset(raizing_tx_gfxram16,0,RAIZING_TX_GFXRAM_SIZE);
589   raizing_tx_gfxram16 = auto_alloc_array_clear(machine, UINT16, RAIZING_TX_GFXRAM_SIZE/2);
600590   state_save_register_global_pointer(machine, raizing_tx_gfxram16, RAIZING_TX_GFXRAM_SIZE/2);
601591
602592   gfx_element_set_source(machine->gfx[2], (UINT8 *)raizing_tx_gfxram16);
603593
604   toaplan2_vram_alloc(0);
594   toaplan2_vram_alloc(machine, 0);
605595   spriteram16_n[0] = spriteram16_new[0];
606596
607597   batrider_create_tilemaps_0(machine);
r4679r4680
10221012
10231013                  if (ym && (sound_get_type(ym) == SOUND_YM3812))
10241014                  {
1025                     cpu_set_input_line(machine->cpu[1], INPUT_LINE_RESET, PULSE_LINE);
1015                     cputag_set_input_line(machine, "audiocpu", INPUT_LINE_RESET, PULSE_LINE);
10261016                     devtag_reset(machine, "ym");
10271017                  }
10281018               }
src/mame/video/wecleman.c
r4679r4680
9494
9595***************************************************************************/
9696
97static struct sprite *sprite_list_create(int num_sprites)
98{
99   struct sprite *spr_list;
100
101   spr_list = auto_malloc(num_sprites * sizeof(struct sprite));
102
103   memset(spr_list, 0, num_sprites * sizeof(struct sprite));
104
105   return spr_list;
106}
107
10897static void get_sprite_info(running_machine *machine)
10998{
11099   const pen_t *base_pal = machine->pens;
r4679r4680
924913   int i, j;
925914
926915   assert(video_screen_get_format(machine->primary_screen) == BITMAP_FORMAT_RGB32);
927   buffer = auto_malloc(0x12c00);   // working buffer for sprite operations
916   buffer = auto_alloc_array(machine, UINT8, 0x12c00);   // working buffer for sprite operations
928917
929918   gameid = 0;
930919   wecleman_gfx_bank = bank;
r4679r4680
955944      }
956945   }
957946
958   sprite_list = sprite_list_create(NUM_SPRITES);
947   sprite_list = auto_alloc_array_clear(machine, struct sprite, NUM_SPRITES);
959948
960949   bg_tilemap = tilemap_create(machine, wecleman_get_bg_tile_info,
961950                        tilemap_scan_rows,
r4679r4680
10261015
10271016   UINT8 *buffer;
10281017
1029   buffer = auto_malloc(0x400);   // reserve 1k for sprite list
1018   buffer = auto_alloc_array(machine, UINT8, 0x400);   // reserve 1k for sprite list
10301019
10311020   gameid = 1;
10321021   wecleman_gfx_bank = bank;
r4679r4680
10361025
10371026   spr_ptr_list = (struct sprite **)buffer;
10381027
1039   sprite_list = sprite_list_create(NUM_SPRITES);
1028   sprite_list = auto_alloc_array_clear(machine, struct sprite, NUM_SPRITES);
10401029
10411030   K051316_vh_start_0(machine,ZOOMROM0_MEM_REGION,4,FALSE,0,zoom_callback_0);
10421031   K051316_vh_start_1(machine,ZOOMROM1_MEM_REGION,4,FALSE,0,zoom_callback_1);
src/mame/video/pastelg.c
r4679r4680
281281   int width = video_screen_get_width(machine->primary_screen);
282282   int height = video_screen_get_height(machine->primary_screen);
283283
284   pastelg_videoram = auto_malloc(width * height * sizeof(UINT8));
285   pastelg_clut = auto_malloc(0x10 * sizeof(UINT8));
286   memset(pastelg_videoram, 0x00, (width * height * sizeof(UINT8)));
284   pastelg_videoram = auto_alloc_array_clear(machine, UINT8, width * height);
285   pastelg_clut = auto_alloc_array(machine, UINT8, 0x10);
287286}
288287
289288/******************************************************************************
src/mame/video/munchmo.c
r4679r4680
5050
5151VIDEO_START( mnchmobl )
5252{
53   tmpbitmap = auto_bitmap_alloc(512,512,video_screen_get_format(machine->primary_screen));
53   tmpbitmap = auto_bitmap_alloc(machine,512,512,video_screen_get_format(machine->primary_screen));
5454}
5555
5656static void draw_status(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect)
src/mame/video/galastrm.c
r4679r4680
4545
4646VIDEO_START( galastrm )
4747{
48   spritelist = auto_malloc(0x4000 * sizeof(*spritelist));
48   spritelist = auto_alloc_array(machine, struct tempsprite, 0x4000);
4949
5050   TC0100SCN_vh_start(machine,1,TC0100SCN_GFX_NUM,48-X_OFFSET,4-Y_OFFSET,0,0,0,0,0);
5151   TC0480SCP_vh_start(machine,TC0480SCP_GFX_NUM,0,56-X_OFFSET,-63+Y_OFFSET,0,0,0,0,0);
r4679r4680
239239
240240static void tc0610_draw_scanline(void *dest, INT32 scanline, const poly_extent *extent, const void *extradata, int threadid)
241241{
242   const poly_extra_data *extra = extradata;
243   bitmap_t *destmap = dest;
242   const poly_extra_data *extra = (const poly_extra_data *)extradata;
243   bitmap_t *destmap = (bitmap_t *)dest;
244244   UINT16 *framebuffer = BITMAP_ADDR16(destmap, scanline, 0);
245245   bitmap_t *texbase = extra->texbase;
246246   int startx = extent->startx;
r4679r4680
261261
262262static void tc0610_rotate_draw(running_machine *machine, bitmap_t *bitmap, bitmap_t *srcbitmap, const rectangle *clip)
263263{
264   poly_extra_data *extra = poly_get_extra_data(poly);
264   poly_extra_data *extra = (poly_extra_data *)poly_get_extra_data(poly);
265265   poly_draw_scanline_func callback;
266266   poly_vertex vert[4];
267267   int rsx = galastrm_tc0610_ctrl_reg[1][0];
src/mame/video/btoads.c
r4679r4680
7777   COMBINE_DATA(&misc_control);
7878
7979   /* bit 3 controls sound reset line */
80   cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_RESET, (misc_control & 8) ? CLEAR_LINE : ASSERT_LINE);
80   cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_RESET, (misc_control & 8) ? CLEAR_LINE : ASSERT_LINE);
8181}
8282
8383
src/mame/video/lastduel.c
r4679r4680
287287
288288VIDEO_EOF( lastduel )
289289{
290   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
290   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
291291
292292   /* Spriteram is always 1 frame ahead, suggesting buffering.  I can't find
293293        a register to control this so I assume it happens automatically
src/mame/video/namcos22.c
r4679r4680
276276   float du = extent->param[1].dpdx;
277277   float dv = extent->param[2].dpdx;
278278   float di = extent->param[3].dpdx;
279   bitmap_t *bitmap = dest;
280   const poly_extra_data *extra = extradata;
279   bitmap_t *bitmap = (bitmap_t *)dest;
280   const poly_extra_data *extra = (const poly_extra_data *)extradata;
281281   int bn = extra->bn * 0x1000;
282282   const pen_t *pens = extra->pens;
283283   int fogFactor = 0xff - extra->fogFactor;
r4679r4680
434434      }
435435   }
436436
437   extra = poly_get_extra_data(poly);
437   extra = (poly_extra_data *)poly_get_extra_data(poly);
438438
439439   extra->pens = &machine->pens[(color&0x7f)<<8];
440440   extra->bn = textureBank;
r4679r4680
488488   int x_index = extent->param[0].start * 65536.0f;
489489   int y_index = extent->param[1].start * 65536.0f;
490490   int dx = extent->param[0].dpdx * 65536.0f;
491   const poly_extra_data *extra = extradata;
492   bitmap_t *destmap = destbase;
491   const poly_extra_data *extra = (const poly_extra_data *)extradata;
492   bitmap_t *destmap = (bitmap_t *)destbase;
493493   const pen_t *pal = extra->pens;
494494   int prioverchar = extra->prioverchar;
495495   int z = extra->z;
r4679r4680
591591      vert[3].p[0] = flipx ? fwidth : 0;
592592      vert[3].p[1] = flipy ? 0 : fheight;
593593
594      extra = poly_get_extra_data(poly);
594      extra = (poly_extra_data *)poly_get_extra_data(poly);
595595      extra->z = z;
596596      extra->alpha = alpha;
597597      extra->prioverchar = prioverchar;
r4679r4680
826826} /* FreeSceneNode */
827827
828828static struct SceneNode *
829MallocSceneNode( void )
829MallocSceneNode( running_machine *machine )
830830{
831831   struct SceneNode *node = mpFreeSceneNode;
832832   if( node )
r4679r4680
836836   else
837837   {
838838#define SCENE_NODE_POOL_SIZE 64
839      struct SceneNode *pSceneNodePool = auto_malloc(sizeof(struct SceneNode)*SCENE_NODE_POOL_SIZE);
839      struct SceneNode *pSceneNodePool = auto_alloc_array(machine, struct SceneNode, SCENE_NODE_POOL_SIZE);
840840      {
841841         int i;
842842         for( i=0; i<SCENE_NODE_POOL_SIZE; i++ )
843843         {
844844            FreeSceneNode( &pSceneNodePool[i] );
845845         }
846         return MallocSceneNode();
846         return MallocSceneNode(machine);
847847      }
848848   }
849849   memset( node, 0, sizeof(*node) );
r4679r4680
851851} /* MallocSceneNode */
852852
853853static struct SceneNode *
854NewSceneNode( UINT32 zsortvalue24, SceneNodeType type )
854NewSceneNode( running_machine *machine, UINT32 zsortvalue24, SceneNodeType type )
855855{
856856   struct SceneNode *node = &mSceneRoot;
857857   int i;
r4679r4680
861861      struct SceneNode *next = node->data.nonleaf.next[hash];
862862      if( !next )
863863      { /* lazily allocate tree node for this radix */
864         next = MallocSceneNode();
864         next = MallocSceneNode(machine);
865865         next->type = eSCENENODE_NONLEAF;
866866         node->data.nonleaf.next[hash] = next;
867867      }
r4679r4680
876876   }
877877   else
878878   {
879      struct SceneNode *leaf = MallocSceneNode();
879      struct SceneNode *leaf = MallocSceneNode(machine);
880880      leaf->type = type;
881881#if 0
882882      leaf->nextInBucket = node->nextInBucket;
r4679r4680
11251125} /* PatchTexture */
11261126
11271127void
1128namcos22_draw_direct_poly( const UINT16 *pSource )
1128namcos22_draw_direct_poly( running_machine *machine, const UINT16 *pSource )
11291129{
11301130   /**
11311131    * word#0:
r4679r4680
11531153     *    --xx xxxx // zpos
11541154     */
11551155   INT32 zsortvalue24 = ((pSource[1]&0xfff)<<12)|(pSource[0]&0xfff);
1156   struct SceneNode *node = NewSceneNode(zsortvalue24,eSCENENODE_QUAD3D);
1156   struct SceneNode *node = NewSceneNode(machine, zsortvalue24,eSCENENODE_QUAD3D);
11571157   int i;
11581158   node->data.quad3d.flags = ((pSource[3]&0x7f00)*2)|(pSource[3]&3);
11591159   node->data.quad3d.cmode = (pSource[2]&0x00f0)>>4;
r4679r4680
12161216} /* namcos22_draw_direct_poly */
12171217
12181218static void
1219Prepare3dTexture( void *pTilemapROM, void *pTextureROM )
1219Prepare3dTexture( running_machine *machine, void *pTilemapROM, void *pTextureROM )
12201220{
12211221    int i;
12221222    assert( pTilemapROM && pTextureROM );
12231223    { /* following setup is Namco System 22 specific */
12241224         const UINT8 *pPackedTileAttr = 0x200000 + (UINT8 *)pTilemapROM;
1225         UINT8 *pUnpackedTileAttr = auto_malloc(0x080000*2);
1225         UINT8 *pUnpackedTileAttr = auto_alloc_array(machine, UINT8, 0x080000*2);
12261226         {
12271227             InitXYAttrToPixel();
12281228            mpTextureTileMapAttr = pUnpackedTileAttr;
r4679r4680
12321232               *pUnpackedTileAttr++ = (*pPackedTileAttr)&0xf;
12331233               pPackedTileAttr++;
12341234         }
1235         mpTextureTileMap16 = pTilemapROM;
1236         mpTextureTileData = pTextureROM;
1235         mpTextureTileMap16 = (UINT16 *)pTilemapROM;
1236         mpTextureTileData = (UINT8 *)pTextureROM;
12371237         PatchTexture();
12381238      }
12391239   }
r4679r4680
12411241
12421242static void
12431243DrawSpritesHelper(
1244   running_machine *machine,
12441245   bitmap_t *bitmap,
12451246   const rectangle *cliprect,
12461247   const UINT32 *pSource,
r4679r4680
13121313         }
13131314
13141315         {
1315            struct SceneNode *node = NewSceneNode(zcoord,eSCENENODE_SPRITE);
1316            struct SceneNode *node = NewSceneNode(machine, zcoord,eSCENENODE_SPRITE);
13161317            node->data.sprite.tile = tile;
13171318            node->data.sprite.pri = cz&0x80;
13181319            //              node->data.sprite.pri = (color&0x80);
r4679r4680
13361337} /* DrawSpritesHelper */
13371338
13381339static void
1339DrawSprites( bitmap_t *bitmap, const rectangle *cliprect )
1340DrawSprites( running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect )
13401341{
13411342/*
13421343// time crisis:
r4679r4680
14221423
14231424   if( enable==6 /*&& namcos22_gametype!=NAMCOS22_AIR_COMBAT22*/ )
14241425   {
1425      DrawSpritesHelper( bitmap, cliprect, pSource, pPal, num_sprites, deltax, deltay );
1426      DrawSpritesHelper( machine, bitmap, cliprect, pSource, pPal, num_sprites, deltax, deltay );
14261427   }
14271428
14281429   /* VICS RAM provides two additional banks */
r4679r4680
14451446   {
14461447      pSource = &namcos22_vics_data[(namcos22_vics_control[0x48/4]&0xffff)/4];
14471448      pPal    = &namcos22_vics_data[(namcos22_vics_control[0x58/4]&0xffff)/4];
1448      DrawSpritesHelper( bitmap, cliprect, pSource, pPal, num_sprites, deltax, deltay );
1449      DrawSpritesHelper( machine, bitmap, cliprect, pSource, pPal, num_sprites, deltax, deltay );
14491450   }
14501451
14511452   num_sprites = (namcos22_vics_control[0x60/4]&0xffff)/0x10;
r4679r4680
14531454   {
14541455      pSource = &namcos22_vics_data[(namcos22_vics_control[0x68/4]&0xffff)/4];
14551456      pPal    = &namcos22_vics_data[(namcos22_vics_control[0x78/4]&0xffff)/4];
1456      DrawSpritesHelper( bitmap, cliprect, pSource, pPal, num_sprites, deltax, deltay );
1457      DrawSpritesHelper( machine, bitmap, cliprect, pSource, pPal, num_sprites, deltax, deltay );
14571458   }
14581459} /* DrawSprites */
14591460
r4679r4680
16131614 */
16141615static void
16151616BlitQuadHelper(
1617      running_machine *machine,
16161618      bitmap_t *bitmap,
16171619      unsigned color,
16181620      unsigned addr,
r4679r4680
17291731   zsortvalue24 |= (absolutePriority<<21);
17301732
17311733   {
1732      struct SceneNode *node = NewSceneNode(zsortvalue24,eSCENENODE_QUAD3D);
1734      struct SceneNode *node = NewSceneNode(machine, zsortvalue24,eSCENENODE_QUAD3D);
17331735      node->data.quad3d.cmode = (v[0].u>>12)&0xf;
17341736      node->data.quad3d.textureBank = (v[0].v>>12)&0xf;
17351737      node->data.quad3d.color = (color>>8)&0xff;
r4679r4680
17791781} /* RegisterNormals */
17801782
17811783static void
1782BlitQuads( bitmap_t *bitmap, INT32 addr, float m[4][4], INT32 base )
1784BlitQuads( running_machine *machine, bitmap_t *bitmap, INT32 addr, float m[4][4], INT32 base )
17831785{
17841786   int numAdditionalNormals = 0;
17851787   int chunkLength = GetPolyData(addr++);
r4679r4680
18331835            flags = GetPolyData(addr+1);
18341836            color = GetPolyData(addr+2);
18351837            bias = 0;
1836            BlitQuadHelper( bitmap,color,addr+3,m,bias,flags,packetFormat );
1838            BlitQuadHelper( machine,bitmap,color,addr+3,m,bias,flags,packetFormat );
18371839            break;
18381840
18391841         case 0x18:
r4679r4680
18461848            flags = GetPolyData(addr+1);
18471849            color = GetPolyData(addr+2);
18481850            bias  = GetPolyData(addr+3);
1849            BlitQuadHelper( bitmap,color,addr+4,m,bias,flags,packetFormat );
1851            BlitQuadHelper( machine,bitmap,color,addr+4,m,bias,flags,packetFormat );
18501852            break;
18511853
18521854         case 0x10: /* vertex lighting */
r4679r4680
18841886} /* BlitQuads */
18851887
18861888static void
1887BlitPolyObject( bitmap_t *bitmap, int code, float M[4][4] )
1889BlitPolyObject( running_machine *machine, bitmap_t *bitmap, int code, float M[4][4] )
18881890{
18891891   unsigned addr1 = GetPolyData(code);
18901892   mLitSurfaceCount = 0;
r4679r4680
18941896      INT32 addr2 = GetPolyData(addr1++);
18951897      if( addr2<0 )
18961898         break;
1897      BlitQuads( bitmap, addr2, M, code );
1899      BlitQuads( machine, bitmap, addr2, M, code );
18981900   }
18991901} /* BlitPolyObject */
19001902
r4679r4680
20022004} /* HandleBB0003 */
20032005
20042006static void
2005Handle200002( bitmap_t *bitmap, const INT32 *pSource )
2007Handle200002( running_machine *machine, bitmap_t *bitmap, const INT32 *pSource )
20062008{
20072009   if( mPrimitiveID>=0x45 )
20082010   {
r4679r4680
20272029      m[3][2] = pSource[0xc]; /* zpos */
20282030
20292031      matrix3d_Multiply( m, mViewMatrix );
2030      BlitPolyObject( bitmap, mPrimitiveID, m );
2032      BlitPolyObject( machine, bitmap, mPrimitiveID, m );
20312033   }
20322034   else if( mPrimitiveID !=0 && mPrimitiveID !=2 )
20332035   {
r4679r4680
20682070} /* Handle233002 */
20692071
20702072static void
2071SimulateSlaveDSP( bitmap_t *bitmap )
2073SimulateSlaveDSP( running_machine *machine, bitmap_t *bitmap )
20722074{
20732075   const INT32 *pSource = 0x300 + (INT32 *)namcos22_polygonram;
20742076   INT16 len;
r4679r4680
21052107         break;
21062108
21072109      case 0x0d:
2108         Handle200002( bitmap, pSource ); /* render primitive */
2110         Handle200002( machine, bitmap, pSource ); /* render primitive */
21092111         break;
21102112
21112113      default:
r4679r4680
21332135} /* SimulateSlaveDSP */
21342136
21352137static void
2136DrawPolygons( bitmap_t *bitmap )
2138DrawPolygons( running_machine *machine, bitmap_t *bitmap )
21372139{
21382140   if( mbDSPisActive )
21392141   {
2140      SimulateSlaveDSP( bitmap );
2142      SimulateSlaveDSP( machine, bitmap );
21412143      poly_wait(poly, "DrawPolygons");
21422144   }
21432145} /* DrawPolygons */
r4679r4680
22052207
22062208   for (code = 0; code < machine->gfx[GFX_TEXTURE_TILE]->total_elements; code++)
22072209      gfx_element_decode(machine->gfx[GFX_TEXTURE_TILE], code);
2208   Prepare3dTexture(memory_region(machine, "textilemap"), machine->gfx[GFX_TEXTURE_TILE]->gfxdata );
2209   dirtypal = auto_malloc(NAMCOS22_PALETTE_SIZE/4);
2210   Prepare3dTexture(machine, memory_region(machine, "textilemap"), machine->gfx[GFX_TEXTURE_TILE]->gfxdata );
2211   dirtypal = auto_alloc_array(machine, UINT8, NAMCOS22_PALETTE_SIZE/4);
22102212   mPtRomSize = memory_region_length(machine, "pointrom")/3;
22112213   mpPolyL = memory_region(machine, "pointrom");
22122214   mpPolyM = mpPolyL + mPtRomSize;
r4679r4680
22322234VIDEO_START( namcos22s )
22332235{
22342236   mbSuperSystem22 = 1;
2235   namcos22_czram[0] = auto_malloc( 0x200 );
2236   namcos22_czram[1] = auto_malloc( 0x200 );
2237   namcos22_czram[2] = auto_malloc( 0x200 );
2238   namcos22_czram[3] = auto_malloc( 0x200 );
2237   namcos22_czram[0] = auto_alloc_array(machine, UINT16, 0x200/2 );
2238   namcos22_czram[1] = auto_alloc_array(machine, UINT16, 0x200/2 );
2239   namcos22_czram[2] = auto_alloc_array(machine, UINT16, 0x200/2 );
2240   namcos22_czram[3] = auto_alloc_array(machine, UINT16, 0x200/2 );
22392241   VIDEO_START_CALL(common);
22402242}
22412243
r4679r4680
22472249   bitmap_fill( bitmap, cliprect , bgColor);
22482250   UpdatePaletteS(screen->machine);
22492251   DrawCharacterLayer(screen->machine, bitmap, cliprect );
2250   DrawPolygons( bitmap );
2251   DrawSprites( bitmap, cliprect );
2252   DrawPolygons( screen->machine, bitmap );
2253   DrawSprites( screen->machine, bitmap, cliprect );
22522254   RenderScene(screen->machine, bitmap );
22532255   DrawTranslucentCharacters( bitmap, cliprect );
22542256   ApplyGamma( screen->machine, bitmap );
r4679r4680
22592261      FILE *f = fopen( "dump.txt", "wb" );
22602262      if( f )
22612263      {
2262         const address_space *space = cpu_get_address_space(screen->machine->cpu[0], ADDRESS_SPACE_PROGRAM);
2264         const address_space *space = cputag_get_address_space(screen->machine, "maincpu", ADDRESS_SPACE_PROGRAM);
22632265
22642266         {
22652267            int i,bank;
r4679r4680
22982300   bitmap_fill( bitmap, cliprect , get_black_pen(screen->machine));
22992301   UpdatePalette(screen->machine);
23002302   DrawCharacterLayer(screen->machine, bitmap, cliprect );
2301   DrawPolygons( bitmap );
2303   DrawPolygons( screen->machine, bitmap );
23022304   RenderScene(screen->machine, bitmap);
23032305   DrawTranslucentCharacters( bitmap, cliprect );
23042306   ApplyGamma( screen->machine, bitmap );
r4679r4680
23092311      FILE *f = fopen( "dump.txt", "wb" );
23102312      if( f )
23112313      {
2312         const address_space *space = cpu_get_address_space(screen->machine->cpu[0], ADDRESS_SPACE_PROGRAM);
2314         const address_space *space = cputag_get_address_space(screen->machine, "maincpu", ADDRESS_SPACE_PROGRAM);
23132315
23142316//         Dump(space, f,0x90000000, 0x90000003, "led?" );
23152317//         Dump(space, f,0x90010000, 0x90017fff, "cz_ram");
src/mame/video/galaxold.c
r4679r4680
924924   dambustr_tmpbitmap = video_screen_auto_bitmap_alloc(machine->primary_screen);
925925
926926   /* make a copy of the tilemap to emulate background priority */
927   dambustr_videoram2 = auto_malloc(0x0400);
927   dambustr_videoram2 = auto_alloc_array(machine, UINT8, 0x0400);
928928   dambustr_tilemap2 = tilemap_create(machine, dambustr_get_tile_info2,tilemap_scan_rows,8,8,32,32);
929929
930930   tilemap_set_transparent_pen(dambustr_tilemap2,0);
src/mame/video/atarisy1.c
r4679r4680
248248   /* sound CPU reset */
249249   if (diff & 0x0080)
250250   {
251      cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_RESET, (newselect & 0x0080) ? CLEAR_LINE : ASSERT_LINE);
251      cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_RESET, (newselect & 0x0080) ? CLEAR_LINE : ASSERT_LINE);
252252      if (!(newselect & 0x0080)) atarigen_sound_reset(space->machine);
253253   }
254254
r4679r4680
405405
406406static TIMER_CALLBACK( int3off_callback )
407407{
408   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
408   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
409409
410410   /* clear the state */
411411   atarigen_scanline_int_ack_w(space, 0, 0, 0xffff);
r4679r4680
417417   int scanline = param;
418418
419419   /* update the state */
420   atarigen_scanline_int_gen(machine->cpu[0]);
420   atarigen_scanline_int_gen(cputag_get_cpu(machine, "maincpu"));
421421
422422   /* set a timer to turn it off */
423423   timer_adjust_oneshot(int3off_timer, video_screen_get_scan_period(machine->primary_screen), 0);
src/mame/video/dec0.c
r4679r4680
712712VIDEO_START( dec0 )
713713{
714714   VIDEO_START_CALL(dec0_nodma);
715   dec0_spriteram=auto_malloc(0x800);
715   dec0_spriteram=auto_alloc_array(machine, UINT16, 0x800/2);
716716}
717717
718718/******************************************************************************/
src/mame/video/ssv.c
r4679r4680
202202{
203203   VIDEO_START_CALL(ssv);
204204
205   eaglshot_gfxram      =   (UINT16*)auto_malloc(16 * 0x40000);
205   eaglshot_gfxram      =   auto_alloc_array(machine, UINT16, 16 * 0x40000 / 2);
206206
207207   gfx_element_set_source(machine->gfx[0], (UINT8 *)eaglshot_gfxram);
208208   gfx_element_set_source(machine->gfx[1], (UINT8 *)eaglshot_gfxram);
r4679r4680
226226{
227227   VIDEO_START_CALL(ssv);
228228
229   eaglshot_gfxram      =   (UINT16*)auto_malloc(4 * 0x100000);
229   eaglshot_gfxram      =   auto_alloc_array(machine, UINT16, 4 * 0x100000 / 2);
230230
231231   machine->gfx[2]->color_granularity = 64; /* 256 colour sprites with palette selectable on 64 colour boundaries */
232232   gfx_element_set_source(machine->gfx[2], (UINT8 *)eaglshot_gfxram);
src/mame/video/tceptor.c
r4679r4680
263263   int len = 0x8000;
264264   int i;
265265
266   buffer = malloc_or_die(len);
266   buffer = alloc_array_or_die(UINT8, len);
267267
268268   /* expand rom tc2-19.10d */
269269   for (i = 0; i < len / 2; i++)
r4679r4680
282282static void decode_sprite(running_machine *machine, int gfx_index, const gfx_layout *layout, const void *data)
283283{
284284   /* decode the graphics */
285   machine->gfx[gfx_index] = gfx_element_alloc(machine, layout, data, 64, 1024);
285   machine->gfx[gfx_index] = gfx_element_alloc(machine, layout, (const UINT8 *)data, 64, 1024);
286286}
287287
288288// fix sprite order
r4679r4680
310310   UINT8 *dst;
311311   int i, y;
312312
313   dst = auto_malloc(len);
313   dst = auto_alloc_array(machine, UINT8, len);
314314
315315   for (i = 0; i < len / (4*4*16); i++)
316316      for (y = 0; y < 16; y++)
r4679r4680
363363   UINT8 *dst;
364364   int i;
365365
366   dst = auto_malloc(len);
366   dst = auto_alloc_array(machine, UINT8, len);
367367
368368   memset(dst, 0, len);
369369
r4679r4680
385385{
386386   int gfx_index;
387387
388   tceptor_sprite_ram_buffered = auto_malloc(0x200);
389   memset(tceptor_sprite_ram_buffered, 0, 0x200);
388   tceptor_sprite_ram_buffered = auto_alloc_array_clear(machine, UINT16, 0x200/2);
390389
391390   /* find first empty slot to decode gfx */
392391   for (gfx_index = 0; gfx_index < MAX_GFX_ELEMENTS; gfx_index++)
src/mame/video/vindictr.c
r4679r4680
191191            break;
192192
193193         case 6:      /* /VIRQ */
194            atarigen_scanline_int_gen(screen->machine->cpu[0]);
194            atarigen_scanline_int_gen(cputag_get_cpu(screen->machine, "maincpu"));
195195            break;
196196
197197         case 7:      /* /PFVS */
src/mame/video/metro.c
r4679r4680
390390static int metro_sprite_xoffs, metro_sprite_yoffs;
391391
392392
393static void alloc_empty_tiles(void)
393static void alloc_empty_tiles(running_machine *machine)
394394{
395395   int code,i;
396396
397   empty_tiles = auto_malloc(16*16*16);
397   empty_tiles = auto_alloc_array(machine, UINT8, 16*16*16);
398398
399399   for (code = 0;code < 0x10;code++)
400400      for (i = 0;i < 16*16;i++)
r4679r4680
407407   support_16x16 = 0;
408408   has_zoom = 0;
409409
410   alloc_empty_tiles();
411   metro_tiletable_old = auto_malloc(metro_tiletable_size);
412   dirtyindex = auto_malloc(metro_tiletable_size/4);
410   alloc_empty_tiles(machine);
411   metro_tiletable_old = auto_alloc_array(machine, UINT16, metro_tiletable_size/2);
412   dirtyindex = auto_alloc_array(machine, UINT8, metro_tiletable_size/4);
413413
414414   bg_tilemap[0] = tilemap_create(machine, get_tile_info_0,tilemap_scan_rows,8,8,WIN_NX,WIN_NY);
415415   bg_tilemap[1] = tilemap_create(machine, get_tile_info_1,tilemap_scan_rows,8,8,WIN_NX,WIN_NY);
r4679r4680
436436   support_16x16 = 0;
437437   has_zoom = 0;
438438
439   alloc_empty_tiles();
440   metro_tiletable_old = auto_malloc(metro_tiletable_size);
441   dirtyindex = auto_malloc(metro_tiletable_size/4);
439   alloc_empty_tiles(machine);
440   metro_tiletable_old = auto_alloc_array(machine, UINT16, metro_tiletable_size/2);
441   dirtyindex = auto_alloc_array(machine, UINT8, metro_tiletable_size/4);
442442
443443   bg_tilemap[0] = tilemap_create(machine, get_tile_info_0_8bit,tilemap_scan_rows,8,8,WIN_NX,WIN_NY);
444444   bg_tilemap[1] = tilemap_create(machine, get_tile_info_1_8bit,tilemap_scan_rows,8,8,WIN_NX,WIN_NY);
r4679r4680
468468   support_16x16 = 1;
469469   has_zoom = 0;
470470
471   alloc_empty_tiles();
472   metro_tiletable_old = auto_malloc(metro_tiletable_size);
473   dirtyindex = auto_malloc(metro_tiletable_size/4);
471   alloc_empty_tiles(machine);
472   metro_tiletable_old = auto_alloc_array(machine, UINT16, metro_tiletable_size/2);
473   dirtyindex = auto_alloc_array(machine, UINT8, metro_tiletable_size/4);
474474
475475   bg_tilemap[0] = tilemap_create(machine, get_tile_info_0_8bit,tilemap_scan_rows,8,8,WIN_NX,WIN_NY);
476476   bg_tilemap[1] = tilemap_create(machine, get_tile_info_1_8bit,tilemap_scan_rows,8,8,WIN_NX,WIN_NY);
src/mame/video/midvunit.c
r4679r4680
5959
6060   if (scanline != -1)
6161   {
62      cpu_set_input_line(machine->cpu[0], 0, ASSERT_LINE);
62      cputag_set_input_line(machine, "maincpu", 0, ASSERT_LINE);
6363      timer_adjust_oneshot(scanline_timer, video_screen_get_time_until_pos(machine->primary_screen, scanline + 1, 0), scanline);
6464      timer_set(machine, ATTOTIME_IN_HZ(25000000), NULL, -1, scanline_timer_cb);
6565   }
6666   else
67      cpu_set_input_line(machine->cpu[0], 0, CLEAR_LINE);
67      cputag_set_input_line(machine, "maincpu", 0, CLEAR_LINE);
6868}
6969
7070
r4679r4680
9797
9898static void render_flat(void *destbase, INT32 scanline, const poly_extent *extent, const void *extradata, int threadid)
9999{
100   const poly_extra_data *extra = extradata;
100   const poly_extra_data *extra = (const poly_extra_data *)extradata;
101101   UINT16 pixdata = extra->pixdata;
102102   int xstep = extra->dither + 1;
103103   UINT16 *dest = (UINT16 *)destbase + scanline * 512;
r4679r4680
129129
130130static void render_tex(void *destbase, INT32 scanline, const poly_extent *extent, const void *extradata, int threadid)
131131{
132   const poly_extra_data *extra = extradata;
132   const poly_extra_data *extra = (const poly_extra_data *)extradata;
133133   UINT16 pixdata = extra->pixdata & 0xff00;
134134   const UINT8 *texbase = extra->texbase;
135135   int xstep = extra->dither + 1;
r4679r4680
167167
168168static void render_textrans(void *destbase, INT32 scanline, const poly_extent *extent, const void *extradata, int threadid)
169169{
170   const poly_extra_data *extra = extradata;
170   const poly_extra_data *extra = (const poly_extra_data *)extradata;
171171   UINT16 pixdata = extra->pixdata & 0xff00;
172172   const UINT8 *texbase = extra->texbase;
173173   int xstep = extra->dither + 1;
r4679r4680
207207
208208static void render_textransmask(void *destbase, INT32 scanline, const poly_extent *extent, const void *extradata, int threadid)
209209{
210   const poly_extra_data *extra = extradata;
210   const poly_extra_data *extra = (const poly_extra_data *)extradata;
211211   UINT16 pixdata = extra->pixdata;
212212   const UINT8 *texbase = extra->texbase;
213213   int xstep = extra->dither + 1;
r4679r4680
302302
303303static void process_dma_queue(running_machine *machine)
304304{
305   poly_extra_data *extra = poly_get_extra_data(poly);
305   poly_extra_data *extra = (poly_extra_data *)poly_get_extra_data(poly);
306306   UINT16 *dest = &midvunit_videoram[(page_control & 4) ? 0x40000 : 0x00000];
307307   int textured = ((dma_data[0] & 0x300) == 0x100);
308308   poly_draw_scanline_func callback;
src/mame/video/suna16.c
r4679r4680
9292
9393VIDEO_START( suna16 )
9494{
95   paletteram16 = auto_malloc( machine->config->total_colors * sizeof(UINT16) );
95   paletteram16 = auto_alloc_array(machine, UINT16, machine->config->total_colors);
9696}
9797
9898READ16_HANDLER( suna16_paletteram16_r )
src/mame/video/shadfrce.c
r4679r4680
7575
7676   shadfrce_bg1tilemap = tilemap_create(machine, get_shadfrce_bg1tile_info,tilemap_scan_rows, 16, 16,32,32);
7777
78   shadfrce_spvideoram_old = auto_malloc(spriteram_size);
78   shadfrce_spvideoram_old = auto_alloc_array(machine, UINT16, spriteram_size/2);
7979}
8080
8181WRITE16_HANDLER ( shadfrce_bg0scrollx_w )
src/mame/video/attckufo.c
r4679r4680
136136
137137VIDEO_UPDATE( attckufo )
138138{
139   const address_space *space = cpu_get_address_space(screen->machine->cpu[0], ADDRESS_SPACE_PROGRAM);
139   const address_space *space = cputag_get_address_space(screen->machine, "maincpu", ADDRESS_SPACE_PROGRAM);
140140   int x, y, yy;
141141
142142   for (y = cliprect->min_y & ~7; y <= cliprect->max_y; y += 8)
src/mame/video/eolith.c
r4679r4680
3030
3131VIDEO_START( eolith )
3232{
33   vram = auto_malloc(0x40000*2);
33   vram = auto_alloc_array(machine, UINT32, 0x40000*2/4);
3434}
3535
3636VIDEO_UPDATE( eolith )
src/mame/video/gtia.c
r4679r4680
154154static void gtia_reset(running_machine *machine)
155155{
156156   int i;
157   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
157   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
158158
159159   /* reset the GTIA read/write/helper registers */
160160   for (i = 0; i < 32; i++)
src/mame/video/bigevglf.c
r4679r4680
6666   tmp_bitmap[1] = video_screen_auto_bitmap_alloc(machine->primary_screen);
6767   tmp_bitmap[2] = video_screen_auto_bitmap_alloc(machine->primary_screen);
6868   tmp_bitmap[3] = video_screen_auto_bitmap_alloc(machine->primary_screen);
69   vidram = auto_malloc(0x100*0x100 * 4);
69   vidram = auto_alloc_array(machine, UINT8, 0x100*0x100 * 4);
7070}
7171
7272static void draw_sprites(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect)
src/mame/video/commando.c
r4679r4680
5959   coin_counter_w(1, data & 0x02);
6060
6161   // bit 4 resets the sound CPU
62   cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_RESET, (data & 0x10) ? ASSERT_LINE : CLEAR_LINE);
62   cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_RESET, (data & 0x10) ? ASSERT_LINE : CLEAR_LINE);
6363
6464   // bit 7 flips screen
6565   flip_screen_set(space->machine, data & 0x80);
r4679r4680
136136
137137VIDEO_EOF( commando )
138138{
139   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
139   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
140140
141141   buffer_spriteram_w(space, 0, 0);
142142}
src/mame/video/atarisy2.c
r4679r4680
116116   };
117117
118118   /* allocate banked memory */
119   vram = auto_malloc(0x8000);
119   vram = auto_alloc_array(machine, UINT16, 0x8000/2);
120120   memset(vram, 0, 0x8000);
121121   atarigen_alpha = &vram[0x0000];
122122   atarimo_0_spriteram = &vram[0x0c00];
src/mame/video/ninjakd2.c
r4679r4680
55UINT8* ninjakd2_fg_videoram;
66
77static int next_sprite_overdraw_enabled;
8static int stencil_palette;
8static int (*stencil_compare_function) (UINT16 pal);
99static int sprites_updated;
1010static bitmap_t *sp_bitmap;
1111// in robokid and omegaf big sprites are laid out differently in ROM
r4679r4680
2525static UINT8* robokid_bg1_videoram;
2626static UINT8* robokid_bg2_videoram;
2727
28#define TRANSPARENTCODE (15)
2829
2930/*************************************
3031 *
r4679r4680
126127 *
127128 *************************************/
128129
129static void videoram_alloc(const running_machine* const machine, int const size)
130static void videoram_alloc(running_machine* const machine, int const size)
130131{
131132   if (size)
132133   {
133134      /* create video ram */
134      robokid_bg0_videoram = auto_malloc(size);
135      memset(robokid_bg0_videoram, 0x00, size);
136
137      robokid_bg1_videoram = auto_malloc(size);
138      memset(robokid_bg1_videoram, 0x00, size);
139
140      robokid_bg2_videoram = auto_malloc(size);
141      memset(robokid_bg2_videoram, 0x00, size);
135      robokid_bg0_videoram = auto_alloc_array_clear(machine, UINT8, size);
136      robokid_bg1_videoram = auto_alloc_array_clear(machine, UINT8, size);
137      robokid_bg2_videoram = auto_alloc_array_clear(machine, UINT8, size);
142138   }
143139
144140   sp_bitmap = video_screen_auto_bitmap_alloc(machine->primary_screen);
145141}
146142
143static int stencil_ninjakd2( UINT16 pal );
144static int stencil_mnight(   UINT16 pal );
145static int stencil_arkarea(  UINT16 pal );
146static int stencil_robokid(  UINT16 pal );
147static int stencil_omegaf(   UINT16 pal );
148
147149VIDEO_START( ninjakd2 )
148150{
149151   videoram_alloc(machine, 0);
r4679r4680
151153   fg_tilemap = tilemap_create(         machine, get_fg_tile_info, tilemap_scan_rows,   8,  8, 32, 32);
152154   bg_tilemap = tilemap_create(machine, ninjakd2_get_bg_tile_info, tilemap_scan_rows,  16, 16, 32, 32);
153155
154   tilemap_set_transparent_pen(fg_tilemap, 15);
156   tilemap_set_transparent_pen(fg_tilemap, TRANSPARENTCODE);
155157
156158   robokid_sprites = 0;
157   stencil_palette = 0xf0;  // stencil palette when overdraw mode = 0xf (watched bit 7-4)
159   stencil_compare_function = stencil_ninjakd2 ;
158160}
159161
160162VIDEO_START( mnight )
r4679r4680
164166   fg_tilemap = tilemap_create(       machine, get_fg_tile_info, tilemap_scan_rows,   8,  8, 32, 32);
165167   bg_tilemap = tilemap_create(machine, mnight_get_bg_tile_info, tilemap_scan_rows,  16, 16, 32, 32);
166168
167   tilemap_set_transparent_pen(fg_tilemap, 15);
169   tilemap_set_transparent_pen(fg_tilemap, TRANSPARENTCODE);
168170
169171   robokid_sprites = 0;
170   stencil_palette = 0xf0;  // stencil palette when overdraw mode = 0xf (watched bit 7-4)
172   stencil_compare_function = stencil_mnight ;
171173}
172174
175VIDEO_START( arkarea )
176{
177   videoram_alloc(machine, 0);
178
179   fg_tilemap = tilemap_create(       machine, get_fg_tile_info, tilemap_scan_rows,   8,  8, 32, 32);
180   bg_tilemap = tilemap_create(machine, mnight_get_bg_tile_info, tilemap_scan_rows,  16, 16, 32, 32);
181
182   tilemap_set_transparent_pen(fg_tilemap, TRANSPARENTCODE);
183
184   robokid_sprites = 0;
185   stencil_compare_function = stencil_arkarea ;
186}
187
173188VIDEO_START( robokid )
174189{
175190   bank_mask = 1;
r4679r4680
181196   bg1_tilemap = tilemap_create(machine, robokid_get_bg1_tile_info, robokid_bg_scan,    16, 16, 32, 32);
182197   bg2_tilemap = tilemap_create(machine, robokid_get_bg2_tile_info, robokid_bg_scan,    16, 16, 32, 32);
183198
184   tilemap_set_transparent_pen(fg_tilemap,  15);
185   tilemap_set_transparent_pen(bg1_tilemap, 15);
186   tilemap_set_transparent_pen(bg2_tilemap, 15);
199   tilemap_set_transparent_pen(fg_tilemap,  TRANSPARENTCODE);
200   tilemap_set_transparent_pen(bg1_tilemap, TRANSPARENTCODE);
201   tilemap_set_transparent_pen(bg2_tilemap, TRANSPARENTCODE);
187202
188203   robokid_sprites = 1;
189   stencil_palette = 0xf0;  // stencil palette when overdraw mode = 0xf (watched bit 7-4)
204   stencil_compare_function = stencil_robokid ;
190205}
191206
192207VIDEO_START( omegaf )
r4679r4680
200215   bg1_tilemap = tilemap_create(machine, robokid_get_bg1_tile_info, omegaf_bg_scan,     16, 16, 128, 32);
201216   bg2_tilemap = tilemap_create(machine, robokid_get_bg2_tile_info, omegaf_bg_scan,     16, 16, 128, 32);
202217
203   tilemap_set_transparent_pen(fg_tilemap,  15);
204   tilemap_set_transparent_pen(bg0_tilemap, 15);
205   tilemap_set_transparent_pen(bg1_tilemap, 15);
206   tilemap_set_transparent_pen(bg2_tilemap, 15);
218   tilemap_set_transparent_pen(fg_tilemap,  TRANSPARENTCODE);
219   tilemap_set_transparent_pen(bg0_tilemap, TRANSPARENTCODE);
220   tilemap_set_transparent_pen(bg1_tilemap, TRANSPARENTCODE);
221   tilemap_set_transparent_pen(bg2_tilemap, TRANSPARENTCODE);
207222
208223   robokid_sprites = 1;
209   stencil_palette = 0xf0;  // stencil palette when overdraw mode = 0xf (watched bit 7-4)
224   stencil_compare_function = stencil_omegaf ;
210225}
211226
212227
r4679r4680
420435   }
421436}
422437
438static int stencil_ninjakd2( UINT16 pal ) { return( (pal & 0xf0) == 0xf0 ); }
439static int stencil_mnight(   UINT16 pal ) { return( (pal & 0xf0) == 0xf0 ); }
440static int stencil_arkarea(  UINT16 pal ) { return( (pal & 0xf0) == 0xf0 ); }
441static int stencil_robokid(  UINT16 pal ) { return( (pal & 0xf0) <  0xe0 ); }
442static int stencil_omegaf(   UINT16 pal ) { return( TRUE ); }
443//////            OVERDRAW     STENCIL     UNKNOWN
444//////  NINJAKD2  023459ABCDE  F           1678
445//////    MNIGHT  023459ABCDE  F           279
446//////   ARKAREA  012345679BDE             8ACF
447//////   ROBOKID  EF           01236       45789ABCD
448//////    OMEGAF                                     unused ?
449// I could not find a port to select overdraw or stencil.
450// Temporarily, I compare with constant number.
451// This is very hackish.
423452
424453static void erase_sprites(running_machine* const machine, bitmap_t* const bitmap, const rectangle* const cliprect)
425454{
426455   // if sprite overdraw is disabled, clear the sprite framebuffer
427   // if sprite overdraw is enabled, leave palette "0-E" on screen, and stencil only "F".
428456   if (!next_sprite_overdraw_enabled)
429      bitmap_fill(sp_bitmap, cliprect, 15);
457      bitmap_fill(sp_bitmap, cliprect, TRANSPARENTCODE);
430458   else
431459   {
432460      int y;
r4679r4680
437465         {
438466            UINT16* const ptr = BITMAP_ADDR16(sp_bitmap, y, x);
439467
440            if ( (*ptr & 0xf0) == stencil_palette ) { *ptr = 15; }
441            ////// Before modified, clears palettes 0-B and F, and leaves C-E on screen
442            ////// But I'm sure "Ninja Kid II" clears F, and leaves 0-E
443            //////  (apply this to other games when verified)
444            //////  Now, I use variable "stencil_palette".
445            //////  But, I think that it may be "F", because I don't know why 0-B was cleared.
468            if ( (*stencil_compare_function)(*ptr) ) *ptr = TRANSPARENTCODE ;
446469         }
447470      }
448471   }
r4679r4680
472495
473496   tilemap_draw(bitmap, cliprect, bg_tilemap, 0, 0);
474497
475   copybitmap_trans(bitmap, sp_bitmap, 0, 0, 0, 0, cliprect, 15);
498   copybitmap_trans(bitmap, sp_bitmap, 0, 0, 0, 0, cliprect, TRANSPARENTCODE);
476499
477500   tilemap_draw(bitmap, cliprect, fg_tilemap, 0, 0);
478501
r4679r4680
490513
491514   tilemap_draw(bitmap, cliprect, bg1_tilemap, 0, 0);
492515
493   copybitmap_trans(bitmap, sp_bitmap, 0, 0, 0, 0, cliprect, 15);
516   copybitmap_trans(bitmap, sp_bitmap, 0, 0, 0, 0, cliprect, TRANSPARENTCODE);
494517
495518   tilemap_draw(bitmap, cliprect, bg2_tilemap, 0, 0);
496519
r4679r4680
512535
513536   tilemap_draw(bitmap, cliprect, bg2_tilemap, 0, 0);
514537
515   copybitmap_trans(bitmap, sp_bitmap, 0, 0, 0, 0, cliprect, 15);
538   copybitmap_trans(bitmap, sp_bitmap, 0, 0, 0, 0, cliprect, TRANSPARENTCODE);
516539
517540   tilemap_draw(bitmap, cliprect, fg_tilemap, 0, 0);
518541
src/mame/video/mjsister.c
r4679r4680
2323
2424VIDEO_START( mjsister )
2525{
26   mjsister_tmpbitmap0 = auto_bitmap_alloc(256,256,video_screen_get_format(machine->primary_screen));
27   mjsister_tmpbitmap1 = auto_bitmap_alloc(256,256,video_screen_get_format(machine->primary_screen));
28   mjsister_videoram0 = auto_malloc(0x8000);
29   mjsister_videoram1 = auto_malloc(0x8000);
26   mjsister_tmpbitmap0 = auto_bitmap_alloc(machine,256,256,video_screen_get_format(machine->primary_screen));
27   mjsister_tmpbitmap1 = auto_bitmap_alloc(machine,256,256,video_screen_get_format(machine->primary_screen));
28   mjsister_videoram0 = auto_alloc_array(machine, UINT8, 0x8000);
29   mjsister_videoram1 = auto_alloc_array(machine, UINT8, 0x8000);
3030}
3131
3232static void mjsister_plot0(int offset,UINT8 data)
src/mame/video/skydiver.c
r4679r4680
1717
1818MACHINE_RESET( skydiver )
1919{
20   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
20   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
2121
2222   /* reset all latches */
2323   skydiver_start_lamp_1_w(space, 0, 0);
src/mame/video/spacefb.c
r4679r4680
9292
9393   width = video_screen_get_width(machine->primary_screen);
9494   height = video_screen_get_height(machine->primary_screen);
95   object_present_map = auto_malloc(width * height);
95   object_present_map = auto_alloc_array(machine, UINT8, width * height);
9696
9797   /* this start value positions the stars to match the flyer screen shot,
9898       but most likely, the actual star position is random as the hardware
src/mame/video/jaguar.c
r4679r4680
209209 *************************************/
210210
211211/* from jagobj.c */
212static void jagobj_init(void);
212static void jagobj_init(running_machine *machine);
213213static void process_object_list(running_machine *machine, int vc, UINT16 *_scanline);
214214
215215/* from jagblit.c */
r4679r4680
308308
309309void jaguar_gpu_suspend(running_machine *machine)
310310{
311   cpu_suspend(machine->cpu[1], SUSPEND_REASON_SPIN, 1);
311   cputag_suspend(machine, "gpu", SUSPEND_REASON_SPIN, 1);
312312}
313313
314314
315315void jaguar_gpu_resume(running_machine *machine)
316316{
317   cpu_resume(machine->cpu[1], SUSPEND_REASON_SPIN);
317   cputag_resume(machine, "gpu", SUSPEND_REASON_SPIN);
318318}
319319
320320
r4679r4680
328328static void update_cpu_irq(running_machine *machine)
329329{
330330   if (cpu_irq_state & gpu_regs[INT1] & 0x1f)
331      cpu_set_input_line(machine->cpu[0], cojag_is_r3000 ? R3000_IRQ4 : M68K_IRQ_6, ASSERT_LINE);
331      cputag_set_input_line(machine, "maincpu", cojag_is_r3000 ? R3000_IRQ4 : M68K_IRQ_6, ASSERT_LINE);
332332   else
333      cpu_set_input_line(machine->cpu[0], cojag_is_r3000 ? R3000_IRQ4 : M68K_IRQ_6, CLEAR_LINE);
333      cputag_set_input_line(machine, "maincpu", cojag_is_r3000 ? R3000_IRQ4 : M68K_IRQ_6, CLEAR_LINE);
334334}
335335
336336
r4679r4680
479479
480480static UINT8 *get_jaguar_memory(running_machine *machine, UINT32 offset)
481481{
482   return memory_get_read_ptr(cpu_get_address_space(machine->cpu[1], ADDRESS_SPACE_PROGRAM), offset);
482   const address_space *space = cputag_get_address_space(machine, "gpu", ADDRESS_SPACE_PROGRAM);
483   return (UINT8 *)memory_get_read_ptr(space, offset);
483484}
484485
485486
r4679r4680
815816   object_timer = timer_alloc(machine, cojag_scanline_update, NULL);
816817   adjust_object_timer(machine, 0);
817818
818   screen_bitmap = auto_bitmap_alloc(720, 512, BITMAP_FORMAT_RGB32);
819   screen_bitmap = auto_bitmap_alloc(machine, 720, 512, BITMAP_FORMAT_RGB32);
819820
820   jagobj_init();
821   jagobj_init(machine);
821822
822   pen_table = auto_malloc(65536 * sizeof(pen_t));
823   pen_table = auto_alloc_array(machine, pen_t, 65536);
823824
824825   state_save_register_global_pointer(machine, pen_table, 65536);
825826   state_save_register_global_array(machine, blitter_regs);
src/mame/video/gng.c
r4679r4680
156156
157157VIDEO_EOF( gng )
158158{
159   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
159   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
160160
161161   buffer_spriteram_w(space,0,0);
162162}
src/mame/video/ojankohs.c
r4679r4680
6060   }
6161}
6262
63READ8_HANDLER( ojankohs_palette_r )
64{
65   return ojankohs_paletteram[offset];
66}
67
6863WRITE8_HANDLER( ojankohs_palette_w )
6964{
7065   int r, g, b;
r4679r4680
125120
126121******************************************************************************/
127122
128READ8_HANDLER( ojankohs_videoram_r )
129{
130   return ojankohs_videoram[offset];
131}
132
133123WRITE8_HANDLER( ojankohs_videoram_w )
134124{
135125   ojankohs_videoram[offset] = data;
136126   tilemap_mark_tile_dirty(ojankohs_tilemap, offset);
137127}
138128
139READ8_HANDLER( ojankohs_colorram_r )
140{
141   return ojankohs_colorram[offset];
142}
143
144129WRITE8_HANDLER( ojankohs_colorram_w )
145130{
146131   ojankohs_colorram[offset] = data;
r4679r4680
279264VIDEO_START( ojankohs )
280265{
281266   ojankohs_tilemap = tilemap_create(machine, ojankohs_get_tile_info, tilemap_scan_rows,  8, 4, 64, 64);
282   ojankohs_videoram = auto_malloc(0x2000);
283   ojankohs_colorram = auto_malloc(0x1000);
284   ojankohs_paletteram = auto_malloc(0x800);
267   ojankohs_videoram = auto_alloc_array(machine, UINT8, 0x2000);
268   ojankohs_colorram = auto_alloc_array(machine, UINT8, 0x1000);
269   ojankohs_paletteram = auto_alloc_array(machine, UINT8, 0x800);
285270}
286271
287272VIDEO_START( ojankoy )
288273{
289274   ojankohs_tilemap = tilemap_create(machine, ojankoy_get_tile_info, tilemap_scan_rows,  8, 4, 64, 64);
290   ojankohs_videoram = auto_malloc(0x2000);
291   ojankohs_colorram = auto_malloc(0x1000);
292   ojankohs_paletteram = auto_malloc(0x800);
275   ojankohs_videoram = auto_alloc_array(machine, UINT8, 0x2000);
276   ojankohs_colorram = auto_alloc_array(machine, UINT8, 0x1000);
277   ojankohs_paletteram = auto_alloc_array(machine, UINT8, 0x800);
293278}
294279
295280VIDEO_START( ojankoc )
296281{
297282   ojankoc_tmpbitmap = video_screen_auto_bitmap_alloc(machine->primary_screen);
298   ojankohs_videoram = auto_malloc(0x8000);
299   ojankohs_paletteram = auto_malloc(0x20);
283   ojankohs_videoram = auto_alloc_array(machine, UINT8, 0x8000);
284   ojankohs_paletteram = auto_alloc_array(machine, UINT8, 0x20);
300285}
301286
302287
r4679r4680
321306
322307   if (ojankoc_screen_refresh)
323308   {
324      const address_space *space = cpu_get_address_space(screen->machine->cpu[0], ADDRESS_SPACE_PROGRAM);
309      const address_space *space = cputag_get_address_space(screen->machine, "maincpu", ADDRESS_SPACE_PROGRAM);
325310
326311      /* redraw bitmap */
327312      for (offs = 0; offs < 0x8000; offs++) {
src/mame/video/bfm_adr2.c
r4679r4680
432432   {
433433      UINT8 *s;
434434
435      s = malloc_or_die( 0x40000 );
435      s = alloc_array_or_die(UINT8, 0x40000 );
436436      {
437437         int x, y;
438438
r4679r4680
471471ADDRESS_MAP_START( adder2_memmap, ADDRESS_SPACE_PROGRAM, 8 )
472472
473473   AM_RANGE(0x0000, 0x0000) AM_WRITE(adder2_screen_page_w)      // screen access/display select
474   AM_RANGE(0x0000, 0x7FFF) AM_READ(SMH_BANK2)            // 8k  paged ROM (4 pages)
474   AM_RANGE(0x0000, 0x7FFF) AM_READ(SMH_BANK(2))            // 8k  paged ROM (4 pages)
475475   AM_RANGE(0x8000, 0x917F) AM_READWRITE(screen_ram_r, screen_ram_w)
476476   AM_RANGE(0x9180, 0x9FFF) AM_READWRITE(normal_ram_r, normal_ram_w)
477477
src/mame/video/nbmj8891.c
r4679r4680
501501   int height = video_screen_get_height(machine->primary_screen);
502502
503503   nbmj8891_tmpbitmap0 = video_screen_auto_bitmap_alloc(machine->primary_screen);
504   nbmj8891_videoram0 = auto_malloc(width * height * sizeof(char));
505   nbmj8891_palette = auto_malloc(0x200 * sizeof(char));
506   nbmj8891_clut = auto_malloc(0x800 * sizeof(char));
504   nbmj8891_videoram0 = auto_alloc_array(machine, UINT8, width * height);
505   nbmj8891_palette = auto_alloc_array(machine, UINT8, 0x200);
506   nbmj8891_clut = auto_alloc_array(machine, UINT8, 0x800);
507507   memset(nbmj8891_videoram0, 0xff, (width * height * sizeof(char)));
508508   gfxdraw_mode = 0;
509509
r4679r4680
518518
519519   nbmj8891_tmpbitmap0 = video_screen_auto_bitmap_alloc(machine->primary_screen);
520520   nbmj8891_tmpbitmap1 = video_screen_auto_bitmap_alloc(machine->primary_screen);
521   nbmj8891_videoram0 = auto_malloc(width * height * sizeof(UINT8));
522   nbmj8891_videoram1 = auto_malloc(width * height * sizeof(UINT8));
523   nbmj8891_palette = auto_malloc(0x200 * sizeof(UINT8));
524   nbmj8891_clut = auto_malloc(0x800 * sizeof(UINT8));
521   nbmj8891_videoram0 = auto_alloc_array(machine, UINT8, width * height);
522   nbmj8891_videoram1 = auto_alloc_array(machine, UINT8, width * height);
523   nbmj8891_palette = auto_alloc_array(machine, UINT8, 0x200);
524   nbmj8891_clut = auto_alloc_array(machine, UINT8, 0x800);
525525   memset(nbmj8891_videoram0, 0xff, (width * height * sizeof(UINT8)));
526526   memset(nbmj8891_videoram1, 0xff, (width * height * sizeof(UINT8)));
527527   gfxdraw_mode = 1;
src/mame/video/liberate.c
r4679r4680
1212#include "driver.h"
1313#include "cpu/m6502/m6502.h"
1414
15static int background_color,background_disable;
15static int background_color, background_disable;
1616static tilemap *background_tilemap, *fix_tilemap;
1717static UINT8 deco16_io_ram[16];
1818
1919#if 0
2020void debug_print(bitmap_t *bitmap)
2121{
22   int i,j;
23   char buf[20*16];
22   int i, j;
23   char buf[20 * 16];
2424   char *bufptr = buf;
25   for (i = 0;i < 16;i+=2)
26      bufptr += sprintf(bufptr,"%04X",deco16_io_ram[i+1]|(deco16_io_ram[i]<<8));
27   ui_draw_text(buf, 10, 6*6);
25   for (i = 0; i < 16; i += 2)
26      bufptr += sprintf(bufptr, "%04X", deco16_io_ram[i + 1] | (deco16_io_ram[i] << 8));
27   ui_draw_text(buf, 10, 6 * 6);
2828}
2929#endif
3030
3131static TILEMAP_MAPPER( back_scan )
3232{
3333   /* logical (col,row) -> memory offset */
34   return ((row & 0xf)) + ((15-(col &0xf))<<4) + ((row&0x10)<<5) + ((col&0x10)<<4);
34   return ((row & 0xf)) + ((15 - (col & 0xf)) << 4) + ((row & 0x10) << 5) + ((col & 0x10) << 4);
3535}
3636
3737static TILEMAP_MAPPER( fix_scan )
3838{
3939   /* logical (col,row) -> memory offset */
40   return (row & 0x1f) + ((31-(col &0x1f))<<5);
40   return (row & 0x1f) + ((31 - (col & 0x1f)) << 5);
4141}
4242
4343static TILE_GET_INFO( get_back_tile_info )
4444{
4545   const UINT8 *RAM = memory_region(machine, "user1");
46   int tile,bank;
46   int tile, bank;
4747
4848   /* Convert tile index of 512x512 to paged format */
49   if (tile_index&0x100) {
50      if (tile_index&0x200)
51         tile_index=(tile_index&0xff)+(deco16_io_ram[5]<<8); /* Bottom right */
49   if (tile_index & 0x100)
50   {
51      if (tile_index & 0x200)
52         tile_index = (tile_index & 0xff) + (deco16_io_ram[5] << 8); /* Bottom right */
5253      else
53         tile_index=(tile_index&0xff)+(deco16_io_ram[4]<<8); /* Bottom left */
54   } else {
55         if (tile_index&0x200)
56         tile_index=(tile_index&0xff)+(deco16_io_ram[3]<<8); /* Top right */
54         tile_index = (tile_index & 0xff) + (deco16_io_ram[4] << 8); /* Bottom left */
55   }
56   else
57   {
58      if (tile_index & 0x200)
59         tile_index = (tile_index & 0xff) + (deco16_io_ram[3] << 8); /* Top right */
5760      else
58         tile_index=(tile_index&0xff)+(deco16_io_ram[2]<<8); /* Top left */
61         tile_index = (tile_index & 0xff) + (deco16_io_ram[2] << 8); /* Top left */
5962   }
6063
61   tile=RAM[tile_index];
62   if (tile>0x7f) bank=3; else bank=2;
63   SET_TILE_INFO(bank,tile&0x7f,background_color,0);
64   tile = RAM[tile_index];
65   if (tile > 0x7f) bank = 3; else bank = 2;
66   SET_TILE_INFO(bank, tile & 0x7f, background_color, 0);
6467}
6568
6669static TILE_GET_INFO( get_fix_tile_info )
6770{
68   int tile,color;
71   int tile, color;
6972
70   tile=videoram[tile_index+0x400]+((videoram[tile_index]&0x7)<<8);
71   color=(videoram[tile_index]&0x70)>>4;
73   tile = videoram[tile_index + 0x400] + ((videoram[tile_index] & 0x7) << 8);
74   color = (videoram[tile_index] & 0x70) >> 4;
7275
73//if (tile&0x300) tile-=0x000;
74//else if(tile&0x200) tile-=0x100;
75//else if (tile&0x100) tile-=0x100;
76//else tile+=0x200;
76//if (tile & 0x300) tile -= 0x000;
77//else if(tile & 0x200) tile -= 0x100;
78//else if (tile & 0x100) tile -= 0x100;
79//else tile += 0x200;
7780
78   SET_TILE_INFO(0,tile,color,0);
81   SET_TILE_INFO(0, tile, color, 0);
7982}
8083
8184/***************************************************************************/
8285
8386WRITE8_HANDLER( deco16_io_w )
8487{
85   deco16_io_ram[offset]=data;
86   if (offset>1 && offset<6)
88   deco16_io_ram[offset] = data;
89   if (offset > 1 && offset < 6)
8790      tilemap_mark_all_tiles_dirty(background_tilemap);
8891
89   switch (offset) {
92   switch (offset)
93   {
9094      case 6: /* Background colour */
91         if (((data>>4)&3)!=background_color) {
92            background_color=(data>>4)&3;
95         if (((data >> 4) & 3) != background_color)
96         {
97            background_color = (data >> 4) & 3;
9398            tilemap_mark_all_tiles_dirty(background_tilemap);
9499         }
95         background_disable=data&0x4;
96         flip_screen_set(space->machine, data&0x1);
100         background_disable = data & 0x4;
101         flip_screen_set(space->machine, data & 0x1);
97102         break;
98103      case 7: /* Background palette resistors? */
99104         /* Todo */
100105         break;
101106      case 8: /* Irq ack */
102         cpu_set_input_line(space->machine->cpu[0],DECO16_IRQ_LINE,CLEAR_LINE);
107         cputag_set_input_line(space->machine, "maincpu", DECO16_IRQ_LINE, CLEAR_LINE);
103108         break;
104109      case 9: /* Sound */
105         soundlatch_w(space,0,data);
106         cpu_set_input_line(space->machine->cpu[1],M6502_IRQ_LINE,HOLD_LINE);
110         soundlatch_w(space, 0, data);
111         cputag_set_input_line(space->machine, "audiocpu", M6502_IRQ_LINE, HOLD_LINE);
107112         break;
108113   }
109114}
110115
111116WRITE8_HANDLER( liberate_videoram_w )
112117{
113   videoram[offset]=data;
114   tilemap_mark_tile_dirty(fix_tilemap,offset&0x3ff);
118   videoram[offset] = data;
119   tilemap_mark_tile_dirty(fix_tilemap, offset & 0x3ff);
115120}
116121
117122/***************************************************************************/
r4679r4680
214219
215220      if (multi && fy==0) sy-=16;
216221
217      if (flip_screen_get(machine)) {
222      if (flip_screen_get(machine))
223      {
218224         sy=240-sy;
219225         sx=240-sx;
220226         if (fy)
r4679r4680
224230         if (fx) fx=0; else fx=1;
225231         if (fy) fy=0; else fy=1;
226232      }
227      else {
233      else
234      {
228235         if (fy)
229236            sy2=sy-16;
230237         else
r4679r4680
275282//      if (multi) sy-=16;
276283      if (fy && multi) { code2=code; code++; }
277284
278      if (flip_screen_get(machine)) {
285      if (flip_screen_get(machine))
286      {
279287         sy=240-sy;
280288         sx=240-sx;
281289         if (fx) fx=0; else fx=1;
282290         if (fy) fy=0; else fy=1;
283291         sy2=sy-16;
284292      }
285      else {
293      else
294      {
286295         sy2=sy+16;
287296      }
288297
r4679r4680
331340//      if (multi) sy-=16;
332341      if (fy && multi) { code2=code; code++; }
333342
334      if (flip_screen_get(machine)) {
343      if (flip_screen_get(machine))
344      {
335345         sy=240-sy;
336346         sx=240-sx;
337347         if (fx) fx=0; else fx=1;
338348         if (fy) fy=0; else fy=1;
339349         sy2=sy-16;
340350      }
341      else {
351      else
352      {
342353         sy2=sy+16;
343354      }
344355
r4679r4680
382393
383394   prosport_draw_sprites(screen->machine,bitmap,cliprect);
384395
385   for (offs = 0;offs < 0x400;offs++) {
396   for (offs = 0;offs < 0x400;offs++)
397   {
386398      tile=videoram[offs+0x400]+((videoram[offs]&0x3)<<8);
387399
388400      tile+=((deco16_io_ram[0]&0x30)<<6);
src/mame/video/cvs.c
r4679r4680
186186   width = video_screen_get_width(machine->primary_screen);
187187   height = video_screen_get_height(machine->primary_screen);
188188
189   s2636_0 = s2636_config(cvs_s2636_0_ram, height, width, CVS_S2636_Y_OFFSET, CVS_S2636_X_OFFSET);
190   s2636_1 = s2636_config(cvs_s2636_1_ram, height, width, CVS_S2636_Y_OFFSET, CVS_S2636_X_OFFSET);
191   s2636_2 = s2636_config(cvs_s2636_2_ram, height, width, CVS_S2636_Y_OFFSET, CVS_S2636_X_OFFSET);
189   s2636_0 = s2636_config(machine, cvs_s2636_0_ram, height, width, CVS_S2636_Y_OFFSET, CVS_S2636_X_OFFSET);
190   s2636_1 = s2636_config(machine, cvs_s2636_1_ram, height, width, CVS_S2636_Y_OFFSET, CVS_S2636_X_OFFSET);
191   s2636_2 = s2636_config(machine, cvs_s2636_2_ram, height, width, CVS_S2636_Y_OFFSET, CVS_S2636_X_OFFSET);
192192
193193   /* create helper bitmaps */
194194   background_bitmap = video_screen_auto_bitmap_alloc(machine->primary_screen);
src/mame/video/turbo.c
r4679r4680
167167
168168static TILE_GET_INFO( get_fg_tile_info )
169169{
170   turbo_state *state = machine->driver_data;
170   turbo_state *state = (turbo_state *)machine->driver_data;
171171   int code = state->videoram[tile_index];
172172   SET_TILE_INFO(0, code, code >> 2, 0);
173173}
r4679r4680
175175
176176VIDEO_START( turbo )
177177{
178   turbo_state *state = machine->driver_data;
178   turbo_state *state = (turbo_state *)machine->driver_data;
179179
180180   /* initialize the foreground tilemap */
181181   state->fg_tilemap = tilemap_create(machine, get_fg_tile_info, tilemap_scan_rows,  8,8, 32,32);
r4679r4680
184184
185185VIDEO_START( buckrog )
186186{
187   turbo_state *state = machine->driver_data;
187   turbo_state *state = (turbo_state *)machine->driver_data;
188188
189189   /* initialize the foreground tilemap */
190190   state->fg_tilemap = tilemap_create(machine, get_fg_tile_info, tilemap_scan_rows,  8,8, 32,32);
191191
192192   /* allocate the bitmap RAM */
193   state->buckrog_bitmap_ram = auto_malloc(0xe000);
193   state->buckrog_bitmap_ram = auto_alloc_array(machine, UINT8, 0xe000);
194194   state_save_register_global_pointer(machine, state->buckrog_bitmap_ram, 0xe000);
195195}
196196
r4679r4680
204204
205205WRITE8_HANDLER( turbo_videoram_w )
206206{
207   turbo_state *state = space->machine->driver_data;
207   turbo_state *state = (turbo_state *)space->machine->driver_data;
208208   state->videoram[offset] = data;
209209   if (offset < 0x400)
210210   {
r4679r4680
216216
217217WRITE8_HANDLER( buckrog_bitmap_w )
218218{
219   turbo_state *state = space->machine->driver_data;
219   turbo_state *state = (turbo_state *)space->machine->driver_data;
220220   state->buckrog_bitmap_ram[offset] = data & 1;
221221}
222222
r4679r4680
406406
407407VIDEO_UPDATE( turbo )
408408{
409   turbo_state *state = screen->machine->driver_data;
409   turbo_state *state = (turbo_state *)screen->machine->driver_data;
410410   bitmap_t *fgpixmap = tilemap_get_pixmap(state->fg_tilemap);
411411   const UINT8 *road_gfxdata = memory_region(screen->machine, "gfx3");
412412   const UINT8 *prom_base = memory_region(screen->machine, "proms");
r4679r4680
761761
762762VIDEO_UPDATE( subroc3d )
763763{
764   turbo_state *state = screen->machine->driver_data;
764   turbo_state *state = (turbo_state *)screen->machine->driver_data;
765765   bitmap_t *fgpixmap = tilemap_get_pixmap(state->fg_tilemap);
766766   const UINT8 *prom_base = memory_region(screen->machine, "proms");
767767   const UINT8 *pr1419 = prom_base + 0x000;
r4679r4680
981981
982982VIDEO_UPDATE( buckrog )
983983{
984   turbo_state *state = screen->machine->driver_data;
984   turbo_state *state = (turbo_state *)screen->machine->driver_data;
985985   bitmap_t *fgpixmap = tilemap_get_pixmap(state->fg_tilemap);
986986   const UINT8 *bgcolor = memory_region(screen->machine, "gfx3");
987987   const UINT8 *prom_base = memory_region(screen->machine, "proms");
src/mame/video/rohga.c
r4679r4680
2626
2727VIDEO_START( rohga )
2828{
29   rohga_spriteram = (UINT16*)auto_malloc(0x800);
29   rohga_spriteram = auto_alloc_array(machine, UINT16, 0x800/2);
3030
3131   deco16_2_video_init(machine, 0);
3232
src/mame/video/nemesis.c
r4679r4680
111111   if (ACCESSING_BITS_8_15)
112112   {
113113      if (data & 0x0100)
114         cpu_set_input_line_and_vector(space->machine->cpu[1], 0, HOLD_LINE, 0xff);
114         cputag_set_input_line_and_vector(space->machine, "audiocpu", 0, HOLD_LINE, 0xff);
115115   }
116116}
117117
r4679r4680
161161      coin_lockout_w(1, data & 0x0400);
162162
163163      if (data & 0x0800)
164         cpu_set_input_line(space->machine->cpu[1], 0, HOLD_LINE);
164         cputag_set_input_line(space->machine, "audiocpu", 0, HOLD_LINE);
165165
166166      hcrash_selected_ip = (~data & 0x1000) >> 12;      /* citybomb steering & accel */
167167   }
src/mame/video/magmax.c
r4679r4680
7575   /* Set up save state */
7676   state_save_register_global(machine, flipscreen);
7777
78   prom_tab = auto_malloc(256 * sizeof(UINT32));
78   prom_tab = auto_alloc_array(machine, UINT32, 256);
7979
8080   /* Allocate temporary bitmap */
8181    tmpbitmap = video_screen_auto_bitmap_alloc(machine->primary_screen);
src/mame/video/deco16ic.c
r4679r4680
520520{
521521   int width = video_screen_get_width(machine->primary_screen);
522522   int height = video_screen_get_height(machine->primary_screen);
523   sprite_priority_bitmap = auto_bitmap_alloc(width, height, BITMAP_FORMAT_INDEXED8 );
523   sprite_priority_bitmap = auto_bitmap_alloc(machine, width, height, BITMAP_FORMAT_INDEXED8 );
524524
525525   pf1_tilemap_16x16 =   tilemap_create(machine, get_pf1_tile_info,   deco16_scan_rows, 16,16,64,32);
526526   pf1_tilemap_8x8 =   tilemap_create(machine, get_pf1_tile_info_b, tilemap_scan_rows,8,8,64,32);
r4679r4680
531531      pf2_tilemap_16x16 =   tilemap_create(machine, get_pf2_tile_info,   deco16_scan_rows, 16,16,full_width ? 64 : 32,32);
532532   pf2_tilemap_8x8 =   tilemap_create(machine, get_pf2_tile_info_b, tilemap_scan_rows,8,8,full_width ? 64 : 32,32);
533533
534   dirty_palette = auto_malloc(4096);
535   deco16_raster_display_list=auto_malloc(20 * 256);
534   dirty_palette = auto_alloc_array(machine, UINT8, 4096);
535   deco16_raster_display_list=auto_alloc_array(machine, UINT16, 20 * 256 / 2);
536536
537537   if (!pf12_only)
538538   {
r4679r4680
602602   /* Allow sprite bitmap to be used by Deco32 games as well */
603603   int width = video_screen_get_width(machine->primary_screen);
604604   int height = video_screen_get_height(machine->primary_screen);
605   sprite_priority_bitmap = auto_bitmap_alloc(width, height, BITMAP_FORMAT_INDEXED16 );
605   sprite_priority_bitmap = auto_bitmap_alloc(machine, width, height, BITMAP_FORMAT_INDEXED16 );
606606}
607607
608608/*****************************************************************************************/
src/mame/video/goal92.c
r4679r4680
139139   foreground_layer = tilemap_create(machine, get_fore_tile_info,tilemap_scan_rows,16,16,32,32);
140140   text_layer       = tilemap_create(machine, get_text_tile_info,tilemap_scan_rows,  8,8,64,32);
141141
142   buffered_spriteram16 = auto_malloc(0x400*2);
142   buffered_spriteram16 = auto_alloc_array(machine, UINT16, 0x400*2);
143143
144144   tilemap_set_transparent_pen(background_layer,15);
145145   tilemap_set_transparent_pen(foreground_layer,15);
src/mame/video/1942.c
r4679r4680
185185
186186   coin_counter_w(0,data & 0x01);
187187
188   cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_RESET, (data & 0x10) ? ASSERT_LINE : CLEAR_LINE);
188   cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_RESET, (data & 0x10) ? ASSERT_LINE : CLEAR_LINE);
189189
190190   flip_screen_set(space->machine, data & 0x80);
191191}
src/mame/video/mayumi.c
r4679r4680
99
1010#include "driver.h"
1111
12static UINT8 *mayumi_videoram;
12UINT8 *mayumi_videoram;
1313static tilemap *mayumi_tilemap;
1414
1515static TILE_GET_INFO( get_tile_info )
r4679r4680
2222
2323VIDEO_START( mayumi )
2424{
25   mayumi_videoram = auto_malloc(0x1800);
25   mayumi_videoram = auto_alloc_array(machine, UINT8, 0x1800);
2626
2727   mayumi_tilemap = tilemap_create( machine, get_tile_info,tilemap_scan_rows,8,8,64,32 );
2828}
r4679r4680
3030WRITE8_HANDLER( mayumi_videoram_w )
3131{
3232   mayumi_videoram[offset] = data;
33
3433   tilemap_mark_tile_dirty(mayumi_tilemap, offset & 0x7ff );
3534}
3635
37READ8_HANDLER( mayumi_videoram_r )
38{
39   return mayumi_videoram[offset];
40}
41
4236VIDEO_UPDATE( mayumi )
4337{
4438   tilemap_draw(bitmap, cliprect, mayumi_tilemap, 0, 0);
src/mame/video/fromanc2.c
r4679r4680
380380   fromanc2_tilemap[1][2] = tilemap_create(machine, fromanc2_get_v1_l2_tile_info, tilemap_scan_rows,  8, 8, 64, 64);
381381   fromanc2_tilemap[1][3] = tilemap_create(machine, fromanc2_get_v1_l3_tile_info, tilemap_scan_rows,  8, 8, 64, 64);
382382
383   fromanc2_videoram[0][0] = auto_malloc((64 * 64) * sizeof(UINT16));
384   fromanc2_videoram[0][1] = auto_malloc((64 * 64) * sizeof(UINT16));
385   fromanc2_videoram[0][2] = auto_malloc((64 * 64) * sizeof(UINT16));
386   fromanc2_videoram[0][3] = auto_malloc((64 * 64) * sizeof(UINT16));
387   fromanc2_videoram[1][0] = auto_malloc((64 * 64) * sizeof(UINT16));
388   fromanc2_videoram[1][1] = auto_malloc((64 * 64) * sizeof(UINT16));
389   fromanc2_videoram[1][2] = auto_malloc((64 * 64) * sizeof(UINT16));
390   fromanc2_videoram[1][3] = auto_malloc((64 * 64) * sizeof(UINT16));
383   fromanc2_videoram[0][0] = auto_alloc_array(machine, UINT16, (64 * 64));
384   fromanc2_videoram[0][1] = auto_alloc_array(machine, UINT16, (64 * 64));
385   fromanc2_videoram[0][2] = auto_alloc_array(machine, UINT16, (64 * 64));
386   fromanc2_videoram[0][3] = auto_alloc_array(machine, UINT16, (64 * 64));
387   fromanc2_videoram[1][0] = auto_alloc_array(machine, UINT16, (64 * 64));
388   fromanc2_videoram[1][1] = auto_alloc_array(machine, UINT16, (64 * 64));
389   fromanc2_videoram[1][2] = auto_alloc_array(machine, UINT16, (64 * 64));
390   fromanc2_videoram[1][3] = auto_alloc_array(machine, UINT16, (64 * 64));
391391
392   fromanc2_paletteram[0] = auto_malloc(0x800 * 2);
393   fromanc2_paletteram[1] = auto_malloc(0x800 * 2);
392   fromanc2_paletteram[0] = auto_alloc_array(machine, UINT16, 0x800);
393   fromanc2_paletteram[1] = auto_alloc_array(machine, UINT16, 0x800);
394394
395395   tilemap_set_transparent_pen(fromanc2_tilemap[0][1], 0x000);
396396   tilemap_set_transparent_pen(fromanc2_tilemap[0][2], 0x000);
r4679r4680
411411   fromanc2_tilemap[1][2] = tilemap_create(machine, fromancr_get_v1_l2_tile_info, tilemap_scan_rows,  8, 8, 64, 64);
412412   fromanc2_tilemap[1][3] = 0;
413413
414   fromanc2_videoram[0][0] = auto_malloc((64 * 64) * sizeof(UINT16));
415   fromanc2_videoram[0][1] = auto_malloc((64 * 64) * sizeof(UINT16));
416   fromanc2_videoram[0][2] = auto_malloc((64 * 64) * sizeof(UINT16));
417   fromanc2_videoram[1][0] = auto_malloc((64 * 64) * sizeof(UINT16));
418   fromanc2_videoram[1][1] = auto_malloc((64 * 64) * sizeof(UINT16));
419   fromanc2_videoram[1][2] = auto_malloc((64 * 64) * sizeof(UINT16));
414   fromanc2_videoram[0][0] = auto_alloc_array(machine, UINT16, (64 * 64));
415   fromanc2_videoram[0][1] = auto_alloc_array(machine, UINT16, (64 * 64));
416   fromanc2_videoram[0][2] = auto_alloc_array(machine, UINT16, (64 * 64));
417   fromanc2_videoram[1][0] = auto_alloc_array(machine, UINT16, (64 * 64));
418   fromanc2_videoram[1][1] = auto_alloc_array(machine, UINT16, (64 * 64));
419   fromanc2_videoram[1][2] = auto_alloc_array(machine, UINT16, (64 * 64));
420420
421   fromanc2_paletteram[0] = auto_malloc(0x800 * 2);
422   fromanc2_paletteram[1] = auto_malloc(0x800 * 2);
421   fromanc2_paletteram[0] = auto_alloc_array(machine, UINT16, 0x800);
422   fromanc2_paletteram[1] = auto_alloc_array(machine, UINT16, 0x800);
423423
424424   tilemap_set_transparent_pen(fromanc2_tilemap[0][1], 0x0ff);
425425   tilemap_set_transparent_pen(fromanc2_tilemap[0][2], 0x0ff);
r4679r4680
439439   fromanc2_tilemap[1][2] = tilemap_create(machine, fromancr_get_v1_l2_tile_info, tilemap_scan_rows,  8, 8, 256, 64);
440440   fromanc2_tilemap[1][3] = 0;
441441
442   fromanc2_videoram[0][0] = auto_malloc((256 * 64) * sizeof(UINT16));
443   fromanc2_videoram[0][1] = auto_malloc((256 * 64) * sizeof(UINT16));
444   fromanc2_videoram[0][2] = auto_malloc((256 * 64) * sizeof(UINT16));
445   fromanc2_videoram[1][0] = auto_malloc((256 * 64) * sizeof(UINT16));
446   fromanc2_videoram[1][1] = auto_malloc((256 * 64) * sizeof(UINT16));
447   fromanc2_videoram[1][2] = auto_malloc((256 * 64) * sizeof(UINT16));
442   fromanc2_videoram[0][0] = auto_alloc_array(machine, UINT16, (256 * 64));
443   fromanc2_videoram[0][1] = auto_alloc_array(machine, UINT16, (256 * 64));
444   fromanc2_videoram[0][2] = auto_alloc_array(machine, UINT16, (256 * 64));
445   fromanc2_videoram[1][0] = auto_alloc_array(machine, UINT16, (256 * 64));
446   fromanc2_videoram[1][1] = auto_alloc_array(machine, UINT16, (256 * 64));
447   fromanc2_videoram[1][2] = auto_alloc_array(machine, UINT16, (256 * 64));
448448
449   fromanc2_paletteram[0] = auto_malloc(0x800 * 2);
450   fromanc2_paletteram[1] = auto_malloc(0x800 * 2);
449   fromanc2_paletteram[0] = auto_alloc_array(machine, UINT16, 0x800);
450   fromanc2_paletteram[1] = auto_alloc_array(machine, UINT16, 0x800);
451451
452452   tilemap_set_transparent_pen(fromanc2_tilemap[0][1], 0x000);
453453   tilemap_set_transparent_pen(fromanc2_tilemap[0][2], 0x000);
src/mame/video/gridlee.c
r4679r4680
8282VIDEO_START( gridlee )
8383{
8484   /* allocate a local copy of video RAM */
85   local_videoram = auto_malloc(256 * 256);
86   memset(local_videoram, 0, 256 * 256);
85   local_videoram = auto_alloc_array_clear(machine, UINT8, 256 * 256);
8786
8887   /* reset the palette */
8988   palettebank_vis = 0;
src/mame/video/realbrk.c
r4679r4680
163163   tilemap_set_transparent_pen(tilemap_1,0);
164164   tilemap_set_transparent_pen(tilemap_2,0);
165165
166   tmpbitmap0 = auto_bitmap_alloc(32,32, video_screen_get_format(machine->primary_screen));
167   tmpbitmap1 = auto_bitmap_alloc(32,32, video_screen_get_format(machine->primary_screen));
166   tmpbitmap0 = auto_bitmap_alloc(machine,32,32, video_screen_get_format(machine->primary_screen));
167   tmpbitmap1 = auto_bitmap_alloc(machine,32,32, video_screen_get_format(machine->primary_screen));
168168}
169169
170170/***************************************************************************
src/mame/video/superchs.c
r4679r4680
1616
1717VIDEO_START( superchs )
1818{
19   spritelist = auto_malloc(0x4000 * sizeof(*spritelist));
19   spritelist = auto_alloc_array(machine, struct tempsprite, 0x4000);
2020
2121   TC0480SCP_vh_start(machine,TC0480SCP_GFX_NUM,0,0x20,0x08,-1,0,0,0,0);
2222}
src/mame/video/battlera.c
r4679r4680
2727
2828VIDEO_START( battlera )
2929{
30   HuC6270_vram=auto_malloc(0x20000);
31   vram_dirty=auto_malloc(0x1000);
30   HuC6270_vram=auto_alloc_array(machine, UINT8, 0x20000);
31   vram_dirty=auto_alloc_array(machine, UINT8, 0x1000);
3232
3333   memset(HuC6270_vram,0,0x20000);
3434   memset(vram_dirty,1,0x1000);
3535
36   tile_bitmap=auto_bitmap_alloc(512,512,video_screen_get_format(machine->primary_screen));
37   front_bitmap=auto_bitmap_alloc(512,512,video_screen_get_format(machine->primary_screen));
36   tile_bitmap=auto_bitmap_alloc(machine,512,512,video_screen_get_format(machine->primary_screen));
37   front_bitmap=auto_bitmap_alloc(machine,512,512,video_screen_get_format(machine->primary_screen));
3838
3939   vram_ptr=0;
4040   inc_value=1;
src/mame/video/namcos1.c
r4679r4680
105105   tilemap_maskdata = (UINT8 *)memory_region(machine, "gfx1");
106106
107107   /* allocate videoram */
108   namcos1_videoram = auto_malloc(0x8000);
109   namcos1_spriteram = auto_malloc(0x1000);
108   namcos1_videoram = auto_alloc_array(machine, UINT8, 0x8000);
109   namcos1_spriteram = auto_alloc_array(machine, UINT8, 0x1000);
110110
111111   /* initialize playfields */
112112   bg_tilemap[0] = tilemap_create(machine, bg_get_info0,tilemap_scan_rows,8,8,64,64);
src/mame/video/mrdo.c
r4679r4680
6363   {
6464      float par = 0;
6565
66      if (i & 1) par += 1.0/R1;
67      if (i & 2) par += 1.0/R2;
68      if (i & 4) par += 1.0/R3;
69      if (i & 8) par += 1.0/R4;
66      if (i & 1) par += 1.0f/(float)R1;
67      if (i & 2) par += 1.0f/(float)R2;
68      if (i & 4) par += 1.0f/(float)R3;
69      if (i & 8) par += 1.0f/(float)R4;
7070      if (par)
7171      {
7272         par = 1/par;
src/mame/video/astrocde.c
r4679r4680
9292
9393static void init_savestate(running_machine *machine);
9494static TIMER_CALLBACK( scanline_callback );
95static void init_sparklestar(void);
95static void init_sparklestar(running_machine *machine);
9696
9797
9898
r4679r4680
230230
231231   /* initialize the sparkle and stars */
232232   if (astrocade_video_config & AC_STARS)
233      init_sparklestar();
233      init_sparklestar(machine);
234234}
235235
236236
r4679r4680
241241   timer_adjust_oneshot(scanline_timer, video_screen_get_time_until_pos(machine->primary_screen, 1, 0), 1);
242242
243243   /* allocate videoram */
244   profpac_videoram = auto_malloc(0x4000 * 4 * sizeof(*profpac_videoram));
244   profpac_videoram = auto_alloc_array(machine, UINT16, 0x4000 * 4);
245245
246246   /* register for save states */
247247   init_savestate(machine);
r4679r4680
427427
428428static TIMER_CALLBACK( interrupt_off )
429429{
430   cpu_set_input_line(machine->cpu[0], 0, CLEAR_LINE);
430   cputag_set_input_line(machine, "maincpu", 0, CLEAR_LINE);
431431}
432432
433433
r4679r4680
440440      /* bit 0 controls the interrupt mode: mode 0 means assert until acknowledged */
441441      if ((interrupt_enable & 0x01) == 0)
442442      {
443         cpu_set_input_line_and_vector(machine->cpu[0], 0, HOLD_LINE, interrupt_vector & 0xf0);
443         cputag_set_input_line_and_vector(machine, "maincpu", 0, HOLD_LINE, interrupt_vector & 0xf0);
444444         timer_set(machine, video_screen_get_time_until_vblank_end(machine->primary_screen), NULL, 0, interrupt_off);
445445      }
446446
447447      /* mode 1 means assert for 1 instruction */
448448      else
449449      {
450         cpu_set_input_line_and_vector(machine->cpu[0], 0, ASSERT_LINE, interrupt_vector & 0xf0);
451         timer_set(machine, cpu_clocks_to_attotime(machine->cpu[0], 1), NULL, 0, interrupt_off);
450         cputag_set_input_line_and_vector(machine, "maincpu", 0, ASSERT_LINE, interrupt_vector & 0xf0);
451         timer_set(machine, cputag_clocks_to_attotime(machine, "maincpu", 1), NULL, 0, interrupt_off);
452452      }
453453
454454      /* latch the feedback registers */
r4679r4680
480480      /* bit 2 controls the interrupt mode: mode 0 means assert until acknowledged */
481481      if ((interrupt_enable & 0x04) == 0)
482482      {
483         cpu_set_input_line_and_vector(machine->cpu[0], 0, HOLD_LINE, interrupt_vector);
483         cputag_set_input_line_and_vector(machine, "maincpu", 0, HOLD_LINE, interrupt_vector);
484484         timer_set(machine, video_screen_get_time_until_vblank_end(machine->primary_screen), NULL, 0, interrupt_off);
485485      }
486486
487487      /* mode 1 means assert for 1 instruction */
488488      else
489489      {
490         cpu_set_input_line_and_vector(machine->cpu[0], 0, ASSERT_LINE, interrupt_vector);
491         timer_set(machine, cpu_clocks_to_attotime(machine->cpu[0], 1), NULL, 0, interrupt_off);
490         cputag_set_input_line_and_vector(machine, "maincpu", 0, ASSERT_LINE, interrupt_vector);
491         timer_set(machine, cputag_clocks_to_attotime(machine, "maincpu", 1), NULL, 0, interrupt_off);
492492      }
493493   }
494494
r4679r4680
957957    relative to the beginning of time and use that, mod RNG_PERIOD.
958958*/
959959
960static void init_sparklestar(void)
960static void init_sparklestar(running_machine *machine)
961961{
962962   UINT32 shiftreg;
963963   int i;
r4679r4680
966966   astrocade_sparkle[0] = astrocade_sparkle[1] = astrocade_sparkle[2] = astrocade_sparkle[3] = 0;
967967
968968   /* allocate memory for the sparkle/star array */
969   sparklestar = auto_malloc(RNG_PERIOD);
969   sparklestar = auto_alloc_array(machine, UINT8, RNG_PERIOD);
970970
971971   /* generate the data for the sparkle/star array */
972972   for (shiftreg = i = 0; i < RNG_PERIOD; i++)
src/mame/video/megazone.c
r4679r4680
109109
110110VIDEO_START( megazone )
111111{
112   tmpbitmap = auto_bitmap_alloc(256,256,video_screen_get_format(machine->primary_screen));
112   tmpbitmap = auto_bitmap_alloc(machine,256,256,video_screen_get_format(machine->primary_screen));
113113}
114114
115115
src/mame/video/toki.c
r4679r4680
3838
3939VIDEO_EOF( toki )
4040{
41   buffer_spriteram16_w(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM),0,0,0xffff);
41   buffer_spriteram16_w(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0, 0, 0xffff);
4242}
4343
4444VIDEO_EOF( tokib )
4545{
46   buffer_spriteram16_w(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM),0,0,0xffff);
46   buffer_spriteram16_w(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0, 0, 0xffff);
4747}
4848
4949static TILE_GET_INFO( get_text_tile_info )
5050{
5151   int tile = videoram16[tile_index];
52   int color=(tile>>12)&0xf;
52   int color = (tile >> 12) & 0xf;
5353
54   tile&=0xfff;
54   tile &= 0xfff;
5555
5656   SET_TILE_INFO(
5757         0,
r4679r4680
6363static TILE_GET_INFO( get_back_tile_info )
6464{
6565   int tile = toki_background1_videoram16[tile_index];
66   int color=(tile>>12)&0xf;
66   int color = (tile >> 12) & 0xf;
6767
68   tile&=0xfff;
68   tile &= 0xfff;
6969
7070   SET_TILE_INFO(
7171         2,
r4679r4680
7777static TILE_GET_INFO( get_fore_tile_info )
7878{
7979   int tile = toki_background2_videoram16[tile_index];
80   int color=(tile>>12)&0xf;
80   int color = (tile >> 12) & 0xf;
8181
82   tile&=0xfff;
82   tile &= 0xfff;
8383
8484   SET_TILE_INFO(
8585         3,
src/mame/video/40love.c
r4679r4680
119119
120120VIDEO_START( fortyl )
121121{
122   fortyl_pixram1 = auto_malloc(0x4000);
123   fortyl_pixram2 = auto_malloc(0x4000);
124   memset(fortyl_pixram1,0,0x4000);
125   memset(fortyl_pixram2,0,0x4000);
122   fortyl_pixram1 = auto_alloc_array_clear(machine, UINT8, 0x4000);
123   fortyl_pixram2 = auto_alloc_array_clear(machine, UINT8, 0x4000);
126124
127   pixel_bitmap1 = auto_bitmap_alloc(256,256,video_screen_get_format(machine->primary_screen));
128   pixel_bitmap2 = auto_bitmap_alloc(256,256,video_screen_get_format(machine->primary_screen));
125   pixel_bitmap1 = auto_bitmap_alloc(machine,256,256,video_screen_get_format(machine->primary_screen));
126   pixel_bitmap2 = auto_bitmap_alloc(machine,256,256,video_screen_get_format(machine->primary_screen));
129127
130128   background  = tilemap_create(machine, get_bg_tile_info, tilemap_scan_rows, 8,8,64,32);
131129
src/mame/video/nbmj8688.c
r4679r4680
561561
562562static void common_video_start(running_machine *machine)
563563{
564   mjsikaku_tmpbitmap = auto_bitmap_alloc(512, 256, video_screen_get_format(machine->primary_screen));
565   mjsikaku_videoram = auto_malloc(512 * 256 * sizeof(UINT16));
566   nbmj8688_clut = auto_malloc(0x20 * sizeof(UINT8));
567   memset(mjsikaku_videoram, 0, (512 * 256 * sizeof(UINT16)));
564   mjsikaku_tmpbitmap = auto_bitmap_alloc(machine, 512, 256, video_screen_get_format(machine->primary_screen));
565   mjsikaku_videoram = auto_alloc_array_clear(machine, UINT16, 512 * 256);
566   nbmj8688_clut = auto_alloc_array(machine, UINT8, 0x20);
568567
569568   mjsikaku_scrolly = 0;   // reset because crystalg/crystal2 don't write to this register
570569}
r4679r4680
603602{
604603   mjsikaku_gfxmode = GFXTYPE_PURE_16BIT;
605604
606   HD61830B_ram[0] = auto_malloc(0x10000);
607   HD61830B_ram[1] = auto_malloc(0x10000);
605   HD61830B_ram[0] = auto_alloc_array(machine, UINT8, 0x10000);
606   HD61830B_ram[1] = auto_alloc_array(machine, UINT8, 0x10000);
608607
609608   common_video_start(machine);
610609}
src/mame/video/psychic5.c
r4679r4680
254254
255255   tilemap_set_transparent_pen(fg_tilemap, 15);
256256
257   ps5_pagedram[0] = auto_malloc(0x2000);
258   ps5_pagedram[1] = auto_malloc(0x2000);
257   ps5_pagedram[0] = auto_alloc_array(machine, UINT8, 0x2000);
258   ps5_pagedram[1] = auto_alloc_array(machine, UINT8, 0x2000);
259259
260260   psychic5_bg_videoram  = &ps5_pagedram[0][0x0000];
261261   ps5_dummy_bg_ram      = &ps5_pagedram[0][0x1000];
r4679r4680
263263   ps5_palette_ram       = &ps5_pagedram[1][0x0400];
264264   psychic5_fg_videoram  = &ps5_pagedram[1][0x1000];
265265
266   jal_blend_table = auto_malloc(0xc00);
266   jal_blend_table = auto_alloc_array(machine, UINT8, 0xc00);
267267
268268   bg_palette_ram_base = 0x400;
269269   bg_palette_base = 0x100;
r4679r4680
277277
278278   tilemap_set_transparent_pen(fg_tilemap, 15);
279279
280   ps5_pagedram[0] = auto_malloc(0x2000);
281   ps5_pagedram[1] = auto_malloc(0x2000);
280   ps5_pagedram[0] = auto_alloc_array(machine, UINT8, 0x2000);
281   ps5_pagedram[1] = auto_alloc_array(machine, UINT8, 0x2000);
282282
283283   psychic5_bg_videoram  = &ps5_pagedram[0][0x0000];
284284   ps5_dummy_bg_ram      = &ps5_pagedram[0][0x1000];
r4679r4680
286286   psychic5_fg_videoram  = &ps5_pagedram[1][0x0800];
287287   ps5_palette_ram       = &ps5_pagedram[1][0x1000];
288288
289   //jal_blend_table = auto_malloc(0xc00);
289   //jal_blend_table = auto_alloc_array(machine, UINT8, 0xc00);
290290   jal_blend_table = NULL;
291291
292292   bg_palette_ram_base = 0x000;
src/mame/video/othunder.c
r4679r4680
2424       Multiply this by 32 to give room for the number of small sprites,
2525       which are what actually get put in the structure. */
2626
27   spritelist = auto_malloc(0x2000 * sizeof(*spritelist));
27   spritelist = auto_alloc_array(machine, struct tempsprite, 0x2000);
2828
2929   TC0100SCN_vh_start(machine,1,TC0100SCN_GFX_NUM,4,0,0,0,0,0,0);
3030
src/mame/video/ginganin.c
r4679r4680
181181      tilemap_set_flip(ALL_TILEMAPS,flipscreen ? (TILEMAP_FLIPY | TILEMAP_FLIPX) : 0);
182182      break;
183183   case 7:
184      soundlatch_w(space,0,data);
185      cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_NMI, PULSE_LINE);
184      soundlatch_w(space, 0, data);
185      cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
186186      break;
187187   default:
188188      logerror("CPU #0 PC %06X : Warning, videoreg %04X <- %04X\n",cpu_get_pc(space->cpu),offset,data);
src/mame/video/quasar.c
r4679r4680
101101   int width = video_screen_get_width(machine->primary_screen);
102102   int height = video_screen_get_height(machine->primary_screen);
103103
104   quasar_effectram = auto_malloc(0x400);
104   quasar_effectram = auto_alloc_array(machine, UINT8, 0x400);
105105
106106   /* configure the S2636 chips */
107   s2636_0 = s2636_config(cvs_s2636_0_ram, height, width, CVS_S2636_Y_OFFSET, CVS_S2636_X_OFFSET);
108   s2636_1 = s2636_config(cvs_s2636_1_ram, height, width, CVS_S2636_Y_OFFSET, CVS_S2636_X_OFFSET);
109   s2636_2 = s2636_config(cvs_s2636_2_ram, height, width, CVS_S2636_Y_OFFSET, CVS_S2636_X_OFFSET);
107   s2636_0 = s2636_config(machine, cvs_s2636_0_ram, height, width, CVS_S2636_Y_OFFSET, CVS_S2636_X_OFFSET);
108   s2636_1 = s2636_config(machine, cvs_s2636_1_ram, height, width, CVS_S2636_Y_OFFSET, CVS_S2636_X_OFFSET);
109   s2636_2 = s2636_config(machine, cvs_s2636_2_ram, height, width, CVS_S2636_Y_OFFSET, CVS_S2636_X_OFFSET);
110110
111111   /* create helper bitmaps */
112112   cvs_collision_background = video_screen_auto_bitmap_alloc(machine->primary_screen);
src/mame/video/mrjong.c
r4679r4680
1212
1313/***************************************************************************
1414
15  Convert the color PROMs. (from video/penco.c)
15  Convert the color PROMs. (from video/pengo.c)
1616
1717***************************************************************************/
1818PALETTE_INIT( mrjong )
r4679r4680
101101   bg_tilemap = tilemap_create(machine, get_bg_tile_info, tilemap_scan_rows_flip_xy, 8, 8, 32, 32);
102102}
103103
104/*
105Note: First 0x40 entries in the videoram are actually spriteram
106*/
104107static void draw_sprites(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect)
105108{
106109   int offs;
107110
108   for (offs = (spriteram_size - 4); offs >= 0; offs -= 4)
111   for (offs = (0x40 - 4); offs >= 0; offs -= 4)
109112   {
110113      int sprt;
111114      int color;
112115      int sx, sy;
113116      int flipx, flipy;
114117
115      sprt = (((spriteram[offs + 1] >> 2) & 0x3f) | ((spriteram[offs + 3] & 0x20) << 1));
116      flipx = (spriteram[offs + 1] & 0x01) >> 0;
117      flipy = (spriteram[offs + 1] & 0x02) >> 1;
118      color = (spriteram[offs + 3] & 0x1f);
118      sprt = (((videoram[offs + 1] >> 2) & 0x3f) | ((videoram[offs + 3] & 0x20) << 1));
119      flipx = (videoram[offs + 1] & 0x01) >> 0;
120      flipy = (videoram[offs + 1] & 0x02) >> 1;
121      color = (videoram[offs + 3] & 0x1f);
119122
120      sx = 224 - spriteram[offs + 2];
121      sy = spriteram[offs + 0];
123      sx = 224 - videoram[offs + 2];
124      sy = videoram[offs + 0];
122125      if (flip_screen_get(machine))
123126      {
124127         sx = 208 - sx;
src/mame/video/slapshot.c
r4679r4680
3434{
3535   int i;
3636
37   spriteram_delayed = auto_malloc(spriteram_size);
38   spriteram_buffered = auto_malloc(spriteram_size);
39   spritelist = auto_malloc(0x400 * sizeof(*spritelist));
37   spriteram_delayed = auto_alloc_array(machine, UINT16, spriteram_size/2);
38   spriteram_buffered = auto_alloc_array(machine, UINT16, spriteram_size/2);
39   spritelist = auto_alloc_array(machine, struct tempsprite, 0x400);
4040
4141   if (has_TC0480SCP(machine))   /* it's a tc0480scp game */
4242      TC0480SCP_vh_start(machine,TC0480SCP_GFX_NUM,taito_hide_pixels,30,9,-1,1,0,2,256);
src/mame/video/vsnes.c
r4679r4680
1616
1717static void ppu_irq_1( const device_config *device, int *ppu_regs )
1818{
19   cpu_set_input_line(device->machine->cpu[0], INPUT_LINE_NMI, PULSE_LINE );
19   cputag_set_input_line(device->machine, "maincpu", INPUT_LINE_NMI, PULSE_LINE );
2020}
2121
2222static void ppu_irq_2( const device_config *device, int *ppu_regs )
2323{
24   cpu_set_input_line(device->machine->cpu[1], INPUT_LINE_NMI, PULSE_LINE );
24   cputag_set_input_line(device->machine, "sub", INPUT_LINE_NMI, PULSE_LINE );
2525}
2626
2727/* our ppu interface                                            */
src/mame/video/victory.c
r4679r4680
7171VIDEO_START( victory )
7272{
7373   /* allocate bitmapram */
74   rram = auto_malloc(0x4000);
75   gram = auto_malloc(0x4000);
76   bram = auto_malloc(0x4000);
74   rram = auto_alloc_array(machine, UINT8, 0x4000);
75   gram = auto_alloc_array(machine, UINT8, 0x4000);
76   bram = auto_alloc_array(machine, UINT8, 0x4000);
7777
7878   /* allocate bitmaps */
79   bgbitmap = auto_malloc(256 * 256);
80   fgbitmap = auto_malloc(256 * 256);
79   bgbitmap = auto_alloc_array(machine, UINT8, 256 * 256);
80   fgbitmap = auto_alloc_array(machine, UINT8, 256 * 256);
8181
8282   /* reset globals */
8383   vblank_irq = 0;
r4679r4680
103103static void victory_update_irq(running_machine *machine)
104104{
105105   if (vblank_irq || fgcoll || (bgcoll && (video_control & 0x20)))
106      cpu_set_input_line(machine->cpu[0], 0, ASSERT_LINE);
106      cputag_set_input_line(machine, "maincpu", 0, ASSERT_LINE);
107107   else
108      cpu_set_input_line(machine->cpu[0], 0, CLEAR_LINE);
108      cputag_set_input_line(machine, "maincpu", 0, CLEAR_LINE);
109109}
110110
111111
src/mame/video/pacland.c
r4679r4680
125125   switch_palette(machine);
126126
127127   /* precalculate transparency masks for sprites */
128   transmask[0] = auto_malloc(64 * sizeof(transmask[0][0]));
129   transmask[1] = auto_malloc(64 * sizeof(transmask[0][0]));
130   transmask[2] = auto_malloc(64 * sizeof(transmask[0][0]));
128   transmask[0] = auto_alloc_array(machine, UINT32, 64);
129   transmask[1] = auto_alloc_array(machine, UINT32, 64);
130   transmask[2] = auto_alloc_array(machine, UINT32, 64);
131131   for (i = 0; i < 64; i++)
132132   {
133133      int palentry;
src/mame/video/ladyfrog.c
r4679r4680
136136
137137VIDEO_START( ladyfrog )
138138{
139  ladyfrog_spriteram = auto_malloc (160);
139  ladyfrog_spriteram = auto_alloc_array(machine, UINT8, 160);
140140  bg_tilemap = tilemap_create( machine, get_tile_info,tilemap_scan_rows,8,8,32,32 );
141141
142  paletteram = auto_malloc(0x200);
143  paletteram_2 = auto_malloc(0x200);
142  paletteram = auto_alloc_array(machine, UINT8, 0x200);
143  paletteram_2 = auto_alloc_array(machine, UINT8, 0x200);
144144  tilemap_set_scroll_cols(bg_tilemap,32);
145145  tilemap_set_scrolldy( bg_tilemap,   15, 15 );
146146}
src/mame/video/sidearms.c
r4679r4680
5252   /* bit 4 resets the sound CPU */
5353   if (data & 0x10)
5454   {
55      cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_RESET, PULSE_LINE);
55      cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_RESET, PULSE_LINE);
5656   }
5757
5858   /* bit 5 enables starfield */
r4679r4680
359359
360360VIDEO_EOF( sidearms )
361361{
362   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
362   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
363363
364364   buffer_spriteram_w(space, 0, 0);
365365}
src/mame/video/model2rd.c
r4679r4680
5757static void MODEL2_FUNC_NAME(void *dest, INT32 scanline, const poly_extent *extent, const void *extradata, int threadid)
5858{
5959#if !defined( MODEL2_TRANSLUCENT)
60   const poly_extra_data *extra = extradata;
61   bitmap_t *destmap = dest;
60   const poly_extra_data *extra = (const poly_extra_data *)extradata;
61   bitmap_t *destmap = (bitmap_t *)dest;
6262   UINT32 *p = BITMAP_ADDR32(destmap, scanline, 0);
6363
6464   /* extract color information */
r4679r4680
109109/* textured render path */
110110static void MODEL2_FUNC_NAME(void *dest, INT32 scanline, const poly_extent *extent, const void *extradata, int threadid)
111111{
112   const poly_extra_data *extra = extradata;
113   bitmap_t *destmap = dest;
112   const poly_extra_data *extra = (const poly_extra_data *)extradata;
113   bitmap_t *destmap = (bitmap_t *)dest;
114114   UINT32 *p = BITMAP_ADDR32(destmap, scanline, 0);
115115
116116   UINT32   tex_width = extra->texwidth;
src/mame/video/dogfgt.c
r4679r4680
8383{
8484   bg_tilemap = tilemap_create(machine, get_tile_info,tilemap_scan_rows,16,16,32,32);
8585
86   bitmapram = auto_malloc(BITMAPRAM_SIZE);
86   bitmapram = auto_alloc_array(machine, UINT8, BITMAPRAM_SIZE);
8787
8888   pixbitmap = video_screen_auto_bitmap_alloc(machine->primary_screen);
8989}
r4679r4680
226226
227227   if (lastflip != flip_screen_get(screen->machine) || lastpixcolor != pixcolor)
228228   {
229      const address_space *space = cpu_get_address_space(screen->machine->cpu[0], ADDRESS_SPACE_PROGRAM);
229      const address_space *space = cputag_get_address_space(screen->machine, "maincpu", ADDRESS_SPACE_PROGRAM);
230230
231231      lastflip = flip_screen_get(screen->machine);
232232      lastpixcolor = pixcolor;
src/mame/video/taitosj.c
r4679r4680
192192{
193193   int i;
194194
195   sprite_layer_collbitmap1 = auto_bitmap_alloc(16,16,video_screen_get_format(machine->primary_screen));
195   sprite_layer_collbitmap1 = auto_bitmap_alloc(machine,16,16,video_screen_get_format(machine->primary_screen));
196196
197197   for (i = 0; i < 3; i++)
198198   {
r4679r4680
200200      sprite_layer_collbitmap2[i] = video_screen_auto_bitmap_alloc(machine->primary_screen);
201201   }
202202
203   sprite_sprite_collbitmap1 = auto_bitmap_alloc(32,32,video_screen_get_format(machine->primary_screen));
204   sprite_sprite_collbitmap2 = auto_bitmap_alloc(32,32,video_screen_get_format(machine->primary_screen));
203   sprite_sprite_collbitmap1 = auto_bitmap_alloc(machine,32,32,video_screen_get_format(machine->primary_screen));
204   sprite_sprite_collbitmap2 = auto_bitmap_alloc(machine,32,32,video_screen_get_format(machine->primary_screen));
205205
206206   gfx_element_set_source(machine->gfx[0], taitosj_characterram);
207207   gfx_element_set_source(machine->gfx[1], taitosj_characterram);
src/mame/video/vigilant.c
r4679r4680
4040
4141VIDEO_START( vigilant )
4242{
43   bg_bitmap = auto_bitmap_alloc(512*4,256,video_screen_get_format(machine->primary_screen));
43   bg_bitmap = auto_bitmap_alloc(machine,512*4,256,video_screen_get_format(machine->primary_screen));
4444}
4545
4646
src/mame/video/nbmj8991.c
r4679r4680
307307   int height = video_screen_get_height(machine->primary_screen);
308308
309309   nbmj8991_tmpbitmap = video_screen_auto_bitmap_alloc(machine->primary_screen);
310   nbmj8991_videoram = auto_malloc(width * height * sizeof(UINT8));
311   nbmj8991_clut = auto_malloc(0x800 * sizeof(UINT8));
310   nbmj8991_videoram = auto_alloc_array(machine, UINT8, width * height);
311   nbmj8991_clut = auto_alloc_array(machine, UINT8, 0x800);
312312   memset(nbmj8991_videoram, 0x00, (width * height * sizeof(UINT8)));
313313}
314314
src/mame/video/esripsys.c
r4679r4680
4747
4848INTERRUPT_GEN( esripsys_vblank_irq )
4949{
50   cpu_set_input_line(device->machine->cpu[ESRIPSYS_GAME_CPU], M6809_IRQ_LINE, ASSERT_LINE);
50   cputag_set_input_line(device->machine, "game_cpu", M6809_IRQ_LINE, ASSERT_LINE);
5151   esripsys_frame_vbl = 0;
5252}
5353
r4679r4680
5858   if (video_firq)
5959   {
6060      video_firq = 0;
61      cpu_set_input_line(machine->cpu[ESRIPSYS_GAME_CPU], M6809_FIRQ_LINE, CLEAR_LINE);
61      cputag_set_input_line(machine, "game_cpu", M6809_FIRQ_LINE, CLEAR_LINE);
6262   }
6363
6464   /* Not sure if this is totally accurate - I couldn't find the circuit that generates the FIRQs! */
6565   if (!(v % 6) && v && esripsys_video_firq_en && v < ESRIPSYS_VBLANK_START)
6666   {
6767      video_firq = 1;
68      cpu_set_input_line(machine->cpu[ESRIPSYS_GAME_CPU], M6809_FIRQ_LINE, ASSERT_LINE);
68      cputag_set_input_line(machine, "game_cpu", M6809_FIRQ_LINE, ASSERT_LINE);
6969   }
7070
7171   /* Adjust for next scanline */
r4679r4680
9595   int i;
9696
9797   /* Allocate memory for the two 512-pixel line buffers */
98   line_buffer[0].colour_buf = auto_malloc(512);
99   line_buffer[0].intensity_buf = auto_malloc(512);
100   line_buffer[0].priority_buf = auto_malloc(512);
98   line_buffer[0].colour_buf = auto_alloc_array(machine, UINT8, 512);
99   line_buffer[0].intensity_buf = auto_alloc_array(machine, UINT8, 512);
100   line_buffer[0].priority_buf = auto_alloc_array(machine, UINT8, 512);
101101
102   line_buffer[1].colour_buf = auto_malloc(512);
103   line_buffer[1].intensity_buf = auto_malloc(512);
104   line_buffer[1].priority_buf = auto_malloc(512);
102   line_buffer[1].colour_buf = auto_alloc_array(machine, UINT8, 512);
103   line_buffer[1].intensity_buf = auto_alloc_array(machine, UINT8, 512);
104   line_buffer[1].priority_buf = auto_alloc_array(machine, UINT8, 512);
105105
106106   /* Create and initialise the HBLANK timers */
107107   hblank_start_timer = timer_alloc(machine, hblank_start_callback, NULL);
r4679r4680
109109   timer_adjust_oneshot(hblank_start_timer, video_screen_get_time_until_pos(machine->primary_screen, 0, ESRIPSYS_HBLANK_START), 0);
110110
111111   /* Create the sprite scaling table */
112   scale_table = auto_malloc(64 * 64);
112   scale_table = auto_alloc_array(machine, UINT8, 64 * 64);
113113
114114   for (i = 0; i < 64; ++i)
115115   {
r4679r4680
142142   }
143143
144144   /* Now create a lookup table for scaling the sprite 'fig' value */
145   fig_scale_table = auto_malloc(1024 * 64);
145   fig_scale_table = auto_alloc_array(machine, UINT8, 1024 * 64);
146146
147147   for (i = 0; i < 1024; ++i)
148148   {
src/mame/video/splash.c
r4679r4680
7878
7979***************************************************************************/
8080
81READ16_HANDLER( splash_vram_r )
82{
83   return splash_videoram[offset];
84}
85
8681WRITE16_HANDLER( splash_vram_w )
8782{
8883   COMBINE_DATA(&splash_videoram[offset]);
src/mame/video/namcos2.c
r4679r4680
394394VIDEO_START( luckywld )
395395{
396396   namco_tilemap_init(machine,2,memory_region(machine, "gfx4"),TilemapCB);
397   namco_obj_init( 0, 0x0, NULL );
397   namco_obj_init( machine, 0, 0x0, NULL );
398398   if( namcos2_gametype==NAMCOS2_LUCKY_AND_WILD )
399399   {
400400      namco_roz_init( machine, 1, "gfx5" );
r4679r4680
435435VIDEO_START( sgunner )
436436{
437437   namco_tilemap_init(machine,2,memory_region(machine, "gfx4"),TilemapCB);
438   namco_obj_init( 0, 0x0, NULL );
438   namco_obj_init( machine, 0, 0x0, NULL );
439439}
440440
441441VIDEO_UPDATE( sgunner )
src/mame/video/exidy440.c
r4679r4680
6666   exidy440_firq_beam = 0;
6767
6868   /* allocate a buffer for VRAM */
69   local_videoram = auto_malloc(256 * 256 * 2);
69   local_videoram = auto_alloc_array(machine, UINT8, 256 * 256 * 2);
7070   memset(local_videoram, 0, 256 * 256 * 2);
7171
7272   /* allocate a buffer for palette RAM */
73   local_paletteram = auto_malloc(512 * 2);
73   local_paletteram = auto_alloc_array(machine, UINT8, 512 * 2);
7474   memset(local_paletteram, 0, 512 * 2);
7575}
7676
r4679r4680
244244static void exidy440_update_firq(running_machine *machine)
245245{
246246   if (exidy440_firq_vblank || (firq_enable && exidy440_firq_beam))
247      cpu_set_input_line(machine->cpu[0], 1, ASSERT_LINE);
247      cputag_set_input_line(machine, "maincpu", 1, ASSERT_LINE);
248248   else
249      cpu_set_input_line(machine->cpu[0], 1, CLEAR_LINE);
249      cputag_set_input_line(machine, "maincpu", 1, CLEAR_LINE);
250250}
251251
252252
src/mame/video/tx1.c
r4679r4680
3434*/
3535static TIMER_CALLBACK( interrupt_callback )
3636{
37   cpu_set_input_line_and_vector(machine->cpu[0], 0, HOLD_LINE, 0xff);
37   cputag_set_input_line_and_vector(machine, "main_cpu", 0, HOLD_LINE, 0xff);
3838   timer_adjust_oneshot(interrupt_timer, video_screen_get_time_until_pos(machine->primary_screen, CURSOR_YPOS, CURSOR_XPOS), 0);
3939}
4040
r4679r4680
11221122VIDEO_START( tx1 )
11231123{
11241124   /* Allocate a large bitmap that covers the three screens */
1125   tx1_bitmap = auto_bitmap_alloc(768, 256, BITMAP_FORMAT_INDEXED16);
1125   tx1_bitmap = auto_bitmap_alloc(machine, 768, 256, BITMAP_FORMAT_INDEXED16);
11261126   tx1_texture = render_texture_alloc(NULL, NULL);
11271127
11281128   /* Allocate some bitmaps */
1129   tx1_chr_bmp = auto_malloc(sizeof(UINT8) * 256 * 3 * 240);
1130   tx1_obj_bmp = auto_malloc(sizeof(UINT8) * 256 * 3 * 240);
1131   tx1_rod_bmp = auto_malloc(sizeof(UINT8) * 256 * 3 * 240);
1129   tx1_chr_bmp = auto_alloc_array(machine, UINT8, 256 * 3 * 240);
1130   tx1_obj_bmp = auto_alloc_array(machine, UINT8, 256 * 3 * 240);
1131   tx1_rod_bmp = auto_alloc_array(machine, UINT8, 256 * 3 * 240);
11321132
11331133   /* Set a timer to run the interrupts */
11341134   interrupt_timer = timer_alloc(machine, interrupt_callback, NULL);
r4679r4680
29392939      }
29402940      case 0xe0:
29412941      {
2942         cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_TEST, CLEAR_LINE);
2942         cputag_set_input_line(space->machine, "math_cpu", INPUT_LINE_TEST, CLEAR_LINE);
29432943         vregs.flags = data;
29442944         break;
29452945      }
r4679r4680
30453045VIDEO_START( buggyboy )
30463046{
30473047   /* Allocate some bitmaps */
3048   bb_chr_bmp = auto_malloc(sizeof(UINT8) * 3 * 256 * 240);
3049   bb_obj_bmp = auto_malloc(sizeof(UINT8) * 3 * 256 * 240);
3050   bb_rod_bmp = auto_malloc(sizeof(UINT8) * 3 * 256 * 240);
3048   bb_chr_bmp = auto_alloc_array(machine, UINT8, 3 * 256 * 240);
3049   bb_obj_bmp = auto_alloc_array(machine, UINT8, 3 * 256 * 240);
3050   bb_rod_bmp = auto_alloc_array(machine, UINT8, 3 * 256 * 240);
30513051
30523052   /* Set a timer to run the interrupts */
30533053   interrupt_timer = timer_alloc(machine, interrupt_callback, NULL);
r4679r4680
30593059VIDEO_START( buggybjr )
30603060{
30613061   /* Allocate some bitmaps */
3062   bb_chr_bmp = auto_malloc(sizeof(UINT8) * 256 * 240);
3063   bb_obj_bmp = auto_malloc(sizeof(UINT8) * 256 * 240);
3064   bb_rod_bmp = auto_malloc(sizeof(UINT8) * 256 * 240);
3062   bb_chr_bmp = auto_alloc_array(machine, UINT8, 256 * 240);
3063   bb_obj_bmp = auto_alloc_array(machine, UINT8, 256 * 240);
3064   bb_rod_bmp = auto_alloc_array(machine, UINT8, 256 * 240);
30653065
30663066   /* Set a timer to run the interrupts */
30673067   interrupt_timer = timer_alloc(machine, interrupt_callback, NULL);
src/mame/video/blstroid.c
r4679r4680
9898
9999static TIMER_CALLBACK( irq_off )
100100{
101   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
101   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
102102
103103   /* clear the interrupt */
104104   atarigen_scanline_int_ack_w(space, 0, 0, 0xffff);
r4679r4680
108108static TIMER_CALLBACK( irq_on )
109109{
110110   /* generate the interrupt */
111   atarigen_scanline_int_gen(machine->cpu[0]);
111   atarigen_scanline_int_gen(cputag_get_cpu(machine, "maincpu"));
112112   atarigen_update_interrupts(machine);
113113}
114114
src/mame/video/tatsumi.c
r4679r4680
206206VIDEO_START( apache3 )
207207{
208208   tx_layer = tilemap_create(machine, get_text_tile_info,tilemap_scan_rows,8,8,64,64);
209   shadow_pen_array = auto_malloc(8192);
210   temp_bitmap = auto_bitmap_alloc(512, 512, BITMAP_FORMAT_RGB32);
211   apache3_road_x_ram = auto_malloc(512 * sizeof(UINT16));
209   shadow_pen_array = auto_alloc_array_clear(machine, UINT8, 8192);
210   temp_bitmap = auto_bitmap_alloc(machine, 512, 512, BITMAP_FORMAT_RGB32);
211   apache3_road_x_ram = auto_alloc_array(machine, UINT8, 512);
212212
213   memset(shadow_pen_array, 0, 8192);
214213   tilemap_set_transparent_pen(tx_layer,0);
215214}
216215
217216VIDEO_START( roundup5 )
218217{
219218   tx_layer = tilemap_create(machine, get_text_tile_info,tilemap_scan_rows,8,8,128,64);
220   shadow_pen_array = auto_malloc(8192);
221   roundup5_vram = auto_malloc(0x48000 * 4);
219   shadow_pen_array = auto_alloc_array_clear(machine, UINT8, 8192);
220   roundup5_vram = auto_alloc_array(machine, UINT16, (0x48000 * 4)/2);
222221
223   memset(shadow_pen_array, 0, 8192);
224222   tilemap_set_transparent_pen(tx_layer,0);
225223
226224   gfx_element_set_source(machine->gfx[1], (UINT8 *)roundup5_vram);
r4679r4680
234232   layer2 = tilemap_create(machine, get_tile_info_bigfight_1,tilemap_scan_rows,8,8,64,512);
235233   layer3 = tilemap_create(machine, get_tile_info_bigfight_1,tilemap_scan_rows,8,8,64,512);
236234
237   shadow_pen_array = auto_malloc(8192);
238   memset(shadow_pen_array, 0, 8192);
235   shadow_pen_array = auto_alloc_array_clear(machine, UINT8, 8192);
239236}
240237
241238VIDEO_START( bigfight )
r4679r4680
245242   layer2 = tilemap_create(machine, get_tile_info_bigfight_1,tilemap_scan_rows,8,8,128,256);
246243   layer3 = tilemap_create(machine, get_tile_info_bigfight_1,tilemap_scan_rows,8,8,128,256);
247244
248   shadow_pen_array = auto_malloc(8192);
249   memset(shadow_pen_array, 0, 8192);
245   shadow_pen_array = auto_alloc_array_clear(machine, UINT8, 8192);
250246}
251247
252248/********************************************************************/
src/mame/video/konamiic.c
r4679r4680
15221522   K007342_tilemap[0] = tilemap_create(machine, K007342_get_tile_info0,K007342_scan,8,8,64,32);
15231523   K007342_tilemap[1] = tilemap_create(machine, K007342_get_tile_info1,K007342_scan,8,8,64,32);
15241524
1525   K007342_ram = auto_malloc(0x2000);
1526   K007342_scroll_ram = auto_malloc(0x0200);
1525   K007342_ram = auto_alloc_array(machine, UINT8, 0x2000);
1526   K007342_scroll_ram = auto_alloc_array(machine, UINT8, 0x0200);
15271527
15281528   memset(K007342_ram,0,0x2000);
15291529
r4679r4680
16971697{
16981698   K007420_gfx = machine->gfx[gfxnum];
16991699   K007420_callback = callback;
1700   K007420_ram = auto_malloc(0x200);
1700   K007420_ram = auto_alloc_array_clear(machine, UINT8, 0x200);
17011701
1702   memset(K007420_ram,0,0x200);
1703
17041702   K007420_banklimit = -1;
17051703
17061704   state_save_register_global_pointer(machine, K007420_ram, 0x0200);
r4679r4680
20412039   K052109_tilemap[1] = tilemap_create(machine, K052109_get_tile_info1,tilemap_scan_rows,8,8,64,32);
20422040   K052109_tilemap[2] = tilemap_create(machine, K052109_get_tile_info2,tilemap_scan_rows,8,8,64,32);
20432041
2044   K052109_ram = auto_malloc(0x6000);
2042   K052109_ram = auto_alloc_array(machine, UINT8, 0x6000);
20452043
20462044   memset(K052109_ram,0,0x6000);
20472045
r4679r4680
25492547   K051960_memory_region = gfx_memory_region;
25502548   K051960_gfx = machine->gfx[gfx_index];
25512549   K051960_callback = callback;
2552   K051960_ram = auto_malloc(0x400);
2553   memset(K051960_ram,0,0x400);
2550   K051960_ram = auto_alloc_array_clear(machine, UINT8, 0x400);
25542551
25552552   state_save_register_global(machine, K051960_romoffset);
25562553   state_save_register_global(machine, K051960_spriteflip);
r4679r4680
30463043   K053245_callback[chip] = callback;
30473044   K053244_rombank[chip] = 0;
30483045   K053245_ramsize[chip] = 0x800;
3049   K053245_ram[chip] = auto_malloc(K053245_ramsize[chip]);
3046   K053245_ram[chip] = auto_alloc_array_clear(machine, UINT16, K053245_ramsize[chip]/2);
30503047   K053245_dx[chip] = K053245_dy[chip] = 0;
30513048
3052   K053245_buffer[chip] = auto_malloc(K053245_ramsize[chip]);
3049   K053245_buffer[chip] = auto_alloc_array_clear(machine, UINT16, K053245_ramsize[chip]/2);
30533050
3054   memset(K053245_ram[chip],0,K053245_ramsize[chip]);
3055   memset(K053245_buffer[chip],0,K053245_ramsize[chip]);
3056
30573051   state_save_register_item_pointer(machine, "K053245", NULL, chip, K053245_ram[chip], K053245_ramsize[chip] / 2);
30583052   state_save_register_item_pointer(machine, "K053245", NULL, chip, K053245_buffer[chip], K053245_ramsize[chip] / 2);
30593053   state_save_register_item(machine, "K053245", NULL, chip, K053244_rombank[chip]);
r4679r4680
38123806   K053247_gfx = machine->gfx[gfx_index];
38133807   K053247_callback = callback;
38143808   K053246_OBJCHA_line = CLEAR_LINE;
3815   K053247_ram = auto_malloc(0x1000);
3809   K053247_ram = auto_alloc_array(machine, UINT16, 0x1000/2);
38163810
38173811   memset(K053247_ram,  0, 0x1000);
38183812   memset(K053246_regs, 0, 8);
r4679r4680
38933887      size4 = (memory_region_length(machine, gfx_memory_region)/(1024*1024))/5;
38943888      size4 *= 4*1024*1024;
38953889      /* set the # of tiles based on the 4bpp section */
3896      K055673_rom = auto_malloc(size4 * 5);
3890      K055673_rom = auto_alloc_array(machine, UINT16, size4 * 5 / 2);
38973891      d = (UINT8 *)K055673_rom;
38983892      // now combine the graphics together to form 5bpp
38993893      s1 = memory_region(machine, gfx_memory_region); // 4bpp area
r4679r4680
39413935   K053247_gfx = machine->gfx[gfx_index];
39423936   K053247_callback = callback;
39433937   K053246_OBJCHA_line = CLEAR_LINE;
3944   K053247_ram = auto_malloc(0x1000);
3938   K053247_ram = auto_alloc_array(machine, UINT16, 0x1000/2);
39453939
39463940   memset(K053247_ram,  0, 0x1000);
39473941   memset(K053246_regs, 0, 8);
r4679r4680
46984692
46994693   K051316_tilemap[chip] = tilemap_create(machine, get_tile_info[chip],tilemap_scan_rows,16,16,32,32);
47004694
4701   K051316_ram[chip] = auto_malloc(0x800);
4695   K051316_ram[chip] = auto_alloc_array(machine, UINT8, 0x800);
47024696
47034697   if (!pen_is_mask)
47044698      tilemap_set_transparent_pen(K051316_tilemap[chip],transparent_pen);
r4679r4680
57835777      K056832_PageTileMode[i] = 1;
57845778   }
57855779
5786   K056832_videoram = auto_malloc(0x2000 * (K056832_PAGE_COUNT+1));
5780   K056832_videoram = auto_alloc_array(machine, UINT16, 0x2000 * (K056832_PAGE_COUNT+1) / 2);
57875781
57885782   K056832_tilemap[0x0] = tilemap_create(machine, K056832_get_tile_info0, tilemap_scan_rows,  8, 8, 64, 32);
57895783   K056832_tilemap[0x1] = tilemap_create(machine, K056832_get_tile_info1, tilemap_scan_rows,  8, 8, 64, 32);
r4679r4680
74587452/*                                                                         */
74597453/***************************************************************************/
74607454
7455struct K053250_CHIPTAG
7456{
7457   UINT8 regs[8];
7458   UINT8 *base;
7459   UINT16 *ram, *rammax;
7460   UINT16 *buffer[2];
7461   UINT32 rommask;
7462   int page[2];
7463   int frame, offsx, offsy;
7464};
7465
74617466static struct
74627467{
74637468   int chips;
7464   struct K053250_CHIPTAG
7465   {
7466      UINT8 regs[8];
7467      UINT8 *base;
7468      UINT16 *ram, *rammax;
7469      UINT16 *buffer[2];
7470      UINT32 rommask;
7471      int page[2];
7472      int frame, offsx, offsy;
7473   } chip[2];
7469   struct K053250_CHIPTAG chip[2];
74747470} K053250_info;
74757471
74767472void K053250_set_LayerOffset(int chip, int offsx, int offsy)
r4679r4680
75287524   for(chip=0; chip<chips; chip++)
75297525   {
75307526      K053250_info.chip[chip].base = memory_region(machine, region[chip]);
7531      ram = auto_malloc(0x6000);
7527      ram = auto_alloc_array(machine, UINT16, 0x6000/2);
75327528      K053250_info.chip[chip].ram = ram;
75337529      K053250_info.chip[chip].rammax = ram + 0x800;
75347530      K053250_info.chip[chip].buffer[0] = ram + 0x2000;
src/mame/video/dotrikun.c
r4679r4680
2121}
2222
2323
24VIDEO_START( dotrikun )
25{
26   state_save_register_global(machine, color);
27}
28
2429VIDEO_UPDATE( dotrikun )
2530{
2631   int offs;
src/mame/video/harddriv.c
r4679r4680
7878   gfx_palettebank = 0;
7979
8080   /* allocate the mask table */
81   mask_table = auto_malloc(sizeof(UINT32) * 4 * 65536);
81   mask_table = auto_alloc_array(machine, UINT32, 4 * 65536);
8282
8383   /* fill in the mask table */
8484   destmask = mask_table;
src/mame/video/m72.c
r4679r4680
115115   state_save_register_global(machine, scrolly1);
116116   state_save_register_global(machine, scrollx2);
117117   state_save_register_global(machine, scrolly2);
118   state_save_register_global_pointer(machine, m72_spriteram, spriteram_size);
118   state_save_register_global_pointer(machine, m72_spriteram, spriteram_size/2);
119119}
120120
121121
r4679r4680
124124   bg_tilemap = tilemap_create(machine, m72_get_bg_tile_info,tilemap_scan_rows,8,8,64,64);
125125   fg_tilemap = tilemap_create(machine, m72_get_fg_tile_info,tilemap_scan_rows,8,8,64,64);
126126
127   m72_spriteram = auto_malloc(spriteram_size);
127   m72_spriteram = auto_alloc_array(machine, UINT16, spriteram_size/2);
128128
129129   tilemap_set_transmask(fg_tilemap,0,0xffff,0x0001);
130130   tilemap_set_transmask(fg_tilemap,1,0x00ff,0xff01);
r4679r4680
151151   bg_tilemap = tilemap_create(machine, rtype2_get_bg_tile_info,tilemap_scan_rows,8,8,64,64);
152152   fg_tilemap = tilemap_create(machine, rtype2_get_fg_tile_info,tilemap_scan_rows,8,8,64,64);
153153
154   m72_spriteram = auto_malloc(spriteram_size);
154   m72_spriteram = auto_alloc_array(machine, UINT16, spriteram_size/2);
155155
156156   tilemap_set_transmask(fg_tilemap,0,0xffff,0x0001);
157157   tilemap_set_transmask(fg_tilemap,1,0x00ff,0xff01);
r4679r4680
190190   bg_tilemap = tilemap_create(machine, rtype2_get_bg_tile_info,majtitle_scan_rows,8,8,128,64);
191191   fg_tilemap = tilemap_create(machine, rtype2_get_fg_tile_info,tilemap_scan_rows,8,8,64,64);
192192
193   m72_spriteram = auto_malloc(spriteram_size);
193   m72_spriteram = auto_alloc_array(machine, UINT16, spriteram_size/2);
194194
195195   tilemap_set_transmask(fg_tilemap,0,0xffff,0x0001);
196196   tilemap_set_transmask(fg_tilemap,1,0x00ff,0xff01);
r4679r4680
216216   bg_tilemap = tilemap_create(machine, hharry_get_bg_tile_info,tilemap_scan_rows,8,8,64,64);
217217   fg_tilemap = tilemap_create(machine, m72_get_fg_tile_info,   tilemap_scan_rows,8,8,64,64);
218218
219   m72_spriteram = auto_malloc(spriteram_size);
219   m72_spriteram = auto_alloc_array(machine, UINT16, spriteram_size/2);
220220
221221   tilemap_set_transmask(fg_tilemap,0,0xffff,0x0001);
222222   tilemap_set_transmask(fg_tilemap,1,0x00ff,0xff01);
src/mame/video/madalien.c
r4679r4680
164164      tilemap_set_scrolldy(tilemap_edge2[i], 0, video_screen_get_height(machine->primary_screen) - 256);
165165   }
166166
167   headlight_bitmap = auto_bitmap_alloc(128, 128, BITMAP_FORMAT_INDEXED16);
167   headlight_bitmap = auto_bitmap_alloc(machine, 128, 128, BITMAP_FORMAT_INDEXED16);
168168
169169   gfx_element_set_source(machine->gfx[0], madalien_charram);
170170
src/mame/video/aeroboto.c
r4679r4680
5858
5959      rom = memory_region(machine, "gfx2");
6060      length = memory_region_length(machine, "gfx2");
61      temp = malloc_or_die(length);
61      temp = alloc_array_or_die(UINT8, length);
6262      memcpy(temp, rom, length);
6363
6464      for (i=0; i<length; i++) rom[(i&~0xff)+(i<<5&0xe0)+(i>>3&0x1f)] = temp[i];
src/mame/video/crgolf.c
r4679r4680
104104static VIDEO_START( crgolf )
105105{
106106   /* allocate memory for the two bitmaps */
107   crgolf_videoram_a = auto_malloc(VIDEORAM_SIZE);
108   crgolf_videoram_b = auto_malloc(VIDEORAM_SIZE);
107   crgolf_videoram_a = auto_alloc_array(machine, UINT8, VIDEORAM_SIZE);
108   crgolf_videoram_b = auto_alloc_array(machine, UINT8, VIDEORAM_SIZE);
109109
110110   /* register for save states */
111111   state_save_register_global_pointer(machine, crgolf_videoram_a, VIDEORAM_SIZE);
src/mame/video/toobin.c
r4679r4680
104104   tilemap_set_transparent_pen(atarigen_alpha_tilemap, 0);
105105
106106   /* allocate a playfield bitmap for rendering */
107   pfbitmap = auto_bitmap_alloc(video_screen_get_width(machine->primary_screen), video_screen_get_height(machine->primary_screen), BITMAP_FORMAT_INDEXED16);
107   pfbitmap = auto_bitmap_alloc(machine, video_screen_get_width(machine->primary_screen), video_screen_get_height(machine->primary_screen), BITMAP_FORMAT_INDEXED16);
108108}
109109
110110
src/mame/video/srumbler.c
r4679r4680
170170
171171VIDEO_EOF( srumbler )
172172{
173   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
173   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
174174
175175   buffer_spriteram_w(space,0,0);
176176}
src/mame/video/legionna.c
r4679r4680
167167   text_layer =       tilemap_create(machine, get_text_tile_info,tilemap_scan_rows,  8,8,64,32);
168168   legionna_layer_disable = 0x0000;
169169
170   legionna_scrollram16 = auto_malloc(0x60);
170   legionna_scrollram16 = auto_alloc_array(machine, UINT16, 0x60/2);
171171
172172   tilemap_set_transparent_pen(background_layer,15);
173173   tilemap_set_transparent_pen(midground_layer,15);
r4679r4680
183183   text_layer =       tilemap_create(machine, get_text_tile_info,tilemap_scan_rows,  8,8,64,32);
184184   legionna_layer_disable = 0x0000;
185185
186   legionna_scrollram16 = auto_malloc(0x60);
186   legionna_scrollram16 = auto_alloc_array(machine, UINT16, 0x60/2);
187187
188188   tilemap_set_transparent_pen(background_layer,15);
189189   tilemap_set_transparent_pen(midground_layer,15);
r4679r4680
199199   text_layer =       tilemap_create(machine, get_text_tile_info,tilemap_scan_rows,  8,8,64,32);
200200   legionna_layer_disable = 0x0000;
201201
202   legionna_scrollram16 = auto_malloc(0x60);
202   legionna_scrollram16 = auto_alloc_array(machine, UINT16, 0x60/2);
203203
204204   tilemap_set_transparent_pen(background_layer,15);
205205   tilemap_set_transparent_pen(midground_layer,15);
src/mame/video/mcr68.c
r4679r4680
8585   tilemap_set_transparent_pen(fg_tilemap, 0);
8686
8787   /* allocate memory for the assembled gfx data */
88   srcdata0 = auto_malloc(gfx0->total_elements * gfx0->width * gfx0->height);
89   srcdata2 = auto_malloc(gfx2->total_elements * gfx2->width * gfx2->height);
88   srcdata0 = auto_alloc_array(machine, UINT8, gfx0->total_elements * gfx0->width * gfx0->height);
89   srcdata2 = auto_alloc_array(machine, UINT8, gfx2->total_elements * gfx2->width * gfx2->height);
9090
9191   /* "colorize" each code */
9292   dest0 = srcdata0;
src/mame/video/mario.c
r4679r4680
7979
8080WRITE8_HANDLER( mario_videoram_w )
8181{
82   mario_state   *state = space->machine->driver_data;
82   mario_state   *state = (mario_state *)space->machine->driver_data;
8383
8484   state->videoram[offset] = data;
8585   tilemap_mark_tile_dirty(state->bg_tilemap, offset);
r4679r4680
8787
8888WRITE8_HANDLER( mario_gfxbank_w )
8989{
90   mario_state   *state = space->machine->driver_data;
90   mario_state   *state = (mario_state *)space->machine->driver_data;
9191
9292   if (state->gfx_bank != (data & 0x01))
9393   {
r4679r4680
9898
9999WRITE8_HANDLER( mario_palettebank_w )
100100{
101   mario_state   *state = space->machine->driver_data;
101   mario_state   *state = (mario_state *)space->machine->driver_data;
102102
103103   if (state->palette_bank != (data & 0x01))
104104   {
r4679r4680
109109
110110WRITE8_HANDLER( mario_scroll_w )
111111{
112   mario_state   *state = space->machine->driver_data;
112   mario_state   *state = (mario_state *)space->machine->driver_data;
113113
114114   state->gfx_scroll = data + 17;
115115}
116116
117117WRITE8_HANDLER( mario_flip_w )
118118{
119   mario_state   *state = space->machine->driver_data;
119   mario_state   *state = (mario_state *)space->machine->driver_data;
120120
121121   if (state->flip != (data & 0x01))
122122   {
r4679r4680
131131
132132static TILE_GET_INFO( get_bg_tile_info )
133133{
134   mario_state   *state = machine->driver_data;
134   mario_state   *state = (mario_state *)machine->driver_data;
135135   int code = state->videoram[tile_index] + 256 * state->gfx_bank;
136136   int color;
137137
r4679r4680
142142
143143VIDEO_START( mario )
144144{
145   mario_state   *state = machine->driver_data;
145   mario_state   *state = (mario_state *)machine->driver_data;
146146
147147   state->bg_tilemap = tilemap_create(machine, get_bg_tile_info, tilemap_scan_rows,
148148       8, 8, 32, 32);
r4679r4680
166166   /* TODO: draw_sprites should adopt the scanline logic from dkong.c
167167     * The schematics have the same logic for sprite buffering.
168168     */
169   mario_state   *state = machine->driver_data;
169   mario_state   *state = (mario_state *)machine->driver_data;
170170   int offs;
171171
172172   for (offs = 0;offs < state->spriteram_size;offs += 4)
r4679r4680
212212
213213VIDEO_UPDATE( mario )
214214{
215   mario_state   *state = screen->machine->driver_data;
215   mario_state   *state = (mario_state *)screen->machine->driver_data;
216216   int t;
217217
218218   t = input_port_read(screen->machine, "MONITOR");
src/mame/video/xmen.c
r4679r4680
6767   K053247_vh_start(machine,"gfx2",53,-2,NORMAL_PLANE_ORDER,xmen_sprite_callback);
6868   K053247_export_config(&K053247_ram, NULL, NULL, NULL, NULL);
6969
70   screen_left = auto_bitmap_alloc(64*8, 32*8, BITMAP_FORMAT_INDEXED16);
71   screen_right = auto_bitmap_alloc(64*8, 32*8, BITMAP_FORMAT_INDEXED16);
70   screen_left = auto_bitmap_alloc(machine, 64*8, 32*8, BITMAP_FORMAT_INDEXED16);
71   screen_right = auto_bitmap_alloc(machine, 64*8, 32*8, BITMAP_FORMAT_INDEXED16);
7272}
7373
7474
r4679r4680
163163/* my lefts and rights are mixed up in several places.. */
164164VIDEO_EOF( xmen6p )
165165{
166   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
166   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
167167   int layer[3];
168168   bitmap_t * renderbitmap;
169169   rectangle cliprect;
r4679r4680
178178//  cliprect.max_y = visarea->max_y;
179179
180180   cliprect.min_x = 0;
181   cliprect.max_x = 64*8-1;
182   cliprect.min_y = 2*8;
183   cliprect.max_y = 30*8-1;
181   cliprect.max_x = 64 * 8 - 1;
182   cliprect.min_y = 2 * 8;
183   cliprect.max_y = 30 * 8 - 1;
184184
185185
186
187
188186   if (xmen_current_frame & 0x01)
189187   {
190188
191189         /* copy the desired spritelist to the chip */
192      memcpy(K053247_ram,xmen6p_spriteramright,0x1000);
190      memcpy(K053247_ram, xmen6p_spriteramright, 0x1000);
193191      /* we write the entire content of the tileram to the chip to ensure
194192           everything gets marked as dirty and the desired tilemap is rendered
195193
196194           this is not very efficient!
197195           */
198      for (offset=0;offset<(0xc000/2);offset++)
196      for (offset = 0; offset < (0xc000 / 2); offset++)
199197      {
200198//          K052109_lsb_w
201         K052109_w(space,offset,xmen6p_tilemapright[offset]&0x00ff);
199         K052109_w(space, offset, xmen6p_tilemapright[offset] & 0x00ff);
202200      }
203201
204202
r4679r4680
207205   else
208206   {
209207      /* copy the desired spritelist to the chip */
210      memcpy(K053247_ram,xmen6p_spriteramleft,0x1000);
208      memcpy(K053247_ram, xmen6p_spriteramleft, 0x1000);
211209
212210      /* we write the entire content of the tileram to the chip to ensure
213211           everything gets marked as dirty and the desired tilemap is rendered
214212
215213           this is not very efficient!
216214           */
217      for (offset=0;offset<(0xc000/2);offset++)
215      for (offset = 0; offset < (0xc000 / 2); offset++)
218216      {
219217//          K052109_lsb_w
220         K052109_w(space,offset,xmen6p_tilemapleft[offset]&0x00ff);
218         K052109_w(space, offset, xmen6p_tilemapleft[offset] & 0x00ff);
221219      }
222220
223221
224
225
226222      renderbitmap = screen_left;
227223   }
228224
r4679r4680
244240
245241   sortlayers(layer,layerpri);
246242
247   bitmap_fill(priority_bitmap,&cliprect,0);
243   bitmap_fill(priority_bitmap, &cliprect, 0);
248244   /* note the '+1' in the background color!!! */
249   bitmap_fill(renderbitmap,&cliprect,16 * bg_colorbase+1);
250   tilemap_draw(renderbitmap,&cliprect,K052109_tilemap[layer[0]],0,1);
251   tilemap_draw(renderbitmap,&cliprect,K052109_tilemap[layer[1]],0,2);
252   tilemap_draw(renderbitmap,&cliprect,K052109_tilemap[layer[2]],0,4);
245   bitmap_fill(renderbitmap, &cliprect, 16 * bg_colorbase + 1);
246   tilemap_draw(renderbitmap, &cliprect, K052109_tilemap[layer[0]], 0, 1);
247   tilemap_draw(renderbitmap, &cliprect, K052109_tilemap[layer[1]], 0, 2);
248   tilemap_draw(renderbitmap, &cliprect, K052109_tilemap[layer[2]], 0, 4);
253249
254250/* this isn't supported anymore and it is unsure if still needed; keeping here for reference
255251    pdrawgfx_shadow_lowpri = 1; fix shadows of boulders in front of feet */
256   K053247_sprites_draw(machine, renderbitmap,&cliprect);
257
252   K053247_sprites_draw(machine, renderbitmap, &cliprect);
258253}
259
src/mame/video/tecmo16.c
r4679r4680
6868   int height = video_screen_get_height(machine->primary_screen);
6969
7070   /* set up tile layers */
71   tile_bitmap_bg = auto_bitmap_alloc(width, height, BITMAP_FORMAT_INDEXED16);
72   tile_bitmap_fg = auto_bitmap_alloc(width, height, BITMAP_FORMAT_INDEXED16);
71   tile_bitmap_bg = auto_bitmap_alloc(machine, width, height, BITMAP_FORMAT_INDEXED16);
72   tile_bitmap_fg = auto_bitmap_alloc(machine, width, height, BITMAP_FORMAT_INDEXED16);
7373
7474   /* set up sprites */
75   sprite_bitmap = auto_bitmap_alloc(width, height, BITMAP_FORMAT_INDEXED16);
75   sprite_bitmap = auto_bitmap_alloc(machine, width, height, BITMAP_FORMAT_INDEXED16);
7676
7777   fg_tilemap = tilemap_create(machine, fg_get_tile_info,tilemap_scan_rows,16,16,32,32);
7878   bg_tilemap = tilemap_create(machine, bg_get_tile_info,tilemap_scan_rows,16,16,32,32);
r4679r4680
9393   int height = video_screen_get_height(machine->primary_screen);
9494
9595   /* set up tile layers */
96   tile_bitmap_bg = auto_bitmap_alloc(width, height, BITMAP_FORMAT_INDEXED16);
97   tile_bitmap_fg = auto_bitmap_alloc(width, height, BITMAP_FORMAT_INDEXED16);
96   tile_bitmap_bg = auto_bitmap_alloc(machine, width, height, BITMAP_FORMAT_INDEXED16);
97   tile_bitmap_fg = auto_bitmap_alloc(machine, width, height, BITMAP_FORMAT_INDEXED16);
9898
9999   /* set up sprites */
100   sprite_bitmap = auto_bitmap_alloc(width, height, BITMAP_FORMAT_INDEXED16);
100   sprite_bitmap = auto_bitmap_alloc(machine, width, height, BITMAP_FORMAT_INDEXED16);
101101
102102   fg_tilemap = tilemap_create(machine, fg_get_tile_info,tilemap_scan_rows,16,16,64,32);
103103   bg_tilemap = tilemap_create(machine, bg_get_tile_info,tilemap_scan_rows,16,16,64,32);
r4679r4680
116116   int height = video_screen_get_height(machine->primary_screen);
117117
118118   /* set up tile layers */
119   tile_bitmap_bg = auto_bitmap_alloc(width, height, BITMAP_FORMAT_INDEXED16);
120   tile_bitmap_fg = auto_bitmap_alloc(width, height, BITMAP_FORMAT_INDEXED16);
119   tile_bitmap_bg = auto_bitmap_alloc(machine, width, height, BITMAP_FORMAT_INDEXED16);
120   tile_bitmap_fg = auto_bitmap_alloc(machine, width, height, BITMAP_FORMAT_INDEXED16);
121121
122122   /* set up sprites */
123   sprite_bitmap = auto_bitmap_alloc(width, height, BITMAP_FORMAT_INDEXED16);
123   sprite_bitmap = auto_bitmap_alloc(machine, width, height, BITMAP_FORMAT_INDEXED16);
124124
125125   fg_tilemap = tilemap_create(machine, fg_get_tile_info,tilemap_scan_rows,16,16,64,32);
126126   bg_tilemap = tilemap_create(machine, bg_get_tile_info,tilemap_scan_rows,16,16,64,32);
r4679r4680
251251      const pen_t *paldata = machine->pens;
252252      UINT32 *end;
253253
254      UINT16 *sd1 = src1->base;                                    /* source data   */
255      UINT16 *sd2 = src2->base;
256      UINT16 *sd3 = src3->base;
254      UINT16 *sd1 = (UINT16 *)src1->base;                                    /* source data   */
255      UINT16 *sd2 = (UINT16 *)src2->base;
256      UINT16 *sd3 = (UINT16 *)src3->base;
257257
258258      int sw = ex-sx+1;                                          /* source width  */
259259      int sh = ey-sy+1;                                          /* source height */
src/mame/video/naughtyb.c
r4679r4680
110110   palreg = bankreg = 0;
111111
112112   /* Naughty Boy has a virtual screen twice as large as the visible screen */
113   tmpbitmap = auto_bitmap_alloc(68*8,28*8,video_screen_get_format(machine->primary_screen));
113   tmpbitmap = auto_bitmap_alloc(machine,68*8,28*8,video_screen_get_format(machine->primary_screen));
114114}
115115
116116
src/mame/video/gunbustr.c
r4679r4680
1818
1919VIDEO_START( gunbustr )
2020{
21   spritelist = auto_malloc(0x4000 * sizeof(*spritelist));
21   spritelist = auto_alloc_array(machine, struct tempsprite, 0x4000);
2222
2323   TC0480SCP_vh_start(machine,TC0480SCP_GFX_NUM,0,0x20,0x07,-1,-1,-1,0,0);
2424}
src/mame/video/phoenix.c
r4679r4680
178178
179179VIDEO_START( phoenix )
180180{
181   videoram_pg[0] = auto_malloc(0x1000);
182   videoram_pg[1] = auto_malloc(0x1000);
181   videoram_pg[0] = auto_alloc_array(machine, UINT8, 0x1000);
182   videoram_pg[1] = auto_alloc_array(machine, UINT8, 0x1000);
183183
184184   memory_configure_bank(machine, 1, 0, 1, videoram_pg[0], 0);
185185   memory_configure_bank(machine, 1, 1, 1, videoram_pg[1], 0);
src/mame/video/superqix.c
r4679r4680
6666
6767VIDEO_START( superqix )
6868{
69   fg_bitmap[0] = auto_bitmap_alloc(256, 256, video_screen_get_format(machine->primary_screen));
70   fg_bitmap[1] = auto_bitmap_alloc(256, 256, video_screen_get_format(machine->primary_screen));
69   fg_bitmap[0] = auto_bitmap_alloc(machine, 256, 256, video_screen_get_format(machine->primary_screen));
70   fg_bitmap[1] = auto_bitmap_alloc(machine, 256, 256, video_screen_get_format(machine->primary_screen));
7171   bg_tilemap = tilemap_create(machine, sqix_get_bg_tile_info, tilemap_scan_rows,  8, 8, 32, 32);
7272
7373   tilemap_set_transmask(bg_tilemap,0,0xffff,0x0000); /* split type 0 is totally transparent in front half */
src/mame/video/playch10.c
r4679r4680
5959
6060static void ppu_irq( const device_config *device, int *ppu_regs )
6161{
62   cpu_set_input_line(device->machine->cpu[1], INPUT_LINE_NMI, PULSE_LINE );
62   cputag_set_input_line(device->machine, "cart", INPUT_LINE_NMI, PULSE_LINE );
6363   pc10_int_detect = 1;
6464}
6565
src/mame/video/lockon.c
r4679r4680
115115static TIMER_CALLBACK( cursor_callback )
116116{
117117   if (lockon_main_inten)
118      cpu_set_input_line_and_vector(machine->cpu[MAIN_CPU], 0, HOLD_LINE, 0xff);
118      cputag_set_input_line_and_vector(machine, "maincpu", 0, HOLD_LINE, 0xff);
119119
120120   timer_adjust_oneshot(cursor_timer, video_screen_get_time_until_pos(machine->primary_screen, CURSOR_YPOS, CURSOR_XPOS), 0);
121121}
r4679r4680
329329
330330static TIMER_CALLBACK( bufend_callback )
331331{
332   cpu_set_input_line_and_vector(machine->cpu[GROUND_CPU], 0, HOLD_LINE, 0xff);
333   cpu_set_input_line(machine->cpu[OBJECT_CPU], NEC_INPUT_LINE_POLL, ASSERT_LINE);
332   cputag_set_input_line_and_vector(machine, "ground", 0, HOLD_LINE, 0xff);
333   cputag_set_input_line(machine, "object", NEC_INPUT_LINE_POLL, ASSERT_LINE);
334334}
335335
336336/* Get data for a each 8x8x3 ground tile */
r4679r4680
658658
659659READ16_HANDLER( lockon_obj_4000_r )
660660{
661   cpu_set_input_line(space->machine->cpu[OBJECT_CPU], NEC_INPUT_LINE_POLL, CLEAR_LINE);
661   cputag_set_input_line(space->machine, "object", NEC_INPUT_LINE_POLL, CLEAR_LINE);
662662   return 0xffff;
663663}
664664
r4679r4680
938938   tilemap_set_transparent_pen(lockon_tilemap, 0);
939939
940940   /* Allocate the two frame buffers for rotation */
941   back_buffer = auto_bitmap_alloc(512, 512, BITMAP_FORMAT_INDEXED16);
942   front_buffer = auto_bitmap_alloc(512, 512, BITMAP_FORMAT_INDEXED16);
941   back_buffer = auto_bitmap_alloc(machine, 512, 512, BITMAP_FORMAT_INDEXED16);
942   front_buffer = auto_bitmap_alloc(machine, 512, 512, BITMAP_FORMAT_INDEXED16);
943943
944944   /* 2kB of object ASIC palette RAM */
945   obj_pal_ram = auto_malloc(2048);
945   obj_pal_ram = auto_alloc_array(machine, UINT8, 2048);
946946
947947   /* Timer for ground display list callback */
948948   bufend_timer = timer_alloc(machine, bufend_callback, NULL);
src/mame/video/tigeroad.c
r4679r4680
166166
167167VIDEO_EOF( tigeroad )
168168{
169   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
169   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
170170
171   buffer_spriteram16_w(space,0,0,0xffff);
171   buffer_spriteram16_w(space, 0, 0, 0xffff);
172172}
src/mame/video/atari.c
r4679r4680
713713   LOG(("atari antic_vh_start\n"));
714714    memset(&antic, 0, sizeof(antic));
715715
716   antic.cclk_expand = auto_malloc(21 * 256 * sizeof(UINT32));
716   antic.cclk_expand = auto_alloc_array(machine, UINT32, 21 * 256);
717717
718718   antic.pf_21      = &antic.cclk_expand[ 0 * 256];
719719   antic.pf_x10b     = &antic.cclk_expand[ 1 * 256];
r4679r4680
725725   antic.pf_gtia2     = &antic.cclk_expand[19 * 256];
726726   antic.pf_gtia3     = &antic.cclk_expand[20 * 256];
727727
728   antic.used_colors = auto_malloc(21 * 256 * sizeof(UINT8));
728   antic.used_colors = auto_alloc_array(machine, UINT8, 21 * 256);
729729
730730   memset(antic.used_colors, 0, 21 * 256 * sizeof(UINT8));
731731
r4679r4680
748748
749749   for( i = 0; i < 64; i++ )
750750    {
751      antic.prio_table[i] = auto_malloc(8*256);
751      antic.prio_table[i] = auto_alloc_array(machine, UINT8, 8*256);
752752    }
753753
754754   LOG(("atari prio_init\n"));
r4679r4680
756756
757757   for( i = 0; i < video_screen_get_height(machine->primary_screen); i++ )
758758    {
759      antic.video[i] = auto_malloc(sizeof(VIDEO));
760      memset(antic.video[i], 0, sizeof(VIDEO));
759      antic.video[i] = auto_alloc_clear(machine, VIDEO);
761760    }
762761
763762    VIDEO_START_CALL(generic_bitmapped);
r4679r4680
10671066   {
10681067      LOG(("           @cycle #%3d issue DLI\n", cycle(machine)));
10691068      antic.r.nmist |= DLI_NMI;
1070      cpu_set_input_line(machine->cpu[0], INPUT_LINE_NMI, PULSE_LINE);
1069      cputag_set_input_line(machine, "maincpu", INPUT_LINE_NMI, PULSE_LINE);
10711070   }
10721071   else
10731072   {
r4679r4680
11621161   LOG(("           @cycle #%3d steal %d cycles\n", cycle(machine), antic.steal_cycles));
11631162   after(machine, antic.steal_cycles, antic_line_done, "antic_line_done");
11641163    antic.steal_cycles = 0;
1165   cpu_spinuntil_trigger( machine->cpu[0], TRIGGER_STEAL );
1164   cpu_spinuntil_trigger( cputag_get_cpu(machine, "maincpu"), TRIGGER_STEAL );
11661165}
11671166
11681167
r4679r4680
11761175 *****************************************************************************/
11771176static TIMER_CALLBACK( antic_scanline_render )
11781177{
1179   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
1178   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
11801179
11811180   VIDEO *video = antic.video[antic.scanline];
11821181   LOG(("           @cycle #%3d render mode $%X lines to go #%d\n", cycle(machine), (antic.cmd & 0x0f), antic.modelines));
r4679r4680
12461245     **************************************************************/
12471246    if( new_cmd & ANTIC_LMS )
12481247    {
1249       const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
1248       const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
12501249      int addr = RDANTIC(space);
12511250        antic.doffs = ++antic.doffs & DOFFS;
12521251        addr += 256 * RDANTIC(space);
r4679r4680
12711270 *****************************************************************************/
12721271static void antic_scanline_dma(running_machine *machine, int param)
12731272{
1274      const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
1273      const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
12751274   LOG(("           @cycle #%3d DMA fetch\n", cycle(machine)));
12761275   if (antic.scanline == VBL_END)
12771276      antic.r.nmist &= ~VBL_NMI;
r4679r4680
15291528         LOG(("           cause VBL NMI\n"));
15301529         /* set the VBL NMI status bit */
15311530         antic.r.nmist |= VBL_NMI;
1532         cpu_set_input_line(machine->cpu[0], INPUT_LINE_NMI, PULSE_LINE);
1531         cputag_set_input_line(machine, "maincpu", INPUT_LINE_NMI, PULSE_LINE);
15331532      }
15341533    }
15351534
src/mame/video/segas32.c
r4679r4680
290290   is_multi32 = multi32;
291291
292292   /* allocate a copy of spriteram in 32-bit format */
293   spriteram_32bit = auto_malloc(0x20000);
293   spriteram_32bit = auto_alloc_array(machine, UINT32, 0x20000/4);
294294
295295   /* allocate the tilemap cache */
296296   cache_head = NULL;
297297   for (tmap = 0; tmap < TILEMAP_CACHE_SIZE; tmap++)
298298   {
299      struct cache_entry *entry = auto_malloc(sizeof(struct cache_entry));
299      struct cache_entry *entry = auto_alloc(machine, struct cache_entry);
300300
301301      entry->tmap = tilemap_create(machine, get_tile_info, tilemap_scan_rows,  16,16, 32,16);
302302      entry->page = 0xff;
r4679r4680
310310   /* allocate the bitmaps (a few extra for multi32) */
311311   for (tmap = 0; tmap < 9 + 2 * multi32; tmap++)
312312   {
313      layer_data[tmap].bitmap = auto_bitmap_alloc(416, 224, BITMAP_FORMAT_INDEXED16);
314      layer_data[tmap].transparent = auto_malloc(sizeof(layer_data[tmap].transparent[0]) * 256);
315      memset(layer_data[tmap].transparent, 0, sizeof(layer_data[tmap].transparent[0]) * 256);
313      layer_data[tmap].bitmap = auto_bitmap_alloc(machine, 416, 224, BITMAP_FORMAT_INDEXED16);
314      layer_data[tmap].transparent = auto_alloc_array_clear(machine, UINT8, 256);
316315   }
317316
318317   /* allocate pre-rendered solid lines of 0's and ffff's */
319   solid_0000 = auto_malloc(sizeof(solid_0000[0]) * 512);
318   solid_0000 = auto_alloc_array(machine, UINT16, 512);
320319   memset(solid_0000, 0x00, sizeof(solid_0000[0]) * 512);
321   solid_ffff = auto_malloc(sizeof(solid_ffff[0]) * 512);
320   solid_ffff = auto_alloc_array(machine, UINT16, 512);
322321   memset(solid_ffff, 0xff, sizeof(solid_ffff[0]) * 512);
323322
324323   /* initialize videoram */
r4679r4680
584583         /*  D1 : Seems to be '1' only during an erase in progress, this
585584                     occurs very briefly though.
586585                D0 : Selected frame buffer (0= A, 1= B) */
587         return 0xfffc | (layer_data[MIXER_LAYER_SPRITES].bitmap < layer_data[MIXER_LAYER_SPRITES_2].bitmap);
586         return 0xfffc | (int)(layer_data[MIXER_LAYER_SPRITES].bitmap < layer_data[MIXER_LAYER_SPRITES_2].bitmap);
588587
589588      case 1:
590589         /*  D1 : ?
r4679r4680
793792
794793static TILE_GET_INFO( get_tile_info )
795794{
796   struct cache_entry *entry = param;
795   struct cache_entry *entry = (struct cache_entry *)param;
797796   UINT16 data = system32_videoram[(entry->page & 0x7f) * 0x200 + tile_index];
798797   SET_TILE_INFO(0, (entry->bank << 13) + (data & 0x1fff), (data >> 4) & 0x1ff, (data >> 14) & 3);
799798}
src/mame/video/psikyosh.c
r4679r4680
10811081{
10821082   int width = video_screen_get_width(machine->primary_screen);
10831083   int height = video_screen_get_height(machine->primary_screen);
1084   z_bitmap = auto_bitmap_alloc(width, height, BITMAP_FORMAT_INDEXED16);
1084   z_bitmap = auto_bitmap_alloc(machine, width, height, BITMAP_FORMAT_INDEXED16);
10851085
10861086   /* Need 16-bit z-buffer */
1087   zoom_bitmap = auto_bitmap_alloc(16*16, 16*16, BITMAP_FORMAT_INDEXED8);
1087   zoom_bitmap = auto_bitmap_alloc(machine, 16*16, 16*16, BITMAP_FORMAT_INDEXED8);
10881088
10891089   machine->gfx[1]->color_granularity=16; /* 256 colour sprites with palette selectable on 16 colour boundaries */
10901090
r4679r4680
11701170
11711171VIDEO_EOF( psikyosh )
11721172{
1173   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
1173   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
11741174
11751175   buffer_spriteram32_w(space,0,0,0xffffffff);
11761176}
src/mame/video/quizdna.c
r4679r4680
6161   quizdna_bg_xscroll[0] = 0;
6262   quizdna_bg_xscroll[1] = 0;
6363
64   quizdna_bg_ram = auto_malloc(0x2000);
65   quizdna_fg_ram = auto_malloc(0x1000);
64   quizdna_bg_ram = auto_alloc_array(machine, UINT8, 0x2000);
65   quizdna_fg_ram = auto_alloc_array(machine, UINT8, 0x1000);
6666
6767   quizdna_bg_tilemap = tilemap_create( machine, get_bg_tile_info,tilemap_scan_rows,8,8,64,32 );
6868   quizdna_fg_tilemap = tilemap_create( machine, get_fg_tile_info,tilemap_scan_rows,16,8,32,32 );
src/mame/video/kan_pand.c
r4679r4680
166166   pandora_region = region;
167167   pandora_xoffset = x;
168168   pandora_yoffset = y;
169   pandora_spriteram = auto_malloc(0x1000);
169   pandora_spriteram = auto_alloc_array(machine, UINT8, 0x1000);
170170   memset(pandora_spriteram,0x00, 0x1000);
171171
172172   pandora_sprites_bitmap = video_screen_auto_bitmap_alloc(machine->primary_screen);
src/mame/video/equites.c
r4679r4680
121121
122122VIDEO_START( equites )
123123{
124   equites_fg_videoram = (UINT8 *)auto_malloc(0x800);
124   equites_fg_videoram = auto_alloc_array(machine, UINT8, 0x800);
125125
126126   fg_tilemap = tilemap_create(machine, equites_fg_info, tilemap_scan_cols,  8, 8, 32, 32);
127127   tilemap_set_transparent_pen(fg_tilemap, 0);
r4679r4680
135135{
136136   assert(video_screen_get_format(machine->primary_screen) == BITMAP_FORMAT_INDEXED16);
137137
138   equites_fg_videoram = (UINT8 *)auto_malloc(0x800);
138   equites_fg_videoram = auto_alloc_array(machine, UINT8, 0x800);
139139
140140   fg_tilemap = tilemap_create(machine, splndrbt_fg_info, tilemap_scan_cols,  8, 8, 32, 32);
141141   tilemap_set_transparent_pen(fg_tilemap, 0);
src/mame/video/gradius3.c
r4679r4680
113113
114114VIDEO_UPDATE( gradius3 )
115115{
116   const address_space *space = cpu_get_address_space(screen->machine->cpu[0], ADDRESS_SPACE_PROGRAM);
116   const address_space *space = cputag_get_address_space(screen->machine, "maincpu", ADDRESS_SPACE_PROGRAM);
117117
118118   /* TODO: this kludge enforces the char banks. For some reason, they don't work otherwise. */
119119   K052109_w(space,0x1d80,0x10);
src/mame/video/decocass.c
r4679r4680
529529   rectangle clip;
530530
531531   if (0xc0 != (input_port_read(screen->machine, "IN2") & 0xc0))  /* coin slots assert an NMI */
532      cpu_set_input_line(screen->machine->cpu[0], INPUT_LINE_NMI, ASSERT_LINE);
532      cputag_set_input_line(screen->machine, "maincpu", INPUT_LINE_NMI, ASSERT_LINE);
533533
534534   if (0 == (watchdog_flip & 0x04))
535535      watchdog_reset(screen->machine);
src/mame/video/bfm_dm01.c
r4679r4680
204204
205205static WRITE8_HANDLER( unknown_w )
206206{
207   cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_NMI, CLEAR_LINE ); //?
207   cputag_set_input_line(space->machine, "matrix", INPUT_LINE_NMI, CLEAR_LINE ); //?
208208}
209209
210210///////////////////////////////////////////////////////////////////////////
r4679r4680
226226   data_avail = 1;
227227
228228  //pulse IRQ line
229   cpu_set_input_line(machine->cpu[1], M6809_IRQ_LINE, HOLD_LINE ); // trigger IRQ
229   cputag_set_input_line(machine, "matrix", M6809_IRQ_LINE, HOLD_LINE ); // trigger IRQ
230230}
231231
232232///////////////////////////////////////////////////////////////////////////
r4679r4680
240240
241241VIDEO_START( bfm_dm01 )
242242{
243   dm_bitmap = auto_bitmap_alloc(DM_BYTESPERROW*8, DM_MAXLINES,video_screen_get_format(machine->primary_screen));
243   dm_bitmap = auto_bitmap_alloc(machine, DM_BYTESPERROW*8, DM_MAXLINES,video_screen_get_format(machine->primary_screen));
244244}
245245
246246///////////////////////////////////////////////////////////////////////////
src/mame/video/mystwarr.c
r4679r4680
3030         break;
3131   assert(gfxnum != ARRAY_LENGTH(machine->gfx));
3232
33   decoded = auto_malloc(len);
33   decoded = auto_alloc_array(machine, UINT8, len);
3434   d = decoded;
3535
3636   // now convert the data into a drawable format so we can decode it
src/mame/video/fromance.c
r4679r4680
7878   flipscreen_old = -1;
7979
8080   /* allocate local videoram */
81   local_videoram[0] = auto_malloc(0x1000 * 3);
82   local_videoram[1] = auto_malloc(0x1000 * 3);
81   local_videoram[0] = auto_alloc_array(machine, UINT8, 0x1000 * 3);
82   local_videoram[1] = auto_alloc_array(machine, UINT8, 0x1000 * 3);
8383
8484   /* allocate local palette RAM */
85   local_paletteram = auto_malloc(0x800 * 2);
85   local_paletteram = auto_alloc_array(machine, UINT8, 0x800 * 2);
8686
8787   /* configure tilemaps */
8888   tilemap_set_transparent_pen(fg_tilemap,15);
r4679r4680
269269
270270static TIMER_CALLBACK( crtc_interrupt_gen )
271271{
272   cpu_set_input_line(machine->cpu[1], 0, HOLD_LINE);
272   cputag_set_input_line(machine, "sub", 0, HOLD_LINE);
273273   if (param != 0)
274274      timer_adjust_periodic(crtc_timer, attotime_div(video_screen_get_frame_period(machine->primary_screen), param), 0, attotime_div(video_screen_get_frame_period(machine->primary_screen), param));
275275}
src/mame/video/irobot.c
r4679r4680
100100{
101101   /* Setup 2 bitmaps for the polygon generator */
102102   int height = video_screen_get_height(machine->primary_screen);
103   polybitmap1 = auto_malloc(BITMAP_WIDTH * height);
104   polybitmap2 = auto_malloc(BITMAP_WIDTH * height);
103   polybitmap1 = auto_alloc_array(machine, UINT8, BITMAP_WIDTH * height);
104   polybitmap2 = auto_alloc_array(machine, UINT8, BITMAP_WIDTH * height);
105105
106106   /* clear the bitmaps so we start with valid palette look-up values for drawing */
107107   _irobot_poly_clear(machine, polybitmap1);
src/mame/video/neogeo.c
r4679r4680
708708      sprite_gfx_address_mask >>= 1;
709709   }
710710
711   sprite_gfx = auto_malloc(sprite_gfx_address_mask + 1);
712   memset(sprite_gfx, 0, sprite_gfx_address_mask + 1);
711   sprite_gfx = auto_alloc_array_clear(machine, UINT8, sprite_gfx_address_mask + 1);
713712
714713   src = memory_region(machine, "sprites");
715714   dest = sprite_gfx;
r4679r4680
858857VIDEO_START( neogeo )
859858{
860859   /* allocate memory not directly mapped */
861   palettes[0] = auto_malloc(NUM_PENS * sizeof(UINT16));
862   palettes[1] = auto_malloc(NUM_PENS * sizeof(UINT16));
863   pens = auto_malloc(NUM_PENS * sizeof(pen_t));
864   neogeo_videoram = auto_malloc(0x20000);
860   palettes[0] = auto_alloc_array(machine, UINT16, NUM_PENS);
861   palettes[1] = auto_alloc_array(machine, UINT16, NUM_PENS);
862   pens = auto_alloc_array(machine, pen_t, NUM_PENS);
863   neogeo_videoram = auto_alloc_array(machine, UINT16, 0x20000/2);
865864
866865   /* clear allocated memory */
867866   memset(palettes[0],0x00, NUM_PENS * sizeof(UINT16));
src/mame/video/combatsc.c
r4679r4680
264264   bg_tilemap[1] = tilemap_create(machine, get_tile_info1,tilemap_scan_rows,8,8,32,32);
265265   textlayer =  tilemap_create(machine, get_text_info, tilemap_scan_rows,     8,8,32,32);
266266
267   private_spriteram[0] = auto_malloc(0x800);
268   private_spriteram[1] = auto_malloc(0x800);
269   memset(private_spriteram[0],0,0x800);
270   memset(private_spriteram[1],0,0x800);
267   private_spriteram[0] = auto_alloc_array_clear(machine, UINT8, 0x800);
268   private_spriteram[1] = auto_alloc_array_clear(machine, UINT8, 0x800);
271269
272270      tilemap_set_transparent_pen(bg_tilemap[0],0);
273271      tilemap_set_transparent_pen(bg_tilemap[1],0);
r4679r4680
284282   bg_tilemap[1] = tilemap_create(machine, get_tile_info1_bootleg,tilemap_scan_rows,8,8,32,32);
285283   textlayer =  tilemap_create(machine, get_text_info_bootleg, tilemap_scan_rows,8,8,32,32);
286284
287   private_spriteram[0] = auto_malloc(0x800);
288   private_spriteram[1] = auto_malloc(0x800);
289   memset(private_spriteram[0],0,0x800);
290   memset(private_spriteram[1],0,0x800);
285   private_spriteram[0] = auto_alloc_array_clear(machine, UINT8, 0x800);
286   private_spriteram[1] = auto_alloc_array_clear(machine, UINT8, 0x800);
291287
292288      tilemap_set_transparent_pen(bg_tilemap[0],0);
293289      tilemap_set_transparent_pen(bg_tilemap[1],0);
r4679r4680
340336
341337static WRITE8_HANDLER( combascb_sh_irqtrigger_w )
342338{
343   soundlatch_w(space,offset,data);
344   cpu_set_input_line_and_vector(space->machine->cpu[1],0,HOLD_LINE,0xff);
339   soundlatch_w(space, offset, data);
340   cputag_set_input_line_and_vector(space->machine, "audiocpu", 0, HOLD_LINE, 0xff);
345341}
346342
347343static READ8_HANDLER( combascb_io_r )
r4679r4680
423419      }
424420      else
425421      {
426         memory_install_readwrite8_handler(space, 0x4000, 0x7fff, 0, 0, SMH_BANK1, SMH_UNMAP);   /* banked ROM */
422         memory_install_readwrite8_handler(space, 0x4000, 0x7fff, 0, 0, (read8_space_func)SMH_BANK(1), (write8_space_func)SMH_UNMAP);   /* banked ROM */
427423      }
428424   }
429425}
r4679r4680
431427MACHINE_RESET( combasc )
432428{
433429   UINT8 *MEM = memory_region(machine, "maincpu") + 0x38000;
434   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
430   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
435431
436432   combasc_io_ram  = MEM + 0x0000;
437433   combasc_page[0] = MEM + 0x4000;
r4679r4680
600596
601597static void bootleg_draw_sprites(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect, const UINT8 *source, int circuit )
602598{
603   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
599   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
604600   const gfx_element *gfx = machine->gfx[circuit+2];
605601
606602   int limit = ( circuit) ? (memory_read_byte(space, 0xc2)*256 + memory_read_byte(space, 0xc3)) : (memory_read_byte(space, 0xc0)*256 + memory_read_byte(space, 0xc1));
src/mame/video/ppu2c0x.c
r4679r4680
315315   chip->scan_scale = 1;
316316
317317   /* allocate a screen bitmap, videomem and spriteram, a dirtychar array and the monochromatic colortable */
318   chip->bitmap = auto_bitmap_alloc( VISIBLE_SCREEN_WIDTH, VISIBLE_SCREEN_HEIGHT, video_screen_get_format(device->machine->primary_screen));
319   chip->videomem = auto_malloc( VIDEOMEM_SIZE );
320   chip->videoram = auto_malloc( VIDEOMEM_SIZE );
321   chip->spriteram = auto_malloc( SPRITERAM_SIZE );
322   chip->colortable = auto_malloc( sizeof( default_colortable ) );
323   chip->colortable_mono = auto_malloc( sizeof( default_colortable_mono ) );
318   chip->bitmap = auto_bitmap_alloc(device->machine, VISIBLE_SCREEN_WIDTH, VISIBLE_SCREEN_HEIGHT, video_screen_get_format(device->machine->primary_screen));
319   chip->videomem = auto_alloc_array_clear(device->machine, UINT8, VIDEOMEM_SIZE );
320   chip->videoram = auto_alloc_array_clear(device->machine, UINT8, VIDEOMEM_SIZE );
321   chip->spriteram = auto_alloc_array_clear(device->machine, UINT8, SPRITERAM_SIZE );
322   chip->colortable = auto_alloc_array(device->machine, pen_t, ARRAY_LENGTH( default_colortable ) );
323   chip->colortable_mono = auto_alloc_array(device->machine, pen_t, ARRAY_LENGTH( default_colortable_mono ) );
324324
325   /* clear videomem & spriteram */
326   memset( chip->videomem, 0, VIDEOMEM_SIZE );
327   memset( chip->videoram, 0, VIDEOMEM_SIZE );
328   memset( chip->spriteram, 0, SPRITERAM_SIZE );
329325   memset( chip->videoram_banks_indices, 0xff, sizeof(chip->videoram_banks_indices) );
330326
331327   if ( intf->vram_enabled )
r4679r4680
376372
377373static TIMER_CALLBACK( hblank_callback )
378374{
379   const device_config *device = ptr;
375   const device_config *device = (const device_config *)ptr;
380376   ppu2c0x_chip *this_ppu = get_token(device);
381377   int *ppu_regs = &this_ppu->regs[0];
382378
r4679r4680
393389
394390static TIMER_CALLBACK( nmi_callback )
395391{
396   const device_config *device = ptr;
392   const device_config *device = (const device_config *)ptr;
397393   ppu2c0x_chip *this_ppu = get_token(device);
398394   const ppu2c0x_interface *intf = get_interface(device);
399395   int *ppu_regs = &this_ppu->regs[0];
r4679r4680
865861
866862static TIMER_CALLBACK( scanline_callback )
867863{
868   const device_config *device = ptr;
864   const device_config *device = (const device_config *)ptr;
869865   ppu2c0x_chip *this_ppu = get_token(device);
870866   int *ppu_regs = &this_ppu->regs[0];
871867   int blanked = ( ppu_regs[PPU_CONTROL1] & ( PPU_CONTROL1_BACKGROUND | PPU_CONTROL1_SPRITES ) ) == 0;
r4679r4680
15351531      case PPU2C0XINFO_INT_SCANLINES_PER_FRAME:      info->i = PPU_NTSC_SCANLINES_PER_FRAME;      break;
15361532
15371533      /* --- the following bits of info are returned as pointers to data or functions --- */
1538      case DEVINFO_FCT_SET_INFO:                  /* Nothing */                        break;
15391534      case DEVINFO_FCT_START:                     info->start = DEVICE_START_NAME(ppu2c0x);   break;
15401535      case DEVINFO_FCT_STOP:                     /* Nothing */                        break;
15411536      case DEVINFO_FCT_RESET:                     info->reset = DEVICE_RESET_NAME(ppu2c0x);   break;
src/mame/video/starshp1.c
r4679r4680
9494
9595   tilemap_set_scrollx(bg_tilemap, 0, -8);
9696
97   LSFR = auto_malloc(0x20000);
97   LSFR = auto_alloc_array(machine, UINT16, 0x10000);
9898
9999   for (i = 0; i < 0x10000; i++)
100100   {
r4679r4680
266266
267267static int get_radius(void)
268268{
269   return 6 * sqrt(starshp1_circle_size);  /* size calibrated by hand */
269   return 6 * sqrt((double)starshp1_circle_size);  /* size calibrated by hand */
270270}
271271static int get_circle_hpos(void)
272272{
src/mame/video/n64.c
r4679r4680
262262   if (LOG_RDP_EXECUTION)
263263      rdp_exec = fopen("rdp_execute.txt", "wt");
264264
265   texture_cache = auto_malloc(0x100000);
265   texture_cache = auto_alloc_array(machine, UINT8, 0x100000);
266266
267267   combiner_rgbsub_a_r[0] = combiner_rgbsub_a_r[1] = &one_color.r;
268268   combiner_rgbsub_a_g[0] = combiner_rgbsub_a_g[1] = &one_color.g;
src/mame/video/taito_f2.c
r4679r4680
8989   f2_hide_pixels = hide;
9090   f2_flip_hide_pixels = flip_hide;
9191
92   spriteram_delayed = auto_malloc(spriteram_size);
93   spriteram_buffered = auto_malloc(spriteram_size);
94   spritelist = auto_malloc(0x400 * sizeof(*spritelist));
92   spriteram_delayed = auto_alloc_array(machine, UINT16, spriteram_size/2);
93   spriteram_buffered = auto_alloc_array(machine, UINT16, spriteram_size/2);
94   spritelist = auto_alloc_array(machine, struct tempsprite, 0x400);
9595
9696   chips = TC0100SCN_count(machine);
9797
src/mame/video/gottlieb.c
r4679r4680
143143      SET_TILE_INFO(gottlieb_gfxcharhi, code, 0, 0);
144144}
145145
146static TILE_GET_INFO( get_screwloo_bg_tile_info )
147{
148   int code = videoram[tile_index];
149   if ((code & 0xc0) == 0)
150      SET_TILE_INFO(gottlieb_gfxcharlo, code, 0, 0);
151   else
152      SET_TILE_INFO(gottlieb_gfxcharhi, code, 0, 0);
153}
146154
155
147156VIDEO_START( gottlieb )
148157{
149158   static const int resistances[4] = { 2000, 1000, 470, 240 };
r4679r4680
170179   state_save_register_global(machine, transparent0);
171180}
172181
182VIDEO_START( screwloo )
183{
184   static const int resistances[4] = { 2000, 1000, 470, 240 };
173185
186   /* compute palette information */
187   /* note that there really are pullup/pulldown resistors, but this situation is complicated */
188   /* by the use of transistors, so we ignore that and just use the realtive resistor weights */
189   compute_resistor_weights(0,   255, -1.0,
190         4, resistances, weights, 180, 0,
191         4, resistances, weights, 180, 0,
192         4, resistances, weights, 180, 0);
193   transparent0 = FALSE;
174194
195   /* configure the background tilemap */
196   bg_tilemap = tilemap_create(machine, get_screwloo_bg_tile_info, tilemap_scan_rows, 8, 8, 32, 32);
197   tilemap_set_transparent_pen(bg_tilemap, 0);
198   tilemap_set_scrolldx(bg_tilemap, 0, 318 - 256);
199
200   gfx_element_set_source(machine->gfx[0], gottlieb_charram);
201
202   /* save some state */
203   state_save_register_global(machine, background_priority);
204   state_save_register_global(machine, spritebank);
205   state_save_register_global(machine, transparent0);
206}
207
208
209
175210/*************************************
176211 *
177212 *  Sprite rendering
src/mame/video/tubep.c
r4679r4680
367367
368368VIDEO_START( tubep )
369369{
370   spritemap = auto_malloc(256*256*2);
370   spritemap = auto_alloc_array(machine, UINT8, 256*256*2);
371371
372372   /* Set up save state */
373373   state_save_register_global(machine, romD_addr);
r4679r4680
442442
443443WRITE8_HANDLER( tubep_background_a000_w )
444444{
445   ls175_b7 = ((data&0x0f)^0x0f) | 0xf0;
445   ls175_b7 = ((data & 0x0f) ^ 0x0f) | 0xf0;
446446}
447447
448448
449449WRITE8_HANDLER( tubep_background_c000_w )
450450{
451   ls175_e8 = ((data&0x0f)^0x0f);
451   ls175_e8 = ((data & 0x0f) ^ 0x0f);
452452}
453453
454454
455455static TIMER_CALLBACK( sprite_timer_callback )
456456{
457   cpu_set_input_line(machine->cpu[3],0,ASSERT_LINE);
457   cputag_set_input_line(machine, "nsc", 0, ASSERT_LINE);
458458}
459459
460460
r4679r4680
583583            /SINT line will be reasserted in XSize * YSize cycles (RH0 signal cycles)
584584            */
585585         /* 1.clear the /SINT interrupt line */
586         cpu_set_input_line(space->machine->cpu[3],0,CLEAR_LINE);
586         cputag_set_input_line(space->machine, "nsc", 0, CLEAR_LINE);
587587
588588         /* 2.assert /SINT again after this time */
589589         timer_set( space->machine, attotime_mul(ATTOTIME_IN_HZ(19968000/8), (XSize+1)*(YSize+1)), NULL, 0, sprite_timer_callback);
r4679r4680
875875
876876   return 0;
877877}
878
src/mame/video/homedata.c
r4679r4680
132132   } /* for(;;) */
133133
134134finish:
135   cpu_set_input_line(space->machine->cpu[0],M6809_FIRQ_LINE,HOLD_LINE);
135   cputag_set_input_line(space->machine, "maincpu", M6809_FIRQ_LINE, HOLD_LINE);
136136}
137137
138138static void reikaids_handleblit( const address_space *space, int rom_base )
r4679r4680
232232   }
233233
234234finish:
235   cpu_set_input_line(space->machine->cpu[0],M6809_FIRQ_LINE,HOLD_LINE);
235   cputag_set_input_line(space->machine, "maincpu", M6809_FIRQ_LINE, HOLD_LINE);
236236}
237237
238238static void pteacher_handleblit( const address_space *space, int rom_base )
r4679r4680
320320   } /* for(;;) */
321321
322322finish:
323   cpu_set_input_line(space->machine->cpu[0],M6809_FIRQ_LINE,HOLD_LINE);
323   cputag_set_input_line(space->machine, "maincpu", M6809_FIRQ_LINE, HOLD_LINE);
324324}
325325
326326
src/mame/video/exidy.c
r4679r4680
5757   bitmap_format format = video_screen_get_format(machine->primary_screen);
5858
5959   background_bitmap = video_screen_auto_bitmap_alloc(machine->primary_screen);
60   motion_object_1_vid = auto_bitmap_alloc(16, 16, format);
61   motion_object_2_vid = auto_bitmap_alloc(16, 16, format);
62   motion_object_2_clip = auto_bitmap_alloc(16, 16, format);
60   motion_object_1_vid = auto_bitmap_alloc(machine, 16, 16, format);
61   motion_object_2_vid = auto_bitmap_alloc(machine, 16, 16, format);
62   motion_object_2_clip = auto_bitmap_alloc(machine, 16, 16, format);
6363
6464    state_save_register_global(machine, collision_mask);
6565    state_save_register_global(machine, collision_invert);
r4679r4680
111111READ8_HANDLER( exidy_interrupt_r )
112112{
113113   /* clear any interrupts */
114   cpu_set_input_line(space->machine->cpu[0], 0, CLEAR_LINE);
114   cputag_set_input_line(space->machine, "maincpu", 0, CLEAR_LINE);
115115
116116   /* return the latched condition */
117117   return int_condition;
r4679r4680
295295   latch_condition(machine, param);
296296
297297   /* set the IRQ line */
298   cpu_set_input_line(machine->cpu[0], 0, ASSERT_LINE);
298   cputag_set_input_line(machine, "maincpu", 0, ASSERT_LINE);
299299}
300300
301301
src/mame/video/hng64.c
r4679r4680
103103      int xpos, ypos, tileno,chainx,chainy,xflip;
104104      int xdrw,ydrw,pal,xinc,yinc,yflip;
105105      UINT32 zoomx,zoomy;
106      float foomX, foomY;
106      //float foomX, foomY;
107107      source-=8;
108108
109109      ypos = (source[0]&0xffff0000)>>16;
r4679r4680
129129
130130      /* Calculate the zoom */
131131      /* First, prevent any possible divide by zero errors */
132
133#if 0
132134      if(!zoomx) zoomx=0x1000;
133135      if(!zoomy) zoomy=0x1000;
134136
r4679r4680
140142
141143      zoomx += (int)((foomX - floor(foomX)) * (float)0x10000) ;
142144      zoomy += (int)((foomY - floor(foomY)) * (float)0x10000) ;
145#endif
143146
147      zoomx = 0x10000;
148      zoomy = 0x10000;
144149
145150      if (source[3]&0x00800000) // maybe ..
146151      {
r4679r4680
160165      // Accomodate for chaining and flipping
161166      if(xflip)
162167      {
163         xinc=-(int)(16.0f*foomX);
168         //xinc=-(int)(16.0f*foomX);
169
170         xinc=-16;
164171         xpos-=xinc*chainx;
165172      }
166173      else
167174      {
168         xinc=(int)(16.0f*foomX);
175         //xinc=(int)(16.0f*foomX);
176         xinc = 16;
169177      }
170178
171179      if(yflip)
172180      {
173         yinc=-(int)(16.0f*foomY);
181         //yinc=-(int)(16.0f*foomY);
182         yinc = -16;
174183         ypos-=yinc*chainy;
175184      }
176185      else
177186      {
178         yinc=(int)(16.0f*foomY);
187         yinc = 16;
188         //yinc=(int)(16.0f*foomY);
179189      }
180190
181191
r4679r4680
518528            // GEOMETRY
519529            ;
520530
521            threeDRoms = memory_region(machine, "gfx4") ;
531            threeDRoms = memory_region(machine, "verts") ;
522532
523533            /////////////////////////
524534            // GET THE HEADER INFO //
r4679r4680
937947}
938948
939949
940/* 8x8 tiles, 4bpp layer */
950/* 8x8x4bpp layer */
941951static TILE_GET_INFO( get_hng64_tile0_info )
942952{
943   int tileno,pal;
944   tileno = hng64_videoram[tile_index];
945   pal = hng64_videoram[tile_index]>>24;
946   SET_TILE_INFO((tileno&1)?0:1,(tileno&0x3fffff)>>1,pal,TILE_FLIPYX((tileno&0xc00000)>>22));
947}
953   UINT16 tilemapinfo = (hng64_videoregs[0x02]&0xffff0000)>>16;
954   int tileno,pal, flip;
948955
949/* 16x16 tiles, 8bpp layer */
950static TILE_GET_INFO( get_hng64_tile1_info )
951{
952   int tileno,pal;
953   tileno = hng64_videoram[tile_index+(0x10000/4)];
954   pal = hng64_videoram[tile_index+(0x10000/4)]>>24;
956   tileno = hng64_videoram[tile_index+(0x00000/4)];
957   // pppppppp ff--atttt tttttttt tttttttt
955958
956   SET_TILE_INFO(3,(tileno&0x3fffff)>>3,pal>>4,  TILE_FLIPYX((tileno&0xc00000)>>22) );
957}
959   pal = (tileno&0xff000000)>>24;
960   flip =(tileno&0x00c00000)>>22;
958961
959/* 16x16 tiles, 8bpp layer */
960static TILE_GET_INFO( get_hng64_tile2_info )
961{
962   int tileno,pal;
963   tileno = hng64_videoram[tile_index+(0x20000/4)];
964   pal = hng64_videoram[tile_index+(0x20000/4)]>>24;
965   SET_TILE_INFO(3,(tileno&0x3fffff)>>3,pal>>4,TILE_FLIPYX((tileno&0xc00000)>>22));
962   if (tileno&0x200000)
963   {
964      tileno = (tileno & hng64_videoregs[0x0b]) | hng64_videoregs[0x0c];
965   }
966
967   tileno &= 0x1fffff;
968
969   if (tilemapinfo&0x400)
970   {
971      SET_TILE_INFO(1,tileno>>1,pal>>4,TILE_FLIPYX(flip));
972   }
973   else
974   {
975      SET_TILE_INFO(0,tileno, pal,TILE_FLIPYX(flip));
976   }
966977}
967978
968979/* 16x16 tiles, 8bpp layer */
969static TILE_GET_INFO( get_hng64_tile3_info )
980static TILE_GET_INFO( get_hng64_tile1_info )
970981{
971   int tileno,pal;
972   tileno = hng64_videoram[tile_index+(0x30000/4)];
973   pal = hng64_videoram[tile_index+(0x30000/4)]>>24;
974   SET_TILE_INFO(3,(tileno&0x3fffff)>>3,pal>>4,TILE_FLIPYX((tileno&0xc00000)>>22));
975}
982   UINT16 tilemapinfo = (hng64_videoregs[0x02]&0x0000ffff)>>0;
983   int tileno,pal, flip;
976984
985   tileno = hng64_videoram[tile_index+(0x10000/4)];
986   // pppppppp ff--atttt tttttttt tttttttt
977987
988   pal = (tileno&0xff000000)>>24;
989   flip =(tileno&0x00c00000)>>22;
978990
979/* Tilemaps zoom, and probably rotate.. they can have linescroll/lineselect,
980looks like the zoom center can move too..
981not sure how these features are enabled up yet */
982
983static int gatherPixelsForLine(bitmap_t *tilemapBitmap,
984                        INT32 startX, INT32 startY, INT32 endX, INT32 endY,
985                        UINT16 *penList)
986{
987   int retVal = 0 ;
988
989   // !! BRESENHAM'S AGAIN - I REALLY SHOULD GENERALIZE THIS !!
990
991#define SWAP(a,b) tmpswap = a; a = b; b = tmpswap;
992
993   INT32 i;
994   INT32 steep = 1;
995   INT32 sx, sy;  /* step positive or negative (1 or -1) */
996   INT32 dx, dy;  /* delta (difference in X and Y between points) */
997   INT32 e;
998
999   /*
1000    * inline swap. On some architectures, the XOR trick may be faster
1001    */
1002   INT32 tmpswap;
1003
1004   /*
1005    * optimize for vertical and horizontal lines here
1006    */
1007
1008   dx = abs(endX - startX);
1009   sx = ((endX - startX) > 0) ? 1 : -1;
1010   dy = abs(endY - startY);
1011   sy = ((endY - startY) > 0) ? 1 : -1;
1012
1013   if (dy > dx)
991   if (tileno&0x200000)
1014992   {
1015      steep = 0;
1016      SWAP(startX, startY);
1017      SWAP(dx, dy);
1018      SWAP(sx, sy);
993      tileno = (tileno & hng64_videoregs[0x0b]) | hng64_videoregs[0x0c];
1019994   }
1020995
1021   e = (dy << 1) - dx;
996   tileno &= 0x1fffff;
1022997
1023   for (i = 0; i < dx; i++)
998   if (tilemapinfo&0x400)
1024999   {
1025      if (steep)
1026      {
1027         penList[retVal] = *BITMAP_ADDR16(tilemapBitmap, startY, startX);
1028         retVal++ ;
1029      }
1030      else
1031      {
1032         penList[retVal] = *BITMAP_ADDR16(tilemapBitmap, startX, startY) ;
1033         retVal++ ;
1034      }
1035      while (e >= 0)
1036      {
1037         startY += sy;
1038         e -= (dx << 1);
1039      }
1040
1041      startX += sx;
1042      e += (dy << 1);
1000      SET_TILE_INFO(3,tileno>>3,pal>>4,TILE_FLIPYX(flip));
10431001   }
1044#undef SWAP
1045
1046
1047   return retVal ;
1002   else
1003   {
1004      SET_TILE_INFO(2,tileno>>2, pal,TILE_FLIPYX(flip));
1005   }
10481006}
10491007
1050static void plotTilemap3Line(running_machine *machine,
1051                      bitmap_t *tilemapBitmap,
1052                      INT32 startX, INT32 startY, INT32 endX, INT32 endY,
1053                      INT32 screenY, bitmap_t *bitmap)
1008/* 16x16 tiles, 8bpp layer */
1009static TILE_GET_INFO( get_hng64_tile2_info )
10541010{
1055   int i ;
1011   UINT16 tilemapinfo = (hng64_videoregs[0x03]&0xffff0000)>>16;
1012   int tileno,pal, flip;
10561013
1057   int numPix ;
1058   UINT16 penList[0x1000] ;         // 4k of pixels to be safe
1014   tileno = hng64_videoram[tile_index+(0x20000/4)];
1015   // pppppppp ff--atttt tttttttt tttttttt
10591016
1060   float pixStride, pixOffset ;
1017   pal = (tileno&0xff000000)>>24;
1018   flip =(tileno&0x00c00000)>>22;
10611019
1062   const rectangle *visarea = video_screen_get_visible_area(machine->primary_screen);
1063
1064//  mame_printf_debug("(%d,%d) (%d,%d)\n", startX, startY, endX, endY) ;
1065
1066   // CLAMP - BUT I'M PRETTY SURE THIS ISN'T QUITE RIGHT !!! ???
1067   startX += 1024 ; if (startX < 0) startX = 0 ; else if (startX >= 2048) startX = 2048-1 ;
1068   startY += 1024 ; if (startY < 0) startY = 0 ; else if (startY >= 2048) startY = 2048-1 ;
1069   endX += 1024 ; if (endX < 0) endX = 0 ; else if (endX >= 2048) endX = 2048-1 ;
1070   endY += 1024 ; if (endY < 0) endY = 0 ; else if (endY >= 2048) endY = 2048-1 ;
1071
1072   numPix = gatherPixelsForLine(tilemapBitmap, startX, startY, endX, endY, penList) ;
1073
1074   pixStride = (float)numPix / (float)(visarea->max_x-1) ;
1075   pixOffset = 0 ;
1076
1077   if (numPix == 0)
1078      penList[0] = *BITMAP_ADDR16(tilemapBitmap, 1024, 1024);
1079
1080//  mame_printf_debug("numpix %d ps %f po %f s(%d,%d) e(%d,%d)\n", numPix, pixStride, pixOffset, startX, startY, endX, endY) ;
1081
1082   // Draw out the screen's line...
1083   for (i = visarea->min_x; i < visarea->max_x; i++)
1020   if (tileno&0x200000)
10841021   {
1085      // Nearest-neighbor interpolation for now (but i doubt it does linear)
1086      UINT16 tmPen = penList[(int)pixOffset] ;
1022      tileno = (tileno & hng64_videoregs[0x0b]) | hng64_videoregs[0x0c];
1023   }
10871024
1088      *BITMAP_ADDR32(bitmap, screenY, i) = palette_get_color(machine, tmPen) | 0xff000000;
1025   tileno &= 0x1fffff;
10891026
1090      pixOffset += pixStride ;
1027   if (tilemapinfo&0x400)
1028   {
1029      SET_TILE_INFO(3,tileno>>3,pal>>4,TILE_FLIPYX(flip));
10911030   }
1031   else
1032   {
1033      SET_TILE_INFO(2,tileno>>2, pal,TILE_FLIPYX(flip));
1034   }
10921035}
10931036
1094static void hng64_drawtilemap3(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect )
1037/* 16x16 tiles, 8bpp layer */
1038static TILE_GET_INFO( get_hng64_tile3_info )
10951039{
1096   int i ;
1040   UINT16 tilemapinfo = (hng64_videoregs[0x03]&0x0000ffff)>>0;
1041   int tileno,pal, flip;
10971042
1098   bitmap_t *srcbitmap = tilemap_get_pixmap( hng64_tilemap3 );
1099   const rectangle *visarea = video_screen_get_visible_area(machine->primary_screen);
1043   tileno = hng64_videoram[tile_index+(0x30000/4)];
1044   // pppppppp ff--atttt tttttttt tttttttt
11001045
1101//  usrintf_showmessage("%d", hng64_hackTm3Count) ;
1046   pal = (tileno&0xff000000)>>24;
1047   flip =(tileno&0x00c00000)>>22;
11021048
1103   if (hng64_hackTm3Count/4 < visarea->max_y)
1049   if (tileno&0x200000)
11041050   {
1105      for (i = 0; i < hng64_hackTm3Count/4; i++)
1106      {
1107         UINT32 address = hng64_rowScrollOffset + 0xbf0 ;
1108         address -= (i * 0x10) ;
1109         address /= 4 ;
1110         //mame_printf_debug("nums : %.4x %.4x %.4x %.4x\n", (INT16)((hng64_videoram[address+0x0]&0xffff0000) >> 16),
1111         //                                     (INT16)((hng64_videoram[address+0x1]&0xffff0000) >> 16),
1112         //                                     (INT16)((hng64_videoram[address+0x2]&0xffff0000) >> 16),
1113         //                                     (INT16)((hng64_videoram[address+0x3]&0xffff0000) >> 16)) ;
1114
1115         plotTilemap3Line(machine, srcbitmap,
1116                      (INT16)((hng64_videoram[address+0x0]&0xffff0000) >> 16),
1117                      (INT16)((hng64_videoram[address+0x2]&0xffff0000) >> 16),
1118                      (INT16)((hng64_videoram[address+0x1]&0xffff0000) >> 16),
1119                      (INT16)((hng64_videoram[address+0x3]&0xffff0000) >> 16),
1120                      (visarea->max_y-1)-i,
1121                      bitmap) ;
1122      }
1051      tileno = (tileno & hng64_videoregs[0x0b]) | hng64_videoregs[0x0c];
11231052   }
11241053
1125   // Maybe the scrollbase should be used instead of my hacky hng64_rowScrollOffset :)?
1126//  scrollbase = (hng64_videoregs[0x05]&0x00003fff)>>0;
1054   tileno &= 0x1fffff;
11271055
1128//  xscroll = hng64_videoram[(0x40000+(scrollbase<<4))/4]>>16;
1129//  yscroll = hng64_videoram[(0x40008+(scrollbase<<4))/4]>>16;
1130//  xzoom   = hng64_videoram[(0x40010+(scrollbase<<4))/4]>>16;
1131//  yzoom   = hng64_videoram[(0x4000c+(scrollbase<<4))/4]>>16;
1132//  xzoom   = xzoom-xscroll;
1133//  yzoom   = yzoom-yscroll;
1134//  xzoom &=0xffff;
1135//  yzoom &=0xffff;
1056   if (tilemapinfo&0x400)
1057   {
1058      SET_TILE_INFO(3,tileno>>3,pal>>4,TILE_FLIPYX(flip));
1059   }
1060   else
1061   {
1062      SET_TILE_INFO(2,tileno>>2, pal,TILE_FLIPYX(flip));
1063   }
1064}
11361065
1137//  xscroll <<=16;
1138//  yscroll <<=16;
1139//  xzoom <<=8;
1140//  yzoom <<=8;
11411066
1142//  tilemap_set_scrollx(hng64_tilemap3,0, xscroll);
1143//  tilemap_set_scrolly(hng64_tilemap3,0, yscroll);
11441067
1145//  tilemap_draw(bitmap,cliprect,hng64_tilemap3,0,0);
1146
1147//  tilemap_draw_roz(bitmap,cliprect,hng64_tilemap3,xscroll,yscroll,
1148//          xzoom,0,0,yzoom,
1149//          1,
1150//          0,0);
1151}
1152
1153static void hng64_drawtilemap2( bitmap_t *bitmap, const rectangle *cliprect )
1068static void hng64_drawtilemap( bitmap_t *bitmap, const rectangle *cliprect, int scrollbase, tilemap* tilemap )
11541069{
1155   int scrollbase,xscroll,yscroll,xzoom,yzoom;
1070   int xscroll,yscroll,xzoom,yzoom;
11561071
1157   scrollbase = (hng64_videoregs[0x05]&0x3fff0000)>>16;
11581072   xscroll = (INT16)(hng64_videoram[(0x40000+(scrollbase<<4))/4]>>16);
11591073   // ???  = (INT16)(hng64_videoram[(0x40004+(scrollbase<<4))/4]>>16);
11601074   yscroll = (INT16)(hng64_videoram[(0x40008+(scrollbase<<4))/4]>>16);
1161   yzoom   = (INT16)(hng64_videoram[(0x4000c+(scrollbase<<4))/4]>>16);
1162   xzoom   = (INT16)(hng64_videoram[(0x40010+(scrollbase<<4))/4]>>16);
1075//  xzoom   = (INT16)(hng64_videoram[(0x40010+(scrollbase<<4))/4]>>16);
1076//  yzoom   = (INT16)(hng64_videoram[(0x4000c+(scrollbase<<4))/4]>>16);
11631077   // ???  = (INT16)(hng64_videoram[(0x40014+(scrollbase<<4))/4]>>16);
11641078   // ???  = (INT16)(hng64_videoram[(0x40018+(scrollbase<<4))/4]>>16);
11651079   // ???  = (INT16)(hng64_videoram[(0x4001c+(scrollbase<<4))/4]>>16);
1166   xzoom   = xzoom-xscroll;
1167   yzoom   = yzoom-yscroll;
1168   xzoom &=0xffff;
1169   yzoom &=0xffff;
11701080
11711081   xscroll <<=16;
11721082   yscroll <<=16;
1173   xzoom <<=8;
1174   yzoom <<=8;
11751083
1176   tilemap_draw_roz(bitmap,cliprect,hng64_tilemap2,xscroll,yscroll,
1177         xzoom,0,0,yzoom,
1178         1,
1179         0,0);
1180}
1084   xzoom = 0x10000;
1085   yzoom = 0x10000;
11811086
1182static void hng64_drawtilemap1( bitmap_t *bitmap, const rectangle *cliprect )
1183{
1184   int scrollbase,xscroll,yscroll,xzoom,yzoom;
11851087
1186   scrollbase = (hng64_videoregs[0x04]&0x00003fff)>>0;
1187   xscroll = (INT16)(hng64_videoram[(0x40000+(scrollbase<<4))/4]>>16);
1188   // ???  = (INT16)(hng64_videoram[(0x40004+(scrollbase<<4))/4]>>16);
1189   yscroll = (INT16)(hng64_videoram[(0x40008+(scrollbase<<4))/4]>>16);
1190   xzoom   = (INT16)(hng64_videoram[(0x40010+(scrollbase<<4))/4]>>16);
1191   yzoom   = (INT16)(hng64_videoram[(0x4000c+(scrollbase<<4))/4]>>16);
1192   // ???  = (INT16)(hng64_videoram[(0x40014+(scrollbase<<4))/4]>>16);
1193   // ???  = (INT16)(hng64_videoram[(0x40018+(scrollbase<<4))/4]>>16);
1194   // ???  = (INT16)(hng64_videoram[(0x4001c+(scrollbase<<4))/4]>>16);
1195   xzoom   = xzoom-xscroll;
1196   yzoom   = yzoom-yscroll;
1197   xzoom &=0xffff;
1198   yzoom &=0xffff;
1199
1200   xscroll <<=16;
1201   yscroll <<=16;
1202   xzoom <<=8;
1203   yzoom <<=8;
1204
1205   tilemap_draw_roz(bitmap,cliprect,hng64_tilemap1,xscroll,yscroll,
1088   tilemap_draw_roz(bitmap,cliprect,tilemap,xscroll,yscroll,
12061089         xzoom,0,0,yzoom,
12071090         1,
12081091         0,0);
r4679r4680
12191102 *   0    | oooooooo | unknown - always seems to be 04060000 (fatfurwa) and 00060000 (buriki)
12201103 *   1    | xxxx---- | looks like it's 0001 most (all) of the time - turns off in buriki intro
12211104 *   1    | ----oooo | unknown - always seems to be 0000 (fatfurwa)
1222 *   2    | oooooooo | unknown - likes to change sometimes though... (looks like bit-flags)
1223 *   3    | oooooooo | unknown - change a lot - maybe mixer flags?
1105 *   2    | xxxx---- | tilemap0 per layer flags
1106 *   2    | ----xxxx | tilemap1 per layer flags
1107 *   3    | xxxx---- | tilemap2 per layer flags
1108 *   3    | ----xxxx | tilemap3 per layer flags
12241109 *   4    | xxxx---- | tilemap0 offset into tilemap RAM?
12251110 *   4    | ----xxxx | tilemap1 offset into tilemap RAM
12261111 *   5    | xxxx---- | tilemap3 offset into tilemap RAM
r4679r4680
12301115 *   8    | oooooooo | unknown - always seems to be 80008000 (fatfurwa)
12311116 *   9    | oooooooo | unknown - always seems to be 00000000 (fatfurwa)
12321117 *   a    | oooooooo | unknown - always seems to be 00000000 (fatfurwa)
1233 *   b    | oooooooo | unknown - 00000000 in intro - 00007ff8 when fight is going on (looks like &'ing it with 0x3fff is a good thing to do - tilemap stuff?)
1234 *   c    | xxxxxxxx | I'm almost positive this is some form of offset to produce animations in Tilemap1 - or maybe all tilemaps?
1235 *                     - 00xxx000 are used in fatfurwa during fights
1236 *                     - 00000?xx are used in buriki during the intro
1118 *   b    | mmmmmmmm | auto animation mask for tilemaps, - use these bits from the original tile number
1119 *   c    | xxxxxxxx | auto animation bits for tilemaps, - merge in these bits to auto animate the tilemap
12371120 *   d    | oooooooo | not used ??
12381121 *   e    | oooooooo | not used ??
12391122 */
r4679r4680
12431126{
12441127   bitmap_fill(bitmap, 0, get_black_pen(screen->machine));
12451128
1246   // Debug
1247//  for (int iii = 0; iii < 0x0f; iii++)
1248//      mame_printf_debug("%.8x ", hng64_videoregs[iii]) ;
1249//  mame_printf_debug("\n") ;
1250//  usrintf_showmessage("%.8x %.8x %.8x %.8x", hng64_videoregs[0x1], hng64_videoregs[0x3], hng64_videoregs[0xb], hng64_videoregs[0xc]) ;
1129   // the tilemap auto animation and moveable tilebases means that they end up
1130   // dirty most frames anyway, even with manual tracking
1131   tilemap_mark_all_tiles_dirty (hng64_tilemap3);
1132   tilemap_mark_all_tiles_dirty (hng64_tilemap2);
1133   tilemap_mark_all_tiles_dirty (hng64_tilemap1);
1134   tilemap_mark_all_tiles_dirty (hng64_tilemap0);
12511135
1252   // I think there's something to this, but I'm not doing it right...
1253   // Interestingly enough, this turns the bootup screen blue :)
1254   /*
1255    if (hng64_videoregs[0xc] != tilemap2Offset)
1256    {
1257        tilemap2Offset = hng64_videoregs[0xc] ;
12581136
1259        tilemap_dispose(hng64_tilemap1) ;
1260        hng64_tilemap1 = tilemap_create(machine, get_hng64_tile2_info,tilemap_scan_rows, 16, 16, 128,128); // 128x128x4 = 0x10000
1261    }
1137   hng64_drawtilemap(bitmap,cliprect, (hng64_videoregs[0x05]&0x00003fff)>>0,  hng64_tilemap3);
1138   hng64_drawtilemap(bitmap,cliprect, (hng64_videoregs[0x05]&0x3fff0000)>>16, hng64_tilemap2);
1139   hng64_drawtilemap(bitmap,cliprect, (hng64_videoregs[0x04]&0x00003fff)>>0,  hng64_tilemap1);
1140   hng64_drawtilemap(bitmap,cliprect, (hng64_videoregs[0x04]&0x3fff0000)>>16, hng64_tilemap0);
1141
1142   draw_sprites(screen->machine, bitmap,cliprect);
1143
1144   // 3d really shouldn't be last, but you don't see some cool stuff right now if it's put before sprites :)...
1145   draw3d(screen->machine, bitmap, cliprect);
1146
1147   transition_control(bitmap, cliprect) ;
1148
1149   /*
1150    popmessage("%08x %08x %08x %08x %08x %08x %08x %08x %08x %08x %08x %08x %08x %08x %08x",
1151    hng64_videoregs[0x00],
1152    hng64_videoregs[0x01],
1153    hng64_videoregs[0x02],
1154    hng64_videoregs[0x03],
1155    hng64_videoregs[0x04],
1156    hng64_videoregs[0x05],
1157    hng64_videoregs[0x06],
1158    hng64_videoregs[0x07],
1159    hng64_videoregs[0x08],
1160    hng64_videoregs[0x09],
1161    hng64_videoregs[0x0a],
1162    hng64_videoregs[0x0b],
1163    hng64_videoregs[0x0c],
1164    hng64_videoregs[0x0d],
1165    hng64_videoregs[0x0e]);
12621166    */
12631167
1264   // Rowscroll variables...
1265   // usrintf_showmessage("%.8x %.8x x %.8x %.8x", hng64_videoram[0x00057bf0/4], hng64_videoram[0x00057bf4/4], hng64_videoram[0x00057bf8/4], hng64_videoram[0x00057bfc/4]) ;
1168   // tilemap0 per layer flags
1169   // 0840 - startup tests, 8x8x4 layer
1170   // 0cc0 - beast busters 2, 8x8x8 layer
1171   // 0860 - fatal fury wa
1172   // 08e0 - fatal fury wa during transitions
1173   // 0940 - samurai shodown 64
1174   // 0880 - buriki
12661175
1267   // All of this priority stuff is probably done with some funky layer mixing chip -
1268   //   (there are neato alpha effects on a real board, etc)
1269   hng64_drawtilemap2(bitmap,cliprect);
1270   hng64_drawtilemap1(bitmap,cliprect);
1271   hng64_drawtilemap3(screen->machine, bitmap,cliprect);                  // Draw the ground last...
1176   // ---l rb?? ???? ????
1177   // l = floor effects / linescroll enable  (buriki on tilemap1, fatal fury on tilemap3)
1178   // r = tile size?
1179   // b = 4bpp/8bpp ?  (beast busters, samsh64, sasm64 2 switch it for some screens)
12721180
1273   // !!! This tilemap has the same flags as the 'previous' three, but they're not used in fatfurwa !!!
1274   //     (in other words, we should make a similar hng64_drawtilemap0() function for this tilemap)
1275   tilemap_draw(bitmap,cliprect,hng64_tilemap0,0,0);
12761181
1277   draw_sprites(screen->machine, bitmap,cliprect);
12781182
1279   // 3d really shouldn't be last, but you don't see some cool stuff right now if it's put before sprites :)...
1280   draw3d(screen->machine, bitmap, cliprect);
12811183
1282   /* hack to enable 2nd cpu when key is pressed */
1283//  if ( input_code_pressed_once(KEYCODE_L) )
1284//  {
1285//      cpu_set_input_line(machine->cpu[1], INPUT_LINE_HALT, CLEAR_LINE);
1286//      cpu_set_input_line(machine->cpu[1], INPUT_LINE_RESET, CLEAR_LINE);
1287//  }
1184   popmessage("0: %04x  1: %04x   2: %04x  3: %04x\n", (hng64_videoregs[0x02]&0xffff0000)>>16, (hng64_videoregs[0x02]&0x0000ffff)>>0, (hng64_videoregs[0x03]&0xffff0000)>>16, (hng64_videoregs[0x03]&0x0000ffff)>>0);
12881185
1289   /* AJG */
1290   // if(input_code_pressed(KEYCODE_D))
12911186
1292   transition_control(bitmap, cliprect) ;
12931187
12941188//  mame_printf_debug("FRAME DONE %d\n", frameCount) ;
12951189   frameCount++ ;
12961190
1297   hng64_hackTilemap3 = hng64_rowScrollOffset = hng64_hackTm3Count = 0 ;
12981191   return 0;
12991192}
13001193
r4679r4680
13121205   tilemap_set_transparent_pen(hng64_tilemap3,0);
13131206
13141207   // 3d Buffer Allocation
1315   depthBuffer = (float*)auto_malloc((visarea->max_x)*(visarea->max_y)*sizeof(float)) ;
1208   depthBuffer = auto_alloc_array(machine, float, (visarea->max_x)*(visarea->max_y)) ;
13161209
13171210   // The general display list of polygons in the scene...
13181211   // !! This really should be a dynamic array !!
1319   polys = auto_malloc(MAX_ONSCREEN_POLYS * sizeof(struct polygon))  ;
1212   polys = auto_alloc_array(machine, struct polygon, MAX_ONSCREEN_POLYS)  ;
13201213}
13211214
13221215///////////////
r4679r4680
17161609{
17171610   float *dp = &(depthBuffer[y*video_screen_get_visible_area(machine->primary_screen)->max_x+x_start]);
17181611
1719   const UINT8 *gfx = memory_region(machine, "gfx3");
1612   const UINT8 *gfx = memory_region(machine, "textures");
17201613   const UINT8 *textureOffset ;
17211614   UINT8 paletteEntry ;
17221615   float t_coord, s_coord ;
src/mame/video/macrossp.c
r4679r4680
146146
147147VIDEO_START(macrossp)
148148{
149   spriteram_old = auto_malloc(spriteram_size);
150   spriteram_old2 = auto_malloc(spriteram_size);
149   spriteram_old = auto_alloc_array_clear(machine, UINT32, spriteram_size/4);
150   spriteram_old2 = auto_alloc_array_clear(machine, UINT32, spriteram_size/4);
151151
152   memset(spriteram_old,0,spriteram_size);
153   memset(spriteram_old2,0,spriteram_size);
154
155152   macrossp_text_tilemap = tilemap_create(machine, get_macrossp_text_tile_info,tilemap_scan_rows,16,16,64,64);
156153   macrossp_scra_tilemap = tilemap_create(machine, get_macrossp_scra_tile_info,tilemap_scan_rows,16,16,64,64);
157154   macrossp_scrb_tilemap = tilemap_create(machine, get_macrossp_scrb_tile_info,tilemap_scan_rows,16,16,64,64);
src/mame/video/groundfx.c
r4679r4680
2222
2323VIDEO_START( groundfx )
2424{
25   spritelist = auto_malloc(0x4000 * sizeof(*spritelist));
25   spritelist = auto_alloc_array(machine, struct tempsprite, 0x4000);
2626
2727   TC0100SCN_vh_start(machine,1,TC0100SCN_GFX_NUM,50,8,0,0,0,0,0);
2828   TC0480SCP_vh_start(machine,TC0480SCP_GFX_NUM,0,0x24,0,-1,0,0,0,0);
r4679r4680
220220
221221VIDEO_UPDATE( groundfx )
222222{
223   const address_space *space = cpu_get_address_space(screen->machine->cpu[0], ADDRESS_SPACE_PROGRAM);
223   const address_space *space = cputag_get_address_space(screen->machine, "maincpu", ADDRESS_SPACE_PROGRAM);
224224   UINT8 layer[5];
225225   UINT8 pivlayer[3];
226226   UINT16 priority;
src/mame/video/kangaroo.c
r4679r4680
2424VIDEO_START( kangaroo )
2525{
2626   /* video RAM is accessed 32 bits at a time (two planes, 4bpp each, 4 pixels) */
27   videoram32 = auto_malloc(256 * 64 * 4);
27   videoram32 = auto_alloc_array(machine, UINT32, 256 * 64);
2828   state_save_register_global_pointer(machine, videoram32, 256 * 64);
2929}
3030
src/mame/video/cidelsa.c
r4679r4680
77
88static CDP1869_PAGE_RAM_READ( cidelsa_pageram_r )
99{
10   cidelsa_state *state = device->machine->driver_data;
10   cidelsa_state *state = (cidelsa_state *)device->machine->driver_data;
1111
1212   UINT16 addr = pma & CIDELSA_PAGERAM_MASK;
1313
r4679r4680
2121
2222static CDP1869_PAGE_RAM_WRITE( cidelsa_pageram_w )
2323{
24   cidelsa_state *state = device->machine->driver_data;
24   cidelsa_state *state = (cidelsa_state *)device->machine->driver_data;
2525
2626   UINT16 addr = pma & CIDELSA_PAGERAM_MASK;
2727
r4679r4680
3535
3636static CDP1869_PAGE_RAM_READ( draco_pageram_r )
3737{
38   cidelsa_state *state = device->machine->driver_data;
38   cidelsa_state *state = (cidelsa_state *)device->machine->driver_data;
3939
4040   UINT16 addr = pma & DRACO_PAGERAM_MASK;
4141
r4679r4680
4444
4545static CDP1869_PAGE_RAM_WRITE( draco_pageram_w )
4646{
47   cidelsa_state *state = device->machine->driver_data;
47   cidelsa_state *state = (cidelsa_state *)device->machine->driver_data;
4848
4949   UINT16 addr = pma & DRACO_PAGERAM_MASK;
5050
r4679r4680
5555
5656static CDP1869_CHAR_RAM_READ( cidelsa_charram_r )
5757{
58   cidelsa_state *state = device->machine->driver_data;
58   cidelsa_state *state = (cidelsa_state *)device->machine->driver_data;
5959
6060   UINT8 column = BIT(pma, 10) ? 0xff : state->pageram[pma & CIDELSA_PAGERAM_MASK];
6161   UINT16 addr = ((column << 3) | (cma & 0x07)) & CIDELSA_CHARRAM_MASK;
r4679r4680
6868
6969static CDP1869_CHAR_RAM_WRITE( cidelsa_charram_w )
7070{
71   cidelsa_state *state = device->machine->driver_data;
71   cidelsa_state *state = (cidelsa_state *)device->machine->driver_data;
7272
7373   UINT8 column = BIT(pma, 10) ? 0xff : state->pageram[pma & CIDELSA_PAGERAM_MASK];
7474   UINT16 addr = ((column << 3) | (cma & 0x07)) & CIDELSA_CHARRAM_MASK;
r4679r4680
7979
8080static CDP1869_CHAR_RAM_READ( draco_charram_r )
8181{
82   cidelsa_state *state = device->machine->driver_data;
82   cidelsa_state *state = (cidelsa_state *)device->machine->driver_data;
8383
8484   UINT8 column = state->pageram[pma & DRACO_PAGERAM_MASK];
8585   UINT16 addr = ((column << 3) | (cma & 0x07)) & CIDELSA_CHARRAM_MASK;
r4679r4680
9292
9393static CDP1869_CHAR_RAM_WRITE( draco_charram_w )
9494{
95   cidelsa_state *state = device->machine->driver_data;
95   cidelsa_state *state = (cidelsa_state *)device->machine->driver_data;
9696
9797   UINT8 column = state->pageram[pma & DRACO_PAGERAM_MASK];
9898   UINT16 addr = ((column << 3) | (cma & 0x07)) & CIDELSA_CHARRAM_MASK;
r4679r4680
105105
106106static CDP1869_PCB_READ( cidelsa_pcb_r )
107107{
108   cidelsa_state *state = device->machine->driver_data;
108   cidelsa_state *state = (cidelsa_state *)device->machine->driver_data;
109109
110110   UINT8 column = state->pageram[pma & CIDELSA_PAGERAM_MASK];
111111   UINT16 addr = ((column << 3) | (cma & 0x07)) & CIDELSA_CHARRAM_MASK;
r4679r4680
115115
116116static CDP1869_PCB_READ( draco_pcb_r )
117117{
118   cidelsa_state *state = device->machine->driver_data;
118   cidelsa_state *state = (cidelsa_state *)device->machine->driver_data;
119119
120120   UINT8 column = state->pageram[pma & DRACO_PAGERAM_MASK];
121121   UINT16 addr = ((column << 3) | (cma & 0x07)) & CIDELSA_CHARRAM_MASK;
r4679r4680
127127
128128static WRITE_LINE_DEVICE_HANDLER( cidelsa_prd_w )
129129{
130   cidelsa_state *driver_state = device->machine->driver_data;
130   cidelsa_state *driver_state = (cidelsa_state *)device->machine->driver_data;
131131
132132   /* invert PRD signal */
133133   cputag_set_input_line(device->machine, CDP1802_TAG, INPUT_LINE_IRQ0, !state);
r4679r4680
136136
137137static WRITE_LINE_DEVICE_HANDLER( draco_prd_w )
138138{
139   cidelsa_state *driver_state = device->machine->driver_data;
139   cidelsa_state *driver_state = (cidelsa_state *)device->machine->driver_data;
140140
141141   driver_state->cdp1869_prd = state;
142142}
r4679r4680
189189
190190static void video_start(running_machine *machine, UINT16 pageram_size)
191191{
192   cidelsa_state *state = machine->driver_data;
192   cidelsa_state *state = (cidelsa_state *)machine->driver_data;
193193
194194   /* allocate memory */
195   state->pageram = auto_malloc(pageram_size);
196   state->pcbram = auto_malloc(CIDELSA_CHARRAM_SIZE);
197   state->charram = auto_malloc(CIDELSA_CHARRAM_SIZE);
195   state->pageram = auto_alloc_array(machine, UINT8, pageram_size);
196   state->pcbram = auto_alloc_array(machine, UINT8, CIDELSA_CHARRAM_SIZE);
197   state->charram = auto_alloc_array(machine, UINT8, CIDELSA_CHARRAM_SIZE);
198198
199199   /* find devices */
200200   state->cdp1869 = devtag_get_device(machine, CDP1869_TAG);
r4679r4680
221221
222222static VIDEO_UPDATE( cidelsa )
223223{
224   cidelsa_state *state = screen->machine->driver_data;
224   cidelsa_state *state = (cidelsa_state *)screen->machine->driver_data;
225225
226226   cdp1869_update(state->cdp1869, bitmap, cliprect);
227227
src/mame/video/m92.c
r4679r4680
141141
142142static TILE_GET_INFO( get_pf_tile_info )
143143{
144   pf_layer_info *layer = param;
144   pf_layer_info *layer = (pf_layer_info *)param;
145145   int tile, attrib;
146146   tile_index = 2 * tile_index + layer->vram_base;
147147
r4679r4680
279279      state_save_register_item_array(machine, "layer", NULL, laynum, layer->control);
280280   }
281281
282   paletteram16 = auto_malloc(0x1000);
282   paletteram16 = auto_alloc_array(machine, UINT16, 0x1000/2);
283283
284284   memset(spriteram16,0,0x800);
285285   memset(buffered_spriteram16,0,0x800);
src/mame/video/m58.c
r4679r4680
188188   tilemap_set_scrolldx(bg_tilemap, visarea->min_x, width - (visarea->max_x + 1));
189189   tilemap_set_scrolldy(bg_tilemap, visarea->min_y - 8, height + 16 - (visarea->max_y + 1));
190190
191   scroll_panel_bitmap = auto_bitmap_alloc(SCROLL_PANEL_WIDTH, height, format);
191   scroll_panel_bitmap = auto_bitmap_alloc(machine, SCROLL_PANEL_WIDTH, height, format);
192192}
193193
194194
src/mame/video/thoop2.c
r4679r4680
9595   tilemap_set_transmask(pant[1],0,0xff01,0x00ff); /* pens 1-7 opaque, pens 0, 8-15 transparent */
9696
9797   for (i = 0; i < 5; i++){
98      sprite_table[i] = auto_malloc(512*sizeof(int));
98      sprite_table[i] = auto_alloc_array(machine, int, 512);
9999   }
100100}
101101
src/mame/video/circus.c
r4679r4680
252252   // report collision only when the character is not blank and within display area
253253   if (collision && code!=0xf && clown_x>0 && clown_x<240 && clown_y>-12 && clown_y<240)
254254   {
255      cpu_set_input_line(machine->cpu[0], 0, ASSERT_LINE); // interrupt accuracy is critical in Ripcord
256      cpu_set_input_line(machine->cpu[0], 0, CLEAR_LINE);
255      cputag_set_input_line(machine, "maincpu", 0, ASSERT_LINE); // interrupt accuracy is critical in Ripcord
256      cputag_set_input_line(machine, "maincpu", 0, CLEAR_LINE);
257257   }
258258}
259259
src/mame/video/taotaido.c
r4679r4680
194194{
195195   bg_tilemap = tilemap_create(machine, taotaido_bg_tile_info,taotaido_tilemap_scan_rows,     16,16,128,64);
196196
197   taotaido_spriteram_old = auto_malloc(0x2000);
198   taotaido_spriteram_older = auto_malloc(0x2000);
197   taotaido_spriteram_old = auto_alloc_array(machine, UINT16, 0x2000/2);
198   taotaido_spriteram_older = auto_alloc_array(machine, UINT16, 0x2000/2);
199199
200   taotaido_spriteram2_old = auto_malloc(0x10000);
201   taotaido_spriteram2_older = auto_malloc(0x10000);
200   taotaido_spriteram2_old = auto_alloc_array(machine, UINT16, 0x10000/2);
201   taotaido_spriteram2_older = auto_alloc_array(machine, UINT16, 0x10000/2);
202202}
203203
204204
src/mame/video/taito_f3.c
r4679r4680
664664      twidth_mask_bit=5;
665665   }
666666
667   spriteram32_buffered = (UINT32 *)auto_malloc(0x10000);
668   spritelist = auto_malloc(0x400 * sizeof(*spritelist));
667   spriteram32_buffered = auto_alloc_array(machine, UINT32, 0x10000/4);
668   spritelist = auto_alloc_array(machine, struct tempsprite, 0x400);
669669   sprite_end = spritelist;
670670   vram_layer = tilemap_create(machine, get_tile_info_vram,tilemap_scan_rows,8,8,64,64);
671671   pixel_layer = tilemap_create(machine, get_tile_info_pixel,tilemap_scan_cols,8,8,64,32);
672   pf_line_inf = auto_malloc(5 * sizeof(struct f3_playfield_line_inf));
673   sa_line_inf = auto_malloc(1 * sizeof(struct f3_spritealpha_line_inf));
672   pf_line_inf = auto_alloc_array(machine, struct f3_playfield_line_inf, 5);
673   sa_line_inf = auto_alloc_array(machine, struct f3_spritealpha_line_inf, 1);
674674   width = video_screen_get_width(machine->primary_screen);
675675   height = video_screen_get_height(machine->primary_screen);
676   pri_alp_bitmap = auto_bitmap_alloc(width, height, BITMAP_FORMAT_INDEXED8 );
677   tile_opaque_sp = (UINT8 *)auto_malloc(machine->gfx[2]->total_elements);
676   pri_alp_bitmap = auto_bitmap_alloc(machine, width, height, BITMAP_FORMAT_INDEXED8 );
677   tile_opaque_sp = auto_alloc_array(machine, UINT8, machine->gfx[2]->total_elements);
678678   for (i=0; i<4; i++)
679      tile_opaque_pf[i] = (UINT8 *)auto_malloc(machine->gfx[1]->total_elements);
679      tile_opaque_pf[i] = auto_alloc_array(machine, UINT8, machine->gfx[1]->total_elements);
680680
681681   tilemap_set_transparent_pen(pf1_tilemap,0);
682682   tilemap_set_transparent_pen(pf2_tilemap,0);
src/mame/video/gaelco2.c
r4679r4680
509509
510510VIDEO_EOF( gaelco2 )
511511{
512   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
512   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
513513
514514   /* sprites are one frame ahead */
515515   buffer_spriteram16_w(space, 0, 0, 0xffff);
src/mame/video/segasyse.c
r4679r4680
5959
6060   vdp_start(machine, 0);
6161
62   cache_bitmap = auto_malloc( (16+256+16) * 192); /* 16 pixels either side to simplify drawing */
62   cache_bitmap = auto_alloc_array(machine, UINT8, (16+256+16) * 192); /* 16 pixels either side to simplify drawing */
6363}
6464
6565VIDEO_UPDATE( megaplay_normal )
r4679r4680
101101
102102   /*- VRAM -*/
103103
104   segae_vdp_vram[chip] = auto_malloc(0x8000); /* 32kb (2 banks) */
104   segae_vdp_vram[chip] = auto_alloc_array(machine, UINT8, 0x8000); /* 32kb (2 banks) */
105105   segae_vdp_vrambank[chip] = 0;
106106
107107   /*- CRAM -*/
108108
109   vdp_cram[chip] = auto_malloc(0x20);
109   vdp_cram[chip] = auto_alloc_array(machine, UINT8, 0x20);
110110
111111   /*- VDP Registers -*/
112112
113   segae_vdp_regs[chip] = auto_malloc(0x20);
113   segae_vdp_regs[chip] = auto_alloc_array(machine, UINT8, 0x20);
114114
115115   /*- Clear Memory -*/
116116
src/mame/video/m107.c
r4679r4680
5959
6060static TILE_GET_INFO( get_pf_tile_info )
6161{
62   pf_layer_info *layer = param;
62   pf_layer_info *layer = (pf_layer_info *)param;
6363   int tile, attrib;
6464   tile_index = 2 * tile_index + layer->vram_base;
6565
r4679r4680
147147         tilemap_set_transparent_pen(layer->tmap, 0);
148148   }
149149
150   m107_spriteram = auto_malloc(0x1000);
151   memset(m107_spriteram,0,0x1000);
150   m107_spriteram = auto_alloc_array_clear(machine, UINT16, 0x1000/2);
152151}
153152
154153/*****************************************************************************/
src/mame/video/ninjaw.c
r4679r4680
2525   int chips;
2626   int mask;
2727
28   spritelist = auto_malloc(0x1000 * sizeof(*spritelist));
28   spritelist = auto_alloc_array(machine, struct tempsprite, 0x1000);
2929
3030   chips = TC0100SCN_count(machine);
3131
src/mame/video/matmania.c
r4679r4680
130130   bitmap_format format = video_screen_get_format(machine->primary_screen);
131131
132132   /* Mat Mania has a virtual screen twice as large as the visible screen */
133   tmpbitmap  = auto_bitmap_alloc(width, 2*height, format);
134   tmpbitmap2 = auto_bitmap_alloc(width, 2*height, format);
133   tmpbitmap  = auto_bitmap_alloc(machine, width, 2*height, format);
134   tmpbitmap2 = auto_bitmap_alloc(machine, width, 2*height, format);
135135}
136136
137137
src/mame/video/arkanoid.c
r4679r4680
2424   int bank;
2525
2626   /* bits 0 and 1 flip X and Y, I don't know which is which */
27   if (flip_screen_x_get(space->machine) != (data & 0x01)) {
27   if (flip_screen_x_get(space->machine) != (data & 0x01))
28   {
2829      flip_screen_x_set(space->machine, data & 0x01);
2930      tilemap_mark_all_tiles_dirty(bg_tilemap);
3031   }
3132
32   if (flip_screen_y_get(space->machine) != (data & 0x02)) {
33   if (flip_screen_y_get(space->machine) != (data & 0x02))
34   {
3335      flip_screen_y_set(space->machine, data & 0x02);
3436      tilemap_mark_all_tiles_dirty(bg_tilemap);
3537   }
r4679r4680
4749   /* so I don't know which is which. */
4850   bank = (data & 0x20) >> 5;
4951
50   if (gfxbank != bank) {
52   if (gfxbank != bank)
53   {
5154      gfxbank = bank;
5255      tilemap_mark_all_tiles_dirty(bg_tilemap);
5356   }
5457
5558   bank = (data & 0x40) >> 6;
5659
57   if (palettebank != bank) {
60   if (palettebank != bank)
61   {
5862      palettebank = bank;
5963      tilemap_mark_all_tiles_dirty(bg_tilemap);
6064   }
r4679r4680
6569     leaving the tilt screen (as the MCU is now out of sync with main CPU
6670     which resets itself).  This bit is the likely candidate as it is flipped
6771     early in bootup just prior to accessing the MCU for the first time. */
68   if (space->machine->cpu[1] != NULL) // Bootlegs don't have the MCU but still set this bit
69      cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_RESET, (data & 0x80) ? CLEAR_LINE : ASSERT_LINE);
72   if (cputag_get_cpu(space->machine, "mcu") != NULL)   // Bootlegs don't have the MCU but still set this bit
73      cputag_set_input_line(space->machine, "mcu", INPUT_LINE_RESET, (data & 0x80) ? CLEAR_LINE : ASSERT_LINE);
7074}
7175
7276static TILE_GET_INFO( get_bg_tile_info )
src/mame/video/twin16.c
r4679r4680
456456
457457VIDEO_EOF( twin16 )
458458{
459   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
459   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
460460
461461   if( twin16_spriteram_process_enable() && need_process_spriteram )
462462      twin16_spriteram_process();
src/mame/video/megasys1.c
r4679r4680
449449
450450      case 0x300/2   :   megasys1_screen_flag = new_data;
451451                     if (new_data & 0x10)
452                        cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_RESET, ASSERT_LINE);
452                        cputag_set_input_line(space->machine, "soundcpu", INPUT_LINE_RESET, ASSERT_LINE);
453453                     else
454                        cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_RESET, CLEAR_LINE);
454                        cputag_set_input_line(space->machine, "soundcpu", INPUT_LINE_RESET, CLEAR_LINE);
455455                     break;
456456
457457      case 0x308/2   :   soundlatch_word_w(space,0,new_data,0xffff);
458                     cpu_set_input_line(space->machine->cpu[1],4,HOLD_LINE);
458                     cputag_set_input_line(space->machine, "soundcpu", 4, HOLD_LINE);
459459                     break;
460460
461461      default       :   SHOW_WRITE_ERROR("vreg %04X <- %04X",offset*2,data);
r4679r4680
500500
501501      case 0x2308/2   :   megasys1_screen_flag = new_data;
502502                     if (new_data & 0x10)
503                        cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_RESET, ASSERT_LINE);
503                        cputag_set_input_line(space->machine, "soundcpu", INPUT_LINE_RESET, ASSERT_LINE);
504504                     else
505                        cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_RESET, CLEAR_LINE);
505                        cputag_set_input_line(space->machine, "soundcpu", INPUT_LINE_RESET, CLEAR_LINE);
506506                     break;
507507
508508      case 0x8000/2   :   /* Cybattler reads sound latch on irq 2 */
509                     soundlatch_word_w(space,0,new_data,0xffff);
510                     cpu_set_input_line(space->machine->cpu[1],2,HOLD_LINE);
509                     soundlatch_word_w(space, 0, new_data, 0xffff);
510                     cputag_set_input_line(space->machine, "soundcpu", 2, HOLD_LINE);
511511                     break;
512512
513      default:      SHOW_WRITE_ERROR("vreg %04X <- %04X",offset*2,data);
513      default:      SHOW_WRITE_ERROR("vreg %04X <- %04X", offset * 2, data);
514514   }
515515}
516516
src/mame/video/crshrace.c
r4679r4680
215215
216216VIDEO_EOF( crshrace )
217217{
218   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
218   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
219219
220220   buffer_spriteram16_w(space,0,0,0xffff);
221221   buffer_spriteram16_2_w(space,0,0,0xffff);
src/mame/video/dcheese.c
r4679r4680
108108VIDEO_START( dcheese )
109109{
110110   /* the destination bitmap is not directly accessible to the CPU */
111   dstbitmap = auto_bitmap_alloc(DSTBITMAP_WIDTH, DSTBITMAP_HEIGHT, video_screen_get_format(machine->primary_screen));
111   dstbitmap = auto_bitmap_alloc(machine, DSTBITMAP_WIDTH, DSTBITMAP_HEIGHT, video_screen_get_format(machine->primary_screen));
112112
113113   /* create a timer */
114114   blitter_timer = timer_alloc(machine, blitter_scanline_callback, NULL);
src/mame/video/bwing.c
r4679r4680
4848//****************************************************************************
4949// Exports
5050
51extern const gfx_layout bwing_tilelayout;
5152const gfx_layout bwing_tilelayout =
5253{
5354   16, 16,
r4679r4680
189190   charmap = tilemap_create(machine, get_charinfo,tilemap_scan_cols, 8, 8,32,32);
190191   fgmap = tilemap_create(machine, get_fgtileinfo,bwing_scan_cols,16,16,64,64);
191192   bgmap = tilemap_create(machine, get_bgtileinfo,bwing_scan_cols,16,16,64,64);
192   srxlat = auto_malloc(0x8000);
193   srxlat = auto_alloc_array(machine, int, 0x2000);
193194
194195   scrollmap[0] = fgmap;
195196   scrollmap[1] = bgmap;
src/mame/video/cave.c
r4679r4680
144144   int pen;
145145
146146   /* create a 1:1 palette map covering everything */
147   palette_map = auto_malloc(machine->config->total_colors * sizeof(palette_map[0]));
147   palette_map = auto_alloc_array(machine, UINT16, machine->config->total_colors);
148148   for (pen = 0; pen < machine->config->total_colors; pen++)
149149      palette_map[pen] = pen % maxpen;
150150}
r4679r4680
788788      cave_spritetype2 = 0;
789789   }
790790
791   sprite_zbuf = auto_bitmap_alloc(screen_width, screen_height, BITMAP_FORMAT_INDEXED16 );
792   blit.baseaddr_zbuf = sprite_zbuf->base;
791   sprite_zbuf = auto_bitmap_alloc(machine, screen_width, screen_height, BITMAP_FORMAT_INDEXED16 );
792   blit.baseaddr_zbuf = (UINT8 *)sprite_zbuf->base;
793793   blit.line_offset_zbuf = sprite_zbuf->rowpixels * sprite_zbuf->bpp / 8;
794794
795795   num_sprites = spriteram_size / 0x10 / 2;
796   sprite_cave = auto_malloc( num_sprites * sizeof(struct sprite_cave) );
797   memset(sprite_cave, 0, num_sprites * sizeof(struct sprite_cave));
796   sprite_cave = auto_alloc_array_clear(machine, struct sprite_cave, num_sprites);
798797
799798   memset(sprite_table,0,sizeof(sprite_table));
800799   cave_sprite_draw = sprite_draw_donpachi;
r4679r4680
14641463
14651464   set_pens(screen->machine);
14661465
1467   blit.baseaddr = bitmap->base;
1466   blit.baseaddr = (UINT8 *)bitmap->base;
14681467   blit.line_offset = bitmap->rowpixels * bitmap->bpp / 8;
14691468
14701469   /* Choose the tilemap to display (8x8 tiles or 16x16 tiles) */
src/mame/video/dooyong.c
r4679r4680
904904
905905VIDEO_EOF( dooyong )
906906{
907   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
907   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
908908
909909   buffer_spriteram_w(space, 0, 0);
910910}
911911
912912VIDEO_EOF( rshark )
913913{
914   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
914   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
915915
916916   buffer_spriteram16_w(space, 0, 0, 0xffff);
917917}
src/mame/video/williams.c
r4679r4680
155155 *
156156 *************************************/
157157
158static void blitter_init(int blitter_config, const UINT8 *remap_prom);
159static void create_palette_lookup(void);
158static void blitter_init(running_machine *machine, int blitter_config, const UINT8 *remap_prom);
159static void create_palette_lookup(running_machine *machine);
160160static TILE_GET_INFO( get_tile_info );
161161static int blitter_core(const address_space *space, int sstart, int dstart, int w, int h, int data);
162162
r4679r4680
183183
184184VIDEO_START( williams )
185185{
186   blitter_init(williams_blitter_config, NULL);
187   create_palette_lookup();
186   blitter_init(machine, williams_blitter_config, NULL);
187   create_palette_lookup(machine);
188188   state_save_register(machine);
189189}
190190
191191
192192VIDEO_START( blaster )
193193{
194   blitter_init(williams_blitter_config, memory_region(machine, "proms"));
195   create_palette_lookup();
194   blitter_init(machine, williams_blitter_config, memory_region(machine, "proms"));
195   create_palette_lookup(machine);
196196   state_save_register(machine);
197197}
198198
199199
200200VIDEO_START( williams2 )
201201{
202   blitter_init(williams_blitter_config, NULL);
202   blitter_init(machine, williams_blitter_config, NULL);
203203
204204   /* allocate paletteram */
205   paletteram = auto_malloc(0x400 * 2);
205   paletteram = auto_alloc_array(machine, UINT8, 0x400 * 2);
206206   state_save_register_global_pointer(machine, paletteram, 0x400 * 2);
207207
208208   /* create the tilemap */
r4679r4680
329329 *
330330 *************************************/
331331
332static void create_palette_lookup(void)
332static void create_palette_lookup(running_machine *machine)
333333{
334334   static const int resistances_rg[3] = { 1200, 560, 330 };
335335   static const int resistances_b[2]  = { 560, 330 };
r4679r4680
345345         2, resistances_b,  weights_b, 0, 0);
346346
347347   /* build a palette lookup */
348   palette_lookup = auto_malloc(256 * sizeof(*palette_lookup));
348   palette_lookup = auto_alloc_array(machine, rgb_t, 256);
349349   for (i = 0; i < 256; i++)
350350   {
351351      int r = combine_3_weights(weights_r, BIT(i,0), BIT(i,1), BIT(i,2));
r4679r4680
521521 *
522522 *************************************/
523523
524static void blitter_init(int blitter_config, const UINT8 *remap_prom)
524static void blitter_init(running_machine *machine, int blitter_config, const UINT8 *remap_prom)
525525{
526526   static const UINT8 dummy_table[] = { 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 };
527527   int i,j;
r4679r4680
533533   blitter_xor = (blitter_config == WILLIAMS_BLITTER_SC01) ? 4 : 0;
534534
535535   /* create the remap table; if no PROM, make an identity remap table */
536   blitter_remap_lookup = auto_malloc(256 * 256);
536   blitter_remap_lookup = auto_alloc_array(machine, UINT8, 256 * 256);
537537   blitter_remap_index = 0;
538538   blitter_remap = blitter_remap_lookup;
539539   for (i = 0; i < 256; i++)
src/mame/video/dec8.c
r4679r4680
8181{
8282   int i;
8383
84   for (i = 0;i < machine->config->total_colors;i++)
84   for (i = 0; i < machine->config->total_colors; i++)
8585   {
86      int bit0,bit1,bit2,bit3,r,g,b;
86      int bit0, bit1, bit2, bit3, r, g, b;
8787
8888      bit0 = (color_prom[i] >> 0) & 0x01;
8989      bit1 = (color_prom[i] >> 1) & 0x01;
r4679r4680
101101      bit3 = (color_prom[i + machine->config->total_colors] >> 3) & 0x01;
102102      b = 0x0e * bit0 + 0x1f * bit1 + 0x43 * bit2 + 0x8f * bit3;
103103
104      palette_set_color(machine,i,MAKE_RGB(r,g,b));
104      palette_set_color(machine, i, MAKE_RGB(r, g, b));
105105   }
106106}
107107
108108WRITE8_HANDLER( dec8_bac06_0_w )
109109{
110   dec8_pf0_control[offset]=data;
110   dec8_pf0_control[offset] = data;
111111}
112112
113113WRITE8_HANDLER( dec8_bac06_1_w )
114114{
115   dec8_pf1_control[offset]=data;
115   dec8_pf1_control[offset] = data;
116116}
117117
118118WRITE8_HANDLER( dec8_pf0_data_w )
119119{
120   dec8_pf0_data[offset]=data;
121   tilemap_mark_tile_dirty(dec8_pf0_tilemap,offset/2);
120   dec8_pf0_data[offset] = data;
121   tilemap_mark_tile_dirty(dec8_pf0_tilemap, offset / 2);
122122}
123123
124124WRITE8_HANDLER( dec8_pf1_data_w )
125125{
126   dec8_pf1_data[offset]=data;
127   tilemap_mark_tile_dirty(dec8_pf1_tilemap,offset/2);
126   dec8_pf1_data[offset] = data;
127   tilemap_mark_tile_dirty(dec8_pf1_tilemap, offset / 2);
128128}
129129
130130READ8_HANDLER( dec8_pf0_data_r )
r4679r4680
139139
140140WRITE8_HANDLER( dec8_videoram_w )
141141{
142   videoram[offset]=data;
142   videoram[offset] = data;
143143   tilemap_mark_tile_dirty( dec8_fix_tilemap,offset/2 );
144144}
145145
146146WRITE8_HANDLER( srdarwin_videoram_w )
147147{
148   videoram[offset]=data;
148   videoram[offset] = data;
149149   tilemap_mark_tile_dirty( dec8_fix_tilemap,offset );
150150}
151151
152152#ifdef UNUSED_FUNCTION
153153WRITE8_HANDLER( dec8_scroll1_w )
154154{
155   scroll1[offset]=data;
155   scroll1[offset] = data;
156156}
157157#endif
158158
159159WRITE8_HANDLER( dec8_scroll2_w )
160160{
161   scroll2[offset]=data;
161   scroll2[offset] = data;
162162}
163163
164164WRITE8_HANDLER( srdarwin_control_w )
r4679r4680
166166   int bankaddress;
167167   UINT8 *RAM = memory_region(space->machine, "maincpu");
168168
169   switch (offset) {
169   switch (offset)
170   {
170171       case 0: /* Top 3 bits - bank switch, bottom 4 - scroll MSB */
171172         bankaddress = 0x10000 + (data >> 5) * 0x4000;
172         memory_set_bankptr(space->machine, 1,&RAM[bankaddress]);
173         scroll2[0]=data&0xf;
173         memory_set_bankptr(space->machine, 1, &RAM[bankaddress]);
174         scroll2[0] = data & 0xf;
174175         return;
175176
176177        case 1:
177           scroll2[1]=data;
178           scroll2[1] = data;
178179           return;
179180    }
180181}
r4679r4680
190191        Bit 0x40 - Y scroll MSB
191192        Bit 0x80 - Hold subcpu reset line high if clear, else low
192193    */
193   memory_set_bankptr(space->machine, 1,&RAM[0x10000 + (data & 0x0f) * 0x4000]);
194   memory_set_bankptr(space->machine, 1, &RAM[0x10000 + (data & 0x0f) * 0x4000]);
194195
195   scroll2[0]=(data>>5)&1;
196   scroll2[2]=(data>>6)&1;
196   scroll2[0] = (data >> 5) & 1;
197   scroll2[2] = (data >> 6) & 1;
197198
198   if (data&0x80)
199      cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_RESET, CLEAR_LINE);
199   if (data & 0x80)
200      cputag_set_input_line(space->machine, "sub", INPUT_LINE_RESET, CLEAR_LINE);
200201   else
201      cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_RESET, ASSERT_LINE);
202      cputag_set_input_line(space->machine, "sub", INPUT_LINE_RESET, ASSERT_LINE);
202203}
203204
204205WRITE8_HANDLER( shackled_control_w )
r4679r4680
210211   bankaddress = 0x10000 + (data & 0x0f) * 0x4000;
211212   memory_set_bankptr(space->machine, 1,&RAM[bankaddress]);
212213
213   scroll2[0]=(data>>5)&1;
214   scroll2[2]=(data>>6)&1;
214   scroll2[0] = (data >> 5) & 1;
215   scroll2[2] = (data >> 6) & 1;
215216}
216217
217218WRITE8_HANDLER( lastmiss_scrollx_w )
218219{
219   scroll2[1]=data;
220   scroll2[1] = data;
220221}
221222
222223WRITE8_HANDLER( lastmiss_scrolly_w )
223224{
224   scroll2[3]=data;
225   scroll2[3] = data;
225226}
226227
227228WRITE8_HANDLER( gondo_scroll_w )
228229{
229   switch (offset) {
230   switch (offset)
231   {
230232      case 0x0:
231         scroll2[1]=data; /* X LSB */
233         scroll2[1] = data; /* X LSB */
232234         break;
233235      case 0x8:
234         scroll2[3]=data; /* Y LSB */
236         scroll2[3] = data; /* Y LSB */
235237         break;
236238      case 0x10:
237         scroll2[0]=(data>>0)&1; /* Bit 0: X MSB */
238         scroll2[2]=(data>>1)&1; /* Bit 1: Y MSB */
239         scroll2[0] = (data >> 0) & 1; /* Bit 0: X MSB */
240         scroll2[2] = (data >> 1) & 1; /* Bit 1: Y MSB */
239241         /* Bit 2 is also used in Gondo & Garyoret */
240242         break;
241243   }
r4679r4680
276278      y=(y+16)%0x200;
277279      x=256 - x;
278280      y=256 - y;
279      if (flip_screen_get(machine)) {
281      if (flip_screen_get(machine))
282      {
280283         y=240-y;
281284         x=240-x;
282285         if (fx) fx=0; else fx=1;
r4679r4680
285288      }
286289
287290      /* Y Flip determines order of multi-sprite */
288      if (extra && fy) {
291      if (extra && fy)
292      {
289293         sprite2=sprite;
290294         sprite++;
291295      }
r4679r4680
348352         inc = 1;
349353      }
350354
351      if (flip_screen_get(machine)) {
355      if (flip_screen_get(machine))
356      {
352357         y=240-y;
353358         x=240-x;
354359         if (fx) fx=0; else fx=1;
r4679r4680
394399      fx = buffered_spriteram[offs+1] & 0x04;
395400      multi = buffered_spriteram[offs+1] & 0x10;
396401
397      if (flip_screen_get(machine)) {
402      if (flip_screen_get(machine))
403      {
398404         sy=240-sy;
399405         sx=240-sx;
400406         if (fx) fx=0; else fx=1;
r4679r4680
424430{
425431   int mx,my,tile,color,offs;
426432
427   for (offs = 0x800 - 2;offs >= 0;offs -= 2) {
433   for (offs = 0x800 - 2;offs >= 0;offs -= 2)
434   {
428435      tile=videoram[offs+1]+((videoram[offs]&0xf)<<8);
429436
430437      if (!tile) continue;
r4679r4680
526533
527534VIDEO_UPDATE( ghostb )
528535{
529   if (dec8_pf0_control[0]&0x4) { /* Rowscroll */
536   if (dec8_pf0_control[0]&0x4)
537   { /* Rowscroll */
530538       int offs;
531539
532540      tilemap_set_scroll_rows(dec8_pf0_tilemap,512);
533541      for (offs = 0;offs < 512;offs+=2)
534542         tilemap_set_scrollx( dec8_pf0_tilemap,offs/2, (dec8_pf0_control[0x10]<<8)+dec8_pf0_control[0x11] + (dec8_row[offs]<<8)+dec8_row[offs+1] );
535   } else {
543   }
544   else
545   {
536546      tilemap_set_scroll_rows(dec8_pf0_tilemap,1);
537547      tilemap_set_scrollx( dec8_pf0_tilemap,0, (dec8_pf0_control[0x10]<<8)+dec8_pf0_control[0x11] );
538548   }
src/mame/video/fuukifg3.c
r4679r4680
106106
107107VIDEO_START( fuuki32 )
108108{
109   buffered_spriteram32   = auto_malloc(spriteram_size);
110   buffered_spriteram32_2 = auto_malloc(spriteram_size);
109   buffered_spriteram32   = auto_alloc_array(machine, UINT32, spriteram_size/4);
110   buffered_spriteram32_2 = auto_alloc_array(machine, UINT32, spriteram_size/4);
111111
112112   tilemap_0 = tilemap_create(   machine, get_tile_info_0, tilemap_scan_rows,
113113                         16, 16, 64,32);
src/mame/video/battlane.c
r4679r4680
146146   bg_tilemap = tilemap_create(machine, get_tile_info_bg, battlane_tilemap_scan_rows_2x2,
147147       16, 16, 32, 32);
148148
149   screen_bitmap = auto_bitmap_alloc(32 * 8, 32 * 8, BITMAP_FORMAT_INDEXED8);
149   screen_bitmap = auto_bitmap_alloc(machine, 32 * 8, 32 * 8, BITMAP_FORMAT_INDEXED8);
150150}
151151
152152static void draw_sprites(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect)
src/mame/video/atarigt.c
r4679r4680
152152   width = video_screen_get_width(machine->primary_screen);
153153   height = video_screen_get_height(machine->primary_screen);
154154
155   pf_bitmap = auto_bitmap_alloc(width, height, BITMAP_FORMAT_INDEXED16);
156   an_bitmap = auto_bitmap_alloc(width, height, BITMAP_FORMAT_INDEXED16);
155   pf_bitmap = auto_bitmap_alloc(machine, width, height, BITMAP_FORMAT_INDEXED16);
156   an_bitmap = auto_bitmap_alloc(machine, width, height, BITMAP_FORMAT_INDEXED16);
157157
158158   /* allocate memory */
159   expanded_mram = auto_malloc(sizeof(*expanded_mram) * MRAM_ENTRIES * 3);
159   expanded_mram = auto_alloc_array(machine, UINT32, MRAM_ENTRIES * 3);
160160
161161   /* map pens 1:1 */
162   substitute_pens = auto_malloc(65536 * sizeof(*substitute_pens));
162   substitute_pens = auto_alloc_array(machine, pen_t, 65536);
163163   for (i = 0; i < machine->config->total_colors; i++)
164164      substitute_pens[i] = i;
165165   machine->pens = substitute_pens;
src/mame/video/genesis.c
r4679r4680
88***********************************************************************************************/
99
1010#include "driver.h"
11#include "sound/sn76496.h"
12
1113#include "genesis.h"
1214
1315/* in video/segasyse.c */
r4679r4680
134136   genesis_screen = screen;
135137
136138   /* allocate memory for the VDP, the lookup table, and the buffer bitmap */
137   vdp_vram         = auto_malloc(VRAM_SIZE);
138   vdp_vsram         = auto_malloc(VSRAM_SIZE);
139   transparent_lookup   = auto_malloc(0x1000 * sizeof(UINT16));
139   vdp_vram         = auto_alloc_array(screen->machine, UINT8, VRAM_SIZE);
140   vdp_vsram         = auto_alloc_array(screen->machine, UINT8, VSRAM_SIZE);
141   transparent_lookup   = auto_alloc_array(screen->machine, UINT16, 0x1000);
140142
141143   /* clear the VDP memory, prevents corrupt tile in Puyo Puyo 2 */
142144   memset(vdp_vram, 0, VRAM_SIZE);
src/mame/video/thepit.c
r4679r4680
155155   tilemap_set_scroll_cols(thepit_solid_tilemap, 32);
156156   tilemap_set_scroll_cols(thepit_tilemap, 32);
157157
158   dummy_tile = auto_malloc(8*8);
159   memset(dummy_tile, 0, 8*8);
158   dummy_tile = auto_alloc_array_clear(machine, UINT8, 8*8);
160159
161160   graphics_bank = 0;   /* only used in intrepid */
162161}
src/mame/video/rpunch.c
r4679r4680
7676
7777static TIMER_CALLBACK( crtc_interrupt_gen )
7878{
79   cpu_set_input_line(machine->cpu[0], 1, HOLD_LINE);
79   cputag_set_input_line(machine, "maincpu", 1, HOLD_LINE);
8080   if (param != 0)
8181      timer_adjust_periodic(crtc_timer, attotime_div(video_screen_get_frame_period(machine->primary_screen), param), 0, attotime_div(video_screen_get_frame_period(machine->primary_screen), param));
8282}
src/mame/video/cloud9.c
r4679r4680
3838   static const int resistances[3] = { 22000, 10000, 4700 };
3939
4040   /* allocate second bank of videoram */
41   videoram = auto_malloc(0x8000);
41   videoram = auto_alloc_array(machine, UINT8, 0x8000);
4242   memory_set_bankptr(machine, 1, videoram);
4343
4444   /* get pointers to our PROMs */
src/mame/video/m3raster.c
r4679r4680
11static void draw_scanline_normal(void *dest, INT32 scanline, const poly_extent *extent, const void *extradata, int threadid)
22{
3   const poly_extra_data *extra = extradata;
3   const poly_extra_data *extra = (const poly_extra_data *)extradata;
44   const cached_texture *texture = extra->texture;
5   bitmap_t *destmap = dest;
5   bitmap_t *destmap = (bitmap_t *)dest;
66   UINT16 *p = BITMAP_ADDR16(destmap, scanline, 0);
77   UINT32 *d = BITMAP_ADDR32(zbuffer, scanline, 0);
88   float ooz = extent->param[0].start;
r4679r4680
4949
5050static void draw_scanline_trans(void *dest, INT32 scanline, const poly_extent *extent, const void *extradata, int threadid)
5151{
52   const poly_extra_data *extra = extradata;
52   const poly_extra_data *extra = (const poly_extra_data *)extradata;
5353   const cached_texture *texture = extra->texture;
54   bitmap_t *destmap = dest;
54   bitmap_t *destmap = (bitmap_t *)dest;
5555   UINT16 *p = BITMAP_ADDR16(destmap, scanline, 0);
5656   UINT32 *d = BITMAP_ADDR32(zbuffer, scanline, 0);
5757   float ooz = extent->param[0].start;
r4679r4680
104104
105105static void draw_scanline_alpha(void *dest, INT32 scanline, const poly_extent *extent, const void *extradata, int threadid)
106106{
107   const poly_extra_data *extra = extradata;
107   const poly_extra_data *extra = (const poly_extra_data *)extradata;
108108   const cached_texture *texture = extra->texture;
109   bitmap_t *destmap = dest;
109   bitmap_t *destmap = (bitmap_t *)dest;
110110   UINT16 *p = BITMAP_ADDR16(destmap, scanline, 0);
111111   UINT32 *d = BITMAP_ADDR32(zbuffer, scanline, 0);
112112   float ooz = extent->param[0].start;
r4679r4680
162162
163163static void draw_scanline_alpha_test(void *dest, INT32 scanline, const poly_extent *extent, const void *extradata, int threadid)
164164{
165   const poly_extra_data *extra = extradata;
165   const poly_extra_data *extra = (const poly_extra_data *)extradata;
166166   const cached_texture *texture = extra->texture;
167   bitmap_t *destmap = dest;
167   bitmap_t *destmap = (bitmap_t *)dest;
168168   UINT16 *p = BITMAP_ADDR16(destmap, scanline, 0);
169169   UINT32 *d = BITMAP_ADDR32(zbuffer, scanline, 0);
170170   float ooz = extent->param[0].start;
r4679r4680
222222
223223static void draw_scanline_color(void *dest, INT32 scanline, const poly_extent *extent, const void *extradata, int threadid)
224224{
225   const poly_extra_data *extra = extradata;
226   bitmap_t *destmap = dest;
225   const poly_extra_data *extra = (const poly_extra_data *)extradata;
226   bitmap_t *destmap = (bitmap_t *)dest;
227227   UINT16 *p = BITMAP_ADDR16(destmap, scanline, 0);
228228   UINT32 *d = BITMAP_ADDR32(zbuffer, scanline, 0);
229229   float ooz = extent->param[0].start;
src/mame/video/changela.c
r4679r4680
3030
3131VIDEO_START( changela )
3232{
33   memory_devices = auto_malloc(4 * 0x800); /* 0 - not connected, 1,2,3 - RAMs*/
34   tree_ram = auto_malloc(2 * 0x20);
33   memory_devices = auto_alloc_array(machine, UINT8, 4 * 0x800); /* 0 - not connected, 1,2,3 - RAMs*/
34   tree_ram = auto_alloc_array(machine, UINT8, 2 * 0x20);
3535
3636   obj0_bitmap  = video_screen_auto_bitmap_alloc(machine->primary_screen);
3737   river_bitmap = video_screen_auto_bitmap_alloc(machine->primary_screen);
src/mame/video/crimfght.c
r4679r4680
5454
5555VIDEO_START( crimfght )
5656{
57   paletteram = auto_malloc(0x400);
57   paletteram = auto_alloc_array(machine, UINT8, 0x400);
5858
5959   layer_colorbase[0] = 0;
6060   layer_colorbase[1] = 4;
src/mame/video/wolfpack.c
r4679r4680
123123
124124   int i;
125125
126   LFSR = auto_malloc(0x8000);
126   LFSR = auto_alloc_array(machine, UINT8, 0x8000);
127127
128128   helper = video_screen_auto_bitmap_alloc(machine->primary_screen);
129129
src/mame/video/exerion.c
r4679r4680
123123   background_mixer = memory_region(machine, "proms") + 0x320;
124124
125125   /* allocate memory for the decoded background graphics */
126   background_gfx[0] = auto_malloc(2 * 256 * 256 * 4);
126   background_gfx[0] = auto_alloc_array(machine, UINT16, 256 * 256 * 4);
127127   background_gfx[1] = background_gfx[0] + 256 * 256;
128128   background_gfx[2] = background_gfx[1] + 256 * 256;
129129   background_gfx[3] = background_gfx[2] + 256 * 256;
src/mame/video/segas18.c
r4679r4680
6565   /* create a temp bitmap to draw the VDP data into */
6666   width = video_screen_get_width(machine->primary_screen);
6767   height = video_screen_get_height(machine->primary_screen);
68   tempbitmap = auto_bitmap_alloc(width, height, BITMAP_FORMAT_INDEXED16);
68   tempbitmap = auto_bitmap_alloc(machine, width, height, BITMAP_FORMAT_INDEXED16);
6969}
7070
7171
src/mame/video/nmk16.c
r4679r4680
101101{
102102   bg_tilemap = tilemap_create(machine, macross_get_bg_tile_info,bg_scan,16,16,256,32);
103103   tx_tilemap = tilemap_create(machine, macross_get_tx_tile_info,tilemap_scan_cols,8,8,32,32);
104   spriteram_old = auto_malloc(0x1000);
105   spriteram_old2 = auto_malloc(0x1000);
106   background_bitmap = auto_bitmap_alloc(8192,512,video_screen_get_format(machine->primary_screen));
104   spriteram_old = auto_alloc_array_clear(machine, UINT16, 0x1000/2);
105   spriteram_old2 = auto_alloc_array_clear(machine, UINT16, 0x1000/2);
106   background_bitmap = auto_bitmap_alloc(machine,8192,512,video_screen_get_format(machine->primary_screen));
107107
108108   tilemap_set_transparent_pen(bg_tilemap,15);
109109   tilemap_set_transparent_pen(tx_tilemap,15);
110110   bioship_background_bank=0;
111111   redraw_bitmap = 1;
112112
113   memset(spriteram_old,0,0x1000);
114   memset(spriteram_old2,0,0x1000);
115
116113   videoshift =  0;   /* 256x224 screen, no shift */
117114}
118115
r4679r4680
121118   bg_tilemap = tilemap_create(machine, macross_get_bg_tile_info,bg_scan,16,16,256,32);
122119   fg_tilemap = tilemap_create(machine, strahl_get_fg_tile_info, bg_scan,16,16,256,32);
123120   tx_tilemap = tilemap_create(machine, macross_get_tx_tile_info,tilemap_scan_cols,8,8,32,32);
124   spriteram_old = auto_malloc(0x1000);
125   spriteram_old2 = auto_malloc(0x1000);
121   spriteram_old = auto_alloc_array_clear(machine, UINT16, 0x1000/2);
122   spriteram_old2 = auto_alloc_array_clear(machine, UINT16, 0x1000/2);
126123
127124   tilemap_set_transparent_pen(fg_tilemap,15);
128125   tilemap_set_transparent_pen(tx_tilemap,15);
129126
130   memset(spriteram_old,0,0x1000);
131   memset(spriteram_old2,0,0x1000);
132
133127   videoshift =  0;   /* 256x224 screen, no shift */
134128   background_bitmap = NULL;
135129}
r4679r4680
138132{
139133   bg_tilemap = tilemap_create(machine, macross_get_bg_tile_info,bg_scan,16,16,256,32);
140134   tx_tilemap = tilemap_create(machine, macross_get_tx_tile_info,tilemap_scan_cols,8,8,32,32);
141   spriteram_old = auto_malloc(0x1000);
142   spriteram_old2 = auto_malloc(0x1000);
135   spriteram_old = auto_alloc_array_clear(machine, UINT16, 0x1000/2);
136   spriteram_old2 = auto_alloc_array_clear(machine, UINT16, 0x1000/2);
143137
144138   tilemap_set_transparent_pen(tx_tilemap,15);
145139
146   memset(spriteram_old,0,0x1000);
147   memset(spriteram_old2,0,0x1000);
148
149140   videoshift =  0;   /* 256x224 screen, no shift */
150141   background_bitmap = NULL;
151142}
r4679r4680
154145{
155146   bg_tilemap = tilemap_create(machine, macross_get_bg_tile_info,bg_scan,16,16,256,32);
156147   tx_tilemap = tilemap_create(machine, macross_get_tx_tile_info,tilemap_scan_cols,8,8,64,32);
157   spriteram_old = auto_malloc(0x1000);
158   spriteram_old2 = auto_malloc(0x1000);
148   spriteram_old = auto_alloc_array_clear(machine, UINT16, 0x1000/2);
149   spriteram_old2 = auto_alloc_array_clear(machine, UINT16, 0x1000/2);
159150
160151   tilemap_set_transparent_pen(tx_tilemap,15);
161152   tilemap_set_scroll_rows(bg_tilemap,512);
162153
163   memset(spriteram_old,0,0x1000);
164   memset(spriteram_old2,0,0x1000);
165
166154   videoshift = 64;   /* 384x224 screen, leftmost 64 pixels have to be retrieved */
167155                  /* from the other side of the tilemap (!) */
168156   background_bitmap = NULL;
r4679r4680
172160{
173161   bg_tilemap = tilemap_create(machine, macross_get_bg_tile_info,bg_scan,16,16,1024,128);
174162   tx_tilemap = tilemap_create(machine, macross_get_tx_tile_info,tilemap_scan_cols,8,8,64,32);
175   spriteram_old = auto_malloc(0x1000);
176   spriteram_old2 = auto_malloc(0x1000);
163   spriteram_old = auto_alloc_array_clear(machine, UINT16, 0x1000/2);
164   spriteram_old2 = auto_alloc_array_clear(machine, UINT16, 0x1000/2);
177165
178166   tilemap_set_transparent_pen(tx_tilemap,15);
179167
180   memset(spriteram_old,0,0x1000);
181   memset(spriteram_old2,0,0x1000);
182
183168   videoshift = 64;   /* 384x224 screen, leftmost 64 pixels have to be retrieved */
184169                  /* from the other side of the tilemap (!) */
185170   background_bitmap = NULL;
r4679r4680
189174{
190175   bg_tilemap = tilemap_create(machine, macross_get_bg_tile_info,bg_scan_td2,16,16,1024,32);
191176   tx_tilemap = tilemap_create(machine, macross_get_tx_tile_info,tilemap_scan_cols,8,8,64,32);
192   spriteram_old = auto_malloc(0x1000);
193   spriteram_old2 = auto_malloc(0x1000);
177   spriteram_old = auto_alloc_array_clear(machine, UINT16, 0x1000/2);
178   spriteram_old2 = auto_alloc_array_clear(machine, UINT16, 0x1000/2);
194179
195180   tilemap_set_transparent_pen(tx_tilemap,15);
196181
197   memset(spriteram_old,0,0x1000);
198   memset(spriteram_old2,0,0x1000);
199
200182   videoshift = 64;   /* 384x224 screen, leftmost 64 pixels have to be retrieved */
201183                  /* from the other side of the tilemap (!) */
202184   background_bitmap = NULL;
r4679r4680
205187VIDEO_START( bjtwin )
206188{
207189   bg_tilemap = tilemap_create(machine, bjtwin_get_bg_tile_info,tilemap_scan_cols,8,8,64,32);
208   spriteram_old = auto_malloc(0x1000);
209   spriteram_old2 = auto_malloc(0x1000);
190   spriteram_old = auto_alloc_array_clear(machine, UINT16, 0x1000/2);
191   spriteram_old2 = auto_alloc_array_clear(machine, UINT16, 0x1000/2);
210192
211   memset(spriteram_old,0,0x1000);
212   memset(spriteram_old2,0,0x1000);
213
214193   videoshift = 64;   /* 384x224 screen, leftmost 64 pixels have to be retrieved */
215194                  /* from the other side of the tilemap (!) */
216195   background_bitmap = NULL;
r4679r4680
224203
225204***************************************************************************/
226205
227READ16_HANDLER( nmk_bgvideoram_r )
228{
229   return nmk_bgvideoram[offset];
230}
231
232206WRITE16_HANDLER( nmk_bgvideoram_w )
233207{
234208   COMBINE_DATA(&nmk_bgvideoram[offset]);
235209   tilemap_mark_tile_dirty(bg_tilemap,offset);
236210}
237211
238READ16_HANDLER( nmk_fgvideoram_r )
239{
240   return nmk_fgvideoram[offset];
241}
242
243212WRITE16_HANDLER( nmk_fgvideoram_w )
244213{
245   int oldword = nmk_fgvideoram[offset];
246   int newword = oldword;
247   COMBINE_DATA(&newword);
248
249   if (oldword != newword)
250   {
251      nmk_fgvideoram[offset] = newword;
252      tilemap_mark_tile_dirty(fg_tilemap,offset);
253   }
214   COMBINE_DATA(&nmk_fgvideoram[offset]);
215   tilemap_mark_tile_dirty(fg_tilemap,offset);
254216}
255217
256READ16_HANDLER( nmk_txvideoram_r )
257{
258   return nmk_txvideoram[offset];
259}
260
261218WRITE16_HANDLER( nmk_txvideoram_w )
262219{
263220   COMBINE_DATA(&nmk_txvideoram[offset]);
r4679r4680
860817
861818VIDEO_START( afega )
862819{
863   spriteram_old = auto_malloc(0x1000);
864   spriteram_old2 = auto_malloc(0x1000);
865   memset(spriteram_old,0,0x1000);
866   memset(spriteram_old2,0,0x1000);
820   spriteram_old = auto_alloc_array_clear(machine, UINT16, 0x1000/2);
821   spriteram_old2 = auto_alloc_array_clear(machine, UINT16, 0x1000/2);
867822
868
869823   tilemap_0 = tilemap_create(   machine, get_tile_info_0_4bit, afega_tilemap_scan_pages,
870824
871825                        16,16,
r4679r4680
882836
883837VIDEO_START( grdnstrm )
884838{
885   spriteram_old = auto_malloc(0x1000);
886   spriteram_old2 = auto_malloc(0x1000);
887   memset(spriteram_old,0,0x1000);
888   memset(spriteram_old2,0,0x1000);
839   spriteram_old = auto_alloc_array_clear(machine, UINT16, 0x1000/2);
840   spriteram_old2 = auto_alloc_array_clear(machine, UINT16, 0x1000/2);
889841
890842
891843   tilemap_0 = tilemap_create(   machine, get_tile_info_0_8bit, afega_tilemap_scan_pages,
r4679r4680
904856
905857VIDEO_START( firehawk )
906858{
907   spriteram_old = auto_malloc(0x1000);
908   spriteram_old2 = auto_malloc(0x1000);
909   memset(spriteram_old,0,0x1000);
910   memset(spriteram_old2,0,0x1000);
859   spriteram_old = auto_alloc_array_clear(machine, UINT16, 0x1000/2);
860   spriteram_old2 = auto_alloc_array_clear(machine, UINT16, 0x1000/2);
911861
912862
913863   tilemap_0 = tilemap_create(   machine, get_tile_info_0_8bit, firehawk_tilemap_scan_pages,
src/mame/video/m10.c
r4679r4680
6464
6565WRITE8_HANDLER( m10_chargen_w )
6666{
67   m10_state *state = space->machine->driver_data;
67   m10_state *state = (m10_state *)space->machine->driver_data;
6868
6969   if (state->chargen[offset] != data)
7070   {
r4679r4680
7676
7777WRITE8_HANDLER( m15_chargen_w )
7878{
79   m10_state *state = space->machine->driver_data;
79   m10_state *state = (m10_state *)space->machine->driver_data;
8080
8181   if (state->chargen[offset] != data)
8282   {
r4679r4680
8888
8989INLINE void plot_pixel_m10(running_machine *machine, bitmap_t *bm, int x, int y, int col)
9090{
91   m10_state *state = machine->driver_data;
91   m10_state *state = (m10_state *)machine->driver_data;
9292
9393   if (!state->flip)
9494      *BITMAP_ADDR16(bm, y, x) = col;
r4679r4680
9999
100100VIDEO_START( m10 )
101101{
102   m10_state *state = machine->driver_data;
102   m10_state *state = (m10_state *)machine->driver_data;
103103   int i;
104104
105105   for (i=0;i<32*8;i++)
r4679r4680
118118
119119VIDEO_START( m15 )
120120{
121   m10_state *state = machine->driver_data;
121   m10_state *state = (m10_state *)machine->driver_data;
122122
123123   machine->gfx[0] = gfx_element_alloc(machine, &charlayout, state->chargen, 8, 0);
124124
r4679r4680
136136***************************************************************************/
137137VIDEO_UPDATE( m10 )
138138{
139   m10_state *state = screen->machine->driver_data;
139   m10_state *state = (m10_state *)screen->machine->driver_data;
140140   int offs;
141141   static const int color[4]= { 3, 3, 5, 5 };
142142   static const int xpos[4] = { 4*8, 26*8, 7*8, 6*8};
r4679r4680
175175***************************************************************************/
176176VIDEO_UPDATE( m15 )
177177{
178   m10_state *state = screen->machine->driver_data;
178   m10_state *state = (m10_state *)screen->machine->driver_data;
179179   int offs;
180180
181181   for (offs = videoram_size - 1;offs >= 0;offs--)
src/mame/drivers/bfcobra.c
r4679r4680
131131   if (newstate != irq_state)
132132   {
133133      irq_state = newstate;
134      cpu_set_input_line(machine->cpu[0], 0, irq_state ? ASSERT_LINE : CLEAR_LINE);
134      cputag_set_input_line(machine, "maincpu", 0, irq_state ? ASSERT_LINE : CLEAR_LINE);
135135   }
136136}
137137
r4679r4680
13061306***************************************************************************/
13071307
13081308static ADDRESS_MAP_START( z80_prog_map, ADDRESS_SPACE_PROGRAM, 8 )
1309   AM_RANGE(0x0000, 0x3fff) AM_READ(SMH_BANK4)
1310   AM_RANGE(0x4000, 0x7fff) AM_READWRITE(SMH_BANK1, SMH_BANK1)
1311   AM_RANGE(0x8000, 0xbfff) AM_READWRITE(SMH_BANK2, SMH_BANK2)
1312   AM_RANGE(0xc000, 0xffff) AM_READWRITE(SMH_BANK3, SMH_BANK3)
1309   AM_RANGE(0x0000, 0x3fff) AM_READ(SMH_BANK(4))
1310   AM_RANGE(0x4000, 0x7fff) AM_READWRITE(SMH_BANK(1), SMH_BANK(1))
1311   AM_RANGE(0x8000, 0xbfff) AM_READWRITE(SMH_BANK(2), SMH_BANK(2))
1312   AM_RANGE(0xc000, 0xffff) AM_READWRITE(SMH_BANK(3), SMH_BANK(3))
13131313ADDRESS_MAP_END
13141314
13151315static ADDRESS_MAP_START( z80_io_map, ADDRESS_SPACE_IO, 8 )
r4679r4680
15641564/*
15651565    Allocate work RAM and video RAM shared by the Z80 and chipset.
15661566*/
1567static void init_ram(void)
1567static void init_ram(running_machine *machine)
15681568{
15691569   /* 768kB work RAM */
1570   work_ram = auto_malloc(0xC0000);
1570   work_ram = auto_alloc_array_clear(machine, UINT8, 0xC0000);
15711571
15721572   /* 128kB video RAM */
1573   video_ram = auto_malloc(0x20000);
1574
1575   memset(work_ram, 0, 0xc0000);
1576   memset(video_ram, 0, 0x20000);
1573   video_ram = auto_alloc_array_clear(machine, UINT8, 0x20000);
15771574}
15781575
15791576/*
r4679r4680
16201617
16211618static WRITE_LINE_DEVICE_HANDLER( m6809_data_irq )
16221619{
1623   cpu_set_input_line(device->machine->cpu[1], M6809_IRQ_LINE, state ? CLEAR_LINE : ASSERT_LINE);
1620   cputag_set_input_line(device->machine, "audiocpu", M6809_IRQ_LINE, state ? CLEAR_LINE : ASSERT_LINE);
16241621}
16251622
16261623static ACIA6850_INTERFACE( m6809_acia_if )
r4679r4680
16731670   UINT8 *rom;
16741671   UINT8 *tmp;
16751672
1676   tmp = malloc_or_die(0x8000);
1673   tmp = alloc_array_or_die(UINT8, 0x8000);
16771674   rom = memory_region(machine, "audiocpu") + 0x8000;
16781675   memcpy(tmp, rom, 0x8000);
16791676
r4679r4680
16951692
16961693   free(tmp);
16971694
1698   init_ram();
1695   init_ram(machine);
16991696
17001697   bank[0] = 1;
17011698   bank[1] = 0;
src/mame/drivers/sbugger.c
r4679r4680
115115
116116/* memory maps */
117117
118static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 )
119   AM_RANGE(0x0000, 0x37ff) AM_READ(SMH_ROM)
120   AM_RANGE(0xc800, 0xcfff) AM_READ(SMH_RAM) /* video ram */
121   AM_RANGE(0xe000, 0xe0ff) AM_READ(SMH_RAM) /* sp is set to e0ff  = iternal 8156 RAM*/
122   AM_RANGE(0xf400, 0xffff) AM_READ(SMH_RAM)
118static ADDRESS_MAP_START( sbugger_map, ADDRESS_SPACE_PROGRAM, 8 )
119   AM_RANGE(0x0000, 0x37ff) AM_ROM
120   AM_RANGE(0xc800, 0xcbff) AM_RAM_WRITE(sbugger_videoram_attr_w) AM_BASE(&sbugger_videoram_attr)
121   AM_RANGE(0xcc00, 0xcfff) AM_RAM_WRITE(sbugger_videoram_w) AM_BASE(&sbugger_videoram)
122   AM_RANGE(0xe000, 0xe0ff) AM_RAM /* sp is set to e0ff */
123   AM_RANGE(0xf400, 0xffff) AM_RAM
123124ADDRESS_MAP_END
124125
125static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 )
126   AM_RANGE(0x0000, 0x37ff) AM_WRITE(SMH_ROM)
127   AM_RANGE(0xc800, 0xcbff) AM_WRITE(sbugger_videoram_attr_w) AM_BASE(&sbugger_videoram_attr)
128   AM_RANGE(0xcc00, 0xcfff) AM_WRITE(sbugger_videoram_w) AM_BASE(&sbugger_videoram)
129   AM_RANGE(0xe000, 0xe0ff) AM_WRITE(SMH_RAM) /* sp is set to e0ff */
130   AM_RANGE(0xf400, 0xffff) AM_WRITE(SMH_RAM)
131ADDRESS_MAP_END
132
133static ADDRESS_MAP_START( readport, ADDRESS_SPACE_IO, 8 )
126static ADDRESS_MAP_START( sbugger_io_map, ADDRESS_SPACE_IO, 8 )
134127   AM_RANGE(0xe0, 0xe0) AM_WRITENOP            // 8156 command/status reg (write c0 = command START = (start of timer)
135128   AM_RANGE(0xe1, 0xe1) AM_READ_PORT("INPUTS")      // 8156 PA
136129   AM_RANGE(0xe2, 0xe2) AM_READ_PORT("DSW1")      // 8156 PB
r4679r4680
227220
228221static MACHINE_DRIVER_START( sbugger )
229222   MDRV_CPU_ADD("maincpu", 8085A, 6000000)        /* 3.00 MHz??? */
230   MDRV_CPU_PROGRAM_MAP(readmem,writemem)
231   MDRV_CPU_IO_MAP(readport,0)
223   MDRV_CPU_PROGRAM_MAP(sbugger_map,0)
224   MDRV_CPU_IO_MAP(sbugger_io_map,0)
232225   MDRV_CPU_VBLANK_INT_HACK(irq3_line_hold,NUM_INTS_FRAME)
233226
234227   MDRV_GFXDECODE(sbugger)
src/mame/drivers/nycaptor.c
r4679r4680
147147
148148
149149#include "driver.h"
150#include "deprecat.h"
151150#include "cpu/z80/z80.h"
152151#include "cpu/m6805/m6805.h"
153152#include "sound/ay8910.h"
r4679r4680
161160
162161static WRITE8_HANDLER( sub_cpu_halt_w )
163162{
164   cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_HALT, (data )? ASSERT_LINE : CLEAR_LINE);
163   cputag_set_input_line(space->machine, "sub", INPUT_LINE_HALT, (data) ? ASSERT_LINE : CLEAR_LINE);
165164}
166165
167166static UINT8 snd_data;
r4679r4680
190189
191190static READ8_HANDLER( nycaptor_b_r )
192191{
193      return 1;
192   return 1;
194193}
195194
196195static READ8_HANDLER( nycaptor_by_r )
197196{
198197   int port=input_port_read(space->machine, "LIGHTY");
199198   if(nyc_gametype == 1)
200         port = 255 - port;
201      return port - 8;
199      port = 255 - port;
200   return port - 8;
202201}
203202
204203static READ8_HANDLER( nycaptor_bx_r )
205204{
206      return (input_port_read(space->machine, "LIGHTX") + 0x27) | 1;
205   return (input_port_read(space->machine, "LIGHTX") + 0x27) | 1;
207206}
208207
209208
210209static WRITE8_HANDLER( sound_cpu_reset_w )
211210{
212   cpu_set_input_line(space->machine->cpu[2], INPUT_LINE_RESET, (data&1 )? ASSERT_LINE : CLEAR_LINE);
211   cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_RESET, (data&1 )? ASSERT_LINE : CLEAR_LINE);
213212}
214213
215214static int vol_ctrl[16];
r4679r4680
233232
234233static TIMER_CALLBACK( nmi_callback )
235234{
236   if (sound_nmi_enable) cpu_set_input_line(machine->cpu[2],INPUT_LINE_NMI,PULSE_LINE);
235   if (sound_nmi_enable) cputag_set_input_line(machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
237236   else pending_nmi = 1;
238237}
239238
r4679r4680
253252   sound_nmi_enable = 1;
254253   if (pending_nmi)
255254   {
256      cpu_set_input_line(space->machine->cpu[2],INPUT_LINE_NMI,PULSE_LINE);
255      cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
257256      pending_nmi = 0;
258257   }
259258}
r4679r4680
290289   memory_set_bankptr(space->machine, 1, memory_region(space->machine, "maincpu") + 0x10000 + ((data&0x08)>>3)*0x4000 );
291290}
292291
293static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 )
294   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
295   AM_RANGE(0x8000, 0xbfff) AM_READ(SMH_BANK1)
296   AM_RANGE(0xc000, 0xc7ff) AM_READ(nycaptor_videoram_r)
297   AM_RANGE(0xd000, 0xd000) AM_READ(nycaptor_mcu_r)
298   AM_RANGE(0xd002, 0xd002) AM_READ(nycaptor_generic_control_r)
299   AM_RANGE(0xd400, 0xd400) AM_READ(from_snd_r)
292static ADDRESS_MAP_START( nycaptor_master_map, ADDRESS_SPACE_PROGRAM, 8 )
293   AM_RANGE(0x0000, 0x7fff) AM_ROM
294   AM_RANGE(0x8000, 0xbfff) AM_ROMBANK(1)
295   AM_RANGE(0xc000, 0xc7ff) AM_READ(nycaptor_videoram_r) AM_WRITE(nycaptor_videoram_w) AM_BASE(&videoram) AM_SIZE(&videoram_size)
296   AM_RANGE(0xd000, 0xd000) AM_READ(nycaptor_mcu_r) AM_WRITE(nycaptor_mcu_w)
297   AM_RANGE(0xd001, 0xd001) AM_WRITE(sub_cpu_halt_w)
298   AM_RANGE(0xd002, 0xd002) AM_READ(nycaptor_generic_control_r) AM_WRITE(nycaptor_generic_control_w)   /* bit 3 - memory bank at 0x8000-0xbfff */
299   AM_RANGE(0xd400, 0xd400) AM_READ(from_snd_r) AM_WRITE(sound_command_w)
300300   AM_RANGE(0xd401, 0xd401) AM_READNOP
301   AM_RANGE(0xd403, 0xd403) AM_WRITE(sound_cpu_reset_w)
301302   AM_RANGE(0xd800, 0xd800) AM_READ_PORT("DSW0")
302303   AM_RANGE(0xd801, 0xd801) AM_READ_PORT("DSW1")
303304   AM_RANGE(0xd802, 0xd802) AM_READ_PORT("DSW2")
r4679r4680
306307   AM_RANGE(0xd805, 0xd805) AM_READ(nycaptor_mcu_status_r1)
307308   AM_RANGE(0xd806, 0xd806) AM_READNOP /* unknown ?sound? */
308309   AM_RANGE(0xd807, 0xd807) AM_READ(nycaptor_mcu_status_r2)
309   AM_RANGE(0xdc00, 0xdc9f) AM_READ(nycaptor_spriteram_r)
310   AM_RANGE(0xdca0, 0xdcbf) AM_READ(nycaptor_scrlram_r)
311   AM_RANGE(0xdd00, 0xdeff) AM_READ(nycaptor_palette_r)
312   AM_RANGE(0xdf03, 0xdf03) AM_READ(nycaptor_gfxctrl_r)
313   AM_RANGE(0xe000, 0xffff) AM_READ(nycaptor_sharedram_r)
314ADDRESS_MAP_END
315
316static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 )
317   AM_RANGE(0x0000, 0xbfff) AM_WRITE(SMH_ROM)
318   AM_RANGE(0xc000, 0xc7ff) AM_WRITE(nycaptor_videoram_w) AM_BASE(&videoram) AM_SIZE(&videoram_size)
319   AM_RANGE(0xd000, 0xd000) AM_WRITE(nycaptor_mcu_w)
320   AM_RANGE(0xd001, 0xd001) AM_WRITE(sub_cpu_halt_w)
321   AM_RANGE(0xd002, 0xd002) AM_WRITE(nycaptor_generic_control_w)   /* bit 3 - memory bank at 0x8000-0xbfff */
322   AM_RANGE(0xd400, 0xd400) AM_WRITE(sound_command_w)
323   AM_RANGE(0xd403, 0xd403) AM_WRITE(sound_cpu_reset_w)
324   AM_RANGE(0xdc00, 0xdc9f) AM_WRITE(nycaptor_spriteram_w)
325   AM_RANGE(0xdca0, 0xdcbf) AM_WRITE(nycaptor_scrlram_w) AM_BASE(&nycaptor_scrlram)
310   AM_RANGE(0xdc00, 0xdc9f) AM_READ(nycaptor_spriteram_r) AM_WRITE(nycaptor_spriteram_w)
311   AM_RANGE(0xdca0, 0xdcbf) AM_READ(nycaptor_scrlram_r) AM_WRITE(nycaptor_scrlram_w) AM_BASE(&nycaptor_scrlram)
326312   AM_RANGE(0xdce1, 0xdce1) AM_WRITENOP
327   AM_RANGE(0xdd00, 0xdeff) AM_WRITE(nycaptor_palette_w)
328   AM_RANGE(0xdf03, 0xdf03) AM_WRITE(nycaptor_gfxctrl_w)
329   AM_RANGE(0xe000, 0xffff) AM_WRITE(nycaptor_sharedram_w) AM_BASE(&nycaptor_sharedram)
313   AM_RANGE(0xdd00, 0xdeff) AM_READ(nycaptor_palette_r) AM_WRITE(nycaptor_palette_w)
314   AM_RANGE(0xdf03, 0xdf03) AM_READ(nycaptor_gfxctrl_r) AM_WRITE(nycaptor_gfxctrl_w)
315   AM_RANGE(0xe000, 0xffff) AM_READ(nycaptor_sharedram_r)  AM_WRITE(nycaptor_sharedram_w) AM_BASE(&nycaptor_sharedram)
330316ADDRESS_MAP_END
331317
332
333static ADDRESS_MAP_START( readmem_sub, ADDRESS_SPACE_PROGRAM, 8 )
334   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
318static ADDRESS_MAP_START( nycaptor_slave_map, ADDRESS_SPACE_PROGRAM, 8 )
319   AM_RANGE(0x0000, 0x7fff) AM_ROM
320   AM_RANGE(0xc000, 0xc7ff) AM_READ(nycaptor_videoram_r) AM_WRITE(nycaptor_videoram_w) AM_BASE(&videoram) AM_SIZE(&videoram_size)
335321   AM_RANGE(0xd800, 0xd800) AM_READ_PORT("DSW0")
336322   AM_RANGE(0xd801, 0xd801) AM_READ_PORT("DSW1")
337323   AM_RANGE(0xd802, 0xd802) AM_READ_PORT("DSW2")
338324   AM_RANGE(0xd803, 0xd803) AM_READ_PORT("IN0")
339325   AM_RANGE(0xd804, 0xd804) AM_READ_PORT("IN1")
340   AM_RANGE(0xdc00, 0xdc9f) AM_READ(nycaptor_spriteram_r)
341   AM_RANGE(0xdd00, 0xdeff) AM_READ(nycaptor_palette_r)
326   AM_RANGE(0xdc00, 0xdc9f) AM_READ(nycaptor_spriteram_r) AM_WRITE(nycaptor_spriteram_w)
327   AM_RANGE(0xdca0, 0xdcbf) AM_WRITE(nycaptor_scrlram_w) AM_BASE(&nycaptor_scrlram)
328
329   AM_RANGE(0xdd00, 0xdeff) AM_READ(nycaptor_palette_r) AM_WRITE(nycaptor_palette_w)
342330   AM_RANGE(0xdf00, 0xdf00) AM_READ(nycaptor_bx_r)
343331   AM_RANGE(0xdf01, 0xdf01) AM_READ(nycaptor_by_r)
344332   AM_RANGE(0xdf02, 0xdf02) AM_READ(nycaptor_b_r)
345   AM_RANGE(0xdf03, 0xdf03) AM_READ(nycaptor_gfxctrl_r)
346   AM_RANGE(0xe000, 0xffff) AM_READ(nycaptor_sharedram_r)
333   AM_RANGE(0xdf03, 0xdf03) AM_READ(nycaptor_gfxctrl_r) AM_WRITENOP/* ? gfx control ? */
334   AM_RANGE(0xe000, 0xffff) AM_READ(nycaptor_sharedram_r) AM_WRITE(nycaptor_sharedram_w)
347335ADDRESS_MAP_END
348336
349
350static ADDRESS_MAP_START( writemem_sub, ADDRESS_SPACE_PROGRAM, 8 )
351   AM_RANGE(0x0000, 0xbfff) AM_WRITE(SMH_ROM)
352   AM_RANGE(0xc000, 0xc7ff) AM_WRITE(nycaptor_videoram_w) AM_BASE(&videoram) AM_SIZE(&videoram_size)
353   AM_RANGE(0xdc00, 0xdc9f) AM_WRITE(nycaptor_spriteram_w)
354   AM_RANGE(0xdca0, 0xdcbf) AM_WRITE(nycaptor_scrlram_w) AM_BASE(&nycaptor_scrlram)
355   AM_RANGE(0xdd00, 0xdeff) AM_WRITE(nycaptor_palette_w)
356   AM_RANGE(0xdf03, 0xdf03) AM_WRITENOP/* ? gfx control ? */
357   AM_RANGE(0xe000, 0xffff) AM_WRITE(nycaptor_sharedram_w)
358ADDRESS_MAP_END
359
360static ADDRESS_MAP_START( sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
361   AM_RANGE(0x0000, 0xbfff) AM_READ(SMH_ROM)
362   AM_RANGE(0xc000, 0xc7ff) AM_READ(SMH_RAM)
363   AM_RANGE(0xd000, 0xd000) AM_READ(soundlatch_r)
364   AM_RANGE(0xd200, 0xd200) AM_READNOP
365   AM_RANGE(0xe000, 0xefff) AM_READNOP
366ADDRESS_MAP_END
367
368static ADDRESS_MAP_START( sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
369   AM_RANGE(0x0000, 0xbfff) AM_WRITE(SMH_ROM)
370   AM_RANGE(0xc000, 0xc7ff) AM_WRITE(SMH_RAM)
337static ADDRESS_MAP_START( nycaptor_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
338   AM_RANGE(0x0000, 0xbfff) AM_ROM
339   AM_RANGE(0xc000, 0xc7ff) AM_RAM
371340   AM_RANGE(0xc800, 0xc801) AM_DEVWRITE("ay1", ay8910_address_data_w)
372341   AM_RANGE(0xc802, 0xc803) AM_DEVWRITE("ay2", ay8910_address_data_w)
373342   AM_RANGE(0xc900, 0xc90d) AM_DEVWRITE("msm", msm5232_w)
374343   AM_RANGE(0xca00, 0xca00) AM_WRITENOP
375344   AM_RANGE(0xcb00, 0xcb00) AM_WRITENOP
376345   AM_RANGE(0xcc00, 0xcc00) AM_WRITENOP
377   AM_RANGE(0xd000, 0xd000) AM_WRITE(to_main_w)
378   AM_RANGE(0xd200, 0xd200) AM_WRITE(nmi_enable_w)
346   AM_RANGE(0xd000, 0xd000) AM_READ(soundlatch_r) AM_WRITE(to_main_w)
347   AM_RANGE(0xd200, 0xd200) AM_READNOP AM_WRITE(nmi_enable_w)
379348   AM_RANGE(0xd400, 0xd400) AM_WRITE(nmi_disable_w)
380349   AM_RANGE(0xd600, 0xd600) AM_WRITENOP
381   AM_RANGE(0xe000, 0xefff) AM_WRITENOP
350   AM_RANGE(0xe000, 0xefff) AM_NOP
382351ADDRESS_MAP_END
383352
384static ADDRESS_MAP_START( m68705_readmem, ADDRESS_SPACE_PROGRAM, 8 )
353static ADDRESS_MAP_START( nycaptor_m68705_map, ADDRESS_SPACE_PROGRAM, 8 )
385354   ADDRESS_MAP_GLOBAL_MASK(0x7ff)
386   AM_RANGE(0x0000, 0x0000) AM_READ(nycaptor_68705_portA_r)
387   AM_RANGE(0x0001, 0x0001) AM_READ(nycaptor_68705_portB_r)
388   AM_RANGE(0x0002, 0x0002) AM_READ(nycaptor_68705_portC_r)
389   AM_RANGE(0x0010, 0x007f) AM_READ(SMH_RAM)
390   AM_RANGE(0x0080, 0x07ff) AM_READ(SMH_ROM)
391ADDRESS_MAP_END
392
393static ADDRESS_MAP_START( m68705_writemem, ADDRESS_SPACE_PROGRAM, 8 )
394   ADDRESS_MAP_GLOBAL_MASK(0x7ff)
395   AM_RANGE(0x0000, 0x0000) AM_WRITE(nycaptor_68705_portA_w)
396   AM_RANGE(0x0001, 0x0001) AM_WRITE(nycaptor_68705_portB_w)
397   AM_RANGE(0x0002, 0x0002) AM_WRITE(nycaptor_68705_portC_w)
355   AM_RANGE(0x0000, 0x0000) AM_READWRITE(nycaptor_68705_portA_r,nycaptor_68705_portA_w)
356   AM_RANGE(0x0001, 0x0001) AM_READWRITE(nycaptor_68705_portB_r,nycaptor_68705_portB_w)
357   AM_RANGE(0x0002, 0x0002) AM_READWRITE(nycaptor_68705_portC_r,nycaptor_68705_portC_w)
398358   AM_RANGE(0x0004, 0x0004) AM_WRITE(nycaptor_68705_ddrA_w)
399359   AM_RANGE(0x0005, 0x0005) AM_WRITE(nycaptor_68705_ddrB_w)
400360   AM_RANGE(0x0006, 0x0006) AM_WRITE(nycaptor_68705_ddrC_w)
401   AM_RANGE(0x0010, 0x007f) AM_WRITE(SMH_RAM)
402   AM_RANGE(0x0080, 0x07ff) AM_WRITE(SMH_ROM)
361   AM_RANGE(0x0010, 0x007f) AM_RAM
362   AM_RANGE(0x0080, 0x07ff) AM_ROM
403363ADDRESS_MAP_END
404364
405365
r4679r4680
434394}
435395
436396
437static ADDRESS_MAP_START( cyclshtg_readmem, ADDRESS_SPACE_PROGRAM, 8 )
438   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
439   AM_RANGE(0x8000, 0xbfff) AM_READ(SMH_BANK1)
440   AM_RANGE(0xc000, 0xcfff) AM_READ(nycaptor_videoram_r)
441   AM_RANGE(0xd000, 0xd000) AM_READ(cyclshtg_mcu_r)
442   AM_RANGE(0xd002, 0xd002) AM_READ(nycaptor_generic_control_r)
443   AM_RANGE(0xd400, 0xd400) AM_READ(from_snd_r)
397static ADDRESS_MAP_START( cyclshtg_master_map, ADDRESS_SPACE_PROGRAM, 8 )
398   AM_RANGE(0x0000, 0x7fff) AM_ROM
399   AM_RANGE(0x8000, 0xbfff) AM_ROMBANK(1)
400   AM_RANGE(0xc000, 0xcfff) AM_READ(nycaptor_videoram_r) AM_WRITE(nycaptor_videoram_w) AM_BASE(&videoram) AM_SIZE(&videoram_size)
401   AM_RANGE(0xd000, 0xd000) AM_READ(cyclshtg_mcu_r) AM_WRITE(cyclshtg_mcu_w)
402   AM_RANGE(0xd001, 0xd001) AM_WRITE(sub_cpu_halt_w)
403   AM_RANGE(0xd002, 0xd002) AM_READ(nycaptor_generic_control_r) AM_WRITE(cyclshtg_generic_control_w)
404   AM_RANGE(0xd400, 0xd400) AM_READ(from_snd_r) AM_WRITE(sound_command_w)
405   AM_RANGE(0xd403, 0xd403) AM_WRITE(sound_cpu_reset_w)
444406   AM_RANGE(0xd800, 0xd800) AM_READ_PORT("DSW0")
445407   AM_RANGE(0xd801, 0xd801) AM_READ_PORT("DSW1")
446408   AM_RANGE(0xd802, 0xd802) AM_READ_PORT("DSW2")
r4679r4680
449411   AM_RANGE(0xd805, 0xd805) AM_READ(cyclshtg_mcu_status_r)
450412   AM_RANGE(0xd806, 0xd806) AM_READNOP
451413   AM_RANGE(0xd807, 0xd807) AM_READ(cyclshtg_mcu_status_r)
452   AM_RANGE(0xdc00, 0xdc9f) AM_READ(nycaptor_spriteram_r)
453   AM_RANGE(0xdca0, 0xdcbf) AM_READ(nycaptor_scrlram_r)
454   AM_RANGE(0xdd00, 0xdeff) AM_READ(nycaptor_palette_r)
455   AM_RANGE(0xdf03, 0xdf03) AM_READ(nycaptor_gfxctrl_r)
456   AM_RANGE(0xe000, 0xffff) AM_READ(nycaptor_sharedram_r)
457ADDRESS_MAP_END
458
459static ADDRESS_MAP_START( cyclshtg_writemem, ADDRESS_SPACE_PROGRAM, 8 )
460   AM_RANGE(0x0000, 0xbfff) AM_WRITE(SMH_ROM)
461   AM_RANGE(0xc000, 0xcfff) AM_WRITE(nycaptor_videoram_w) AM_BASE(&videoram) AM_SIZE(&videoram_size)
462   AM_RANGE(0xd000, 0xd000) AM_WRITE(cyclshtg_mcu_w)
463   AM_RANGE(0xd001, 0xd001) AM_WRITE(sub_cpu_halt_w)
464   AM_RANGE(0xd002, 0xd002) AM_WRITE(cyclshtg_generic_control_w)
465   AM_RANGE(0xd400, 0xd400) AM_WRITE(sound_command_w)
466   AM_RANGE(0xd403, 0xd403) AM_WRITE(sound_cpu_reset_w)
467   AM_RANGE(0xdc00, 0xdc9f) AM_WRITE(nycaptor_spriteram_w)
468   AM_RANGE(0xdca0, 0xdcbf) AM_WRITE(nycaptor_scrlram_w) AM_BASE(&nycaptor_scrlram)
414   AM_RANGE(0xdc00, 0xdc9f) AM_READ(nycaptor_spriteram_r) AM_WRITE(nycaptor_spriteram_w)
415   AM_RANGE(0xdca0, 0xdcbf) AM_READ(nycaptor_scrlram_r) AM_WRITE(nycaptor_scrlram_w) AM_BASE(&nycaptor_scrlram)
469416   AM_RANGE(0xdce1, 0xdce1) AM_WRITENOP
470   AM_RANGE(0xdd00, 0xdeff) AM_WRITE(nycaptor_palette_w)
471   AM_RANGE(0xdf03, 0xdf03) AM_WRITE(nycaptor_gfxctrl_w)
472   AM_RANGE(0xe000, 0xffff) AM_WRITE(nycaptor_sharedram_w) AM_BASE(&nycaptor_sharedram)
417   AM_RANGE(0xdd00, 0xdeff) AM_READ(nycaptor_palette_r) AM_WRITE(nycaptor_palette_w)
418   AM_RANGE(0xdf03, 0xdf03) AM_READ(nycaptor_gfxctrl_r) AM_WRITE(nycaptor_gfxctrl_w)
419   AM_RANGE(0xe000, 0xffff) AM_READ(nycaptor_sharedram_r) AM_WRITE(nycaptor_sharedram_w) AM_BASE(&nycaptor_sharedram)
473420ADDRESS_MAP_END
474421
475
476static ADDRESS_MAP_START( cyclshtg_readmem_sub, ADDRESS_SPACE_PROGRAM, 8 )
477   AM_RANGE(0x0000, 0xbfff) AM_READ(SMH_ROM)
422static ADDRESS_MAP_START( cyclshtg_slave_map, ADDRESS_SPACE_PROGRAM, 8 )
423   AM_RANGE(0x0000, 0xbfff) AM_ROM
424   AM_RANGE(0xc000, 0xcfff) AM_READ(nycaptor_videoram_r) AM_WRITE(nycaptor_videoram_w) AM_BASE(&videoram) AM_SIZE(&videoram_size)
478425   AM_RANGE(0xd800, 0xd800) AM_READ_PORT("DSW0")
479426   AM_RANGE(0xd801, 0xd801) AM_READ_PORT("DSW1")
480427   AM_RANGE(0xd802, 0xd802) AM_READ_PORT("DSW2")
481428   AM_RANGE(0xd803, 0xd803) AM_READ_PORT("IN0")
482429   AM_RANGE(0xd804, 0xd804) AM_READ_PORT("IN1")
483   AM_RANGE(0xdc00, 0xdc9f) AM_READ(nycaptor_spriteram_r)
484   AM_RANGE(0xdd00, 0xdeff) AM_READ(nycaptor_palette_r)
430   AM_RANGE(0xdc00, 0xdc9f) AM_READ(nycaptor_spriteram_r) AM_WRITE(nycaptor_spriteram_w)
431   AM_RANGE(0xdca0, 0xdcbf) AM_WRITE(nycaptor_scrlram_w) AM_BASE(&nycaptor_scrlram)
432   AM_RANGE(0xdd00, 0xdeff) AM_READ(nycaptor_palette_r) AM_WRITE(nycaptor_palette_w)
485433   AM_RANGE(0xdf00, 0xdf00) AM_READ(nycaptor_bx_r)
486434   AM_RANGE(0xdf01, 0xdf01) AM_READ(nycaptor_by_r)
487435   AM_RANGE(0xdf02, 0xdf02) AM_READ(nycaptor_b_r)
488436   AM_RANGE(0xdf03, 0xdf03) AM_READ(nycaptor_gfxctrl_r)
489   AM_RANGE(0xe000, 0xffff) AM_READ(nycaptor_sharedram_r)
490ADDRESS_MAP_END
491
492static ADDRESS_MAP_START( cyclshtg_writemem_sub, ADDRESS_SPACE_PROGRAM, 8 )
493   AM_RANGE(0x0000, 0xbfff) AM_WRITE(SMH_ROM)
494   AM_RANGE(0xc000, 0xc7ff) AM_WRITE(nycaptor_videoram_w) AM_BASE(&videoram) AM_SIZE(&videoram_size)
495   AM_RANGE(0xdc00, 0xdc9f) AM_WRITE(nycaptor_spriteram_w)
496   AM_RANGE(0xdca0, 0xdcbf) AM_WRITE(nycaptor_scrlram_w) AM_BASE(&nycaptor_scrlram)
497   AM_RANGE(0xdd00, 0xdeff) AM_WRITE(nycaptor_palette_w)
498437   AM_RANGE(0xdf03, 0xdf03) AM_WRITENOP
499   AM_RANGE(0xe000, 0xffff) AM_WRITE(nycaptor_sharedram_w)
438   AM_RANGE(0xe000, 0xffff) AM_READ(nycaptor_sharedram_r) AM_WRITE(nycaptor_sharedram_w)
500439ADDRESS_MAP_END
501440
502441static READ8_HANDLER(unk_r)
r4679r4680
504443  return mame_rand(space->machine);
505444}
506445
507static ADDRESS_MAP_START( bronx_readmem, ADDRESS_SPACE_PROGRAM, 8 )
508   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
509   AM_RANGE(0x8000, 0xbfff) AM_READ(SMH_BANK1)
510   AM_RANGE(0xc000, 0xcfff) AM_READ(nycaptor_videoram_r)
511   AM_RANGE(0xd000, 0xd000) AM_READ(cyclshtg_mcu_r)
512   AM_RANGE(0xd002, 0xd002) AM_READ(nycaptor_generic_control_r)
513   AM_RANGE(0xd400, 0xd400) AM_READ(from_snd_r)
446static ADDRESS_MAP_START( bronx_master_map, ADDRESS_SPACE_PROGRAM, 8 )
447   AM_RANGE(0x0000, 0x7fff) AM_ROM
448   AM_RANGE(0x8000, 0xbfff) AM_ROMBANK(1)
449   AM_RANGE(0xc000, 0xc7ff) AM_READ(nycaptor_videoram_r) AM_WRITE(nycaptor_videoram_w) AM_BASE(&videoram) AM_SIZE(&videoram_size)
450   AM_RANGE(0xd000, 0xd000) AM_READ(cyclshtg_mcu_r) AM_WRITENOP
451   AM_RANGE(0xd001, 0xd001) AM_WRITE(sub_cpu_halt_w)
452   AM_RANGE(0xd002, 0xd002) AM_READ(nycaptor_generic_control_r) AM_WRITE(cyclshtg_generic_control_w)
453   AM_RANGE(0xd400, 0xd400) AM_READ(from_snd_r) AM_WRITE(sound_command_w)
514454   AM_RANGE(0xd401, 0xd401) AM_READ(unk_r)
455   AM_RANGE(0xd403, 0xd403) AM_WRITE(sound_cpu_reset_w)
515456   AM_RANGE(0xd800, 0xd800) AM_READ_PORT("DSW0")
516457   AM_RANGE(0xd801, 0xd801) AM_READ_PORT("DSW1")
517458   AM_RANGE(0xd802, 0xd802) AM_READ_PORT("DSW2")
r4679r4680
520461   AM_RANGE(0xd805, 0xd805) AM_READ(cyclshtg_mcu_status_r)
521462   AM_RANGE(0xd806, 0xd806) AM_READNOP
522463   AM_RANGE(0xd807, 0xd807) AM_READ(cyclshtg_mcu_status_r)
523   AM_RANGE(0xdc00, 0xdc9f) AM_READ(nycaptor_spriteram_r)
524   AM_RANGE(0xdca0, 0xdcbf) AM_READ(nycaptor_scrlram_r)
525   AM_RANGE(0xdd00, 0xdeff) AM_READ(nycaptor_palette_r)
526   AM_RANGE(0xdf03, 0xdf03) AM_READ(nycaptor_gfxctrl_r)
527   AM_RANGE(0xe000, 0xffff) AM_READ(nycaptor_sharedram_r)
464   AM_RANGE(0xdc00, 0xdc9f) AM_READ(nycaptor_spriteram_r) AM_WRITE(nycaptor_spriteram_w)
465   AM_RANGE(0xdca0, 0xdcbf) AM_READ(nycaptor_scrlram_r) AM_RANGE(0xdca0, 0xdcbf) AM_WRITE(nycaptor_scrlram_w) AM_BASE(&nycaptor_scrlram)
466   AM_RANGE(0xdd00, 0xdeff) AM_READ(nycaptor_palette_r) AM_WRITE(nycaptor_palette_w)
467   AM_RANGE(0xdf03, 0xdf03) AM_READ(nycaptor_gfxctrl_r) AM_WRITE(nycaptor_gfxctrl_w)
468   AM_RANGE(0xe000, 0xffff) AM_READ(nycaptor_sharedram_r) AM_WRITE(nycaptor_sharedram_w) AM_BASE(&nycaptor_sharedram)
528469ADDRESS_MAP_END
529470
530static ADDRESS_MAP_START( bronx_writemem, ADDRESS_SPACE_PROGRAM, 8 )
531   AM_RANGE(0x0000, 0xbfff) AM_WRITE(SMH_ROM)
532   AM_RANGE(0xc000, 0xcfff) AM_WRITE(nycaptor_videoram_w) AM_BASE(&videoram) AM_SIZE(&videoram_size)
533   AM_RANGE(0xd000, 0xd000) AM_WRITENOP
534   AM_RANGE(0xd001, 0xd001) AM_WRITE(sub_cpu_halt_w)
535   AM_RANGE(0xd002, 0xd002) AM_WRITE(cyclshtg_generic_control_w)
536   AM_RANGE(0xd400, 0xd400) AM_WRITE(sound_command_w)
537   AM_RANGE(0xd403, 0xd403) AM_WRITE(sound_cpu_reset_w)
538   AM_RANGE(0xdc00, 0xdc9f) AM_WRITE(nycaptor_spriteram_w)
539   AM_RANGE(0xdca0, 0xdcbf) AM_WRITE(nycaptor_scrlram_w) AM_BASE(&nycaptor_scrlram)
540   AM_RANGE(0xdd00, 0xdeff) AM_WRITE(nycaptor_palette_w)
541   AM_RANGE(0xdf03, 0xdf03) AM_WRITE(nycaptor_gfxctrl_w)
542   AM_RANGE(0xe000, 0xffff) AM_WRITE(nycaptor_sharedram_w) AM_BASE(&nycaptor_sharedram)
543ADDRESS_MAP_END
544
545static ADDRESS_MAP_START( bronx_io, ADDRESS_SPACE_IO, 8 )
546    AM_RANGE(0x0000, 0x7fff) AM_ROM AM_REGION("user1", 0)
547ADDRESS_MAP_END
548
549static ADDRESS_MAP_START( bronx_readmem_sub, ADDRESS_SPACE_PROGRAM, 8 )
550    AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
471static ADDRESS_MAP_START( bronx_slave_map, ADDRESS_SPACE_PROGRAM, 8 )
472    AM_RANGE(0x0000, 0x7fff) AM_ROM
473    AM_RANGE(0xc000, 0xc7ff) AM_READ(nycaptor_videoram_r) AM_WRITE(nycaptor_videoram_w) AM_BASE(&videoram) AM_SIZE(&videoram_size)
551474   AM_RANGE(0xd800, 0xd800) AM_READ_PORT("DSW0")
552475   AM_RANGE(0xd801, 0xd801) AM_READ_PORT("DSW1")
553476   AM_RANGE(0xd802, 0xd802) AM_READ_PORT("DSW2")
r4679r4680
555478   AM_RANGE(0xd804, 0xd804) AM_READ_PORT("IN1")
556479   AM_RANGE(0xd805, 0xd805) AM_READ(cyclshtg_mcu_status_r1)
557480   AM_RANGE(0xd807, 0xd807) AM_READ(cyclshtg_mcu_status_r)
558   AM_RANGE(0xdc00, 0xdc9f) AM_READ(nycaptor_spriteram_r)
559   AM_RANGE(0xdd00, 0xdeff) AM_READ(nycaptor_palette_r)
481   AM_RANGE(0xdc00, 0xdc9f) AM_READ(nycaptor_spriteram_r) AM_WRITE(nycaptor_spriteram_w)
482   AM_RANGE(0xdca0, 0xdcbf) AM_WRITE(nycaptor_scrlram_w) AM_BASE(&nycaptor_scrlram)
483   AM_RANGE(0xdd00, 0xdeff) AM_READ(nycaptor_palette_r) AM_WRITE(nycaptor_palette_w)
560484   AM_RANGE(0xdf00, 0xdf00) AM_READ(nycaptor_bx_r)
561485   AM_RANGE(0xdf01, 0xdf01) AM_READ(nycaptor_by_r)
562486   AM_RANGE(0xdf02, 0xdf02) AM_READ(nycaptor_b_r)
563   AM_RANGE(0xdf03, 0xdf03) AM_READ(nycaptor_gfxctrl_r)
564    AM_RANGE(0xe000, 0xffff) AM_READ(nycaptor_sharedram_r)
487   AM_RANGE(0xdf03, 0xdf03) AM_READ(nycaptor_gfxctrl_r) AM_WRITE(nycaptor_gfxctrl_w)
488    AM_RANGE(0xe000, 0xffff) AM_READ(nycaptor_sharedram_r) AM_WRITE(nycaptor_sharedram_w)
565489ADDRESS_MAP_END
566490
567static ADDRESS_MAP_START( bronx_writemem_sub, ADDRESS_SPACE_PROGRAM, 8 )
568   AM_RANGE(0x0000, 0xbfff) AM_WRITE(SMH_ROM)
569   AM_RANGE(0xc000, 0xc7ff) AM_WRITE(nycaptor_videoram_w) AM_BASE(&videoram) AM_SIZE(&videoram_size)
570   AM_RANGE(0xdc00, 0xdc9f) AM_WRITE(nycaptor_spriteram_w)
571   AM_RANGE(0xdca0, 0xdcbf) AM_WRITE(nycaptor_scrlram_w) AM_BASE(&nycaptor_scrlram)
572   AM_RANGE(0xdd00, 0xdeff) AM_WRITE(nycaptor_palette_w)
573   AM_RANGE(0xdf03, 0xdf03) AM_WRITE(nycaptor_gfxctrl_w)
574   AM_RANGE(0xe000, 0xffff) AM_WRITE(nycaptor_sharedram_w)
491static ADDRESS_MAP_START( bronx_slave_io_map, ADDRESS_SPACE_IO, 8 )
492    AM_RANGE(0x0000, 0x7fff) AM_ROM AM_REGION("user1", 0)
575493ADDRESS_MAP_END
576494
495
577496/* Cycle Shooting */
578497
579
580498static INPUT_PORTS_START( cyclshtg )
581499   PORT_START("DSW0")
582500   PORT_DIPNAME( 0x04, 0x04, "Test Mode" )
r4679r4680
768686static MACHINE_DRIVER_START( nycaptor )
769687   /* basic machine hardware */
770688   MDRV_CPU_ADD("maincpu", Z80,8000000/2)      /* ??? */
771   MDRV_CPU_PROGRAM_MAP(readmem,writemem)
689   MDRV_CPU_PROGRAM_MAP(nycaptor_master_map,0)
772690   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
773691
774692   MDRV_CPU_ADD("sub", Z80,8000000/2)
775   MDRV_CPU_PROGRAM_MAP(readmem_sub,writemem_sub)
693   MDRV_CPU_PROGRAM_MAP(nycaptor_slave_map,0)
776694   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)   /* IRQ generated by ??? */
777695
778696   MDRV_CPU_ADD("audiocpu", Z80,8000000/2)
779   MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem)
780   MDRV_CPU_VBLANK_INT_HACK(irq0_line_hold,2)   /* IRQ generated by ??? */
697   MDRV_CPU_PROGRAM_MAP(nycaptor_sound_map,0)
698   MDRV_CPU_PERIODIC_INT(irq0_line_hold,2*60)   /* IRQ generated by ??? */
781699
782700   MDRV_CPU_ADD("mcu", M68705,2000000)
783   MDRV_CPU_PROGRAM_MAP(m68705_readmem,m68705_writemem)
701   MDRV_CPU_PROGRAM_MAP(nycaptor_m68705_map,0)
784702
785   MDRV_QUANTUM_TIME(HZ(6000))   /* 100 CPU slices per frame - an high value to ensure proper */
703   MDRV_QUANTUM_TIME(HZ(6000))   /* 100 CPU slices per frame - an high value to ensure proper synchronization of the CPUs */
786704
787   /* synchronization of the CPUs */
788705   MDRV_MACHINE_RESET(ta7630)
789706
790707   /* video hardware */
r4679r4680
829746
830747static MACHINE_DRIVER_START( cyclshtg )
831748   MDRV_CPU_ADD("maincpu", Z80,8000000/2)
832
833   MDRV_CPU_PROGRAM_MAP(cyclshtg_readmem,cyclshtg_writemem)
749   MDRV_CPU_PROGRAM_MAP(cyclshtg_master_map,0)
834750   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
835751
836752   MDRV_CPU_ADD("sub", Z80,8000000/2)
837   MDRV_CPU_PROGRAM_MAP(cyclshtg_readmem_sub,cyclshtg_writemem_sub)
753   MDRV_CPU_PROGRAM_MAP(cyclshtg_slave_map,0)
838754   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
839755
840756   MDRV_CPU_ADD("audiocpu", Z80,8000000/2)
841   MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem)
842   MDRV_CPU_VBLANK_INT_HACK(irq0_line_hold,2)
757   MDRV_CPU_PROGRAM_MAP(nycaptor_sound_map,0)
758   MDRV_CPU_PERIODIC_INT(irq0_line_hold,2*60)
843759
844760#ifdef USE_MCU
845761   MDRV_CPU_ADD("mcu", M68705,2000000)
846   MDRV_CPU_PROGRAM_MAP(m68705_readmem,m68705_writemem)
762   MDRV_CPU_PROGRAM_MAP(nycaptor_m68705_map,0)
847763#endif
848764
849765   MDRV_QUANTUM_TIME(HZ(60))
r4679r4680
890806
891807static MACHINE_DRIVER_START( bronx )
892808   MDRV_CPU_ADD("maincpu", Z80,8000000/2)
893
894   MDRV_CPU_PROGRAM_MAP(bronx_readmem, bronx_writemem)
809   MDRV_CPU_PROGRAM_MAP(bronx_master_map,0)
895810   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
896811
897812   MDRV_CPU_ADD("sub", Z80,8000000/2)
898   MDRV_CPU_PROGRAM_MAP(bronx_readmem_sub, bronx_writemem_sub)
899   MDRV_CPU_IO_MAP(bronx_io, 0)
900
813   MDRV_CPU_PROGRAM_MAP(bronx_slave_map, 0)
814   MDRV_CPU_IO_MAP(bronx_slave_io_map, 0)
901815   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
902816
903817   MDRV_CPU_ADD("audiocpu", Z80,8000000/2)
904   MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem)
905   MDRV_CPU_VBLANK_INT_HACK(irq0_line_hold,2)
818   MDRV_CPU_PROGRAM_MAP(nycaptor_sound_map,0)
819   MDRV_CPU_PERIODIC_INT(irq0_line_hold,2*60)
906820
907821   MDRV_QUANTUM_TIME(HZ(120))
908822   MDRV_MACHINE_RESET(ta7630)
src/mame/drivers/mitchell.c
r4679r4680
88
99Other games that might run on this hardware:
1010"Chi-toitsu"(YUGA 1988)-Another version of"Mahjong Gakuen"
11"MIRAGE -Youjyu mahjong den-"(MITCHELL 1994)
1211
1312Notes:
1413- Super Pang has a protection which involves copying code stored in the
r4679r4680
348347
349348***************************************************************************/
350349
351static ADDRESS_MAP_START( mgakuen_readmem, ADDRESS_SPACE_PROGRAM, 8 )
352   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
353   AM_RANGE(0x8000, 0xbfff) AM_READ(SMH_BANK1)
354   AM_RANGE(0xc000, 0xc7ff) AM_READ(mgakuen_paletteram_r)   /* palette RAM */
355   AM_RANGE(0xc800, 0xcfff) AM_READ(pang_colorram_r)   /* Attribute RAM */
356   AM_RANGE(0xd000, 0xdfff) AM_READ(mgakuen_videoram_r)   /* char RAM */
357   AM_RANGE(0xe000, 0xefff) AM_READ(SMH_RAM)   /* Work RAM */
358   AM_RANGE(0xf000, 0xffff) AM_READ(mgakuen_objram_r)   /* OBJ RAM */
350static ADDRESS_MAP_START( mgakuen_map, ADDRESS_SPACE_PROGRAM, 8 )
351   AM_RANGE(0x0000, 0x7fff) AM_ROM
352   AM_RANGE(0x8000, 0xbfff) AM_ROMBANK(1)
353   AM_RANGE(0xc000, 0xc7ff) AM_READWRITE(mgakuen_paletteram_r,mgakuen_paletteram_w)   /* palette RAM */
354   AM_RANGE(0xc800, 0xcfff) AM_READWRITE(pang_colorram_r,pang_colorram_w) AM_BASE(&pang_colorram) /* Attribute RAM */
355   AM_RANGE(0xd000, 0xdfff) AM_READWRITE(mgakuen_videoram_r,mgakuen_videoram_w) AM_BASE(&pang_videoram) AM_SIZE(&pang_videoram_size) /* char RAM */
356   AM_RANGE(0xe000, 0xefff) AM_RAM   /* Work RAM */
357   AM_RANGE(0xf000, 0xffff) AM_READWRITE(mgakuen_objram_r,mgakuen_objram_w)   /* OBJ RAM */
359358ADDRESS_MAP_END
360359
361static ADDRESS_MAP_START( mgakuen_writemem, ADDRESS_SPACE_PROGRAM, 8 )
362   AM_RANGE(0x0000, 0xbfff) AM_WRITE(SMH_ROM)
363   AM_RANGE(0xc000, 0xc7ff) AM_WRITE(mgakuen_paletteram_w)
364   AM_RANGE(0xc800, 0xcfff) AM_WRITE(pang_colorram_w) AM_BASE(&pang_colorram)
365   AM_RANGE(0xd000, 0xdfff) AM_WRITE(mgakuen_videoram_w) AM_BASE(&pang_videoram) AM_SIZE(&pang_videoram_size)
366   AM_RANGE(0xe000, 0xefff) AM_WRITE(SMH_RAM)
367   AM_RANGE(0xf000, 0xffff) AM_WRITE(mgakuen_objram_w)   /* OBJ RAM */
368ADDRESS_MAP_END
369
370static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 )
371   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
372   AM_RANGE(0x8000, 0xbfff) AM_READ(SMH_BANK1)
373   AM_RANGE(0xc000, 0xc7ff) AM_READ(pang_paletteram_r)   /* Banked palette RAM */
374   AM_RANGE(0xc800, 0xcfff) AM_READ(pang_colorram_r)   /* Attribute RAM */
375   AM_RANGE(0xd000, 0xdfff) AM_READ(pang_videoram_r)   /* Banked char / OBJ RAM */
360static ADDRESS_MAP_START( mitchell_map, ADDRESS_SPACE_PROGRAM, 8 )
361   AM_RANGE(0x0000, 0x7fff) AM_ROM
362   AM_RANGE(0x8000, 0xbfff) AM_ROMBANK(1)
363   AM_RANGE(0xc000, 0xc7ff) AM_READWRITE(pang_paletteram_r,pang_paletteram_w) /* Banked palette RAM */
364   AM_RANGE(0xc800, 0xcfff) AM_READWRITE(pang_colorram_r,pang_colorram_w) AM_BASE(&pang_colorram) /* Attribute RAM */
365   AM_RANGE(0xd000, 0xdfff) AM_READWRITE(pang_videoram_r,pang_videoram_w) AM_BASE(&pang_videoram) AM_SIZE(&pang_videoram_size)/* Banked char / OBJ RAM */
376366   AM_RANGE(0xe000, 0xffff) AM_READ(SMH_RAM)   /* Work RAM */
377367ADDRESS_MAP_END
378368
379static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 )
380   AM_RANGE(0x0000, 0xbfff) AM_WRITE(SMH_ROM)
381   AM_RANGE(0xc000, 0xc7ff) AM_WRITE(pang_paletteram_w)
382   AM_RANGE(0xc800, 0xcfff) AM_WRITE(pang_colorram_w) AM_BASE(&pang_colorram)
383   AM_RANGE(0xd000, 0xdfff) AM_WRITE(pang_videoram_w) AM_BASE(&pang_videoram) AM_SIZE(&pang_videoram_size)
384   AM_RANGE(0xe000, 0xffff) AM_WRITE(SMH_RAM)
385ADDRESS_MAP_END
386
387static ADDRESS_MAP_START( io_map, ADDRESS_SPACE_IO, 8 )
369static ADDRESS_MAP_START( mitchell_io_map, ADDRESS_SPACE_IO, 8 )
388370   ADDRESS_MAP_GLOBAL_MASK(0xff)
389371   AM_RANGE(0x00, 0x00) AM_WRITE(pang_gfxctrl_w)   /* Palette bank, layer enable, coin counters, more */
390372   AM_RANGE(0x00, 0x02) AM_READ(input_r)         /* Super Pang needs a kludge to initialize EEPROM.
r4679r4680
403385
404386/* spangbl */
405387
406static ADDRESS_MAP_START( spangb_memmap, ADDRESS_SPACE_PROGRAM, 8 )
388static ADDRESS_MAP_START( spangbl_map, ADDRESS_SPACE_PROGRAM, 8 )
407389   AM_RANGE(0x0000, 0x7fff) AM_ROM
408   AM_RANGE(0x8000, 0xbfff) AM_READWRITE(SMH_BANK1, SMH_NOP)
390   AM_RANGE(0x8000, 0xbfff) AM_ROMBANK(1) AM_WRITENOP
409391   AM_RANGE(0xc000, 0xc7ff) AM_READWRITE(pang_paletteram_r, pang_paletteram_w)   /* Banked palette RAM */
410392   AM_RANGE(0xc800, 0xcfff) AM_READWRITE(pang_colorram_r, pang_colorram_w)   AM_BASE(&pang_colorram)/* Attribute RAM */
411393   AM_RANGE(0xd000, 0xdfff) AM_READWRITE(pang_videoram_r, pang_videoram_w)   AM_BASE(&pang_videoram) AM_SIZE(&pang_videoram_size) /* Banked char / OBJ RAM */
412   AM_RANGE(0xe000, 0xffff) AM_READ(SMH_RAM)   /* Work RAM */
413   AM_RANGE(0xe000, 0xffff) AM_RAM
394   AM_RANGE(0xe000, 0xffff) AM_RAM      /* Work RAM */
414395ADDRESS_MAP_END
415396
416static ADDRESS_MAP_START( spangb_portmap, ADDRESS_SPACE_IO, 8 )
397static ADDRESS_MAP_START( spangbl_io_map, ADDRESS_SPACE_IO, 8 )
417398   ADDRESS_MAP_GLOBAL_MASK(0xff)
418399   AM_RANGE(0x00, 0x02) AM_READ(input_r)   /* Super Pang needs a kludge to initialize EEPROM. */
419400   AM_RANGE(0x00, 0x00) AM_WRITE(pang_gfxctrl_w)    /* Palette bank, layer enable, coin counters, more */
r4679r4680
439420}
440421#endif
441422
442static ADDRESS_MAP_START( spangb_sound_memmap, ADDRESS_SPACE_PROGRAM, 8 )
423static ADDRESS_MAP_START( spangbl_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
443424   AM_RANGE(0x0000, 0x3fff) AM_ROM
444425//  AM_RANGE(0xec00, 0xec00) AM_WRITE( spangbl_msm5205_data_w )
445426   AM_RANGE(0xf000, 0xf3ff) AM_RAM
446427ADDRESS_MAP_END
447428
448static ADDRESS_MAP_START( spangb_sound_portmap, ADDRESS_SPACE_IO, 8 )
429static ADDRESS_MAP_START( spangbl_sound_io_map, ADDRESS_SPACE_IO, 8 )
449430   ADDRESS_MAP_GLOBAL_MASK(0xff)
450431ADDRESS_MAP_END
451432
r4679r4680
456437   okim6295_set_bank_base(device, 0x40000 * (data & 3));
457438}
458439
459static ADDRESS_MAP_START( mstworld_sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
460   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
461   AM_RANGE(0x8000, 0x87ff) AM_READ(SMH_RAM)
462   AM_RANGE(0x9800, 0x9800) AM_DEVREAD("oki", okim6295_r)
440static ADDRESS_MAP_START( mstworld_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
441   AM_RANGE(0x0000, 0x7fff) AM_ROM
442   AM_RANGE(0x8000, 0x87ff) AM_RAM
443   AM_RANGE(0x9000, 0x9000) AM_DEVWRITE("oki", oki_banking_w)
444   AM_RANGE(0x9800, 0x9800) AM_DEVREADWRITE("oki", okim6295_r,okim6295_w)
463445   AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_r)
464446ADDRESS_MAP_END
465447
466static ADDRESS_MAP_START( mstworld_sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
467   AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM)
468   AM_RANGE(0x8000, 0x87ff) AM_WRITE(SMH_RAM)
469   AM_RANGE(0x9000, 0x9000) AM_DEVWRITE("oki", oki_banking_w)
470   AM_RANGE(0x9800, 0x9800) AM_DEVWRITE("oki", okim6295_w)
471ADDRESS_MAP_END
472
473448static WRITE8_HANDLER(mstworld_sound_w)
474449{
475450   soundlatch_w(space,0,data);
r4679r4680
11171092
11181093   /* basic machine hardware */
11191094   MDRV_CPU_ADD("maincpu", Z80, 6000000)   /* ??? */
1120   MDRV_CPU_PROGRAM_MAP(mgakuen_readmem,mgakuen_writemem)
1121   MDRV_CPU_IO_MAP(io_map,0)
1095   MDRV_CPU_PROGRAM_MAP(mgakuen_map,0)
1096   MDRV_CPU_IO_MAP(mitchell_io_map,0)
11221097   MDRV_CPU_VBLANK_INT_HACK(irq0_line_hold,2)   /* ??? one extra irq seems to be needed for music (see input5_r) */
11231098
11241099   /* video hardware */
r4679r4680
11511126
11521127   /* basic machine hardware */
11531128   MDRV_CPU_ADD("maincpu",Z80, 8000000)   /* (verified on pcb) */
1154   MDRV_CPU_PROGRAM_MAP(readmem,writemem)
1155   MDRV_CPU_IO_MAP(io_map,0)
1129   MDRV_CPU_PROGRAM_MAP(mitchell_map,0)
1130   MDRV_CPU_IO_MAP(mitchell_io_map,0)
11561131   MDRV_CPU_VBLANK_INT_HACK(irq0_line_hold,2)   /* ??? one extra irq seems to be needed for music (see input5_r) */
11571132
11581133   MDRV_NVRAM_HANDLER(mitchell)
r4679r4680
12221197   MDRV_IMPORT_FROM(pang)
12231198
12241199   MDRV_CPU_MODIFY("maincpu")
1225   MDRV_CPU_PROGRAM_MAP(spangb_memmap,0)
1226   MDRV_CPU_IO_MAP(spangb_portmap,0)
1200   MDRV_CPU_PROGRAM_MAP(spangbl_map,0)
1201   MDRV_CPU_IO_MAP(spangbl_io_map,0)
12271202   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
12281203
12291204   MDRV_CPU_ADD("soundcpu",Z80, 8000000)
1230   MDRV_CPU_PROGRAM_MAP(spangb_sound_memmap,0 )
1231   MDRV_CPU_IO_MAP(spangb_sound_portmap,0)
1205   MDRV_CPU_PROGRAM_MAP(spangbl_sound_map,0 )
1206   MDRV_CPU_IO_MAP(spangbl_sound_io_map,0)
12321207   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
12331208//  MDRV_CPU_VBLANK_INT("screen", nmi_line_pulse)
12341209
r4679r4680
12431218static MACHINE_DRIVER_START( mstworld )
12441219
12451220   /* basic machine hardware */
1246
1247
12481221   /* it doesn't glitch with the clock speed set to 4x normal, however this is incorrect..
12491222      the interrupt handling (and probably various irq flags / vbl flags handling etc.) is
12501223      more likely wrong.. the game appears to run too fast anyway .. */
12511224   MDRV_CPU_ADD("maincpu", Z80, 6000000*4)
1252
1253   MDRV_CPU_PROGRAM_MAP(readmem,writemem)
1225   MDRV_CPU_PROGRAM_MAP(mitchell_map,0)
12541226   MDRV_CPU_IO_MAP(mstworld_io_map,0)
12551227   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
12561228
12571229   MDRV_CPU_ADD("audiocpu", Z80,6000000)       /* 6 MHz? */
1258   MDRV_CPU_PROGRAM_MAP(mstworld_sound_readmem,mstworld_sound_writemem)
1230   MDRV_CPU_PROGRAM_MAP(mstworld_sound_map,0)
12591231
12601232   /* video hardware */
12611233   MDRV_SCREEN_ADD("screen", RASTER)
r4679r4680
12841256
12851257   /* basic machine hardware */
12861258   MDRV_CPU_ADD("maincpu", Z80, 8000000)   /* Super Pang says 8MHZ ORIGINAL BOARD */
1287   MDRV_CPU_PROGRAM_MAP(readmem,writemem)
1288   MDRV_CPU_IO_MAP(io_map,0)
1259   MDRV_CPU_PROGRAM_MAP(mitchell_map,0)
1260   MDRV_CPU_IO_MAP(mitchell_io_map,0)
12891261   MDRV_CPU_VBLANK_INT_HACK(irq0_line_hold,2)   /* ??? one extra irq seems to be needed for music (see input5_r) */
12901262
12911263   MDRV_NVRAM_HANDLER(mitchell)
r4679r4680
21512123{
21522124   /* descramble the program rom .. */
21532125   int len = memory_region_length(machine, "maincpu");
2154   UINT8* source = malloc_or_die(len);
2126   UINT8* source = alloc_array_or_die(UINT8, len);
21552127   UINT8* dst    = memory_region(machine, "maincpu") ;
21562128   int x;
21572129
src/mame/drivers/rainbow.c
r4679r4680
263263   if (ACCESSING_BITS_0_7)
264264   {
265265      jumping_latch = data & 0xff; /*M68000 writes .b to $400007*/
266      cpu_set_input_line(space->machine->cpu[1],0,HOLD_LINE);
266      cputag_set_input_line(space->machine, "audiocpu", 0, HOLD_LINE);
267267   }
268268}
269269
r4679r4680
272272                            MEMORY STRUCTURES
273273***************************************************************************/
274274
275static ADDRESS_MAP_START( rainbow_readmem, ADDRESS_SPACE_PROGRAM, 16 )
276   AM_RANGE(0x000000, 0x07ffff) AM_READ(SMH_ROM)
277   AM_RANGE(0x10c000, 0x10ffff) AM_READ(SMH_RAM)   /* main RAM */
278   AM_RANGE(0x200000, 0x200fff) AM_READ(SMH_RAM)   /* palette */
279   AM_RANGE(0x201000, 0x203fff) AM_READ(SMH_RAM)   /* read in initial checks */
275static ADDRESS_MAP_START( rainbow_map, ADDRESS_SPACE_PROGRAM, 16 )
276   AM_RANGE(0x000000, 0x07ffff) AM_ROM
277   AM_RANGE(0x10c000, 0x10ffff) AM_RAM            /* main RAM */
278   AM_RANGE(0x200000, 0x200fff) AM_RAM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE(&paletteram16)
279   AM_RANGE(0x201000, 0x203fff) AM_RAM            /* r/w in initial checks */
280280   AM_RANGE(0x390000, 0x390003) AM_READ_PORT("DSWA")
281   AM_RANGE(0x3b0000, 0x3b0003) AM_READ_PORT("DSWB")
282   AM_RANGE(0x3e0000, 0x3e0001) AM_READNOP
283   AM_RANGE(0x3e0002, 0x3e0003) AM_READ8(taitosound_comm_r, 0x00ff)
284   AM_RANGE(0x800000, 0x8007ff) AM_READ(rainbow_cchip_ram_r)
285   AM_RANGE(0x800802, 0x800803) AM_READ(rainbow_cchip_ctrl_r)
286   AM_RANGE(0xc00000, 0xc0ffff) AM_READ(PC080SN_word_0_r)
287   AM_RANGE(0xd00000, 0xd03fff) AM_READ(PC090OJ_word_0_r)   /* sprite ram + other stuff */
288ADDRESS_MAP_END
289
290static ADDRESS_MAP_START( rainbow_writemem, ADDRESS_SPACE_PROGRAM, 16 )
291   AM_RANGE(0x000000, 0x07ffff) AM_WRITE(SMH_ROM)
292   AM_RANGE(0x10c000, 0x10ffff) AM_WRITE(SMH_RAM)
293   AM_RANGE(0x200000, 0x200fff) AM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE(&paletteram16)
294   AM_RANGE(0x201000, 0x203fff) AM_WRITE(SMH_RAM)   /* written in initial checks */
295281   AM_RANGE(0x3a0000, 0x3a0001) AM_WRITE(rainbow_spritectrl_w)
296   AM_RANGE(0x3c0000, 0x3c0003) AM_WRITENOP   /* written very often, watchdog? */
297   AM_RANGE(0x3e0000, 0x3e0001) AM_WRITE8(taitosound_port_w, 0x00ff)
298   AM_RANGE(0x3e0002, 0x3e0003) AM_WRITE8(taitosound_comm_w, 0x00ff)
299   AM_RANGE(0x800000, 0x8007ff) AM_WRITE(rainbow_cchip_ram_w)
300   AM_RANGE(0x800802, 0x800803) AM_WRITE(rainbow_cchip_ctrl_w)
282   AM_RANGE(0x3b0000, 0x3b0003) AM_READ_PORT("DSWB")
283   AM_RANGE(0x3c0000, 0x3c0003) AM_WRITENOP      /* written very often, watchdog? */
284   AM_RANGE(0x3e0000, 0x3e0001) AM_READNOP AM_WRITE8(taitosound_port_w, 0x00ff)
285   AM_RANGE(0x3e0002, 0x3e0003) AM_READWRITE8(taitosound_comm_r,taitosound_comm_w, 0x00ff)
286   AM_RANGE(0x800000, 0x8007ff) AM_READWRITE(rainbow_cchip_ram_r,rainbow_cchip_ram_w)
287   AM_RANGE(0x800802, 0x800803) AM_READWRITE(rainbow_cchip_ctrl_r,rainbow_cchip_ctrl_w)
301288   AM_RANGE(0x800c00, 0x800c01) AM_WRITE(rainbow_cchip_bank_w)
302   AM_RANGE(0xc00000, 0xc0ffff) AM_WRITE(PC080SN_word_0_w)
289   AM_RANGE(0xc00000, 0xc0ffff) AM_READWRITE(PC080SN_word_0_r,PC080SN_word_0_w)
303290   AM_RANGE(0xc20000, 0xc20003) AM_WRITE(PC080SN_yscroll_word_0_w)
304291   AM_RANGE(0xc40000, 0xc40003) AM_WRITE(PC080SN_xscroll_word_0_w)
305292   AM_RANGE(0xc50000, 0xc50003) AM_WRITE(PC080SN_ctrl_word_0_w)
306   AM_RANGE(0xd00000, 0xd03fff) AM_WRITE(PC090OJ_word_0_w)   /* sprite ram + other stuff */
293   AM_RANGE(0xd00000, 0xd03fff) AM_READWRITE(PC090OJ_word_0_r,PC090OJ_word_0_w)   /* sprite ram + other stuff */
307294ADDRESS_MAP_END
308295
309
310static ADDRESS_MAP_START( jumping_readmem, ADDRESS_SPACE_PROGRAM, 16 )
311   AM_RANGE(0x000000, 0x09ffff) AM_READ(SMH_ROM)
312   AM_RANGE(0x10c000, 0x10ffff) AM_READ(SMH_RAM)   /* main RAM */
313   AM_RANGE(0x200000, 0x200fff) AM_READ(SMH_RAM)   /* palette */
314   AM_RANGE(0x201000, 0x203fff) AM_READ(SMH_RAM)   /* read in initial checks */
296static ADDRESS_MAP_START( jumping_map, ADDRESS_SPACE_PROGRAM, 16 )
297   AM_RANGE(0x000000, 0x09ffff) AM_ROM
298   AM_RANGE(0x10c000, 0x10ffff) AM_RAM            /* main RAM */
299   AM_RANGE(0x200000, 0x200fff) AM_RAM_WRITE(paletteram16_xxxxBBBBGGGGRRRR_word_w) AM_BASE(&paletteram16)
300   AM_RANGE(0x201000, 0x203fff) AM_RAM            /* r/w in initial checks */
315301   AM_RANGE(0x400000, 0x400001) AM_READ_PORT("DSWA")
316302   AM_RANGE(0x400002, 0x400003) AM_READ_PORT("DSWB")
317303   AM_RANGE(0x401000, 0x401001) AM_READ_PORT("401001")
318304   AM_RANGE(0x401002, 0x401003) AM_READ_PORT("401003")
319   AM_RANGE(0x420000, 0x420001) AM_READNOP   /* read, but result not used */
320   AM_RANGE(0x440000, 0x4407ff) AM_READ(SMH_RAM)
321   AM_RANGE(0xc00000, 0xc0ffff) AM_READ(PC080SN_word_0_r)
322   AM_RANGE(0xd00000, 0xd01fff) AM_READ(SMH_RAM)   /* original spriteram location, needed for Attract Mode */
323ADDRESS_MAP_END
324
325static ADDRESS_MAP_START( jumping_writemem, ADDRESS_SPACE_PROGRAM, 16 )
326   AM_RANGE(0x000000, 0x09ffff) AM_WRITE(SMH_ROM)
327   AM_RANGE(0x10c000, 0x10ffff) AM_WRITE(SMH_RAM)
328   AM_RANGE(0x200000, 0x200fff) AM_WRITE(paletteram16_xxxxBBBBGGGGRRRR_word_w) AM_BASE(&paletteram16)
329   AM_RANGE(0x201000, 0x203fff) AM_WRITE(SMH_RAM)   /* written in initial checks */
330305   AM_RANGE(0x3a0000, 0x3a0001) AM_WRITE(jumping_spritectrl_w)
331   AM_RANGE(0x3c0000, 0x3c0001) AM_WRITENOP   /* watchdog? */
306   AM_RANGE(0x3c0000, 0x3c0001) AM_WRITENOP      /* watchdog? */
332307   AM_RANGE(0x400006, 0x400007) AM_WRITE(jumping_sound_w)
308   AM_RANGE(0x420000, 0x420001) AM_READNOP         /* read, but result not used */
333309   AM_RANGE(0x430000, 0x430003) AM_WRITE(PC080SN_yscroll_word_0_w)
334   AM_RANGE(0x440000, 0x4407ff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)
335   AM_RANGE(0x800000, 0x80ffff) AM_WRITENOP   /* original c-chip location (not used) */
336   AM_RANGE(0xc00000, 0xc0ffff) AM_WRITE(PC080SN_word_0_w)
337   AM_RANGE(0xc20000, 0xc20003) AM_WRITENOP   /* seems it is a leftover from rainbow: scroll y written here too */
310   AM_RANGE(0x440000, 0x4407ff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)
311   AM_RANGE(0x800000, 0x80ffff) AM_WRITENOP      /* original c-chip location (not used) */
312   AM_RANGE(0xc00000, 0xc0ffff) AM_READWRITE(PC080SN_word_0_r,PC080SN_word_0_w)
313   AM_RANGE(0xc20000, 0xc20003) AM_WRITENOP      /* seems it is a leftover from rainbow: scroll y written here too */
338314   AM_RANGE(0xc40000, 0xc40003) AM_WRITE(PC080SN_xscroll_word_0_w)
339   AM_RANGE(0xd00000, 0xd01fff) AM_WRITE(SMH_RAM)    /* original spriteram location, needed for Attract Mode */
315   AM_RANGE(0xd00000, 0xd01fff) AM_RAM            /* original spriteram location, needed for Attract Mode */
340316ADDRESS_MAP_END
341317
342318
r4679r4680
349325
350326static WRITE8_DEVICE_HANDLER( bankswitch_w )
351327{
352   memory_set_bankptr(device->machine, 5, memory_region(device->machine, "audiocpu") + ((data - 1) & 3) * 0x4000 + 0x10000);
328   memory_set_bankptr(device->machine, 1, memory_region(device->machine, "audiocpu") + ((data - 1) & 3) * 0x4000 + 0x10000);
353329}
354330
355331static READ8_HANDLER( jumping_latch_r )
r4679r4680
358334}
359335
360336
361static ADDRESS_MAP_START( rainbow_s_readmem, ADDRESS_SPACE_PROGRAM, 8 )
362   AM_RANGE(0x0000, 0x3fff) AM_READ(SMH_ROM)
363   AM_RANGE(0x4000, 0x7fff) AM_READ(SMH_BANK5)
364   AM_RANGE(0x8000, 0x8fff) AM_READ(SMH_RAM)
365   AM_RANGE(0x9000, 0x9001) AM_DEVREAD("ym", ym2151_r)
366   AM_RANGE(0x9002, 0x9100) AM_READ(SMH_RAM)
367   AM_RANGE(0xa001, 0xa001) AM_READ(taitosound_slave_comm_r)
368ADDRESS_MAP_END
369
370static ADDRESS_MAP_START( rainbow_s_writemem, ADDRESS_SPACE_PROGRAM, 8 )
371   AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM)
372   AM_RANGE(0x8000, 0x8fff) AM_WRITE(SMH_RAM)
373   AM_RANGE(0x9000, 0x9001) AM_DEVWRITE("ym", ym2151_w)
337static ADDRESS_MAP_START( rainbow_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
338   AM_RANGE(0x0000, 0x3fff) AM_ROM
339   AM_RANGE(0x4000, 0x7fff) AM_ROMBANK(1)
340   AM_RANGE(0x8000, 0x8fff) AM_RAM
341   AM_RANGE(0x9000, 0x9001) AM_DEVREADWRITE("ym", ym2151_r,ym2151_w)
342   AM_RANGE(0x9002, 0x9100) AM_READNOP
374343   AM_RANGE(0xa000, 0xa000) AM_WRITE(taitosound_slave_port_w)
375   AM_RANGE(0xa001, 0xa001) AM_WRITE(taitosound_slave_comm_w)
344   AM_RANGE(0xa001, 0xa001) AM_READWRITE(taitosound_slave_comm_r,taitosound_slave_comm_w)
376345ADDRESS_MAP_END
377346
378static ADDRESS_MAP_START( jumping_sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
379   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
380   AM_RANGE(0x8000, 0x8fff) AM_READ(SMH_RAM)
381   AM_RANGE(0xb000, 0xb001) AM_DEVREAD("ym1", ym2203_r)
382   AM_RANGE(0xb400, 0xb401) AM_DEVREAD("ym2", ym2203_r)
347static ADDRESS_MAP_START( jumping_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
348   AM_RANGE(0x0000, 0x7fff) AM_ROM
349   AM_RANGE(0x8000, 0x8fff) AM_RAM
350   AM_RANGE(0xb000, 0xb001) AM_DEVREADWRITE("ym1", ym2203_r,ym2203_w)
351   AM_RANGE(0xb400, 0xb401) AM_DEVREADWRITE("ym2", ym2203_r,ym2203_w)
383352   AM_RANGE(0xb800, 0xb800) AM_READ(jumping_latch_r)
384   AM_RANGE(0xc000, 0xffff) AM_READ(SMH_ROM)
385ADDRESS_MAP_END
386
387static ADDRESS_MAP_START( jumping_sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
388   AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM)
389   AM_RANGE(0x8000, 0x8fff) AM_WRITE(SMH_RAM)
390   AM_RANGE(0xb000, 0xb001) AM_DEVWRITE("ym1", ym2203_w)
391   AM_RANGE(0xb400, 0xb401) AM_DEVWRITE("ym2", ym2203_w)
392353   AM_RANGE(0xbc00, 0xbc00) AM_WRITENOP   /* looks like a bankswitch, but sound works with or without it */
354   AM_RANGE(0xc000, 0xffff) AM_ROM
393355ADDRESS_MAP_END
394356
395357
r4679r4680
591553
592554static void irqhandler(const device_config *device, int irq)
593555{
594   cpu_set_input_line(device->machine->cpu[1],0,irq ? ASSERT_LINE : CLEAR_LINE);
556   cputag_set_input_line(device->machine, "audiocpu", 0, irq ? ASSERT_LINE : CLEAR_LINE);
595557}
596558
597559static const ym2151_interface ym2151_config =
r4679r4680
609571
610572   /* basic machine hardware */
611573   MDRV_CPU_ADD("maincpu", M68000, XTAL_16MHz/2) /* verified on pcb */
612   MDRV_CPU_PROGRAM_MAP(rainbow_readmem,rainbow_writemem)
574   MDRV_CPU_PROGRAM_MAP(rainbow_map,0)
613575   MDRV_CPU_VBLANK_INT("screen", irq4_line_hold)
614576
615577   MDRV_CPU_ADD("audiocpu", Z80, XTAL_16MHz/4) /* verified on pcb */
616   MDRV_CPU_PROGRAM_MAP(rainbow_s_readmem,rainbow_s_writemem)
578   MDRV_CPU_PROGRAM_MAP(rainbow_sound_map,0)
617579
618580   MDRV_QUANTUM_TIME(HZ(600))   /* 10 CPU slices per frame - enough for the sound CPU to read all commands */
619581
r4679r4680
641603MACHINE_DRIVER_END
642604
643605
644/* Jumping The pcb has 2 xtals, 24MHz and 18,432MHz */
606/* Jumping: The PCB has 2 Xtals, 24MHz and 18,432MHz */
645607static MACHINE_DRIVER_START( jumping )
646608
647609   /* basic machine hardware */
648610   MDRV_CPU_ADD("maincpu", M68000, XTAL_24MHz/3)   /* not verified but matches original */
649   MDRV_CPU_PROGRAM_MAP(jumping_readmem,jumping_writemem)
611   MDRV_CPU_PROGRAM_MAP(jumping_map,0)
650612   MDRV_CPU_VBLANK_INT("screen", irq4_line_hold)
651613
652614   MDRV_CPU_ADD("audiocpu", Z80, XTAL_18_432MHz/6)   /* not verified but music tempo matches original */
653   MDRV_CPU_PROGRAM_MAP(jumping_sound_readmem,jumping_sound_writemem)
615   MDRV_CPU_PROGRAM_MAP(jumping_sound_map,0)
654616
655617   MDRV_QUANTUM_TIME(HZ(600))   /* 10 CPU slices per frame - enough ? */
656618
src/mame/drivers/galspnbl.c
r4679r4680
3939   if (ACCESSING_BITS_0_7)
4040   {
4141      soundlatch_w(space,offset,data & 0xff);
42      cpu_set_input_line(space->machine->cpu[1],INPUT_LINE_NMI,PULSE_LINE);
42      cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
4343   }
4444}
4545
r4679r4680
196196
197197static void irqhandler(const device_config *device, int linestate)
198198{
199   cpu_set_input_line(device->machine->cpu[1],0,linestate);
199   cputag_set_input_line(device->machine, "audiocpu", 0, linestate);
200200}
201201
202202static const ym3812_interface ym3812_config =
src/mame/drivers/blktiger.c
r4679r4680
1616#include "driver.h"
1717#include "cpu/z80/z80.h"
1818#include "sound/2203intf.h"
19#include "cpu/mcs51/mcs51.h"
1920
2021
2122extern UINT8 *blktiger_txvideoram;
r4679r4680
3637VIDEO_EOF( blktiger );
3738
3839
40/**************************************************
3941
40/* this is a protection check. The game crashes (thru a jump to 0x8000) */
41/* if a read from this address doesn't return the value it expects. */
42static READ8_HANDLER( blktiger_protection_r )
42Protection comms between main cpu and i8751
43
44**************************************************/
45
46static UINT8 z80_latch,i8751_latch;
47
48static READ8_HANDLER( blktiger_from_mcu_r )
4349{
44   int data = cpu_get_reg(space->cpu, Z80_DE) >> 8;
45   logerror("protection read, PC: %04x Result:%02x\n",cpu_get_pc(space->cpu),data);
46   return data;
50   return i8751_latch;
4751}
4852
53static WRITE8_HANDLER( blktiger_to_mcu_w )
54{
55   cputag_set_input_line(space->machine, "mcu", MCS51_INT1_LINE, ASSERT_LINE);
56   z80_latch = data;
57}
58
59static READ8_HANDLER( blktiger_from_main_r )
60{
61   cputag_set_input_line(space->machine, "mcu", MCS51_INT1_LINE, CLEAR_LINE);
62   //printf("%02x read\n",latch);
63   return z80_latch;
64}
65
66static WRITE8_HANDLER( blktiger_to_main_w )
67{
68   //printf("%02x write\n",data);
69   i8751_latch = data;
70}
71
72
73
4974static WRITE8_HANDLER( blktiger_bankswitch_w )
5075{
5176   memory_set_bank(space->machine, 1, data & 0x0f);
r4679r4680
6186}
6287
6388
64static ADDRESS_MAP_START( mem_map, ADDRESS_SPACE_PROGRAM, 8 )
89static ADDRESS_MAP_START( blktiger_map, ADDRESS_SPACE_PROGRAM, 8 )
6590   AM_RANGE(0x0000, 0x7fff) AM_ROM
66   AM_RANGE(0x8000, 0xbfff) AM_READWRITE(SMH_BANK1, SMH_ROM)
91   AM_RANGE(0x8000, 0xbfff) AM_READWRITE(SMH_BANK(1), SMH_ROM)
6792   AM_RANGE(0xc000, 0xcfff) AM_READWRITE(blktiger_bgvideoram_r, blktiger_bgvideoram_w)
6893   AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(blktiger_txvideoram_w) AM_BASE(&blktiger_txvideoram)
6994   AM_RANGE(0xd800, 0xdbff) AM_RAM_WRITE(paletteram_xxxxBBBBRRRRGGGG_split1_w) AM_BASE(&paletteram)
r4679r4680
7297   AM_RANGE(0xfe00, 0xffff) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
7398ADDRESS_MAP_END
7499
75static ADDRESS_MAP_START( port_map, ADDRESS_SPACE_IO, 8 )
100static ADDRESS_MAP_START( blktiger_io_map, ADDRESS_SPACE_IO, 8 )
76101   ADDRESS_MAP_GLOBAL_MASK(0xff)
77102   AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0")   AM_WRITE(soundlatch_w)
78103   AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1")   AM_WRITE(blktiger_bankswitch_w)
r4679r4680
81106   AM_RANGE(0x04, 0x04) AM_READ_PORT("DSW1")   AM_WRITE(blktiger_video_control_w)
82107   AM_RANGE(0x05, 0x05) AM_READ_PORT("FREEZE")
83108   AM_RANGE(0x06, 0x06) AM_WRITE(watchdog_reset_w)
84   AM_RANGE(0x07, 0x07) AM_READ(blktiger_protection_r)   AM_WRITENOP /* Software protection (7) */
109   AM_RANGE(0x07, 0x07) AM_READWRITE(blktiger_from_mcu_r,blktiger_to_mcu_w)    /* Software protection (7) */
85110   AM_RANGE(0x08, 0x09) AM_WRITE(blktiger_scrollx_w)
86111   AM_RANGE(0x0a, 0x0b) AM_WRITE(blktiger_scrolly_w)
87112   AM_RANGE(0x0c, 0x0c) AM_WRITE(blktiger_video_enable_w)
r4679r4680
89114   AM_RANGE(0x0e, 0x0e) AM_WRITE(blktiger_screen_layout_w)
90115ADDRESS_MAP_END
91116
92static ADDRESS_MAP_START( sound_mem_map, ADDRESS_SPACE_PROGRAM, 8 )
117static ADDRESS_MAP_START( blktigerbl_io_map, ADDRESS_SPACE_IO, 8 )
118   ADDRESS_MAP_GLOBAL_MASK(0xff)
119   AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0")   AM_WRITE(soundlatch_w)
120   AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1")   AM_WRITE(blktiger_bankswitch_w)
121   AM_RANGE(0x02, 0x02) AM_READ_PORT("IN2")
122   AM_RANGE(0x03, 0x03) AM_READ_PORT("DSW0")   AM_WRITE(blktiger_coinlockout_w)
123   AM_RANGE(0x04, 0x04) AM_READ_PORT("DSW1")   AM_WRITE(blktiger_video_control_w)
124   AM_RANGE(0x05, 0x05) AM_READ_PORT("FREEZE")
125   AM_RANGE(0x06, 0x06) AM_WRITE(watchdog_reset_w)
126   AM_RANGE(0x07, 0x07) AM_NOP    /* Software protection (7) */
127   AM_RANGE(0x08, 0x09) AM_WRITE(blktiger_scrollx_w)
128   AM_RANGE(0x0a, 0x0b) AM_WRITE(blktiger_scrolly_w)
129   AM_RANGE(0x0c, 0x0c) AM_WRITE(blktiger_video_enable_w)
130   AM_RANGE(0x0d, 0x0d) AM_WRITE(blktiger_bgvideoram_bank_w)
131   AM_RANGE(0x0e, 0x0e) AM_WRITE(blktiger_screen_layout_w)
132ADDRESS_MAP_END
133
134static ADDRESS_MAP_START( blktiger_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
93135   AM_RANGE(0x0000, 0x7fff) AM_ROM
94136   AM_RANGE(0xc000, 0xc7ff) AM_RAM
95137   AM_RANGE(0xc800, 0xc800) AM_READ(soundlatch_r)
r4679r4680
97139   AM_RANGE(0xe002, 0xe003) AM_DEVREADWRITE("ym2", ym2203_r, ym2203_w)
98140ADDRESS_MAP_END
99141
142static ADDRESS_MAP_START( blktiger_mcu_map, ADDRESS_SPACE_PROGRAM, 8 )
143   AM_RANGE(0x0000, 0x0fff) AM_ROM
144ADDRESS_MAP_END
100145
146static ADDRESS_MAP_START( blktiger_mcu_io_map, ADDRESS_SPACE_IO, 8 )
147   AM_RANGE(MCS51_PORT_P0,MCS51_PORT_P0) AM_READWRITE(blktiger_from_main_r,blktiger_to_main_w)
148   AM_RANGE(MCS51_PORT_P1,MCS51_PORT_P3) AM_WRITENOP    /* other ports unknown */
149ADDRESS_MAP_END
150
151
152
101153static INPUT_PORTS_START( blktiger )
102154   PORT_START("IN0")   /* IN0 */
103155   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 )
r4679r4680
228280/* handler called by the 2203 emulator when the internal timers cause an IRQ */
229281static void irqhandler(const device_config *device, int irq)
230282{
231   cpu_set_input_line(device->machine->cpu[1],0,irq ? ASSERT_LINE : CLEAR_LINE);
283   cputag_set_input_line(device->machine, "audiocpu", 0, irq ? ASSERT_LINE : CLEAR_LINE);
232284}
233285
234286static const ym2203_interface ym2203_config =
r4679r4680
251303
252304   /* basic machine hardware */
253305   MDRV_CPU_ADD("maincpu", Z80, XTAL_24MHz/4)   /* verified on pcb */
254   MDRV_CPU_PROGRAM_MAP(mem_map, 0)
255   MDRV_CPU_IO_MAP(port_map, 0)
306   MDRV_CPU_PROGRAM_MAP(blktiger_map, 0)
307   MDRV_CPU_IO_MAP(blktiger_io_map, 0)
256308   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
257309
258310   MDRV_CPU_ADD("audiocpu", Z80, XTAL_3_579545MHz) /* verified on pcb */
259   MDRV_CPU_PROGRAM_MAP(sound_mem_map, 0)
311   MDRV_CPU_PROGRAM_MAP(blktiger_sound_map, 0)
260312
313   MDRV_CPU_ADD("mcu", I8751, XTAL_24MHz/4) /* ??? */
314   MDRV_CPU_PROGRAM_MAP(blktiger_mcu_map,0)
315   MDRV_CPU_IO_MAP(blktiger_mcu_io_map,0)
316   //MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
317
261318   MDRV_MACHINE_START(blktiger)
262319
263320   /* video hardware */
r4679r4680
288345   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.15)
289346MACHINE_DRIVER_END
290347
348static MACHINE_DRIVER_START( blktigerbl )
349   MDRV_IMPORT_FROM(blktiger)
350   MDRV_CPU_MODIFY("maincpu")
351   MDRV_CPU_IO_MAP(blktigerbl_io_map, 0)
291352
353   MDRV_CPU_REMOVE("mcu")
354MACHINE_DRIVER_END
355
292356/***************************************************************************
293357
294358  Game driver(s)
r4679r4680
306370   ROM_REGION( 0x10000, "audiocpu", 0 )
307371   ROM_LOAD( "bd-06.1l",  0x0000, 0x8000, CRC(2cf54274) SHA1(87df100c65999ba1e9d358ffd0fe4bba23ae0efb) )
308372
373   ROM_REGION( 0x10000, "mcu", 0 )
374   ROM_LOAD( "bd.5k",  0x0000, 0x1000, CRC(ac7d14f1) SHA1(46fd6b43f10312e3e8d3c9e0c0fd616af98fdbad) )
375
309376   ROM_REGION( 0x08000, "gfx1", ROMREGION_DISPOSE )
310377   ROM_LOAD( "bd-15.2n",  0x00000, 0x08000, CRC(70175d78) SHA1(2f02be2785d1824002145ea20db79821d0393929) )   /* characters */
311378
r4679r4680
328395   ROM_LOAD( "bd04.11l",  0x0300, 0x0100, CRC(e5490b68) SHA1(40f9f92efe7dd97b49144aec02eb509834056915) )
329396ROM_END
330397
331ROM_START( bktigrb1 )
398ROM_START( blktigerb1 )
332399   ROM_REGION( 0x50000, "maincpu", 0 )   /* 64k for code + banked ROMs images */
333400   ROM_LOAD( "btiger1.f6",   0x00000, 0x08000, CRC(9d8464e8) SHA1(c847ee9a22b8b636e85427214747e6bd779023e8) )   /* CODE */
334401   ROM_LOAD( "bdu-02a.6e",   0x10000, 0x10000, CRC(7bef96e8) SHA1(6d05a73d8400dead78c561b904bf6ef8311e7b91) )   /* 0+1 */
r4679r4680
361428   ROM_LOAD( "bd04.11l",  0x0300, 0x0100, CRC(e5490b68) SHA1(40f9f92efe7dd97b49144aec02eb509834056915) )
362429ROM_END
363430
364ROM_START( bktigrb2 )
431ROM_START( blktigerb2 )
365432   ROM_REGION( 0x50000, "maincpu", 0 )   /* 64k for code + banked ROMs images */
366433   ROM_LOAD( "1.bin",        0x00000, 0x08000, CRC(47e2b21e) SHA1(3f03543ace435239978a95f569ac89f6762253c0) )   /* CODE */
367434   ROM_LOAD( "bdu-02a.6e",   0x10000, 0x10000, CRC(7bef96e8) SHA1(6d05a73d8400dead78c561b904bf6ef8311e7b91) )   /* 0+1 */
r4679r4680
405472   ROM_REGION( 0x10000, "audiocpu", 0 )
406473   ROM_LOAD( "bd-06.1l",  0x0000, 0x8000, CRC(2cf54274) SHA1(87df100c65999ba1e9d358ffd0fe4bba23ae0efb) )
407474
475   ROM_REGION( 0x10000, "mcu", 0 )
476   ROM_LOAD( "bd.5k",  0x0000, 0x1000, CRC(ac7d14f1) SHA1(46fd6b43f10312e3e8d3c9e0c0fd616af98fdbad) )
477
408478   ROM_REGION( 0x08000, "gfx1", ROMREGION_DISPOSE )
409479   ROM_LOAD( "blkdrgon.2n",  0x00000, 0x08000, CRC(3821ab29) SHA1(576f1839f63b0cad6b851d6e6a3e9dec21ac811d) )   /* characters */
410480
r4679r4680
427497   ROM_LOAD( "bd04.11l",  0x0300, 0x0100, CRC(e5490b68) SHA1(40f9f92efe7dd97b49144aec02eb509834056915) )
428498ROM_END
429499
430ROM_START( blkdrgnb )
500ROM_START( blkdrgonb )
431501   ROM_REGION( 0x50000, "maincpu", 0 )   /* 64k for code + banked ROMs images */
432502   ROM_LOAD( "a1",           0x00000, 0x08000, CRC(7caf2ba0) SHA1(57b17caff67d36b24075f5865d433bfc8bcc9bc2) )   /* CODE */
433503   ROM_LOAD( "blkdrgon.6e",  0x10000, 0x10000, CRC(7d39c26f) SHA1(562a3f578e109ae020f65e341c876ad7e510a311) )   /* 0+1 */
r4679r4680
461531ROM_END
462532
463533
464
465GAME( 1987, blktiger, 0,        blktiger, blktiger, 0, ROT0, "Capcom", "Black Tiger", GAME_SUPPORTS_SAVE )
466GAME( 1987, bktigrb1, blktiger, blktiger, blktiger, 0, ROT0, "bootleg", "Black Tiger (bootleg set 1)", GAME_SUPPORTS_SAVE )
467GAME( 1987, bktigrb2, blktiger, blktiger, blktiger, 0, ROT0, "bootleg", "Black Tiger (bootleg set 2)", GAME_SUPPORTS_SAVE )
468GAME( 1987, blkdrgon, blktiger, blktiger, blktiger, 0, ROT0, "Capcom", "Black Dragon", GAME_SUPPORTS_SAVE )
469GAME( 1987, blkdrgnb, blktiger, blktiger, blktiger, 0, ROT0, "bootleg", "Black Dragon (bootleg)", GAME_SUPPORTS_SAVE )
534GAME( 1987, blktiger,   0,        blktiger,   blktiger, 0, ROT0, "Capcom",  "Black Tiger",                 GAME_SUPPORTS_SAVE )
535GAME( 1987, blktigerb1, blktiger, blktigerbl, blktiger, 0, ROT0, "bootleg", "Black Tiger (bootleg set 1)", GAME_SUPPORTS_SAVE )
536GAME( 1987, blktigerb2, blktiger, blktigerbl, blktiger, 0, ROT0, "bootleg", "Black Tiger (bootleg set 2)", GAME_SUPPORTS_SAVE )
537GAME( 1987, blkdrgon,   blktiger, blktiger,   blktiger, 0, ROT0, "Capcom",  "Black Dragon",                GAME_SUPPORTS_SAVE )
538GAME( 1987, blkdrgonb,  blktiger, blktigerbl, blktiger, 0, ROT0, "bootleg", "Black Dragon (bootleg)",      GAME_SUPPORTS_SAVE )
src/mame/drivers/mgolf.c
r4679r4680
8282         time_released = timer_get_time(machine);
8383
8484         if (!mask)
85            cpu_set_input_line(machine->cpu[0], INPUT_LINE_NMI, PULSE_LINE);
85            cputag_set_input_line(machine, "maincpu", INPUT_LINE_NMI, PULSE_LINE);
8686      }
8787      else
8888         time_pushed = timer_get_time(machine);
r4679r4680
9898
9999   update_plunger(machine);
100100
101   generic_pulse_irq_line(machine->cpu[0], 0);
101   generic_pulse_irq_line(cputag_get_cpu(machine, "maincpu"), 0);
102102
103103   scanline = scanline + 32;
104104
src/mame/drivers/deco_mlc.c
r4679r4680
177177static TIMER_CALLBACK( interrupt_gen )
178178{
179179//  logerror("hit scanline IRQ %d (%08x)\n", video_screen_get_vpos(machine->primary_screen), info.i);
180   cpu_set_input_line(machine->cpu[0], mainCpuIsArm ? ARM_IRQ_LINE : 1, HOLD_LINE);
180   cputag_set_input_line(machine, "maincpu", mainCpuIsArm ? ARM_IRQ_LINE : 1, HOLD_LINE);
181181}
182182
183183static WRITE32_HANDLER( mlc_irq_w )
r4679r4680
189189   switch (offset*4)
190190   {
191191   case 0x10: /* IRQ ack.  Value written doesn't matter */
192      cpu_set_input_line(space->machine->cpu[0], mainCpuIsArm ? ARM_IRQ_LINE : 1, CLEAR_LINE);
192      cputag_set_input_line(space->machine, "maincpu", mainCpuIsArm ? ARM_IRQ_LINE : 1, CLEAR_LINE);
193193      return;
194194   case 0x14: /* Prepare scanline interrupt */
195195      timer_adjust_oneshot(raster_irq_timer,video_screen_get_time_until_pos(space->machine->primary_screen, irq_ram[0x14/4], 0),0);
r4679r4680
264264
265265/******************************************************************************/
266266
267static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 32 )
268   AM_RANGE(0x0000000, 0x00fffff) AM_READ(SMH_ROM) AM_MIRROR(0xff000000)
269   AM_RANGE(0x0100000, 0x011ffff) AM_READ(SMH_RAM) AM_MIRROR(0xff000000)
267static ADDRESS_MAP_START( decomlc_map, ADDRESS_SPACE_PROGRAM, 32 )
268   AM_RANGE(0x0000000, 0x00fffff) AM_ROM AM_MIRROR(0xff000000)
269   AM_RANGE(0x0100000, 0x011ffff) AM_RAM AM_BASE(&mlc_ram) AM_MIRROR(0xff000000)
270270   AM_RANGE(0x0200000, 0x020000f) AM_READNOP AM_MIRROR(0xff000000)/* IRQ control? */
271271   AM_RANGE(0x0200070, 0x0200073) AM_READ(decomlc_vbl_r) AM_MIRROR(0xff000000)
272272   AM_RANGE(0x0200074, 0x0200077) AM_READ(mlc_scanline_r) AM_MIRROR(0xff000000)
273273   AM_RANGE(0x0200078, 0x020007f) AM_READ(test2_r)   AM_MIRROR(0xff000000)
274   AM_RANGE(0x0200080, 0x02000ff) AM_READ(SMH_RAM) AM_MIRROR(0xff000000)
275   AM_RANGE(0x0204000, 0x0206fff) AM_READ(mlc_spriteram_r) AM_MIRROR(0xff000000)
276   AM_RANGE(0x0200080, 0x02000ff) AM_READ(SMH_RAM) AM_MIRROR(0xff000000)
277   AM_RANGE(0x0280000, 0x029ffff) AM_READ(mlc_vram_r) AM_MIRROR(0xff000000)
278   AM_RANGE(0x0300000, 0x0307fff) AM_READ(SMH_RAM) AM_MIRROR(0xff000000)
274   AM_RANGE(0x0200000, 0x020007f) AM_WRITE(mlc_irq_w) AM_BASE(&irq_ram) AM_MIRROR(0xff000000)
275   AM_RANGE(0x0200080, 0x02000ff) AM_RAM AM_BASE(&mlc_clip_ram) AM_MIRROR(0xff000000)
276   AM_RANGE(0x0204000, 0x0206fff) AM_READWRITE(mlc_spriteram_r, SMH_RAM) AM_BASE(&spriteram32) AM_SIZE(&spriteram_size) AM_MIRROR(0xff000000)
277   AM_RANGE(0x0280000, 0x029ffff) AM_READWRITE(mlc_vram_r, SMH_RAM) AM_BASE(&mlc_vram) AM_MIRROR(0xff000000)
278   AM_RANGE(0x0300000, 0x0307fff) AM_RAM_WRITE(avengrs_palette_w) AM_BASE(&paletteram32) AM_MIRROR(0xff000000)
279279   AM_RANGE(0x0400000, 0x0400003) AM_READ_PORT("INPUTS") AM_MIRROR(0xff000000)
280280   AM_RANGE(0x0440000, 0x044001f) AM_READ(test3_r)   AM_MIRROR(0xff000000)
281   AM_RANGE(0x0600000, 0x0600007) AM_DEVREAD8("ymz", ymz280b_r, 0xff000000) AM_MIRROR(0xff000000)
282   AM_RANGE(0x070f000, 0x070ffff) AM_READ(stadhr96_prot_146_r) AM_MIRROR(0xff000000)
283ADDRESS_MAP_END
284
285static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 32 )
286   AM_RANGE(0x0000000, 0x00fffff) AM_WRITE(SMH_ROM) AM_MIRROR(0xff000000)
287   AM_RANGE(0x0100000, 0x011ffff) AM_WRITE(SMH_RAM) AM_BASE(&mlc_ram) AM_MIRROR(0xff000000)
288   AM_RANGE(0x0200000, 0x020007f) AM_WRITE(mlc_irq_w) AM_BASE(&irq_ram) AM_MIRROR(0xff000000)
289   AM_RANGE(0x0200080, 0x02000ff) AM_WRITE(SMH_RAM) AM_BASE(&mlc_clip_ram) AM_MIRROR(0xff000000)
290   AM_RANGE(0x0204000, 0x0206fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram32) AM_SIZE(&spriteram_size) AM_MIRROR(0xff000000)
291   AM_RANGE(0x0280000, 0x029ffff) AM_WRITE(SMH_RAM) AM_BASE(&mlc_vram) AM_MIRROR(0xff000000)
292   AM_RANGE(0x0300000, 0x0307fff) AM_WRITE(avengrs_palette_w) AM_BASE(&paletteram32) AM_MIRROR(0xff000000)
293281   AM_RANGE(0x044001c, 0x044001f) AM_WRITENOP AM_MIRROR(0xff000000)
294282   AM_RANGE(0x0500000, 0x0500003) AM_WRITE(avengrs_eprom_w) AM_MIRROR(0xff000000)
295   AM_RANGE(0x0600000, 0x0600007) AM_DEVWRITE8("ymz", ymz280b_w, 0xff000000) AM_MIRROR(0xff000000)
283   AM_RANGE(0x0600000, 0x0600007) AM_DEVREADWRITE8("ymz", ymz280b_r, ymz280b_w, 0xff000000) AM_MIRROR(0xff000000)
284   AM_RANGE(0x070f000, 0x070ffff) AM_READ(stadhr96_prot_146_r) AM_MIRROR(0xff000000)
296285//  AM_RANGE(0x070f000, 0x070ffff) AM_READ(stadhr96_prot_146_w) AM_BASE(&deco32_prot_ram)
297286ADDRESS_MAP_END
298287
r4679r4680
415404
416405   /* basic machine hardware */
417406   MDRV_CPU_ADD("maincpu", SH2,42000000/2) /* 21 MHz clock confirmed on real board */
418   MDRV_CPU_PROGRAM_MAP(readmem,writemem)
407   MDRV_CPU_PROGRAM_MAP(decomlc_map,0)
419408
420409   MDRV_MACHINE_RESET(mlc)
421410   MDRV_NVRAM_HANDLER(mlc) /* Actually 93c45 */
r4679r4680
446435
447436   /* basic machine hardware */
448437   MDRV_CPU_ADD("maincpu", ARM,42000000/6) /* 42 MHz -> 7MHz clock confirmed on real board */
449   MDRV_CPU_PROGRAM_MAP(readmem,writemem)
438   MDRV_CPU_PROGRAM_MAP(decomlc_map,0)
450439
451440   MDRV_MACHINE_RESET(mlc)
452441   MDRV_NVRAM_HANDLER(mlc) /* Actually 93c45 */
r4679r4680
708697   /* the same as simpl156 / heavy smash? */
709698   UINT8 *rom = memory_region(machine, "ymz");
710699   int length = memory_region_length(machine, "ymz");
711   UINT8 *buf1 = malloc_or_die(length);
700   UINT8 *buf1 = alloc_array_or_die(UINT8, length);
712701
713702   UINT32 x;
714703
r4679r4680
744733static DRIVER_INIT( avengrgs )
745734{
746735   // init options
747   sh2drc_set_options(machine->cpu[0], SH2DRC_FASTEST_OPTIONS);
736   sh2drc_set_options(cputag_get_cpu(machine, "maincpu"), SH2DRC_FASTEST_OPTIONS);
748737
749738   // set up speed cheat
750   sh2drc_add_pcflush(machine->cpu[0], 0x3234);
751   sh2drc_add_pcflush(machine->cpu[0], 0x32dc);
739   sh2drc_add_pcflush(cputag_get_cpu(machine, "maincpu"), 0x3234);
740   sh2drc_add_pcflush(cputag_get_cpu(machine, "maincpu"), 0x32dc);
752741
753   mainCpuIsArm=0;
754   memory_install_read32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x01089a0, 0x01089a3, 0, 0, avengrgs_speedup_r );
742   mainCpuIsArm = 0;
743   memory_install_read32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x01089a0, 0x01089a3, 0, 0, avengrgs_speedup_r );
755744   descramble_sound(machine);
756745}
757746
r4679r4680
760749   /* The timing in the ARM core isn't as accurate as it should be, so bump up the
761750        effective clock rate here to compensate otherwise we have slowdowns in
762751        Skull Fung where there probably shouldn't be. */
763   cpu_set_clockscale(machine->cpu[0], 2.0f);
764   mainCpuIsArm=1;
752   cpu_set_clockscale(cputag_get_cpu(machine, "maincpu"), 2.0f);
753   mainCpuIsArm = 1;
765754   deco156_decrypt(machine);
766755   descramble_sound(machine);
767756}
src/mame/drivers/tryout.c
r4679r4680
3030
3131static WRITE8_HANDLER( tryout_nmi_ack_w )
3232{
33   cpu_set_input_line(space->machine->cpu[0], INPUT_LINE_NMI, CLEAR_LINE );
33   cputag_set_input_line(space->machine, "maincpu", INPUT_LINE_NMI, CLEAR_LINE );
3434}
3535
3636static WRITE8_HANDLER( tryout_sound_w )
3737{
38   soundlatch_w(space,0,data);
39   cpu_set_input_line(space->machine->cpu[1], 0, HOLD_LINE);
38   soundlatch_w(space, 0, data);
39   cputag_set_input_line(space->machine, "audiocpu", 0, HOLD_LINE);
4040}
4141
4242/*this is actually irq/nmi mask, polls only four values at start up (81->01->81->01) and then
4343  stays on this state.*/
4444static WRITE8_HANDLER( tryout_sound_irq_ack_w )
4545{
46//  cpu_set_input_line(space->machine->cpu[1], 0, CLEAR_LINE);
46//  cputag_set_input_line(space->machine, "audiocpu", 0, CLEAR_LINE);
4747}
4848
4949static WRITE8_HANDLER( tryout_bankswitch_w )
r4679r4680
5252   int bankaddress;
5353
5454   bankaddress = 0x10000 + (data & 0x01) * 0x2000;
55   memory_set_bankptr(space->machine, 1,&RAM[bankaddress]);
55   memory_set_bankptr(space->machine, 1, &RAM[bankaddress]);
5656}
5757
5858static ADDRESS_MAP_START( main_cpu, ADDRESS_SPACE_PROGRAM, 8 )
src/mame/drivers/pasha2.c
r4679r4680
315315
316316static VIDEO_START( pasha2 )
317317{
318   bitmap0 = auto_malloc(0x40000);
319   bitmap1 = auto_malloc(0x40000);
318   bitmap0 = auto_alloc_array(machine, UINT16, 0x40000/2);
319   bitmap1 = auto_alloc_array(machine, UINT16, 0x40000/2);
320320}
321321
322322static VIDEO_UPDATE( pasha2 )
r4679r4680
445445
446446static DRIVER_INIT( pasha2 )
447447{
448   memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x95744, 0x95747, 0, 0, pasha2_speedup_r );
448   memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x95744, 0x95747, 0, 0, pasha2_speedup_r );
449449
450450   memory_set_bankptr(machine, 1, memory_region(machine, "user2"));
451451}
src/mame/drivers/rungun.c
r4679r4680
159159         }
160160
161161         if (!(data & 0x40))
162            cpu_set_input_line(space->machine->cpu[0], M68K_IRQ_5, CLEAR_LINE);
162            cputag_set_input_line(space->machine, "maincpu", M68K_IRQ_5, CLEAR_LINE);
163163      break;
164164
165165      case 0x0c/2:
r4679r4680
177177static WRITE16_HANDLER( sound_cmd1_w )
178178{
179179   if (ACCESSING_BITS_8_15)
180      soundlatch_w(space, 0, data>>8);
180      soundlatch_w(space, 0, data >> 8);
181181}
182182
183183static WRITE16_HANDLER( sound_cmd2_w )
r4679r4680
189189static WRITE16_HANDLER( sound_irq_w )
190190{
191191   if (ACCESSING_BITS_8_15)
192      cpu_set_input_line(space->machine->cpu[1], 0, HOLD_LINE);
192      cputag_set_input_line(space->machine, "soundcpu", 0, HOLD_LINE);
193193}
194194
195195static READ16_HANDLER( sound_status_msb_r )
196196{
197197   if (ACCESSING_BITS_8_15)
198      return(rng_sound_status<<8);
198      return(rng_sound_status << 8);
199199
200200   return(0);
201201}
r4679r4680
206206      cpu_set_input_line(device, M68K_IRQ_5, ASSERT_LINE);
207207}
208208
209static ADDRESS_MAP_START( rngreadmem, ADDRESS_SPACE_PROGRAM, 16 )
210   AM_RANGE(0x000000, 0x2fffff) AM_READ(SMH_ROM)      // main program + data
211   AM_RANGE(0x300000, 0x3007ff) AM_READ(SMH_RAM)      // palette RAM
212   AM_RANGE(0x380000, 0x39ffff) AM_READ(SMH_RAM)      // work RAM
213   AM_RANGE(0x400000, 0x43ffff) AM_READNOP      // K053936_0_rom_r }, // '936 ROM readback window
214   AM_RANGE(0x480000, 0x48001f) AM_READ(rng_sysregs_r)
215   AM_RANGE(0x4c0000, 0x4c001f) AM_READ(K053252_word_r)   // CCU (for scanline and vblank polling)
209static ADDRESS_MAP_START( rungun_map, ADDRESS_SPACE_PROGRAM, 16 )
210   AM_RANGE(0x000000, 0x2fffff) AM_ROM                                 // main program + data
211   AM_RANGE(0x300000, 0x3007ff) AM_RAM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE(&paletteram16)
212   AM_RANGE(0x380000, 0x39ffff) AM_RAM                                 // work RAM
213   AM_RANGE(0x400000, 0x43ffff) AM_READNOP   // AM_READ( K053936_0_rom_r )       // '936 ROM readback window
214   AM_RANGE(0x480000, 0x48001f) AM_READWRITE(rng_sysregs_r,rng_sysregs_w) AM_BASE(&rng_sysreg)
215   AM_RANGE(0x4c0000, 0x4c001f) AM_READ(K053252_word_r)                  // CCU (for scanline and vblank polling)
216   AM_RANGE(0x540000, 0x540001) AM_WRITE(sound_irq_w)
217   AM_RANGE(0x58000c, 0x58000d) AM_WRITE(sound_cmd1_w)
218   AM_RANGE(0x58000e, 0x58000f) AM_WRITE(sound_cmd2_w)
216219   AM_RANGE(0x580014, 0x580015) AM_READ(sound_status_msb_r)
217   AM_RANGE(0x580000, 0x58001f) AM_READ(SMH_RAM)      // sound regs read fall-through
218   AM_RANGE(0x5c0000, 0x5c000d) AM_READ(K053246_word_r)   // 246A ROM readback window
219   AM_RANGE(0x600000, 0x600fff) AM_READ(K053247_word_r)   // OBJ RAM
220   AM_RANGE(0x601000, 0x601fff) AM_READ(SMH_RAM)      // communication? second monitor buffer?
221   AM_RANGE(0x6c0000, 0x6cffff) AM_READ(SMH_RAM)      // PSAC2 render RAM
222   AM_RANGE(0x700000, 0x7007ff) AM_READ(SMH_RAM)      // PSAC2 line effect
223   AM_RANGE(0x740000, 0x741fff) AM_READ(rng_ttl_ram_r)      // text plane RAM
220   AM_RANGE(0x580000, 0x58001f) AM_RAM                                 // sound regs read/write fall-through
221   AM_RANGE(0x5c0000, 0x5c000d) AM_READ(K053246_word_r)                  // 246A ROM readback window
222   AM_RANGE(0x5c0010, 0x5c001f) AM_WRITE(K053247_reg_word_w)
223   AM_RANGE(0x600000, 0x600fff) AM_READWRITE(K053247_word_r,K053247_word_w)   // OBJ RAM
224   AM_RANGE(0x601000, 0x601fff) AM_RAM                                 // communication? second monitor buffer?
225   AM_RANGE(0x640000, 0x640007) AM_WRITE(K053246_word_w)                  // '246A registers
226   AM_RANGE(0x680000, 0x68001f) AM_WRITEONLY AM_BASE(&K053936_0_ctrl)         // '936 registers
227   AM_RANGE(0x6c0000, 0x6cffff) AM_RAM_WRITE(rng_936_videoram_w) AM_BASE(&rng_936_videoram)   // PSAC2 ('936) RAM (34v + 35v)
228   AM_RANGE(0x700000, 0x7007ff) AM_RAM AM_BASE(&K053936_0_linectrl)         // PSAC "Line RAM"
229   AM_RANGE(0x740000, 0x741fff) AM_READWRITE(rng_ttl_ram_r,rng_ttl_ram_w)      // text plane RAM
230   AM_RANGE(0x7c0000, 0x7c0001) AM_WRITENOP                           // watchdog
224231#if RNG_DEBUG
225232   AM_RANGE(0x5c0010, 0x5c001f) AM_READ(K053247_reg_word_r)
226233   AM_RANGE(0x640000, 0x640007) AM_READ(K053246_reg_word_r)
227234#endif
228235ADDRESS_MAP_END
229236
230static ADDRESS_MAP_START( rngwritemem, ADDRESS_SPACE_PROGRAM, 16 )
231   AM_RANGE(0x000000, 0x2fffff) AM_WRITE(SMH_ROM)
232   AM_RANGE(0x300000, 0x3007ff) AM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE(&paletteram16)
233   AM_RANGE(0x380000, 0x39ffff) AM_WRITE(SMH_RAM)      // work RAM
234   AM_RANGE(0x480000, 0x48001f) AM_WRITE(rng_sysregs_w) AM_BASE(&rng_sysreg)
235   AM_RANGE(0x4c0000, 0x4c001f) AM_WRITE(K053252_word_w)   // CCU
236   AM_RANGE(0x540000, 0x540001) AM_WRITE(sound_irq_w)
237   AM_RANGE(0x58000c, 0x58000d) AM_WRITE(sound_cmd1_w)
238   AM_RANGE(0x58000e, 0x58000f) AM_WRITE(sound_cmd2_w)
239   AM_RANGE(0x580000, 0x58001f) AM_WRITE(SMH_RAM)      // sound regs write fall-through
240   AM_RANGE(0x5c0010, 0x5c001f) AM_WRITE(K053247_reg_word_w)
241   AM_RANGE(0x600000, 0x600fff) AM_WRITE(K053247_word_w)   // OBJ RAM
242   AM_RANGE(0x601000, 0x601fff) AM_WRITE(SMH_RAM)      // communication? second monitor buffer?
243   AM_RANGE(0x640000, 0x640007) AM_WRITE(K053246_word_w)   // '246A registers
244   AM_RANGE(0x680000, 0x68001f) AM_WRITE(SMH_RAM) AM_BASE(&K053936_0_ctrl)            // '936 registers
245   AM_RANGE(0x6c0000, 0x6cffff) AM_WRITE(rng_936_videoram_w) AM_BASE(&rng_936_videoram)   // PSAC2 ('936) RAM (34v + 35v)
246   AM_RANGE(0x700000, 0x7007ff) AM_WRITE(SMH_RAM) AM_BASE(&K053936_0_linectrl)         // "Line RAM"
247   AM_RANGE(0x740000, 0x741fff) AM_WRITE(rng_ttl_ram_w)      // text plane RAM
248   AM_RANGE(0x7c0000, 0x7c0001) AM_WRITENOP      // watchdog
249ADDRESS_MAP_END
250237
251238/**********************************************************************************/
252239
r4679r4680
262249   memory_set_bankptr(space->machine, 2, memory_region(space->machine, "soundcpu") + 0x10000 + (data & 0x07) * 0x4000);
263250
264251   if (data & 0x10)
265      cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_NMI, CLEAR_LINE);
252      cputag_set_input_line(space->machine, "soundcpu", INPUT_LINE_NMI, CLEAR_LINE);
266253}
267254
268255static INTERRUPT_GEN(audio_interrupt)
r4679r4680
274261
275262/* sound (this should be split into audio/xexex.c or pregx.c or so someday) */
276263
277static ADDRESS_MAP_START( sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
278   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
279   AM_RANGE(0x8000, 0xbfff) AM_READ(SMH_BANK2)
280   AM_RANGE(0xc000, 0xdfff) AM_READ(SMH_RAM)
281   AM_RANGE(0xe000, 0xe22f) AM_DEVREAD("konami1", k054539_r)
282   AM_RANGE(0xe230, 0xe3ff) AM_READ(SMH_RAM)
283   AM_RANGE(0xe400, 0xe62f) AM_DEVREAD("konami2", k054539_r)
284   AM_RANGE(0xe630, 0xe7ff) AM_READ(SMH_RAM)
264static ADDRESS_MAP_START( rungun_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
265   AM_RANGE(0x0000, 0x7fff) AM_ROM
266   AM_RANGE(0x8000, 0xbfff) AM_ROMBANK(2)
267   AM_RANGE(0xc000, 0xdfff) AM_RAM
268   AM_RANGE(0xe000, 0xe22f) AM_DEVREADWRITE("konami1", k054539_r,k054539_w)
269   AM_RANGE(0xe230, 0xe3ff) AM_RAM
270   AM_RANGE(0xe400, 0xe62f) AM_DEVREADWRITE("konami2", k054539_r,k054539_w)
271   AM_RANGE(0xe630, 0xe7ff) AM_RAM
272   AM_RANGE(0xf000, 0xf000) AM_WRITE(sound_status_w)
285273   AM_RANGE(0xf002, 0xf002) AM_READ(soundlatch_r)
286274   AM_RANGE(0xf003, 0xf003) AM_READ(soundlatch2_r)
287ADDRESS_MAP_END
288
289static ADDRESS_MAP_START( sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
290   AM_RANGE(0x0000, 0xbfff) AM_WRITE(SMH_ROM)
291   AM_RANGE(0xc000, 0xdfff) AM_WRITE(SMH_RAM)
292   AM_RANGE(0xe000, 0xe22f) AM_DEVWRITE("konami1", k054539_w)
293   AM_RANGE(0xe230, 0xe3ff) AM_WRITE(SMH_RAM)
294   AM_RANGE(0xe400, 0xe62f) AM_DEVWRITE("konami2", k054539_w)
295   AM_RANGE(0xe630, 0xe7ff) AM_WRITE(SMH_RAM)
296   AM_RANGE(0xf000, 0xf000) AM_WRITE(sound_status_w)
297275   AM_RANGE(0xf800, 0xf800) AM_WRITE(z80ctrl_w)
298276   AM_RANGE(0xfff0, 0xfff3) AM_WRITENOP
299277ADDRESS_MAP_END
300278
279
301280static const k054539_interface k054539_config =
302281{
303282   "shared"
r4679r4680
326305
327306   /* basic machine hardware */
328307   MDRV_CPU_ADD("maincpu", M68000, 16000000)
329   MDRV_CPU_PROGRAM_MAP(rngreadmem,rngwritemem)
308   MDRV_CPU_PROGRAM_MAP(rungun_map,0)
330309   MDRV_CPU_VBLANK_INT("screen", rng_interrupt)
331310
332311   MDRV_CPU_ADD("soundcpu", Z80, 10000000) // 8Mhz (10Mhz is much safer in self-test due to heavy sync)
333   MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem)
312   MDRV_CPU_PROGRAM_MAP(rungun_sound_map,0)
334313   MDRV_CPU_PERIODIC_INT(audio_interrupt, 480)
335314
336315   MDRV_QUANTUM_TIME(HZ(6000)) // higher if sound stutters
src/mame/drivers/sfbonus.c
r4679r4680
434434
435435static VIDEO_START(sfbonus)
436436{
437   temp_reel_bitmap = auto_bitmap_alloc(1024,512,BITMAP_FORMAT_INDEXED16);
437   temp_reel_bitmap = auto_bitmap_alloc(machine,1024,512,BITMAP_FORMAT_INDEXED16);
438438
439439   sfbonus_tilemap = tilemap_create(machine,get_sfbonus_tile_info,tilemap_scan_rows,8,8, 128, 64);
440440   sfbonus_reel_tilemap = tilemap_create(machine,get_sfbonus_reel_tile_info,tilemap_scan_rows,8,32, 64, 16);
r4679r4680
50865086
50875087static DRIVER_INIT( sfbonus_common)
50885088{
5089   sfbonus_tilemap_ram = auto_malloc(0x4000);
5089   sfbonus_tilemap_ram = auto_alloc_array(machine, UINT8, 0x4000);
50905090   memset(sfbonus_tilemap_ram,0xff,0x4000);
50915091   state_save_register_global_pointer(machine, sfbonus_tilemap_ram , 0x4000);
50925092
5093   sfbonus_reel_ram = auto_malloc(0x0800);
5093   sfbonus_reel_ram = auto_alloc_array(machine, UINT8, 0x0800);
50945094   memset(sfbonus_reel_ram,0xff,0x0800);
50955095   state_save_register_global_pointer(machine, sfbonus_reel_ram , 0x0800);
50965096
5097   sfbonus_reel2_ram = auto_malloc(0x0800);
5097   sfbonus_reel2_ram = auto_alloc_array(machine, UINT8, 0x0800);
50985098   memset(sfbonus_reel2_ram,0xff,0x0800);
50995099   state_save_register_global_pointer(machine, sfbonus_reel2_ram , 0x0800);
51005100
5101   sfbonus_reel3_ram = auto_malloc(0x0800);
5101   sfbonus_reel3_ram = auto_alloc_array(machine, UINT8, 0x0800);
51025102   memset(sfbonus_reel3_ram,0xff,0x0800);
51035103   state_save_register_global_pointer(machine, sfbonus_reel3_ram , 0x0800);
51045104
5105   sfbonus_reel4_ram = auto_malloc(0x0800);
5105   sfbonus_reel4_ram = auto_alloc_array(machine, UINT8, 0x0800);
51065106   memset(sfbonus_reel4_ram,0xff,0x0800);
51075107   state_save_register_global_pointer(machine, sfbonus_reel4_ram , 0x0800);
51085108
51095109   // hack, because the debugger is broken
51105110   sfbonus_videoram = memory_region(machine,"debugram");
5111   if (!sfbonus_videoram) sfbonus_videoram = auto_malloc(0x10000);
5111   if (!sfbonus_videoram) sfbonus_videoram = auto_alloc_array(machine, UINT8, 0x10000);
51125112
51135113   memset(sfbonus_videoram,0xff,0x10000);
51145114
src/mame/drivers/crystal.c
r4679r4680
141141
142142static void IntReq(running_machine *machine, int num)
143143{
144   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
144   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
145145   UINT32 IntEn=memory_read_dword(space, 0x01800c08);
146146   UINT32 IntPend=memory_read_dword(space, 0x01800c0c);
147   if(IntEn&(1<<num))
147   if(IntEn & (1 << num))
148148   {
149      IntPend|=(1<<num);
150      memory_write_dword(space,0x01800c0c,IntPend);
151      cpu_set_input_line(machine->cpu[0],SE3208_INT,ASSERT_LINE);
149      IntPend |= (1 << num);
150      memory_write_dword(space, 0x01800c0c, IntPend);
151      cputag_set_input_line(machine, "maincpu", SE3208_INT, ASSERT_LINE);
152152   }
153153#ifdef IDLE_LOOP_SPEEDUP
154   FlipCntRead=0;
155   cpu_resume(machine->cpu[0],SUSPEND_REASON_SPIN);
154   FlipCntRead = 0;
155   cputag_resume(machine, "maincpu", SUSPEND_REASON_SPIN);
156156#endif
157157}
158158
159159static READ32_HANDLER(FlipCount_r)
160160{
161161#ifdef IDLE_LOOP_SPEEDUP
162   UINT32 IntPend=memory_read_dword(space, 0x01800c0c);
162   UINT32 IntPend = memory_read_dword(space, 0x01800c0c);
163163   FlipCntRead++;
164   if(FlipCntRead>=16 && !IntPend && FlipCount!=0)
165      cpu_suspend(space->machine->cpu[0],SUSPEND_REASON_SPIN,1);
164   if(FlipCntRead >= 16 && !IntPend && FlipCount != 0)
165      cputag_suspend(space->machine, "maincpu", SUSPEND_REASON_SPIN, 1);
166166#endif
167167   return ((UINT32) FlipCount)<<16;
168168}
169169
170170static WRITE32_HANDLER(FlipCount_w)
171171{
172   if(mem_mask&0x00ff0000)
172   if(mem_mask & 0x00ff0000)
173173   {
174      int fc=(data>>16)&0xff;
175      if(fc==1)
174      int fc = (data >> 16) & 0xff;
175      if(fc == 1)
176176         FlipCount++;
177      else if(fc==0)
178         FlipCount=0;
177      else if(fc == 0)
178         FlipCount = 0;
179179   }
180180}
181181
r4679r4680
193193      if(!(Port4 & 0x20) && ((OldPort4^Port4) & 0x20))
194194         IntReq(space->machine, 19);
195195      OldPort4 = Port4;
196      return /*dips*/input_port_read(space->machine, "DSW")|(Port4<<16);
196      return /*dips*/input_port_read(space->machine, "DSW") | (Port4 << 16);
197197   }
198198   return 0;
199199}
200200
201201static WRITE32_HANDLER(IntAck_w)
202202{
203   UINT32 IntPend=memory_read_dword(space, 0x01800c0c);
204   if(mem_mask&0xff)
203   UINT32 IntPend = memory_read_dword(space, 0x01800c0c);
204   if(mem_mask & 0xff)
205205   {
206      IntPend&=~(1<<(data&0x1f));
207      memory_write_dword(space, 0x01800c0c,IntPend);
206      IntPend &= ~(1 << (data & 0x1f));
207      memory_write_dword(space, 0x01800c0c, IntPend);
208208      if(!IntPend)
209         cpu_set_input_line(space->machine->cpu[0],SE3208_INT,CLEAR_LINE);
209         cputag_set_input_line(space->machine, "maincpu", SE3208_INT, CLEAR_LINE);
210210   }
211   if(mem_mask&0xff00)
212      IntHigh=(data>>8)&7;
211   if(mem_mask & 0xff00)
212      IntHigh = (data >> 8) & 7;
213213}
214214
215215static IRQ_CALLBACK(icallback)
216216{
217217   const address_space *space = cpu_get_address_space(device, ADDRESS_SPACE_PROGRAM);
218   UINT32 IntPend=memory_read_dword(space, 0x01800c0c);
218   UINT32 IntPend = memory_read_dword(space, 0x01800c0c);
219219   int i;
220220
221   for(i=0;i<32;++i)
221   for(i = 0; i < 32; ++i)
222222   {
223      if(IntPend&(1<<i))
223      if(IntPend & (1 << i))
224224      {
225         return (IntHigh<<5)|i;
225         return (IntHigh << 5) | i;
226226      }
227227   }
228228   return 0;      //This should never happen
r4679r4680
443443   AM_RANGE(0x04800000, 0x04800fff) AM_DEVREADWRITE("vrender", vr0_snd_read, vr0_snd_write)
444444
445445   AM_RANGE(0x05000000, 0x05000003) AM_READ(FlashCmd_r) AM_WRITE(FlashCmd_w)
446   AM_RANGE(0x05000000, 0x05ffffff) AM_READ(SMH_BANK1)
446   AM_RANGE(0x05000000, 0x05ffffff) AM_READ(SMH_BANK(1))
447447
448448   AM_RANGE(0x44414F4C, 0x44414F7F) AM_RAM AM_BASE(&ResetPatch)
449449
r4679r4680
501501{
502502   int i;
503503
504   cpu_set_irq_callback(machine->cpu[0],icallback);
505   for (i=0; i<4; i++)
504   cpu_set_irq_callback(cputag_get_cpu(machine, "maincpu"), icallback);
505   for (i = 0; i < 4; i++)
506506      Timer[i] = timer_alloc(machine, Timercb, (void*)(FPTR)i);
507507
508508   PatchReset();
r4679r4680
512512{
513513   int i;
514514
515   memset(sysregs,0,0x10000);
516   memset(vidregs,0,0x10000);
517   FlipCount=0;
518   IntHigh=0;
519   cpu_set_irq_callback(machine->cpu[0],icallback);
520   Bank=0;
521   memory_set_bankptr(machine, 1,memory_region(machine, "user1")+0);
522   FlashCmd=0xff;
523   OldPort4=0;
515   memset(sysregs, 0, 0x10000);
516   memset(vidregs, 0, 0x10000);
517   FlipCount = 0;
518   IntHigh = 0;
519   cpu_set_irq_callback(cputag_get_cpu(machine, "maincpu"), icallback);
520   Bank = 0;
521   memory_set_bankptr(machine, 1, memory_region(machine, "user1") + 0);
522   FlashCmd = 0xff;
523   OldPort4 = 0;
524524
525   DMActrl[0]=0;
526   DMActrl[1]=0;
525   DMActrl[0] = 0;
526   DMActrl[1] = 0;
527527
528   for (i=0; i<4; i++)
528   for (i = 0; i < 4; i++)
529529   {
530      Timerctrl[i]=0;
531      timer_adjust_oneshot(Timer[i],attotime_never,0);
530      Timerctrl[i] = 0;
531      timer_adjust_oneshot(Timer[i], attotime_never, 0);
532532   }
533533
534   vr0_snd_set_areas(devtag_get_device(machine, "vrender"), textureram,frameram);
534   vr0_snd_set_areas(devtag_get_device(machine, "vrender"), textureram, frameram);
535535#ifdef IDLE_LOOP_SPEEDUP
536   FlipCntRead=0;
536   FlipCntRead = 0;
537537#endif
538538
539539   PatchReset();
r4679r4680
545545
546546static UINT16 GetVidReg(const address_space *space, UINT16 reg)
547547{
548   return memory_read_word(space,0x03000000+reg);
548   return memory_read_word(space, 0x03000000 + reg);
549549}
550550
551static void SetVidReg(const address_space *space, UINT16 reg,UINT16 val)
551static void SetVidReg(const address_space *space, UINT16 reg, UINT16 val)
552552{
553   memory_write_word(space,0x03000000+reg,val);
553   memory_write_word(space, 0x03000000 + reg, val);
554554}
555555
556556
557557static VIDEO_UPDATE(crystal)
558558{
559   const address_space *space = cpu_get_address_space(screen->machine->cpu[0], ADDRESS_SPACE_PROGRAM);
559   const address_space *space = cputag_get_address_space(screen->machine, "maincpu", ADDRESS_SPACE_PROGRAM);
560560   int DoFlip;
561561
562562
563   UINT32 B0=0x0;
564   UINT32 B1=(GetVidReg(space,0x90)&0x8000)?0x400000:0x100000;
565   UINT16 *Front,*Back;
566   UINT16 *Visible,*DrawDest;
563   UINT32 B0 = 0x0;
564   UINT32 B1 = (GetVidReg(space, 0x90) & 0x8000) ? 0x400000 : 0x100000;
565   UINT16 *Front, *Back;
566   UINT16 *Visible, *DrawDest;
567567   UINT16 *srcline;
568568   int y;
569   UINT16 head,tail;
570   UINT32 width=video_screen_get_width(screen);
569   UINT16 head, tail;
570   UINT32 width = video_screen_get_width(screen);
571571
572   if(GetVidReg(space,0x8e)&1)
572   if(GetVidReg(space, 0x8e) & 1)
573573   {
574      Front=(UINT16*) (frameram+B1/4);
575      Back=(UINT16*) (frameram+B0/4);
574      Front = (UINT16*) (frameram + B1 / 4);
575      Back  = (UINT16*) (frameram + B0 / 4);
576576   }
577577   else
578578   {
579      Front=(UINT16*) (frameram+B0/4);
580      Back=(UINT16*) (frameram+B1/4);
579      Front = (UINT16*) (frameram + B0 / 4);
580      Back  = (UINT16*) (frameram + B1 / 4);
581581   }
582582
583   Visible=(UINT16*) Front;
584   DrawDest=(UINT16 *) frameram;
583   Visible  = (UINT16*) Front;
584   DrawDest = (UINT16 *) frameram;
585585
586586
587   if(GetVidReg(space,0x8c)&0x80)
588      DrawDest=Front;
587   if(GetVidReg(space, 0x8c) & 0x80)
588      DrawDest = Front;
589589   else
590      DrawDest=Back;
590      DrawDest = Back;
591591
592//  DrawDest=Visible;
592//  DrawDest = Visible;
593593
594   srcline=(UINT16 *) DrawDest;
594   srcline = (UINT16 *) DrawDest;
595595
596   DoFlip=0;
597   head=GetVidReg(space,0x82);
598   tail=GetVidReg(space,0x80);
599   while((head&0x7ff)!=(tail&0x7ff))
596   DoFlip = 0;
597   head = GetVidReg(space, 0x82);
598   tail = GetVidReg(space, 0x80);
599   while((head & 0x7ff) != (tail & 0x7ff))
600600   {
601      DoFlip=vrender0_ProcessPacket(space,0x03800000+head*64,DrawDest,(UINT8*)textureram);
601      DoFlip = vrender0_ProcessPacket(space, 0x03800000 + head * 64, DrawDest, (UINT8*)textureram);
602602      head++;
603      head&=0x7ff;
603      head &= 0x7ff;
604604      if(DoFlip)
605605         break;
606606   }
607607
608608   if(DoFlip)
609      SetVidReg(space,0x8e,GetVidReg(space,0x8e)^1);
609      SetVidReg(space, 0x8e, GetVidReg(space, 0x8e) ^ 1);
610610
611611   srcline=(UINT16 *) Visible;
612   for(y=0;y<240;y++)
613      memcpy(BITMAP_ADDR16(bitmap, y, 0), &srcline[y*512], width*2);
612   for(y = 0; y < 240; y++)
613      memcpy(BITMAP_ADDR16(bitmap, y, 0), &srcline[y * 512], width * 2);
614614
615615   return 0;
616616}
617617
618618static VIDEO_EOF(crystal)
619619{
620   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
621   UINT16 head,tail;
622   int DoFlip=0;
620   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
621   UINT16 head, tail;
622   int DoFlip = 0;
623623
624   head=GetVidReg(space,0x82);
625   tail=GetVidReg(space,0x80);
626   while((head&0x7ff)!=(tail&0x7ff))
624   head = GetVidReg(space, 0x82);
625   tail = GetVidReg(space, 0x80);
626   while((head & 0x7ff) != (tail & 0x7ff))
627627   {
628      UINT16 Packet0=memory_read_word(space,0x03800000+head*64);
629      if(Packet0&0x81)
630         DoFlip=1;
628      UINT16 Packet0 = memory_read_word(space, 0x03800000 + head * 64);
629      if(Packet0 & 0x81)
630         DoFlip = 1;
631631      head++;
632      head&=0x7ff;
632      head &= 0x7ff;
633633      if(DoFlip)
634634         break;
635635   }
636   SetVidReg(space,0x82,head);
636   SetVidReg(space, 0x82, head);
637637   if(DoFlip)
638638   {
639639      if(FlipCount)
r4679r4680
914914GAME( 2001, evosocc,  crysbios, crystal, crystal,  evosocc, ROT0, "Evoga", "Evolution Soccer", 0 )
915915GAME( 2003, topbladv, crysbios, topbladv,crystal, topbladv, ROT0, "SonoKong / Expotato", "Top Blade V", GAME_NOT_WORKING ) // protection
916916GAME( 2001, officeye,        0, crystal, crystal, officeye, ROT0, "Danbi", "Office Yeo In Cheon Ha (version 1.2)", GAME_NOT_WORKING ) // protection
917
src/mame/drivers/tempest.c
r4679r4680
309309
310310static WRITE8_HANDLER( wdclr_w )
311311{
312   cpu_set_input_line(space->machine->cpu[0], 0, CLEAR_LINE);
312   cputag_set_input_line(space->machine, "maincpu", 0, CLEAR_LINE);
313313   watchdog_reset(space->machine);
314314}
315315
r4679r4680
335335static CUSTOM_INPUT( clock_r )
336336{
337337   /* Emulate the 3kHz source on bit 7 (divide 1.5MHz by 512) */
338   return (cpu_get_total_cycles(field->port->machine->cpu[0]) & 0x100) ? 1 : 0;
338   return (cputag_get_total_cycles(field->port->machine, "maincpu") & 0x100) ? 1 : 0;
339339}
340340
341341
src/mame/drivers/madmotor.c
r4679r4680
2222VIDEO_START( madmotor );
2323VIDEO_UPDATE( madmotor );
2424
25READ16_HANDLER( madmotor_pf1_rowscroll_r );
26WRITE16_HANDLER( madmotor_pf1_rowscroll_w );
27READ16_HANDLER( madmotor_pf1_data_r );
28READ16_HANDLER( madmotor_pf2_data_r );
29READ16_HANDLER( madmotor_pf3_data_r );
3025WRITE16_HANDLER( madmotor_pf1_data_w );
3126WRITE16_HANDLER( madmotor_pf2_data_w );
3227WRITE16_HANDLER( madmotor_pf3_data_w );
33WRITE16_HANDLER( madmotor_pf1_control_w );
34WRITE16_HANDLER( madmotor_pf2_control_w );
35WRITE16_HANDLER( madmotor_pf3_control_w );
3628extern UINT16 *madmotor_pf1_rowscroll;
3729extern UINT16 *madmotor_pf1_data,*madmotor_pf2_data,*madmotor_pf3_data;
30extern UINT16 *madmotor_pf1_control,*madmotor_pf2_control,*madmotor_pf3_control;
3831
39
4032/******************************************************************************/
4133
4234static WRITE16_HANDLER( madmotor_sound_w )
4335{
4436   if (ACCESSING_BITS_0_7)
4537   {
46      soundlatch_w(space,0,data & 0xff);
47      cpu_set_input_line(space->machine->cpu[1],0,HOLD_LINE);
38      soundlatch_w(space, 0, data & 0xff);
39      cputag_set_input_line(space->machine, "audiocpu", 0, HOLD_LINE);
4840   }
4941}
5042
5143
5244/******************************************************************************/
5345
54static ADDRESS_MAP_START( madmotor_readmem, ADDRESS_SPACE_PROGRAM, 16 )
55   AM_RANGE(0x000000, 0x07ffff) AM_READ(SMH_ROM)
56   AM_RANGE(0x184000, 0x1847ff) AM_READ(madmotor_pf1_rowscroll_r)
57   AM_RANGE(0x188000, 0x189fff) AM_READ(madmotor_pf1_data_r)
58   AM_RANGE(0x198000, 0x1987ff) AM_READ(madmotor_pf2_data_r)
59   AM_RANGE(0x1a4000, 0x1a4fff) AM_READ(madmotor_pf3_data_r)
60   AM_RANGE(0x18c000, 0x18c001) AM_READNOP
46static ADDRESS_MAP_START( madmotor_map, ADDRESS_SPACE_PROGRAM, 16 )
47   AM_RANGE(0x000000, 0x07ffff) AM_ROM
48   AM_RANGE(0x180000, 0x18001f) AM_WRITEONLY AM_BASE(&madmotor_pf1_control)
49   AM_RANGE(0x184000, 0x1847ff) AM_RAM AM_BASE(&madmotor_pf1_rowscroll)
50   AM_RANGE(0x188000, 0x189fff) AM_RAM_WRITE(madmotor_pf1_data_w) AM_BASE(&madmotor_pf1_data)
51   AM_RANGE(0x18c000, 0x18c001) AM_NOP
52   AM_RANGE(0x190000, 0x19001f) AM_WRITEONLY AM_BASE(&madmotor_pf2_control)
53   AM_RANGE(0x198000, 0x1987ff) AM_RAM_WRITE(madmotor_pf2_data_w) AM_BASE(&madmotor_pf2_data)
6154   AM_RANGE(0x19c000, 0x19c001) AM_READNOP
62   AM_RANGE(0x3e0000, 0x3e3fff) AM_READ(SMH_RAM)
63   AM_RANGE(0x3e8000, 0x3e87ff) AM_READ(SMH_RAM)
64   AM_RANGE(0x3f0000, 0x3f07ff) AM_READ(SMH_RAM)
55   AM_RANGE(0x1a0000, 0x1a001f) AM_WRITEONLY AM_BASE(&madmotor_pf3_control)
56   AM_RANGE(0x1a4000, 0x1a4fff) AM_RAM_WRITE(madmotor_pf3_data_w) AM_BASE(&madmotor_pf3_data)
57   AM_RANGE(0x3e0000, 0x3e3fff) AM_RAM
58   AM_RANGE(0x3e8000, 0x3e87ff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)
59   AM_RANGE(0x3f0000, 0x3f07ff) AM_RAM_WRITE(paletteram16_xxxxBBBBGGGGRRRR_word_w) AM_BASE(&paletteram16)
6560   AM_RANGE(0x3f8002, 0x3f8003) AM_READ_PORT("P1_P2")
6661   AM_RANGE(0x3f8004, 0x3f8005) AM_READ_PORT("DSW")
6762   AM_RANGE(0x3f8006, 0x3f8007) AM_READ_PORT("SYSTEM")
68ADDRESS_MAP_END
69
70static ADDRESS_MAP_START( madmotor_writemem, ADDRESS_SPACE_PROGRAM, 16 )
71   AM_RANGE(0x000000, 0x07ffff) AM_WRITE(SMH_ROM)
72   AM_RANGE(0x180000, 0x18001f) AM_WRITE(madmotor_pf1_control_w)
73   AM_RANGE(0x184000, 0x1847ff) AM_WRITE(madmotor_pf1_rowscroll_w) AM_BASE(&madmotor_pf1_rowscroll)
74   AM_RANGE(0x188000, 0x189fff) AM_WRITE(madmotor_pf1_data_w) AM_BASE(&madmotor_pf1_data)
75   AM_RANGE(0x18c000, 0x18c001) AM_WRITENOP
76   AM_RANGE(0x190000, 0x19001f) AM_WRITE(madmotor_pf2_control_w)
77   AM_RANGE(0x198000, 0x1987ff) AM_WRITE(madmotor_pf2_data_w) AM_BASE(&madmotor_pf2_data)
78   AM_RANGE(0x1a0000, 0x1a001f) AM_WRITE(madmotor_pf3_control_w)
79   AM_RANGE(0x1a4000, 0x1a4fff) AM_WRITE(madmotor_pf3_data_w) AM_BASE(&madmotor_pf3_data)
80   AM_RANGE(0x3e0000, 0x3e3fff) AM_WRITE(SMH_RAM)
81   AM_RANGE(0x3e8000, 0x3e87ff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)
82   AM_RANGE(0x3f0000, 0x3f07ff) AM_WRITE(paletteram16_xxxxBBBBGGGGRRRR_word_w) AM_BASE(&paletteram16)
8363   AM_RANGE(0x3fc004, 0x3fc005) AM_WRITE(madmotor_sound_w)
8464ADDRESS_MAP_END
8565
8666/******************************************************************************/
8767
8868/* Physical memory map (21 bits) */
89static ADDRESS_MAP_START( sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
90   AM_RANGE(0x000000, 0x00ffff) AM_READ(SMH_ROM)
91   AM_RANGE(0x100000, 0x100001) AM_DEVREAD("ym1", ym2203_r)
92   AM_RANGE(0x110000, 0x110001) AM_DEVREAD("ym2", ym2151_r)
93   AM_RANGE(0x120000, 0x120001) AM_DEVREAD("oki1", okim6295_r)
94   AM_RANGE(0x130000, 0x130001) AM_DEVREAD("oki2", okim6295_r)
69static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 )
70   AM_RANGE(0x000000, 0x00ffff) AM_ROM
71   AM_RANGE(0x100000, 0x100001) AM_DEVREADWRITE("ym1", ym2203_r,ym2203_w)
72   AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE("ym2", ym2151_r,ym2151_w)
73   AM_RANGE(0x120000, 0x120001) AM_DEVREADWRITE("oki1", okim6295_r,okim6295_w)
74   AM_RANGE(0x130000, 0x130001) AM_DEVREADWRITE("oki2", okim6295_r,okim6295_w)
9575   AM_RANGE(0x140000, 0x140001) AM_READ(soundlatch_r)
96   AM_RANGE(0x1f0000, 0x1f1fff) AM_READ(SMH_BANK8)
97ADDRESS_MAP_END
98
99static ADDRESS_MAP_START( sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
100   AM_RANGE(0x000000, 0x00ffff) AM_WRITE(SMH_ROM)
101   AM_RANGE(0x100000, 0x100001) AM_DEVWRITE("ym1", ym2203_w)
102   AM_RANGE(0x110000, 0x110001) AM_DEVWRITE("ym2", ym2151_w)
103   AM_RANGE(0x120000, 0x120001) AM_DEVWRITE("oki1", okim6295_w)
104   AM_RANGE(0x130000, 0x130001) AM_DEVWRITE("oki2", okim6295_w)
105   AM_RANGE(0x1f0000, 0x1f1fff) AM_WRITE(SMH_BANK8)
76   AM_RANGE(0x1f0000, 0x1f1fff) AM_RAMBANK(8)
10677   AM_RANGE(0x1fec00, 0x1fec01) AM_WRITE(h6280_timer_w)
10778   AM_RANGE(0x1ff400, 0x1ff403) AM_WRITE(h6280_irq_status_w)
10879ADDRESS_MAP_END
r4679r4680
250221
251222static void sound_irq(const device_config *device, int state)
252223{
253   cpu_set_input_line(device->machine->cpu[1],1,state); /* IRQ 2 */
224   cputag_set_input_line(device->machine, "audiocpu", 1, state); /* IRQ 2 */
254225}
255226
256227static const ym2151_interface ym2151_config =
r4679r4680
262233
263234   /* basic machine hardware */
264235   MDRV_CPU_ADD("maincpu", M68000, 12000000) /* Custom chip 59, 24 MHz crystal */
265   MDRV_CPU_PROGRAM_MAP(madmotor_readmem,madmotor_writemem)
236   MDRV_CPU_PROGRAM_MAP(madmotor_map,0)
266237   MDRV_CPU_VBLANK_INT("screen", irq6_line_hold)/* VBL */
267238
268239   MDRV_CPU_ADD("audiocpu", H6280, 8053000/2) /* Custom chip 45, Crystal near CPU is 8.053 MHz */
269   MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem)
240   MDRV_CPU_PROGRAM_MAP(sound_map,0)
270241
271242   /* video hardware */
272243   MDRV_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
src/mame/drivers/bublbobl.c
r4679r4680
658658// handler called by the 2203 emulator when the internal timers cause an IRQ
659659static void irqhandler(const device_config *device, int irq)
660660{
661   cpu_set_input_line(device->machine->cpu[2], 0, irq ? ASSERT_LINE : CLEAR_LINE);
661   cputag_set_input_line(device->machine, "audiocpu", 0, irq ? ASSERT_LINE : CLEAR_LINE);
662662}
663663
664664static const ym2203_interface ym2203_config =
r4679r4680
12751275{
12761276   DRIVER_INIT_CALL(tokio);
12771277
1278   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xfe00, 0xfe00, 0, 0, tokiob_mcu_r );
1278   memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xfe00, 0xfe00, 0, 0, tokiob_mcu_r );
12791279}
12801280
12811281
src/mame/drivers/skyfox.c
r4679r4680
4848                                Sky Fox
4949***************************************************************************/
5050
51static ADDRESS_MAP_START( skyfox_readmem, ADDRESS_SPACE_PROGRAM, 8 )
52   AM_RANGE(0x0000, 0xbfff) AM_READ(SMH_ROM         )   // ROM
53   AM_RANGE(0xc000, 0xdfff) AM_READ(SMH_RAM         )   // RAM
51static ADDRESS_MAP_START( skyfox_map, ADDRESS_SPACE_PROGRAM, 8 )
52   AM_RANGE(0x0000, 0xbfff) AM_ROM                     // ROM
53   AM_RANGE(0xc000, 0xcfff) AM_RAM                     // RAM
54   AM_RANGE(0xd000, 0xd3ff) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size)   // Sprites
55   AM_RANGE(0xd400, 0xdfff) AM_RAM                     // RAM?
5456   AM_RANGE(0xe000, 0xe000) AM_READ_PORT("INPUTS")         // Input Ports
5557   AM_RANGE(0xe001, 0xe001) AM_READ_PORT("DSW0")         //
5658   AM_RANGE(0xe002, 0xe002) AM_READ_PORT("DSW1")         //
59   AM_RANGE(0xe008, 0xe00f) AM_WRITE(skyfox_vregs_w)      // Video Regs
5760   AM_RANGE(0xf001, 0xf001) AM_READ_PORT("DSW2")         //
58//  AM_RANGE(0xff00, 0xff07) AM_READ(skyfox_vregs_r     )   // fake to read the vregs
61//  AM_RANGE(0xff00, 0xff07) AM_READ(skyfox_vregs_r)        // fake to read the vregs
5962ADDRESS_MAP_END
6063
61static ADDRESS_MAP_START( skyfox_writemem, ADDRESS_SPACE_PROGRAM, 8 )
62   AM_RANGE(0x0000, 0xbfff) AM_WRITE(SMH_ROM                        )   // ROM
63   AM_RANGE(0xc000, 0xcfff) AM_WRITE(SMH_RAM                        )   // RAM
64   AM_RANGE(0xd000, 0xd3ff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size   )   // Sprites
65   AM_RANGE(0xd400, 0xdfff) AM_WRITE(SMH_RAM                        )   // RAM?
66   AM_RANGE(0xe008, 0xe00f) AM_WRITE(skyfox_vregs_w                  )   // Video Regs
67ADDRESS_MAP_END
6864
69
70
71
72
73
7465/***************************************************************************
7566
7667
r4679r4680
8576***************************************************************************/
8677
8778
88static ADDRESS_MAP_START( skyfox_sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
89   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM            )   // ROM
90   AM_RANGE(0x8000, 0x87ff) AM_READ(SMH_RAM            )   // RAM
91   AM_RANGE(0xa000, 0xa001) AM_DEVREAD("ym1", ym2203_r)   // YM2203 #1
92//  AM_RANGE(0xc000, 0xc001) AM_DEVREAD("ym2", ym2203_r )   // YM2203 #2
93   AM_RANGE(0xb000, 0xb000) AM_READ(soundlatch_r         )   // From Main CPU
79static ADDRESS_MAP_START( skyfox_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
80   AM_RANGE(0x0000, 0x7fff) AM_ROM                        // ROM
81   AM_RANGE(0x8000, 0x87ff) AM_RAM                        // RAM
82//  AM_RANGE(0x9000, 0x9001) AM_WRITENOP                        // ??
83   AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE("ym1", ym2203_r,ym2203_w)   // YM2203 #1
84//  AM_RANGE(0xb000, 0xb001) AM_WRITENOP                        // ??
85   AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ym2", ym2203_r,ym2203_w)   // YM2203 #2
86   AM_RANGE(0xb000, 0xb000) AM_READ(soundlatch_r)            // From Main CPU
9487ADDRESS_MAP_END
9588
96static ADDRESS_MAP_START( skyfox_sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
97   AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM               )   // ROM
98   AM_RANGE(0x8000, 0x87ff) AM_WRITE(SMH_RAM               )   // RAM
99//  AM_RANGE(0x9000, 0x9001) AM_WRITE(SMH_NOP                  )   // ??
100   AM_RANGE(0xa000, 0xa001) AM_DEVWRITE("ym1", ym2203_w    )   //
101//  AM_RANGE(0xb000, 0xb001) AM_WRITE(SMH_NOP                  )   // ??
102   AM_RANGE(0xc000, 0xc001) AM_DEVWRITE("ym2", ym2203_w    )   //
103ADDRESS_MAP_END
10489
105
106
107
10890/***************************************************************************
10991
11092
r4679r4680
11395
11496***************************************************************************/
11597
98static INPUT_CHANGED( coin_inserted )
99{
100   cputag_set_input_line(field->port->machine, "maincpu", INPUT_LINE_NMI, newval ? CLEAR_LINE : ASSERT_LINE);
101}
102
116103static INPUT_PORTS_START( skyfox )
117104   PORT_START("INPUTS")
118105   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP )
r4679r4680
182169   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
183170   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
184171
185   PORT_START("COINS")   // Fake input port, polled every VBLANK to generate an NMI upon coin insertion
186   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(1)
187   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(1)
172   PORT_START("COINS")   // Fake input port, coins are directly connected on NMI line
173   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_CHANGED(coin_inserted, 0)
174   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_CHANGED(coin_inserted, 0)
188175INPUT_PORTS_END
189176
190177
r4679r4680
222209GFXDECODE_END
223210
224211
225
226
227
228
229212/***************************************************************************
230213
231214
r4679r4680
239222                                Sky Fox
240223***************************************************************************/
241224
242/* Check for coin insertion once a frame (polling a fake input port).
243   Generate an NMI in case. Scroll the background too. */
225/* Scroll the background on every vblank (guess). */
244226
245227static INTERRUPT_GEN( skyfox_interrupt )
246228{
247229   /* Scroll the bg */
248230   skyfox_bg_pos += (skyfox_bg_ctrl >> 1) & 0x7;   // maybe..
249
250   /* Check coin 1 & 2 */
251   if ((input_port_read(device->machine, "COINS") & 3) != 3) cpu_set_input_line(device, INPUT_LINE_NMI, PULSE_LINE);
252231}
253232
254233static MACHINE_DRIVER_START( skyfox )
255234
256235   /* basic machine hardware */
257236   MDRV_CPU_ADD("maincpu", Z80, 4000000)
258   MDRV_CPU_PROGRAM_MAP(skyfox_readmem,skyfox_writemem)
237   MDRV_CPU_PROGRAM_MAP(skyfox_map,0)
259238   MDRV_CPU_VBLANK_INT("screen", skyfox_interrupt)      /* NMI caused by coin insertion */
260239
261240   MDRV_CPU_ADD("audiocpu", Z80, 1748000)
262   MDRV_CPU_PROGRAM_MAP(skyfox_sound_readmem,skyfox_sound_writemem)
241   MDRV_CPU_PROGRAM_MAP(skyfox_sound_map,0)
263242
264243   /* video hardware */
265244   MDRV_SCREEN_ADD("screen", RASTER)
src/mame/drivers/cshooter.c
r4679r4680
258258   return paletteram[offset];
259259}
260260
261static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 )
262   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
263   AM_RANGE(0x8000, 0xafff) AM_READ(SMH_BANK1)
261static ADDRESS_MAP_START( cshooter_map, ADDRESS_SPACE_PROGRAM, 8 )
262   AM_RANGE(0x0000, 0x7fff) AM_ROM
263   AM_RANGE(0x8000, 0xafff) AM_READWRITE(SMH_BANK(1), SMH_RAM)
264264   AM_RANGE(0xb000, 0xb0ff) AM_READ(SMH_RAM)         // sound related ?
265265   AM_RANGE(0xc000, 0xc1ff) AM_WRITE(pal_w) AM_READ(pal_r) AM_BASE(&paletteram)
266266   AM_RANGE(0xc200, 0xc200) AM_READ_PORT("IN0")
r4679r4680
269269   AM_RANGE(0xc203, 0xc203) AM_READ_PORT("DSW2")
270270   AM_RANGE(0xc204, 0xc204) AM_READ_PORT("DSW1")
271271   AM_RANGE(0xc205, 0xc205) AM_READ(cshooter_coin_r)   // hack until I understand
272   AM_RANGE(0xd000, 0xd7ff) AM_READ(SMH_RAM)
273   AM_RANGE(0xd800, 0xdfff) AM_READ(SMH_RAM)
274   AM_RANGE(0xe000, 0xffff) AM_READ(SMH_RAM)
275ADDRESS_MAP_END
276
277static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 )
278   AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM)
279   AM_RANGE(0x8000, 0xafff) AM_WRITE(SMH_RAM)         // to be confirmed
280272   AM_RANGE(0xc500, 0xc500) AM_WRITE(cshooter_c500_w)
281273   AM_RANGE(0xc600, 0xc600) AM_WRITENOP         // see notes
282274   AM_RANGE(0xc700, 0xc700) AM_WRITE(cshooter_c700_w)
283275   AM_RANGE(0xc801, 0xc801) AM_WRITENOP         // see notes
284   AM_RANGE(0xd000, 0xd7ff) AM_WRITE(cshooter_txram_w) AM_BASE(&cshooter_txram)
285   AM_RANGE(0xd800, 0xdfff) AM_WRITE(SMH_RAM)
286   AM_RANGE(0xe000, 0xffff) AM_WRITE(SMH_RAM)
276   AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(cshooter_txram_w) AM_BASE(&cshooter_txram)
277   AM_RANGE(0xd800, 0xdfff) AM_RAM
278   AM_RANGE(0xe000, 0xffff) AM_RAM
287279ADDRESS_MAP_END
288280
289static ADDRESS_MAP_START( arreadmem, ADDRESS_SPACE_PROGRAM, 8 )
290   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
291   AM_RANGE(0x8000, 0xbfff) AM_READ(SMH_BANK1)
281static ADDRESS_MAP_START( airraid_map, ADDRESS_SPACE_PROGRAM, 8 )
282   AM_RANGE(0x0000, 0x7fff) AM_ROM
283   AM_RANGE(0x8000, 0xbfff) AM_READ(SMH_BANK(1))
292284   AM_RANGE(0xb000, 0xb0ff) AM_RAM         // sound related ?
293   AM_RANGE(0xb100, 0xb1ff) AM_RAM//READ(SMH_BANK1)           // sound related ?
285   AM_RANGE(0xb100, 0xb1ff) AM_RAM//READ(SMH_BANK(1))           // sound related ?
294286   AM_RANGE(0xc000, 0xc000) AM_READ_PORT("IN0")
295287   AM_RANGE(0xc001, 0xc001) AM_READ_PORT("IN1")
296288   AM_RANGE(0xc002, 0xc002) AM_READ_PORT("IN2")
297289   AM_RANGE(0xc003, 0xc003) AM_READ_PORT("DSW2")
298290   AM_RANGE(0xc004, 0xc004) AM_READ_PORT("DSW1")
299   AM_RANGE(0xd000, 0xd7ff) AM_READ(SMH_RAM)
291   AM_RANGE(0xc500, 0xc500) AM_WRITE(cshooter_c500_w)
292   AM_RANGE(0xc600, 0xc600) AM_WRITENOP         // see notes
293   AM_RANGE(0xc700, 0xc700) AM_WRITE(cshooter_c700_w)
294   AM_RANGE(0xc801, 0xc801) AM_WRITENOP         // see notes
295   AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(cshooter_txram_w) AM_BASE(&cshooter_txram)
300296   AM_RANGE(0xd800, 0xdbff) AM_WRITE(pal2_w) AM_READ(pal_r) AM_BASE(&paletteram)
301297   AM_RANGE(0xdc11, 0xdc11) AM_WRITE(bank_w)
302298   AM_RANGE(0xdc00, 0xddff) AM_RAM
r4679r4680
305301   AM_RANGE(0xfe00, 0xffff) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
306302ADDRESS_MAP_END
307303
308static ADDRESS_MAP_START( arwritemem, ADDRESS_SPACE_PROGRAM, 8 )
309   AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM)
310   AM_RANGE(0xc500, 0xc500) AM_WRITE(cshooter_c500_w)
311   AM_RANGE(0xc600, 0xc600) AM_WRITENOP         // see notes
312   AM_RANGE(0xc700, 0xc700) AM_WRITE(cshooter_c700_w)
313   AM_RANGE(0xc801, 0xc801) AM_WRITENOP         // see notes
314   AM_RANGE(0xd000, 0xd7ff) AM_WRITE(cshooter_txram_w) AM_BASE(&cshooter_txram)
315ADDRESS_MAP_END
316304
317
318305/* Sound CPU */
319306
320static ADDRESS_MAP_START( s_readmem, ADDRESS_SPACE_PROGRAM, 8 )
321   AM_RANGE(0x0000, 0x1fff) AM_READ(SMH_ROM)
322   AM_RANGE(0xf800, 0xffff) AM_READ(SMH_RAM)
323ADDRESS_MAP_END
324
325static ADDRESS_MAP_START( s_writemem, ADDRESS_SPACE_PROGRAM, 8 )
326   AM_RANGE(0x0000, 0x1fff) AM_WRITE(SMH_ROM)
307static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 )
308   AM_RANGE(0x0000, 0x1fff) AM_ROM
327309   AM_RANGE(0xc000, 0xc001) AM_WRITENOP // AM_DEVWRITE("ym1", ym2203_w) ?
328310   AM_RANGE(0xc800, 0xc801) AM_WRITENOP // AM_DEVWRITE("ym2", ym2203_w) ?
329   AM_RANGE(0xf800, 0xffff) AM_WRITE(SMH_RAM)
311   AM_RANGE(0xf800, 0xffff) AM_RAM
330312ADDRESS_MAP_END
331313
332static ADDRESS_MAP_START( s2_readmem, ADDRESS_SPACE_PROGRAM, 8 )
314static ADDRESS_MAP_START( sound_map2, ADDRESS_SPACE_PROGRAM, 8 )
333315   AM_RANGE(0x0000, 0x1fff) AM_ROM
334   AM_RANGE(0x2000, 0x27ff) AM_RAM
335ADDRESS_MAP_END
336
337static ADDRESS_MAP_START( s2_writemem, ADDRESS_SPACE_PROGRAM, 8 )
338316   AM_RANGE(0x4000, 0x4001) AM_WRITENOP // AM_DEVWRITE("ym1", ym2203_w) ?
339317   AM_RANGE(0x4008, 0x4009) AM_WRITENOP // AM_DEVWRITE("ym2", ym2203_w) ?
318   AM_RANGE(0x2000, 0x27ff) AM_RAM
340319ADDRESS_MAP_END
341320
342321
r4679r4680
442421
443422static MACHINE_DRIVER_START( cshooter )
444423   MDRV_CPU_ADD("maincpu", Z80,XTAL_12MHz/2)       /* verified on pcb */
445   MDRV_CPU_PROGRAM_MAP(readmem,writemem)
424   MDRV_CPU_PROGRAM_MAP(cshooter_map,0)
446425   MDRV_CPU_VBLANK_INT_HACK(cshooter_interrupt,2)
447426
448427   MDRV_CPU_ADD("audiocpu", Z80,XTAL_14_31818MHz/4)       /* verified on pcb */
449   MDRV_CPU_PROGRAM_MAP(s_readmem,s_writemem)
428   MDRV_CPU_PROGRAM_MAP(sound_map,0)
450429
451430   MDRV_MACHINE_RESET(cshooter)
452431
r4679r4680
471450
472451static MACHINE_DRIVER_START( airraid )
473452   MDRV_CPU_ADD("maincpu", Z80,XTAL_12MHz/2)       /* verified on pcb */
474   MDRV_CPU_PROGRAM_MAP(arreadmem,arwritemem)
453   MDRV_CPU_PROGRAM_MAP(airraid_map,0)
475454   MDRV_CPU_VBLANK_INT_HACK(cshooter_interrupt,2)
476455
477456   MDRV_CPU_ADD("audiocpu", Z80,XTAL_14_31818MHz/4)       /* verified on pcb */
478   MDRV_CPU_PROGRAM_MAP(s2_readmem,s2_writemem)
457   MDRV_CPU_PROGRAM_MAP(sound_map2,0)
479458
480459   MDRV_MACHINE_RESET(cshooter)
481460
r4679r4680
687666   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
688667   int A;
689668   UINT8 *rom = memory_region(machine, "maincpu");
690   UINT8 *decrypt = auto_malloc(0x8000);
669   UINT8 *decrypt = auto_alloc_array(machine, UINT8, 0x8000);
691670
692671   memory_set_decrypted_region(space, 0x0000, 0x7fff, decrypt);
693672
src/mame/drivers/aerofgt.c
r4679r4680
7575   {
7676      pending_command = 1;
7777      soundlatch_w(space,offset,data & 0xff);
78      cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_NMI, PULSE_LINE);
78      cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
7979   }
8080}
8181
r4679r4680
8585   {
8686      pending_command = 1;
8787      soundlatch_w(space,offset,(data >> 8) & 0xff);
88      cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_NMI, PULSE_LINE);
88      cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
8989   }
9090}
9191
r4679r4680
9494   if(ACCESSING_BITS_8_15)
9595   {
9696      soundlatch_w(space,0,(data>>8) & 0xff);
97      cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_NMI, PULSE_LINE);
97      cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
9898   }
9999}
100100
r4679r4680
122122
123123static MACHINE_RESET( aerofgt )
124124{
125   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
125   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
126126
127127   aerofgt_sh_bankswitch_w(space,0,0);   /* needed by spinlbrk */
128128}
r4679r4680
12901290
12911291static void irqhandler(const device_config *device, int irq)
12921292{
1293   cpu_set_input_line(device->machine->cpu[1],0,irq ? ASSERT_LINE : CLEAR_LINE);
1293   cputag_set_input_line(device->machine, "audiocpu", 0, irq ? ASSERT_LINE : CLEAR_LINE);
12941294}
12951295
12961296static const ym2610_interface ym2610_config =
src/mame/drivers/rocnrope.c
r4679r4680
11/***************************************************************************
22
3Roc'n Rope (c) 1983 Konami
4
35Based on drivers from Juno First emulator by Chris Hardy (chrish@kcbbs.gen.nz)
46
57***************************************************************************/
r4679r4680
3133}
3234
3335
34static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 )
36static ADDRESS_MAP_START( rocnrope_map, ADDRESS_SPACE_PROGRAM, 8 )
3537   AM_RANGE(0x3080, 0x3080) AM_READ_PORT("SYSTEM")
3638   AM_RANGE(0x3081, 0x3081) AM_READ_PORT("P1")
3739   AM_RANGE(0x3082, 0x3082) AM_READ_PORT("P2")
3840   AM_RANGE(0x3083, 0x3083) AM_READ_PORT("DSW1")
3941   AM_RANGE(0x3000, 0x3000) AM_READ_PORT("DSW2")
4042   AM_RANGE(0x3100, 0x3100) AM_READ_PORT("DSW3")
41   AM_RANGE(0x4000, 0x5fff) AM_READ(SMH_RAM)
42   AM_RANGE(0x6000, 0xffff) AM_READ(SMH_ROM)
43ADDRESS_MAP_END
44
45static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 )
46   AM_RANGE(0x4000, 0x402f) AM_WRITE(SMH_RAM) AM_BASE(&spriteram_2)
47   AM_RANGE(0x4400, 0x442f) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
48   AM_RANGE(0x4000, 0x47ff) AM_WRITE(SMH_RAM)
49   AM_RANGE(0x4800, 0x4bff) AM_WRITE(rocnrope_colorram_w) AM_BASE(&colorram)
50   AM_RANGE(0x4c00, 0x4fff) AM_WRITE(rocnrope_videoram_w) AM_BASE(&videoram)
51   AM_RANGE(0x5000, 0x5fff) AM_WRITE(SMH_RAM)
43   AM_RANGE(0x4000, 0x402f) AM_RAM AM_BASE(&spriteram_2)
44   AM_RANGE(0x4400, 0x442f) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
45   AM_RANGE(0x4000, 0x47ff) AM_RAM
46   AM_RANGE(0x4800, 0x4bff) AM_RAM_WRITE(rocnrope_colorram_w) AM_BASE(&colorram)
47   AM_RANGE(0x4c00, 0x4fff) AM_RAM_WRITE(rocnrope_videoram_w) AM_BASE(&videoram)
48   AM_RANGE(0x5000, 0x5fff) AM_RAM
5249   AM_RANGE(0x8000, 0x8000) AM_WRITE(watchdog_reset_w)
5350   AM_RANGE(0x8080, 0x8080) AM_WRITE(rocnrope_flipscreen_w)
5451   AM_RANGE(0x8081, 0x8081) AM_WRITE(timeplt_sh_irqtrigger_w)  /* cause interrupt on audio CPU */
r4679r4680
5855   AM_RANGE(0x8087, 0x8087) AM_WRITE(interrupt_enable_w)
5956   AM_RANGE(0x8100, 0x8100) AM_WRITE(soundlatch_w)
6057   AM_RANGE(0x8182, 0x818d) AM_WRITE(rocnrope_interrupt_vector_w)
61   AM_RANGE(0x6000, 0xffff) AM_WRITE(SMH_ROM)
58   AM_RANGE(0x6000, 0xffff) AM_ROM
6259ADDRESS_MAP_END
6360
6461
r4679r4680
168165
169166   /* basic machine hardware */
170167   MDRV_CPU_ADD("maincpu", M6809, MASTER_CLOCK / 3 / 4)        /* Verified in schematics */
171   MDRV_CPU_PROGRAM_MAP(readmem,writemem)
168   MDRV_CPU_PROGRAM_MAP(rocnrope_map,0)
172169   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
173170
174171   /* video hardware */
src/mame/drivers/fgoal.c
r4679r4680
8484   int scanline;
8585   int coin = (input_port_read(machine, "IN1") & 2);
8686
87   cpu_set_input_line(machine->cpu[0], 0, ASSERT_LINE);
87   cputag_set_input_line(machine, "maincpu", 0, ASSERT_LINE);
8888
8989   if (!coin && prev_coin)
90      cpu_set_input_line(machine->cpu[0], INPUT_LINE_NMI, ASSERT_LINE);
90      cputag_set_input_line(machine, "maincpu", INPUT_LINE_NMI, ASSERT_LINE);
9191
9292   prev_coin = coin;
9393
r4679r4680
127127
128128static READ8_HANDLER( fgoal_nmi_reset_r )
129129{
130   cpu_set_input_line(space->machine->cpu[0], INPUT_LINE_NMI, CLEAR_LINE);
130   cputag_set_input_line(space->machine, "maincpu", INPUT_LINE_NMI, CLEAR_LINE);
131131
132132   return 0;
133133}
r4679r4680
135135
136136static READ8_HANDLER( fgoal_irq_reset_r )
137137{
138   cpu_set_input_line(space->machine->cpu[0], 0, CLEAR_LINE);
138   cputag_set_input_line(space->machine, "maincpu", 0, CLEAR_LINE);
139139
140140   return 0;
141141}
src/mame/drivers/coinmstr.c
r4679r4680
11941194{
11951195   UINT8 *rom = memory_region(machine, "user1");
11961196   int length = memory_region_length(machine, "user1");
1197   UINT8 *buf = malloc_or_die(length);
1197   UINT8 *buf = alloc_array_or_die(UINT8, length);
11981198   int i;
11991199
12001200      memcpy(buf,rom,length);
src/mame/drivers/ultrsprt.c
r4679r4680
7070
7171static CUSTOM_INPUT( analog_ctrl_r )
7272{
73   const char *tag = param;
73   const char *tag = (const char *)param;
7474   return input_port_read(field->port->machine, tag) & 0xfff;
7575}
7676
7777static WRITE32_HANDLER( int_ack_w )
7878{
79   cpu_set_input_line(space->machine->cpu[0], INPUT_LINE_IRQ1, CLEAR_LINE);
79   cputag_set_input_line(space->machine, "maincpu", INPUT_LINE_IRQ1, CLEAR_LINE);
8080}
8181
8282static MACHINE_START( ultrsprt )
8383{
8484   /* set conservative DRC options */
85   ppcdrc_set_options(machine->cpu[0], PPCDRC_COMPATIBLE_OPTIONS);
85   ppcdrc_set_options(cputag_get_cpu(machine, "maincpu"), PPCDRC_COMPATIBLE_OPTIONS);
8686
8787   /* configure fast RAM regions for DRC */
88   ppcdrc_add_fastram(machine->cpu[0], 0x80000000, 0x8007ffff, FALSE, vram);
89   ppcdrc_add_fastram(machine->cpu[0], 0xff000000, 0xff01ffff, FALSE, workram);
88   ppcdrc_add_fastram(cputag_get_cpu(machine, "maincpu"), 0x80000000, 0x8007ffff, FALSE, vram);
89   ppcdrc_add_fastram(cputag_get_cpu(machine, "maincpu"), 0xff000000, 0xff01ffff, FALSE, workram);
9090}
9191
9292
r4679r4680
232232static void sound_irq_callback(running_machine *machine, int irq)
233233{
234234   if (irq == 0)
235      /*generic_pulse_irq_line(machine->cpu[1], INPUT_LINE_IRQ5)*/;
235      /*generic_pulse_irq_line(cputag_get_cpu(machine, "audiocpu"), INPUT_LINE_IRQ5)*/;
236236   else
237      cpu_set_input_line(machine->cpu[1], INPUT_LINE_IRQ6, HOLD_LINE);
237      cputag_set_input_line(machine, "maincpu", INPUT_LINE_IRQ6, HOLD_LINE);
238238}
239239
240240static DRIVER_INIT( ultrsprt )
src/mame/drivers/mainsnk.c
r4679r4680
128128{
129129   sound_cpu_busy = 1;
130130   soundlatch_w(space, 0, data);
131   cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_NMI, PULSE_LINE);
131   cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
132132}
133133
134134static READ8_HANDLER( sound_command_r )
src/mame/drivers/mystston.c
r4679r4680
3939
4040void mystston_on_scanline_interrupt(running_machine *machine)
4141{
42   cpu_set_input_line(machine->cpu[0], 0, ASSERT_LINE);
42   cputag_set_input_line(machine, "maincpu", 0, ASSERT_LINE);
4343}
4444
4545
4646static WRITE8_HANDLER( irq_clear_w )
4747{
48   cpu_set_input_line(space->machine->cpu[0], 0, CLEAR_LINE);
48   cputag_set_input_line(space->machine, "maincpu", 0, CLEAR_LINE);
4949}
5050
5151
r4679r4680
5959static INPUT_CHANGED( coin_inserted )
6060{
6161   /* coin insertion causes an NMI */
62   cpu_set_input_line(field->port->machine->cpu[0], INPUT_LINE_NMI, newval ? CLEAR_LINE : ASSERT_LINE);
62   cputag_set_input_line(field->port->machine, "maincpu", INPUT_LINE_NMI, newval ? CLEAR_LINE : ASSERT_LINE);
6363}
6464
6565
r4679r4680
7272
7373static WRITE8_HANDLER( mystston_ay8910_select_w )
7474{
75   mystston_state *state = space->machine->driver_data;
75   mystston_state *state = (mystston_state *)space->machine->driver_data;
7676
7777   /* bit 5 goes to 8910 #0 BDIR pin */
7878   if (((*state->ay8910_select & 0x20) == 0x20) && ((data & 0x20) == 0x00))
src/mame/drivers/rampart.c
r4679r4680
4141
4242static void update_interrupts(running_machine *machine)
4343{
44   cpu_set_input_line(machine->cpu[0], 4, atarigen_scanline_int_state ? ASSERT_LINE : CLEAR_LINE);
44   cputag_set_input_line(machine, "maincpu", 4, atarigen_scanline_int_state ? ASSERT_LINE : CLEAR_LINE);
4545}
4646
4747
r4679r4680
4949{
5050   /* generate 32V signals */
5151   if ((scanline & 32) == 0)
52      atarigen_scanline_int_gen(screen->machine->cpu[0]);
52      atarigen_scanline_int_gen(cputag_get_cpu(screen->machine, "maincpu"));
5353}
5454
5555
r4679r4680
490490
491491   atarigen_eeprom_default = compressed_default_eeprom;
492492   memcpy(&rom[0x140000], &rom[0x40000], 0x8000);
493   atarigen_slapstic_init(machine->cpu[0], 0x140000, 0x438000, 118);
493   atarigen_slapstic_init(cputag_get_cpu(machine, "maincpu"), 0x140000, 0x438000, 118);
494494}
495495
496496
src/mame/drivers/magicard.c
r4679r4680
411411static INTERRUPT_GEN( magicard_irq )
412412{
413413//  if(input_code_pressed(KEYCODE_Z))
414//      cpu_set_input_line(device->machine->cpu[0], 1, HOLD_LINE);
414//      cputag_set_input_line(device->machine, "maincpu", 1, HOLD_LINE);
415415//  magicram[0x2004/2]^=0xffff;
416416}
417417
src/mame/drivers/senjyo.c
r4679r4680
9898   flip_screen_set(space->machine, data);
9999}
100100
101static WRITE8_HANDLER( paletteram_IIBBGGRR_w )
102{
103   int r,g,b,i;
104101
105
106   paletteram[offset] = data;
107
108   i = (data >> 6) & 0x03;
109   /* red component */
110   r = (data << 2) & 0x0c;
111   if (r) r |= i;
112   /* green component */
113   g = (data >> 0) & 0x0c;
114   if (g) g |= i;
115   /* blue component */
116   b = (data >> 2) & 0x0c;
117   if (b) b |= i;
118
119   palette_set_color_rgb(space->machine,offset,pal4bit(r),pal4bit(g),pal4bit(b));
120}
121
122
123
124static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 )
125   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
126   AM_RANGE(0x8000, 0x97ff) AM_READ(SMH_RAM)
127   AM_RANGE(0x9800, 0x987f) AM_READ(SMH_RAM)
128   AM_RANGE(0x9c00, 0x9dff) AM_READ(SMH_RAM)
129   AM_RANGE(0x9e00, 0x9e3f) AM_READ(SMH_RAM)
130   AM_RANGE(0xa000, 0xa7ff) AM_READ(SMH_RAM)
131   AM_RANGE(0xa800, 0xafff) AM_READ(SMH_RAM)
132   AM_RANGE(0xb000, 0xb7ff) AM_READ(SMH_RAM)
133   AM_RANGE(0xb800, 0xbbff) AM_READ(SMH_RAM)
134   AM_RANGE(0xd000, 0xd000) AM_READ_PORT("P1")
102static ADDRESS_MAP_START( senjyo_map, ADDRESS_SPACE_PROGRAM, 8 )
103   AM_RANGE(0x0000, 0x7fff) AM_ROM
104   AM_RANGE(0x8000, 0x8fff) AM_RAM
105   AM_RANGE(0x9000, 0x93ff) AM_RAM_WRITE(senjyo_fgvideoram_w) AM_BASE(&senjyo_fgvideoram)
106   AM_RANGE(0x9400, 0x97ff) AM_RAM_WRITE(senjyo_fgcolorram_w) AM_BASE(&senjyo_fgcolorram)
107   AM_RANGE(0x9800, 0x987f) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
108   AM_RANGE(0x9c00, 0x9dff) AM_RAM_WRITE(paletteram_IIBBGGRR_w) AM_BASE(&paletteram)
109   AM_RANGE(0x9e00, 0x9e1f) AM_RAM AM_BASE(&senjyo_fgscroll)
110   AM_RANGE(0x9e20, 0x9e21) AM_RAM AM_BASE(&senjyo_scrolly3)
111/*  AM_RANGE(0x9e22, 0x9e23) height of the layer (Senjyo only, fixed at 0x380) */
112   AM_RANGE(0x9e25, 0x9e25) AM_RAM AM_BASE(&senjyo_scrollx3)
113   AM_RANGE(0x9e27, 0x9e27) AM_RAM_WRITE(senjyo_bgstripes_w) AM_BASE(&senjyo_bgstripesram)   /* controls width of background stripes */
114   AM_RANGE(0x9e28, 0x9e29) AM_RAM AM_BASE(&senjyo_scrolly2)
115/*  AM_RANGE(0x9e2a, 0x9e2b) height of the layer (Senjyo only, fixed at 0x200) */
116   AM_RANGE(0x9e2d, 0x9e2d) AM_RAM AM_BASE(&senjyo_scrollx2)
117   AM_RANGE(0x9e30, 0x9e31) AM_RAM AM_BASE(&senjyo_scrolly1)
118/*  AM_RANGE(0x9e32, 0x9e33) height of the layer (Senjyo only, fixed at 0x100) */
119   AM_RANGE(0x9e35, 0x9e35) AM_RAM AM_BASE(&senjyo_scrollx1)
120/*  AM_RANGE(0x9e38, 0x9e38) probably radar y position (Senjyo only, fixed at 0x61) */
121/*  AM_RANGE(0x9e3d, 0x9e3d) probably radar x position (Senjyo only, 0x00/0xc0 depending on screen flip) */
122   AM_RANGE(0x9e00, 0x9e3f) AM_RAM
123   AM_RANGE(0xa000, 0xa7ff) AM_RAM_WRITE(senjyo_bg3videoram_w) AM_BASE(&senjyo_bg3videoram)
124   AM_RANGE(0xa800, 0xafff) AM_RAM_WRITE(senjyo_bg2videoram_w) AM_BASE(&senjyo_bg2videoram)
125   AM_RANGE(0xb000, 0xb7ff) AM_RAM_WRITE(senjyo_bg1videoram_w) AM_BASE(&senjyo_bg1videoram)
126   AM_RANGE(0xb800, 0xbbff) AM_RAM AM_BASE(&senjyo_radarram)
127   AM_RANGE(0xd000, 0xd000) AM_READ_PORT("P1") AM_WRITE(flip_screen_w)
135128   AM_RANGE(0xd001, 0xd001) AM_READ_PORT("P2")
136129   AM_RANGE(0xd002, 0xd002) AM_READ_PORT("SYSTEM")
137   AM_RANGE(0xd004, 0xd004) AM_READ_PORT("DSW1")
130   AM_RANGE(0xd004, 0xd004) AM_READ_PORT("DSW1") AM_DEVWRITE("z80pio", z80pio_p_w)
138131   AM_RANGE(0xd005, 0xd005) AM_READ_PORT("DSW2")
139132ADDRESS_MAP_END
140133
141static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 )
142   AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM)
143   AM_RANGE(0x8000, 0x8fff) AM_WRITE(SMH_RAM)
144   AM_RANGE(0x9000, 0x93ff) AM_WRITE(senjyo_fgvideoram_w) AM_BASE(&senjyo_fgvideoram)
145   AM_RANGE(0x9400, 0x97ff) AM_WRITE(senjyo_fgcolorram_w) AM_BASE(&senjyo_fgcolorram)
146   AM_RANGE(0x9800, 0x987f) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
147   AM_RANGE(0x9c00, 0x9dff) AM_WRITE(paletteram_IIBBGGRR_w) AM_BASE(&paletteram)
148   AM_RANGE(0x9e00, 0x9e1f) AM_WRITE(SMH_RAM) AM_BASE(&senjyo_fgscroll)
149   AM_RANGE(0x9e20, 0x9e21) AM_WRITE(SMH_RAM) AM_BASE(&senjyo_scrolly3)
150/*  { 0x9e22, 0x9e23, height of the layer (Senjyo only, fixed at 0x380) */
151   AM_RANGE(0x9e25, 0x9e25) AM_WRITE(SMH_RAM) AM_BASE(&senjyo_scrollx3)
152   AM_RANGE(0x9e27, 0x9e27) AM_WRITE(senjyo_bgstripes_w) AM_BASE(&senjyo_bgstripesram)   /* controls width of background stripes */
153   AM_RANGE(0x9e28, 0x9e29) AM_WRITE(SMH_RAM) AM_BASE(&senjyo_scrolly2)
154/*  { 0x9e2a, 0x9e2b, height of the layer (Senjyo only, fixed at 0x200) */
155   AM_RANGE(0x9e2d, 0x9e2d) AM_WRITE(SMH_RAM) AM_BASE(&senjyo_scrollx2)
156   AM_RANGE(0x9e30, 0x9e31) AM_WRITE(SMH_RAM) AM_BASE(&senjyo_scrolly1)
157/*  { 0x9e32, 0x9e33, height of the layer (Senjyo only, fixed at 0x100) */
158   AM_RANGE(0x9e35, 0x9e35) AM_WRITE(SMH_RAM) AM_BASE(&senjyo_scrollx1)
159/*  { 0x9e38, 0x9e38, probably radar y position (Senjyo only, fixed at 0x61) */
160/*  { 0x9e3d, 0x9e3d, probably radar x position (Senjyo only, 0x00/0xc0 depending on screen flip) */
161AM_RANGE(0x9e00, 0x9e3f) AM_WRITE(SMH_RAM)
162   AM_RANGE(0xa000, 0xa7ff) AM_WRITE(senjyo_bg3videoram_w) AM_BASE(&senjyo_bg3videoram)
163   AM_RANGE(0xa800, 0xafff) AM_WRITE(senjyo_bg2videoram_w) AM_BASE(&senjyo_bg2videoram)
164   AM_RANGE(0xb000, 0xb7ff) AM_WRITE(senjyo_bg1videoram_w) AM_BASE(&senjyo_bg1videoram)
165   AM_RANGE(0xb800, 0xbbff) AM_WRITE(SMH_RAM) AM_BASE(&senjyo_radarram)
166   AM_RANGE(0xd000, 0xd000) AM_WRITE(flip_screen_w)
167   AM_RANGE(0xd004, 0xd004) AM_DEVWRITE("z80pio", z80pio_p_w)
168ADDRESS_MAP_END
169134
135static WRITE8_DEVICE_HANDLER( pio_w )
136{
137   if (offset & 1)
138      z80pio_c_w(device, (offset >> 1) & 1, data);
139   else
140      z80pio_d_w(device, (offset >> 1) & 1, data);
141}
170142
171static ADDRESS_MAP_START( sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
172   AM_RANGE(0x0000, 0x3fff) AM_READ(SMH_ROM)
173   AM_RANGE(0x4000, 0x43ff) AM_READ(SMH_RAM)
174ADDRESS_MAP_END
143static READ8_DEVICE_HANDLER( pio_r )
144{
145   return (offset & 1) ? z80pio_c_r(device, (offset >> 1) & 1) : z80pio_d_r(device, (offset >> 1) & 1);
146}
175147
176static ADDRESS_MAP_START( sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
177   AM_RANGE(0x0000, 0x3fff) AM_WRITE(SMH_ROM)
178   AM_RANGE(0x4000, 0x43ff) AM_WRITE(SMH_RAM)
148static ADDRESS_MAP_START( senjyo_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
149   AM_RANGE(0x0000, 0x3fff) AM_ROM
150   AM_RANGE(0x4000, 0x43ff) AM_RAM
179151   AM_RANGE(0x8000, 0x8000) AM_DEVWRITE("sn1", sn76496_w)
180152   AM_RANGE(0x9000, 0x9000) AM_DEVWRITE("sn2", sn76496_w)
181153   AM_RANGE(0xa000, 0xa000) AM_DEVWRITE("sn3", sn76496_w)
r4679r4680
186158#endif
187159ADDRESS_MAP_END
188160
161static ADDRESS_MAP_START( senjyo_sound_io_map, ADDRESS_SPACE_IO, 8 )
162   ADDRESS_MAP_GLOBAL_MASK(0xff)
163   AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("z80pio", pio_r, pio_w)
164   AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("z80ctc", z80ctc_r, z80ctc_w)
165ADDRESS_MAP_END
166
189167/* For the bootleg */
190168
191169/* are scroll registers 1+2 linked on the bootleg?, only one copy is written */
r4679r4680
201179   senjyo_scrollx1[offset] = data;
202180}
203181
204
205static ADDRESS_MAP_START( starforb_writemem, ADDRESS_SPACE_PROGRAM, 8 )
206   AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM)
207   AM_RANGE(0x8000, 0x8fff) AM_WRITE(SMH_RAM)
208   AM_RANGE(0x9000, 0x93ff) AM_WRITE(senjyo_fgvideoram_w) AM_BASE(&senjyo_fgvideoram)
209   AM_RANGE(0x9400, 0x97ff) AM_WRITE(senjyo_fgcolorram_w) AM_BASE(&senjyo_fgcolorram)
210   AM_RANGE(0x9800, 0x987f) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
211   AM_RANGE(0x9c00, 0x9dff) AM_WRITE(paletteram_IIBBGGRR_w) AM_BASE(&paletteram)
212
182static ADDRESS_MAP_START( starforb_map, ADDRESS_SPACE_PROGRAM, 8 )
183   AM_RANGE(0x0000, 0x7fff) AM_ROM
184   AM_RANGE(0x8000, 0x8fff) AM_RAM
185   AM_RANGE(0x9000, 0x93ff) AM_RAM_WRITE(senjyo_fgvideoram_w) AM_BASE(&senjyo_fgvideoram)
186   AM_RANGE(0x9400, 0x97ff) AM_RAM_WRITE(senjyo_fgcolorram_w) AM_BASE(&senjyo_fgcolorram)
187   AM_RANGE(0x9800, 0x987f) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
188   AM_RANGE(0x9c00, 0x9dff) AM_RAM_WRITE(paletteram_IIBBGGRR_w) AM_BASE(&paletteram)
213189   /* The format / use of the ram here is different on the bootleg */
214   AM_RANGE(0x9e20, 0x9e21) AM_WRITE(SMH_RAM) AM_BASE(&senjyo_scrolly3)
215   AM_RANGE(0x9e25, 0x9e25) AM_WRITE(SMH_RAM) AM_BASE(&senjyo_scrollx3)
216   AM_RANGE(0x9e30, 0x9e31) AM_WRITE(starforb_scrolly2) AM_BASE(&senjyo_scrolly2) // ok
217   AM_RANGE(0x9e35, 0x9e35) AM_WRITE(starforb_scrollx2) AM_BASE(&senjyo_scrollx2) // ok
218   AM_RANGE(0x9e00, 0x9e3f) AM_WRITE(SMH_RAM)
190   AM_RANGE(0x9e20, 0x9e21) AM_RAM AM_BASE(&senjyo_scrolly3)
191   AM_RANGE(0x9e25, 0x9e25) AM_RAM AM_BASE(&senjyo_scrollx3)
192   AM_RANGE(0x9e30, 0x9e31) AM_RAM_WRITE(starforb_scrolly2) AM_BASE(&senjyo_scrolly2) // ok
193   AM_RANGE(0x9e35, 0x9e35) AM_RAM_WRITE(starforb_scrollx2) AM_BASE(&senjyo_scrollx2) // ok
194   AM_RANGE(0x9e00, 0x9e3f) AM_RAM
219195
220   AM_RANGE(0xa000, 0xa7ff) AM_WRITE(senjyo_bg3videoram_w) AM_BASE(&senjyo_bg3videoram)
221   AM_RANGE(0xa800, 0xafff) AM_WRITE(senjyo_bg2videoram_w) AM_BASE(&senjyo_bg2videoram)
222   AM_RANGE(0xb000, 0xb7ff) AM_WRITE(senjyo_bg1videoram_w) AM_BASE(&senjyo_bg1videoram)
223   AM_RANGE(0xb800, 0xbbff) AM_WRITE(SMH_RAM) AM_BASE(&senjyo_radarram)
224   AM_RANGE(0xd000, 0xd000) AM_WRITE(flip_screen_w)
225   AM_RANGE(0xd004, 0xd004) AM_DEVWRITE("z80pio", z80pio_p_w)
196   AM_RANGE(0xa000, 0xa7ff) AM_RAM_WRITE(senjyo_bg3videoram_w) AM_BASE(&senjyo_bg3videoram)
197   AM_RANGE(0xa800, 0xafff) AM_RAM_WRITE(senjyo_bg2videoram_w) AM_BASE(&senjyo_bg2videoram)
198   AM_RANGE(0xb000, 0xb7ff) AM_RAM_WRITE(senjyo_bg1videoram_w) AM_BASE(&senjyo_bg1videoram)
199   AM_RANGE(0xb800, 0xbbff) AM_RAM AM_BASE(&senjyo_radarram)
200   AM_RANGE(0xd000, 0xd000) AM_READ_PORT("P1") AM_WRITE(flip_screen_w)
201   AM_RANGE(0xd001, 0xd001) AM_READ_PORT("P2")
202   AM_RANGE(0xd002, 0xd002) AM_READ_PORT("SYSTEM")
203   AM_RANGE(0xd004, 0xd004) AM_READ_PORT("DSW1") AM_DEVWRITE("z80pio", z80pio_p_w)
204   AM_RANGE(0xd005, 0xd005) AM_READ_PORT("DSW2")
226205
227206   /* these aren't used / written, left here to make sure memory is allocated */
228   AM_RANGE(0xfe00, 0xfe1f) AM_WRITE(SMH_RAM) AM_BASE(&senjyo_fgscroll)
229   AM_RANGE(0xfe27, 0xfe27) AM_WRITE(senjyo_bgstripes_w) AM_BASE(&senjyo_bgstripesram)   /* controls width of background stripes */
230   AM_RANGE(0xfe28, 0xfe29) AM_WRITE(SMH_RAM) AM_BASE(&senjyo_scrolly1)
231   AM_RANGE(0xfe2d, 0xfe2d) AM_WRITE(SMH_RAM) AM_BASE(&senjyo_scrollx1)
207   AM_RANGE(0xfe00, 0xfe1f) AM_RAM AM_BASE(&senjyo_fgscroll)
208   AM_RANGE(0xfe27, 0xfe27) AM_RAM_WRITE(senjyo_bgstripes_w) AM_BASE(&senjyo_bgstripesram)   /* controls width of background stripes */
209   AM_RANGE(0xfe28, 0xfe29) AM_RAM AM_BASE(&senjyo_scrolly1)
210   AM_RANGE(0xfe2d, 0xfe2d) AM_RAM AM_BASE(&senjyo_scrollx1)
232211ADDRESS_MAP_END
233212
234213
235static ADDRESS_MAP_START( starforb_sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
236   AM_RANGE(0x0000, 0x3fff) AM_READ(SMH_ROM)
237   AM_RANGE(0x4000, 0x43ff) AM_READ(SMH_RAM)
238   AM_RANGE(0xf000, 0xffff) AM_READ(SMH_RAM)
239ADDRESS_MAP_END
240
241static ADDRESS_MAP_START( starforb_sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
242   AM_RANGE(0x0000, 0x3fff) AM_WRITE(SMH_ROM)
243   AM_RANGE(0x4000, 0x43ff) AM_WRITE(SMH_RAM)
214static ADDRESS_MAP_START( starforb_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
215   AM_RANGE(0x0000, 0x3fff) AM_ROM
216   AM_RANGE(0x4000, 0x43ff) AM_RAM
244217   AM_RANGE(0x8000, 0x8000) AM_DEVWRITE("sn1", sn76496_w)
245218   AM_RANGE(0x9000, 0x9000) AM_DEVWRITE("sn2", sn76496_w)
246219   AM_RANGE(0xa000, 0xa000) AM_DEVWRITE("sn3", sn76496_w)
r4679r4680
249222   AM_RANGE(0xe000, 0xe000) AM_WRITE(unknown)
250223   AM_RANGE(0xf000, 0xf000) AM_WRITE(unknown)
251224#endif
252
253   AM_RANGE(0xf000, 0xffff) AM_WRITE(SMH_RAM)
225   AM_RANGE(0xf000, 0xffff) AM_RAM
254226ADDRESS_MAP_END
255227
256static WRITE8_DEVICE_HANDLER( pio_w )
257{
258   if (offset & 1)
259      z80pio_c_w(device, (offset >> 1) & 1, data);
260   else
261      z80pio_d_w(device, (offset >> 1) & 1, data);
262}
263228
264static READ8_DEVICE_HANDLER( pio_r )
265{
266   return (offset & 1) ? z80pio_c_r(device, (offset >> 1) & 1) : z80pio_d_r(device, (offset >> 1) & 1);
267}
268
269static ADDRESS_MAP_START( sound_io_map, ADDRESS_SPACE_IO, 8 )
270   ADDRESS_MAP_GLOBAL_MASK(0xff)
271   AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("z80pio", pio_r, pio_w)
272   AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("z80ctc", z80ctc_r, z80ctc_w)
273ADDRESS_MAP_END
274
275
276
277229static INPUT_PORTS_START( senjyo )
278230   PORT_START("P1")
279231   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_8WAY
r4679r4680
596548
597549   /* basic machine hardware */
598550   MDRV_CPU_ADD("maincpu", Z80, 4000000)   /* 4 MHz? */
599   MDRV_CPU_PROGRAM_MAP(readmem,writemem)
551   MDRV_CPU_PROGRAM_MAP(senjyo_map,0)
600552   MDRV_CPU_VBLANK_INT("screen", senjyo_interrupt)
601553
602554   MDRV_CPU_ADD("sub", Z80, 2000000)   /* 2 MHz? */
603555   MDRV_CPU_CONFIG(senjyo_daisy_chain)
604   MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem)
605   MDRV_CPU_IO_MAP(sound_io_map,0)
556   MDRV_CPU_PROGRAM_MAP(senjyo_sound_map,0)
557   MDRV_CPU_IO_MAP(senjyo_sound_io_map,0)
606558
607559   MDRV_MACHINE_RESET(senjyo)
608560
r4679r4680
646598   /* basic machine hardware */
647599   MDRV_IMPORT_FROM(senjyo)
648600   MDRV_CPU_MODIFY("maincpu")
649   MDRV_CPU_PROGRAM_MAP(readmem,starforb_writemem)
601   MDRV_CPU_PROGRAM_MAP(starforb_map,0)
650602
651603   MDRV_CPU_MODIFY("sub")
652   MDRV_CPU_PROGRAM_MAP(starforb_sound_readmem,starforb_sound_writemem)
604   MDRV_CPU_PROGRAM_MAP(starforb_sound_map,0)
653605MACHINE_DRIVER_END
654606
655607
src/mame/drivers/maygay1b.c
r4679r4680
465465
466466static void duart_irq_handler(const device_config *device, UINT8 state)
467467{
468   cpu_set_input_line(device->machine->cpu[0], M6809_IRQ_LINE, state?ASSERT_LINE:CLEAR_LINE);
468   cputag_set_input_line(device->machine, "maincpu", M6809_IRQ_LINE, state?ASSERT_LINE:CLEAR_LINE);
469469   LOG(("6809 irq%d \n",state));
470470}
471471
r4679r4680
707707static WRITE8_DEVICE_HANDLER( m1_meter_w )
708708{
709709   int i;
710   UINT64 cycles  = cpu_get_total_cycles(device->machine->cpu[0]);
710   UINT64 cycles  = cputag_get_total_cycles(device->machine, "maincpu");
711711
712712   for (i=0; i<8; i++)
713713   if ( data & (1 << i) )   Mechmtr_update(i, cycles, data & (1 << i) );
src/mame/drivers/bfm_sc1.c
r4679r4680
180180
181181       sc1_Inputs[2] = input_port_read(device->machine,"STROBE0");
182182
183      generic_pulse_irq_line(device->machine->cpu[0], M6809_IRQ_LINE);
183      generic_pulse_irq_line(cputag_get_cpu(device->machine, "maincpu"), M6809_IRQ_LINE);
184184   }
185185}
186186
r4679r4680
277277         if ( changed & (1 << i) )
278278         {
279279            Mechmtr_update(i, cycles, data & (1 << i) );
280            generic_pulse_irq_line(space->machine->cpu[0], M6809_FIRQ_LINE);
280            generic_pulse_irq_line(cputag_get_cpu(space->machine, "maincpu"), M6809_FIRQ_LINE);
281281         }
282282      }
283283   }
r4679r4680
371371   adder2_sc2data       = data;   // store data
372372
373373   adder2_acia_triggered = 1;      // set flag, acia IRQ triggered
374   cpu_set_input_line(machine->cpu[1], M6809_IRQ_LINE, ASSERT_LINE );//HOLD_LINE);// trigger IRQ
374   cputag_set_input_line(machine, "adder2", M6809_IRQ_LINE, ASSERT_LINE );//HOLD_LINE);// trigger IRQ
375375}
376376
377377///////////////////////////////////////////////////////////////////////////
r4679r4680
497497   if ( changed & 0x08 )
498498   { // clock changed
499499
500      if ( (!data & 0x08) )
500      if ( !(data & 0x08) )
501501      { // clock changed to low
502502         int strobe, offset, pattern, i;
503503
r4679r4680
662662
663663   rom = memory_region(machine,rom_region);
664664
665   tmp = malloc_or_die(0x10000);
665   tmp = alloc_array_or_die(UINT8, 0x10000);
666666
667667   {
668668      int i;
r4679r4680
797797   AM_RANGE(0x3800, 0x39FF) AM_WRITE(reel56_w)    // reel 5+6 latch
798798
799799   AM_RANGE(0x4000, 0x5FFF) AM_ROM            // 8k  ROM
800   AM_RANGE(0x6000, 0x7FFF) AM_READ(SMH_BANK1) // 8k  paged ROM (4 pages)
800   AM_RANGE(0x6000, 0x7FFF) AM_READ(SMH_BANK(1)) // 8k  paged ROM (4 pages)
801801   AM_RANGE(0x8000, 0xFFFF) AM_READWRITE(SMH_ROM,watchdog_w)    // 32k ROM
802802
803803ADDRESS_MAP_END
r4679r4680
845845   AM_RANGE(0x3E01, 0x3E01) AM_READWRITE(vid_uart_rx_r,vid_uart_tx_w)      // video uart receive  reg
846846
847847   AM_RANGE(0x4000, 0x5FFF) AM_ROM            // 8k  ROM
848   AM_RANGE(0x6000, 0x7FFF) AM_READ(SMH_BANK1) // 8k  paged ROM (4 pages)
848   AM_RANGE(0x6000, 0x7FFF) AM_READ(SMH_BANK(1)) // 8k  paged ROM (4 pages)
849849   AM_RANGE(0x8000, 0xFFFF) AM_READWRITE(SMH_ROM,watchdog_w)    // 32k ROM
850850
851851ADDRESS_MAP_END
r4679r4680
890890   AM_RANGE(0x3800, 0x39FF) AM_DEVWRITE("upd", nec_latch_w)
891891
892892   AM_RANGE(0x4000, 0x5FFF) AM_ROM                     // 8k  ROM
893   AM_RANGE(0x6000, 0x7FFF) AM_READ(SMH_BANK1)            // 8k  paged ROM (4 pages)
893   AM_RANGE(0x6000, 0x7FFF) AM_READ(SMH_BANK(1))            // 8k  paged ROM (4 pages)
894894   AM_RANGE(0x8000, 0xFFFF) AM_READWRITE(SMH_ROM,watchdog_w)   // 32k ROM
895895
896896ADDRESS_MAP_END
src/mame/drivers/snowbros.c
r4679r4680
7171#include "sound/okim6295.h"
7272#include "video/kan_pand.h" // for the original pandora
7373#include "video/kan_panb.h" // for bootlegs / non-original hw
74#include "cpu/mcs51/mcs51.h" // for semicom mcu
7475
75
7676static WRITE16_HANDLER( snowbros_flipscreen_w )
7777{
7878   if (ACCESSING_BITS_8_15)
r4679r4680
104104static int sb3_music_is_playing;
105105static int sb3_music;
106106
107static WRITE16_HANDLER( snowbros_irq4_ack_w )
108{
109   cputag_set_input_line(space->machine, "maincpu", 4, CLEAR_LINE);
110}
111
112static WRITE16_HANDLER( snowbros_irq3_ack_w )
113{
114   cputag_set_input_line(space->machine, "maincpu", 3, CLEAR_LINE);
115}
116
117static WRITE16_HANDLER( snowbros_irq2_ack_w )
118{
119   cputag_set_input_line(space->machine, "maincpu", 2, CLEAR_LINE);
120}
121
107122static INTERRUPT_GEN( snowbros_interrupt )
108123{
109   cpu_set_input_line(device, cpu_getiloops(device) + 2, HOLD_LINE);   /* IRQs 4, 3, and 2 */
124   cpu_set_input_line(device, cpu_getiloops(device) + 2, ASSERT_LINE);   /* IRQs 4, 3, and 2 */
110125}
111126
112127static INTERRUPT_GEN( snowbro3_interrupt )
r4679r4680
114129   const device_config *adpcm = devtag_get_device(device->machine, "oki");
115130   int status = okim6295_r(adpcm,0);
116131
117   cpu_set_input_line(device, cpu_getiloops(device) + 2, HOLD_LINE);   /* IRQs 4, 3, and 2 */
132   cpu_set_input_line(device, cpu_getiloops(device) + 2, ASSERT_LINE);   /* IRQs 4, 3, and 2 */
118133
119134   if (sb3_music_is_playing)
120135   {
r4679r4680
148163{
149164   if (ACCESSING_BITS_0_7)
150165   {
151      soundlatch_w(space,offset,data & 0xff);
152      cpu_set_input_line(space->machine->cpu[1],INPUT_LINE_NMI,PULSE_LINE);
166      soundlatch_w(space, offset, data & 0xff);
167      cputag_set_input_line(space->machine, "soundcpu", INPUT_LINE_NMI, PULSE_LINE);
153168   }
154169}
155170
r4679r4680
158173   if (ACCESSING_BITS_0_7) soundlatch_w(space,0,data & 0xff);
159174}
160175
161
162176/* Snow Bros Memory Map */
163177
164static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 16 )
165   AM_RANGE(0x000000, 0x03ffff) AM_READ(SMH_ROM)
166   AM_RANGE(0x100000, 0x103fff) AM_READ(SMH_RAM)
167   AM_RANGE(0x300000, 0x300001) AM_READ(snowbros_68000_sound_r)
178static ADDRESS_MAP_START( snowbros_map, ADDRESS_SPACE_PROGRAM, 16 )
179   AM_RANGE(0x000000, 0x03ffff) AM_ROM
180   AM_RANGE(0x100000, 0x103fff) AM_RAM
181   AM_RANGE(0x200000, 0x200001) AM_WRITE(watchdog_reset16_w)
182   AM_RANGE(0x300000, 0x300001) AM_READWRITE(snowbros_68000_sound_r,snowbros_68000_sound_w)
183   AM_RANGE(0x400000, 0x400001) AM_WRITE(snowbros_flipscreen_w)
168184   AM_RANGE(0x500000, 0x500001) AM_READ_PORT("DSW1")
169185   AM_RANGE(0x500002, 0x500003) AM_READ_PORT("DSW2")
170186   AM_RANGE(0x500004, 0x500005) AM_READ_PORT("SYSTEM")
171   AM_RANGE(0x600000, 0x6001ff) AM_READ(SMH_RAM)
172   AM_RANGE(0x700000, 0x701fff) AM_READ(pandora_spriteram_LSB_r)
187   AM_RANGE(0x600000, 0x6001ff) AM_RAM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE(&paletteram16)
188   AM_RANGE(0x700000, 0x701fff) AM_READWRITE(pandora_spriteram_LSB_r,pandora_spriteram_LSB_w)
189   AM_RANGE(0x800000, 0x800001) AM_WRITE(snowbros_irq4_ack_w)   /* IRQ 4 acknowledge */
190   AM_RANGE(0x900000, 0x900001) AM_WRITE(snowbros_irq3_ack_w)   /* IRQ 3 acknowledge */
191   AM_RANGE(0xa00000, 0xa00001) AM_WRITE(snowbros_irq2_ack_w)   /* IRQ 2 acknowledge */
173192ADDRESS_MAP_END
174193
175static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 16 )
176   AM_RANGE(0x000000, 0x03ffff) AM_WRITE(SMH_ROM)
177   AM_RANGE(0x100000, 0x103fff) AM_WRITE(SMH_RAM)
178   AM_RANGE(0x200000, 0x200001) AM_WRITE(watchdog_reset16_w)
179   AM_RANGE(0x300000, 0x300001) AM_WRITE(snowbros_68000_sound_w)
180   AM_RANGE(0x400000, 0x400001) AM_WRITE(snowbros_flipscreen_w)
181   AM_RANGE(0x600000, 0x6001ff) AM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE(&paletteram16)
182   AM_RANGE(0x700000, 0x701fff) AM_WRITE(pandora_spriteram_LSB_w)
183   AM_RANGE(0x800000, 0x800001) AM_WRITENOP   /* IRQ 4 acknowledge? */
184   AM_RANGE(0x900000, 0x900001) AM_WRITENOP   /* IRQ 3 acknowledge? */
185   AM_RANGE(0xa00000, 0xa00001) AM_WRITENOP   /* IRQ 2 acknowledge? */
194static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 )
195   AM_RANGE(0x0000, 0x7fff) AM_ROM
196   AM_RANGE(0x8000, 0x87ff) AM_RAM
186197ADDRESS_MAP_END
187198
188static ADDRESS_MAP_START( sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
189   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
190   AM_RANGE(0x8000, 0x87ff) AM_READ(SMH_RAM)
191ADDRESS_MAP_END
192
193static ADDRESS_MAP_START( sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
194   AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM)
195   AM_RANGE(0x8000, 0x87ff) AM_WRITE(SMH_RAM)
196ADDRESS_MAP_END
197
198199static ADDRESS_MAP_START( sound_io_map, ADDRESS_SPACE_IO, 8 )
199200   ADDRESS_MAP_GLOBAL_MASK(0xff)
200201   AM_RANGE(0x02, 0x03) AM_DEVREADWRITE("ym", ym3812_r, ym3812_w)
201202   AM_RANGE(0x04, 0x04) AM_READWRITE(soundlatch_r, soundlatch_w)   /* goes back to the main CPU, checked during boot */
202203ADDRESS_MAP_END
203204
205
206
207static READ8_HANDLER( prot_io_r )
208{
209   // never read?
210   return 0x00;
211}
212
213static UINT8 semicom_prot_offset = 0x00;
214
215// probably not endian safe
216static WRITE8_HANDLER( prot_io_w )
217{
218   switch (offset)
219   {
220      case 0x00:
221      {
222         UINT16 word = hyperpac_ram[(0xe000/2)+semicom_prot_offset];
223         word = (word & 0xff00) | (data << 0);
224         hyperpac_ram[(0xe000/2)+semicom_prot_offset] = word;
225         break;
226      }
227
228      case 0x01:
229      {
230         UINT16 word = hyperpac_ram[(0xe000/2)+semicom_prot_offset];
231         word = (word & 0x00ff) | (data << 8);
232         hyperpac_ram[(0xe000/2)+semicom_prot_offset] = word;
233         break;
234      }
235
236      case 0x02: // offset
237      {
238         semicom_prot_offset = data;
239         break;
240      }
241
242      case 0x03: // ??
243      {
244         //logerror("offset %02x data %02x\n",offset,data);
245         break;
246      }
247   }
248}
249
250/* Semicom AT89C52 MCU */
251static ADDRESS_MAP_START( protection_map, ADDRESS_SPACE_PROGRAM, 8 )
252   AM_RANGE(0x0000, 0x1fff) AM_ROM
253ADDRESS_MAP_END
254
255static ADDRESS_MAP_START( protection_iomap, ADDRESS_SPACE_IO, 8 )
256   AM_RANGE(MCS51_PORT_P0, MCS51_PORT_P3) AM_READWRITE(prot_io_r,prot_io_w)
257ADDRESS_MAP_END
258
204259/* Winter Bobble - bootleg GFX chip */
205260
206static ADDRESS_MAP_START( wintbob_readmem, ADDRESS_SPACE_PROGRAM, 16 )
207   AM_RANGE(0x000000, 0x03ffff) AM_READ(SMH_ROM)
208   AM_RANGE(0x100000, 0x103fff) AM_READ(SMH_RAM)
209   AM_RANGE(0x300000, 0x300001) AM_READ(snowbros_68000_sound_r)
261static ADDRESS_MAP_START( wintbob_map, ADDRESS_SPACE_PROGRAM, 16 )
262   AM_RANGE(0x000000, 0x03ffff) AM_ROM
263   AM_RANGE(0x100000, 0x103fff) AM_RAM
264   AM_RANGE(0x200000, 0x200001) AM_WRITE(watchdog_reset16_w)
265   AM_RANGE(0x300000, 0x300001) AM_READWRITE(snowbros_68000_sound_r,snowbros_68000_sound_w)
266   AM_RANGE(0x400000, 0x400001) AM_WRITE(snowbros_flipscreen_w)
210267   AM_RANGE(0x500000, 0x500001) AM_READ_PORT("DSW1")
211268   AM_RANGE(0x500002, 0x500003) AM_READ_PORT("DSW2")
212269   AM_RANGE(0x500004, 0x500005) AM_READ_PORT("SYSTEM")
213   AM_RANGE(0x600000, 0x6001ff) AM_READ(SMH_RAM)
214   AM_RANGE(0x700000, 0x701fff) AM_READ(SMH_RAM)
270   AM_RANGE(0x600000, 0x6001ff) AM_RAM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE(&paletteram16)
271   AM_RANGE(0x700000, 0x701fff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)
272   AM_RANGE(0x800000, 0x800001) AM_WRITE(snowbros_irq4_ack_w)   /* IRQ 4 acknowledge */
273   AM_RANGE(0x900000, 0x900001) AM_WRITE(snowbros_irq3_ack_w)   /* IRQ 3 acknowledge */
274   AM_RANGE(0xa00000, 0xa00001) AM_WRITE(snowbros_irq2_ack_w)   /* IRQ 2 acknowledge */
215275ADDRESS_MAP_END
216276
217static ADDRESS_MAP_START( wintbob_writemem, ADDRESS_SPACE_PROGRAM, 16 )
218   AM_RANGE(0x000000, 0x03ffff) AM_WRITE(SMH_ROM)
219   AM_RANGE(0x100000, 0x103fff) AM_WRITE(SMH_RAM)
220   AM_RANGE(0x200000, 0x200001) AM_WRITE(watchdog_reset16_w)
221   AM_RANGE(0x300000, 0x300001) AM_WRITE(snowbros_68000_sound_w)
222   AM_RANGE(0x400000, 0x400001) AM_WRITE(snowbros_flipscreen_w)
223   AM_RANGE(0x600000, 0x6001ff) AM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE(&paletteram16)
224   AM_RANGE(0x700000, 0x701fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)
225   AM_RANGE(0x800000, 0x800001) AM_WRITENOP   /* IRQ 4 acknowledge? */
226   AM_RANGE(0x900000, 0x900001) AM_WRITENOP   /* IRQ 3 acknowledge? */
227   AM_RANGE(0xa00000, 0xa00001) AM_WRITENOP   /* IRQ 2 acknowledge? */
228ADDRESS_MAP_END
229
230277/* Honey Dolls */
231278
232static ADDRESS_MAP_START( honeydol_readmem, ADDRESS_SPACE_PROGRAM, 16 )
233   AM_RANGE(0x000000, 0x03ffff) AM_READ(SMH_ROM)
234   AM_RANGE(0x100000, 0x10ffff) AM_READ(SMH_RAM)
279static ADDRESS_MAP_START( honeydol_map, ADDRESS_SPACE_PROGRAM, 16 )
280   AM_RANGE(0x000000, 0x03ffff) AM_ROM
281   AM_RANGE(0x100000, 0x10ffff) AM_RAM AM_BASE(&hyperpac_ram)
282   AM_RANGE(0x200000, 0x200001) AM_WRITENOP   /* ? */
283   AM_RANGE(0x300000, 0x300001) AM_WRITE(snowbros_68000_sound_w)   /* ? */
284   AM_RANGE(0x400000, 0x400001) AM_WRITE(snowbros_irq4_ack_w)   /* IRQ 4 acknowledge */
285   AM_RANGE(0x500000, 0x500001) AM_WRITE(snowbros_irq3_ack_w)   /* IRQ 3 acknowledge */
286   AM_RANGE(0x600000, 0x600001) AM_WRITE(snowbros_irq2_ack_w)   /* IRQ 2 acknowledge */
287   AM_RANGE(0x800000, 0x800001) AM_WRITENOP   /* ? */
235288   AM_RANGE(0x900000, 0x900001) AM_READ_PORT("DSW1")
236289   AM_RANGE(0x900002, 0x900003) AM_READ_PORT("DSW2")
237290   AM_RANGE(0x900004, 0x900005) AM_READ_PORT("SYSTEM")
238   AM_RANGE(0xa00000, 0xa007ff) AM_READ(SMH_RAM)
239   AM_RANGE(0xb00000, 0xb01fff) AM_READ(SMH_RAM)
291   AM_RANGE(0xa00000, 0xa007ff) AM_RAM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE(&paletteram16)
292   AM_RANGE(0xb00000, 0xb01fff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)
240293ADDRESS_MAP_END
241294
242static ADDRESS_MAP_START( honeydol_writemem, ADDRESS_SPACE_PROGRAM, 16 )
243   AM_RANGE(0x000000, 0x03ffff) AM_WRITE(SMH_ROM)
244   AM_RANGE(0x100000, 0x10ffff) AM_WRITE(SMH_RAM) AM_BASE(&hyperpac_ram)
245   AM_RANGE(0x200000, 0x200001) AM_WRITENOP   /* ?*/
246   AM_RANGE(0x300000, 0x300001) AM_WRITE(snowbros_68000_sound_w)   /* ?*/
247   AM_RANGE(0xa00000, 0xa007ff) AM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE(&paletteram16)
248   AM_RANGE(0xb00000, 0xb01fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)
249   AM_RANGE(0x400000, 0x400001) AM_WRITENOP   /* IRQ 4 acknowledge? */
250   AM_RANGE(0x500000, 0x500001) AM_WRITENOP   /* IRQ 3 acknowledge? */
251   AM_RANGE(0x600000, 0x600001) AM_WRITENOP   /* IRQ 2 acknowledge? */
252   AM_RANGE(0x800000, 0x800001) AM_WRITENOP   /* ?*/
295static ADDRESS_MAP_START( honeydol_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
296   AM_RANGE(0x0000, 0x7fff) AM_ROM
297   AM_RANGE(0x8000, 0x87ff) AM_RAM
298   AM_RANGE(0xe010, 0xe010) AM_DEVREADWRITE("oki", okim6295_r,okim6295_w)
253299ADDRESS_MAP_END
254300
255static ADDRESS_MAP_START( honeydol_sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
256   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
257   AM_RANGE(0x8000, 0x87ff) AM_READ(SMH_RAM)
258   AM_RANGE(0xe010, 0xe010) AM_DEVREAD("oki", okim6295_r)
259ADDRESS_MAP_END
260
261static ADDRESS_MAP_START( honeydol_sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
262   AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM)
263   AM_RANGE(0x8000, 0x87ff) AM_WRITE(SMH_RAM)
264   AM_RANGE(0xe010, 0xe010) AM_DEVWRITE("oki", okim6295_w)
265   ADDRESS_MAP_END
266
267301static ADDRESS_MAP_START( honeydol_sound_io_map, ADDRESS_SPACE_IO, 8 )
268302   ADDRESS_MAP_GLOBAL_MASK(0xff)
269303   AM_RANGE(0x02, 0x03) AM_DEVREADWRITE("ym", ym3812_r, ym3812_w)                        // not connected?
r4679r4680
276310{
277311   if (ACCESSING_BITS_0_7)
278312   {
279      soundlatch_w(space,offset,data & 0xff);
280      cpu_set_input_line(space->machine->cpu[1],INPUT_LINE_NMI,PULSE_LINE);
313      soundlatch_w(space, offset, data & 0xff);
314      cputag_set_input_line(space->machine, "soundcpu", INPUT_LINE_NMI, PULSE_LINE);
281315   }
282316}
283317
284static ADDRESS_MAP_START( twinadv_readmem, ADDRESS_SPACE_PROGRAM, 16 )
285   AM_RANGE(0x000000, 0x03ffff) AM_READ(SMH_ROM)
286   AM_RANGE(0x100000, 0x10ffff) AM_READ(SMH_RAM)
287   AM_RANGE(0x300000, 0x300001) AM_READ(snowbros_68000_sound_r)
318static ADDRESS_MAP_START( twinadv_map, ADDRESS_SPACE_PROGRAM, 16 )
319   AM_RANGE(0x000000, 0x03ffff) AM_ROM
320   AM_RANGE(0x100000, 0x10ffff) AM_RAM
321   AM_RANGE(0x200000, 0x200001) AM_WRITE(watchdog_reset16_w)
322   AM_RANGE(0x300000, 0x300001) AM_READWRITE(snowbros_68000_sound_r,twinadv_68000_sound_w)
323   AM_RANGE(0x400000, 0x400001) AM_WRITE(snowbros_flipscreen_w)
324
288325   AM_RANGE(0x500000, 0x500001) AM_READ_PORT("DSW1")
289326   AM_RANGE(0x500002, 0x500003) AM_READ_PORT("DSW2")
290327   AM_RANGE(0x500004, 0x500005) AM_READ_PORT("SYSTEM")
291   AM_RANGE(0x600000, 0x6001ff) AM_READ(SMH_RAM)
292   AM_RANGE(0x700000, 0x701fff) AM_READ(SMH_RAM)
328   AM_RANGE(0x600000, 0x6001ff) AM_RAM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE(&paletteram16)
329   AM_RANGE(0x700000, 0x701fff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)
330   AM_RANGE(0x800000, 0x800001) AM_WRITE(snowbros_irq4_ack_w)   /* IRQ 4 acknowledge */
331   AM_RANGE(0x900000, 0x900001) AM_WRITE(snowbros_irq3_ack_w)   /* IRQ 3 acknowledge */
332   AM_RANGE(0xa00000, 0xa00001) AM_WRITE(snowbros_irq2_ack_w)   /* IRQ 2 acknowledge */
293333ADDRESS_MAP_END
294334
295static ADDRESS_MAP_START( twinadv_writemem, ADDRESS_SPACE_PROGRAM, 16 )
296   AM_RANGE(0x000000, 0x03ffff) AM_WRITE(SMH_ROM)
297   AM_RANGE(0x100000, 0x10ffff) AM_WRITE(SMH_RAM)
298   AM_RANGE(0x200000, 0x200001) AM_WRITE(watchdog_reset16_w)
299   AM_RANGE(0x300000, 0x300001) AM_WRITE(twinadv_68000_sound_w)
300   AM_RANGE(0x400000, 0x400001) AM_WRITE(snowbros_flipscreen_w)
301   AM_RANGE(0x600000, 0x6001ff) AM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE(&paletteram16)
302   AM_RANGE(0x700000, 0x701fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)
303   AM_RANGE(0x800000, 0x800001) AM_WRITENOP   /* IRQ 4 acknowledge? */
304   AM_RANGE(0x900000, 0x900001) AM_WRITENOP   /* IRQ 3 acknowledge? */
305   AM_RANGE(0xa00000, 0xa00001) AM_WRITENOP   /* IRQ 2 acknowledge? */
306ADDRESS_MAP_END
307
308
309static ADDRESS_MAP_START( twinadv_sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
310   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
311   AM_RANGE(0x8000, 0x87ff) AM_READ(SMH_RAM)
312//  AM_RANGE(0xe010, 0xe010) AM_DEVREAD("oki", okim6295_r)
313ADDRESS_MAP_END
314
315static ADDRESS_MAP_START( twinadv_sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
316   AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM)
317   AM_RANGE(0x8000, 0x87ff) AM_WRITE(SMH_RAM)
318//  AM_RANGE(0xe010, 0xe010) AM_DEVWRITE("oki", okim6295_w)
319ADDRESS_MAP_END
320
321335static WRITE8_DEVICE_HANDLER( twinadv_oki_bank_w )
322336{
323337   int bank = (data &0x02)>>1;
r4679r4680
342356
343357*/
344358
345static ADDRESS_MAP_START( hyperpac_readmem, ADDRESS_SPACE_PROGRAM, 16 )
346   AM_RANGE(0x000000, 0x0fffff) AM_READ(SMH_ROM)
347   AM_RANGE(0x100000, 0x10ffff) AM_READ(SMH_RAM)
348
359static ADDRESS_MAP_START( hyperpac_map, ADDRESS_SPACE_PROGRAM, 16 )
360   AM_RANGE(0x000000, 0x0fffff) AM_ROM
361   AM_RANGE(0x100000, 0x10ffff) AM_RAM AM_BASE(&hyperpac_ram)
362   AM_RANGE(0x300000, 0x300001) AM_WRITE(semicom_soundcmd_w)
363//  AM_RANGE(0x400000, 0x400001) ???
349364   AM_RANGE(0x500000, 0x500001) AM_READ_PORT("DSW1")
350365   AM_RANGE(0x500002, 0x500003) AM_READ_PORT("DSW2")
351366   AM_RANGE(0x500004, 0x500005) AM_READ_PORT("SYSTEM")
352367
353   AM_RANGE(0x600000, 0x6001ff) AM_READ(SMH_RAM)
354   AM_RANGE(0x700000, 0x701fff) AM_READ(pandora_spriteram_LSB_r)
368   AM_RANGE(0x600000, 0x6001ff) AM_RAM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE(&paletteram16)
369   AM_RANGE(0x700000, 0x701fff) AM_READWRITE(pandora_spriteram_LSB_r,pandora_spriteram_LSB_w)
370   AM_RANGE(0x800000, 0x800001) AM_WRITE(snowbros_irq4_ack_w)   /* IRQ 4 acknowledge */
371   AM_RANGE(0x900000, 0x900001) AM_WRITE(snowbros_irq3_ack_w)   /* IRQ 3 acknowledge */
372   AM_RANGE(0xa00000, 0xa00001) AM_WRITE(snowbros_irq2_ack_w)   /* IRQ 2 acknowledge */
355373ADDRESS_MAP_END
356374
357static ADDRESS_MAP_START( hyperpac_writemem, ADDRESS_SPACE_PROGRAM, 16 )
358   AM_RANGE(0x000000, 0x0fffff) AM_WRITE(SMH_ROM)
359   AM_RANGE(0x100000, 0x10ffff) AM_WRITE(SMH_RAM) AM_BASE(&hyperpac_ram)
360   AM_RANGE(0x300000, 0x300001) AM_WRITE(semicom_soundcmd_w)
361//  AM_RANGE(0x400000, 0x400001) ???
362   AM_RANGE(0x600000, 0x6001ff) AM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE(&paletteram16)
363   AM_RANGE(0x700000, 0x701fff) AM_WRITE(pandora_spriteram_LSB_w)
364
365   AM_RANGE(0x800000, 0x800001) AM_WRITENOP   /* IRQ 4 acknowledge? */
366   AM_RANGE(0x900000, 0x900001) AM_WRITENOP   /* IRQ 3 acknowledge? */
367   AM_RANGE(0xa00000, 0xa00001) AM_WRITENOP   /* IRQ 2 acknowledge? */
368ADDRESS_MAP_END
369
370static ADDRESS_MAP_START( hyperpac_sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
371   AM_RANGE(0x0000, 0xcfff) AM_READ(SMH_ROM)
372   AM_RANGE(0xd000, 0xd7ff) AM_READ(SMH_RAM)
373   AM_RANGE(0xf000, 0xf001) AM_DEVREAD("ym", ym2151_r)
375static ADDRESS_MAP_START( hyperpac_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
376   AM_RANGE(0x0000, 0xcfff) AM_ROM
377   AM_RANGE(0xd000, 0xd7ff) AM_RAM
378   AM_RANGE(0xf000, 0xf001) AM_DEVREADWRITE("ym", ym2151_r,ym2151_w)
379   AM_RANGE(0xf002, 0xf002) AM_DEVREADWRITE("oki",okim6295_r,okim6295_w)
374380   AM_RANGE(0xf008, 0xf008) AM_READ(soundlatch_r)
375381ADDRESS_MAP_END
376382
377static ADDRESS_MAP_START( hyperpac_sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
378   AM_RANGE(0x0000, 0xcfff) AM_WRITE(SMH_ROM)
379   AM_RANGE(0xd000, 0xd7ff) AM_WRITE(SMH_RAM)
380   AM_RANGE(0xf000, 0xf001) AM_DEVWRITE("ym", ym2151_w)
381   AM_RANGE(0xf002, 0xf002) AM_DEVWRITE("oki", okim6295_w)
382//  AM_RANGE(0xf006, 0xf006) ???
383ADDRESS_MAP_END
384
385383/* Same volume used for all samples at the Moment, could be right, we have no
386384   way of knowing .. */
387385static READ16_HANDLER( sb3_sound_r )
r4679r4680
489487
490488
491489
492static ADDRESS_MAP_START( readmem3, ADDRESS_SPACE_PROGRAM, 16 )
493   AM_RANGE( 0x000000, 0x03ffff) AM_READ(SMH_ROM)
494   AM_RANGE( 0x100000, 0x103fff) AM_READ(SMH_RAM)
490static ADDRESS_MAP_START( snowbros3_map, ADDRESS_SPACE_PROGRAM, 16 )
491   AM_RANGE( 0x000000, 0x03ffff) AM_ROM
492   AM_RANGE( 0x100000, 0x103fff) AM_RAM
493   AM_RANGE( 0x200000, 0x200001) AM_WRITE(watchdog_reset16_w)
495494   AM_RANGE( 0x300000, 0x300001) AM_READ(sb3_sound_r) // ?
495   AM_RANGE( 0x300000, 0x300001) AM_DEVWRITE("oki", sb3_sound_w)  // ?
496   AM_RANGE( 0x400000, 0x400001) AM_WRITE(snowbros_flipscreen_w)
496497   AM_RANGE( 0x500000, 0x500001) AM_READ_PORT("DSW1")
497498   AM_RANGE( 0x500002, 0x500003) AM_READ_PORT("DSW2")
498499   AM_RANGE( 0x500004, 0x500005) AM_READ_PORT("SYSTEM")
499   AM_RANGE( 0x600000, 0x6003ff) AM_READ(SMH_RAM)
500   AM_RANGE( 0x700000, 0x7021ff) AM_READ(SMH_RAM)
500   AM_RANGE( 0x600000, 0x6003ff) AM_RAM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE (&paletteram16)
501   AM_RANGE( 0x700000, 0x7021ff) AM_RAM AM_BASE( &spriteram16) AM_SIZE( &spriteram_size )
502   AM_RANGE(0x800000, 0x800001) AM_WRITE(snowbros_irq4_ack_w)   /* IRQ 4 acknowledge */
503   AM_RANGE(0x900000, 0x900001) AM_WRITE(snowbros_irq3_ack_w)   /* IRQ 3 acknowledge */
504   AM_RANGE(0xa00000, 0xa00001) AM_WRITE(snowbros_irq2_ack_w)   /* IRQ 2 acknowledge */
501505ADDRESS_MAP_END
502506
503static ADDRESS_MAP_START( writemem3, ADDRESS_SPACE_PROGRAM, 16 )
504   AM_RANGE( 0x000000, 0x03ffff) AM_WRITE(SMH_ROM)
505   AM_RANGE( 0x100000, 0x103fff) AM_WRITE(SMH_RAM)
506   AM_RANGE( 0x200000, 0x200001) AM_WRITE(watchdog_reset16_w)
507   AM_RANGE( 0x300000, 0x300001) AM_DEVWRITE("oki", sb3_sound_w)  // ?
508   AM_RANGE( 0x400000, 0x400001) AM_WRITE(snowbros_flipscreen_w)
509   AM_RANGE( 0x600000, 0x6003ff) AM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE (&paletteram16)
510   AM_RANGE( 0x700000, 0x7021ff) AM_WRITE(SMH_RAM) AM_BASE( &spriteram16) AM_SIZE( &spriteram_size )
511   AM_RANGE( 0x800000, 0x800001) AM_WRITENOP    /* IRQ 4 acknowledge? */
512   AM_RANGE( 0x900000, 0x900001) AM_WRITENOP    /* IRQ 3 acknowledge? */
513   AM_RANGE( 0xa00000, 0xa00001) AM_WRITENOP    /* IRQ 2 acknowledge? */
514ADDRESS_MAP_END
515
516507/* Final Tetris */
517508
518static ADDRESS_MAP_START( finalttr_readmem, ADDRESS_SPACE_PROGRAM, 16 )
519   AM_RANGE(0x000000, 0x0fffff) AM_READ(SMH_ROM)
520   AM_RANGE(0x100000, 0x103fff) AM_READ(SMH_RAM)
509static ADDRESS_MAP_START( finalttr_map, ADDRESS_SPACE_PROGRAM, 16 )
510   AM_RANGE(0x000000, 0x0fffff) AM_ROM
511   AM_RANGE(0x100000, 0x103fff) AM_RAM AM_BASE(&hyperpac_ram)
512   AM_RANGE(0x300000, 0x300001) AM_WRITE(semicom_soundcmd_w)
513//  AM_RANGE(0x400000, 0x400001) ???
514
521515   AM_RANGE(0x500000, 0x500001) AM_READ_PORT("DSW1")
522516   AM_RANGE(0x500002, 0x500003) AM_READ_PORT("DSW2")
523517   AM_RANGE(0x500004, 0x500005) AM_READ_PORT("SYSTEM")
524518
525   AM_RANGE(0x600000, 0x6001ff) AM_READ(SMH_RAM)
526   AM_RANGE(0x700000, 0x701fff) AM_READ(pandora_spriteram_LSB_r)
519   AM_RANGE(0x600000, 0x6001ff) AM_RAM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE(&paletteram16)
520   AM_RANGE(0x700000, 0x701fff) AM_READWRITE(pandora_spriteram_LSB_r,pandora_spriteram_LSB_w)
521   AM_RANGE(0x800000, 0x800001) AM_WRITE(snowbros_irq4_ack_w)   /* IRQ 4 acknowledge */
522   AM_RANGE(0x900000, 0x900001) AM_WRITE(snowbros_irq3_ack_w)   /* IRQ 3 acknowledge */
523   AM_RANGE(0xa00000, 0xa00001) AM_WRITE(snowbros_irq2_ack_w)   /* IRQ 2 acknowledge */
527524ADDRESS_MAP_END
528525
529static ADDRESS_MAP_START( finalttr_writemem, ADDRESS_SPACE_PROGRAM, 16 )
530   AM_RANGE(0x000000, 0x0fffff) AM_WRITE(SMH_ROM)
531   AM_RANGE(0x100000, 0x103fff) AM_WRITE(SMH_RAM) AM_BASE(&hyperpac_ram)
532   AM_RANGE(0x300000, 0x300001) AM_WRITE(semicom_soundcmd_w)
533//  AM_RANGE(0x400000, 0x400001) ???
534   AM_RANGE(0x600000, 0x6001ff) AM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE(&paletteram16)
535   AM_RANGE(0x700000, 0x701fff) AM_WRITE(pandora_spriteram_LSB_w)
536
537   AM_RANGE(0x800000, 0x800001) AM_WRITENOP   /* IRQ 4 acknowledge? */
538   AM_RANGE(0x900000, 0x900001) AM_WRITENOP   /* IRQ 3 acknowledge? */
539   AM_RANGE(0xa00000, 0xa00001) AM_WRITENOP   /* IRQ 2 acknowledge? */
540ADDRESS_MAP_END
541
542526static INPUT_PORTS_START( snowbros )
543527   PORT_START("DSW1")   /* 500001 */
544528   PORT_DIPNAME( 0x01, 0x00, DEF_STR( Region ) )
r4679r4680
14941478/* handler called by the 3812/2151 emulator when the internal timers cause an IRQ */
14951479static void irqhandler(const device_config *device, int irq)
14961480{
1497   cpu_set_input_line(device->machine->cpu[1],0,irq ? ASSERT_LINE : CLEAR_LINE);
1481   cputag_set_input_line(device->machine, "soundcpu", 0, irq ? ASSERT_LINE : CLEAR_LINE);
14981482}
14991483
15001484/* SnowBros Sound */
r4679r4680
15341518
15351519   /* basic machine hardware */
15361520   MDRV_CPU_ADD("maincpu", M68000, 8000000) /* 8 Mhz - confirmed */
1537   MDRV_CPU_PROGRAM_MAP(readmem,writemem)
1521   MDRV_CPU_PROGRAM_MAP(snowbros_map,0)
15381522   MDRV_CPU_VBLANK_INT_HACK(snowbros_interrupt,3)
15391523
15401524   MDRV_CPU_ADD("soundcpu", Z80, 6000000) /* 6 MHz - confirmed */
1541   MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem)
1525   MDRV_CPU_PROGRAM_MAP(sound_map,0)
15421526   MDRV_CPU_IO_MAP(sound_io_map,0)
15431527
15441528   /* video hardware */
r4679r4680
15691553   /* basic machine hardware */
15701554   MDRV_IMPORT_FROM(snowbros)
15711555   MDRV_CPU_REPLACE("maincpu", M68000, 10000000) /* 10mhz - Confirmed */
1572   MDRV_CPU_PROGRAM_MAP(wintbob_readmem,wintbob_writemem)
1556   MDRV_CPU_PROGRAM_MAP(wintbob_map,0)
15731557
15741558   /* video hardware */
15751559   MDRV_GFXDECODE(wb)
r4679r4680
15831567   /* basic machine hardware */
15841568   MDRV_IMPORT_FROM(snowbros)
15851569   MDRV_CPU_REPLACE("maincpu", M68000, 16000000) /* 16mhz or 12mhz ? */
1586   MDRV_CPU_PROGRAM_MAP(hyperpac_readmem,hyperpac_writemem)
1570   MDRV_CPU_PROGRAM_MAP(hyperpac_map,0)
15871571
15881572   MDRV_CPU_REPLACE("soundcpu", Z80, 4000000) /* 4.0 MHz ??? */
1589   MDRV_CPU_PROGRAM_MAP(hyperpac_sound_readmem,hyperpac_sound_writemem)
1573   MDRV_CPU_PROGRAM_MAP(hyperpac_sound_map,0)
15901574
15911575   MDRV_GFXDECODE(hyperpac)
15921576
r4679r4680
16011585   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
16021586MACHINE_DRIVER_END
16031587
1588
1589
1590static MACHINE_DRIVER_START( semicom_mcu )
1591
1592   /* basic machine hardware */
1593   MDRV_IMPORT_FROM(semicom)
1594
1595   MDRV_CPU_ADD("protection", I8052, 16000000)  // AT89C52
1596   MDRV_CPU_PROGRAM_MAP(protection_map,0)
1597   MDRV_CPU_IO_MAP(protection_iomap,0)
1598MACHINE_DRIVER_END
1599
1600
16041601static MACHINE_DRIVER_START( semiprot )
16051602   MDRV_IMPORT_FROM(semicom)
16061603   MDRV_MACHINE_RESET ( semiprot )
r4679r4680
16301627
16311628   /* basic machine hardware */
16321629   MDRV_CPU_ADD("maincpu", M68000, 16000000)
1633   MDRV_CPU_PROGRAM_MAP(honeydol_readmem,honeydol_writemem)
1630   MDRV_CPU_PROGRAM_MAP(honeydol_map,0)
16341631   MDRV_CPU_VBLANK_INT_HACK(snowbros_interrupt,3)
16351632
16361633   MDRV_CPU_ADD("soundcpu", Z80, 4000000)
1637   MDRV_CPU_PROGRAM_MAP(honeydol_sound_readmem,honeydol_sound_writemem)
1634   MDRV_CPU_PROGRAM_MAP(honeydol_sound_map,0)
16381635   MDRV_CPU_IO_MAP(honeydol_sound_io_map,0)
16391636
16401637   /* video hardware */
r4679r4680
16691666
16701667   /* basic machine hardware */
16711668   MDRV_CPU_ADD("maincpu", M68000, 16000000) // or 12
1672   MDRV_CPU_PROGRAM_MAP(twinadv_readmem,twinadv_writemem)
1669   MDRV_CPU_PROGRAM_MAP(twinadv_map,0)
16731670   MDRV_CPU_VBLANK_INT_HACK(snowbros_interrupt,3)
16741671
16751672   MDRV_CPU_ADD("soundcpu", Z80, 4000000)
1676   MDRV_CPU_PROGRAM_MAP(twinadv_sound_readmem,twinadv_sound_writemem)
1673   MDRV_CPU_PROGRAM_MAP(sound_map,0)
16771674   MDRV_CPU_IO_MAP(twinadv_sound_io_map,0)
16781675   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
16791676
r4679r4680
17221719   MDRV_IMPORT_FROM(semicom)
17231720
17241721   MDRV_CPU_REPLACE("maincpu", M68000, 12000000)
1725   MDRV_CPU_PROGRAM_MAP(finalttr_readmem,finalttr_writemem)
1722   MDRV_CPU_PROGRAM_MAP(finalttr_map,0)
17261723
17271724   MDRV_CPU_REPLACE("soundcpu", Z80, 3578545)
17281725
r4679r4680
17491746
17501747   /* basic machine hardware */
17511748   MDRV_CPU_ADD("maincpu", M68000, 16000000) /* 16mhz or 12mhz ? */
1752   MDRV_CPU_PROGRAM_MAP(readmem3,writemem3)
1749   MDRV_CPU_PROGRAM_MAP(snowbros3_map,0)
17531750   MDRV_CPU_VBLANK_INT_HACK(snowbro3_interrupt,3)
17541751
17551752   /* video hardware */
r4679r4680
20021999   ROM_REGION( 0x10000, "soundcpu", 0 ) /* Z80 Code */
20032000   ROM_LOAD( "hyperpac.u1", 0x00000, 0x10000 , CRC(03faf88e) SHA1(a8da883d4b765b809452bbffca37ff224edbe86d) )
20042001
2005   ROM_REGION( 0x10000, "cpu2", 0 ) /* Intel 87C52 MCU Code */
2006   ROM_LOAD( "87c52.mcu", 0x00000, 0x10000 , NO_DUMP ) /* can't be dumped */
2002   ROM_REGION( 0x10000, "protection", 0 ) /* Intel 87C52 MCU Code */
2003   ROM_LOAD( "at89c52.bin", 0x00000, 0x2000 , CRC(291f9326) SHA1(e440ce7d92188faa86e02e7f9db4ec6bce21efd3) ) /* decapped */
20072004
20082005   ROM_REGION( 0x040000, "oki", 0 ) /* Samples */
20092006   ROM_LOAD( "hyperpac.j15", 0x00000, 0x40000, CRC(fb9f468d) SHA1(52857b1a04c64ac853340ebb8e92d98eabea8bc1) )
r4679r4680
23012298//      hyperpac_ram[0xf000/2 + i] = PROTDATA[i];
23022299
23032300   /* explicit check in the code */
2304   memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x200000, 0x200001, 0, 0, moremorp_0a_read );
2301   memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x200000, 0x200001, 0, 0, moremorp_0a_read );
23052302}
23062303
23072304
r4679r4680
26472644#endif
26482645}
26492646
2650
2647// protection simulation no longer used
2648#if 0
26512649static DRIVER_INIT( hyperpac )
26522650{
26532651   /* simulate RAM initialization done by the protection MCU */
r4679r4680
26612659   hyperpac_ram[0xe084/2] = 0x7654;
26622660   hyperpac_ram[0xe086/2] = 0x3210;
26632661}
2662#endif
26642663
26652664static READ16_HANDLER ( _4in1_02_read )
26662665{
r4679r4680
26742673   int len = memory_region_length(machine, "maincpu");
26752674
26762675   /* strange order */
2677   buffer = malloc_or_die(len);
2676   buffer = alloc_array_or_die(UINT8, len);
26782677   {
26792678      int i;
26802679      for (i = 0;i < len; i++)
r4679r4680
26892688   len = memory_region_length(machine, "soundcpu");
26902689
26912690   /* strange order */
2692   buffer = malloc_or_die(len);
2691   buffer = alloc_array_or_die(UINT8, len);
26932692   {
26942693      int i;
26952694      for (i = 0;i < len; i++)
r4679r4680
26972696      memcpy(src,buffer,len);
26982697      free(buffer);
26992698   }
2700   memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x200000, 0x200001, 0, 0, _4in1_02_read );
2699   memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x200000, 0x200001, 0, 0, _4in1_02_read );
27012700}
27022701
27032702static DRIVER_INIT(snowbro3)
r4679r4680
27072706   int len = memory_region_length(machine, "maincpu");
27082707
27092708   /* strange order */
2710   buffer = malloc_or_die(len);
2709   buffer = alloc_array_or_die(UINT8, len);
27112710   {
27122711      int i;
27132712      for (i = 0;i < len; i++)
r4679r4680
27242723
27252724static DRIVER_INIT( 3in1semi )
27262725{
2727   memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x200000, 0x200001, 0, 0, _3in1_read );
2726   memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x200000, 0x200001, 0, 0, _3in1_read );
27282727}
27292728
27302729static READ16_HANDLER( cookbib3_read )
r4679r4680
27342733
27352734static DRIVER_INIT( cookbib3 )
27362735{
2737   memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x200000, 0x200001, 0, 0, cookbib3_read );
2736   memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x200000, 0x200001, 0, 0, cookbib3_read );
27382737}
27392738
27402739
r4679r4680
27492748GAME( 1995, honeydol, 0,        honeydol, honeydol, 0, ROT0, "Barko Corp.", "Honey Dolls", 0 ) // based on snowbros code..
27502749GAME( 1995, twinadv,  0,        twinadv,  twinadv,  0, ROT0, "Barko Corp.", "Twin Adventure (World)", 0 )
27512750GAME( 1995, twinadvk, twinadv,  twinadv,  twinadv,  0, ROT0, "Barko Corp.", "Twin Adventure (Korea)", 0 )
2752GAME( 1995, hyperpac, 0,        semicom,  hyperpac, hyperpac, ROT0, "SemiCom", "Hyper Pacman", 0 )
2751GAME( 1995, hyperpac, 0,        semicom_mcu,  hyperpac, 0, ROT0, "SemiCom", "Hyper Pacman", 0 )
27532752GAME( 1995, hyperpcb, hyperpac, semicom,  hyperpac, 0,        ROT0, "bootleg", "Hyper Pacman (bootleg)", 0 )
27542753GAME( 1996, cookbib2, 0,        semiprot, cookbib2, cookbib2, ROT0, "SemiCom", "Cookie & Bibi 2", 0 )
27552754GAME( 1996, toppyrap, 0,        semiprot, toppyrap, 0,        ROT0, "SemiCom", "Toppy & Rappy", 0 )
r4679r4680
27612760GAME( 2002, 4in1boot, 0,        _4in1,    4in1boot, 4in1boot, ROT0, "K1 Soft", "Puzzle King (includes bootleg of Snow Bros.)" , 0)
27622761GAME( 2002, snowbro3, snowbros, snowbro3, snowbroj, snowbro3, ROT0, "Syrmex (bootleg/hack)", "Snow Brothers 3 - Magical Adventure", GAME_IMPERFECT_SOUND ) // its basically snowbros code?...
27632762GAME( 1993, finalttr, 0,        finalttr, finalttr, 0,        ROT0, "Jeil Computer System", "Final Tetris", 0 )
2764
2765
src/mame/drivers/bzone.c
r4679r4680
264264
265265static CUSTOM_INPUT( clock_r )
266266{
267   return (cpu_get_total_cycles(field->port->machine->cpu[0]) & 0x100) ? 1 : 0;
267   return (cputag_get_total_cycles(field->port->machine, "maincpu") & 0x100) ? 1 : 0;
268268}
269269
270270
r4679r4680
787787
788788static DRIVER_INIT( bradley )
789789{
790   memory_install_readwrite8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x400, 0x7ff, 0, 0, SMH_BANK1, SMH_BANK1);
791   memory_set_bankptr(machine, 1, auto_malloc(0x400));
790   memory_install_readwrite8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x400, 0x7ff, 0, 0, (read8_space_func)SMH_BANK(1), (write8_space_func)SMH_BANK(1));
791   memory_set_bankptr(machine, 1, auto_alloc_array(machine, UINT8, 0x400));
792792
793   memory_install_read_port_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1808, 0x1808, 0, 0, "1808");
794   memory_install_read_port_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1809, 0x1809, 0, 0, "1809");
795   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x180a, 0x180a, 0, 0, analog_data_r);
796   memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1848, 0x1850, 0, 0, analog_select_w);
793   memory_install_read_port_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1808, 0x1808, 0, 0, "1808");
794   memory_install_read_port_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1809, 0x1809, 0, 0, "1809");
795   memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x180a, 0x180a, 0, 0, analog_data_r);
796   memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1848, 0x1850, 0, 0, analog_select_w);
797797}
798798
799799
src/mame/drivers/mhavoc.c
r4679r4680
319319static CUSTOM_INPUT( clock_r )
320320{
321321   /* 2.4kHz (divide 2.5MHz by 1024) */
322   return (cpu_get_total_cycles(field->port->machine->cpu[0]) & 0x400) ? 0 : 1;
322   return (cputag_get_total_cycles(field->port->machine, "alpha") & 0x400) ? 0 : 1;
323323}
324324
325325
src/mame/drivers/segaxbd.c
r4679r4680
303303   if (timer_irq_state)
304304      irq |= 2;
305305   else
306      cpu_set_input_line(machine->cpu[0], 2, CLEAR_LINE);
306      cputag_set_input_line(machine, "maincpu", 2, CLEAR_LINE);
307307
308308   if (vblank_irq_state)
309309      irq |= 4;
310310   else
311      cpu_set_input_line(machine->cpu[0], 4, CLEAR_LINE);
311      cputag_set_input_line(machine, "maincpu", 4, CLEAR_LINE);
312312
313313   if (gprider_hack && irq > 4)
314314      irq = 4;
315315
316316   if (!(irq==6))
317      cpu_set_input_line(machine->cpu[0], 6, CLEAR_LINE);
317      cputag_set_input_line(machine, "maincpu", 6, CLEAR_LINE);
318318
319319   if (irq)
320320   {
321      cpu_set_input_line(machine->cpu[0], irq, ASSERT_LINE);
321      cputag_set_input_line(machine, "maincpu", irq, ASSERT_LINE);
322322      cpuexec_boost_interleave(machine, attotime_zero, ATTOTIME_IN_USEC(100));
323323   }
324324}
r4679r4680
338338   if (scanline == 223)
339339   {
340340      vblank_irq_state = update = 1;
341      cpu_set_input_line(machine->cpu[1], 4, ASSERT_LINE);
341      cputag_set_input_line(machine, "sub", 4, ASSERT_LINE);
342342      next_scanline = scanline + 1;
343343   }
344344
r4679r4680
347347   {
348348      vblank_irq_state = 0;
349349      update = 1;
350      cpu_set_input_line(machine->cpu[1], 4, CLEAR_LINE);
350      cputag_set_input_line(machine, "sub", 4, CLEAR_LINE);
351351      next_scanline = scanline + 1;
352352   }
353353
r4679r4680
377377
378378static TIMER_CALLBACK( delayed_sound_data_w )
379379{
380   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
380   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
381381
382382   soundlatch_w(space, 0, param);
383   cpu_set_input_line(machine->cpu[2], INPUT_LINE_NMI, ASSERT_LINE);
383   cputag_set_input_line(machine, "soundcpu", INPUT_LINE_NMI, ASSERT_LINE);
384384}
385385
386386
r4679r4680
392392
393393static void sound_cpu_irq(const device_config *device, int state)
394394{
395   cpu_set_input_line(device->machine->cpu[2], 0, state);
395   cputag_set_input_line(device->machine, "soundcpu", 0, state);
396396}
397397
398398
399399static READ8_HANDLER( sound_data_r )
400400{
401   cpu_set_input_line(space->machine->cpu[2], INPUT_LINE_NMI, CLEAR_LINE);
401   cputag_set_input_line(space->machine, "soundcpu", INPUT_LINE_NMI, CLEAR_LINE);
402402   return soundlatch_r(space, offset);
403403}
404404
r4679r4680
412412
413413static void xboard_reset(const device_config *device)
414414{
415   cpu_set_input_line(device->machine->cpu[1], INPUT_LINE_RESET, PULSE_LINE);
415   cputag_set_input_line(device->machine, "sub", INPUT_LINE_RESET, PULSE_LINE);
416416   cpuexec_boost_interleave(device->machine, attotime_zero, ATTOTIME_IN_USEC(100));
417417}
418418
419419
420420static MACHINE_RESET( xboard )
421421{
422   fd1094_machine_init(machine->cpu[0]);
422   fd1094_machine_init(cputag_get_cpu(machine, "maincpu"));
423423   segaic16_tilemap_reset(machine, 0);
424424
425425   /* hook the RESET line, which resets CPU #1 */
426   device_set_info_fct(machine->cpu[0], CPUINFO_FCT_M68K_RESET_CALLBACK, (genf *)xboard_reset);
426   m68k_set_reset_callback(cputag_get_cpu(machine, "maincpu"), xboard_reset);
427427
428428   /* set up the compare/timer chip */
429429   segaic16_compare_timer_init(0, sound_data_w, timer_ack_callback);
r4679r4680
559559            */
560560         if (((oldval ^ data) & 0x40) && !(data & 0x40)) watchdog_reset_w(space,0,0);
561561         segaic16_set_display_enable(space->machine, data & 0x20);
562         cpu_set_input_line(space->machine->cpu[2], INPUT_LINE_RESET, (data & 0x01) ? CLEAR_LINE : ASSERT_LINE);
562         cputag_set_input_line(space->machine, "soundcpu", INPUT_LINE_RESET, (data & 0x01) ? CLEAR_LINE : ASSERT_LINE);
563563         return;
564564
565565      case 3:
r4679r4680
28112811   xboard_generic_init(machine);
28122812   xboard_set_road_priority(0);
28132813
2814   memory_install_write16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x140006, 0x140007, 0, 0x00fff0, aburner2_iochip_0_D_w);
2814   memory_install_write16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x140006, 0x140007, 0, 0x00fff0, aburner2_iochip_0_D_w);
28152815}
28162816
28172817
r4679r4680
28282828   adc_reverse[1] = adc_reverse[3] = 1;
28292829
28302830   /* install extra synchronization on core shared memory */
2831   loffire_sync = memory_install_write16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x29c000, 0x29c011, 0, 0, loffire_sync0_w);
2831   loffire_sync = memory_install_write16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x29c000, 0x29c011, 0, 0, loffire_sync0_w);
28322832}
28332833
28342834
28352835static DRIVER_INIT( smgp )
28362836{
28372837   xboard_generic_init(machine);
2838   memory_install_readwrite16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x2f0000, 0x2f3fff, 0, 0, smgp_excs_r, smgp_excs_w);
2838   memory_install_readwrite16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x2f0000, 0x2f3fff, 0, 0, smgp_excs_r, smgp_excs_w);
28392839}
28402840
28412841
src/mame/drivers/nbmj9195.c
r4679r4680
471471
472472static void ctc0_interrupt(const device_config *device, int state)
473473{
474   cpu_set_input_line(device->machine->cpu[0], 0, state);
474   cputag_set_input_line(device->machine, "maincpu", 0, state);
475475}
476476
477477static void ctc1_interrupt(const device_config *device, int state)
478478{
479   cpu_set_input_line(device->machine->cpu[1], 0, state);
479   cputag_set_input_line(device->machine, "audiocpu", 0, state);
480480}
481481
482482/* CTC of main cpu, ch0 trigger is vblank */
r4679r4680
507507
508508static MACHINE_RESET( sailorws )
509509{
510   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
510   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
511511   int i;
512512
513513   // initialize TMPZ84C011 PIO
r4679r4680
520520
521521static DRIVER_INIT( nbmj9195 )
522522{
523   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
523   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
524524   UINT8 *ROM = memory_region(machine, "audiocpu");
525525
526526   // sound program patch
r4679r4680
530530   nbmj9195_soundbank_w(space, 0, 0);
531531}
532532
533#define TMPZ84C011_REGS \
534   AM_RANGE(0x10, 0x13) AM_DEVREADWRITE("main_ctc", z80ctc_r,z80ctc_w) \
535   AM_RANGE(0x50, 0x50) AM_READWRITE(tmpz84c011_0_pa_r,tmpz84c011_0_pa_w) \
536   AM_RANGE(0x51, 0x51) AM_READWRITE(tmpz84c011_0_pb_r,tmpz84c011_0_pb_w) \
537   AM_RANGE(0x52, 0x52) AM_READWRITE(tmpz84c011_0_pc_r,tmpz84c011_0_pc_w) \
538   AM_RANGE(0x30, 0x30) AM_READWRITE(tmpz84c011_0_pd_r,tmpz84c011_0_pd_w) \
539   AM_RANGE(0x40, 0x40) AM_READWRITE(tmpz84c011_0_pe_r,tmpz84c011_0_pe_w) \
540   AM_RANGE(0x54, 0x54) AM_READWRITE(tmpz84c011_0_dir_pa_r,tmpz84c011_0_dir_pa_w) \
541   AM_RANGE(0x55, 0x55) AM_READWRITE(tmpz84c011_0_dir_pb_r,tmpz84c011_0_dir_pb_w) \
542   AM_RANGE(0x56, 0x56) AM_READWRITE(tmpz84c011_0_dir_pc_r,tmpz84c011_0_dir_pc_w) \
543   AM_RANGE(0x34, 0x34) AM_READWRITE(tmpz84c011_0_dir_pd_r,tmpz84c011_0_dir_pd_w) \
544   AM_RANGE(0x44, 0x44) AM_READWRITE(tmpz84c011_0_dir_pe_r,tmpz84c011_0_dir_pe_w) \
533545
534static ADDRESS_MAP_START( readmem_sailorws, ADDRESS_SPACE_PROGRAM, 8 )
535   AM_RANGE(0x0000, 0xefff) AM_READ(SMH_ROM)
536   AM_RANGE(0xf000, 0xf1ff) AM_READ(nbmj9195_palette_r)
537   AM_RANGE(0xf800, 0xffff) AM_READ(SMH_RAM)
538ADDRESS_MAP_END
539546
540static ADDRESS_MAP_START( writemem_sailorws, ADDRESS_SPACE_PROGRAM, 8 )
541   AM_RANGE(0x0000, 0xefff) AM_WRITE(SMH_ROM)
542   AM_RANGE(0xf000, 0xf1ff) AM_WRITE(nbmj9195_palette_w)
543   AM_RANGE(0xf800, 0xffff) AM_WRITE(SMH_RAM) AM_BASE(&nbmj9195_nvram) AM_SIZE(&nbmj9195_nvram_size)
547static ADDRESS_MAP_START( sailorws_map, ADDRESS_SPACE_PROGRAM, 8 )
548   AM_RANGE(0x0000, 0xefff) AM_ROM
549   AM_RANGE(0xf000, 0xf1ff) AM_READWRITE(nbmj9195_palette_r,nbmj9195_palette_w)
550   AM_RANGE(0xf800, 0xffff) AM_RAM AM_BASE(&nbmj9195_nvram) AM_SIZE(&nbmj9195_nvram_size)
544551ADDRESS_MAP_END
545552
546static ADDRESS_MAP_START( readmem_mjuraden, ADDRESS_SPACE_PROGRAM, 8 )
547   AM_RANGE(0x0000, 0xefff) AM_READ(SMH_ROM)
548   AM_RANGE(0xf200, 0xf3ff) AM_READ(nbmj9195_palette_r)
549   AM_RANGE(0xf800, 0xffff) AM_READ(SMH_RAM)
553static ADDRESS_MAP_START( mjuraden_map, ADDRESS_SPACE_PROGRAM, 8 )
554   AM_RANGE(0x0000, 0xefff) AM_ROM
555   AM_RANGE(0xf200, 0xf3ff) AM_READWRITE(nbmj9195_palette_r,nbmj9195_palette_w)
556   AM_RANGE(0xf800, 0xffff) AM_RAM
550557ADDRESS_MAP_END
551558
552static ADDRESS_MAP_START( writemem_mjuraden, ADDRESS_SPACE_PROGRAM, 8 )
553   AM_RANGE(0x0000, 0xefff) AM_WRITE(SMH_ROM)
554   AM_RANGE(0xf200, 0xf3ff) AM_WRITE(nbmj9195_palette_w)
555   AM_RANGE(0xf800, 0xffff) AM_WRITE(SMH_RAM)
559static ADDRESS_MAP_START( koinomp_map, ADDRESS_SPACE_PROGRAM, 8 )
560   AM_RANGE(0x0000, 0xdfff) AM_ROM
561   AM_RANGE(0xe000, 0xe1ff) AM_READWRITE(nbmj9195_palette_r,nbmj9195_palette_w)
562   AM_RANGE(0xe800, 0xefff) AM_RAM AM_BASE(&nbmj9195_nvram) AM_SIZE(&nbmj9195_nvram_size)
556563ADDRESS_MAP_END
557564
558static ADDRESS_MAP_START( readmem_koinomp, ADDRESS_SPACE_PROGRAM, 8 )
559   AM_RANGE(0x0000, 0xdfff) AM_READ(SMH_ROM)
560   AM_RANGE(0xe000, 0xe1ff) AM_READ(nbmj9195_palette_r)
561   AM_RANGE(0xe800, 0xefff) AM_READ(SMH_RAM)
565static ADDRESS_MAP_START( ngpgal_map, ADDRESS_SPACE_PROGRAM, 8 )
566   AM_RANGE(0x0000, 0xcfff) AM_ROM
567   AM_RANGE(0xd000, 0xd1ff) AM_READWRITE(nbmj9195_palette_r,nbmj9195_palette_w)
568   AM_RANGE(0xd800, 0xdfff) AM_RAM
562569ADDRESS_MAP_END
563570
564static ADDRESS_MAP_START( writemem_koinomp, ADDRESS_SPACE_PROGRAM, 8 )
565   AM_RANGE(0x0000, 0xdfff) AM_WRITE(SMH_ROM)
566   AM_RANGE(0xe000, 0xe1ff) AM_WRITE(nbmj9195_palette_w)
567   AM_RANGE(0xe800, 0xefff) AM_WRITE(SMH_RAM) AM_BASE(&nbmj9195_nvram) AM_SIZE(&nbmj9195_nvram_size)
571static ADDRESS_MAP_START( mscoutm_map, ADDRESS_SPACE_PROGRAM, 8 )
572   AM_RANGE(0x0000, 0xdfff) AM_ROM
573   AM_RANGE(0xe000, 0xe5ff) AM_RAM
574   AM_RANGE(0xe600, 0xebff) AM_READWRITE(nbmj9195_nb22090_palette_r,nbmj9195_nb22090_palette_w)
575   AM_RANGE(0xec00, 0xf1ff) AM_RAM
576   AM_RANGE(0xf200, 0xffff) AM_RAM
568577ADDRESS_MAP_END
569578
570static ADDRESS_MAP_START( readmem_ngpgal, ADDRESS_SPACE_PROGRAM, 8 )
571   AM_RANGE(0x0000, 0xcfff) AM_READ(SMH_ROM)
572   AM_RANGE(0xd000, 0xd1ff) AM_READ(nbmj9195_palette_r)
573   AM_RANGE(0xd800, 0xdfff) AM_READ(SMH_RAM)
579static ADDRESS_MAP_START( mjegolf_map, ADDRESS_SPACE_PROGRAM, 8 )
580   AM_RANGE(0x0000, 0xdfff) AM_ROM
581   AM_RANGE(0xe000, 0xe5ff) AM_READWRITE(nbmj9195_nb22090_palette_r,nbmj9195_nb22090_palette_w)
582   AM_RANGE(0xe600, 0xebff) AM_RAM
583   AM_RANGE(0xec00, 0xf1ff) AM_RAM
584   AM_RANGE(0xf200, 0xffff) AM_RAM
574585ADDRESS_MAP_END
575586
576static ADDRESS_MAP_START( writemem_ngpgal, ADDRESS_SPACE_PROGRAM, 8 )
577   AM_RANGE(0x0000, 0xcfff) AM_WRITE(SMH_ROM)
578   AM_RANGE(0xd000, 0xd1ff) AM_WRITE(nbmj9195_palette_w)
579   AM_RANGE(0xd800, 0xdfff) AM_WRITE(SMH_RAM)
580ADDRESS_MAP_END
581
582static ADDRESS_MAP_START( readmem_mscoutm, ADDRESS_SPACE_PROGRAM, 8 )
583   AM_RANGE(0x0000, 0xdfff) AM_READ(SMH_ROM)
584   AM_RANGE(0xe000, 0xe5ff) AM_READ(SMH_RAM)
585   AM_RANGE(0xe600, 0xebff) AM_READ(nbmj9195_nb22090_palette_r)
586   AM_RANGE(0xec00, 0xf1ff) AM_READ(SMH_RAM)
587   AM_RANGE(0xf200, 0xffff) AM_READ(SMH_RAM)
588ADDRESS_MAP_END
589
590static ADDRESS_MAP_START( writemem_mscoutm, ADDRESS_SPACE_PROGRAM, 8 )
591   AM_RANGE(0x0000, 0xdfff) AM_WRITE(SMH_ROM)
592   AM_RANGE(0xe000, 0xe5ff) AM_WRITE(SMH_RAM)
593   AM_RANGE(0xe600, 0xebff) AM_WRITE(nbmj9195_nb22090_palette_w)
594   AM_RANGE(0xec00, 0xf1ff) AM_WRITE(SMH_RAM)
595   AM_RANGE(0xf200, 0xffff) AM_WRITE(SMH_RAM)
596ADDRESS_MAP_END
597
598static ADDRESS_MAP_START( readmem_mjegolf, ADDRESS_SPACE_PROGRAM, 8 )
599   AM_RANGE(0x0000, 0xdfff) AM_READ(SMH_ROM)
600   AM_RANGE(0xe000, 0xe5ff) AM_READ(nbmj9195_nb22090_palette_r)
601   AM_RANGE(0xe600, 0xebff) AM_READ(SMH_RAM)
602   AM_RANGE(0xec00, 0xf1ff) AM_READ(SMH_RAM)
603   AM_RANGE(0xf200, 0xffff) AM_READ(SMH_RAM)
604ADDRESS_MAP_END
605
606static ADDRESS_MAP_START( writemem_mjegolf, ADDRESS_SPACE_PROGRAM, 8 )
607   AM_RANGE(0x0000, 0xdfff) AM_WRITE(SMH_ROM)
608   AM_RANGE(0xe000, 0xe5ff) AM_WRITE(nbmj9195_nb22090_palette_w)
609   AM_RANGE(0xe600, 0xebff) AM_WRITE(SMH_RAM)
610   AM_RANGE(0xec00, 0xf1ff) AM_WRITE(SMH_RAM)
611   AM_RANGE(0xf200, 0xffff) AM_WRITE(SMH_RAM)
612ADDRESS_MAP_END
613
614static ADDRESS_MAP_START( sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
615   AM_RANGE(0x0000, 0x77ff) AM_READ(SMH_ROM)
616   AM_RANGE(0x7800, 0x7fff) AM_READ(SMH_RAM)
617   AM_RANGE(0x8000, 0xffff) AM_READ(SMH_BANK1)
618ADDRESS_MAP_END
619
620static ADDRESS_MAP_START( sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
621   AM_RANGE(0x0000, 0x77ff) AM_WRITE(SMH_ROM)
622   AM_RANGE(0x7800, 0x7fff) AM_WRITE(SMH_RAM)
623ADDRESS_MAP_END
624
625
626static ADDRESS_MAP_START( readport_mjuraden, ADDRESS_SPACE_IO, 8 )
587static ADDRESS_MAP_START( mjuraden_io_map, ADDRESS_SPACE_IO, 8 )
627588   ADDRESS_MAP_GLOBAL_MASK(0xff)
628   AM_RANGE(0x10, 0x13) AM_DEVREAD("main_ctc", z80ctc_r)
629   AM_RANGE(0x50, 0x50) AM_READ(tmpz84c011_0_pa_r)
630   AM_RANGE(0x51, 0x51) AM_READ(tmpz84c011_0_pb_r)
631   AM_RANGE(0x52, 0x52) AM_READ(tmpz84c011_0_pc_r)
632   AM_RANGE(0x30, 0x30) AM_READ(tmpz84c011_0_pd_r)
633   AM_RANGE(0x40, 0x40) AM_READ(tmpz84c011_0_pe_r)
634   AM_RANGE(0x54, 0x54) AM_READ(tmpz84c011_0_dir_pa_r)
635   AM_RANGE(0x55, 0x55) AM_READ(tmpz84c011_0_dir_pb_r)
636   AM_RANGE(0x56, 0x56) AM_READ(tmpz84c011_0_dir_pc_r)
637   AM_RANGE(0x34, 0x34) AM_READ(tmpz84c011_0_dir_pd_r)
638   AM_RANGE(0x44, 0x44) AM_READ(tmpz84c011_0_dir_pe_r)
589   TMPZ84C011_REGS
639590
640591   AM_RANGE(0x80, 0x81) AM_READ(nbmj9195_blitter_0_r)
641ADDRESS_MAP_END
642
643static ADDRESS_MAP_START( writeport_mjuraden, ADDRESS_SPACE_IO, 8 )
644   ADDRESS_MAP_GLOBAL_MASK(0xff)
645   AM_RANGE(0x10, 0x13) AM_DEVWRITE("main_ctc", z80ctc_w)
646   AM_RANGE(0x50, 0x50) AM_WRITE(tmpz84c011_0_pa_w)
647   AM_RANGE(0x51, 0x51) AM_WRITE(tmpz84c011_0_pb_w)
648   AM_RANGE(0x52, 0x52) AM_WRITE(tmpz84c011_0_pc_w)
649   AM_RANGE(0x30, 0x30) AM_WRITE(tmpz84c011_0_pd_w)
650   AM_RANGE(0x40, 0x40) AM_WRITE(tmpz84c011_0_pe_w)
651   AM_RANGE(0x54, 0x54) AM_WRITE(tmpz84c011_0_dir_pa_w)
652   AM_RANGE(0x55, 0x55) AM_WRITE(tmpz84c011_0_dir_pb_w)
653   AM_RANGE(0x56, 0x56) AM_WRITE(tmpz84c011_0_dir_pc_w)
654   AM_RANGE(0x34, 0x34) AM_WRITE(tmpz84c011_0_dir_pd_w)
655   AM_RANGE(0x44, 0x44) AM_WRITE(tmpz84c011_0_dir_pe_w)
656
592   AM_RANGE(0x80, 0x8f) AM_WRITE(nbmj9195_blitter_0_w)
657593   AM_RANGE(0x90, 0x9f) AM_WRITE(nbmj9195_clut_0_w)
658594
659   AM_RANGE(0x80, 0x8f) AM_WRITE(nbmj9195_blitter_0_w)
660
661595   AM_RANGE(0xb0, 0xb0) AM_WRITE(nbmj9195_sound_w)
662596   AM_RANGE(0xb2, 0xb2) AM_WRITENOP
663597   AM_RANGE(0xb4, 0xb4) AM_WRITENOP
r4679r4680
665599ADDRESS_MAP_END
666600
667601
668static ADDRESS_MAP_START( readport_koinomp, ADDRESS_SPACE_IO, 8 )
602static ADDRESS_MAP_START( koinomp_io_map, ADDRESS_SPACE_IO, 8 )
669603   ADDRESS_MAP_GLOBAL_MASK(0xff)
670   AM_RANGE(0x10, 0x13) AM_DEVREAD("main_ctc", z80ctc_r)
671   AM_RANGE(0x50, 0x50) AM_READ(tmpz84c011_0_pa_r)
672   AM_RANGE(0x51, 0x51) AM_READ(tmpz84c011_0_pb_r)
673   AM_RANGE(0x52, 0x52) AM_READ(tmpz84c011_0_pc_r)
674   AM_RANGE(0x30, 0x30) AM_READ(tmpz84c011_0_pd_r)
675   AM_RANGE(0x40, 0x40) AM_READ(tmpz84c011_0_pe_r)
676   AM_RANGE(0x54, 0x54) AM_READ(tmpz84c011_0_dir_pa_r)
677   AM_RANGE(0x55, 0x55) AM_READ(tmpz84c011_0_dir_pb_r)
678   AM_RANGE(0x56, 0x56) AM_READ(tmpz84c011_0_dir_pc_r)
679   AM_RANGE(0x34, 0x34) AM_READ(tmpz84c011_0_dir_pd_r)
680   AM_RANGE(0x44, 0x44) AM_READ(tmpz84c011_0_dir_pe_r)
604   TMPZ84C011_REGS
681605
682606   AM_RANGE(0x80, 0x81) AM_READ(nbmj9195_blitter_0_r)
683   AM_RANGE(0xa0, 0xa1) AM_READ(nbmj9195_blitter_1_r)
684ADDRESS_MAP_END
685
686static ADDRESS_MAP_START( writeport_koinomp, ADDRESS_SPACE_IO, 8 )
687   ADDRESS_MAP_GLOBAL_MASK(0xff)
688   AM_RANGE(0x10, 0x13) AM_DEVWRITE("main_ctc", z80ctc_w)
689   AM_RANGE(0x50, 0x50) AM_WRITE(tmpz84c011_0_pa_w)
690   AM_RANGE(0x51, 0x51) AM_WRITE(tmpz84c011_0_pb_w)
691   AM_RANGE(0x52, 0x52) AM_WRITE(tmpz84c011_0_pc_w)
692   AM_RANGE(0x30, 0x30) AM_WRITE(tmpz84c011_0_pd_w)
693   AM_RANGE(0x40, 0x40) AM_WRITE(tmpz84c011_0_pe_w)
694   AM_RANGE(0x54, 0x54) AM_WRITE(tmpz84c011_0_dir_pa_w)
695   AM_RANGE(0x55, 0x55) AM_WRITE(tmpz84c011_0_dir_pb_w)
696   AM_RANGE(0x56, 0x56) AM_WRITE(tmpz84c011_0_dir_pc_w)
697   AM_RANGE(0x34, 0x34) AM_WRITE(tmpz84c011_0_dir_pd_w)
698   AM_RANGE(0x44, 0x44) AM_WRITE(tmpz84c011_0_dir_pe_w)
699
607   AM_RANGE(0x80, 0x8f) AM_WRITE(nbmj9195_blitter_0_w)
700608   AM_RANGE(0x90, 0x9f) AM_WRITE(nbmj9195_clut_0_w)
701   AM_RANGE(0xb0, 0xbf) AM_WRITE(nbmj9195_clut_1_w)
702609
703   AM_RANGE(0x80, 0x8f) AM_WRITE(nbmj9195_blitter_0_w)
610   AM_RANGE(0xa0, 0xa1) AM_READ(nbmj9195_blitter_1_r)
704611   AM_RANGE(0xa0, 0xaf) AM_WRITE(nbmj9195_blitter_1_w)
612   AM_RANGE(0xb0, 0xbf) AM_WRITE(nbmj9195_clut_1_w)
705613
706614   AM_RANGE(0xc0, 0xc0) AM_WRITE(nbmj9195_sound_w)
707615   AM_RANGE(0xc2, 0xc2) AM_WRITENOP
r4679r4680
711619ADDRESS_MAP_END
712620
713621
714static ADDRESS_MAP_START( readport_patimono, ADDRESS_SPACE_IO, 8 )
622static ADDRESS_MAP_START( patimono_io_map, ADDRESS_SPACE_IO, 8 )
715623   ADDRESS_MAP_GLOBAL_MASK(0xff)
716   AM_RANGE(0x10, 0x13) AM_DEVREAD("main_ctc", z80ctc_r)
717   AM_RANGE(0x50, 0x50) AM_READ(tmpz84c011_0_pa_r)
718   AM_RANGE(0x51, 0x51) AM_READ(tmpz84c011_0_pb_r)
719   AM_RANGE(0x52, 0x52) AM_READ(tmpz84c011_0_pc_r)
720   AM_RANGE(0x30, 0x30) AM_READ(tmpz84c011_0_pd_r)
721   AM_RANGE(0x40, 0x40) AM_READ(tmpz84c011_0_pe_r)
722   AM_RANGE(0x54, 0x54) AM_READ(tmpz84c011_0_dir_pa_r)
723   AM_RANGE(0x55, 0x55) AM_READ(tmpz84c011_0_dir_pb_r)
724   AM_RANGE(0x56, 0x56) AM_READ(tmpz84c011_0_dir_pc_r)
725   AM_RANGE(0x34, 0x34) AM_READ(tmpz84c011_0_dir_pd_r)
726   AM_RANGE(0x44, 0x44) AM_READ(tmpz84c011_0_dir_pe_r)
624   TMPZ84C011_REGS
727625
728   AM_RANGE(0xc0, 0xc1) AM_READ(nbmj9195_blitter_0_r)
729626   AM_RANGE(0x80, 0x81) AM_READ(nbmj9195_blitter_1_r)
730ADDRESS_MAP_END
731
732static ADDRESS_MAP_START( writeport_patimono, ADDRESS_SPACE_IO, 8 )
733   ADDRESS_MAP_GLOBAL_MASK(0xff)
734   AM_RANGE(0x10, 0x13) AM_DEVWRITE("main_ctc", z80ctc_w)
735   AM_RANGE(0x50, 0x50) AM_WRITE(tmpz84c011_0_pa_w)
736   AM_RANGE(0x51, 0x51) AM_WRITE(tmpz84c011_0_pb_w)
737   AM_RANGE(0x52, 0x52) AM_WRITE(tmpz84c011_0_pc_w)
738   AM_RANGE(0x30, 0x30) AM_WRITE(tmpz84c011_0_pd_w)
739   AM_RANGE(0x40, 0x40) AM_WRITE(tmpz84c011_0_pe_w)
740   AM_RANGE(0x54, 0x54) AM_WRITE(tmpz84c011_0_dir_pa_w)
741   AM_RANGE(0x55, 0x55) AM_WRITE(tmpz84c011_0_dir_pb_w)
742   AM_RANGE(0x56, 0x56) AM_WRITE(tmpz84c011_0_dir_pc_w)
743   AM_RANGE(0x34, 0x34) AM_WRITE(tmpz84c011_0_dir_pd_w)
744   AM_RANGE(0x44, 0x44) AM_WRITE(tmpz84c011_0_dir_pe_w)
745
746   AM_RANGE(0x90, 0x9f) AM_WRITE(nbmj9195_clut_0_w)
747   AM_RANGE(0xd0, 0xdf) AM_WRITE(nbmj9195_clut_1_w)
748
749   AM_RANGE(0xc0, 0xcf) AM_WRITE(nbmj9195_blitter_0_w)
750627   AM_RANGE(0x80, 0x8f) AM_WRITE(nbmj9195_blitter_1_w)
751628
629   AM_RANGE(0x90, 0x9f) AM_WRITE(nbmj9195_clut_0_w)
752630   AM_RANGE(0xa0, 0xa0) AM_WRITE(nbmj9195_sound_w)
753631   AM_RANGE(0xa4, 0xa4) AM_WRITENOP
754632   AM_RANGE(0xa8, 0xa8) AM_WRITENOP
755633   AM_RANGE(0xb0, 0xb8) AM_WRITE(nbmj9195_inputportsel_w)
756ADDRESS_MAP_END
757634
758
759static ADDRESS_MAP_START( readport_mmehyou, ADDRESS_SPACE_IO, 8 )
760   ADDRESS_MAP_GLOBAL_MASK(0xff)
761   AM_RANGE(0x10, 0x13) AM_DEVREAD("main_ctc", z80ctc_r)
762   AM_RANGE(0x50, 0x50) AM_READ(tmpz84c011_0_pa_r)
763   AM_RANGE(0x51, 0x51) AM_READ(tmpz84c011_0_pb_r)
764   AM_RANGE(0x52, 0x52) AM_READ(tmpz84c011_0_pc_r)
765   AM_RANGE(0x30, 0x30) AM_READ(tmpz84c011_0_pd_r)
766   AM_RANGE(0x40, 0x40) AM_READ(tmpz84c011_0_pe_r)
767   AM_RANGE(0x54, 0x54) AM_READ(tmpz84c011_0_dir_pa_r)
768   AM_RANGE(0x55, 0x55) AM_READ(tmpz84c011_0_dir_pb_r)
769   AM_RANGE(0x56, 0x56) AM_READ(tmpz84c011_0_dir_pc_r)
770   AM_RANGE(0x34, 0x34) AM_READ(tmpz84c011_0_dir_pd_r)
771   AM_RANGE(0x44, 0x44) AM_READ(tmpz84c011_0_dir_pe_r)
772
773   AM_RANGE(0x80, 0x81) AM_READ(nbmj9195_blitter_0_r)
635   AM_RANGE(0xc0, 0xc1) AM_READ(nbmj9195_blitter_0_r)
636   AM_RANGE(0xc0, 0xcf) AM_WRITE(nbmj9195_blitter_0_w)
637   AM_RANGE(0xd0, 0xdf) AM_WRITE(nbmj9195_clut_1_w)
774638ADDRESS_MAP_END
775639
776static ADDRESS_MAP_START( writeport_mmehyou, ADDRESS_SPACE_IO, 8 )
640static ADDRESS_MAP_START( mmehyou_io_map, ADDRESS_SPACE_IO, 8 )
777641   ADDRESS_MAP_GLOBAL_MASK(0xff)
778   AM_RANGE(0x10, 0x13) AM_DEVWRITE("main_ctc", z80ctc_w)
779   AM_RANGE(0x50, 0x50) AM_WRITE(tmpz84c011_0_pa_w)
780   AM_RANGE(0x51, 0x51) AM_WRITE(tmpz84c011_0_pb_w)
781   AM_RANGE(0x52, 0x52) AM_WRITE(tmpz84c011_0_pc_w)
782   AM_RANGE(0x30, 0x30) AM_WRITE(tmpz84c011_0_pd_w)
783   AM_RANGE(0x40, 0x40) AM_WRITE(tmpz84c011_0_pe_w)
784   AM_RANGE(0x54, 0x54) AM_WRITE(tmpz84c011_0_dir_pa_w)
785   AM_RANGE(0x55, 0x55) AM_WRITE(tmpz84c011_0_dir_pb_w)
786   AM_RANGE(0x56, 0x56) AM_WRITE(tmpz84c011_0_dir_pc_w)
787   AM_RANGE(0x34, 0x34) AM_WRITE(tmpz84c011_0_dir_pd_w)
788   AM_RANGE(0x44, 0x44) AM_WRITE(tmpz84c011_0_dir_pe_w)
642   TMPZ84C011_REGS
789643
644   AM_RANGE(0x80, 0x81) AM_READ(nbmj9195_blitter_0_r)
645   AM_RANGE(0x80, 0x8f) AM_WRITE(nbmj9195_blitter_0_w)
790646   AM_RANGE(0x90, 0x9f) AM_WRITE(nbmj9195_clut_0_w)
791647
792   AM_RANGE(0x80, 0x8f) AM_WRITE(nbmj9195_blitter_0_w)
793
794648   AM_RANGE(0xa0, 0xa0) AM_WRITE(nbmj9195_sound_w)
795649   AM_RANGE(0xa4, 0xa4) AM_WRITENOP
796650   AM_RANGE(0xa8, 0xa8) AM_WRITENOP
797651   AM_RANGE(0xb0, 0xb0) AM_WRITE(nbmj9195_inputportsel_w)
798652ADDRESS_MAP_END
799653
800
801static ADDRESS_MAP_START( readport_gal10ren, ADDRESS_SPACE_IO, 8 )
654static ADDRESS_MAP_START( gal10ren_io_map, ADDRESS_SPACE_IO, 8 )
802655   ADDRESS_MAP_GLOBAL_MASK(0xff)
803   AM_RANGE(0x10, 0x13) AM_DEVREAD("main_ctc", z80ctc_r)
804   AM_RANGE(0x50, 0x50) AM_READ(tmpz84c011_0_pa_r)
805   AM_RANGE(0x51, 0x51) AM_READ(tmpz84c011_0_pb_r)
806   AM_RANGE(0x52, 0x52) AM_READ(tmpz84c011_0_pc_r)
807   AM_RANGE(0x30, 0x30) AM_READ(tmpz84c011_0_pd_r)
808   AM_RANGE(0x40, 0x40) AM_READ(tmpz84c011_0_pe_r)
809   AM_RANGE(0x54, 0x54) AM_READ(tmpz84c011_0_dir_pa_r)
810   AM_RANGE(0x55, 0x55) AM_READ(tmpz84c011_0_dir_pb_r)
811   AM_RANGE(0x56, 0x56) AM_READ(tmpz84c011_0_dir_pc_r)
812   AM_RANGE(0x34, 0x34) AM_READ(tmpz84c011_0_dir_pd_r)
813   AM_RANGE(0x44, 0x44) AM_READ(tmpz84c011_0_dir_pe_r)
656   TMPZ84C011_REGS
814657
815658   AM_RANGE(0x60, 0x61) AM_READ(nbmj9195_blitter_0_r)
816   AM_RANGE(0xa0, 0xa1) AM_READ(nbmj9195_blitter_1_r)
817ADDRESS_MAP_END
818
819static ADDRESS_MAP_START( writeport_gal10ren, ADDRESS_SPACE_IO, 8 )
820   ADDRESS_MAP_GLOBAL_MASK(0xff)
821   AM_RANGE(0x10, 0x13) AM_DEVWRITE("main_ctc", z80ctc_w)
822   AM_RANGE(0x50, 0x50) AM_WRITE(tmpz84c011_0_pa_w)
823   AM_RANGE(0x51, 0x51) AM_WRITE(tmpz84c011_0_pb_w)
824   AM_RANGE(0x52, 0x52) AM_WRITE(tmpz84c011_0_pc_w)
825   AM_RANGE(0x30, 0x30) AM_WRITE(tmpz84c011_0_pd_w)
826   AM_RANGE(0x40, 0x40) AM_WRITE(tmpz84c011_0_pe_w)
827   AM_RANGE(0x54, 0x54) AM_WRITE(tmpz84c011_0_dir_pa_w)
828   AM_RANGE(0x55, 0x55) AM_WRITE(tmpz84c011_0_dir_pb_w)
829   AM_RANGE(0x56, 0x56) AM_WRITE(tmpz84c011_0_dir_pc_w)
830   AM_RANGE(0x34, 0x34) AM_WRITE(tmpz84c011_0_dir_pd_w)
831   AM_RANGE(0x44, 0x44) AM_WRITE(tmpz84c011_0_dir_pe_w)
832
659   AM_RANGE(0x60, 0x6f) AM_WRITE(nbmj9195_blitter_0_w)
833660   AM_RANGE(0x70, 0x7f) AM_WRITE(nbmj9195_clut_0_w)
834   AM_RANGE(0xb0, 0xbf) AM_WRITE(nbmj9195_clut_1_w)
835661
836   AM_RANGE(0x60, 0x6f) AM_WRITE(nbmj9195_blitter_0_w)
662   AM_RANGE(0xa0, 0xa1) AM_READ(nbmj9195_blitter_1_r)
837663   AM_RANGE(0xa0, 0xaf) AM_WRITE(nbmj9195_blitter_1_w)
664   AM_RANGE(0xb0, 0xbf) AM_WRITE(nbmj9195_clut_1_w)
838665
839666   AM_RANGE(0xc0, 0xc0) AM_WRITE(nbmj9195_sound_w)
840667   AM_RANGE(0xc8, 0xc8) AM_WRITENOP
r4679r4680
842669   AM_RANGE(0xd8, 0xd8) AM_WRITE(nbmj9195_inputportsel_w)
843670ADDRESS_MAP_END
844671
845
846static ADDRESS_MAP_START( readport_renaiclb, ADDRESS_SPACE_IO, 8 )
672static ADDRESS_MAP_START( renaiclb_io_map, ADDRESS_SPACE_IO, 8 )
847673   ADDRESS_MAP_GLOBAL_MASK(0xff)
848   AM_RANGE(0x10, 0x13) AM_DEVREAD("main_ctc", z80ctc_r)
849   AM_RANGE(0x50, 0x50) AM_READ(tmpz84c011_0_pa_r)
850   AM_RANGE(0x51, 0x51) AM_READ(tmpz84c011_0_pb_r)
851   AM_RANGE(0x52, 0x52) AM_READ(tmpz84c011_0_pc_r)
852   AM_RANGE(0x30, 0x30) AM_READ(tmpz84c011_0_pd_r)
853   AM_RANGE(0x40, 0x40) AM_READ(tmpz84c011_0_pe_r)
854   AM_RANGE(0x54, 0x54) AM_READ(tmpz84c011_0_dir_pa_r)
855   AM_RANGE(0x55, 0x55) AM_READ(tmpz84c011_0_dir_pb_r)
856   AM_RANGE(0x56, 0x56) AM_READ(tmpz84c011_0_dir_pc_r)
857   AM_RANGE(0x34, 0x34) AM_READ(tmpz84c011_0_dir_pd_r)
858   AM_RANGE(0x44, 0x44) AM_READ(tmpz84c011_0_dir_pe_r)
674   TMPZ84C011_REGS
859675
860   AM_RANGE(0x60, 0x61) AM_READ(nbmj9195_blitter_0_r)
861   AM_RANGE(0xe0, 0xe1) AM_READ(nbmj9195_blitter_1_r)
862ADDRESS_MAP_END
863
864static ADDRESS_MAP_START( writeport_renaiclb, ADDRESS_SPACE_IO, 8 )
865   ADDRESS_MAP_GLOBAL_MASK(0xff)
866   AM_RANGE(0x10, 0x13) AM_DEVWRITE("main_ctc", z80ctc_w)
867   AM_RANGE(0x50, 0x50) AM_WRITE(tmpz84c011_0_pa_w)
868   AM_RANGE(0x51, 0x51) AM_WRITE(tmpz84c011_0_pb_w)
869   AM_RANGE(0x52, 0x52) AM_WRITE(tmpz84c011_0_pc_w)
870   AM_RANGE(0x30, 0x30) AM_WRITE(tmpz84c011_0_pd_w)
871   AM_RANGE(0x40, 0x40) AM_WRITE(tmpz84c011_0_pe_w)
872   AM_RANGE(0x54, 0x54) AM_WRITE(tmpz84c011_0_dir_pa_w)
873   AM_RANGE(0x55, 0x55) AM_WRITE(tmpz84c011_0_dir_pb_w)
874   AM_RANGE(0x56, 0x56) AM_WRITE(tmpz84c011_0_dir_pc_w)
875   AM_RANGE(0x34, 0x34) AM_WRITE(tmpz84c011_0_dir_pd_w)
876   AM_RANGE(0x44, 0x44) AM_WRITE(tmpz84c011_0_dir_pe_w)
877
878   AM_RANGE(0x70, 0x7f) AM_WRITE(nbmj9195_clut_1_w)
879   AM_RANGE(0xf0, 0xff) AM_WRITE(nbmj9195_clut_0_w)
880
881   AM_RANGE(0x60, 0x6f) AM_WRITE(nbmj9195_blitter_1_w)
882   AM_RANGE(0xe0, 0xef) AM_WRITE(nbmj9195_blitter_0_w)
883
884676   AM_RANGE(0x20, 0x20) AM_WRITE(nbmj9195_sound_w)
885677   AM_RANGE(0x24, 0x24) AM_WRITENOP
886678   AM_RANGE(0x28, 0x28) AM_WRITENOP
887679   AM_RANGE(0x2c, 0x2c) AM_WRITE(nbmj9195_inputportsel_w)
888ADDRESS_MAP_END
889680
681   AM_RANGE(0x60, 0x61) AM_READ(nbmj9195_blitter_0_r)
682   AM_RANGE(0x60, 0x6f) AM_WRITE(nbmj9195_blitter_1_w)
683   AM_RANGE(0x70, 0x7f) AM_WRITE(nbmj9195_clut_1_w)
890684
891static ADDRESS_MAP_START( readport_mjlaman, ADDRESS_SPACE_IO, 8 )
892   ADDRESS_MAP_GLOBAL_MASK(0xff)
893   AM_RANGE(0x10, 0x13) AM_DEVREAD("main_ctc", z80ctc_r)
894   AM_RANGE(0x50, 0x50) AM_READ(tmpz84c011_0_pa_r)
895   AM_RANGE(0x51, 0x51) AM_READ(tmpz84c011_0_pb_r)
896   AM_RANGE(0x52, 0x52) AM_READ(tmpz84c011_0_pc_r)
897   AM_RANGE(0x30, 0x30) AM_READ(tmpz84c011_0_pd_r)
898   AM_RANGE(0x40, 0x40) AM_READ(tmpz84c011_0_pe_r)
899   AM_RANGE(0x54, 0x54) AM_READ(tmpz84c011_0_dir_pa_r)
900   AM_RANGE(0x55, 0x55) AM_READ(tmpz84c011_0_dir_pb_r)
901   AM_RANGE(0x56, 0x56) AM_READ(tmpz84c011_0_dir_pc_r)
902   AM_RANGE(0x34, 0x34) AM_READ(tmpz84c011_0_dir_pd_r)
903   AM_RANGE(0x44, 0x44) AM_READ(tmpz84c011_0_dir_pe_r)
904
905   AM_RANGE(0x80, 0x81) AM_READ(nbmj9195_blitter_0_r)
906685   AM_RANGE(0xe0, 0xe1) AM_READ(nbmj9195_blitter_1_r)
686   AM_RANGE(0xe0, 0xef) AM_WRITE(nbmj9195_blitter_0_w)
687   AM_RANGE(0xf0, 0xff) AM_WRITE(nbmj9195_clut_0_w)
907688ADDRESS_MAP_END
908689
909static ADDRESS_MAP_START( writeport_mjlaman, ADDRESS_SPACE_IO, 8 )
690static ADDRESS_MAP_START( mjlaman_io_map, ADDRESS_SPACE_IO, 8 )
910691   ADDRESS_MAP_GLOBAL_MASK(0xff)
911   AM_RANGE(0x10, 0x13) AM_DEVWRITE("main_ctc", z80ctc_w)
912   AM_RANGE(0x50, 0x50) AM_WRITE(tmpz84c011_0_pa_w)
913   AM_RANGE(0x51, 0x51) AM_WRITE(tmpz84c011_0_pb_w)
914   AM_RANGE(0x52, 0x52) AM_WRITE(tmpz84c011_0_pc_w)
915   AM_RANGE(0x30, 0x30) AM_WRITE(tmpz84c011_0_pd_w)
916   AM_RANGE(0x40, 0x40) AM_WRITE(tmpz84c011_0_pe_w)
917   AM_RANGE(0x54, 0x54) AM_WRITE(tmpz84c011_0_dir_pa_w)
918   AM_RANGE(0x55, 0x55) AM_WRITE(tmpz84c011_0_dir_pb_w)
919   AM_RANGE(0x56, 0x56) AM_WRITE(tmpz84c011_0_dir_pc_w)
920   AM_RANGE(0x34, 0x34) AM_WRITE(tmpz84c011_0_dir_pd_w)
921   AM_RANGE(0x44, 0x44) AM_WRITE(tmpz84c011_0_dir_pe_w)
692   TMPZ84C011_REGS
922693
923   AM_RANGE(0x90, 0x9f) AM_WRITE(nbmj9195_clut_0_w)
924   AM_RANGE(0xf0, 0xff) AM_WRITE(nbmj9195_clut_1_w)
925
926   AM_RANGE(0x80, 0x8f) AM_WRITE(nbmj9195_blitter_0_w)
927   AM_RANGE(0xe0, 0xef) AM_WRITE(nbmj9195_blitter_1_w)
928
929694   AM_RANGE(0x20, 0x20) AM_WRITE(nbmj9195_sound_w)
930695   AM_RANGE(0x22, 0x22) AM_WRITENOP
931696   AM_RANGE(0x24, 0x24) AM_WRITENOP
932697   AM_RANGE(0x26, 0x26) AM_WRITE(nbmj9195_inputportsel_w)
933ADDRESS_MAP_END
934698
935
936static ADDRESS_MAP_START( readport_mkeibaou, ADDRESS_SPACE_IO, 8 )
937   ADDRESS_MAP_GLOBAL_MASK(0xff)
938   AM_RANGE(0x10, 0x13) AM_DEVREAD("main_ctc", z80ctc_r)
939   AM_RANGE(0x50, 0x50) AM_READ(tmpz84c011_0_pa_r)
940   AM_RANGE(0x51, 0x51) AM_READ(tmpz84c011_0_pb_r)
941   AM_RANGE(0x52, 0x52) AM_READ(tmpz84c011_0_pc_r)
942   AM_RANGE(0x30, 0x30) AM_READ(tmpz84c011_0_pd_r)
943   AM_RANGE(0x40, 0x40) AM_READ(tmpz84c011_0_pe_r)
944   AM_RANGE(0x54, 0x54) AM_READ(tmpz84c011_0_dir_pa_r)
945   AM_RANGE(0x55, 0x55) AM_READ(tmpz84c011_0_dir_pb_r)
946   AM_RANGE(0x56, 0x56) AM_READ(tmpz84c011_0_dir_pc_r)
947   AM_RANGE(0x34, 0x34) AM_READ(tmpz84c011_0_dir_pd_r)
948   AM_RANGE(0x44, 0x44) AM_READ(tmpz84c011_0_dir_pe_r)
949
950699   AM_RANGE(0x80, 0x81) AM_READ(nbmj9195_blitter_0_r)
951   AM_RANGE(0xa0, 0xa1) AM_READ(nbmj9195_blitter_1_r)
700   AM_RANGE(0x80, 0x8f) AM_WRITE(nbmj9195_blitter_0_w)
701   AM_RANGE(0x90, 0x9f) AM_WRITE(nbmj9195_clut_0_w)
702
703   AM_RANGE(0xe0, 0xe1) AM_READ(nbmj9195_blitter_1_r)
704   AM_RANGE(0xe0, 0xef) AM_WRITE(nbmj9195_blitter_1_w)
705   AM_RANGE(0xf0, 0xff) AM_WRITE(nbmj9195_clut_1_w)
952706ADDRESS_MAP_END
953707
954static ADDRESS_MAP_START( writeport_mkeibaou, ADDRESS_SPACE_IO, 8 )
708
709static ADDRESS_MAP_START( mkeibaou_io_map, ADDRESS_SPACE_IO, 8 )
955710   ADDRESS_MAP_GLOBAL_MASK(0xff)
956   AM_RANGE(0x10, 0x13) AM_DEVWRITE("main_ctc", z80ctc_w)
957   AM_RANGE(0x50, 0x50) AM_WRITE(tmpz84c011_0_pa_w)
958   AM_RANGE(0x51, 0x51) AM_WRITE(tmpz84c011_0_pb_w)
959   AM_RANGE(0x52, 0x52) AM_WRITE(tmpz84c011_0_pc_w)
960   AM_RANGE(0x30, 0x30) AM_WRITE(tmpz84c011_0_pd_w)
961   AM_RANGE(0x40, 0x40) AM_WRITE(tmpz84c011_0_pe_w)
962   AM_RANGE(0x54, 0x54) AM_WRITE(tmpz84c011_0_dir_pa_w)
963   AM_RANGE(0x55, 0x55) AM_WRITE(tmpz84c011_0_dir_pb_w)
964   AM_RANGE(0x56, 0x56) AM_WRITE(tmpz84c011_0_dir_pc_w)
965   AM_RANGE(0x34, 0x34) AM_WRITE(tmpz84c011_0_dir_pd_w)
966   AM_RANGE(0x44, 0x44) AM_WRITE(tmpz84c011_0_dir_pe_w)
711   TMPZ84C011_REGS
967712
713   AM_RANGE(0x80, 0x81) AM_READ(nbmj9195_blitter_0_r)
714   AM_RANGE(0x80, 0x8f) AM_WRITE(nbmj9195_blitter_0_w)
968715   AM_RANGE(0x90, 0x9f) AM_WRITE(nbmj9195_clut_0_w)
969   AM_RANGE(0xb0, 0xbf) AM_WRITE(nbmj9195_clut_1_w)
970716
971   AM_RANGE(0x80, 0x8f) AM_WRITE(nbmj9195_blitter_0_w)
717   AM_RANGE(0xa0, 0xa1) AM_READ(nbmj9195_blitter_1_r)
972718   AM_RANGE(0xa0, 0xaf) AM_WRITE(nbmj9195_blitter_1_w)
719   AM_RANGE(0xb0, 0xbf) AM_WRITE(nbmj9195_clut_1_w)
973720
974721   AM_RANGE(0xd8, 0xd8) AM_WRITE(nbmj9195_sound_w)
975722   AM_RANGE(0xda, 0xda) AM_WRITENOP
r4679r4680
978725ADDRESS_MAP_END
979726
980727
981static ADDRESS_MAP_START( readport_pachiten, ADDRESS_SPACE_IO, 8 )
728static ADDRESS_MAP_START( pachiten_io_map, ADDRESS_SPACE_IO, 8 )
982729   ADDRESS_MAP_GLOBAL_MASK(0xff)
983   AM_RANGE(0x10, 0x13) AM_DEVREAD("main_ctc", z80ctc_r)
984   AM_RANGE(0x50, 0x50) AM_READ(tmpz84c011_0_pa_r)
985   AM_RANGE(0x51, 0x51) AM_READ(tmpz84c011_0_pb_r)
986   AM_RANGE(0x52, 0x52) AM_READ(tmpz84c011_0_pc_r)
987   AM_RANGE(0x30, 0x30) AM_READ(tmpz84c011_0_pd_r)
988   AM_RANGE(0x40, 0x40) AM_READ(tmpz84c011_0_pe_r)
989   AM_RANGE(0x54, 0x54) AM_READ(tmpz84c011_0_dir_pa_r)
990   AM_RANGE(0x55, 0x55) AM_READ(tmpz84c011_0_dir_pb_r)
991   AM_RANGE(0x56, 0x56) AM_READ(tmpz84c011_0_dir_pc_r)
992   AM_RANGE(0x34, 0x34) AM_READ(tmpz84c011_0_dir_pd_r)
993   AM_RANGE(0x44, 0x44) AM_READ(tmpz84c011_0_dir_pe_r)
730   TMPZ84C011_REGS
994731
995732   AM_RANGE(0x60, 0x61) AM_READ(nbmj9195_blitter_0_r)
996   AM_RANGE(0xa0, 0xa1) AM_READ(nbmj9195_blitter_1_r)
997ADDRESS_MAP_END
998
999static ADDRESS_MAP_START( writeport_pachiten, ADDRESS_SPACE_IO, 8 )
1000   ADDRESS_MAP_GLOBAL_MASK(0xff)
1001   AM_RANGE(0x10, 0x13) AM_DEVWRITE("main_ctc", z80ctc_w)
1002   AM_RANGE(0x50, 0x50) AM_WRITE(tmpz84c011_0_pa_w)
1003   AM_RANGE(0x51, 0x51) AM_WRITE(tmpz84c011_0_pb_w)
1004   AM_RANGE(0x52, 0x52) AM_WRITE(tmpz84c011_0_pc_w)
1005   AM_RANGE(0x30, 0x30) AM_WRITE(tmpz84c011_0_pd_w)
1006   AM_RANGE(0x40, 0x40) AM_WRITE(tmpz84c011_0_pe_w)
1007   AM_RANGE(0x54, 0x54) AM_WRITE(tmpz84c011_0_dir_pa_w)
1008   AM_RANGE(0x55, 0x55) AM_WRITE(tmpz84c011_0_dir_pb_w)
1009   AM_RANGE(0x56, 0x56) AM_WRITE(tmpz84c011_0_dir_pc_w)
1010   AM_RANGE(0x34, 0x34) AM_WRITE(tmpz84c011_0_dir_pd_w)
1011   AM_RANGE(0x44, 0x44) AM_WRITE(tmpz84c011_0_dir_pe_w)
1012
733   AM_RANGE(0x60, 0x6f) AM_WRITE(nbmj9195_blitter_0_w)
1013734   AM_RANGE(0x70, 0x7f) AM_WRITE(nbmj9195_clut_0_w)
1014   AM_RANGE(0xb0, 0xbf) AM_WRITE(nbmj9195_clut_1_w)
1015735
1016   AM_RANGE(0x60, 0x6f) AM_WRITE(nbmj9195_blitter_0_w)
736   AM_RANGE(0xa0, 0xa1) AM_READ(nbmj9195_blitter_1_r)
1017737   AM_RANGE(0xa0, 0xaf) AM_WRITE(nbmj9195_blitter_1_w)
738   AM_RANGE(0xb0, 0xbf) AM_WRITE(nbmj9195_clut_1_w)
1018739
1019740   AM_RANGE(0xe0, 0xe0) AM_WRITE(nbmj9195_sound_w)
1020741   AM_RANGE(0xe2, 0xe2) AM_WRITENOP
r4679r4680
1022743   AM_RANGE(0xe6, 0xe6) AM_WRITE(nbmj9195_inputportsel_w)
1023744ADDRESS_MAP_END
1024745
1025
1026static ADDRESS_MAP_START( readport_sailorws, ADDRESS_SPACE_IO, 8 )
746static ADDRESS_MAP_START( sailorws_io_map, ADDRESS_SPACE_IO, 8 )
1027747   ADDRESS_MAP_GLOBAL_MASK(0xff)
1028   AM_RANGE(0x10, 0x13) AM_DEVREAD("main_ctc", z80ctc_r)
1029   AM_RANGE(0x50, 0x50) AM_READ(tmpz84c011_0_pa_r)
1030   AM_RANGE(0x51, 0x51) AM_READ(tmpz84c011_0_pb_r)
1031   AM_RANGE(0x52, 0x52) AM_READ(tmpz84c011_0_pc_r)
1032   AM_RANGE(0x30, 0x30) AM_READ(tmpz84c011_0_pd_r)
1033   AM_RANGE(0x40, 0x40) AM_READ(tmpz84c011_0_pe_r)
1034   AM_RANGE(0x54, 0x54) AM_READ(tmpz84c011_0_dir_pa_r)
1035   AM_RANGE(0x55, 0x55) AM_READ(tmpz84c011_0_dir_pb_r)
1036   AM_RANGE(0x56, 0x56) AM_READ(tmpz84c011_0_dir_pc_r)
1037   AM_RANGE(0x34, 0x34) AM_READ(tmpz84c011_0_dir_pd_r)
1038   AM_RANGE(0x44, 0x44) AM_READ(tmpz84c011_0_dir_pe_r)
748   TMPZ84C011_REGS
1039749
1040750   AM_RANGE(0x60, 0x61) AM_READ(nbmj9195_blitter_0_r)
1041   AM_RANGE(0x80, 0x81) AM_READ(nbmj9195_blitter_1_r)
1042ADDRESS_MAP_END
1043
1044static ADDRESS_MAP_START( writeport_sailorws, ADDRESS_SPACE_IO, 8 )
1045   ADDRESS_MAP_GLOBAL_MASK(0xff)
1046   AM_RANGE(0x10, 0x13) AM_DEVWRITE("main_ctc", z80ctc_w)
1047   AM_RANGE(0x50, 0x50) AM_WRITE(tmpz84c011_0_pa_w)
1048   AM_RANGE(0x51, 0x51) AM_WRITE(tmpz84c011_0_pb_w)
1049   AM_RANGE(0x52, 0x52) AM_WRITE(tmpz84c011_0_pc_w)
1050   AM_RANGE(0x30, 0x30) AM_WRITE(tmpz84c011_0_pd_w)
1051   AM_RANGE(0x40, 0x40) AM_WRITE(tmpz84c011_0_pe_w)
1052   AM_RANGE(0x54, 0x54) AM_WRITE(tmpz84c011_0_dir_pa_w)
1053   AM_RANGE(0x55, 0x55) AM_WRITE(tmpz84c011_0_dir_pb_w)
1054   AM_RANGE(0x56, 0x56) AM_WRITE(tmpz84c011_0_dir_pc_w)
1055   AM_RANGE(0x34, 0x34) AM_WRITE(tmpz84c011_0_dir_pd_w)
1056   AM_RANGE(0x44, 0x44) AM_WRITE(tmpz84c011_0_dir_pe_w)
1057
751   AM_RANGE(0x60, 0x6f) AM_WRITE(nbmj9195_blitter_0_w)
1058752   AM_RANGE(0x70, 0x7f) AM_WRITE(nbmj9195_clut_0_w)
1059   AM_RANGE(0x90, 0x9f) AM_WRITE(nbmj9195_clut_1_w)
1060753
1061   AM_RANGE(0x60, 0x6f) AM_WRITE(nbmj9195_blitter_0_w)
754   AM_RANGE(0x80, 0x81) AM_READ(nbmj9195_blitter_1_r)
1062755   AM_RANGE(0x80, 0x8f) AM_WRITE(nbmj9195_blitter_1_w)
756   AM_RANGE(0x90, 0x9f) AM_WRITE(nbmj9195_clut_1_w)
1063757
1064758   AM_RANGE(0xf0, 0xf0) AM_WRITE(nbmj9195_sound_w)
1065759   AM_RANGE(0xf2, 0xf2) AM_WRITENOP
r4679r4680
1067761   AM_RANGE(0xf6, 0xf6) AM_WRITE(nbmj9195_inputportsel_w)
1068762ADDRESS_MAP_END
1069763
1070
1071static ADDRESS_MAP_START( readport_sailorwr, ADDRESS_SPACE_IO, 8 )
764static ADDRESS_MAP_START( sailorwr_io_map, ADDRESS_SPACE_IO, 8 )
1072765   ADDRESS_MAP_GLOBAL_MASK(0xff)
1073   AM_RANGE(0x10, 0x13) AM_DEVREAD("main_ctc", z80ctc_r)
1074   AM_RANGE(0x50, 0x50) AM_READ(tmpz84c011_0_pa_r)
1075   AM_RANGE(0x51, 0x51) AM_READ(tmpz84c011_0_pb_r)
1076   AM_RANGE(0x52, 0x52) AM_READ(tmpz84c011_0_pc_r)
1077   AM_RANGE(0x30, 0x30) AM_READ(tmpz84c011_0_pd_r)
1078   AM_RANGE(0x40, 0x40) AM_READ(tmpz84c011_0_pe_r)
1079   AM_RANGE(0x54, 0x54) AM_READ(tmpz84c011_0_dir_pa_r)
1080   AM_RANGE(0x55, 0x55) AM_READ(tmpz84c011_0_dir_pb_r)
1081   AM_RANGE(0x56, 0x56) AM_READ(tmpz84c011_0_dir_pc_r)
1082   AM_RANGE(0x34, 0x34) AM_READ(tmpz84c011_0_dir_pd_r)
1083   AM_RANGE(0x44, 0x44) AM_READ(tmpz84c011_0_dir_pe_r)
766   TMPZ84C011_REGS
1084767
1085768   AM_RANGE(0x60, 0x61) AM_READ(nbmj9195_blitter_0_r)
1086   AM_RANGE(0x80, 0x81) AM_READ(nbmj9195_blitter_1_r)
1087ADDRESS_MAP_END
1088
1089static ADDRESS_MAP_START( writeport_sailorwr, ADDRESS_SPACE_IO, 8 )
1090   ADDRESS_MAP_GLOBAL_MASK(0xff)
1091   AM_RANGE(0x10, 0x13) AM_DEVWRITE("main_ctc", z80ctc_w)
1092   AM_RANGE(0x50, 0x50) AM_WRITE(tmpz84c011_0_pa_w)
1093   AM_RANGE(0x51, 0x51) AM_WRITE(tmpz84c011_0_pb_w)
1094   AM_RANGE(0x52, 0x52) AM_WRITE(tmpz84c011_0_pc_w)
1095   AM_RANGE(0x30, 0x30) AM_WRITE(tmpz84c011_0_pd_w)
1096   AM_RANGE(0x40, 0x40) AM_WRITE(tmpz84c011_0_pe_w)
1097   AM_RANGE(0x54, 0x54) AM_WRITE(tmpz84c011_0_dir_pa_w)
1098   AM_RANGE(0x55, 0x55) AM_WRITE(tmpz84c011_0_dir_pb_w)
1099   AM_RANGE(0x56, 0x56) AM_WRITE(tmpz84c011_0_dir_pc_w)
1100   AM_RANGE(0x34, 0x34) AM_WRITE(tmpz84c011_0_dir_pd_w)
1101   AM_RANGE(0x44, 0x44) AM_WRITE(tmpz84c011_0_dir_pe_w)
1102
769   AM_RANGE(0x60, 0x6f) AM_WRITE(nbmj9195_blitter_0_w)
1103770   AM_RANGE(0x70, 0x7f) AM_WRITE(nbmj9195_clut_0_w)
1104   AM_RANGE(0x90, 0x9f) AM_WRITE(nbmj9195_clut_1_w)
1105771
1106   AM_RANGE(0x60, 0x6f) AM_WRITE(nbmj9195_blitter_0_w)
772   AM_RANGE(0x80, 0x81) AM_READ(nbmj9195_blitter_1_r)
1107773   AM_RANGE(0x80, 0x8f) AM_WRITE(nbmj9195_blitter_1_w)
774   AM_RANGE(0x90, 0x9f) AM_WRITE(nbmj9195_clut_1_w)
1108775
1109776   AM_RANGE(0xf8, 0xf8) AM_WRITE(nbmj9195_sound_w)
1110777   AM_RANGE(0xfa, 0xfa) AM_WRITENOP
r4679r4680
1113780ADDRESS_MAP_END
1114781
1115782
1116static ADDRESS_MAP_START( readport_psailor1, ADDRESS_SPACE_IO, 8 )
783static ADDRESS_MAP_START( psailor1_io_map, ADDRESS_SPACE_IO, 8 )
1117784   ADDRESS_MAP_GLOBAL_MASK(0xff)
1118   AM_RANGE(0x10, 0x13) AM_DEVREAD("main_ctc", z80ctc_r)
1119   AM_RANGE(0x50, 0x50) AM_READ(tmpz84c011_0_pa_r)
1120   AM_RANGE(0x51, 0x51) AM_READ(tmpz84c011_0_pb_r)
1121   AM_RANGE(0x52, 0x52) AM_READ(tmpz84c011_0_pc_r)
1122   AM_RANGE(0x30, 0x30) AM_READ(tmpz84c011_0_pd_r)
1123   AM_RANGE(0x40, 0x40) AM_READ(tmpz84c011_0_pe_r)
1124   AM_RANGE(0x54, 0x54) AM_READ(tmpz84c011_0_dir_pa_r)
1125   AM_RANGE(0x55, 0x55) AM_READ(tmpz84c011_0_dir_pb_r)
1126   AM_RANGE(0x56, 0x56) AM_READ(tmpz84c011_0_dir_pc_r)
1127   AM_RANGE(0x34, 0x34) AM_READ(tmpz84c011_0_dir_pd_r)
1128   AM_RANGE(0x44, 0x44) AM_READ(tmpz84c011_0_dir_pe_r)
785   TMPZ84C011_REGS
1129786
1130787   AM_RANGE(0x60, 0x61) AM_READ(nbmj9195_blitter_0_r)
1131   AM_RANGE(0xc0, 0xc1) AM_READ(nbmj9195_blitter_1_r)
1132ADDRESS_MAP_END
1133
1134static ADDRESS_MAP_START( writeport_psailor1, ADDRESS_SPACE_IO, 8 )
1135   ADDRESS_MAP_GLOBAL_MASK(0xff)
1136   AM_RANGE(0x10, 0x13) AM_DEVWRITE("main_ctc", z80ctc_w)
1137   AM_RANGE(0x50, 0x50) AM_WRITE(tmpz84c011_0_pa_w)
1138   AM_RANGE(0x51, 0x51) AM_WRITE(tmpz84c011_0_pb_w)
1139   AM_RANGE(0x52, 0x52) AM_WRITE(tmpz84c011_0_pc_w)
1140   AM_RANGE(0x30, 0x30) AM_WRITE(tmpz84c011_0_pd_w)
1141   AM_RANGE(0x40, 0x40) AM_WRITE(tmpz84c011_0_pe_w)
1142   AM_RANGE(0x54, 0x54) AM_WRITE(tmpz84c011_0_dir_pa_w)
1143   AM_RANGE(0x55, 0x55) AM_WRITE(tmpz84c011_0_dir_pb_w)
1144   AM_RANGE(0x56, 0x56) AM_WRITE(tmpz84c011_0_dir_pc_w)
1145   AM_RANGE(0x34, 0x34) AM_WRITE(tmpz84c011_0_dir_pd_w)
1146   AM_RANGE(0x44, 0x44) AM_WRITE(tmpz84c011_0_dir_pe_w)
1147
788   AM_RANGE(0x60, 0x6f) AM_WRITE(nbmj9195_blitter_0_w)
1148789   AM_RANGE(0x70, 0x7f) AM_WRITE(nbmj9195_clut_0_w)
1149   AM_RANGE(0xd0, 0xdf) AM_WRITE(nbmj9195_clut_1_w)
1150790
1151   AM_RANGE(0x60, 0x6f) AM_WRITE(nbmj9195_blitter_0_w)
791   AM_RANGE(0xc0, 0xc1) AM_READ(nbmj9195_blitter_1_r)
1152792   AM_RANGE(0xc0, 0xcf) AM_WRITE(nbmj9195_blitter_1_w)
793   AM_RANGE(0xd0, 0xdf) AM_WRITE(nbmj9195_clut_1_w)
1153794
1154795   AM_RANGE(0xf0, 0xf0) AM_WRITE(nbmj9195_sound_w)
1155796   AM_RANGE(0xf2, 0xf2) AM_WRITENOP
r4679r4680
1157798   AM_RANGE(0xf6, 0xf6) AM_WRITE(nbmj9195_inputportsel_w)
1158799ADDRESS_MAP_END
1159800
1160
1161static ADDRESS_MAP_START( readport_psailor2, ADDRESS_SPACE_IO, 8 )
801static ADDRESS_MAP_START( psailor2_io_map, ADDRESS_SPACE_IO, 8 )
1162802   ADDRESS_MAP_GLOBAL_MASK(0xff)
1163   AM_RANGE(0x10, 0x13) AM_DEVREAD("main_ctc", z80ctc_r)
1164   AM_RANGE(0x50, 0x50) AM_READ(tmpz84c011_0_pa_r)
1165   AM_RANGE(0x51, 0x51) AM_READ(tmpz84c011_0_pb_r)
1166   AM_RANGE(0x52, 0x52) AM_READ(tmpz84c011_0_pc_r)
1167   AM_RANGE(0x30, 0x30) AM_READ(tmpz84c011_0_pd_r)
1168   AM_RANGE(0x40, 0x40) AM_READ(tmpz84c011_0_pe_r)
1169   AM_RANGE(0x54, 0x54) AM_READ(tmpz84c011_0_dir_pa_r)
1170   AM_RANGE(0x55, 0x55) AM_READ(tmpz84c011_0_dir_pb_r)
1171   AM_RANGE(0x56, 0x56) AM_READ(tmpz84c011_0_dir_pc_r)
1172   AM_RANGE(0x34, 0x34) AM_READ(tmpz84c011_0_dir_pd_r)
1173   AM_RANGE(0x44, 0x44) AM_READ(tmpz84c011_0_dir_pe_r)
803   TMPZ84C011_REGS
1174804
1175805   AM_RANGE(0x60, 0x61) AM_READ(nbmj9195_blitter_0_r)
1176   AM_RANGE(0xa0, 0xa1) AM_READ(nbmj9195_blitter_1_r)
1177ADDRESS_MAP_END
1178
1179static ADDRESS_MAP_START( writeport_psailor2, ADDRESS_SPACE_IO, 8 )
1180   ADDRESS_MAP_GLOBAL_MASK(0xff)
1181   AM_RANGE(0x10, 0x13) AM_DEVWRITE("main_ctc", z80ctc_w)
1182   AM_RANGE(0x50, 0x50) AM_WRITE(tmpz84c011_0_pa_w)
1183   AM_RANGE(0x51, 0x51) AM_WRITE(tmpz84c011_0_pb_w)
1184   AM_RANGE(0x52, 0x52) AM_WRITE(tmpz84c011_0_pc_w)
1185   AM_RANGE(0x30, 0x30) AM_WRITE(tmpz84c011_0_pd_w)
1186   AM_RANGE(0x40, 0x40) AM_WRITE(tmpz84c011_0_pe_w)
1187   AM_RANGE(0x54, 0x54) AM_WRITE(tmpz84c011_0_dir_pa_w)
1188   AM_RANGE(0x55, 0x55) AM_WRITE(tmpz84c011_0_dir_pb_w)
1189   AM_RANGE(0x56, 0x56) AM_WRITE(tmpz84c011_0_dir_pc_w)
1190   AM_RANGE(0x34, 0x34) AM_WRITE(tmpz84c011_0_dir_pd_w)
1191   AM_RANGE(0x44, 0x44) AM_WRITE(tmpz84c011_0_dir_pe_w)
1192
806   AM_RANGE(0x60, 0x6f) AM_WRITE(nbmj9195_blitter_0_w)
1193807   AM_RANGE(0x70, 0x7f) AM_WRITE(nbmj9195_clut_0_w)
1194   AM_RANGE(0xb0, 0xbf) AM_WRITE(nbmj9195_clut_1_w)
1195808
1196   AM_RANGE(0x60, 0x6f) AM_WRITE(nbmj9195_blitter_0_w)
809   AM_RANGE(0xa0, 0xa1) AM_READ(nbmj9195_blitter_1_r)
1197810   AM_RANGE(0xa0, 0xaf) AM_WRITE(nbmj9195_blitter_1_w)
811   AM_RANGE(0xb0, 0xbf) AM_WRITE(nbmj9195_clut_1_w)
1198812
1199813   AM_RANGE(0xe0, 0xe0) AM_WRITE(nbmj9195_sound_w)
1200814   AM_RANGE(0xe2, 0xe2) AM_WRITENOP
r4679r4680
1202816   AM_RANGE(0xf6, 0xf6) AM_WRITE(nbmj9195_inputportsel_w)
1203817ADDRESS_MAP_END
1204818
1205
1206static ADDRESS_MAP_START( readport_otatidai, ADDRESS_SPACE_IO, 8 )
819static ADDRESS_MAP_START( otatidai_io_map, ADDRESS_SPACE_IO, 8 )
1207820   ADDRESS_MAP_GLOBAL_MASK(0xff)
1208   AM_RANGE(0x10, 0x13) AM_DEVREAD("main_ctc", z80ctc_r)
1209   AM_RANGE(0x50, 0x50) AM_READ(tmpz84c011_0_pa_r)
1210   AM_RANGE(0x51, 0x51) AM_READ(tmpz84c011_0_pb_r)
1211   AM_RANGE(0x52, 0x52) AM_READ(tmpz84c011_0_pc_r)
1212   AM_RANGE(0x30, 0x30) AM_READ(tmpz84c011_0_pd_r)
1213   AM_RANGE(0x40, 0x40) AM_READ(tmpz84c011_0_pe_r)
1214   AM_RANGE(0x54, 0x54) AM_READ(tmpz84c011_0_dir_pa_r)
1215   AM_RANGE(0x55, 0x55) AM_READ(tmpz84c011_0_dir_pb_r)
1216   AM_RANGE(0x56, 0x56) AM_READ(tmpz84c011_0_dir_pc_r)
1217   AM_RANGE(0x34, 0x34) AM_READ(tmpz84c011_0_dir_pd_r)
1218   AM_RANGE(0x44, 0x44) AM_READ(tmpz84c011_0_dir_pe_r)
821   TMPZ84C011_REGS
1219822
1220823   AM_RANGE(0x60, 0x61) AM_READ(nbmj9195_blitter_0_r)
1221   AM_RANGE(0x80, 0x81) AM_READ(nbmj9195_blitter_1_r)
1222ADDRESS_MAP_END
1223
1224static ADDRESS_MAP_START( writeport_otatidai, ADDRESS_SPACE_IO, 8 )
1225   ADDRESS_MAP_GLOBAL_MASK(0xff)
1226   AM_RANGE(0x10, 0x13) AM_DEVWRITE("main_ctc", z80ctc_w)
1227   AM_RANGE(0x50, 0x50) AM_WRITE(tmpz84c011_0_pa_w)
1228   AM_RANGE(0x51, 0x51) AM_WRITE(tmpz84c011_0_pb_w)
1229   AM_RANGE(0x52, 0x52) AM_WRITE(tmpz84c011_0_pc_w)
1230   AM_RANGE(0x30, 0x30) AM_WRITE(tmpz84c011_0_pd_w)
1231   AM_RANGE(0x40, 0x40) AM_WRITE(tmpz84c011_0_pe_w)
1232   AM_RANGE(0x54, 0x54) AM_WRITE(tmpz84c011_0_dir_pa_w)
1233   AM_RANGE(0x55, 0x55) AM_WRITE(tmpz84c011_0_dir_pb_w)
1234   AM_RANGE(0x56, 0x56) AM_WRITE(tmpz84c011_0_dir_pc_w)
1235   AM_RANGE(0x34, 0x34) AM_WRITE(tmpz84c011_0_dir_pd_w)
1236   AM_RANGE(0x44, 0x44) AM_WRITE(tmpz84c011_0_dir_pe_w)
1237
824   AM_RANGE(0x60, 0x6f) AM_WRITE(nbmj9195_blitter_0_w)
1238825   AM_RANGE(0x70, 0x7f) AM_WRITE(nbmj9195_clut_0_w)
1239   AM_RANGE(0x90, 0x9f) AM_WRITE(nbmj9195_clut_1_w)
1240826
1241   AM_RANGE(0x60, 0x6f) AM_WRITE(nbmj9195_blitter_0_w)
827   AM_RANGE(0x80, 0x81) AM_READ(nbmj9195_blitter_1_r)
1242828   AM_RANGE(0x80, 0x8f) AM_WRITE(nbmj9195_blitter_1_w)
829   AM_RANGE(0x90, 0x9f) AM_WRITE(nbmj9195_clut_1_w)
1243830
1244831   AM_RANGE(0xa0, 0xa0) AM_WRITE(nbmj9195_sound_w)
1245832   AM_RANGE(0xa8, 0xa8) AM_WRITENOP
r4679r4680
1247834   AM_RANGE(0xb8, 0xb8) AM_WRITE(nbmj9195_inputportsel_w)
1248835ADDRESS_MAP_END
1249836
1250
1251static ADDRESS_MAP_START( readport_yosimoto, ADDRESS_SPACE_IO, 8 )
837static ADDRESS_MAP_START( yosimoto_io_map, ADDRESS_SPACE_IO, 8 )
1252838   ADDRESS_MAP_GLOBAL_MASK(0xff)
1253   AM_RANGE(0x10, 0x13) AM_DEVREAD("main_ctc", z80ctc_r)
1254   AM_RANGE(0x50, 0x50) AM_READ(tmpz84c011_0_pa_r)
1255   AM_RANGE(0x51, 0x51) AM_READ(tmpz84c011_0_pb_r)
1256   AM_RANGE(0x52, 0x52) AM_READ(tmpz84c011_0_pc_r)
1257   AM_RANGE(0x30, 0x30) AM_READ(tmpz84c011_0_pd_r)
1258   AM_RANGE(0x40, 0x40) AM_READ(tmpz84c011_0_pe_r)
1259   AM_RANGE(0x54, 0x54) AM_READ(tmpz84c011_0_dir_pa_r)
1260   AM_RANGE(0x55, 0x55) AM_READ(tmpz84c011_0_dir_pb_r)
1261   AM_RANGE(0x56, 0x56) AM_READ(tmpz84c011_0_dir_pc_r)
1262   AM_RANGE(0x34, 0x34) AM_READ(tmpz84c011_0_dir_pd_r)
1263   AM_RANGE(0x44, 0x44) AM_READ(tmpz84c011_0_dir_pe_r)
839   TMPZ84C011_REGS
1264840
1265841   AM_RANGE(0x60, 0x61) AM_READ(nbmj9195_blitter_0_r)
1266   AM_RANGE(0xc0, 0xc1) AM_READ(nbmj9195_blitter_1_r)
1267ADDRESS_MAP_END
1268
1269static ADDRESS_MAP_START( writeport_yosimoto, ADDRESS_SPACE_IO, 8 )
1270   ADDRESS_MAP_GLOBAL_MASK(0xff)
1271   AM_RANGE(0x10, 0x13) AM_DEVWRITE("main_ctc", z80ctc_w)
1272   AM_RANGE(0x50, 0x50) AM_WRITE(tmpz84c011_0_pa_w)
1273   AM_RANGE(0x51, 0x51) AM_WRITE(tmpz84c011_0_pb_w)
1274   AM_RANGE(0x52, 0x52) AM_WRITE(tmpz84c011_0_pc_w)
1275   AM_RANGE(0x30, 0x30) AM_WRITE(tmpz84c011_0_pd_w)
1276   AM_RANGE(0x40, 0x40) AM_WRITE(tmpz84c011_0_pe_w)
1277   AM_RANGE(0x54, 0x54) AM_WRITE(tmpz84c011_0_dir_pa_w)
1278   AM_RANGE(0x55, 0x55) AM_WRITE(tmpz84c011_0_dir_pb_w)
1279   AM_RANGE(0x56, 0x56) AM_WRITE(tmpz84c011_0_dir_pc_w)
1280   AM_RANGE(0x34, 0x34) AM_WRITE(tmpz84c011_0_dir_pd_w)
1281   AM_RANGE(0x44, 0x44) AM_WRITE(tmpz84c011_0_dir_pe_w)
1282
842   AM_RANGE(0x60, 0x6f) AM_WRITE(nbmj9195_blitter_0_w)
1283843   AM_RANGE(0x70, 0x7f) AM_WRITE(nbmj9195_clut_0_w)
1284   AM_RANGE(0xd0, 0xdf) AM_WRITE(nbmj9195_clut_1_w)
1285844
1286   AM_RANGE(0x60, 0x6f) AM_WRITE(nbmj9195_blitter_0_w)
1287   AM_RANGE(0xc0, 0xcf) AM_WRITE(nbmj9195_blitter_1_w)
1288
1289845   AM_RANGE(0x90, 0x90) AM_WRITE(nbmj9195_sound_w)
1290846   AM_RANGE(0x94, 0x94) AM_WRITENOP
1291847   AM_RANGE(0x98, 0x98) AM_WRITENOP
1292848   AM_RANGE(0x9c, 0x9c) AM_WRITE(nbmj9195_inputportsel_w)
1293ADDRESS_MAP_END
1294849
1295
1296static ADDRESS_MAP_START( readport_jituroku, ADDRESS_SPACE_IO, 8 )
1297   ADDRESS_MAP_GLOBAL_MASK(0xff)
1298   AM_RANGE(0x10, 0x13) AM_DEVREAD("main_ctc", z80ctc_r)
1299   AM_RANGE(0x50, 0x50) AM_READ(tmpz84c011_0_pa_r)
1300   AM_RANGE(0x51, 0x51) AM_READ(tmpz84c011_0_pb_r)
1301   AM_RANGE(0x52, 0x52) AM_READ(tmpz84c011_0_pc_r)
1302   AM_RANGE(0x30, 0x30) AM_READ(tmpz84c011_0_pd_r)
1303   AM_RANGE(0x40, 0x40) AM_READ(tmpz84c011_0_pe_r)
1304   AM_RANGE(0x54, 0x54) AM_READ(tmpz84c011_0_dir_pa_r)
1305   AM_RANGE(0x55, 0x55) AM_READ(tmpz84c011_0_dir_pb_r)
1306   AM_RANGE(0x56, 0x56) AM_READ(tmpz84c011_0_dir_pc_r)
1307   AM_RANGE(0x34, 0x34) AM_READ(tmpz84c011_0_dir_pd_r)
1308   AM_RANGE(0x44, 0x44) AM_READ(tmpz84c011_0_dir_pe_r)
1309
1310   AM_RANGE(0x60, 0x61) AM_READ(nbmj9195_blitter_0_r)
1311850   AM_RANGE(0xc0, 0xc1) AM_READ(nbmj9195_blitter_1_r)
851   AM_RANGE(0xc0, 0xcf) AM_WRITE(nbmj9195_blitter_1_w)
852   AM_RANGE(0xd0, 0xdf) AM_WRITE(nbmj9195_clut_1_w)
1312853ADDRESS_MAP_END
1313854
1314static ADDRESS_MAP_START( writeport_jituroku, ADDRESS_SPACE_IO, 8 )
855static ADDRESS_MAP_START( jituroku_io_map, ADDRESS_SPACE_IO, 8 )
1315856   ADDRESS_MAP_GLOBAL_MASK(0xff)
1316   AM_RANGE(0x10, 0x13) AM_DEVWRITE("main_ctc", z80ctc_w)
1317   AM_RANGE(0x50, 0x50) AM_WRITE(tmpz84c011_0_pa_w)
1318   AM_RANGE(0x51, 0x51) AM_WRITE(tmpz84c011_0_pb_w)
1319   AM_RANGE(0x52, 0x52) AM_WRITE(tmpz84c011_0_pc_w)
1320   AM_RANGE(0x30, 0x30) AM_WRITE(tmpz84c011_0_pd_w)
1321   AM_RANGE(0x40, 0x40) AM_WRITE(tmpz84c011_0_pe_w)
1322   AM_RANGE(0x54, 0x54) AM_WRITE(tmpz84c011_0_dir_pa_w)
1323   AM_RANGE(0x55, 0x55) AM_WRITE(tmpz84c011_0_dir_pb_w)
1324   AM_RANGE(0x56, 0x56) AM_WRITE(tmpz84c011_0_dir_pc_w)
1325   AM_RANGE(0x34, 0x34) AM_WRITE(tmpz84c011_0_dir_pd_w)
1326   AM_RANGE(0x44, 0x44) AM_WRITE(tmpz84c011_0_dir_pe_w)
857   TMPZ84C011_REGS
1327858
859   AM_RANGE(0x60, 0x61) AM_READ(nbmj9195_blitter_0_r)
860   AM_RANGE(0x60, 0x6f) AM_WRITE(nbmj9195_blitter_0_w)
1328861   AM_RANGE(0x70, 0x7f) AM_WRITE(nbmj9195_clut_0_w)
1329   AM_RANGE(0xd0, 0xdf) AM_WRITE(nbmj9195_clut_1_w)
1330862
1331   AM_RANGE(0x60, 0x6f) AM_WRITE(nbmj9195_blitter_0_w)
863   AM_RANGE(0xc0, 0xc1) AM_READ(nbmj9195_blitter_1_r)
1332864   AM_RANGE(0xc0, 0xcf) AM_WRITE(nbmj9195_blitter_1_w)
865   AM_RANGE(0xd0, 0xdf) AM_WRITE(nbmj9195_clut_1_w)
1333866
1334867   AM_RANGE(0xe0, 0xe0) AM_WRITE(nbmj9195_sound_w)
1335868   AM_RANGE(0xe8, 0xe8) AM_WRITENOP
r4679r4680
1337870   AM_RANGE(0xf8, 0xf8) AM_WRITE(nbmj9195_inputportsel_w)
1338871ADDRESS_MAP_END
1339872
1340
1341static ADDRESS_MAP_START( readport_ngpgal, ADDRESS_SPACE_IO, 8 )
873static ADDRESS_MAP_START( ngpgal_io_map, ADDRESS_SPACE_IO, 8 )
1342874   ADDRESS_MAP_GLOBAL_MASK(0xff)
1343   AM_RANGE(0x10, 0x13) AM_DEVREAD("main_ctc", z80ctc_r)
1344   AM_RANGE(0x50, 0x50) AM_READ(tmpz84c011_0_pa_r)
1345   AM_RANGE(0x51, 0x51) AM_READ(tmpz84c011_0_pb_r)
1346   AM_RANGE(0x52, 0x52) AM_READ(tmpz84c011_0_pc_r)
1347   AM_RANGE(0x30, 0x30) AM_READ(tmpz84c011_0_pd_r)
1348   AM_RANGE(0x40, 0x40) AM_READ(tmpz84c011_0_pe_r)
1349   AM_RANGE(0x54, 0x54) AM_READ(tmpz84c011_0_dir_pa_r)
1350   AM_RANGE(0x55, 0x55) AM_READ(tmpz84c011_0_dir_pb_r)
1351   AM_RANGE(0x56, 0x56) AM_READ(tmpz84c011_0_dir_pc_r)
1352   AM_RANGE(0x34, 0x34) AM_READ(tmpz84c011_0_dir_pd_r)
1353   AM_RANGE(0x44, 0x44) AM_READ(tmpz84c011_0_dir_pe_r)
875   TMPZ84C011_REGS
1354876
1355   AM_RANGE(0xc0, 0xc1) AM_READ(nbmj9195_blitter_0_r)
1356ADDRESS_MAP_END
1357
1358static ADDRESS_MAP_START( writeport_ngpgal, ADDRESS_SPACE_IO, 8 )
1359   ADDRESS_MAP_GLOBAL_MASK(0xff)
1360   AM_RANGE(0x10, 0x13) AM_DEVWRITE("main_ctc", z80ctc_w)
1361   AM_RANGE(0x50, 0x50) AM_WRITE(tmpz84c011_0_pa_w)
1362   AM_RANGE(0x51, 0x51) AM_WRITE(tmpz84c011_0_pb_w)
1363   AM_RANGE(0x52, 0x52) AM_WRITE(tmpz84c011_0_pc_w)
1364   AM_RANGE(0x30, 0x30) AM_WRITE(tmpz84c011_0_pd_w)
1365   AM_RANGE(0x40, 0x40) AM_WRITE(tmpz84c011_0_pe_w)
1366   AM_RANGE(0x54, 0x54) AM_WRITE(tmpz84c011_0_dir_pa_w)
1367   AM_RANGE(0x55, 0x55) AM_WRITE(tmpz84c011_0_dir_pb_w)
1368   AM_RANGE(0x56, 0x56) AM_WRITE(tmpz84c011_0_dir_pc_w)
1369   AM_RANGE(0x34, 0x34) AM_WRITE(tmpz84c011_0_dir_pd_w)
1370   AM_RANGE(0x44, 0x44) AM_WRITE(tmpz84c011_0_dir_pe_w)
1371
1372   AM_RANGE(0xd0, 0xdf) AM_WRITE(nbmj9195_clut_0_w)
1373
1374   AM_RANGE(0xc0, 0xcf) AM_WRITE(nbmj9195_blitter_0_w)
1375
1376877   AM_RANGE(0xa0, 0xa0) AM_WRITE(nbmj9195_sound_w)
1377878   AM_RANGE(0xa4, 0xa4) AM_WRITENOP
1378879   AM_RANGE(0xa8, 0xa8) AM_WRITENOP
1379880   AM_RANGE(0xb0, 0xb0) AM_WRITE(nbmj9195_inputportsel_w)
1380ADDRESS_MAP_END
1381881
1382
1383static ADDRESS_MAP_START( readport_mjgottsu, ADDRESS_SPACE_IO, 8 )
1384   ADDRESS_MAP_GLOBAL_MASK(0xff)
1385   AM_RANGE(0x10, 0x13) AM_DEVREAD("main_ctc", z80ctc_r)
1386   AM_RANGE(0x50, 0x50) AM_READ(tmpz84c011_0_pa_r)
1387   AM_RANGE(0x51, 0x51) AM_READ(tmpz84c011_0_pb_r)
1388   AM_RANGE(0x52, 0x52) AM_READ(tmpz84c011_0_pc_r)
1389   AM_RANGE(0x30, 0x30) AM_READ(tmpz84c011_0_pd_r)
1390   AM_RANGE(0x40, 0x40) AM_READ(tmpz84c011_0_pe_r)
1391   AM_RANGE(0x54, 0x54) AM_READ(tmpz84c011_0_dir_pa_r)
1392   AM_RANGE(0x55, 0x55) AM_READ(tmpz84c011_0_dir_pb_r)
1393   AM_RANGE(0x56, 0x56) AM_READ(tmpz84c011_0_dir_pc_r)
1394   AM_RANGE(0x34, 0x34) AM_READ(tmpz84c011_0_dir_pd_r)
1395   AM_RANGE(0x44, 0x44) AM_READ(tmpz84c011_0_dir_pe_r)
1396
1397   AM_RANGE(0x80, 0x81) AM_READ(nbmj9195_blitter_0_r)
882   AM_RANGE(0xc0, 0xc1) AM_READ(nbmj9195_blitter_0_r)
883   AM_RANGE(0xc0, 0xcf) AM_WRITE(nbmj9195_blitter_0_w)
884   AM_RANGE(0xd0, 0xdf) AM_WRITE(nbmj9195_clut_0_w)
1398885ADDRESS_MAP_END
1399886
1400static ADDRESS_MAP_START( writeport_mjgottsu, ADDRESS_SPACE_IO, 8 )
887static ADDRESS_MAP_START( mjgottsu_io_map, ADDRESS_SPACE_IO, 8 )
1401888   ADDRESS_MAP_GLOBAL_MASK(0xff)
1402   AM_RANGE(0x10, 0x13) AM_DEVWRITE("main_ctc", z80ctc_w)
1403   AM_RANGE(0x50, 0x50) AM_WRITE(tmpz84c011_0_pa_w)
1404   AM_RANGE(0x51, 0x51) AM_WRITE(tmpz84c011_0_pb_w)
1405   AM_RANGE(0x52, 0x52) AM_WRITE(tmpz84c011_0_pc_w)
1406   AM_RANGE(0x30, 0x30) AM_WRITE(tmpz84c011_0_pd_w)
1407   AM_RANGE(0x40, 0x40) AM_WRITE(tmpz84c011_0_pe_w)
1408   AM_RANGE(0x54, 0x54) AM_WRITE(tmpz84c011_0_dir_pa_w)
1409   AM_RANGE(0x55, 0x55) AM_WRITE(tmpz84c011_0_dir_pb_w)
1410   AM_RANGE(0x56, 0x56) AM_WRITE(tmpz84c011_0_dir_pc_w)
1411   AM_RANGE(0x34, 0x34) AM_WRITE(tmpz84c011_0_dir_pd_w)
1412   AM_RANGE(0x44, 0x44) AM_WRITE(tmpz84c011_0_dir_pe_w)
889   TMPZ84C011_REGS
1413890
891   AM_RANGE(0x80, 0x81) AM_READ(nbmj9195_blitter_0_r)
892   AM_RANGE(0x80, 0x8f) AM_WRITE(nbmj9195_blitter_0_w)
1414893   AM_RANGE(0x90, 0x9f) AM_WRITE(nbmj9195_clut_0_w)
1415894
1416   AM_RANGE(0x80, 0x8f) AM_WRITE(nbmj9195_blitter_0_w)
1417
1418895   AM_RANGE(0xa0, 0xa0) AM_WRITE(nbmj9195_sound_w)
1419896   AM_RANGE(0xa4, 0xa4) AM_WRITENOP
1420897   AM_RANGE(0xa8, 0xa8) AM_WRITENOP
1421898   AM_RANGE(0xb0, 0xb0) AM_WRITE(nbmj9195_inputportsel_w)
1422899ADDRESS_MAP_END
1423900
1424
1425static ADDRESS_MAP_START( readport_cmehyou, ADDRESS_SPACE_IO, 8 )
901static ADDRESS_MAP_START( cmehyou_io_map, ADDRESS_SPACE_IO, 8 )
1426902   ADDRESS_MAP_GLOBAL_MASK(0xff)
1427   AM_RANGE(0x10, 0x13) AM_DEVREAD("main_ctc", z80ctc_r)
1428   AM_RANGE(0x50, 0x50) AM_READ(tmpz84c011_0_pa_r)
1429   AM_RANGE(0x51, 0x51) AM_READ(tmpz84c011_0_pb_r)
1430   AM_RANGE(0x52, 0x52) AM_READ(tmpz84c011_0_pc_r)
1431   AM_RANGE(0x30, 0x30) AM_READ(tmpz84c011_0_pd_r)
1432   AM_RANGE(0x40, 0x40) AM_READ(tmpz84c011_0_pe_r)
1433   AM_RANGE(0x54, 0x54) AM_READ(tmpz84c011_0_dir_pa_r)
1434   AM_RANGE(0x55, 0x55) AM_READ(tmpz84c011_0_dir_pb_r)
1435   AM_RANGE(0x56, 0x56) AM_READ(tmpz84c011_0_dir_pc_r)
1436   AM_RANGE(0x34, 0x34) AM_READ(tmpz84c011_0_dir_pd_r)
1437   AM_RANGE(0x44, 0x44) AM_READ(tmpz84c011_0_dir_pe_r)
903   TMPZ84C011_REGS
1438904
1439   AM_RANGE(0xc0, 0xc1) AM_READ(nbmj9195_blitter_0_r)
1440ADDRESS_MAP_END
1441
1442static ADDRESS_MAP_START( writeport_cmehyou, ADDRESS_SPACE_IO, 8 )
1443   ADDRESS_MAP_GLOBAL_MASK(0xff)
1444   AM_RANGE(0x10, 0x13) AM_DEVWRITE("main_ctc", z80ctc_w)
1445   AM_RANGE(0x50, 0x50) AM_WRITE(tmpz84c011_0_pa_w)
1446   AM_RANGE(0x51, 0x51) AM_WRITE(tmpz84c011_0_pb_w)
1447   AM_RANGE(0x52, 0x52) AM_WRITE(tmpz84c011_0_pc_w)
1448   AM_RANGE(0x30, 0x30) AM_WRITE(tmpz84c011_0_pd_w)
1449   AM_RANGE(0x40, 0x40) AM_WRITE(tmpz84c011_0_pe_w)
1450   AM_RANGE(0x54, 0x54) AM_WRITE(tmpz84c011_0_dir_pa_w)
1451   AM_RANGE(0x55, 0x55) AM_WRITE(tmpz84c011_0_dir_pb_w)
1452   AM_RANGE(0x56, 0x56) AM_WRITE(tmpz84c011_0_dir_pc_w)
1453   AM_RANGE(0x34, 0x34) AM_WRITE(tmpz84c011_0_dir_pd_w)
1454   AM_RANGE(0x44, 0x44) AM_WRITE(tmpz84c011_0_dir_pe_w)
1455
1456   AM_RANGE(0xd0, 0xdf) AM_WRITE(nbmj9195_clut_0_w)
1457
1458   AM_RANGE(0xc0, 0xcf) AM_WRITE(nbmj9195_blitter_0_w)
1459
1460905   AM_RANGE(0xa0, 0xa0) AM_WRITE(nbmj9195_sound_w)
1461906   AM_RANGE(0xa8, 0xa8) AM_WRITENOP
1462907   AM_RANGE(0xb0, 0xb0) AM_WRITE(nbmj9195_inputportsel_w)
1463908   AM_RANGE(0xb4, 0xb4) AM_WRITENOP
1464ADDRESS_MAP_END
1465909
1466
1467static ADDRESS_MAP_START( readport_mjkoiura, ADDRESS_SPACE_IO, 8 )
1468   ADDRESS_MAP_GLOBAL_MASK(0xff)
1469   AM_RANGE(0x10, 0x13) AM_DEVREAD("main_ctc", z80ctc_r)
1470   AM_RANGE(0x50, 0x50) AM_READ(tmpz84c011_0_pa_r)
1471   AM_RANGE(0x51, 0x51) AM_READ(tmpz84c011_0_pb_r)
1472   AM_RANGE(0x52, 0x52) AM_READ(tmpz84c011_0_pc_r)
1473   AM_RANGE(0x30, 0x30) AM_READ(tmpz84c011_0_pd_r)
1474   AM_RANGE(0x40, 0x40) AM_READ(tmpz84c011_0_pe_r)
1475   AM_RANGE(0x54, 0x54) AM_READ(tmpz84c011_0_dir_pa_r)
1476   AM_RANGE(0x55, 0x55) AM_READ(tmpz84c011_0_dir_pb_r)
1477   AM_RANGE(0x56, 0x56) AM_READ(tmpz84c011_0_dir_pc_r)
1478   AM_RANGE(0x34, 0x34) AM_READ(tmpz84c011_0_dir_pd_r)
1479   AM_RANGE(0x44, 0x44) AM_READ(tmpz84c011_0_dir_pe_r)
1480
1481   AM_RANGE(0x80, 0x81) AM_READ(nbmj9195_blitter_0_r)
910   AM_RANGE(0xc0, 0xc1) AM_READ(nbmj9195_blitter_0_r)
911   AM_RANGE(0xc0, 0xcf) AM_WRITE(nbmj9195_blitter_0_w)
912   AM_RANGE(0xd0, 0xdf) AM_WRITE(nbmj9195_clut_0_w)
1482913ADDRESS_MAP_END
1483914
1484static ADDRESS_MAP_START( writeport_mjkoiura, ADDRESS_SPACE_IO, 8 )
915static ADDRESS_MAP_START( mjkoiura_io_map, ADDRESS_SPACE_IO, 8 )
1485916   ADDRESS_MAP_GLOBAL_MASK(0xff)
1486   AM_RANGE(0x10, 0x13) AM_DEVWRITE("main_ctc", z80ctc_w)
1487   AM_RANGE(0x50, 0x50) AM_WRITE(tmpz84c011_0_pa_w)
1488   AM_RANGE(0x51, 0x51) AM_WRITE(tmpz84c011_0_pb_w)
1489   AM_RANGE(0x52, 0x52) AM_WRITE(tmpz84c011_0_pc_w)
1490   AM_RANGE(0x30, 0x30) AM_WRITE(tmpz84c011_0_pd_w)
1491   AM_RANGE(0x40, 0x40) AM_WRITE(tmpz84c011_0_pe_w)
1492   AM_RANGE(0x54, 0x54) AM_WRITE(tmpz84c011_0_dir_pa_w)
1493   AM_RANGE(0x55, 0x55) AM_WRITE(tmpz84c011_0_dir_pb_w)
1494   AM_RANGE(0x56, 0x56) AM_WRITE(tmpz84c011_0_dir_pc_w)
1495   AM_RANGE(0x34, 0x34) AM_WRITE(tmpz84c011_0_dir_pd_w)
1496   AM_RANGE(0x44, 0x44) AM_WRITE(tmpz84c011_0_dir_pe_w)
917   TMPZ84C011_REGS
1497918
919   AM_RANGE(0x80, 0x81) AM_READ(nbmj9195_blitter_0_r)
920   AM_RANGE(0x80, 0x8f) AM_WRITE(nbmj9195_blitter_0_w)
1498921   AM_RANGE(0x90, 0x9f) AM_WRITE(nbmj9195_clut_0_w)
1499922
1500   AM_RANGE(0x80, 0x8f) AM_WRITE(nbmj9195_blitter_0_w)
1501
1502923   AM_RANGE(0xa0, 0xa0) AM_WRITE(nbmj9195_sound_w)
1503924   AM_RANGE(0xa4, 0xa4) AM_WRITENOP
1504925   AM_RANGE(0xa8, 0xa8) AM_WRITENOP
1505926   AM_RANGE(0xb0, 0xb0) AM_WRITE(nbmj9195_inputportsel_w)
1506927ADDRESS_MAP_END
1507928
1508
1509static ADDRESS_MAP_START( readport_mkoiuraa, ADDRESS_SPACE_IO, 8 )
929static ADDRESS_MAP_START( mkoiuraa_io_map, ADDRESS_SPACE_IO, 8 )
1510930   ADDRESS_MAP_GLOBAL_MASK(0xff)
1511   AM_RANGE(0x10, 0x13) AM_DEVREAD("main_ctc", z80ctc_r)
1512   AM_RANGE(0x50, 0x50) AM_READ(tmpz84c011_0_pa_r)
1513   AM_RANGE(0x51, 0x51) AM_READ(tmpz84c011_0_pb_r)
1514   AM_RANGE(0x52, 0x52) AM_READ(tmpz84c011_0_pc_r)
1515   AM_RANGE(0x30, 0x30) AM_READ(tmpz84c011_0_pd_r)
1516   AM_RANGE(0x40, 0x40) AM_READ(tmpz84c011_0_pe_r)
1517   AM_RANGE(0x54, 0x54) AM_READ(tmpz84c011_0_dir_pa_r)
1518   AM_RANGE(0x55, 0x55) AM_READ(tmpz84c011_0_dir_pb_r)
1519   AM_RANGE(0x56, 0x56) AM_READ(tmpz84c011_0_dir_pc_r)
1520   AM_RANGE(0x34, 0x34) AM_READ(tmpz84c011_0_dir_pd_r)
1521   AM_RANGE(0x44, 0x44) AM_READ(tmpz84c011_0_dir_pe_r)
931   TMPZ84C011_REGS
1522932
1523   AM_RANGE(0xc0, 0xc1) AM_READ(nbmj9195_blitter_0_r)
1524ADDRESS_MAP_END
1525
1526static ADDRESS_MAP_START( writeport_mkoiuraa, ADDRESS_SPACE_IO, 8 )
1527   ADDRESS_MAP_GLOBAL_MASK(0xff)
1528   AM_RANGE(0x10, 0x13) AM_DEVWRITE("main_ctc", z80ctc_w)
1529   AM_RANGE(0x50, 0x50) AM_WRITE(tmpz84c011_0_pa_w)
1530   AM_RANGE(0x51, 0x51) AM_WRITE(tmpz84c011_0_pb_w)
1531   AM_RANGE(0x52, 0x52) AM_WRITE(tmpz84c011_0_pc_w)
1532   AM_RANGE(0x30, 0x30) AM_WRITE(tmpz84c011_0_pd_w)
1533   AM_RANGE(0x40, 0x40) AM_WRITE(tmpz84c011_0_pe_w)
1534   AM_RANGE(0x54, 0x54) AM_WRITE(tmpz84c011_0_dir_pa_w)
1535   AM_RANGE(0x55, 0x55) AM_WRITE(tmpz84c011_0_dir_pb_w)
1536   AM_RANGE(0x56, 0x56) AM_WRITE(tmpz84c011_0_dir_pc_w)
1537   AM_RANGE(0x34, 0x34) AM_WRITE(tmpz84c011_0_dir_pd_w)
1538   AM_RANGE(0x44, 0x44) AM_WRITE(tmpz84c011_0_dir_pe_w)
1539
1540   AM_RANGE(0xd0, 0xdf) AM_WRITE(nbmj9195_clut_0_w)
1541
1542   AM_RANGE(0xc0, 0xcf) AM_WRITE(nbmj9195_blitter_0_w)
1543
1544933   AM_RANGE(0xa0, 0xa0) AM_WRITE(nbmj9195_sound_w)
1545934   AM_RANGE(0xa4, 0xa4) AM_WRITENOP
1546935   AM_RANGE(0xa8, 0xa8) AM_WRITENOP
1547936   AM_RANGE(0xb0, 0xb0) AM_WRITE(nbmj9195_inputportsel_w)
937
938   AM_RANGE(0xc0, 0xc1) AM_READ(nbmj9195_blitter_0_r)
939   AM_RANGE(0xc0, 0xcf) AM_WRITE(nbmj9195_blitter_0_w)
940   AM_RANGE(0xd0, 0xdf) AM_WRITE(nbmj9195_clut_0_w)
1548941ADDRESS_MAP_END
1549942
1550
1551static ADDRESS_MAP_START( readport_mscoutm, ADDRESS_SPACE_IO, 8 )
943static ADDRESS_MAP_START( mscoutm_io_map, ADDRESS_SPACE_IO, 8 )
1552944   ADDRESS_MAP_GLOBAL_MASK(0xff)
1553   AM_RANGE(0x10, 0x13) AM_DEVREAD("main_ctc", z80ctc_r)
1554   AM_RANGE(0x50, 0x50) AM_READ(tmpz84c011_0_pa_r)
1555   AM_RANGE(0x51, 0x51) AM_READ(tmpz84c011_0_pb_r)
1556   AM_RANGE(0x52, 0x52) AM_READ(tmpz84c011_0_pc_r)
1557   AM_RANGE(0x30, 0x30) AM_READ(tmpz84c011_0_pd_r)
1558   AM_RANGE(0x40, 0x40) AM_READ(tmpz84c011_0_pe_r)
1559   AM_RANGE(0x54, 0x54) AM_READ(tmpz84c011_0_dir_pa_r)
1560   AM_RANGE(0x55, 0x55) AM_READ(tmpz84c011_0_dir_pb_r)
1561   AM_RANGE(0x56, 0x56) AM_READ(tmpz84c011_0_dir_pc_r)
1562   AM_RANGE(0x34, 0x34) AM_READ(tmpz84c011_0_dir_pd_r)
1563   AM_RANGE(0x44, 0x44) AM_READ(tmpz84c011_0_dir_pe_r)
945   TMPZ84C011_REGS
1564946
1565947   AM_RANGE(0x80, 0x80) AM_READ(mscoutm_dipsw_1_r)
1566948   AM_RANGE(0x82, 0x82) AM_READ(mscoutm_dipsw_0_r)
949   AM_RANGE(0x84, 0x84) AM_WRITE(nbmj9195_sound_w)
1567950
1568   AM_RANGE(0xc0, 0xc1) AM_READ(nbmj9195_blitter_0_r)
1569   AM_RANGE(0xe0, 0xe1) AM_READ(nbmj9195_blitter_1_r)
1570ADDRESS_MAP_END
1571
1572static ADDRESS_MAP_START( writeport_mscoutm, ADDRESS_SPACE_IO, 8 )
1573   ADDRESS_MAP_GLOBAL_MASK(0xff)
1574   AM_RANGE(0x10, 0x13) AM_DEVWRITE("main_ctc", z80ctc_w)
1575   AM_RANGE(0x50, 0x50) AM_WRITE(tmpz84c011_0_pa_w)
1576   AM_RANGE(0x51, 0x51) AM_WRITE(tmpz84c011_0_pb_w)
1577   AM_RANGE(0x52, 0x52) AM_WRITE(tmpz84c011_0_pc_w)
1578   AM_RANGE(0x30, 0x30) AM_WRITE(tmpz84c011_0_pd_w)
1579   AM_RANGE(0x40, 0x40) AM_WRITE(tmpz84c011_0_pe_w)
1580   AM_RANGE(0x54, 0x54) AM_WRITE(tmpz84c011_0_dir_pa_w)
1581   AM_RANGE(0x55, 0x55) AM_WRITE(tmpz84c011_0_dir_pb_w)
1582   AM_RANGE(0x56, 0x56) AM_WRITE(tmpz84c011_0_dir_pc_w)
1583   AM_RANGE(0x34, 0x34) AM_WRITE(tmpz84c011_0_dir_pd_w)
1584   AM_RANGE(0x44, 0x44) AM_WRITE(tmpz84c011_0_dir_pe_w)
1585
1586   AM_RANGE(0xd0, 0xdf) AM_WRITE(nbmj9195_clut_0_w)
1587   AM_RANGE(0xf0, 0xff) AM_WRITE(nbmj9195_clut_1_w)
1588
1589951   AM_RANGE(0xa0, 0xa6) AM_WRITENOP         // nb22090 param ?
1590952
953   AM_RANGE(0xc0, 0xc1) AM_READ(nbmj9195_blitter_0_r)
1591954   AM_RANGE(0xc0, 0xcf) AM_WRITE(nbmj9195_blitter_0_w)
955
956   AM_RANGE(0xd0, 0xdf) AM_WRITE(nbmj9195_clut_0_w)
957   AM_RANGE(0xe0, 0xe1) AM_READ(nbmj9195_blitter_1_r)
1592958   AM_RANGE(0xe0, 0xef) AM_WRITE(nbmj9195_blitter_1_w)
1593959
1594   AM_RANGE(0x84, 0x84) AM_WRITE(nbmj9195_sound_w)
960   AM_RANGE(0xf0, 0xff) AM_WRITE(nbmj9195_clut_1_w)
1595961ADDRESS_MAP_END
1596962
1597
1598static ADDRESS_MAP_START( readport_imekura, ADDRESS_SPACE_IO, 8 )
963static ADDRESS_MAP_START( imekura_io_map, ADDRESS_SPACE_IO, 8 )
1599964   ADDRESS_MAP_GLOBAL_MASK(0xff)
1600   AM_RANGE(0x10, 0x13) AM_DEVREAD("main_ctc", z80ctc_r)
1601   AM_RANGE(0x50, 0x50) AM_READ(tmpz84c011_0_pa_r)
1602   AM_RANGE(0x51, 0x51) AM_READ(tmpz84c011_0_pb_r)
1603   AM_RANGE(0x52, 0x52) AM_READ(tmpz84c011_0_pc_r)
1604   AM_RANGE(0x30, 0x30) AM_READ(tmpz84c011_0_pd_r)
1605   AM_RANGE(0x40, 0x40) AM_READ(tmpz84c011_0_pe_r)
1606   AM_RANGE(0x54, 0x54) AM_READ(tmpz84c011_0_dir_pa_r)
1607   AM_RANGE(0x55, 0x55) AM_READ(tmpz84c011_0_dir_pb_r)
1608   AM_RANGE(0x56, 0x56) AM_READ(tmpz84c011_0_dir_pc_r)
1609   AM_RANGE(0x34, 0x34) AM_READ(tmpz84c011_0_dir_pd_r)
1610   AM_RANGE(0x44, 0x44) AM_READ(tmpz84c011_0_dir_pe_r)
965   TMPZ84C011_REGS
1611966
1612967   AM_RANGE(0x80, 0x80) AM_READ(mscoutm_dipsw_1_r)
1613968   AM_RANGE(0x82, 0x82) AM_READ(mscoutm_dipsw_0_r)
969   AM_RANGE(0x84, 0x84) AM_WRITE(nbmj9195_sound_w)
1614970
971   AM_RANGE(0xb0, 0xb6) AM_WRITENOP         // nb22090 param ?
972
1615973   AM_RANGE(0xc0, 0xc1) AM_READ(nbmj9195_blitter_0_r)
1616   AM_RANGE(0xe0, 0xe1) AM_READ(nbmj9195_blitter_1_r)
1617ADDRESS_MAP_END
974   AM_RANGE(0xc0, 0xcf) AM_WRITE(nbmj9195_blitter_0_w)
1618975
1619static ADDRESS_MAP_START( writeport_imekura, ADDRESS_SPACE_IO, 8 )
1620   ADDRESS_MAP_GLOBAL_MASK(0xff)
1621   AM_RANGE(0x10, 0x13) AM_DEVWRITE("main_ctc", z80ctc_w)
1622   AM_RANGE(0x50, 0x50) AM_WRITE(tmpz84c011_0_pa_w)
1623   AM_RANGE(0x51, 0x51) AM_WRITE(tmpz84c011_0_pb_w)
1624   AM_RANGE(0x52, 0x52) AM_WRITE(tmpz84c011_0_pc_w)
1625   AM_RANGE(0x30, 0x30) AM_WRITE(tmpz84c011_0_pd_w)
1626   AM_RANGE(0x40, 0x40) AM_WRITE(tmpz84c011_0_pe_w)
1627   AM_RANGE(0x54, 0x54) AM_WRITE(tmpz84c011_0_dir_pa_w)
1628   AM_RANGE(0x55, 0x55) AM_WRITE(tmpz84c011_0_dir_pb_w)
1629   AM_RANGE(0x56, 0x56) AM_WRITE(tmpz84c011_0_dir_pc_w)
1630   AM_RANGE(0x34, 0x34) AM_WRITE(tmpz84c011_0_dir_pd_w)
1631   AM_RANGE(0x44, 0x44) AM_WRITE(tmpz84c011_0_dir_pe_w)
1632
1633976   AM_RANGE(0xd0, 0xdf) AM_WRITE(nbmj9195_clut_0_w)
1634   AM_RANGE(0xf0, 0xff) AM_WRITE(nbmj9195_clut_1_w)
1635977
1636   AM_RANGE(0xb0, 0xb6) AM_WRITENOP         // nb22090 param ?
1637
1638   AM_RANGE(0xc0, 0xcf) AM_WRITE(nbmj9195_blitter_0_w)
978   AM_RANGE(0xe0, 0xe1) AM_READ(nbmj9195_blitter_1_r)
1639979   AM_RANGE(0xe0, 0xef) AM_WRITE(nbmj9195_blitter_1_w)
1640
1641   AM_RANGE(0x84, 0x84) AM_WRITE(nbmj9195_sound_w)
980   AM_RANGE(0xf0, 0xff) AM_WRITE(nbmj9195_clut_1_w)
1642981ADDRESS_MAP_END
1643982
1644
1645static ADDRESS_MAP_START( readport_mjegolf, ADDRESS_SPACE_IO, 8 )
983static ADDRESS_MAP_START( mjegolf_io_map, ADDRESS_SPACE_IO, 8 )
1646984   ADDRESS_MAP_GLOBAL_MASK(0xff)
1647   AM_RANGE(0x10, 0x13) AM_DEVREAD("main_ctc", z80ctc_r)
1648   AM_RANGE(0x50, 0x50) AM_READ(tmpz84c011_0_pa_r)
1649   AM_RANGE(0x51, 0x51) AM_READ(tmpz84c011_0_pb_r)
1650   AM_RANGE(0x52, 0x52) AM_READ(tmpz84c011_0_pc_r)
1651   AM_RANGE(0x30, 0x30) AM_READ(tmpz84c011_0_pd_r)
1652   AM_RANGE(0x40, 0x40) AM_READ(tmpz84c011_0_pe_r)
1653   AM_RANGE(0x54, 0x54) AM_READ(tmpz84c011_0_dir_pa_r)
1654   AM_RANGE(0x55, 0x55) AM_READ(tmpz84c011_0_dir_pb_r)
1655   AM_RANGE(0x56, 0x56) AM_READ(tmpz84c011_0_dir_pc_r)
1656   AM_RANGE(0x34, 0x34) AM_READ(tmpz84c011_0_dir_pd_r)
1657   AM_RANGE(0x44, 0x44) AM_READ(tmpz84c011_0_dir_pe_r)
985   TMPZ84C011_REGS
1658986
1659   AM_RANGE(0xe0, 0xe0) AM_READ(mscoutm_dipsw_1_r)
1660   AM_RANGE(0xe2, 0xe2) AM_READ(mscoutm_dipsw_0_r)
987   AM_RANGE(0x80, 0x86) AM_WRITENOP         // nb22090 param ?
1661988
1662989   AM_RANGE(0xa0, 0xa1) AM_READ(nbmj9195_blitter_0_r)
1663   AM_RANGE(0xc0, 0xc1) AM_READ(nbmj9195_blitter_1_r)
1664ADDRESS_MAP_END
1665
1666static ADDRESS_MAP_START( writeport_mjegolf, ADDRESS_SPACE_IO, 8 )
1667   ADDRESS_MAP_GLOBAL_MASK(0xff)
1668   AM_RANGE(0x10, 0x13) AM_DEVWRITE("main_ctc", z80ctc_w)
1669   AM_RANGE(0x50, 0x50) AM_WRITE(tmpz84c011_0_pa_w)
1670   AM_RANGE(0x51, 0x51) AM_WRITE(tmpz84c011_0_pb_w)
1671   AM_RANGE(0x52, 0x52) AM_WRITE(tmpz84c011_0_pc_w)
1672   AM_RANGE(0x30, 0x30) AM_WRITE(tmpz84c011_0_pd_w)
1673   AM_RANGE(0x40, 0x40) AM_WRITE(tmpz84c011_0_pe_w)
1674   AM_RANGE(0x54, 0x54) AM_WRITE(tmpz84c011_0_dir_pa_w)
1675   AM_RANGE(0x55, 0x55) AM_WRITE(tmpz84c011_0_dir_pb_w)
1676   AM_RANGE(0x56, 0x56) AM_WRITE(tmpz84c011_0_dir_pc_w)
1677   AM_RANGE(0x34, 0x34) AM_WRITE(tmpz84c011_0_dir_pd_w)
1678   AM_RANGE(0x44, 0x44) AM_WRITE(tmpz84c011_0_dir_pe_w)
1679
990   AM_RANGE(0xa0, 0xaf) AM_WRITE(nbmj9195_blitter_0_w)
1680991   AM_RANGE(0xb0, 0xbf) AM_WRITE(nbmj9195_clut_0_w)
1681   AM_RANGE(0xd0, 0xdf) AM_WRITE(nbmj9195_clut_1_w)
1682992
1683   AM_RANGE(0x80, 0x86) AM_WRITENOP         // nb22090 param ?
1684
1685   AM_RANGE(0xa0, 0xaf) AM_WRITE(nbmj9195_blitter_0_w)
993   AM_RANGE(0xc0, 0xc1) AM_READ(nbmj9195_blitter_1_r)
1686994   AM_RANGE(0xc0, 0xcf) AM_WRITE(nbmj9195_blitter_1_w)
1687995
996   AM_RANGE(0xd0, 0xdf) AM_WRITE(nbmj9195_clut_1_w)
997
998   AM_RANGE(0xe0, 0xe0) AM_READ(mscoutm_dipsw_1_r)
999   AM_RANGE(0xe2, 0xe2) AM_READ(mscoutm_dipsw_0_r)
16881000   AM_RANGE(0xe4, 0xe4) AM_WRITE(nbmj9195_sound_w)
16891001ADDRESS_MAP_END
16901002
16911003
1692static ADDRESS_MAP_START( sound_readport, ADDRESS_SPACE_IO, 8 )
1693   ADDRESS_MAP_GLOBAL_MASK(0xff)
1694   AM_RANGE(0x10, 0x13) AM_DEVREAD("audio_ctc", z80ctc_r)
1695   AM_RANGE(0x50, 0x50) AM_READ(tmpz84c011_1_pa_r)
1696   AM_RANGE(0x51, 0x51) AM_READ(tmpz84c011_1_pb_r)
1697   AM_RANGE(0x52, 0x52) AM_READ(tmpz84c011_1_pc_r)
1698   AM_RANGE(0x30, 0x30) AM_READ(tmpz84c011_1_pd_r)
1699   AM_RANGE(0x40, 0x40) AM_READ(tmpz84c011_1_pe_r)
1700   AM_RANGE(0x54, 0x54) AM_READ(tmpz84c011_1_dir_pa_r)
1701   AM_RANGE(0x55, 0x55) AM_READ(tmpz84c011_1_dir_pb_r)
1702   AM_RANGE(0x56, 0x56) AM_READ(tmpz84c011_1_dir_pc_r)
1703   AM_RANGE(0x34, 0x34) AM_READ(tmpz84c011_1_dir_pd_r)
1704   AM_RANGE(0x44, 0x44) AM_READ(tmpz84c011_1_dir_pe_r)
1004
1005static ADDRESS_MAP_START( sailorws_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
1006   AM_RANGE(0x0000, 0x77ff) AM_ROM
1007   AM_RANGE(0x7800, 0x7fff) AM_RAM
1008   AM_RANGE(0x8000, 0xffff) AM_ROMBANK(1)
17051009ADDRESS_MAP_END
17061010
1707static ADDRESS_MAP_START( sound_writeport, ADDRESS_SPACE_IO, 8 )
1011static ADDRESS_MAP_START( sailorws_sound_io_map, ADDRESS_SPACE_IO, 8 )
17081012   ADDRESS_MAP_GLOBAL_MASK(0xff)
1709   AM_RANGE(0x10, 0x13) AM_DEVWRITE("audio_ctc", z80ctc_w)
1710   AM_RANGE(0x50, 0x50) AM_WRITE(tmpz84c011_1_pa_w)
1711   AM_RANGE(0x51, 0x51) AM_WRITE(tmpz84c011_1_pb_w)
1712   AM_RANGE(0x52, 0x52) AM_WRITE(tmpz84c011_1_pc_w)
1713   AM_RANGE(0x30, 0x30) AM_WRITE(tmpz84c011_1_pd_w)
1714   AM_RANGE(0x40, 0x40) AM_WRITE(tmpz84c011_1_pe_w)
1715   AM_RANGE(0x54, 0x54) AM_WRITE(tmpz84c011_1_dir_pa_w)
1716   AM_RANGE(0x55, 0x55) AM_WRITE(tmpz84c011_1_dir_pb_w)
1717   AM_RANGE(0x56, 0x56) AM_WRITE(tmpz84c011_1_dir_pc_w)
1718   AM_RANGE(0x34, 0x34) AM_WRITE(tmpz84c011_1_dir_pd_w)
1719   AM_RANGE(0x44, 0x44) AM_WRITE(tmpz84c011_1_dir_pe_w)
1720
1013   AM_RANGE(0x10, 0x13) AM_DEVREADWRITE("audio_ctc", z80ctc_r,z80ctc_w)
1014   AM_RANGE(0x50, 0x50) AM_READWRITE(tmpz84c011_1_pa_r,tmpz84c011_1_pa_w)
1015   AM_RANGE(0x51, 0x51) AM_READWRITE(tmpz84c011_1_pb_r,tmpz84c011_1_pb_w)
1016   AM_RANGE(0x52, 0x52) AM_READWRITE(tmpz84c011_1_pc_r,tmpz84c011_1_pc_w)
1017   AM_RANGE(0x30, 0x30) AM_READWRITE(tmpz84c011_1_pd_r,tmpz84c011_1_pd_w)
1018   AM_RANGE(0x40, 0x40) AM_READWRITE(tmpz84c011_1_pe_r,tmpz84c011_1_pe_w)
1019   AM_RANGE(0x54, 0x54) AM_READWRITE(tmpz84c011_1_dir_pa_r,tmpz84c011_1_dir_pa_w)
1020   AM_RANGE(0x55, 0x55) AM_READWRITE(tmpz84c011_1_dir_pb_r,tmpz84c011_1_dir_pb_w)
1021   AM_RANGE(0x56, 0x56) AM_READWRITE(tmpz84c011_1_dir_pc_r,tmpz84c011_1_dir_pc_w)
1022   AM_RANGE(0x34, 0x34) AM_READWRITE(tmpz84c011_1_dir_pd_r,tmpz84c011_1_dir_pd_w)
1023   AM_RANGE(0x44, 0x44) AM_READWRITE(tmpz84c011_1_dir_pe_r,tmpz84c011_1_dir_pe_w)
17211024   AM_RANGE(0x80, 0x81) AM_DEVWRITE("ym", ym3812_w)
17221025ADDRESS_MAP_END
17231026
1724
17251027/********************************************************************************
17261028These Nichibutsu Mahjong games use two different but very similar control ports:
17271029    - the 1st type is the common control panel used by many other nbmj* drivers
r4679r4680
36252927   /* basic machine hardware */
36262928   MDRV_CPU_ADD("maincpu", Z80, 12000000/2)      /* TMPZ84C011, 6.00 MHz */
36272929   MDRV_CPU_CONFIG(daisy_chain_main)
3628   MDRV_CPU_PROGRAM_MAP(readmem_sailorws, writemem_sailorws)
3629   MDRV_CPU_IO_MAP(readport_sailorws, writeport_sailorws)
2930   MDRV_CPU_PROGRAM_MAP(sailorws_map, 0)
2931   MDRV_CPU_IO_MAP(sailorws_io_map, 0)
36302932   MDRV_CPU_VBLANK_INT("screen", ctc0_trg1)            /* vblank is connect to ctc triggfer */
36312933
36322934   MDRV_CPU_ADD("audiocpu", Z80, 8000000/1)               /* TMPZ84C011, 8.00 MHz */
36332935   MDRV_CPU_CONFIG(daisy_chain_sound)
3634   MDRV_CPU_PROGRAM_MAP(sound_readmem, sound_writemem)
3635   MDRV_CPU_IO_MAP(sound_readport, sound_writeport)
2936   MDRV_CPU_PROGRAM_MAP(sailorws_sound_map, 0)
2937   MDRV_CPU_IO_MAP(sailorws_sound_io_map, 0)
36362938
36372939   MDRV_Z80CTC_ADD("main_ctc", 12000000/2 /* same as "maincpu" */, ctc_intf_main)
36382940   MDRV_Z80CTC_ADD("audio_ctc", 8000000/1 /* same as "audiocpu" */, ctc_intf_audio)
r4679r4680
36972999   /* basic machine hardware */
36983000   MDRV_IMPORT_FROM( NBMJDRV1 )
36993001   MDRV_CPU_MODIFY("maincpu")
3700   MDRV_CPU_PROGRAM_MAP(readmem_mjuraden, writemem_mjuraden)
3701   MDRV_CPU_IO_MAP(readport_mjuraden, writeport_mjuraden)
3002   MDRV_CPU_PROGRAM_MAP(mjuraden_map, 0)
3003   MDRV_CPU_IO_MAP(mjuraden_io_map, 0)
37023004MACHINE_DRIVER_END
37033005
37043006
r4679r4680
37073009   /* basic machine hardware */
37083010   MDRV_IMPORT_FROM( NBMJDRV1 )
37093011   MDRV_CPU_MODIFY("maincpu")
3710   MDRV_CPU_PROGRAM_MAP(readmem_koinomp, writemem_koinomp)
3711   MDRV_CPU_IO_MAP(readport_koinomp, writeport_koinomp)
3012   MDRV_CPU_PROGRAM_MAP(koinomp_map, 0)
3013   MDRV_CPU_IO_MAP(koinomp_io_map, 0)
37123014MACHINE_DRIVER_END
37133015
37143016
r4679r4680
37173019   /* basic machine hardware */
37183020   MDRV_IMPORT_FROM( NBMJDRV1 )
37193021   MDRV_CPU_MODIFY("maincpu")
3720   MDRV_CPU_IO_MAP(readport_patimono, writeport_patimono)
3022   MDRV_CPU_IO_MAP(patimono_io_map, 0)
37213023MACHINE_DRIVER_END
37223024
37233025
r4679r4680
37263028   /* basic machine hardware */
37273029   MDRV_IMPORT_FROM( NBMJDRV1 )
37283030   MDRV_CPU_MODIFY("maincpu")
3729   MDRV_CPU_IO_MAP(readport_patimono, writeport_patimono)
3031   MDRV_CPU_IO_MAP(patimono_io_map, 0)
37303032
37313033   MDRV_NVRAM_HANDLER(nbmj9195)
37323034MACHINE_DRIVER_END
r4679r4680
37373039   /* basic machine hardware */
37383040   MDRV_IMPORT_FROM( NBMJDRV1 )
37393041   MDRV_CPU_MODIFY("maincpu")
3740   MDRV_CPU_PROGRAM_MAP(readmem_koinomp, writemem_koinomp)
3741   MDRV_CPU_IO_MAP(readport_mmehyou, writeport_mmehyou)
3042   MDRV_CPU_PROGRAM_MAP(koinomp_map, 0)
3043   MDRV_CPU_IO_MAP(mmehyou_io_map, 0)
37423044
37433045   MDRV_NVRAM_HANDLER(nbmj9195)
37443046MACHINE_DRIVER_END
r4679r4680
37493051   /* basic machine hardware */
37503052   MDRV_IMPORT_FROM( NBMJDRV1 )
37513053   MDRV_CPU_MODIFY("maincpu")
3752   MDRV_CPU_PROGRAM_MAP(readmem_koinomp, writemem_koinomp)
3753   MDRV_CPU_IO_MAP(readport_koinomp, writeport_koinomp)
3054   MDRV_CPU_PROGRAM_MAP(koinomp_map, 0)
3055   MDRV_CPU_IO_MAP(koinomp_io_map, 0)
37543056
37553057   MDRV_NVRAM_HANDLER(nbmj9195)
37563058MACHINE_DRIVER_END
r4679r4680
37613063   /* basic machine hardware */
37623064   MDRV_IMPORT_FROM( NBMJDRV1 )
37633065   MDRV_CPU_MODIFY("maincpu")
3764   MDRV_CPU_IO_MAP(readport_gal10ren, writeport_gal10ren)
3066   MDRV_CPU_IO_MAP(gal10ren_io_map, 0)
37653067MACHINE_DRIVER_END
37663068
37673069
r4679r4680
37703072   /* basic machine hardware */
37713073   MDRV_IMPORT_FROM( NBMJDRV1 )
37723074   MDRV_CPU_MODIFY("maincpu")
3773   MDRV_CPU_IO_MAP(readport_renaiclb, writeport_renaiclb)
3075   MDRV_CPU_IO_MAP(renaiclb_io_map, 0)
37743076MACHINE_DRIVER_END
37753077
37763078
r4679r4680
37793081   /* basic machine hardware */
37803082   MDRV_IMPORT_FROM( NBMJDRV1 )
37813083   MDRV_CPU_MODIFY("maincpu")
3782   MDRV_CPU_IO_MAP(readport_mjlaman, writeport_mjlaman)
3084   MDRV_CPU_IO_MAP(mjlaman_io_map, 0)
37833085MACHINE_DRIVER_END
37843086
37853087
r4679r4680
37883090   /* basic machine hardware */
37893091   MDRV_IMPORT_FROM( NBMJDRV1 )
37903092   MDRV_CPU_MODIFY("maincpu")
3791   MDRV_CPU_IO_MAP(readport_mkeibaou, writeport_mkeibaou)
3093   MDRV_CPU_IO_MAP(mkeibaou_io_map, 0)
37923094MACHINE_DRIVER_END
37933095
37943096
r4679r4680
37973099   /* basic machine hardware */
37983100   MDRV_IMPORT_FROM( NBMJDRV1 )
37993101   MDRV_CPU_MODIFY("maincpu")
3800   MDRV_CPU_IO_MAP(readport_pachiten, writeport_pachiten)
3102   MDRV_CPU_IO_MAP(pachiten_io_map, 0)
38013103
38023104   MDRV_NVRAM_HANDLER(nbmj9195)
38033105MACHINE_DRIVER_END
r4679r4680
38153117   /* basic machine hardware */
38163118   MDRV_IMPORT_FROM( NBMJDRV1 )
38173119   MDRV_CPU_MODIFY("maincpu")
3818   MDRV_CPU_IO_MAP(readport_sailorwr, writeport_sailorwr)
3120   MDRV_CPU_IO_MAP(sailorwr_io_map, 0)
38193121
38203122   MDRV_NVRAM_HANDLER(nbmj9195)
38213123MACHINE_DRIVER_END
r4679r4680
38263128   /* basic machine hardware */
38273129   MDRV_IMPORT_FROM( NBMJDRV1 )
38283130   MDRV_CPU_MODIFY("maincpu")
3829   MDRV_CPU_IO_MAP(readport_psailor1, writeport_psailor1)
3131   MDRV_CPU_IO_MAP(psailor1_io_map, 0)
38303132MACHINE_DRIVER_END
38313133
38323134
r4679r4680
38353137   /* basic machine hardware */
38363138   MDRV_IMPORT_FROM( NBMJDRV1 )
38373139   MDRV_CPU_MODIFY("maincpu")
3838   MDRV_CPU_IO_MAP(readport_psailor2, writeport_psailor2)
3140   MDRV_CPU_IO_MAP(psailor2_io_map, 0)
38393141MACHINE_DRIVER_END
38403142
38413143
r4679r4680
38443146   /* basic machine hardware */
38453147   MDRV_IMPORT_FROM( NBMJDRV1 )
38463148   MDRV_CPU_MODIFY("maincpu")
3847   MDRV_CPU_IO_MAP(readport_otatidai, writeport_otatidai)
3149   MDRV_CPU_IO_MAP(otatidai_io_map, 0)
38483150MACHINE_DRIVER_END
38493151
38503152
r4679r4680
38533155   /* basic machine hardware */
38543156   MDRV_IMPORT_FROM( NBMJDRV1 )
38553157   MDRV_CPU_MODIFY("maincpu")
3856   MDRV_CPU_IO_MAP(readport_yosimoto, writeport_yosimoto)
3158   MDRV_CPU_IO_MAP(yosimoto_io_map, 0)
38573159MACHINE_DRIVER_END
38583160
38593161
r4679r4680
38623164   /* basic machine hardware */
38633165   MDRV_IMPORT_FROM( NBMJDRV1 )
38643166   MDRV_CPU_MODIFY("maincpu")
3865   MDRV_CPU_IO_MAP(readport_jituroku, writeport_jituroku)
3167   MDRV_CPU_IO_MAP(jituroku_io_map, 0)
38663168MACHINE_DRIVER_END
38673169
38683170
r4679r4680
38713173   /* basic machine hardware */
38723174   MDRV_IMPORT_FROM( NBMJDRV2 )
38733175   MDRV_CPU_MODIFY("maincpu")
3874   MDRV_CPU_PROGRAM_MAP(readmem_ngpgal, writemem_ngpgal)
3875   MDRV_CPU_IO_MAP(readport_ngpgal, writeport_ngpgal)
3176   MDRV_CPU_PROGRAM_MAP(ngpgal_map, 0)
3177   MDRV_CPU_IO_MAP(ngpgal_io_map, 0)
38763178MACHINE_DRIVER_END
38773179
38783180
r4679r4680
38813183   /* basic machine hardware */
38823184   MDRV_IMPORT_FROM( NBMJDRV2 )
38833185   MDRV_CPU_MODIFY("maincpu")
3884   MDRV_CPU_PROGRAM_MAP(readmem_ngpgal, writemem_ngpgal)
3885   MDRV_CPU_IO_MAP(readport_mjgottsu, writeport_mjgottsu)
3186   MDRV_CPU_PROGRAM_MAP(ngpgal_map, 0)
3187   MDRV_CPU_IO_MAP(mjgottsu_io_map, 0)
38863188MACHINE_DRIVER_END
38873189
38883190
r4679r4680
38913193   /* basic machine hardware */
38923194   MDRV_IMPORT_FROM( NBMJDRV2 )
38933195   MDRV_CPU_MODIFY("maincpu")
3894   MDRV_CPU_PROGRAM_MAP(readmem_ngpgal, writemem_ngpgal)
3895   MDRV_CPU_IO_MAP(readport_mjgottsu, writeport_mjgottsu)
3196   MDRV_CPU_PROGRAM_MAP(ngpgal_map, 0)
3197   MDRV_CPU_IO_MAP(mjgottsu_io_map, 0)
38963198MACHINE_DRIVER_END
38973199
38983200
r4679r4680
39013203   /* basic machine hardware */
39023204   MDRV_IMPORT_FROM( NBMJDRV2 )
39033205   MDRV_CPU_MODIFY("maincpu")
3904   MDRV_CPU_PROGRAM_MAP(readmem_ngpgal, writemem_ngpgal)
3905   MDRV_CPU_IO_MAP(readport_cmehyou, writeport_cmehyou)
3206   MDRV_CPU_PROGRAM_MAP(ngpgal_map, 0)
3207   MDRV_CPU_IO_MAP(cmehyou_io_map, 0)
39063208MACHINE_DRIVER_END
39073209
39083210
r4679r4680
39113213   /* basic machine hardware */
39123214   MDRV_IMPORT_FROM( NBMJDRV2 )
39133215   MDRV_CPU_MODIFY("maincpu")
3914   MDRV_CPU_PROGRAM_MAP(readmem_mjuraden, writemem_mjuraden)
3915   MDRV_CPU_IO_MAP(readport_mjkoiura, writeport_mjkoiura)
3216   MDRV_CPU_PROGRAM_MAP(mjuraden_map, 0)
3217   MDRV_CPU_IO_MAP(mjkoiura_io_map, 0)
39163218MACHINE_DRIVER_END
39173219
39183220
r4679r4680
39213223   /* basic machine hardware */
39223224   MDRV_IMPORT_FROM( NBMJDRV2 )
39233225   MDRV_CPU_MODIFY("maincpu")
3924   MDRV_CPU_PROGRAM_MAP(readmem_mjuraden, writemem_mjuraden)
3925   MDRV_CPU_IO_MAP(readport_mkoiuraa, writeport_mkoiuraa)
3226   MDRV_CPU_PROGRAM_MAP(mjuraden_map, 0)
3227   MDRV_CPU_IO_MAP(mkoiuraa_io_map, 0)
39263228MACHINE_DRIVER_END
39273229
39283230
r4679r4680
39313233   /* basic machine hardware */
39323234   MDRV_IMPORT_FROM( NBMJDRV3 )
39333235   MDRV_CPU_MODIFY("maincpu")
3934   MDRV_CPU_PROGRAM_MAP(readmem_mscoutm, writemem_mscoutm)
3935   MDRV_CPU_IO_MAP(readport_mscoutm, writeport_mscoutm)
3236   MDRV_CPU_PROGRAM_MAP(mscoutm_map, 0)
3237   MDRV_CPU_IO_MAP(mscoutm_io_map, 0)
39363238MACHINE_DRIVER_END
39373239
39383240
r4679r4680
39413243   /* basic machine hardware */
39423244   MDRV_IMPORT_FROM( NBMJDRV3 )
39433245   MDRV_CPU_MODIFY("maincpu")
3944   MDRV_CPU_PROGRAM_MAP(readmem_mjegolf, writemem_mjegolf)
3945   MDRV_CPU_IO_MAP(readport_imekura, writeport_imekura)
3246   MDRV_CPU_PROGRAM_MAP(mjegolf_map, 0)
3247   MDRV_CPU_IO_MAP(imekura_io_map, 0)
39463248MACHINE_DRIVER_END
39473249
39483250
r4679r4680
39513253   /* basic machine hardware */
39523254   MDRV_IMPORT_FROM( NBMJDRV3 )
39533255   MDRV_CPU_MODIFY("maincpu")
3954   MDRV_CPU_PROGRAM_MAP(readmem_mjegolf, writemem_mjegolf)
3955   MDRV_CPU_IO_MAP(readport_mjegolf, writeport_mjegolf)
3256   MDRV_CPU_PROGRAM_MAP(mjegolf_map, 0)
3257   MDRV_CPU_IO_MAP(mjegolf_io_map, 0)
39563258MACHINE_DRIVER_END
39573259
39583260
src/mame/drivers/spool99.c
r4679r4680
323323static DRIVER_INIT( spool99 )
324324{
325325   UINT8 *ROM = memory_region(machine, "maincpu");
326//  vram = auto_malloc(0x2000);
326//  vram = auto_alloc_array(machine, UINT8, 0x2000);
327327   memcpy(spool99_main, ROM, 0xae00);
328328}
329329
src/mame/drivers/sonson.c
r4679r4680
7171   if (last == 0 && data == 1)
7272   {
7373      /* setting bit 0 low then high triggers IRQ on the sound CPU */
74      cpu_set_input_line(space->machine->cpu[1],M6809_FIRQ_LINE,HOLD_LINE);
74      cputag_set_input_line(space->machine, "audiocpu", M6809_FIRQ_LINE, HOLD_LINE);
7575   }
7676
7777   last = data;
src/mame/drivers/sslam.c
r4679r4680
396396
397397static WRITE16_HANDLER( powerbls_sound_w )
398398{
399   soundlatch_w(space,0,data & 0xff);
400   cpu_set_input_line(space->machine->cpu[1],MCS51_INT1_LINE,HOLD_LINE);
399   soundlatch_w(space, 0, data & 0xff);
400   cputag_set_input_line(space->machine, "audiocpu", MCS51_INT1_LINE, HOLD_LINE);
401401}
402402
403403/* Memory Maps */
src/mame/drivers/simpl156.c
r4679r4680
530530{
531531   UINT8 *rom = memory_region(machine, "okimusic");
532532   int length = memory_region_length(machine, "okimusic");
533   UINT8 *buf1 = malloc_or_die(length);
533   UINT8 *buf1 = alloc_array_or_die(UINT8, length);
534534
535535   UINT32 x;
536536
r4679r4680
11381138
11391139static DRIVER_INIT (joemacr)
11401140{
1141   memory_install_read32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x0201018, 0x020101b, 0, 0, joemacr_speedup_r );
1141   memory_install_read32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x0201018, 0x020101b, 0, 0, joemacr_speedup_r );
11421142   DRIVER_INIT_CALL(simpl156);
11431143}
11441144
r4679r4680
11501150
11511151static DRIVER_INIT (chainrec)
11521152{
1153   memory_install_read32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x0201018, 0x020101b, 0, 0, chainrec_speedup_r );
1153   memory_install_read32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x0201018, 0x020101b, 0, 0, chainrec_speedup_r );
11541154   DRIVER_INIT_CALL(simpl156);
11551155   simpl156_default_eeprom = chainrec_eeprom;
11561156}
r4679r4680
11631163
11641164static DRIVER_INIT (prtytime)
11651165{
1166   memory_install_read32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x0201ae0, 0x0201ae3, 0, 0, prtytime_speedup_r );
1166   memory_install_read32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x0201ae0, 0x0201ae3, 0, 0, prtytime_speedup_r );
11671167   DRIVER_INIT_CALL(simpl156);
11681168   simpl156_default_eeprom = prtytime_eeprom;
11691169}
11701170
11711171static DRIVER_INIT (gangonta)
11721172{
1173   memory_install_read32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x0201ae0, 0x0201ae3, 0, 0, prtytime_speedup_r );
1173   memory_install_read32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x0201ae0, 0x0201ae3, 0, 0, prtytime_speedup_r );
11741174   DRIVER_INIT_CALL(simpl156);
11751175   simpl156_default_eeprom = gangonta_eeprom;
11761176}
r4679r4680
11841184
11851185static DRIVER_INIT (charlien)
11861186{
1187   memory_install_read32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x0201010, 0x0201013, 0, 0, charlien_speedup_r );
1187   memory_install_read32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x0201010, 0x0201013, 0, 0, charlien_speedup_r );
11881188   DRIVER_INIT_CALL(simpl156);
11891189}
11901190
r4679r4680
11961196
11971197static DRIVER_INIT (osman)
11981198{
1199   memory_install_read32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x0201010, 0x0201013, 0, 0, osman_speedup_r );
1199   memory_install_read32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x0201010, 0x0201013, 0, 0, osman_speedup_r );
12001200   DRIVER_INIT_CALL(simpl156);
12011201   simpl156_default_eeprom = osman_eeprom;
12021202
r4679r4680
12041204
12051205static DRIVER_INIT (candance)
12061206{
1207   memory_install_read32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x0201010, 0x0201013, 0, 0, osman_speedup_r );
1207   memory_install_read32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x0201010, 0x0201013, 0, 0, osman_speedup_r );
12081208   DRIVER_INIT_CALL(simpl156);
12091209   simpl156_default_eeprom = candance_eeprom;
12101210}
src/mame/drivers/lgp.c
r4679r4680
317317
318318static TIMER_CALLBACK( irq_stop )
319319{
320   cpu_set_input_line(machine->cpu[0], 0, CLEAR_LINE);
320   cputag_set_input_line(machine, "maincpu", 0, CLEAR_LINE);
321321}
322322
323323static INTERRUPT_GEN( vblank_callback_lgp )
src/mame/drivers/hcastle.c
r4679r4680
3838
3939static WRITE8_HANDLER( hcastle_soundirq_w )
4040{
41   cpu_set_input_line(space->machine->cpu[1], 0, HOLD_LINE );
41   cputag_set_input_line(space->machine, "audiocpu", 0, HOLD_LINE );
4242}
4343
4444static WRITE8_HANDLER( hcastle_coin_w )
r4679r4680
4949
5050
5151
52static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 )
53   AM_RANGE(0x0020, 0x003f) AM_READ(SMH_RAM)
54   AM_RANGE(0x0220, 0x023f) AM_READ(SMH_RAM)
55   AM_RANGE(0x0410, 0x0410) AM_READ_PORT("SYSTEM")
56   AM_RANGE(0x0411, 0x0411) AM_READ_PORT("P1")
57   AM_RANGE(0x0412, 0x0412) AM_READ_PORT("P2")
58   AM_RANGE(0x0413, 0x0413) AM_READ_PORT("DSW3")
59   AM_RANGE(0x0414, 0x0414) AM_READ_PORT("DSW2")
60   AM_RANGE(0x0415, 0x0415) AM_READ_PORT("DSW1")
61   AM_RANGE(0x0418, 0x0418) AM_READ(hcastle_gfxbank_r)
62   AM_RANGE(0x0600, 0x06ff) AM_READ(SMH_RAM)
63   AM_RANGE(0x0700, 0x5fff) AM_READ(SMH_RAM)
64   AM_RANGE(0x6000, 0x7fff) AM_READ(SMH_BANK1)
65   AM_RANGE(0x8000, 0xffff) AM_READ(SMH_ROM)
66ADDRESS_MAP_END
67
68static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 )
52static ADDRESS_MAP_START( hcastle_map, ADDRESS_SPACE_PROGRAM, 8 )
6953   AM_RANGE(0x0000, 0x0007) AM_WRITE(hcastle_pf1_control_w)
70   AM_RANGE(0x0020, 0x003f) AM_WRITE(SMH_RAM)   /* rowscroll? */
54   AM_RANGE(0x0020, 0x003f) AM_RAM   /* rowscroll? */
7155   AM_RANGE(0x0200, 0x0207) AM_WRITE(hcastle_pf2_control_w)
72   AM_RANGE(0x0220, 0x023f) AM_WRITE(SMH_RAM)   /* rowscroll? */
56   AM_RANGE(0x0220, 0x023f) AM_RAM /* rowscroll? */
7357   AM_RANGE(0x0400, 0x0400) AM_WRITE(hcastle_bankswitch_w)
7458   AM_RANGE(0x0404, 0x0404) AM_WRITE(soundlatch_w)
7559   AM_RANGE(0x0408, 0x0408) AM_WRITE(hcastle_soundirq_w)
7660   AM_RANGE(0x040c, 0x040c) AM_WRITE(watchdog_reset_w)
77   AM_RANGE(0x0410, 0x0410) AM_WRITE(hcastle_coin_w)
78   AM_RANGE(0x0418, 0x0418) AM_WRITE(hcastle_gfxbank_w)
79   AM_RANGE(0x0600, 0x06ff) AM_WRITE(SMH_RAM) AM_BASE(&paletteram)
80   AM_RANGE(0x0700, 0x1fff) AM_WRITE(SMH_RAM)
81   AM_RANGE(0x2000, 0x2fff) AM_WRITE(hcastle_pf1_video_w) AM_BASE(&hcastle_pf1_videoram)
82   AM_RANGE(0x3000, 0x3fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
83   AM_RANGE(0x4000, 0x4fff) AM_WRITE(hcastle_pf2_video_w) AM_BASE(&hcastle_pf2_videoram)
84   AM_RANGE(0x5000, 0x5fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram_2) AM_SIZE(&spriteram_2_size)
85    AM_RANGE(0x6000, 0xffff) AM_WRITE(SMH_ROM)
61   AM_RANGE(0x0410, 0x0410) AM_READ_PORT("SYSTEM") AM_WRITE(hcastle_coin_w)
62   AM_RANGE(0x0411, 0x0411) AM_READ_PORT("P1")
63   AM_RANGE(0x0412, 0x0412) AM_READ_PORT("P2")
64   AM_RANGE(0x0413, 0x0413) AM_READ_PORT("DSW3")
65   AM_RANGE(0x0414, 0x0414) AM_READ_PORT("DSW2")
66   AM_RANGE(0x0415, 0x0415) AM_READ_PORT("DSW1")
67   AM_RANGE(0x0418, 0x0418) AM_READWRITE(hcastle_gfxbank_r, hcastle_gfxbank_w)
68   AM_RANGE(0x0600, 0x06ff) AM_RAM AM_BASE(&paletteram)
69   AM_RANGE(0x0700, 0x1fff) AM_RAM
70   AM_RANGE(0x2000, 0x2fff) AM_RAM_WRITE(hcastle_pf1_video_w) AM_BASE(&hcastle_pf1_videoram)
71   AM_RANGE(0x3000, 0x3fff) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
72   AM_RANGE(0x4000, 0x4fff) AM_RAM_WRITE(hcastle_pf2_video_w) AM_BASE(&hcastle_pf2_videoram)
73   AM_RANGE(0x5000, 0x5fff) AM_RAM AM_BASE(&spriteram_2) AM_SIZE(&spriteram_2_size)
74   AM_RANGE(0x6000, 0x7fff) AM_ROMBANK(1)
75   AM_RANGE(0x8000, 0xffff) AM_ROM
8676ADDRESS_MAP_END
8777
8878/*****************************************************************************/
r4679r4680
9484   k007232_set_bank(device, bank_A, bank_B );
9585}
9686
97static ADDRESS_MAP_START( sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
98   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
99   AM_RANGE(0x8000, 0x87ff) AM_READ(SMH_RAM)
100   AM_RANGE(0xa000, 0xa001) AM_DEVREAD("ym", ym3812_r)
101   AM_RANGE(0xb000, 0xb00d) AM_DEVREAD("konami1", k007232_r)
102   AM_RANGE(0xd000, 0xd000) AM_READ(soundlatch_r)
103ADDRESS_MAP_END
104
105static ADDRESS_MAP_START( sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
106   AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM)
107   AM_RANGE(0x8000, 0x87ff) AM_WRITE(SMH_RAM)
87static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 )
88   AM_RANGE(0x0000, 0x7fff) AM_ROM
89   AM_RANGE(0x8000, 0x87ff) AM_RAM
10890   AM_RANGE(0x9800, 0x987f) AM_DEVWRITE("konami2", k051649_waveform_w)
10991   AM_RANGE(0x9880, 0x9889) AM_DEVWRITE("konami2", k051649_frequency_w)
11092   AM_RANGE(0x988a, 0x988e) AM_DEVWRITE("konami2", k051649_volume_w)
11193   AM_RANGE(0x988f, 0x988f) AM_DEVWRITE("konami2", k051649_keyonoff_w)
112   AM_RANGE(0xa000, 0xa001) AM_DEVWRITE("ym", ym3812_w)
113   AM_RANGE(0xb000, 0xb00d) AM_DEVWRITE("konami1", k007232_w)
94   AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE("ym", ym3812_r, ym3812_w)
95   AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE("konami1", k007232_r, k007232_w)
11496   AM_RANGE(0xc000, 0xc000) AM_DEVWRITE("konami1", sound_bank_w) /* 7232 bankswitch */
97   AM_RANGE(0xd000, 0xd000) AM_READ(soundlatch_r)
11598ADDRESS_MAP_END
11699
117100/*****************************************************************************/
r4679r4680
190173
191174static void irqhandler(const device_config *device, int linestate)
192175{
193//  cpu_set_input_line(device->machine->cpu[1],0,linestate);
176//  cputag_set_input_line(device->machine, "audiocpu", 0, linestate);
194177}
195178
196179static void volume_callback(const device_config *device, int v)
r4679r4680
213196
214197   /* basic machine hardware */
215198   MDRV_CPU_ADD("maincpu", KONAMI, 3000000)   /* Derived from 24 MHz clock */
216   MDRV_CPU_PROGRAM_MAP(readmem,writemem)
199   MDRV_CPU_PROGRAM_MAP(hcastle_map,0)
217200   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
218201
219202   MDRV_CPU_ADD("audiocpu", Z80, 3579545)
220   MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem)
203   MDRV_CPU_PROGRAM_MAP(sound_map,0)
221204
222205   /* video hardware */
223206   MDRV_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM)
src/mame/drivers/deadang.c
r4679r4680
411411   seibu_sound_decrypt(machine, "audiocpu", 0x2000);
412412   seibu_adpcm_decrypt(machine, "adpcm");
413413
414   memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x80000, 0x80001, 0, 0, ghunter_trackball_low_r);
415   memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xb0000, 0xb0001, 0, 0, ghunter_trackball_high_r);
414   memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x80000, 0x80001, 0, 0, ghunter_trackball_low_r);
415   memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xb0000, 0xb0001, 0, 0, ghunter_trackball_high_r);
416416}
417417
418418/* Game Drivers */
src/mame/drivers/cliffhgr.c
r4679r4680
137137static READ8_HANDLER( cliff_irq_ack_r )
138138{
139139   /* deassert IRQ on the CPU */
140   cpu_set_input_line(space->machine->cpu[0], 0, CLEAR_LINE);
140   cputag_set_input_line(space->machine, "maincpu", 0, CLEAR_LINE);
141141
142142   return 0x00;
143143}
r4679r4680
197197
198198   /* if we have a valid code, trigger an IRQ */
199199   if ( phillips_code & 0x800000 )
200      cpu_set_input_line(machine->cpu[0], 0, ASSERT_LINE);
200      cputag_set_input_line(machine, "maincpu", 0, ASSERT_LINE);
201201
202202   timer_adjust_oneshot(irq_timer, video_screen_get_time_until_pos(machine->primary_screen, param, 0), param);
203203}
204204
205205static void vdp_interrupt (running_machine *machine, int state)
206206{
207   cpu_set_input_line(machine->cpu[0], INPUT_LINE_NMI, state ? ASSERT_LINE : CLEAR_LINE );
207   cputag_set_input_line(machine, "maincpu", INPUT_LINE_NMI, state ? ASSERT_LINE : CLEAR_LINE );
208208}
209209
210210
src/mame/drivers/artmagic.c
r4679r4680
5757
5858static void update_irq_state(running_machine *machine)
5959{
60   cpu_set_input_line(machine->cpu[0], 4, tms_irq  ? ASSERT_LINE : CLEAR_LINE);
61   cpu_set_input_line(machine->cpu[0], 5, hack_irq ? ASSERT_LINE : CLEAR_LINE);
60   cputag_set_input_line(machine, "maincpu", 4, tms_irq  ? ASSERT_LINE : CLEAR_LINE);
61   cputag_set_input_line(machine, "maincpu", 5, hack_irq ? ASSERT_LINE : CLEAR_LINE);
6262}
6363
6464
r4679r4680
9393
9494static READ16_HANDLER( tms_host_r )
9595{
96   return tms34010_host_r(space->machine->cpu[1], offset);
96   return tms34010_host_r(cputag_get_cpu(space->machine, "tms"), offset);
9797}
9898
9999
100100static WRITE16_HANDLER( tms_host_w )
101101{
102   tms34010_host_w(space->machine->cpu[1], offset, data);
102   tms34010_host_w(cputag_get_cpu(space->machine, "tms"), offset, data);
103103}
104104
105105
r4679r4680
890890   protection_handler = ultennis_protection;
891891
892892   /* additional (protection?) hack */
893   memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x300000, 0x300001, 0, 0, ultennis_hack_r);
893   memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x300000, 0x300001, 0, 0, ultennis_hack_r);
894894}
895895
896896
src/mame/drivers/cntsteer.c
r4679r4680
386386
387387static WRITE8_HANDLER( gekitsui_sub_irq_ack )
388388{
389   cpu_set_input_line(space->machine->cpu[1], M6809_IRQ_LINE, CLEAR_LINE);
389   cputag_set_input_line(space->machine, "subcpu", M6809_IRQ_LINE, CLEAR_LINE);
390390}
391391
392392static WRITE8_HANDLER( cntsteer_sound_w )
393393{
394394    soundlatch_w(space,0,data);
395    cpu_set_input_line(space->machine->cpu[2], 0, HOLD_LINE);
395    cputag_set_input_line(space->machine, "audiocpu", 0, HOLD_LINE);
396396}
397397
398398static WRITE8_HANDLER( zerotrgt_ctrl_w )
399399{
400400   /*TODO: check this.*/
401401   logerror("CTRL: %04x: %04x: %04x\n",cpu_get_pc(space->cpu),offset,data);
402//  if (offset==0) cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_RESET, ASSERT_LINE);
402//  if (offset==0) cputag_set_input_line(space->machine, "subcpu", INPUT_LINE_RESET, ASSERT_LINE);
403403
404404   // Wrong - bits 0 & 1 used on this
405   if (offset==1) cpu_set_input_line(space->machine->cpu[1], M6809_IRQ_LINE, ASSERT_LINE);
406//  if (offset==2) cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_RESET, CLEAR_LINE);
405   if (offset==1) cputag_set_input_line(space->machine, "subcpu", M6809_IRQ_LINE, ASSERT_LINE);
406//  if (offset==2) cputag_set_input_line(space->machine, "subcpu", INPUT_LINE_RESET, CLEAR_LINE);
407407}
408408
409409static WRITE8_HANDLER( cntsteer_sub_irq_w )
410410{
411   cpu_set_input_line(space->machine->cpu[1], M6809_IRQ_LINE, ASSERT_LINE);
411   cputag_set_input_line(space->machine, "subcpu", M6809_IRQ_LINE, ASSERT_LINE);
412412//  printf("%02x IRQ\n",data);
413413}
414414
415415static WRITE8_HANDLER( cntsteer_sub_nmi_w )
416416{
417417//  if(data)
418//  cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_NMI, PULSE_LINE);
418//  cputag_set_input_line(space->machine, "subcpu", INPUT_LINE_NMI, PULSE_LINE);
419419//  popmessage("%02x",data);
420420}
421421
422422static WRITE8_HANDLER( cntsteer_main_irq_w )
423423{
424   cpu_set_input_line(space->machine->cpu[0], M6809_IRQ_LINE, HOLD_LINE);
424   cputag_set_input_line(space->machine, "maincpu", M6809_IRQ_LINE, HOLD_LINE);
425425}
426426
427427/* Convert weird input handling with MAME standards.*/
r4679r4680
588588
589589static INPUT_CHANGED( coin_inserted )
590590{
591   cpu_set_input_line(field->port->machine->cpu[1], INPUT_LINE_NMI, newval ? CLEAR_LINE : PULSE_LINE);
591   cputag_set_input_line(field->port->machine, "subcpu", INPUT_LINE_NMI, newval ? CLEAR_LINE : ASSERT_LINE);
592592}
593593
594594static INPUT_PORTS_START( cntsteer )
r4679r4680
609609   PORT_BIT( 0xff, 0x80, IPT_AD_STICK_X ) PORT_MINMAX(0x01,0xff) PORT_SENSITIVITY(10) PORT_KEYDELTA(2)
610610
611611   PORT_START("COINS")
612   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_CHANGED(coin_inserted, 0)
613   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_CHANGED(coin_inserted, 0)
614   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_CHANGED(coin_inserted, 0)
612   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(1) PORT_CHANGED(coin_inserted, 0)
613   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(1) PORT_CHANGED(coin_inserted, 0)
614   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_IMPULSE(1) PORT_CHANGED(coin_inserted, 0)
615615   PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) //unused
616616   PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
617617   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
r4679r4680
738738   MDRV_CPU_PROGRAM_MAP(cntsteer_cpu1_map,0)
739739   MDRV_CPU_VBLANK_INT("screen", nmi_line_pulse) /* ? */
740740
741   MDRV_CPU_ADD("sub", M6809, 2000000)       /* ? */
741   MDRV_CPU_ADD("subcpu", M6809, 2000000)       /* ? */
742742   MDRV_CPU_PROGRAM_MAP(cntsteer_cpu2_map,0)
743743//  MDRV_CPU_VBLANK_INT("screen", nmi_line_pulse) /* ? */
744744
r4679r4680
781781   MDRV_CPU_PROGRAM_MAP(gekitsui_cpu1_map,0)
782782   MDRV_CPU_VBLANK_INT("screen", nmi_line_pulse) /* ? */
783783
784   MDRV_CPU_ADD("sub", M6809, 2000000)       /* ? */
784   MDRV_CPU_ADD("subcpu", M6809, 2000000)       /* ? */
785785   MDRV_CPU_PROGRAM_MAP(gekitsui_cpu2_map,0)
786786//  MDRV_CPU_VBLANK_INT("screen", nmi_line_pulse) /* ? */
787787
r4679r4680
825825   ROM_LOAD( "by02", 0x8000, 0x4000, CRC(b6fdd7fd) SHA1(e54cc31628966f747f9ccbf9db1017ed1eee0d5d) )
826826   ROM_LOAD( "by01", 0xc000, 0x4000, CRC(932423a5) SHA1(0d8164359a79ae554328dfb4d729a8d07de7ee75) )
827827
828   ROM_REGION( 0x10000, "sub", 0 )
828   ROM_REGION( 0x10000, "subcpu", 0 )
829829   ROM_LOAD( "by12", 0x4000, 0x4000, CRC(278e7fed) SHA1(5def4c8919a507c64045c57de2da65e1d39e1185) )
830830   ROM_LOAD( "by11", 0x8000, 0x4000, CRC(00624e34) SHA1(27bd472e9f2feef4a2c4753d8b0da26ff30d930d) )
831831   ROM_LOAD( "by10", 0xc000, 0x4000, CRC(9227a9ce) SHA1(8c86f22f90a3a8853562469037ffa06693045f4c) )
r4679r4680
867867   ROM_REGION( 0x10000, "maincpu", 0 )
868868   ROM_LOAD( "ct01-s.4c", 0x8000, 0x8000, CRC(b35a16cb) SHA1(49581324c3e3d5219f0512d08a40161185368b10) )
869869
870   ROM_REGION( 0x10000, "sub", 0 )
870   ROM_REGION( 0x10000, "subcpu", 0 )
871871   ROM_LOAD( "ct08.16a",  0x4000, 0x4000,  CRC(7e8db408) SHA1(2ae407d15645753a2a0d691c9f1cf1eb383d3e8a) )
872872   ROM_LOAD( "cty07.14a", 0x8000, 0x4000,  CRC(119b6211) SHA1(2042f06387d34fad6b63bcb8ac6f9b06377f634d) )
873873   ROM_LOAD( "ct06.13a",  0xc000, 0x4000,  CRC(bce5adad) SHA1(86c4eef0d68679a24bab6460b49640a498f32ecd) )
r4679r4680
910910   ROM_REGION( 0x10000, "maincpu", 0 )
911911   ROM_LOAD( "ct01", 0x8000, 0x8000, CRC(d3d82d8d) SHA1(c175c626d4cb89a2d82740c04892092db6faf616) )
912912
913   ROM_REGION( 0x10000, "sub", 0 )
913   ROM_REGION( 0x10000, "subcpu", 0 )
914914   ROM_LOAD( "ct08.16a",  0x4000, 0x4000,  CRC(7e8db408) SHA1(2ae407d15645753a2a0d691c9f1cf1eb383d3e8a) )
915915   ROM_LOAD( "cty07.14a", 0x8000, 0x4000,  CRC(119b6211) SHA1(2042f06387d34fad6b63bcb8ac6f9b06377f634d) )
916916   ROM_LOAD( "ct06.13a",  0xc000, 0x4000,  CRC(bce5adad) SHA1(86c4eef0d68679a24bab6460b49640a498f32ecd) )
r4679r4680
974974#if 0
975975static void init_cntsteer(void)
976976{
977   UINT8 *RAM = memory_region(machine, "sub");
977   UINT8 *RAM = memory_region(machine, "subcpu");
978978
979979   RAM[0xc2cf]=0x43; /* Patch out Cpu 1 ram test - it never ends..?! */
980980   RAM[0xc2d0]=0x43;
src/mame/drivers/twincobr.c
r4679r4680
690690/* handler called by the 3812 emulator when the internal timers cause an IRQ */
691691static void irqhandler(const device_config *device, int linestate)
692692{
693   cpu_set_input_line(device->machine->cpu[1],0,linestate);
693   cputag_set_input_line(device->machine, "audiocpu", 0, linestate);
694694}
695695
696696static const ym3812_interface ym3812_config =
src/mame/drivers/hexion.c
r4679r4680
113113
114114
115115
116static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 )
117   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
118   AM_RANGE(0x8000, 0x9fff) AM_READ(SMH_BANK1)
119   AM_RANGE(0xa000, 0xbfff) AM_READ(SMH_RAM)
120   AM_RANGE(0xc000, 0xdffe) AM_READ(hexion_bankedram_r)
121   AM_RANGE(0xf400, 0xf400) AM_READ_PORT("DSW1")
122   AM_RANGE(0xf401, 0xf401) AM_READ_PORT("DSW2")
123   AM_RANGE(0xf402, 0xf402) AM_READ_PORT("P1")
124   AM_RANGE(0xf403, 0xf403) AM_READ_PORT("P2")
125   AM_RANGE(0xf440, 0xf440) AM_READ_PORT("DSW3")
126   AM_RANGE(0xf441, 0xf441) AM_READ_PORT("SYSTEM")
127   AM_RANGE(0xf540, 0xf540) AM_READ(watchdog_reset_r)
128ADDRESS_MAP_END
129
130static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 )
131   AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM)
132   AM_RANGE(0xa000, 0xbfff) AM_WRITE(SMH_RAM)
133   AM_RANGE(0xc000, 0xdffe) AM_WRITE(hexion_bankedram_w)
116static ADDRESS_MAP_START( hexion_map, ADDRESS_SPACE_PROGRAM, 8 )
117   AM_RANGE(0x0000, 0x7fff) AM_ROM
118   AM_RANGE(0x8000, 0x9fff) AM_ROMBANK(1)
119   AM_RANGE(0xa000, 0xbfff) AM_RAM
120   AM_RANGE(0xc000, 0xdffe) AM_READWRITE(hexion_bankedram_r, hexion_bankedram_w)
134121   AM_RANGE(0xdfff, 0xdfff) AM_WRITE(hexion_bankctrl_w)
135122   AM_RANGE(0xe800, 0xe87f) AM_DEVWRITE("konami", k051649_waveform_w)
136123   AM_RANGE(0xe880, 0xe889) AM_DEVWRITE("konami", k051649_frequency_w)
r4679r4680
138125   AM_RANGE(0xe88f, 0xe88f) AM_DEVWRITE("konami", k051649_keyonoff_w)
139126   AM_RANGE(0xf000, 0xf00f) AM_WRITENOP   /* 053252? f00e = IRQ ack, f00f = NMI ack */
140127   AM_RANGE(0xf200, 0xf200) AM_DEVWRITE("oki", okim6295_w)
128   AM_RANGE(0xf400, 0xf400) AM_READ_PORT("DSW1")
129   AM_RANGE(0xf401, 0xf401) AM_READ_PORT("DSW2")
130   AM_RANGE(0xf402, 0xf402) AM_READ_PORT("P1")
131   AM_RANGE(0xf403, 0xf403) AM_READ_PORT("P2")
132   AM_RANGE(0xf440, 0xf440) AM_READ_PORT("DSW3")
133   AM_RANGE(0xf441, 0xf441) AM_READ_PORT("SYSTEM")
141134   AM_RANGE(0xf480, 0xf480) AM_WRITE(hexion_bankswitch_w)
142135   AM_RANGE(0xf4c0, 0xf4c0) AM_WRITE(coincntr_w)
143136   AM_RANGE(0xf500, 0xf500) AM_WRITE(hexion_gfxrom_select_w)
137   AM_RANGE(0xf540, 0xf540) AM_READ(watchdog_reset_r)
144138ADDRESS_MAP_END
145139
146140
r4679r4680
237231
238232   /* basic machine hardware */
239233   MDRV_CPU_ADD("maincpu", Z80,24000000/4)   /* Z80B 6 MHz */
240   MDRV_CPU_PROGRAM_MAP(readmem,writemem)
234   MDRV_CPU_PROGRAM_MAP(hexion_map,0)
241235   MDRV_CPU_VBLANK_INT_HACK(hexion_interrupt,3)   /* both IRQ and NMI are used */
242236
243237   /* video hardware */
src/mame/drivers/bking.c
r4679r4680
7070      if (data & (1 << i)) code |= 0x80 >> i;
7171
7272   soundlatch_w(space,offset,code);
73   if (sndnmi_enable) cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_NMI, PULSE_LINE);
73   if (sndnmi_enable) cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
7474}
7575
7676static WRITE8_HANDLER( bking3_addr_l_w )
r4679r4680
199199   if (~data & 0x02)
200200   {
201201      portA_in = from_main;
202      if (main_sent) cpu_set_input_line(space->machine->cpu[2],0,CLEAR_LINE);
202      if (main_sent) cputag_set_input_line(space->machine, "mcu", 0, CLEAR_LINE);
203203      main_sent = 0;
204204   }
205205
src/mame/drivers/battlnts.c
r4679r4680
3030
3131static WRITE8_HANDLER( battlnts_sh_irqtrigger_w )
3232{
33   cpu_set_input_line_and_vector(space->machine->cpu[1], 0, HOLD_LINE, 0xff);
33   cputag_set_input_line_and_vector(space->machine, "audiocpu", 0, HOLD_LINE, 0xff);
3434}
3535
3636static WRITE8_HANDLER( battlnts_bankswitch_w )
src/mame/drivers/dblewing.c
r4679r4680
364364         //printf("%04x\n",dblwings_280_data);
365365         return;
366366      case 0x380: // sound write
367         soundlatch_w(space,0,data&0xff);
367         soundlatch_w(space, 0, data & 0xff);
368368         dblewing_sound_irq |= 0x02;
369          cpu_set_input_line(space->machine->cpu[1],0,(dblewing_sound_irq != 0) ? ASSERT_LINE : CLEAR_LINE);
369          cputag_set_input_line(space->machine, "audiocpu", 0, (dblewing_sound_irq != 0) ? ASSERT_LINE : CLEAR_LINE);
370370         return;
371371      case 0x384:
372372         dblwings_384_data = data;
r4679r4680
461461{
462462   /* bit 1 of dblewing_sound_irq specifies IRQ command writes */
463463   dblewing_sound_irq &= ~0x02;
464   cpu_set_input_line(space->machine->cpu[1], 0, (dblewing_sound_irq != 0) ? ASSERT_LINE : CLEAR_LINE);
464   cputag_set_input_line(space->machine, "audiocpu", 0, (dblewing_sound_irq != 0) ? ASSERT_LINE : CLEAR_LINE);
465465   return dblewing_sound_irq;
466466}
467467
r4679r4680
654654      dblewing_sound_irq |= 0x01;
655655   else
656656      dblewing_sound_irq &= ~0x01;
657   cpu_set_input_line(device->machine->cpu[1], 0, (dblewing_sound_irq != 0) ? ASSERT_LINE : CLEAR_LINE);
657   cputag_set_input_line(device->machine, "audiocpu", 0, (dblewing_sound_irq != 0) ? ASSERT_LINE : CLEAR_LINE);
658658}
659659
660660static const ym2151_interface ym2151_config =
src/mame/drivers/multfish.c
r4679r4680
8080
8181static VIDEO_START(multfish)
8282{
83   multfish_vid = auto_malloc(multfish_VIDRAM_SIZE);
83   multfish_vid = auto_alloc_array(machine, UINT8, multfish_VIDRAM_SIZE);
8484   memset(multfish_vid,0x00,multfish_VIDRAM_SIZE);
8585   state_save_register_global_pointer(machine, multfish_vid, multfish_VIDRAM_SIZE);
8686
87   multfish_bram = auto_malloc(multfish_BRAM_SIZE);
87   multfish_bram = auto_alloc_array(machine, UINT8, multfish_BRAM_SIZE);
8888   memset(multfish_bram,0x00,multfish_BRAM_SIZE);
8989   state_save_register_global_pointer(machine, multfish_bram, multfish_BRAM_SIZE);
9090
r4679r4680
210210
211211static ADDRESS_MAP_START( multfish_map, ADDRESS_SPACE_PROGRAM, 8 )
212212   AM_RANGE(0x0000, 0x7fff) AM_READWRITE(SMH_ROM, multfish_vid_w)
213   AM_RANGE(0x8000, 0xbfff) AM_READWRITE(SMH_BANK1, SMH_ROM )
213   AM_RANGE(0x8000, 0xbfff) AM_READWRITE(SMH_BANK(1), SMH_ROM )
214214   AM_RANGE(0xc000, 0xdfff) AM_RAM AM_BASE(&generic_nvram) AM_SIZE(&generic_nvram_size)
215215   AM_RANGE(0xe000, 0xffff) AM_READWRITE(bankedram_r, bankedram_w)
216216ADDRESS_MAP_END
src/mame/drivers/galpani2.c
r4679r4680
1/***************************************************************************
1   /***************************************************************************
22
33                            -= Gals Panic II =-
44
r4679r4680
7777
7878   kaneko16_sprite_xoffs = 0x10000 - 0x16c0 + 0xc00;
7979   kaneko16_sprite_yoffs = 0x000;
80   cpuexec_boost_interleave(machine, attotime_zero, ATTOTIME_IN_USEC(50)); //initial mcu xchk
8081}
8182
82static void galpani2_write_kaneko(running_machine *machine)
83static void galpani2_write_kaneko(const device_config *device)
8384{
84   const address_space *dstspace = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
85   memory_write_byte(dstspace,0x100000,0x4b);
86   memory_write_byte(dstspace,0x100001,0x41);
87   memory_write_byte(dstspace,0x100002,0x4e);
88   memory_write_byte(dstspace,0x100003,0x45);
89   memory_write_byte(dstspace,0x100004,0x4b);
90   memory_write_byte(dstspace,0x100005,0x4f);
91}
85   const address_space *dstspace = cpu_get_address_space(device, ADDRESS_SPACE_PROGRAM);
86   int i,x,tpattidx;
87   unsigned char testpattern[] = {0xFF,0x55,0xAA,0xDD,0xBB,0x99};
9288
93void galpani2_mcu_run(running_machine *machine)
94{
95   const address_space *srcspace = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
96   const address_space *dstspace = cpu_get_address_space(machine->cpu[1], ADDRESS_SPACE_PROGRAM);
97   int i,x;
98
9989   /* Write "KANEKO" to 100000-100005, but do not clash with ram test */
10090
10191   x  = 0;
10292
10393   for (i = 0x100000; i < 0x100007; i++)
104      x |= memory_read_byte(srcspace,i);
94   {
95      for (tpattidx = 0; tpattidx < 6; tpattidx++)
96      {
97         if (memory_read_byte(dstspace,i) == testpattern[tpattidx]) x = 1; //ram test fragment present
98      }
99   }
105100
106101   if   ( x == 0 )
107102   {
108      galpani2_write_kaneko(machine);
109      memory_write_byte(dstspace,0x100006,1);
110      logerror("MCU executes CHECK0\n");
103      memory_write_byte(dstspace,0x100000,0x4b); //K
104      memory_write_byte(dstspace,0x100001,0x41); //A
105      memory_write_byte(dstspace,0x100002,0x4e); //N
106      memory_write_byte(dstspace,0x100003,0x45); //E
107      memory_write_byte(dstspace,0x100004,0x4b); //K
108      memory_write_byte(dstspace,0x100005,0x4f); //O
111109   }
112110}
113111
114static void galpani2_mcu_nmi(running_machine *machine)
112static WRITE8_HANDLER( galpani2_mcu_init_w )
115113{
116   const address_space *srcspace = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
117   const address_space *dstspace = cpu_get_address_space(machine->cpu[1], ADDRESS_SPACE_PROGRAM);
118   UINT32 mcu_list, mcu_command, mcu_address, mcu_src, mcu_dst, mcu_size;
114   running_machine *machine = space->machine;
115   const address_space *srcspace = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
116   const address_space *dstspace = cputag_get_address_space(machine, "sub", ADDRESS_SPACE_PROGRAM);
117   UINT32 mcu_address, mcu_data;
119118
120   /* "Last Check" */
121   galpani2_write_kaneko(machine);
119   for ( mcu_address = 0x100010; mcu_address < (0x100010 + 6); mcu_address += 1 )
120   {
121      mcu_data   =   memory_read_byte(srcspace, mcu_address );
122      memory_write_byte(dstspace, mcu_address-0x10, mcu_data);
123   }
124   cputag_set_input_line(machine, "sub", INPUT_LINE_IRQ7, HOLD_LINE); //MCU Initialised
125}
122126
123   for ( mcu_list = 0x100020; mcu_list < (0x100020 + 0x40); mcu_list += 4 )
127static void galpani2_mcu_nmi1(running_machine *machine)
128{
129   const address_space *srcspace = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
130   const address_space *dstspace = cputag_get_address_space(machine, "sub", ADDRESS_SPACE_PROGRAM);
131   UINT32 mcu_list, mcu_command, mcu_address, mcu_extra, mcu_src, mcu_dst, mcu_size;
132
133   for ( mcu_list = 0x100021; mcu_list < (0x100021 + 0x40); mcu_list += 4 )
124134   {
125      mcu_command      =   memory_read_byte(srcspace, mcu_list + 1 );
135      mcu_command      =   memory_read_byte(srcspace, mcu_list);
126136
127137      mcu_address      =   0x100000 +
128                     (memory_read_byte(srcspace, mcu_list + 2)<<8) +
129                     (memory_read_byte(srcspace, mcu_list + 3)<<0) ;
138                     (memory_read_byte(srcspace, mcu_list + 1)<<8) +
139                     (memory_read_byte(srcspace, mcu_list + 2)<<0) ;
130140
141      mcu_extra      =   memory_read_byte(srcspace, mcu_list + 3); //0xff for command $A and $2, 0x02 for others
142
143      if (mcu_command != 0)
144      {
145         logerror("%s : MCU [$%06X] endidx = $%02X / command = $%02X addr = $%04X ? = $%02X.\n",
146         cpuexec_describe_context(machine),
147         mcu_list,
148         memory_read_byte(srcspace, 0x100020),
149         mcu_command,
150         mcu_address,
151         mcu_extra
152         );
153      }
154
131155      switch (mcu_command)
132156      {
133157      case 0x00:
134158         break;
135159
136      //case 0x02: //?, gp2se is the only one to use it, often!
137      //  break;
160      case 0x02: //Copy N bytes from RAM2 to RAM1?, gp2se is the only one to use it, often!
161         mcu_src      =   (memory_read_byte(srcspace, mcu_address + 2)<<8) +
162                     (memory_read_byte(srcspace, mcu_address + 3)<<0) ;
138163
164         mcu_dst      =   (memory_read_byte(srcspace, mcu_address + 6)<<8) +
165                     (memory_read_byte(srcspace, mcu_address + 7)<<0) ;
166
167         mcu_size   =   (memory_read_byte(srcspace, mcu_address + 8)<<8) +
168                     (memory_read_byte(srcspace, mcu_address + 9)<<0) ;
169         logerror("%s : MCU executes command $%02X, %04X %02X-> %04x\n",cpuexec_describe_context(machine),mcu_command,mcu_src,mcu_size,mcu_dst);
170
171         for( ; mcu_size > 0 ; mcu_size-- )
172         {
173            mcu_src &= 0xffff;   mcu_dst &= 0xffff;
174            memory_write_byte(srcspace,0x100000 + mcu_dst,memory_read_byte(dstspace,0x100000 + mcu_src));
175            mcu_src ++;         mcu_dst ++;
176         }
177
178         /* Raise a "job done" flag */
179         memory_write_byte(srcspace,mcu_address+0,0xff);
180         memory_write_byte(srcspace,mcu_address+1,0xff);
181
182         break;
183
139184      case 0x0a:   // Copy N bytes from RAM1 to RAM2
140185         mcu_src      =   (memory_read_byte(srcspace, mcu_address + 2)<<8) +
141186                     (memory_read_byte(srcspace, mcu_address + 3)<<0) ;
r4679r4680
146191         mcu_size   =   (memory_read_byte(srcspace, mcu_address + 8)<<8) +
147192                     (memory_read_byte(srcspace, mcu_address + 9)<<0) ;
148193
149         logerror("%s : MCU executes command $A, %04X %02X-> %04x\n",cpuexec_describe_context(machine),mcu_src,mcu_size,mcu_dst);
194         logerror("%s : MCU executes command $%02X, %04X %02X-> %04x\n",cpuexec_describe_context(machine),mcu_command,mcu_src,mcu_size,mcu_dst);
150195
151196         for( ; mcu_size > 0 ; mcu_size-- )
152197         {
r4679r4680
162207         break;
163208
164209      //case 0x10: //? Clear gal?
165      //case 0x1B: //? Display gal?
166      //case 0x1F: //? Display gal?
167      //case 0x21: //? Display gal?
168      //case 0x27: //? Display gal?
169      //case 0x3E: //? Display gal?
170      //case 0x43: //? Display gal?
171      //case 0x45: //? Display gal?
172      //case 0x4C: //? Display gal?
173      //case 0x68: //? Display "Changed" gal?
174      //case 0x6B: //? Display "Changed" gal?
175      //case 0x6E: //? Display "Changed" gal?
210      //case 0x14: //? Display gal?
211      //until
212      //case 0x50: //? Display gal?
213      //case 0x68: //? Display "Changed" monster?
214      //until
215      //case 0x6E: //? Display "Changed" monster?
216      //case 0x85: //? Do what?
176217      default:
177218         /* Raise a "job done" flag */
178219         memory_write_byte(srcspace,mcu_address+0,0xff);
r4679r4680
181222         logerror("%s : MCU ERROR, unknown command $%02X\n",cpuexec_describe_context(machine),mcu_command);
182223      }
183224
184      /* Erase command? */
185      memory_write_byte(srcspace,mcu_list + 1,0x00);
225      /* Erase command (so that it won't be processed again)? */
226      memory_write_byte(srcspace,mcu_list,0x00);
186227   }
187228}
188229
189static WRITE16_HANDLER( galpani2_mcu_nmi_w )
230static void galpani2_mcu_nmi2(running_machine *machine)
190231{
191   static UINT16 old = 0;
192   if ( (data & 1) && !(old & 1) )   galpani2_mcu_nmi(space->machine);
193   old = data;
232      galpani2_write_kaneko(machine->cpu[0]);
233      //logerror("%s : MCU executes CHECKs synchro\n",cpuexec_describe_context(machine));
194234}
195235
236static WRITE8_HANDLER( galpani2_mcu_nmi1_w ) //driven by CPU1's int5 ISR
237{
238//for galpan2t:
239//Triggered from 'maincpu' (00007D60),once, with no command, using alternate line, during init
240//Triggered from 'maincpu' (000080BE),once, for unknown command, during init
241//Triggered from 'maincpu' (0000741E),from here on...driven by int5, even if there's no command
242   static UINT16 old_mcu_nmi1 = 0;
243   if ( (data & 1) && !(old_mcu_nmi1 & 1) )   galpani2_mcu_nmi1(space->machine);
244   //if ( (data & 0x10) && !(old_mcu_nmi1 & 0x10) )    galpani2_mcu_nmi1(space->machine);
245   //alternate line, same function?
246   old_mcu_nmi1 = data;
247}
196248
249static WRITE8_HANDLER( galpani2_mcu_nmi2_w ) //driven by CPU2's int5 ISR
250{
251   static UINT16 old_mcu_nmi2 = 0;
252   if ( (data & 1) && !(old_mcu_nmi2 & 1) )   galpani2_mcu_nmi2(space->machine);
253   old_mcu_nmi2 = data;
254}
197255
256
198257/***************************************************************************
199258
200259
r4679r4680
203262
204263***************************************************************************/
205264
206static WRITE16_HANDLER( galpani2_coin_lockout_w )
265static WRITE8_HANDLER( galpani2_coin_lockout_w )
207266{
208   if (ACCESSING_BITS_8_15)
209   {
210      coin_counter_w(0, data & 0x0100);
211      coin_counter_w(1, data & 0x0200);
212      coin_lockout_w(0,~data & 0x0400);
213      coin_lockout_w(1,~data & 0x0800);
214      // & 0x1000     CARD in lockout?
215      // & 0x2000     CARD in lockout?
216      // & 0x4000     CARD out
217   }
267      coin_counter_w(0, data & 0x01);
268      coin_counter_w(1, data & 0x02);
269      coin_lockout_w(0,~data & 0x04);
270      coin_lockout_w(1,~data & 0x08);
271      // & 0x10     CARD in lockout?
272      // & 0x20     CARD in lockout?
273      // & 0x40     CARD out
218274}
219275
220static WRITE16_DEVICE_HANDLER( galpani2_oki1_bank_w )
276static WRITE8_DEVICE_HANDLER( galpani2_oki1_bank_w )
221277{
222   if (ACCESSING_BITS_0_7)
223   {
224278      UINT8 *ROM = memory_region(device->machine, "oki1");
225279      logerror("%s : %s bank %08X\n",cpuexec_describe_context(device->machine),device->tag,data);
226280      memcpy(ROM + 0x30000, ROM + 0x40000 + 0x10000 * (~data & 0xf), 0x10000);
227   }
228281}
229282
230static WRITE16_DEVICE_HANDLER( galpani2_oki2_bank_w )
283static WRITE8_DEVICE_HANDLER( galpani2_oki2_bank_w )
231284{
232   if (ACCESSING_BITS_0_7)
233   {
234285      okim6295_set_bank_base(device, 0x40000 * (data & 0xf) );
235286      logerror("%s : %s bank %08X\n",cpuexec_describe_context(device->machine),device->tag,data);
236   }
237287}
238288
239289
240290static ADDRESS_MAP_START( galpani2_mem1, ADDRESS_SPACE_PROGRAM, 16 )
241291   AM_RANGE(0x000000, 0x0fffff) AM_ROM                                    // ROM
242292   AM_RANGE(0x100000, 0x10ffff) AM_RAM AM_BASE(&galpani2_ram            )      // Work RAM
293   AM_RANGE(0x110000, 0x11000f) AM_RAM                                    // ? corrupted? stack dumper on POST failure, pc+sr on gp2se
243294   AM_RANGE(0x300000, 0x301fff) AM_RAM                                    // ?
244295   AM_RANGE(0x302000, 0x303fff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size   )   // Sprites
245296   AM_RANGE(0x304000, 0x30401f) AM_RAM_WRITE(kaneko16_sprites_regs_w) AM_BASE(&kaneko16_sprites_regs   )   // Sprites Regs
246   AM_RANGE(0x308000, 0x308001) AM_WRITE(SMH_NOP                        )   // ? 0 at startup
247   AM_RANGE(0x30c000, 0x30c001) AM_WRITE(SMH_NOP                        )   // ? hblank effect ?
297   AM_RANGE(0x308000, 0x308001) AM_WRITENOP                              // ? 0 at startup
298   AM_RANGE(0x30c000, 0x30c001) AM_WRITENOP                              // ? hblank effect ?
248299   AM_RANGE(0x310000, 0x3101ff) AM_RAM_WRITE(galpani2_palette_0_w) AM_BASE(&galpani2_palette_0   )   // ?
249   AM_RANGE(0x314000, 0x314001) AM_WRITE(SMH_NOP                        )   // ? flip backgrounds ?
250   AM_RANGE(0x318000, 0x318001) AM_READWRITE(galpani2_eeprom_r, galpani2_eeprom_w   )   // EEPROM
300   AM_RANGE(0x314000, 0x314001) AM_WRITENOP                              // ? flip backgrounds ?
301   AM_RANGE(0x318000, 0x318001) AM_READWRITE(galpani2_eeprom_r, galpani2_eeprom_w)   // EEPROM
251302   AM_RANGE(0x380000, 0x387fff) AM_RAM                                    // Palette?
252303   AM_RANGE(0x388000, 0x38ffff) AM_RAM_WRITE(paletteram16_xGGGGGRRRRRBBBBB_word_w) AM_BASE(&paletteram16   )   // Palette
253   AM_RANGE(0x390000, 0x3901ff) AM_WRITE(SMH_NOP                        )   // ? at startup of service mode
304   AM_RANGE(0x390000, 0x3901ff) AM_WRITENOP                              // ? at startup of service mode
254305
255306   AM_RANGE(0x400000, 0x43ffff) AM_RAM_WRITE(galpani2_bg8_0_w) AM_BASE(&galpani2_bg8_0   )   // Background 0
256307   AM_RANGE(0x440000, 0x440001) AM_RAM AM_BASE(&galpani2_bg8_0_scrollx   )         // Background 0 Scroll X
257308   AM_RANGE(0x480000, 0x480001) AM_RAM AM_BASE(&galpani2_bg8_0_scrolly   )         // Background 0 Scroll Y
258   AM_RANGE(0x4c0000, 0x4c0001) AM_WRITE(SMH_NOP                        )   // ? 0 at startup only
309   AM_RANGE(0x4c0000, 0x4c0001) AM_WRITENOP                              // ? 0 at startup only
259310   AM_RANGE(0x500000, 0x53ffff) AM_RAM_WRITE(galpani2_bg8_1_w) AM_BASE(&galpani2_bg8_1   )   // Background 1
260311   AM_RANGE(0x540000, 0x540001) AM_RAM AM_BASE(&galpani2_bg8_1_scrollx   )         // Background 1 Scroll X
261312
262   AM_RANGE(0x54059a, 0x54059b) AM_READ(SMH_NOP                  )   // ? galpani2 at F0A4
263   AM_RANGE(0x5405a2, 0x5405a3) AM_READ(SMH_NOP                  )   // ? galpani2 at F0A4 and F148
264   AM_RANGE(0x5405aa, 0x5405ab) AM_READ(SMH_NOP                  )   // ? galpani2 at F0A4 and F148
265   AM_RANGE(0x5405b2, 0x5405b3) AM_READ(SMH_NOP                  )   // ? galpani2 at F0A4 and F148
266   AM_RANGE(0x5405ba, 0x5405bb) AM_READ(SMH_NOP                  )   // ? galpani2 at F0A4 and F148
267   AM_RANGE(0x5405c2, 0x5405c3) AM_READ(SMH_NOP                  )   // ? galpani2 at F0A4 and F148
268   AM_RANGE(0x5405ca, 0x5405cb) AM_READ(SMH_NOP                  )   // ? galpani2 at F148
313   AM_RANGE(0x540572, 0x540573) AM_READNOP                                 // ? galpani2 at F0A4
314   AM_RANGE(0x54057a, 0x54057b) AM_READNOP                                 // ? galpani2 at F148
315   AM_RANGE(0x54059a, 0x54059b) AM_READNOP                                 // ? galpani2 at F0A4
316   AM_RANGE(0x5405a2, 0x5405a3) AM_READNOP                                 // ? galpani2 at F0A4 and F148
317   AM_RANGE(0x5405aa, 0x5405ab) AM_READNOP                                 // ? galpani2 at F0A4 and F148
318   AM_RANGE(0x5405b2, 0x5405b3) AM_READNOP                                 // ? galpani2 at F0A4 and F148
319   AM_RANGE(0x5405ba, 0x5405bb) AM_READNOP                                 // ? galpani2 at F0A4 and F148
320   AM_RANGE(0x5405c2, 0x5405c3) AM_READNOP                                 // ? galpani2 at F0A4 and F148
321   AM_RANGE(0x5405ca, 0x5405cb) AM_READNOP                                 // ? galpani2 at F148
269322
270323   AM_RANGE(0x580000, 0x580001) AM_RAM AM_BASE(&galpani2_bg8_1_scrolly   )         // Background 1 Scroll Y
271   AM_RANGE(0x5c0000, 0x5c0001) AM_WRITE(SMH_NOP                        )   // ? 0 at startup only
272   AM_RANGE(0x600000, 0x600001) AM_WRITE(SMH_NOP                        )   // Watchdog
273   AM_RANGE(0x640000, 0x640001) AM_WRITE(SMH_NOP                        )   // ? 0 before resetting and at startup
274    AM_RANGE(0x680000, 0x680001) AM_WRITE(galpani2_mcu_nmi_w   )               // ? 0 -> 1 -> 0 (lev 5) / 0 -> $10 -> 0
275   AM_RANGE(0x6c0000, 0x6c0001) AM_WRITE(galpani2_coin_lockout_w            )   // Coin + Card Lockout
324   AM_RANGE(0x5c0000, 0x5c0001) AM_WRITENOP                              // ? 0 at startup only
325   AM_RANGE(0x600000, 0x600001) AM_WRITENOP                              // Watchdog
326   AM_RANGE(0x640000, 0x640001) AM_WRITE8(galpani2_mcu_init_w, 0x00ff         )   // ? 0 before resetting and at startup, Reset mcu ?
327   AM_RANGE(0x680000, 0x680001) AM_WRITE8(galpani2_mcu_nmi1_w, 0x00ff)            // ? 0 -> 1 -> 0 (lev 5) / 0 -> $10 -> 0
328   AM_RANGE(0x6c0000, 0x6c0001) AM_WRITE8(galpani2_coin_lockout_w, 0xff00      )   // Coin + Card Lockout
276329   AM_RANGE(0x780000, 0x780001) AM_READ_PORT("DSW1_P1")
277330   AM_RANGE(0x780002, 0x780003) AM_READ_PORT("DSW2_P2")
278331   AM_RANGE(0x780004, 0x780005) AM_READ_PORT("SPECIAL")
279332   AM_RANGE(0x780006, 0x780007) AM_READ_PORT("SERVICE")
280333   AM_RANGE(0xc00000, 0xc00001) AM_DEVREADWRITE8("oki1", okim6295_r, okim6295_w, 0x00ff   )   // 2 x OKIM6295
281334   AM_RANGE(0xc40000, 0xc40001) AM_DEVREADWRITE8("oki2", okim6295_r, okim6295_w, 0x00ff   )   //
282   AM_RANGE(0xc80000, 0xc80001) AM_DEVWRITE("oki1", galpani2_oki1_bank_w               )   //
283   AM_RANGE(0xcc0000, 0xcc0001) AM_DEVWRITE("oki2", galpani2_oki2_bank_w               )   //
335   AM_RANGE(0xc80000, 0xc80001) AM_DEVWRITE8("oki1", galpani2_oki1_bank_w, 0x00ff         )   //
336   AM_RANGE(0xcc0000, 0xcc0001) AM_DEVWRITE8("oki2", galpani2_oki2_bank_w, 0x00ff         )   //
284337ADDRESS_MAP_END
285338
286339
r4679r4680
302355   offset += (0x800000/2) * (*galpani2_rombank & 0x0003);
303356
304357   if ( offset < len )   return ROM[offset];
305   else            return 0xffff;
358   else            return 0xffff; //floating bus for absent ROMs
306359}
307360
308361static ADDRESS_MAP_START( galpani2_mem2, ADDRESS_SPACE_PROGRAM, 16 )
r4679r4680
311364   AM_RANGE(0x400000, 0x4fffff) AM_RAM_WRITE(galpani2_bg15_w) AM_BASE(&galpani2_bg15)   // bg15
312365   AM_RANGE(0x500000, 0x5fffff) AM_RAM                                                // bg15
313366   AM_RANGE(0x600000, 0x600001) AM_READWRITE(SMH_NOP, SMH_NOP         )   // ? 0 at startup only
314   AM_RANGE(0x640000, 0x640001) AM_WRITE(SMH_NOP                  )   // ? 0 at startup only
315   AM_RANGE(0x680000, 0x680001) AM_WRITE(SMH_NOP                  )   // ? 0 at startup only
316   AM_RANGE(0x6c0000, 0x6c0001) AM_WRITE(SMH_NOP                  )   // ? 0 at startup only
317   AM_RANGE(0x700000, 0x700001) AM_WRITE(SMH_NOP                  )   // Watchdog
318   AM_RANGE(0x780000, 0x780001) AM_WRITE(SMH_NOP                  )   // ? 0 -> 1 -> 0 (lev 5)
367   AM_RANGE(0x640000, 0x640001) AM_WRITENOP                        // ? 0 at startup only
368   AM_RANGE(0x680000, 0x680001) AM_WRITENOP                        // ? 0 at startup only
369   AM_RANGE(0x6c0000, 0x6c0001) AM_WRITENOP                        // ? 0 at startup only
370   AM_RANGE(0x700000, 0x700001) AM_WRITENOP                        // Watchdog
371//  AM_RANGE(0x740000, 0x740001) AM_WRITENOP                                // ? Reset mcu
372   AM_RANGE(0x780000, 0x780001) AM_WRITE8(galpani2_mcu_nmi2_w, 0x00ff)            // ? 0 -> 1 -> 0 (lev 5)
319373   AM_RANGE(0x7c0000, 0x7c0001) AM_WRITE(SMH_RAM) AM_BASE(&galpani2_rombank   )   // Rom Bank
320374   AM_RANGE(0x800000, 0xffffff) AM_READ(galpani2_bankedrom_r      )      // Banked ROM
321375ADDRESS_MAP_END
r4679r4680
426480INPUT_PORTS_END
427481
428482static INPUT_PORTS_START( gp2se )
429   PORT_START("DSW1_P1")   /* 780000.w */
483   PORT_INCLUDE( galpani2 )
484
485   PORT_MODIFY("DSW1_P1")   /* 780000.w */
430486   PORT_DIPNAME( 0x0007, 0x0007, DEF_STR( Difficulty ) )
431487   PORT_DIPSETTING(      0x0007, DEF_STR( Normal ) )
432488   PORT_DIPSETTING(      0x0006, DEF_STR( Very_Easy ) )
r4679r4680
448504   PORT_DIPSETTING(      0x0040, "4" )
449505   PORT_DIPSETTING(      0x0000, "6" )
450506
451   PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(1)
452   PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1)
453   PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1)
454   PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1)
455   PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
456   PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1)
457   PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_START1 )
458   PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(1)
459
460   PORT_START("DSW2_P2")   /* 780002.w */
461   PORT_DIPNAME( 0x000f, 0x000f, DEF_STR( Coinage ) )
462   PORT_DIPSETTING(      0x000f, "1 Coin/1 Credit  1/1" )
463   PORT_DIPSETTING(      0x000e, "2 Coin/1 Credit  2/1" )
464   PORT_DIPSETTING(      0x000d, "3 Coin/1 Credit  3/1" )
465   PORT_DIPSETTING(      0x000c, "4 Coin/1 Credit  4/1" )
466   PORT_DIPSETTING(      0x000b, "5 Coin/1 Credit  5/1" )
467   PORT_DIPSETTING(      0x000a, "2 Coin/1 Credit  1/1" )
468   PORT_DIPSETTING(      0x0009, "3 Coin/1 Credit  1/1" )
469   PORT_DIPSETTING(      0x0008, "4 Coin/1 Credit  1/1" )
470   PORT_DIPSETTING(      0x0007, "5 Coin/1 Credit  1/1" )
471   PORT_DIPSETTING(      0x0006, "2 Coin/1 Credit  2/1" )
472   PORT_DIPSETTING(      0x0005, "3 Coin/1 Credit  2/1" )
473   PORT_DIPSETTING(      0x0004, "4 Coin/1 Credit  2/1" )
474   PORT_DIPSETTING(      0x0003, "5 Coin/1 Credit  2/1" )
475   PORT_DIPSETTING(      0x0002, "1 Coin/2 Credit  1/2" )
476   PORT_DIPSETTING(      0x0001, "1 Coin/3 Credit  1/3" )
477   PORT_DIPSETTING(      0x0000, DEF_STR( Free_Play ) )
507   PORT_MODIFY("DSW2_P2")   /* 780002.w */
478508   PORT_DIPNAME( 0x0010, 0x0010, "Card Dispenser" )
479509   PORT_DIPSETTING(      0x0000, "Used" )
480510   PORT_DIPSETTING(      0x0010, DEF_STR( Unused ) )
481   PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Flip_Screen ) )
482   PORT_DIPSETTING(      0x0020, DEF_STR( Off ) )
483   PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
484   PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Demo_Sounds ) )
485   PORT_DIPSETTING(      0x0000, DEF_STR( Off ) )
486   PORT_DIPSETTING(      0x0040, DEF_STR( On ) )
487   PORT_SERVICE( 0x0080, IP_ACTIVE_LOW )
488511
489   PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(2)
490   PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(2)
491   PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2)
492   PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2)
493   PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
494   PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
495   PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_START2  )
496   PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(1)
497
498   PORT_START("SPECIAL")   /* 780004.w */
499   PORT_BIT( 0x00ff, IP_ACTIVE_LOW, IPT_UNKNOWN )
500   PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_UNKNOWN )
501   PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_UNKNOWN )
502   PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1)
503   PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_UNKNOWN )
504   PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNKNOWN )
505   PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_SPECIAL )   // CARD full
506   PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_SPECIAL )   // CARD full
507   PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_SPECIAL )   // CARD empty
508
509   PORT_START("SERVICE")   /* 780006.w */
510   PORT_BIT( 0x00ff, IP_ACTIVE_LOW, IPT_UNKNOWN )
511   PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_UNKNOWN )
512   PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_UNKNOWN )
513   PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2)
514   PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_UNKNOWN )
515   PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNKNOWN )
516   PORT_SERVICE_NO_TOGGLE( 0x2000, IP_ACTIVE_LOW )
517   PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_TILT     )
518   PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_SERVICE1 )
519
520512   //missing "test" input
521513INPUT_PORTS_END
522514
r4679r4680
556548***************************************************************************/
557549
558550
559/* CPU#1 Interrups */
551/* CPU#1 Interrups , lev 3,4 & 5 are tested on power up. The rest is rte, but lev 6 */
560552#define GALPANI2_INTERRUPTS_NUM   4
561553static INTERRUPT_GEN( galpani2_interrupt1 )
562554{
r4679r4680
569561   }
570562}
571563
572/* CPU#2 Interrups */
573/* lev 3,4 & 5 are tested on power up. The rest is rte, but lev 7 */
564/* CPU#2 Interrups , lev 3,4 & 5 are tested on power up. The rest is rte, but lev 7 */
574565#define GALPANI2_INTERRUPTS_NUM2   3
575566static INTERRUPT_GEN( galpani2_interrupt2 )
576567{
r4679r4680
585576static MACHINE_DRIVER_START( galpani2 )
586577
587578   /* basic machine hardware */
588   MDRV_CPU_ADD("maincpu", M68000, 16000000)   /* 16MHz */
579   MDRV_CPU_ADD("maincpu", M68000, XTAL_16MHz)
589580   MDRV_CPU_PROGRAM_MAP(galpani2_mem1, 0)
590581   MDRV_CPU_VBLANK_INT_HACK(galpani2_interrupt1,GALPANI2_INTERRUPTS_NUM)
582   //MDRV_QUANTUM_PERFECT_CPU("maincpu")
591583
592   MDRV_CPU_ADD("sub", M68000, 16000000)   /* 16MHz */
584   MDRV_CPU_ADD("sub", M68000, XTAL_16MHz)
593585   MDRV_CPU_PROGRAM_MAP(galpani2_mem2, 0)
594586   MDRV_CPU_VBLANK_INT_HACK(galpani2_interrupt2,GALPANI2_INTERRUPTS_NUM2)
595587
r4679r4680
614606   /* sound hardware */
615607   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
616608
617   MDRV_SOUND_ADD("oki1", OKIM6295, 1584000)
618   MDRV_SOUND_CONFIG(okim6295_interface_pin7high) // clock frequency & pin 7 not verified
609   MDRV_SOUND_ADD("oki1", OKIM6295, XTAL_16MHz/8)
610   MDRV_SOUND_CONFIG(okim6295_interface_pin7low) // clock frequency & pin 7 not verified
619611   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
620612
621   MDRV_SOUND_ADD("oki2", OKIM6295, 1584000)
622   MDRV_SOUND_CONFIG(okim6295_interface_pin7high) // clock frequency & pin 7 not verified
613   MDRV_SOUND_ADD("oki2", OKIM6295, XTAL_16MHz/8)
614   MDRV_SOUND_CONFIG(okim6295_interface_pin7low) // clock frequency & pin 7 not verified
623615   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
624616MACHINE_DRIVER_END
625617
r4679r4680
701693   ROM_LOAD16_BYTE( "g000a2.u165-1", 0x000000, 0x080000, CRC(0c6dfe3f) SHA1(22b16eaa3fee7f8f8434c6775255b25c8d960620) )
702694   ROM_LOAD16_BYTE( "g001a2.u164-1", 0x000001, 0x080000, CRC(b3a5951f) SHA1(78cf2d85a8b3cd46c5e30fd13b474af2ed2ee09b) )
703695
704    ROM_REGION( 0x1000000, "sub", 0 )         /* CPU#2 Code */
696    ROM_REGION( 0x40000, "sub", 0 )         /* CPU#2 Code */
705697   ROM_LOAD16_BYTE( "g002a2.u64-1", 0x000000, 0x020000, CRC(c0b94eaf) SHA1(4f3a65b238b31ee8d256b7025253f01eaf6e55d5) )
706698   ROM_LOAD16_BYTE( "g003a2.u63-1", 0x000001, 0x020000, CRC(0d30725d) SHA1(d4614f9ffb930c4ea36cb3fbacffe63060e92402) )
707699
708   ROM_REGION16_BE( 0x1500000, "user1", 0 )   /* Backgrounds (CPU2) */
700   ROM_REGION16_BE( 0x2000000, "user1", 0 )   /* Backgrounds (CPU2) */
709701   ROM_LOAD( "gp2-300a.052", 0x0000000, 0x100000, CRC(09ebedba) SHA1(3c06614633f0da03facb5199deac492b8ce07257) )
710702   ROM_LOAD( "gp2-300b.053", 0x0100000, 0x100000, CRC(d7d12920) SHA1(4b6e01cc0ac5192758f4b3d26f102905b2b5e8ac) )
711703   ROM_LOAD( "gp2-301.035", 0x0200000, 0x200000, CRC(e71e749d) SHA1(420c4c085e89d9641a84e34fa870df2bc02165b6) )
r4679r4680
735727   ROM_LOAD( "gp2-100.043", 0x040000, 0x100000, CRC(4235ac5b) SHA1(7e35831523fbb2d0587b9ab93c13b2b43dc481a8) )   // $10 x $10000
736728   ROM_COPY( "oki1", 0x0c0000, 0, 0x40000 )
737729
738   ROM_REGION( 0x400000, "oki2", 0 )   /* Samples */
739   ROM_LOAD( "gp2-102.045", 0x080000, 0x180000, CRC(b4bee779) SHA1(a41098e4b8e48577719dc4bd7f09f5e893e8b388) )   //  $8 x $40000
740   ROM_CONTINUE(            0x000000, 0x080000 )
730   ROM_REGION( 0x300000, "oki2", 0 )   /* Samples */
731   ROM_LOAD( "gp2-102.045", 0x180000, 0x080000, CRC(b4bee779) SHA1(a41098e4b8e48577719dc4bd7f09f5e893e8b388) )   //  $8 x $40000
732   ROM_CONTINUE(            0x000000, 0x180000 )
741733   ROM_LOAD( "gp2-101.044", 0x280000, 0x080000, CRC(f75ba6a0) SHA1(91cc0c019a7ebfa2562bbe570af029f00b5e0699) )   //  $4 x $40000
742734   ROM_CONTINUE(            0x200000, 0x080000 )
743735ROM_END
r4679r4680
747739   ROM_LOAD16_BYTE( "g000g1.u133-0", 0x000000, 0x080000, CRC(5a9c4886) SHA1(6fbc443612e72bafc5cac30de78c72815db20c4c) )
748740   ROM_LOAD16_BYTE( "g001g1.u134-0", 0x000001, 0x080000, CRC(c92937c3) SHA1(0c9e894c0e23e319bd2d01ec573f02ed510e3ed6) )
749741
750    ROM_REGION( 0x1000000, "sub", 0 )         /* CPU#2 Code */
742    ROM_REGION( 0x40000, "sub", 0 )         /* CPU#2 Code */
751743   ROM_LOAD16_BYTE( "g002t1.125", 0x000000, 0x020000, CRC(a3034e1c) SHA1(493e4be36f2aea0083d5d37e16486ed66dab952e) )
752744   ROM_LOAD16_BYTE( "g003t1.126", 0x000001, 0x020000, CRC(20d3a2ad) SHA1(93450e5a23456c242ebf1a3560013a17c6b05354) )
753745
754   ROM_REGION16_BE( 0x1500000, "user1", 0 )   /* Backgrounds (CPU2) */
746   ROM_REGION16_BE( 0x2000000, "user1", 0 )   /* Backgrounds (CPU2) */
755747   ROM_LOAD16_BYTE( "g300a0.u44-00", 0x0000000, 0x080000, CRC(50406294) SHA1(fc1165b7b31a44ab204cd5ac3e7b2733ed6b1534) )
756748   ROM_LOAD16_BYTE( "g300a1.u41-00", 0x0000001, 0x080000, CRC(d26b7c4f) SHA1(b491170010977ba1e5111893937cc6bab0539e7d) )
757749   ROM_LOAD16_BYTE( "g300b0.u45-00", 0x0100000, 0x080000, CRC(9637934c) SHA1(d3b39d9f44825bdf24d4aa39ca32035bc5af4905) )
r4679r4680
786778 /* Sound samples: unknown load position, but included here to retain the rom in this set */
787779   ROM_LOAD( "g104g1.u04-00", 0x140000, 0x080000, CRC(03539013) SHA1(36b96c59c59d0e747eb000472c22a30de0810902) )   // $8 x $10000, 1st is just audio data, no header
788780
789   ROM_REGION( 0x400000, "oki2", 0 )   /* Samples */
790   ROM_LOAD( "gp2-102.045", 0x080000, 0x180000, CRC(b4bee779) SHA1(a41098e4b8e48577719dc4bd7f09f5e893e8b388) )   //  $8 x $40000
791   ROM_CONTINUE(            0x000000, 0x080000 )
781   ROM_REGION( 0x300000, "oki2", 0 )   /* Samples */
782   ROM_LOAD( "gp2-102.045", 0x180000, 0x080000, CRC(b4bee779) SHA1(a41098e4b8e48577719dc4bd7f09f5e893e8b388) )   //  $8 x $40000
783   ROM_CONTINUE(            0x000000, 0x180000 )
792784   ROM_LOAD( "gp2-101.044", 0x280000, 0x080000, CRC(f75ba6a0) SHA1(91cc0c019a7ebfa2562bbe570af029f00b5e0699) )   //  $4 x $40000
793785   ROM_CONTINUE(            0x200000, 0x080000 )
794786ROM_END
r4679r4680
798790   ROM_LOAD16_BYTE( "g000t1.133", 0x000000, 0x080000, CRC(332048e7) SHA1(1a353d4b29f7a08158fc454309dc496df6b5b108) )
799791   ROM_LOAD16_BYTE( "g001t1.134", 0x000001, 0x080000, CRC(c92937c3) SHA1(0c9e894c0e23e319bd2d01ec573f02ed510e3ed6) )
800792
801    ROM_REGION( 0x1000000, "sub", 0 )         /* CPU#2 Code */
793    ROM_REGION( 0x40000, "sub", 0 )         /* CPU#2 Code */
802794   ROM_LOAD16_BYTE( "g002t1.125", 0x000000, 0x020000, CRC(a3034e1c) SHA1(493e4be36f2aea0083d5d37e16486ed66dab952e) )
803795   ROM_LOAD16_BYTE( "g003t1.126", 0x000001, 0x020000, CRC(20d3a2ad) SHA1(93450e5a23456c242ebf1a3560013a17c6b05354) )
804796
805   ROM_REGION16_BE( 0x1500000, "user1", 0 )   /* Backgrounds (CPU2) */
797   ROM_REGION16_BE( 0x2000000, "user1", 0 )   /* Backgrounds (CPU2) */
806798   ROM_LOAD( "gp2-300a.052", 0x0000000, 0x100000, CRC(09ebedba) SHA1(3c06614633f0da03facb5199deac492b8ce07257) )
807799   ROM_LOAD( "gp2-300b.053", 0x0100000, 0x100000, CRC(d7d12920) SHA1(4b6e01cc0ac5192758f4b3d26f102905b2b5e8ac) )
808800   ROM_LOAD( "gp2-301.035", 0x0200000, 0x200000, CRC(e71e749d) SHA1(420c4c085e89d9641a84e34fa870df2bc02165b6) )
r4679r4680
833825   ROM_LOAD( "gp2-100.043", 0x040000, 0x100000, CRC(4235ac5b) SHA1(7e35831523fbb2d0587b9ab93c13b2b43dc481a8) )   // $10 x $10000
834826   ROM_COPY( "oki1", 0x0c0000, 0, 0x40000 )
835827
836   ROM_REGION( 0x400000, "oki2", 0 )   /* Samples */
837   ROM_LOAD( "gp2-102.045", 0x080000, 0x180000, CRC(b4bee779) SHA1(a41098e4b8e48577719dc4bd7f09f5e893e8b388) )   //  $8 x $40000
838   ROM_CONTINUE(            0x000000, 0x080000 )
828   ROM_REGION( 0x300000, "oki2", 0 )   /* Samples */
829   ROM_LOAD( "gp2-102.045", 0x180000, 0x080000, CRC(b4bee779) SHA1(a41098e4b8e48577719dc4bd7f09f5e893e8b388) )   //  $8 x $40000
830   ROM_CONTINUE(            0x000000, 0x180000 )
839831   ROM_LOAD( "gp2-101.044", 0x280000, 0x080000, CRC(f75ba6a0) SHA1(91cc0c019a7ebfa2562bbe570af029f00b5e0699) )   //  $4 x $40000
840832   ROM_CONTINUE(            0x200000, 0x080000 )
841833ROM_END
r4679r4680
863855   ROM_LOAD16_BYTE( "g000j2.165", 0x000000, 0x080000, CRC(e0c5a03d) SHA1(e12457400ca8cd78674b44d7f4d664cfc0afc8c9) )
864856   ROM_LOAD16_BYTE( "g001j2.164", 0x000001, 0x080000, CRC(c8e12223) SHA1(0e0160565e95cb33dc6ad796225e995ed3baf8eb) )
865857
866   ROM_REGION( 0x1000000, "sub", 0 )         /* CPU#2 Code */
858   ROM_REGION( 0x40000, "sub", 0 )         /* CPU#2 Code */
867859   ROM_LOAD16_BYTE( "g002j1.64",  0x000000, 0x020000, CRC(5e523829) SHA1(dad11e4a3348c988ff658609cf78a3fbee58064e) )
868860   ROM_LOAD16_BYTE( "g003j1.63",  0x000001, 0x020000, CRC(2a0d5f89) SHA1(0a7031c4b8b7bc757da25250dbb5fa1004205aeb) )
869861
870   ROM_REGION16_BE( 0x800000, "user1", 0 )   /* Backgrounds (CPU2) */
862   ROM_REGION16_BE( 0x2000000, "user1", 0 )   /* Backgrounds (CPU2) */
871863   ROM_LOAD( "gp2-300j.175", 0x000000, 0x200000, CRC(3a0afc1d) SHA1(91fba9074cc3c28e919053f0ea07b28d88b2ce5f) )
872864   ROM_LOAD( "gp2-301j.176", 0x200000, 0x200000, CRC(5b6d1709) SHA1(a7d35247fe71895f2b6169409aa0bdaef446804c) )
873865   ROM_LOAD16_BYTE( "gp2-302a.177", 0x400000, 0x100000, CRC(311fa273) SHA1(c2adeac45be701f6f474841755fac4347d44f844) )
r4679r4680
894886   ROM_LOAD16_BYTE( "g000j4.u165", 0x000000, 0x080000, CRC(d8258a7a) SHA1(12991392d7e70bfba394ec4ad49b427959ca019e) )
895887   ROM_LOAD16_BYTE( "g001j4.u164", 0x000001, 0x080000, CRC(23f706bf) SHA1(960c6e6c17f03072cecabfd52018e0351ff4b661) )
896888
897   ROM_REGION( 0x1000000, "sub", 0 )         /* CPU#2 Code */
889   ROM_REGION( 0x40000, "sub", 0 )         /* CPU#2 Code */
898890   ROM_LOAD16_BYTE( "g002j4.u64",  0x000000, 0x020000, CRC(bcd4edd9) SHA1(17ae6fbf75d8e5333133737de926a36f5cd29661) )
899891   ROM_LOAD16_BYTE( "g003j4.u63",  0x000001, 0x020000, CRC(2fbe0194) SHA1(52da771ba813b27ec1a996b237c14dab9b33db82) )
900892
901   ROM_REGION16_BE( 0xa00000, "user1", 0 )   /* Backgrounds (CPU2) */
893   ROM_REGION16_BE( 0x2000000, "user1", 0 )   /* Backgrounds (CPU2) */
902894   ROM_LOAD( "gp2-300-j-0071.u175", 0x000000, 0x200000, CRC(3a0afc1d) SHA1(91fba9074cc3c28e919053f0ea07b28d88b2ce5f) )
903895   ROM_LOAD( "gp2-301-j-0072.u176", 0x200000, 0x200000, CRC(5b6d1709) SHA1(a7d35247fe71895f2b6169409aa0bdaef446804c) )
904896   ROM_LOAD16_BYTE( "gp2-302a-0057.u177", 0x400000, 0x100000, CRC(311fa273) SHA1(c2adeac45be701f6f474841755fac4347d44f844) )
r4679r4680
930922   ROM_LOAD16_BYTE( "g000e3.u165-3", 0x000000, 0x080000, CRC(b6de2653) SHA1(a24daf5e6b6b268f60b1dbb374861c85f642cea5) )
931923   ROM_LOAD16_BYTE( "g001e3.u164-3", 0x000001, 0x080000, CRC(74e8d0e8) SHA1(d131be9f52ee79e1b82f46721c2ad5d71b3da649) )
932924
933   ROM_REGION( 0x1000000, "sub", 0 )         /* CPU#2 Code */
925   ROM_REGION( 0x40000, "sub", 0 )         /* CPU#2 Code */
934926   ROM_LOAD16_BYTE( "g002e3.u64-3",  0x000000, 0x020000, CRC(5e523829) SHA1(dad11e4a3348c988ff658609cf78a3fbee58064e) )
935927   ROM_LOAD16_BYTE( "g003e3.u63-3",  0x000001, 0x020000, CRC(2a0d5f89) SHA1(0a7031c4b8b7bc757da25250dbb5fa1004205aeb) )
936928
937   ROM_REGION16_BE( 0x800000, "user1", 0 )   /* Backgrounds (CPU2) */
929   ROM_REGION16_BE( 0x2000000, "user1", 0 )   /* Backgrounds (CPU2) */
938930   ROM_LOAD( "gp2-300-j-0071.u175", 0x000000, 0x200000, CRC(3a0afc1d) SHA1(91fba9074cc3c28e919053f0ea07b28d88b2ce5f) )
939931   ROM_LOAD( "gp2-301-j-0072.u176", 0x200000, 0x200000, CRC(5b6d1709) SHA1(a7d35247fe71895f2b6169409aa0bdaef446804c) )
940932   ROM_LOAD16_BYTE( "gp2-302a-0057.u177", 0x400000, 0x100000, CRC(311fa273) SHA1(c2adeac45be701f6f474841755fac4347d44f844) )
src/mame/drivers/arabian.c
r4679r4680
445445
446446static DRIVER_INIT( arabian )
447447{
448   memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xd34b, 0xd34b, 0, 0, custom_flip_w);
449   memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xd400, 0xd401, 0, 0, custom_cocktail_w);
448   memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xd34b, 0xd34b, 0, 0, custom_flip_w);
449   memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xd400, 0xd401, 0, 0, custom_cocktail_w);
450450}
451451
452452
src/mame/drivers/shougi.c
r4679r4680
221221static WRITE8_HANDLER( shougi_mcu_halt_off_w )
222222{
223223   /* logerror("mcu HALT OFF"); */
224   cpu_set_input_line(space->machine->cpu[2], INPUT_LINE_HALT, CLEAR_LINE);
224   cputag_set_input_line(space->machine, "mcu", INPUT_LINE_HALT, CLEAR_LINE);
225225}
226226
227227static WRITE8_HANDLER( shougi_mcu_halt_on_w )
228228{
229229   /* logerror("mcu HALT ON"); */
230   cpu_set_input_line(space->machine->cpu[2], INPUT_LINE_HALT,ASSERT_LINE);
230   cputag_set_input_line(space->machine, "mcu", INPUT_LINE_HALT,ASSERT_LINE);
231231}
232232
233233
r4679r4680
238238   nmi_enabled = 0; /* disable NMIs */
239239
240240   /* NMI lines are tied together on both CPUs and connected to the LS74 /Q output */
241   cpu_set_input_line(space->machine->cpu[0], INPUT_LINE_NMI, CLEAR_LINE);
242   cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_NMI, CLEAR_LINE);
241   cputag_set_input_line(space->machine, "maincpu", INPUT_LINE_NMI, CLEAR_LINE);
242   cputag_set_input_line(space->machine, "sub", INPUT_LINE_NMI, CLEAR_LINE);
243243}
244244
245245static WRITE8_HANDLER( nmi_enable_w )
r4679r4680
252252   if ( nmi_enabled == 1 )
253253   {
254254      /* NMI lines are tied together on both CPUs and connected to the LS74 /Q output */
255      cpu_set_input_line(device->machine->cpu[0], INPUT_LINE_NMI, ASSERT_LINE);
256      cpu_set_input_line(device->machine->cpu[1], INPUT_LINE_NMI, ASSERT_LINE);
255      cputag_set_input_line(device->machine, "maincpu", INPUT_LINE_NMI, ASSERT_LINE);
256      cputag_set_input_line(device->machine, "sub", INPUT_LINE_NMI, ASSERT_LINE);
257257   }
258258}
259259
src/mame/drivers/taito_o.c
r0r4680
1/***************************************************************
2
3Taito  'O System'
4-------------------
5
6Taito gambling hardware, very similar to H system.
7
8Board specs (based on poor quality pic):
9
1068000
11YM2203
124 custom Taito chips ( TC0080VCO? TC0070RGB? )
13Custom (non JAMMA) connector
14Battery
15
16
17Games :
18
19Parent Jack  (C) 1989 Taito
20
21TODO:
22
23- inputs (coins)
24- NVRAM
25- sprite priorities
26- dips
27- interrupts (sources) - valid levels 4,5,6(hop empty?)
28
29*****************************************************************/
30
31#include "driver.h"
32#include "deprecat.h"
33#include "cpu/z80/z80.h"
34#include "cpu/m68000/m68000.h"
35#include "video/taitoic.h"
36#include "sound/2203intf.h"
37
38static const int clear_hack=1;
39
40VIDEO_START( parentj );
41VIDEO_UPDATE( parentj );
42
43static WRITE16_HANDLER(io_w)
44{
45   switch(offset)
46   {
47      case 2: watchdog_reset(space->machine); break;
48
49      default: logerror("IO W %x %x %x\n",offset,data,mem_mask);
50   }
51}
52
53static READ16_HANDLER(io_r)
54{
55   int retval=0;
56   switch(offset)
57   {
58      case 0: retval=input_port_read(space->machine, "IN0")&(clear_hack?0xf7ff:0xffff);break;
59      case 1: retval=input_port_read(space->machine, "IN1")&(clear_hack?0xfff7:0xffff);break;
60      default: logerror("IO R %x %x = %x @ %x\n",offset,mem_mask,retval,cpu_get_pc(space->cpu));
61   }
62   return retval;
63}
64
65static ADDRESS_MAP_START( parentj_map, ADDRESS_SPACE_PROGRAM, 16 )
66   AM_RANGE(0x000000, 0x01ffff) AM_ROM
67   AM_RANGE(0x100000, 0x10ffff) AM_MIRROR(0x010000) AM_RAM
68   AM_RANGE(0x200000, 0x20000f) AM_READWRITE(io_r, io_w) /* TC0220IOC ? */
69   AM_RANGE(0x300000, 0x300003) AM_DEVREADWRITE8("ym", ym2203_r, ym2203_w, 0x00ff)
70   AM_RANGE(0x400000, 0x420fff) AM_READWRITE(TC0080VCO_word_r, TC0080VCO_word_w)
71   AM_RANGE(0x500800, 0x500fff) AM_RAM AM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE(&paletteram16)
72ADDRESS_MAP_END
73
74static INPUT_PORTS_START( parentj )
75   PORT_START("IN0")
76   PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_CODE(KEYCODE_Z) PORT_NAME("Bet 1")
77   PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_CODE(KEYCODE_X) PORT_NAME("Bet 2")
78   PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_CODE(KEYCODE_C) PORT_NAME("Bet 3")
79   PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_CODE(KEYCODE_V) PORT_NAME("Bet 4")
80
81   PORT_DIPNAME(0x0010,  0x10, "IN0 4")
82   PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
83   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
84   PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON8 ) PORT_CODE(KEYCODE_F) PORT_NAME("Payout")
85   PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_START1 )
86   PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_BUTTON7 ) PORT_CODE(KEYCODE_D) PORT_NAME("Check")
87   PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_CODE(KEYCODE_A) PORT_NAME("Deal/Hit")
88   PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_BUTTON6 ) PORT_CODE(KEYCODE_S) PORT_NAME("Double")
89   PORT_DIPNAME(0x000400,  0x400, "IN0 a")
90   PORT_DIPSETTING(    0x400, DEF_STR( Off ) )
91   PORT_DIPSETTING(    0x000, DEF_STR( On ) )
92   PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_CODE(KEYCODE_J) PORT_NAME("Reset")
93
94   PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_CODE(KEYCODE_Q) PORT_NAME("Last Key")
95   PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_CODE(KEYCODE_W) PORT_NAME("Meter Key")
96   PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_CODE(KEYCODE_E) PORT_NAME("Opto 1H")
97   PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_CODE(KEYCODE_R) PORT_NAME("Opto 1L")
98
99   PORT_START("IN1")
100   PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_CODE(KEYCODE_U) PORT_NAME("Hop Over")
101   PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_CODE(KEYCODE_T) PORT_NAME("Opto 2H")
102   PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_CODE(KEYCODE_Y) PORT_NAME("Opto 2L")
103   PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_CODE(KEYCODE_I) PORT_NAME("All Clear")
104
105   PORT_DIPNAME(0x0010,  0x10, "Test Mode") /* sometimes */
106   PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
107   PORT_DIPSETTING(    0x000, DEF_STR( On ) )
108   PORT_DIPNAME(0x0020,  0x20, "IN1 5")
109   PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
110   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
111   PORT_DIPNAME(0x0040,  0x40, "IN1 6")
112   PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
113   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
114   PORT_DIPNAME(0x0080,  0x80, "IN1 7")
115   PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
116   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
117   PORT_DIPNAME(0x000100,  0x000, "Battery test?")
118   PORT_DIPSETTING(    0x000, DEF_STR( Off ) )
119   PORT_DIPSETTING(    0x100, DEF_STR( On ) )
120   PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_CODE(KEYCODE_O) PORT_NAME("Pay Out")
121   PORT_DIPNAME(0x000400,  0x400, "IN1 a")
122   PORT_DIPSETTING(    0x400, DEF_STR( Off ) )
123   PORT_DIPSETTING(    0x000, DEF_STR( On ) )
124   PORT_DIPNAME(0x000800,  0x800, "IN1 b")
125   PORT_DIPSETTING(    0x800, DEF_STR( Off ) )
126   PORT_DIPSETTING(    0x000, DEF_STR( On ) )
127   PORT_DIPNAME(0x001000,  0x1000, "IN1 c")
128   PORT_DIPSETTING(    0x1000, DEF_STR( Off ) )
129   PORT_DIPSETTING(    0x0000, DEF_STR( On ) )
130   PORT_DIPNAME(0x002000,  0x2000, "IN1 d")
131   PORT_DIPSETTING(    0x2000, DEF_STR( Off ) )
132   PORT_DIPSETTING(    0x0000, DEF_STR( On ) )
133   PORT_DIPNAME(0x004000,  0x4000, "IN1 e")
134   PORT_DIPSETTING(    0x4000, DEF_STR( Off ) )
135   PORT_DIPSETTING(    0x0000, DEF_STR( On ) )
136   PORT_DIPNAME(0x008000,  0x8000, "IN1 f")
137   PORT_DIPSETTING(    0x8000, DEF_STR( Off ) )
138   PORT_DIPSETTING(    0x0000, DEF_STR( On ) )
139
140   PORT_START("DSWA")
141   PORT_DIPNAME(0x0001,  0x00, "DSWA 0")
142   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
143   PORT_DIPSETTING(    0x01, DEF_STR( On ) )
144   PORT_DIPNAME(0x0002,  0x00, "DSWA 1")
145   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
146   PORT_DIPSETTING(    0x02, DEF_STR( On ) )
147   PORT_DIPNAME(0x0004,  0x00, "DSWA 2")
148   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
149   PORT_DIPSETTING(    0x04, DEF_STR( On ) )
150   PORT_DIPNAME(0x0008,  0x00, "DSWA 3")
151   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
152   PORT_DIPSETTING(    0x08, DEF_STR( On ) )
153   PORT_DIPNAME(0x0010,  0x00, "DSWA 4")
154   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
155   PORT_DIPSETTING(    0x010, DEF_STR( On ) )
156   PORT_DIPNAME(0x0020,  0x00, "DSWA 5")
157   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
158   PORT_DIPSETTING(    0x020, DEF_STR( On ) )
159   PORT_DIPNAME(0x0040,  0x00, "DSWA 6")
160   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
161   PORT_DIPSETTING(    0x040, DEF_STR( On ) )
162   PORT_DIPNAME(0x0080,  0x00, "DSWA 7")
163   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
164   PORT_DIPSETTING(    0x080, DEF_STR( On ) )
165
166   PORT_START("DSWB")
167   PORT_DIPNAME(0x0001,  0x00, "Credits at start")
168   PORT_DIPSETTING(    0x00, "500" )
169   PORT_DIPSETTING(    0x01, "0" )
170   PORT_DIPNAME(0x0002,  0x00, "DSWB 1")
171   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
172   PORT_DIPSETTING(    0x02, DEF_STR( On ) )
173   PORT_DIPNAME(0x0004,  0x00, "DSWB 2")
174   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
175   PORT_DIPSETTING(    0x04, DEF_STR( On ) )
176   PORT_DIPNAME(0x0008,  0x00, "DSWB 3")
177   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
178   PORT_DIPSETTING(    0x08, DEF_STR( On ) )
179   PORT_DIPNAME(0x0010,  0x00, "DSWB 4")
180   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
181   PORT_DIPSETTING(    0x010, DEF_STR( On ) )
182   PORT_DIPNAME(0x0020,  0x00, "DSWB 5")
183   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
184   PORT_DIPSETTING(    0x020, DEF_STR( On ) )
185   PORT_DIPNAME(0x0040,  0x00, "DSWB 6")
186   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
187   PORT_DIPSETTING(    0x040, DEF_STR( On ) )
188   PORT_DIPNAME(0x0080,  0x00, "DSWB 7")
189   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
190   PORT_DIPSETTING(    0x080, DEF_STR( On ) )
191
192INPUT_PORTS_END
193
194static const gfx_layout parentj_layout =
195{
196   16,16,
197   RGN_FRAC(1,8),
198   4,
199   { 0,1,2,3 },
200   { RGN_FRAC(7,8)+4, RGN_FRAC(7,8)+0,
201     RGN_FRAC(6,8)+4, RGN_FRAC(6,8)+0,
202     RGN_FRAC(5,8)+4, RGN_FRAC(5,8)+0,
203     RGN_FRAC(4,8)+4, RGN_FRAC(4,8)+0,
204     RGN_FRAC(3,8)+4, RGN_FRAC(3,8)+0,
205     RGN_FRAC(2,8)+4, RGN_FRAC(2,8)+0,
206     RGN_FRAC(1,8)+4, RGN_FRAC(1,8)+0,
207     RGN_FRAC(0,8)+4, RGN_FRAC(0,8)+0
208     },
209   { 0,8,16,24,32,40,48,56,64,72,80,88,96,104,112,120},
210
211   1*128
212};
213
214static GFXDECODE_START( parentj )
215   GFXDECODE_ENTRY( "gfx1", 0, parentj_layout,  0x0, 0x400/16  )
216GFXDECODE_END
217
218
219static INTERRUPT_GEN( parentj_interrupt )
220{
221   cpu_set_input_line(device, cpu_getiloops(device)?4:5 , HOLD_LINE);
222}
223
224static const ym2203_interface ym2203_config =
225{
226   {
227      AY8910_LEGACY_OUTPUT,
228      AY8910_DEFAULT_LOADS,
229      DEVCB_INPUT_PORT("DSWA"),DEVCB_INPUT_PORT("DSWB"),
230      DEVCB_NULL, DEVCB_NULL,
231   },
232   NULL
233};
234
235static MACHINE_DRIVER_START( parentj )
236
237
238   MDRV_CPU_ADD("maincpu", M68000,12000000 )      /*?? MHz */
239   MDRV_CPU_PROGRAM_MAP(parentj_map,0)
240   MDRV_CPU_VBLANK_INT_HACK(parentj_interrupt,2)
241
242   MDRV_SCREEN_ADD("screen", RASTER)
243   MDRV_SCREEN_REFRESH_RATE(60)
244   MDRV_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
245   MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
246   MDRV_SCREEN_SIZE(64*16, 64*16)
247   MDRV_SCREEN_VISIBLE_AREA(0*16, 32*16-1, 3*16, 31*16-1)
248
249   MDRV_GFXDECODE(parentj)
250   MDRV_PALETTE_LENGTH(33*16)
251
252   MDRV_VIDEO_START(parentj)
253   MDRV_VIDEO_UPDATE(parentj)
254
255   MDRV_SPEAKER_STANDARD_MONO("mono")
256
257   MDRV_SOUND_ADD("ym", YM2203, 2000000) /*?? MHz */
258   MDRV_SOUND_CONFIG(ym2203_config)
259   MDRV_SOUND_ROUTE(0, "mono",  0.25)
260   MDRV_SOUND_ROUTE(0, "mono", 0.25)
261   MDRV_SOUND_ROUTE(1, "mono",  1.0)
262   MDRV_SOUND_ROUTE(2, "mono", 1.0)
263MACHINE_DRIVER_END
264
265ROM_START( parentj )
266   ROM_REGION( 0x20000, "maincpu", 0 ) /* 68000 Code */
267   ROM_LOAD16_BYTE( "c42-13.21", 0x00000, 0x10000, CRC(823623eb) SHA1(7302cc0ac532f6190ae35218ea05bf8cf11fd687) )
268   ROM_LOAD16_BYTE( "c42-12.20", 0x00001, 0x10000, CRC(8654b0ab) SHA1(edd23a731c1c60cab353e51ef5e66d33bc3fde61) )
269
270   ROM_REGION( 0x100000, "gfx1", 0 )
271   ROM_LOAD( "c42-05.06", 0x00000, 0x20000, CRC(7af0d45d) SHA1(bc527b74185596e4e77b34d08eb3e1678614b451) )
272   ROM_LOAD( "c42-04.05", 0x20000, 0x20000, CRC(133009a1) SHA1(fae5dd600384790225c24a62d1f8a00f0366dae9) )
273   ROM_LOAD( "c42-09.13", 0x40000, 0x20000, CRC(ba35fb03) SHA1(b76e50d298ccc0f230c865b563cd8e02866a4ffb) )
274   ROM_LOAD( "c42-08.12", 0x60000, 0x20000, CRC(7fae35a7) SHA1(f4bc6c6fd4afc167eb36b8f16589e1bfd729085e) )
275   ROM_LOAD( "c42-07.10", 0x80000, 0x20000, CRC(f92c6f03) SHA1(ff42318ee425b423b67e2cec1fe3ef9d9785ebf6) )
276   ROM_LOAD( "c42-06.09", 0xa0000, 0x20000, CRC(3685febd) SHA1(637946377f6d934f791d52e9790c91f60a5b2c65) )
277   ROM_LOAD( "c42-11.17", 0xc0000, 0x20000, CRC(5d8d3c59) SHA1(c8a8a957ac9f2f1c346b4504495893c71fbfe14b) )
278   ROM_LOAD( "c42-10.16", 0xe0000, 0x20000, CRC(e85e536e) SHA1(9ed9e316869333338e39cb0d1293e3380861a3ca) )
279
280   ROM_REGION( 0x2dd, "misc", 0 )
281   ROM_LOAD( "ampal22v10a-0233.c42", 0x000, 0x2dd, CRC(0c030a81) SHA1(0f8198df2cb046683d2db9ac8e609cdff53083ed) )
282ROM_END
283
284GAME( 1989, parentj,  0,        parentj,  parentj,  0,        ROT0,    "Taito", "Parent Jack", GAME_NOT_WORKING)
src/mame/drivers/hornet.c
r4679r4680
417417   if(K037122_gfx_index[chip] == MAX_GFX_ELEMENTS)
418418      return 1;
419419
420   K037122_char_ram[chip] = auto_malloc(0x200000);
420   K037122_char_ram[chip] = auto_alloc_array(machine, UINT32, 0x200000/4);
421421
422   K037122_tile_ram[chip] = auto_malloc(0x20000);
422   K037122_tile_ram[chip] = auto_alloc_array(machine, UINT32, 0x20000/4);
423423
424   K037122_reg[chip] = auto_malloc(0x400);
424   K037122_reg[chip] = auto_alloc_array(machine, UINT32, 0x400/4);
425425
426426   if (chip == 0)
427427   {
r4679r4680
965965static MACHINE_START( hornet )
966966{
967967   jvs_sdata_ptr = 0;
968   jvs_sdata = auto_malloc(1024);
969   memset(jvs_sdata, 0, 1024);
968   jvs_sdata = auto_alloc_array_clear(machine, UINT8, 1024);
970969
971970   /* set conservative DRC options */
972971   ppcdrc_set_options(machine->cpu[0], PPCDRC_COMPATIBLE_OPTIONS);
src/mame/drivers/pipedrm.c
r4679r4680
181181   /* sound commands. It's possible the NMI isn't really hooked up on the YM2608 */
182182   /* sound board. */
183183   if (param & 0x100)
184      cpu_set_input_line(machine->cpu[1], INPUT_LINE_NMI, ASSERT_LINE);
184      cputag_set_input_line(machine, "audiocpu", INPUT_LINE_NMI, ASSERT_LINE);
185185}
186186
187187
r4679r4680
200200static WRITE8_HANDLER( pending_command_clear_w )
201201{
202202   pending_command = 0;
203   cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_NMI, CLEAR_LINE);
203   cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, CLEAR_LINE);
204204}
205205
206206
r4679r4680
518518
519519static void irqhandler(const device_config *device, int irq)
520520{
521   cpu_set_input_line(device->machine->cpu[1], 0, irq ? ASSERT_LINE : CLEAR_LINE);
521   cputag_set_input_line(device->machine, "audiocpu", 0, irq ? ASSERT_LINE : CLEAR_LINE);
522522}
523523
524524
r4679r4680
769769   /* sprite RAM lives at the end of palette RAM */
770770   spriteram = &paletteram[0xc00];
771771   spriteram_size = 0x400;
772   memory_install_readwrite8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xcc00, 0xcfff, 0, 0, SMH_BANK3, SMH_BANK3);
772   memory_install_readwrite8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xcc00, 0xcfff, 0, 0, (read8_space_func)SMH_BANK(3), (write8_space_func)SMH_BANK(3));
773773   memory_set_bankptr(machine, 3, spriteram);
774774}
775775
776776
777777static DRIVER_INIT( hatris )
778778{
779   memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x20, 0x20, 0, 0, sound_command_nonmi_w);
780   memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x21, 0x21, 0, 0, fromance_gfxreg_w);
779   memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_IO), 0x20, 0x20, 0, 0, sound_command_nonmi_w);
780   memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_IO), 0x21, 0x21, 0, 0, fromance_gfxreg_w);
781781}
782782
783783
src/mame/drivers/ccastles.c
r4679r4680
174174   /* assert the IRQ if not already asserted */
175175   if (!irq_state)
176176   {
177      cpu_set_input_line(machine->cpu[0], 0, ASSERT_LINE);
177      cputag_set_input_line(machine, "maincpu", 0, ASSERT_LINE);
178178      irq_state = 1;
179179   }
180180
r4679r4680
238238   schedule_next_irq(machine, 0);
239239
240240   /* allocate backing memory for the NVRAM */
241   generic_nvram = auto_malloc(generic_nvram_size);
241   generic_nvram = auto_alloc_array(machine, UINT8, generic_nvram_size);
242242
243243   /* setup for save states */
244244   state_save_register_global(machine, irq_state);
r4679r4680
249249
250250static MACHINE_RESET( ccastles )
251251{
252   cpu_set_input_line(machine->cpu[0], 0, CLEAR_LINE);
252   cputag_set_input_line(machine, "maincpu", 0, CLEAR_LINE);
253253   irq_state = 0;
254254}
255255
r4679r4680
265265{
266266   if (irq_state)
267267   {
268      cpu_set_input_line(space->machine->cpu[0], 0, CLEAR_LINE);
268      cputag_set_input_line(space->machine, "maincpu", 0, CLEAR_LINE);
269269      irq_state = 0;
270270   }
271271}
src/mame/drivers/ddragon3.c
r4679r4680
183183      break;
184184
185185      case 1: /* soundlatch_w */
186      soundlatch_w(space,1,reg[1]&0xff);
187      cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_NMI, PULSE_LINE );
186      soundlatch_w(space, 1, reg[1] & 0xff);
187      cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE );
188188      break;
189189
190190      case 2:
191191      /*  this gets written to on startup and at the end of IRQ6
192192        **  possibly trigger IRQ on sound CPU
193193        */
194      cpu_set_input_line(space->machine->cpu[0], 6, CLEAR_LINE);
194      cputag_set_input_line(space->machine, "maincpu", 6, CLEAR_LINE);
195195      break;
196196
197197      case 3:
198198      /*  this gets written to on startup,
199199        **  and at the end of IRQ5 (input port read) */
200      cpu_set_input_line(space->machine->cpu[0], 5, CLEAR_LINE);
200      cputag_set_input_line(space->machine, "maincpu", 5, CLEAR_LINE);
201201      break;
202202
203203      case 4:
204204      /* this gets written to at the end of IRQ6 only */
205      cpu_set_input_line(space->machine->cpu[0], 6, CLEAR_LINE);
205      cputag_set_input_line(space->machine, "maincpu", 6, CLEAR_LINE);
206206      break;
207207
208208      default:
209      logerror("OUTPUT 1400[%02x] %08x, pc=%06x \n", offset,(unsigned)data, cpu_get_pc(space->cpu) );
209      logerror("OUTPUT 1400[%02x] %08x, pc=%06x \n", offset, (unsigned)data, cpu_get_pc(space->cpu) );
210210      break;
211211   }
212212}
r4679r4680
217217 *
218218 *************************************/
219219
220static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 16 )
221   AM_RANGE(0x000000, 0x07ffff) AM_READ(SMH_ROM)
222   AM_RANGE(0x080000, 0x080fff) AM_READ(SMH_RAM)   /* Foreground (32x32 Tiles - 4 by per tile) */
223   AM_RANGE(0x082000, 0x0827ff) AM_READ(SMH_RAM)   /* Background (32x32 Tiles - 2 by per tile) */
220static ADDRESS_MAP_START( ddragon3_map, ADDRESS_SPACE_PROGRAM, 16 )
221   AM_RANGE(0x000000, 0x07ffff) AM_ROM
222   AM_RANGE(0x080000, 0x080fff) AM_RAM_WRITE(ddragon3_fg_videoram16_w) AM_BASE(&ddragon3_fg_videoram16) /* Foreground (32x32 Tiles - 4 by per tile) */
223   AM_RANGE(0x082000, 0x0827ff) AM_RAM_WRITE(ddragon3_bg_videoram16_w) AM_BASE(&ddragon3_bg_videoram16) /* Background (32x32 Tiles - 2 by per tile) */
224   AM_RANGE(0x0c0000, 0x0c000f) AM_WRITE(ddragon3_scroll16_w)
224225   AM_RANGE(0x100000, 0x100001) AM_READ_PORT("P1_P2")
225226   AM_RANGE(0x100002, 0x100003) AM_READ_PORT("SYSTEM")
226227   AM_RANGE(0x100004, 0x100005) AM_READ_PORT("DSW")
227228   AM_RANGE(0x100006, 0x100007) AM_READ_PORT("P3")
228   AM_RANGE(0x140000, 0x1405ff) AM_READ(SMH_RAM)   /* Palette RAM */
229   AM_RANGE(0x180000, 0x180fff) AM_READ(SMH_RAM)
230   AM_RANGE(0x1c0000, 0x1c3fff) AM_READ(SMH_RAM)   /* working RAM */
231ADDRESS_MAP_END
232
233static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 16 )
234   AM_RANGE(0x000000, 0x07ffff) AM_WRITE(SMH_ROM)
235   AM_RANGE(0x080000, 0x080fff) AM_WRITE(ddragon3_fg_videoram16_w) AM_BASE(&ddragon3_fg_videoram16)
236   AM_RANGE(0x082000, 0x0827ff) AM_WRITE(ddragon3_bg_videoram16_w) AM_BASE(&ddragon3_bg_videoram16)
237   AM_RANGE(0x0c0000, 0x0c000f) AM_WRITE(ddragon3_scroll16_w)
238229   AM_RANGE(0x100000, 0x10000f) AM_WRITE(ddragon3_io16_w)
239   AM_RANGE(0x140000, 0x1405ff) AM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE(&paletteram16)
240   AM_RANGE(0x180000, 0x180fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16) /* Sprites (16 bytes per sprite) */
241   AM_RANGE(0x1c0000, 0x1c3fff) AM_WRITE(SMH_RAM)
230   AM_RANGE(0x140000, 0x1405ff) AM_RAM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE(&paletteram16) /* Palette RAM */
231   AM_RANGE(0x180000, 0x180fff) AM_RAM AM_BASE(&spriteram16)
232   AM_RANGE(0x1c0000, 0x1c3fff) AM_RAM /* working RAM */
242233ADDRESS_MAP_END
243234
244static ADDRESS_MAP_START( dd3b_readmem, ADDRESS_SPACE_PROGRAM, 16 )
245   AM_RANGE(0x000000, 0x07ffff) AM_READ(SMH_ROM)
246   AM_RANGE(0x080000, 0x080fff) AM_READ(SMH_RAM)   /* Foreground (32x32 Tiles - 4 by per tile) */
247   AM_RANGE(0x081000, 0x081fff) AM_READ(SMH_RAM)
248   AM_RANGE(0x082000, 0x0827ff) AM_READ(SMH_RAM)   /* Background (32x32 Tiles - 2 by per tile) */
249   AM_RANGE(0x100000, 0x1005ff) AM_READ(SMH_RAM)   /* Palette RAM */
235static ADDRESS_MAP_START( dd3b_map, ADDRESS_SPACE_PROGRAM, 16 )
236   AM_RANGE(0x000000, 0x07ffff) AM_ROM
237   AM_RANGE(0x080000, 0x080fff) AM_RAM_WRITE(ddragon3_fg_videoram16_w) AM_BASE(&ddragon3_fg_videoram16) /* Foreground (32x32 Tiles - 4 by per tile) */
238   AM_RANGE(0x081000, 0x081fff) AM_RAM AM_BASE(&spriteram16)
239   AM_RANGE(0x082000, 0x0827ff) AM_RAM_WRITE(ddragon3_bg_videoram16_w) AM_BASE(&ddragon3_bg_videoram16) /* Background (32x32 Tiles - 2 by per tile) */
240   AM_RANGE(0x0c0000, 0x0c000f) AM_WRITE(ddragon3_scroll16_w)
241   AM_RANGE(0x100000, 0x1005ff) AM_RAM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE(&paletteram16) /* Palette RAM */
242   AM_RANGE(0x140000, 0x14000f) AM_WRITE(ddragon3_io16_w)
250243   AM_RANGE(0x180000, 0x180001) AM_READ_PORT("IN0")
251244   AM_RANGE(0x180002, 0x180003) AM_READ_PORT("IN1")
252245   AM_RANGE(0x180004, 0x180005) AM_READ_PORT("IN2")
253246   AM_RANGE(0x180006, 0x180007) AM_READ_PORT("IN3")
254   AM_RANGE(0x1c0000, 0x1c3fff) AM_READ(SMH_RAM)   /* working RAM */
247   AM_RANGE(0x1c0000, 0x1c3fff) AM_RAM /* working RAM */
255248ADDRESS_MAP_END
256249
257static ADDRESS_MAP_START( dd3b_writemem, ADDRESS_SPACE_PROGRAM, 16 )
258   AM_RANGE(0x000000, 0x07ffff) AM_WRITE(SMH_ROM)
259   AM_RANGE(0x080000, 0x080fff) AM_WRITE(ddragon3_fg_videoram16_w) AM_BASE(&ddragon3_fg_videoram16)
260   AM_RANGE(0x081000, 0x081fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16) /* Sprites (16 bytes per sprite) */
261   AM_RANGE(0x082000, 0x0827ff) AM_WRITE(ddragon3_bg_videoram16_w) AM_BASE(&ddragon3_bg_videoram16)
262   AM_RANGE(0x0c0000, 0x0c000f) AM_WRITE(ddragon3_scroll16_w)
263   AM_RANGE(0x100000, 0x1005ff) AM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE(&paletteram16)
250static ADDRESS_MAP_START( ctribe_map, ADDRESS_SPACE_PROGRAM, 16 )
251   AM_RANGE(0x000000, 0x07ffff) AM_ROM
252   AM_RANGE(0x080000, 0x080fff) AM_RAM_WRITE(ddragon3_fg_videoram16_w) AM_BASE(&ddragon3_fg_videoram16) /* Foreground (32x32 Tiles - 4 by per tile) */
253   AM_RANGE(0x081000, 0x081fff) AM_RAM AM_BASE(&spriteram16)
254   AM_RANGE(0x082000, 0x0827ff) AM_RAM_WRITE(ddragon3_bg_videoram16_w) AM_BASE(&ddragon3_bg_videoram16) /* Background (32x32 Tiles - 2 by per tile) */
255   AM_RANGE(0x082800, 0x082fff) AM_RAM
256   AM_RANGE(0x0c0000, 0x0c000f) AM_READWRITE(ddragon3_scroll16_r, ddragon3_scroll16_w)
257   AM_RANGE(0x100000, 0x1005ff) AM_RAM_WRITE(paletteram16_xxxxBBBBGGGGRRRR_word_w) AM_BASE(&paletteram16) /* Palette RAM */
264258   AM_RANGE(0x140000, 0x14000f) AM_WRITE(ddragon3_io16_w)
265   AM_RANGE(0x1c0000, 0x1c3fff) AM_WRITE(SMH_RAM)
266ADDRESS_MAP_END
267
268static ADDRESS_MAP_START( ctribe_readmem, ADDRESS_SPACE_PROGRAM, 16 )
269   AM_RANGE(0x000000, 0x07ffff) AM_READ(SMH_ROM)
270   AM_RANGE(0x080000, 0x080fff) AM_READ(SMH_RAM)   /* Foreground (32x32 Tiles - 4 by per tile) */
271   AM_RANGE(0x081000, 0x081fff) AM_READ(SMH_RAM)
272   AM_RANGE(0x082000, 0x0827ff) AM_READ(SMH_RAM)   /* Background (32x32 Tiles - 2 by per tile) */
273   AM_RANGE(0x082800, 0x082fff) AM_READ(SMH_RAM)
274   AM_RANGE(0x0c0000, 0x0c000f) AM_READ(ddragon3_scroll16_r)
275   AM_RANGE(0x100000, 0x1005ff) AM_READ(SMH_RAM)   /* Palette RAM */
276259   AM_RANGE(0x180000, 0x180001) AM_READ_PORT("IN0")
277260   AM_RANGE(0x180002, 0x180003) AM_READ_PORT("IN1")
278261   AM_RANGE(0x180004, 0x180005) AM_READ_PORT("IN2")
279262   AM_RANGE(0x180006, 0x180007) AM_READ_PORT("IN3")
280   AM_RANGE(0x1c0000, 0x1c3fff) AM_READ(SMH_RAM)   /* working RAM */
263   AM_RANGE(0x1c0000, 0x1c3fff) AM_RAM /* working RAM */
281264ADDRESS_MAP_END
282265
283static ADDRESS_MAP_START( ctribe_writemem, ADDRESS_SPACE_PROGRAM, 16 )
284   AM_RANGE(0x000000, 0x07ffff) AM_WRITE(SMH_ROM)
285   AM_RANGE(0x080000, 0x080fff) AM_WRITE(ddragon3_fg_videoram16_w) AM_BASE(&ddragon3_fg_videoram16)
286   AM_RANGE(0x081000, 0x081fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16) /* Sprites (16 bytes per sprite) */
287   AM_RANGE(0x082000, 0x0827ff) AM_WRITE(ddragon3_bg_videoram16_w) AM_BASE(&ddragon3_bg_videoram16)
288   AM_RANGE(0x082800, 0x082fff) AM_WRITE(SMH_RAM)
289   AM_RANGE(0x0c0000, 0x0c000f) AM_WRITE(ddragon3_scroll16_w)
290   AM_RANGE(0x100000, 0x1005ff) AM_WRITE(paletteram16_xxxxBBBBGGGGRRRR_word_w) AM_BASE(&paletteram16)
291   AM_RANGE(0x140000, 0x14000f) AM_WRITE(ddragon3_io16_w)
292   AM_RANGE(0x1c0000, 0x1c3fff) AM_WRITE(SMH_RAM)
293ADDRESS_MAP_END
294
295static ADDRESS_MAP_START( readmem_sound, ADDRESS_SPACE_PROGRAM, 8 )
296   AM_RANGE(0x0000, 0xbfff) AM_READ(SMH_ROM)
297   AM_RANGE(0xc000, 0xc7ff) AM_READ(SMH_RAM)
298   AM_RANGE(0xc800, 0xc801) AM_DEVREAD("ym2151", ym2151_r)
299   AM_RANGE(0xd800, 0xd800) AM_DEVREAD("oki", okim6295_r)
266static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 )
267   AM_RANGE(0x0000, 0xbfff) AM_ROM
268   AM_RANGE(0xc000, 0xc7ff) AM_RAM
269   AM_RANGE(0xc800, 0xc801) AM_DEVREADWRITE("ym2151", ym2151_r, ym2151_w)
270   AM_RANGE(0xd800, 0xd800) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w)
300271   AM_RANGE(0xe000, 0xe000) AM_READ(soundlatch_r)
301ADDRESS_MAP_END
302
303static ADDRESS_MAP_START( writemem_sound, ADDRESS_SPACE_PROGRAM, 8 )
304   AM_RANGE(0x0000, 0xbfff) AM_WRITE(SMH_ROM)
305   AM_RANGE(0xc000, 0xc7ff) AM_WRITE(SMH_RAM)
306   AM_RANGE(0xc800, 0xc801) AM_DEVWRITE("ym2151", ym2151_w)
307   AM_RANGE(0xd800, 0xd800) AM_DEVWRITE("oki", okim6295_w)
308272   AM_RANGE(0xe800, 0xe800) AM_DEVWRITE("oki", oki_bankswitch_w)
309273ADDRESS_MAP_END
310274
311static ADDRESS_MAP_START( ctribe_readmem_sound, ADDRESS_SPACE_PROGRAM, 8 )
312   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
313   AM_RANGE(0x8000, 0x87ff) AM_READ(SMH_RAM)
314   AM_RANGE(0x8801, 0x8801) AM_DEVREAD("ym2151", ym2151_status_port_r)
315   AM_RANGE(0x9800, 0x9800) AM_DEVREAD("oki", okim6295_r)
275static ADDRESS_MAP_START( ctribe_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
276   AM_RANGE(0x0000, 0x7fff) AM_ROM
277   AM_RANGE(0x8000, 0x87ff) AM_RAM
278   AM_RANGE(0x8801, 0x8801) AM_DEVREADWRITE("ym2151", ym2151_status_port_r, ym2151_w)
279   AM_RANGE(0x9800, 0x9800) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w)
316280   AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_r)
317281ADDRESS_MAP_END
318282
319static ADDRESS_MAP_START( ctribe_writemem_sound, ADDRESS_SPACE_PROGRAM, 8 )
320   AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM)
321   AM_RANGE(0x8000, 0x87ff) AM_WRITE(SMH_RAM)
322   AM_RANGE(0x8800, 0x8801) AM_DEVWRITE("ym2151", ym2151_w)
323   AM_RANGE(0x9800, 0x9800) AM_DEVWRITE("oki", okim6295_w)
324ADDRESS_MAP_END
325
326283/*************************************
327284 *
328285 *  Game-specific port definitions
r4679r4680
569526
570527static void dd3_ymirq_handler(const device_config *device, int irq)
571528{
572   cpu_set_input_line(device->machine->cpu[1], 0 , irq ? ASSERT_LINE : CLEAR_LINE );
529   cputag_set_input_line(device->machine, "audiocpu", 0 , irq ? ASSERT_LINE : CLEAR_LINE );
573530}
574531
575532static const ym2151_interface ym2151_config =
r4679r4680
592549   {
593550      if (scanline > 0)
594551         video_screen_update_partial(timer->machine->primary_screen, scanline - 1);
595      cpu_set_input_line(timer->machine->cpu[0], 5, ASSERT_LINE);
552      cputag_set_input_line(timer->machine, "maincpu", 5, ASSERT_LINE);
596553   }
597554
598555   /* Vblank is raised on scanline 248 */
599556   if (scanline == 248)
600557   {
601558      video_screen_update_partial(timer->machine->primary_screen, scanline - 1);
602      cpu_set_input_line(timer->machine->cpu[0], 6, ASSERT_LINE);
559      cputag_set_input_line(timer->machine, "maincpu", 6, ASSERT_LINE);
603560   }
604561}
605562
r4679r4680
612569static MACHINE_DRIVER_START( ddragon3 )
613570   /* basic machine hardware */
614571   MDRV_CPU_ADD("maincpu", M68000, XTAL_20MHz / 2)
615   MDRV_CPU_PROGRAM_MAP(readmem, writemem)
572   MDRV_CPU_PROGRAM_MAP(ddragon3_map,0)
616573   MDRV_TIMER_ADD_SCANLINE("scantimer", ddragon3_scanline, "screen", 0, 1)
617574
618575   MDRV_CPU_ADD("audiocpu", Z80, XTAL_3_579545MHz)
619   MDRV_CPU_PROGRAM_MAP(readmem_sound, writemem_sound)
576   MDRV_CPU_PROGRAM_MAP(sound_map,0)
620577
621578   /* video hardware */
622579   MDRV_SCREEN_ADD("screen", RASTER)
r4679r4680
647604   MDRV_IMPORT_FROM(ddragon3)
648605
649606   MDRV_CPU_MODIFY("maincpu")
650   MDRV_CPU_PROGRAM_MAP(dd3b_readmem, dd3b_writemem)
607   MDRV_CPU_PROGRAM_MAP(dd3b_map,0)
651608MACHINE_DRIVER_END
652609
653610static MACHINE_DRIVER_START( ctribe )
654611   MDRV_IMPORT_FROM(ddragon3)
655612
656613   MDRV_CPU_MODIFY("maincpu")
657   MDRV_CPU_PROGRAM_MAP(ctribe_readmem,ctribe_writemem)
614   MDRV_CPU_PROGRAM_MAP(ctribe_map,0)
658615
659616   MDRV_CPU_MODIFY("audiocpu")
660   MDRV_CPU_PROGRAM_MAP(ctribe_readmem_sound,ctribe_writemem_sound)
617   MDRV_CPU_PROGRAM_MAP(ctribe_sound_map,0)
661618
662619   MDRV_VIDEO_UPDATE(ctribe)
663620
r4679r4680
842799   ROM_REGION( 0x80000, "maincpu", 0 )   /* 64k for cpu code */
843800   ROM_LOAD16_BYTE( "28a16-2.ic26", 0x00001, 0x20000, CRC(c46b2e63) SHA1(86ace715dca48c78a46da1d102de47e5f948a86c) )
844801   ROM_LOAD16_BYTE( "28a15-2.ic25", 0x00000, 0x20000, CRC(3221c755) SHA1(0f6fe5cd6947f6547585eedb7fc5e6af8544b1f7) )
845   ROM_LOAD16_BYTE( "ct_ep2.ic104", 0x40001, 0x10000, CRC(8c2c6dbd) SHA1(b99b9be6e0bdc8340fedd258819c4df587926a84) )
802   ROM_LOAD16_BYTE( "28j17-0.104", 0x40001, 0x10000, CRC(8c2c6dbd) SHA1(b99b9be6e0bdc8340fedd258819c4df587926a84) )
846803   /* No EVEN rom! */
847804
848805   ROM_REGION( 0x10000, "audiocpu", 0 )   /* 64k for sound cpu code */
r4679r4680
876833   ROM_REGION( 0x80000, "maincpu", 0 )   /* 64k for cpu code */
877834   ROM_LOAD16_BYTE( "28a16-2.ic26", 0x00001, 0x20000, CRC(f00f8443) SHA1(3c099b6bea9956cc60ce4a9a5d790ac2bf7d77bd) )
878835   ROM_LOAD16_BYTE( "28a15-2.ic25", 0x00000, 0x20000, CRC(dd70079f) SHA1(321b523fefec2a962d0afa20b33428e7caea8958) )
879   ROM_LOAD16_BYTE( "ct_ep2.ic104", 0x40001, 0x10000, CRC(8c2c6dbd) SHA1(b99b9be6e0bdc8340fedd258819c4df587926a84) )
836   ROM_LOAD16_BYTE( "28j17-0.104", 0x40001, 0x10000, CRC(8c2c6dbd) SHA1(b99b9be6e0bdc8340fedd258819c4df587926a84) )
880837   /* No EVEN rom! */
881838
882839   ROM_REGION( 0x10000, "audiocpu", 0 )   /* 64k for sound cpu code */
r4679r4680
906863   ROM_LOAD( "28.ic44", 0x0000, 0x0100, CRC(964329ef) SHA1(f26846571a16d27b726f689049deb0188103aadb) )
907864ROM_END
908865
866ROM_START( ctribej )
867   ROM_REGION( 0x80000, "maincpu", 0 )   /* 64k for cpu code */
868   ROM_LOAD16_BYTE( "28j16-02.26", 0x00001, 0x20000, CRC(658b8568) SHA1(899682f6ab28b184654c51c1169216974043f1b9) )
869   ROM_LOAD16_BYTE( "28j15-12.25", 0x00000, 0x20000, CRC(50aac7e7) SHA1(af77107f325f9b45a92c544328d3073ed1db5465) )
870   ROM_LOAD16_BYTE( "28j17-0.104", 0x40001, 0x10000, CRC(8c2c6dbd) SHA1(b99b9be6e0bdc8340fedd258819c4df587926a84) )
871   /* No EVEN rom! */
872
873   ROM_REGION( 0x10000, "audiocpu", 0 )   /* 64k for sound cpu code */
874   ROM_LOAD( "28j10-0.89", 0x00000, 0x8000, CRC(4346de13) SHA1(67c6de90ba31a325f03e64d28c9391a315ee359c) )
875
876   ROM_REGION( 0x200000, "gfx1", ROMREGION_DISPOSE )   /* Background */
877   ROM_LOAD( "28j7-0.ic11",  0x000000, 0x40000, CRC(a8b773f1) SHA1(999e41dfeb3fb937da769c4a33bb29bf4076dc63) )
878   ROM_LOAD( "28j6-0.ic13",  0x040000, 0x40000, CRC(617530fc) SHA1(b9155ed0ae1437bf4d0b7a95e769bc05a820ecec) )
879   ROM_LOAD( "28j5-0.ic12",  0x080000, 0x40000, CRC(cef0a821) SHA1(c7a35048d5ebf3f09abf9d27f91d12adc03befeb) )
880   ROM_LOAD( "28j4-0.ic14",  0x0c0000, 0x40000, CRC(b84fda09) SHA1(3ae0c0ec6c398dea17e248b017ea3e2f6c3571e1) )
881
882   ROM_REGION( 0x400000, "gfx2", ROMREGION_DISPOSE )   /* Sprites */
883   ROM_LOAD( "28j3-0.ic77",  0x000000, 0x80000, CRC(1ac2a461) SHA1(17436f5dcf29041ca5f470dfae538e4fc12153cc) )
884   ROM_LOAD( "28j14-0.60",   0x080000, 0x10000, CRC(6869050a) SHA1(34bdab383f2b0c5327306d419f65ce7974e1b7ba) )
885   ROM_LOAD( "28j2-0.ic78",  0x100000, 0x80000, CRC(8c796707) SHA1(7417ad0413083876ed65a8612845ccb0d2717530) )
886   ROM_LOAD( "28j13-0.61",   0x180000, 0x10000, CRC(8b8addea) SHA1(87bc1c843a51d232d339735a85946dde799a9ac5) )
887   ROM_LOAD( "28j1-0.ic97",  0x200000, 0x80000, CRC(1c9badbd) SHA1(d28f6d684d88448eaa3feae0bba2f5a836d89bd7) )
888   ROM_LOAD( "28j12-0.85",   0x280000, 0x10000, CRC(422b041c) SHA1(fa19dce6ee84b5a2ad729963073abe8919cb1689) )
889   ROM_LOAD( "28j0-0.ic98",  0x300000, 0x80000, CRC(ba73c49e) SHA1(830099027ede1f7c56bb0bf3cdef3018b92e0b87) )
890   ROM_LOAD( "28j11-0.86",   0x380000, 0x10000, CRC(4a391c5b) SHA1(520aa49808a3e7faf32efbb6b0ec22f90e5b4890) )
891
892   ROM_REGION( 0x040000, "oki", 0 ) /* ADPCM Samples */
893   ROM_LOAD( "28j9-0.ic83", 0x00000, 0x20000, CRC(f92a7f4a) SHA1(3717ef64876be9ada378b449749918ce9072073a) )
894   ROM_LOAD( "28j8-0.ic82", 0x20000, 0x20000, CRC(1a3a0b39) SHA1(8847530027cf4be03ffbc6d78dee97b459d03a04) )
895
896   ROM_REGION( 0x0100, "proms", 0 )
897   ROM_LOAD( "28.ic44", 0x0000, 0x0100, CRC(964329ef) SHA1(f26846571a16d27b726f689049deb0188103aadb) )
898ROM_END
899
909900ROM_START( ctribeb )
910901   ROM_REGION( 0x80000, "maincpu", 0 )   /* 64k for cpu code */
911902   ROM_LOAD16_BYTE( "ct_ep1.rom", 0x00001, 0x20000, CRC(9cfa997f) SHA1(ee49b4b9e9cd29616f244fdf3912ef743e2404ce) )
r4679r4680
996987GAME( 1990, ddrago3b, ddragon3, ddrago3b, ddrago3b, 0, ROT0, "bootleg", "Double Dragon 3 - The Rosetta Stone (bootleg)", GAME_SUPPORTS_SAVE )
997988GAME( 1990, ctribe,   0,        ctribe,   ctribe,   0, ROT0, "Technos Japan", "The Combatribes (US)", GAME_SUPPORTS_SAVE )
998989GAME( 1990, ctribe1,  ctribe,   ctribe,   ctribe,   0, ROT0, "Technos Japan", "The Combatribes (US Set 1?)", GAME_SUPPORTS_SAVE )
990GAME( 1990, ctribej,  ctribe,   ctribe,   ctribe,   0, ROT0, "Technos Japan", "The Combatribes (Japan)", GAME_SUPPORTS_SAVE )
999991GAME( 1990, ctribeb,  ctribe,   ctribe,   ctribeb,  0, ROT0, "bootleg", "The Combatribes (bootleg Set 1)", GAME_SUPPORTS_SAVE )
1000992GAME( 1990, ctribb2,  ctribe,   ctribe,   ctribeb,  0, ROT0, "bootleg", "The Combatribes (bootleg Set 2)", GAME_SUPPORTS_SAVE )
src/mame/drivers/sprint2.c
r4679r4680
246246}
247247
248248
249static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 )
250   AM_RANGE(0x0000, 0x03ff) AM_READ(sprint2_wram_r)
251   AM_RANGE(0x0400, 0x07ff) AM_READ(SMH_RAM)
249static ADDRESS_MAP_START( sprint2_map, ADDRESS_SPACE_PROGRAM, 8 )
250   AM_RANGE(0x0000, 0x03ff) AM_READWRITE(sprint2_wram_r,sprint2_wram_w)
251   AM_RANGE(0x0400, 0x07ff) AM_RAM_WRITE(sprint2_video_ram_w) AM_BASE(&sprint2_video_ram)
252252   AM_RANGE(0x0818, 0x081f) AM_READ(sprint2_input_A_r)
253253   AM_RANGE(0x0828, 0x082f) AM_READ(sprint2_input_B_r)
254254   AM_RANGE(0x0830, 0x0837) AM_READ(sprint2_dip_r)
r4679r4680
256256   AM_RANGE(0x0880, 0x08bf) AM_READ(sprint2_steering1_r)
257257   AM_RANGE(0x08c0, 0x08ff) AM_READ(sprint2_steering2_r)
258258   AM_RANGE(0x0c00, 0x0fff) AM_READ(sprint2_sync_r)
259   AM_RANGE(0x1000, 0x13ff) AM_READ(sprint2_collision1_r)
260   AM_RANGE(0x1400, 0x17ff) AM_READ(sprint2_collision2_r)
261   AM_RANGE(0x1800, 0x1800) AM_READNOP  /* debugger ROM location? */
262   AM_RANGE(0x2000, 0x3fff) AM_READ(SMH_ROM)
263   AM_RANGE(0xe000, 0xffff) AM_READ(SMH_ROM)
264ADDRESS_MAP_END
265
266
267static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 )
268   AM_RANGE(0x0000, 0x03ff) AM_WRITE(sprint2_wram_w)
269   AM_RANGE(0x0400, 0x07ff) AM_WRITE(sprint2_video_ram_w) AM_BASE(&sprint2_video_ram)
270259   AM_RANGE(0x0c00, 0x0c0f) AM_DEVWRITE("discrete", sprint2_attract_w)
271260   AM_RANGE(0x0c10, 0x0c1f) AM_DEVWRITE("discrete", sprint2_skid1_w)
272261   AM_RANGE(0x0c20, 0x0c2f) AM_DEVWRITE("discrete", sprint2_skid2_w)
r4679r4680
279268   AM_RANGE(0x0e00, 0x0e7f) AM_WRITE(sprint2_steering_reset1_w)
280269   AM_RANGE(0x0e80, 0x0eff) AM_WRITE(sprint2_steering_reset2_w)
281270   AM_RANGE(0x0f00, 0x0f7f) AM_DEVWRITE("discrete", sprint2_noise_reset_w)
282   AM_RANGE(0x2000, 0x3fff) AM_WRITE(SMH_ROM)
283   AM_RANGE(0xe000, 0xffff) AM_WRITE(SMH_ROM)
271   AM_RANGE(0x1000, 0x13ff) AM_READ(sprint2_collision1_r)
272   AM_RANGE(0x1400, 0x17ff) AM_READ(sprint2_collision2_r)
273   AM_RANGE(0x1800, 0x1800) AM_READNOP  /* debugger ROM location? */
274   AM_RANGE(0x2000, 0x3fff) AM_ROM
275   AM_RANGE(0xe000, 0xffff) AM_ROM
284276ADDRESS_MAP_END
285277
286278
r4679r4680
504496
505497   /* basic machine hardware */
506498   MDRV_CPU_ADD("maincpu", M6502, 12096000 / 16)
507   MDRV_CPU_PROGRAM_MAP(readmem, writemem)
499   MDRV_CPU_PROGRAM_MAP(sprint2_map, 0)
508500   MDRV_CPU_VBLANK_INT("screen", sprint2)
509501   MDRV_WATCHDOG_VBLANK_INIT(8)
510502
src/mame/drivers/86lions.c
r4679r4680
8282}
8383
8484
85static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 )
85static ADDRESS_MAP_START( lions_map, ADDRESS_SPACE_PROGRAM, 8 )
8686   AM_RANGE(0x0000, 0x07ff) AM_RAM AM_BASE(&lions_vram)
8787   AM_RANGE(0x0800, 0x0fff) AM_RAM
8888   AM_RANGE(0x1800, 0x1800) AM_DEVWRITE("crtc", mc6845_address_w)
r4679r4680
323323static MACHINE_DRIVER_START( lions )
324324   /* basic machine hardware */
325325   MDRV_CPU_ADD("maincpu", M6809, MAIN_CLOCK/4)       /* 3 MHz.(guess) */
326   MDRV_CPU_PROGRAM_MAP(readmem,0)
326   MDRV_CPU_PROGRAM_MAP(lions_map,0)
327327   MDRV_CPU_VBLANK_INT("screen", lions_irq )
328328
329329   /* video hardware */
src/mame/drivers/exterm.c
r4679r4680
117117
118118static WRITE16_HANDLER( exterm_host_data_w )
119119{
120   tms34010_host_w(space->machine->cpu[1], offset / TOWORD(0x00100000), data);
120   tms34010_host_w(cputag_get_cpu(space->machine, "slave"), offset / TOWORD(0x00100000), data);
121121}
122122
123123
124124static READ16_HANDLER( exterm_host_data_r )
125125{
126   return tms34010_host_r(space->machine->cpu[1], offset / TOWORD(0x00100000));
126   return tms34010_host_r(cputag_get_cpu(space->machine, "slave"), offset / TOWORD(0x00100000));
127127}
128128
129129
r4679r4680
198198   {
199199      /* Bit 13 = Resets the slave CPU */
200200      if ((data & 0x2000) && !(last & 0x2000))
201         cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_RESET, PULSE_LINE);
201         cputag_set_input_line(space->machine, "slave", INPUT_LINE_RESET, PULSE_LINE);
202202
203203      /* Bits 14-15 = Coin counters */
204204      coin_counter_w(0, data & 0x8000);
r4679r4680
213213{
214214   /* data is latched independently for both sound CPUs */
215215   master_sound_latch = slave_sound_latch = param;
216   cpu_set_input_line(machine->cpu[2], M6502_IRQ_LINE, ASSERT_LINE);
217   cpu_set_input_line(machine->cpu[3], M6502_IRQ_LINE, ASSERT_LINE);
216   cputag_set_input_line(machine, "audiocpu", M6502_IRQ_LINE, ASSERT_LINE);
217   cputag_set_input_line(machine, "audioslave", M6502_IRQ_LINE, ASSERT_LINE);
218218}
219219
220220
r4679r4680
236236{
237237   /* bit 0 of the sound control determines if the NMI is actually delivered */
238238   if (sound_control & 0x01)
239      cpu_set_input_line(machine->cpu[2], INPUT_LINE_NMI, PULSE_LINE);
239      cputag_set_input_line(machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
240240}
241241
242242
r4679r4680
260260static READ8_HANDLER( sound_master_latch_r )
261261{
262262   /* read latch and clear interrupt */
263   cpu_set_input_line(space->machine->cpu[2], M6502_IRQ_LINE, CLEAR_LINE);
263   cputag_set_input_line(space->machine, "audiocpu", M6502_IRQ_LINE, CLEAR_LINE);
264264   return master_sound_latch;
265265}
266266
r4679r4680
268268static READ8_HANDLER( sound_slave_latch_r )
269269{
270270   /* read latch and clear interrupt */
271   cpu_set_input_line(space->machine->cpu[3], M6502_IRQ_LINE, CLEAR_LINE);
271   cputag_set_input_line(space->machine, "audioslave", M6502_IRQ_LINE, CLEAR_LINE);
272272   return slave_sound_latch;
273273}
274274
r4679r4680
284284static READ8_HANDLER( sound_nmi_to_slave_r )
285285{
286286   /* a read from here triggers an NMI pulse to the slave */
287   cpu_set_input_line(space->machine->cpu[3], INPUT_LINE_NMI, PULSE_LINE);
287   cputag_set_input_line(space->machine, "audioslave", INPUT_LINE_NMI, PULSE_LINE);
288288   return 0xff;
289289}
290290
src/mame/drivers/dragrace.c
r4679r4680
175175}
176176
177177
178static ADDRESS_MAP_START( dragrace_readmem, ADDRESS_SPACE_PROGRAM, 8 )
179   AM_RANGE(0x0080, 0x00ff) AM_READ(SMH_RAM)
178static ADDRESS_MAP_START( dragrace_map, ADDRESS_SPACE_PROGRAM, 8 )
179   AM_RANGE(0x0080, 0x00ff) AM_RAM
180180   AM_RANGE(0x0800, 0x083f) AM_READ(dragrace_input_r)
181   AM_RANGE(0x0c00, 0x0c00) AM_READ(dragrace_steering_r)
182   AM_RANGE(0x0d00, 0x0d00) AM_READ(dragrace_scanline_r)
183   AM_RANGE(0x1000, 0x1fff) AM_READ(SMH_ROM) /* program */
184   AM_RANGE(0xf800, 0xffff) AM_READ(SMH_ROM) /* program mirror */
185ADDRESS_MAP_END
186
187static ADDRESS_MAP_START( dragrace_writemem, ADDRESS_SPACE_PROGRAM, 8 )
188   AM_RANGE(0x0080, 0x00ff) AM_WRITE(SMH_RAM)
189181   AM_RANGE(0x0900, 0x091f) AM_WRITE(dragrace_misc_w)
190182   AM_RANGE(0x0920, 0x093f) AM_WRITE(dragrace_misc_clear_w)
191183   AM_RANGE(0x0a00, 0x0aff) AM_WRITE(SMH_RAM) AM_BASE(&dragrace_playfield_ram)
192184   AM_RANGE(0x0b00, 0x0bff) AM_WRITE(SMH_RAM) AM_BASE(&dragrace_position_ram)
185   AM_RANGE(0x0c00, 0x0c00) AM_READ(dragrace_steering_r)
186   AM_RANGE(0x0d00, 0x0d00) AM_READ(dragrace_scanline_r)
193187   AM_RANGE(0x0e00, 0x0eff) AM_WRITE(watchdog_reset_w)
194   AM_RANGE(0x1000, 0x1fff) AM_WRITE(SMH_ROM) /* program */
195   AM_RANGE(0xf800, 0xffff) AM_WRITE(SMH_ROM) /* program mirror */
188   AM_RANGE(0x1000, 0x1fff) AM_ROM /* program */
189   AM_RANGE(0xf800, 0xffff) AM_ROM /* program mirror */
196190ADDRESS_MAP_END
197191
198192
r4679r4680
332326
333327   /* basic machine hardware */
334328   MDRV_CPU_ADD("maincpu", M6800, 12096000 / 12)
335   MDRV_CPU_PROGRAM_MAP(dragrace_readmem, dragrace_writemem)
329   MDRV_CPU_PROGRAM_MAP(dragrace_map,0)
336330   MDRV_CPU_VBLANK_INT_HACK(irq0_line_hold, 4)
337331   MDRV_WATCHDOG_VBLANK_INIT(8)
338332
src/mame/drivers/discoboy.c
r4679r4680
203203
204204static WRITE8_HANDLER( discoboy_port_03_w ) // sfx? (to sound cpu)
205205{
206//  printf("unk discoboy_port_03_w %02x\n",data);
207//  cpu_set_input_line(space->machine->cpu[1],INPUT_LINE_NMI,HOLD_LINE);
208   soundlatch_w(space,0,data);
209   cpu_set_input_line(space->machine->cpu[1],0,HOLD_LINE);
206//  printf("unk discoboy_port_03_w %02x\n", data);
207//  cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, HOLD_LINE);
208   soundlatch_w(space, 0, data);
209   cputag_set_input_line(space->machine, "audiocpu", 0, HOLD_LINE);
210210}
211211
212212static WRITE8_HANDLER( discoboy_port_06_w )
r4679r4680
285285   discoboy_ram_att[offset] = data;
286286}
287287
288static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 )
289   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
290   AM_RANGE(0x8000, 0xbfff) AM_READ(SMH_BANK1)
291   AM_RANGE(0xc000, 0xc7ff) AM_READ(rambank_r)
292   AM_RANGE(0xc800, 0xcfff) AM_READ(discoboy_ram_att_r)
293   AM_RANGE(0xd000, 0xdfff) AM_READ(rambank2_r)
294   AM_RANGE(0xe000, 0xefff) AM_READ(SMH_RAM)
295   AM_RANGE(0xf000, 0xffff) AM_READ(SMH_RAM)
288static ADDRESS_MAP_START( discoboy_map, ADDRESS_SPACE_PROGRAM, 8 )
289   AM_RANGE(0x0000, 0x7fff) AM_ROM
290   AM_RANGE(0x8000, 0xbfff) AM_ROMBANK(1)
291   AM_RANGE(0xc000, 0xc7ff) AM_READWRITE(rambank_r, rambank_w)
292   AM_RANGE(0xc800, 0xcfff) AM_READWRITE(discoboy_ram_att_r, discoboy_ram_att_w)
293   AM_RANGE(0xd000, 0xdfff) AM_READWRITE(rambank2_r, rambank2_w)
294   AM_RANGE(0xe000, 0xefff) AM_RAM
295   AM_RANGE(0xf000, 0xffff) AM_RAM
296296ADDRESS_MAP_END
297297
298static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 )
299   AM_RANGE(0x0000, 0xbfff) AM_WRITE(SMH_ROM)
300   AM_RANGE(0xc000, 0xc7ff) AM_WRITE(rambank_w)
301   AM_RANGE(0xc800, 0xcfff) AM_WRITE(discoboy_ram_att_w)
302   AM_RANGE(0xd000, 0xdfff) AM_WRITE(rambank2_w)
303   AM_RANGE(0xe000, 0xefff) AM_WRITE(SMH_RAM)
304   AM_RANGE(0xf000, 0xffff) AM_WRITE(SMH_RAM)
305ADDRESS_MAP_END
306298
307
308299static READ8_HANDLER( discoboy_port_06_r )
309300{
310301   return 0x00;
r4679r4680
333324//  adpcm_data = (adpcm_data << 4) & 0xf0;
334325}
335326
336static ADDRESS_MAP_START( sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
337   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
338   AM_RANGE(0xf000, 0xf7ff) AM_READ(SMH_RAM)
327static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 )
328   AM_RANGE(0x0000, 0x7fff) AM_ROM
329   AM_RANGE(0xf000, 0xf7ff) AM_RAM
330   AM_RANGE(0xec00, 0xec01) AM_DEVWRITE("ym", ym3812_w)
339331   AM_RANGE(0xf800, 0xf800) AM_READ(soundlatch_r)
340332ADDRESS_MAP_END
341333
342static ADDRESS_MAP_START( sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
343   AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM)
344   AM_RANGE(0xf000, 0xf7ff) AM_WRITE(SMH_RAM)
345   AM_RANGE(0xec00, 0xec01) AM_DEVWRITE("ym", ym3812_w)
346ADDRESS_MAP_END
347334
348
349335static INPUT_PORTS_START( discoboy )
350336   PORT_START("DSWA")
351337   PORT_DIPNAME( 0x07, 0x07, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SWA:6,7,8")
r4679r4680
460446static MACHINE_DRIVER_START( discoboy )
461447   /* basic machine hardware */
462448   MDRV_CPU_ADD("maincpu", Z80,12000000/2)       /* 6 MHz? */
463   MDRV_CPU_PROGRAM_MAP(readmem,writemem)
449   MDRV_CPU_PROGRAM_MAP(discoboy_map,0)
464450   MDRV_CPU_IO_MAP(io_map,0)
465451   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
466452
467453   MDRV_CPU_ADD("audiocpu", Z80,10000000/2)       /* 5 MHz? */
468   MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem)
454   MDRV_CPU_PROGRAM_MAP(sound_map,0)
469455//  MDRV_CPU_IO_MAP(sound_io_map,0)
470456//  MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
471457   MDRV_CPU_VBLANK_INT_HACK(nmi_line_pulse,32)
r4679r4680
503489{
504490   UINT8 *ROM = memory_region(machine, "maincpu");
505491
506   discoboy_ram_part1 = auto_malloc(0x800);
507   discoboy_ram_part2 = auto_malloc(0x800);
508   discoboy_ram_att = auto_malloc(0x800);
492   discoboy_ram_part1 = auto_alloc_array(machine, UINT8, 0x800);
493   discoboy_ram_part2 = auto_alloc_array(machine, UINT8, 0x800);
494   discoboy_ram_att = auto_alloc_array(machine, UINT8, 0x800);
509495
510   discoboy_ram_part3 = auto_malloc(0x1000);
511   discoboy_ram_part4 = auto_malloc(0x1000);
496   discoboy_ram_part3 = auto_alloc_array(machine, UINT8, 0x1000);
497   discoboy_ram_part4 = auto_alloc_array(machine, UINT8, 0x1000);
512498
513499   memset(discoboy_ram_part1,0,0x800);
514500   memset(discoboy_ram_part2,0,0x800);
r4679r4680
556542
557543
558544GAME( 1993, discoboy,  0,    discoboy, discoboy, discoboy, ROT270, "Soft Art Co.", "Disco Boy", 0 )
559
src/mame/drivers/mediagx.c
r4679r4680
732732{
733733   UINT8 data = at_pages[offset % 0x10];
734734
735   switch(offset % 8) {
735   switch(offset % 8)
736   {
736737   case 1:
737738      data = dma_offset[(offset / 8) & 1][2];
738739      break;
r4679r4680
754755{
755756   at_pages[offset % 0x10] = data;
756757
757   switch(offset % 8) {
758   switch(offset % 8)
759   {
758760   case 1:
759761      dma_offset[(offset / 8) & 1][2] = data;
760762      break;
r4679r4680
773775
774776static DMA8237_MEM_READ( pc_dma_read_byte )
775777{
776   const address_space *space = cpu_get_address_space(device->machine->cpu[0], ADDRESS_SPACE_PROGRAM);
778   const address_space *space = cputag_get_address_space(device->machine, "maincpu", ADDRESS_SPACE_PROGRAM);
777779   offs_t page_offset = (((offs_t) dma_offset[0][channel]) << 16)
778780      & 0xFF0000;
779781
r4679r4680
783785
784786static DMA8237_MEM_WRITE( pc_dma_write_byte )
785787{
786   const address_space *space = cpu_get_address_space(device->machine->cpu[0], ADDRESS_SPACE_PROGRAM);
788   const address_space *space = cputag_get_address_space(device->machine, "maincpu", ADDRESS_SPACE_PROGRAM);
787789   offs_t page_offset = (((offs_t) dma_offset[0][channel]) << 16)
788790      & 0xFF0000;
789791
r4679r4680
955957{
956958   UINT8 *rom = memory_region(machine, "bios");
957959
958   cpu_set_irq_callback(machine->cpu[0], irq_callback);
960   cpu_set_irq_callback(cputag_get_cpu(machine, "maincpu"), irq_callback);
959961
960962   memcpy(bios_ram, rom, 0x40000);
961   device_reset(machine->cpu[0]);
963   device_reset(cputag_get_cpu(machine, "maincpu"));
962964
963   dacl = auto_malloc(65536 * sizeof(INT16));
964   dacr = auto_malloc(65536 * sizeof(INT16));
965   dacl = auto_alloc_array(machine, INT16, 65536);
966   dacr = auto_alloc_array(machine, INT16, 65536);
965967
966968   sound_timer = timer_alloc(machine, sound_timer_callback, NULL);
967969   timer_adjust_oneshot(sound_timer, ATTOTIME_IN_MSEC(10), 0);
r4679r4680
978980 *
979981 *************************************************************/
980982
981static PIC8259_SET_INT_LINE( mediagx_pic8259_1_set_int_line ) {
982   cpu_set_input_line(device->machine->cpu[0], 0, interrupt ? HOLD_LINE : CLEAR_LINE);
983static PIC8259_SET_INT_LINE( mediagx_pic8259_1_set_int_line )
984{
985   cputag_set_input_line(device->machine, "maincpu", 0, interrupt ? HOLD_LINE : CLEAR_LINE);
983986}
984987
985988
986static PIC8259_SET_INT_LINE( mediagx_pic8259_2_set_int_line ) {
989static PIC8259_SET_INT_LINE( mediagx_pic8259_2_set_int_line )
990{
987991   pic8259_set_irq_line( mediagx_devices.pic8259_1, 2, interrupt);
988992}
989993
r4679r4680
10791083
10801084static void set_gate_a20(running_machine *machine, int a20)
10811085{
1082   cpu_set_input_line(machine->cpu[0], INPUT_LINE_A20, a20);
1086   cputag_set_input_line(machine, "maincpu", INPUT_LINE_A20, a20);
10831087}
10841088
10851089static void keyboard_interrupt(running_machine *machine, int state)
r4679r4680
10921096   pic8259_set_irq_line(mediagx_devices.pic8259_2, 6, state);
10931097}
10941098
1095static int mediagx_get_out2(running_machine *machine) {
1099static int mediagx_get_out2(running_machine *machine)
1100{
10961101   return pit8253_get_output( mediagx_devices.pit8254, 2 );
10971102}
10981103
r4679r4680
11011106   KBDC8042_AT386, set_gate_a20, keyboard_interrupt, mediagx_get_out2
11021107};
11031108
1104static void mediagx_set_keyb_int(running_machine *machine, int state) {
1109static void mediagx_set_keyb_int(running_machine *machine, int state)
1110{
11051111   pic8259_set_irq_line(mediagx_devices.pic8259_1, 1, state);
11061112}
11071113
r4679r4680
11781184   speedup_count = count;
11791185
11801186   for (i = 0; i < count; i++)
1181      memory_install_read32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), entries[i].offset, entries[i].offset + 3, 0, 0, speedup_handlers[i]);
1187      memory_install_read32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), entries[i].offset, entries[i].offset + 3, 0, 0, speedup_handlers[i]);
11821188
11831189#ifdef MAME_DEBUG
11841190   add_exit_callback(machine, report_speedups);
src/mame/drivers/orbit.c
r4679r4680
4040{
4141   int scanline = param;
4242   int nmistate = (scanline & 32) && (orbit_misc_flags & 4);
43   cpu_set_input_line(timer->machine->cpu[0], INPUT_LINE_NMI, nmistate ? ASSERT_LINE : CLEAR_LINE);
43   cputag_set_input_line(timer->machine, "maincpu", INPUT_LINE_NMI, nmistate ? ASSERT_LINE : CLEAR_LINE);
4444}
4545
4646
4747static TIMER_CALLBACK( irq_off )
4848{
49   cpu_set_input_line(machine->cpu[0], 0, CLEAR_LINE);
49   cputag_set_input_line(machine, "maincpu", 0, CLEAR_LINE);
5050}
5151
5252
src/mame/drivers/policetr.c
r4679r4680
121121
122122static TIMER_CALLBACK( irq5_gen )
123123{
124   cpu_set_input_line(machine->cpu[0], R3000_IRQ5, ASSERT_LINE);
124   cputag_set_input_line(machine, "audiocpu", R3000_IRQ5, ASSERT_LINE);
125125}
126126
127127
r4679r4680
701701
702702static DRIVER_INIT( policetr )
703703{
704   speedup_data = memory_install_write32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x00000fc8, 0x00000fcb, 0, 0, speedup_w);
704   speedup_data = memory_install_write32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x00000fc8, 0x00000fcb, 0, 0, speedup_w);
705705   speedup_pc = 0x1fc028ac;
706706}
707707
708708static DRIVER_INIT( plctr13b )
709709{
710   speedup_data = memory_install_write32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x00000fc8, 0x00000fcb, 0, 0, speedup_w);
710   speedup_data = memory_install_write32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x00000fc8, 0x00000fcb, 0, 0, speedup_w);
711711   speedup_pc = 0x1fc028bc;
712712}
713713
714714
715715static DRIVER_INIT( sshooter )
716716{
717   speedup_data = memory_install_write32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x00018fd8, 0x00018fdb, 0, 0, speedup_w);
717   speedup_data = memory_install_write32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x00018fd8, 0x00018fdb, 0, 0, speedup_w);
718718   speedup_pc = 0x1fc03470;
719719}
720720
721721static DRIVER_INIT( sshoot12 )
722722{
723   speedup_data = memory_install_write32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x00018fd8, 0x00018fdb, 0, 0, speedup_w);
723   speedup_data = memory_install_write32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x00018fd8, 0x00018fdb, 0, 0, speedup_w);
724724   speedup_pc = 0x1fc033e0;
725725}
726726
src/mame/drivers/seibuspi.c
r4679r4680
814814
815815static READ32_HANDLER( spi_int_r )
816816{
817   cpu_set_input_line(space->machine->cpu[0], 0,CLEAR_LINE );
817   cputag_set_input_line(space->machine, "maincpu", 0,CLEAR_LINE );
818818   return 0xffffffff;
819819}
820820
r4679r4680
888888   if( ACCESSING_BITS_0_7 ) {
889889      if( data & 0x1 ) {
890890         z80_prg_fifo_pos = 0;
891         cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_RESET, CLEAR_LINE );
891         cputag_set_input_line(space->machine, "soundcpu", INPUT_LINE_RESET, CLEAR_LINE );
892892      } else {
893         cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_RESET, ASSERT_LINE );
893         cputag_set_input_line(space->machine, "soundcpu", INPUT_LINE_RESET, ASSERT_LINE );
894894      }
895895   }
896896}
r4679r4680
10801080static void irqhandler(const device_config *device, int state)
10811081{
10821082   if (state)
1083      cpu_set_input_line_and_vector(device->machine->cpu[1], 0, ASSERT_LINE, 0xd7);   // IRQ is RST10
1083      cputag_set_input_line_and_vector(device->machine, "soundcpu", 0, ASSERT_LINE, 0xd7);   // IRQ is RST10
10841084   else
1085      cpu_set_input_line(device->machine->cpu[1], 0, CLEAR_LINE);
1085      cputag_set_input_line(device->machine, "soundcpu", 0, CLEAR_LINE);
10861086}
10871087
10881088static WRITE32_HANDLER(sys386f2_eeprom_w)
r4679r4680
12681268static CUSTOM_INPUT( ejanhs_encode )
12691269{
12701270   static const UINT8 encoding[] = { 0x02, 0x10, 0x03, 0x18, 0x04, 0x20, 0x05, 0x28, 0x06, 0x30, 0x07 };
1271   input_port_value state = input_port_read(field->port->machine, param);
1271   input_port_value state = input_port_read(field->port->machine, (const char *)param);
12721272   int bit;
12731273
12741274   for (bit = 0; bit < ARRAY_LENGTH(encoding); bit++)
r4679r4680
18171817   UINT8 *rombase = memory_region(machine, "user1");
18181818   UINT8 flash_data = rombase[0x1ffffc];
18191819
1820   cpu_set_input_line(machine->cpu[1], INPUT_LINE_RESET, ASSERT_LINE );
1821   cpu_set_irq_callback(machine->cpu[0], spi_irq_callback);
1820   cputag_set_input_line(machine, "soundcpu", INPUT_LINE_RESET, ASSERT_LINE );
1821   cpu_set_irq_callback(cputag_get_cpu(machine, "maincpu"), spi_irq_callback);
18221822
1823   memory_install_read32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x00000680, 0x00000683, 0, 0, sound_fifo_r);
1824   memory_install_write32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x00000688, 0x0000068b, 0, 0, z80_prg_fifo_w);
1825   memory_install_write32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x0000068c, 0x0000068f, 0, 0, z80_enable_w);
1823   memory_install_read32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x00000680, 0x00000683, 0, 0, sound_fifo_r);
1824   memory_install_write32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x00000688, 0x0000068b, 0, 0, z80_prg_fifo_w);
1825   memory_install_write32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x0000068c, 0x0000068f, 0, 0, z80_enable_w);
18261826
1827   z80_rom = auto_malloc(0x40000);
1827   z80_rom = auto_alloc_array(machine, UINT8, 0x40000);
18281828   memory_set_bankptr(machine, 4, z80_rom);
18291829   memory_set_bankptr(machine, 5, z80_rom);
18301830
r4679r4680
18871887{
18881888   UINT8 *rom = memory_region(machine, "soundcpu");
18891889
1890   z80_rom = auto_malloc(0x40000);
1890   z80_rom = auto_alloc_array(machine, UINT8, 0x40000);
18911891   memory_set_bankptr(machine, 4, z80_rom);
18921892   memory_set_bankptr(machine, 5, z80_rom);
18931893
18941894   memcpy(z80_rom, rom, 0x40000);
18951895
1896   memory_install_write32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x0000068c, 0x0000068f, 0, 0, eeprom_w);
1897   memory_install_read32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x00000680, 0x00000683, 0, 0, sb_coin_r);
1898   cpu_set_irq_callback(machine->cpu[0], spi_irq_callback);
1896   memory_install_write32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x0000068c, 0x0000068f, 0, 0, eeprom_w);
1897   memory_install_read32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x00000680, 0x00000683, 0, 0, sb_coin_r);
1898   cpu_set_irq_callback(cputag_get_cpu(machine, "maincpu"), spi_irq_callback);
18991899
19001900   sb_coin_latch = 0;
19011901}
r4679r4680
20652065
20662066static DRIVER_INIT( rdft )
20672067{
2068   memory_install_read32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x00298d0, 0x00298d3, 0, 0, rdft_speedup_r );
2068   memory_install_read32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x00298d0, 0x00298d3, 0, 0, rdft_speedup_r );
20692069
20702070   init_spi(machine);
20712071}
20722072
20732073static DRIVER_INIT( senkyu )
20742074{
2075   memory_install_read32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x0018cb4, 0x0018cb7, 0, 0, senkyu_speedup_r );
2075   memory_install_read32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x0018cb4, 0x0018cb7, 0, 0, senkyu_speedup_r );
20762076
20772077   init_spi(machine);
20782078}
20792079
20802080static DRIVER_INIT( senkyua )
20812081{
2082   memory_install_read32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x0018c9c, 0x0018c9f, 0, 0, senkyua_speedup_r );
2082   memory_install_read32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x0018c9c, 0x0018c9f, 0, 0, senkyua_speedup_r );
20832083
20842084   init_spi(machine);
20852085}
20862086
20872087static DRIVER_INIT( batlball )
20882088{
2089   memory_install_read32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x0018db4, 0x0018db7, 0, 0, batlball_speedup_r );
2089   memory_install_read32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x0018db4, 0x0018db7, 0, 0, batlball_speedup_r );
20902090
20912091   init_spi(machine);
20922092}
r4679r4680
20942094static DRIVER_INIT( ejanhs )
20952095{
20962096//  idle skip doesn't work properly?
2097//  memory_install_read32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x002d224, 0x002d227, 0, 0, ejanhs_speedup_r );
2097//  memory_install_read32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x002d224, 0x002d227, 0, 0, ejanhs_speedup_r );
20982098
20992099   init_spi(machine);
21002100}
21012101
21022102static DRIVER_INIT( viprp1 )
21032103{
2104   memory_install_read32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x001e2e0, 0x001e2e3, 0, 0, viprp1_speedup_r );
2104   memory_install_read32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x001e2e0, 0x001e2e3, 0, 0, viprp1_speedup_r );
21052105
21062106   init_spi(machine);
21072107}
21082108
21092109static DRIVER_INIT( viprp1o )
21102110{
2111   memory_install_read32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x001d49c, 0x001d49f, 0, 0, viprp1o_speedup_r );
2111   memory_install_read32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x001d49c, 0x001d49f, 0, 0, viprp1o_speedup_r );
21122112
21132113   init_spi(machine);
21142114}
r4679r4680
21202120   intelflash_init( machine, 0, FLASH_INTEL_E28F008SA, NULL );
21212121   intelflash_init( machine, 1, FLASH_INTEL_E28F008SA, NULL );
21222122
2123   memory_install_read32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x0282AC, 0x0282AF, 0, 0, rf2_speedup_r );
2123   memory_install_read32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x0282AC, 0x0282AF, 0, 0, rf2_speedup_r );
21242124   seibuspi_rise10_text_decrypt(memory_region(machine, "gfx1"));
21252125   seibuspi_rise10_bg_decrypt(memory_region(machine, "gfx2"), memory_region_length(machine, "gfx2"));
21262126   seibuspi_rise10_sprite_decrypt(memory_region(machine, "gfx3"), 0x600000);
21272127
2128   memory_install_write32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x560, 0x563, 0, 0, sprite_dma_start_w);
2128   memory_install_write32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x560, 0x563, 0, 0, sprite_dma_start_w);
21292129}
21302130
21312131static DRIVER_INIT( rdft2 )
r4679r4680
21442144   intelflash_init( machine, 0, FLASH_INTEL_E28F008SA, NULL );
21452145   intelflash_init( machine, 1, FLASH_INTEL_E28F008SA, NULL );
21462146
2147   memory_install_read32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x002894c, 0x002894f, 0, 0, rfjet_speedup_r );
2147   memory_install_read32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x002894c, 0x002894f, 0, 0, rfjet_speedup_r );
21482148   seibuspi_rise11_text_decrypt(memory_region(machine, "gfx1"));
21492149   seibuspi_rise11_bg_decrypt(memory_region(machine, "gfx2"), memory_region_length(machine, "gfx2"));
21502150   seibuspi_rise11_sprite_decrypt_rfjet(memory_region(machine, "gfx3"), 0x800000);
21512151
2152   memory_install_write32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x560, 0x563, 0, 0, sprite_dma_start_w);
2152   memory_install_write32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x560, 0x563, 0, 0, sprite_dma_start_w);
21532153}
21542154
21552155/* SYS386 */
r4679r4680
21612161
21622162static MACHINE_RESET( seibu386 )
21632163{
2164   cpu_set_irq_callback(machine->cpu[0], spi_irq_callback);
2164   cpu_set_irq_callback(cputag_get_cpu(machine, "maincpu"), spi_irq_callback);
21652165}
21662166
21672167static MACHINE_DRIVER_START( seibu386 )
src/mame/drivers/skimaxx.c
r0r4680
1/***************************************************************************
2
3    Skimaxx
4
5    Preliminary driver by Phil Bennett
6
7    68030-40 * 2
8    TMS34010-50
9    MSM6295 * 4
10
11    Video hardware consists of scaling sprites with a Mode 7-style ground?
12    TMS34010 seems to draws text, score etc.
13
14    It looks like a bistream for a Xilinx FPGA is stored in ROM. The sub
15    CPU bit-bangs 30864 bits worth of data to 0x40000003 twice.
16
17***************************************************************************/
18
19#include "driver.h"
20#include "cpu/m68000/m68000.h"
21#include "cpu/tms34010/tms34010.h"
22
23
24/*************************************
25 *
26 *  Statics
27 *
28 *************************************/
29
30static UINT32 *sprite_buffer;
31static UINT16 *frame_buffer;
32
33
34/*************************************
35 *
36 *  Video emulation
37 *
38 *************************************/
39
40VIDEO_START( skimaxx )
41{
42
43}
44
45
46/*************************************
47 *
48 *  VRAM shift register callbacks
49 *
50 *************************************/
51
52// TODO: Might not be used
53void skimaxx_to_shiftreg(const address_space *space, UINT32 address, UINT16 *shiftreg)
54{
55   memcpy(shiftreg, &frame_buffer[TOWORD(address)], 512 * sizeof(UINT16));
56}
57
58void skimaxx_from_shiftreg(const address_space *space, UINT32 address, UINT16 *shiftreg)
59{
60   memcpy(&frame_buffer[TOWORD(address)], shiftreg, 512 * sizeof(UINT16));
61}
62
63
64/*************************************
65 *
66 *  Main video refresh
67 *
68 *************************************/
69
70void skimaxx_scanline_update(const device_config *screen, bitmap_t *bitmap, int scanline, const tms34010_display_params *params)
71{
72   // TODO: This isn't correct. I just hacked it together quickly so I could see something!
73   if (params->rowaddr >= 0x220)
74   {
75      UINT32 rowaddr = (params->rowaddr - 0x220);
76      UINT16 *vram1 = &frame_buffer[rowaddr << 8];
77      UINT16 *dest = BITMAP_ADDR16(bitmap, scanline, 0);
78      int coladdr = params->coladdr;
79      int x;
80      coladdr = 0;
81
82      if (scanline >= 236)
83         return;
84
85      for (x = params->heblnk; x < params->hsblnk; ++x)
86      {
87         UINT16 tmspix = vram1[coladdr++] & 0x7fff;
88         dest[x] = tmspix;
89      }
90   }
91}
92
93
94/*************************************
95 *
96 *  TMS34010 host interface
97 *
98 *************************************/
99
100static WRITE32_HANDLER( m68k_tms_w )
101{
102   tms34010_host_w(cputag_get_cpu(space->machine, "tms"), offset, data);
103}
104
105static READ32_HANDLER( m68k_tms_r )
106{
107   return tms34010_host_r(cputag_get_cpu(space->machine, "tms"), offset);
108}
109
110
111/*************************************
112 *
113 *  Handlers
114 *
115 *************************************/
116
117static READ32_HANDLER( unk_r )
118{
119   return 0x80;
120}
121
122
123/*************************************
124 *
125 *  Main CPU memory map
126 *
127 *************************************/
128
129static ADDRESS_MAP_START( 68030_1_map, ADDRESS_SPACE_PROGRAM, 32 )
130   AM_RANGE(0x00000000, 0x001fffff) AM_ROM
131   AM_RANGE(0x10000000, 0x10000003) AM_RAM
132   AM_RANGE(0x10100000, 0x1010000f) AM_READWRITE(m68k_tms_r, m68k_tms_w)
133   AM_RANGE(0x10180000, 0x10187fff) AM_RAM AM_SHARE(1)
134   AM_RANGE(0x20000000, 0x20000003) AM_RAM
135   AM_RANGE(0x20000020, 0x20000023) AM_RAM
136   AM_RANGE(0x20000024, 0x20000027) AM_RAM
137   AM_RANGE(0x20000040, 0x20000043) AM_RAM
138   AM_RANGE(0x20000044, 0x20000047) AM_RAM
139   AM_RANGE(0x20000048, 0x2000004b) AM_RAM
140   AM_RANGE(0x2000004c, 0x2000004f) AM_READ(unk_r)
141   AM_RANGE(0x20000050, 0x20000053) AM_RAM
142   AM_RANGE(0x20000054, 0x20000057) AM_RAM
143   AM_RANGE(0xfffc0000, 0xfffdffff) AM_RAM AM_MIRROR(0x00020000)
144ADDRESS_MAP_END
145
146
147/*************************************
148 *
149 *  Sub CPU memory map
150 *
151 *************************************/
152
153static ADDRESS_MAP_START( 68030_2_map, ADDRESS_SPACE_PROGRAM, 32 )
154   AM_RANGE(0x00000000, 0x003fffff) AM_ROM
155   AM_RANGE(0x40000000, 0x40000003) AM_RAM // Xilinx FPGA configuration write port?
156   AM_RANGE(0x50000000, 0x5007ffff) AM_RAM AM_BASE(&sprite_buffer) // Part of this is mixed with the TMS frame buffer
157   AM_RANGE(0xfffc0000, 0xfffc7fff) AM_RAM AM_SHARE(1)
158   AM_RANGE(0xfffe0000, 0xffffffff) AM_RAM // I think this is banked with the shared RAM? (see CPU sync routines)
159ADDRESS_MAP_END
160
161
162/*************************************
163 *
164 *  Video CPU memory map
165 *
166 *************************************/
167
168static ADDRESS_MAP_START( tms_program_map, ADDRESS_SPACE_PROGRAM, 16 )
169   AM_RANGE(0x00000000, 0x000100ff) AM_RAM
170   AM_RANGE(0x00008000, 0x0003ffff) AM_RAM
171   AM_RANGE(0x00050000, 0x0005ffff) AM_RAM
172   AM_RANGE(0x00220000, 0x003fffff) AM_RAM AM_BASE(&frame_buffer)
173   AM_RANGE(0x02000000, 0x0200000f) AM_RAM
174   AM_RANGE(0x02100000, 0x0210000f) AM_RAM
175   AM_RANGE(0x04000000, 0x047fffff) AM_ROM AM_REGION("tmsgfx", 0)
176   AM_RANGE(0xc0000000, 0xc00001ff) AM_READWRITE(tms34010_io_register_r, tms34010_io_register_w)
177   AM_RANGE(0xff800000, 0xffffffff) AM_ROM AM_REGION("tms", 0)
178ADDRESS_MAP_END
179
180
181/*************************************
182 *
183 *  Input definitions
184 *
185 *************************************/
186
187static INPUT_PORTS_START( skimaxx )
188   PORT_START("DSW")
189   // TODO
190INPUT_PORTS_END
191
192
193/*************************************
194 *
195 *  TMS34010 configuration
196 *
197 *************************************/
198
199static void skimaxx_tms_irq(const device_config *device, int state)
200{
201   // TODO
202}
203
204static const tms34010_config tms_config =
205{
206   FALSE,                     /* halt on reset */
207   "screen",                  /* the screen operated on */
208   50000000/8,                /* pixel clock */
209   1,                         /* pixels per clock */
210   skimaxx_scanline_update,   /* scanline updater */
211   skimaxx_tms_irq,           /* generate interrupt */
212   skimaxx_to_shiftreg,       /* write to shiftreg function */
213   skimaxx_from_shiftreg      /* read from shiftreg function */
214};
215
216
217/*************************************
218 *
219 *  Initialisation
220 *
221 *************************************/
222
223static MACHINE_RESET( skimaxx )
224{
225
226}
227
228
229/*************************************
230 *
231 *  Machine driver
232 *
233 *************************************/
234
235static MACHINE_DRIVER_START( skimaxx )
236   MDRV_CPU_ADD("maincpu", M68020, XTAL_40MHz)   // TODO: Should be a 68030!
237   MDRV_CPU_PROGRAM_MAP(68030_1_map, 0)
238//  MDRV_CPU_VBLANK_INT("screen", irq3_line_hold)
239
240   MDRV_CPU_ADD("subcpu", M68020, XTAL_40MHz)
241   MDRV_CPU_PROGRAM_MAP(68030_2_map, 0)      // TODO: Should be a 68030!
242
243   MDRV_CPU_ADD("tms", TMS34010, XTAL_50MHz)
244   MDRV_CPU_CONFIG(tms_config)
245   MDRV_CPU_PROGRAM_MAP(tms_program_map, 0)
246
247   MDRV_MACHINE_RESET(skimaxx)
248
249   MDRV_SCREEN_ADD("screen", RASTER)
250   MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
251   MDRV_SCREEN_RAW_PARAMS(40000000/4, 156*4, 0, 100*4, 328, 0, 300) // TODO - Wrong but TMS overrides it anyway
252
253   MDRV_PALETTE_INIT(RRRRR_GGGGG_BBBBB)
254   MDRV_PALETTE_LENGTH(32768)
255
256   MDRV_SPEAKER_STANDARD_MONO("mono")
257
258   MDRV_VIDEO_START(skimaxx)
259   MDRV_VIDEO_UPDATE(tms340x0)
260MACHINE_DRIVER_END
261
262
263/*************************************
264 *
265 *  ROM definition(s)
266 *
267 *************************************/
268
269ROM_START( skimaxx )
270   ROM_REGION( 0x200000, "maincpu", 0 )
271   ROM_LOAD32_BYTE( "main2_0.ve2", 0x000000, 0x80000, CRC(0e139138) SHA1(b28b0f5dba7810712cee99a9a9748ca2dabddf15) )
272   ROM_LOAD32_BYTE( "main2_0.ve4", 0x000001, 0x80000, CRC(4e0502cf) SHA1(451efd82656dd32e696f572d848b2717453f05c8) )
273   ROM_LOAD32_BYTE( "main2_0.ve3", 0x000002, 0x80000, CRC(53887cfd) SHA1(79d9547e0e9c4c41913279f977bf25cdbe800356) )
274   ROM_LOAD32_BYTE( "main2_0.ve5", 0x000003, 0x80000, CRC(6317f54d) SHA1(057141acd2a8a804d8cc0487d5cacc286c344866) )
275
276   ROM_REGION( 0x400000, "subcpu", 0 )
277   ROM_LOAD32_BYTE( "ve1v-2_0", 0x000003, 0x100000, CRC(871e16d2) SHA1(9318ebcff4032fffcbe53c8fb805b14578eaebac) )
278   ROM_LOAD32_BYTE( "ve2v-2_0", 0x000002, 0x100000, CRC(17b01a96) SHA1(79ef3bd6a22abf774095741c29deeb6af53d1585) )
279   ROM_LOAD32_BYTE( "ve3v-2_0", 0x000001, 0x100000, CRC(c1491795) SHA1(3a527ea4bf8cfdab072153b1cd66b0d090ef4d31) )
280   ROM_LOAD32_BYTE( "ve4v-2_0", 0x000000, 0x100000, CRC(950773bb) SHA1(68e4a5780701488a934104eb87d10c36d736f049) )
281
282   ROM_REGION16_LE( 0x100000, "tms", 0 )
283   ROM_LOAD16_BYTE( "vc8v-2_0", 0x000000, 0x80000, CRC(a6e9ef81) SHA1(59a0fb149e17d3773adb980428a0b107647bd4fa) )
284   ROM_LOAD16_BYTE( "vc9v-2_0", 0x000001, 0x80000, CRC(b1e8ba65) SHA1(b91cf93ecd9b6067664780ab2c1b69f632c7ae05) )
285
286   ROM_REGION( 0x600000, "tmsgfx", 0 )
287   ROM_LOAD16_BYTE( "vc10v2_0", 0x000000, 0x80000, CRC(433651cd) SHA1(9b9801703d16adbbca2b03e1714490fb166d48a0) )
288   ROM_LOAD16_BYTE( "vc11v2_0", 0x000001, 0x80000, CRC(a906fc72) SHA1(c61ad560f203c7f507cc7b7dc8834f529a6501a7) )
289
290   ROM_REGION( 0x600000, "gfx", 0 )
291   ROM_LOAD16_BYTE( "ve5v-2_0", 0x000000, 0x100000, CRC(b95544a3) SHA1(1ad49da54d36543229e241887c3dd8411ef5c89a) )
292   ROM_LOAD16_BYTE( "ve6v-2_0", 0x000001, 0x100000, CRC(d98bf89a) SHA1(f7fd66487f7696b53ee90a4cf45a810ec791df59) )
293   ROM_LOAD16_BYTE( "ve7v-2_0", 0x200000, 0x100000, CRC(a927716b) SHA1(0189d7b08b65b6a8a8d4c3e2affe93612db38155) )
294   ROM_LOAD16_BYTE( "ve8v-2_0", 0x200001, 0x100000, CRC(ad8ed4a4) SHA1(5d1339b3d6ce59fea062273fa2da35988ba94a80) )
295   ROM_LOAD16_BYTE( "ve9v-2_0", 0x400000, 0x100000, CRC(587b364d) SHA1(b53412bdcc804727990d959e5b2399a7e5e7fbf3) )
296   ROM_LOAD16_BYTE( "ve10v2_0", 0x400001, 0x100000, CRC(c2a16a62) SHA1(3663c19a6517b0a01fb454523b995be3cdf2e4b3) )
297
298   ROM_REGION( 0x80000, "oki1", 0 )
299   ROM_LOAD( "main2_0.u2", 0x000000, 0x80000, CRC(c84b3c46) SHA1(b956358518495aa822a5b699cbad1abac212dd09) )
300
301   ROM_REGION( 0x80000, "oki2", 0 )
302   ROM_LOAD( "main2_0.u4", 0x000000, 0x80000, CRC(c84b3c46) SHA1(b956358518495aa822a5b699cbad1abac212dd09) )
303
304   ROM_REGION( 0x80000, "oki3", 0 )
305   ROM_LOAD( "main2_0.u3", 0x000000, 0x80000, CRC(24d8c6ad) SHA1(06f51a4c380c91c930d646826246f62c4e1f9cda) )
306
307   ROM_REGION( 0x80000, "oki4", 0 )
308   ROM_LOAD( "main2_0.u5", 0x000000, 0x80000, CRC(e2ba07ad) SHA1(cf82753975f7b6756cca4e10b5372e00135440bf) )
309ROM_END
310
311
312/*************************************
313 *
314 *  Game driver
315 *
316 *************************************/
317
318GAME( 1996, skimaxx, 0, skimaxx, skimaxx, 0, ROT0, "Kyle Hodgetts/ICE", "Skimaxx", GAME_NOT_WORKING | GAME_NO_SOUND )
src/mame/drivers/coolpool.c
r4679r4680
220220   coin_counter_w(0, ~data & 0x0001);
221221   coin_counter_w(1, ~data & 0x0002);
222222
223   cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_RESET, (data & 0x0400) ? ASSERT_LINE : CLEAR_LINE);
223   cputag_set_input_line(space->machine, "dsp", INPUT_LINE_RESET, (data & 0x0400) ? ASSERT_LINE : CLEAR_LINE);
224224
225225   /* bits 10-15 are counted down over time */
226226   if (data & 0x0400) amerdart_iop_echo = 1;
r4679r4680
233233   iop_answer = iop_cmd;
234234   if (amerdart_iop_echo && iop_cmd != 0x19)
235235   {
236      cpu_set_input_line(machine->cpu[0], 1, ASSERT_LINE);
236      cputag_set_input_line(machine, "maincpu", 1, ASSERT_LINE);
237237      return;
238238   }
239239   amerdart_iop_echo = 0;
r4679r4680
271271         break;
272272   }
273273
274   cpu_set_input_line(machine->cpu[0], 1, ASSERT_LINE);
274   cputag_set_input_line(machine, "maincpu", 1, ASSERT_LINE);
275275}
276276
277277
r4679r4680
297297   coin_counter_w(0, ~data & 0x0001);
298298   coin_counter_w(1, ~data & 0x0002);
299299
300   cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_RESET, (data & 0x0400) ? ASSERT_LINE : CLEAR_LINE);
300   cputag_set_input_line(space->machine, "dsp", INPUT_LINE_RESET, (data & 0x0400) ? ASSERT_LINE : CLEAR_LINE);
301301}
302302
303303
r4679r4680
313313{
314314   iop_cmd = param;
315315   cmd_pending = 1;
316   cpu_set_input_line(machine->cpu[1], 0, HOLD_LINE);   /* ???  I have no idea who should generate this! */
317                              /* the DSP polls the status bit so it isn't strictly */
318                              /* necessary to also have an IRQ */
316   cputag_set_input_line(machine, "dsp", 0, HOLD_LINE);   /* ???  I have no idea who should generate this! */
317                                             /* the DSP polls the status bit so it isn't strictly */
318                                             /* necessary to also have an IRQ */
319319   cpuexec_boost_interleave(machine, attotime_zero, ATTOTIME_IN_USEC(50));
320320}
321321
r4679r4680
330330static READ16_HANDLER( coolpool_iop_r )
331331{
332332   logerror("%08x:IOP read %04x\n",cpu_get_pc(space->cpu),iop_answer);
333   cpu_set_input_line(space->machine->cpu[0], 1, CLEAR_LINE);
333   cputag_set_input_line(space->machine, "maincpu", 1, CLEAR_LINE);
334334
335335   return iop_answer;
336336}
r4679r4680
347347static READ16_HANDLER( dsp_cmd_r )
348348{
349349   cmd_pending = 0;
350   logerror("%08x:IOP cmd_r %04x\n",cpu_get_pc(space->cpu),iop_cmd);
350   logerror("%08x:IOP cmd_r %04x\n", cpu_get_pc(space->cpu), iop_cmd);
351351   return iop_cmd;
352352}
353353
354354
355355static WRITE16_HANDLER( dsp_answer_w )
356356{
357   logerror("%08x:IOP answer %04x\n",cpu_get_pc(space->cpu),data);
357   logerror("%08x:IOP answer %04x\n", cpu_get_pc(space->cpu), data);
358358   iop_answer = data;
359   cpu_set_input_line(space->machine->cpu[0], 1, ASSERT_LINE);
359   cputag_set_input_line(space->machine, "maincpu", 1, ASSERT_LINE);
360360}
361361
362362
r4679r4680
955955
956956static DRIVER_INIT( coolpool )
957957{
958   memory_install_read16_handler(cpu_get_address_space(machine->cpu[1], ADDRESS_SPACE_IO), 0x07, 0x07, 0, 0, coolpool_input_r);
958   memory_install_read16_handler(cputag_get_address_space(machine, "dsp", ADDRESS_SPACE_IO), 0x07, 0x07, 0, 0, coolpool_input_r);
959959}
960960
961961
src/mame/drivers/mwarr.c
r4679r4680
318318   mhigh_tilemap = tilemap_create(machine, get_mhigh_tile_info,tilemap_scan_cols, 16, 16,64,16);
319319   tx_tilemap    = tilemap_create(machine, get_tx_tile_info,   tilemap_scan_rows,  8,  8,64,32);
320320
321   sprites_buffer = auto_malloc(sizeof(UINT16) * 0x800);
321   sprites_buffer = auto_alloc_array(machine, UINT16, 0x800);
322322
323323   tilemap_set_transparent_pen(mlow_tilemap,0);
324324   tilemap_set_transparent_pen(mhigh_tilemap,0);
src/mame/drivers/sauro.c
r4679r4680
9090WRITE8_HANDLER( tecfri_colorram2_w );
9191WRITE8_HANDLER( tecfri_scroll_bg_w );
9292WRITE8_HANDLER( sauro_scroll_fg_w );
93WRITE8_HANDLER( trckydoc_spriteram_mirror_w );
9493WRITE8_HANDLER( sauro_palette_bank_w );
9594
9695VIDEO_START( sauro );
r4679r4680
135134   sp0256_ALD_w(device, 0, data);
136135}
137136
138static ADDRESS_MAP_START( sauro_readmem, ADDRESS_SPACE_PROGRAM, 8 )
139   AM_RANGE(0x0000, 0xdfff) AM_READ(SMH_ROM)
140   AM_RANGE(0xe000, 0xebff) AM_READ(SMH_RAM)
141   AM_RANGE(0xf000, 0xffff) AM_READ(SMH_RAM)
137static ADDRESS_MAP_START( sauro_map, ADDRESS_SPACE_PROGRAM, 8 )
138   AM_RANGE(0x0000, 0xdfff) AM_ROM
139   AM_RANGE(0xe000, 0xe7ff) AM_RAM
140   AM_RANGE(0xe800, 0xebff) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
141   AM_RANGE(0xf000, 0xf3ff) AM_RAM_WRITE(tecfri_videoram_w) AM_BASE(&tecfri_videoram)
142   AM_RANGE(0xf400, 0xf7ff) AM_RAM_WRITE(tecfri_colorram_w) AM_BASE(&tecfri_colorram)
143   AM_RANGE(0xf800, 0xfbff) AM_RAM_WRITE(tecfri_videoram2_w) AM_BASE(&tecfri_videoram2)
144   AM_RANGE(0xfc00, 0xffff) AM_RAM_WRITE(tecfri_colorram2_w) AM_BASE(&tecfri_colorram2)
142145ADDRESS_MAP_END
143146
144static ADDRESS_MAP_START( sauro_writemem, ADDRESS_SPACE_PROGRAM, 8 )
145   AM_RANGE(0x0000, 0xdfff) AM_WRITE(SMH_ROM)
146   AM_RANGE(0xe000, 0xe7ff) AM_WRITE(SMH_RAM)
147   AM_RANGE(0xe800, 0xebff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
148   AM_RANGE(0xf000, 0xf3ff) AM_WRITE(tecfri_videoram_w) AM_BASE(&tecfri_videoram)
149   AM_RANGE(0xf400, 0xf7ff) AM_WRITE(tecfri_colorram_w) AM_BASE(&tecfri_colorram)
150   AM_RANGE(0xf800, 0xfbff) AM_WRITE(tecfri_videoram2_w) AM_BASE(&tecfri_videoram2)
151   AM_RANGE(0xfc00, 0xffff) AM_WRITE(tecfri_colorram2_w) AM_BASE(&tecfri_colorram2)
152ADDRESS_MAP_END
153
154
155147static ADDRESS_MAP_START( sauro_io_map, ADDRESS_SPACE_IO, 8 )
156148   ADDRESS_MAP_GLOBAL_MASK(0xff)
157149   AM_RANGE(0x00, 0x00) AM_READ_PORT("DSW1")
r4679r4680
177169   AM_RANGE(0xe0, 0xe0) AM_WRITE(watchdog_reset_w)
178170ADDRESS_MAP_END
179171
180static ADDRESS_MAP_START( sauro_sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
181   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
182   AM_RANGE(0x8000, 0x87ff) AM_READ(SMH_RAM)
183   AM_RANGE(0xe000, 0xe000) AM_READ(sauro_sound_command_r)
184ADDRESS_MAP_END
185
186static ADDRESS_MAP_START( sauro_sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
187   AM_RANGE(0x8000, 0x87ff) AM_WRITE(SMH_RAM)
172static ADDRESS_MAP_START( sauro_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
173   AM_RANGE(0x0000, 0x7fff) AM_ROM
174   AM_RANGE(0x8000, 0x87ff) AM_RAM
188175   AM_RANGE(0xc000, 0xc001) AM_DEVWRITE("ym", ym3812_w)
189176   AM_RANGE(0xa000, 0xa000) AM_DEVWRITE("speech", adpcm_w)
177   AM_RANGE(0xe000, 0xe000) AM_READ(sauro_sound_command_r)
190178   AM_RANGE(0xe000, 0xe006) AM_WRITENOP   /* echo from write to e0000 */
191179   AM_RANGE(0xe00e, 0xe00f) AM_WRITENOP
192180ADDRESS_MAP_END
193181
194static ADDRESS_MAP_START( trckydoc_readmem, ADDRESS_SPACE_PROGRAM, 8 )
195   AM_RANGE(0x0000, 0xdfff) AM_READ(SMH_ROM)
196   AM_RANGE(0xe000, 0xe7ff) AM_READ(SMH_RAM)
182
183static ADDRESS_MAP_START( trckydoc_map, ADDRESS_SPACE_PROGRAM, 8 )
184   AM_RANGE(0x0000, 0xdfff) AM_ROM
185   AM_RANGE(0xe000, 0xe7ff) AM_RAM
186   AM_RANGE(0xe800, 0xebff) AM_RAM AM_MIRROR(0x400) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
187   AM_RANGE(0xf000, 0xf3ff) AM_RAM_WRITE(tecfri_videoram_w) AM_BASE(&tecfri_videoram)
188   AM_RANGE(0xf400, 0xf7ff) AM_RAM_WRITE(tecfri_colorram_w) AM_BASE(&tecfri_colorram)
197189   AM_RANGE(0xf800, 0xf800) AM_READ_PORT("DSW1")
198190   AM_RANGE(0xf808, 0xf808) AM_READ_PORT("DSW2")
199191   AM_RANGE(0xf810, 0xf810) AM_READ_PORT("P1")
200192   AM_RANGE(0xf818, 0xf818) AM_READ_PORT("P2")
201   AM_RANGE(0xf828, 0xf828) AM_READ(watchdog_reset_r)
202ADDRESS_MAP_END
203
204static ADDRESS_MAP_START( trckydoc_writemem, ADDRESS_SPACE_PROGRAM, 8 )
205   AM_RANGE(0x0000, 0xdfff) AM_WRITE(SMH_ROM)
206   AM_RANGE(0xe000, 0xe7ff) AM_WRITE(SMH_RAM)
207   AM_RANGE(0xe800, 0xebff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
208   AM_RANGE(0xec00, 0xefff) AM_WRITE(trckydoc_spriteram_mirror_w) // it clears sprites from the screen by writing here to set some of the attributes
209   AM_RANGE(0xf000, 0xf3ff) AM_WRITE(tecfri_videoram_w) AM_BASE(&tecfri_videoram)
210   AM_RANGE(0xf400, 0xf7ff) AM_WRITE(tecfri_colorram_w) AM_BASE(&tecfri_colorram)
211193   AM_RANGE(0xf820, 0xf821) AM_DEVWRITE("ym", ym3812_w)
194   AM_RANGE(0xf828, 0xf828) AM_READ(watchdog_reset_r)
212195   AM_RANGE(0xf830, 0xf830) AM_WRITE(tecfri_scroll_bg_w)
213196   AM_RANGE(0xf838, 0xf838) AM_WRITENOP            /* only written at startup */
214197   AM_RANGE(0xf839, 0xf839) AM_WRITE(flip_screen_w)
r4679r4680
218201   AM_RANGE(0xf83f, 0xf83f) AM_WRITENOP            /* only written at startup */
219202ADDRESS_MAP_END
220203
204
221205static INPUT_PORTS_START( tecfri )
222206   PORT_START("P1")
223207   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 )
r4679r4680
350334
351335static MACHINE_DRIVER_START( tecfri )
352336   /* basic machine hardware */
353   MDRV_CPU_ADD("maincpu", Z80, 4000000)        // 4 MHz???
337   MDRV_CPU_ADD("maincpu", Z80, XTAL_20MHz/4)       /* verified on pcb */
354338   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
355339
356340   /* video hardware */
r4679r4680
367351   /* sound hardware */
368352   MDRV_SPEAKER_STANDARD_MONO("mono")
369353
370   MDRV_SOUND_ADD("ym", YM3812, 3600000)
354   MDRV_SOUND_ADD("ym", YM3812, XTAL_20MHz/8)       /* verified on pcb */
371355   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
372356
373357MACHINE_DRIVER_END
r4679r4680
376360   MDRV_IMPORT_FROM(tecfri)
377361
378362   MDRV_CPU_MODIFY("maincpu")
379   MDRV_CPU_PROGRAM_MAP(trckydoc_readmem, trckydoc_writemem )
363   MDRV_CPU_PROGRAM_MAP(trckydoc_map,0 )
380364
381365   MDRV_GFXDECODE(trckydoc)
382366
r4679r4680
389373   MDRV_IMPORT_FROM(tecfri)
390374
391375   MDRV_CPU_MODIFY("maincpu")
392   MDRV_CPU_PROGRAM_MAP(sauro_readmem, sauro_writemem)
376   MDRV_CPU_PROGRAM_MAP(sauro_map, 0)
393377   MDRV_CPU_IO_MAP(sauro_io_map,0)
394378
395379   MDRV_CPU_ADD("audiocpu", Z80, 4000000)   // 4 MHz?
396   MDRV_CPU_PROGRAM_MAP(sauro_sound_readmem, sauro_sound_writemem)
397   MDRV_CPU_VBLANK_INT_HACK(sauro_interrupt, 8) // ?
380   MDRV_CPU_PROGRAM_MAP(sauro_sound_map, 0)
381   MDRV_CPU_PERIODIC_INT(sauro_interrupt, 8*60) // ?
398382
399383   MDRV_GFXDECODE(sauro)
400384
r4679r4680
404388   MDRV_SOUND_ADD("speech", SP0256, 3120000)
405389   MDRV_SOUND_CONFIG(sauro_sp256)
406390   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
407
408391MACHINE_DRIVER_END
409392
410393/***************************************************************************
src/mame/drivers/gaplus.c
r4679r4680
310310}
311311
312312
313static ADDRESS_MAP_START( readmem_cpu1, ADDRESS_SPACE_PROGRAM, 8 )
314   AM_RANGE(0x0000, 0x07ff) AM_READ(gaplus_videoram_r)      /* tilemap RAM (shared with CPU #2) */
315   AM_RANGE(0x0800, 0x1fff) AM_READ(gaplus_spriteram_r)      /* shared RAM with CPU #2 & spriteram */
316   AM_RANGE(0x6000, 0x63ff) AM_READ(gaplus_snd_sharedram_r) /* shared RAM with CPU #3 */
317   AM_RANGE(0x6820, 0x682f) AM_READ(gaplus_customio_3_r)   /* custom I/O chip #3 interface */
318   AM_RANGE(0x6800, 0x6bff) AM_READ(namcoio_r)            /* custom I/O chips interface */
319   AM_RANGE(0x7800, 0x7fff) AM_READ(watchdog_reset_r)      /* watchdog */
320   AM_RANGE(0xa000, 0xffff) AM_READ(SMH_ROM)            /* ROM */
321ADDRESS_MAP_END
322
323static ADDRESS_MAP_START( writemem_cpu1, ADDRESS_SPACE_PROGRAM, 8 )
324   AM_RANGE(0x0000, 0x07ff) AM_WRITE(gaplus_videoram_w) AM_BASE(&gaplus_videoram)   /* tilemap RAM (shared with CPU #2) */
325   AM_RANGE(0x0800, 0x1fff) AM_WRITE(gaplus_spriteram_w) AM_BASE(&gaplus_spriteram)   /* shared RAM with CPU #2 (includes sprite RAM) */
326   AM_RANGE(0x6000, 0x63ff) AM_DEVWRITE("namco", gaplus_snd_sharedram_w) /* shared RAM with CPU #3 */
327   AM_RANGE(0x6820, 0x682f) AM_WRITE(gaplus_customio_3_w) AM_BASE(&gaplus_customio_3)/* custom I/O chip #3 interface */
328   AM_RANGE(0x6800, 0x6bff) AM_WRITE(namcoio_w)                        /* custom I/O chips interface */
329   AM_RANGE(0x7000, 0x7fff) AM_WRITE(gaplus_irq_1_ctrl_w)               /* main CPU irq control */
330   AM_RANGE(0x8000, 0x8fff) AM_WRITE(gaplus_sreset_w)                   /* reset CPU #2 & #3, enable sound */
331   AM_RANGE(0x9000, 0x9fff) AM_WRITE(gaplus_freset_w)                   /* reset I/O chips */
313static ADDRESS_MAP_START( cpu1_map, ADDRESS_SPACE_PROGRAM, 8 )
314   AM_RANGE(0x0000, 0x07ff) AM_READWRITE(gaplus_videoram_r, gaplus_videoram_w) AM_BASE(&gaplus_videoram)      /* tilemap RAM (shared with CPU #2) */
315   AM_RANGE(0x0800, 0x1fff) AM_READWRITE(gaplus_spriteram_r, gaplus_spriteram_w) AM_BASE(&gaplus_spriteram)   /* shared RAM with CPU #2 (includes sprite RAM) */
316   AM_RANGE(0x6000, 0x63ff) AM_READ(gaplus_snd_sharedram_r)                                        /* shared RAM with CPU #3 */
317   AM_RANGE(0x6000, 0x63ff) AM_DEVWRITE("namco", gaplus_snd_sharedram_w)                               /* shared RAM with CPU #3 */
318   AM_RANGE(0x6820, 0x682f) AM_READWRITE(gaplus_customio_3_r, gaplus_customio_3_w) AM_BASE(&gaplus_customio_3)   /* custom I/O chip #3 interface */
319   AM_RANGE(0x6800, 0x6bff) AM_READWRITE(namcoio_r, namcoio_w)                                       /* custom I/O chips interface */
320   AM_RANGE(0x7000, 0x7fff) AM_WRITE(gaplus_irq_1_ctrl_w)                                          /* main CPU irq control */
321   AM_RANGE(0x7800, 0x7fff) AM_READ(watchdog_reset_r)                                             /* watchdog */
322   AM_RANGE(0x8000, 0x8fff) AM_WRITE(gaplus_sreset_w)                                              /* reset CPU #2 & #3, enable sound */
323   AM_RANGE(0x9000, 0x9fff) AM_WRITE(gaplus_freset_w)                                              /* reset I/O chips */
332324   AM_RANGE(0xa000, 0xa7ff) AM_WRITE(gaplus_starfield_control_w)            /* starfield control */
333   AM_RANGE(0xa000, 0xffff) AM_WRITE(SMH_ROM)                        /* ROM */
325   AM_RANGE(0xa000, 0xffff) AM_ROM                                                            /* ROM */
334326ADDRESS_MAP_END
335327
336static ADDRESS_MAP_START( readmem_cpu2, ADDRESS_SPACE_PROGRAM, 8 )
337   AM_RANGE(0x0000, 0x07ff) AM_READ(gaplus_videoram_r)      /* tilemap RAM (shared with CPU #1) */
338   AM_RANGE(0x0800, 0x1fff) AM_READ(gaplus_spriteram_r)      /* shared RAM with CPU #1 & spriteram */
339   AM_RANGE(0xa000, 0xffff) AM_READ(SMH_ROM)            /* ROM */
328static ADDRESS_MAP_START( cpu2_map, ADDRESS_SPACE_PROGRAM, 8 )
329   AM_RANGE(0x0000, 0x07ff) AM_READWRITE(gaplus_videoram_r, gaplus_videoram_w)      /* tilemap RAM (shared with CPU #1) */
330   AM_RANGE(0x0800, 0x1fff) AM_READWRITE(gaplus_spriteram_r, gaplus_spriteram_w)   /* shared RAM with CPU #1 */
331//  AM_RANGE(0x500f, 0x500f) AM_WRITENOP                                            /* ??? written 256 times on startup */
332   AM_RANGE(0x6000, 0x6fff) AM_WRITE(gaplus_irq_2_ctrl_w)                     /* IRQ 2 control */
333   AM_RANGE(0xa000, 0xffff) AM_ROM                                       /* ROM */
340334ADDRESS_MAP_END
341335
342static ADDRESS_MAP_START( writemem_cpu2, ADDRESS_SPACE_PROGRAM, 8 )
343   AM_RANGE(0x0000, 0x07ff) AM_WRITE(gaplus_videoram_w)      /* tilemap RAM (shared with CPU #1) */
344   AM_RANGE(0x0800, 0x1fff) AM_WRITE(gaplus_spriteram_w)      /* shared RAM with CPU #1 */
345//  AM_RANGE(0x500f, 0x500f) AM_WRITENOP             /* ??? written 256 times on startup */
346   AM_RANGE(0x6000, 0x6fff) AM_WRITE(gaplus_irq_2_ctrl_w)   /* IRQ 2 control */
347   AM_RANGE(0xa000, 0xffff) AM_WRITE(SMH_ROM)            /* ROM */
348ADDRESS_MAP_END
349
350static ADDRESS_MAP_START( readmem_cpu3, ADDRESS_SPACE_PROGRAM, 8 )
351   AM_RANGE(0x0000, 0x03ff) AM_READ(gaplus_snd_sharedram_r) /* shared RAM with CPU #1 */
352   AM_RANGE(0x2000, 0x3fff) AM_READ(watchdog_reset_r)      /* watchdog? */
353   AM_RANGE(0xe000, 0xffff) AM_READ(SMH_ROM)            /* ROM */
354ADDRESS_MAP_END
355
356   /* CPU 3 (SOUND CPU) write addresses */
357static ADDRESS_MAP_START( writemem_cpu3, ADDRESS_SPACE_PROGRAM, 8 )
336static ADDRESS_MAP_START( cpu3_map, ADDRESS_SPACE_PROGRAM, 8 )
337   AM_RANGE(0x0000, 0x03ff) AM_READ(gaplus_snd_sharedram_r)                               /* shared RAM with CPU #1 */
358338   AM_RANGE(0x0000, 0x03ff) AM_DEVWRITE("namco", gaplus_snd_sharedram_w) AM_BASE(&namco_soundregs)   /* shared RAM with the main CPU + sound registers */
359   AM_RANGE(0x2000, 0x3fff) AM_WRITE(watchdog_reset_w)      /* watchdog? */
360   AM_RANGE(0x4000, 0x7fff) AM_WRITE(gaplus_irq_3_ctrl_w)   /* interrupt enable/disable */
361   AM_RANGE(0xe000, 0xffff) AM_WRITE(SMH_ROM)            /* ROM */
339   AM_RANGE(0x2000, 0x3fff) AM_READWRITE(watchdog_reset_r, watchdog_reset_w)                  /* watchdog? */
340   AM_RANGE(0x4000, 0x7fff) AM_WRITE(gaplus_irq_3_ctrl_w)                                 /* interrupt enable/disable */
341   AM_RANGE(0xe000, 0xffff) AM_ROM                                                   /* ROM */
362342ADDRESS_MAP_END
363343
364344
r4679r4680
542522
543523   /* basic machine hardware */
544524   MDRV_CPU_ADD("maincpu", M6809,   24576000/16)   /* 1.536 MHz */
545   MDRV_CPU_PROGRAM_MAP(readmem_cpu1,writemem_cpu1)
525   MDRV_CPU_PROGRAM_MAP(cpu1_map,0)
546526   MDRV_CPU_VBLANK_INT("screen", gaplus_interrupt_1)
547527
548528   MDRV_CPU_ADD("sub", M6809,   24576000/16)   /* 1.536 MHz */
549   MDRV_CPU_PROGRAM_MAP(readmem_cpu2,writemem_cpu2)
529   MDRV_CPU_PROGRAM_MAP(cpu2_map,0)
550530   MDRV_CPU_VBLANK_INT("screen", irq0_line_assert)
551531
552532   MDRV_CPU_ADD("sub2", M6809, 24576000/16)   /* 1.536 MHz */
553   MDRV_CPU_PROGRAM_MAP(readmem_cpu3,writemem_cpu3)
533   MDRV_CPU_PROGRAM_MAP(cpu3_map,0)
554534   MDRV_CPU_VBLANK_INT("screen", irq0_line_assert)
555535
556536   MDRV_QUANTUM_TIME(HZ(6000))   /* a high value to ensure proper synchronization of the CPUs */
src/mame/drivers/drmicro.c
r4679r4680
7474
7575/****************************************************************************/
7676
77static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 )
78   AM_RANGE(0x0000, 0xbfff) AM_READ(SMH_ROM)
79   AM_RANGE(0xc000, 0xdfff) AM_READ(SMH_RAM)
80   AM_RANGE(0xe000, 0xefff) AM_READ(SMH_RAM)
81   AM_RANGE(0xf000, 0xffff) AM_READ(SMH_RAM)
77static ADDRESS_MAP_START( drmicro_map, ADDRESS_SPACE_PROGRAM, 8 )
78   AM_RANGE(0x0000, 0xbfff) AM_ROM
79   AM_RANGE(0xc000, 0xdfff) AM_RAM
80   AM_RANGE(0xe000, 0xefff) AM_READWRITE(SMH_RAM, drmicro_videoram_w)
81   AM_RANGE(0xf000, 0xffff) AM_RAM
8282ADDRESS_MAP_END
8383
84static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 )
85   AM_RANGE(0x0000, 0xbfff) AM_WRITE(SMH_ROM)
86   AM_RANGE(0xc000, 0xdfff) AM_WRITE(SMH_RAM)
87   AM_RANGE(0xe000, 0xefff) AM_WRITE(drmicro_videoram_w)
88   AM_RANGE(0xf000, 0xffff) AM_WRITE(SMH_RAM)
89ADDRESS_MAP_END
90
9184static ADDRESS_MAP_START( io_map, ADDRESS_SPACE_IO, 8 )
9285   ADDRESS_MAP_GLOBAL_MASK(0xff)
9386   AM_RANGE(0x00, 0x00) AM_READ_PORT("P1") AM_DEVWRITE("sn1", sn76496_w)
r4679r4680
221214
222215   /* basic machine hardware */
223216   MDRV_CPU_ADD("maincpu", Z80,MCLK/6)   /* 3.072MHz? */
224   MDRV_CPU_PROGRAM_MAP(readmem,writemem)
217   MDRV_CPU_PROGRAM_MAP(drmicro_map,0)
225218   MDRV_CPU_IO_MAP(io_map,0)
226219   MDRV_CPU_VBLANK_INT("screen", drmicro_interrupt)
227220
src/mame/drivers/twins.c
r4679r4680
9494
9595static VIDEO_START(twins)
9696{
97   twins_pal = auto_malloc(0x100*2);
97   twins_pal = auto_alloc_array(machine, UINT16, 0x100);
9898}
9999
100100static VIDEO_UPDATE(twins)
r4679r4680
199199
200200static VIDEO_START(twinsa)
201201{
202   twins_pal = auto_malloc(0x1000*2);
202   twins_pal = auto_alloc_array(machine, UINT16, 0x1000);
203203}
204204
205205static VIDEO_UPDATE(twinsa)
src/mame/drivers/system1.c
r4679r4680
191191#include "driver.h"
192192#include "video/system1.h"
193193#include "cpu/z80/z80.h"
194#include "cpu/mcs51/mcs51.h"
194195#include "machine/z80pio.h"
195196#include "machine/8255ppi.h"
196197#include "machine/segacrpt.h"
r4679r4680
698699
699700/*************************************
700701 *
702 *  MCU address maps
703 *
704 *************************************/
705
706static UINT8 mcu_control;
707
708static WRITE8_HANDLER( mcu_control_w )
709{
710   mcu_control = data;
711}
712
713static WRITE8_HANDLER( mcu_io_w )
714{
715   switch (mcu_control)
716   {
717      case 0x01:
718         if (offset >= 0xc000 && offset < 0xd000)
719            memory_write_byte(cpu_get_address_space(space->machine->cpu[0], ADDRESS_SPACE_PROGRAM), offset, data);
720         else
721            logerror("%03X: MCU movx write mode %02X offset %04X = %02X\n",
722                   cpu_get_pc(space->cpu), mcu_control, offset, data);
723         break;
724
725      case 0x51:
726         memory_write_byte(cpu_get_address_space(space->machine->cpu[0], ADDRESS_SPACE_IO), offset, data);
727         break;
728
729      default:
730         logerror("%03X: MCU movx write mode %02X offset %04X = %02X\n",
731                cpu_get_pc(space->cpu), mcu_control, offset, data);
732         break;
733   }
734}
735
736static READ8_HANDLER( mcu_io_r )
737{
738   switch (mcu_control)
739   {
740      case 0x01:
741         if (offset >= 0xc000)
742            return memory_read_byte(cpu_get_address_space(space->machine->cpu[0], ADDRESS_SPACE_PROGRAM), offset);
743         else
744         {
745            logerror("%03X: MCU movx read mode %02X offset %04X\n",
746                   cpu_get_pc(space->cpu), mcu_control, offset);
747            return 0xff;
748         }
749
750      case 0x47:
751         return memory_region(space->machine, "maincpu")[offset + 0x00000];
752
753      case 0x4f:
754         return memory_region(space->machine, "maincpu")[offset + 0x10000];
755
756      case 0x51:
757         return memory_read_byte(cpu_get_address_space(space->machine->cpu[0], ADDRESS_SPACE_IO), offset);
758
759      case 0x59: /* read after each byte of internal checksum */
760      case 0x5f: /* read after each pair of bytes during main CPU checksum */
761         return 0xff;
762
763      default:
764         logerror("%03X: MCU movx read mode %02X offset %04X\n",
765                cpu_get_pc(space->cpu), mcu_control, offset);
766         return 0xff;
767   }
768}
769
770/*
771
772     +------------- HALT?
773     | +----------- I/O?
774     | | +--------- ROM bank select
775     | | |
77601  0000 0001 = read/write to Z80 program space
77751  0101 0001 = read/write to Z80 I/O space
77841  0100 0001 = write at initialization time
77947  0100 0111 = read from ROM 00000-07FFF
7804F  0100 1111 = read from ROM 10000-1FFFF
7815F  0101 1111 = read during ROM checksum
78219  0001 1001 = reads here before doing shorter loops
78359  0101 1001 = reads here during checksum, and in infinite loop on checksum error
784
785
786When P1 = $01, movx writes to ???, reads from ???
787When P1 = $19, movx reads from ???
788When P1 = $41, movx writes to ??? (done at init, with no dptr)
789When P1 = $47, movx reads from ROM 00000-07FFF
790When P1 = $4F, movx reads from ROM 10000-1FFFF
791When P1 = $51, movx writes to ??? (address $17, $14, $15, $16)
792When P1 = $59, movx reads from ??? (done on error, and on each byte of internal checksum)
793When P1 = $5F, movx reads from ??? (when after each pair of bytes during checksum)
794When P1 = $FF, default state
795*/
796
797static ADDRESS_MAP_START( mcu_io_map, ADDRESS_SPACE_IO, 8 )
798   ADDRESS_MAP_UNMAP_HIGH
799   AM_RANGE(0x0000, 0xffff) AM_READWRITE(mcu_io_r, mcu_io_w)
800   AM_RANGE(MCS51_PORT_P1, MCS51_PORT_P1) AM_WRITE(mcu_control_w)
801ADDRESS_MAP_END
802
803
804
805/*************************************
806 *
701807 *  Generic port definitions
702808 *
703809 *************************************/
r4679r4680
20792185   MDRV_CPU_PROGRAM_MAP(nobo_map,0)
20802186MACHINE_DRIVER_END
20812187
2188static MACHINE_DRIVER_START( nobm )
2189   MDRV_IMPORT_FROM( nob )
20822190
2191   /* basic machine hardware */
2192   MDRV_CPU_ADD("mcu", I8751, 8000000 /* unknown speed */)
2193   MDRV_CPU_IO_MAP(mcu_io_map,0)
2194   MDRV_CPU_VBLANK_INT("screen", irq0_line_pulse)
2195MACHINE_DRIVER_END
20832196
2197
2198
20842199/* system2 video */
20852200static MACHINE_DRIVER_START( sys2 )
20862201   MDRV_IMPORT_FROM( sys1ppi )
r4679r4680
20902205   MDRV_VIDEO_UPDATE(system2)
20912206MACHINE_DRIVER_END
20922207
2208static MACHINE_DRIVER_START( sys2m )
2209   MDRV_IMPORT_FROM( sys2 )
2210
2211   /* basic machine hardware */
2212   MDRV_CPU_ADD("mcu", I8751, 8000000 /* unknown speed */)
2213   MDRV_CPU_IO_MAP(mcu_io_map,0)
2214   MDRV_CPU_VBLANK_INT("screen", irq0_line_pulse)
2215MACHINE_DRIVER_END
2216
20932217/* system2 with rowscroll */
20942218static MACHINE_DRIVER_START( sys2row )
20952219   MDRV_IMPORT_FROM( sys2 )
r4679r4680
20982222   MDRV_VIDEO_UPDATE(system2_rowscroll)
20992223MACHINE_DRIVER_END
21002224
2225static MACHINE_DRIVER_START( sys2rowm )
2226   MDRV_IMPORT_FROM( sys2row )
21012227
2228   /* basic machine hardware */
2229   MDRV_CPU_ADD("mcu", I8751, 8000000 /* unknown speed */)
2230   MDRV_CPU_IO_MAP(mcu_io_map,0)
2231   MDRV_CPU_VBLANK_INT("screen", irq0_line_pulse)
2232MACHINE_DRIVER_END
21022233
2234
2235
21032236/*************************************
21042237 *
21052238 *  ROM definition(s)
r4679r4680
31813314   ROM_LOAD( "epr7043.ic126",  0x0000, 0x8000, CRC(99a368ab) SHA1(a9451f39ee2613e5c3e2791d4d8d837b4a3ab666) )
31823315
31833316    /* This mcu is located on the main board. */
3184   ROM_REGION( 0x10000, "cpu2", 0 )   /* Internal i8751 MCU code */
3185   ROM_LOAD( "315-5159a.ic74", 0x00000, 0x1000, NO_DUMP )
3317   ROM_REGION( 0x1000, "mcu", 0 )
3318   ROM_LOAD( "315-5159a.ic74", 0x00000, 0x1000, BAD_DUMP CRC(1f774912) SHA1(2a301391ffeb38ce0ebba96b7fe2acde3097e220) )
31863319
31873320    /* These roms are located on the main board. */
31883321   ROM_REGION( 0x18000, "tiles", 0 )
r4679r4680
32403373   ROM_LOAD( "epr7043.ic126",  0x0000, 0x8000, CRC(99a368ab) SHA1(a9451f39ee2613e5c3e2791d4d8d837b4a3ab666) )
32413374
32423375    /* This mcu is located on the main board. */
3243   ROM_REGION( 0x10000, "cpu2", 0 )   /* Internal i8751 MCU code */
3244   ROM_LOAD( "315-5159.ic74", 0x00000, 0x1000, NO_DUMP )
3376   ROM_REGION( 0x1000, "mcu", 0 )
3377   ROM_LOAD( "315-5159.ic74", 0x00000, 0x1000, BAD_DUMP CRC(1f774912) SHA1(a9451f39ee2613e5c3e2791d4d8d837b4a3ab666) )
32453378
32463379    /* These roms are located on the main board. */
32473380   ROM_REGION( 0x18000, "tiles", 0 )
r4679r4680
33803513   ROM_REGION( 0x10000, "soundcpu", 0 )
33813514   ROM_LOAD( "epr-7130.ic126",   0x0000, 0x8000, CRC(346af118) SHA1(ef579818a45b8ebb276d5832092b26e232d5a737) )
33823515
3383   ROM_REGION( 0x10000, "cpu2", 0 )   /* Internal i8751 MCU code */
3384   ROM_LOAD( "315-5151.ic74",  0x00000, 0x1000, NO_DUMP )
3516   ROM_REGION( 0x1000, "mcu", 0 )
3517   ROM_LOAD( "315-5151.ic74",  0x00000, 0x1000, BAD_DUMP CRC(7bd11a6c) SHA1(2d75a2276e572f97f269af062536c1c58e1c8eaf) )
33853518
33863519   ROM_REGION( 0x18000, "tiles", 0 )
33873520   ROM_LOAD( "epr-7127.ic4",   0x00000, 0x8000, CRC(1e708f6d) SHA1(b975e13bdc44105e7a15c2694e3ec53b60e23e5e) )
r4679r4680
43764509   ROM_LOAD( "dm10.1k", 0x10000, 0x8000, CRC(e7c06663) SHA1(8ae42b0875afe60ef672f2285aeb72da1c7e167b) )
43774510   ROM_LOAD( "dm09.1h", 0x18000, 0x8000, CRC(dc4c872f) SHA1(aab85203cfd2463ffddfd48e87733fb8d6d8bcf6) )
43784511
4379   ROM_REGION( 0x8000, "mcu", 0 )
4380   ROM_LOAD( "8751.mcu", 0x00000, 0x8000, NO_DUMP )
4512   ROM_REGION( 0x1000, "mcu", 0 )
4513   ROM_LOAD( "dm.bin", 0x00000, 0x1000, CRC(6fde9dcb) SHA1(e1340644471a149b49a616c59445c85785e44fa4) )
43814514
43824515   ROM_REGION( 0x10000, "soundcpu", 0 )
43834516   ROM_LOAD( "dm03.9h", 0x0000, 0x4000, CRC(415adf76) SHA1(fbd6f8921aa3246702983ba81fa9ae53fa10c19d) )
r4679r4680
44804613
44814614   mc8123_decrypt_rom(machine, "maincpu", "key", 1, 4);
44824615
4483//  memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x00, 0x00, 0, 0, dakkochn_port_00_r);
4484//  memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x03, 0x03, 0, 0, dakkochn_port_03_r);
4485//  memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x04, 0x04, 0, 0, dakkochn_port_04_r);
4616//  memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_IO), 0x00, 0x00, 0, 0, dakkochn_port_00_r);
4617//  memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_IO), 0x03, 0x03, 0, 0, dakkochn_port_03_r);
4618//  memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_IO), 0x04, 0x04, 0, 0, dakkochn_port_04_r);
44864619
4487//  memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x15, 0x15, 0, 0, dakkochn_port_15_w);
4620//  memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_IO), 0x15, 0x15, 0, 0, dakkochn_port_15_w);
44884621}
44894622
44904623
r4679r4680
45874720   i8751_run = choplift_i8751_run;
45884721}
45894722
4590static DRIVER_INIT( shtngmst )
4723static DRIVER_INIT( shtngmst1 )
45914724{
45924725   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_IO);
45934726   memory_install_write8_handler(space, 0x10, 0x10, 0x00, 0x00, mcuenable_hack_w);
r4679r4680
45954728   memory_install_read_port_handler(space, 0x18, 0x18, 0x00, 0x03, "18");
45964729   memory_install_read_port_handler(space, 0x1c, 0x1c, 0x00, 0x02, "GUNX");
45974730   memory_install_read_port_handler(space, 0x1d, 0x1d, 0x00, 0x02, "GUNY");
4598   DRIVER_INIT_CALL(choplift);
4731   DRIVER_INIT_CALL(bank0c);
45994732}
46004733
4734static DRIVER_INIT( shtngmst )
4735{
4736   UINT8 *rom = memory_region(machine, "maincpu");
4737   int addr;
46014738
4739   // this is not right, but works for a decent amount of the data
4740   for (addr = 0; addr < 0x8000; addr++)
4741      rom[addr] ^= 0x04;
4742   DRIVER_INIT_CALL(shtngmst1);
4743}
46024744
4745
4746
46034747/*************************************
46044748 *
46054749 *  Game driver(s)
r4679r4680
46264770GAME( 1986, wboy2,      wboy,     sys1ppi,  wboy,      wboy2,    ROT0,   "Sega (Escape license)", "Wonder Boy (set 2, 315-5178)", GAME_SUPPORTS_SAVE )
46274771GAME( 1986, wboy2u,     wboy,     sys1ppi,  wboy,      bank00,   ROT0,   "Sega (Escape license)", "Wonder Boy (set 2, not encrypted)", GAME_SUPPORTS_SAVE )
46284772GAME( 1986, wbdeluxe,   wboy,     sys1ppi,  wbdeluxe,  bank00,   ROT0,   "Sega (Escape license)", "Wonder Boy Deluxe", GAME_SUPPORTS_SAVE )
4629GAME( 1986, nob,        nobb,     nob,      nob,       bank44,   ROT270, "Data East Corporation", "Noboranka (Japan)", GAME_NOT_WORKING )
4630GAME( 1986, nobb,       0,        nob,      nob,       nobb,     ROT270, "bootleg",               "Noboranka (Japan, bootleg)", GAME_SUPPORTS_SAVE )
4773GAME( 1986, nob,        0,        nobm,     nob,       bank44,   ROT270, "Data East Corporation", "Noboranka (Japan)", GAME_NOT_WORKING )
4774GAME( 1986, nobb,       nob,      nob,      nob,       nobb,     ROT270, "bootleg",               "Noboranka (Japan, bootleg)", GAME_SUPPORTS_SAVE )
46314775
46324776/* PIO-based System 1 */
46334777GAME( 1984, flicky,     0,        sys1pio,  flicky,    flicky,   ROT0,   "Sega",            "Flicky (128k Version, System 2, 315-5051)", GAME_SUPPORTS_SAVE )
r4679r4680
46654809GAME( 1986, brain,      0,        sys1pio,  brain,     bank44,   ROT0,   "Coreland / Sega", "Brain", GAME_SUPPORTS_SAVE )
46664810
46674811/* System 2 */
4668GAME( 1985, choplift,   0,        sys2row, choplift,  choplift, ROT0,   "Sega",            "Choplifter (8751 315-5151)", GAME_UNEMULATED_PROTECTION | GAME_SUPPORTS_SAVE | GAME_NOT_WORKING )
4812GAME( 1985, choplift,   0,        sys2rowm, choplift,  choplift, ROT0,   "Sega",            "Choplifter (8751 315-5151)", GAME_UNEMULATED_PROTECTION | GAME_SUPPORTS_SAVE | GAME_NOT_WORKING )
46694813GAME( 1985, chopliftu,  choplift, sys2row,  choplift,  bank0c,   ROT0,   "Sega",            "Choplifter (unprotected)", GAME_SUPPORTS_SAVE )
46704814GAME( 1985, chopliftbl, choplift, sys2row,  choplift,  bank0c,   ROT0,   "bootleg",         "Choplifter (bootleg)", GAME_SUPPORTS_SAVE )
4671GAME( 1985, shtngmst,   0,        sys2,     shtngmst,  shtngmst, ROT0,   "Sega",            "Shooting Master (Rev A, 8751 315-5159a)", GAME_SUPPORTS_SAVE | GAME_NOT_WORKING )
4672GAME( 1985, shtngmst1,  shtngmst, sys2,     shtngmst,  shtngmst, ROT0,   "Sega",            "Shooting Master (8751 315-5159)", GAME_SUPPORTS_SAVE | GAME_NOT_WORKING )
4673GAME( 1985, shtngmsta,  shtngmst, sys2,     shtngmst,  shtngmst, ROT0,   "Sega [EVG]",      "Shooting Master (EVG, 8751 315-5159)", GAME_SUPPORTS_SAVE | GAME_NOT_WORKING )
4815GAME( 1985, shtngmst,   0,        sys2m,    shtngmst,  shtngmst, ROT0,   "Sega",            "Shooting Master (Rev A, 8751 315-5159a)", GAME_SUPPORTS_SAVE | GAME_NOT_WORKING )
4816GAME( 1985, shtngmst1,  shtngmst, sys2m,    shtngmst,  shtngmst1,ROT0,   "Sega",            "Shooting Master (8751 315-5159)", GAME_SUPPORTS_SAVE | GAME_NOT_WORKING )
4817GAME( 1985, shtngmsta,  shtngmst, sys2,     shtngmst,  shtngmst1,ROT0,   "Sega [EVG]",      "Shooting Master (EVG, 8751 315-5159)", GAME_SUPPORTS_SAVE | GAME_NOT_WORKING )
46744818GAME( 1986, gardiab,    gardia,   sys2,     gardia,    gardiab,  ROT270, "bootleg",         "Gardia (317-0007?, bootleg)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
46754819GAME( 1986, wboysys2,   wboy,     sys2,     wboysys2,  wboysys2, ROT0,   "Sega (Escape license)", "Wonder Boy (system 2)", GAME_SUPPORTS_SAVE )
46764820GAME( 1987, tokisens,   0,        sys2,     tokisens,  bank0c,   ROT90,  "Sega",            "Toki no Senshi - Chrono Soldier", GAME_SUPPORTS_SAVE )
src/mame/drivers/cultures.c
r4679r4680
435435
436436static DRIVER_INIT( cultures )
437437{
438   paletteram = auto_malloc(0x4000);
438   paletteram = auto_alloc_array(machine, UINT8, 0x4000);
439439}
440440
441441GAME( 1994, cultures, 0, cultures, cultures, cultures, ROT0, "Face", "Jibun wo Migaku Culture School Mahjong Hen", 0 )
src/mame/drivers/powerins.c
r4679r4680
1515    CPU:    MC68000, Z80 (for sound)
1616    Sound:  2x OKI6295 (Sound code supports an additional YM2203, but it's not fitted)
1717
18- Note: To enter test mode press F2 (Test)
19        Use 9 (Service Coin) to change page.
18Note:
19- To enter test mode press F2 (Test)
20  Use 9 (Service Coin) to change page.
21- In powerina there is a hidden test mode screen because it's a bootleg
22  without a sound CPU. Set 18ff08 to 4 during test mode that calls the
23  data written to $10001e "sound code".
2024
2125TODO:
2226- sprites flip y (not used by the game)
r4679r4680
7781static WRITE16_HANDLER( powerins_soundlatch_w )
7882{
7983   if (ACCESSING_BITS_0_7)
80   {
8184      soundlatch_w(space, 0, data & 0xff);
82   }
8385}
86
8487static READ8_HANDLER( powerinb_fake_ym2203_r )
8588{
8689   return 0x01;
8790}
8891
8992
90static ADDRESS_MAP_START( powerins_readmem, ADDRESS_SPACE_PROGRAM, 16 )
91   AM_RANGE(0x000000, 0x0fffff) AM_READ(SMH_ROM            )   // ROM
93static ADDRESS_MAP_START( powerins_map, ADDRESS_SPACE_PROGRAM, 16 )
94   AM_RANGE(0x000000, 0x0fffff) AM_ROM                                             // ROM
9295   AM_RANGE(0x100000, 0x100001) AM_READ_PORT("SYSTEM")
9396   AM_RANGE(0x100002, 0x100003) AM_READ_PORT("P1_P2")
9497   AM_RANGE(0x100008, 0x100009) AM_READ_PORT("DSW1")
9598   AM_RANGE(0x10000a, 0x10000b) AM_READ_PORT("DSW2")
96   AM_RANGE(0x10003e, 0x10003f) AM_DEVREAD8("oki1", okim6295_r, 0x00ff)   // OKI Status (used by powerina)
97   AM_RANGE(0x120000, 0x120fff) AM_READ(SMH_RAM            )   // Palette
98   AM_RANGE(0x130000, 0x130007) AM_READ(SMH_RAM            )   // VRAM 0 Control
99   AM_RANGE(0x140000, 0x143fff) AM_READ(SMH_RAM            )   // VRAM 0
100   AM_RANGE(0x170000, 0x170fff) AM_READ(SMH_RAM            )   // VRAM 1
101   AM_RANGE(0x180000, 0x18ffff) AM_READ(SMH_RAM            )   // RAM + Sprites
99   AM_RANGE(0x100014, 0x100015) AM_WRITE(powerins_flipscreen_w)                        // Flip Screen
100   AM_RANGE(0x100016, 0x100017) AM_WRITENOP                                       // ? always 1
101   AM_RANGE(0x100018, 0x100019) AM_WRITE(powerins_tilebank_w)                           // Tiles Banking (VRAM 0)
102   AM_RANGE(0x10001e, 0x10001f) AM_WRITE(powerins_soundlatch_w)                        // Sound Latch
103   AM_RANGE(0x100030, 0x100031) AM_WRITE(powerins_okibank_w)                           // Sound
104   AM_RANGE(0x120000, 0x120fff) AM_RAM_WRITE(powerins_paletteram16_w) AM_BASE(&paletteram16)   // Palette
105   AM_RANGE(0x130000, 0x130007) AM_RAM AM_BASE(&powerins_vctrl_0)                        // VRAM 0 Control
106   AM_RANGE(0x140000, 0x143fff) AM_RAM_WRITE(powerins_vram_0_w) AM_BASE(&powerins_vram_0)      // VRAM 0
107   AM_RANGE(0x170000, 0x170fff) AM_RAM_WRITE(powerins_vram_1_w) AM_BASE(&powerins_vram_1)      // VRAM 1
108   AM_RANGE(0x171000, 0x171fff) AM_WRITE(powerins_vram_1_w)                           // Mirror of VRAM 1?
109   AM_RANGE(0x180000, 0x18ffff) AM_RAM AM_BASE(&spriteram16)                           // RAM + Sprites
102110ADDRESS_MAP_END
103111
104static ADDRESS_MAP_START( powerins_writemem, ADDRESS_SPACE_PROGRAM, 16 )
105   AM_RANGE(0x000000, 0x0fffff) AM_WRITE(SMH_ROM                        )   // ROM
106   AM_RANGE(0x100014, 0x100015) AM_WRITE(powerins_flipscreen_w               )   // Flip Screen
107   AM_RANGE(0x100016, 0x100017) AM_WRITE(SMH_NOP                        )   // ? always 1
108   AM_RANGE(0x100018, 0x100019) AM_WRITE(powerins_tilebank_w               )   // Tiles Banking (VRAM 0)
109   AM_RANGE(0x10001e, 0x10001f) AM_WRITE(powerins_soundlatch_w               )   // Sound Latch
110   AM_RANGE(0x100030, 0x100031) AM_WRITE(powerins_okibank_w               )   // Sound
111   AM_RANGE(0x10003e, 0x10003f) AM_DEVWRITE8("oki1", okim6295_w, 0x00ff   )   // used by powerina
112   AM_RANGE(0x120000, 0x120fff) AM_WRITE(powerins_paletteram16_w) AM_BASE(&paletteram16   )   // Palette
113   AM_RANGE(0x130000, 0x130007) AM_WRITE(SMH_RAM) AM_BASE(&powerins_vctrl_0   )   // VRAM 0 Control
114   AM_RANGE(0x140000, 0x143fff) AM_WRITE(powerins_vram_0_w) AM_BASE(&powerins_vram_0      )   // VRAM 0
115   AM_RANGE(0x170000, 0x170fff) AM_WRITE(powerins_vram_1_w) AM_BASE(&powerins_vram_1      )   // VRAM 1
116   AM_RANGE(0x171000, 0x171fff) AM_WRITE(powerins_vram_1_w                  )   // Mirror of VRAM 1?
117   AM_RANGE(0x180000, 0x18ffff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16         )   // RAM + Sprites
112/* powerina: same as the original one but without the sound cpu (and inferior sound HW) */
113static ADDRESS_MAP_START( powerina_map, ADDRESS_SPACE_PROGRAM, 16 )
114   AM_RANGE(0x000000, 0x0fffff) AM_ROM                                             // ROM
115   AM_RANGE(0x100000, 0x100001) AM_READ_PORT("SYSTEM")
116   AM_RANGE(0x100002, 0x100003) AM_READ_PORT("P1_P2")
117   AM_RANGE(0x100008, 0x100009) AM_READ_PORT("DSW1")
118   AM_RANGE(0x10000a, 0x10000b) AM_READ_PORT("DSW2")
119   AM_RANGE(0x100014, 0x100015) AM_WRITE(powerins_flipscreen_w)                        // Flip Screen
120   AM_RANGE(0x100016, 0x100017) AM_WRITENOP                                       // ? always 1
121   AM_RANGE(0x100018, 0x100019) AM_WRITE(powerins_tilebank_w)                           // Tiles Banking (VRAM 0)
122   AM_RANGE(0x10001e, 0x10001f) AM_WRITENOP                                       // Sound Latch, NOPed since there is no sound cpu
123   AM_RANGE(0x100030, 0x100031) AM_WRITE(powerins_okibank_w)                           // Sound
124   AM_RANGE(0x10003e, 0x10003f) AM_DEVREADWRITE8("oki1", okim6295_r,okim6295_w, 0x00ff)      // (used by powerina)
125   AM_RANGE(0x120000, 0x120fff) AM_RAM_WRITE(powerins_paletteram16_w) AM_BASE(&paletteram16)   // Palette
126   AM_RANGE(0x130000, 0x130007) AM_RAM AM_BASE(&powerins_vctrl_0)                        // VRAM 0 Control
127   AM_RANGE(0x140000, 0x143fff) AM_RAM_WRITE(powerins_vram_0_w) AM_BASE(&powerins_vram_0)      // VRAM 0
128   AM_RANGE(0x170000, 0x170fff) AM_RAM_WRITE(powerins_vram_1_w) AM_BASE(&powerins_vram_1)      // VRAM 1
129   AM_RANGE(0x171000, 0x171fff) AM_WRITE(powerins_vram_1_w)                           // Mirror of VRAM 1?
130   AM_RANGE(0x180000, 0x18ffff) AM_RAM AM_BASE(&spriteram16)                           // RAM + Sprites
118131ADDRESS_MAP_END
119132
120/* In powerina there is a hidden test mode screen because it's a bootleg
121   without a sound CPU. Set 18ff08 to 4 during test mode that calls the
122   data written to $10001e "sound code". */
123
124static ADDRESS_MAP_START( readmem_snd, ADDRESS_SPACE_PROGRAM, 8 )
125   AM_RANGE(0x0000, 0xbfff) AM_READ(SMH_ROM)
126   AM_RANGE(0xc000, 0xdfff) AM_READ(SMH_RAM)
133static ADDRESS_MAP_START( powerins_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
134   AM_RANGE(0x0000, 0xbfff) AM_ROM
135   AM_RANGE(0xc000, 0xdfff) AM_RAM
127136   AM_RANGE(0xe000, 0xe000) AM_READ(soundlatch_r)
128ADDRESS_MAP_END
129
130static ADDRESS_MAP_START( writemem_snd, ADDRESS_SPACE_PROGRAM, 8 )
131   AM_RANGE(0x0000, 0xbfff) AM_WRITE(SMH_ROM)
132   AM_RANGE(0xc000, 0xdfff) AM_WRITE(SMH_RAM)
133137//  AM_RANGE(0xe000, 0xe000) AM_WRITENOP // ? written only once ?
134138//  AM_RANGE(0xe001, 0xe001) AM_WRITENOP // ?
135139ADDRESS_MAP_END
136140
137static ADDRESS_MAP_START( powerins_io_snd, ADDRESS_SPACE_IO, 8 )
141static ADDRESS_MAP_START( powerins_sound_io_map, ADDRESS_SPACE_IO, 8 )
138142   ADDRESS_MAP_GLOBAL_MASK(0xff)
139143   AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ym2203", ym2203_r, ym2203_w)
140144   AM_RANGE(0x80, 0x80) AM_DEVREADWRITE("oki1", okim6295_r, okim6295_w)
r4679r4680
142146   AM_RANGE(0x90, 0x97) AM_WRITE(NMK112_okibank_w)
143147ADDRESS_MAP_END
144148
145static ADDRESS_MAP_START( powerinb_io_snd, ADDRESS_SPACE_IO, 8 )
149static ADDRESS_MAP_START( powerinb_sound_io_map, ADDRESS_SPACE_IO, 8 )
146150   ADDRESS_MAP_GLOBAL_MASK(0xff)
147   AM_RANGE(0x00, 0x00) AM_READWRITE(powerinb_fake_ym2203_r, SMH_NOP)
151   AM_RANGE(0x00, 0x00) AM_READ(powerinb_fake_ym2203_r) AM_WRITENOP
148152   AM_RANGE(0x01, 0x01) AM_NOP
149153   AM_RANGE(0x80, 0x80) AM_DEVREADWRITE("oki1", okim6295_r, okim6295_w)
150154   AM_RANGE(0x88, 0x88) AM_DEVREADWRITE("oki2", okim6295_r, okim6295_w)
151155   AM_RANGE(0x90, 0x97) AM_WRITE(NMK112_okibank_w)
152156ADDRESS_MAP_END
153157
158
154159/***************************************************************************
155160
156161                                Input Ports
r4679r4680
335340
336341static void irqhandler(const device_config *device, int irq)
337342{
338   cpu_set_input_line(device->machine->cpu[1],0,irq ? ASSERT_LINE : CLEAR_LINE);
343   cputag_set_input_line(device->machine, "soundcpu", 0, irq ? ASSERT_LINE : CLEAR_LINE);
339344}
340345
341346static const ym2203_interface ym2203_config =
r4679r4680
352357
353358   /* basic machine hardware */
354359   MDRV_CPU_ADD("maincpu", M68000, 12000000)   /* 12MHz */
355   MDRV_CPU_PROGRAM_MAP(powerins_readmem,powerins_writemem)
360   MDRV_CPU_PROGRAM_MAP(powerins_map,0)
356361   MDRV_CPU_VBLANK_INT("screen", irq4_line_hold)
357362
358363   MDRV_CPU_ADD("soundcpu", Z80, 6000000) /* 6 MHz */
359   MDRV_CPU_PROGRAM_MAP(readmem_snd,writemem_snd)
360   MDRV_CPU_IO_MAP(powerins_io_snd,0)
364   MDRV_CPU_PROGRAM_MAP(powerins_sound_map,0)
365   MDRV_CPU_IO_MAP(powerins_sound_io_map,0)
361366
362367   MDRV_MACHINE_RESET(powerins)
363368
r4679r4680
396401   /* basic machine hardware */
397402   MDRV_IMPORT_FROM(powerins)
398403
404   MDRV_CPU_MODIFY("maincpu")
405   MDRV_CPU_PROGRAM_MAP(powerina_map,0)
406
399407   MDRV_SCREEN_MODIFY("screen")
400408   MDRV_SCREEN_REFRESH_RATE(60)
401409
r4679r4680
418426   MDRV_SCREEN_REFRESH_RATE(60)
419427
420428   MDRV_CPU_MODIFY("soundcpu") /* 6 MHz */
421   MDRV_CPU_IO_MAP(powerinb_io_snd,0)
429   MDRV_CPU_IO_MAP(powerinb_sound_io_map,0)
422430   MDRV_CPU_PERIODIC_INT(irq0_line_hold, 120)   // YM2203 rate is at 150??
423431
424432   MDRV_SOUND_REMOVE("ym2203")   // Sound code talks to one, but it's not fitted on the board
src/mame/drivers/quizo.c
r4679r4680
244244
245245static DRIVER_INIT(quizo)
246246{
247   videoram=auto_malloc(0x4000*2);
247   videoram=auto_alloc_array(machine, UINT8, 0x4000*2);
248248}
249249
250250GAME( 1985, quizo,  0,       quizo,  quizo,  quizo, ROT0, "Seoul Coin Corp.", "Quiz Olympic (set 1)", 0 )
src/mame/drivers/niyanpai.c
r4679r4680
181181
182182static MACHINE_RESET( niyanpai )
183183{
184   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
184   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
185185   int i;
186186
187187   // initialize TMPZ84C011 PIO
r4679r4680
251251
252252static CUSTOM_INPUT( musobana_outcoin_flag_r )
253253{
254   const address_space *space = cpu_get_address_space(field->port->machine->cpu[0], ADDRESS_SPACE_PROGRAM);
254   const address_space *space = cputag_get_address_space(field->port->machine, "maincpu", ADDRESS_SPACE_PROGRAM);
255255   // tmp68301_parallel_interface[0x05]
256256   //  bit 0   coin counter
257257   //  bit 2   motor on
r4679r4680
268268   musobana_inputport = data;
269269}
270270
271#define TMP68301_REGS \
272   AM_RANGE(0xfffc00, 0xfffc0f) AM_READWRITE(tmp68301_address_decoder_r,tmp68301_address_decoder_w) \
273   AM_RANGE(0xfffc80, 0xfffc9f) AM_READWRITE(tmp68301_interrupt_controller_r,tmp68301_interrupt_controller_w) \
274   AM_RANGE(0xfffd00, 0xfffd0f) AM_READWRITE(tmp68301_parallel_interface_r,tmp68301_parallel_interface_w) \
275   AM_RANGE(0xfffd80, 0xfffdaf) AM_READWRITE(tmp68301_serial_interface_r,tmp68301_serial_interface_w) \
276   AM_RANGE(0xfffe00, 0xfffe4f) AM_READWRITE(tmp68301_timer_r,tmp68301_timer_w)
271277
272static ADDRESS_MAP_START( niyanpai_readmem, ADDRESS_SPACE_PROGRAM, 16 )
273   AM_RANGE(0x000000, 0x03ffff) AM_READ(SMH_ROM)
274   AM_RANGE(0x040000, 0x040fff) AM_READ(SMH_RAM)
275278
276   AM_RANGE(0x0a0000, 0x0a08ff) AM_READ(niyanpai_palette_r)
277   AM_RANGE(0x0a0900, 0x0a11ff) AM_READ(SMH_RAM)            // palette work ram?
279static ADDRESS_MAP_START( niyanpai_map, ADDRESS_SPACE_PROGRAM, 16 )
280   AM_RANGE(0x000000, 0x03ffff) AM_ROM
281   AM_RANGE(0x040000, 0x040fff) AM_RAM AM_BASE(&generic_nvram16) AM_SIZE(&generic_nvram_size)
278282
279   AM_RANGE(0x0bf800, 0x0bffff) AM_READ(SMH_RAM)
283   AM_RANGE(0x0a0000, 0x0a08ff) AM_READWRITE(niyanpai_palette_r,niyanpai_palette_w)
284   AM_RANGE(0x0a0900, 0x0a11ff) AM_RAM   // palette work ram?
280285
281   AM_RANGE(0x240400, 0x240403) AM_READ(niyanpai_blitter_0_r)
282   AM_RANGE(0x240600, 0x240603) AM_READ(niyanpai_blitter_1_r)
283   AM_RANGE(0x240800, 0x240803) AM_READ(niyanpai_blitter_2_r)
286   AM_RANGE(0x0bf800, 0x0bffff) AM_RAM
284287
285   AM_RANGE(0x280000, 0x280001) AM_READ(niyanpai_dipsw_r)
286   AM_RANGE(0x280200, 0x280201) AM_READ_PORT("P1_P2")
287   AM_RANGE(0x280400, 0x280401) AM_READ_PORT("SYSTEM")
288
289   AM_RANGE(0xfffc00, 0xfffc0f) AM_READ(tmp68301_address_decoder_r)
290   AM_RANGE(0xfffc80, 0xfffc9f) AM_READ(tmp68301_interrupt_controller_r)
291   AM_RANGE(0xfffd00, 0xfffd0f) AM_READ(tmp68301_parallel_interface_r)
292   AM_RANGE(0xfffd80, 0xfffdaf) AM_READ(tmp68301_serial_interface_r)
293   AM_RANGE(0xfffe00, 0xfffe4f) AM_READ(tmp68301_timer_r)
294ADDRESS_MAP_END
295
296static ADDRESS_MAP_START( niyanpai_writemem, ADDRESS_SPACE_PROGRAM, 16 )
297   AM_RANGE(0x000000, 0x03ffff) AM_WRITE(SMH_ROM)
298   AM_RANGE(0x040000, 0x040fff) AM_WRITE(SMH_RAM) AM_BASE(&generic_nvram16) AM_SIZE(&generic_nvram_size)
299
300   AM_RANGE(0x0a0000, 0x0a08ff) AM_WRITE(niyanpai_palette_w)
301   AM_RANGE(0x0a0900, 0x0a11ff) AM_WRITE(SMH_RAM)         // palette work ram?
302
303   AM_RANGE(0x0bf800, 0x0bffff) AM_WRITE(SMH_RAM)
304
305288   AM_RANGE(0x200000, 0x200001) AM_WRITE(niyanpai_sound_w)
306289
307290   AM_RANGE(0x200200, 0x200201) AM_WRITENOP         // unknown
308291   AM_RANGE(0x240000, 0x240009) AM_WRITENOP         // unknown
309292   AM_RANGE(0x240200, 0x2403ff) AM_WRITENOP         // unknown
310293
294   AM_RANGE(0x240400, 0x240403) AM_READ(niyanpai_blitter_0_r)
311295   AM_RANGE(0x240400, 0x24041f) AM_WRITE(niyanpai_blitter_0_w)
312296   AM_RANGE(0x240420, 0x24043f) AM_WRITE(niyanpai_clut_0_w)
313
297   AM_RANGE(0x240600, 0x240603) AM_READ(niyanpai_blitter_1_r)
314298   AM_RANGE(0x240600, 0x24061f) AM_WRITE(niyanpai_blitter_1_w)
315299   AM_RANGE(0x240620, 0x24063f) AM_WRITE(niyanpai_clut_1_w)
316
300   AM_RANGE(0x240800, 0x240803) AM_READ(niyanpai_blitter_2_r)
317301   AM_RANGE(0x240800, 0x24081f) AM_WRITE(niyanpai_blitter_2_w)
318302   AM_RANGE(0x240820, 0x24083f) AM_WRITE(niyanpai_clut_2_w)
303   AM_RANGE(0x280000, 0x280001) AM_READ(niyanpai_dipsw_r)
319304
305   AM_RANGE(0x280200, 0x280201) AM_READ_PORT("P1_P2")
306   AM_RANGE(0x280400, 0x280401) AM_READ_PORT("SYSTEM")
320307   AM_RANGE(0x240a00, 0x240a01) AM_WRITE(niyanpai_clutsel_0_w)
321308   AM_RANGE(0x240c00, 0x240c01) AM_WRITE(niyanpai_clutsel_1_w)
322309   AM_RANGE(0x240e00, 0x240e01) AM_WRITE(niyanpai_clutsel_2_w)
323310
324   AM_RANGE(0xfffc00, 0xfffc0f) AM_WRITE(tmp68301_address_decoder_w)
325   AM_RANGE(0xfffc80, 0xfffc9f) AM_WRITE(tmp68301_interrupt_controller_w)
326   AM_RANGE(0xfffd00, 0xfffd0f) AM_WRITE(tmp68301_parallel_interface_w)
327   AM_RANGE(0xfffd80, 0xfffdaf) AM_WRITE(tmp68301_serial_interface_w)
328   AM_RANGE(0xfffe00, 0xfffe4f) AM_WRITE(tmp68301_timer_w)
311   TMP68301_REGS
329312ADDRESS_MAP_END
330313
331static ADDRESS_MAP_START( musobana_readmem, ADDRESS_SPACE_PROGRAM, 16 )
332   AM_RANGE(0x000000, 0x03ffff) AM_READ(SMH_ROM)
333   AM_RANGE(0x040000, 0x040fff) AM_READ(SMH_RAM)
314static ADDRESS_MAP_START( musobana_map, ADDRESS_SPACE_PROGRAM, 16 )
315   AM_RANGE(0x000000, 0x03ffff) AM_ROM
316   AM_RANGE(0x040000, 0x040fff) AM_RAM
334317
335   AM_RANGE(0x0a0000, 0x0a08ff) AM_READ(niyanpai_palette_r)
336   AM_RANGE(0x0a0900, 0x0a11ff) AM_READ(SMH_RAM)            // palette work ram?
318   AM_RANGE(0x0a0000, 0x0a08ff) AM_READWRITE(niyanpai_palette_r,niyanpai_palette_w)
319   AM_RANGE(0x0a0900, 0x0a11ff) AM_RAM            // palette work ram?
337320
338   AM_RANGE(0x0a8000, 0x0a87ff) AM_READ(SMH_RAM)
339   AM_RANGE(0x0bf800, 0x0bffff) AM_READ(SMH_RAM)
321   AM_RANGE(0x0a8000, 0x0a87ff) AM_RAM AM_BASE(&generic_nvram16) AM_SIZE(&generic_nvram_size)
322   AM_RANGE(0x0bf800, 0x0bffff) AM_RAM
340323
341   AM_RANGE(0x240400, 0x240403) AM_READ(niyanpai_blitter_0_r)
342   AM_RANGE(0x240600, 0x240603) AM_READ(niyanpai_blitter_1_r)
343   AM_RANGE(0x240800, 0x240803) AM_READ(niyanpai_blitter_2_r)
344
345   AM_RANGE(0x280000, 0x280001) AM_READ(niyanpai_dipsw_r)
346   AM_RANGE(0x280200, 0x280201) AM_READ(musobana_inputport_0_r)
347   AM_RANGE(0x280400, 0x280401) AM_READ_PORT("SYSTEM")
348
349   AM_RANGE(0xfffc00, 0xfffc0f) AM_READ(tmp68301_address_decoder_r)
350   AM_RANGE(0xfffc80, 0xfffc9f) AM_READ(tmp68301_interrupt_controller_r)
351   AM_RANGE(0xfffd00, 0xfffd0f) AM_READ(tmp68301_parallel_interface_r)
352   AM_RANGE(0xfffd80, 0xfffdaf) AM_READ(tmp68301_serial_interface_r)
353   AM_RANGE(0xfffe00, 0xfffe4f) AM_READ(tmp68301_timer_r)
354ADDRESS_MAP_END
355
356static ADDRESS_MAP_START( musobana_writemem, ADDRESS_SPACE_PROGRAM, 16 )
357   AM_RANGE(0x000000, 0x03ffff) AM_WRITE(SMH_ROM)
358   AM_RANGE(0x040000, 0x040fff) AM_WRITE(SMH_RAM)
359
360   AM_RANGE(0x0a0000, 0x0a08ff) AM_WRITE(niyanpai_palette_w)
361   AM_RANGE(0x0a0900, 0x0a11ff) AM_WRITE(SMH_RAM)         // palette work ram?
362
363   AM_RANGE(0x0a8000, 0x0a87ff) AM_WRITE(SMH_RAM) AM_BASE(&generic_nvram16) AM_SIZE(&generic_nvram_size)
364   AM_RANGE(0x0bf800, 0x0bffff) AM_WRITE(SMH_RAM)
365
366324   AM_RANGE(0x200000, 0x200001) AM_WRITE(niyanpai_sound_w)
367325
368326   AM_RANGE(0x200200, 0x200201) AM_WRITE(musobana_inputport_w)   // inputport select
369327   AM_RANGE(0x240000, 0x240009) AM_WRITENOP         // unknown
370328   AM_RANGE(0x240200, 0x2403ff) AM_WRITENOP         // unknown
371329
330   AM_RANGE(0x240400, 0x240403) AM_READ(niyanpai_blitter_0_r)
372331   AM_RANGE(0x240400, 0x24041f) AM_WRITE(niyanpai_blitter_0_w)
373332   AM_RANGE(0x240420, 0x24043f) AM_WRITE(niyanpai_clut_0_w)
374333
334   AM_RANGE(0x240600, 0x240603) AM_READ(niyanpai_blitter_1_r)
375335   AM_RANGE(0x240600, 0x24061f) AM_WRITE(niyanpai_blitter_1_w)
376336   AM_RANGE(0x240620, 0x24063f) AM_WRITE(niyanpai_clut_1_w)
377337
338   AM_RANGE(0x240800, 0x240803) AM_READ(niyanpai_blitter_2_r)
378339   AM_RANGE(0x240800, 0x24081f) AM_WRITE(niyanpai_blitter_2_w)
379340   AM_RANGE(0x240820, 0x24083f) AM_WRITE(niyanpai_clut_2_w)
380
381341   AM_RANGE(0x240a00, 0x240a01) AM_WRITE(niyanpai_clutsel_0_w)
382342   AM_RANGE(0x240c00, 0x240c01) AM_WRITE(niyanpai_clutsel_1_w)
383343   AM_RANGE(0x240e00, 0x240e01) AM_WRITE(niyanpai_clutsel_2_w)
384344
385   AM_RANGE(0xfffc00, 0xfffc0f) AM_WRITE(tmp68301_address_decoder_w)
386   AM_RANGE(0xfffc80, 0xfffc9f) AM_WRITE(tmp68301_interrupt_controller_w)
387   AM_RANGE(0xfffd00, 0xfffd0f) AM_WRITE(tmp68301_parallel_interface_w)
388   AM_RANGE(0xfffd80, 0xfffdaf) AM_WRITE(tmp68301_serial_interface_w)
389   AM_RANGE(0xfffe00, 0xfffe4f) AM_WRITE(tmp68301_timer_w)
390ADDRESS_MAP_END
391
392static ADDRESS_MAP_START( mhhonban_readmem, ADDRESS_SPACE_PROGRAM, 16 )
393   AM_RANGE(0x000000, 0x03ffff) AM_READ(SMH_ROM)
394   AM_RANGE(0x040000, 0x040fff) AM_READ(SMH_RAM)
395
396   AM_RANGE(0x060000, 0x0608ff) AM_READ(niyanpai_palette_r)
397   AM_RANGE(0x060900, 0x0611ff) AM_READ(SMH_RAM)            // palette work ram?
398   AM_RANGE(0x07f800, 0x07ffff) AM_READ(SMH_RAM)
399
400   AM_RANGE(0x0a8000, 0x0a87ff) AM_READ(SMH_RAM)
401   AM_RANGE(0x0bf000, 0x0bffff) AM_READ(SMH_RAM)
402
403   AM_RANGE(0x240400, 0x240403) AM_READ(niyanpai_blitter_0_r)
404   AM_RANGE(0x240600, 0x240603) AM_READ(niyanpai_blitter_1_r)
405   AM_RANGE(0x240800, 0x240803) AM_READ(niyanpai_blitter_2_r)
406
407345   AM_RANGE(0x280000, 0x280001) AM_READ(niyanpai_dipsw_r)
408346   AM_RANGE(0x280200, 0x280201) AM_READ(musobana_inputport_0_r)
409347   AM_RANGE(0x280400, 0x280401) AM_READ_PORT("SYSTEM")
410348
411   AM_RANGE(0xfffc00, 0xfffc0f) AM_READ(tmp68301_address_decoder_r)
412   AM_RANGE(0xfffc80, 0xfffc9f) AM_READ(tmp68301_interrupt_controller_r)
413   AM_RANGE(0xfffd00, 0xfffd0f) AM_READ(tmp68301_parallel_interface_r)
414   AM_RANGE(0xfffd80, 0xfffdaf) AM_READ(tmp68301_serial_interface_r)
415   AM_RANGE(0xfffe00, 0xfffe4f) AM_READ(tmp68301_timer_r)
349   TMP68301_REGS
416350ADDRESS_MAP_END
417351
418static ADDRESS_MAP_START( mhhonban_writemem, ADDRESS_SPACE_PROGRAM, 16 )
419   AM_RANGE(0x000000, 0x03ffff) AM_WRITE(SMH_ROM)
420   AM_RANGE(0x040000, 0x040fff) AM_WRITE(SMH_RAM)
352static ADDRESS_MAP_START( mhhonban_map, ADDRESS_SPACE_PROGRAM, 16 )
353   AM_RANGE(0x000000, 0x03ffff) AM_ROM
354   AM_RANGE(0x040000, 0x040fff) AM_RAM
421355
422   AM_RANGE(0x060000, 0x0608ff) AM_WRITE(niyanpai_palette_w)
423   AM_RANGE(0x060900, 0x0611ff) AM_WRITE(SMH_RAM)         // palette work ram?
424   AM_RANGE(0x07f800, 0x07ffff) AM_WRITE(SMH_RAM)
356   AM_RANGE(0x060000, 0x0608ff) AM_READWRITE(niyanpai_palette_r,niyanpai_palette_w)
357   AM_RANGE(0x060900, 0x0611ff) AM_RAM            // palette work ram?
358   AM_RANGE(0x07f800, 0x07ffff) AM_RAM
425359
426   AM_RANGE(0x0a8000, 0x0a87ff) AM_WRITE(SMH_RAM) AM_BASE(&generic_nvram16) AM_SIZE(&generic_nvram_size)
427   AM_RANGE(0x0bf000, 0x0bffff) AM_WRITE(SMH_RAM)
360   AM_RANGE(0x0a8000, 0x0a87ff) AM_RAM AM_BASE(&generic_nvram16) AM_SIZE(&generic_nvram_size)
361   AM_RANGE(0x0bf000, 0x0bffff) AM_RAM
428362
429363   AM_RANGE(0x200000, 0x200001) AM_WRITE(niyanpai_sound_w)
430364
r4679r4680
432366   AM_RANGE(0x240000, 0x240009) AM_WRITENOP         // unknown
433367   AM_RANGE(0x240200, 0x2403ff) AM_WRITENOP         // unknown
434368
369   AM_RANGE(0x240400, 0x240403) AM_READ(niyanpai_blitter_0_r)
435370   AM_RANGE(0x240400, 0x24041f) AM_WRITE(niyanpai_blitter_0_w)
436371   AM_RANGE(0x240420, 0x24043f) AM_WRITE(niyanpai_clut_0_w)
437372
373   AM_RANGE(0x240600, 0x240603) AM_READ(niyanpai_blitter_1_r)
438374   AM_RANGE(0x240600, 0x24061f) AM_WRITE(niyanpai_blitter_1_w)
439375   AM_RANGE(0x240620, 0x24063f) AM_WRITE(niyanpai_clut_1_w)
440376
377   AM_RANGE(0x240800, 0x240803) AM_READ(niyanpai_blitter_2_r)
441378   AM_RANGE(0x240800, 0x24081f) AM_WRITE(niyanpai_blitter_2_w)
442379   AM_RANGE(0x240820, 0x24083f) AM_WRITE(niyanpai_clut_2_w)
443380
r4679r4680
445382   AM_RANGE(0x240c00, 0x240c01) AM_WRITE(niyanpai_clutsel_1_w)
446383   AM_RANGE(0x240e00, 0x240e01) AM_WRITE(niyanpai_clutsel_2_w)
447384
448   AM_RANGE(0xfffc00, 0xfffc0f) AM_WRITE(tmp68301_address_decoder_w)
449   AM_RANGE(0xfffc80, 0xfffc9f) AM_WRITE(tmp68301_interrupt_controller_w)
450   AM_RANGE(0xfffd00, 0xfffd0f) AM_WRITE(tmp68301_parallel_interface_w)
451   AM_RANGE(0xfffd80, 0xfffdaf) AM_WRITE(tmp68301_serial_interface_w)
452   AM_RANGE(0xfffe00, 0xfffe4f) AM_WRITE(tmp68301_timer_w)
385   AM_RANGE(0x280000, 0x280001) AM_READ(niyanpai_dipsw_r)
386   AM_RANGE(0x280200, 0x280201) AM_READ(musobana_inputport_0_r)
387   AM_RANGE(0x280400, 0x280401) AM_READ_PORT("SYSTEM")
388
389   TMP68301_REGS
453390ADDRESS_MAP_END
454391
455392
456static ADDRESS_MAP_START( sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
457   AM_RANGE(0x0000, 0x77ff) AM_READ(SMH_ROM)
458   AM_RANGE(0x7800, 0x7fff) AM_READ(SMH_RAM)
459   AM_RANGE(0x8000, 0xffff) AM_READ(SMH_BANK1)
393static ADDRESS_MAP_START( niyanpai_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
394   AM_RANGE(0x0000, 0x77ff) AM_ROM
395   AM_RANGE(0x7800, 0x7fff) AM_RAM
396   AM_RANGE(0x8000, 0xffff) AM_ROMBANK(1)
460397ADDRESS_MAP_END
461398
462static ADDRESS_MAP_START( sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
463   AM_RANGE(0x0000, 0x77ff) AM_WRITE(SMH_ROM)
464   AM_RANGE(0x7800, 0x7fff) AM_WRITE(SMH_RAM)
465ADDRESS_MAP_END
466
467static ADDRESS_MAP_START( sound_io_map, ADDRESS_SPACE_IO, 8 )
399static ADDRESS_MAP_START( niyanpai_sound_io_map, ADDRESS_SPACE_IO, 8 )
468400   ADDRESS_MAP_GLOBAL_MASK(0xff)
469401   AM_RANGE(0x10, 0x13) AM_DEVREADWRITE("ctc", z80ctc_r, z80ctc_w)
470402   AM_RANGE(0x50, 0x50) AM_READWRITE(tmpz84c011_0_pa_r, tmpz84c011_0_pa_w)
r4679r4680
848780
849781   /* basic machine hardware */
850782   MDRV_CPU_ADD("maincpu", M68000, 12288000/2)   /* TMP68301, 6.144 MHz */
851   MDRV_CPU_PROGRAM_MAP(niyanpai_readmem,niyanpai_writemem)
783   MDRV_CPU_PROGRAM_MAP(niyanpai_map,0)
852784   MDRV_CPU_VBLANK_INT("screen", niyanpai_interrupt)
853785
854786   MDRV_CPU_ADD("audiocpu", Z80, 8000000/1)               /* TMPZ84C011, 8.00 MHz */
855787   MDRV_CPU_CONFIG(daisy_chain_sound)
856   MDRV_CPU_PROGRAM_MAP(sound_readmem, sound_writemem)
857   MDRV_CPU_IO_MAP(sound_io_map,0)
788   MDRV_CPU_PROGRAM_MAP(niyanpai_sound_map, 0)
789   MDRV_CPU_IO_MAP(niyanpai_sound_io_map,0)
858790
859791   MDRV_Z80CTC_ADD("ctc", 8000000/1 /* same as "audiocpu" */, ctc_intf)
860792
r4679r4680
892824   /* basic machine hardware */
893825   MDRV_IMPORT_FROM(niyanpai)
894826   MDRV_CPU_MODIFY("maincpu")
895   MDRV_CPU_PROGRAM_MAP(musobana_readmem, musobana_writemem)
827   MDRV_CPU_PROGRAM_MAP(musobana_map, 0)
896828MACHINE_DRIVER_END
897829
898830static MACHINE_DRIVER_START( mhhonban )
r4679r4680
900832   /* basic machine hardware */
901833   MDRV_IMPORT_FROM(niyanpai)
902834   MDRV_CPU_MODIFY("maincpu")
903   MDRV_CPU_PROGRAM_MAP(mhhonban_readmem, mhhonban_writemem)
835   MDRV_CPU_PROGRAM_MAP(mhhonban_map, 0)
904836MACHINE_DRIVER_END
905837
906838
r4679r4680
985917GAME( 1995, musobana, 0, musobana, musobana, niyanpai, ROT0, "Nichibutsu/Yubis", "Musoubana (Japan)", 0 )
986918GAME( 1994, 4psimasy, 0, musobana, 4psimasy, niyanpai, ROT0, "SPHINX/AV JAPAN", "Mahjong 4P Simasyo (Japan)", 0 )
987919GAME( 199?, mhhonban, 0, mhhonban, mhhonban, niyanpai, ROT0, "Nichibutsu?", "Mahjong Housoukyoku Honbanchuu (Japan)", 0 )
988
src/mame/drivers/exedexes.c
r4679r4680
4242
4343
4444
45static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 )
46   AM_RANGE(0x0000, 0xbfff) AM_READ(SMH_ROM)
45static ADDRESS_MAP_START( exedexes_map, ADDRESS_SPACE_PROGRAM, 8 )
46   AM_RANGE(0x0000, 0xbfff) AM_ROM
4747   AM_RANGE(0xc000, 0xc000) AM_READ_PORT("SYSTEM")
4848   AM_RANGE(0xc001, 0xc001) AM_READ_PORT("P1")
4949   AM_RANGE(0xc002, 0xc002) AM_READ_PORT("P2")
5050   AM_RANGE(0xc003, 0xc003) AM_READ_PORT("DSW0")
5151   AM_RANGE(0xc004, 0xc004) AM_READ_PORT("DSW1")
52   AM_RANGE(0xd000, 0xd7ff) AM_READ(SMH_RAM)
53   AM_RANGE(0xe000, 0xefff) AM_READ(SMH_RAM) /* Work RAM */
54   AM_RANGE(0xf000, 0xffff) AM_READ(SMH_RAM) /* Sprite RAM */
55ADDRESS_MAP_END
56
57static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 )
58   AM_RANGE(0x0000, 0xbfff) AM_WRITE(SMH_ROM)
5952   AM_RANGE(0xc800, 0xc800) AM_WRITE(soundlatch_w)
60   AM_RANGE(0xc804, 0xc804) AM_WRITE(exedexes_c804_w)   /* coin counters + text layer enable */
61   AM_RANGE(0xc806, 0xc806) AM_WRITENOP /* Watchdog ?? */
62   AM_RANGE(0xd000, 0xd3ff) AM_WRITE(exedexes_videoram_w) AM_BASE(&videoram)
63   AM_RANGE(0xd400, 0xd7ff) AM_WRITE(exedexes_colorram_w) AM_BASE(&colorram)
53   AM_RANGE(0xc804, 0xc804) AM_WRITE(exedexes_c804_w)                        /* coin counters + text layer enable */
54   AM_RANGE(0xc806, 0xc806) AM_WRITENOP                                  /* Watchdog ?? */
55   AM_RANGE(0xd000, 0xd3ff) AM_RAM_WRITE(exedexes_videoram_w) AM_BASE(&videoram)   /* Video RAM */
56   AM_RANGE(0xd400, 0xd7ff) AM_RAM_WRITE(exedexes_colorram_w) AM_BASE(&colorram)   /* Color RAM */
6457   AM_RANGE(0xd800, 0xd801) AM_WRITE(SMH_RAM) AM_BASE(&exedexes_nbg_yscroll)
6558   AM_RANGE(0xd802, 0xd803) AM_WRITE(SMH_RAM) AM_BASE(&exedexes_nbg_xscroll)
6659   AM_RANGE(0xd804, 0xd805) AM_WRITE(SMH_RAM) AM_BASE(&exedexes_bg_scroll)
67   AM_RANGE(0xd807, 0xd807) AM_WRITE(exedexes_gfxctrl_w)   /* layer enables */
68   AM_RANGE(0xe000, 0xefff) AM_WRITE(SMH_RAM)
69   AM_RANGE(0xf000, 0xffff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
60   AM_RANGE(0xd807, 0xd807) AM_WRITE(exedexes_gfxctrl_w)                     /* layer enables */
61   AM_RANGE(0xe000, 0xefff) AM_RAM                                       /* Work RAM */
62   AM_RANGE(0xf000, 0xffff) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size)   /* Sprite RAM */
7063ADDRESS_MAP_END
7164
7265
7366
74static ADDRESS_MAP_START( sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
75   AM_RANGE(0x0000, 0x3fff) AM_READ(SMH_ROM)
76   AM_RANGE(0x4000, 0x47ff) AM_READ(SMH_RAM)
67static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 )
68   AM_RANGE(0x0000, 0x3fff) AM_ROM
69   AM_RANGE(0x4000, 0x47ff) AM_RAM
7770   AM_RANGE(0x6000, 0x6000) AM_READ(soundlatch_r)
78ADDRESS_MAP_END
79
80static ADDRESS_MAP_START( sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
81   AM_RANGE(0x0000, 0x3fff) AM_WRITE(SMH_ROM)
82   AM_RANGE(0x4000, 0x47ff) AM_WRITE(SMH_RAM)
8371   AM_RANGE(0x8000, 0x8001) AM_DEVWRITE("ay", ay8910_address_data_w)
8472   AM_RANGE(0x8002, 0x8002) AM_DEVWRITE("sn1", sn76496_w)
8573   AM_RANGE(0x8003, 0x8003) AM_DEVWRITE("sn2", sn76496_w)
r4679r4680
224212
225213   /* basic machine hardware */
226214   MDRV_CPU_ADD("maincpu", Z80, 4000000)   /* 4 MHz (?) */
227   MDRV_CPU_PROGRAM_MAP(readmem,writemem)
215   MDRV_CPU_PROGRAM_MAP(exedexes_map,0)
228216   MDRV_CPU_VBLANK_INT_HACK(exedexes_interrupt,2)
229217
230218   MDRV_CPU_ADD("audiocpu", Z80, 3000000)   /* 3 MHz ??? */
231   MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem)
219   MDRV_CPU_PROGRAM_MAP(sound_map,0)
232220   MDRV_CPU_VBLANK_INT_HACK(irq0_line_hold,4)
233221
234222   /* video hardware */
src/mame/drivers/jedi.c
r4679r4680
124124
125125static TIMER_CALLBACK( generate_interrupt )
126126{
127   jedi_state *state = machine->driver_data;
127   jedi_state *state = (jedi_state *)machine->driver_data;
128128   int scanline = param;
129129
130130   /* IRQ is set by /32V */
131   cpu_set_input_line(machine->cpu[0], M6502_IRQ_LINE, (scanline & 32) ? CLEAR_LINE : ASSERT_LINE);
132   cpu_set_input_line(machine->cpu[1], M6502_IRQ_LINE, (scanline & 32) ? CLEAR_LINE : ASSERT_LINE);
131   cputag_set_input_line(machine, "maincpu", M6502_IRQ_LINE, (scanline & 32) ? CLEAR_LINE : ASSERT_LINE);
132   cputag_set_input_line(machine, "audiocpu", M6502_IRQ_LINE, (scanline & 32) ? CLEAR_LINE : ASSERT_LINE);
133133
134134   /* set up for the next */
135135   scanline += 32;
r4679r4680
141141
142142static WRITE8_HANDLER( main_irq_ack_w )
143143{
144   cpu_set_input_line(space->machine->cpu[0], M6502_IRQ_LINE, CLEAR_LINE);
144   cputag_set_input_line(space->machine, "maincpu", M6502_IRQ_LINE, CLEAR_LINE);
145145}
146146
147147
r4679r4680
154154
155155static MACHINE_START( jedi )
156156{
157   jedi_state *state = machine->driver_data;
157   jedi_state *state = (jedi_state *)machine->driver_data;
158158
159159   /* set a timer to run the interrupts */
160160   state->interrupt_timer = timer_alloc(machine, generate_interrupt, NULL);
r4679r4680
177177
178178static MACHINE_RESET( jedi )
179179{
180   jedi_state *state = machine->driver_data;
180   jedi_state *state = (jedi_state *)machine->driver_data;
181181
182182   /* init globals */
183183   state->a2d_select = 0;
r4679r4680
209209
210210static READ8_HANDLER( a2d_data_r )
211211{
212   jedi_state *state = space->machine->driver_data;
212   jedi_state *state = (jedi_state *)space->machine->driver_data;
213213   UINT8 ret = 0;
214214
215215   switch (state->a2d_select)
r4679r4680
224224
225225static WRITE8_HANDLER( a2d_select_w )
226226{
227   jedi_state *state = space->machine->driver_data;
227   jedi_state *state = (jedi_state *)space->machine->driver_data;
228228
229229   state->a2d_select = offset;
230230}
r4679r4680
245245
246246static WRITE8_HANDLER( nvram_data_w )
247247{
248   jedi_state *state = space->machine->driver_data;
248   jedi_state *state = (jedi_state *)space->machine->driver_data;
249249
250250   if (state->nvram_enabled)
251251      generic_nvram[offset] = data;
r4679r4680
254254
255255static WRITE8_HANDLER( nvram_enable_w )
256256{
257   jedi_state *state = space->machine->driver_data;
257   jedi_state *state = (jedi_state *)space->machine->driver_data;
258258
259259   state->nvram_enabled = ~offset & 1;
260260}
src/mame/drivers/bfm_sc2.c
r4679r4680
266266   adder2_sc2data       = data;
267267
268268   adder2_acia_triggered = 1;
269   cpu_set_input_line(machine->cpu[1], M6809_IRQ_LINE, HOLD_LINE );
269   cputag_set_input_line(machine, "adder2", M6809_IRQ_LINE, HOLD_LINE );
270270
271271   LOG_SERIAL(("sadder  %02X  (%c)\n",data, data ));
272272}
r4679r4680
614614         }
615615       }
616616    }
617   if ( data & 0x1F ) cpu_set_input_line(space->machine->cpu[0], M6809_FIRQ_LINE, ASSERT_LINE );
617   if ( data & 0x1F ) cputag_set_input_line(space->machine, "maincpu", M6809_FIRQ_LINE, ASSERT_LINE );
618618}
619619
620620///////////////////////////////////////////////////////////////////////////
r4679r4680
14341434
14351435   rom = memory_region(machine, rom_region);
14361436
1437   tmp = malloc_or_die(0x10000);
1437   tmp = alloc_array_or_die(UINT8, 0x10000);
14381438   {
14391439      int i;
14401440      long address;
r4679r4680
15561556   AM_RANGE(0x3FFF, 0x3FFF) AM_READ(coin_input_r)
15571557   AM_RANGE(0x4000, 0x5fff) AM_ROM                     // 8k  fixed ROM
15581558   AM_RANGE(0x4000, 0xFFFF) AM_WRITE(unknown_w)         // contains unknown I/O registers
1559   AM_RANGE(0x6000, 0x7FFF) AM_READ(SMH_BANK1)         // 8k  paged ROM (4 pages)
1559   AM_RANGE(0x6000, 0x7FFF) AM_READ(SMH_BANK(1))         // 8k  paged ROM (4 pages)
15601560   AM_RANGE(0x8000, 0xFFFF) AM_ROM                     // 32k ROM
15611561
15621562ADDRESS_MAP_END
r4679r4680
27902790
27912791   AM_RANGE(0x3FFF, 0x3FFF) AM_READ( coin_input_r)
27922792   AM_RANGE(0x4000, 0x5FFF) AM_ROM                           /* 8k  fixed ROM */
2793   AM_RANGE(0x6000, 0x7FFF) AM_READ(SMH_BANK1)                  /* 8k  paged ROM (4 pages) */
2793   AM_RANGE(0x6000, 0x7FFF) AM_READ(SMH_BANK(1))                  /* 8k  paged ROM (4 pages) */
27942794   AM_RANGE(0x8000, 0xFFFF) AM_ROM                           /* 32k ROM */
27952795ADDRESS_MAP_END
27962796
r4679r4680
28392839   AM_RANGE(0x3FFF, 0x3FFF) AM_READ( coin_input_r)
28402840   AM_RANGE(0x4000, 0x5FFF) AM_ROM
28412841//  AM_RANGE(0x4000, 0xFFFF) AM_WRITE(unknown_w)
2842   AM_RANGE(0x6000, 0x7FFF) AM_READ(SMH_BANK1)
2842   AM_RANGE(0x6000, 0x7FFF) AM_READ(SMH_BANK(1))
28432843   AM_RANGE(0x8000, 0xFFFF) AM_ROM
28442844ADDRESS_MAP_END
28452845
r4679r4680
28892889   AM_RANGE(0x3FFF, 0x3FFF) AM_READ( coin_input_r)
28902890   AM_RANGE(0x4000, 0x5FFF) AM_ROM
28912891//  AM_RANGE(0x4000, 0xFFFF) AM_WRITE(unknown_w)
2892   AM_RANGE(0x6000, 0x7FFF) AM_READ(SMH_BANK1)
2892   AM_RANGE(0x6000, 0x7FFF) AM_READ(SMH_BANK(1))
28932893   AM_RANGE(0x8000, 0xFFFF) AM_ROM
28942894ADDRESS_MAP_END
28952895
src/mame/drivers/suprnova.c
r4679r4680
451451
452452static TIMER_CALLBACK( interrupt_callback )
453453{
454   cpu_set_input_line(machine->cpu[0],param,HOLD_LINE);
454   cputag_set_input_line(machine, "maincpu", param, HOLD_LINE);
455455}
456456
457457static MACHINE_RESET(skns)
458458{
459459   timer_pulse(machine, ATTOTIME_IN_MSEC(2), NULL, 15, interrupt_callback);
460460   timer_pulse(machine, ATTOTIME_IN_MSEC(8), NULL, 11, interrupt_callback);
461   timer_pulse(machine, cpu_clocks_to_attotime(machine->cpu[0], 1824), NULL, 9, interrupt_callback);
461   timer_pulse(machine, cputag_clocks_to_attotime(machine, "maincpu", 1824), NULL, 9, interrupt_callback);
462462
463463   memory_set_bankptr(machine, 1,memory_region(machine, "user1"));
464464}
r4679r4680
490490
491491static CUSTOM_INPUT( paddle_r )
492492{
493   const char *tag = param;
493   const char *tag = (const char *)param;
494494   return input_port_read(field->port->machine, tag);
495495}
496496
r4679r4680
670670      if(ACCESSING_BITS_8_15)
671671      { /* Interrupt Clear, do we need these? */
672672/*          if(data&0x01)
673                cpu_set_input_line(space->machine->cpu[0],1,CLEAR_LINE);
673                cputag_set_input_line(space->machine, "maincpu",1,CLEAR_LINE);
674674            if(data&0x02)
675                cpu_set_input_line(space->machine->cpu[0],3,CLEAR_LINE);
675                cputag_set_input_line(space->machine, "maincpu",3,CLEAR_LINE);
676676            if(data&0x04)
677                cpu_set_input_line(space->machine->cpu[0],5,CLEAR_LINE);
677                cputag_set_input_line(space->machine, "maincpu",5,CLEAR_LINE);
678678            if(data&0x08)
679                cpu_set_input_line(space->machine->cpu[0],7,CLEAR_LINE);
679                cputag_set_input_line(space->machine, "maincpu",7,CLEAR_LINE);
680680            if(data&0x10)
681                cpu_set_input_line(space->machine->cpu[0],9,CLEAR_LINE);
681                cputag_set_input_line(space->machine, "maincpu",9,CLEAR_LINE);
682682            if(data&0x20)
683                cpu_set_input_line(space->machine->cpu[0],0xb,CLEAR_LINE);
683                cputag_set_input_line(space->machine, "maincpu",0xb,CLEAR_LINE);
684684            if(data&0x40)
685                cpu_set_input_line(space->machine->cpu[0],0xd,CLEAR_LINE);
685                cputag_set_input_line(space->machine, "maincpu",0xd,CLEAR_LINE);
686686            if(data&0x80)
687                cpu_set_input_line(space->machine->cpu[0],0xf,CLEAR_LINE);*/
687                cputag_set_input_line(space->machine, "maincpu",0xf,CLEAR_LINE);*/
688688
689689         /* idle skip for vblokbrk/sarukani, i can't find a better place to put it :-( but i think it works ok unless its making the game too fast */
690690         if (cpu_get_pc(space->cpu)==0x04013B42)
r4679r4680
992992static void init_skns(running_machine *machine)
993993{
994994   // init DRC to fastest options
995   sh2drc_set_options(machine->cpu[0], SH2DRC_FASTEST_OPTIONS);
995   sh2drc_set_options(cputag_get_cpu(machine, "maincpu"), SH2DRC_FASTEST_OPTIONS);
996996
997   sh2drc_add_pcflush(machine->cpu[0], 0x6f8);
998   memory_install_read32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x6000028, 0x600002b, 0, 0, bios_skip_r );
997   sh2drc_add_pcflush(cputag_get_cpu(machine, "maincpu"), 0x6f8);
998   memory_install_read32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x6000028, 0x600002b, 0, 0, bios_skip_r );
999999}
10001000
10011001static void set_drc_pcflush(running_machine *machine, UINT32 addr)
10021002{
1003   sh2drc_add_pcflush(machine->cpu[0], addr);
1003   sh2drc_add_pcflush(cputag_get_cpu(machine, "maincpu"), addr);
10041004}
10051005
10061006static DRIVER_INIT( galpani4 ) { skns_sprite_kludge(-5,-1); init_skns(machine);  }
10071007static DRIVER_INIT( galpanis ) { skns_sprite_kludge(-5,-1); init_skns(machine);  }
1008static DRIVER_INIT( cyvern )   { skns_sprite_kludge(+0,+2); init_skns(machine); memory_install_read32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x604d3c8, 0x604d3cb, 0, 0, cyvern_speedup_r );  set_drc_pcflush(machine, 0x402ebd2);  }
1009static DRIVER_INIT( galpans2 ) { skns_sprite_kludge(-1,-1); init_skns(machine); memory_install_read32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x60fb6bc, 0x60fb6bf, 0, 0, galpans2_speedup_r ); set_drc_pcflush(machine, 0x4049ae2); }
1010static DRIVER_INIT( gutsn )    { skns_sprite_kludge(+0,+0); init_skns(machine); memory_install_read32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x600c780, 0x600c783, 0, 0, gutsn_speedup_r ); set_drc_pcflush(machine, 0x402206e); }
1011static DRIVER_INIT( panicstr ) { skns_sprite_kludge(-1,-1); init_skns(machine); memory_install_read32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x60f19e4, 0x60f19e7, 0, 0, panicstr_speedup_r ); set_drc_pcflush(machine, 0x404e68a);  }
1012static DRIVER_INIT( senknow )  { skns_sprite_kludge(+1,+1); init_skns(machine); memory_install_read32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x60000dc, 0x60000df, 0, 0, senknow_speedup_r ); set_drc_pcflush(machine, 0x4017dce);  }
1013static DRIVER_INIT( puzzloop ) { skns_sprite_kludge(-9,-1); init_skns(machine); memory_install_read32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x6081d38, 0x6081d3b, 0, 0, puzzloop_speedup_r ); set_drc_pcflush(machine, 0x401da14); }
1014static DRIVER_INIT( puzzloopj ) { skns_sprite_kludge(-9,-1); init_skns(machine); memory_install_read32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x6086714, 0x6086717, 0, 0, puzzloopj_speedup_r ); set_drc_pcflush(machine, 0x401dca0); }
1015static DRIVER_INIT( puzzloopa ) { skns_sprite_kludge(-9,-1); init_skns(machine); memory_install_read32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x6085bcc, 0x6085bcf, 0, 0, puzzloopa_speedup_r ); set_drc_pcflush(machine, 0x401d9d4); }
1016static DRIVER_INIT( puzzloopu ) { skns_sprite_kludge(-9,-1); init_skns(machine); memory_install_read32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x6085cec, 0x6085cef, 0, 0, puzzloopu_speedup_r ); set_drc_pcflush(machine, 0x401dab0); }
1017static DRIVER_INIT( jjparads ) { skns_sprite_kludge(+5,+1); init_skns(machine); memory_install_read32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x6000994, 0x6000997, 0, 0, jjparads_speedup_r ); set_drc_pcflush(machine, 0x4015e84); }
1018static DRIVER_INIT( jjparad2 ) { skns_sprite_kludge(+5,+1); init_skns(machine); memory_install_read32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x6000984, 0x6000987, 0, 0, jjparad2_speedup_r ); set_drc_pcflush(machine, 0x401620a); }
1019static DRIVER_INIT( ryouran )  { skns_sprite_kludge(+5,+1); init_skns(machine); memory_install_read32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x6000a14, 0x6000a17, 0, 0, ryouran_speedup_r );  set_drc_pcflush(machine, 0x40182ce); }
1020static DRIVER_INIT( teljan )   { skns_sprite_kludge(+5,+1); init_skns(machine); memory_install_read32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x6002fb4, 0x6002fb7, 0, 0, teljan_speedup_r ); set_drc_pcflush(machine, 0x401ba32); }
1021static DRIVER_INIT( sengekis ) { skns_sprite_kludge(-192,-272); init_skns(machine); memory_install_read32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x60b74bc, 0x60b74bf, 0, 0, sengekis_speedup_r ); set_drc_pcflush(machine, 0x60006ec); }
1022static DRIVER_INIT( sengekij ) { skns_sprite_kludge(-192,-272); init_skns(machine); memory_install_read32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x60b7380, 0x60b7383, 0, 0, sengekij_speedup_r ); set_drc_pcflush(machine, 0x60006ec); }
1008static DRIVER_INIT( cyvern )   { skns_sprite_kludge(+0,+2); init_skns(machine); memory_install_read32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x604d3c8, 0x604d3cb, 0, 0, cyvern_speedup_r );  set_drc_pcflush(machine, 0x402ebd2);  }
1009static DRIVER_INIT( galpans2 ) { skns_sprite_kludge(-1,-1); init_skns(machine); memory_install_read32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x60fb6bc, 0x60fb6bf, 0, 0, galpans2_speedup_r ); set_drc_pcflush(machine, 0x4049ae2); }
1010static DRIVER_INIT( gutsn )    { skns_sprite_kludge(+0,+0); init_skns(machine); memory_install_read32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x600c780, 0x600c783, 0, 0, gutsn_speedup_r ); set_drc_pcflush(machine, 0x402206e); }
1011static DRIVER_INIT( panicstr ) { skns_sprite_kludge(-1,-1); init_skns(machine); memory_install_read32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x60f19e4, 0x60f19e7, 0, 0, panicstr_speedup_r ); set_drc_pcflush(machine, 0x404e68a);  }
1012static DRIVER_INIT( senknow )  { skns_sprite_kludge(+1,+1); init_skns(machine); memory_install_read32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x60000dc, 0x60000df, 0, 0, senknow_speedup_r ); set_drc_pcflush(machine, 0x4017dce);  }
1013static DRIVER_INIT( puzzloop ) { skns_sprite_kludge(-9,-1); init_skns(machine); memory_install_read32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x6081d38, 0x6081d3b, 0, 0, puzzloop_speedup_r ); set_drc_pcflush(machine, 0x401da14); }
1014static DRIVER_INIT( puzzloopj ) { skns_sprite_kludge(-9,-1); init_skns(machine); memory_install_read32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x6086714, 0x6086717, 0, 0, puzzloopj_speedup_r ); set_drc_pcflush(machine, 0x401dca0); }
1015static DRIVER_INIT( puzzloopa ) { skns_sprite_kludge(-9,-1); init_skns(machine); memory_install_read32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x6085bcc, 0x6085bcf, 0, 0, puzzloopa_speedup_r ); set_drc_pcflush(machine, 0x401d9d4); }
1016static DRIVER_INIT( puzzloopu ) { skns_sprite_kludge(-9,-1); init_skns(machine); memory_install_read32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x6085cec, 0x6085cef, 0, 0, puzzloopu_speedup_r ); set_drc_pcflush(machine, 0x401dab0); }
1017static DRIVER_INIT( jjparads ) { skns_sprite_kludge(+5,+1); init_skns(machine); memory_install_read32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x6000994, 0x6000997, 0, 0, jjparads_speedup_r ); set_drc_pcflush(machine, 0x4015e84); }
1018static DRIVER_INIT( jjparad2 ) { skns_sprite_kludge(+5,+1); init_skns(machine); memory_install_read32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x6000984, 0x6000987, 0, 0, jjparad2_speedup_r ); set_drc_pcflush(machine, 0x401620a); }
1019static DRIVER_INIT( ryouran )  { skns_sprite_kludge(+5,+1); init_skns(machine); memory_install_read32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x6000a14, 0x6000a17, 0, 0, ryouran_speedup_r );  set_drc_pcflush(machine, 0x40182ce); }
1020static DRIVER_INIT( teljan )   { skns_sprite_kludge(+5,+1); init_skns(machine); memory_install_read32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x6002fb4, 0x6002fb7, 0, 0, teljan_speedup_r ); set_drc_pcflush(machine, 0x401ba32); }
1021static DRIVER_INIT( sengekis ) { skns_sprite_kludge(-192,-272); init_skns(machine); memory_install_read32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x60b74bc, 0x60b74bf, 0, 0, sengekis_speedup_r ); set_drc_pcflush(machine, 0x60006ec); }
1022static DRIVER_INIT( sengekij ) { skns_sprite_kludge(-192,-272); init_skns(machine); memory_install_read32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x60b7380, 0x60b7383, 0, 0, sengekij_speedup_r ); set_drc_pcflush(machine, 0x60006ec); }
10231023static DRIVER_INIT( sarukani ) { skns_sprite_kludge(-1,-1); init_skns(machine); set_drc_pcflush(machine, 0x4013b42); } // Speedup is in skns_io_w()
10241024static DRIVER_INIT( galpans3 ) { skns_sprite_kludge(-1,-1); init_skns(machine);  }
10251025
src/mame/drivers/seta2.c
r4679r4680
556556//  popmessage("%04X", data & 0xffff);
557557}
558558
559static ADDRESS_MAP_START( grdians_readmem, ADDRESS_SPACE_PROGRAM, 16 )
560   AM_RANGE(0x000000, 0x1fffff) AM_READ(SMH_ROM            )   // ROM
561   AM_RANGE(0x200000, 0x20ffff) AM_READ(SMH_RAM            )   // RAM
562   AM_RANGE(0x304000, 0x30ffff) AM_READ(SMH_RAM            )   // ? seems tile data
559static ADDRESS_MAP_START( grdians_map, ADDRESS_SPACE_PROGRAM, 16 )
560   AM_RANGE(0x000000, 0x1fffff) AM_ROM                        // ROM
561   AM_RANGE(0x200000, 0x20ffff) AM_RAM                        // RAM
562   AM_RANGE(0x304000, 0x30ffff) AM_RAM                        // ? seems tile data
563563   AM_RANGE(0x600000, 0x600001) AM_READ_PORT("DSW1")            // DSW 1
564564   AM_RANGE(0x600002, 0x600003) AM_READ_PORT("DSW2")            // DSW 2
565565   AM_RANGE(0x700000, 0x700001) AM_READ_PORT("P1")               // P1
566566   AM_RANGE(0x700002, 0x700003) AM_READ_PORT("P2")               // P2
567567   AM_RANGE(0x700004, 0x700005) AM_READ_PORT("SYSTEM")            // Coins
568   AM_RANGE(0x70000c, 0x70000d) AM_READ(watchdog_reset16_r      )   // Watchdog
569   AM_RANGE(0xb00000, 0xb03fff) AM_DEVREAD("x1", seta_sound_word_r       )   // Sound
570   AM_RANGE(0xc00000, 0xc3ffff) AM_READ(SMH_RAM            )   // Sprites
571   AM_RANGE(0xc40000, 0xc4ffff) AM_READ(SMH_RAM            )   // Palette
572   AM_RANGE(0xfffc00, 0xffffff) AM_READ(SMH_RAM            )   // TMP68301 Registers
568   AM_RANGE(0x70000c, 0x70000d) AM_READ(watchdog_reset16_r)      // Watchdog
569   AM_RANGE(0x800000, 0x800001) AM_WRITE(grdians_lockout_w)
570   AM_RANGE(0xb00000, 0xb03fff) AM_DEVREADWRITE("x1", seta_sound_word_r,seta_sound_word_w)   // Sound
571   AM_RANGE(0xc00000, 0xc3ffff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)      // Sprites
572   AM_RANGE(0xc40000, 0xc4ffff) AM_RAM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE(&paletteram16)   // Palette
573   AM_RANGE(0xc50000, 0xc5ffff) AM_RAM                        // cleared
574   AM_RANGE(0xc60000, 0xc6003f) AM_WRITE(seta2_vregs_w) AM_BASE(&seta2_vregs)   // Video Registers
575   AM_RANGE(0xe00010, 0xe0001f) AM_WRITE(seta2_sound_bank_w)      // Samples Banks
576   AM_RANGE(0xfffc00, 0xffffff) AM_RAM_WRITE(tmp68301_regs_w) AM_BASE(&tmp68301_regs)   // TMP68301 Registers
573577ADDRESS_MAP_END
574578
575static ADDRESS_MAP_START( grdians_writemem, ADDRESS_SPACE_PROGRAM, 16 )
576   AM_RANGE(0x000000, 0x1fffff) AM_WRITE(SMH_ROM                     )   // ROM
577   AM_RANGE(0x200000, 0x20ffff) AM_WRITE(SMH_RAM                     )   // RAM
578   AM_RANGE(0x304000, 0x30ffff) AM_WRITE(SMH_RAM                     )   // ? seems tile data
579   AM_RANGE(0x800000, 0x800001) AM_WRITE(grdians_lockout_w               )
580   AM_RANGE(0xb00000, 0xb03fff) AM_DEVWRITE("x1", seta_sound_word_w             )   // Sound
581   AM_RANGE(0xc00000, 0xc3ffff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size   )   // Sprites
582   AM_RANGE(0xc40000, 0xc4ffff) AM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE(&paletteram16   )   // Palette
583   AM_RANGE(0xc50000, 0xc5ffff) AM_WRITE(SMH_RAM                     )   // cleared
584   AM_RANGE(0xc60000, 0xc6003f) AM_WRITE(seta2_vregs_w) AM_BASE(&seta2_vregs      )   // Video Registers
585   AM_RANGE(0xe00010, 0xe0001f) AM_WRITE(seta2_sound_bank_w            )   // Samples Banks
586   AM_RANGE(0xfffc00, 0xffffff) AM_WRITE(tmp68301_regs_w) AM_BASE(&tmp68301_regs   )   // TMP68301 Registers
587ADDRESS_MAP_END
588
589579/***************************************************************************
590580                        Mobile Suit Gundam EX Revue
591581***************************************************************************/
r4679r4680
608598         UINT32 length, size;
609599         UINT16 *dat;
610600
611         dat = eeprom_get_data_pointer(&length, &size);
601         dat = (UINT16 *)eeprom_get_data_pointer(&length, &size);
612602         dat[0] = 0x7008;
613603      }
614604   }
r4679r4680
626616      eeprom_set_cs_line((data & 0x4) ? CLEAR_LINE : ASSERT_LINE);
627617}
628618
629static ADDRESS_MAP_START( gundamex_readmem, ADDRESS_SPACE_PROGRAM, 16 )
630   AM_RANGE(0x000000, 0x1fffff) AM_READ(SMH_ROM            )   // ROM
631   AM_RANGE(0x200000, 0x20ffff) AM_READ(SMH_RAM            )   // RAM
632   AM_RANGE(0x500000, 0x57ffff) AM_READ(SMH_ROM            )   // ROM
619static ADDRESS_MAP_START( gundamex_map, ADDRESS_SPACE_PROGRAM, 16 )
620   AM_RANGE(0x000000, 0x1fffff) AM_ROM                        // ROM
621   AM_RANGE(0x200000, 0x20ffff) AM_RAM                        // RAM
622   AM_RANGE(0x500000, 0x57ffff) AM_ROM                        // ROM
633623   AM_RANGE(0x600000, 0x600001) AM_READ_PORT("DSW1")            // DSW 1
634624   AM_RANGE(0x600002, 0x600003) AM_READ_PORT("DSW2")            // DSW 2
635625   AM_RANGE(0x700000, 0x700001) AM_READ_PORT("P1")               // P1
r4679r4680
637627   AM_RANGE(0x700004, 0x700005) AM_READ_PORT("SYSTEM")            // Coins
638628   AM_RANGE(0x700008, 0x700009) AM_READ_PORT("IN0")            // P1
639629   AM_RANGE(0x70000a, 0x70000b) AM_READ_PORT("IN1")            // P2
640   AM_RANGE(0xb00000, 0xb03fff) AM_DEVREAD("x1", seta_sound_word_r       )   // Sound
641   AM_RANGE(0xfffd0a, 0xfffd0b) AM_READ(gundamex_eeprom_r      )   // parallel data register
630   AM_RANGE(0x70000c, 0x70000d) AM_WRITE(watchdog_reset16_w)
631   AM_RANGE(0x800000, 0x800001) AM_WRITE(grdians_lockout_w)
632   AM_RANGE(0xb00000, 0xb03fff) AM_DEVREADWRITE("x1", seta_sound_word_r,seta_sound_word_w)   // Sound
633   AM_RANGE(0xc00000, 0xc3ffff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)   // Sprites
634   AM_RANGE(0xc40000, 0xc4ffff) AM_RAM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE(&paletteram16   )   // Palette
635   AM_RANGE(0xc50000, 0xc5ffff) AM_RAM                        // cleared
636   AM_RANGE(0xc60000, 0xc6003f) AM_WRITE(seta2_vregs_w) AM_BASE(&seta2_vregs)   // Video Registers
637   AM_RANGE(0xe00010, 0xe0001f) AM_WRITE(seta2_sound_bank_w)      // Samples Banks
638   AM_RANGE(0xfffd0a, 0xfffd0b) AM_READWRITE(gundamex_eeprom_r,gundamex_eeprom_w)   // parallel data register
639   AM_RANGE(0xfffc00, 0xffffff) AM_RAM_WRITE(tmp68301_regs_w) AM_BASE(&tmp68301_regs)   // TMP68301 Registers
642640ADDRESS_MAP_END
643641
644static ADDRESS_MAP_START( gundamex_writemem, ADDRESS_SPACE_PROGRAM, 16 )
645   AM_RANGE(0x000000, 0x1fffff) AM_WRITE(SMH_ROM                     )   // ROM
646   AM_RANGE(0x200000, 0x20ffff) AM_WRITE(SMH_RAM                     )   // RAM
647   AM_RANGE(0x500000, 0x57ffff) AM_WRITE(SMH_ROM                     )   // ROM
648   AM_RANGE(0x70000c, 0x70000d) AM_WRITE(watchdog_reset16_w            )
649   AM_RANGE(0x800000, 0x800001) AM_WRITE(grdians_lockout_w               )
650   AM_RANGE(0xb00000, 0xb03fff) AM_DEVWRITE("x1", seta_sound_word_w             )   // Sound
651   AM_RANGE(0xc00000, 0xc3ffff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size   )   // Sprites
652   AM_RANGE(0xc40000, 0xc4ffff) AM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE(&paletteram16   )   // Palette
653   AM_RANGE(0xc50000, 0xc5ffff) AM_WRITE(SMH_RAM                     )   // cleared
654   AM_RANGE(0xc60000, 0xc6003f) AM_WRITE(seta2_vregs_w) AM_BASE(&seta2_vregs      )   // Video Registers
655   AM_RANGE(0xe00010, 0xe0001f) AM_WRITE(seta2_sound_bank_w            )   // Samples Banks
656   AM_RANGE(0xfffd0a, 0xfffd0b) AM_WRITE(gundamex_eeprom_w             )   // parallel data register
657   AM_RANGE(0xfffc00, 0xffffff) AM_WRITE(tmp68301_regs_w) AM_BASE(&tmp68301_regs   )   // TMP68301 Registers
658ADDRESS_MAP_END
659642
660643/***************************************************************************
661644                      Wakakusamonogatari Mahjong Yonshimai
r4679r4680
667650{
668651   switch (keyboard_row)
669652   {
670      case 0x01: return input_port_read(space->machine, "KEY0");
671      case 0x02: return input_port_read(space->machine, "KEY1");
672      case 0x04: return input_port_read(space->machine, "KEY2");
673      case 0x08: return input_port_read(space->machine, "KEY3");
674      case 0x10: return input_port_read(space->machine, "KEY4");
653      case 0x01: return input_port_read(space->machine, "P1_KEY0");
654      case 0x02: return input_port_read(space->machine, "P1_KEY1");
655      case 0x04: return input_port_read(space->machine, "P1_KEY2");
656      case 0x08: return input_port_read(space->machine, "P1_KEY3");
657      case 0x10: return input_port_read(space->machine, "P1_KEY4");
675658      default:   logerror("p1_r with keyboard_row = %02x\n",keyboard_row); return 0xffff;
676659   }
677660}
678661
662static READ16_HANDLER( mj4simai_p2_r )
663{
664   switch (keyboard_row)
665   {
666      case 0x01: return input_port_read(space->machine, "P2_KEY0");
667      case 0x02: return input_port_read(space->machine, "P2_KEY1");
668      case 0x04: return input_port_read(space->machine, "P2_KEY2");
669      case 0x08: return input_port_read(space->machine, "P2_KEY3");
670      case 0x10: return input_port_read(space->machine, "P2_KEY4");
671      default:   logerror("p2_r with keyboard_row = %02x\n",keyboard_row); return 0xffff;
672   }
673}
674
679675static WRITE16_HANDLER( mj4simai_keyboard_w )
680676{
681677   if (ACCESSING_BITS_0_7)
682678      keyboard_row = data & 0xff;
683679}
684680
685static ADDRESS_MAP_START( mj4simai_readmem, ADDRESS_SPACE_PROGRAM, 16 )
686   AM_RANGE(0x000000, 0x1fffff) AM_READ(SMH_ROM            )   // ROM
687   AM_RANGE(0x200000, 0x20ffff) AM_READ(SMH_RAM            )   // RAM
688   AM_RANGE(0x600000, 0x600001) AM_READ(mj4simai_p1_r         )   // P1
689   AM_RANGE(0x600002, 0x600003) AM_READ(mj4simai_p1_r         )   // P2, but I'm using P1 again
690   AM_RANGE(0x600006, 0x600007) AM_READ(watchdog_reset16_r      )   // Watchdog
681static ADDRESS_MAP_START( mj4simai_map, ADDRESS_SPACE_PROGRAM, 16 )
682   AM_RANGE(0x000000, 0x1fffff) AM_ROM                        // ROM
683   AM_RANGE(0x200000, 0x20ffff) AM_RAM                        // RAM
684   AM_RANGE(0x600000, 0x600001) AM_READ(mj4simai_p1_r)            // P1
685   AM_RANGE(0x600002, 0x600003) AM_READ(mj4simai_p2_r)            // P2
686   AM_RANGE(0x600004, 0x600005) AM_WRITE(mj4simai_keyboard_w)      // select keyboard row to read
687   AM_RANGE(0x600006, 0x600007) AM_READ(watchdog_reset16_r)      // Watchdog
691688   AM_RANGE(0x600100, 0x600101) AM_READ_PORT("SYSTEM")            //
689   AM_RANGE(0x600200, 0x600201) AM_WRITENOP                  // Leds? Coins?
692690   AM_RANGE(0x600300, 0x600301) AM_READ_PORT("DSW1")            // DSW 1
693691   AM_RANGE(0x600302, 0x600303) AM_READ_PORT("DSW2")            // DSW 2
694   AM_RANGE(0xb00000, 0xb03fff) AM_DEVREAD("x1", seta_sound_word_r       )   // Sound
695   AM_RANGE(0xc00000, 0xc3ffff) AM_READ(SMH_RAM            )   // Sprites
696   AM_RANGE(0xc40000, 0xc4ffff) AM_READ(SMH_RAM            )   // Palette
697   AM_RANGE(0xfffc00, 0xffffff) AM_READ(SMH_RAM            )   // TMP68301 Registers
692   AM_RANGE(0x600300, 0x60030f) AM_WRITE(seta2_sound_bank_w)      // Samples Banks
693   AM_RANGE(0xb00000, 0xb03fff) AM_DEVREADWRITE("x1", seta_sound_word_r,seta_sound_word_w)   // Sound
694   AM_RANGE(0xc00000, 0xc3ffff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)   // Sprites
695   AM_RANGE(0xc40000, 0xc4ffff) AM_RAM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE(&paletteram16)   // Palette
696   AM_RANGE(0xc60000, 0xc6003f) AM_WRITE(seta2_vregs_w) AM_BASE(&seta2_vregs)   // Video Registers
697   AM_RANGE(0xfffc00, 0xffffff) AM_RAM_WRITE(tmp68301_regs_w) AM_BASE(&tmp68301_regs)   // TMP68301 Registers
698698ADDRESS_MAP_END
699699
700static ADDRESS_MAP_START( mj4simai_writemem, ADDRESS_SPACE_PROGRAM, 16 )
701   AM_RANGE(0x000000, 0x1fffff) AM_WRITE(SMH_ROM                  )   // ROM
702   AM_RANGE(0x200000, 0x20ffff) AM_WRITE(SMH_RAM                  )   // RAM
703   AM_RANGE(0x600004, 0x600005) AM_WRITE(mj4simai_keyboard_w         )   // select keyboard row to read
704   AM_RANGE(0x600200, 0x600201) AM_WRITE(SMH_NOP                  )   // Leds? Coins?
705   AM_RANGE(0x600300, 0x60030f) AM_WRITE(seta2_sound_bank_w         )   // Samples Banks
706   AM_RANGE(0xb00000, 0xb03fff) AM_DEVWRITE("x1", seta_sound_word_w          )   // Sound
707   AM_RANGE(0xc00000, 0xc3ffff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size   )   // Sprites
708   AM_RANGE(0xc40000, 0xc4ffff) AM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE(&paletteram16   )   // Palette
709   AM_RANGE(0xc60000, 0xc6003f) AM_WRITE(seta2_vregs_w) AM_BASE(&seta2_vregs   )   // Video Registers
710   AM_RANGE(0xfffc00, 0xffffff) AM_WRITE(tmp68301_regs_w) AM_BASE(&tmp68301_regs   )   // TMP68301 Registers
711ADDRESS_MAP_END
712700
713
714701/***************************************************************************
715702                            Kosodate Quiz My Angel
716703***************************************************************************/
717704
718static ADDRESS_MAP_START( myangel_readmem, ADDRESS_SPACE_PROGRAM, 16 )
719   AM_RANGE(0x000000, 0x1fffff) AM_READ(SMH_ROM            )   // ROM
720   AM_RANGE(0x200000, 0x20ffff) AM_READ(SMH_RAM            )   // RAM
705static ADDRESS_MAP_START( myangel_map, ADDRESS_SPACE_PROGRAM, 16 )
706   AM_RANGE(0x000000, 0x1fffff) AM_ROM                        // ROM
707   AM_RANGE(0x200000, 0x20ffff) AM_RAM                        // RAM
721708   AM_RANGE(0x700000, 0x700001) AM_READ_PORT("P1")               // P1
722709   AM_RANGE(0x700002, 0x700003) AM_READ_PORT("P2")               // P2
723710   AM_RANGE(0x700004, 0x700005) AM_READ_PORT("SYSTEM")            // Coins
724   AM_RANGE(0x700006, 0x700007) AM_READ(watchdog_reset16_r      )   // Watchdog
711   AM_RANGE(0x700006, 0x700007) AM_READ(watchdog_reset16_r)      // Watchdog
712   AM_RANGE(0x700200, 0x700201) AM_WRITENOP                  // Leds? Coins?
725713   AM_RANGE(0x700300, 0x700301) AM_READ_PORT("DSW1")            // DSW 1
726714   AM_RANGE(0x700302, 0x700303) AM_READ_PORT("DSW2")            // DSW 2
727   AM_RANGE(0xb00000, 0xb03fff) AM_DEVREAD("x1", seta_sound_word_r       )   // Sound
728   AM_RANGE(0xc00000, 0xc3ffff) AM_READ(SMH_RAM            )   // Sprites
729   AM_RANGE(0xc40000, 0xc4ffff) AM_READ(SMH_RAM            )   // Palette
730   AM_RANGE(0xfffc00, 0xffffff) AM_READ(SMH_RAM            )   // TMP68301 Registers
715   AM_RANGE(0x700310, 0x70031f) AM_WRITE(seta2_sound_bank_w)      // Samples Banks
716   AM_RANGE(0xb00000, 0xb03fff) AM_DEVREADWRITE("x1", seta_sound_word_r,seta_sound_word_w)   // Sound
717   AM_RANGE(0xc00000, 0xc3ffff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)      // Sprites
718   AM_RANGE(0xc40000, 0xc4ffff) AM_RAM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE(&paletteram16)   // Palette
719   AM_RANGE(0xc60000, 0xc6003f) AM_WRITE(seta2_vregs_w) AM_BASE(&seta2_vregs)            // Video Registers
720   AM_RANGE(0xfffc00, 0xffffff) AM_RAM_WRITE(tmp68301_regs_w) AM_BASE(&tmp68301_regs)      // TMP68301 Registers
731721ADDRESS_MAP_END
732722
733static ADDRESS_MAP_START( myangel_writemem, ADDRESS_SPACE_PROGRAM, 16 )
734   AM_RANGE(0x000000, 0x1fffff) AM_WRITE(SMH_ROM                  )   // ROM
735   AM_RANGE(0x200000, 0x20ffff) AM_WRITE(SMH_RAM                  )   // RAM
736   AM_RANGE(0x700200, 0x700201) AM_WRITE(SMH_NOP                  )   // Leds? Coins?
737   AM_RANGE(0x700310, 0x70031f) AM_WRITE(seta2_sound_bank_w         )   // Samples Banks
738   AM_RANGE(0xb00000, 0xb03fff) AM_DEVWRITE("x1", seta_sound_word_w          )   // Sound
739   AM_RANGE(0xc00000, 0xc3ffff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size   )   // Sprites
740   AM_RANGE(0xc40000, 0xc4ffff) AM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE(&paletteram16   )   // Palette
741   AM_RANGE(0xc60000, 0xc6003f) AM_WRITE(seta2_vregs_w) AM_BASE(&seta2_vregs   )   // Video Registers
742   AM_RANGE(0xfffc00, 0xffffff) AM_WRITE(tmp68301_regs_w) AM_BASE(&tmp68301_regs   )   // TMP68301 Registers
743ADDRESS_MAP_END
744723
745
746724/***************************************************************************
747725                            Kosodate Quiz My Angel 2
748726***************************************************************************/
749727
750static ADDRESS_MAP_START( myangel2_readmem, ADDRESS_SPACE_PROGRAM, 16 )
751   AM_RANGE(0x000000, 0x1fffff) AM_READ(SMH_ROM            )   // ROM
752   AM_RANGE(0x200000, 0x20ffff) AM_READ(SMH_RAM            )   // RAM
728static ADDRESS_MAP_START( myangel2_map, ADDRESS_SPACE_PROGRAM, 16 )
729   AM_RANGE(0x000000, 0x1fffff) AM_ROM                        // ROM
730   AM_RANGE(0x200000, 0x20ffff) AM_RAM                        // RAM
753731   AM_RANGE(0x600000, 0x600001) AM_READ_PORT("P1")               // P1
754732   AM_RANGE(0x600002, 0x600003) AM_READ_PORT("P2")               // P2
755733   AM_RANGE(0x600004, 0x600005) AM_READ_PORT("SYSTEM")            // Coins
756   AM_RANGE(0x600006, 0x600007) AM_READ(watchdog_reset16_r      )   // Watchdog
734   AM_RANGE(0x600006, 0x600007) AM_READ(watchdog_reset16_r)      // Watchdog
735   AM_RANGE(0x600200, 0x600201) AM_WRITENOP                  // Leds? Coins?
757736   AM_RANGE(0x600300, 0x600301) AM_READ_PORT("DSW1")            // DSW 1
758737   AM_RANGE(0x600302, 0x600303) AM_READ_PORT("DSW2")            // DSW 2
759   AM_RANGE(0xb00000, 0xb03fff) AM_DEVREAD("x1", seta_sound_word_r       )   // Sound
760   AM_RANGE(0xd00000, 0xd3ffff) AM_READ(SMH_RAM            )   // Sprites
761   AM_RANGE(0xd40000, 0xd4ffff) AM_READ(SMH_RAM            )   // Palette
762   AM_RANGE(0xfffc00, 0xffffff) AM_READ(SMH_RAM            )   // TMP68301 Registers
738   AM_RANGE(0x600300, 0x60030f) AM_WRITE(seta2_sound_bank_w)      // Samples Banks
739   AM_RANGE(0xb00000, 0xb03fff) AM_DEVREADWRITE("x1", seta_sound_word_r,seta_sound_word_w)   // Sound
740   AM_RANGE(0xd00000, 0xd3ffff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)      // Sprites
741   AM_RANGE(0xd40000, 0xd4ffff) AM_RAM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE(&paletteram16)   // Palette
742   AM_RANGE(0xd60000, 0xd6003f) AM_WRITE(seta2_vregs_w) AM_BASE(&seta2_vregs   )         // Video Registers
743   AM_RANGE(0xfffc00, 0xffffff) AM_RAM_WRITE(tmp68301_regs_w) AM_BASE(&tmp68301_regs)      // TMP68301 Registers
763744ADDRESS_MAP_END
764745
765static ADDRESS_MAP_START( myangel2_writemem, ADDRESS_SPACE_PROGRAM, 16 )
766   AM_RANGE(0x000000, 0x1fffff) AM_WRITE(SMH_ROM                  )   // ROM
767   AM_RANGE(0x200000, 0x20ffff) AM_WRITE(SMH_RAM                  )   // RAM
768   AM_RANGE(0x600200, 0x600201) AM_WRITE(SMH_NOP                  )   // Leds? Coins?
769   AM_RANGE(0x600300, 0x60030f) AM_WRITE(seta2_sound_bank_w         )   // Samples Banks
770   AM_RANGE(0xb00000, 0xb03fff) AM_DEVWRITE("x1", seta_sound_word_w          )   // Sound
771   AM_RANGE(0xd00000, 0xd3ffff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size   )   // Sprites
772   AM_RANGE(0xd40000, 0xd4ffff) AM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE(&paletteram16   )   // Palette
773   AM_RANGE(0xd60000, 0xd6003f) AM_WRITE(seta2_vregs_w) AM_BASE(&seta2_vregs   )   // Video Registers
774   AM_RANGE(0xfffc00, 0xffffff) AM_WRITE(tmp68301_regs_w) AM_BASE(&tmp68301_regs   )   // TMP68301 Registers
775ADDRESS_MAP_END
776746
777
778747/***************************************************************************
779748                                Puzzle De Bowling
780749***************************************************************************/
r4679r4680
801770   }
802771}
803772
804static ADDRESS_MAP_START( pzlbowl_readmem, ADDRESS_SPACE_PROGRAM, 16 )
805   AM_RANGE(0x000000, 0x0fffff) AM_READ(SMH_ROM               )   // ROM
806   AM_RANGE(0x200000, 0x20ffff) AM_READ(SMH_RAM               )   // RAM
807   AM_RANGE(0x400300, 0x400301) AM_READ_PORT("DSW1")            // DSW 1
808   AM_RANGE(0x400302, 0x400303) AM_READ_PORT("DSW2")            // DSW 2
809   AM_RANGE(0x500000, 0x500001) AM_READ_PORT("P1")            // P1
810   AM_RANGE(0x500002, 0x500003) AM_READ_PORT("P2")            // P2
811   AM_RANGE(0x500004, 0x500005) AM_READ(pzlbowl_coins_r         )   // Coins + Protection?
812   AM_RANGE(0x500006, 0x500007) AM_READ(watchdog_reset16_r      )   // Watchdog
813   AM_RANGE(0x700000, 0x700001) AM_READ(pzlbowl_protection_r      )   // Protection
814   AM_RANGE(0x800000, 0x83ffff) AM_READ(SMH_RAM               )   // Sprites
815   AM_RANGE(0x840000, 0x84ffff) AM_READ(SMH_RAM               )   // Palette
816   AM_RANGE(0x900000, 0x903fff) AM_DEVREAD("x1", seta_sound_word_r       )   // Sound
817   AM_RANGE(0xfffc00, 0xffffff) AM_READ(SMH_RAM               )   // TMP68301 Registers
773static ADDRESS_MAP_START( pzlbowl_map, ADDRESS_SPACE_PROGRAM, 16 )
774   AM_RANGE(0x000000, 0x0fffff) AM_ROM                           // ROM
775   AM_RANGE(0x200000, 0x20ffff) AM_RAM                           // RAM
776   AM_RANGE(0x400300, 0x400301) AM_READ_PORT("DSW1")               // DSW 1
777   AM_RANGE(0x400302, 0x400303) AM_READ_PORT("DSW2")               // DSW 2
778   AM_RANGE(0x400300, 0x40030f) AM_WRITE(seta2_sound_bank_w)         // Samples Banks
779   AM_RANGE(0x500000, 0x500001) AM_READ_PORT("P1")                  // P1
780   AM_RANGE(0x500002, 0x500003) AM_READ_PORT("P2")                  // P2
781   AM_RANGE(0x500004, 0x500005) AM_READWRITE(pzlbowl_coins_r,pzlbowl_coin_counter_w)   // Coins + Protection?
782   AM_RANGE(0x500006, 0x500007) AM_READ(watchdog_reset16_r)         // Watchdog
783   AM_RANGE(0x700000, 0x700001) AM_READ(pzlbowl_protection_r)         // Protection
784   AM_RANGE(0x800000, 0x83ffff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)      // Sprites
785   AM_RANGE(0x840000, 0x84ffff) AM_RAM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE(&paletteram16)   // Palette
786   AM_RANGE(0x860000, 0x86003f) AM_WRITE(seta2_vregs_w) AM_BASE(&seta2_vregs)            // Video Registers
787   AM_RANGE(0x900000, 0x903fff) AM_DEVREADWRITE("x1", seta_sound_word_r,seta_sound_word_w)   // Sound
788   AM_RANGE(0xfffc00, 0xffffff) AM_RAM_WRITE(tmp68301_regs_w) AM_BASE(&tmp68301_regs)      // TMP68301 Registers
818789ADDRESS_MAP_END
819790
820static ADDRESS_MAP_START( pzlbowl_writemem, ADDRESS_SPACE_PROGRAM, 16 )
821   AM_RANGE(0x000000, 0x0fffff) AM_WRITE(SMH_ROM                  )   // ROM
822   AM_RANGE(0x200000, 0x20ffff) AM_WRITE(SMH_RAM                  )   // RAM
823   AM_RANGE(0x400300, 0x40030f) AM_WRITE(seta2_sound_bank_w         )   // Samples Banks
824   AM_RANGE(0x500004, 0x500005) AM_WRITE(pzlbowl_coin_counter_w      )   // Coins Counter
825   AM_RANGE(0x800000, 0x83ffff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size   )   // Sprites
826   AM_RANGE(0x840000, 0x84ffff) AM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE(&paletteram16   )   // Palette
827   AM_RANGE(0x860000, 0x86003f) AM_WRITE(seta2_vregs_w) AM_BASE(&seta2_vregs   )   // Video Registers
828   AM_RANGE(0x900000, 0x903fff) AM_DEVWRITE("x1", seta_sound_word_w          )   // Sound
829   AM_RANGE(0xfffc00, 0xffffff) AM_WRITE(tmp68301_regs_w) AM_BASE(&tmp68301_regs   )   // TMP68301 Registers
830ADDRESS_MAP_END
831791
832
833792/***************************************************************************
834793                            Penguin Bros
835794***************************************************************************/
836795
837static ADDRESS_MAP_START( penbros_readmem, ADDRESS_SPACE_PROGRAM, 16 )
838   AM_RANGE(0x000000, 0x0fffff) AM_READ(SMH_ROM            )   // ROM
839   AM_RANGE(0x200000, 0x20ffff) AM_READ(SMH_RAM            )   // RAM
840   AM_RANGE(0x210000, 0x23ffff) AM_READ(SMH_RAM            )   // RAM
841   AM_RANGE(0x300000, 0x30ffff) AM_READ(SMH_RAM            )   // RAM
796static ADDRESS_MAP_START( penbros_map, ADDRESS_SPACE_PROGRAM, 16 )
797   AM_RANGE(0x000000, 0x0fffff) AM_ROM                        // ROM
798   AM_RANGE(0x200000, 0x20ffff) AM_RAM                        // RAM
799   AM_RANGE(0x210000, 0x23ffff) AM_RAM                        // RAM
800   AM_RANGE(0x300000, 0x30ffff) AM_RAM                        // RAM
842801   AM_RANGE(0x500300, 0x500301) AM_READ_PORT("DSW1")            // DSW 1
843802   AM_RANGE(0x500302, 0x500303) AM_READ_PORT("DSW2")            // DSW 2
803   AM_RANGE(0x500300, 0x50030f) AM_WRITE(seta2_sound_bank_w)      // Samples Banks
844804   AM_RANGE(0x600000, 0x600001) AM_READ_PORT("P1")               // P1
845805   AM_RANGE(0x600002, 0x600003) AM_READ_PORT("P2")               // P2
846806   AM_RANGE(0x600004, 0x600005) AM_READ_PORT("SYSTEM")            // Coins
847   AM_RANGE(0x600006, 0x600007) AM_READ(watchdog_reset16_r      )   // Watchdog
848//  AM_RANGE(0x700000, 0x700001) AM_READ(pzlbowl_protection_r   )   // Protection
849   AM_RANGE(0xb00000, 0xb3ffff) AM_READ(SMH_RAM            )   // Sprites
850   AM_RANGE(0xb40000, 0xb4ffff) AM_READ(SMH_RAM            )   // Palette
851   AM_RANGE(0xa00000, 0xa03fff) AM_DEVREAD("x1", seta_sound_word_r       )   // Sound
852   AM_RANGE(0xfffc00, 0xffffff) AM_READ(SMH_RAM            )   // TMP68301 Registers
807   AM_RANGE(0x600004, 0x600005) AM_WRITE(pzlbowl_coin_counter_w)   // Coins Counter
808   AM_RANGE(0x600006, 0x600007) AM_READ(watchdog_reset16_r)      // Watchdog
809//  AM_RANGE(0x700000, 0x700001) AM_READ(pzlbowl_protection_r)      // Protection
810   AM_RANGE(0xb00000, 0xb3ffff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)      // Sprites
811   AM_RANGE(0xb40000, 0xb4ffff) AM_RAM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE(&paletteram16)   // Palette
812   AM_RANGE(0xa00000, 0xa03fff) AM_DEVREADWRITE("x1", seta_sound_word_r,seta_sound_word_w)   // Sound
813   AM_RANGE(0xfffc00, 0xffffff) AM_RAM_WRITE(tmp68301_regs_w) AM_BASE(&tmp68301_regs)      // TMP68301 Registers
853814ADDRESS_MAP_END
854815
855static ADDRESS_MAP_START( penbros_writemem, ADDRESS_SPACE_PROGRAM, 16 )
856   AM_RANGE(0x000000, 0x0fffff) AM_WRITE(SMH_ROM                  )   // ROM
857   AM_RANGE(0x200000, 0x20ffff) AM_WRITE(SMH_RAM                  )   // RAM
858   AM_RANGE(0x300000, 0x30ffff) AM_WRITE(SMH_RAM                  )   // RAM
859   AM_RANGE(0x210000, 0x23ffff) AM_WRITE(SMH_RAM                  )   // RAM
860   AM_RANGE(0x500300, 0x50030f) AM_WRITE(seta2_sound_bank_w         )   // Samples Banks
861   AM_RANGE(0x600004, 0x600005) AM_WRITE(pzlbowl_coin_counter_w      )   // Coins Counter
862   AM_RANGE(0xb00000, 0xb3ffff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size   )   // Sprites
863   AM_RANGE(0xb40000, 0xb4ffff) AM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE(&paletteram16   )   // Palette
864   AM_RANGE(0xb60000, 0xb6003f) AM_WRITE(seta2_vregs_w) AM_BASE(&seta2_vregs   )   // Video Registers
865   AM_RANGE(0xa00000, 0xa03fff) AM_DEVWRITE("x1", seta_sound_word_w          )   // Sound
866   AM_RANGE(0xfffc00, 0xffffff) AM_WRITE(tmp68301_regs_w) AM_BASE(&tmp68301_regs   )   // TMP68301 Registers
867ADDRESS_MAP_END
868816
869
870817/***************************************************************************
871818                            Sammy Outdoor Shooting
872819***************************************************************************/
r4679r4680
909856   AM_RANGE( 0x900000, 0x903fff ) AM_DEVREADWRITE( "x1", seta_sound_word_r, seta_sound_word_w   )   // Sound
910857
911858   AM_RANGE( 0xfffd0a, 0xfffd0b ) AM_READ_PORT("DSW2")            // parallel data register (DSW 2)
912   AM_RANGE( 0xfffc00, 0xffffff ) AM_READWRITE( SMH_RAM, tmp68301_regs_w) AM_BASE(&tmp68301_regs )   // TMP68301 Registers
859   AM_RANGE( 0xfffc00, 0xffffff ) AM_RAM_WRITE( tmp68301_regs_w) AM_BASE(&tmp68301_regs )   // TMP68301 Registers
913860ADDRESS_MAP_END
914861
915862
r4679r4680
14391386   PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
14401387   PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN )
14411388
1442   PORT_START("KEY0")   // $600000(0)
1389   PORT_START("P1_KEY0")   // $600000(0)
14431390   PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_MAHJONG_A )
14441391   PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_MAHJONG_E )
14451392   PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_MAHJONG_I )
r4679r4680
14481395   PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_START1  )
14491396   PORT_BIT( 0xffc0, IP_ACTIVE_LOW, IPT_UNKNOWN )
14501397
1451   PORT_START("KEY1")   // $600000(1)
1398   PORT_START("P1_KEY1")   // $600000(1)
14521399   PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_MAHJONG_B )
14531400   PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_MAHJONG_F )
14541401   PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_MAHJONG_J )
r4679r4680
14571404   PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_MAHJONG_BET )
14581405   PORT_BIT( 0xffc0, IP_ACTIVE_LOW, IPT_UNKNOWN)
14591406
1460   PORT_START("KEY2")   // $600000(2)
1407   PORT_START("P1_KEY2")   // $600000(2)
14611408   PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_MAHJONG_C )
14621409   PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_MAHJONG_G )
14631410   PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_MAHJONG_K )
r4679r4680
14651412   PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_MAHJONG_RON )
14661413   PORT_BIT( 0xffe0, IP_ACTIVE_LOW, IPT_UNKNOWN )
14671414
1468   PORT_START("KEY3")   // $600000(3)
1415   PORT_START("P1_KEY3")   // $600000(3)
14691416   PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_MAHJONG_D )
14701417   PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_MAHJONG_H )
14711418   PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_MAHJONG_L )
14721419   PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_MAHJONG_PON )
14731420   PORT_BIT( 0xfff0, IP_ACTIVE_LOW, IPT_UNKNOWN )
14741421
1475   PORT_START("KEY4")   // $600000(4)
1422   PORT_START("P1_KEY4")   // $600000(4)
14761423   PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_MAHJONG_LAST_CHANCE )
14771424   PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_MAHJONG_SCORE )
14781425   PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_MAHJONG_DOUBLE_UP )
r4679r4680
14811428   PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_MAHJONG_SMALL )
14821429   PORT_BIT( 0x00c0, IP_ACTIVE_LOW, IPT_UNUSED )
14831430   PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN )
1431
1432   PORT_START("P2_KEY0")   // $600000(0)
1433   PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_MAHJONG_A ) PORT_PLAYER(2)
1434   PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_MAHJONG_E ) PORT_PLAYER(2)
1435   PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_MAHJONG_I ) PORT_PLAYER(2)
1436   PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_MAHJONG_M ) PORT_PLAYER(2)
1437   PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_MAHJONG_KAN ) PORT_PLAYER(2)
1438   PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_START2  )
1439   PORT_BIT( 0xffc0, IP_ACTIVE_LOW, IPT_UNKNOWN )
1440
1441   PORT_START("P2_KEY1")   // $600000(1)
1442   PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_MAHJONG_B ) PORT_PLAYER(2)
1443   PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_MAHJONG_F ) PORT_PLAYER(2)
1444   PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_MAHJONG_J ) PORT_PLAYER(2)
1445   PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_MAHJONG_N ) PORT_PLAYER(2)
1446   PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_MAHJONG_REACH ) PORT_PLAYER(2)
1447   PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_MAHJONG_BET ) PORT_PLAYER(2)
1448   PORT_BIT( 0xffc0, IP_ACTIVE_LOW, IPT_UNKNOWN)
1449
1450   PORT_START("P2_KEY2")   // $600000(2)
1451   PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_MAHJONG_C ) PORT_PLAYER(2)
1452   PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_MAHJONG_G ) PORT_PLAYER(2)
1453   PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_MAHJONG_K ) PORT_PLAYER(2)
1454   PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_MAHJONG_CHI ) PORT_PLAYER(2)
1455   PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_MAHJONG_RON ) PORT_PLAYER(2)
1456   PORT_BIT( 0xffe0, IP_ACTIVE_LOW, IPT_UNKNOWN )
1457
1458   PORT_START("P2_KEY3")   // $600000(3)
1459   PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_MAHJONG_D ) PORT_PLAYER(2)
1460   PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_MAHJONG_H ) PORT_PLAYER(2)
1461   PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_MAHJONG_L ) PORT_PLAYER(2)
1462   PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_MAHJONG_PON ) PORT_PLAYER(2)
1463   PORT_BIT( 0xfff0, IP_ACTIVE_LOW, IPT_UNKNOWN )
1464
1465   PORT_START("P2_KEY4")   // $600000(4)
1466   PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_MAHJONG_LAST_CHANCE ) PORT_PLAYER(2)
1467   PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_MAHJONG_SCORE ) PORT_PLAYER(2)
1468   PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_MAHJONG_DOUBLE_UP ) PORT_PLAYER(2)
1469   PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_MAHJONG_FLIP_FLOP ) PORT_PLAYER(2)
1470   PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_MAHJONG_BIG ) PORT_PLAYER(2)
1471   PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_MAHJONG_SMALL ) PORT_PLAYER(2)
1472   PORT_BIT( 0x00c0, IP_ACTIVE_LOW, IPT_UNUSED )
1473   PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN )
14841474INPUT_PORTS_END
14851475
14861476
r4679r4680
22842274
22852275   /* basic machine hardware */
22862276   MDRV_CPU_ADD("maincpu",M68000,50000000/3)         /* !! TMP68301 @ 16.666666MHz !! */
2287   MDRV_CPU_PROGRAM_MAP(mj4simai_readmem,mj4simai_writemem)
2277   MDRV_CPU_PROGRAM_MAP(mj4simai_map,0)
22882278   MDRV_CPU_VBLANK_INT("screen", seta2_interrupt)
22892279
22902280   MDRV_MACHINE_RESET( tmp68301 )
r4679r4680
23182308   /* basic machine hardware */
23192309   MDRV_IMPORT_FROM(mj4simai)
23202310   MDRV_CPU_MODIFY("maincpu")
2321   MDRV_CPU_PROGRAM_MAP(gundamex_readmem,gundamex_writemem)
2311   MDRV_CPU_PROGRAM_MAP(gundamex_map,0)
23222312
23232313   MDRV_NVRAM_HANDLER(93C46_gundamex)
23242314
r4679r4680
23312321
23322322   MDRV_IMPORT_FROM(mj4simai)
23332323   MDRV_CPU_MODIFY("maincpu")
2334   MDRV_CPU_PROGRAM_MAP(grdians_readmem,grdians_writemem)
2324   MDRV_CPU_PROGRAM_MAP(grdians_map,0)
23352325
23362326   /* video hardware */
23372327   MDRV_SCREEN_MODIFY("screen")
r4679r4680
23442334   /* basic machine hardware */
23452335   MDRV_IMPORT_FROM(mj4simai)
23462336   MDRV_CPU_MODIFY("maincpu")
2347   MDRV_CPU_PROGRAM_MAP(myangel_readmem,myangel_writemem)
2337   MDRV_CPU_PROGRAM_MAP(myangel_map,0)
23482338
23492339   /* video hardware */
23502340   MDRV_SCREEN_MODIFY("screen")
r4679r4680
23592349   /* basic machine hardware */
23602350   MDRV_IMPORT_FROM(mj4simai)
23612351   MDRV_CPU_MODIFY("maincpu")
2362   MDRV_CPU_PROGRAM_MAP(myangel2_readmem,myangel2_writemem)
2352   MDRV_CPU_PROGRAM_MAP(myangel2_map,0)
23632353
23642354   /* video hardware */
23652355   MDRV_SCREEN_MODIFY("screen")
r4679r4680
23742364   /* basic machine hardware */
23752365   MDRV_IMPORT_FROM(mj4simai)
23762366   MDRV_CPU_MODIFY("maincpu")
2377   MDRV_CPU_PROGRAM_MAP(pzlbowl_readmem,pzlbowl_writemem)
2367   MDRV_CPU_PROGRAM_MAP(pzlbowl_map,0)
23782368
23792369   /* video hardware */
23802370   MDRV_SCREEN_MODIFY("screen")
r4679r4680
23872377   /* basic machine hardware */
23882378   MDRV_IMPORT_FROM(mj4simai)
23892379   MDRV_CPU_MODIFY("maincpu")
2390   MDRV_CPU_PROGRAM_MAP(penbros_readmem,penbros_writemem)
2380   MDRV_CPU_PROGRAM_MAP(penbros_map,0)
23912381
23922382   /* video hardware */
23932383   MDRV_SCREEN_MODIFY("screen")
src/mame/drivers/witch.c
r4679r4680
439439
440440static ADDRESS_MAP_START( map_main, ADDRESS_SPACE_PROGRAM, 8 )
441441   AM_RANGE(0x0000, UNBANKED_SIZE-1) AM_ROM
442   AM_RANGE(UNBANKED_SIZE, 0x7fff) AM_READ(SMH_BANK1)
442   AM_RANGE(UNBANKED_SIZE, 0x7fff) AM_READ(SMH_BANK(1))
443443   AM_RANGE(0x8000, 0x8001) AM_DEVREADWRITE("ym1", ym2203_r, ym2203_w)
444444   AM_RANGE(0x8008, 0x8009) AM_DEVREADWRITE("ym2", ym2203_r, ym2203_w)
445445   AM_RANGE(0xa000, 0xa00f) AM_READWRITE(read_a00x, write_a00x)
r4679r4680
844844static DRIVER_INIT(witch)
845845{
846846    UINT8 *ROM = (UINT8 *)memory_region(machine, "maincpu");
847   memory_set_bankptr(machine, 1,&ROM[0x10000+UNBANKED_SIZE]);
847   memory_set_bankptr(machine, 1, &ROM[0x10000+UNBANKED_SIZE]);
848848
849   memory_install_read8_handler(cpu_get_address_space(machine->cpu[1], ADDRESS_SPACE_PROGRAM), 0x7000, 0x700f, 0, 0, prot_read_700x);
849   memory_install_read8_handler(cputag_get_address_space(machine, "sub", ADDRESS_SPACE_PROGRAM), 0x7000, 0x700f, 0, 0, prot_read_700x);
850850   bank = -1;
851851}
852852
src/mame/drivers/flkatck.c
r4679r4680
8686         soundlatch_w(space, 0, data);
8787         break;
8888      case 0x06:   /* Cause interrupt on audio CPU */
89         cpu_set_input_line(space->machine->cpu[1],0,HOLD_LINE);
89         cputag_set_input_line(space->machine, "audiocpu", 0, HOLD_LINE);
9090         break;
9191      case 0x07:   /* watchdog reset */
9292         watchdog_reset_w(space, 0, data);
r4679r4680
106106}
107107
108108
109static ADDRESS_MAP_START( flkatck_readmem, ADDRESS_SPACE_PROGRAM, 8 )
110   AM_RANGE(0x0000, 0x03ff) AM_READ(SMH_RAM)
111   AM_RANGE(0x0400, 0x041f) AM_READ(flkatck_ls138_r)         /* inputs + DIPS */
112   AM_RANGE(0x0800, 0x0bff) AM_READ(SMH_RAM)      /* palette */
113   AM_RANGE(0x1000, 0x1fff) AM_READ(SMH_RAM)               /* RAM */
114   AM_RANGE(0x2000, 0x3fff) AM_READ(SMH_RAM)      /* Video RAM (007121) */
115   AM_RANGE(0x4000, 0x5fff) AM_READ(SMH_BANK1)               /* banked ROM */
116   AM_RANGE(0x6000, 0xffff) AM_READ(SMH_ROM)               /* ROM */
109static ADDRESS_MAP_START( flkatck_map, ADDRESS_SPACE_PROGRAM, 8 )
110   AM_RANGE(0x0000, 0x0007) AM_RAM_WRITE(flkatck_k007121_regs_w)                            /* 007121 registers */
111   AM_RANGE(0x0008, 0x03ff) AM_RAM                                                   /* RAM */
112   AM_RANGE(0x0400, 0x041f) AM_READWRITE(flkatck_ls138_r, flkatck_ls138_w)                     /* inputs, DIPS, bankswitch, counters, sound command */
113   AM_RANGE(0x0800, 0x0bff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_le_w) AM_BASE(&paletteram)   /* palette */
114   AM_RANGE(0x1000, 0x1fff) AM_RAM                                                   /* RAM */
115   AM_RANGE(0x2000, 0x3fff) AM_RAM_WRITE(flkatck_k007121_w) AM_BASE(&k007121_ram)               /* Video RAM (007121) */
116   AM_RANGE(0x4000, 0x5fff) AM_ROMBANK(1)                                             /* banked ROM */
117   AM_RANGE(0x6000, 0xffff) AM_ROM                                                   /* ROM */
117118ADDRESS_MAP_END
118119
119static ADDRESS_MAP_START( flkatck_writemem, ADDRESS_SPACE_PROGRAM, 8 )
120   AM_RANGE(0x0000, 0x0007) AM_WRITE(flkatck_k007121_regs_w)    /* 007121 registers */
121   AM_RANGE(0x0000, 0x03ff) AM_WRITE(SMH_RAM)
122   AM_RANGE(0x0400, 0x041f) AM_WRITE(flkatck_ls138_w)         /* bankswitch + counters + sound command */
123   AM_RANGE(0x0800, 0x0bff) AM_WRITE(paletteram_xBBBBBGGGGGRRRRR_le_w) AM_BASE(&paletteram)/* palette */
124   AM_RANGE(0x1000, 0x1fff) AM_WRITE(SMH_RAM)               /* RAM */
125   AM_RANGE(0x2000, 0x3fff) AM_WRITE(flkatck_k007121_w) AM_BASE(&k007121_ram)         /* Video RAM (007121) */
126   AM_RANGE(0x4000, 0x5fff) AM_WRITE(SMH_BANK1)               /* banked ROM */
127   AM_RANGE(0x6000, 0xffff) AM_WRITE(SMH_ROM)               /* ROM */
120static ADDRESS_MAP_START( flkatck_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
121   AM_RANGE(0x0000, 0x7fff) AM_ROM                                    /* ROM */
122   AM_RANGE(0x8000, 0x87ff) AM_RAM                                    /* RAM */
123   AM_RANGE(0x9000, 0x9000) AM_READWRITE(multiply_r, multiply_w)            /* ??? */
124//  AM_RANGE(0x9001, 0x9001) AM_RAM                                             /* ??? */
125   AM_RANGE(0x9004, 0x9004) AM_READNOP                                 /* ??? */
126   AM_RANGE(0x9006, 0x9006) AM_WRITENOP                              /* ??? */
127   AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_r)                        /* soundlatch_r */
128   AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE("konami", k007232_r, k007232_w)   /* 007232 registers */
129   AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)         /* YM2151 */
128130ADDRESS_MAP_END
129131
130static ADDRESS_MAP_START( flkatck_readmem_sound, ADDRESS_SPACE_PROGRAM, 8 )
131   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)            /* ROM */
132   AM_RANGE(0x8000, 0x87ff) AM_READ(SMH_RAM)            /* RAM */
133   AM_RANGE(0x9000, 0x9000) AM_READ(multiply_r)            /* ??? */
134//  AM_RANGE(0x9001, 0x9001) AM_READ(SMH_RAM)               /* ??? */
135   AM_RANGE(0x9004, 0x9004) AM_READ(SMH_RAM)            /* ??? */
136   AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_r)         /* soundlatch_r */
137   AM_RANGE(0xb000, 0xb00d) AM_DEVREAD("konami", k007232_r)   /* 007232 registers */
138   AM_RANGE(0xc000, 0xc001) AM_DEVREAD("ym", ym2151_r) /* YM2151 */
139ADDRESS_MAP_END
140132
141static ADDRESS_MAP_START( flkatck_writemem_sound, ADDRESS_SPACE_PROGRAM, 8 )
142   AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM)               /* ROM */
143   AM_RANGE(0x8000, 0x87ff) AM_WRITE(SMH_RAM)               /* RAM */
144   AM_RANGE(0x9000, 0x9001) AM_WRITE(multiply_w)               /* ??? */
145//  AM_RANGE(0x9001, 0x9001) AM_WRITE(SMH_RAM)                  /* ??? */
146   AM_RANGE(0x9006, 0x9006) AM_WRITE(SMH_RAM)               /* ??? */
147   AM_RANGE(0xb000, 0xb00d) AM_DEVWRITE("konami", k007232_w)    /* 007232 registers */
148   AM_RANGE(0xc000, 0xc001) AM_DEVWRITE("ym", ym2151_w)      /* YM2151 */
149ADDRESS_MAP_END
150
151
152133static INPUT_PORTS_START( flkatck )
153134   PORT_START("DSW1")
154135   KONAMI_COINAGE(DEF_STR( Free_Play ), "Invalid")
r4679r4680
231212
232213   /* basic machine hardware */
233214   MDRV_CPU_ADD("maincpu", HD6309,3000000*4) /* HD63C09EP, 24/8 MHz */
234   MDRV_CPU_PROGRAM_MAP(flkatck_readmem,flkatck_writemem)
215   MDRV_CPU_PROGRAM_MAP(flkatck_map,0)
235216   MDRV_CPU_VBLANK_INT("screen", flkatck_interrupt)
236217
237218   MDRV_CPU_ADD("audiocpu", Z80,3579545)   /* NEC D780C-1, 3.579545 MHz */
238   MDRV_CPU_PROGRAM_MAP(flkatck_readmem_sound,flkatck_writemem_sound)
219   MDRV_CPU_PROGRAM_MAP(flkatck_sound_map,0)
239220
240221   MDRV_QUANTUM_TIME(HZ(600))
241222
src/mame/drivers/namcofl.c
r4679r4680
239239}
240240
241241static ADDRESS_MAP_START( namcofl_mem, ADDRESS_SPACE_PROGRAM, 32 )
242   AM_RANGE(0x00000000, 0x000fffff) AM_READWRITE(SMH_BANK1, SMH_BANK1)
243   AM_RANGE(0x10000000, 0x100fffff) AM_READWRITE(SMH_BANK2, SMH_BANK2)
242   AM_RANGE(0x00000000, 0x000fffff) AM_READWRITE(SMH_BANK(1), SMH_BANK(1))
243   AM_RANGE(0x10000000, 0x100fffff) AM_READWRITE(SMH_BANK(2), SMH_BANK(2))
244244   AM_RANGE(0x20000000, 0x201fffff) AM_ROM AM_REGION("user1", 0)   /* data */
245245   AM_RANGE(0x30000000, 0x30001fff) AM_RAM   AM_BASE(&generic_nvram32) AM_SIZE(&generic_nvram_size) /* nvram */
246246   AM_RANGE(0x30100000, 0x30100003) AM_WRITE(namcofl_spritebank_w)
r4679r4680
472472
473473static TIMER_CALLBACK( network_interrupt_callback )
474474{
475   cpu_set_input_line(machine->cpu[0], I960_IRQ0, ASSERT_LINE);
475   cputag_set_input_line(machine, "maincpu", I960_IRQ0, ASSERT_LINE);
476476   timer_set(machine, video_screen_get_frame_period(machine->primary_screen), NULL, 0, network_interrupt_callback);
477477}
478478
479479
480480static TIMER_CALLBACK( vblank_interrupt_callback )
481481{
482   cpu_set_input_line(machine->cpu[0], I960_IRQ2, ASSERT_LINE);
482   cputag_set_input_line(machine, "maincpu", I960_IRQ2, ASSERT_LINE);
483483   timer_set(machine, video_screen_get_frame_period(machine->primary_screen), NULL, 0, vblank_interrupt_callback);
484484}
485485
r4679r4680
487487static TIMER_CALLBACK( raster_interrupt_callback )
488488{
489489   video_screen_update_partial(machine->primary_screen, video_screen_get_vpos(machine->primary_screen));
490   cpu_set_input_line(machine->cpu[0], I960_IRQ1, ASSERT_LINE);
490   cputag_set_input_line(machine, "maincpu", I960_IRQ1, ASSERT_LINE);
491491   timer_adjust_oneshot(raster_interrupt_timer, video_screen_get_frame_period(machine->primary_screen), 0);
492492}
493493
r4679r4680
723723
724724static void namcofl_common_init(running_machine *machine)
725725{
726   namcofl_workram = auto_malloc(0x100000);
726   namcofl_workram = auto_alloc_array(machine, UINT32, 0x100000/4);
727727
728728   memory_set_bankptr(machine,  1, memory_region(machine, "maincpu") );
729729   memory_set_bankptr(machine,  2, namcofl_workram );
src/mame/drivers/luckgrln.c
r4679r4680
7979
8080static ADDRESS_MAP_START( mainmap, ADDRESS_SPACE_PROGRAM, 8 )
8181   AM_RANGE(0x00000, 0x03fff) AM_ROM
82   AM_RANGE(0x10000, 0x1ffff) AM_READ(SMH_BANK1)
82   AM_RANGE(0x10000, 0x1ffff) AM_READ(SMH_BANK(1))
8383   AM_RANGE(0x0d800, 0x0dfff) AM_RAM
8484   AM_RANGE(0x0f000, 0x0ffff) AM_RAM
8585   AM_RANGE(0xf0000, 0xfffff) AM_RAM
src/mame/drivers/dynax.c
r4679r4680
105105   int irq   =   ((dynax_sound_irq)   ? 0x08 : 0) |
106106            ((dynax_vblank_irq)  ? 0x10 : 0) |
107107            ((dynax_blitter_irq) ? 0x20 : 0) ;
108   cpu_set_input_line_and_vector(machine->cpu[0], 0, irq ? ASSERT_LINE : CLEAR_LINE, 0xc7 | irq); /* rst $xx */
108   cputag_set_input_line_and_vector(machine, "maincpu", 0, irq ? ASSERT_LINE : CLEAR_LINE, 0xc7 | irq); /* rst $xx */
109109}
110110
111111static WRITE8_HANDLER( dynax_vblank_ack_w )
r4679r4680
145145   int irq   =   ((dynax_blitter_irq)   ? 0x08 : 0) |
146146            ((dynax_blitter2_irq)   ? 0x10 : 0) |
147147            ((dynax_vblank_irq)      ? 0x20 : 0) ;
148   cpu_set_input_line_and_vector(machine->cpu[0], 0, irq ? ASSERT_LINE : CLEAR_LINE, 0xc7 | irq); /* rst $xx */
148   cputag_set_input_line_and_vector(machine, "maincpu", 0, irq ? ASSERT_LINE : CLEAR_LINE, 0xc7 | irq); /* rst $xx */
149149}
150150
151151static WRITE8_HANDLER( jantouki_vblank_ack_w )
r4679r4680
185185   int irq   =   ((dynax_sound_irq)         ? 0x08 : 0) |
186186            ((dynax_soundlatch_irq)      ? 0x10 : 0) |
187187            ((dynax_sound_vblank_irq)   ? 0x20 : 0) ;
188   cpu_set_input_line_and_vector(machine->cpu[1], 0, irq ? ASSERT_LINE : CLEAR_LINE, 0xc7 | irq); /* rst $xx */
188   cputag_set_input_line_and_vector(machine, "soundcpu", 0, irq ? ASSERT_LINE : CLEAR_LINE, 0xc7 | irq); /* rst $xx */
189189}
190190
191191static INTERRUPT_GEN( jantouki_sound_vblank_interrupt )
r4679r4680
408408   if (toggle)
409409   {
410410      if (resetkludge)   // don't know what's wrong, but NMIs when the 5205 is reset make the game crash
411      cpu_set_input_line(device->machine->cpu[0], INPUT_LINE_NMI, PULSE_LINE);
411      cputag_set_input_line(device->machine, "maincpu", INPUT_LINE_NMI, PULSE_LINE);
412412   }
413413}
414414static void adpcm_int_cpu1(const device_config *device)
r4679r4680
422422   if (toggle)
423423   {
424424      if (resetkludge)   // don't know what's wrong, but NMIs when the 5205 is reset make the game crash
425      cpu_set_input_line(device->machine->cpu[1], INPUT_LINE_NMI, PULSE_LINE);   // cpu1
425      cputag_set_input_line(device->machine, "soundcpu", INPUT_LINE_NMI, PULSE_LINE);   // cpu1
426426   }
427427}
428428
r4679r4680
463463static ADDRESS_MAP_START( hnoridur_mem_map, ADDRESS_SPACE_PROGRAM, 8 )
464464   AM_RANGE( 0x0000, 0x6fff ) AM_ROM
465465   AM_RANGE( 0x7000, 0x7fff ) AM_RAM AM_BASE(&generic_nvram) AM_SIZE(&generic_nvram_size)
466   AM_RANGE( 0x8000, 0xffff ) AM_READWRITE(SMH_BANK1, hnoridur_palette_w)
466   AM_RANGE( 0x8000, 0xffff ) AM_READWRITE(SMH_BANK(1), hnoridur_palette_w)
467467ADDRESS_MAP_END
468468
469469static ADDRESS_MAP_START( mcnpshnt_mem_map, ADDRESS_SPACE_PROGRAM, 8 )
470470   AM_RANGE( 0x0000, 0x5fff ) AM_ROM
471471   AM_RANGE( 0x6000, 0x6fff ) AM_RAM
472472   AM_RANGE( 0x7000, 0x7fff ) AM_RAM AM_BASE(&generic_nvram) AM_SIZE(&generic_nvram_size)
473   AM_RANGE( 0x8000, 0xffff ) AM_READWRITE(SMH_BANK1, hnoridur_palette_w)
473   AM_RANGE( 0x8000, 0xffff ) AM_READWRITE(SMH_BANK(1), hnoridur_palette_w)
474474ADDRESS_MAP_END
475475
476476static ADDRESS_MAP_START( nanajign_mem_map, ADDRESS_SPACE_PROGRAM, 8 )
r4679r4680
39803980void mjelctrn_update_irq(running_machine *machine)
39813981{
39823982   dynax_blitter_irq = 1;
3983   cpu_set_input_line_and_vector(machine->cpu[0], 0, HOLD_LINE, 0xfa);
3983   cputag_set_input_line_and_vector(machine, "maincpu", 0, HOLD_LINE, 0xfa);
39843984}
39853985
39863986static INTERRUPT_GEN( mjelctrn_vblank_interrupt )
r4679r4680
40144014void neruton_update_irq(running_machine *machine)
40154015{
40164016   dynax_blitter_irq = 1;
4017   cpu_set_input_line_and_vector(machine->cpu[0], 0, HOLD_LINE, 0x42);
4017   cputag_set_input_line_and_vector(machine, "maincpu", 0, HOLD_LINE, 0x42);
40184018}
40194019
40204020static INTERRUPT_GEN( neruton_vblank_interrupt )
r4679r4680
45434543   }
45444544
45454545   /* Address lines scrambling on the blitter data roms */
4546   rom = malloc_or_die(0xc0000);
4546   rom = alloc_array_or_die(UINT8, 0xc0000);
45474547   memcpy(rom, gfx, 0xc0000);
45484548   for (i = 0; i < 0xc0000; i++)
45494549      gfx[i] = rom[BITSWAP24(i,23,22,21,20,19,18,14,15, 16,17,13,12,11,10,9,8, 7,6,5,4,3,2,1,0)];
r4679r4680
52505250   int i;
52515251   UINT8   *rom = memory_region(machine, "maincpu");
52525252   size_t  size = memory_region_length(machine, "maincpu");
5253   UINT8   *rom1 = malloc_or_die(size);
5253   UINT8   *rom1 = alloc_array_or_die(UINT8, size);
52545254
52555255      memcpy(rom1,rom,size);
52565256      for (i = 0; i < size; i++)
r4679r4680
52635263   int i,j;
52645264   UINT8   *rom = memory_region(machine, "maincpu");
52655265   size_t  size = memory_region_length(machine, "maincpu");
5266   UINT8   *rom1 = malloc_or_die(size);
5266   UINT8   *rom1 = alloc_array_or_die(UINT8, size);
52675267
52685268      memcpy(rom1,rom,size);
52695269      for (i = 0; i < size; i++)
r4679r4680
56005600
56015601static DRIVER_INIT( mjreach )
56025602{
5603   memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x10060, 0x10060, 0, 0, yarunara_flipscreen_w);
5603   memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x10060, 0x10060, 0, 0, yarunara_flipscreen_w);
56045604}
56055605
56065606/***************************************************************************
src/mame/drivers/shootout.c
r4679r4680
1010    Perhaps the USA arm of Deco designed this game rather than the Japanese
1111    arm?
1212
13    Shoot Out (Japan) uses the YM2203 ports for CPU bankswitching so it does
14    not work with sound turned off.
15
1613    Shoot Out (Korean bootleg) is based on the earlier DE-0203 board but
1714    strangely features the same encryption as used on the DE-0219 board.  It
1815    also has some edited graphics.
r4679r4680
6158static WRITE8_HANDLER( sound_cpu_command_w )
6259{
6360   soundlatch_w( space, offset, data );
64   cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_NMI, PULSE_LINE );
61   cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE );
6562}
6663
6764static WRITE8_HANDLER( shootout_flipscreen_w )
r4679r4680
7673
7774/*******************************************************************************/
7875
79static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 )
80   AM_RANGE(0x0000, 0x0fff) AM_READ(SMH_RAM)
81   AM_RANGE(0x1000, 0x1000) AM_READ_PORT("DSW1")
82   AM_RANGE(0x1001, 0x1001) AM_READ_PORT("P1")
83   AM_RANGE(0x1002, 0x1002) AM_READ_PORT("P2")
84   AM_RANGE(0x1003, 0x1003) AM_READ_PORT("DSW2")
85   AM_RANGE(0x2000, 0x27ff) AM_READ(SMH_RAM)   /* foreground */
86   AM_RANGE(0x2800, 0x2fff) AM_READ(SMH_RAM)   /* background */
87   AM_RANGE(0x4000, 0x7fff) AM_READ(SMH_BANK1)
88   AM_RANGE(0x8000, 0xffff) AM_READ(SMH_ROM)
76static ADDRESS_MAP_START( shootout_map, ADDRESS_SPACE_PROGRAM, 8 )
77   AM_RANGE(0x0000, 0x0fff) AM_RAM
78   AM_RANGE(0x1000, 0x1000) AM_READ_PORT("DSW1") AM_WRITE(shootout_bankswitch_w)
79   AM_RANGE(0x1001, 0x1001) AM_READ_PORT("P1") AM_WRITE(shootout_flipscreen_w)
80   AM_RANGE(0x1002, 0x1002) AM_READ_PORT("P2") AM_WRITE(shootout_coin_counter_w)
81   AM_RANGE(0x1003, 0x1003) AM_READ_PORT("DSW2") AM_WRITE(sound_cpu_command_w)
82   AM_RANGE(0x1004, 0x17ff) AM_RAM
83   AM_RANGE(0x1800, 0x19ff) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
84   AM_RANGE(0x2000, 0x27ff) AM_RAM_WRITE(shootout_textram_w) AM_BASE(&shootout_textram)
85   AM_RANGE(0x2800, 0x2fff) AM_RAM_WRITE(shootout_videoram_w) AM_BASE(&videoram)
86   AM_RANGE(0x4000, 0x7fff) AM_ROMBANK(1)
87   AM_RANGE(0x8000, 0xffff) AM_ROM
8988ADDRESS_MAP_END
9089
91static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 )
92   AM_RANGE(0x0000, 0x0fff) AM_WRITE(SMH_RAM)
93   AM_RANGE(0x1000, 0x1000) AM_WRITE(shootout_bankswitch_w)
94   AM_RANGE(0x1001, 0x1001) AM_WRITE(shootout_flipscreen_w)
95   AM_RANGE(0x1002, 0x1002) AM_WRITE(shootout_coin_counter_w)
96   AM_RANGE(0x1003, 0x1003) AM_WRITE(sound_cpu_command_w)
97   AM_RANGE(0x1004, 0x17ff) AM_WRITE(SMH_RAM)
98   AM_RANGE(0x1800, 0x19ff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
99   AM_RANGE(0x2000, 0x27ff) AM_WRITE(shootout_textram_w) AM_BASE(&shootout_textram)
100   AM_RANGE(0x2800, 0x2fff) AM_WRITE(shootout_videoram_w) AM_BASE(&videoram)
101   AM_RANGE(0x4000, 0xffff) AM_WRITE(SMH_ROM)
102ADDRESS_MAP_END
103
104static ADDRESS_MAP_START( readmem_alt, ADDRESS_SPACE_PROGRAM, 8 )
105   AM_RANGE(0x0000, 0x0fff) AM_READ(SMH_RAM)
90static ADDRESS_MAP_START( shootouj_map, ADDRESS_SPACE_PROGRAM, 8 )
91   AM_RANGE(0x0000, 0x0fff) AM_RAM
10692   AM_RANGE(0x1000, 0x1000) AM_READ_PORT("DSW1")
10793   AM_RANGE(0x1001, 0x1001) AM_READ_PORT("P1")
10894   AM_RANGE(0x1002, 0x1002) AM_READ_PORT("P2")
10995   AM_RANGE(0x1003, 0x1003) AM_READ_PORT("DSW2")
110   AM_RANGE(0x2000, 0x21ff) AM_READ(SMH_RAM)
111   AM_RANGE(0x2800, 0x2801) AM_DEVREAD("ym", ym2203_r)
112   AM_RANGE(0x3000, 0x37ff) AM_READ(SMH_RAM)   /* foreground */
113   AM_RANGE(0x3800, 0x3fff) AM_READ(SMH_RAM)   /* background */
114   AM_RANGE(0x4000, 0x7fff) AM_READ(SMH_BANK1)
115   AM_RANGE(0x8000, 0xffff) AM_READ(SMH_ROM)
116ADDRESS_MAP_END
117
118static ADDRESS_MAP_START( writemem_alt, ADDRESS_SPACE_PROGRAM, 8 )
119   AM_RANGE(0x0000, 0x0fff) AM_WRITE(SMH_RAM)
12096   AM_RANGE(0x1800, 0x1800) AM_WRITE(shootout_coin_counter_w)
121   AM_RANGE(0x2000, 0x21ff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
122   AM_RANGE(0x2800, 0x2801) AM_DEVWRITE("ym", ym2203_w)
123   AM_RANGE(0x3000, 0x37ff) AM_WRITE(shootout_textram_w) AM_BASE(&shootout_textram)
124   AM_RANGE(0x3800, 0x3fff) AM_WRITE(shootout_videoram_w) AM_BASE(&videoram)
125   AM_RANGE(0x4000, 0xffff) AM_WRITE(SMH_ROM)
97   AM_RANGE(0x2000, 0x21ff) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
98   AM_RANGE(0x2800, 0x2801) AM_DEVREADWRITE("ym", ym2203_r,ym2203_w)
99   AM_RANGE(0x3000, 0x37ff) AM_RAM_WRITE(shootout_textram_w) AM_BASE(&shootout_textram)
100   AM_RANGE(0x3800, 0x3fff) AM_RAM_WRITE(shootout_videoram_w) AM_BASE(&videoram)
101   AM_RANGE(0x4000, 0x7fff) AM_ROMBANK(1)
102   AM_RANGE(0x8000, 0xffff) AM_ROM
126103ADDRESS_MAP_END
127104
128105/*******************************************************************************/
129106
130static ADDRESS_MAP_START( sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
131   AM_RANGE(0x0000, 0x07ff) AM_READ(SMH_RAM)
132   AM_RANGE(0x4000, 0x4001) AM_DEVREAD("ym", ym2203_r)
107static ADDRESS_MAP_START( shootout_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
108   AM_RANGE(0x0000, 0x07ff) AM_RAM
109   AM_RANGE(0x4000, 0x4001) AM_DEVREADWRITE("ym", ym2203_r,ym2203_w)
133110   AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_r)
134   AM_RANGE(0xc000, 0xffff) AM_READ(SMH_ROM)
135ADDRESS_MAP_END
136
137static ADDRESS_MAP_START( sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
138   AM_RANGE(0x0000, 0x07ff) AM_WRITE(SMH_RAM)
139   AM_RANGE(0x4000, 0x4001) AM_DEVWRITE("ym", ym2203_w)
111   AM_RANGE(0xc000, 0xffff) AM_ROM
140112   AM_RANGE(0xd000, 0xd000) AM_WRITE(interrupt_enable_w)
141   AM_RANGE(0xc000, 0xffff) AM_WRITE(SMH_ROM)
142113ADDRESS_MAP_END
143114
144115/*******************************************************************************/
145116
117static INPUT_CHANGED( coin_inserted )
118{
119   cputag_set_input_line(field->port->machine, "maincpu", INPUT_LINE_NMI, newval ? ASSERT_LINE : CLEAR_LINE);
120}
121
146122static INPUT_PORTS_START( shootout )
147123   PORT_START("P1")
148124   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY
r4679r4680
161137   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_COCKTAIL
162138   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_COCKTAIL
163139   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_COCKTAIL
164   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_COIN2 )
165   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_COIN1 )
140   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_COIN2 ) PORT_CHANGED(coin_inserted, 0)
141   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_COIN1 ) PORT_CHANGED(coin_inserted, 0)
166142
167143   PORT_START("DSW1")
168144   PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coin_A ) )
r4679r4680
262238
263239static void shootout_snd_irq(const device_config *device, int linestate)
264240{
265   cpu_set_input_line(device->machine->cpu[1],0,linestate);
241   cputag_set_input_line(device->machine, "audiocpu", 0, linestate);
266242}
267243
268244static void shootout_snd2_irq(const device_config *device, int linestate)
269245{
270   cpu_set_input_line(device->machine->cpu[0],0,linestate);
246   cputag_set_input_line(device->machine, "maincpu", 0, linestate);
271247}
272248
273249static const ym2203_interface ym2203_config =
r4679r4680
293269   shootout_snd2_irq
294270};
295271
296static INTERRUPT_GEN( shootout_interrupt )
297{
298   static int coin = 0;
299
300   if ( input_port_read(device->machine, "P2") & 0xc0 ) {
301      if ( coin == 0 ) {
302         coin = 1;
303         nmi_line_pulse(device);
304      }
305   } else
306      coin = 0;
307}
308
309272static MACHINE_DRIVER_START( shootout )
310273
311274   /* basic machine hardware */
312275   MDRV_CPU_ADD("maincpu", M6502, 2000000)   /* 2 MHz? */
313   MDRV_CPU_PROGRAM_MAP(readmem,writemem)
314   MDRV_CPU_VBLANK_INT("screen", shootout_interrupt) /* nmi's are triggered at coin up */
276   MDRV_CPU_PROGRAM_MAP(shootout_map,0)
315277
316278   MDRV_CPU_ADD("audiocpu", M6502, 1500000)
317   MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem)
279   MDRV_CPU_PROGRAM_MAP(shootout_sound_map,0)
318280
319281   /* video hardware */
320282   MDRV_SCREEN_ADD("screen", RASTER)
r4679r4680
344306
345307   /* basic machine hardware */
346308   MDRV_CPU_ADD("maincpu", M6502, 2000000)   /* 2 MHz? */
347   MDRV_CPU_PROGRAM_MAP(readmem_alt,writemem_alt)
348   MDRV_CPU_VBLANK_INT("screen", shootout_interrupt) /* nmi's are triggered at coin up */
309   MDRV_CPU_PROGRAM_MAP(shootouj_map,0)
349310
350311   /* video hardware */
351312   MDRV_SCREEN_ADD("screen", RASTER)
r4679r4680
459420{
460421   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
461422   int length = memory_region_length(machine, "maincpu");
462   UINT8 *decrypt = auto_malloc(length - 0x8000);
423   UINT8 *decrypt = auto_alloc_array(machine, UINT8, length - 0x8000);
463424   UINT8 *rom = memory_region(machine, "maincpu");
464425   int A;
465426
src/mame/drivers/contra.c
r4679r4680
5353
5454static WRITE8_HANDLER( contra_sh_irqtrigger_w )
5555{
56   cpu_set_input_line(space->machine->cpu[1],M6809_IRQ_LINE,HOLD_LINE);
56   cputag_set_input_line(space->machine, "audiocpu", M6809_IRQ_LINE, HOLD_LINE);
5757}
5858
5959static WRITE8_HANDLER( contra_coin_counter_w )
r4679r4680
6969
7070
7171
72static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 )
72static ADDRESS_MAP_START( contra_map, ADDRESS_SPACE_PROGRAM, 8 )
73   AM_RANGE(0x0000, 0x0007) AM_WRITE(contra_K007121_ctrl_0_w)
7374   AM_RANGE(0x0010, 0x0010) AM_READ_PORT("SYSTEM")
7475   AM_RANGE(0x0011, 0x0011) AM_READ_PORT("P1")
7576   AM_RANGE(0x0012, 0x0012) AM_READ_PORT("P2")
r4679r4680
7879   AM_RANGE(0x0015, 0x0015) AM_READ_PORT("DSW2")
7980   AM_RANGE(0x0016, 0x0016) AM_READ_PORT("DSW3")
8081
81   AM_RANGE(0x0c00, 0x0cff) AM_READ(SMH_RAM)
82   AM_RANGE(0x1000, 0x5fff) AM_READ(SMH_RAM)
83   AM_RANGE(0x6000, 0x7fff) AM_READ(SMH_BANK1)
84   AM_RANGE(0x8000, 0xffff) AM_READ(SMH_ROM)
85ADDRESS_MAP_END
86
87static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 )
88   AM_RANGE(0x0000, 0x0007) AM_WRITE(contra_K007121_ctrl_0_w)
8982   AM_RANGE(0x0018, 0x0018) AM_WRITE(contra_coin_counter_w)
9083   AM_RANGE(0x001a, 0x001a) AM_WRITE(contra_sh_irqtrigger_w)
9184   AM_RANGE(0x001c, 0x001c) AM_WRITE(cpu_sound_command_w)
9285   AM_RANGE(0x001e, 0x001e) AM_WRITENOP   /* ? */
9386   AM_RANGE(0x0060, 0x0067) AM_WRITE(contra_K007121_ctrl_1_w)
94   AM_RANGE(0x0c00, 0x0cff) AM_WRITE(SMH_RAM) AM_BASE(&paletteram)
95   AM_RANGE(0x1000, 0x1fff) AM_WRITE(SMH_RAM)
87
88   AM_RANGE(0x0c00, 0x0cff) AM_RAM AM_BASE(&paletteram)
89
90   AM_RANGE(0x1000, 0x1fff) AM_RAM
91
92   AM_RANGE(0x2000, 0x5fff) AM_READ(SMH_RAM)
9693   AM_RANGE(0x2000, 0x23ff) AM_WRITE(contra_fg_cram_w) AM_BASE(&contra_fg_cram)
9794   AM_RANGE(0x2400, 0x27ff) AM_WRITE(contra_fg_vram_w) AM_BASE(&contra_fg_vram)
9895   AM_RANGE(0x2800, 0x2bff) AM_WRITE(contra_text_cram_w) AM_BASE(&contra_text_cram)
r4679r4680
10299   AM_RANGE(0x4000, 0x43ff) AM_WRITE(contra_bg_cram_w) AM_BASE(&contra_bg_cram)
103100   AM_RANGE(0x4400, 0x47ff) AM_WRITE(contra_bg_vram_w) AM_BASE(&contra_bg_vram)
104101   AM_RANGE(0x4800, 0x5fff) AM_WRITE(SMH_RAM)
105   AM_RANGE(0x6000, 0x6fff) AM_WRITE(SMH_ROM)
102
103   AM_RANGE(0x6000, 0x7fff) AM_ROMBANK(1)
106104    AM_RANGE(0x7000, 0x7000) AM_WRITE(contra_bankswitch_w)
107   AM_RANGE(0x7001, 0xffff) AM_WRITE(SMH_ROM)
108ADDRESS_MAP_END
109105
110static ADDRESS_MAP_START( readmem_sound, ADDRESS_SPACE_PROGRAM, 8 )
111   AM_RANGE(0x0000, 0x0000) AM_READ(soundlatch_r)
112   AM_RANGE(0x2000, 0x2001) AM_DEVREAD("ym", ym2151_r)
113   AM_RANGE(0x6000, 0x67ff) AM_READ(SMH_RAM)
114   AM_RANGE(0x8000, 0xffff) AM_READ(SMH_ROM)
106   AM_RANGE(0x8000, 0xffff) AM_ROM
115107ADDRESS_MAP_END
116108
117static ADDRESS_MAP_START( writemem_sound, ADDRESS_SPACE_PROGRAM, 8 )
118   AM_RANGE(0x2000, 0x2001) AM_DEVWRITE("ym", ym2151_w)
109static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 )
110   AM_RANGE(0x0000, 0x0000) AM_READ(soundlatch_r)
111   AM_RANGE(0x2000, 0x2001) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
119112   AM_RANGE(0x4000, 0x4000) AM_WRITENOP /* read triggers irq reset and latch read (in the hardware only). */
120   AM_RANGE(0x6000, 0x67ff) AM_WRITE(SMH_RAM)
121   AM_RANGE(0x8000, 0xffff) AM_WRITE(SMH_ROM)
113   AM_RANGE(0x6000, 0x67ff) AM_RAM
114   AM_RANGE(0x8000, 0xffff) AM_ROM
122115ADDRESS_MAP_END
123116
124117
r4679r4680
197190
198191   /* basic machine hardware */
199192    MDRV_CPU_ADD("maincpu", M6809, 1500000)
200   MDRV_CPU_PROGRAM_MAP(readmem,writemem)
193   MDRV_CPU_PROGRAM_MAP(contra_map,0)
201194   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
202195
203196    MDRV_CPU_ADD("audiocpu", M6809, 2000000)
204   MDRV_CPU_PROGRAM_MAP(readmem_sound,writemem_sound)
197   MDRV_CPU_PROGRAM_MAP(sound_map,0)
205198
206199   MDRV_QUANTUM_TIME(HZ(600))   /* 10 CPU slices per frame - enough for the sound CPU to read all commands */
207200
src/mame/drivers/zn.c
r4679r4680
298298
299299   if( param )
300300   {
301      timer_adjust_oneshot( dip_timer, cpu_clocks_to_attotime( machine->cpu[0], 50 ), 0 );
301      timer_adjust_oneshot( dip_timer, cputag_clocks_to_attotime( machine, "maincpu", 50 ), 0 );
302302   }
303303}
304304
r4679r4680
648648static WRITE32_HANDLER( zn_qsound_w )
649649{
650650   soundlatch_w(space, 0, data);
651   cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_NMI, PULSE_LINE);
651   cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
652652}
653653
654654static DRIVER_INIT( coh1000c )
655655{
656   memory_install_read32_handler ( cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1f000000, 0x1f3fffff, 0, 0, SMH_BANK1 );     /* fixed game rom */
657   memory_install_read32_handler ( cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1f400000, 0x1f7fffff, 0, 0, SMH_BANK2 );     /* banked game rom */
658   memory_install_write32_handler( cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1fb00000, 0x1fb00003, 0, 0, bank_coh1000c_w ); /* bankswitch */
659   memory_install_read32_handler ( cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1fb40010, 0x1fb40013, 0, 0, capcom_kickharness_r );
660   memory_install_read32_handler ( cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1fb40020, 0x1fb40023, 0, 0, capcom_kickharness_r );
661   memory_install_read32_handler ( cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1fb80000, 0x1fbfffff, 0, 0, SMH_BANK3 );     /* country rom */
662   memory_install_write32_handler( cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1fb60000, 0x1fb60003, 0, 0, zn_qsound_w );
656   memory_install_read32_handler ( cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1f000000, 0x1f3fffff, 0, 0, (read32_space_func)SMH_BANK(1) );     /* fixed game rom */
657   memory_install_read32_handler ( cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1f400000, 0x1f7fffff, 0, 0, (read32_space_func)SMH_BANK(2) );     /* banked game rom */
658   memory_install_write32_handler( cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1fb00000, 0x1fb00003, 0, 0, bank_coh1000c_w ); /* bankswitch */
659   memory_install_read32_handler ( cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1fb40010, 0x1fb40013, 0, 0, capcom_kickharness_r );
660   memory_install_read32_handler ( cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1fb40020, 0x1fb40023, 0, 0, capcom_kickharness_r );
661   memory_install_read32_handler ( cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1fb80000, 0x1fbfffff, 0, 0, (read32_space_func)SMH_BANK(3) );     /* country rom */
662   memory_install_write32_handler( cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1fb60000, 0x1fb60003, 0, 0, zn_qsound_w );
663663
664664   zn_driver_init(machine);
665665
r4679r4680
669669      /* disable:
670670            the QSound CPU for glpracr as it doesn't have any roms &
671671            the link cpu for glprac2l as the h/w is not emulated yet. */
672      cpu_suspend( machine->cpu[1], SUSPEND_REASON_DISABLE, 1 );
672      cputag_suspend( machine, "audiocpu", SUSPEND_REASON_DISABLE, 1 );
673673   }
674674}
675675
r4679r4680
872872
873873static DRIVER_INIT( coh3002c )
874874{
875   memory_install_read32_handler ( cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1f000000, 0x1f3fffff, 0, 0, SMH_BANK1 );     /* fixed game rom */
876   memory_install_read32_handler ( cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1f400000, 0x1f7fffff, 0, 0, SMH_BANK2 );     /* banked game rom */
877   memory_install_read32_handler ( cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1fb40010, 0x1fb40013, 0, 0, capcom_kickharness_r );
878   memory_install_read32_handler ( cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1fb40020, 0x1fb40023, 0, 0, capcom_kickharness_r );
879   memory_install_write32_handler( cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1fb00000, 0x1fb00003, 0, 0, bank_coh3002c_w ); /* bankswitch */
880   memory_install_read32_handler ( cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1fb80000, 0x1fbfffff, 0, 0, SMH_BANK3 );     /* country rom */
881   memory_install_write32_handler( cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1fb60000, 0x1fb60003, 0, 0, zn_qsound_w );
875   memory_install_read32_handler ( cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1f000000, 0x1f3fffff, 0, 0, (read32_space_func)SMH_BANK(1) );     /* fixed game rom */
876   memory_install_read32_handler ( cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1f400000, 0x1f7fffff, 0, 0, (read32_space_func)SMH_BANK(2) );     /* banked game rom */
877   memory_install_read32_handler ( cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1fb40010, 0x1fb40013, 0, 0, capcom_kickharness_r );
878   memory_install_read32_handler ( cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1fb40020, 0x1fb40023, 0, 0, capcom_kickharness_r );
879   memory_install_write32_handler( cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1fb00000, 0x1fb00003, 0, 0, bank_coh3002c_w ); /* bankswitch */
880   memory_install_read32_handler ( cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1fb80000, 0x1fbfffff, 0, 0, (read32_space_func)SMH_BANK(3) );     /* country rom */
881   memory_install_write32_handler( cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1fb60000, 0x1fb60003, 0, 0, zn_qsound_w );
882882
883883   zn_driver_init(machine);
884884}
r4679r4680
11601160
11611161static DRIVER_INIT( coh1000ta )
11621162{
1163   taitofx1_eeprom_size1 = 0x200; taitofx1_eeprom1 = auto_malloc( taitofx1_eeprom_size1 );
1163   taitofx1_eeprom_size1 = 0x200; taitofx1_eeprom1 = auto_alloc_array(machine, UINT8, taitofx1_eeprom_size1 );
11641164
1165   memory_install_read32_handler     ( cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1f000000, 0x1f7fffff, 0, 0, SMH_BANK1 );     /* banked game rom */
1166   memory_install_write32_handler    ( cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1fb40000, 0x1fb40003, 0, 0, bank_coh1000t_w ); /* bankswitch */
1167   memory_install_readwrite32_handler( cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1fb80000, 0x1fb80003, 0, 0, taitofx1a_ymsound_r, taitofx1a_ymsound_w );
1168   memory_install_readwrite32_handler( cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1fbe0000, 0x1fbe0000 + ( taitofx1_eeprom_size1 - 1 ), 0, 0, SMH_BANK2, SMH_BANK2 );
1165   memory_install_read32_handler     ( cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1f000000, 0x1f7fffff, 0, 0, (read32_space_func)SMH_BANK(1) );     /* banked game rom */
1166   memory_install_write32_handler    ( cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1fb40000, 0x1fb40003, 0, 0, bank_coh1000t_w ); /* bankswitch */
1167   memory_install_readwrite32_handler( cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1fb80000, 0x1fb80003, 0, 0, taitofx1a_ymsound_r, taitofx1a_ymsound_w );
1168   memory_install_readwrite32_handler( cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1fbe0000, 0x1fbe0000 + ( taitofx1_eeprom_size1 - 1 ), 0, 0, (read32_space_func)SMH_BANK(2), (write32_space_func)SMH_BANK(2) );
11691169
11701170   zn_driver_init(machine);
11711171   mb3773_init(machine);
r4679r4680
11951195}
11961196
11971197static ADDRESS_MAP_START( fx1a_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
1198   AM_RANGE(0x4000, 0x7fff) AM_READ(SMH_BANK10)   /* Fallthrough */
1198   AM_RANGE(0x4000, 0x7fff) AM_READ(SMH_BANK(10))   /* Fallthrough */
11991199   AM_RANGE(0x0000, 0x7fff) AM_ROM
12001200   AM_RANGE(0xc000, 0xdfff) AM_RAM
12011201   AM_RANGE(0xe000, 0xe003) AM_DEVREADWRITE("ym", ym2610_r, ym2610_w)
r4679r4680
12101210/* handler called by the YM2610 emulator when the internal timers cause an IRQ */
12111211static void irq_handler(const device_config *device, int irq)
12121212{
1213   cpu_set_input_line(device->machine->cpu[1],0,irq ? ASSERT_LINE : CLEAR_LINE);
1213   cputag_set_input_line(device->machine, "audiocpu", 0, irq ? ASSERT_LINE : CLEAR_LINE);
12141214}
12151215
12161216static const ym2610_interface ym2610_config =
r4679r4680
12531253
12541254static DRIVER_INIT( coh1000tb )
12551255{
1256   taitofx1_eeprom_size1 = 0x400; taitofx1_eeprom1 = auto_malloc( taitofx1_eeprom_size1 );
1257   taitofx1_eeprom_size2 = 0x200; taitofx1_eeprom2 = auto_malloc( taitofx1_eeprom_size2 );
1256   taitofx1_eeprom_size1 = 0x400; taitofx1_eeprom1 = auto_alloc_array(machine, UINT8,  taitofx1_eeprom_size1 );
1257   taitofx1_eeprom_size2 = 0x200; taitofx1_eeprom2 = auto_alloc_array(machine, UINT8,  taitofx1_eeprom_size2 );
12581258
1259   memory_install_read32_handler     ( cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1f000000, 0x1f7fffff, 0, 0, SMH_BANK1 ); /* banked game rom */
1260   memory_install_readwrite32_handler( cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1fb00000, 0x1fb00000 + ( taitofx1_eeprom_size1 - 1 ), 0, 0, SMH_BANK2, SMH_BANK2 );
1261   memory_install_write32_handler    ( cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1fb40000, 0x1fb40003, 0, 0, bank_coh1000t_w ); /* bankswitch */
1262   memory_install_write32_handler    ( cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1fb80000, 0x1fb80003, 0, 0, taitofx1b_volume_w );
1263   memory_install_write32_handler    ( cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1fba0000, 0x1fba0003, 0, 0, taitofx1b_sound_w );
1264   memory_install_read32_handler     ( cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1fbc0000, 0x1fbc0003, 0, 0, taitofx1b_sound_r );
1265   memory_install_readwrite32_handler( cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1fbe0000, 0x1fbe0000 + ( taitofx1_eeprom_size2 - 1 ), 0, 0, SMH_BANK3, SMH_BANK3 );
1259   memory_install_read32_handler     ( cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1f000000, 0x1f7fffff, 0, 0, (read32_space_func)SMH_BANK(1) ); /* banked game rom */
1260   memory_install_readwrite32_handler( cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1fb00000, 0x1fb00000 + ( taitofx1_eeprom_size1 - 1 ), 0, 0, (read32_space_func)SMH_BANK(2), (write32_space_func)SMH_BANK(2) );
1261   memory_install_write32_handler    ( cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1fb40000, 0x1fb40003, 0, 0, bank_coh1000t_w ); /* bankswitch */
1262   memory_install_write32_handler    ( cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1fb80000, 0x1fb80003, 0, 0, taitofx1b_volume_w );
1263   memory_install_write32_handler    ( cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1fba0000, 0x1fba0003, 0, 0, taitofx1b_sound_w );
1264   memory_install_read32_handler     ( cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1fbc0000, 0x1fbc0003, 0, 0, taitofx1b_sound_r );
1265   memory_install_readwrite32_handler( cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1fbe0000, 0x1fbe0000 + ( taitofx1_eeprom_size2 - 1 ), 0, 0, (read32_space_func)SMH_BANK(3), (write32_space_func)SMH_BANK(3) );
12661266
12671267   zn_driver_init(machine);
12681268   mb3773_init(machine);
r4679r4680
14581458{
14591459   const device_config *ide = devtag_get_device(machine, "ide");
14601460
1461   memory_install_read32_handler            ( cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1f000000, 0x1f1fffff, 0, 0, SMH_BANK1 );
1462   memory_install_write32_handler           ( cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1f000000, 0x1f000003, 0, 0, SMH_NOP );
1463   memory_install_readwrite32_device_handler( cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), ide, 0x1f7e4000, 0x1f7e4fff, 0, 0, ide_controller32_r, ide_controller32_w );
1464   memory_install_readwrite32_handler       ( cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1f7e8000, 0x1f7e8003, 0, 0, SMH_NOP, SMH_NOP );
1465   memory_install_readwrite32_device_handler( cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), ide, 0x1f7f4000, 0x1f7f4fff, 0, 0, ide_controller32_r, ide_controller32_w );
1461   memory_install_read32_handler            ( cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1f000000, 0x1f1fffff, 0, 0, (read32_space_func)SMH_BANK(1) );
1462   memory_install_write32_handler           ( cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1f000000, 0x1f000003, 0, 0, (write32_space_func)SMH_NOP );
1463   memory_install_readwrite32_device_handler( cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), ide, 0x1f7e4000, 0x1f7e4fff, 0, 0, ide_controller32_r, ide_controller32_w );
1464   memory_install_readwrite32_handler       ( cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1f7e8000, 0x1f7e8003, 0, 0, (read32_space_func)SMH_NOP, (write32_space_func)SMH_NOP );
1465   memory_install_readwrite32_device_handler( cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), ide, 0x1f7f4000, 0x1f7f4fff, 0, 0, ide_controller32_r, ide_controller32_w );
14661466
14671467   zn_driver_init(machine);
14681468}
r4679r4680
16421642static WRITE32_HANDLER( coh1002e_latch_w )
16431643{
16441644   if (offset)
1645      cpu_set_input_line(space->machine->cpu[1], 2, HOLD_LINE);   // irq 2 on the 68k
1645      cputag_set_input_line(space->machine, "audiocpu", 2, HOLD_LINE);   // irq 2 on the 68k
16461646   else
16471647      soundlatch_w(space, 0, data);
16481648}
16491649
16501650static DRIVER_INIT( coh1002e )
16511651{
1652   memory_install_read32_handler ( cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1f000000, 0x1f7fffff, 0, 0, SMH_BANK1 );
1653   memory_install_write32_handler( cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1fa10300, 0x1fa10303, 0, 0, coh1002e_bank_w );
1654   memory_install_write32_handler( cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1fb00000, 0x1fb00007, 0, 0, coh1002e_latch_w );
1652   memory_install_read32_handler ( cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1f000000, 0x1f7fffff, 0, 0, (read32_space_func)SMH_BANK(1) );
1653   memory_install_write32_handler( cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1fa10300, 0x1fa10303, 0, 0, coh1002e_bank_w );
1654   memory_install_write32_handler( cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1fb00000, 0x1fb00007, 0, 0, coh1002e_latch_w );
16551655
16561656   zn_driver_init(machine);
16571657}
r4679r4680
17911791
17921792static DRIVER_INIT( bam2 )
17931793{
1794   memory_install_read32_handler ( cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1f000000, 0x1f3fffff, 0, 0, SMH_BANK1 );
1795   memory_install_read32_handler ( cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1f400000, 0x1f7fffff, 0, 0, SMH_BANK2 );
1796   memory_install_read32_handler ( cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1fb00000, 0x1fb00007, 0, 0, bam2_mcu_r );
1797   memory_install_read32_handler ( cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1fa20000, 0x1fa20003, 0, 0, bam2_unk_r );
1798   memory_install_write32_handler( cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1fa10300, 0x1fa10303, 0, 0, bam2_sec_w );
1799   memory_install_write32_handler( cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1fb00000, 0x1fb00007, 0, 0, bam2_mcu_w );
1794   memory_install_read32_handler ( cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1f000000, 0x1f3fffff, 0, 0, (read32_space_func)SMH_BANK(1) );
1795   memory_install_read32_handler ( cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1f400000, 0x1f7fffff, 0, 0, (read32_space_func)SMH_BANK(2) );
1796   memory_install_read32_handler ( cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1fb00000, 0x1fb00007, 0, 0, bam2_mcu_r );
1797   memory_install_read32_handler ( cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1fa20000, 0x1fa20003, 0, 0, bam2_unk_r );
1798   memory_install_write32_handler( cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1fa10300, 0x1fa10303, 0, 0, bam2_sec_w );
1799   memory_install_write32_handler( cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1fb00000, 0x1fb00007, 0, 0, bam2_mcu_w );
18001800
18011801   zn_driver_init(machine);
18021802}
r4679r4680
21112111
21122112static DRIVER_INIT( coh1000a )
21132113{
2114   memory_install_read32_handler ( cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1f000000, 0x1f1fffff, 0, 0, SMH_BANK1 );
2115   memory_install_write32_handler( cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1fbfff00, 0x1fbfff03, 0, 0, acpsx_00_w );
2116   memory_install_write32_handler( cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1fbfff10, 0x1fbfff13, 0, 0, acpsx_10_w );
2114   memory_install_read32_handler ( cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1f000000, 0x1f1fffff, 0, 0, (read32_space_func)SMH_BANK(1) );
2115   memory_install_write32_handler( cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1fbfff00, 0x1fbfff03, 0, 0, acpsx_00_w );
2116   memory_install_write32_handler( cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1fbfff10, 0x1fbfff13, 0, 0, acpsx_10_w );
21172117
21182118   if( strcmp( machine->gamedrv->name, "nbajamex" ) == 0 )
21192119   {
2120      nbajamex_eeprom_size = 0x8000; nbajamex_eeprom = auto_malloc( nbajamex_eeprom_size );
2120      nbajamex_eeprom_size = 0x8000; nbajamex_eeprom = auto_alloc_array(machine, UINT8, nbajamex_eeprom_size );
21212121
2122      memory_install_readwrite32_handler( cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1f200000, 0x1f200000 + ( nbajamex_eeprom_size - 1 ), 0, 0, SMH_BANK2, SMH_BANK2 );
2123      memory_install_read32_handler     ( cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1fbfff08, 0x1fbfff0b, 0, 0, nbajamex_08_r );
2124      memory_install_readwrite32_handler( cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1fbfff80, 0x1fbfff83, 0, 0, nbajamex_80_r, nbajamex_80_w );
2122      memory_install_readwrite32_handler( cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1f200000, 0x1f200000 + ( nbajamex_eeprom_size - 1 ), 0, 0, (read32_space_func)SMH_BANK(2), (write32_space_func)SMH_BANK(2) );
2123      memory_install_read32_handler     ( cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1fbfff08, 0x1fbfff0b, 0, 0, nbajamex_08_r );
2124      memory_install_readwrite32_handler( cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1fbfff80, 0x1fbfff83, 0, 0, nbajamex_80_r, nbajamex_80_w );
21252125
21262126      memory_set_bankptr(machine,  2, nbajamex_eeprom ); /* ram/eeprom/?? */
21272127   }
r4679r4680
21312131   {
21322132      const device_config *ide = devtag_get_device(machine, "ide");
21332133
2134      memory_install_read32_device_handler( cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), ide, 0x1fbfff8c, 0x1fbfff8f, 0, 0, jdredd_idestat_r );
2135      memory_install_write32_handler      ( cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1fbfff8c, 0x1fbfff8f, 0, 0, SMH_NOP );
2136      memory_install_readwrite32_device_handler( cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), ide, 0x1fbfff90, 0x1fbfff9f, 0, 0, jdredd_ide_r, jdredd_ide_w );
2134      memory_install_read32_device_handler( cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), ide, 0x1fbfff8c, 0x1fbfff8f, 0, 0, jdredd_idestat_r );
2135      memory_install_write32_handler      ( cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1fbfff8c, 0x1fbfff8f, 0, 0, (write32_space_func)SMH_NOP );
2136      memory_install_readwrite32_device_handler( cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), ide, 0x1fbfff90, 0x1fbfff9f, 0, 0, jdredd_ide_r, jdredd_ide_w );
21372137   }
21382138
21392139   zn_driver_init(machine);
r4679r4680
22902290
22912291static DRIVER_INIT( coh1001l )
22922292{
2293   memory_install_read32_handler ( cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1f000000, 0x1f7fffff, 0, 0, SMH_BANK1 ); /* banked rom */
2294   memory_install_write32_handler( cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1fb00000, 0x1fb00003, 0, 0, coh1001l_bnk_w );
2293   memory_install_read32_handler ( cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1f000000, 0x1f7fffff, 0, 0, (read32_space_func)SMH_BANK(1) ); /* banked rom */
2294   memory_install_write32_handler( cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1fb00000, 0x1fb00003, 0, 0, coh1001l_bnk_w );
22952295
22962296   zn_driver_init(machine);
22972297}
r4679r4680
23332333
23342334static DRIVER_INIT( coh1002v )
23352335{
2336   memory_install_read32_handler ( cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1f000000, 0x1f27ffff, 0, 0, SMH_BANK1 );
2337   memory_install_read32_handler ( cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1fb00000, 0x1fbfffff, 0, 0, SMH_BANK2 );
2338   memory_install_write32_handler( cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1fb00000, 0x1fb00003, 0, 0, coh1002v_bnk_w );
2336   memory_install_read32_handler ( cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1f000000, 0x1f27ffff, 0, 0, (read32_space_func)SMH_BANK(1) );
2337   memory_install_read32_handler ( cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1fb00000, 0x1fbfffff, 0, 0, (read32_space_func)SMH_BANK(2) );
2338   memory_install_write32_handler( cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1fb00000, 0x1fb00003, 0, 0, coh1002v_bnk_w );
23392339
23402340   zn_driver_init(machine);
23412341}
r4679r4680
25362536
25372537static DRIVER_INIT( coh1002m )
25382538{
2539   memory_install_read32_handler     ( cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1f000000, 0x1f7fffff, 0, 0, SMH_BANK1 );
2540   memory_install_readwrite32_handler( cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1fb00000, 0x1fb00003, 0, 0, cbaj_z80_r, cbaj_z80_w );
2541   memory_install_write32_handler    ( cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1fb00004, 0x1fb00007, 0, 0, coh1002m_bank_w );
2539   memory_install_read32_handler     ( cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1f000000, 0x1f7fffff, 0, 0, (read32_space_func)SMH_BANK(1) );
2540   memory_install_readwrite32_handler( cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1fb00000, 0x1fb00003, 0, 0, cbaj_z80_r, cbaj_z80_w );
2541   memory_install_write32_handler    ( cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1fb00004, 0x1fb00007, 0, 0, coh1002m_bank_w );
25422542
25432543   zn_driver_init(machine);
25442544}
src/mame/drivers/paradise.c
r4679r4680
10241024static DRIVER_INIT (tgtball)
10251025{
10261026   paradise_sprite_inc = 4;
1027   memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x2001, 0x2001, 0, 0, tgtball_flipscreen_w );
1027   memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_IO), 0x2001, 0x2001, 0, 0, tgtball_flipscreen_w );
10281028}
10291029
10301030static DRIVER_INIT (torus)
10311031{
10321032   paradise_sprite_inc = 4;
1033   memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x2070, 0x2070, 0, 0, torus_coin_counter_w);
1033   memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_IO), 0x2070, 0x2070, 0, 0, torus_coin_counter_w);
10341034}
10351035
10361036
r4679r4680
10481048GAME( 1996,  torus,    0,       torus,    torus,    torus,    ROT90, "Yun Sung", "Torus", 0 )
10491049GAME( 1998,  madball,  0,       madball,  madball,  tgtball,  ROT0,  "Yun Sung", "Mad Ball V2.0", 0 )
10501050GAME( 1997,  madballn, madball, madball,  madball,  tgtball,  ROT0,  "Yun Sung", "Mad Ball V2.0 (With Nudity)", 0 )
1051
src/mame/drivers/volfied.c
r4679r4680
217217
218218static void irqhandler(const device_config *device, int irq)
219219{
220   cpu_set_input_line(device->machine->cpu[1], 0, irq ? ASSERT_LINE : CLEAR_LINE);
220   cputag_set_input_line(device->machine, "audiocpu", 0, irq ? ASSERT_LINE : CLEAR_LINE);
221221}
222222
223223static const ym2203_interface ym2203_config =
src/mame/drivers/dribling.c
r4679r4680
9999   /* bit 7 = di */
100100   di = (data >> 7) & 1;
101101   if (!di)
102      cpu_set_input_line(device->machine->cpu[0], 0, CLEAR_LINE);
102      cputag_set_input_line(device->machine, "maincpu", 0, CLEAR_LINE);
103103
104104   /* bit 6 = parata */
105105
r4679r4680
215215 *
216216 *************************************/
217217
218static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 )
219   AM_RANGE(0x0000, 0x1fff) AM_READ(SMH_ROM)
220   AM_RANGE(0x2000, 0x3fff) AM_READ(SMH_RAM)
221   AM_RANGE(0x4000, 0x7fff) AM_READ(SMH_ROM)
222   AM_RANGE(0xc000, 0xdfff) AM_READ(SMH_RAM)
218static ADDRESS_MAP_START( dribling_map, ADDRESS_SPACE_PROGRAM, 8 )
219   AM_RANGE(0x0000, 0x1fff) AM_ROM
220   AM_RANGE(0x2000, 0x3fff) AM_RAM AM_BASE(&videoram)
221   AM_RANGE(0x4000, 0x7fff) AM_ROM
222   AM_RANGE(0xc000, 0xdfff) AM_RAM_WRITE(dribling_colorram_w) AM_BASE(&colorram)
223223ADDRESS_MAP_END
224224
225225
226static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 )
227   AM_RANGE(0x0000, 0x1fff) AM_WRITE(SMH_ROM)
228   AM_RANGE(0x2000, 0x3fff) AM_WRITE(SMH_RAM) AM_BASE(&videoram)
229   AM_RANGE(0x4000, 0x7fff) AM_WRITE(SMH_ROM)
230   AM_RANGE(0xc000, 0xdfff) AM_WRITE(dribling_colorram_w) AM_BASE(&colorram)
231ADDRESS_MAP_END
232
233
234226static ADDRESS_MAP_START( io_map, ADDRESS_SPACE_IO, 8 )
235227   ADDRESS_MAP_GLOBAL_MASK(0xff)
236228   AM_RANGE(0x00, 0xff) AM_READWRITE(ioread, iowrite)
r4679r4680
297289
298290   /* basic machine hardware */
299291   MDRV_CPU_ADD("maincpu", Z80, 5000000)
300   MDRV_CPU_PROGRAM_MAP(readmem,writemem)
292   MDRV_CPU_PROGRAM_MAP(dribling_map,0)
301293   MDRV_CPU_IO_MAP(io_map,0)
302294   MDRV_CPU_VBLANK_INT("screen", dribling_irq_gen)
303295
r4679r4680
377369
378370GAME( 1983, dribling, 0,        dribling, dribling, 0, ROT0, "Model Racing", "Dribbling", GAME_NO_SOUND )
379371GAME( 1983, driblino, dribling, dribling, dribling, 0, ROT0, "Model Racing (Olympia license)", "Dribbling (Olympia)", GAME_NO_SOUND )
380
src/mame/drivers/balsente.c
r4679r4680
19831983   /* load EF           from 0x2e000-0x30000 */
19841984   /* ROM region must be 0x40000 total */
19851985
1986   UINT8 *temp = malloc_or_die(0x20000);
1986   UINT8 *temp = alloc_array_or_die(UINT8, 0x20000);
19871987   {
19881988      UINT8 *rom = memory_region(machine, "maincpu");
19891989      UINT32 len = memory_region_length(machine, "maincpu");
r4679r4680
20682068static DRIVER_INIT( toggle )   { expand_roms(machine, EXPAND_ALL);  balsente_shooter = 0; /* noanalog */ }
20692069static DRIVER_INIT( nametune )
20702070{
2071   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
2071   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
20722072   memory_install_write8_handler(space, 0x9f00, 0x9f00, 0, 0, balsente_rombank2_select_w);
20732073   expand_roms(machine, EXPAND_NONE | SWAP_HALVES); balsente_shooter = 0; /* noanalog */
20742074}
20752075static DRIVER_INIT( nstocker )
20762076{
2077   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
2077   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
20782078   memory_install_write8_handler(space, 0x9f00, 0x9f00, 0, 0, balsente_rombank2_select_w);
20792079   expand_roms(machine, EXPAND_NONE | SWAP_HALVES); balsente_shooter = 1; balsente_adc_shift = 1;
20802080}
20812081static DRIVER_INIT( sfootbal )
20822082{
2083   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
2083   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
20842084   memory_install_write8_handler(space, 0x9f00, 0x9f00, 0, 0, balsente_rombank2_select_w);
20852085   expand_roms(machine, EXPAND_ALL  | SWAP_HALVES); balsente_shooter = 0; balsente_adc_shift = 0;
20862086}
20872087static DRIVER_INIT( spiker )
20882088{
2089   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
2089   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
20902090   memory_install_readwrite8_handler(space, 0x9f80, 0x9f8f, 0, 0, spiker_expand_r, spiker_expand_w);
20912091   memory_install_write8_handler(space, 0x9f00, 0x9f00, 0, 0, balsente_rombank2_select_w);
20922092   expand_roms(machine, EXPAND_ALL  | SWAP_HALVES); balsente_shooter = 0; balsente_adc_shift = 1;
20932093}
20942094static DRIVER_INIT( stompin )
20952095{
2096   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
2096   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
20972097   memory_install_write8_handler(space, 0x9f00, 0x9f00, 0, 0, balsente_rombank2_select_w);
20982098   expand_roms(machine, 0x0c | SWAP_HALVES); balsente_shooter = 0; balsente_adc_shift = 32;
20992099}
21002100static DRIVER_INIT( rescraid ) { expand_roms(machine, EXPAND_NONE); balsente_shooter = 0; /* noanalog */ }
21012101static DRIVER_INIT( grudge )
21022102{
2103   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
2103   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
21042104   memory_install_read8_handler(space, 0x9400, 0x9400, 0, 0, grudge_steering_r);
21052105   expand_roms(machine, EXPAND_NONE); balsente_shooter = 0;
21062106}
21072107static DRIVER_INIT( shrike )
21082108{
2109   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
2109   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
21102110   memory_install_readwrite8_handler(space, 0x9e00, 0x9fff, 0, 0, shrike_shared_6809_r, shrike_shared_6809_w);
21112111   memory_install_write8_handler(space, 0x9e01, 0x9e01, 0, 0, shrike_sprite_select_w );
2112   memory_install_readwrite16_handler(cpu_get_address_space(machine->cpu[2], ADDRESS_SPACE_PROGRAM), 0x10000, 0x1001f, 0, 0, shrike_io_68k_r, shrike_io_68k_w);
2112   memory_install_readwrite16_handler(cputag_get_address_space(machine, "68k", ADDRESS_SPACE_PROGRAM), 0x10000, 0x1001f, 0, 0, shrike_io_68k_r, shrike_io_68k_w);
21132113
21142114   expand_roms(machine, EXPAND_ALL);  balsente_shooter = 0; balsente_adc_shift = 32;
21152115}
src/mame/drivers/galpani3.c
r4679r4680
124124static VIDEO_START(galpani3)
125125{
126126   /* so we can use suprnova.c */
127   galpani3_spriteram32 = auto_malloc ( 0x4000 );
127   galpani3_spriteram32 = auto_alloc_array(machine, UINT32, 0x4000/4);
128128   spriteram_size = 0x4000;
129   galpani3_spc_regs = auto_malloc (0x40);
129   galpani3_spc_regs = auto_alloc_array(machine, UINT32, 0x40/4);
130130   suprnova_alt_enable_sprites = 1;
131131
132132
133   sprite_bitmap_1 = auto_bitmap_alloc(1024,1024,BITMAP_FORMAT_INDEXED16);
133   sprite_bitmap_1 = auto_bitmap_alloc(machine,1024,1024,BITMAP_FORMAT_INDEXED16);
134134
135135}
136136
src/mame/drivers/megadriv.c
r4679r4680
145145
146146// hacks for C2
147147int genvdp_use_cram = 0; // c2 uses it's own palette ram
148int genesis_has_z80;
149148int genesis_always_irq6 = 0; // c2 never enables the irq6, different source??
150149int genesis_other_hacks = 0; // misc hacks
151150
r4679r4680
208207
209208static struct genesis_z80_vars
210209{
211   int z80_cpunum;
212210   int z80_is_reset;
213211   int z80_has_bus;
214212   UINT32 z80_bank_addr;
r4679r4680
577575      if (megadrive_irq4_pending)
578576      {
579577         if (MEGADRIVE_REG0_IRQ4_ENABLE)
580            cpu_set_input_line(machine->cpu[0],4,HOLD_LINE);
578            cputag_set_input_line(machine, "maincpu", 4, HOLD_LINE);
581579         else
582            cpu_set_input_line(machine->cpu[0],4,CLEAR_LINE);
580            cputag_set_input_line(machine, "maincpu", 4, CLEAR_LINE);
583581      }
584582
585583      /* ??? Fatal Rewind needs this but I'm not sure it's accurate behavior
r4679r4680
594592      if (megadrive_irq6_pending)
595593      {
596594         if (MEGADRIVE_REG01_IRQ6_ENABLE )
597            cpu_set_input_line(machine->cpu[0],6,HOLD_LINE);
595            cputag_set_input_line(machine, "maincpu", 6, HOLD_LINE);
598596         else
599            cpu_set_input_line(machine->cpu[0],6,CLEAR_LINE);
597            cputag_set_input_line(machine, "maincpu", 6, CLEAR_LINE);
600598      }
601599
602600      /* ??? */
r4679r4680
704702   if (length==0x00) length = 0xffff;
705703
706704   /* This is a hack until real DMA timings are implemented */
707   cpu_spinuntil_time(machine->cpu[0], ATTOTIME_IN_NSEC(length*1000/3500));
705   cpu_spinuntil_time(cputag_get_cpu(machine, "maincpu"), ATTOTIME_IN_NSEC(length * 1000 / 3500));
708706
709707   for (count = 0;count<(length>>1);count++)
710708   {
r4679r4680
20432041      if (((megadrive_io_data_regs[portnum]&0x40)==0x00) && ((data&0x40) == 0x40))
20442042      {
20452043         io_stage[portnum]++;
2046         timer_adjust_oneshot(io_timeout[portnum], cpu_clocks_to_attotime(machine->cpu[0],8192), 0);
2044         timer_adjust_oneshot(io_timeout[portnum], cputag_clocks_to_attotime(machine, "maincpu", 8192), 0);
20472045      }
20482046
20492047   }
r4679r4680
21262124
21272125
21282126
2129static ADDRESS_MAP_START( megadriv_readmem, ADDRESS_SPACE_PROGRAM, 16 )
2130   AM_RANGE(0x000000 , 0x3fffff) AM_READ(SMH_ROM)
2127static ADDRESS_MAP_START( megadriv_map, ADDRESS_SPACE_PROGRAM, 16 )
2128   AM_RANGE(0x000000 , 0x3fffff) AM_ROM
21312129   /*      (0x000000 - 0x3fffff) == GAME ROM (4Meg Max, Some games have special banking too) */
21322130
2133   AM_RANGE(0xa00000 , 0xa01fff) AM_READ(megadriv_68k_read_z80_ram)
2134   AM_RANGE(0xa04000 , 0xa04003) AM_DEVREAD8("ym", megadriv_68k_YM2612_read, 0xffff)
2131   AM_RANGE(0xa00000 , 0xa01fff) AM_READWRITE(megadriv_68k_read_z80_ram,megadriv_68k_write_z80_ram)
2132   AM_RANGE(0xa02000 , 0xa03fff) AM_WRITE(megadriv_68k_write_z80_ram)
2133   AM_RANGE(0xa04000 , 0xa04003) AM_DEVREADWRITE8("ym", megadriv_68k_YM2612_read,megadriv_68k_YM2612_write, 0xffff)
21352134
2136   AM_RANGE(0xa10000 , 0xa1001f) AM_READ(megadriv_68k_io_read)
2135   AM_RANGE(0xa06000 , 0xa06001) AM_WRITE(megadriv_68k_z80_bank_write)
21372136
2138   AM_RANGE(0xa11100 , 0xa11101) AM_READ(megadriv_68k_check_z80_bus)
2137   AM_RANGE(0xa10000 , 0xa1001f) AM_READWRITE(megadriv_68k_io_read,megadriv_68k_io_write)
21392138
2140   AM_RANGE(0xc00000 , 0xc0001f) AM_READ(megadriv_vdp_r)
2141   AM_RANGE(0xd00000 , 0xd0001f) AM_READ(megadriv_vdp_r) // the earth defend
2139   AM_RANGE(0xa11100 , 0xa11101) AM_READWRITE(megadriv_68k_check_z80_bus,megadriv_68k_req_z80_bus)
2140   AM_RANGE(0xa11200 , 0xa11201) AM_WRITE(megadriv_68k_req_z80_reset)
21422141
21432142   /* these are fake - remove allocs in VIDEO_START to use these to view ram instead */
2144//  AM_RANGE(0xb00000 , 0xb0ffff) AM_READ(SMH_RAM) AM_BASE(&megadrive_vdp_vram)
2145//  AM_RANGE(0xb10000 , 0xb1007f) AM_READ(SMH_RAM) AM_BASE(&megadrive_vdp_vsram)
2146//  AM_RANGE(0xb10100 , 0xb1017f) AM_READ(SMH_RAM) AM_BASE(&megadrive_vdp_cram)
2143//  AM_RANGE(0xb00000 , 0xb0ffff) AM_RAM AM_BASE(&megadrive_vdp_vram)
2144//  AM_RANGE(0xb10000 , 0xb1007f) AM_RAM AM_BASE(&megadrive_vdp_vsram)
2145//  AM_RANGE(0xb10100 , 0xb1017f) AM_RAM AM_BASE(&megadrive_vdp_cram)
21472146
2147   AM_RANGE(0xc00000 , 0xc0001f) AM_READWRITE(megadriv_vdp_r,megadriv_vdp_w)
2148   AM_RANGE(0xd00000 , 0xd0001f) AM_READWRITE(megadriv_vdp_r,megadriv_vdp_w) // the earth defend
21482149
2149
2150   AM_RANGE(0xe00000 , 0xe0ffff) AM_READ(SMH_RAM) AM_MIRROR(0x1f0000)
2150   AM_RANGE(0xe00000 , 0xe0ffff) AM_RAM AM_MIRROR(0x1f0000) AM_BASE(&megadrive_ram)
21512151//  AM_RANGE(0xff0000 , 0xffffff) AM_READ(SMH_RAM)
21522152   /*       0xe00000 - 0xffffff) == MAIN RAM (64kb, Mirrored, most games use ff0000 - ffffff) */
2153
21542153ADDRESS_MAP_END
21552154
2156static ADDRESS_MAP_START( megadriv_writemem, ADDRESS_SPACE_PROGRAM, 16 )
2157   AM_RANGE(0x000000 , 0x3fffff) AM_WRITE(SMH_ROM)
21582155
2159   AM_RANGE(0xa00000 , 0xa01fff) AM_WRITE(megadriv_68k_write_z80_ram)
2160   AM_RANGE(0xa02000 , 0xa03fff) AM_WRITE(megadriv_68k_write_z80_ram)
2161   AM_RANGE(0xa04000 , 0xa04003) AM_DEVWRITE8("ym", megadriv_68k_YM2612_write, 0xffff)
2162
2163   AM_RANGE(0xa06000 , 0xa06001) AM_WRITE(megadriv_68k_z80_bank_write)
2164
2165   AM_RANGE(0xa10000 , 0xa1001f) AM_WRITE(megadriv_68k_io_write)
2166
2167   AM_RANGE(0xa11100 , 0xa11101) AM_WRITE(megadriv_68k_req_z80_bus)
2168   AM_RANGE(0xa11200 , 0xa11201) AM_WRITE(megadriv_68k_req_z80_reset)
2169
2170   AM_RANGE(0xc00000 , 0xc0001f) AM_WRITE(megadriv_vdp_w)
2171   AM_RANGE(0xd00000 , 0xd0001f) AM_WRITE(megadriv_vdp_w) // the earth defend
2172
2173   AM_RANGE(0xe00000 , 0xe0ffff) AM_WRITE(SMH_RAM) AM_MIRROR(0x1f0000) AM_BASE(&megadrive_ram)
2174ADDRESS_MAP_END
2175
21762156/* z80 sounds/sub CPU */
21772157
21782158
r4679r4680
22702250      if (data & 0x0100)
22712251      {
22722252         //logerror("%06x: 68000 request z80 Bus (byte MSB access) %04x %04x\n", cpu_get_pc(space->cpu),data,mem_mask);
2273         genz80.z80_has_bus=0;
2274         cpu_suspend( space->machine->cpu[genz80.z80_cpunum], SUSPEND_REASON_HALT, 1 );
2253         genz80.z80_has_bus = 0;
2254         cputag_suspend( space->machine, "genesis_snd_z80", SUSPEND_REASON_HALT, 1 );
22752255      }
22762256      else
22772257      {
22782258         //logerror("%06x: 68000 return z80 Bus (byte MSB access) %04x %04x\n", cpu_get_pc(space->cpu),data,mem_mask);
2279         genz80.z80_has_bus=1;
2280         cpu_resume( space->machine->cpu[genz80.z80_cpunum], SUSPEND_REASON_HALT );
2259         genz80.z80_has_bus = 1;
2260         cputag_resume( space->machine, "genesis_snd_z80", SUSPEND_REASON_HALT );
22812261      }
22822262   }
22832263   else if (!ACCESSING_BITS_8_15) // is this valid?
r4679r4680
22852265      if (data & 0x0001)
22862266      {
22872267         //logerror("%06x: 68000 request z80 Bus (byte LSB access) %04x %04x\n", cpu_get_pc(space->cpu),data,mem_mask);
2288         genz80.z80_has_bus=0;
2289         cpu_suspend( space->machine->cpu[genz80.z80_cpunum], SUSPEND_REASON_HALT, 1 );
2268         genz80.z80_has_bus = 0;
2269         cputag_suspend( space->machine, "genesis_snd_z80", SUSPEND_REASON_HALT, 1 );
22902270      }
22912271      else
22922272      {
22932273         //logerror("%06x: 68000 return z80 Bus (byte LSB access) %04x %04x\n", cpu_get_pc(space->cpu),data,mem_mask);
2294         genz80.z80_has_bus=1;
2295         cpu_resume( space->machine->cpu[genz80.z80_cpunum], SUSPEND_REASON_HALT );
2274         genz80.z80_has_bus = 1;
2275         cputag_resume( space->machine, "genesis_snd_z80", SUSPEND_REASON_HALT );
22962276      }
22972277   }
22982278   else // word access
r4679r4680
23002280      if (data & 0x0100)
23012281      {
23022282         //logerror("%06x: 68000 request z80 Bus (word access) %04x %04x\n", cpu_get_pc(space->cpu),data,mem_mask);
2303         genz80.z80_has_bus=0;
2304         cpu_suspend( space->machine->cpu[genz80.z80_cpunum], SUSPEND_REASON_HALT, 1 );
2283         genz80.z80_has_bus = 0;
2284         cputag_suspend( space->machine, "genesis_snd_z80", SUSPEND_REASON_HALT, 1 );
23052285      }
23062286      else
23072287      {
23082288         //logerror("%06x: 68000 return z80 Bus (byte LSB access) %04x %04x\n", cpu_get_pc(space->cpu),data,mem_mask);
2309         genz80.z80_has_bus=1;
2310         cpu_resume( space->machine->cpu[genz80.z80_cpunum], SUSPEND_REASON_HALT );
2289         genz80.z80_has_bus = 1;
2290         cputag_resume( space->machine, "genesis_snd_z80", SUSPEND_REASON_HALT );
23112291      }
23122292   }
23132293}
r4679r4680
23192299      if (data & 0x0100)
23202300      {
23212301         //logerror("%06x: 68000 clear z80 reset (byte MSB access) %04x %04x\n", cpu_get_pc(space->cpu),data,mem_mask);
2322         genz80.z80_is_reset=0;
2302         genz80.z80_is_reset = 0;
23232303         if ( genz80.z80_has_bus )
2324            cpu_resume( space->machine->cpu[genz80.z80_cpunum], SUSPEND_REASON_HALT );
2304            cputag_resume( space->machine, "genesis_snd_z80", SUSPEND_REASON_HALT );
23252305      }
23262306      else
23272307      {
23282308         //logerror("%06x: 68000 start z80 reset (byte MSB access) %04x %04x\n", cpu_get_pc(space->cpu),data,mem_mask);
2329         genz80.z80_is_reset=1;
2330         device_reset( space->machine->cpu[genz80.z80_cpunum] );
2331         cpu_suspend( space->machine->cpu[genz80.z80_cpunum], SUSPEND_REASON_HALT, 1 );
2309         genz80.z80_is_reset = 1;
2310         device_reset( cputag_get_cpu(space->machine, "genesis_snd_z80") );
2311         cputag_suspend( space->machine, "genesis_snd_z80", SUSPEND_REASON_HALT, 1 );
23322312         devtag_reset(space->machine, "ym");
23332313      }
23342314   }
r4679r4680
23372317      if (data & 0x0001)
23382318      {
23392319         //logerror("%06x: 68000 clear z80 reset (byte LSB access) %04x %04x\n", cpu_get_pc(space->cpu),data,mem_mask);
2340         genz80.z80_is_reset=0;
2320         genz80.z80_is_reset = 0;
23412321         if ( genz80.z80_has_bus )
2342            cpu_resume( space->machine->cpu[genz80.z80_cpunum], SUSPEND_REASON_HALT );
2322            cputag_resume( space->machine, "genesis_snd_z80", SUSPEND_REASON_HALT );
23432323      }
23442324      else
23452325      {
23462326         //logerror("%06x: 68000 start z80 reset (byte LSB access) %04x %04x\n", cpu_get_pc(space->cpu),data,mem_mask);
2347         genz80.z80_is_reset=1;
2348         device_reset( space->machine->cpu[genz80.z80_cpunum] );
2349         cpu_suspend( space->machine->cpu[genz80.z80_cpunum], SUSPEND_REASON_HALT, 1 );
2327         genz80.z80_is_reset = 1;
2328         device_reset( cputag_get_cpu(space->machine, "genesis_snd_z80") );
2329         cputag_suspend( space->machine, "genesis_snd_z80", SUSPEND_REASON_HALT, 1 );
23502330         devtag_reset(space->machine, "ym");
23512331
23522332      }
r4679r4680
23562336      if (data & 0x0100)
23572337      {
23582338         //logerror("%06x: 68000 clear z80 reset (word access) %04x %04x\n", cpu_get_pc(space->cpu),data,mem_mask);
2359         genz80.z80_is_reset=0;
2339         genz80.z80_is_reset = 0;
23602340         if ( genz80.z80_has_bus )
2361            cpu_resume( space->machine->cpu[genz80.z80_cpunum], SUSPEND_REASON_HALT );
2341            cputag_resume( space->machine, "genesis_snd_z80", SUSPEND_REASON_HALT );
23622342      }
23632343      else
23642344      {
23652345         //logerror("%06x: 68000 start z80 reset (byte LSB access) %04x %04x\n", cpu_get_pc(space->cpu),data,mem_mask);
2366         genz80.z80_is_reset=1;
2367         device_reset( space->machine->cpu[genz80.z80_cpunum] );
2368         cpu_suspend( space->machine->cpu[genz80.z80_cpunum], SUSPEND_REASON_HALT, 1 );
2346         genz80.z80_is_reset = 1;
2347         device_reset( cputag_get_cpu(space->machine, "genesis_snd_z80") );
2348         cputag_suspend( space->machine, "genesis_snd_z80", SUSPEND_REASON_HALT, 1 );
23692349         devtag_reset(space->machine, "ym");
23702350      }
23712351   }
r4679r4680
24762456   return 0xff;
24772457}
24782458
2479static ADDRESS_MAP_START( z80_portmap, ADDRESS_SPACE_IO, 8 )
2480   ADDRESS_MAP_GLOBAL_MASK(0xff)
2481   AM_RANGE(0x0000 , 0xff) AM_NOP
2482ADDRESS_MAP_END
2459static ADDRESS_MAP_START( megadriv_z80_map, ADDRESS_SPACE_PROGRAM, 8 )
2460   AM_RANGE(0x0000 , 0x1fff) AM_RAMBANK(1) AM_MIRROR(0x2000) // RAM can be accessed by the 68k
2461   AM_RANGE(0x4000 , 0x4003) AM_DEVREADWRITE("ym", ym2612_r,ym2612_w)
24832462
2484static ADDRESS_MAP_START( z80_readmem, ADDRESS_SPACE_PROGRAM, 8 )
2463   AM_RANGE(0x6000 , 0x6000) AM_WRITE(megadriv_z80_z80_bank_w)
2464   AM_RANGE(0x6001 , 0x6001) AM_WRITE(megadriv_z80_z80_bank_w) // wacky races uses this address
24852465
2486   AM_RANGE(0x0000 , 0x1fff) AM_READ(SMH_BANK1) AM_MIRROR(0x2000) // RAM can be accessed by the 68k
2487   AM_RANGE(0x4000 , 0x4003) AM_DEVREAD("ym", ym2612_r)
2488
24892466   AM_RANGE(0x6100 , 0x7eff) AM_READ(megadriv_z80_unmapped_read)
24902467
2491   AM_RANGE(0x7f00 , 0x7fff) AM_READ(megadriv_z80_vdp_read)
2468   AM_RANGE(0x7f00 , 0x7fff) AM_READWRITE(megadriv_z80_vdp_read,megadriv_z80_vdp_write)
24922469
2493   AM_RANGE(0x8000 , 0xffff) AM_READ(z80_read_68k_banked_data) // The Z80 can read the 68k address space this way
2470   AM_RANGE(0x8000 , 0xffff) AM_READWRITE(z80_read_68k_banked_data,z80_write_68k_banked_data) // The Z80 can read the 68k address space this way
24942471ADDRESS_MAP_END
24952472
2496static ADDRESS_MAP_START( z80_writemem, ADDRESS_SPACE_PROGRAM, 8 )
2497   AM_RANGE(0x0000 , 0x1fff) AM_WRITE(SMH_BANK1) AM_MIRROR(0x2000)
2498   AM_RANGE(0x4000 , 0x4003) AM_DEVWRITE("ym", ym2612_w)
2499
2500   AM_RANGE(0x7f00 , 0x7fff) AM_WRITE(megadriv_z80_vdp_write)
2501
2502   AM_RANGE(0x6000 , 0x6000) AM_WRITE(megadriv_z80_z80_bank_w)
2503   AM_RANGE(0x6001 , 0x6001) AM_WRITE(megadriv_z80_z80_bank_w) // wacky races uses this address
2504
2505   AM_RANGE(0x8000 , 0xffff) AM_WRITE(z80_write_68k_banked_data)
2473static ADDRESS_MAP_START( megadriv_z80_io_map, ADDRESS_SPACE_IO, 8 )
2474   ADDRESS_MAP_GLOBAL_MASK(0xff)
2475   AM_RANGE(0x0000 , 0xff) AM_NOP
25062476ADDRESS_MAP_END
25072477
25082478/****************************************** 32X related ******************************************/
r4679r4680
26872657      if (data & 0x01)
26882658      {
26892659         _32x_adapter_enabled = 1;
2690         memory_install_readwrite16_handler(space, 0x0880000, 0x08fffff, 0, 0, SMH_BANK11, SMH_BANK11); // 'fixed' 512kb rom bank
2660         memory_install_readwrite16_handler(space, 0x0880000, 0x08fffff, 0, 0, (read16_space_func)SMH_BANK(11), (write16_space_func)SMH_BANK(11)); // 'fixed' 512kb rom bank
26912661         memory_set_bankptr(space->machine,  11, memory_region(space->machine, "gamecart") );
26922662
2693         memory_install_readwrite16_handler(space, 0x0900000, 0x09fffff, 0, 0, SMH_BANK12, SMH_BANK12); // 'bankable' 1024kb rom bank
2663         memory_install_readwrite16_handler(space, 0x0900000, 0x09fffff, 0, 0, (read16_space_func)SMH_BANK(12), (write16_space_func)SMH_BANK(12)); // 'bankable' 1024kb rom bank
26942664         memory_set_bankptr(space->machine,  12, memory_region(space->machine, "gamecart") );
26952665
2696         memory_install_readwrite16_handler(space, 0x0000000, 0x03fffff, 0, 0, SMH_BANK10, SMH_BANK10);
2666         memory_install_readwrite16_handler(space, 0x0000000, 0x03fffff, 0, 0, (read16_space_func)SMH_BANK(10), (write16_space_func)SMH_BANK(10));
26972667         memory_set_bankptr(space->machine,  10, memory_region(space->machine, "32x_68k_bios") );
26982668
26992669         memory_install_readwrite16_handler(space, 0x0a15180, 0x0a15181, 0, 0, _32x_68k_a15180_r, _32x_68k_a15180_w); // mode control regs
r4679r4680
27162686      {
27172687         _32x_adapter_enabled = 0;
27182688
2719         memory_install_readwrite16_handler(space, 0x0000000, 0x03fffff, 0, 0, SMH_BANK10, SMH_BANK10);
2689         memory_install_readwrite16_handler(space, 0x0000000, 0x03fffff, 0, 0, (read16_space_func)SMH_BANK(10), (write16_space_func)SMH_BANK(10));
27202690         memory_set_bankptr(space->machine,  10, memory_region(space->machine, "gamecart") );
27212691
27222692
r4679r4680
38133783}
38143784
38153785static ADDRESS_MAP_START( svp_ssp_map, ADDRESS_SPACE_PROGRAM, 16 )
3816   AM_RANGE(0x0000 , 0x03ff) AM_READ(SMH_BANK3)
3817   AM_RANGE(0x0400 , 0xffff) AM_READ(SMH_BANK4)
3786   AM_RANGE(0x0000 , 0x03ff) AM_ROMBANK(3)
3787   AM_RANGE(0x0400 , 0xffff) AM_ROMBANK(4)
38183788ADDRESS_MAP_END
38193789
38203790static ADDRESS_MAP_START( svp_ext_map, ADDRESS_SPACE_IO, 16 )
r4679r4680
38813851   memset(&svp, 0, sizeof(svp));
38823852
38833853   /* SVP stuff */
3884   svp.dram = auto_malloc(0x20000);
3885   memory_install_readwrite16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x300000, 0x31ffff, 0, 0, SMH_BANK2, SMH_BANK2);
3854   svp.dram = auto_alloc_array(machine, UINT8, 0x20000);
3855   memory_install_readwrite16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x300000, 0x31ffff, 0, 0, (read16_space_func)SMH_BANK(2), (write16_space_func)SMH_BANK(2));
38863856   memory_set_bankptr(machine,  2, svp.dram );
3887   memory_install_readwrite16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xa15000, 0xa150ff, 0, 0, svp_68k_io_r, svp_68k_io_w);
3857   memory_install_readwrite16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xa15000, 0xa150ff, 0, 0, svp_68k_io_r, svp_68k_io_w);
38883858   // "cell arrange" 1 and 2
3889   memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x390000, 0x39ffff, 0, 0, svp_68k_cell1_r);
3890   memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x3a0000, 0x3affff, 0, 0, svp_68k_cell2_r);
3859   memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x390000, 0x39ffff, 0, 0, svp_68k_cell1_r);
3860   memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x3a0000, 0x3affff, 0, 0, svp_68k_cell2_r);
38913861
3892   memory_install_read16_handler(cpu_get_address_space(machine->cpu[2], ADDRESS_SPACE_PROGRAM), 0x438, 0x438, 0, 0, svp_speedup_r);
3862   memory_install_read16_handler(cputag_get_address_space(machine, "svp", ADDRESS_SPACE_PROGRAM), 0x438, 0x438, 0, 0, svp_speedup_r);
38933863
3894   svp.iram = auto_malloc(0x800);
3864   svp.iram = auto_alloc_array(machine, UINT8, 0x800);
38953865   memory_set_bankptr(machine,  3, svp.iram );
38963866   /* SVP ROM just shares m68k region.. */
38973867   ROM = memory_region(machine, "maincpu");
r4679r4680
39423912
39433913   render_bitmap = video_screen_auto_bitmap_alloc(machine->primary_screen);
39443914
3945   megadrive_vdp_vram  = auto_malloc(0x10000);
3946   megadrive_vdp_cram  = auto_malloc(0x80);
3947   megadrive_vdp_vsram = auto_malloc(0x80);
3948   megadrive_vdp_internal_sprite_attribute_table = auto_malloc(0x400);
3915   megadrive_vdp_vram  = auto_alloc_array(machine, UINT16, 0x10000/2);
3916   megadrive_vdp_cram  = auto_alloc_array(machine, UINT16, 0x80/2);
3917   megadrive_vdp_vsram = auto_alloc_array(machine, UINT16, 0x80/2);
3918   megadrive_vdp_internal_sprite_attribute_table = auto_alloc_array(machine, UINT16, 0x400/2);
39493919
39503920   for (x=0;x<0x20;x++)
39513921      megadrive_vdp_register[x]=0;
r4679r4680
39603930
39613931   megadrive_max_hposition = 480;
39623932
3963   sprite_renderline = auto_malloc(1024);
3964   highpri_renderline = auto_malloc(320);
3965   video_renderline = auto_malloc(320*4);
3933   sprite_renderline = auto_alloc_array(machine, UINT8, 1024);
3934   highpri_renderline = auto_alloc_array(machine, UINT8, 320);
3935   video_renderline = auto_alloc_array(machine, UINT32, 320);
39663936
3967   megadrive_vdp_palette_lookup = auto_malloc(0x40*2);
3968   megadrive_vdp_palette_lookup_sprite = auto_malloc(0x40*2);
3937   megadrive_vdp_palette_lookup = auto_alloc_array(machine, UINT16, 0x40);
3938   megadrive_vdp_palette_lookup_sprite = auto_alloc_array(machine, UINT16, 0x40);
39693939
3970   megadrive_vdp_palette_lookup_shadow = auto_malloc(0x40*2);
3971   megadrive_vdp_palette_lookup_highlight = auto_malloc(0x40*2);
3940   megadrive_vdp_palette_lookup_shadow = auto_alloc_array(machine, UINT16, 0x40);
3941   megadrive_vdp_palette_lookup_highlight = auto_alloc_array(machine, UINT16, 0x40);
39723942
39733943   memset(megadrive_vdp_palette_lookup,0x00,0x40*2);
39743944   memset(megadrive_vdp_palette_lookup_sprite,0x00,0x40*2);
r4679r4680
39973967   /* reference */
39983968
39993969//  time_elapsed_since_crap = timer_timeelapsed(frame_timer);
4000//  xxx = cpu_attotime_to_clocks(screen->machine->cpu[0],time_elapsed_since_crap);
3970//  xxx = cputag_attotime_to_clocks(screen->machine, "maincpu", time_elapsed_since_crap);
40013971//  mame_printf_debug("update cycles %d, %08x %08x\n",xxx, (UINT32)(time_elapsed_since_crap.attoseconds>>32),(UINT32)(time_elapsed_since_crap.attoseconds&0xffffffff));
40023972
40033973   return 0;
r4679r4680
59175887
59185888
59195889
5920   if (genesis_has_z80)
5921   {
5922      if (genesis_scanline_counter==megadrive_z80irq_scanline)
5890      if (cputag_get_cpu(machine, "genesis_snd_z80") != NULL)
59235891      {
5924         if ((genz80.z80_has_bus==1) && (genz80.z80_is_reset==0)) cpu_set_input_line(machine->cpu[1],0,HOLD_LINE);
5892         if (genesis_scanline_counter == megadrive_z80irq_scanline)
5893         {
5894            if ((genz80.z80_has_bus == 1) && (genz80.z80_is_reset == 0))
5895               cputag_set_input_line(machine, "genesis_snd_z80", 0, HOLD_LINE);
5896         }
5897         if (genesis_scanline_counter == megadrive_z80irq_scanline + 1)
5898         {
5899            cputag_set_input_line(machine, "genesis_snd_z80", 0, CLEAR_LINE);
5900         }
59255901      }
5926      if (genesis_scanline_counter==megadrive_z80irq_scanline+1)
5927      {
5928         cpu_set_input_line(machine->cpu[1],0,CLEAR_LINE);
5929      }
5930   }
59315902
59325903   }
59335904   else /* pretend we're still on the same scanline to compensate for rounding errors */
59345905   {
5935      genesis_scanline_counter = megadrive_total_scanlines-1;
5906      genesis_scanline_counter = megadrive_total_scanlines - 1;
59365907   }
59375908
59385909}
r4679r4680
59435914
59445915   {
59455916//      megadrive_irq6_pending = 1;
5946      if (MEGADRIVE_REG01_IRQ6_ENABLE || genesis_always_irq6) cpu_set_input_line(machine->cpu[0],6,HOLD_LINE);
5917      if (MEGADRIVE_REG01_IRQ6_ENABLE || genesis_always_irq6)
5918         cputag_set_input_line(machine, "maincpu", 6, HOLD_LINE);
59475919   }
59485920}
59495921
59505922static TIMER_CALLBACK( irq4_on_callback )
59515923{
59525924   //mame_printf_debug("irq4 active on %d\n",genesis_scanline_counter);
5953   cpu_set_input_line(machine->cpu[0],4,HOLD_LINE);
5925   cputag_set_input_line(machine, "maincpu", 4, HOLD_LINE);
59545926}
59555927
59565928/*****************************************************************************************/
r4679r4680
59985970      break;
59995971   }
60005972
6001   if (genesis_has_z80)
5973   if (cputag_get_cpu(machine, "genesis_snd_z80") != NULL)
60025974   {
60035975      genz80.z80_is_reset = 1;
6004      cpu_set_input_line(machine->cpu[genz80.z80_cpunum], INPUT_LINE_RESET, ASSERT_LINE);
5976      cputag_set_input_line(machine, "genesis_snd_z80", INPUT_LINE_RESET, ASSERT_LINE);
60055977      genz80.z80_has_bus = 1;
6006      cpu_set_input_line(machine->cpu[genz80.z80_cpunum], INPUT_LINE_HALT, CLEAR_LINE);
5978      cputag_set_input_line(machine, "genesis_snd_z80", INPUT_LINE_HALT, CLEAR_LINE);
60075979      genz80.z80_bank_addr = 0;
60085980      genesis_scanline_counter = -1;
60095981   }
r4679r4680
60205992   irq4_on_timer = timer_alloc(machine, irq4_on_callback, NULL);
60215993
60225994   timer_adjust_oneshot(frame_timer, attotime_zero, 0);
6023   timer_adjust_oneshot(scanline_timer, attotime_zero, 0);
5995   timer_adjust_oneshot(scanline_timer, attotime_zero, 0);
60245996
60255997   if (genesis_other_hacks)
60265998   {
60275999   //  set_refresh_rate(megadriv_framerate);
6028      cpu_set_clockscale(machine->cpu[0], 0.9950f); /* Fatal Rewind is very fussy... */
6029   //  cpu_set_clockscale(machine->cpu[0], 0.3800f); /* Fatal Rewind is very fussy... */
6000      cpu_set_clockscale(cputag_get_cpu(machine, "maincpu"), 0.9950f); /* Fatal Rewind is very fussy... */
6001   //  cpu_set_clockscale(cputag_get_cpu(machine, "maincpu"), 0.3800f); /* Fatal Rewind is very fussy... */
60306002
60316003      memset(megadrive_ram,0x00,0x10000);
60326004   }
r4679r4680
60856057   megadrive_sprite_collision=0;//? when to reset this ..
60866058   megadrive_imode = MEGADRIVE_REG0C_INTERLEAVE; // can't change mid-frame..
60876059   megadrive_imode_odd_frame^=1;
6088//  cpu_set_input_line(machine->cpu[1],0,CLEAR_LINE); // if the z80 interrupt hasn't happened by now, clear it..
6060//  cputag_set_input_line(machine, "genesis_snd_z80", 0, CLEAR_LINE); // if the z80 interrupt hasn't happened by now, clear it..
60896061
6090   if (MD_RESET_BUTTON(machine))  cpu_set_input_line(machine->cpu[0], INPUT_LINE_RESET, PULSE_LINE);
6062   if (MD_RESET_BUTTON(machine))  cputag_set_input_line(machine, "maincpu", INPUT_LINE_RESET, PULSE_LINE);
60916063
60926064/*
60936065int megadrive_total_scanlines = 262;
r4679r4680
61716143      frametime = ATTOSECONDS_PER_SECOND/megadriv_framerate;
61726144
61736145      time_elapsed_since_crap = timer_timeelapsed(frame_timer);
6174      xxx = cpu_attotime_to_clocks(machine->cpu[0],time_elapsed_since_crap);
6146      xxx = cputag_attotime_to_clocks(machine, "maincpu",time_elapsed_since_crap);
61756147      //mame_printf_debug("---------- cycles %d, %08x %08x\n",xxx, (UINT32)(time_elapsed_since_crap.attoseconds>>32),(UINT32)(time_elapsed_since_crap.attoseconds&0xffffffff));
61766148      //mame_printf_debug("---------- framet %d, %08x %08x\n",xxx, (UINT32)(frametime>>32),(UINT32)(frametime&0xffffffff));
61776149      timer_adjust_oneshot(frame_timer,  attotime_zero, 0);
r4679r4680
62126184
62136185MACHINE_DRIVER_START( megadriv )
62146186   MDRV_CPU_ADD("maincpu", M68000, MASTER_CLOCK_NTSC / 7) /* 7.67 MHz */
6215   MDRV_CPU_PROGRAM_MAP(megadriv_readmem,megadriv_writemem)
6187   MDRV_CPU_PROGRAM_MAP(megadriv_map,0)
62166188   /* IRQs are handled via the timers */
62176189
62186190   MDRV_CPU_ADD("genesis_snd_z80", Z80, MASTER_CLOCK_NTSC / 15) /* 3.58 MHz */
6219   MDRV_CPU_PROGRAM_MAP(z80_readmem,z80_writemem)
6220   MDRV_CPU_IO_MAP(z80_portmap,0)
6191   MDRV_CPU_PROGRAM_MAP(megadriv_z80_map,0)
6192   MDRV_CPU_IO_MAP(megadriv_z80_io_map,0)
62216193   /* IRQ handled via the timers */
62226194
62236195   MDRV_MACHINE_RESET(megadriv)
r4679r4680
62566228
62576229MACHINE_DRIVER_START( megadpal )
62586230   MDRV_CPU_ADD("maincpu", M68000, MASTER_CLOCK_PAL / 7) /* 7.67 MHz */
6259   MDRV_CPU_PROGRAM_MAP(megadriv_readmem,megadriv_writemem)
6231   MDRV_CPU_PROGRAM_MAP(megadriv_map,0)
62606232   /* IRQs are handled via the timers */
62616233
62626234   MDRV_CPU_ADD("genesis_snd_z80", Z80, MASTER_CLOCK_PAL / 15) /* 3.58 MHz */
6263   MDRV_CPU_PROGRAM_MAP(z80_readmem,z80_writemem)
6264   MDRV_CPU_IO_MAP(z80_portmap,0)
6235   MDRV_CPU_PROGRAM_MAP(megadriv_z80_map,0)
6236   MDRV_CPU_IO_MAP(megadriv_z80_io_map,0)
62656237   /* IRQ handled via the timers */
62666238
62676239   MDRV_MACHINE_RESET(megadriv)
r4679r4680
63786350   if (_genesis_snd_z80_cpu != NULL)
63796351   {
63806352      printf("GENESIS Sound Z80 cpu found %d\n", cpu_get_index(_genesis_snd_z80_cpu) );
6381      genesis_has_z80 = 1;
6353
6354      genz80.z80_prgram = auto_alloc_array(machine, UINT8, 0x2000);
6355      memory_set_bankptr(machine,  1, genz80.z80_prgram );
63826356   }
6383   else
6384   {
6385      genesis_has_z80 = 0;
6386   }
63876357
63886358   /* Look to see if this system has the 32x Master SH2 */
63896359   _32x_master_cpu = cputag_get_cpu(machine, "32x_master_sh2");
r4679r4680
64216391   }
64226392
64236393
6424   if (genesis_has_z80)
6425   {
6426      genz80.z80_cpunum = 1;
6427      genz80.z80_prgram = auto_malloc(0x2000);
6428      memory_set_bankptr(machine,  1, genz80.z80_prgram );
6429   }
6430
6431   cpu_set_irq_callback(machine->cpu[0], genesis_int_callback);
6394   cpu_set_irq_callback(cputag_get_cpu(machine, "maincpu"), genesis_int_callback);
64326395   megadriv_backupram = NULL;
64336396   megadriv_backupram_length = 0;
64346397
64356398   vdp_get_word_from_68k_mem = vdp_get_word_from_68k_mem_default;
64366399
6437   device_set_info_fct(machine->cpu[0], CPUINFO_FCT_M68K_TAS_CALLBACK, (void *)megadriv_tas_callback);
6400   m68k_set_tas_callback(cputag_get_cpu(machine, "maincpu"), megadriv_tas_callback);
64386401
64396402   if ((machine->gamedrv->ipt==ipt_megadri6) || (machine->gamedrv->ipt==ipt_ssf2ghw))
64406403   {
r4679r4680
65586521   const device_config *ym = devtag_get_device(machine, "ym");
65596522
65606523   /* INIT THE PORTS *********************************************************************************************/
6561   memory_install_readwrite8_handler(cpu_get_address_space(machine->cpu[1], ADDRESS_SPACE_IO), 0x0000, 0xffff, 0, 0, z80_unmapped_port_r, z80_unmapped_port_w);
6524   memory_install_readwrite8_handler(cputag_get_address_space(machine, "genesis_snd_z80", ADDRESS_SPACE_IO), 0x0000, 0xffff, 0, 0, z80_unmapped_port_r, z80_unmapped_port_w);
65626525
65636526   /* catch any addresses that don't get mapped */
6564   memory_install_readwrite8_handler(cpu_get_address_space(machine->cpu[1], ADDRESS_SPACE_PROGRAM), 0x0000, 0xffff, 0, 0, z80_unmapped_r, z80_unmapped_w);
6527   memory_install_readwrite8_handler(cputag_get_address_space(machine, "genesis_snd_z80", ADDRESS_SPACE_PROGRAM), 0x0000, 0xffff, 0, 0, z80_unmapped_r, z80_unmapped_w);
65656528
65666529
6567   memory_install_readwrite8_handler(cpu_get_address_space(machine->cpu[1], ADDRESS_SPACE_PROGRAM), 0x0000, 0x1fff, 0, 0, SMH_BANK1, SMH_BANK1);
6530   memory_install_readwrite8_handler(cputag_get_address_space(machine, "genesis_snd_z80", ADDRESS_SPACE_PROGRAM), 0x0000, 0x1fff, 0, 0, (read8_space_func)SMH_BANK(1), (write8_space_func)SMH_BANK(1));
65686531   memory_set_bankptr(machine,  1, genz80.z80_prgram );
65696532
6570   memory_install_readwrite8_handler(cpu_get_address_space(machine->cpu[1], ADDRESS_SPACE_PROGRAM), 0x0000, 0x1fff, 0, 0, SMH_BANK6, SMH_BANK6);
6533   memory_install_readwrite8_handler(cputag_get_address_space(machine, "genesis_snd_z80", ADDRESS_SPACE_PROGRAM), 0x0000, 0x1fff, 0, 0, (read8_space_func)SMH_BANK(6), (write8_space_func)SMH_BANK(6));
65716534   memory_set_bankptr(machine,  6, genz80.z80_prgram );
65726535
65736536
65746537   // not allowed??
6575//  memory_install_readwrite8_handler(cpu_get_address_space(machine->cpu[1], ADDRESS_SPACE_PROGRAM), 0x2000, 0x3fff, 0, 0, SMH_BANK1, SMH_BANK1);
6538//  memory_install_readwrite8_handler(cputag_get_address_space(machine, "genesis_snd_z80", ADDRESS_SPACE_PROGRAM), 0x2000, 0x3fff, 0, 0, (read8_space_func)SMH_BANK(1), (write8_space_func)SMH_BANK(1));
65766539
6577   memory_install_readwrite8_device_handler(cpu_get_address_space(machine->cpu[1], ADDRESS_SPACE_PROGRAM), ym, 0x4000, 0x4003, 0, 0, ym2612_r, ym2612_w);
6578   memory_install_write8_handler    (cpu_get_address_space(machine->cpu[1], ADDRESS_SPACE_PROGRAM), 0x6000, 0x6000, 0, 0, megadriv_z80_z80_bank_w);
6579   memory_install_write8_handler    (cpu_get_address_space(machine->cpu[1], ADDRESS_SPACE_PROGRAM), 0x6001, 0x6001, 0, 0, megadriv_z80_z80_bank_w);
6580   memory_install_read8_handler     (cpu_get_address_space(machine->cpu[1], ADDRESS_SPACE_PROGRAM), 0x6100, 0x7eff, 0, 0, megadriv_z80_unmapped_read);
6581   memory_install_readwrite8_handler(cpu_get_address_space(machine->cpu[1], ADDRESS_SPACE_PROGRAM), 0x7f00, 0x7fff, 0, 0, megadriv_z80_vdp_read, megadriv_z80_vdp_write);
6582   memory_install_readwrite8_handler(cpu_get_address_space(machine->cpu[1], ADDRESS_SPACE_PROGRAM), 0x8000, 0xffff, 0, 0, z80_read_68k_banked_data, z80_write_68k_banked_data);
6540   memory_install_readwrite8_device_handler(cputag_get_address_space(machine, "genesis_snd_z80", ADDRESS_SPACE_PROGRAM), ym, 0x4000, 0x4003, 0, 0, ym2612_r, ym2612_w);
6541   memory_install_write8_handler    (cputag_get_address_space(machine, "genesis_snd_z80", ADDRESS_SPACE_PROGRAM), 0x6000, 0x6000, 0, 0, megadriv_z80_z80_bank_w);
6542   memory_install_write8_handler    (cputag_get_address_space(machine, "genesis_snd_z80", ADDRESS_SPACE_PROGRAM), 0x6001, 0x6001, 0, 0, megadriv_z80_z80_bank_w);
6543   memory_install_read8_handler     (cputag_get_address_space(machine, "genesis_snd_z80", ADDRESS_SPACE_PROGRAM), 0x6100, 0x7eff, 0, 0, megadriv_z80_unmapped_read);
6544   memory_install_readwrite8_handler(cputag_get_address_space(machine, "genesis_snd_z80", ADDRESS_SPACE_PROGRAM), 0x7f00, 0x7fff, 0, 0, megadriv_z80_vdp_read, megadriv_z80_vdp_write);
6545   memory_install_readwrite8_handler(cputag_get_address_space(machine, "genesis_snd_z80", ADDRESS_SPACE_PROGRAM), 0x8000, 0xffff, 0, 0, z80_read_68k_banked_data, z80_write_68k_banked_data);
65836546}
65846547
65856548// these are tests for 'special case' hardware to make sure I don't break anything while rearranging things
r4679r4680
65916554{
65926555
65936556
6594   _32x_dram0 = auto_malloc(0x40000);
6595   _32x_dram1 = auto_malloc(0x40000);
6557   _32x_dram0 = auto_alloc_array(machine, UINT16, 0x40000/2);
6558   _32x_dram1 = auto_alloc_array(machine, UINT16, 0x40000/2);
65966559
65976560   memset(_32x_dram0, 0x00, 0x40000);
65986561   memset(_32x_dram1, 0x00, 0x40000);
65996562
6600   _32x_palette = auto_malloc(0x200);
6601   _32x_palette_lookup = auto_malloc(0x200);
6563   _32x_palette = auto_alloc_array(machine, UINT16, 0x200/2);
6564   _32x_palette_lookup = auto_alloc_array(machine, UINT16, 0x200/2);
66026565
66036566   memset(_32x_palette, 0x00, 0x200);
66046567   memset(_32x_palette_lookup, 0x00, 0x200);
r4679r4680
66116574
66126575   if (_32x_adapter_enabled == 0)
66136576   {
6614      memory_install_readwrite16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x0000000, 0x03fffff, 0, 0, SMH_BANK10, SMH_BANK10);
6577      memory_install_readwrite16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x0000000, 0x03fffff, 0, 0, (read16_space_func)SMH_BANK(10), (write16_space_func)SMH_BANK(10));
66156578      memory_set_bankptr(machine,  10, memory_region(machine, "gamecart") );
66166579   };
66176580
66186581
66196582   a15100_reg = 0x0000;
6620   memory_install_readwrite16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xa15100, 0xa15101, 0, 0, _32x_68k_a15100_r, _32x_68k_a15100_w); // framebuffer control regs
6621   memory_install_readwrite16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xa15102, 0xa15103, 0, 0, _32x_68k_a15102_r, _32x_68k_a15102_w); // send irq to sh2
6622   memory_install_readwrite16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xa15104, 0xa15105, 0, 0, _32x_68k_a15104_r, _32x_68k_a15104_w); // 68k BANK rom set
6623   memory_install_readwrite16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xa15106, 0xa15107, 0, 0, _32x_68k_a15106_r, _32x_68k_a15106_w); // dreq stuff
6583   memory_install_readwrite16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xa15100, 0xa15101, 0, 0, _32x_68k_a15100_r, _32x_68k_a15100_w); // framebuffer control regs
6584   memory_install_readwrite16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xa15102, 0xa15103, 0, 0, _32x_68k_a15102_r, _32x_68k_a15102_w); // send irq to sh2
6585   memory_install_readwrite16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xa15104, 0xa15105, 0, 0, _32x_68k_a15104_r, _32x_68k_a15104_w); // 68k BANK rom set
6586   memory_install_readwrite16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xa15106, 0xa15107, 0, 0, _32x_68k_a15106_r, _32x_68k_a15106_w); // dreq stuff
66246587
6625   memory_install_readwrite16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xa15120, 0xa1512f, 0, 0, _32x_68k_commsram_r, _32x_68k_commsram_w); // comms reg 0-7
6588   memory_install_readwrite16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xa15120, 0xa1512f, 0, 0, _32x_68k_commsram_r, _32x_68k_commsram_w); // comms reg 0-7
66266589
6627   memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x0a130ec, 0x0a130ef, 0, 0, _32x_68k_MARS_r); // system ID
6590   memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x0a130ec, 0x0a130ef, 0, 0, _32x_68k_MARS_r); // system ID
66286591
66296592
66306593
r4679r4680
66506613   _32x_240mode = 0;
66516614
66526615// checking if these help brutal, they don't.
6653   sh2drc_set_options(machine->cpu[2], SH2DRC_COMPATIBLE_OPTIONS);
6654   sh2drc_set_options(machine->cpu[3], SH2DRC_COMPATIBLE_OPTIONS);
6616   sh2drc_set_options(cputag_get_cpu(machine, "32x_master_sh2"), SH2DRC_COMPATIBLE_OPTIONS);
6617   sh2drc_set_options(cputag_get_cpu(machine, "32x_slave_sh2"), SH2DRC_COMPATIBLE_OPTIONS);
66556618
66566619   DRIVER_INIT_CALL(megadriv);
66576620}
src/mame/drivers/itgambl2.c
r4679r4680
11/************************************************************************
22
3
34  Italian Gambling games based on H8/3337 MCU + NEC D7759GC (sound).
45
56  Written by Roberto Fresca.
r4679r4680
221222static MACHINE_RESET( itgambl2 )
222223{
223224   /* stop the CPU, we have no code for it anyway */
224   cpu_set_input_line(machine->cpu[0], INPUT_LINE_HALT, ASSERT_LINE);
225   cputag_set_input_line(machine, "maincpu", INPUT_LINE_HALT, ASSERT_LINE);
225226}
226227
227228/* default 444 palette for debug purpose*/
r4679r4680
691692   ROM_LOAD( "0.bin", 0x00000, 0x20000, CRC(833c5be5) SHA1(89110cb52265ee5bfdf73c0af343b7ce2356e394) )
692693ROM_END
693694
695/* Triple Star 2000
694696
697CPU:
6981x HD64F3337YCP16 (main)(not dumped)
6992x NEC D7759GC (speech synthesizer)
7001x TDA2003 (sound)
7011x oscillator 16.000000
7021x oscillator 14.318180
703
704ROMs:
7051x M27C1001 (0)
7064x M27C4001 (1,2,3,4)
707
708
709RAMs
7103x TC551001
711
712PLDs
7132x ispLSI10032E-70LJ
714Note    1x 28x2 edge connector
7151x 14 legs connector
7161x RS232 connector
7171x trimmer (volume)
7181x trimmer (unknown)
7191x red LED
7202x 8x2 switches DIP
7211x battery 3.6V
722*/
723
724ROM_START( trstar2k )
725   ROM_REGION( 0x1000000, "maincpu", 0 ) /* all the program code is in here */
726   ROM_LOAD( "trstar2k_hd64f3337ycp16.mcu", 0x00000, 0x4000, NO_DUMP )
727
728   ROM_REGION( 0x200000, "gfx1", 0 ) /* gfx seems 4bpp */
729   ROM_LOAD( "ep1.bin", 0x000000, 0x80000, CRC(59394c87) SHA1(a8b5de197b474714a8e5a5c959b81cb78fc69291) )
730   ROM_LOAD( "ep2.bin", 0x080000, 0x80000, CRC(80608870) SHA1(5af501e4bb9498d2b9b614cc98ec9f4c907f207d) )
731   ROM_LOAD( "ep3.bin", 0x100000, 0x80000, CRC(cad4523f) SHA1(1a16f200622a8c9666beea2da2ec64bf7c9195a8) )
732   ROM_LOAD( "ep4.bin", 0x180000, 0x80000, CRC(e488d31d) SHA1(e0a51abf1459a1c7205750b9cad28a63bbabed96) )
733
734   ROM_REGION( 0x20000, "upd", 0 ) /* NEC D7759GC samples */
735   ROM_LOAD( "msg0.bin", 0x00000, 0x20000, CRC(b25e1c8a) SHA1(a211412c3354a9f1a9662445b4cc379dad27813b) )
736ROM_END
737
738/* Super Star
739
740(no readme)
741
742*/
743
744ROM_START( sstar )
745   ROM_REGION( 0x1000000, "maincpu", 0 ) /* all the program code is in here */
746   ROM_LOAD( "sstar_hd64f3337cp16.mcu", 0x00000, 0x4000, NO_DUMP )
747
748   ROM_REGION( 0x180000, "gfx1", 0 ) /* gfx seems 4bpp */
749   ROM_LOAD( "sstar.ep1", 0x000000, 0x80000, CRC(e798295e) SHA1(ed9a0ceeaefccfb1bde5894548ba91d631055b69) ) //contains C-based strings?
750   ROM_LOAD( "sstar.ep2", 0x080000, 0x80000, CRC(5e9fa33b) SHA1(5196723db69bf9f1df497f4d8f84ac1d9768736f) )
751   ROM_LOAD( "sstar.ep3", 0x100000, 0x80000, CRC(67abc2a1) SHA1(877e233b2120281779a2480e8035a73df87e7240) )
752
753   ROM_REGION( 0x20000, "upd", 0 ) /* NEC D7759GC samples */
754   ROM_LOAD( "sstar.msg0", 0x00000, 0x20000, CRC(04f44a53) SHA1(0b27d1fe1992d1769abec2078defc30896c36bcb) )
755ROM_END
756
695757/*************************
696758*      Game Drivers      *
697759*************************/
698760
699761/*    YEAR  NAME      PARENT  MACHINE   INPUT     INIT ROT    COMPANY    FULLNAME                          FLAGS  */
700GAME( 1999, ntcash,   0,      itgambl2, itgambl2, 0,   ROT0, "Unknown", "NtCash",                          GAME_NOT_WORKING )
701GAME( 1999, wizard,   0,      itgambl2, itgambl2, 0,   ROT0, "A.A.",    "Wizard (Ver 1.0)",                GAME_NOT_WORKING )
702GAME( 2001, laser2k1, 0,      itgambl2, itgambl2, 0,   ROT0, "Unknown", "Laser 2001 (Ver 1.2)",            GAME_NOT_WORKING )
703GAME( 2001, mdrink,   0,      itgambl2, itgambl2, 0,   ROT0, "Unknown", "Magic Drink (Ver 1.2)",           GAME_NOT_WORKING )
704GAME( 2001, te0144,   0,      itgambl2, itgambl2, 0,   ROT0, "Unknown", "Unknown italian gambling game",   GAME_NOT_WORKING )
705GAME( 200?, cmagica,  0,      itgambl2, itgambl2, 0,   ROT0, "Unknown", "Carta Magica (Ver 1.8)",          GAME_NOT_WORKING )
706GAME( 200?, millsun,  0,      itgambl2, itgambl2, 0,   ROT0, "Unknown", "Millennium Sun",                  GAME_NOT_WORKING )
707GAME( 200?, sspac2k1, 0,      itgambl2, itgambl2, 0,   ROT0, "Unknown", "Super Space 2001",                GAME_NOT_WORKING )
708GAME( 200?, elvis,    0,      itgambl2, itgambl2, 0,   ROT0, "Unknown", "Elvis?",                          GAME_NOT_WORKING )
762GAME( 1999, ntcash,   0,      itgambl2, itgambl2, 0,   ROT0, "Unknown", "NtCash",                               GAME_NOT_WORKING )
763GAME( 1999, wizard,   0,      itgambl2, itgambl2, 0,   ROT0, "A.A.",    "Wizard (Ver 1.0)",                     GAME_NOT_WORKING )
764GAME( 200?, trstar2k, 0,      itgambl2, itgambl2, 0,   ROT0, "A.M.",    "Triple Star 2000",                     GAME_NOT_WORKING )
765GAME( 2001, laser2k1, 0,      itgambl2, itgambl2, 0,   ROT0, "Unknown", "Laser 2001 (Ver 1.2)",                 GAME_NOT_WORKING )
766GAME( 2001, mdrink,   0,      itgambl2, itgambl2, 0,   ROT0, "Unknown", "Magic Drink (Ver 1.2)",                GAME_NOT_WORKING )
767GAME( 2001, te0144,   0,      itgambl2, itgambl2, 0,   ROT0, "Unknown", "Puzzle Bobble (Italian Gambling Game)",GAME_NOT_WORKING )
768GAME( 200?, cmagica,  0,      itgambl2, itgambl2, 0,   ROT0, "Unknown", "Carta Magica (Ver 1.8)",               GAME_NOT_WORKING )
769GAME( 200?, millsun,  0,      itgambl2, itgambl2, 0,   ROT0, "Unknown", "Millennium Sun",                       GAME_NOT_WORKING )
770GAME( 200?, sspac2k1, 0,      itgambl2, itgambl2, 0,   ROT0, "Unknown", "Super Space 2001",                     GAME_NOT_WORKING )
771GAME( 200?, elvis,    0,      itgambl2, itgambl2, 0,   ROT0, "Unknown", "Elvis?",                               GAME_NOT_WORKING )
772GAME( 200?, sstar,    0,      itgambl2, itgambl2, 0,   ROT0, "Unknown", "Super Star",                           GAME_NOT_WORKING )
src/mame/drivers/itech32.c
r4679r4680
426426   if (xint != -1) xint_state = xint;
427427   if (qint != -1) qint_state = qint;
428428
429   if (is_drivedge) {
430      cpu_set_input_line(machine->cpu[0], 3, vint_state ? ASSERT_LINE : CLEAR_LINE);
431      cpu_set_input_line(machine->cpu[0], 4, xint_state ? ASSERT_LINE : CLEAR_LINE);
432      cpu_set_input_line(machine->cpu[0], 5, qint_state ? ASSERT_LINE : CLEAR_LINE);
433   } else {
434      cpu_set_input_line(machine->cpu[0], 1, vint_state ? ASSERT_LINE : CLEAR_LINE);
435      cpu_set_input_line(machine->cpu[0], 2, xint_state ? ASSERT_LINE : CLEAR_LINE);
436      cpu_set_input_line(machine->cpu[0], 3, qint_state ? ASSERT_LINE : CLEAR_LINE);
429   if (is_drivedge)
430   {
431      cputag_set_input_line(machine, "maincpu", 3, vint_state ? ASSERT_LINE : CLEAR_LINE);
432      cputag_set_input_line(machine, "maincpu", 4, xint_state ? ASSERT_LINE : CLEAR_LINE);
433      cputag_set_input_line(machine, "maincpu", 5, qint_state ? ASSERT_LINE : CLEAR_LINE);
437434   }
435   else
436   {
437      cputag_set_input_line(machine, "maincpu", 1, vint_state ? ASSERT_LINE : CLEAR_LINE);
438      cputag_set_input_line(machine, "maincpu", 2, xint_state ? ASSERT_LINE : CLEAR_LINE);
439      cputag_set_input_line(machine, "maincpu", 3, qint_state ? ASSERT_LINE : CLEAR_LINE);
440   }
438441}
439442
440443
r4679r4680
475478{
476479   MACHINE_RESET_CALL(itech32);
477480
478   cpu_set_input_line(machine->cpu[2], INPUT_LINE_RESET, ASSERT_LINE);
479   cpu_set_input_line(machine->cpu[3], INPUT_LINE_RESET, ASSERT_LINE);
481   cputag_set_input_line(machine, "dsp1", INPUT_LINE_RESET, ASSERT_LINE);
482   cputag_set_input_line(machine, "dsp2", INPUT_LINE_RESET, ASSERT_LINE);
480483   STOP_TMS_SPINNING(machine, 0);
481484   STOP_TMS_SPINNING(machine, 1);
482485}
r4679r4680
667670{
668671   sound_data = param;
669672   sound_int_state = 1;
670   cpu_set_input_line(machine->cpu[1], M6809_IRQ_LINE, ASSERT_LINE);
673   cputag_set_input_line(machine, "soundcpu", M6809_IRQ_LINE, ASSERT_LINE);
671674}
672675
673676
r4679r4680
693696
694697static READ8_HANDLER( sound_data_r )
695698{
696   cpu_set_input_line(space->machine->cpu[1], M6809_IRQ_LINE, CLEAR_LINE);
699   cputag_set_input_line(space->machine, "soundcpu", M6809_IRQ_LINE, CLEAR_LINE);
697700   sound_int_state = 0;
698701   return sound_data;
699702}
r4679r4680
720723
721724static WRITE8_DEVICE_HANDLER( drivedge_portb_out )
722725{
723   const address_space *space = cpu_get_address_space(device->machine->cpu[0], ADDRESS_SPACE_PROGRAM);
726   const address_space *space = cputag_get_address_space(device->machine, "maincpu", ADDRESS_SPACE_PROGRAM);
724727//  logerror("PIA port B write = %02x\n", data);
725728
726729   /* bit 0 controls the fan light */
r4679r4680
745748
746749static WRITE8_DEVICE_HANDLER( pia_portb_out )
747750{
748   const address_space *space = cpu_get_address_space(device->machine->cpu[0], ADDRESS_SPACE_PROGRAM);
751   const address_space *space = cputag_get_address_space(device->machine, "maincpu", ADDRESS_SPACE_PROGRAM);
749752//  logerror("PIA port B write = %02x\n", data);
750753
751754   /* bit 4 controls the ticket dispenser */
r4679r4680
792795
793796static WRITE8_HANDLER( firq_clear_w )
794797{
795   cpu_set_input_line(space->machine->cpu[1], M6809_FIRQ_LINE, CLEAR_LINE);
798   cputag_set_input_line(space->machine, "soundcpu", M6809_FIRQ_LINE, CLEAR_LINE);
796799}
797800
798801
r4679r4680
805808
806809static WRITE32_HANDLER( tms_reset_assert_w )
807810{
808   cpu_set_input_line(space->machine->cpu[2], INPUT_LINE_RESET, ASSERT_LINE);
809   cpu_set_input_line(space->machine->cpu[3], INPUT_LINE_RESET, ASSERT_LINE);
811   cputag_set_input_line(space->machine, "dsp1", INPUT_LINE_RESET, ASSERT_LINE);
812   cputag_set_input_line(space->machine, "dsp2", INPUT_LINE_RESET, ASSERT_LINE);
810813}
811814
812815
r4679r4680
815818   /* kludge to prevent crash on first boot */
816819   if ((tms1_ram[0] & 0xff000000) == 0)
817820   {
818      cpu_set_input_line(space->machine->cpu[2], INPUT_LINE_RESET, CLEAR_LINE);
821      cputag_set_input_line(space->machine, "dsp1", INPUT_LINE_RESET, CLEAR_LINE);
819822      STOP_TMS_SPINNING(space->machine, 0);
820823   }
821824   if ((tms2_ram[0] & 0xff000000) == 0)
822825   {
823      cpu_set_input_line(space->machine->cpu[3], INPUT_LINE_RESET, CLEAR_LINE);
826      cputag_set_input_line(space->machine, "dsp2", INPUT_LINE_RESET, CLEAR_LINE);
824827      STOP_TMS_SPINNING(space->machine, 1);
825828   }
826829}
r4679r4680
39173920   itech32_planes = 1;
39183921   is_drivedge = 1;
39193922
3920   memory_install_read32_handler(cpu_get_address_space(machine->cpu[2], ADDRESS_SPACE_PROGRAM), 0x8382, 0x8382, 0, 0, drivedge_tms1_speedup_r);
3921   memory_install_read32_handler(cpu_get_address_space(machine->cpu[3], ADDRESS_SPACE_PROGRAM), 0x8382, 0x8382, 0, 0, drivedge_tms2_speedup_r);
3923   memory_install_read32_handler(cputag_get_address_space(machine, "dsp1", ADDRESS_SPACE_PROGRAM), 0x8382, 0x8382, 0, 0, drivedge_tms1_speedup_r);
3924   memory_install_read32_handler(cputag_get_address_space(machine, "dsp2", ADDRESS_SPACE_PROGRAM), 0x8382, 0x8382, 0, 0, drivedge_tms2_speedup_r);
39223925}
39233926
39243927
r4679r4680
39343937   itech32_vram_height = 1024;
39353938   itech32_planes = 1;
39363939
3937   memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x680000, 0x680001, 0, 0, trackball_r);
3940   memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x680000, 0x680001, 0, 0, trackball_r);
39383941
3939   memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x578000, 0x57ffff, 0, 0, SMH_NOP);
3940   memory_install_readwrite16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x680080, 0x680081, 0, 0, wcbowl_prot_result_r, SMH_NOP);
3942   memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x578000, 0x57ffff, 0, 0, (read16_space_func)SMH_NOP);
3943   memory_install_readwrite16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x680080, 0x680081, 0, 0, wcbowl_prot_result_r, (write16_space_func)SMH_NOP);
39413944}
39423945
39433946
r4679r4680
39503953
39513954   itech020_prot_address = prot_addr;
39523955
3953   memory_install_write32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x300000, 0x300003, 0, 0, itech020_color2_w);
3954   memory_install_write32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x380000, 0x380003, 0, 0, itech020_color1_w);
3956   memory_install_write32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x300000, 0x300003, 0, 0, itech020_color2_w);
3957   memory_install_write32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x380000, 0x380003, 0, 0, itech020_color1_w);
39553958}
39563959
39573960
r4679r4680
39813984
39823985   itech020_prot_address = prot_addr;
39833986
3984   memory_install_write32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x300000, 0x300003, 0, 0, itech020_color2_w);
3985   memory_install_write32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x380000, 0x380003, 0, 0, itech020_color1_w);
3986   memory_install_read32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x180800, 0x180803, 0, 0, trackball32_4bit_r);
3987   memory_install_read32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x181000, 0x181003, 0, 0, trackball32_4bit_p2_r);
3987   memory_install_write32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x300000, 0x300003, 0, 0, itech020_color2_w);
3988   memory_install_write32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x380000, 0x380003, 0, 0, itech020_color1_w);
3989   memory_install_read32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x180800, 0x180803, 0, 0, trackball32_4bit_r);
3990   memory_install_read32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x181000, 0x181003, 0, 0, trackball32_4bit_p2_r);
39883991}
39893992
39903993
r4679r4680
40034006static void install_timekeeper(running_machine *machine)
40044007{
40054008   const device_config *device = devtag_get_device(machine, "m48t02");
4006   memory_install_readwrite32_device_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), device, 0x681000, 0x6817ff, 0, 0, timekeeper_32be_r, timekeeper_32be_w);
4009   memory_install_readwrite32_device_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), device, 0x681000, 0x6817ff, 0, 0, timekeeper_32be_r, timekeeper_32be_w);
40074010}
40084011
40094012static DRIVER_INIT( wcbowlt )   /* PIC 16C54 labeled as ITBWL-3 */
r4679r4680
40344037        Hacked versions of this PCB have been found with GT97
40354038        through GTClassic. This is _NOT_ a factory modification
40364039    */
4037   memory_install_read32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x200000, 0x200003, 0, 0, trackball32_8bit_r);
4040   memory_install_read32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x200000, 0x200003, 0, 0, trackball32_8bit_r);
40384041   init_gt_common(machine);
40394042}
40404043
r4679r4680
40474050        board share the same sound CPU code and sample ROMs.
40484051        This board has all versions of GT for it, GT3D through GTClassic
40494052    */
4050   memory_install_read32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x180800, 0x180803, 0, 0, trackball32_4bit_r);
4051   memory_install_read32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x181000, 0x181003, 0, 0, trackball32_4bit_p2_r);
4053   memory_install_read32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x180800, 0x180803, 0, 0, trackball32_4bit_r);
4054   memory_install_read32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x181000, 0x181003, 0, 0, trackball32_4bit_p2_r);
40524055   init_gt_common(machine);
40534056}
40544057
r4679r4680
40724075        board: GT97 v1.21S, GT98, GT99, GT2K & GT Classic Versions 1.00S
40734076        Trackball info is read through 200202 (actually 200203).
40744077    */
4075   memory_install_read32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x200200, 0x200203, 0, 0, trackball32_4bit_r);
4078   memory_install_read32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x200200, 0x200203, 0, 0, trackball32_4bit_r);
40764079   init_gt_common(machine);
40774080}
40784081
r4679r4680
40864089        Player 1 trackball read through 200003
40874090        Player 2 trackball read through 200002
40884091    */
4089   memory_install_read32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x200000, 0x200003, 0, 0, trackball32_4bit_combined_r);
4092   memory_install_read32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x200000, 0x200003, 0, 0, trackball32_4bit_combined_r);
40904093   init_gt_common(machine);
40914094}
40924095
r4679r4680
40944097static DRIVER_INIT( gtclassp )
40954098{
40964099   /* a little extra protection */
4097   memory_install_read32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x680000, 0x680003, 0, 0, gtclass_prot_result_r);
4100   memory_install_read32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x680000, 0x680003, 0, 0, gtclass_prot_result_r);
40984101   DRIVER_INIT_CALL(aama);
40994102
41004103   /* The protection code is:
src/mame/drivers/mexico86.c
r4679r4680
6161}
6262//ZT
6363
64static UINT8 *shared;
6564
66static READ8_HANDLER( shared_r )
67{
68   return shared[offset];
69}
7065
71static WRITE8_HANDLER( shared_w )
72{
73   shared[offset] = data;
74}
7566
76
77
78static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 )
79   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
80   AM_RANGE(0x8000, 0xbfff) AM_READ(SMH_BANK1)  /* banked roms */
81   AM_RANGE(0xc000, 0xe7ff) AM_READ(shared_r)   /* shared with sound cpu */
82   AM_RANGE(0xe800, 0xe8ff) AM_READ(SMH_RAM)    /* protection ram */
83   AM_RANGE(0xe900, 0xefff) AM_READ(SMH_RAM)
67static ADDRESS_MAP_START( mexico86_map, ADDRESS_SPACE_PROGRAM, 8 )
68   AM_RANGE(0x0000, 0x7fff) AM_ROM
69   AM_RANGE(0x8000, 0xbfff) AM_ROMBANK(1)                  /* banked roms */
70   AM_RANGE(0xc000, 0xe7ff) AM_RAM AM_SHARE(1)              /* shared with sound cpu */
71   AM_RANGE(0xd500, 0xd7ff) AM_RAM AM_BASE(&mexico86_objectram) AM_SIZE(&mexico86_objectram_size)
72   AM_RANGE(0xe800, 0xe8ff) AM_RAM AM_BASE(&mexico86_protection_ram)  /* shared with mcu */
73   AM_RANGE(0xe900, 0xefff) AM_RAM
74   AM_RANGE(0xc000, 0xd4ff) AM_RAM AM_BASE(&mexico86_videoram) //AT: corrected size
75   AM_RANGE(0xf000, 0xf000) AM_WRITE(mexico86_bankswitch_w)     /* program and gfx ROM banks */
76   AM_RANGE(0xf008, 0xf008) AM_WRITE(mexico86_f008_w)            /* cpu reset lines + other unknown stuff */
8477   AM_RANGE(0xf010, 0xf010) AM_READ_PORT("IN3")
85   AM_RANGE(0xf800, 0xffff) AM_READ(SMH_RAM)    /* communication ram - to connect 4 players's subboard */
78   AM_RANGE(0xf018, 0xf018) AM_WRITENOP                  /* watchdog? */
79   AM_RANGE(0xf800, 0xffff) AM_RAM AM_SHARE(2)               /* communication ram - to connect 4 players's subboard */
8680ADDRESS_MAP_END
8781
88static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 )
89   AM_RANGE(0x0000, 0xbfff) AM_WRITE(SMH_ROM)
90   AM_RANGE(0xc000, 0xe7ff) AM_WRITE(shared_w) AM_BASE(&shared)  /* shared with sound cpu */
91   AM_RANGE(0xc000, 0xd4ff) AM_WRITE(SMH_RAM) AM_BASE(&mexico86_videoram) //AT: corrected size
92   AM_RANGE(0xd500, 0xd7ff) AM_WRITE(SMH_RAM) AM_BASE(&mexico86_objectram) AM_SIZE(&mexico86_objectram_size)
93   AM_RANGE(0xe800, 0xe8ff) AM_WRITE(SMH_RAM) AM_BASE(&mexico86_protection_ram)  /* shared with mcu */
94   AM_RANGE(0xe900, 0xefff) AM_WRITE(SMH_RAM)
95   AM_RANGE(0xf000, 0xf000) AM_WRITE(mexico86_bankswitch_w)  /* program and gfx ROM banks */
96   AM_RANGE(0xf008, 0xf008) AM_WRITE(mexico86_f008_w)    /* cpu reset lines + other unknown stuff */
97   AM_RANGE(0xf018, 0xf018) AM_WRITENOP    // watchdog_reset_w },
98   AM_RANGE(0xf800, 0xffff) AM_WRITE(SMH_RAM)    /* communication ram */
82static ADDRESS_MAP_START( mexico86_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
83   AM_RANGE(0x0000, 0x7fff) AM_ROM
84   AM_RANGE(0x8000, 0xa7ff) AM_RAM AM_SHARE(1)
85   AM_RANGE(0xa800, 0xbfff) AM_RAM
86   AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ym", kiki_ym2203_r,ym2203_w)
9987ADDRESS_MAP_END
10088
101static ADDRESS_MAP_START( sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
102   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
103   AM_RANGE(0x8000, 0xa7ff) AM_READ(shared_r)
104   AM_RANGE(0xa800, 0xbfff) AM_READ(SMH_RAM)
105   AM_RANGE(0xc000, 0xc001) AM_DEVREAD("ym", kiki_ym2203_r)
106ADDRESS_MAP_END
107
108static ADDRESS_MAP_START( sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
109   AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM)
110   AM_RANGE(0x8000, 0xa7ff) AM_WRITE(shared_w)
111   AM_RANGE(0xa800, 0xbfff) AM_WRITE(SMH_RAM)
112   AM_RANGE(0xc000, 0xc001) AM_DEVWRITE("ym", ym2203_w)
113ADDRESS_MAP_END
114
115static ADDRESS_MAP_START( m68705_readmem, ADDRESS_SPACE_PROGRAM, 8 )
89static ADDRESS_MAP_START( mexico86_m68705_map, ADDRESS_SPACE_PROGRAM, 8 )
11690   ADDRESS_MAP_GLOBAL_MASK(0x7ff)
117   AM_RANGE(0x0000, 0x0000) AM_READ(mexico86_68705_portA_r)
118   AM_RANGE(0x0001, 0x0001) AM_READ(mexico86_68705_portB_r)
91   AM_RANGE(0x0000, 0x0000) AM_READWRITE(mexico86_68705_portA_r,mexico86_68705_portA_w)
92   AM_RANGE(0x0001, 0x0001) AM_READWRITE(mexico86_68705_portB_r,mexico86_68705_portB_w)
11993   AM_RANGE(0x0002, 0x0002) AM_READ_PORT("IN0") /* COIN */
120   AM_RANGE(0x0010, 0x007f) AM_READ(SMH_RAM)
121   AM_RANGE(0x0080, 0x07ff) AM_READ(SMH_ROM)
122ADDRESS_MAP_END
123
124static ADDRESS_MAP_START( m68705_writemem, ADDRESS_SPACE_PROGRAM, 8 )
125   ADDRESS_MAP_GLOBAL_MASK(0x7ff)
126   AM_RANGE(0x0000, 0x0000) AM_WRITE(mexico86_68705_portA_w)
127   AM_RANGE(0x0001, 0x0001) AM_WRITE(mexico86_68705_portB_w)
12894   AM_RANGE(0x0004, 0x0004) AM_WRITE(mexico86_68705_ddrA_w)
12995   AM_RANGE(0x0005, 0x0005) AM_WRITE(mexico86_68705_ddrB_w)
13096   AM_RANGE(0x000a, 0x000a) AM_WRITENOP    /* looks like a bug in the code, writes to */
131                           /* 0x0a (=10dec) instead of 0x10 */
132   AM_RANGE(0x0010, 0x007f) AM_WRITE(SMH_RAM)
133   AM_RANGE(0x0080, 0x07ff) AM_WRITE(SMH_ROM)
97                                 /* 0x0a (=10dec) instead of 0x10 */
98   AM_RANGE(0x0010, 0x007f) AM_RAM
99   AM_RANGE(0x0080, 0x07ff) AM_ROM
134100ADDRESS_MAP_END
135101
136static ADDRESS_MAP_START( sub_cpu_map, ADDRESS_SPACE_PROGRAM, 8 )
102static ADDRESS_MAP_START( mexico86_sub_cpu_map, ADDRESS_SPACE_PROGRAM, 8 )
137103   AM_RANGE(0x0000, 0x3fff) AM_ROM
104   AM_RANGE(0x4000, 0x47ff) AM_RAM
105   AM_RANGE(0x8000, 0x87ff) AM_RAM //AM_SHARE(2)
106   AM_RANGE(0xc000, 0xc003) AM_NOP
107   AM_RANGE(0xc004, 0xc004) AM_WRITENOP
138108ADDRESS_MAP_END
139109
140110static INPUT_PORTS_START( mexico86 )
r4679r4680
372342
373343   /* basic machine hardware */
374344   MDRV_CPU_ADD("maincpu",Z80, 24000000/4)      /* 6 MHz, Uses clock divided 24MHz OSC */
375   MDRV_CPU_PROGRAM_MAP(readmem,writemem)
345   MDRV_CPU_PROGRAM_MAP(mexico86_map,0)
376346
377347   MDRV_CPU_ADD("audiocpu", Z80, 24000000/4)      /* 6 MHz, Uses clock divided 24MHz OSC */
378   MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem)
348   MDRV_CPU_PROGRAM_MAP(mexico86_sound_map,0)
379349   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
380350
381351   MDRV_CPU_ADD("mcu", M68705, 4000000) /* xtal is 4MHz, divided by 4 internally */
382   MDRV_CPU_PROGRAM_MAP(m68705_readmem,m68705_writemem)
352   MDRV_CPU_PROGRAM_MAP(mexico86_m68705_map,0)
383353   MDRV_CPU_VBLANK_INT_HACK(mexico86_m68705_interrupt,2)
384354
385355   MDRV_CPU_ADD("sub", Z80, 8000000/2)      /* 4 MHz, Uses 8Mhz OSC */
386   MDRV_CPU_PROGRAM_MAP(sub_cpu_map,0)
356   MDRV_CPU_PROGRAM_MAP(mexico86_sub_cpu_map,0)
387357   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
388358
389359   MDRV_QUANTUM_TIME(HZ(6000))    /* 100 CPU slices per frame - an high value to ensure proper */
src/mame/drivers/calchase.c
r4679r4680
215215
216216static DMA8237_MEM_READ( pc_dma_read_byte )
217217{
218   const address_space *space = cpu_get_address_space(device->machine->cpu[0], ADDRESS_SPACE_PROGRAM);
218   const address_space *space = cputag_get_address_space(device->machine, "maincpu", ADDRESS_SPACE_PROGRAM);
219219   offs_t page_offset = (((offs_t) dma_offset[0][channel]) << 16)
220220      & 0xFF0000;
221221
r4679r4680
225225
226226static DMA8237_MEM_WRITE( pc_dma_write_byte )
227227{
228   const address_space *space = cpu_get_address_space(device->machine->cpu[0], ADDRESS_SPACE_PROGRAM);
228   const address_space *space = cputag_get_address_space(device->machine, "maincpu", ADDRESS_SPACE_PROGRAM);
229229   offs_t page_offset = (((offs_t) dma_offset[0][channel]) << 16)
230230      & 0xFF0000;
231231
r4679r4680
546546
547547static MACHINE_START(calchase)
548548{
549   cpu_set_irq_callback(machine->cpu[0], irq_callback);
549   cpu_set_irq_callback(cputag_get_cpu(machine, "maincpu"), irq_callback);
550550
551551   calchase_devices.pit8254 = devtag_get_device( machine, "pit8254" );
552552   calchase_devices.pic8259_1 = devtag_get_device( machine, "pic8259_1" );
r4679r4680
562562 *************************************************************/
563563
564564static PIC8259_SET_INT_LINE( calchase_pic8259_1_set_int_line ) {
565   cpu_set_input_line(device->machine->cpu[0], 0, interrupt ? HOLD_LINE : CLEAR_LINE);
565   cputag_set_input_line(device->machine, "maincpu", 0, interrupt ? HOLD_LINE : CLEAR_LINE);
566566}
567567
568568
r4679r4680
615615
616616static void set_gate_a20(running_machine *machine, int a20)
617617{
618   cpu_set_input_line(machine->cpu[0], INPUT_LINE_A20, a20);
618   cputag_set_input_line(machine, "maincpu", INPUT_LINE_A20, a20);
619619}
620620
621621static void keyboard_interrupt(running_machine *machine, int state)
r4679r4680
677677
678678static DRIVER_INIT( calchase )
679679{
680   bios_ram = auto_malloc(0x10000);
680   bios_ram = auto_alloc_array(machine, UINT32, 0x10000/4);
681681
682682   init_pc_common(machine, PCCOMMON_KEYBOARD_AT, calchase_set_keyb_int);
683683   mc146818_init(machine, MC146818_STANDARD);
src/mame/drivers/chaknpop.c
r4679r4680
3939
4040***************************************************************************/
4141
42static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 )
43   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
44   AM_RANGE(0x8000, 0x87ff) AM_READ(SMH_RAM)
45   AM_RANGE(0x8800, 0x8800) AM_READ(chaknpop_mcu_portA_r)
46   AM_RANGE(0x8801, 0x8801) AM_READ(chaknpop_mcu_portB_r)
47   AM_RANGE(0x8802, 0x8802) AM_READ(chaknpop_mcu_portC_r)
48   AM_RANGE(0x8805, 0x8805) AM_DEVREAD("ay1", ay8910_r)
49   AM_RANGE(0x8807, 0x8807) AM_DEVREAD("ay2", ay8910_r)
42static ADDRESS_MAP_START( chaknpop_map, ADDRESS_SPACE_PROGRAM, 8 )
43   AM_RANGE(0x0000, 0x7fff) AM_ROM
44   AM_RANGE(0x8000, 0x87ff) AM_RAM AM_BASE(&chaknpop_ram)
45   AM_RANGE(0x8800, 0x8800) AM_READWRITE(chaknpop_mcu_portA_r, chaknpop_mcu_portA_w)
46   AM_RANGE(0x8801, 0x8801) AM_READWRITE(chaknpop_mcu_portB_r, chaknpop_mcu_portB_w)
47   AM_RANGE(0x8802, 0x8802) AM_READWRITE(chaknpop_mcu_portC_r, chaknpop_mcu_portC_w)
48   AM_RANGE(0x8804, 0x8805) AM_DEVREADWRITE("ay1", ay8910_r, ay8910_address_data_w)
49   AM_RANGE(0x8806, 0x8807) AM_DEVREADWRITE("ay2", ay8910_r, ay8910_address_data_w)
5050   AM_RANGE(0x8808, 0x8808) AM_READ_PORT("DSWC")
5151   AM_RANGE(0x8809, 0x8809) AM_READ_PORT("P1")
5252   AM_RANGE(0x880a, 0x880a) AM_READ_PORT("SYSTEM")
5353   AM_RANGE(0x880b, 0x880b) AM_READ_PORT("P2")
54   AM_RANGE(0x880c, 0x880c) AM_READ(chaknpop_gfxmode_r)
55   AM_RANGE(0x9000, 0x93ff) AM_READ(SMH_RAM)         // TX tilemap
56   AM_RANGE(0x9800, 0x983f) AM_READ(SMH_RAM)         // Color attribute
57   AM_RANGE(0x9840, 0x98ff) AM_READ(SMH_RAM)         // sprite
58   AM_RANGE(0xa000, 0xbfff) AM_READ(SMH_ROM)
59   AM_RANGE(0xc000, 0xffff) AM_READ(SMH_BANK1)         // bitmap plane 1-4
54   AM_RANGE(0x880c, 0x880c) AM_READWRITE(chaknpop_gfxmode_r, chaknpop_gfxmode_w)
55   AM_RANGE(0x880d, 0x880d) AM_WRITE(coinlock_w)                                    // coin lock out
56   AM_RANGE(0x9000, 0x93ff) AM_RAM_WRITE(chaknpop_txram_w) AM_BASE(&chaknpop_txram)          // TX tilemap
57   AM_RANGE(0x9800, 0x983f) AM_RAM_WRITE(chaknpop_attrram_w) AM_BASE(&chaknpop_attrram)       // Color attribute
58   AM_RANGE(0x9840, 0x98ff) AM_RAM AM_BASE(&chaknpop_sprram) AM_SIZE(&chaknpop_sprram_size)   // sprite
59   AM_RANGE(0xa000, 0xbfff) AM_ROM
60   AM_RANGE(0xc000, 0xffff) AM_RAMBANK(1)                                          // bitmap plane 1-4
6061ADDRESS_MAP_END
6162
62static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 )
63   AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM)
64   AM_RANGE(0x8000, 0x87ff) AM_WRITE(SMH_RAM) AM_BASE(&chaknpop_ram)
65   AM_RANGE(0x8800, 0x8800) AM_WRITE(chaknpop_mcu_portA_w)
66   AM_RANGE(0x8801, 0x8801) AM_WRITE(chaknpop_mcu_portB_w)
67   AM_RANGE(0x8802, 0x8802) AM_WRITE(chaknpop_mcu_portC_w)
68   AM_RANGE(0x8804, 0x8805) AM_DEVWRITE("ay1", ay8910_address_data_w)
69   AM_RANGE(0x8806, 0x8807) AM_DEVWRITE("ay2", ay8910_address_data_w)
70   AM_RANGE(0x880c, 0x880c) AM_WRITE(chaknpop_gfxmode_w)
71   AM_RANGE(0x880D, 0x880D) AM_WRITE(coinlock_w)         // coin lock out
72   AM_RANGE(0x9000, 0x93ff) AM_WRITE(chaknpop_txram_w) AM_BASE(&chaknpop_txram)
73   AM_RANGE(0x9800, 0x983f) AM_WRITE(chaknpop_attrram_w) AM_BASE(&chaknpop_attrram)
74   AM_RANGE(0x9840, 0x98ff) AM_WRITE(SMH_RAM) AM_BASE(&chaknpop_sprram) AM_SIZE(&chaknpop_sprram_size)
75   AM_RANGE(0xa000, 0xbfff) AM_WRITE(SMH_ROM)
76   AM_RANGE(0xc000, 0xffff) AM_WRITE(SMH_BANK1)         // bitmap plane 1-4
77ADDRESS_MAP_END
78
7963static const ay8910_interface ay8910_interface_1 =
8064{
8165   AY8910_LEGACY_OUTPUT,
r4679r4680
264248   //MDRV_CPU_ADD("maincpu", Z80, 18432000 / 6)   /* 3.072 MHz */
265249   MDRV_CPU_ADD("maincpu", Z80, 2350000)
266250   //MDRV_CPU_ADD("maincpu", Z80, 2760000)
267   MDRV_CPU_PROGRAM_MAP(readmem,writemem)
251   MDRV_CPU_PROGRAM_MAP(chaknpop_map,0)
268252   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
269253
270254   MDRV_MACHINE_RESET(chaknpop)
src/mame/drivers/megadriv.h
r4679r4680
5454extern int segac2_sp_pal_lookup[4];
5555
5656extern int genvdp_use_cram;
57extern int genesis_has_z80;
5857extern int genesis_always_irq6;
5958extern int genesis_other_hacks;
src/mame/drivers/fitfight.c
r4679r4680
221221
222222static ADDRESS_MAP_START( snd_mem, ADDRESS_SPACE_PROGRAM, 8 )
223223   AM_RANGE(0x0000, 0x3fff) AM_ROM
224   AM_RANGE(0x4000, 0x7fff) AM_READ(SMH_BANK1)   /* ??? External ROM */
224   AM_RANGE(0x4000, 0x7fff) AM_READ(SMH_BANK(1))   /* ??? External ROM */
225225   AM_RANGE(0x8000, 0x87ff) AM_RAM
226226   AM_RANGE(0xff00, 0xffff) AM_RAM
227227ADDRESS_MAP_END
r4679r4680
966966static DRIVER_INIT( fitfight )
967967{
968968//  UINT16 *mem16 = (UINT16 *)memory_region(machine, "maincpu");
969//  mem16[0x0165B2/2]=0x4e71; // for now so it boots
970   memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x700000, 0x700001, 0, 0, fitfight_700000_r);
969//  mem16[0x0165B2/2] = 0x4e71; // for now so it boots
970   memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x700000, 0x700001, 0, 0, fitfight_700000_r);
971971   bbprot_kludge = 0;
972972}
973973
974974static DRIVER_INIT( histryma )
975975{
976976//  UINT16 *mem16 = (UINT16 *)memory_region(machine, "maincpu");
977//  mem16[0x017FDC/2]=0x4e71; // for now so it boots
978   memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x700000, 0x700001, 0, 0, histryma_700000_r);
977//  mem16[0x017FDC/2] = 0x4e71; // for now so it boots
978   memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x700000, 0x700001, 0, 0, histryma_700000_r);
979979   bbprot_kludge = 0;
980980}
981981
src/mame/drivers/sspeedr.c
r4679r4680
3737
3838static WRITE8_HANDLER( sspeedr_int_ack_w )
3939{
40   cpu_set_input_line(space->machine->cpu[0], 0, CLEAR_LINE);
40   cputag_set_input_line(space->machine, "maincpu", 0, CLEAR_LINE);
4141}
4242
4343
r4679r4680
7777}
7878
7979
80static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 )
81   AM_RANGE(0x0000, 0x0fff) AM_READ(SMH_ROM)
82   AM_RANGE(0x2000, 0x21ff) AM_READ(SMH_RAM)
83ADDRESS_MAP_END
84
85
86static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 )
87   AM_RANGE(0x0000, 0x0fff) AM_WRITE(SMH_ROM)
88   AM_RANGE(0x2000, 0x21ff) AM_WRITE(SMH_RAM)
80static ADDRESS_MAP_START( sspeedr_map, ADDRESS_SPACE_PROGRAM, 8 )
81   AM_RANGE(0x0000, 0x0fff) AM_ROM
82   AM_RANGE(0x2000, 0x21ff) AM_RAM
8983   AM_RANGE(0x7f00, 0x7f17) AM_WRITE(sspeedr_score_w)
9084ADDRESS_MAP_END
9185
9286
93static ADDRESS_MAP_START( io_map, ADDRESS_SPACE_IO, 8 )
87static ADDRESS_MAP_START( sspeedr_io_map, ADDRESS_SPACE_IO, 8 )
9488   ADDRESS_MAP_GLOBAL_MASK(0xff)
9589   AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0")
9690   AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1")
r4679r4680
196190
197191   /* basic machine hardware */
198192   MDRV_CPU_ADD("maincpu", Z80, 19968000 / 8)
199   MDRV_CPU_PROGRAM_MAP(readmem, writemem)
200   MDRV_CPU_IO_MAP(io_map,0)
193   MDRV_CPU_PROGRAM_MAP(sspeedr_map, 0)
194   MDRV_CPU_IO_MAP(sspeedr_io_map,0)
201195   MDRV_CPU_VBLANK_INT("screen", irq0_line_assert)
202196
203197   /* video hardware */
r4679r4680
237231
238232
239233GAMEL( 1979, sspeedr, 0, sspeedr, sspeedr, 0, ROT270, "Midway", "Super Speed Race", GAME_NO_SOUND, layout_sspeedr )
240
src/mame/drivers/ashnojoe.c
r4679r4680
293293
294294static void ym2203_irq_handler(const device_config *device, int irq)
295295{
296   cpu_set_input_line(device->machine->cpu[1], 0, irq ? ASSERT_LINE : CLEAR_LINE);
296   cputag_set_input_line(device->machine, "audiocpu", 0, irq ? ASSERT_LINE : CLEAR_LINE);
297297}
298298
299299static WRITE8_DEVICE_HANDLER( ym2203_write_a )
r4679r4680
332332   else
333333   {
334334      msm5205_data_w(device, adpcm_byte & 0xf);
335      cpu_set_input_line(device->machine->cpu[1], INPUT_LINE_NMI, PULSE_LINE);
335      cputag_set_input_line(device->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
336336   }
337337
338338   msm5205_vclk_toggle ^= 1;
src/mame/drivers/terracre.c
r4679r4680
999999static DRIVER_INIT( horekid )
10001000{
10011001   mpProtData = mHoreKidProtData;
1002   memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x44004, 0x44005, 0, 0, horekid_IN2_r);
1002   memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x44004, 0x44005, 0, 0, horekid_IN2_r);
10031003}
10041004
10051005/*    YEAR, NAME,   PARENT,     MACHINE, INPUT,    INIT,     MONITOR,  COMPANY,      FULLNAME, FLAGS */
r4679r4680
10111011GAME( 1987, horekid,  0,        amazon,  horekid,  horekid,  ROT270,  "Nichibutsu", "Kid no Hore Hore Daisakusen", GAME_SUPPORTS_SAVE )
10121012GAME( 1987, horekidb, horekid,  amazon,  horekid,  horekid,  ROT270,  "bootleg", "Kid no Hore Hore Daisakusen (bootleg)", GAME_SUPPORTS_SAVE )
10131013GAME( 1987, boobhack, horekid,  amazon,  horekid,  horekid,  ROT270,  "bootleg", "Booby Kids (Italian manufactured graphic hack / bootleg of Kid no Hore Hore Daisakusen (bootleg))", GAME_SUPPORTS_SAVE )
1014
src/mame/drivers/findout.c
r4679r4680
6767
6868static READ8_DEVICE_HANDLER( port1_r )
6969{
70   const address_space *space = cpu_get_address_space(device->machine->cpu[0], ADDRESS_SPACE_PROGRAM);
70   const address_space *space = cputag_get_address_space(device->machine, "maincpu", ADDRESS_SPACE_PROGRAM);
7171
7272   return input_port_read(device->machine, "IN0") | (ticket_dispenser_0_r(space, 0) >> 5);
7373}
r4679r4680
8888
8989static WRITE8_DEVICE_HANDLER( sound_w )
9090{
91   const address_space *space = cpu_get_address_space(device->machine->cpu[0], ADDRESS_SPACE_PROGRAM);
91   const address_space *space = cputag_get_address_space(device->machine, "maincpu", ADDRESS_SPACE_PROGRAM);
9292
9393   /* bit 3 - coin lockout (lamp6 in test modes, set to lamp 10 as in getrivia.c) */
9494   coin_lockout_global_w(~data & 0x08);
src/mame/drivers/mouser.c
r4679r4680
4747static WRITE8_HANDLER( mouser_sound_interrupt_w )
4848{
4949   mouser_sound_byte = data;
50   cpu_set_input_line(space->machine->cpu[1], 0, HOLD_LINE);
50   cputag_set_input_line(space->machine, "audiocpu", 0, HOLD_LINE);
5151}
5252
5353static READ8_HANDLER( mouser_sound_byte_r )
r4679r4680
5555   return mouser_sound_byte;
5656}
5757
58static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 )
59   AM_RANGE(0x0000, 0x5fff) AM_READ(SMH_ROM)
60   AM_RANGE(0x6000, 0x6bff) AM_READ(SMH_RAM)
61   AM_RANGE(0x9000, 0x93ff) AM_READ(SMH_RAM)
62   AM_RANGE(0xa000, 0xa000) AM_READ_PORT("P1")
63   AM_RANGE(0xa800, 0xa800) AM_READ_PORT("SYSTEM")
64   AM_RANGE(0xb000, 0xb000) AM_READ_PORT("DSW")
65   AM_RANGE(0xb800, 0xb800) AM_READ_PORT("P2")
66ADDRESS_MAP_END
67
68
69static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 )
70   AM_RANGE(0x0000, 0x5fff) AM_WRITE(SMH_ROM)
71   AM_RANGE(0x6000, 0x6bff) AM_WRITE(SMH_RAM)
58static ADDRESS_MAP_START( mouser_map, ADDRESS_SPACE_PROGRAM, 8 )
59   AM_RANGE(0x0000, 0x5fff) AM_ROM
60   AM_RANGE(0x6000, 0x6bff) AM_RAM
7261   AM_RANGE(0x8800, 0x88ff) AM_WRITENOP /* unknown */
73   AM_RANGE(0x9000, 0x93ff) AM_WRITE(SMH_RAM) AM_BASE(&videoram) AM_SIZE(&videoram_size)
74   AM_RANGE(0x9800, 0x9cff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
75   AM_RANGE(0x9c00, 0x9fff) AM_WRITE(SMH_RAM) AM_BASE(&colorram)
76   AM_RANGE(0xa000, 0xa000) AM_WRITE(mouser_nmi_enable_w) /* bit 0 = NMI Enable */
62   AM_RANGE(0x9000, 0x93ff) AM_RAM AM_BASE(&videoram) AM_SIZE(&videoram_size)
63   AM_RANGE(0x9800, 0x9cff) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
64   AM_RANGE(0x9c00, 0x9fff) AM_RAM AM_BASE(&colorram)
65   AM_RANGE(0xa000, 0xa000) AM_READ_PORT("P1") AM_WRITE(mouser_nmi_enable_w) /* bit 0 = NMI Enable */
7766   AM_RANGE(0xa001, 0xa001) AM_WRITE(mouser_flip_screen_x_w)
7867   AM_RANGE(0xa002, 0xa002) AM_WRITE(mouser_flip_screen_y_w)
79   AM_RANGE(0xb800, 0xb800) AM_WRITE(mouser_sound_interrupt_w) /* byte to sound cpu */
80
68   AM_RANGE(0xa800, 0xa800) AM_READ_PORT("SYSTEM")
69   AM_RANGE(0xb000, 0xb000) AM_READ_PORT("DSW")
70   AM_RANGE(0xb800, 0xb800) AM_READ_PORT("P2") AM_WRITE(mouser_sound_interrupt_w) /* byte to sound cpu */
8171ADDRESS_MAP_END
8272
8373
84static ADDRESS_MAP_START( readmem2, ADDRESS_SPACE_PROGRAM, 8 )
85   AM_RANGE(0x0000, 0x1fff) AM_READ(SMH_ROM)
86   AM_RANGE(0x2000, 0x23ff) AM_READ(SMH_RAM)
74static ADDRESS_MAP_START( mouser_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
75   AM_RANGE(0x0000, 0x1fff) AM_ROM
76   AM_RANGE(0x2000, 0x23ff) AM_RAM
8777   AM_RANGE(0x3000, 0x3000) AM_READ(mouser_sound_byte_r)
88ADDRESS_MAP_END
89
90static ADDRESS_MAP_START( writemem2, ADDRESS_SPACE_PROGRAM, 8 )
91   AM_RANGE(0x0000, 0x1fff) AM_WRITE(SMH_ROM)
92   AM_RANGE(0x2000, 0x23ff) AM_WRITE(SMH_RAM)
9378   AM_RANGE(0x4000, 0x4000) AM_WRITENOP   /* watchdog? */
9479ADDRESS_MAP_END
9580
96static ADDRESS_MAP_START( io_map_2, ADDRESS_SPACE_IO, 8 )
81static ADDRESS_MAP_START( mouser_sound_io_map, ADDRESS_SPACE_IO, 8 )
9782   ADDRESS_MAP_GLOBAL_MASK(0xff)
9883   AM_RANGE(0x00, 0x01) AM_DEVWRITE("ay1", ay8910_data_address_w)
9984   AM_RANGE(0x80, 0x81) AM_DEVWRITE("ay2", ay8910_data_address_w)
r4679r4680
196181
197182   /* basic machine hardware */
198183   MDRV_CPU_ADD("maincpu", Z80, 4000000)   /* 4 MHz ? */
199   MDRV_CPU_PROGRAM_MAP(readmem,writemem)
184   MDRV_CPU_PROGRAM_MAP(mouser_map,0)
200185   MDRV_CPU_VBLANK_INT("screen", mouser_nmi_interrupt) /* NMI is masked externally */
201186
202187   MDRV_CPU_ADD("audiocpu", Z80, 4000000)   /* ??? */
203   MDRV_CPU_PROGRAM_MAP(readmem2,writemem2)
204   MDRV_CPU_IO_MAP(io_map_2,0)
188   MDRV_CPU_PROGRAM_MAP(mouser_sound_map,0)
189   MDRV_CPU_IO_MAP(mouser_sound_io_map,0)
205190   MDRV_CPU_VBLANK_INT_HACK(nmi_line_pulse,4) /* ??? This controls the sound tempo */
206191
207192   /* video hardware */
r4679r4680
284269   offs_t i;
285270   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
286271   UINT8 *rom = memory_region(machine, "maincpu");
287   UINT8 *decrypted = auto_malloc(0x6000);
272   UINT8 *decrypted = auto_alloc_array(machine, UINT8, 0x6000);
288273   UINT8 *table = memory_region(machine, "user1");
289274
290275   memory_set_decrypted_region(space, 0x0000, 0x5fff, decrypted);
r4679r4680
298283
299284GAME( 1983, mouser,   0,      mouser, mouser, mouser, ROT90, "UPL", "Mouser", 0 )
300285GAME( 1983, mouserc,  mouser, mouser, mouser, mouser, ROT90, "[UPL] (Cosmos license)", "Mouser (Cosmos)", 0 )
301
src/mame/drivers/undrfire.c
r4679r4680
238238
239239static TIMER_CALLBACK( interrupt5 )
240240{
241   cpu_set_input_line(machine->cpu[0], 5, HOLD_LINE);
241   cputag_set_input_line(machine, "maincpu", 5, HOLD_LINE);
242242}
243243
244244
r4679r4680
472472    ........ .x......   Vibration
473473*/
474474
475   cpu_set_input_line(space->machine->cpu[2], INPUT_LINE_RESET, (data & 0x1000) ? CLEAR_LINE : ASSERT_LINE);
475   cputag_set_input_line(space->machine, "sub", INPUT_LINE_RESET, (data & 0x1000) ? CLEAR_LINE : ASSERT_LINE);
476476}
477477
478478static READ32_HANDLER( cbombers_adc_r )
src/mame/drivers/malzak.c
r4679r4680
171171//  Bits 1-3 are all set high upon death, until the game continues
172172//  Bit 6 is used only in Malzak II, and is set high after checking
173173//        the selected version
174//  logerror("S2650 [0x%04x]: port 0x40 write: 0x%02x\n",cpu_get_pc(space->machine->cpu[0]),data);
174//  logerror("S2650 [0x%04x]: port 0x40 write: 0x%02x\n", cpu_get_pc(cputag_get_cpu(space->machine, "maincpu")), data);
175175   if(data & 0x40)
176176      malzak_bank1 = 1;
177177   else
src/mame/drivers/deco32.c
r4679r4680
253253   deco32_raster_display_list[deco32_raster_display_position++]=deco32_pf12_control[3]&0xffff;
254254   deco32_raster_display_list[deco32_raster_display_position++]=deco32_pf12_control[4]&0xffff;
255255
256   cpu_set_input_line(machine->cpu[0], ARM_IRQ_LINE, HOLD_LINE);
256   cputag_set_input_line(machine, "maincpu", ARM_IRQ_LINE, HOLD_LINE);
257257}
258258
259259static READ32_HANDLER( deco32_irq_controller_r )
260260{
261261   int vblank;
262262
263   switch (offset) {
263   switch (offset)
264   {
264265   case 2: /* Raster IRQ ACK - value read is not used */
265      cpu_set_input_line(space->machine->cpu[0], ARM_IRQ_LINE, CLEAR_LINE);
266      cputag_set_input_line(space->machine, "maincpu", ARM_IRQ_LINE, CLEAR_LINE);
266267      return 0;
267268
268269   case 3: /* Irq controller
r4679r4680
316317static WRITE32_HANDLER( deco32_sound_w )
317318{
318319   soundlatch_w(space,0,data & 0xff);
319   cpu_set_input_line(space->machine->cpu[1],0,HOLD_LINE);
320   cputag_set_input_line(space->machine, "audiocpu", 0, HOLD_LINE);
320321}
321322
322323static READ32_HANDLER( deco32_71_r )
r4679r4680
480481   static int pendingCommand=0; /* 1 = read, 2 = write */
481482   static int readBitCount=0;
482483   static int byteAddr=0;
483   UINT8 *eeprom=eeprom_get_data_pointer(NULL,NULL);
484   UINT8 *eeprom=(UINT8 *)eeprom_get_data_pointer(NULL,NULL);
484485
485486   /* Eprom in low byte */
486487   if (mem_mask==0x000000ff) { /* Byte write to low byte only (different from word writing including low byte) */
r4679r4680
598599
599600   /* Sound board reset control */
600601   if (data&0x80)
601      cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_RESET, CLEAR_LINE);
602      cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_RESET, CLEAR_LINE);
602603   else
603      cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_RESET, ASSERT_LINE);
604      cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_RESET, ASSERT_LINE);
604605
605606   /* bit 0x4 fade cancel? */
606607   /* bit 0x8 ?? */
r4679r4680
647648      /* bit 1 of nslasher_sound_irq specifies IRQ command writes */
648649      soundlatch_w(space,0,(data>>16)&0xff);
649650      nslasher_sound_irq |= 0x02;
650      cpu_set_input_line(space->machine->cpu[1], 0, (nslasher_sound_irq != 0) ? ASSERT_LINE : CLEAR_LINE);
651      cputag_set_input_line(space->machine, "audiocpu", 0, (nslasher_sound_irq != 0) ? ASSERT_LINE : CLEAR_LINE);
651652   }
652653}
653654
654655/**********************************************************************************/
655656
656static ADDRESS_MAP_START( captaven_readmem, ADDRESS_SPACE_PROGRAM, 32 )
657   AM_RANGE(0x000000, 0x0fffff) AM_READ(SMH_ROM)
657static ADDRESS_MAP_START( captaven_map, ADDRESS_SPACE_PROGRAM, 32 )
658   AM_RANGE(0x000000, 0x0fffff) AM_ROM
658659
659660   AM_RANGE(0x100000, 0x100007) AM_READ(deco32_71_r)
660   AM_RANGE(0x110000, 0x110fff) AM_READ(SMH_RAM) /* Sprites */
661   AM_RANGE(0x120000, 0x127fff) AM_READ(SMH_RAM) /* Main RAM */
662   AM_RANGE(0x130000, 0x131fff) AM_READ(SMH_RAM) /* Palette RAM */
663   AM_RANGE(0x128000, 0x128fff) AM_READ(captaven_prot_r)
664   AM_RANGE(0x148000, 0x14800f) AM_READ(deco32_irq_controller_r)
665   AM_RANGE(0x160000, 0x167fff) AM_READ(SMH_RAM) /* Extra work RAM */
666   AM_RANGE(0x168000, 0x168003) AM_READ(captaven_soundcpu_r)
667
668   AM_RANGE(0x180000, 0x18001f) AM_READ(SMH_RAM)
669   AM_RANGE(0x190000, 0x191fff) AM_READ(SMH_RAM)
670   AM_RANGE(0x194000, 0x195fff) AM_READ(SMH_RAM)
671   AM_RANGE(0x1a0000, 0x1a1fff) AM_READ(SMH_RAM)
672   AM_RANGE(0x1a4000, 0x1a5fff) AM_READ(SMH_RAM)
673
674   AM_RANGE(0x1c0000, 0x1c001f) AM_READ(SMH_RAM)
675   AM_RANGE(0x1d0000, 0x1d1fff) AM_READ(SMH_RAM)
676   AM_RANGE(0x1e0000, 0x1e1fff) AM_READ(SMH_RAM)
677ADDRESS_MAP_END
678
679static ADDRESS_MAP_START( captaven_writemem, ADDRESS_SPACE_PROGRAM, 32 )
680   AM_RANGE(0x000000, 0x0fffff) AM_WRITE(SMH_ROM)
681
682661   AM_RANGE(0x100000, 0x100003) AM_WRITE(buffer_spriteram32_w)
683662   AM_RANGE(0x108000, 0x108003) AM_WRITENOP /* ? */
684   AM_RANGE(0x110000, 0x110fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram32) AM_SIZE(&spriteram_size)
685   AM_RANGE(0x120000, 0x127fff) AM_WRITE(SMH_RAM) AM_BASE(&deco32_ram) /* Main RAM */
663   AM_RANGE(0x110000, 0x110fff) AM_RAM AM_BASE(&spriteram32) AM_SIZE(&spriteram_size) /* Sprites */
664   AM_RANGE(0x120000, 0x127fff) AM_RAM AM_BASE(&deco32_ram) /* Main RAM */
665   AM_RANGE(0x128000, 0x128fff) AM_READ(captaven_prot_r)
686666   AM_RANGE(0x1280c8, 0x1280cb) AM_WRITE(deco32_sound_w)
687   AM_RANGE(0x130000, 0x131fff) AM_WRITE(deco32_nonbuffered_palette_w) AM_BASE(&paletteram32)
688   AM_RANGE(0x148000, 0x14800f) AM_WRITE(deco32_irq_controller_w)
667   AM_RANGE(0x130000, 0x131fff) AM_RAM_WRITE(deco32_nonbuffered_palette_w) AM_BASE(&paletteram32) /* Palette RAM */
668   AM_RANGE(0x148000, 0x14800f) AM_READWRITE(deco32_irq_controller_r, deco32_irq_controller_w)
669   AM_RANGE(0x160000, 0x167fff) AM_RAM /* Extra work RAM */
670   AM_RANGE(0x168000, 0x168003) AM_READ(captaven_soundcpu_r)
689671
690   AM_RANGE(0x160000, 0x167fff) AM_WRITE(SMH_RAM) /* Additional work RAM */
691
692672   AM_RANGE(0x178000, 0x178003) AM_WRITE(deco32_pri_w)
693   AM_RANGE(0x180000, 0x18001f) AM_WRITE(SMH_RAM) AM_BASE(&deco32_pf12_control)
694   AM_RANGE(0x190000, 0x191fff) AM_WRITE(deco32_pf1_data_w) AM_BASE(&deco32_pf1_data)
673
674   AM_RANGE(0x180000, 0x18001f) AM_RAM AM_BASE(&deco32_pf12_control)
675   AM_RANGE(0x190000, 0x191fff) AM_RAM_WRITE(deco32_pf1_data_w) AM_BASE(&deco32_pf1_data)
695676   AM_RANGE(0x192000, 0x193fff) AM_WRITE(deco32_pf1_data_w) /* Mirror address - bug in program code */
696   AM_RANGE(0x194000, 0x195fff) AM_WRITE(deco32_pf2_data_w) AM_BASE(&deco32_pf2_data)
677   AM_RANGE(0x194000, 0x195fff) AM_RAM_WRITE(deco32_pf2_data_w) AM_BASE(&deco32_pf2_data)
678   AM_RANGE(0x1a0000, 0x1a1fff) AM_RAM AM_BASE(&deco32_pf1_rowscroll)
679   AM_RANGE(0x1a4000, 0x1a5fff) AM_RAM AM_BASE(&deco32_pf2_rowscroll)
697680
698   AM_RANGE(0x1a0000, 0x1a1fff) AM_WRITE(SMH_RAM) AM_BASE(&deco32_pf1_rowscroll)
699   AM_RANGE(0x1a4000, 0x1a5fff) AM_WRITE(SMH_RAM) AM_BASE(&deco32_pf2_rowscroll)
700   AM_RANGE(0x1c0000, 0x1c001f) AM_WRITE(SMH_RAM) AM_BASE(&deco32_pf34_control)
701   AM_RANGE(0x1d0000, 0x1d1fff) AM_WRITE(deco32_pf3_data_w) AM_BASE(&deco32_pf3_data)
702   AM_RANGE(0x1e0000, 0x1e1fff) AM_WRITE(SMH_RAM) AM_BASE(&deco32_pf3_rowscroll)
681   AM_RANGE(0x1c0000, 0x1c001f) AM_RAM AM_BASE(&deco32_pf34_control)
682   AM_RANGE(0x1d0000, 0x1d1fff) AM_RAM_WRITE(deco32_pf3_data_w) AM_BASE(&deco32_pf3_data)
683   AM_RANGE(0x1e0000, 0x1e1fff) AM_RAM AM_BASE(&deco32_pf3_rowscroll)
703684ADDRESS_MAP_END
704685
705static ADDRESS_MAP_START( fghthist_readmem, ADDRESS_SPACE_PROGRAM, 32 )
706   AM_RANGE(0x000000, 0x0fffff) AM_READ(SMH_ROM)
707   AM_RANGE(0x100000, 0x11ffff) AM_READ(SMH_RAM)
686static ADDRESS_MAP_START( fghthist_map, ADDRESS_SPACE_PROGRAM, 32 )
687   AM_RANGE(0x000000, 0x001fff) AM_READWRITE(SMH_ROM, deco32_pf1_data_w)
688   AM_RANGE(0x000000, 0x0fffff) AM_ROM
689   AM_RANGE(0x100000, 0x11ffff) AM_RAM AM_BASE(&deco32_ram)
708690   AM_RANGE(0x120020, 0x12002f) AM_READ(fghthist_control_r)
709
710   AM_RANGE(0x168000, 0x169fff) AM_READ(SMH_RAM)
711
712   AM_RANGE(0x178000, 0x178fff) AM_READ(SMH_RAM)
713   AM_RANGE(0x179000, 0x179fff) AM_READ(SMH_RAM)
714
715   AM_RANGE(0x182000, 0x183fff) AM_READ(SMH_RAM)
716   AM_RANGE(0x184000, 0x185fff) AM_READ(SMH_RAM)
717   AM_RANGE(0x192000, 0x1923ff) AM_READ(SMH_RAM)
718   AM_RANGE(0x192800, 0x1928ff) AM_READ(SMH_RAM)
719   AM_RANGE(0x194000, 0x1943ff) AM_READ(SMH_RAM)
720   AM_RANGE(0x194800, 0x1948ff) AM_READ(SMH_RAM)
721   AM_RANGE(0x1a0000, 0x1a001f) AM_READ(SMH_RAM)
722
723   AM_RANGE(0x1c2000, 0x1c3fff) AM_READ(SMH_RAM)
724   AM_RANGE(0x1c4000, 0x1c5fff) AM_READ(SMH_RAM)
725   AM_RANGE(0x1d2000, 0x1d23ff) AM_READ(SMH_RAM)
726   AM_RANGE(0x1d2800, 0x1d28ff) AM_READ(SMH_RAM)
727   AM_RANGE(0x1d4000, 0x1d43ff) AM_READ(SMH_RAM)
728   AM_RANGE(0x1d4800, 0x1d48ff) AM_READ(SMH_RAM)
729   AM_RANGE(0x1e0000, 0x1e001f) AM_READ(SMH_RAM)
730
731   AM_RANGE(0x16c000, 0x16c01f) AM_READNOP
732   AM_RANGE(0x17c000, 0x17c03f) AM_READNOP
733
734   AM_RANGE(0x200000, 0x200fff) AM_READ(deco16_146_fghthist_prot_r)
735ADDRESS_MAP_END
736
737static ADDRESS_MAP_START( fghthist_writemem, ADDRESS_SPACE_PROGRAM, 32 )
738   AM_RANGE(0x000000, 0x001fff) AM_WRITE(deco32_pf1_data_w) /* Hardware bug?  Test mode writes here and expects to get PF1 */
739   AM_RANGE(0x000000, 0x0fffff) AM_WRITE(SMH_ROM)
740   AM_RANGE(0x100000, 0x11ffff) AM_WRITE(SMH_RAM) AM_BASE(&deco32_ram)
741691   AM_RANGE(0x12002c, 0x12002f) AM_WRITE(fghthist_eeprom_w)
742692   AM_RANGE(0x1201fc, 0x1201ff) AM_WRITE(deco32_sound_w)
693
743694   AM_RANGE(0x140000, 0x140003) AM_WRITENOP /* VBL irq ack */
744   //148000 - IRQ mask (ca)...
745   AM_RANGE(0x168000, 0x169fff) AM_WRITE(deco32_buffered_palette_w) AM_BASE(&paletteram32)
746   AM_RANGE(0x16c008, 0x16c00b) AM_WRITE(deco32_palette_dma_w)
747695
748   AM_RANGE(0x178000, 0x178fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram32) AM_SIZE(&spriteram_size)
749   AM_RANGE(0x179000, 0x179fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram32_2) // ?
696   AM_RANGE(0x168000, 0x169fff) AM_RAM_WRITE(deco32_buffered_palette_w) AM_BASE(&paletteram32)
697   AM_RANGE(0x16c008, 0x16c00b) AM_WRITE(deco32_palette_dma_w)
698   //
699   AM_RANGE(0x178000, 0x178fff) AM_RAM AM_BASE(&spriteram32) AM_SIZE(&spriteram_size)
700   AM_RANGE(0x179000, 0x179fff) AM_RAM AM_BASE(&spriteram32_2) // ?
750701   AM_RANGE(0x17c010, 0x17c013) AM_WRITE(buffer_spriteram32_w)
751702
752   AM_RANGE(0x182000, 0x183fff) AM_WRITE(deco32_pf1_data_w) AM_BASE(&deco32_pf1_data)
753   AM_RANGE(0x184000, 0x185fff) AM_WRITE(deco32_pf2_data_w) AM_BASE(&deco32_pf2_data)
754   AM_RANGE(0x192000, 0x192fff) AM_WRITE(SMH_RAM) AM_BASE(&deco32_pf1_rowscroll)
755   AM_RANGE(0x194000, 0x194fff) AM_WRITE(SMH_RAM) AM_BASE(&deco32_pf2_rowscroll)
756   AM_RANGE(0x1a0000, 0x1a001f) AM_WRITE(SMH_RAM) AM_BASE(&deco32_pf12_control)
703   AM_RANGE(0x182000, 0x183fff) AM_RAM_WRITE(deco32_pf1_data_w) AM_BASE(&deco32_pf1_data)
704   AM_RANGE(0x184000, 0x185fff) AM_RAM_WRITE(deco32_pf2_data_w) AM_BASE(&deco32_pf2_data)
705   AM_RANGE(0x192000, 0x192fff) AM_RAM AM_BASE(&deco32_pf1_rowscroll)
706   AM_RANGE(0x194000, 0x194fff) AM_RAM AM_BASE(&deco32_pf2_rowscroll)
707   AM_RANGE(0x1a0000, 0x1a001f) AM_RAM AM_BASE(&deco32_pf12_control)
757708
758   AM_RANGE(0x1c2000, 0x1c3fff) AM_WRITE(deco32_pf3_data_w) AM_BASE(&deco32_pf3_data)
759   AM_RANGE(0x1c4000, 0x1c5fff) AM_WRITE(deco32_pf4_data_w) AM_BASE(&deco32_pf4_data)
760   AM_RANGE(0x1d2000, 0x1d2fff) AM_WRITE(SMH_RAM) AM_BASE(&deco32_pf3_rowscroll)
761   AM_RANGE(0x1d4000, 0x1d4fff) AM_WRITE(SMH_RAM) AM_BASE(&deco32_pf4_rowscroll)
762   AM_RANGE(0x1e0000, 0x1e001f) AM_WRITE(SMH_RAM) AM_BASE(&deco32_pf34_control)
709   AM_RANGE(0x1c2000, 0x1c3fff) AM_RAM_WRITE(deco32_pf3_data_w) AM_BASE(&deco32_pf3_data)
710   AM_RANGE(0x1c4000, 0x1c5fff) AM_RAM_WRITE(deco32_pf4_data_w) AM_BASE(&deco32_pf4_data)
711   AM_RANGE(0x1d2000, 0x1d2fff) AM_RAM AM_BASE(&deco32_pf3_rowscroll)
712   AM_RANGE(0x1d4000, 0x1d4fff) AM_RAM AM_BASE(&deco32_pf4_rowscroll)
713   AM_RANGE(0x1e0000, 0x1e001f) AM_RAM AM_BASE(&deco32_pf34_control)
763714
764   AM_RANGE(0x200000, 0x200fff) AM_WRITE(deco16_146_fghthist_prot_w) AM_BASE(&deco32_prot_ram)
715   AM_RANGE(0x16c000, 0x16c01f) AM_READNOP
716   AM_RANGE(0x17c000, 0x17c03f) AM_READNOP
717
718   AM_RANGE(0x200000, 0x200fff) AM_READWRITE(deco16_146_fghthist_prot_r, deco16_146_fghthist_prot_w) AM_BASE(&deco32_prot_ram)
765719   AM_RANGE(0x208800, 0x208803) AM_WRITENOP /* ? */
766720ADDRESS_MAP_END
767721
r4679r4680
794748   AM_RANGE(0x200000, 0x200fff) AM_READ(deco16_146_fghthist_prot_r) AM_WRITE(deco16_146_fghthist_prot_w) AM_BASE(&deco32_prot_ram)
795749ADDRESS_MAP_END
796750
797static ADDRESS_MAP_START( dragngun_readmem, ADDRESS_SPACE_PROGRAM, 32 )
798   AM_RANGE(0x000000, 0x0fffff) AM_READ(SMH_ROM)
799   AM_RANGE(0x100000, 0x11ffff) AM_READ(SMH_RAM)
751static ADDRESS_MAP_START( dragngun_map, ADDRESS_SPACE_PROGRAM, 32 )
752   AM_RANGE(0x000000, 0x0fffff) AM_ROM
753   AM_RANGE(0x100000, 0x11ffff) AM_RAM AM_BASE(&deco32_ram)
800754   AM_RANGE(0x120000, 0x120fff) AM_READ(dragngun_prot_r)
801   AM_RANGE(0x128000, 0x12800f) AM_READ(deco32_irq_controller_r)
802   AM_RANGE(0x130000, 0x131fff) AM_READ(SMH_RAM)
803   AM_RANGE(0x138000, 0x138003) AM_READNOP /* Palette dma complete in bit 0x8? ack?  return 0 else tight loop */
755   AM_RANGE(0x1204c0, 0x1204c3) AM_WRITE(deco32_sound_w)
756   AM_RANGE(0x128000, 0x12800f) AM_READWRITE(deco32_irq_controller_r, deco32_irq_controller_w)
757   AM_RANGE(0x130000, 0x131fff) AM_RAM_WRITE(deco32_buffered_palette_w) AM_BASE(&paletteram32)
758   AM_RANGE(0x138000, 0x138003) AM_NOP /* Palette dma complete in bit 0x8? ack?  return 0 else tight loop */
759   AM_RANGE(0x138008, 0x13800b) AM_WRITE(deco32_palette_dma_w)
804760
805   AM_RANGE(0x180000, 0x18001f) AM_READ(SMH_RAM)
806   AM_RANGE(0x190000, 0x191fff) AM_READ(SMH_RAM)
807   AM_RANGE(0x194000, 0x195fff) AM_READ(SMH_RAM)
808   AM_RANGE(0x1a0000, 0x1a0fff) AM_READ(SMH_RAM)
809   AM_RANGE(0x1a4000, 0x1a4fff) AM_READ(SMH_RAM)
761   AM_RANGE(0x180000, 0x18001f) AM_RAM AM_BASE(&deco32_pf12_control)
762   AM_RANGE(0x190000, 0x191fff) AM_RAM_WRITE(deco32_pf1_data_w) AM_BASE(&deco32_pf1_data)
763   AM_RANGE(0x194000, 0x195fff) AM_RAM_WRITE(deco32_pf2_data_w) AM_BASE(&deco32_pf2_data)
764   AM_RANGE(0x1a0000, 0x1a0fff) AM_RAM AM_BASE(&deco32_pf1_rowscroll)
765   AM_RANGE(0x1a4000, 0x1a4fff) AM_RAM AM_BASE(&deco32_pf2_rowscroll)
810766
811   AM_RANGE(0x1c0000, 0x1c001f) AM_READ(SMH_RAM)
812   AM_RANGE(0x1d0000, 0x1d1fff) AM_READ(SMH_RAM)
813   AM_RANGE(0x1d4000, 0x1d5fff) AM_READ(SMH_RAM)
814   AM_RANGE(0x1e0000, 0x1e0fff) AM_READ(SMH_RAM)
815   AM_RANGE(0x1e4000, 0x1e4fff) AM_READ(SMH_RAM)
767   AM_RANGE(0x1c0000, 0x1c001f) AM_RAM AM_BASE(&deco32_pf34_control)
768   AM_RANGE(0x1d0000, 0x1d1fff) AM_RAM_WRITE(deco32_pf3_data_w) AM_BASE(&deco32_pf3_data)
769   AM_RANGE(0x1d4000, 0x1d5fff) AM_RAM_WRITE(deco32_pf4_data_w) AM_BASE(&deco32_pf4_data)
770   AM_RANGE(0x1e0000, 0x1e0fff) AM_RAM AM_BASE(&deco32_pf3_rowscroll)
771   AM_RANGE(0x1e4000, 0x1e4fff) AM_RAM AM_BASE(&deco32_pf4_rowscroll)
816772
817   AM_RANGE(0x208000, 0x208fff) AM_READ(SMH_RAM)
818   AM_RANGE(0x20c000, 0x20cfff) AM_READ(SMH_RAM)
819   AM_RANGE(0x210000, 0x217fff) AM_READ(SMH_RAM)
820   AM_RANGE(0x218000, 0x21ffff) AM_READ(SMH_RAM)
821   AM_RANGE(0x220000, 0x221fff) AM_READ(SMH_RAM) /* Main spriteram */
773   AM_RANGE(0x204800, 0x204fff) AM_RAM // ace? 0x10 byte increments only  // 13f ff stuff
822774
823   AM_RANGE(0x204800, 0x204fff) AM_READ(SMH_RAM) //0x10 byte increments only
824   AM_RANGE(0x228000, 0x2283ff) AM_READ(SMH_RAM) //0x10 byte increments only
825775
826   AM_RANGE(0x300000, 0x3fffff) AM_READ(SMH_ROM)
776   AM_RANGE(0x208000, 0x208fff) AM_RAM AM_BASE(&dragngun_sprite_layout_0_ram)
777   AM_RANGE(0x20c000, 0x20cfff) AM_RAM AM_BASE(&dragngun_sprite_layout_1_ram)
778   AM_RANGE(0x210000, 0x217fff) AM_RAM AM_BASE(&dragngun_sprite_lookup_0_ram)
779   AM_RANGE(0x218000, 0x21ffff) AM_RAM AM_BASE(&dragngun_sprite_lookup_1_ram)
780   AM_RANGE(0x220000, 0x221fff) AM_RAM AM_BASE(&spriteram32) AM_SIZE(&spriteram_size) /* Main spriteram */
827781
828   AM_RANGE(0x400000, 0x400003) AM_DEVREAD8("oki3", okim6295_r, 0x000000ff)
829   AM_RANGE(0x420000, 0x420003) AM_READ(dragngun_eeprom_r)
830   AM_RANGE(0x438000, 0x438003) AM_READ(dragngun_lightgun_r)
831   AM_RANGE(0x440000, 0x440003) AM_READ(dragngun_service_r)
832ADDRESS_MAP_END
782   AM_RANGE(0x228000, 0x2283ff) AM_RAM //0x10 byte increments only
833783
834static ADDRESS_MAP_START( dragngun_writemem, ADDRESS_SPACE_PROGRAM, 32 )
835   AM_RANGE(0x000000, 0x0fffff) AM_WRITE(SMH_ROM)
836   AM_RANGE(0x100000, 0x11ffff) AM_WRITE(SMH_RAM) AM_BASE(&deco32_ram)
837   AM_RANGE(0x1204c0, 0x1204c3) AM_WRITE(deco32_sound_w)
838   AM_RANGE(0x128000, 0x12800f) AM_WRITE(deco32_irq_controller_w)
839
840   AM_RANGE(0x130000, 0x131fff) AM_WRITE(deco32_buffered_palette_w) AM_BASE(&paletteram32)
841   AM_RANGE(0x138000, 0x138003) AM_WRITENOP // palette mode?  check
842   AM_RANGE(0x138008, 0x13800b) AM_WRITE(deco32_palette_dma_w)
843
844   AM_RANGE(0x180000, 0x18001f) AM_WRITE(SMH_RAM) AM_BASE(&deco32_pf12_control)
845   AM_RANGE(0x190000, 0x191fff) AM_WRITE(deco32_pf1_data_w) AM_BASE(&deco32_pf1_data)
846   AM_RANGE(0x194000, 0x195fff) AM_WRITE(deco32_pf2_data_w) AM_BASE(&deco32_pf2_data)
847   AM_RANGE(0x1a0000, 0x1a0fff) AM_WRITE(SMH_RAM) AM_BASE(&deco32_pf1_rowscroll)
848   AM_RANGE(0x1a4000, 0x1a4fff) AM_WRITE(SMH_RAM) AM_BASE(&deco32_pf2_rowscroll)
849
850   AM_RANGE(0x1c0000, 0x1c001f) AM_WRITE(SMH_RAM) AM_BASE(&deco32_pf34_control)
851   AM_RANGE(0x1d0000, 0x1d1fff) AM_WRITE(deco32_pf3_data_w) AM_BASE(&deco32_pf3_data)
852   AM_RANGE(0x1d4000, 0x1d5fff) AM_WRITE(deco32_pf4_data_w) AM_BASE(&deco32_pf4_data)
853   AM_RANGE(0x1e0000, 0x1e0fff) AM_WRITE(SMH_RAM) AM_BASE(&deco32_pf3_rowscroll)
854   AM_RANGE(0x1e4000, 0x1e4fff) AM_WRITE(SMH_RAM) AM_BASE(&deco32_pf4_rowscroll)
855
856   AM_RANGE(0x204800, 0x204fff) AM_WRITE(SMH_RAM) // ace? 0x10 byte increments only  // 13f ff stuff
857
858   AM_RANGE(0x208000, 0x208fff) AM_WRITE(SMH_RAM) AM_BASE(&dragngun_sprite_layout_0_ram)
859   AM_RANGE(0x20c000, 0x20cfff) AM_WRITE(SMH_RAM) AM_BASE(&dragngun_sprite_layout_1_ram)
860   AM_RANGE(0x210000, 0x217fff) AM_WRITE(SMH_RAM) AM_BASE(&dragngun_sprite_lookup_0_ram)
861   AM_RANGE(0x218000, 0x21ffff) AM_WRITE(SMH_RAM) AM_BASE(&dragngun_sprite_lookup_1_ram)
862   AM_RANGE(0x220000, 0x221fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram32) AM_SIZE(&spriteram_size)
863   AM_RANGE(0x228000, 0x2283ff) AM_WRITE(SMH_RAM) /* ? */
864784   AM_RANGE(0x230000, 0x230003) AM_WRITE(dragngun_spriteram_dma_w)
865785
866   AM_RANGE(0x300000, 0x3fffff) AM_WRITE(SMH_ROM)
786   AM_RANGE(0x300000, 0x3fffff) AM_ROM
867787
868   AM_RANGE(0x400000, 0x400003) AM_DEVWRITE8("oki3", okim6295_w, 0x000000ff)
788   AM_RANGE(0x400000, 0x400003) AM_DEVREADWRITE8("oki3", okim6295_r, okim6295_w, 0x000000ff)
869789   AM_RANGE(0x410000, 0x410003) AM_WRITENOP /* Some kind of serial bit-stream - digital volume control? */
870   AM_RANGE(0x420000, 0x420003) AM_WRITE(dragngun_eeprom_w)
871   AM_RANGE(0x430000, 0x43001f) AM_WRITE(dragngun_lightgun_w)
790   AM_RANGE(0x420000, 0x420003) AM_READWRITE(dragngun_eeprom_r, dragngun_eeprom_w)
791   AM_RANGE(0x438000, 0x438003) AM_READWRITE(dragngun_lightgun_r, dragngun_lightgun_w)
792   AM_RANGE(0x440000, 0x440003) AM_READ(dragngun_service_r)
793
872794   AM_RANGE(0x500000, 0x500003) AM_WRITE(dragngun_sprite_control_w)
873795ADDRESS_MAP_END
874796
875static ADDRESS_MAP_START( lockload_readmem, ADDRESS_SPACE_PROGRAM, 32 )
876   AM_RANGE(0x000000, 0x0fffff) AM_READ(SMH_ROM)
877   AM_RANGE(0x100000, 0x11ffff) AM_READ(SMH_RAM)
797static ADDRESS_MAP_START( lockload_map, ADDRESS_SPACE_PROGRAM, 32 )
798   AM_RANGE(0x000000, 0x0fffff) AM_ROM
799   AM_RANGE(0x100000, 0x11ffff) AM_RAM AM_BASE(&deco32_ram)
878800   AM_RANGE(0x120000, 0x120fff) AM_READ(dragngun_prot_r)
879   AM_RANGE(0x128000, 0x12800f) AM_READ(deco32_irq_controller_r)
880   AM_RANGE(0x130000, 0x131fff) AM_READ(SMH_RAM)
881   AM_RANGE(0x138000, 0x138003) AM_READ(SMH_RAM) //palette dma complete in bit 0x8? ack?  return 0 else tight loop
882
883   AM_RANGE(0x170000, 0x170007) AM_READ(lockload_gun_mirror_r) /* Not on Dragongun */
884
885   AM_RANGE(0x180000, 0x18001f) AM_READ(SMH_RAM)
886   AM_RANGE(0x190000, 0x191fff) AM_READ(SMH_RAM)
887   AM_RANGE(0x194000, 0x195fff) AM_READ(SMH_RAM)
888   AM_RANGE(0x1a0000, 0x1a0fff) AM_READ(SMH_RAM)
889   AM_RANGE(0x1a4000, 0x1a4fff) AM_READ(SMH_RAM)
890
891   AM_RANGE(0x1c0000, 0x1c001f) AM_READ(SMH_RAM)
892   AM_RANGE(0x1d0000, 0x1d1fff) AM_READ(SMH_RAM)
893   AM_RANGE(0x1d4000, 0x1d5fff) AM_READ(SMH_RAM)
894   AM_RANGE(0x1e0000, 0x1e0fff) AM_READ(SMH_RAM)
895   AM_RANGE(0x1e4000, 0x1e4fff) AM_READ(SMH_RAM)
896
897   AM_RANGE(0x208000, 0x208fff) AM_READ(SMH_RAM)
898   AM_RANGE(0x20c000, 0x20cfff) AM_READ(SMH_RAM)
899   AM_RANGE(0x210000, 0x217fff) AM_READ(SMH_RAM)
900   AM_RANGE(0x218000, 0x21ffff) AM_READ(SMH_RAM)
901   AM_RANGE(0x220000, 0x221fff) AM_READ(SMH_RAM) /* Main spriteram */
902
903   AM_RANGE(0x204800, 0x204fff) AM_READ(SMH_RAM) //0x10 byte increments only
904   AM_RANGE(0x228000, 0x2283ff) AM_READ(SMH_RAM) //0x10 byte increments only
905
906   AM_RANGE(0x300000, 0x3fffff) AM_READ(SMH_ROM)
907
908   AM_RANGE(0x400000, 0x400003) AM_DEVREAD8("oki3", okim6295_r, 0x000000ff)
909   AM_RANGE(0x420000, 0x420003) AM_READ(dragngun_eeprom_r)
910//  AM_RANGE(0x438000, 0x438003) AM_READ(dragngun_lightgun_r)
911   AM_RANGE(0x440000, 0x440003) AM_READ(dragngun_service_r)
912ADDRESS_MAP_END
913
914
915static ADDRESS_MAP_START( lockload_writemem, ADDRESS_SPACE_PROGRAM, 32 )
916   AM_RANGE(0x000000, 0x0fffff) AM_WRITE(SMH_ROM)
917   AM_RANGE(0x100000, 0x11ffff) AM_WRITE(SMH_RAM) AM_BASE(&deco32_ram)
918801   AM_RANGE(0x1204c0, 0x1204c3) AM_WRITE(deco32_sound_w)
919   AM_RANGE(0x128000, 0x12800f) AM_WRITE(deco32_irq_controller_w)
802   AM_RANGE(0x128000, 0x12800f) AM_READWRITE(deco32_irq_controller_r, deco32_irq_controller_w)
920803
921   AM_RANGE(0x130000, 0x131fff) AM_WRITE(deco32_buffered_palette_w) AM_BASE(&paletteram32)
922   AM_RANGE(0x138000, 0x138003) AM_WRITENOP // palette mode?  check
804   AM_RANGE(0x130000, 0x131fff) AM_RAM_WRITE(deco32_buffered_palette_w) AM_BASE(&paletteram32)
805   AM_RANGE(0x138000, 0x138003) AM_READWRITE(SMH_RAM, SMH_NOP) //palette dma complete in bit 0x8? ack?  return 0 else tight loop
923806   AM_RANGE(0x138008, 0x13800b) AM_WRITE(deco32_palette_dma_w)
807
808   AM_RANGE(0x170000, 0x170007) AM_READ(lockload_gun_mirror_r) /* Not on Dragongun */
924809   AM_RANGE(0x178008, 0x17800f) AM_WRITENOP /* Gun read ACK's */
925810
926   AM_RANGE(0x180000, 0x18001f) AM_WRITE(SMH_RAM) AM_BASE(&deco32_pf12_control)
927   AM_RANGE(0x190000, 0x191fff) AM_WRITE(deco32_pf1_data_w) AM_BASE(&deco32_pf1_data)
928   AM_RANGE(0x194000, 0x195fff) AM_WRITE(deco32_pf2_data_w) AM_BASE(&deco32_pf2_data)
929   AM_RANGE(0x1a0000, 0x1a0fff) AM_WRITE(SMH_RAM) AM_BASE(&deco32_pf1_rowscroll)
930   AM_RANGE(0x1a4000, 0x1a4fff) AM_WRITE(SMH_RAM) AM_BASE(&deco32_pf2_rowscroll)
811   AM_RANGE(0x180000, 0x18001f) AM_RAM AM_BASE(&deco32_pf12_control)
812   AM_RANGE(0x190000, 0x191fff) AM_RAM_WRITE(deco32_pf1_data_w) AM_BASE(&deco32_pf1_data)
813   AM_RANGE(0x194000, 0x195fff) AM_RAM_WRITE(deco32_pf2_data_w) AM_BASE(&deco32_pf2_data)
814   AM_RANGE(0x1a0000, 0x1a0fff) AM_RAM AM_BASE(&deco32_pf1_rowscroll)
815   AM_RANGE(0x1a4000, 0x1a4fff) AM_RAM AM_BASE(&deco32_pf2_rowscroll)
931816
932   AM_RANGE(0x1c0000, 0x1c001f) AM_WRITE(SMH_RAM) AM_BASE(&deco32_pf34_control)
933   AM_RANGE(0x1d0000, 0x1d1fff) AM_WRITE(deco32_pf3_data_w) AM_BASE(&deco32_pf3_data)
934   AM_RANGE(0x1d4000, 0x1d5fff) AM_WRITE(deco32_pf4_data_w) AM_BASE(&deco32_pf4_data)
935   AM_RANGE(0x1e0000, 0x1e0fff) AM_WRITE(SMH_RAM) AM_BASE(&deco32_pf3_rowscroll)
936   AM_RANGE(0x1e4000, 0x1e4fff) AM_WRITE(SMH_RAM) AM_BASE(&deco32_pf4_rowscroll)
817   AM_RANGE(0x1c0000, 0x1c001f) AM_RAM AM_BASE(&deco32_pf34_control)
818   AM_RANGE(0x1d0000, 0x1d1fff) AM_RAM_WRITE(deco32_pf3_data_w) AM_BASE(&deco32_pf3_data)
819   AM_RANGE(0x1d4000, 0x1d5fff) AM_RAM_WRITE(deco32_pf4_data_w) AM_BASE(&deco32_pf4_data)
820   AM_RANGE(0x1e0000, 0x1e0fff) AM_RAM AM_BASE(&deco32_pf3_rowscroll)
821   AM_RANGE(0x1e4000, 0x1e4fff) AM_RAM AM_BASE(&deco32_pf4_rowscroll)
937822
938   AM_RANGE(0x204800, 0x204fff) AM_WRITE(SMH_RAM) // ace? 0x10 byte increments only  // 13f ff stuff
823   AM_RANGE(0x204800, 0x204fff) AM_RAM            //0x10 byte increments only
824   AM_RANGE(0x208000, 0x208fff) AM_RAM AM_BASE(&dragngun_sprite_layout_0_ram)
825   AM_RANGE(0x20c000, 0x20cfff) AM_RAM AM_BASE(&dragngun_sprite_layout_1_ram)
826   AM_RANGE(0x210000, 0x217fff) AM_RAM AM_BASE(&dragngun_sprite_lookup_0_ram)
827   AM_RANGE(0x218000, 0x21ffff) AM_RAM AM_BASE(&dragngun_sprite_lookup_1_ram)
828   AM_RANGE(0x220000, 0x221fff) AM_RAM AM_BASE(&spriteram32) AM_SIZE(&spriteram_size) /* Main spriteram */
939829
940   AM_RANGE(0x208000, 0x208fff) AM_WRITE(SMH_RAM) AM_BASE(&dragngun_sprite_layout_0_ram)
941   AM_RANGE(0x20c000, 0x20cfff) AM_WRITE(SMH_RAM) AM_BASE(&dragngun_sprite_layout_1_ram)
942   AM_RANGE(0x210000, 0x217fff) AM_WRITE(SMH_RAM) AM_BASE(&dragngun_sprite_lookup_0_ram)
943   AM_RANGE(0x218000, 0x21ffff) AM_WRITE(SMH_RAM) AM_BASE(&dragngun_sprite_lookup_1_ram)
944   AM_RANGE(0x220000, 0x221fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram32) AM_SIZE(&spriteram_size)
945
946   AM_RANGE(0x228000, 0x2283ff) AM_WRITE(SMH_RAM)
947
830   AM_RANGE(0x228000, 0x2283ff) AM_RAM            //0x10 byte increments only
948831   AM_RANGE(0x230000, 0x230003) AM_WRITE(dragngun_spriteram_dma_w)
949832
950   AM_RANGE(0x300000, 0x3fffff) AM_WRITE(SMH_ROM)
951   AM_RANGE(0x400000, 0x400003) AM_DEVWRITE8("oki3", okim6295_w, 0x000000ff)
952   AM_RANGE(0x420000, 0x420003) AM_WRITE(dragngun_eeprom_w)
833   AM_RANGE(0x300000, 0x3fffff) AM_ROM
834
835   AM_RANGE(0x400000, 0x400003) AM_DEVREADWRITE8("oki3", okim6295_r, okim6295_w, 0x000000ff)
836   AM_RANGE(0x420000, 0x420003) AM_READWRITE(dragngun_eeprom_r, dragngun_eeprom_w)
953837//  AM_RANGE(0x430000, 0x43001f) AM_WRITE(dragngun_lightgun_w)
838//  AM_RANGE(0x438000, 0x438003) AM_READ(dragngun_lightgun_r)
839   AM_RANGE(0x440000, 0x440003) AM_READ(dragngun_service_r)
954840   AM_RANGE(0x500000, 0x500003) AM_WRITE(dragngun_sprite_control_w)
955841ADDRESS_MAP_END
956842
957static ADDRESS_MAP_START( tattass_readmem, ADDRESS_SPACE_PROGRAM, 32 )
958   AM_RANGE(0x000000, 0x0fffff) AM_READ(SMH_ROM)
959   AM_RANGE(0x100000, 0x11ffff) AM_READ(SMH_RAM)
960   AM_RANGE(0x120000, 0x120003) AM_READNOP /* ACIA (unused) */
843static ADDRESS_MAP_START( tattass_map, ADDRESS_SPACE_PROGRAM, 32 )
961844
962   AM_RANGE(0x162000, 0x162fff) AM_READ(SMH_RAM) /* 'Jack' RAM!? */
963   AM_RANGE(0x163000, 0x16309f) AM_READ(SMH_RAM)
964   AM_RANGE(0x168000, 0x169fff) AM_READ(SMH_RAM)
965
966   AM_RANGE(0x170000, 0x171fff) AM_READ(SMH_RAM)
967   AM_RANGE(0x178000, 0x179fff) AM_READ(SMH_RAM)
968
969   AM_RANGE(0x182000, 0x183fff) AM_READ(SMH_RAM)
970   AM_RANGE(0x184000, 0x185fff) AM_READ(SMH_RAM)
971   AM_RANGE(0x192000, 0x1927ff) AM_READ(SMH_RAM)
972   AM_RANGE(0x192800, 0x193fff) AM_READ(SMH_RAM)
973   AM_RANGE(0x194000, 0x1947ff) AM_READ(SMH_RAM)
974   AM_RANGE(0x194800, 0x195fff) AM_READ(SMH_RAM)
975   AM_RANGE(0x1a0000, 0x1a001f) AM_READ(SMH_RAM)
976
977   AM_RANGE(0x1c2000, 0x1c3fff) AM_READ(SMH_RAM)
978   AM_RANGE(0x1c4000, 0x1c5fff) AM_READ(SMH_RAM)
979   AM_RANGE(0x1d2000, 0x1d27ff) AM_READ(SMH_RAM)
980   AM_RANGE(0x1d2800, 0x1d3fff) AM_READ(SMH_RAM)
981   AM_RANGE(0x1d4000, 0x1d47ff) AM_READ(SMH_RAM)
982   AM_RANGE(0x1d4800, 0x1d5fff) AM_READ(SMH_RAM)
983   AM_RANGE(0x1e0000, 0x1e001f) AM_READ(SMH_RAM)
984
985   AM_RANGE(0x200000, 0x200fff) AM_READ(tattass_prot_r)
986ADDRESS_MAP_END
987
988static ADDRESS_MAP_START( tattass_writemem, ADDRESS_SPACE_PROGRAM, 32 )
989   AM_RANGE(0x000000, 0x0f7fff) AM_WRITE(SMH_ROM)
990   AM_RANGE(0x0f8000, 0x0fffff) AM_WRITENOP /* Screen area on debug board? Cleared on startup */
991   AM_RANGE(0x100000, 0x11ffff) AM_WRITE(SMH_RAM) AM_BASE(&deco32_ram)
992
993   AM_RANGE(0x120000, 0x120003) AM_WRITENOP /* ACIA (unused) */
994   AM_RANGE(0x130000, 0x130003) AM_WRITENOP /* Coin port (unused?) */
995   AM_RANGE(0x140000, 0x140003) AM_WRITENOP /* Vblank ack */
845   AM_RANGE(0x000000, 0x0f7fff) AM_ROM
846   AM_RANGE(0x0f8000, 0x0fffff) AM_READWRITE(SMH_ROM, SMH_NOP)
847   AM_RANGE(0x100000, 0x11ffff) AM_RAM AM_BASE(&deco32_ram)
848   AM_RANGE(0x120000, 0x120003) AM_NOP            /* ACIA (unused) */
849   AM_RANGE(0x130000, 0x130003) AM_WRITENOP       /* Coin port (unused?) */
850   AM_RANGE(0x140000, 0x140003) AM_WRITENOP       /* Vblank ack */
996851   AM_RANGE(0x150000, 0x150003) AM_WRITE(tattass_control_w) /* Volume port/Eprom/Priority */
997852
998   AM_RANGE(0x162000, 0x162fff) AM_WRITE(SMH_RAM) /* 'Jack' RAM!? */
999   AM_RANGE(0x163000, 0x16309f) AM_WRITE(deco32_ace_ram_w) AM_BASE(&deco32_ace_ram) /* 'Ace' RAM!? */
1000
853   AM_RANGE(0x162000, 0x162fff) AM_RAM            /* 'Jack' RAM!? */
854   AM_RANGE(0x163000, 0x16309f) AM_RAM_WRITE(deco32_ace_ram_w) AM_BASE(&deco32_ace_ram)
1001855   AM_RANGE(0x164000, 0x164003) AM_WRITENOP /* Palette control BG2/3 ($1a constant) */
1002856   AM_RANGE(0x164004, 0x164007) AM_WRITENOP /* Palette control Obj1 ($6 constant) */
1003857   AM_RANGE(0x164008, 0x16400b) AM_WRITENOP /* Palette control Obj2 ($5 constant) */
1004858   AM_RANGE(0x16400c, 0x16400f) AM_WRITENOP
1005   AM_RANGE(0x168000, 0x169fff) AM_WRITE(deco32_buffered_palette_w) AM_BASE(&paletteram32)
859   AM_RANGE(0x168000, 0x169fff) AM_RAM_WRITE(deco32_buffered_palette_w) AM_BASE(&paletteram32)
1006860   AM_RANGE(0x16c000, 0x16c003) AM_WRITENOP
1007861   AM_RANGE(0x16c008, 0x16c00b) AM_WRITE(deco32_palette_dma_w)
1008862
1009   AM_RANGE(0x170000, 0x171fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram32) AM_SIZE(&spriteram_size)
863   AM_RANGE(0x170000, 0x171fff) AM_RAM AM_BASE(&spriteram32) AM_SIZE(&spriteram_size)
1010864   AM_RANGE(0x174000, 0x174003) AM_WRITENOP /* Sprite DMA mode (2) */
1011865   AM_RANGE(0x174010, 0x174013) AM_WRITE(buffer_spriteram32_w)
1012866   AM_RANGE(0x174018, 0x17401b) AM_WRITENOP /* Sprite 'CPU' (unused) */
867   AM_RANGE(0x178000, 0x179fff) AM_RAM AM_BASE(&spriteram32_2) AM_SIZE(&spriteram_2_size)
1013868
1014   AM_RANGE(0x178000, 0x179fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram32_2) AM_SIZE(&spriteram_2_size)
1015   AM_RANGE(0x17c000, 0x17c003) AM_WRITENOP /* Sprite DMA mode (2) */
1016   AM_RANGE(0x17c010, 0x17c013) AM_WRITE(buffer_spriteram32_2_w)
1017   AM_RANGE(0x17c018, 0x17c01b) AM_WRITENOP /* Sprite 'CPU' (unused) */
869   AM_RANGE(0x182000, 0x183fff) AM_RAM_WRITE(deco32_pf1_data_w) AM_BASE(&deco32_pf1_data)
870   AM_RANGE(0x184000, 0x185fff) AM_RAM_WRITE(deco32_pf2_data_w) AM_BASE(&deco32_pf2_data)
871   AM_RANGE(0x192000, 0x193fff) AM_RAM AM_BASE(&deco32_pf1_rowscroll)
872   AM_RANGE(0x194000, 0x195fff) AM_RAM AM_BASE(&deco32_pf2_rowscroll)
873   AM_RANGE(0x1a0000, 0x1a001f) AM_RAM AM_BASE(&deco32_pf12_control)
1018874
1019   AM_RANGE(0x182000, 0x183fff) AM_WRITE(deco32_pf1_data_w) AM_BASE(&deco32_pf1_data)
1020   AM_RANGE(0x184000, 0x185fff) AM_WRITE(deco32_pf2_data_w) AM_BASE(&deco32_pf2_data)
1021   AM_RANGE(0x192000, 0x193fff) AM_WRITE(SMH_RAM) AM_BASE(&deco32_pf1_rowscroll)
1022   AM_RANGE(0x194000, 0x195fff) AM_WRITE(SMH_RAM) AM_BASE(&deco32_pf2_rowscroll)
1023   AM_RANGE(0x1a0000, 0x1a001f) AM_WRITE(SMH_RAM) AM_BASE(&deco32_pf12_control)
875   AM_RANGE(0x1c2000, 0x1c3fff) AM_RAM_WRITE(deco32_pf3_data_w) AM_BASE(&deco32_pf3_data)
876   AM_RANGE(0x1c4000, 0x1c5fff) AM_RAM_WRITE(deco32_pf4_data_w) AM_BASE(&deco32_pf4_data)
877   AM_RANGE(0x1d2000, 0x1d3fff) AM_RAM AM_BASE(&deco32_pf3_rowscroll)
878   AM_RANGE(0x1d4000, 0x1d5fff) AM_RAM AM_BASE(&deco32_pf4_rowscroll)
879   AM_RANGE(0x1e0000, 0x1e001f) AM_RAM AM_BASE(&deco32_pf34_control)
1024880
1025   AM_RANGE(0x1c2000, 0x1c3fff) AM_WRITE(deco32_pf3_data_w) AM_BASE(&deco32_pf3_data)
1026   AM_RANGE(0x1c4000, 0x1c5fff) AM_WRITE(deco32_pf4_data_w) AM_BASE(&deco32_pf4_data)
1027   AM_RANGE(0x1d2000, 0x1d3fff) AM_WRITE(SMH_RAM) AM_BASE(&deco32_pf3_rowscroll)
1028   AM_RANGE(0x1d4000, 0x1d5fff) AM_WRITE(SMH_RAM) AM_BASE(&deco32_pf4_rowscroll)
1029   AM_RANGE(0x1e0000, 0x1e001f) AM_WRITE(SMH_RAM) AM_BASE(&deco32_pf34_control)
1030
1031   AM_RANGE(0x200000, 0x200fff) AM_WRITE(tattass_prot_w) AM_BASE(&deco32_prot_ram)
881   AM_RANGE(0x200000, 0x200fff) AM_READWRITE(tattass_prot_r, tattass_prot_w) AM_BASE(&deco32_prot_ram)
1032882ADDRESS_MAP_END
1033883
1034static ADDRESS_MAP_START( nslasher_readmem, ADDRESS_SPACE_PROGRAM, 32 )
1035   AM_RANGE(0x000000, 0x0fffff) AM_READ(SMH_ROM)
1036   AM_RANGE(0x100000, 0x11ffff) AM_READ(SMH_RAM)
1037   AM_RANGE(0x120000, 0x1200ff) AM_READNOP /* ACIA (unused) */
884static ADDRESS_MAP_START( nslasher_map, ADDRESS_SPACE_PROGRAM, 32 )
885   AM_RANGE(0x000000, 0x0fffff) AM_ROM
886   AM_RANGE(0x100000, 0x11ffff) AM_RAM AM_BASE(&deco32_ram)
887   AM_RANGE(0x120000, 0x1200ff) AM_NOP                     /* ACIA (unused) */
888   AM_RANGE(0x140000, 0x140003) AM_WRITENOP                /* Vblank ack */
889   AM_RANGE(0x150000, 0x150003) AM_WRITE(nslasher_eeprom_w)    /* Volume port/Eprom/Priority */
1038890
1039   AM_RANGE(0x163000, 0x16309f) AM_READ(SMH_RAM)
1040   AM_RANGE(0x168000, 0x169fff) AM_READ(SMH_RAM)
1041
1042   AM_RANGE(0x170000, 0x171fff) AM_READ(SMH_RAM)
1043   AM_RANGE(0x178000, 0x179fff) AM_READ(SMH_RAM)
1044
1045   AM_RANGE(0x182000, 0x183fff) AM_READ(SMH_RAM)
1046   AM_RANGE(0x184000, 0x185fff) AM_READ(SMH_RAM)
1047   AM_RANGE(0x192000, 0x1927ff) AM_READ(SMH_RAM)
1048   AM_RANGE(0x192800, 0x193fff) AM_READ(SMH_RAM)
1049   AM_RANGE(0x194000, 0x1947ff) AM_READ(SMH_RAM)
1050   AM_RANGE(0x194800, 0x195fff) AM_READ(SMH_RAM)
1051   AM_RANGE(0x1a0000, 0x1a001f) AM_READ(SMH_RAM)
1052
1053   AM_RANGE(0x1c2000, 0x1c3fff) AM_READ(SMH_RAM)
1054   AM_RANGE(0x1c4000, 0x1c5fff) AM_READ(SMH_RAM)
1055   AM_RANGE(0x1d2000, 0x1d27ff) AM_READ(SMH_RAM)
1056   AM_RANGE(0x1d2800, 0x1d3fff) AM_READ(SMH_RAM)
1057   AM_RANGE(0x1d4000, 0x1d47ff) AM_READ(SMH_RAM)
1058   AM_RANGE(0x1d4800, 0x1d5fff) AM_READ(SMH_RAM)
1059   AM_RANGE(0x1e0000, 0x1e001f) AM_READ(SMH_RAM)
1060
1061   AM_RANGE(0x200000, 0x200fff) AM_READ(nslasher_prot_r)
1062ADDRESS_MAP_END
1063
1064static ADDRESS_MAP_START( nslasher_writemem, ADDRESS_SPACE_PROGRAM, 32 )
1065   AM_RANGE(0x000000, 0x0fffff) AM_WRITE(SMH_ROM)
1066   AM_RANGE(0x100000, 0x11ffff) AM_WRITE(SMH_RAM) AM_BASE(&deco32_ram)
1067
1068   AM_RANGE(0x120000, 0x120003) AM_WRITENOP /* ACIA (unused) */
1069//  AM_RANGE(0x130000, 0x130003) AM_WRITENOP /* Coin port (unused?) */
1070   AM_RANGE(0x140000, 0x140003) AM_WRITENOP /* Vblank ack */
1071   AM_RANGE(0x150000, 0x150003) AM_WRITE(nslasher_eeprom_w) /* Volume port/Eprom/Priority */
1072
1073   AM_RANGE(0x163000, 0x16309f) AM_WRITE(deco32_ace_ram_w) AM_BASE(&deco32_ace_ram) /* 'Ace' RAM!? */
891   AM_RANGE(0x163000, 0x16309f) AM_RAM_WRITE(deco32_ace_ram_w) AM_BASE(&deco32_ace_ram) /* 'Ace' RAM!? */
1074892   AM_RANGE(0x164000, 0x164003) AM_WRITENOP /* Palette control BG2/3 ($1a constant) */
1075893   AM_RANGE(0x164004, 0x164007) AM_WRITENOP /* Palette control Obj1 ($4 constant) */
1076894   AM_RANGE(0x164008, 0x16400b) AM_WRITENOP /* Palette control Obj2 ($6 constant) */
1077895   AM_RANGE(0x16400c, 0x16400f) AM_WRITENOP
1078   AM_RANGE(0x168000, 0x169fff) AM_WRITE(deco32_buffered_palette_w) AM_BASE(&paletteram32)
896   AM_RANGE(0x168000, 0x169fff) AM_RAM_WRITE(deco32_buffered_palette_w) AM_BASE(&paletteram32)
1079897   AM_RANGE(0x16c000, 0x16c003) AM_WRITENOP
1080898   AM_RANGE(0x16c008, 0x16c00b) AM_WRITE(deco32_palette_dma_w)
1081899
1082   AM_RANGE(0x170000, 0x171fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram32) AM_SIZE(&spriteram_size)
900   AM_RANGE(0x170000, 0x171fff) AM_RAM_WRITE(SMH_RAM) AM_BASE(&spriteram32) AM_SIZE(&spriteram_size)
1083901   AM_RANGE(0x174000, 0x174003) AM_WRITENOP /* Sprite DMA mode (2) */
1084902   AM_RANGE(0x174010, 0x174013) AM_WRITE(buffer_spriteram32_w)
1085903   AM_RANGE(0x174018, 0x17401b) AM_WRITENOP /* Sprite 'CPU' (unused) */
1086
1087   AM_RANGE(0x178000, 0x179fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram32_2) AM_SIZE(&spriteram_2_size)
904   AM_RANGE(0x178000, 0x179fff) AM_RAM_WRITE(SMH_RAM) AM_BASE(&spriteram32_2) AM_SIZE(&spriteram_2_size)
1088905   AM_RANGE(0x17c000, 0x17c003) AM_WRITENOP /* Sprite DMA mode (2) */
1089906   AM_RANGE(0x17c010, 0x17c013) AM_WRITE(buffer_spriteram32_2_w)
1090907   AM_RANGE(0x17c018, 0x17c01b) AM_WRITENOP /* Sprite 'CPU' (unused) */
1091908
1092   AM_RANGE(0x182000, 0x183fff) AM_WRITE(deco32_pf1_data_w) AM_BASE(&deco32_pf1_data)
1093   AM_RANGE(0x184000, 0x185fff) AM_WRITE(deco32_pf2_data_w) AM_BASE(&deco32_pf2_data)
1094   AM_RANGE(0x192000, 0x193fff) AM_WRITE(SMH_RAM) AM_BASE(&deco32_pf1_rowscroll)
1095   AM_RANGE(0x194000, 0x195fff) AM_WRITE(SMH_RAM) AM_BASE(&deco32_pf2_rowscroll)
1096   AM_RANGE(0x1a0000, 0x1a001f) AM_WRITE(SMH_RAM) AM_BASE(&deco32_pf12_control)
909   AM_RANGE(0x182000, 0x183fff) AM_RAM_WRITE(deco32_pf1_data_w) AM_BASE(&deco32_pf1_data)
910   AM_RANGE(0x184000, 0x185fff) AM_RAM_WRITE(deco32_pf2_data_w) AM_BASE(&deco32_pf2_data)
911   AM_RANGE(0x192000, 0x193fff) AM_RAM AM_BASE(&deco32_pf1_rowscroll)
912   AM_RANGE(0x194000, 0x195fff) AM_RAM AM_BASE(&deco32_pf2_rowscroll)
913   AM_RANGE(0x1a0000, 0x1a001f) AM_RAM AM_BASE(&deco32_pf12_control)
1097914
1098   AM_RANGE(0x1c2000, 0x1c3fff) AM_WRITE(deco32_pf3_data_w) AM_BASE(&deco32_pf3_data)
1099   AM_RANGE(0x1c4000, 0x1c5fff) AM_WRITE(deco32_pf4_data_w) AM_BASE(&deco32_pf4_data)
1100   AM_RANGE(0x1d2000, 0x1d3fff) AM_WRITE(SMH_RAM) AM_BASE(&deco32_pf3_rowscroll)
1101   AM_RANGE(0x1d4000, 0x1d5fff) AM_WRITE(SMH_RAM) AM_BASE(&deco32_pf4_rowscroll)
1102   AM_RANGE(0x1e0000, 0x1e001f) AM_WRITE(SMH_RAM) AM_BASE(&deco32_pf34_control)
915   AM_RANGE(0x1c2000, 0x1c3fff) AM_RAM_WRITE(deco32_pf3_data_w) AM_BASE(&deco32_pf3_data)
916   AM_RANGE(0x1c4000, 0x1c5fff) AM_RAM_WRITE(deco32_pf4_data_w) AM_BASE(&deco32_pf4_data)
917   AM_RANGE(0x1d2000, 0x1d3fff) AM_RAM AM_BASE(&deco32_pf3_rowscroll)
918   AM_RANGE(0x1d4000, 0x1d5fff) AM_RAM AM_BASE(&deco32_pf4_rowscroll)
919   AM_RANGE(0x1e0000, 0x1e001f) AM_RAM AM_BASE(&deco32_pf34_control)
1103920
1104   AM_RANGE(0x200000, 0x200fff) AM_WRITE(nslasher_prot_w) AM_BASE(&deco32_prot_ram)
921   AM_RANGE(0x200000, 0x200fff) AM_READWRITE(nslasher_prot_r, nslasher_prot_w) AM_BASE(&deco32_prot_ram)
1105922ADDRESS_MAP_END
1106923
1107924/******************************************************************************/
r4679r4680
1124941
1125942static WRITE8_DEVICE_HANDLER(deco32_bsmt1_w)
1126943{
1127   bsmt2000_data_w(device, offset^ 0xff, ((bsmt_latch<<8)|data), 0xffff);
1128   cpu_set_input_line(device->machine->cpu[1], M6809_IRQ_LINE, HOLD_LINE); /* BSMT is ready */
944   bsmt2000_data_w(device, offset^ 0xff, ((bsmt_latch << 8) | data), 0xffff);
945   cputag_set_input_line(device->machine, "audiocpu", M6809_IRQ_LINE, HOLD_LINE); /* BSMT is ready */
1129946}
1130947
1131948static READ8_HANDLER(deco32_bsmt_status_r)
r4679r4680
1133950   return 0x80;
1134951}
1135952
1136static ADDRESS_MAP_START( sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
1137   AM_RANGE(0x000000, 0x00ffff) AM_READ(SMH_ROM)
1138   AM_RANGE(0x110000, 0x110001) AM_DEVREAD("ym", ym2151_r)
1139   AM_RANGE(0x120000, 0x120001) AM_DEVREAD("oki1", okim6295_r)
1140   AM_RANGE(0x130000, 0x130001) AM_DEVREAD("oki2", okim6295_r)
953static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 )
954   AM_RANGE(0x000000, 0x00ffff) AM_ROM
955   AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
956   AM_RANGE(0x120000, 0x120001) AM_DEVREADWRITE("oki1", okim6295_r, okim6295_w)
957   AM_RANGE(0x130000, 0x130001) AM_DEVREADWRITE("oki2", okim6295_r, okim6295_w)
1141958   AM_RANGE(0x140000, 0x140001) AM_READ(soundlatch_r)
1142   AM_RANGE(0x1f0000, 0x1f1fff) AM_READ(SMH_BANK8)
1143ADDRESS_MAP_END
1144
1145static ADDRESS_MAP_START( sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
1146   AM_RANGE(0x000000, 0x00ffff) AM_WRITE(SMH_ROM)
1147   AM_RANGE(0x110000, 0x110001) AM_DEVWRITE("ym", ym2151_w)
1148   AM_RANGE(0x120000, 0x120001) AM_DEVWRITE("oki1", okim6295_w)
1149   AM_RANGE(0x130000, 0x130001) AM_DEVWRITE("oki2", okim6295_w)
1150   AM_RANGE(0x1f0000, 0x1f1fff) AM_WRITE(SMH_BANK8)
959   AM_RANGE(0x1f0000, 0x1f1fff) AM_RAMBANK(8)
1151960   AM_RANGE(0x1fec00, 0x1fec01) AM_WRITE(h6280_timer_w)
1152961   AM_RANGE(0x1ff400, 0x1ff403) AM_WRITE(h6280_irq_status_w)
1153962ADDRESS_MAP_END
1154963
1155static ADDRESS_MAP_START( sound_readmem_tattass, ADDRESS_SPACE_PROGRAM, 8 )
1156   AM_RANGE(0x0000, 0x1fff) AM_READ(SMH_RAM)
964static ADDRESS_MAP_START( tattass_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
965   AM_RANGE(0x0000, 0x1fff) AM_RAM
966   AM_RANGE(0x2000, 0x2001) AM_WRITE(deco32_bsmt_reset_w)
1157967   AM_RANGE(0x2002, 0x2003) AM_READ(soundlatch_r)
1158968   AM_RANGE(0x2006, 0x2007) AM_READ(deco32_bsmt_status_r)
1159   AM_RANGE(0x2000, 0xffff) AM_READ(SMH_ROM)
1160ADDRESS_MAP_END
1161
1162static ADDRESS_MAP_START( sound_writemem_tattass, ADDRESS_SPACE_PROGRAM, 8 )
1163   AM_RANGE(0x0000, 0x1fff) AM_WRITE(SMH_RAM)
1164   AM_RANGE(0x2000, 0x2001) AM_WRITE(deco32_bsmt_reset_w)
1165969   AM_RANGE(0x6000, 0x6000) AM_WRITE(deco32_bsmt0_w)
1166970   AM_RANGE(0xa000, 0xa0ff) AM_DEVWRITE("bsmt", deco32_bsmt1_w)
1167   AM_RANGE(0x2000, 0xffff) AM_WRITE(SMH_ROM)
971   AM_RANGE(0x2000, 0xffff) AM_ROM
1168972ADDRESS_MAP_END
1169973
1170974static READ8_HANDLER(latch_r)
1171975{
1172976   /* bit 1 of nslasher_sound_irq specifies IRQ command writes */
1173977   nslasher_sound_irq &= ~0x02;
1174   cpu_set_input_line(space->machine->cpu[1], 0, (nslasher_sound_irq != 0) ? ASSERT_LINE : CLEAR_LINE);
978   cputag_set_input_line(space->machine, "audiocpu", 0, (nslasher_sound_irq != 0) ? ASSERT_LINE : CLEAR_LINE);
1175979   return soundlatch_r(space,0);
1176980}
1177981
r4679r4680
17691573
17701574static void sound_irq(const device_config *device, int state)
17711575{
1772   cpu_set_input_line(device->machine->cpu[1],1,state); /* IRQ 2 */
1576   cputag_set_input_line(device->machine, "audiocpu", 1, state); /* IRQ 2 */
17731577}
17741578
17751579static void sound_irq_nslasher(const device_config *device, int state)
r4679r4680
17791583      nslasher_sound_irq |= 0x01;
17801584   else
17811585      nslasher_sound_irq &= ~0x01;
1782   cpu_set_input_line(device->machine->cpu[1], 0, (nslasher_sound_irq != 0) ? ASSERT_LINE : CLEAR_LINE);
1586   cputag_set_input_line(device->machine, "audiocpu", 0, (nslasher_sound_irq != 0) ? ASSERT_LINE : CLEAR_LINE);
17831587}
17841588
17851589static WRITE8_DEVICE_HANDLER( sound_bankswitch_w )
r4679r4680
18651669
18661670   /* basic machine hardware */
18671671   MDRV_CPU_ADD("maincpu", ARM, 28000000/4)
1868   MDRV_CPU_PROGRAM_MAP(captaven_readmem,captaven_writemem)
1672   MDRV_CPU_PROGRAM_MAP(captaven_map,0)
18691673   MDRV_CPU_VBLANK_INT("screen", deco32_vbl_interrupt)
18701674
18711675   MDRV_CPU_ADD("audiocpu", H6280, 32220000/8)
1872   MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem)
1676   MDRV_CPU_PROGRAM_MAP(sound_map,0)
18731677
18741678   MDRV_MACHINE_RESET(deco32)
18751679
r4679r4680
19121716
19131717   /* basic machine hardware */
19141718   MDRV_CPU_ADD("maincpu", ARM, 28000000/4)
1915   MDRV_CPU_PROGRAM_MAP(fghthist_readmem,fghthist_writemem)
1719   MDRV_CPU_PROGRAM_MAP(fghthist_map,0)
19161720   MDRV_CPU_VBLANK_INT("screen", deco32_vbl_interrupt)
19171721
19181722   MDRV_CPU_ADD("audiocpu", H6280, 32220000/8)
1919   MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem)
1723   MDRV_CPU_PROGRAM_MAP(sound_map,0)
19201724
19211725   MDRV_NVRAM_HANDLER(93C46)
19221726
r4679r4680
19621766   MDRV_CPU_VBLANK_INT("screen", deco32_vbl_interrupt)
19631767
19641768   MDRV_CPU_ADD("audiocpu", H6280, 32220000/8)
1965   MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem)
1769   MDRV_CPU_PROGRAM_MAP(sound_map,0)
19661770
19671771   MDRV_NVRAM_HANDLER(93C46)
19681772
r4679r4680
20041808
20051809   /* basic machine hardware */
20061810   MDRV_CPU_ADD("maincpu", ARM, 28000000/4)
2007   MDRV_CPU_PROGRAM_MAP(dragngun_readmem,dragngun_writemem)
1811   MDRV_CPU_PROGRAM_MAP(dragngun_map,0)
20081812   MDRV_CPU_VBLANK_INT("screen", deco32_vbl_interrupt)
20091813
20101814   MDRV_CPU_ADD("audiocpu", H6280, 32220000/8)
2011   MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem)
1815   MDRV_CPU_PROGRAM_MAP(sound_map,0)
20121816
20131817   MDRV_MACHINE_RESET(deco32)
20141818   MDRV_NVRAM_HANDLER(93C46)
r4679r4680
20571861
20581862   /* basic machine hardware */
20591863   MDRV_CPU_ADD("maincpu", ARM, 28000000/4)
2060   MDRV_CPU_PROGRAM_MAP(lockload_readmem,lockload_writemem)
1864   MDRV_CPU_PROGRAM_MAP(lockload_map,0)
20611865   MDRV_CPU_VBLANK_INT_HACK(deco32_vbl_interrupt,2) // From 2
20621866
20631867   MDRV_CPU_ADD("audiocpu", H6280, 32220000/8)
2064   MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem)
1868   MDRV_CPU_PROGRAM_MAP(sound_map,0)
20651869
20661870   MDRV_MACHINE_RESET(deco32)
20671871   MDRV_NVRAM_HANDLER(93C46)
r4679r4680
21101914
21111915   /* basic machine hardware */
21121916   MDRV_CPU_ADD("maincpu", ARM, 28000000/4) /* Unconfirmed */
2113   MDRV_CPU_PROGRAM_MAP(tattass_readmem,tattass_writemem)
1917   MDRV_CPU_PROGRAM_MAP(tattass_map,0)
21141918   MDRV_CPU_VBLANK_INT("screen", deco32_vbl_interrupt)
21151919
21161920   MDRV_CPU_ADD("audiocpu", M6809, 2000000)
2117   MDRV_CPU_PROGRAM_MAP(sound_readmem_tattass,sound_writemem_tattass)
1921   MDRV_CPU_PROGRAM_MAP(tattass_sound_map,0)
21181922   MDRV_CPU_PERIODIC_INT(tattass_snd_interrupt, 489) /* Fixed FIRQ of 489Hz as measured on real (pinball) machine */
21191923
21201924   MDRV_NVRAM_HANDLER(tattass)
r4679r4680
21461950
21471951   /* basic machine hardware */
21481952   MDRV_CPU_ADD("maincpu", ARM, 28322000/4)
2149   MDRV_CPU_PROGRAM_MAP(nslasher_readmem,nslasher_writemem)
1953   MDRV_CPU_PROGRAM_MAP(nslasher_map,0)
21501954   MDRV_CPU_VBLANK_INT("screen", deco32_vbl_interrupt)
21511955
21521956   MDRV_CPU_ADD("audiocpu", Z80, 32220000/9)
r4679r4680
32243028static DRIVER_INIT( tattass )
32253029{
32263030   UINT8 *RAM = memory_region(machine, "gfx1");
3227   UINT8 *tmp = malloc_or_die(0x80000);
3031   UINT8 *tmp = alloc_array_or_die(UINT8, 0x80000);
32283032
32293033   /* Reorder bitplanes to make decoding easier */
32303034   memcpy(tmp,RAM+0x80000,0x80000);
r4679r4680
32453049static DRIVER_INIT( nslasher )
32463050{
32473051   UINT8 *RAM = memory_region(machine, "gfx1");
3248   UINT8 *tmp = malloc_or_die(0x80000);
3052   UINT8 *tmp = alloc_array_or_die(UINT8, 0x80000);
32493053
32503054   /* Reorder bitplanes to make decoding easier */
32513055   memcpy(tmp,RAM+0x80000,0x80000);
src/mame/drivers/midzeus.c
r4679r4680
9494{
9595   memcpy(ram_base, memory_region(machine, "user1"), 0x40000*4);
9696   *ram_base <<= 1;
97   device_reset(machine->cpu[0]);
97   device_reset(cputag_get_cpu(machine, "maincpu"));
9898
9999   cmos_protected = TRUE;
100100}
r4679r4680
109109
110110static TIMER_CALLBACK( display_irq_off )
111111{
112   cpu_set_input_line(machine->cpu[0], 0, CLEAR_LINE);
112   cputag_set_input_line(machine, "maincpu", 0, CLEAR_LINE);
113113}
114114
115115static INTERRUPT_GEN( display_irq )
r4679r4680
441441static CUSTOM_INPUT( custom_49way_r )
442442{
443443   static const UINT8 translate49[7] = { 0x8, 0xc, 0xe, 0xf, 0x3, 0x1, 0x0 };
444   const char *namex = param;
444   const char *namex = (const char *)param;
445445   const char *namey = namex + strlen(namex) + 1;
446446   return (translate49[input_port_read(field->port->machine, namey) >> 4] << 4) | translate49[input_port_read(field->port->machine, namex) >> 4];
447447}
r4679r4680
456456
457457static CUSTOM_INPUT( keypad_r )
458458{
459   UINT32 bits = input_port_read(field->port->machine, param);
459   UINT32 bits = input_port_read(field->port->machine, (const char *)param);
460460   UINT8 select = keypad_select;
461461   while ((select & 1) != 0)
462462   {
r4679r4680
500500{
501501   /* low 2 bits of gun_control seem to enable IRQs */
502502   if (gun_irq_state & gun_control & 0x03)
503      cpu_set_input_line(machine->cpu[0], 3, ASSERT_LINE);
503      cputag_set_input_line(machine, "maincpu", 3, ASSERT_LINE);
504504   else
505      cpu_set_input_line(machine->cpu[0], 3, CLEAR_LINE);
505      cputag_set_input_line(machine, "maincpu", 3, CLEAR_LINE);
506506}
507507
508508
r4679r4680
13301330{
13311331   dcs2_init(machine, 0, 0);
13321332   midway_ioasic_init(machine, MIDWAY_IOASIC_STANDARD, 468/* or 488 */, 94, NULL);
1333   memory_install_readwrite32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x9c0000, 0x9c0000, 0, 0, invasn_gun_r, invasn_gun_w);
1333   memory_install_readwrite32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x9c0000, 0x9c0000, 0, 0, invasn_gun_r, invasn_gun_w);
13341334}
13351335
13361336
r4679r4680
13401340   midway_ioasic_init(machine, MIDWAY_IOASIC_STANDARD, 472/* or 476,477,478,110 */, 99, NULL);
13411341   memory_configure_bank(machine, 1, 0, 3, memory_region(machine, "user2"), 0x400000*4);
13421342
1343   memory_install_readwrite32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x9b0004, 0x9b0007, 0, 0, crusnexo_leds_r, crusnexo_leds_w);
1344   memory_install_write32_handler    (cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x8d0009, 0x8d000a, 0, 0, keypad_select_w);
1343   memory_install_readwrite32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x9b0004, 0x9b0007, 0, 0, crusnexo_leds_r, crusnexo_leds_w);
1344   memory_install_write32_handler    (cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x8d0009, 0x8d000a, 0, 0, keypad_select_w);
13451345}
13461346
13471347
src/mame/drivers/grchamp.c
r4679r4680
9292
9393static INTERRUPT_GEN( grchamp_cpu0_interrupt )
9494{
95   grchamp_state *state = device->machine->driver_data;
95   grchamp_state *state = (grchamp_state *)device->machine->driver_data;
9696
9797   if (state->cpu0_out[0] & 0x01)
9898      cpu_set_input_line(device, 0, ASSERT_LINE);
r4679r4680
101101
102102static INTERRUPT_GEN( grchamp_cpu1_interrupt )
103103{
104   grchamp_state *state = device->machine->driver_data;
104   grchamp_state *state = (grchamp_state *)device->machine->driver_data;
105105
106106   if (state->cpu1_out[4] & 0x01)
107107      cpu_set_input_line(device, 0, ASSERT_LINE);
r4679r4680
117117
118118static WRITE8_HANDLER( cpu0_outputs_w )
119119{
120   grchamp_state *state = space->machine->driver_data;
120   grchamp_state *state = (grchamp_state *)space->machine->driver_data;
121121   UINT8 diff = data ^ state->cpu0_out[offset];
122122   state->cpu0_out[offset] = data;
123123
r4679r4680
132132         /* bit 6: FOG OUT */
133133         /* bit 7: RADARON */
134134         if ((diff & 0x01) && !(data & 0x01))
135            cpu_set_input_line(space->machine->cpu[0], 0, CLEAR_LINE);
135            cputag_set_input_line(space->machine, "maincpu", 0, CLEAR_LINE);
136136         if ((diff & 0x02) && !(data & 0x02))
137137            state->collide = state->collmode = 0;
138138         break;
r4679r4680
191191      case 0x0e:   /* OUT14 */
192192         /* O-21 connector */
193193         soundlatch_w(space, 0, data);
194         cpu_set_input_line(space->machine->cpu[2], INPUT_LINE_NMI, PULSE_LINE);
194         cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
195195         break;
196196   }
197197}
r4679r4680
201201{
202202   static const UINT8 ls247_map[16] =
203203      { 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x58,0x4c,0x62,0x69,0x78,0x00 };
204   grchamp_state *state = space->machine->driver_data;
204   grchamp_state *state = (grchamp_state *)space->machine->driver_data;
205205
206206   switch (offset)
207207   {
r4679r4680
245245static WRITE8_HANDLER( cpu1_outputs_w )
246246{
247247   const device_config *discrete = devtag_get_device(space->machine, "discrete");
248   grchamp_state *state = space->machine->driver_data;
248   grchamp_state *state = (grchamp_state *)space->machine->driver_data;
249249   UINT8 diff = data ^ state->cpu1_out[offset];
250250   state->cpu1_out[offset] = data;
251251
r4679r4680
272272      case 0x04:   /* OUT4 */
273273         /* bit 0:   interrupt enable for CPU 1 */
274274         if ((diff & 0x01) && !(data & 0x01))
275            cpu_set_input_line(space->machine->cpu[1], 0, CLEAR_LINE);
275            cputag_set_input_line(space->machine, "sub", 0, CLEAR_LINE);
276276         break;
277277
278278      case 0x05:   /* OUT5 - unused */
r4679r4680
354354
355355static READ8_HANDLER( pc3259_0_r )
356356{
357   grchamp_state *state = space->machine->driver_data;
357   grchamp_state *state = (grchamp_state *)space->machine->driver_data;
358358   return get_pc3259_bits(space->machine, state, 0);
359359}
360360
361361
362362static READ8_HANDLER( pc3259_1_r )
363363{
364   grchamp_state *state = space->machine->driver_data;
364   grchamp_state *state = (grchamp_state *)space->machine->driver_data;
365365   return get_pc3259_bits(space->machine, state, 1);
366366}
367367
368368
369369static READ8_HANDLER( pc3259_2_r )
370370{
371   grchamp_state *state = space->machine->driver_data;
371   grchamp_state *state = (grchamp_state *)space->machine->driver_data;
372372   return get_pc3259_bits(space->machine, state, 2);
373373}
374374
375375
376376static READ8_HANDLER( pc3259_3_r )
377377{
378   grchamp_state *state = space->machine->driver_data;
378   grchamp_state *state = (grchamp_state *)space->machine->driver_data;
379379   return get_pc3259_bits(space->machine, state, 3);
380380}
381381
r4679r4680
389389
390390static READ8_HANDLER( sub_to_main_comm_r )
391391{
392   grchamp_state *state = space->machine->driver_data;
392   grchamp_state *state = (grchamp_state *)space->machine->driver_data;
393393   return state->comm_latch;
394394}
395395
396396
397397static TIMER_CALLBACK( main_to_sub_comm_sync_w )
398398{
399   grchamp_state *state = machine->driver_data;
399   grchamp_state *state = (grchamp_state *)machine->driver_data;
400400   int offset = param >> 8;
401401   state->comm_latch2[offset & 3] = param;
402402}
r4679r4680
410410
411411static READ8_HANDLER( main_to_sub_comm_r )
412412{
413   grchamp_state *state = space->machine->driver_data;
413   grchamp_state *state = (grchamp_state *)space->machine->driver_data;
414414   return state->comm_latch2[offset];
415415}
416416
src/mame/drivers/argus.c
r4679r4680
110110/* Handler called by the YM2203 emulator when the internal timers cause an IRQ */
111111static void irqhandler(const device_config *device, int irq)
112112{
113   cpu_set_input_line(device->machine->cpu[1], 0, irq ? ASSERT_LINE : CLEAR_LINE);
113   cputag_set_input_line(device->machine, "audiocpu", 0, irq ? ASSERT_LINE : CLEAR_LINE);
114114}
115115
116116static const ym2203_interface ym2203_config =
src/mame/drivers/lkage.c
r4679r4680
8989
9090static TIMER_CALLBACK( nmi_callback )
9191{
92   if (sound_nmi_enable) cpu_set_input_line(machine->cpu[1],INPUT_LINE_NMI,PULSE_LINE);
92   if (sound_nmi_enable) cputag_set_input_line(machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
9393   else pending_nmi = 1;
9494}
9595
r4679r4680
109109   sound_nmi_enable = 1;
110110   if (pending_nmi)
111111   { /* probably wrong but commands may go lost otherwise */
112      cpu_set_input_line(space->machine->cpu[1],INPUT_LINE_NMI,PULSE_LINE);
112      cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
113113      pending_nmi = 0;
114114   }
115115}
116116
117static ADDRESS_MAP_START( lkage, ADDRESS_SPACE_PROGRAM, 8 )
118   AM_RANGE(0x0000, 0xdfff) AM_READ(SMH_ROM) AM_WRITE(SMH_ROM)
119   AM_RANGE(0xe000, 0xe7ff) AM_READ(SMH_RAM) AM_WRITE(SMH_RAM) /* work ram */
117static ADDRESS_MAP_START( lkage_map, ADDRESS_SPACE_PROGRAM, 8 )
118   AM_RANGE(0x0000, 0xdfff) AM_ROM
119   AM_RANGE(0xe000, 0xe7ff) AM_RAM /* work ram */
120120   AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(paletteram_xxxxRRRRGGGGBBBB_le_w) AM_BASE(&paletteram)
121   AM_RANGE(0xf000, 0xf003) AM_READ(SMH_RAM) AM_WRITE(SMH_RAM) AM_BASE(&lkage_vreg) /* video registers */
121   AM_RANGE(0xf000, 0xf003) AM_RAM AM_BASE(&lkage_vreg) /* video registers */
122122   AM_RANGE(0xf060, 0xf060) AM_WRITE(lkage_sound_command_w)
123123   AM_RANGE(0xf061, 0xf061) AM_WRITENOP
124   AM_RANGE(0xf062, 0xf062) AM_READ(lkage_mcu_r) AM_WRITE(lkage_mcu_w)
124   AM_RANGE(0xf062, 0xf062) AM_READWRITE(lkage_mcu_r,lkage_mcu_w)
125125   AM_RANGE(0xf063, 0xf063) AM_WRITENOP /* pulsed; nmi on sound cpu? */
126126   AM_RANGE(0xf080, 0xf080) AM_READ_PORT("DSW1")
127127   AM_RANGE(0xf081, 0xf081) AM_READ_PORT("DSW2")
r4679r4680
130130   AM_RANGE(0xf084, 0xf084) AM_READ_PORT("P1")
131131   AM_RANGE(0xf086, 0xf086) AM_READ_PORT("P2")
132132   AM_RANGE(0xf087, 0xf087) AM_READ(lkage_mcu_status_r)
133   AM_RANGE(0xf0a0, 0xf0a3) AM_READ(SMH_RAM) AM_WRITE(SMH_RAM) /* unknown */
134   AM_RANGE(0xf0c0, 0xf0c5) AM_READ(SMH_RAM) AM_WRITE(SMH_RAM) AM_BASE(&lkage_scroll)
133   AM_RANGE(0xf0a0, 0xf0a3) AM_RAM /* unknown */
134   AM_RANGE(0xf0c0, 0xf0c5) AM_RAM AM_BASE(&lkage_scroll)
135135   AM_RANGE(0xf0e1, 0xf0e1) AM_WRITENOP /* pulsed */
136   AM_RANGE(0xf100, 0xf15f) AM_READ(SMH_RAM) AM_WRITE(SMH_RAM) AM_BASE(&spriteram)
137   AM_RANGE(0xf400, 0xffff) AM_READ(SMH_RAM) AM_WRITE(lkage_videoram_w) AM_BASE(&videoram) /* videoram */
136   AM_RANGE(0xf100, 0xf15f) AM_RAM AM_BASE(&spriteram)
137   AM_RANGE(0xf400, 0xffff) AM_RAM_WRITE(lkage_videoram_w) AM_BASE(&videoram) /* videoram */
138138ADDRESS_MAP_END
139139
140140static READ8_HANDLER( port_fetch_r )
r4679r4680
142142   return memory_region(space->machine, "user1")[offset];
143143}
144144
145static ADDRESS_MAP_START( readport, ADDRESS_SPACE_IO, 8 )
145static ADDRESS_MAP_START( lkage_io_map, ADDRESS_SPACE_IO, 8 )
146146   AM_RANGE(0x4000, 0x7fff) AM_READ(port_fetch_r)
147147ADDRESS_MAP_END
148148
149static ADDRESS_MAP_START( m68705_readmem, ADDRESS_SPACE_PROGRAM, 8 )
149static ADDRESS_MAP_START( lkage_m68705_map, ADDRESS_SPACE_PROGRAM, 8 )
150150   ADDRESS_MAP_GLOBAL_MASK(0x7ff)
151   AM_RANGE(0x0000, 0x0000) AM_READ(lkage_68705_portA_r)
152   AM_RANGE(0x0001, 0x0001) AM_READ(lkage_68705_portB_r)
153   AM_RANGE(0x0002, 0x0002) AM_READ(lkage_68705_portC_r)
154   AM_RANGE(0x0010, 0x007f) AM_READ(SMH_RAM)
155   AM_RANGE(0x0080, 0x07ff) AM_READ(SMH_ROM)
156ADDRESS_MAP_END
157
158static ADDRESS_MAP_START( m68705_writemem, ADDRESS_SPACE_PROGRAM, 8 )
159   ADDRESS_MAP_GLOBAL_MASK(0x7ff)
160   AM_RANGE(0x0000, 0x0000) AM_WRITE(lkage_68705_portA_w)
161   AM_RANGE(0x0001, 0x0001) AM_WRITE(lkage_68705_portB_w)
162   AM_RANGE(0x0002, 0x0002) AM_WRITE(lkage_68705_portC_w)
151   AM_RANGE(0x0000, 0x0000) AM_READWRITE(lkage_68705_portA_r,lkage_68705_portA_w)
152   AM_RANGE(0x0001, 0x0001) AM_READWRITE(lkage_68705_portB_r,lkage_68705_portB_w)
153   AM_RANGE(0x0002, 0x0002) AM_READWRITE(lkage_68705_portC_r,lkage_68705_portC_w)
163154   AM_RANGE(0x0004, 0x0004) AM_WRITE(lkage_68705_ddrA_w)
164155   AM_RANGE(0x0005, 0x0005) AM_WRITE(lkage_68705_ddrB_w)
165156   AM_RANGE(0x0006, 0x0006) AM_WRITE(lkage_68705_ddrC_w)
166   AM_RANGE(0x0010, 0x007f) AM_WRITE(SMH_RAM)
167   AM_RANGE(0x0080, 0x07ff) AM_WRITE(SMH_ROM)
157   AM_RANGE(0x0010, 0x007f) AM_RAM
158   AM_RANGE(0x0080, 0x07ff) AM_ROM
168159ADDRESS_MAP_END
169160
170161/***************************************************************************/
171162
172163/* sound section is almost identical to Bubble Bobble, YM2203 instead of YM3526 */
173164
174static ADDRESS_MAP_START( readmem_sound, ADDRESS_SPACE_PROGRAM, 8 )
175   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
176   AM_RANGE(0x8000, 0x87ff) AM_READ(SMH_RAM)
177   AM_RANGE(0x9000, 0x9001) AM_DEVREAD("ym1", ym2203_r)
178   AM_RANGE(0xa000, 0xa001) AM_DEVREAD("ym2", ym2203_r)
179   AM_RANGE(0xb000, 0xb000) AM_READ(soundlatch_r)
180   AM_RANGE(0xb001, 0xb001) AM_READNOP   /* ??? */
181   AM_RANGE(0xe000, 0xefff) AM_READ(SMH_ROM)   /* space for diagnostic ROM? */
182ADDRESS_MAP_END
183
184static ADDRESS_MAP_START( writemem_sound, ADDRESS_SPACE_PROGRAM, 8 )
185   AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM)
186   AM_RANGE(0x8000, 0x87ff) AM_WRITE(SMH_RAM)
187   AM_RANGE(0x9000, 0x9001) AM_DEVWRITE("ym1", ym2203_w)
188   AM_RANGE(0xa000, 0xa001) AM_DEVWRITE("ym2", ym2203_w)
189   AM_RANGE(0xb000, 0xb000) AM_WRITENOP   /* ??? */
190   AM_RANGE(0xb001, 0xb001) AM_WRITE(lkage_sh_nmi_enable_w)
165static ADDRESS_MAP_START( lkage_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
166   AM_RANGE(0x0000, 0x7fff) AM_ROM
167   AM_RANGE(0x8000, 0x87ff) AM_RAM
168   AM_RANGE(0x9000, 0x9001) AM_DEVREADWRITE("ym1", ym2203_r,ym2203_w)
169   AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE("ym2", ym2203_r,ym2203_w)
170   AM_RANGE(0xb000, 0xb000) AM_READ(soundlatch_r) AM_WRITENOP   /* ??? */
171   AM_RANGE(0xb001, 0xb001) AM_READNOP   /* ??? */ AM_WRITE(lkage_sh_nmi_enable_w)
191172   AM_RANGE(0xb002, 0xb002) AM_WRITE(lkage_sh_nmi_disable_w)
192   AM_RANGE(0xe000, 0xefff) AM_WRITE(SMH_ROM)   /* space for diagnostic ROM? */
173   AM_RANGE(0xe000, 0xefff) AM_ROM   /* space for diagnostic ROM? */
193174ADDRESS_MAP_END
194175
195176/***************************************************************************/
r4679r4680
356337
357338static void irqhandler(const device_config *device, int irq)
358339{
359   cpu_set_input_line(device->machine->cpu[1],0,irq ? ASSERT_LINE : CLEAR_LINE);
340   cputag_set_input_line(device->machine, "audiocpu", 0, irq ? ASSERT_LINE : CLEAR_LINE);
360341}
361342
362343static const ym2203_interface ym2203_config =
r4679r4680
372353static MACHINE_DRIVER_START( lkage )
373354   /* basic machine hardware */
374355   MDRV_CPU_ADD("maincpu", Z80,6000000)
375   MDRV_CPU_PROGRAM_MAP(lkage,0)
376   MDRV_CPU_IO_MAP(readport,0)
356   MDRV_CPU_PROGRAM_MAP(lkage_map,0)
357   MDRV_CPU_IO_MAP(lkage_io_map,0)
377358   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
378359
379360   MDRV_CPU_ADD("audiocpu", Z80, 6000000)
380   MDRV_CPU_PROGRAM_MAP(readmem_sound,writemem_sound)
361   MDRV_CPU_PROGRAM_MAP(lkage_sound_map,0)
381362                        /* IRQs are triggered by the YM2203 */
363
382364   MDRV_CPU_ADD("mcu", M68705,4000000)   /* ??? */
383   MDRV_CPU_PROGRAM_MAP(m68705_readmem,m68705_writemem)
365   MDRV_CPU_PROGRAM_MAP(lkage_m68705_map,0)
384366
385367   /* video hardware */
386368   MDRV_SCREEN_ADD("screen", RASTER)
r4679r4680
417399static MACHINE_DRIVER_START( lkageb )
418400   /* basic machine hardware */
419401   MDRV_CPU_ADD("maincpu", Z80,6000000)
420   MDRV_CPU_PROGRAM_MAP(lkage,0)
421   MDRV_CPU_IO_MAP(readport,0)
402   MDRV_CPU_PROGRAM_MAP(lkage_map,0)
403   MDRV_CPU_IO_MAP(lkage_io_map,0)
422404   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
423405
424406   MDRV_CPU_ADD("audiocpu", Z80, 6000000)
425   MDRV_CPU_PROGRAM_MAP(readmem_sound,writemem_sound)
407   MDRV_CPU_PROGRAM_MAP(lkage_sound_map,0)
426408                        /* IRQs are triggered by the YM2203 */
427409
428410   /* video hardware */
r4679r4680
517499   ROM_LOAD( "pal16l8a-a54-14.35", 0x0600, 0x0104, CRC(a89c644e) SHA1(b41a077d1d070d9563f924c776930c33a4ff27d0) )
518500ROM_END
519501
502ROM_START( lkageoo )
503   ROM_REGION( 0x14000, "maincpu", 0 ) /* Z80 code (main CPU) */
504   ROM_LOAD( "a54-01.37", 0x0000, 0x8000, CRC(34eab2c5) SHA1(25bf2dc80d21aa68c3af5debf10b24c75d83a738) )
505   ROM_LOAD( "a54-02.38", 0x8000, 0x8000, CRC(ea471d8a) SHA1(1ffc7f78e3e983e16a23e97019f7030f9846569b) )
506
507   ROM_REGION( 0x10000, "audiocpu", 0 ) /* Z80 code (sound CPU) */
508   ROM_LOAD( "a54-04.54",   0x0000, 0x8000, CRC(541faf9a) SHA1(b142ff3bd198f700697ec06ea92db3109ab5818e) )
509
510   ROM_REGION( 0x10000, "mcu", 0 ) /* 68705 MCU code */
511   ROM_LOAD( "a54-09.53",   0x0000, 0x0800, CRC(0e8b8846) SHA1(a4a105462b0127229bb7edfadd2e581c7e40f1cc) )
512
513   ROM_REGION( 0x4000, "user1", 0 ) /* data */
514   ROM_LOAD( "a54-03.51",   0x0000, 0x4000, CRC(493e76d8) SHA1(13c6160edd94ba2801fd89bb33bcae3a1e3454ff) )
515
516   ROM_REGION( 0x10000, "gfx1", ROMREGION_DISPOSE )
517   ROM_LOAD( "a54-05.84", 0x0000, 0x4000, CRC(76753e52) SHA1(13f61969d59b055a5ab40237148e091d7cabe190) )
518   ROM_LOAD( "a54-06.85", 0x4000, 0x4000, CRC(f33c015c) SHA1(756326daab255d3a36d97e51ee141b9f7157f12e) )
519   ROM_LOAD( "a54-07.86", 0x8000, 0x4000, CRC(0e02c2e8) SHA1(1d8a817ba66cf26a4fe51ae00874c0fe6e7cebe3) )
520   ROM_LOAD( "a54-08.87", 0xc000, 0x4000, CRC(4ef5f073) SHA1(dfd234542b28cff74692a1c381772da01e8bb4a7) )
521
522   ROM_REGION( 0x0200, "proms", 0 )
523   ROM_LOAD( "a54-10.2",    0x0000, 0x0200, CRC(17dfbd14) SHA1(f8f0b6dfedd4ba108dad43ccc7697ef4ab9cbf86) )   /* unknown */
524
525   ROM_REGION( 0x0800, "plds", ROMREGION_DISPOSE )
526   ROM_LOAD( "pal16l8-a54-11.34",  0x0000, 0x0104, CRC(56232113) SHA1(4cdc6732aa3e7fbe8df51966a1295253711ecc8f) )
527   ROM_LOAD( "pal16l8-a54-12.76",  0x0200, 0x0104, CRC(e57c3c89) SHA1(a23f91da254055bb990e8bb730564c40b5725f78) )
528   ROM_LOAD( "pal16l8a-a54-13.27", 0x0400, 0x0104, CRC(c9b1938e) SHA1(2fd1adc4bde8f07cf4b6314d56b48bb3d7144cc3) )
529   ROM_LOAD( "pal16l8a-a54-14.35", 0x0600, 0x0104, CRC(a89c644e) SHA1(b41a077d1d070d9563f924c776930c33a4ff27d0) )
530ROM_END
531
520532ROM_START( lkageb )
521533   ROM_REGION( 0x10000, "maincpu", 0 ) /* Z80 code (main CPU) */
522534   ROM_LOAD( "ic37_1",      0x0000, 0x8000, CRC(05694f7b) SHA1(08a3796d6cf04d64db52ed8208a51084c420e10a) )
r4679r4680
632644
633645static DRIVER_INIT( lkageb )
634646{
635   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xf062, 0xf062, 0, 0, fake_mcu_r);
636   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xf087, 0xf087, 0, 0, fake_status_r);
637   memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xf062, 0xf062, 0, 0, fake_mcu_w );
647   memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xf062, 0xf062, 0, 0, fake_mcu_r);
648   memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xf087, 0xf087, 0, 0, fake_status_r);
649   memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xf062, 0xf062, 0, 0, fake_mcu_w );
638650}
639651
640652GAME( 1984, lkage,    0,        lkage,    lkage,    0,        ROT0, "Taito Corporation", "The Legend of Kage", GAME_NO_COCKTAIL )
641653GAME( 1984, lkageo,   lkage,    lkage,    lkage,    0,        ROT0, "Taito Corporation", "The Legend of Kage (older)", GAME_NO_COCKTAIL )
654GAME( 1984, lkageoo,  lkage,    lkage,    lkage,    0,        ROT0, "Taito Corporation", "The Legend of Kage (oldest)", GAME_NO_COCKTAIL )
642655GAME( 1984, lkageb,   lkage,    lkageb,   lkageb,   lkageb,   ROT0, "bootleg", "The Legend of Kage (bootleg set 1)", GAME_NO_COCKTAIL )
643656GAME( 1984, lkageb2,  lkage,    lkageb,   lkageb,   lkageb,   ROT0, "bootleg", "The Legend of Kage (bootleg set 2)", GAME_NO_COCKTAIL )
644657GAME( 1984, lkageb3,  lkage,    lkageb,   lkageb,   lkageb,   ROT0, "bootleg", "The Legend of Kage (bootleg set 3)", GAME_NO_COCKTAIL )
src/mame/drivers/superdq.c
r4679r4680
133133   static const UINT8 black_color_entries[] = {7,15,16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31};
134134
135135   if ( data & 0x40 ) /* bit 6 = irqack */
136      cpu_set_input_line(space->machine->cpu[0], 0, CLEAR_LINE);
136      cputag_set_input_line(space->machine, "maincpu", 0, CLEAR_LINE);
137137
138138   coin_counter_w( 0, data & 0x08 );
139139   coin_counter_w( 1, data & 0x04 );
src/mame/drivers/gaiden.c
r4679r4680
162162
163163static WRITE16_HANDLER( gaiden_sound_command_w )
164164{
165   if (ACCESSING_BITS_0_7) soundlatch_w(space,0,data & 0xff);   /* Ninja Gaiden */
166   if (ACCESSING_BITS_8_15) soundlatch_w(space,0,data >> 8);   /* Tecmo Knight */
167   cpu_set_input_line(space->machine->cpu[1],INPUT_LINE_NMI,PULSE_LINE);
165   if (ACCESSING_BITS_0_7) soundlatch_w(space, 0, data & 0xff);   /* Ninja Gaiden */
166   if (ACCESSING_BITS_8_15) soundlatch_w(space, 0, data >> 8);   /* Tecmo Knight */
167   cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
168168}
169169
170170static WRITE16_HANDLER( drgnbowl_sound_command_w )
171171{
172172   if (ACCESSING_BITS_8_15)
173173   {
174      soundlatch_w(space,0,data >> 8);
175      cpu_set_input_line(space->machine->cpu[1],0,HOLD_LINE);
174      soundlatch_w(space, 0, data >> 8);
175      cputag_set_input_line(space->machine, "audiocpu", 0, HOLD_LINE);
176176   }
177177}
178178
r4679r4680
376376   return prot;
377377}
378378
379static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 16 )
380   AM_RANGE(0x000000, 0x03ffff) AM_READ(SMH_ROM)
381   AM_RANGE(0x060000, 0x063fff) AM_READ(SMH_RAM)
382   AM_RANGE(0x070000, 0x070fff) AM_READ(SMH_RAM)
383   AM_RANGE(0x072000, 0x073fff) AM_READ(gaiden_videoram2_r)
384   AM_RANGE(0x074000, 0x075fff) AM_READ(gaiden_videoram3_r)
385   AM_RANGE(0x076000, 0x077fff) AM_READ(SMH_RAM)
386   AM_RANGE(0x078000, 0x0787ff) AM_READ(SMH_RAM)
379static ADDRESS_MAP_START( gaiden_map, ADDRESS_SPACE_PROGRAM, 16 )
380   AM_RANGE(0x000000, 0x03ffff) AM_ROM
381   AM_RANGE(0x060000, 0x063fff) AM_RAM
382   AM_RANGE(0x070000, 0x070fff) AM_RAM_WRITE(gaiden_videoram_w) AM_BASE(&gaiden_videoram)
383   AM_RANGE(0x072000, 0x073fff) AM_READWRITE(gaiden_videoram2_r, gaiden_videoram2_w) AM_BASE(&gaiden_videoram2)
384   AM_RANGE(0x074000, 0x075fff) AM_READWRITE(gaiden_videoram3_r, gaiden_videoram3_w) AM_BASE(&gaiden_videoram3)
385   AM_RANGE(0x076000, 0x077fff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)
386   AM_RANGE(0x078000, 0x079fff) AM_RAM_WRITE(paletteram16_xxxxBBBBGGGGRRRR_word_w) AM_BASE(&paletteram16)
387387   AM_RANGE(0x078800, 0x079fff) AM_READNOP   /* extra portion of palette RAM, not really used */
388388   AM_RANGE(0x07a000, 0x07a001) AM_READ_PORT("SYSTEM")
389389   AM_RANGE(0x07a002, 0x07a003) AM_READ_PORT("P1_P2")
390390   AM_RANGE(0x07a004, 0x07a005) AM_READ_PORT("DSW")
391ADDRESS_MAP_END
392
393static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 16 )
394   AM_RANGE(0x000000, 0x03ffff) AM_WRITE(SMH_ROM)
395   AM_RANGE(0x060000, 0x063fff) AM_WRITE(SMH_RAM)
396   AM_RANGE(0x070000, 0x070fff) AM_WRITE(gaiden_videoram_w) AM_BASE(&gaiden_videoram)
397   AM_RANGE(0x072000, 0x073fff) AM_WRITE(gaiden_videoram2_w) AM_BASE(&gaiden_videoram2)
398   AM_RANGE(0x074000, 0x075fff) AM_WRITE(gaiden_videoram3_w) AM_BASE(&gaiden_videoram3)
399   AM_RANGE(0x076000, 0x077fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)
400   AM_RANGE(0x078000, 0x079fff) AM_WRITE(paletteram16_xxxxBBBBGGGGRRRR_word_w) AM_BASE(&paletteram16)
401391   AM_RANGE(0x07a104, 0x07a105) AM_WRITE(gaiden_txscrolly_w)
402392   AM_RANGE(0x07a10c, 0x07a10d) AM_WRITE(gaiden_txscrollx_w)
403393   AM_RANGE(0x07a204, 0x07a205) AM_WRITE(gaiden_fgscrolly_w)
r4679r4680
429419   AM_RANGE(0x07f006, 0x07f007) AM_WRITE(gaiden_fgscrollx_w)
430420ADDRESS_MAP_END
431421
432static ADDRESS_MAP_START( sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
433   AM_RANGE(0x0000, 0xdfff) AM_READ(SMH_ROM)
434   AM_RANGE(0xe000, 0xefff) AM_READ(SMH_ROM)    /* raiga only */
435   AM_RANGE(0xf000, 0xf7ff) AM_READ(SMH_RAM)
436   AM_RANGE(0xf800, 0xf800) AM_DEVREAD("oki", okim6295_r)
437   AM_RANGE(0xfc00, 0xfc00) AM_READNOP   /* ?? */
438   AM_RANGE(0xfc20, 0xfc20) AM_READ(soundlatch_r)
439ADDRESS_MAP_END
440
441static ADDRESS_MAP_START( sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
442   AM_RANGE(0x0000, 0xdfff) AM_WRITE(SMH_ROM)
443   AM_RANGE(0xe000, 0xefff) AM_WRITE(SMH_ROM)    /* raiga only */
444   AM_RANGE(0xf000, 0xf7ff) AM_WRITE(SMH_RAM)
445   AM_RANGE(0xf800, 0xf800) AM_DEVWRITE("oki", okim6295_w)
422static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 )
423   AM_RANGE(0x0000, 0xdfff) AM_ROM
424   AM_RANGE(0xe000, 0xefff) AM_RAM   /* raiga only */
425   AM_RANGE(0xf000, 0xf7ff) AM_RAM
426   AM_RANGE(0xf800, 0xf800) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w)
446427   AM_RANGE(0xf810, 0xf811) AM_DEVWRITE("ym1", ym2203_w)
447428   AM_RANGE(0xf820, 0xf821) AM_DEVWRITE("ym2", ym2203_w)
448   AM_RANGE(0xfc00, 0xfc00) AM_WRITENOP   /* ?? */
429   AM_RANGE(0xfc00, 0xfc00) AM_NOP /* ?? */
430   AM_RANGE(0xfc20, 0xfc20) AM_READ(soundlatch_r)
449431ADDRESS_MAP_END
450432
451433static ADDRESS_MAP_START( drgnbowl_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
r4679r4680
824806/* handler called by the 2203 emulator when the internal timers cause an IRQ */
825807static void irqhandler(const device_config *device, int irq)
826808{
827   cpu_set_input_line(device->machine->cpu[1],0,irq ? ASSERT_LINE : CLEAR_LINE);
809   cputag_set_input_line(device->machine, "audiocpu", 0, irq ? ASSERT_LINE : CLEAR_LINE);
828810}
829811
830812static const ym2203_interface ym2203_config =
r4679r4680
841823
842824   /* basic machine hardware */
843825   MDRV_CPU_ADD("maincpu", M68000, 18432000/2)   /* 9.216 MHz */
844   MDRV_CPU_PROGRAM_MAP(readmem,writemem)
826   MDRV_CPU_PROGRAM_MAP(gaiden_map,0)
845827   MDRV_CPU_VBLANK_INT("screen", irq5_line_hold)
846828
847829   MDRV_CPU_ADD("audiocpu", Z80, 4000000)   /* 4 MHz */
848   MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem)
830   MDRV_CPU_PROGRAM_MAP(sound_map,0)
849831                        /* IRQs are triggered by the YM2203 */
850832
851833   MDRV_MACHINE_RESET(raiga)
r4679r4680
13511333   /* sprite size Y = sprite size X */
13521334   gaiden_sprite_sizey = 0;
13531335
1354   memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x07a006, 0x07a007, 0, 0, wildfang_protection_r);
1355   memory_install_write16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x07a804, 0x07a805, 0, 0, wildfang_protection_w);
1336   memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x07a006, 0x07a007, 0, 0, wildfang_protection_r);
1337   memory_install_write16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x07a804, 0x07a805, 0, 0, wildfang_protection_w);
13561338}
13571339
13581340static DRIVER_INIT( raiga )
r4679r4680
13601342   /* sprite size Y independent from sprite size X */
13611343   gaiden_sprite_sizey = 2;
13621344
1363   memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x07a006, 0x07a007, 0, 0, raiga_protection_r);
1364   memory_install_write16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x07a804, 0x07a805, 0, 0, raiga_protection_w);
1345   memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x07a006, 0x07a007, 0, 0, raiga_protection_r);
1346   memory_install_write16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x07a804, 0x07a805, 0, 0, raiga_protection_w);
13651347}
13661348
13671349static DRIVER_INIT( drgnbowl )
r4679r4680
13691351   int i;
13701352   UINT8 *ROM = memory_region(machine, "maincpu");
13711353   size_t  size = memory_region_length(machine, "maincpu");
1372   UINT8 *buffer = malloc_or_die(size);
1354   UINT8 *buffer = alloc_array_or_die(UINT8, size);
13731355
13741356   memcpy(buffer,ROM,size);
13751357   for( i = 0; i < size; i++ )
r4679r4680
13861368
13871369   ROM = memory_region(machine, "gfx2");
13881370   size = memory_region_length(machine, "gfx2");
1389   buffer = malloc_or_die(size);
1371   buffer = alloc_array_or_die(UINT8, size);
13901372
13911373   memcpy(buffer,ROM,size);
13921374   for( i = 0; i < size; i++ )
src/mame/drivers/tomcat.c
r4679r4680
156156static WRITE16_HANDLER(tomcat_irqclr_w)
157157{
158158   // Clear IRQ Latch          (Address Strobe)
159   cpu_set_input_line(space->machine->cpu[0], 1, CLEAR_LINE);
159   cputag_set_input_line(space->machine, "maincpu", 1, CLEAR_LINE);
160160}
161161
162162static READ16_HANDLER(tomcat_inputs2_r)
r4679r4680
177177static READ16_HANDLER(tomcat_320bio_r)
178178{
179179   dsp_BIO = 1;
180   cpu_suspend(space->machine->cpu[0], SUSPEND_REASON_SPIN, 1);
180   cputag_suspend(space->machine, "maincpu", SUSPEND_REASON_SPIN, 1);
181181   return 0;
182182}
183183
r4679r4680
198198      {
199199         dsp_idle = 0;
200200         dsp_BIO = 0;
201         cpu_resume(space->machine->cpu[0], SUSPEND_REASON_SPIN );
201         cputag_resume(space->machine, "maincpu", SUSPEND_REASON_SPIN );
202202         return 0;
203203      }
204204      else
r4679r4680
331331   ((UINT16*)tomcat_shared_ram)[0x0002] = 0xf600;
332332   ((UINT16*)tomcat_shared_ram)[0x0003] = 0x0000;
333333
334   tomcat_nvram = auto_malloc(0x800);
334   tomcat_nvram = auto_alloc_array(machine, UINT8, 0x800);
335335
336336   state_save_register_global_pointer(machine, tomcat_nvram, 0x800);
337337   state_save_register_global(machine, tomcat_control_num);
src/mame/drivers/zaxxon.c
r4679r4680
361361{
362362   /* pressing the service switch sends an NMI */
363363   if (newval)
364      cpu_set_input_line(field->port->machine->cpu[0], INPUT_LINE_NMI, PULSE_LINE);
364      cputag_set_input_line(field->port->machine, "maincpu", INPUT_LINE_NMI, PULSE_LINE);
365365}
366366
367367
r4679r4680
376376{
377377   int_enabled = data & 1;
378378   if (!int_enabled)
379      cpu_set_input_line(space->machine->cpu[0], 0, CLEAR_LINE);
379      cputag_set_input_line(space->machine, "maincpu", 0, CLEAR_LINE);
380380}
381381
382382
r4679r4680
14361436   const address_space *space = cputag_get_address_space(machine, cputag, ADDRESS_SPACE_PROGRAM);
14371437   UINT8 *rom = memory_region(machine, cputag);
14381438   int size = memory_region_length(machine, cputag);
1439   UINT8 *decrypt = auto_malloc(size);
1439   UINT8 *decrypt = auto_alloc_array(machine, UINT8, size);
14401440
14411441   memory_set_decrypted_region(space, 0x0000, size - 1, decrypt);
14421442
r4679r4680
14961496   nprinces_decode(machine, "maincpu");
14971497
14981498   /* additional input ports are wired */
1499   memory_install_read_port_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xc004, 0xc004, 0, 0x18f3, "SW04");
1500   memory_install_read_port_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xc008, 0xc008, 0, 0x18f3, "SW08");
1501   memory_install_read_port_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xc00c, 0xc00c, 0, 0x18f3, "SW0C");
1499   memory_install_read_port_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xc004, 0xc004, 0, 0x18f3, "SW04");
1500   memory_install_read_port_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xc008, 0xc008, 0, 0x18f3, "SW08");
1501   memory_install_read_port_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xc00c, 0xc00c, 0, 0x18f3, "SW0C");
15021502
15031503   /* unknown behavior expected here */
1504   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xc80a, 0xc80a, 0, 0, razmataz_counter_r);
1504   memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xc80a, 0xc80a, 0, 0, razmataz_counter_r);
15051505
15061506   /* connect the universal sound board */
1507   memory_install_readwrite8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xe03c, 0xe03c, 0, 0x1f00, sega_usb_status_r, sega_usb_data_w);
1507   memory_install_readwrite8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xe03c, 0xe03c, 0, 0x1f00, sega_usb_status_r, sega_usb_data_w);
15081508
15091509   /* additional state saving */
15101510   state_save_register_global_array(machine, razmataz_dial_pos);
r4679r4680
15171517   szaxxon_decode(machine, "maincpu");
15181518
15191519   /* connect the universal sound board */
1520   memory_install_readwrite8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xe03c, 0xe03c, 0, 0x1f00, sega_usb_status_r, sega_usb_data_w);
1520   memory_install_readwrite8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xe03c, 0xe03c, 0, 0x1f00, sega_usb_status_r, sega_usb_data_w);
15211521}
15221522
15231523
src/mame/drivers/norautp.c
r4679r4680
88
99    Games running on this hardware:
1010
11    * Noraut Poker,  1988,  Noraut Ltd.
12    * Poker,         198?,  Unknown.
11    * Noraut Poker,      1988,  Noraut Ltd.
12    * Noraut Joker Poker 1988,  Noraut Ltd.
13    * GTI Poker          1983,  GTI Inc.
14    * Poker,             198?,  Unknown.
1315
1416
1517*******************************************************************************
r4679r4680
139141      to Noraut Poker (bootleg), since the game has payout system.
140142    - Some clean-ups.
141143
144    Notes:
145    - norautjp: at the first start-up, the game will give you a very clever
146      "FU" screen. Press the following buttons *together* on different times
147      to get rid of it (and actually initialize the machine):
148      * start + bet buttons (1+2);
149      * Hold 3 + Hold 2 + Save (Half Gamble) + Change Card (C+X+F+D)
150      Also notice that you actually need to map the last four buttons on the
151      same button / on a joypad since MAME's steady key doesn't seem to work on
152      my end...
142153
154
143155    TODO:
144156
145157    - Analize the extra 8255 at 0xc0-0xc3 (full bidirectional port w/hshk)
r4679r4680
170182
171183static VIDEO_START( norautp )
172184{
173   np_vram = auto_malloc(0x1000);
185   np_vram = auto_alloc_array(machine, UINT16, 0x1000/2);
174186}
175187
176188
r4679r4680
219231{
220232   /* 1st gfx bank */
221233   palette_set_color(machine, 0, MAKE_RGB(0x00, 0x00, 0xff));   /* blue */
222   palette_set_color(machine, 1, MAKE_RGB(0x7f, 0xff, 0x7f));   /* white? */
234   palette_set_color(machine, 1, MAKE_RGB(0xff, 0xff, 0x00));    /* yellow */
223235   palette_set_color(machine, 2, MAKE_RGB(0x00, 0x00, 0xff));   /* blue */
224236   palette_set_color(machine, 3, MAKE_RGB(0xff, 0xff, 0xff));   /* white */
225237   palette_set_color(machine, 4, MAKE_RGB(0xff, 0xff, 0xff));   /* white */
r4679r4680
316328  c0 --> W  ; data (in case of PPI, port data)
317329  c1 --> W  ; addressing
318330  c2 --> R  ; status?
319  c3 --> W  ; alternate 00 & 01 (in case of PPI, seting reseting bit 0 of hadshaked port)
331  c3 --> W  ; alternate 00 & 01 (in case of PPI, setting resetting bit 0 of handshaked port)
320332
321333*/
322334
r4679r4680
439451   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
440452INPUT_PORTS_END
441453
442
443454/*************************
444455*    Graphics Layouts    *
445456*************************/
r4679r4680
608619ROM_END
609620
610621
622ROM_START( norautjp )
623   ROM_REGION( 0x10000, "maincpu", 0 )
624   ROM_LOAD( "2764-1prog.bin",   0x0000, 0x2000, CRC(5f776ce1) SHA1(673b8c67ebd5c1334187a9407b86a43150cbe67b) )
625
626   ROM_REGION( 0x800,  "gfx", ROMREGION_DISPOSE )
627   ROM_LOAD( "2732-1char.bin",   0x0000, 0x0800, CRC(d94be899) SHA1(b7212162324fa2d67383a475052e3b351bb1af5f) )    /* first half 0xff filled */
628   ROM_CONTINUE(                 0x0000, 0x0800 )
629ROM_END
630
611631/*************************
612632*      Game Drivers      *
613633*************************/
614634
615635/*    YEAR  NAME      PARENT   MACHINE   INPUT    INIT  ROT    COMPANY        FULLNAME                 FLAGS */
616636GAME( 1988, norautp,  0,       norautp,  norautp, 0,    ROT0, "Noraut Ltd.", "Noraut Poker",           GAME_NO_SOUND | GAME_IMPERFECT_COLORS )
637GAME( 1988, norautjp, norautp, norautp,  norautp, 0,    ROT0, "Noraut Ltd.", "Noraut Joker Poker",     GAME_NO_SOUND | GAME_IMPERFECT_COLORS )
617638GAME( 1983, gtipoker, 0,       gtipoker, norautp, 0,    ROT0, "GTI Inc",     "GTI Poker",              GAME_NO_SOUND | GAME_IMPERFECT_COLORS | GAME_NOT_WORKING )
618639
619640/*The following has everything uncertain, seems a bootleg/hack and doesn't have any identification strings in program rom. */
src/mame/drivers/shangkid.c
r4679r4680
7878
7979static WRITE8_HANDLER( shangkid_bbx_enable_w )
8080{
81   cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_HALT, data?0:1 );
81   cputag_set_input_line(space->machine, "bbx", INPUT_LINE_HALT, data?0:1 );
8282}
8383
8484static WRITE8_HANDLER( shangkid_cpu_reset_w )
8585{
8686   if( data == 0 )
8787   {
88      cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_RESET, PULSE_LINE);
88      cputag_set_input_line(space->machine, "bbx", INPUT_LINE_RESET, PULSE_LINE);
8989   }
9090   else if( data == 1 )
9191   {
92      cpu_set_input_line(space->machine->cpu[0], INPUT_LINE_RESET, PULSE_LINE);
92      cputag_set_input_line(space->machine, "maincpu", INPUT_LINE_RESET, PULSE_LINE);
9393   }
9494}
9595
r4679r4680
104104   {
105105      if( data == 0x01 )
106106         /* 0->1 transition triggers interrupt on Sound CPU */
107         cpu_set_input_line(device->machine->cpu[2], 0, HOLD_LINE );
107         cputag_set_input_line(device->machine, "audiocpu", 0, HOLD_LINE );
108108   }
109109}
110110
r4679r4680
114114   {
115115      if( data == 0x01 )
116116         /* 0->1 transition triggers interrupt on Sound CPU */
117         cpu_set_input_line(device->machine->cpu[2], 0, HOLD_LINE );
117         cputag_set_input_line(device->machine, "audiocpu", 0, HOLD_LINE );
118118   }
119119   else
120120      memory_set_bank(device->machine, 2, data ? 0 : 1);
r4679r4680
152152
153153static MACHINE_RESET( chinhero )
154154{
155   cpu_set_input_line(machine->cpu[1], INPUT_LINE_HALT, 1 );
155   cputag_set_input_line(machine, "bbx", INPUT_LINE_HALT, 1 );
156156}
157157
158158static MACHINE_RESET( shangkid )
159159{
160   cpu_set_input_line(machine->cpu[1], INPUT_LINE_HALT, 1 );
160   cputag_set_input_line(machine, "bbx", INPUT_LINE_HALT, 1 );
161161
162162   memory_set_bank(machine, 1, 0);
163163   memory_set_bank(machine, 2, 0);
src/mame/drivers/trackfld.c
r4679r4680
212212   AM_RANGE(0x3000, 0x37ff) AM_READ(SMH_RAM) AM_WRITE(trackfld_videoram_w) AM_BASE(&videoram)
213213   AM_RANGE(0x3800, 0x3fff) AM_READ(SMH_RAM) AM_WRITE(trackfld_colorram_w) AM_BASE(&colorram)
214214   AM_RANGE(0xc000, 0xc000) AM_WRITE(questions_bank_w)
215   AM_RANGE(0x6000, 0xdfff) AM_READ(SMH_BANK1)
215   AM_RANGE(0x6000, 0xdfff) AM_READ(SMH_BANK(1))
216216   AM_RANGE(0xe000, 0xffff) AM_ROM
217217ADDRESS_MAP_END
218218
r4679r4680
11321132   memory_set_decrypted_region(space, 0x0000, 0xffff, decrypt);
11331133
11341134   memory_install_write8_handler(space, 0x0800, 0x0800, 0, 0, atlantol_gfxbank_w);
1135   memory_install_write8_handler(space, 0x1000, 0x1000, 0, 0, SMH_NOP);
1135   memory_install_write8_handler(space, 0x1000, 0x1000, 0, 0, (write8_space_func)SMH_NOP);
11361136
11371137   /* unmapped areas read as ROM */
1138   memory_install_read8_handler(space, 0x0000, 0x11ff, 0, 0, SMH_BANK10);
1139   memory_install_read8_handler(space, 0x1380, 0x17ff, 0, 0, SMH_BANK11);
1140   memory_install_read8_handler(space, 0x2000, 0x27ff, 0, 0, SMH_BANK12);
1141   memory_install_read8_handler(space, 0x4000, 0x5fff, 0, 0, SMH_BANK13);
1138   memory_install_read8_handler(space, 0x0000, 0x11ff, 0, 0, (read8_space_func)SMH_BANK(10));
1139   memory_install_read8_handler(space, 0x1380, 0x17ff, 0, 0, (read8_space_func)SMH_BANK(11));
1140   memory_install_read8_handler(space, 0x2000, 0x27ff, 0, 0, (read8_space_func)SMH_BANK(12));
1141   memory_install_read8_handler(space, 0x4000, 0x5fff, 0, 0, (read8_space_func)SMH_BANK(13));
11421142   memory_set_bankptr(machine, 10, &rom[0x0000]);
11431143   memory_set_bankptr(machine, 11, &rom[0x1380]);
11441144   memory_set_bankptr(machine, 12, &rom[0x2000]);
src/mame/drivers/fastfred.c
r4679r4680
125125
126126static WRITE8_HANDLER( imago_dma_irq_w )
127127{
128   cpu_set_input_line(space->machine->cpu[0], 0, data & 1 ? ASSERT_LINE : CLEAR_LINE);
128   cputag_set_input_line(space->machine, "maincpu", 0, data & 1 ? ASSERT_LINE : CLEAR_LINE);
129129}
130130
131131static WRITE8_HANDLER( imago_sprites_bank_w )
r4679r4680
953953
954954static DRIVER_INIT( flyboy )
955955{
956   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xc085, 0xc099, 0, 0, flyboy_custom1_io_r);
957   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xc8fb, 0xc900, 0, 0, flyboy_custom2_io_r);
956   memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xc085, 0xc099, 0, 0, flyboy_custom1_io_r);
957   memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xc8fb, 0xc900, 0, 0, flyboy_custom2_io_r);
958958   fastfred_hardware_type = 1;
959959}
960960
r4679r4680
965965
966966static DRIVER_INIT( fastfred )
967967{
968   memory_install_readwrite8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xc800, 0xcfff, 0, 0, fastfred_custom_io_r, SMH_NOP);
968   memory_install_readwrite8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xc800, 0xcfff, 0, 0, fastfred_custom_io_r, (write8_space_func)SMH_NOP);
969969   fastfred_hardware_type = 1;
970970}
971971
972972static DRIVER_INIT( jumpcoas )
973973{
974   memory_install_readwrite8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xc800, 0xcfff, 0, 0, jumpcoas_custom_io_r, SMH_NOP);
974   memory_install_readwrite8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xc800, 0xcfff, 0, 0, jumpcoas_custom_io_r, (write8_space_func)SMH_NOP);
975975   fastfred_hardware_type = 0;
976976}
977977
978978static DRIVER_INIT( boggy84 )
979979{
980   memory_install_readwrite8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xc800, 0xcfff, 0, 0, jumpcoas_custom_io_r, SMH_NOP);
980   memory_install_readwrite8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xc800, 0xcfff, 0, 0, jumpcoas_custom_io_r, (write8_space_func)SMH_NOP);
981981   fastfred_hardware_type = 2;
982982}
983983
src/mame/drivers/astrof.c
r4679r4680
8686
8787static READ8_HANDLER( irq_clear_r )
8888{
89   cpu_set_input_line(space->machine->cpu[0], 0, CLEAR_LINE);
89   cputag_set_input_line(space->machine, "maincpu", 0, CLEAR_LINE);
9090
9191   return 0;
9292}
r4679r4680
9494
9595static TIMER_DEVICE_CALLBACK( irq_callback )
9696{
97   cpu_set_input_line(timer->machine->cpu[0], 0, ASSERT_LINE);
97   cputag_set_input_line(timer->machine, "maincpu", 0, ASSERT_LINE);
9898}
9999
100100
r4679r4680
108108static INPUT_CHANGED( coin_inserted )
109109{
110110   /* coin insertion causes an NMI */
111   cpu_set_input_line(field->port->machine->cpu[0], INPUT_LINE_NMI, newval ? ASSERT_LINE : CLEAR_LINE);
111   cputag_set_input_line(field->port->machine, "maincpu", INPUT_LINE_NMI, newval ? ASSERT_LINE : CLEAR_LINE);
112112   coin_counter_w(0, newval);
113113}
114114
r4679r4680
116116static INPUT_CHANGED( service_coin_inserted )
117117{
118118   /* service coin insertion causes an NMI */
119   cpu_set_input_line(field->port->machine->cpu[0], INPUT_LINE_NMI, newval ? ASSERT_LINE : CLEAR_LINE);
119   cputag_set_input_line(field->port->machine, "maincpu", INPUT_LINE_NMI, newval ? ASSERT_LINE : CLEAR_LINE);
120120}
121121
122122
r4679r4680
173173static VIDEO_START( astrof )
174174{
175175   /* allocate the color RAM -- half the size of the video RAM as A0 is not connected */
176   astrof_colorram = auto_malloc(astrof_videoram_size / 2);
176   astrof_colorram = auto_alloc_array(machine, UINT8, astrof_videoram_size / 2);
177177   state_save_register_global_pointer(machine, astrof_colorram, astrof_videoram_size / 2);
178178}
179179
r4679r4680
11911191      rom[i] = prom[rom[i]];
11921192
11931193   /* set up protection handlers */
1194   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xa003, 0xa003, 0, 0, shoot_r);
1195   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xa004, 0xa004, 0, 0, abattle_coin_prot_r);
1194   memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xa003, 0xa003, 0, 0, shoot_r);
1195   memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xa004, 0xa004, 0, 0, abattle_coin_prot_r);
11961196}
11971197
11981198
r4679r4680
12051205      rom[i] = ~rom[i];
12061206
12071207   /* set up protection handlers */
1208   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xa003, 0xa003, 0, 0, shoot_r);
1209   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xa004, 0xa004, 0, 0, afire_coin_prot_r);
1208   memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xa003, 0xa003, 0, 0, shoot_r);
1209   memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xa004, 0xa004, 0, 0, afire_coin_prot_r);
12101210}
12111211
12121212
r4679r4680
12191219      rom[i] = ~rom[i];
12201220
12211221   /* set up protection handlers */
1222   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xa003, 0xa003, 0, 0, shoot_r);
1223   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xa004, 0xa004, 0, 0, abattle_coin_prot_r);
1222   memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xa003, 0xa003, 0, 0, shoot_r);
1223   memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xa004, 0xa004, 0, 0, abattle_coin_prot_r);
12241224}
12251225
12261226
src/mame/drivers/karnov.c
r4679r4680
6565static void karnov_i8751_w(running_machine *machine, int data)
6666{
6767   /* Pending coin operations may cause protection commands to be queued */
68   if (i8751_needs_ack) {
68   if (i8751_needs_ack)
69   {
6970      i8751_command_queue=data;
7071      return;
7172   }
r4679r4680
8889
8990//  if (!i8751_return && data!=0x300) logerror("%s - Unknown Write %02x intel\n",cpuexec_describe_context(machine),data);
9091
91   cpu_set_input_line(machine->cpu[0],6,HOLD_LINE); /* Signal main cpu task is complete */
92   cputag_set_input_line(machine, "maincpu", 6, HOLD_LINE); /* Signal main cpu task is complete */
9293   i8751_needs_ack=1;
9394}
9495
9596static void wndrplnt_i8751_w(running_machine *machine, int data)
9697{
9798   /* The last command hasn't been ACK'd (probably a conflict with coin command) */
98   if (i8751_needs_ack) {
99   if (i8751_needs_ack)
100   {
99101      i8751_command_queue=data;
100102      return;
101103   }
r4679r4680
108110
109111   /* The game writes many values in the 0x600 range, but only a specific mask
110112    matters for the return value */
111   if ((data&0x600)==0x600) {
112      switch (data&0x18) {
113   if ((data&0x600)==0x600)
114   {
115      switch (data&0x18)
116      {
113117         case 0x00:    i8751_return=0x4d53; break;
114118         case 0x08:   i8751_return=0x4b54; break;
115119         case 0x10:    i8751_return=0x5453; break;
r4679r4680
142146   if (data==0x501) i8751_return=0x6bf8;
143147   if (data==0x500) i8751_return=0x4e75;
144148
145   cpu_set_input_line(machine->cpu[0],6,HOLD_LINE); /* Signal main cpu task is complete */
149   cputag_set_input_line(machine, "maincpu", 6, HOLD_LINE); /* Signal main cpu task is complete */
146150   i8751_needs_ack=1;
147151}
148152
r4679r4680
151155   static int level;
152156
153157   /* Pending coin operations may cause protection commands to be queued */
154   if (i8751_needs_ack) {
158   if (i8751_needs_ack)
159   {
155160      i8751_command_queue=data;
156161      return;
157162   }
r4679r4680
167172   if (data>=0x6000 && data<0x8000) i8751_return=1;  /* patched */
168173   if ((data&0xf000)==0x1000) level=1; /* Level 1 */
169174   if ((data&0xf000)==0x2000) level++; /* Level Increment */
170   if ((data&0xf000)==0x3000) {        /* Sprite table mapping */
175   if ((data&0xf000)==0x3000)
176   {        /* Sprite table mapping */
171177      int b=data&0xff;
172      switch (level) {
178      switch (level)
179      {
173180         case 1: /* Level 1, Sprite mapping tables */
174            if (microcontroller_id==CHELNOV) { /* USA */
181            if (microcontroller_id==CHELNOV)
182            { /* USA */
175183               if (b<2) i8751_return=0;
176184               else if (b<6) i8751_return=1;
177185               else if (b<0xb) i8751_return=2;
178186               else if (b<0xf) i8751_return=3;
179187               else if (b<0x13) i8751_return=4;
180188               else i8751_return=5;
181            } else { /* Japan, World */
189            }
190            else
191            { /* Japan, World */
182192               if (b<3) i8751_return=0;
183193               else if (b<8) i8751_return=1;
184194               else if (b<0xc) i8751_return=2;
r4679r4680
252262
253263//  logerror("%s - Unknown Write %02x intel\n",cpuexec_describe_context(machine),data);
254264
255   cpu_set_input_line(machine->cpu[0],6,HOLD_LINE); /* Signal main cpu task is complete */
265   cputag_set_input_line(machine, "maincpu", 6, HOLD_LINE); /* Signal main cpu task is complete */
256266   i8751_needs_ack=1;
257267}
258268
r4679r4680
261271static WRITE16_HANDLER( karnov_control_w )
262272{
263273   /* Mnemonics filled in from the schematics, brackets are my comments */
264   switch (offset<<1) {
274   switch (offset<<1)
275   {
265276      case 0: /* SECLR (Interrupt ack for Level 6 i8751 interrupt) */
266         cpu_set_input_line(space->machine->cpu[0],6,CLEAR_LINE);
277         cputag_set_input_line(space->machine, "maincpu", 6, CLEAR_LINE);
267278
268         if (i8751_needs_ack) {
279         if (i8751_needs_ack)
280         {
269281            /* If a command and coin insert happen at once, then the i8751 will queue the
270282                    coin command until the previous command is ACK'd */
271            if (i8751_coin_pending) {
283            if (i8751_coin_pending)
284            {
272285               i8751_return=i8751_coin_pending;
273               cpu_set_input_line(space->machine->cpu[0],6,HOLD_LINE);
286               cputag_set_input_line(space->machine, "maincpu", 6, HOLD_LINE);
274287               i8751_coin_pending=0;
275            } else if (i8751_command_queue) {
288            }
289            else if (i8751_command_queue)
290            {
276291               /* Pending control command - just write it back as SECREQ */
277292               i8751_needs_ack=0;
278293               karnov_control_w(space,3,i8751_command_queue,0xffff);
279294               i8751_command_queue=0;
280            } else {
295            }
296            else
297            {
281298               i8751_needs_ack=0;
282299            }
283300         }
r4679r4680
285302
286303      case 2: /* SONREQ (Sound CPU byte) */
287304         soundlatch_w(space,0,data&0xff);
288         cpu_set_input_line (space->machine->cpu[1], INPUT_LINE_NMI, PULSE_LINE);
305         cputag_set_input_line (space->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
289306         break;
290307
291308      case 4: /* DM (DMA to buffer spriteram) */
r4679r4680
316333         break;
317334
318335      case 0xe: /* INTCLR (Interrupt ack for Level 7 vbl interrupt) */
319         cpu_set_input_line(space->machine->cpu[0],7,CLEAR_LINE);
336         cputag_set_input_line(space->machine, "maincpu", 7, CLEAR_LINE);
320337         break;
321338   }
322339}
r4679r4680
325342
326343static READ16_HANDLER( karnov_control_r )
327344{
328   switch (offset<<1) {
345   switch (offset<<1)
346   {
329347      case 0:
330348         return input_port_read(space->machine, "P1_P2");
331349      case 2: /* Start buttons & VBL */
r4679r4680
341359
342360/******************************************************************************/
343361
344static ADDRESS_MAP_START( karnov_readmem, ADDRESS_SPACE_PROGRAM, 16 )
345   AM_RANGE(0x000000, 0x05ffff) AM_READ(SMH_ROM)
346   AM_RANGE(0x060000, 0x063fff) AM_READ(SMH_RAM)
347   AM_RANGE(0x080000, 0x080fff) AM_READ(SMH_RAM)
348   AM_RANGE(0x0a0000, 0x0a07ff) AM_READ(SMH_RAM)
349   AM_RANGE(0x0c0000, 0x0c0007) AM_READ(karnov_control_r)
350ADDRESS_MAP_END
351
352static ADDRESS_MAP_START( karnov_writemem, ADDRESS_SPACE_PROGRAM, 16 )
353   AM_RANGE(0x000000, 0x05ffff) AM_WRITE(SMH_ROM)
354   AM_RANGE(0x060000, 0x063fff) AM_WRITE(SMH_RAM) AM_BASE(&karnov_ram)
355   AM_RANGE(0x080000, 0x080fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)
356   AM_RANGE(0x0a0000, 0x0a07ff) AM_WRITE(karnov_videoram_w) AM_BASE(&videoram16)
362static ADDRESS_MAP_START( karnov_map, ADDRESS_SPACE_PROGRAM, 16 )
363   AM_RANGE(0x000000, 0x05ffff) AM_ROM
364   AM_RANGE(0x060000, 0x063fff) AM_RAM AM_BASE(&karnov_ram)
365   AM_RANGE(0x080000, 0x080fff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)
366   AM_RANGE(0x0a0000, 0x0a07ff) AM_RAM_WRITE(karnov_videoram_w) AM_BASE(&videoram16)
357367   AM_RANGE(0x0a0800, 0x0a0fff) AM_WRITE(karnov_videoram_w) /* Wndrplnt Mirror */
358   AM_RANGE(0x0a1000, 0x0a17ff) AM_WRITE(SMH_RAM) AM_BASE(&karnov_pf_data)
368   AM_RANGE(0x0a1000, 0x0a17ff) AM_WRITEONLY AM_BASE(&karnov_pf_data)
359369   AM_RANGE(0x0a1800, 0x0a1fff) AM_WRITE(karnov_playfield_swap_w)
370   AM_RANGE(0x0c0000, 0x0c0007) AM_READ(karnov_control_r)
360371   AM_RANGE(0x0c0000, 0x0c000f) AM_WRITE(karnov_control_w)
361372ADDRESS_MAP_END
362373
363374/******************************************************************************/
364375
365static ADDRESS_MAP_START( karnov_s_readmem, ADDRESS_SPACE_PROGRAM, 8 )
366   AM_RANGE(0x0000, 0x05ff) AM_READ(SMH_RAM)
376static ADDRESS_MAP_START( karnov_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
377   AM_RANGE(0x0000, 0x05ff) AM_RAM
367378   AM_RANGE(0x0800, 0x0800) AM_READ(soundlatch_r)
368   AM_RANGE(0x8000, 0xffff) AM_READ(SMH_ROM)
369ADDRESS_MAP_END
370
371static ADDRESS_MAP_START( karnov_s_writemem, ADDRESS_SPACE_PROGRAM, 8 )
372    AM_RANGE(0x0000, 0x05ff) AM_WRITE(SMH_RAM)
373379   AM_RANGE(0x1000, 0x1001) AM_DEVWRITE("ym1", ym2203_w)
374380   AM_RANGE(0x1800, 0x1801) AM_DEVWRITE("ym2", ym3526_w)
375    AM_RANGE(0x8000, 0xffff) AM_WRITE(SMH_ROM)
381   AM_RANGE(0x8000, 0xffff) AM_ROM
376382ADDRESS_MAP_END
377383
384
378385/******************************************************************************/
379386
380387
r4679r4680
673680
674681   /* Coin input to the i8751 generates an interrupt to the main cpu */
675682   if (input_port_read(device->machine, "FAKE") == coin_mask) latch=1;
676   if (input_port_read(device->machine, "FAKE") != coin_mask && latch) {
677      if (i8751_needs_ack) {
683   if (input_port_read(device->machine, "FAKE") != coin_mask && latch)
684   {
685      if (i8751_needs_ack)
686      {
678687         /* i8751 is busy - queue the command */
679688         i8751_coin_pending=input_port_read(device->machine, "FAKE") | 0x8000;
680      } else {
689      }
690      else
691      {
681692         i8751_return=input_port_read(device->machine, "FAKE") | 0x8000;
682693         cpu_set_input_line(device,6,HOLD_LINE);
683694         i8751_needs_ack=1;
r4679r4680
690701
691702static void sound_irq(const device_config *device, int linestate)
692703{
693   cpu_set_input_line(device->machine->cpu[1],0,linestate); /* IRQ */
704   cputag_set_input_line(device->machine, "audiocpu", 0, linestate); /* IRQ */
694705}
695706
696707static const ym3526_interface ym3526_config =
r4679r4680
709720
710721   /* basic machine hardware */
711722   MDRV_CPU_ADD("maincpu", M68000, 10000000)   /* 10 MHz */
712   MDRV_CPU_PROGRAM_MAP(karnov_readmem,karnov_writemem)
723   MDRV_CPU_PROGRAM_MAP(karnov_map,0)
713724   MDRV_CPU_VBLANK_INT("screen", karnov_interrupt)
714725
715726   MDRV_CPU_ADD("audiocpu", M6502, 1500000)   /* Accurate */
716   MDRV_CPU_PROGRAM_MAP(karnov_s_readmem,karnov_s_writemem)
727   MDRV_CPU_PROGRAM_MAP(karnov_sound_map,0)
717728
718729   MDRV_MACHINE_RESET(karnov)
719730
r4679r4680
750761
751762   /* basic machine hardware */
752763   MDRV_CPU_ADD("maincpu", M68000, 10000000)   /* 10 MHz */
753   MDRV_CPU_PROGRAM_MAP(karnov_readmem,karnov_writemem)
764   MDRV_CPU_PROGRAM_MAP(karnov_map,0)
754765   MDRV_CPU_VBLANK_INT("screen", karnov_interrupt)
755766
756767   MDRV_CPU_ADD("audiocpu", M6502, 1500000)   /* Accurate */
757   MDRV_CPU_PROGRAM_MAP(karnov_s_readmem,karnov_s_writemem)
768   MDRV_CPU_PROGRAM_MAP(karnov_sound_map,0)
758769
759770   MDRV_MACHINE_RESET(karnov)
760771
src/mame/drivers/lwings.c
r4679r4680
4747
4848#include "driver.h"
4949#include "cpu/z80/z80.h"
50#include "deprecat.h"
5150#include "lwings.h"
5251#include "sound/2203intf.h"
5352#include "sound/msm5205.h"
r4679r4680
268267   msm5205_vclk_w(device,0);
269268}
270269
271static ADDRESS_MAP_START( avengers_readmem, ADDRESS_SPACE_PROGRAM, 8 )
272   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
273   AM_RANGE(0x8000, 0xbfff) AM_READ(SMH_BANK1)
274   AM_RANGE(0xc000, 0xf7ff) AM_READ(SMH_RAM)
275   AM_RANGE(0xf808, 0xf808) AM_READ_PORT("SERVICE")
276   AM_RANGE(0xf809, 0xf809) AM_READ_PORT("P1")
277   AM_RANGE(0xf80a, 0xf80a) AM_READ_PORT("P2")
278   AM_RANGE(0xf80b, 0xf80b) AM_READ_PORT("DSWB")
279   AM_RANGE(0xf80c, 0xf80c) AM_READ_PORT("DSWA")
280   AM_RANGE(0xf80d, 0xf80d) AM_READ(avengers_protection_r)
281ADDRESS_MAP_END
282
283static ADDRESS_MAP_START( avengers_writemem, ADDRESS_SPACE_PROGRAM, 8 )
284   AM_RANGE(0x0000, 0xbfff) AM_WRITE(SMH_ROM)
285   AM_RANGE(0xc000, 0xddff) AM_WRITE(SMH_RAM)
286   AM_RANGE(0xde00, 0xdf7f) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
287   AM_RANGE(0xdf80, 0xdfff) AM_WRITE(SMH_RAM)
288   AM_RANGE(0xe000, 0xe7ff) AM_WRITE(lwings_fgvideoram_w) AM_BASE(&lwings_fgvideoram)
289   AM_RANGE(0xe800, 0xefff) AM_WRITE(lwings_bg1videoram_w) AM_BASE(&lwings_bg1videoram)
290   AM_RANGE(0xf000, 0xf3ff) AM_WRITE(paletteram_RRRRGGGGBBBBxxxx_split2_w) AM_BASE(&paletteram_2)
291   AM_RANGE(0xf400, 0xf7ff) AM_WRITE(paletteram_RRRRGGGGBBBBxxxx_split1_w) AM_BASE(&paletteram)
270static ADDRESS_MAP_START( avengers_map, ADDRESS_SPACE_PROGRAM, 8 )
271   AM_RANGE(0x0000, 0x7fff) AM_ROM
272   AM_RANGE(0x8000, 0xbfff) AM_ROMBANK(1)
273   AM_RANGE(0xc000, 0xddff) AM_RAM
274   AM_RANGE(0xde00, 0xdf7f) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
275   AM_RANGE(0xdf80, 0xdfff) AM_RAM
276   AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(lwings_fgvideoram_w) AM_BASE(&lwings_fgvideoram)
277   AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(lwings_bg1videoram_w) AM_BASE(&lwings_bg1videoram)
278   AM_RANGE(0xf000, 0xf3ff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBxxxx_split2_w) AM_BASE(&paletteram_2)
279   AM_RANGE(0xf400, 0xf7ff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBxxxx_split1_w) AM_BASE(&paletteram)
292280   AM_RANGE(0xf800, 0xf801) AM_WRITE(lwings_bg1_scrollx_w)
293281   AM_RANGE(0xf802, 0xf803) AM_WRITE(lwings_bg1_scrolly_w)
294282   AM_RANGE(0xf804, 0xf804) AM_WRITE(trojan_bg2_scrollx_w)
295283   AM_RANGE(0xf805, 0xf805) AM_WRITE(trojan_bg2_image_w)
296   AM_RANGE(0xf808, 0xf808) AM_WRITENOP /* ? */
297   AM_RANGE(0xf809, 0xf809) AM_WRITE(avengers_protection_w)
298   AM_RANGE(0xf80c, 0xf80c) AM_WRITE(avengers_prot_bank_w)
299   AM_RANGE(0xf80d, 0xf80d) AM_WRITE(avengers_adpcm_w)
284
285   AM_RANGE(0xf808, 0xf808) AM_READ_PORT("SERVICE") AM_WRITENOP /* ? */
286   AM_RANGE(0xf809, 0xf809) AM_READ_PORT("P1") AM_WRITE(avengers_protection_w)
287   AM_RANGE(0xf80a, 0xf80a) AM_READ_PORT("P2")
288   AM_RANGE(0xf80b, 0xf80b) AM_READ_PORT("DSWB")
289   AM_RANGE(0xf80c, 0xf80c) AM_READ_PORT("DSWA") AM_WRITE(avengers_prot_bank_w)
290   AM_RANGE(0xf80d, 0xf80d) AM_READWRITE(avengers_protection_r,avengers_adpcm_w)
300291   AM_RANGE(0xf80e, 0xf80e) AM_WRITE(lwings_bankswitch_w)
301292ADDRESS_MAP_END
302293
303static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 ) /* common to trojan and lwings */
304   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
305   AM_RANGE(0x8000, 0xbfff) AM_READ(SMH_BANK1)
306   AM_RANGE(0xc000, 0xf7ff) AM_READ(SMH_RAM)
294static ADDRESS_MAP_START( lwings_map, ADDRESS_SPACE_PROGRAM, 8 )
295   AM_RANGE(0x0000, 0x7fff) AM_ROM
296   AM_RANGE(0x8000, 0xbfff) AM_ROMBANK(1)
297   AM_RANGE(0xc000, 0xddff) AM_RAM
298   AM_RANGE(0xde00, 0xdfff) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
299   AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(lwings_fgvideoram_w) AM_BASE(&lwings_fgvideoram)
300   AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(lwings_bg1videoram_w) AM_BASE(&lwings_bg1videoram)
301   AM_RANGE(0xf000, 0xf3ff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBxxxx_split2_w) AM_BASE(&paletteram_2)
302   AM_RANGE(0xf400, 0xf7ff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBxxxx_split1_w) AM_BASE(&paletteram)
303
307304   AM_RANGE(0xf808, 0xf808) AM_READ_PORT("SERVICE")
308305   AM_RANGE(0xf809, 0xf809) AM_READ_PORT("P1")
306   AM_RANGE(0xf808, 0xf809) AM_WRITE(lwings_bg1_scrollx_w)
309307   AM_RANGE(0xf80a, 0xf80a) AM_READ_PORT("P2")
310308   AM_RANGE(0xf80b, 0xf80b) AM_READ_PORT("DSWA")
311   AM_RANGE(0xf80c, 0xf80c) AM_READ_PORT("DSWB")
312ADDRESS_MAP_END
313
314static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 ) /* lwings */
315   AM_RANGE(0x0000, 0xbfff) AM_WRITE(SMH_ROM)
316   AM_RANGE(0xc000, 0xddff) AM_WRITE(SMH_RAM)
317   AM_RANGE(0xde00, 0xdfff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
318   AM_RANGE(0xe000, 0xe7ff) AM_WRITE(lwings_fgvideoram_w) AM_BASE(&lwings_fgvideoram)
319   AM_RANGE(0xe800, 0xefff) AM_WRITE(lwings_bg1videoram_w) AM_BASE(&lwings_bg1videoram)
320   AM_RANGE(0xf000, 0xf3ff) AM_WRITE(paletteram_RRRRGGGGBBBBxxxx_split2_w) AM_BASE(&paletteram_2)
321   AM_RANGE(0xf400, 0xf7ff) AM_WRITE(paletteram_RRRRGGGGBBBBxxxx_split1_w) AM_BASE(&paletteram)
322   AM_RANGE(0xf808, 0xf809) AM_WRITE(lwings_bg1_scrollx_w)
323309   AM_RANGE(0xf80a, 0xf80b) AM_WRITE(lwings_bg1_scrolly_w)
324   AM_RANGE(0xf80c, 0xf80c) AM_WRITE(soundlatch_w)
310   AM_RANGE(0xf80c, 0xf80c) AM_READ_PORT("DSWB") AM_WRITE(soundlatch_w)
325311   AM_RANGE(0xf80d, 0xf80d) AM_WRITE(watchdog_reset_w)
326312   AM_RANGE(0xf80e, 0xf80e) AM_WRITE(lwings_bankswitch_w)
327313ADDRESS_MAP_END
328314
329static ADDRESS_MAP_START( trojan_writemem, ADDRESS_SPACE_PROGRAM, 8 )
330   AM_RANGE(0x0000, 0xbfff) AM_WRITE(SMH_ROM)
331   AM_RANGE(0xc000, 0xddff) AM_WRITE(SMH_RAM)
332   AM_RANGE(0xde00, 0xdf7f) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
333   AM_RANGE(0xdf80, 0xdfff) AM_WRITE(SMH_RAM)
334   AM_RANGE(0xe000, 0xe7ff) AM_WRITE(lwings_fgvideoram_w) AM_BASE(&lwings_fgvideoram)
335   AM_RANGE(0xe800, 0xefff) AM_WRITE(lwings_bg1videoram_w) AM_BASE(&lwings_bg1videoram)
336   AM_RANGE(0xf000, 0xf3ff) AM_WRITE(paletteram_RRRRGGGGBBBBxxxx_split2_w) AM_BASE(&paletteram_2)
337   AM_RANGE(0xf400, 0xf7ff) AM_WRITE(paletteram_RRRRGGGGBBBBxxxx_split1_w) AM_BASE(&paletteram)
315static ADDRESS_MAP_START( trojan_map, ADDRESS_SPACE_PROGRAM, 8 )
316   AM_RANGE(0x0000, 0x7fff) AM_ROM
317   AM_RANGE(0x8000, 0xbfff) AM_ROMBANK(1)
318   AM_RANGE(0xc000, 0xddff) AM_RAM
319   AM_RANGE(0xde00, 0xdf7f) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
320   AM_RANGE(0xdf80, 0xdfff) AM_RAM
321   AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(lwings_fgvideoram_w) AM_BASE(&lwings_fgvideoram)
322   AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(lwings_bg1videoram_w) AM_BASE(&lwings_bg1videoram)
323   AM_RANGE(0xf000, 0xf3ff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBxxxx_split2_w) AM_BASE(&paletteram_2)
324   AM_RANGE(0xf400, 0xf7ff) AM_RAM_WRITE(paletteram_RRRRGGGGBBBBxxxx_split1_w) AM_BASE(&paletteram)
325
338326   AM_RANGE(0xf800, 0xf801) AM_WRITE(lwings_bg1_scrollx_w)
339327   AM_RANGE(0xf802, 0xf803) AM_WRITE(lwings_bg1_scrolly_w)
340328   AM_RANGE(0xf804, 0xf804) AM_WRITE(trojan_bg2_scrollx_w)
341329   AM_RANGE(0xf805, 0xf805) AM_WRITE(trojan_bg2_image_w)
342   AM_RANGE(0xf80c, 0xf80c) AM_WRITE(soundlatch_w)
330   AM_RANGE(0xf808, 0xf808) AM_READ_PORT("SERVICE")
331   AM_RANGE(0xf809, 0xf809) AM_READ_PORT("P1")
332   AM_RANGE(0xf80a, 0xf80a) AM_READ_PORT("P2")
333   AM_RANGE(0xf80b, 0xf80b) AM_READ_PORT("DSWA")
334   AM_RANGE(0xf80c, 0xf80c) AM_READ_PORT("DSWB") AM_WRITE(soundlatch_w)
343335   AM_RANGE(0xf80d, 0xf80d) AM_WRITE(watchdog_reset_w)
344336   AM_RANGE(0xf80e, 0xf80e) AM_WRITE(lwings_bankswitch_w)
345337ADDRESS_MAP_END
346338
347static ADDRESS_MAP_START( sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
348   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
349   AM_RANGE(0xc000, 0xc7ff) AM_READ(SMH_RAM)
339static ADDRESS_MAP_START( lwings_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
340   AM_RANGE(0x0000, 0x7fff) AM_ROM
341   AM_RANGE(0xc000, 0xc7ff) AM_RAM
350342   AM_RANGE(0xc800, 0xc800) AM_READ(soundlatch_r)
351   AM_RANGE(0xe006, 0xe006) AM_READ(avengers_soundlatch2_r) //AT: (avengers061gre)
352ADDRESS_MAP_END
353
354static ADDRESS_MAP_START( sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
355   AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM)
356   AM_RANGE(0xc000, 0xc7ff) AM_WRITE(SMH_RAM)
357343   AM_RANGE(0xe000, 0xe001) AM_DEVWRITE("2203a", ym2203_w)
358344   AM_RANGE(0xe002, 0xe003) AM_DEVWRITE("2203b", ym2203_w)
359   AM_RANGE(0xe006, 0xe006) AM_WRITE(SMH_RAM) AM_BASE(&avengers_soundlatch2)
345   AM_RANGE(0xe006, 0xe006) AM_READ(avengers_soundlatch2_r) //AT: (avengers061gre)
346   AM_RANGE(0xe006, 0xe006) AM_WRITEONLY AM_BASE(&avengers_soundlatch2)
360347ADDRESS_MAP_END
361348
362static ADDRESS_MAP_START( adpcm_readmem, ADDRESS_SPACE_PROGRAM, 8 )
363   AM_RANGE(0x0000, 0xffff) AM_READ(SMH_ROM)
364ADDRESS_MAP_END
365
366349/* Yes, _no_ ram */
367static ADDRESS_MAP_START( adpcm_writemem, ADDRESS_SPACE_PROGRAM, 8 )
368/*  AM_RANGE(0x0000, 0xffff) AM_WRITE(SMH_ROM) avoid cluttering up error.log */
369   AM_RANGE(0x0000, 0xffff) AM_WRITENOP
350static ADDRESS_MAP_START( trojan_adpcm_map, ADDRESS_SPACE_PROGRAM, 8 )
351   AM_RANGE(0x0000, 0xffff) AM_ROM AM_WRITENOP
370352ADDRESS_MAP_END
371353
372354static ADDRESS_MAP_START( avengers_adpcm_io_map, ADDRESS_SPACE_IO, 8 )
r4679r4680
375357   AM_RANGE(0x01, 0x01) AM_DEVWRITE("5205", msm5205_w)
376358ADDRESS_MAP_END
377359
378static ADDRESS_MAP_START( adpcm_io_map, ADDRESS_SPACE_IO, 8 )
360static ADDRESS_MAP_START( trojan_adpcm_io_map, ADDRESS_SPACE_IO, 8 )
379361   ADDRESS_MAP_GLOBAL_MASK(0xff)
380362   AM_RANGE(0x00, 0x00) AM_READ(soundlatch_r)
381363   AM_RANGE(0x01, 0x01) AM_DEVWRITE("5205", msm5205_w)
r4679r4680
754736
755737   /* basic machine hardware */
756738   MDRV_CPU_ADD("maincpu", Z80, 6000000)        /* 4 MHz (?) */
757   MDRV_CPU_PROGRAM_MAP(readmem,writemem)
739   MDRV_CPU_PROGRAM_MAP(lwings_map,0)
758740   MDRV_CPU_VBLANK_INT("screen", lwings_interrupt)
759741
760742   MDRV_CPU_ADD("soundcpu", Z80, 4000000)
761   MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem)
762   MDRV_CPU_VBLANK_INT_HACK(irq0_line_hold,4)
743   MDRV_CPU_PROGRAM_MAP(lwings_sound_map,0)
744   MDRV_CPU_PERIODIC_INT(irq0_line_hold,4*60) /* ??? */
763745
764746   /* video hardware */
765747   MDRV_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM)
r4679r4680
798780   MDRV_IMPORT_FROM( lwings )
799781
800782   MDRV_CPU_MODIFY("maincpu")
801   MDRV_CPU_PROGRAM_MAP(readmem,trojan_writemem)
783   MDRV_CPU_PROGRAM_MAP(trojan_map,0)
802784
803785   MDRV_CPU_ADD("adpcm", Z80, 4000000) // 3.579545 Mhz (?)
804   MDRV_CPU_PROGRAM_MAP(adpcm_readmem,adpcm_writemem)
805   MDRV_CPU_IO_MAP(adpcm_io_map,0)
786   MDRV_CPU_PROGRAM_MAP(trojan_adpcm_map,0)
787   MDRV_CPU_IO_MAP(trojan_adpcm_io_map,0)
806788   MDRV_CPU_PERIODIC_INT(irq0_line_hold, 4000)
807789
808790   /* video hardware */
r4679r4680
821803   MDRV_IMPORT_FROM( trojan )
822804
823805   MDRV_CPU_MODIFY("maincpu") //AT: (avengers37b16gre)
824   MDRV_CPU_PROGRAM_MAP(avengers_readmem,avengers_writemem)
806   MDRV_CPU_PROGRAM_MAP(avengers_map,0)
825807   MDRV_CPU_VBLANK_INT("screen", nmi_line_pulse) // RST 38h triggered by software
826808
827809   MDRV_CPU_MODIFY("adpcm")
src/mame/drivers/maxaflex.c
r4679r4680
7979
8080   /* clear coin interrupt */
8181   if (data & 0x04)
82      cpu_set_input_line(space->machine->cpu[1], M6805_IRQ_LINE, CLEAR_LINE );
82      cputag_set_input_line(space->machine, "mcu", M6805_IRQ_LINE, CLEAR_LINE );
8383
8484   /* AUDMUTE */
8585   sound_global_enable((data >> 5) & 1);
8686
8787   /* RES600 */
8888   if (diff & 0x10)
89      cpu_set_input_line(space->machine->cpu[0], INPUT_LINE_RESET, (data & 0x10) ? CLEAR_LINE : ASSERT_LINE);
89      cputag_set_input_line(space->machine, "maincpu", INPUT_LINE_RESET, (data & 0x10) ? CLEAR_LINE : ASSERT_LINE);
9090
9191   /* latch for lamps */
9292   if ((diff & 0x40) && !(data & 0x40))
r4679r4680
154154      if ( (tcr & 0x40) == 0 )
155155      {
156156         //timer interrupt!
157         generic_pulse_irq_line(machine->cpu[1], M68705_INT_TIMER);
157         generic_pulse_irq_line(cputag_get_cpu(machine, "mcu"), M68705_INT_TIMER);
158158      }
159159   }
160160}
r4679r4680
226226static INPUT_CHANGED( coin_inserted )
227227{
228228   if (!newval)
229      cpu_set_input_line(field->port->machine->cpu[1], M6805_IRQ_LINE, HOLD_LINE );
229      cputag_set_input_line(field->port->machine, "mcu", M6805_IRQ_LINE, HOLD_LINE );
230230}
231231
232232int atari_input_disabled(void)
r4679r4680
542542GAME( 1983, mf_brist, maxaflex, maxaflex, a600xl, a600xl, ROT0, "Exidy / First Star Software", "Bristles (Max-A-Flex)", 0 )
543543GAME( 1983, mf_flip,  maxaflex, maxaflex, a600xl, a600xl, ROT0, "Exidy / First Star Software", "Flip & Flop (Max-A-Flex)", 0 )
544544GAME( 1984, mf_bdash, maxaflex, maxaflex, a600xl, a600xl, ROT0, "Exidy / First Star Software", "Boulder Dash (Max-A-Flex)", 0 )
545
src/mame/drivers/punchout.c
r4679r4680
150150
151151static WRITE8_DEVICE_HANDLER( punchout_speech_reset_w )
152152{
153   vlm5030_rst( device, data&0x01 );
153   vlm5030_rst( device, data & 0x01 );
154154}
155155
156156static WRITE8_DEVICE_HANDLER( punchout_speech_st_w )
157157{
158   vlm5030_st( device, data&0x01 );
158   vlm5030_st( device, data & 0x01 );
159159}
160160
161161static WRITE8_DEVICE_HANDLER( punchout_speech_vcu_w )
r4679r4680
166166static WRITE8_HANDLER( punchout_2a03_reset_w )
167167{
168168   if (data & 1)
169      cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_RESET, ASSERT_LINE);
169      cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_RESET, ASSERT_LINE);
170170   else
171      cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_RESET, CLEAR_LINE);
171      cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_RESET, CLEAR_LINE);
172172}
173173
174174static int rp5c01_mode_sel; /* Mode selector */
r4679r4680
176176
177177static READ8_HANDLER( spunchout_rp5c01_r )
178178{
179   logerror("%04x: prot_r %x\n",cpu_get_previouspc(space->cpu),offset);
179   logerror("%04x: prot_r %x\n", cpu_get_previouspc(space->cpu), offset);
180180
181181   if (offset <= 0x0c)
182182   {
r4679r4680
365365ADDRESS_MAP_END
366366
367367
368static ADDRESS_MAP_START( io_map, ADDRESS_SPACE_IO, 8 )
368static ADDRESS_MAP_START( punchout_io_map, ADDRESS_SPACE_IO, 8 )
369369   ADDRESS_MAP_GLOBAL_MASK(0xff)
370370   AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0")
371371   AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1")
r4679r4680
388388   AM_RANGE(0x07, 0x07) AM_MIRROR(0xf0) AM_MASK(0xf0) AM_READWRITE(spunchout_exp_r, spunchout_exp_w)
389389ADDRESS_MAP_END
390390
391static ADDRESS_MAP_START( sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
392   AM_RANGE(0x0000, 0x07ff) AM_READ(SMH_RAM)
391static ADDRESS_MAP_START( punchout_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
392   AM_RANGE(0x0000, 0x07ff) AM_RAM
393393   AM_RANGE(0x4016, 0x4016) AM_READ(soundlatch_r)
394394   AM_RANGE(0x4017, 0x4017) AM_READ(soundlatch2_r)
395   AM_RANGE(0x4000, 0x4017) AM_DEVREAD("nes", nes_psg_r)
396   AM_RANGE(0xe000, 0xffff) AM_READ(SMH_ROM)
395   AM_RANGE(0x4000, 0x4017) AM_DEVREADWRITE("nes", nes_psg_r,nes_psg_w)
396   AM_RANGE(0xe000, 0xffff) AM_ROM
397397ADDRESS_MAP_END
398398
399static ADDRESS_MAP_START( sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
400   AM_RANGE(0x0000, 0x07ff) AM_WRITE(SMH_RAM)
401   AM_RANGE(0x4000, 0x4017) AM_DEVWRITE("nes", nes_psg_w)
402   AM_RANGE(0xe000, 0xffff) AM_WRITE(SMH_ROM)
403ADDRESS_MAP_END
404399
405400
406
407401static INPUT_PORTS_START( punchout )
408402   PORT_START("IN0")
409403   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 )
r4679r4680
613607   /* basic machine hardware */
614608   MDRV_CPU_ADD("maincpu", Z80, 8000000/2)   /* 4 MHz */
615609   MDRV_CPU_PROGRAM_MAP(punchout_map,0)
616   MDRV_CPU_IO_MAP(io_map,0)
610   MDRV_CPU_IO_MAP(punchout_io_map,0)
617611   MDRV_CPU_VBLANK_INT("top", nmi_line_pulse)
618612
619613   MDRV_CPU_ADD("audiocpu", N2A03, N2A03_DEFAULTCLOCK)
620   MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem)
614   MDRV_CPU_PROGRAM_MAP(punchout_sound_map,0)
621615   MDRV_CPU_VBLANK_INT("top", nmi_line_pulse)
622616
623617   MDRV_MACHINE_RESET(punchout)
r4679r4680
10481042GAME( 1984, spnchout, 0,        punchout, spnchout, spnchout, ROT0, "Nintendo", "Super Punch-Out!!", 0 )
10491043GAME( 1984, spnchotj, spnchout, punchout, spnchout, spnchotj, ROT0, "Nintendo", "Super Punch-Out!! (Japan)", 0 )
10501044GAME( 1985, armwrest, 0,        armwrest, armwrest, armwrest, ROT0, "Nintendo", "Arm Wrestling", 0 )
1051
src/mame/drivers/vegas.c
r4679r4680
543543      dcs_idma_cs = 0;
544544
545545   /* set the fastest DRC options, but strict verification */
546   mips3drc_set_options(machine->cpu[0], MIPS3DRC_FASTEST_OPTIONS + MIPS3DRC_STRICT_VERIFY + MIPS3DRC_FLUSH_PC);
546   mips3drc_set_options(cputag_get_cpu(machine, "maincpu"), MIPS3DRC_FASTEST_OPTIONS + MIPS3DRC_STRICT_VERIFY + MIPS3DRC_FLUSH_PC);
547547
548548   /* configure fast RAM regions for DRC */
549   mips3drc_add_fastram(machine->cpu[0], 0x00000000, ramsize - 1, FALSE, rambase);
550   mips3drc_add_fastram(machine->cpu[0], 0x1fc00000, 0x1fc7ffff, TRUE, rombase);
549   mips3drc_add_fastram(cputag_get_cpu(machine, "maincpu"), 0x00000000, ramsize - 1, FALSE, rambase);
550   mips3drc_add_fastram(cputag_get_cpu(machine, "maincpu"), 0x1fc00000, 0x1fc7ffff, TRUE, rombase);
551551
552552   /* register for save states */
553553   state_save_register_global(machine, nile_irq_state);
r4679r4680
922922      if (irq[i])
923923      {
924924         if (LOG_NILE_IRQS) logerror(" 1");
925         cpu_set_input_line(machine->cpu[0], MIPS3_IRQ0 + i, ASSERT_LINE);
925         cputag_set_input_line(machine, "maincpu", MIPS3_IRQ0 + i, ASSERT_LINE);
926926      }
927927      else
928928      {
929929         if (LOG_NILE_IRQS) logerror(" 0");
930         cpu_set_input_line(machine->cpu[0], MIPS3_IRQ0 + i, CLEAR_LINE);
930         cputag_set_input_line(machine, "maincpu", MIPS3_IRQ0 + i, CLEAR_LINE);
931931      }
932932   }
933933   if (LOG_NILE_IRQS) logerror("\n");
r4679r4680
15571557
15581558   /* unmap everything we know about */
15591559   for (addr = 0; addr < dynamic_count; addr++)
1560      memory_install_readwrite32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), dynamic[addr].start, dynamic[addr].end, 0, 0, SMH_UNMAP, SMH_UNMAP);
1560      memory_install_readwrite32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), dynamic[addr].start, dynamic[addr].end, 0, 0, (read32_space_func)SMH_UNMAP, (write32_space_func)SMH_UNMAP);
15611561
15621562   /* the build the list of stuff */
15631563   dynamic_count = 0;
r4679r4680
15711571      add_dynamic_address(base + 0x2000, base + 0x2003, sio_irq_cause_r, NULL);
15721572      add_dynamic_address(base + 0x3000, base + 0x3003, sio_irq_status_r, NULL);
15731573      add_dynamic_address(base + 0x4000, base + 0x4003, sio_led_r, sio_led_w);
1574      add_dynamic_address(base + 0x5000, base + 0x5007, SMH_NOP, NULL);
1574      add_dynamic_address(base + 0x5000, base + 0x5007, (read32_space_func)SMH_NOP, NULL);
15751575      add_dynamic_address(base + 0x6000, base + 0x6003, NULL, cmos_unlock_w);
15761576      add_dynamic_address(base + 0x7000, base + 0x7003, NULL, vegas_watchdog_w);
15771577   }
r4679r4680
16771677   {
16781678      if (LOG_DYNAMIC) logerror("  installing: %08X-%08X %s,%s\n", dynamic[addr].start, dynamic[addr].end, dynamic[addr].rdname, dynamic[addr].wrname);
16791679      if (dynamic[addr].mread != NULL || dynamic[addr].mwrite != NULL)
1680         _memory_install_handler32(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), dynamic[addr].start, dynamic[addr].end, 0, 0, dynamic[addr].mread, dynamic[addr].mwrite, dynamic[addr].rdname, dynamic[addr].wrname);
1680         _memory_install_handler32(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), dynamic[addr].start, dynamic[addr].end, 0, 0, dynamic[addr].mread, dynamic[addr].mwrite, dynamic[addr].rdname, dynamic[addr].wrname);
16811681      if (dynamic[addr].dread != NULL || dynamic[addr].dwrite != NULL)
1682         _memory_install_device_handler32(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), dynamic[addr].device, dynamic[addr].start, dynamic[addr].end, 0, 0, dynamic[addr].dread, dynamic[addr].dwrite, dynamic[addr].rdname, dynamic[addr].wrname);
1682         _memory_install_device_handler32(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), dynamic[addr].device, dynamic[addr].start, dynamic[addr].end, 0, 0, dynamic[addr].dread, dynamic[addr].dwrite, dynamic[addr].rdname, dynamic[addr].wrname);
16831683   }
16841684
16851685   if (LOG_DYNAMIC)
r4679r4680
24692469
24702470   /* allocate RAM for the timekeeper */
24712471   timekeeper_nvram_size = 0x8000;
2472   timekeeper_nvram = auto_malloc(timekeeper_nvram_size);
2472   timekeeper_nvram = auto_alloc_array(machine, UINT32, timekeeper_nvram_size/4);
24732473}
24742474
24752475
r4679r4680
24792479   init_common(machine, MIDWAY_IOASIC_CALSPEED, 340/* 340=39", 322=27", others? */);
24802480
24812481   /* speedups */
2482   mips3drc_add_hotspot(machine->cpu[0], 0x80015430, 0x8CC38060, 250);      /* confirmed */
2483   mips3drc_add_hotspot(machine->cpu[0], 0x80015464, 0x3C09801E, 250);      /* confirmed */
2484   mips3drc_add_hotspot(machine->cpu[0], 0x800C8918, 0x8FA2004C, 250);      /* confirmed */
2485   mips3drc_add_hotspot(machine->cpu[0], 0x800C8890, 0x8FA20024, 250);      /* confirmed */
2482   mips3drc_add_hotspot(cputag_get_cpu(machine, "maincpu"), 0x80015430, 0x8CC38060, 250);      /* confirmed */
2483   mips3drc_add_hotspot(cputag_get_cpu(machine, "maincpu"), 0x80015464, 0x3C09801E, 250);      /* confirmed */
2484   mips3drc_add_hotspot(cputag_get_cpu(machine, "maincpu"), 0x800C8918, 0x8FA2004C, 250);      /* confirmed */
2485   mips3drc_add_hotspot(cputag_get_cpu(machine, "maincpu"), 0x800C8890, 0x8FA20024, 250);      /* confirmed */
24862486}
24872487
24882488
r4679r4680
24922492   init_common(machine, MIDWAY_IOASIC_GAUNTDL, 346/* 347, others? */);
24932493
24942494   /* speedups */
2495   mips3drc_add_hotspot(machine->cpu[0], 0x800158B8, 0x8CC3CC40, 250);      /* confirmed */
2496   mips3drc_add_hotspot(machine->cpu[0], 0x800158EC, 0x3C0C8022, 250);      /* confirmed */
2497   mips3drc_add_hotspot(machine->cpu[0], 0x800D40C0, 0x8FA2004C, 250);      /* confirmed */
2498   mips3drc_add_hotspot(machine->cpu[0], 0x800D4038, 0x8FA20024, 250);      /* confirmed */
2495   mips3drc_add_hotspot(cputag_get_cpu(machine, "maincpu"), 0x800158B8, 0x8CC3CC40, 250);      /* confirmed */
2496   mips3drc_add_hotspot(cputag_get_cpu(machine, "maincpu"), 0x800158EC, 0x3C0C8022, 250);      /* confirmed */
2497   mips3drc_add_hotspot(cputag_get_cpu(machine, "maincpu"), 0x800D40C0, 0x8FA2004C, 250);      /* confirmed */
2498   mips3drc_add_hotspot(cputag_get_cpu(machine, "maincpu"), 0x800D4038, 0x8FA20024, 250);      /* confirmed */
24992499}
25002500
25012501
r4679r4680
25052505   init_common(machine, MIDWAY_IOASIC_MACE, 337/* others? */);
25062506
25072507   /* speedups */
2508   mips3drc_add_hotspot(machine->cpu[0], 0x8009436C, 0x0C031663, 250);      /* confirmed */
2508   mips3drc_add_hotspot(cputag_get_cpu(machine, "maincpu"), 0x8009436C, 0x0C031663, 250);      /* confirmed */
25092509}
25102510
25112511
r4679r4680
25152515   init_common(machine, MIDWAY_IOASIC_GAUNTDL, 330/* others? */);
25162516
25172517   /* speedups */
2518   mips3drc_add_hotspot(machine->cpu[0], 0x80051CD8, 0x0C023C15, 250);      /* confirmed */
2519   mips3drc_add_hotspot(machine->cpu[0], 0x8005E674, 0x3C028017, 250);      /* confirmed */
2520   mips3drc_add_hotspot(machine->cpu[0], 0x8002DBCC, 0x8FA2002C, 250);      /* confirmed */
2521   mips3drc_add_hotspot(machine->cpu[0], 0x80015930, 0x8FC20244, 250);      /* confirmed */
2518   mips3drc_add_hotspot(cputag_get_cpu(machine, "maincpu"), 0x80051CD8, 0x0C023C15, 250);      /* confirmed */
2519   mips3drc_add_hotspot(cputag_get_cpu(machine, "maincpu"), 0x8005E674, 0x3C028017, 250);      /* confirmed */
2520   mips3drc_add_hotspot(cputag_get_cpu(machine, "maincpu"), 0x8002DBCC, 0x8FA2002C, 250);      /* confirmed */
2521   mips3drc_add_hotspot(cputag_get_cpu(machine, "maincpu"), 0x80015930, 0x8FC20244, 250);      /* confirmed */
25222522}
25232523
25242524
src/mame/drivers/kopunch.c
r4679r4680
1/********************************************************
2
3KO Punch (c) 1981 Sega
4
5********************************************************/
6
17#include "driver.h"
28#include "cpu/i8085/i8085.h"
3#include "deprecat.h"
49
510extern UINT8 *kopunch_videoram2;
611
r4679r4680
1722
1823static INTERRUPT_GEN( kopunch_interrupt )
1924{
20   if (cpu_getiloops(device) == 0)
21   {
22      if (~input_port_read(device->machine, "SYSTEM") & 0x80)   /* coin 1 */
23      {
24         cpu_set_input_line_and_vector(device,0,HOLD_LINE,0xf7);   /* RST 30h */
25         return;
26      }
27      else if (~input_port_read(device->machine, "SYSTEM") & 0x08)   /* coin 2 */
28      {
29         cpu_set_input_line_and_vector(device,0,HOLD_LINE,0xef);   /* RST 28h */
30         return;
31      }
32   }
33
34   cpu_set_input_line_and_vector(device,0,HOLD_LINE,0xff);   /* RST 38h */
25   cpu_set_input_line(device,I8085_RST75_LINE,ASSERT_LINE);
26   cpu_set_input_line(device,I8085_RST75_LINE,CLEAR_LINE);
3527}
3628
3729static READ8_HANDLER( kopunch_in_r )
r4679r4680
8880   AM_RANGE(0x3f, 0x3f) AM_WRITENOP
8981ADDRESS_MAP_END
9082
83static INPUT_CHANGED( left_coin_inserted )
84{
85   /* left coin insertion causes a rst6.5 (vector 0x34) */
86   if(newval)
87      cputag_set_input_line(field->port->machine, "maincpu", I8085_RST65_LINE, HOLD_LINE);
88}
9189
90static INPUT_CHANGED( right_coin_inserted )
91{
92   /* right coin insertion causes a rst5.5 (vector 0x2c) */
93   if(newval)
94      cputag_set_input_line(field->port->machine, "maincpu", I8085_RST55_LINE, HOLD_LINE);
95}
96
9297static INPUT_PORTS_START( kopunch )
9398   PORT_START("P1")
9499   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_4WAY
r4679r4680
102107
103108   PORT_START("SYSTEM")
104109   PORT_BIT( 0x07, IP_ACTIVE_HIGH, IPT_SPECIAL )   /* punch strength (high 3 bits) */
105   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(1)
110   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(1) PORT_CHANGED(right_coin_inserted, 0)
106111   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 )
107112   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 )
108113   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 )
109   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(1)
114   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(1) PORT_CHANGED(left_coin_inserted, 0)
110115
111116   PORT_START("DSW")
112117   PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) )
r4679r4680
180185   MDRV_CPU_ADD("maincpu", 8085A, 4000000)   /* 4 MHz ???? Uses SIM, must be 8085 */
181186   MDRV_CPU_PROGRAM_MAP(kopunch_map,0)
182187   MDRV_CPU_IO_MAP(kopunch_io_map,0)
183   MDRV_CPU_VBLANK_INT_HACK(kopunch_interrupt,4)   /* ??? */
188   MDRV_CPU_VBLANK_INT("screen",kopunch_interrupt)
184189
185190   /* video hardware */
186191   MDRV_SCREEN_ADD("screen", RASTER)
src/mame/drivers/tecmo.c
r4679r4680
7575
7676
7777   bankaddress = 0x10000 + ((data & 0xf8) << 8);
78   memory_set_bankptr(space->machine, 1,&RAM[bankaddress]);
78   memory_set_bankptr(space->machine, 1, &RAM[bankaddress]);
7979}
8080
8181static WRITE8_HANDLER( tecmo_sound_command_w )
8282{
83   soundlatch_w(space,offset,data);
84   cpu_set_input_line(space->machine->cpu[1],INPUT_LINE_NMI,PULSE_LINE);
83   soundlatch_w(space, offset, data);
84   cputag_set_input_line(space->machine, "soundcpu",INPUT_LINE_NMI,PULSE_LINE);
8585}
8686
8787static WRITE8_DEVICE_HANDLER( tecmo_adpcm_start_w )
8888{
8989   adpcm_pos = data << 8;
90   msm5205_reset_w(device,0);
90   msm5205_reset_w(device, 0);
9191}
9292static WRITE8_HANDLER( tecmo_adpcm_end_w )
9393{
r4679r4680
546546
547547static void irqhandler(const device_config *device, int linestate)
548548{
549   cpu_set_input_line(device->machine->cpu[1],0,linestate);
549   cputag_set_input_line(device->machine, "soundcpu", 0, linestate);
550550}
551551
552552static const ym3812_interface ym3812_config =
src/mame/drivers/news.c
r4679r4680
1919#include "sound/okim6295.h"
2020
2121
22static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 )
23   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
24   AM_RANGE(0x8000, 0x8fff) AM_READ(SMH_RAM)
22static ADDRESS_MAP_START( news_map, ADDRESS_SPACE_PROGRAM, 8 )
23   AM_RANGE(0x0000, 0x7fff) AM_ROM    /* 4000-7fff is written to during startup, probably leftover code */
24   AM_RANGE(0x8000, 0x87ff) AM_RAM_WRITE(news_fgram_w) AM_BASE(&news_fgram)
25   AM_RANGE(0x8800, 0x8fff) AM_RAM_WRITE(news_bgram_w) AM_BASE(&news_bgram)
26   AM_RANGE(0x9000, 0x91ff) AM_RAM_WRITE(paletteram_xxxxRRRRGGGGBBBB_be_w) AM_BASE(&paletteram)
2527   AM_RANGE(0xc000, 0xc000) AM_READ_PORT("DSW")
2628   AM_RANGE(0xc001, 0xc001) AM_READ_PORT("INPUTS")
27   AM_RANGE(0xc002, 0xc002) AM_DEVREAD("oki", okim6295_r)
28   AM_RANGE(0xe000, 0xffff) AM_READ(SMH_RAM)
29ADDRESS_MAP_END
30
31static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 )
32   AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM)   /* 4000-7fff is written to during startup, probably leftover code */
33   AM_RANGE(0x8000, 0x87ff) AM_WRITE(news_fgram_w) AM_BASE(&news_fgram)
34   AM_RANGE(0x8800, 0x8fff) AM_WRITE(news_bgram_w) AM_BASE(&news_bgram)
35   AM_RANGE(0x9000, 0x91ff) AM_WRITE(paletteram_xxxxRRRRGGGGBBBB_be_w) AM_BASE(&paletteram)
36   AM_RANGE(0xc002, 0xc002) AM_DEVWRITE("oki", okim6295_w) /* ?? */
29   AM_RANGE(0xc002, 0xc002) AM_DEVREADWRITE("oki", okim6295_r,okim6295_w)
3730   AM_RANGE(0xc003, 0xc003) AM_WRITE(news_bgpic_w)
38   AM_RANGE(0xe000, 0xffff) AM_WRITE(SMH_RAM)
31   AM_RANGE(0xe000, 0xffff) AM_RAM
3932ADDRESS_MAP_END
4033
4134
r4679r4680
123116static MACHINE_DRIVER_START( news )
124117   /* basic machine hardware */
125118   MDRV_CPU_ADD("maincpu", Z80,8000000)       /* ? MHz */
126   MDRV_CPU_PROGRAM_MAP(readmem,writemem)
119   MDRV_CPU_PROGRAM_MAP(news_map,0)
127120   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
128121
129122   /* video hardware */
src/mame/drivers/galpanic.c
r4679r4680
217217   }
218218}
219219
220static ADDRESS_MAP_START( galpanic, ADDRESS_SPACE_PROGRAM, 16 )
220static ADDRESS_MAP_START( galpanic_map, ADDRESS_SPACE_PROGRAM, 16 )
221221   AM_RANGE(0x000000, 0x3fffff) AM_ROM
222222   AM_RANGE(0x400000, 0x400001) AM_DEVREADWRITE8("oki", okim6295_r, okim6295_w, 0x00ff)
223223   AM_RANGE(0x500000, 0x51ffff) AM_RAM AM_BASE(&galpanic_fgvideoram) AM_SIZE(&galpanic_fgvideoram_size)
224   AM_RANGE(0x520000, 0x53ffff) AM_READWRITE(SMH_RAM,galpanic_bgvideoram_w) AM_BASE(&galpanic_bgvideoram)   /* + work RAM */
225   AM_RANGE(0x600000, 0x6007ff) AM_READWRITE(SMH_RAM,galpanic_paletteram_w) AM_BASE(&paletteram16)   /* 1024 colors, but only 512 seem to be used */
226   AM_RANGE(0x700000, 0x701fff) AM_READWRITE(pandora_spriteram_LSB_r, pandora_spriteram_LSB_w )
224   AM_RANGE(0x520000, 0x53ffff) AM_RAM_WRITE(galpanic_bgvideoram_w) AM_BASE(&galpanic_bgvideoram)   /* + work RAM */
225   AM_RANGE(0x600000, 0x6007ff) AM_RAM_WRITE(galpanic_paletteram_w) AM_BASE(&paletteram16)   /* 1024 colors, but only 512 seem to be used */
226   AM_RANGE(0x700000, 0x701fff) AM_READWRITE(pandora_spriteram_LSB_r, pandora_spriteram_LSB_w)
227227   AM_RANGE(0x702000, 0x704fff) AM_RAM
228228   AM_RANGE(0x800000, 0x800001) AM_READ_PORT("DSW1_P1")
229229   AM_RANGE(0x800002, 0x800003) AM_READ_PORT("DSW2_P2")
r4679r4680
252252   return retvalue;
253253}
254254
255static ADDRESS_MAP_START( comad_readmem, ADDRESS_SPACE_PROGRAM, 16 )
256   AM_RANGE(0x000000, 0x4fffff) AM_READ(SMH_ROM)
257   AM_RANGE(0x500000, 0x51ffff) AM_READ(SMH_RAM)
258   AM_RANGE(0x520000, 0x53ffff) AM_READ(SMH_RAM)
259   AM_RANGE(0x600000, 0x6007ff) AM_READ(SMH_RAM)
260   AM_RANGE(0x700000, 0x700fff) AM_READ(SMH_RAM)
255static ADDRESS_MAP_START( comad_map, ADDRESS_SPACE_PROGRAM, 16 )
256   AM_RANGE(0x000000, 0x4fffff) AM_ROM
257   AM_RANGE(0x500000, 0x51ffff) AM_RAM AM_BASE(&galpanic_fgvideoram) AM_SIZE(&galpanic_fgvideoram_size)
258   AM_RANGE(0x520000, 0x53ffff) AM_RAM_WRITE(galpanic_bgvideoram_w) AM_BASE(&galpanic_bgvideoram)   /* + work RAM */
259   AM_RANGE(0x600000, 0x6007ff) AM_RAM_WRITE(galpanic_paletteram_w) AM_BASE(&paletteram16)   /* 1024 colors, but only 512 seem to be used */
260   AM_RANGE(0x700000, 0x700fff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)
261261   AM_RANGE(0x800000, 0x800001) AM_READ_PORT("DSW1_P1")
262262   AM_RANGE(0x800002, 0x800003) AM_READ_PORT("DSW2_P2")
263263   AM_RANGE(0x800004, 0x800005) AM_READ_PORT("SYSTEM")
264264//  AM_RANGE(0x800006, 0x800007)    ??
265265   AM_RANGE(0x80000a, 0x80000b) AM_READ(kludge)   /* bits 8-a = timer? palette update code waits for them to be 111 */
266266   AM_RANGE(0x80000c, 0x80000d) AM_READ(kludge)   /* missw96 bits 8-a = timer? palette update code waits for them to be 111 */
267   AM_RANGE(0xc00000, 0xc0ffff) AM_READ(SMH_RAM)   /* missw96 */
268   AM_RANGE(0xc80000, 0xc8ffff) AM_READ(SMH_RAM)   /* fantasia, newfant */
269   AM_RANGE(0xf00000, 0xf00001) AM_DEVREAD8("oki", comad_okim6295_r, 0xff00)   /* fantasia, missw96 */
270   AM_RANGE(0xf80000, 0xf80001) AM_DEVREAD8("oki", comad_okim6295_r, 0xff00)   /* newfant */
271ADDRESS_MAP_END
272
273static ADDRESS_MAP_START( comad_writemem, ADDRESS_SPACE_PROGRAM, 16 )
274   AM_RANGE(0x000000, 0x4fffff) AM_WRITE(SMH_ROM)
275   AM_RANGE(0x500000, 0x51ffff) AM_WRITE(SMH_RAM) AM_BASE(&galpanic_fgvideoram) AM_SIZE(&galpanic_fgvideoram_size)
276   AM_RANGE(0x520000, 0x53ffff) AM_WRITE(galpanic_bgvideoram_w) AM_BASE(&galpanic_bgvideoram)   /* + work RAM */
277   AM_RANGE(0x600000, 0x6007ff) AM_WRITE(galpanic_paletteram_w) AM_BASE(&paletteram16)   /* 1024 colors, but only 512 seem to be used */
278   AM_RANGE(0x700000, 0x700fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)
279267   AM_RANGE(0x900000, 0x900001) AM_WRITE(galpania_6295_bankswitch_w)   /* not sure */
280   AM_RANGE(0xc00000, 0xc0ffff) AM_WRITE(SMH_RAM)   /* missw96 */
281   AM_RANGE(0xc80000, 0xc8ffff) AM_WRITE(SMH_RAM)   /* fantasia, newfant */
282   AM_RANGE(0xf00000, 0xf00001) AM_DEVWRITE8("oki", okim6295_w, 0xff00)   /* fantasia, missw96 */
283   AM_RANGE(0xf80000, 0xf80001) AM_DEVWRITE8("oki", okim6295_w, 0xff00)   /* newfant */
268   AM_RANGE(0xc00000, 0xc0ffff) AM_RAM            /* missw96 */
269   AM_RANGE(0xc80000, 0xc8ffff) AM_RAM            /* fantasia, newfant */
270   AM_RANGE(0xf00000, 0xf00001) AM_DEVREADWRITE8("oki", comad_okim6295_r, okim6295_w, 0xff00)   /* fantasia, missw96 */
271   AM_RANGE(0xf80000, 0xf80001) AM_DEVREADWRITE8("oki", comad_okim6295_r, okim6295_w, 0xff00)   /* newfant */
284272ADDRESS_MAP_END
285273
286static ADDRESS_MAP_START( fantsia2_readmem, ADDRESS_SPACE_PROGRAM, 16 )
287   AM_RANGE(0x000000, 0x4fffff) AM_READ(SMH_ROM)
288   AM_RANGE(0x500000, 0x51ffff) AM_READ(SMH_RAM)
289   AM_RANGE(0x520000, 0x53ffff) AM_READ(SMH_RAM)
290   AM_RANGE(0x600000, 0x6007ff) AM_READ(SMH_RAM)
291   AM_RANGE(0x700000, 0x700fff) AM_READ(SMH_RAM)
274static ADDRESS_MAP_START( fantsia2_map, ADDRESS_SPACE_PROGRAM, 16 )
275   AM_RANGE(0x000000, 0x4fffff) AM_ROM
276   AM_RANGE(0x500000, 0x51ffff) AM_RAM AM_BASE(&galpanic_fgvideoram) AM_SIZE(&galpanic_fgvideoram_size)
277   AM_RANGE(0x520000, 0x53ffff) AM_RAM_WRITE(galpanic_bgvideoram_w) AM_BASE(&galpanic_bgvideoram)   /* + work RAM */
278   AM_RANGE(0x600000, 0x6007ff) AM_RAM_WRITE(galpanic_paletteram_w) AM_BASE(&paletteram16)   /* 1024 colors, but only 512 seem to be used */
279   AM_RANGE(0x700000, 0x700fff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)
292280   AM_RANGE(0x800000, 0x800001) AM_READ_PORT("DSW1_P1")
293281   AM_RANGE(0x800002, 0x800003) AM_READ_PORT("DSW2_P2")
294282   AM_RANGE(0x800004, 0x800005) AM_READ_PORT("SYSTEM")
295283//  AM_RANGE(0x800006, 0x800007)    ??
296284   AM_RANGE(0x800008, 0x800009) AM_READ(kludge)   /* bits 8-a = timer? palette update code waits for them to be 111 */
297   AM_RANGE(0xf80000, 0xf8ffff) AM_READ(SMH_RAM)
298   AM_RANGE(0xc80000, 0xc80001) AM_DEVREAD8("oki", comad_okim6295_r, 0xff00)
299ADDRESS_MAP_END
300
301static ADDRESS_MAP_START( fantsia2_writemem, ADDRESS_SPACE_PROGRAM, 16 )
302   AM_RANGE(0x000000, 0x4fffff) AM_WRITE(SMH_ROM)
303   AM_RANGE(0x500000, 0x51ffff) AM_WRITE(SMH_RAM) AM_BASE(&galpanic_fgvideoram) AM_SIZE(&galpanic_fgvideoram_size)
304   AM_RANGE(0x520000, 0x53ffff) AM_WRITE(galpanic_bgvideoram_w) AM_BASE(&galpanic_bgvideoram)   /* + work RAM */
305   AM_RANGE(0x600000, 0x6007ff) AM_WRITE(galpanic_paletteram_w) AM_BASE(&paletteram16)   /* 1024 colors, but only 512 seem to be used */
306   AM_RANGE(0x700000, 0x700fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)
307285   AM_RANGE(0x900000, 0x900001) AM_WRITE(galpania_6295_bankswitch_w)   /* not sure */
308   AM_RANGE(0xf80000, 0xf8ffff) AM_WRITE(SMH_RAM)
309286   AM_RANGE(0xa00000, 0xa00001) AM_WRITENOP   /* coin counters, + ? */
310   AM_RANGE(0xc80000, 0xc80001) AM_DEVWRITE8("oki", okim6295_w, 0xff00)
287   AM_RANGE(0xc80000, 0xc80001) AM_DEVREADWRITE8("oki", comad_okim6295_r, okim6295_w, 0xff00)
288   AM_RANGE(0xf80000, 0xf8ffff) AM_RAM
311289ADDRESS_MAP_END
312290
313291
314static ADDRESS_MAP_START( galhustl_readmem, ADDRESS_SPACE_PROGRAM, 16 )
315   AM_RANGE(0x000000, 0x0fffff) AM_READ(SMH_ROM)
316    AM_RANGE(0x500000, 0x51ffff) AM_READ(SMH_RAM)
317   AM_RANGE(0x580000, 0x583fff) AM_READ(SMH_RAM)
318   AM_RANGE(0x600000, 0x6007ff) AM_READ(SMH_RAM)
319   AM_RANGE(0x600800, 0x600fff) AM_READ(SMH_RAM)
320   AM_RANGE(0x680000, 0x68001f) AM_READ(SMH_RAM)
321   AM_RANGE(0x700000, 0x700fff) AM_READ(SMH_RAM)
322   AM_RANGE(0x780000, 0x78001f) AM_READ(SMH_RAM)
292static ADDRESS_MAP_START( galhustl_map, ADDRESS_SPACE_PROGRAM, 16 )
293   AM_RANGE(0x000000, 0x0fffff) AM_ROM
294    AM_RANGE(0x500000, 0x51ffff) AM_RAM AM_BASE(&galpanic_fgvideoram) AM_SIZE(&galpanic_fgvideoram_size)
295   AM_RANGE(0x520000, 0x53ffff) AM_WRITE(galpanic_bgvideoram_w) AM_BASE(&galpanic_bgvideoram)
296   AM_RANGE(0x580000, 0x583fff) AM_RAM_WRITE(galpanic_bgvideoram_mirror_w)
297   AM_RANGE(0x600000, 0x6007ff) AM_RAM_WRITE(galpanic_paletteram_w) AM_BASE(&paletteram16)   /* 1024 colors, but only 512 seem to be used */
298   AM_RANGE(0x600800, 0x600fff) AM_RAM   // writes only 1?
299   AM_RANGE(0x680000, 0x68001f) AM_RAM   // regs?
300   AM_RANGE(0x700000, 0x700fff) AM_RAM   AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)
301   AM_RANGE(0x780000, 0x78001f) AM_RAM   // regs?
323302   AM_RANGE(0x800000, 0x800001) AM_READ_PORT("DSW1_P1")
324303   AM_RANGE(0x800002, 0x800003) AM_READ_PORT("DSW2_P2")
325304   AM_RANGE(0x800004, 0x800005) AM_READ_PORT("SYSTEM")
326   AM_RANGE(0xd00000, 0xd00001) AM_DEVREAD8("oki", okim6295_r, 0xff00)
327   AM_RANGE(0xe80000, 0xe8ffff) AM_READ(SMH_RAM)
328ADDRESS_MAP_END
329
330static ADDRESS_MAP_START( galhustl_writemem, ADDRESS_SPACE_PROGRAM, 16 )
331   AM_RANGE(0x000000, 0x0fffff) AM_WRITE(SMH_ROM)
332    AM_RANGE(0x500000, 0x51ffff) AM_WRITE(SMH_RAM) AM_BASE(&galpanic_fgvideoram) AM_SIZE(&galpanic_fgvideoram_size)
333   AM_RANGE(0x520000, 0x53ffff) AM_WRITE(galpanic_bgvideoram_w) AM_BASE(&galpanic_bgvideoram)
334   AM_RANGE(0x580000, 0x583fff) AM_WRITE(galpanic_bgvideoram_mirror_w)
335   AM_RANGE(0x600000, 0x6007ff) AM_WRITE(galpanic_paletteram_w) AM_BASE(&paletteram16)   /* 1024 colors, but only 512 seem to be used */
336   AM_RANGE(0x600800, 0x600fff) AM_WRITE(SMH_RAM) // writes only 1?
337   AM_RANGE(0x680000, 0x68001f) AM_WRITE(SMH_RAM) // regs?
338   AM_RANGE(0x700000, 0x700fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)
339   AM_RANGE(0x780000, 0x78001f) AM_WRITE(SMH_RAM) // regs?
340   AM_RANGE(0xa00000, 0xa00001) AM_WRITENOP // ?
341305   AM_RANGE(0x900000, 0x900001) AM_WRITE(galpania_6295_bankswitch_w)
342   AM_RANGE(0xd00000, 0xd00001) AM_DEVWRITE8("oki", okim6295_w, 0xff00)
343   AM_RANGE(0xe80000, 0xe8ffff) AM_WRITE(SMH_RAM)
306   AM_RANGE(0xa00000, 0xa00001) AM_WRITENOP // ?
307   AM_RANGE(0xd00000, 0xd00001) AM_DEVREADWRITE8("oki", okim6295_r, okim6295_w, 0xff00)
308   AM_RANGE(0xe80000, 0xe8ffff) AM_RAM
344309ADDRESS_MAP_END
345310
346311#ifdef UNUSED_FUNCTION
r4679r4680
350315}
351316#endif
352317
353static ADDRESS_MAP_START( zipzap_readmem, ADDRESS_SPACE_PROGRAM, 16 )
354   AM_RANGE(0x000000, 0x4fffff) AM_READ(SMH_ROM)
355   AM_RANGE(0x500000, 0x51ffff) AM_READ(SMH_RAM)
356   AM_RANGE(0x520000, 0x53ffff) AM_READ(SMH_RAM)
357   AM_RANGE(0x580000, 0x583fff) AM_READ(SMH_RAM)
358   AM_RANGE(0x600000, 0x600fff) AM_READ(SMH_RAM)
359   AM_RANGE(0x680000, 0x68001f) AM_READ(SMH_RAM)
360   AM_RANGE(0x700000, 0x71ffff) AM_READ(SMH_RAM)
361   AM_RANGE(0x780000, 0x78001f) AM_READ(SMH_RAM)
318static ADDRESS_MAP_START( zipzap_map, ADDRESS_SPACE_PROGRAM, 16 )
319   AM_RANGE(0x000000, 0x4fffff) AM_ROM
320   AM_RANGE(0x500000, 0x51ffff) AM_RAM AM_BASE(&galpanic_fgvideoram) AM_SIZE(&galpanic_fgvideoram_size)
321   AM_RANGE(0x520000, 0x53ffff) AM_RAM_WRITE(galpanic_bgvideoram_w) AM_BASE(&galpanic_bgvideoram)
322   AM_RANGE(0x580000, 0x583fff) AM_RAM_WRITE(galpanic_bgvideoram_mirror_w)
323   AM_RANGE(0x600000, 0x600fff) AM_RAM_WRITE(galpanic_paletteram_w) AM_BASE(&paletteram16)   /* 1024 colors, but only 512 seem to be used */
324   AM_RANGE(0x680000, 0x68001f) AM_RAM
325   AM_RANGE(0x700000, 0x700fff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)
326   AM_RANGE(0x701000, 0x71ffff) AM_RAM
327   AM_RANGE(0x780000, 0x78001f) AM_RAM
362328   AM_RANGE(0x800000, 0x800001) AM_READ_PORT("DSW1_P1")
363329   AM_RANGE(0x800002, 0x800003) AM_READ_PORT("DSW2_P2")
364330   AM_RANGE(0x800004, 0x800005) AM_READ_PORT("SYSTEM")
365331
366   AM_RANGE(0xc00000, 0xc00001) AM_DEVREAD8("oki", comad_okim6295_r, 0xff00)
332   AM_RANGE(0x900000, 0x900001) AM_WRITE(galpania_6295_bankswitch_w)
367333
368   AM_RANGE(0xc80000, 0xc8ffff) AM_READ(SMH_RAM)
369ADDRESS_MAP_END
334   AM_RANGE(0xc00000, 0xc00001) AM_DEVREADWRITE8("oki", comad_okim6295_r, okim6295_w, 0xff00)
370335
371static ADDRESS_MAP_START( zipzap_writemem, ADDRESS_SPACE_PROGRAM, 16 )
372   AM_RANGE(0x000000, 0x4fffff) AM_WRITE(SMH_ROM)
373   AM_RANGE(0x500000, 0x51ffff) AM_WRITE(SMH_RAM) AM_BASE(&galpanic_fgvideoram) AM_SIZE(&galpanic_fgvideoram_size)
374   AM_RANGE(0x520000, 0x53ffff) AM_WRITE(galpanic_bgvideoram_w) AM_BASE(&galpanic_bgvideoram)
375   AM_RANGE(0x580000, 0x583fff) AM_WRITE(galpanic_bgvideoram_mirror_w)
376   AM_RANGE(0x600000, 0x600fff) AM_WRITE(galpanic_paletteram_w) AM_BASE(&paletteram16)   /* 1024 colors, but only 512 seem to be used */
377   AM_RANGE(0x680000, 0x68001f) AM_WRITE(SMH_RAM)
378   AM_RANGE(0x700000, 0x700fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)
379   AM_RANGE(0x701000, 0x71ffff) AM_WRITE(SMH_RAM)
380   AM_RANGE(0x780000, 0x78001f) AM_WRITE(SMH_RAM)
381   AM_RANGE(0x900000, 0x900001) AM_WRITE(galpania_6295_bankswitch_w)
382   AM_RANGE(0xc00000, 0xc00001) AM_DEVWRITE8("oki", okim6295_w, 0xff00)
383   AM_RANGE(0xc80000, 0xc8ffff) AM_WRITE(SMH_RAM) // main ram
336   AM_RANGE(0xc80000, 0xc8ffff) AM_RAM      // main ram
384337ADDRESS_MAP_END
385338
386static ADDRESS_MAP_START( supmodel_readmem, ADDRESS_SPACE_PROGRAM, 16 )
387   AM_RANGE(0x000000, 0x4fffff) AM_READ(SMH_ROM)
388   AM_RANGE(0x500000, 0x51ffff) AM_READ(SMH_RAM)
389   AM_RANGE(0x520000, 0x53ffff) AM_READ(SMH_RAM)
390//  AM_RANGE(0x580000, 0x583fff) AM_READ(SMH_RAM)
391   AM_RANGE(0x600000, 0x600fff) AM_READ(SMH_RAM)
392   AM_RANGE(0x680000, 0x68001f) AM_READ(SMH_RAM)
393   AM_RANGE(0x700000, 0x700fff) AM_READ(SMH_RAM)
394   AM_RANGE(0x780000, 0x78001f) AM_READ(SMH_RAM)
339static ADDRESS_MAP_START( supmodel_map, ADDRESS_SPACE_PROGRAM, 16 )
340   AM_RANGE(0x000000, 0x4fffff) AM_ROM
341   AM_RANGE(0x500000, 0x51ffff) AM_RAM AM_BASE(&galpanic_fgvideoram) AM_SIZE(&galpanic_fgvideoram_size)
342   AM_RANGE(0x520000, 0x53ffff) AM_RAM_WRITE(galpanic_bgvideoram_w) AM_BASE(&galpanic_bgvideoram)
343//  AM_RANGE(0x580000, 0x583fff) AM_RAM_WRITE(galpanic_bgvideoram_mirror_w) // can't be right, causes half the display to vanish at times!
344   AM_RANGE(0x600000, 0x600fff) AM_RAM_WRITE(galpanic_paletteram_w) AM_BASE(&paletteram16)   /* 1024 colors, but only 512 seem to be used */
345   AM_RANGE(0x680000, 0x68001f) AM_RAM
346   AM_RANGE(0x700000, 0x700fff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)
347   AM_RANGE(0x780000, 0x78001f) AM_RAM
395348   AM_RANGE(0x800000, 0x800001) AM_READ_PORT("DSW1_P1")
396349   AM_RANGE(0x800002, 0x800003) AM_READ_PORT("DSW2_P2")
397350   AM_RANGE(0x800004, 0x800005) AM_READ_PORT("SYSTEM")
398351   AM_RANGE(0x800006, 0x800007) AM_READ(kludge)
399352   AM_RANGE(0x800008, 0x800009) AM_READ(kludge)
400   AM_RANGE(0xc80000, 0xc8ffff) AM_READ(SMH_RAM)
401   AM_RANGE(0xf80000, 0xf80001) AM_DEVREAD8("oki", comad_okim6295_r, 0xff00)
402ADDRESS_MAP_END
403
404static ADDRESS_MAP_START( supmodel_writemem, ADDRESS_SPACE_PROGRAM, 16 )
405   AM_RANGE(0x000000, 0x4fffff) AM_WRITE(SMH_ROM)
406   AM_RANGE(0x500000, 0x51ffff) AM_WRITE(SMH_RAM) AM_BASE(&galpanic_fgvideoram) AM_SIZE(&galpanic_fgvideoram_size)
407   AM_RANGE(0x520000, 0x53ffff) AM_WRITE(galpanic_bgvideoram_w) AM_BASE(&galpanic_bgvideoram)
408//  AM_RANGE(0x580000, 0x583fff) AM_WRITE(galpanic_bgvideoram_mirror_w) // can't be right, causes half the display to vanish at times!
409   AM_RANGE(0x600000, 0x600fff) AM_WRITE(galpanic_paletteram_w) AM_BASE(&paletteram16)   /* 1024 colors, but only 512 seem to be used */
410   AM_RANGE(0x680000, 0x68001f) AM_WRITE(SMH_RAM)
411   AM_RANGE(0x700000, 0x700fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)
412   AM_RANGE(0x780000, 0x78001f) AM_WRITE(SMH_RAM)
413353   AM_RANGE(0x900000, 0x900001) AM_WRITE(galpania_6295_bankswitch_w)   /* not sure */
414354   AM_RANGE(0xa00000, 0xa00001) AM_WRITENOP
415   AM_RANGE(0xc80000, 0xc8ffff) AM_WRITE(SMH_RAM) // main ram
355   AM_RANGE(0xc80000, 0xc8ffff) AM_RAM
416356   AM_RANGE(0xd80000, 0xd80001) AM_WRITENOP
417357   AM_RANGE(0xe00012, 0xe00013) AM_WRITENOP
418358   AM_RANGE(0xe80000, 0xe80001) AM_WRITENOP
419   AM_RANGE(0xf80000, 0xf80001) AM_DEVWRITE8("oki", okim6295_w, 0xff00)
359   AM_RANGE(0xf80000, 0xf80001) AM_DEVREADWRITE8("oki", comad_okim6295_r, okim6295_w, 0xff00)
420360ADDRESS_MAP_END
421361
422362#define COMMON_COIN0\
r4679r4680
933873
934874   /* basic machine hardware */
935875   MDRV_CPU_ADD("maincpu", M68000, XTAL_12MHz) /* verified on pcb */
936   MDRV_CPU_PROGRAM_MAP(galpanic,0)
876   MDRV_CPU_PROGRAM_MAP(galpanic_map,0)
937877   MDRV_CPU_VBLANK_INT_HACK(galpanic_interrupt,2)
938878
939879   /* video hardware */
r4679r4680
975915   /* basic machine hardware */
976916   MDRV_IMPORT_FROM(galpanic)
977917   MDRV_CPU_REPLACE("maincpu", M68000, 10000000)
978   MDRV_CPU_PROGRAM_MAP(comad_readmem,comad_writemem)
918   MDRV_CPU_PROGRAM_MAP(comad_map,0)
979919
980920   /* video hardware */
981921   MDRV_VIDEO_UPDATE(comad)
r4679r4680
987927   /* basic machine hardware */
988928   MDRV_IMPORT_FROM(comad)
989929   MDRV_CPU_REPLACE("maincpu", M68000, 12000000)   /* ? */
990   MDRV_CPU_PROGRAM_MAP(supmodel_readmem,supmodel_writemem)
930   MDRV_CPU_PROGRAM_MAP(supmodel_map,0)
991931   MDRV_CPU_VBLANK_INT_HACK(galpanic_interrupt,2)
992932
993933   /* video hardware */
r4679r4680
1006946   /* basic machine hardware */
1007947   MDRV_IMPORT_FROM(comad)
1008948   MDRV_CPU_REPLACE("maincpu", M68000, 12000000)   /* ? */
1009   MDRV_CPU_PROGRAM_MAP(fantsia2_readmem,fantsia2_writemem)
949   MDRV_CPU_PROGRAM_MAP(fantsia2_map,0)
1010950
1011951   /* video hardware */
1012952   MDRV_VIDEO_UPDATE(comad)
r4679r4680
1018958   /* basic machine hardware */
1019959   MDRV_IMPORT_FROM(comad)
1020960   MDRV_CPU_REPLACE("maincpu", M68000, 12000000)   /* ? */
1021   MDRV_CPU_PROGRAM_MAP(galhustl_readmem,galhustl_writemem)
961   MDRV_CPU_PROGRAM_MAP(galhustl_map,0)
1022962   MDRV_CPU_VBLANK_INT_HACK(galhustl_interrupt,3)
1023963
1024964   /* video hardware */
r4679r4680
1036976   /* basic machine hardware */
1037977   MDRV_IMPORT_FROM(comad)
1038978   MDRV_CPU_REPLACE("maincpu", M68000, 12000000)   /* ? */
1039   MDRV_CPU_PROGRAM_MAP(zipzap_readmem,zipzap_writemem)
979   MDRV_CPU_PROGRAM_MAP(zipzap_map,0)
1040980   MDRV_CPU_VBLANK_INT_HACK(galhustl_interrupt,3)
1041981
1042982   /* video hardware */
src/mame/drivers/finalizr.c
r4679r4680
6363
6464static WRITE8_HANDLER( finalizr_i8039_irq_w )
6565{
66   cpu_set_input_line(space->machine->cpu[1], 0, ASSERT_LINE);
66   cputag_set_input_line(space->machine, "audiocpu", 0, ASSERT_LINE);
6767}
6868
6969static WRITE8_HANDLER( i8039_irqen_w )
r4679r4680
7474    */
7575
7676   if ((data & 0x80) == 0)
77      cpu_set_input_line(space->machine->cpu[1], 0, CLEAR_LINE);
77      cputag_set_input_line(space->machine, "audiocpu", 0, CLEAR_LINE);
7878}
7979
8080static READ8_HANDLER( i8039_T1_r )
src/mame/drivers/segaybd.c
r4679r4680
1/***************************************************************************
1   /***************************************************************************
22
33    Sega Y-board hardware
44
r4679r4680
8282
8383static void update_main_irqs(running_machine *machine)
8484{
85   cpu_set_input_line(machine->cpu[0], 2, timer_irq_state ? ASSERT_LINE : CLEAR_LINE);
86   cpu_set_input_line(machine->cpu[1], 2, timer_irq_state ? ASSERT_LINE : CLEAR_LINE);
87   cpu_set_input_line(machine->cpu[2], 2, timer_irq_state ? ASSERT_LINE : CLEAR_LINE);
88   cpu_set_input_line(machine->cpu[0], 4, vblank_irq_state ? ASSERT_LINE : CLEAR_LINE);
89   cpu_set_input_line(machine->cpu[1], 4, vblank_irq_state ? ASSERT_LINE : CLEAR_LINE);
90   cpu_set_input_line(machine->cpu[2], 4, vblank_irq_state ? ASSERT_LINE : CLEAR_LINE);
91   cpu_set_input_line(machine->cpu[0], 6, timer_irq_state && vblank_irq_state ? ASSERT_LINE : CLEAR_LINE);
92   cpu_set_input_line(machine->cpu[1], 6, timer_irq_state && vblank_irq_state ? ASSERT_LINE : CLEAR_LINE);
93   cpu_set_input_line(machine->cpu[2], 6, timer_irq_state && vblank_irq_state ? ASSERT_LINE : CLEAR_LINE);
85   cputag_set_input_line(machine, "maincpu", 2, timer_irq_state ? ASSERT_LINE : CLEAR_LINE);
86   cputag_set_input_line(machine, "subx", 2, timer_irq_state ? ASSERT_LINE : CLEAR_LINE);
87   cputag_set_input_line(machine, "suby", 2, timer_irq_state ? ASSERT_LINE : CLEAR_LINE);
88   cputag_set_input_line(machine, "maincpu", 4, vblank_irq_state ? ASSERT_LINE : CLEAR_LINE);
89   cputag_set_input_line(machine, "subx", 4, vblank_irq_state ? ASSERT_LINE : CLEAR_LINE);
90   cputag_set_input_line(machine, "suby", 4, vblank_irq_state ? ASSERT_LINE : CLEAR_LINE);
91   cputag_set_input_line(machine, "maincpu", 6, timer_irq_state && vblank_irq_state ? ASSERT_LINE : CLEAR_LINE);
92   cputag_set_input_line(machine, "subx", 6, timer_irq_state && vblank_irq_state ? ASSERT_LINE : CLEAR_LINE);
93   cputag_set_input_line(machine, "suby", 6, timer_irq_state && vblank_irq_state ? ASSERT_LINE : CLEAR_LINE);
9494
9595   if(timer_irq_state || vblank_irq_state)
9696      cpuexec_boost_interleave(machine, attotime_zero, ATTOTIME_IN_USEC(50));
r4679r4680
209209
210210static void sound_cpu_irq(const device_config *device, int state)
211211{
212   cpu_set_input_line(device->machine->cpu[3], 0, state);
212   cputag_set_input_line(device->machine, "soundcpu", 0, state);
213213}
214214
215215
216216static TIMER_CALLBACK( delayed_sound_data_w )
217217{
218   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
218   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
219219
220220   soundlatch_w(space, 0, param);
221   cpu_set_input_line(machine->cpu[3], INPUT_LINE_NMI, ASSERT_LINE);
221   cputag_set_input_line(machine, "soundcpu", INPUT_LINE_NMI, ASSERT_LINE);
222222}
223223
224224
r4679r4680
231231
232232static READ8_HANDLER( sound_data_r )
233233{
234   cpu_set_input_line(space->machine->cpu[3], INPUT_LINE_NMI, CLEAR_LINE);
234   cputag_set_input_line(space->machine, "soundcpu", INPUT_LINE_NMI, CLEAR_LINE);
235235   return soundlatch_r(space,offset);
236236}
237237
r4679r4680
323323            */
324324         segaic16_set_display_enable(space->machine, data & 0x80);
325325         if (((old ^ data) & 0x20) && !(data & 0x20)) watchdog_reset_w(space,0,0);
326         cpu_set_input_line(space->machine->cpu[3], INPUT_LINE_RESET, (data & 0x10) ? CLEAR_LINE : ASSERT_LINE);
327         cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_RESET, (data & 0x08) ? ASSERT_LINE : CLEAR_LINE);
328         cpu_set_input_line(space->machine->cpu[2], INPUT_LINE_RESET, (data & 0x04) ? ASSERT_LINE : CLEAR_LINE);
326         cputag_set_input_line(space->machine, "soundcpu", INPUT_LINE_RESET, (data & 0x10) ? CLEAR_LINE : ASSERT_LINE);
327         cputag_set_input_line(space->machine, "subx", INPUT_LINE_RESET, (data & 0x08) ? ASSERT_LINE : CLEAR_LINE);
328         cputag_set_input_line(space->machine, "suby", INPUT_LINE_RESET, (data & 0x04) ? ASSERT_LINE : CLEAR_LINE);
329329         break;
330330
331331      /* mute */
src/mame/drivers/shuuz.c
r4679r4680
3333
3434static void update_interrupts(running_machine *machine)
3535{
36   cpu_set_input_line(machine->cpu[0], 4, atarigen_scanline_int_state ? ASSERT_LINE : CLEAR_LINE);
36   cputag_set_input_line(machine, "maincpu", 4, atarigen_scanline_int_state ? ASSERT_LINE : CLEAR_LINE);
3737}
3838
3939
src/mame/drivers/cclimber.c
r4679r4680
211211static WRITE8_HANDLER( swimmer_sh_soundlatch_w )
212212{
213213   soundlatch_w(space,offset,data);
214   cpu_set_input_line_and_vector(space->machine->cpu[1],0,HOLD_LINE,0xff);
214   cputag_set_input_line_and_vector(space->machine, "audiocpu", 0, HOLD_LINE, 0xff);
215215}
216216
217217
r4679r4680
248248
249249static TIMER_CALLBACK( disable_interrupts )
250250{
251   cpu_interrupt_enable(machine->cpu[0],0);
251   cpu_interrupt_enable(cputag_get_cpu(machine, "maincpu"), 0);
252252}
253253
254254
r4679r4680
358358ADDRESS_MAP_END
359359
360360static ADDRESS_MAP_START( toprollr_map, ADDRESS_SPACE_PROGRAM, 8 )
361   AM_RANGE(0x0000, 0x5fff) AM_READ(SMH_BANK1)
361   AM_RANGE(0x0000, 0x5fff) AM_READ(SMH_BANK(1))
362362   AM_RANGE(0x6000, 0x6bff) AM_RAM
363363   AM_RANGE(0x8800, 0x88ff) AM_RAM AM_BASE(&cclimber_bigsprite_videoram)
364364   AM_RANGE(0x8c00, 0x8fff) AM_RAM AM_BASE(&toprollr_bg_videoram)
r4679r4680
13071307   ROM_LOAD( "cc12j.bin",    0x1000, 0x1000, CRC(9003ffbd) SHA1(fd016056aabc23957643f37230f03842294f795e) )
13081308ROM_END
13091309
1310ROM_START( ckong2j )
1311   ROM_REGION( 0x10000, "maincpu", 0 )
1312   ROM_LOAD( "d05-07.bin",   0x0000, 0x1000, CRC(b27df032) SHA1(57f9be139c610405e3c2fddd7093dfb1277e450e) )
1313   ROM_LOAD( "f05-08.bin",   0x1000, 0x1000, CRC(5dc1aaba) SHA1(42b9e5946ffce7c156d114bde68f37c2c34853c4) )
1314   ROM_LOAD( "h05-09.bin",   0x2000, 0x1000, CRC(c9054c94) SHA1(1aa08d2501ee620759fd5c111e12f6d432c25294) )
1315   ROM_LOAD( "10.dat",       0x3000, 0x1000, CRC(c3beb501) SHA1(14f49c45fc7c91799034c5a51fca310f0a66b1d7) )
1316   ROM_LOAD( "11.5l",        0x4000, 0x1000, CRC(4164eb4d) SHA1(ec95f913820375c3f6dd24776b4d3fd04163f5de) )
1317   ROM_LOAD( "n05-12.bin",   0x5000, 0x1000, CRC(966bc9ab) SHA1(4434fc620169ffea1b1f227b61674e1daf79b54b) )
1318
1319   ROM_REGION( 0x4000, "gfx1", ROMREGION_DISPOSE )
1320   ROM_LOAD( "n11-06.bin",   0x0000, 0x1000, CRC(2dcedd12) SHA1(dfdcfc21bcba7c8e148ee54daae511ca78c58e70) )
1321   ROM_LOAD( "l11-05.bin",   0x1000, 0x1000, CRC(fa7cbd91) SHA1(0208d2ebc59f3600005476b6987472685bc99d67) )
1322   ROM_LOAD( "k11-04.bin",   0x2000, 0x1000, CRC(3375b3bd) SHA1(a00b3c31cff123aab6ac0833aabfdd663302971a) )
1323   ROM_LOAD( "h11-03.bin",   0x3000, 0x1000, CRC(5655cc11) SHA1(5195e9b2a60c54280b48b32ee8248090904dbc51) )
1324
1325   ROM_REGION( 0x1000, "gfx2", ROMREGION_DISPOSE )
1326   ROM_LOAD( "c11-02.bin",   0x0000, 0x0800, CRC(d1352c31) SHA1(da726a63a8be830d695afeddc1717749af8c9d47) )
1327   ROM_LOAD( "a11-01.bin",   0x0800, 0x0800, CRC(a7a2fdbd) SHA1(529865f8bbfbdbbf34ac39c70ef17e6d5bd0f845) )
1328
1329   ROM_REGION( 0x0060, "proms", 0 )
1330   ROM_LOAD( "prom.v6",      0x0000, 0x0020, CRC(b3fc1505) SHA1(5b94adde0428a26b815c7eb9b3f3716470d349c7) )
1331   ROM_LOAD( "prom.u6",      0x0020, 0x0020, CRC(26aada9e) SHA1(f59645e606ea4f0dd0fc4ea47dd03f526c534941) )
1332   ROM_LOAD( "prom.t6",      0x0040, 0x0020, CRC(676b3166) SHA1(29b9434cd34d43ea5664e436e2a24b54f8d88aac) )
1333
1334   ROM_REGION( 0x2000, "samples", 0 )   /* samples */
1335   ROM_LOAD( "cc13j.bin",    0x0000, 0x1000, CRC(5f0bcdfb) SHA1(7f79bf6de117348f606696ed7ea1937bbf926612) )
1336   ROM_LOAD( "cc12j.bin",    0x1000, 0x1000, CRC(9003ffbd) SHA1(fd016056aabc23957643f37230f03842294f795e) )
1337ROM_END
1338
13101339ROM_START( ckongjeu )
13111340   ROM_REGION( 0x10000, "maincpu", 0 )
13121341   ROM_LOAD( "d05-07.bin",   0x0000, 0x1000, CRC(b27df032) SHA1(57f9be139c610405e3c2fddd7093dfb1277e450e) )
r4679r4680
19161945GAME( 1980, ccboot2,  cclimber, cclimber, cclimber, cclimbrj, ROT0,   "bootleg", "Crazy Climber (bootleg set 2)", 0 )
19171946GAME( 1981, ckong,    0,        cclimber, ckong,    0,        ROT270, "Falcon", "Crazy Kong Part II (set 1)", 0 )
19181947GAME( 1981, ckonga,   ckong,    cclimber, ckong,    0,        ROT270, "Falcon", "Crazy Kong Part II (set 2)", 0 )
1948GAME( 1981, ckong2j,  ckong,    cclimber, ckong,    0,        ROT270, "Falcon", "Crazy Kong Part II (Japan)", 0 )
19191949GAME( 1981, ckongjeu, ckong,    cclimber, ckong,    0,        ROT270, "bootleg", "Crazy Kong Part II (Jeutel bootleg)", 0 )
19201950GAME( 1981, ckongo,   ckong,    cclimber, ckong,    0,        ROT270, "bootleg", "Crazy Kong (Orca bootleg)", 0 )
19211951GAME( 1981, ckongalc, ckong,    cclimber, ckong,    0,        ROT270, "bootleg", "Crazy Kong (Alca bootleg)", 0 )
src/mame/drivers/speedspn.c
r4679r4680
103103
104104static WRITE8_HANDLER(speedspn_sound_w)
105105{
106   soundlatch_w(space,1,data);
107   cpu_set_input_line(space->machine->cpu[1],0,HOLD_LINE);
106   soundlatch_w(space, 1, data);
107   cputag_set_input_line(space->machine, "audiocpu", 0, HOLD_LINE);
108108}
109109
110110static WRITE8_DEVICE_HANDLER( oki_banking_w )
r4679r4680
116116
117117/* main cpu */
118118
119static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 )
120   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
121   AM_RANGE(0x8000, 0x87ff) AM_READ(SMH_RAM)
122   AM_RANGE(0x8800, 0x8fff) AM_READ(SMH_RAM)
123   AM_RANGE(0x9000, 0x9fff) AM_READ(speedspn_vidram_r) /* banked? */
124   AM_RANGE(0xa000, 0xa7ff) AM_READ(SMH_RAM)
125   AM_RANGE(0xa800, 0xafff) AM_READ(SMH_RAM)
126   AM_RANGE(0xb000, 0xbfff) AM_READ(SMH_RAM)
127   AM_RANGE(0xc000, 0xffff) AM_READ(SMH_BANK1) /* banked ROM */
119static ADDRESS_MAP_START( speedspn_map, ADDRESS_SPACE_PROGRAM, 8 )
120   AM_RANGE(0x0000, 0x7fff) AM_ROM
121   AM_RANGE(0x8000, 0x87ff) AM_RAM_WRITE(paletteram_xxxxRRRRGGGGBBBB_le_w) AM_BASE(&paletteram)   /* RAM COLOUR */
122   AM_RANGE(0x8800, 0x8fff) AM_RAM_WRITE(speedspn_attram_w) AM_BASE(&speedspn_attram)
123   AM_RANGE(0x9000, 0x9fff) AM_READWRITE(speedspn_vidram_r,speedspn_vidram_w)   /* RAM FIX / RAM OBJECTS (selected by bit 0 of port 17) */
124   AM_RANGE(0xa000, 0xa7ff) AM_RAM
125   AM_RANGE(0xa800, 0xafff) AM_RAM
126   AM_RANGE(0xb000, 0xbfff) AM_RAM                                  /* RAM PROGRAM */
127   AM_RANGE(0xc000, 0xffff) AM_ROMBANK(1)                               /* banked ROM */
128128ADDRESS_MAP_END
129129
130static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 )
131   AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM)
132   AM_RANGE(0x8000, 0x87ff) AM_WRITE(paletteram_xxxxRRRRGGGGBBBB_le_w) AM_BASE(&paletteram)   /* RAM COLOUR */
133   AM_RANGE(0x8800, 0x8fff) AM_WRITE(speedspn_attram_w) AM_BASE(&speedspn_attram)
134   AM_RANGE(0x9000, 0x9fff) AM_WRITE(speedspn_vidram_w)   /* RAM FIX / RAM OBJECTS (selected by bit 0 of port 17) */
135   AM_RANGE(0xa000, 0xa7ff) AM_WRITE(SMH_RAM)
136   AM_RANGE(0xa800, 0xafff) AM_WRITE(SMH_RAM)
137   AM_RANGE(0xb000, 0xbfff) AM_WRITE(SMH_RAM) /* RAM PROGRAM */
138   AM_RANGE(0xc000, 0xffff) AM_WRITE(SMH_ROM)   /* banked ROM */
139ADDRESS_MAP_END
140
141static ADDRESS_MAP_START( io_map, ADDRESS_SPACE_IO, 8 )
130static ADDRESS_MAP_START( speedspn_io_map, ADDRESS_SPACE_IO, 8 )
142131   ADDRESS_MAP_GLOBAL_MASK(0xff)
143132   AM_RANGE(0x07, 0x07) AM_WRITE(speedspn_global_display_w)
144133   AM_RANGE(0x10, 0x10) AM_READ_PORT("SYSTEM")
r4679r4680
152141
153142/* sound cpu */
154143
155static ADDRESS_MAP_START( readmem2, ADDRESS_SPACE_PROGRAM, 8 )
156   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
157   AM_RANGE(0x8000, 0x87ff) AM_READ(SMH_RAM)
158   AM_RANGE(0x9800, 0x9800) AM_DEVREAD("oki", okim6295_r)
144static ADDRESS_MAP_START( speedspn_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
145   AM_RANGE(0x0000, 0x7fff) AM_ROM
146   AM_RANGE(0x8000, 0x87ff) AM_RAM
147   AM_RANGE(0x9000, 0x9000) AM_DEVWRITE("oki", oki_banking_w)
148   AM_RANGE(0x9800, 0x9800) AM_DEVREADWRITE("oki", okim6295_r,okim6295_w)
159149   AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_r)
160150ADDRESS_MAP_END
161151
162static ADDRESS_MAP_START( writemem2, ADDRESS_SPACE_PROGRAM, 8 )
163   AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM)
164   AM_RANGE(0x8000, 0x87ff) AM_WRITE(SMH_RAM)
165   AM_RANGE(0x9000, 0x9000) AM_DEVWRITE("oki", oki_banking_w)
166   AM_RANGE(0x9800, 0x9800) AM_DEVWRITE("oki", okim6295_w)
167ADDRESS_MAP_END
168152
169153/*** INPUT PORT **************************************************************/
170154
r4679r4680
297281
298282   /* basic machine hardware */
299283   MDRV_CPU_ADD("maincpu",Z80,6000000)       /* 6 MHz */
300   MDRV_CPU_PROGRAM_MAP(readmem,writemem)
301   MDRV_CPU_IO_MAP(io_map,0)
284   MDRV_CPU_PROGRAM_MAP(speedspn_map,0)
285   MDRV_CPU_IO_MAP(speedspn_io_map,0)
302286   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
303287
304288   MDRV_CPU_ADD("audiocpu", Z80,6000000)       /* 6 MHz */
305   MDRV_CPU_PROGRAM_MAP(readmem2,writemem2)
289   MDRV_CPU_PROGRAM_MAP(speedspn_sound_map,0)
306290
307291   /* video hardware */
308292   MDRV_SCREEN_ADD("screen", RASTER)
r4679r4680
368352/*** GAME DRIVERS ************************************************************/
369353
370354GAME( 1994, speedspn, 0, speedspn, speedspn, 0, ROT180, "TCH", "Speed Spin", GAME_IMPERFECT_GRAPHICS )
371
src/mame/drivers/enigma2.c
r4679r4680
8888
8989static TIMER_CALLBACK( interrupt_clear_callback )
9090{
91   cpu_set_input_line(machine->cpu[0], 0, CLEAR_LINE);
91   cputag_set_input_line(machine, "maincpu", 0, CLEAR_LINE);
9292}
9393
9494
r4679r4680
101101   int vpos = video_screen_get_vpos(machine->primary_screen);
102102   UINT16 counter = vpos_to_vysnc_chain_counter(vpos);
103103   UINT8 vector = 0xc7 | ((counter & 0x80) >> 3) | ((~counter & 0x80) >> 4);
104   cpu_set_input_line_and_vector(machine->cpu[0], 0, ASSERT_LINE, vector);
104   cputag_set_input_line_and_vector(machine, "maincpu", 0, ASSERT_LINE, vector);
105105
106106   /* set up for next interrupt */
107107   if (counter == INT_TRIGGER_COUNT_1)
r4679r4680
139139static MACHINE_RESET( enigma2 )
140140{
141141   last_sound_data = 0;
142   cpu_set_input_line(machine->cpu[1], INPUT_LINE_NMI, CLEAR_LINE);
142   cputag_set_input_line(machine, "audiocpu", INPUT_LINE_NMI, CLEAR_LINE);
143143
144144   engima2_flip_screen = 0;
145145
r4679r4680
351351   if (!(data & 0x04) && (last_sound_data & 0x04))
352352      sound_latch = (sound_latch << 1) | (~data & 0x01);
353353
354   cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_NMI, (data & 0x02) ? ASSERT_LINE : CLEAR_LINE);
354   cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, (data & 0x02) ? ASSERT_LINE : CLEAR_LINE);
355355
356356   last_sound_data = data;
357357}
src/mame/drivers/igspoker.c
r4679r4680
101101
102102static WRITE8_HANDLER( igs_irqack_w )
103103{
104//  cpu_set_input_line(space->machine->cpu[0], 0, CLEAR_LINE);
104//  cputag_set_input_line(space->machine, "maincpu", 0, CLEAR_LINE);
105105}
106106
107107
r4679r4680
21002100   /* Descramble graphic */
21012101   rom = memory_region(machine, "gfx1");
21022102   length = memory_region_length(machine, "gfx1");
2103   tmp = malloc_or_die(length);
2103   tmp = alloc_array_or_die(UINT8, length);
21042104   memcpy(tmp,rom,length);
21052105   for (A = 0;A < length;A++)
21062106   {
r4679r4680
22512251GAMEL( 1998, stellecu,  0,        number10, number10, 0,       ROT0, "Sure",   "Stelle e Cubi (Italy)",                     GAME_NOT_WORKING,   layout_igspoker )
22522252
22532253GAMEL( 1993?, pktet346, 0,        pktetris, pktet346, pktet346,  ROT0, "IGS",   "PK Tetris (v346I)",                    0, layout_igspoker )
2254
2255
src/mame/drivers/cowrace.c
r4679r4680
4343
4444static VIDEO_UPDATE( cowrace )
4545{
46   tilemap_draw(bitmap,cliprect, tmap, 0, 0);
46   tilemap_draw(bitmap, cliprect, tmap, 0, 0);
4747   return 0;
4848}
4949
r4679r4680
5151static WRITE8_HANDLER( cowrace_soundlatch_w )
5252{
5353   soundlatch_w(0, data);
54   cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_NMI, PULSE_LINE);
54   cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
5555}
5656#endif
5757
src/mame/drivers/segaorun.c
r4679r4680
9797
9898static const segaic16_memory_map_entry outrun_info[] =
9999{
100   { 0x35/2, 0x90000, 0x10000, 0xf00000,      ~0, segaic16_road_control_0_r, segaic16_road_control_0_w, NULL,                  "road control" },
101   { 0x35/2, 0x80000, 0x01000, 0xf0f000,      ~0, SMH_BANK10,              SMH_BANK10,              &segaic16_roadram_0,   "road RAM" },
102   { 0x35/2, 0x60000, 0x08000, 0xf18000,      ~0, SMH_BANK11,              SMH_BANK11,              &cpu1ram,              "CPU 1 RAM" },
103   { 0x35/2, 0x00000, 0x60000, 0xf00000,      ~0, SMH_BANK12,              SMH_UNMAP,               &cpu1rom,              "CPU 1 ROM" },
104   { 0x31/2, 0x00000, 0x04000, 0xffc000,      ~0, misc_io_r,                 misc_io_w,                 NULL,                  "I/O space" },
105   { 0x2d/2, 0x00000, 0x01000, 0xfff000,      ~0, SMH_BANK13,              SMH_BANK13,              &segaic16_spriteram_0, "object RAM" },
106   { 0x29/2, 0x00000, 0x02000, 0xffe000,      ~0, SMH_BANK14,              segaic16_paletteram_w,     &paletteram16,         "color RAM" },
107   { 0x25/2, 0x00000, 0x10000, 0xfe0000,      ~0, SMH_BANK15,              segaic16_tileram_0_w,      &segaic16_tileram_0,   "tile RAM" },
108   { 0x25/2, 0x10000, 0x01000, 0xfef000,      ~0, SMH_BANK16,              segaic16_textram_0_w,      &segaic16_textram_0,   "text RAM" },
109   { 0x21/2, 0x60000, 0x08000, 0xf98000,      ~0, SMH_BANK17,              SMH_BANK17,              &workram,              "CPU 0 RAM" },
110   { 0x21/2, 0x00000, 0x60000, 0xf80000, 0x00000, SMH_BANK18,              SMH_UNMAP,               NULL,                  "CPU 0 ROM" },
100   { 0x35/2, 0x90000, 0x10000, 0xf00000,      ~0, segaic16_road_control_0_r,       segaic16_road_control_0_w,        NULL,                  "road control" },
101   { 0x35/2, 0x80000, 0x01000, 0xf0f000,      ~0, (read16_space_func)SMH_BANK(10), (write16_space_func)SMH_BANK(10), &segaic16_roadram_0,   "road RAM" },
102   { 0x35/2, 0x60000, 0x08000, 0xf18000,      ~0, (read16_space_func)SMH_BANK(11), (write16_space_func)SMH_BANK(11), &cpu1ram,              "CPU 1 RAM" },
103   { 0x35/2, 0x00000, 0x60000, 0xf00000,      ~0, (read16_space_func)SMH_BANK(12), (write16_space_func)SMH_UNMAP,    &cpu1rom,              "CPU 1 ROM" },
104   { 0x31/2, 0x00000, 0x04000, 0xffc000,      ~0, misc_io_r,                       misc_io_w,                        NULL,                  "I/O space" },
105   { 0x2d/2, 0x00000, 0x01000, 0xfff000,      ~0, (read16_space_func)SMH_BANK(13), (write16_space_func)SMH_BANK(13), &segaic16_spriteram_0, "object RAM" },
106   { 0x29/2, 0x00000, 0x02000, 0xffe000,      ~0, (read16_space_func)SMH_BANK(14), segaic16_paletteram_w,            &paletteram16,         "color RAM" },
107   { 0x25/2, 0x00000, 0x10000, 0xfe0000,      ~0, (read16_space_func)SMH_BANK(15), segaic16_tileram_0_w,             &segaic16_tileram_0,   "tile RAM" },
108   { 0x25/2, 0x10000, 0x01000, 0xfef000,      ~0, (read16_space_func)SMH_BANK(16), segaic16_textram_0_w,             &segaic16_textram_0,   "text RAM" },
109   { 0x21/2, 0x60000, 0x08000, 0xf98000,      ~0, (read16_space_func)SMH_BANK(17), (write16_space_func)SMH_BANK(17), &workram,              "CPU 0 RAM" },
110   { 0x21/2, 0x00000, 0x60000, 0xf80000, 0x00000, (read16_space_func)SMH_BANK(18), (write16_space_func)SMH_UNMAP,    NULL,                  "CPU 0 ROM" },
111111   { 0 }
112112};
113113
r4679r4680
121121
122122static TIMER_CALLBACK( delayed_sound_data_w )
123123{
124   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
124   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
125125   soundlatch_w(space, 0, param);
126   cpu_set_input_line(machine->cpu[2], INPUT_LINE_NMI, ASSERT_LINE);
126   cputag_set_input_line(machine, "soundcpu", INPUT_LINE_NMI, ASSERT_LINE);
127127}
128128
129129
r4679r4680
135135
136136static READ8_HANDLER( sound_data_r )
137137{
138   cpu_set_input_line(space->machine->cpu[2], INPUT_LINE_NMI, CLEAR_LINE);
138   cputag_set_input_line(space->machine, "soundcpu", INPUT_LINE_NMI, CLEAR_LINE);
139139   return soundlatch_r(space,offset);
140140}
141141
r4679r4680
144144static void outrun_generic_init(running_machine *machine)
145145{
146146   /* allocate memory for regions not automatically assigned */
147   segaic16_spriteram_0 = auto_malloc(0x01000);
148   paletteram16         = auto_malloc(0x02000);
149   segaic16_tileram_0   = auto_malloc(0x10000);
150   segaic16_textram_0   = auto_malloc(0x01000);
151   workram              = auto_malloc(0x08000);
147   segaic16_spriteram_0 = auto_alloc_array(machine, UINT16, 0x01000/2);
148   paletteram16         = auto_alloc_array(machine, UINT16, 0x02000/2);
149   segaic16_tileram_0   = auto_alloc_array(machine, UINT16, 0x10000/2);
150   segaic16_textram_0   = auto_alloc_array(machine, UINT16, 0x01000/2);
151   workram              = auto_alloc_array(machine, UINT16, 0x08000/2);
152152
153153   /* init the memory mapper */
154154   segaic16_memory_mapper_init(cputag_get_cpu(machine, "maincpu"), outrun_info, sound_data_w, NULL);
r4679r4680
172172
173173static void update_main_irqs(running_machine *machine)
174174{
175   cpu_set_input_line(machine->cpu[0], 2, irq2_state ? ASSERT_LINE : CLEAR_LINE);
176   cpu_set_input_line(machine->cpu[0], 4, vblank_irq_state ? ASSERT_LINE : CLEAR_LINE);
177   cpu_set_input_line(machine->cpu[0], 6, vblank_irq_state && irq2_state ? ASSERT_LINE : CLEAR_LINE);
175   cputag_set_input_line(machine, "maincpu", 2, irq2_state ? ASSERT_LINE : CLEAR_LINE);
176   cputag_set_input_line(machine, "maincpu", 4, vblank_irq_state ? ASSERT_LINE : CLEAR_LINE);
177   cputag_set_input_line(machine, "maincpu", 6, vblank_irq_state && irq2_state ? ASSERT_LINE : CLEAR_LINE);
178178
179179   if(vblank_irq_state || irq2_state)
180180      cpuexec_boost_interleave(machine, attotime_zero, ATTOTIME_IN_USEC(100));
r4679r4680
217217      case 223:
218218         vblank_irq_state = 1;
219219         next_scanline = scanline + 1;
220         cpu_set_input_line(machine->cpu[1], 4, ASSERT_LINE);
220         cputag_set_input_line(machine, "sub", 4, ASSERT_LINE);
221221         break;
222222
223223      /* VBLANK turns off at the start of scanline 224 */
224224      case 224:
225225         vblank_irq_state = 0;
226226         next_scanline = 65;
227         cpu_set_input_line(machine->cpu[1], 4, CLEAR_LINE);
227         cputag_set_input_line(machine, "sub", 4, CLEAR_LINE);
228228         break;
229229   }
230230
r4679r4680
245245
246246static void outrun_reset(const device_config *device)
247247{
248   cpu_set_input_line(device->machine->cpu[1], INPUT_LINE_RESET, PULSE_LINE);
248   cputag_set_input_line(device->machine, "sub", INPUT_LINE_RESET, PULSE_LINE);
249249}
250250
251251
252252static MACHINE_RESET( outrun )
253253{
254   fd1094_machine_init(machine->cpu[0]);
254   fd1094_machine_init(cputag_get_cpu(machine, "maincpu"));
255255
256256   /* reset misc components */
257257   segaic16_memory_mapper_reset(machine);
r4679r4680
260260   segaic16_tilemap_reset(machine, 0);
261261
262262   /* hook the RESET line, which resets CPU #1 */
263   device_set_info_fct(machine->cpu[0], CPUINFO_FCT_M68K_RESET_CALLBACK, (genf *)outrun_reset);
263   m68k_set_reset_callback(cputag_get_cpu(machine, "maincpu"), outrun_reset);
264264
265265   /* start timers to track interrupts */
266266   timer_set(machine, video_screen_get_time_until_pos(machine->primary_screen, 223, 0), NULL, 223, scanline_callback);
r4679r4680
278278{
279279   static const char ports[] = "ABC";
280280
281   logerror("%06X:read from 8255 port %c\n", cpu_get_pc(machine->cpu[0]), ports[port]);
281   logerror("%06X:read from 8255 port %c\n", cpu_get_pc(cputag_get_cpu(machine, "maincpu")), ports[port]);
282282}
283283
284284
r4679r4680
286286{
287287   static const char ports[] = "ABC";
288288
289   logerror("%06X:write %02X to 8255 port %c\n", cpu_get_pc(machine->cpu[0]), data, ports[port]);
289   logerror("%06X:write %02X to 8255 port %c\n", cpu_get_pc(cputag_get_cpu(machine, "maincpu")), data, ports[port]);
290290}
291291
292292
r4679r4680
335335    */
336336   segaic16_set_display_enable(device->machine, data & 0x20);
337337   adc_select = (data >> 2) & 7;
338   cpu_set_input_line(device->machine->cpu[2], INPUT_LINE_RESET, (data & 0x01) ? CLEAR_LINE : ASSERT_LINE);
338   cputag_set_input_line(device->machine, "soundcpu", INPUT_LINE_RESET, (data & 0x01) ? CLEAR_LINE : ASSERT_LINE);
339339}
340340
341341
r4679r4680
475475         /* Output port:
476476                D0: Sound section reset (1= normal operation, 0= reset)
477477            */
478         cpu_set_input_line(space->machine->cpu[2], INPUT_LINE_RESET, (data & 1) ? CLEAR_LINE : ASSERT_LINE);
478         cputag_set_input_line(space->machine, "soundcpu", INPUT_LINE_RESET, (data & 1) ? CLEAR_LINE : ASSERT_LINE);
479479         return;
480480
481481      case 0x3000/2:
src/mame/drivers/videopkr.c
r4679r4680
864864
865865      if (dc_40103 == 0)
866866      {
867         cpu_set_input_line(machine->cpu[1], 0, ASSERT_LINE);
867         cputag_set_input_line(machine, "soundcpu", 0, ASSERT_LINE);
868868      }
869869   }
870870}
src/mame/drivers/koikoi.c
r4679r4680
99TODO:
1010- map inputs (temp mapped to keys a-l and z-x)
1111- is there (still..) some kind of protection ? timers looks weird (2nd player timer is frozen)
12- colors (afaik color(?) prom outputs are connected to one of pals)
12- colors (afaik color(?) prom outputs are connected to one of pals), might help to have a screenshot of the original thing.
1313
1414
1515Basic hw is...
r4679r4680
5151
5252static TILE_GET_INFO( get_tile_info )
5353{
54   int code  = videoram[tile_index]|((videoram[tile_index+0x400]<<2)&0x100);
55   int color = videoram[tile_index+0x400]&0x1f;
56   int flip  =(videoram[tile_index+0x400]&0x80)?(TILEMAP_FLIPX|TILEMAP_FLIPY):0;
54   int code  = videoram[tile_index]|((videoram[tile_index+0x400] & 0x40)<<2);
55   int color = (videoram[tile_index+0x400]&0x1f);
56   int flip  = (videoram[tile_index+0x400]&0x80)?(TILEMAP_FLIPX|TILEMAP_FLIPY):0;
5757
5858   SET_TILE_INFO(   0,   code,   color, flip);
5959}
r4679r4680
6464   tilemap_mark_tile_dirty(koikoi_tilemap,offset&0x3ff);
6565}
6666
67static READ8_HANDLER(vram_r)
68{
69   return videoram[offset];
70}
71
7267static READ8_DEVICE_HANDLER(input_r)
7368{
7469   if(inputcnt<0)
r4679r4680
111106static READ8_HANDLER(io_r)
112107{
113108   if(!offset)
114   {
115         return input_port_read(space->machine, "IN0")^ioram[4]; //coin
116   }
109      return input_port_read(space->machine, "IN0")^ioram[4]; //coin
110
117111   return 0;
118112}
119113
120114static WRITE8_HANDLER(io_w)
121115{
122116   if(offset==7 && data==0)
123   {
124117      inputcnt=0; //reset read cycle counter
125   }
118
126119   ioram[offset]=data;
127120}
128121
129static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 )
122static ADDRESS_MAP_START( koikoi_map, ADDRESS_SPACE_PROGRAM, 8 )
130123   AM_RANGE(0x0000, 0x2fff) AM_ROM
131124   AM_RANGE(0x6000, 0x67ff) AM_RAM
125   AM_RANGE(0x7000, 0x77ff) AM_RAM_WRITE(vram_w) AM_BASE(&videoram)
132126   AM_RANGE(0x8000, 0x8000) AM_READ_PORT("DSW")
133   AM_RANGE(0x7000, 0x77ff) AM_READWRITE(vram_r, vram_w) AM_BASE(&videoram)
134127   AM_RANGE(0x9000, 0x9007) AM_READWRITE(io_r, io_w)
135128ADDRESS_MAP_END
136129
137static ADDRESS_MAP_START( readport, ADDRESS_SPACE_IO, 8 )
130static ADDRESS_MAP_START( koikoi_io_map, ADDRESS_SPACE_IO, 8 )
138131   ADDRESS_MAP_GLOBAL_MASK(0xff)
139132   AM_RANGE(0x02, 0x02) AM_WRITENOP //unknown , many writes
140133   AM_RANGE(0x03, 0x03) AM_DEVREAD("ay", ay8910_r)
r4679r4680
176169   PORT_BIT( 0xbf, IP_ACTIVE_LOW, IPT_UNUSED )
177170
178171   PORT_START("IN1")   /* IN1 */
179   PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_A) //1
180   PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_S) //2
181   PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_D) //3
182   PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_F) //4
183   PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_G) //5
184   PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_H) //6
185   PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_J) //7
186   PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_K) //8
172   PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("P1 Button 1") PORT_CODE(KEYCODE_A) //1
173   PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("P1 Button 2") PORT_CODE(KEYCODE_S) //2
174   PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_NAME("P1 Button 3") PORT_CODE(KEYCODE_D) //3
175   PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_NAME("P1 Button 4") PORT_CODE(KEYCODE_F) //4
176   PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_BUTTON5 ) PORT_NAME("P1 Button 5") PORT_CODE(KEYCODE_G) //5
177   PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_BUTTON6 ) PORT_NAME("P1 Button 6") PORT_CODE(KEYCODE_H) //6
178   PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_BUTTON7 ) PORT_NAME("P1 Button 7") PORT_CODE(KEYCODE_J) //7
179   PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_BUTTON8 ) PORT_NAME("P1 Button 8") PORT_CODE(KEYCODE_K) //8
187180
188181   PORT_BIT( 0x0800, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_Z)
189182   PORT_BIT( 0x1000, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_X)
r4679r4680
198191{
199192   int i;
200193
201   for (i = 0;i < 256;i++)
194   for (i = 0;i < 0x100;i++)
202195   {
203196      int bit0,bit1,bit2,bit3,r,g,b;
204197
205      bit0 = (color_prom[i] >> 0) & 0x01;
206      bit1 = (color_prom[i] >> 1) & 0x01;
207      bit2 = (color_prom[i] >> 2) & 0x01;
208      bit3 = (color_prom[i] >> 3) & 0x01;
198      bit0 = (color_prom[i] >> 3) & 0x01;
199      bit1 = (color_prom[i] >> 2) & 0x01;
200      bit2 = (color_prom[i] >> 1) & 0x01;
201      bit3 = (color_prom[i] >> 0) & 0x01;
209202
210      r=bit0*255;
211      g=bit1*255;
212      b=bit2*255;
203      r=bit0*0xaa+bit3*0x55;
204      g=bit1*0xaa+bit3*0x55;
205      b=bit2*0xaa+bit3*0x55;
213206
214207      palette_set_color(machine,i,MAKE_RGB(r,g,b));
215208   }
r4679r4680
226219   return 0;
227220}
228221
229
230222static const gfx_layout tilelayout =
231223{
232224   8, 8,
233225   RGN_FRAC(1,3),
234226   3,
235   { RGN_FRAC(0,3), RGN_FRAC(1,3), RGN_FRAC(2,3) },
227   { RGN_FRAC(0,3), RGN_FRAC(2,3), RGN_FRAC(1,3) },
228   //{ RGN_FRAC(2,3), RGN_FRAC(0,3), RGN_FRAC(1,3) },
236229   { 0, 1, 2, 3, 4, 5, 6, 7 },
237230   { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
238231   8*8
r4679r4680
258251
259252   /* basic machine hardware */
260253   MDRV_CPU_ADD("maincpu", Z80,KOIKOI_CRYSTAL/4)   /* ?? */
261   MDRV_CPU_PROGRAM_MAP(readmem, 0)
262   MDRV_CPU_IO_MAP(readport, 0)
254   MDRV_CPU_PROGRAM_MAP(koikoi_map, 0)
255   MDRV_CPU_IO_MAP(koikoi_io_map, 0)
263256   MDRV_CPU_VBLANK_INT("screen", nmi_line_pulse)
264257
265258   /* video hardware */
r4679r4680
282275
283276   MDRV_SOUND_ADD("ay", AY8910, KOIKOI_CRYSTAL/8)
284277   MDRV_SOUND_CONFIG(ay8910_config)
285  MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10)
286
278   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10)
287279MACHINE_DRIVER_END
288280
289281
r4679r4680
314306   ROM_LOAD( "pal16r8a_yellow.ic8",   0x0400, 0x0104, CRC(7d8da540) SHA1(28925d1fb4ef670e9c9d24860b67fdff8791c6a9) )
315307   ROM_LOAD( "pal16r8a_brown.ic11",   0x0600, 0x0104, CRC(fff46363) SHA1(97f673c862e9d5b12cac283000a779c465c76828) )
316308   ROM_LOAD( "pal16r8a_red.ic10",     0x0800, 0x0104, CRC(027ad661) SHA1(fa5aafe6deb3a9865498152b92dd3776ea10a51d) )
317
318309ROM_END
319310
320311GAME( 1982, koikoi,   0,      koikoi, koikoi, 0, ROT270, "Kiwako", "Koi Koi Part 2", GAME_WRONG_COLORS )
src/mame/drivers/hexa.c
r4679r4680
5959
6060
6161
62static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 )
63   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
64   AM_RANGE(0x8000, 0xbfff) AM_READ(SMH_BANK1)
65   AM_RANGE(0xc000, 0xc7ff) AM_READ(SMH_RAM)
62static ADDRESS_MAP_START( hexa_map, ADDRESS_SPACE_PROGRAM, 8 )
63   AM_RANGE(0x0000, 0x7fff) AM_ROM
64   AM_RANGE(0x8000, 0xbfff) AM_ROMBANK(1)
65   AM_RANGE(0xc000, 0xc7ff) AM_RAM
6666   AM_RANGE(0xd001, 0xd001) AM_DEVREAD("ay", ay8910_r)
67   AM_RANGE(0xe000, 0xe7ff) AM_READ(SMH_RAM)
68ADDRESS_MAP_END
69
70static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 )
71   AM_RANGE(0x0000, 0xbfff) AM_WRITE(SMH_ROM)
72   AM_RANGE(0xc000, 0xc7ff) AM_WRITE(SMH_RAM)
7367   AM_RANGE(0xd000, 0xd001) AM_DEVWRITE("ay", ay8910_address_data_w)
7468   AM_RANGE(0xd008, 0xd008) AM_WRITE(hexa_d008_w)
7569   AM_RANGE(0xd010, 0xd010) AM_WRITE(watchdog_reset_w)   /* or IRQ acknowledge, or both */
76   AM_RANGE(0xe000, 0xe7ff) AM_WRITE(hexa_videoram_w) AM_BASE(&videoram) AM_SIZE(&videoram_size)
70   AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(hexa_videoram_w) AM_BASE(&videoram) AM_SIZE(&videoram_size)
7771ADDRESS_MAP_END
7872
7973
r4679r4680
151145
152146   /* basic machine hardware */
153147   MDRV_CPU_ADD("maincpu", Z80, 4000000)      /* 4 MHz ??????? */
154   MDRV_CPU_PROGRAM_MAP(readmem,writemem)
148   MDRV_CPU_PROGRAM_MAP(hexa_map,0)
155149   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
156150
157151   /* video hardware */
src/mame/drivers/mil4000.c
r4679r4680
135135
136136static VIDEO_START(mil4000)
137137{
138   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
138   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
139139   int i;
140140
141141   // game doesn't clear the palette, so to avoid seeing mame defaults we clear it
src/mame/drivers/gticlub.c
r4679r4680
12171217{
12181218   init_konami_cgboard(machine, 1, CGBOARD_TYPE_GTICLUB);
12191219
1220   sharc_dataram_0 = auto_malloc(0x100000);
1220   sharc_dataram_0 = auto_alloc_array(machine, UINT32, 0x100000/4);
12211221   gticlub_led_reg0 = gticlub_led_reg1 = 0x7f;
12221222
12231223   K001005_preprocess_texture_data(memory_region(machine, "gfx1"), memory_region_length(machine, "gfx1"), 1);
r4679r4680
12331233   set_cgboard_texture_bank(machine, 0, 5, memory_region(machine, "user5"));
12341234   set_cgboard_texture_bank(machine, 1, 6, memory_region(machine, "user5"));
12351235
1236   sharc_dataram_0 = auto_malloc(0x100000);
1237   sharc_dataram_1 = auto_malloc(0x100000);
1236   sharc_dataram_0 = auto_alloc_array(machine, UINT32, 0x100000/4);
1237   sharc_dataram_1 = auto_alloc_array(machine, UINT32, 0x100000/4);
12381238   gticlub_led_reg0 = gticlub_led_reg1 = 0x7f;
12391239
12401240   K056800_init(machine, sound_irq_callback);
src/mame/drivers/cloak.c
r4679r4680
144144
145145static WRITE8_HANDLER( cloak_irq_reset_0_w )
146146{
147   cpu_set_input_line(space->machine->cpu[0], 0, CLEAR_LINE);
147   cputag_set_input_line(space->machine, "maincpu", 0, CLEAR_LINE);
148148}
149149
150150static WRITE8_HANDLER( cloak_irq_reset_1_w )
151151{
152   cpu_set_input_line(space->machine->cpu[1], 0, CLEAR_LINE);
152   cputag_set_input_line(space->machine, "slave", 0, CLEAR_LINE);
153153}
154154
155155static WRITE8_HANDLER( cloak_nvram_enable_w )
src/mame/drivers/ilpag.c
r4679r4680
8383
8484static VIDEO_START(ilpag)
8585{
86   blit_buffer = auto_malloc(512*512*4); //just to be sure,number is wrong
86   blit_buffer = auto_alloc_array(machine, UINT8, 512*512*4); //just to be sure,number is wrong
8787}
8888
8989static VIDEO_UPDATE(ilpag)
r4679r4680
242242static WRITE16_HANDLER( irq_callback_w )
243243{
244244//  popmessage("%02x",data);
245   cpu_set_input_line(space->machine->cpu[0],3,HOLD_LINE );
245   cputag_set_input_line(space->machine, "maincpu", 3, HOLD_LINE );
246246}
247247
248248static WRITE16_HANDLER( sound_write_w )
src/mame/drivers/foodf.c
r4679r4680
115115
116116static void update_interrupts(running_machine *machine)
117117{
118   cpu_set_input_line(machine->cpu[0], 1, atarigen_scanline_int_state ? ASSERT_LINE : CLEAR_LINE);
119   cpu_set_input_line(machine->cpu[0], 2, atarigen_video_int_state ? ASSERT_LINE : CLEAR_LINE);
120   cpu_set_input_line(machine->cpu[0], 3, atarigen_scanline_int_state && atarigen_video_int_state ? ASSERT_LINE : CLEAR_LINE);
118   cputag_set_input_line(machine, "maincpu", 1, atarigen_scanline_int_state ? ASSERT_LINE : CLEAR_LINE);
119   cputag_set_input_line(machine, "maincpu", 2, atarigen_video_int_state ? ASSERT_LINE : CLEAR_LINE);
120   cputag_set_input_line(machine, "maincpu", 3, atarigen_scanline_int_state && atarigen_video_int_state ? ASSERT_LINE : CLEAR_LINE);
121121}
122122
123123
r4679r4680
131131       mystery yet */
132132
133133   /* INT 1 is on 32V */
134   atarigen_scanline_int_gen(machine->cpu[0]);
134   atarigen_scanline_int_gen(cputag_get_cpu(machine, "maincpu"));
135135
136136   /* advance to the next interrupt */
137137   scanline += 64;
src/mame/drivers/mazerbla.c
r4679r4680
284284{
285285   zpu_int_vector &= ~2;   /* clear D1 on INTA (interrupt acknowledge) */
286286
287   cpu_set_input_line(space->machine->cpu[0], 0, ASSERT_LINE);   /* main cpu interrupt (comes from CFB (generated at the start of INT routine on CFB) - vblank?) */
287   cputag_set_input_line(space->machine, "maincpu", 0, ASSERT_LINE);   /* main cpu interrupt (comes from CFB (generated at the start of INT routine on CFB) - vblank?) */
288288}
289289
290290static READ8_HANDLER( cfb_zpu_int_req_clr )
r4679r4680
292292   zpu_int_vector |= 2;
293293
294294   /* clear the INT line when there are no more interrupt requests */
295   if (zpu_int_vector==0xff)
296      cpu_set_input_line(space->machine->cpu[0], 0, CLEAR_LINE);
295   if (zpu_int_vector == 0xff)
296      cputag_set_input_line(space->machine, "maincpu", 0, CLEAR_LINE);
297297
298298   return 0;
299299}
r4679r4680
318318
319319
320320
321static UINT8 *cfb_zpu_sharedram;
322static WRITE8_HANDLER ( sharedram_CFB_ZPU_w )
323{
324   cfb_zpu_sharedram[offset] = data;
325}
326static READ8_HANDLER ( sharedram_CFB_ZPU_r )
327{
328   return cfb_zpu_sharedram[offset];
329}
330
331
332
333321static UINT8 ls670_0[4];
334322static UINT8 ls670_1[4];
335323
r4679r4680
471459   coin_counter_w(offset, (data&0x40)>>6 );
472460}
473461
474static ADDRESS_MAP_START( io_map, ADDRESS_SPACE_IO, 8 )
462static ADDRESS_MAP_START( mazerbla_map, ADDRESS_SPACE_PROGRAM, 8 )
463   AM_RANGE(0x0000, 0x7fff) AM_ROM
464   AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_SHARE(1)
465   AM_RANGE(0xd800, 0xd800) AM_READ(cfb_zpu_int_req_clr)
466   AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_BASE(&videoram) AM_SIZE(&videoram_size)
467   AM_RANGE(0xe800, 0xefff) AM_RAM
468ADDRESS_MAP_END
469
470static ADDRESS_MAP_START( mazerbla_io_map, ADDRESS_SPACE_IO, 8 )
475471   ADDRESS_MAP_GLOBAL_MASK(0xff)
476472   AM_RANGE(0x4c, 0x4f) AM_READWRITE(ls670_1_r, ls670_0_w)
477473   AM_RANGE(0x60, 0x60) AM_WRITE(zpu_bcd_decoder_w)
r4679r4680
481477   AM_RANGE(0x6e, 0x6f) AM_WRITE(zpu_led_w)
482478ADDRESS_MAP_END
483479
484static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 )
485   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
486   AM_RANGE(0xc000, 0xc7ff) AM_READ(sharedram_CFB_ZPU_r)
487   AM_RANGE(0xd800, 0xd800) AM_READ(cfb_zpu_int_req_clr)
488   AM_RANGE(0xe000, 0xe7ff) AM_READ(SMH_RAM)
489   AM_RANGE(0xe800, 0xefff) AM_READ(SMH_RAM)
490ADDRESS_MAP_END
491480
492static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 )
493   AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM)
494   AM_RANGE(0xc000, 0xc7ff) AM_WRITE(sharedram_CFB_ZPU_w)
495   AM_RANGE(0xe000, 0xe7ff) AM_WRITE(SMH_RAM) AM_BASE(&videoram) AM_SIZE(&videoram_size)
496   AM_RANGE(0xe800, 0xefff) AM_WRITE(SMH_RAM)
497ADDRESS_MAP_END
498
499
500
501481static UINT8 vsb_ls273;
502482static WRITE8_HANDLER( vsb_ls273_audio_control_w )
503483{
r4679r4680
508488}
509489
510490
511static ADDRESS_MAP_START( cpu2_io_map, ADDRESS_SPACE_IO, 8 )
491
492
493static ADDRESS_MAP_START( mazerbla_cpu2_map, ADDRESS_SPACE_PROGRAM, 8 )
494   AM_RANGE(0x0000, 0x1fff) AM_ROM
495   AM_RANGE(0x4000, 0x43ff) AM_RAM /* main RAM (stack) */
496   AM_RANGE(0x8000, 0x83ff) AM_RAM /* waveform ???*/
497ADDRESS_MAP_END
498
499static ADDRESS_MAP_START( mazerbla_cpu2_io_map, ADDRESS_SPACE_IO, 8 )
512500   ADDRESS_MAP_GLOBAL_MASK(0xff)
513501   AM_RANGE(0x00, 0x00) AM_WRITE(vsb_ls273_audio_control_w)
514502   AM_RANGE(0x80, 0x83) AM_READWRITE(ls670_0_r, ls670_1_w)
515503ADDRESS_MAP_END
516504
517static ADDRESS_MAP_START( readmem_cpu2, ADDRESS_SPACE_PROGRAM, 8 )
518   AM_RANGE(0x0000, 0x1fff) AM_READ(SMH_ROM)
519   AM_RANGE(0x4000, 0x43ff) AM_READ(SMH_RAM)
520   AM_RANGE(0x8000, 0x83ff) AM_READ(SMH_RAM)
521ADDRESS_MAP_END
522
523static ADDRESS_MAP_START( writemem_cpu2, ADDRESS_SPACE_PROGRAM, 8 )
524   AM_RANGE(0x0000, 0x1fff) AM_WRITE(SMH_ROM)
525   AM_RANGE(0x4000, 0x43ff) AM_WRITE(SMH_RAM) /* main RAM (stack) */
526   AM_RANGE(0x8000, 0x83ff) AM_WRITE(SMH_RAM) /* waveform ???*/
527ADDRESS_MAP_END
528
529
530
531
532
533/* Color Frame Buffer PCB */
534static WRITE8_HANDLER ( cfb_ram_w )
535{
536   cfb_ram[offset] = data;
537}
538static READ8_HANDLER ( cfb_ram_r )
539{
540   return cfb_ram[offset];
541}
542
543
544505static WRITE8_HANDLER(cfb_led_w)
545506{
546507   /* bit 7 - led on */
r4679r4680
614575   return (port02_status);
615576}
616577
617
618static ADDRESS_MAP_START( cpu3_io_map, ADDRESS_SPACE_IO, 8 )
619   ADDRESS_MAP_GLOBAL_MASK(0xff)
620   AM_RANGE(0x01, 0x01) AM_WRITE(cfb_backgnd_color_w)
621   AM_RANGE(0x02, 0x02) AM_READWRITE(cfb_port_02_r, cfb_led_w)   /* Read = VCU status ? */
622   AM_RANGE(0x03, 0x03) AM_WRITE(cfb_zpu_int_req_set_w)
623   AM_RANGE(0x04, 0x04) AM_WRITE(cfb_rom_bank_sel_w)
624   AM_RANGE(0x05, 0x05) AM_WRITE(cfb_vbank_w)   //visible/writable videopage select?
625ADDRESS_MAP_END
626/* Great Guns has a little different banking layout */
627
628static ADDRESS_MAP_START( gg_cpu3_io_map, ADDRESS_SPACE_IO, 8 )
629   ADDRESS_MAP_GLOBAL_MASK(0xff)
630   AM_RANGE(0x00, 0x00) AM_WRITENOP
631   AM_RANGE(0x01, 0x01) AM_WRITE(cfb_backgnd_color_w)
632   AM_RANGE(0x02, 0x02) AM_READWRITE(cfb_port_02_r, cfb_led_w)   /* Read = VCU status ? */
633   AM_RANGE(0x03, 0x03) AM_WRITE(cfb_zpu_int_req_set_w)
634   AM_RANGE(0x04, 0x04) AM_WRITE(cfb_rom_bank_sel_w_gg)
635   AM_RANGE(0x05, 0x05) AM_WRITE(cfb_vbank_w)   //visible/writable videopage select?
636ADDRESS_MAP_END
637
638
639578static UINT8 VCU_video_reg[4];
640579static WRITE8_HANDLER( VCU_video_reg_w )
641580{
r4679r4680
1028967   return 0;
1029968}
1030969
1031static ADDRESS_MAP_START( readmem_cpu3, ADDRESS_SPACE_PROGRAM, 8 )
1032   AM_RANGE(0x0000, 0x37ff) AM_READ(SMH_ROM)
1033   AM_RANGE(0x3800, 0x3fff) AM_READ(sharedram_CFB_ZPU_r)
1034   AM_RANGE(0x4000, 0x5fff) AM_READ(SMH_BANK1)            /* GFX roms */
1035   AM_RANGE(0x6000, 0x67ff) AM_READ(cfb_ram_r)            /* RAM for VCU commands and parameters */
1036
970static ADDRESS_MAP_START( mazerbla_cpu3_map, ADDRESS_SPACE_PROGRAM, 8 )
971   AM_RANGE(0x0000, 0x37ff) AM_ROM
972   AM_RANGE(0x3800, 0x3fff) AM_RAM AM_SHARE(1)
973   AM_RANGE(0x4000, 0x5fff) AM_ROMBANK(1)               /* GFX roms */
974   AM_RANGE(0x4000, 0x4003) AM_WRITE(VCU_video_reg_w)
975   AM_RANGE(0x6000, 0x67ff) AM_RAM AM_BASE(&cfb_ram)      /* Color Frame Buffer PCB, a.k.a. RAM for VCU commands and parameters */
1037976   AM_RANGE(0xa000, 0xa7ff) AM_READ(VCU_set_cmd_param_r)   /* VCU command and parameters LOAD */
1038   AM_RANGE(0xc000, 0xdfff) AM_READ(VCU_set_gfx_addr_r)      /* gfx LOAD (blit) */
1039   AM_RANGE(0xe000, 0xffff) AM_READ(VCU_set_clr_addr_r)      /* palette? LOAD */
977   AM_RANGE(0xc000, 0xdfff) AM_READ(VCU_set_gfx_addr_r)   /* gfx LOAD (blit) */
978   AM_RANGE(0xe000, 0xffff) AM_READ(VCU_set_clr_addr_r)   /* palette? LOAD */
1040979ADDRESS_MAP_END
1041980
1042static ADDRESS_MAP_START( writemem_cpu3, ADDRESS_SPACE_PROGRAM, 8 )
1043   AM_RANGE(0x0000, 0x37ff) AM_WRITE(SMH_ROM)
1044   AM_RANGE(0x3800, 0x3fff) AM_WRITE(sharedram_CFB_ZPU_w) AM_BASE(&cfb_zpu_sharedram)
1045   AM_RANGE(0x4000, 0x4003) AM_WRITE(VCU_video_reg_w)
1046   AM_RANGE(0x6000, 0x67ff) AM_WRITE(cfb_ram_w) AM_BASE(&cfb_ram)
981static ADDRESS_MAP_START( mazerbla_cpu3_io_map, ADDRESS_SPACE_IO, 8 )
982   ADDRESS_MAP_GLOBAL_MASK(0xff)
983   AM_RANGE(0x01, 0x01) AM_WRITE(cfb_backgnd_color_w)
984   AM_RANGE(0x02, 0x02) AM_READWRITE(cfb_port_02_r, cfb_led_w)   /* Read = VCU status ? */
985   AM_RANGE(0x03, 0x03) AM_WRITE(cfb_zpu_int_req_set_w)
986   AM_RANGE(0x04, 0x04) AM_WRITE(cfb_rom_bank_sel_w)
987   AM_RANGE(0x05, 0x05) AM_WRITE(cfb_vbank_w)   //visible/writable videopage select?
1047988ADDRESS_MAP_END
1048989
1049990
1050
1051
1052
1053
1054991/* Great Guns */
1055992
1056993static UINT8 soundlatch;
r4679r4680
10651002   soundlatch = param;
10661003
10671004   /* cause NMI on sound CPU */
1068   cpu_set_input_line(machine->cpu[1], INPUT_LINE_NMI, ASSERT_LINE);
1005   cputag_set_input_line(machine, "sub", INPUT_LINE_NMI, ASSERT_LINE);
10691006}
10701007
10711008
r4679r4680
10751012}
10761013
10771014
1078static ADDRESS_MAP_START( gg_io_map, ADDRESS_SPACE_IO, 8 )
1015static ADDRESS_MAP_START( greatgun_io_map, ADDRESS_SPACE_IO, 8 )
10791016   ADDRESS_MAP_GLOBAL_MASK(0xff)
10801017   AM_RANGE(0x4c, 0x4c) AM_WRITE(main_sound_w)
10811018   AM_RANGE(0x60, 0x60) AM_WRITE(zpu_bcd_decoder_w)
r4679r4680
10851022   AM_RANGE(0x6e, 0x6f) AM_WRITE(zpu_led_w)
10861023ADDRESS_MAP_END
10871024
1025/* Great Guns has a little different banking layout */
1026static ADDRESS_MAP_START( greatgun_cpu3_io_map, ADDRESS_SPACE_IO, 8 )
1027   ADDRESS_MAP_GLOBAL_MASK(0xff)
1028   AM_RANGE(0x00, 0x00) AM_WRITENOP
1029   AM_RANGE(0x01, 0x01) AM_WRITE(cfb_backgnd_color_w)
1030   AM_RANGE(0x02, 0x02) AM_READWRITE(cfb_port_02_r, cfb_led_w)   /* Read = VCU status ? */
1031   AM_RANGE(0x03, 0x03) AM_WRITE(cfb_zpu_int_req_set_w)
1032   AM_RANGE(0x04, 0x04) AM_WRITE(cfb_rom_bank_sel_w_gg)
1033   AM_RANGE(0x05, 0x05) AM_WRITE(cfb_vbank_w)   //visible/writable videopage select?
1034ADDRESS_MAP_END
10881035
10891036/* frequency is 14.318 MHz/16/16/16/16 */
10901037static INTERRUPT_GEN( sound_interrupt )
r4679r4680
10941041
10951042static WRITE8_HANDLER( sound_int_clear_w )
10961043{
1097   cpu_set_input_line(space->machine->cpu[1], 0, CLEAR_LINE);
1044   cputag_set_input_line(space->machine, "sub", 0, CLEAR_LINE);
10981045}
10991046static WRITE8_HANDLER( sound_nmi_clear_w )
11001047{
1101   cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_NMI, CLEAR_LINE);
1048   cputag_set_input_line(space->machine, "sub", INPUT_LINE_NMI, CLEAR_LINE);
11021049}
11031050
11041051static WRITE8_DEVICE_HANDLER( gg_led_ctrl_w )
r4679r4680
11071054   set_led_status(1,data&0x01);
11081055}
11091056
1110static ADDRESS_MAP_START( sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
1111   AM_RANGE(0x0000, 0x1fff) AM_READ(SMH_ROM)
1112   AM_RANGE(0x2000, 0x27ff) AM_READ(SMH_RAM)
1057static ADDRESS_MAP_START( greatgun_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
1058   AM_RANGE(0x0000, 0x1fff) AM_ROM
1059   AM_RANGE(0x2000, 0x27ff) AM_RAM
11131060   AM_RANGE(0x4000, 0x4000) AM_DEVREAD("ay1", ay8910_r)
1114ADDRESS_MAP_END
1115
1116static ADDRESS_MAP_START( sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
1117   AM_RANGE(0x0000, 0x1fff) AM_WRITE(SMH_ROM)
1118   AM_RANGE(0x2000, 0x27ff) AM_WRITE(SMH_RAM) /* main RAM (stack) */
1119
11201061   AM_RANGE(0x4000, 0x4001) AM_DEVWRITE("ay1", ay8910_address_data_w)
11211062   AM_RANGE(0x6000, 0x6001) AM_DEVWRITE("ay2", ay8910_address_data_w)
1122
11231063   AM_RANGE(0x8000, 0x8000) AM_WRITE(sound_int_clear_w)
11241064   AM_RANGE(0xa000, 0xa000) AM_WRITE(sound_nmi_clear_w)
11251065ADDRESS_MAP_END
11261066
11271067
11281068
1129
1130
1131
11321069static INPUT_PORTS_START( mazerbla )
11331070   PORT_START("ZPU")   /* Strobe 0: ZPU Switches */
11341071   PORT_DIPNAME( 0x40, 0x40, "ZPU Switch 1" )
r4679r4680
14251362{
14261363   game_id = MAZERBLA;
14271364   zpu_int_vector = 0xff;
1428   cpu_set_irq_callback(machine->cpu[0], irq_callback);
1365   cpu_set_irq_callback(cputag_get_cpu(machine, "maincpu"), irq_callback);
14291366}
14301367
14311368
r4679r4680
14341371   UINT8 *rom = memory_region(machine, "sub2");
14351372   game_id = GREATGUN;
14361373   zpu_int_vector = 0xff;
1437   cpu_set_irq_callback(machine->cpu[0], irq_callback);
1374   cpu_set_irq_callback(cputag_get_cpu(machine, "maincpu"), irq_callback);
14381375
14391376
14401377//patch VCU test
r4679r4680
14721409static MACHINE_DRIVER_START( mazerbla )
14731410   /* basic machine hardware */
14741411   MDRV_CPU_ADD("maincpu", Z80, 4000000)   /* 4 MHz, no NMI, IM2 - vectors at 0xf8, 0xfa, 0xfc */
1475   MDRV_CPU_PROGRAM_MAP(readmem,writemem)
1476   MDRV_CPU_IO_MAP(io_map,0)
1412   MDRV_CPU_PROGRAM_MAP(mazerbla_map,0)
1413   MDRV_CPU_IO_MAP(mazerbla_io_map,0)
14771414
14781415   MDRV_CPU_ADD("sub", Z80, 4000000)   /* 4 MHz, NMI, IM1 INT */
1479   MDRV_CPU_PROGRAM_MAP(readmem_cpu2,writemem_cpu2)
1480   MDRV_CPU_IO_MAP(cpu2_io_map,0)
1416   MDRV_CPU_PROGRAM_MAP(mazerbla_cpu2_map,0)
1417   MDRV_CPU_IO_MAP(mazerbla_cpu2_io_map,0)
14811418//MDRV_CPU_PERIODIC_INT(irq0_line_hold, 400 ) /* frequency in Hz */
14821419
14831420   MDRV_CPU_ADD("sub2", Z80, 4000000)   /* 4 MHz, no  NMI, IM1 INT */
1484   MDRV_CPU_PROGRAM_MAP(readmem_cpu3,writemem_cpu3)
1485   MDRV_CPU_IO_MAP(cpu3_io_map,0)
1421   MDRV_CPU_PROGRAM_MAP(mazerbla_cpu3_map,0)
1422   MDRV_CPU_IO_MAP(mazerbla_cpu3_io_map,0)
14861423/* (vblank related ??) int generated by a custom video processor
14871424and cleared on ANY port access.
14881425but handled differently for now
r4679r4680
15151452
15161453   /* basic machine hardware */
15171454   MDRV_CPU_ADD("maincpu", Z80, 4000000)   /* 4 MHz, no NMI, IM2 - vectors at 0xf8, 0xfa, 0xfc */
1518   MDRV_CPU_PROGRAM_MAP(readmem,writemem)
1519   MDRV_CPU_IO_MAP(gg_io_map,0)
1455   MDRV_CPU_PROGRAM_MAP(mazerbla_map,0)
1456   MDRV_CPU_IO_MAP(greatgun_io_map,0)
15201457
15211458   MDRV_CPU_ADD("sub", Z80, 14318000 / 4)   /* 3.579500 MHz, NMI - caused by sound command write, periodic INT */
1522   MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem)
1459   MDRV_CPU_PROGRAM_MAP(greatgun_sound_map,0)
15231460   MDRV_CPU_PERIODIC_INT(sound_interrupt, (double)14318180/16/16/16/16 )
15241461
15251462   MDRV_CPU_ADD("sub2", Z80, 4000000)   /* 4 MHz, no  NMI, IM1 INT */
1526   MDRV_CPU_PROGRAM_MAP(readmem_cpu3,writemem_cpu3)
1527   MDRV_CPU_IO_MAP(gg_cpu3_io_map,0)
1463   MDRV_CPU_PROGRAM_MAP(mazerbla_cpu3_map,0)
1464   MDRV_CPU_IO_MAP(greatgun_cpu3_io_map,0)
15281465/* (vblank related ??) int generated by a custom video processor
15291466and cleared on ANY port access.
15301467but handled differently for now
r4679r4680
16771614GAME( 1983, mazerbla, 0,        mazerbla,  mazerbla, 0, ROT0, "Stern", "Mazer Blazer (set 1)", GAME_IMPERFECT_GRAPHICS |GAME_NO_SOUND | GAME_NOT_WORKING )
16781615GAME( 1983, mzrblzra, mazerbla, mazerbla,  mazerbla, 0, ROT0, "Stern", "Mazer Blazer (set 2)", GAME_IMPERFECT_GRAPHICS |GAME_NO_SOUND | GAME_NOT_WORKING )
16791616GAME( 1983, greatgun, 0,        greatgun,  greatgun, 0, ROT0, "Stern", "Great Guns", GAME_IMPERFECT_GRAPHICS | GAME_NOT_WORKING )
1680
1681
src/mame/drivers/namcona1.c
r4679r4680
499499static int transfer_dword( running_machine *machine, UINT32 dest, UINT32 source )
500500{
501501   UINT16 data;
502   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
502   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
503503
504504   if( source>=0x400000 && source<0xc00000 )
505505   {
r4679r4680
723723//  logerror("mailbox_w_68k: %x @ %x\n", data, offset);
724724
725725   if (offset == 4)
726      cpu_set_input_line(space->machine->cpu[1], M37710_LINE_IRQ0, HOLD_LINE);
726      cputag_set_input_line(space->machine, "mcu", M37710_LINE_IRQ0, HOLD_LINE);
727727
728728   COMBINE_DATA(&mcu_mailbox[offset%8]);
729729
r4679r4680
850850      logerror("launching 68k, PC=%x\n", cpu_get_pc(space->cpu));
851851
852852      // reset and launch the 68k
853      cpu_set_input_line(space->machine->cpu[0], INPUT_LINE_RESET, CLEAR_LINE);
853      cputag_set_input_line(space->machine, "maincpu", INPUT_LINE_RESET, CLEAR_LINE);
854854   }
855855
856856   mcu_port4 = data;
r4679r4680
925925// for games with the MCU emulated, the MCU boots the 68000.  don't allow it before that.
926926static MACHINE_RESET( namcona1_mcu )
927927{
928   cpu_set_input_line(machine->cpu[0], INPUT_LINE_RESET, ASSERT_LINE);
928   cputag_set_input_line(machine, "maincpu", INPUT_LINE_RESET, ASSERT_LINE);
929929
930930   mcu_port5 = 1;
931931}
src/mame/drivers/forte2.c
r4679r4680
8686
8787static void vdp_interrupt(running_machine *machine, int i)
8888{
89   cpu_set_input_line(machine->cpu[0], 0, (i ? HOLD_LINE : CLEAR_LINE));
89   cputag_set_input_line(machine, "maincpu", 0, (i ? HOLD_LINE : CLEAR_LINE));
9090}
9191
9292static const TMS9928a_interface tms9928a_interface =
r4679r4680
154154   }
155155
156156   // address line swap
157   buf = (UINT8*)malloc_or_die(memsize);
157   buf = alloc_array_or_die(UINT8, memsize);
158158   memcpy(buf, mem, memsize);
159159   for ( i = 0; i < memsize; i++ )
160160   {
src/mame/drivers/itgambl3.c
r4679r4680
210210static MACHINE_RESET( itgambl3 )
211211{
212212   /* stop the CPU, we have no code for it anyway */
213   cpu_set_input_line(machine->cpu[0], INPUT_LINE_HALT, ASSERT_LINE);
213   cputag_set_input_line(machine, "maincpu", INPUT_LINE_HALT, ASSERT_LINE);
214214}
215215
216216/* default 444 palette for debug purpose*/
src/mame/drivers/acefruit.c
r4679r4680
2626      switch( color )
2727      {
2828      case 0x0c:
29         cpu_set_input_line(machine->cpu[0], 0, HOLD_LINE );
29         cputag_set_input_line(machine, "maincpu", 0, HOLD_LINE );
3030         break;
3131      }
3232   }
src/mame/drivers/dkong.c
r4679r4680
390390
391391static MACHINE_START( dkong2b )
392392{
393   dkong_state *state = machine->driver_data;
393   dkong_state *state = (dkong_state *)machine->driver_data;
394394
395395   state->hardware_type = HARDWARE_TKG04;
396396
r4679r4680
401401
402402static MACHINE_START( s2650 )
403403{
404   dkong_state *state = machine->driver_data;
404   dkong_state *state = (dkong_state *)machine->driver_data;
405405   UINT8   *p = memory_region(machine, "user1");
406406   const char *game_name = machine->gamedrv->name;
407407   int i;
r4679r4680
433433
434434static MACHINE_START( radarscp )
435435{
436   dkong_state *state = machine->driver_data;
436   dkong_state *state = (dkong_state *)machine->driver_data;
437437
438438   MACHINE_START_CALL(dkong2b);
439439   state->hardware_type = HARDWARE_TRS02;
r4679r4680
441441
442442static MACHINE_START( radarsc1 )
443443{
444   dkong_state *state = machine->driver_data;
444   dkong_state *state = (dkong_state *)machine->driver_data;
445445
446446   MACHINE_START_CALL(dkong2b);
447447   state->hardware_type = HARDWARE_TRS01;
r4679r4680
449449
450450static MACHINE_START( dkong3 )
451451{
452   dkong_state *state = machine->driver_data;
452   dkong_state *state = (dkong_state *)machine->driver_data;
453453
454454   state->hardware_type = HARDWARE_TKG04;
455455}
r4679r4680
461461
462462static MACHINE_RESET( strtheat )
463463{
464   dkong_state *state = machine->driver_data;
464   dkong_state *state = (dkong_state *)machine->driver_data;
465465   UINT8 *ROM = memory_region(machine, "maincpu");
466466
467467   MACHINE_RESET_CALL(dkong);
r4679r4680
474474
475475static MACHINE_RESET( drakton )
476476{
477   dkong_state *state = machine->driver_data;
477   dkong_state *state = (dkong_state *)machine->driver_data;
478478   UINT8 *ROM = memory_region(machine, "maincpu");
479479
480480   MACHINE_RESET_CALL(dkong);
r4679r4680
494494
495495static READ8_DEVICE_HANDLER( dk_dma_read_byte )
496496{
497   const address_space *space = cpu_get_address_space(device->machine->cpu[0], ADDRESS_SPACE_PROGRAM);
497   const address_space *space = cputag_get_address_space(device->machine, "maincpu", ADDRESS_SPACE_PROGRAM);
498498   return memory_read_byte(space, offset);
499499}
500500
501501static WRITE8_DEVICE_HANDLER( dk_dma_write_byte )
502502{
503   const address_space *space = cpu_get_address_space(device->machine->cpu[0], ADDRESS_SPACE_PROGRAM);
503   const address_space *space = cputag_get_address_space(device->machine, "maincpu", ADDRESS_SPACE_PROGRAM);
504504   memory_write_byte(space, offset, data);
505505}
506506
507507static READ8_DEVICE_HANDLER( hb_dma_read_byte )
508508{
509   const address_space *space = cpu_get_address_space(device->machine->cpu[0], ADDRESS_SPACE_PROGRAM);
510   dkong_state *state = device->machine->driver_data;
509   const address_space *space = cputag_get_address_space(device->machine, "maincpu", ADDRESS_SPACE_PROGRAM);
510   dkong_state *state = (dkong_state *)device->machine->driver_data;
511511   int     bucket = state->rev_map[(offset>>10) & 0x1ff];
512512   int   addr;
513513
r4679r4680
521521
522522static WRITE8_DEVICE_HANDLER( hb_dma_write_byte )
523523{
524   const address_space *space = cpu_get_address_space(device->machine->cpu[0], ADDRESS_SPACE_PROGRAM);
525   dkong_state *state = device->machine->driver_data;
524   const address_space *space = cputag_get_address_space(device->machine, "maincpu", ADDRESS_SPACE_PROGRAM);
525   dkong_state *state = (dkong_state *)device->machine->driver_data;
526526   int     bucket = state->rev_map[(offset>>10) & 0x1ff];
527527   int   addr;
528528
r4679r4680
536536
537537static READ8_DEVICE_HANDLER( p8257_ctl_r )
538538{
539   dkong_state *state = device->machine->driver_data;
539   dkong_state *state = (dkong_state *)device->machine->driver_data;
540540   return state->dma_latch;
541541}
542542
543543static WRITE8_DEVICE_HANDLER( p8257_ctl_w )
544544{
545   dkong_state *state = device->machine->driver_data;
545   dkong_state *state = (dkong_state *)device->machine->driver_data;
546546   state->dma_latch = data;
547547}
548548
r4679r4680
606606
607607static READ8_HANDLER( epos_decrypt_rom )
608608{
609   dkong_state *state = space->machine->driver_data;
609   dkong_state *state = (dkong_state *)space->machine->driver_data;
610610
611611   if (offset & 0x01)
612612   {
r4679r4680
636636
637637static WRITE8_HANDLER( s2650_data_w )
638638{
639   dkong_state *state = space->machine->driver_data;
639   dkong_state *state = (dkong_state *)space->machine->driver_data;
640640#if DEBUG_PROTECTION
641641   logerror("write : pc = %04x, loopback = %02x\n",cpu_get_pc(space->cpu), data);
642642#endif
r4679r4680
646646
647647static READ8_HANDLER( s2650_port0_r )
648648{
649   dkong_state *state = space->machine->driver_data;
649   dkong_state *state = (dkong_state *)space->machine->driver_data;
650650#if DEBUG_PROTECTION
651651   logerror("port 0 : pc = %04x, loopback = %02x\n",cpu_get_pc(space->cpu), state->hunchloopback);
652652#endif
r4679r4680
673673
674674static READ8_HANDLER( s2650_port1_r )
675675{
676   dkong_state *state = space->machine->driver_data;
676   dkong_state *state = (dkong_state *)space->machine->driver_data;
677677#if DEBUG_PROTECTION
678678   logerror("port 1 : pc = %04x, loopback = %02x\n",cpu_get_pc(space->cpu), state->hunchloopback);
679679#endif
r4679r4680
699699{
700700   if (data & 1)
701701   {
702      cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_RESET, CLEAR_LINE);
703      cpu_set_input_line(space->machine->cpu[2], INPUT_LINE_RESET, CLEAR_LINE);
702      cputag_set_input_line(space->machine, "n2a03a", INPUT_LINE_RESET, CLEAR_LINE);
703      cputag_set_input_line(space->machine, "n2a03b", INPUT_LINE_RESET, CLEAR_LINE);
704704   }
705705   else
706706   {
707      cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_RESET, ASSERT_LINE);
708      cpu_set_input_line(space->machine->cpu[2], INPUT_LINE_RESET, ASSERT_LINE);
707      cputag_set_input_line(space->machine, "n2a03a", INPUT_LINE_RESET, ASSERT_LINE);
708      cputag_set_input_line(space->machine, "n2a03b", INPUT_LINE_RESET, ASSERT_LINE);
709709   }
710710}
711711
r4679r4680
28992899         {7,1,4,0,3,6,2,5},
29002900   };
29012901
2902   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x0000, 0x3fff, 0, 0, SMH_BANK1 );
2902   memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x0000, 0x3fff, 0, 0, (read8_space_func)SMH_BANK(1) );
29032903
29042904   /* While the PAL supports up to 16 decryption methods, only four
29052905        are actually used in the PAL.  Therefore, we'll take a little
r4679r4680
29212921         {6,3,4,1,0,7,2,5},
29222922   };
29232923
2924   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x0000, 0x3fff, 0, 0, SMH_BANK1 );
2924   memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x0000, 0x3fff, 0, 0, (read8_space_func)SMH_BANK(1) );
29252925
29262926   /* While the PAL supports up to 16 decryption methods, only four
29272927        are actually used in the PAL.  Therefore, we'll take a little
r4679r4680
29322932   drakton_decrypt_rom(machine, 0x88, 0x1c000, bs[3]);
29332933
29342934   /* custom handlers supporting Joystick or Steering Wheel */
2935   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x7c00, 0x7c00, 0, 0, strtheat_inputport_0_r);
2936   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x7c80, 0x7c80, 0, 0, strtheat_inputport_1_r);
2935   memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x7c00, 0x7c00, 0, 0, strtheat_inputport_0_r);
2936   memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x7c80, 0x7c80, 0, 0, strtheat_inputport_1_r);
29372937}
29382938
29392939/*************************************
src/mame/drivers/sprint4.c
r4679r4680
119119   watchdog_enable(machine, input_port_read(machine, "IN0") & 0x40);
120120
121121   if (input_port_read(machine, "IN0") & 0x40)
122      cpu_set_input_line(machine->cpu[0], INPUT_LINE_NMI, PULSE_LINE);
122      cputag_set_input_line(machine, "maincpu", INPUT_LINE_NMI, PULSE_LINE);
123123
124124   timer_set(machine, video_screen_get_time_until_pos(machine->primary_screen, scanline, 0), NULL, scanline, nmi_callback);
125125}
src/mame/drivers/skyraid.c
r4679r4680
4444   palette_set_color(machine, 19, MAKE_RGB(0xE0, 0xE0, 0xE0));
4545}
4646
47
48static READ8_HANDLER( skyraid_alpha_num_r)
49{
50   return skyraid_alpha_num_ram[offset & 0x7f];
51}
52
53
5447static READ8_HANDLER( skyraid_port_0_r )
5548{
5649   UINT8 val = input_port_read(space->machine, "LANGUAGE");
r4679r4680
6356   return val;
6457}
6558
66
67static WRITE8_HANDLER( skyraid_alpha_num_w )
68{
69   skyraid_alpha_num_ram[offset & 0x7f] = data;
70}
71
72
7359static WRITE8_HANDLER( skyraid_sound_w )
7460{
7561   /* BIT0 => PLANE SWEEP */
r4679r4680
10187}
10288
10389
104static ADDRESS_MAP_START( skyraid_readmem, ADDRESS_SPACE_PROGRAM, 8 )
105   AM_RANGE(0x0000, 0x00ff) AM_READ(SMH_RAM) AM_MIRROR(0x300)
106   AM_RANGE(0x0800, 0x087f) AM_READ(SMH_RAM)
107   AM_RANGE(0x0880, 0x0bff) AM_READ(skyraid_alpha_num_r)
90static ADDRESS_MAP_START( skyraid_map, ADDRESS_SPACE_PROGRAM, 8 )
91   AM_RANGE(0x0000, 0x00ff) AM_RAM AM_MIRROR(0x300)
92   AM_RANGE(0x0400, 0x040f) AM_WRITEONLY AM_BASE(&skyraid_pos_ram)
93   AM_RANGE(0x0800, 0x087f) AM_RAM AM_MIRROR(0x480) AM_BASE(&skyraid_alpha_num_ram)
10894   AM_RANGE(0x1000, 0x1000) AM_READ(skyraid_port_0_r)
109   AM_RANGE(0x1000, 0x1001) AM_READ_PORT("DSW")
95   AM_RANGE(0x1001, 0x1001) AM_READ_PORT("DSW")
11096   AM_RANGE(0x1400, 0x1400) AM_READ_PORT("COIN")
11197   AM_RANGE(0x1400, 0x1401) AM_READ_PORT("SYSTEM")
112   AM_RANGE(0x7000, 0x7fff) AM_READ(SMH_ROM)
113   AM_RANGE(0xf000, 0xffff) AM_READ(SMH_ROM)
114ADDRESS_MAP_END
115
116
117static ADDRESS_MAP_START( skyraid_writemem, ADDRESS_SPACE_PROGRAM, 8 )
118   AM_RANGE(0x0000, 0x00ff) AM_WRITE(SMH_RAM) AM_MIRROR(0x300)
119   AM_RANGE(0x0400, 0x040f) AM_WRITE(SMH_RAM) AM_BASE(&skyraid_pos_ram)
120   AM_RANGE(0x0800, 0x087f) AM_WRITE(SMH_RAM) AM_BASE(&skyraid_alpha_num_ram)
121   AM_RANGE(0x0880, 0x0bff) AM_WRITE(skyraid_alpha_num_w)
122   AM_RANGE(0x1c00, 0x1c0f) AM_WRITE(SMH_RAM) AM_BASE(&skyraid_obj_ram)
98   AM_RANGE(0x1c00, 0x1c0f) AM_WRITEONLY AM_BASE(&skyraid_obj_ram)
12399   AM_RANGE(0x4000, 0x4000) AM_WRITE(skyraid_scroll_w)
124100   AM_RANGE(0x4400, 0x4400) AM_WRITE(skyraid_sound_w)
125101   AM_RANGE(0x4800, 0x4800) AM_WRITE(skyraid_range_w)
126102   AM_RANGE(0x5000, 0x5000) AM_WRITE(watchdog_reset_w)
127103   AM_RANGE(0x5800, 0x5800) AM_WRITE(skyraid_offset_w)
128   AM_RANGE(0x7000, 0x7fff) AM_WRITE(SMH_ROM)
129   AM_RANGE(0xf000, 0xffff) AM_WRITE(SMH_ROM)
104   AM_RANGE(0x7000, 0x7fff) AM_ROM
105   AM_RANGE(0xf000, 0xffff) AM_ROM
130106ADDRESS_MAP_END
131107
132
133108static INPUT_PORTS_START( skyraid )
134109   PORT_START("LANGUAGE")
135110   PORT_DIPNAME( 0x30, 0x00, DEF_STR( Language ) )
r4679r4680
263238
264239   /* basic machine hardware */
265240   MDRV_CPU_ADD("maincpu", M6502, 12096000 / 12)
266   MDRV_CPU_PROGRAM_MAP(skyraid_readmem, skyraid_writemem)
241   MDRV_CPU_PROGRAM_MAP(skyraid_map, 0)
267242   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
268243
269244   /* video hardware */
src/mame/drivers/travrusa.c
r4679r4680
462462{
463463   int A,j;
464464   UINT8 *rom = memory_region(machine, "maincpu");
465   UINT8 *buffer = malloc_or_die(0x2000);
465   UINT8 *buffer = alloc_array_or_die(UINT8, 0x2000);
466466
467467      memcpy(buffer,rom,0x2000);
468468
src/mame/drivers/hanaroku.c
r4679r4680
118118
119119/* main cpu */
120120
121static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 )
122   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
123   AM_RANGE(0x8000, 0x87ff) AM_READ(SMH_RAM)
124   AM_RANGE(0x9000, 0x97ff) AM_READ(SMH_RAM)
125   AM_RANGE(0xa000, 0xa1ff) AM_READ(SMH_RAM)
126   AM_RANGE(0xc000, 0xc3ff) AM_READ(SMH_RAM)
127   AM_RANGE(0xc400, 0xc4ff) AM_READ(SMH_RAM)
128   AM_RANGE(0xd000, 0xd000) AM_DEVREAD("ay", ay8910_r)
129   AM_RANGE(0xe000, 0xe000) AM_READ_PORT("IN0")
130   AM_RANGE(0xe001, 0xe001) AM_READ_PORT("IN1")
131   AM_RANGE(0xe002, 0xe002) AM_READ_PORT("IN2")
132   AM_RANGE(0xe004, 0xe004) AM_READ_PORT("DSW3")
133ADDRESS_MAP_END
134
135static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 )
136   AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM)
137   AM_RANGE(0x8000, 0x87ff) AM_WRITE(SMH_RAM) AM_BASE(&hanaroku_spriteram1)
138   AM_RANGE(0x9000, 0x97ff) AM_WRITE(SMH_RAM) AM_BASE(&hanaroku_spriteram2)
139   AM_RANGE(0xa000, 0xa1ff) AM_WRITE(SMH_RAM) AM_BASE(&hanaroku_spriteram3)
121static ADDRESS_MAP_START( hanaroku_map, ADDRESS_SPACE_PROGRAM, 8 )
122   AM_RANGE(0x0000, 0x7fff) AM_ROM
123   AM_RANGE(0x8000, 0x87ff) AM_RAM AM_BASE(&hanaroku_spriteram1)
124   AM_RANGE(0x9000, 0x97ff) AM_RAM AM_BASE(&hanaroku_spriteram2)
125   AM_RANGE(0xa000, 0xa1ff) AM_RAM AM_BASE(&hanaroku_spriteram3)
140126   AM_RANGE(0xa200, 0xa2ff) AM_WRITENOP   // ??? written once during P.O.S.T.
141127   AM_RANGE(0xa300, 0xa304) AM_WRITENOP   // ???
142   AM_RANGE(0xc000, 0xc3ff) AM_WRITE(SMH_RAM)            // main ram
143   AM_RANGE(0xc400, 0xc4ff) AM_WRITE(SMH_RAM)   // ???
144128   AM_RANGE(0xb000, 0xb000) AM_WRITENOP   // ??? always 0x40
129   AM_RANGE(0xc000, 0xc3ff) AM_RAM         // main ram
130   AM_RANGE(0xc400, 0xc4ff) AM_RAM         // ???
131   AM_RANGE(0xd000, 0xd000) AM_DEVREAD("ay", ay8910_r)
145132   AM_RANGE(0xd000, 0xd001) AM_DEVWRITE("ay", ay8910_address_data_w)
146   AM_RANGE(0xe000, 0xe000) AM_WRITE(hanaroku_out_0_w)
147   AM_RANGE(0xe002, 0xe002) AM_WRITE(hanaroku_out_1_w)
148   AM_RANGE(0xe004, 0xe004) AM_WRITE(hanaroku_out_2_w)
133   AM_RANGE(0xe000, 0xe000) AM_READ_PORT("IN0") AM_WRITE(hanaroku_out_0_w)
134   AM_RANGE(0xe001, 0xe001) AM_READ_PORT("IN1")
135   AM_RANGE(0xe002, 0xe002) AM_READ_PORT("IN2") AM_WRITE(hanaroku_out_1_w)
136   AM_RANGE(0xe004, 0xe004) AM_READ_PORT("DSW3") AM_WRITE(hanaroku_out_2_w)
149137ADDRESS_MAP_END
150138
151139
r4679r4680
241229
242230static MACHINE_DRIVER_START( hanaroku )
243231   MDRV_CPU_ADD("maincpu", Z80,6000000)       /* ? MHz */
244   MDRV_CPU_PROGRAM_MAP(readmem,writemem)
232   MDRV_CPU_PROGRAM_MAP(hanaroku_map,0)
245233   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
246234
247235   /* video hardware */
src/mame/drivers/aliens.c
r4679r4680
7575static WRITE8_HANDLER( aliens_sh_irqtrigger_w )
7676{
7777   soundlatch_w(space,offset,data);
78   cpu_set_input_line_and_vector(space->machine->cpu[1], 0, HOLD_LINE, 0xff);
78   cputag_set_input_line_and_vector(space->machine, "audiocpu", 0, HOLD_LINE, 0xff);
7979}
8080
8181static WRITE8_DEVICE_HANDLER( aliens_snd_bankswitch_w )
r4679r4680
429429   ROM_LOAD( "875b04.e05",  0x00000, 0x40000, CRC(4e209ac8) SHA1(09d9eaae61bfd04bf318555ccd44d7371571d86d) )
430430ROM_END
431431
432ROM_START( aliensa )
433   ROM_REGION( 0x38000, "maincpu", 0 ) /* code + banked roms */
434   ROM_LOAD( "875_r02.e24", 0x10000, 0x08000, CRC(973e4f11) SHA1(a4f65ef4c84b1dcac591dc348ebbb96d35ef5f93) )
435   ROM_CONTINUE(            0x08000, 0x08000 )
436   ROM_LOAD( "875_m01.c24",  0x18000, 0x20000, CRC(1663d3dc) SHA1(706bdf3daa3bda372d94263f3405d67a7ef8dc69) )
437
438   ROM_REGION( 0x10000, "audiocpu", 0 ) /* 64k for the sound CPU */
439   ROM_LOAD( "875_k03.g04", 0x00000, 0x08000, CRC(bd86264d) SHA1(345fd666daf8a29ef314b14306c1a976cb159bed) )
440
441   ROM_REGION( 0x200000, "gfx1", 0 ) /* graphics */
442   ROM_LOAD( "875b11.k13", 0x000000, 0x80000, CRC(89c5c885) SHA1(02a1581579b6ef816e04bec312a7b3ae7c7e84f8) )   /* characters (set 1) */
443   ROM_LOAD( "875b07.j13", 0x080000, 0x40000, CRC(e9c56d66) SHA1(1f58949d5391aef002a6e1ee7034e57bf99cee61) )   /* characters (set 2) */
444   /* second half empty */
445   ROM_LOAD( "875b12.k19", 0x100000, 0x80000, CRC(ea6bdc17) SHA1(a7c22370f8adc5b479283f1ff831f493df78282f) )   /* characters (set 1) */
446   ROM_LOAD( "875b08.j19", 0x180000, 0x40000, CRC(f9387966) SHA1(470ecc4a5a3edd08d5e0ab10b0c590db1968fb0a) )   /* characters (set 2) */
447   /* second half empty */
448
449   ROM_REGION( 0x200000, "gfx2", 0 ) /* graphics */
450   ROM_LOAD( "875b10.k08", 0x000000, 0x80000, CRC(0b1035b1) SHA1(db04020761386e79249762cd1540208375c38c7f) )   /* sprites (set 1) */
451   ROM_LOAD( "875b06.j08", 0x080000, 0x40000, CRC(081a0566) SHA1(3a4aa14178fe76a030224743c9e9cd974e08bd79) )   /* sprites (set 2) */
452   /* second half empty */
453   ROM_LOAD( "875b09.k02", 0x100000, 0x80000, CRC(e76b3c19) SHA1(6838e07460b3eaaeb129208ad0696c8019bd63d9) )   /* sprites (set 1) */
454   ROM_LOAD( "875b05.j02", 0x180000, 0x40000, CRC(19a261f2) SHA1(b0518fad833b3e613e0201d5d9cab73dc5e78e1d) )   /* sprites (set 2) */
455   /* second half empty */
456
457   ROM_REGION( 0x0100, "proms", 0 )
458   ROM_LOAD( "821a08.h14", 0x0000, 0x0100, CRC(7da55800) SHA1(3826f73569c8ae0431510a355bdfa082152b74a5) )   /* priority encoder (not used) */
459
460   ROM_REGION( 0x40000, "konami", 0 ) /* samples for 007232 */
461   ROM_LOAD( "875b04.e05",  0x00000, 0x40000, CRC(4e209ac8) SHA1(09d9eaae61bfd04bf318555ccd44d7371571d86d) )
462ROM_END
463
432464/***************************************************************************
433465
434466  Game driver(s)
r4679r4680
451483{
452484   UINT8 *RAM = memory_region(machine, "maincpu");
453485
454   konami_configure_set_lines(machine->cpu[0], aliens_banking);
486   konami_configure_set_lines(cputag_get_cpu(machine, "maincpu"), aliens_banking);
455487
456488   /* init the default bank */
457   memory_set_bankptr(machine,  1, &RAM[0x10000] );
489   memory_set_bankptr(machine,  1, &RAM[0x10000]);
458490}
459491
460492
r4679r4680
471503GAME( 1990, aliens,   0,      aliens, aliens, aliens, ROT0, "Konami", "Aliens (World set 1)", GAME_SUPPORTS_SAVE )
472504GAME( 1990, aliens2,  aliens, aliens, aliens, aliens, ROT0, "Konami", "Aliens (World set 2)", GAME_SUPPORTS_SAVE )
473505GAME( 1990, aliens3,  aliens, aliens, aliens, aliens, ROT0, "Konami", "Aliens (World set 3)", GAME_SUPPORTS_SAVE )
474GAME( 1990, aliensu,  aliens, aliens, aliens, aliens, ROT0, "Konami", "Aliens (US)", GAME_SUPPORTS_SAVE )
506GAME( 1990, aliensu,  aliens, aliens, aliens, aliens, ROT0, "Konami", "Aliens (US)",          GAME_SUPPORTS_SAVE )
475507GAME( 1990, aliensj,  aliens, aliens, aliens, aliens, ROT0, "Konami", "Aliens (Japan set 1)", GAME_SUPPORTS_SAVE )
476508GAME( 1990, aliensj2, aliens, aliens, aliens, aliens, ROT0, "Konami", "Aliens (Japan set 2)", GAME_SUPPORTS_SAVE )
509GAME( 1990, aliensa,  aliens, aliens, aliens, aliens, ROT0, "Konami", "Aliens (Asia)",        GAME_SUPPORTS_SAVE )
src/mame/drivers/metlclsh.c
r4679r4680
5757
5858***************************************************************************/
5959
60static UINT8 *sharedram;
61
62static READ8_HANDLER ( sharedram_r )   { return sharedram[offset]; }
63static WRITE8_HANDLER( sharedram_w )   { sharedram[offset] = data; }
64
6560static WRITE8_HANDLER( metlclsh_cause_irq )
6661{
67   cpu_set_input_line(space->machine->cpu[1],M6809_IRQ_LINE,ASSERT_LINE);
62   cputag_set_input_line(space->machine, "sub", M6809_IRQ_LINE, ASSERT_LINE);
6863}
6964
7065static WRITE8_HANDLER( metlclsh_ack_nmi )
7166{
72   cpu_set_input_line(space->machine->cpu[0],INPUT_LINE_NMI,CLEAR_LINE);
67   cputag_set_input_line(space->machine, "maincpu", INPUT_LINE_NMI, CLEAR_LINE);
7368}
7469
75static ADDRESS_MAP_START( metlclsh_readmem, ADDRESS_SPACE_PROGRAM, 8 )
76   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM               )
77   AM_RANGE(0x8000, 0x9fff) AM_READ(sharedram_r            )
78   AM_RANGE(0xa000, 0xbfff) AM_READ(SMH_ROM               )
70static ADDRESS_MAP_START( metlclsh_master_map, ADDRESS_SPACE_PROGRAM, 8 )
71   AM_RANGE(0x0000, 0x7fff) AM_ROM
72   AM_RANGE(0x8000, 0x9fff) AM_RAM AM_SHARE(1)
73   AM_RANGE(0xa000, 0xbfff) AM_ROM
7974   AM_RANGE(0xc000, 0xc000) AM_READ_PORT("IN0")
8075   AM_RANGE(0xc001, 0xc001) AM_READ_PORT("IN1")
8176   AM_RANGE(0xc002, 0xc002) AM_READ_PORT("IN2")
8277   AM_RANGE(0xc003, 0xc003) AM_READ_PORT("DSW")
83//  AM_RANGE(0xc800, 0xc82f) AM_READ(SMH_RAM                   )   // not actually read
84//  AM_RANGE(0xcc00, 0xcc2f) AM_READ(SMH_RAM                   )   // ""
85   AM_RANGE(0xd000, 0xd001) AM_DEVREAD("ym1", ym2203_r   )
86//  AM_RANGE(0xd800, 0xdfff) AM_READ(SMH_RAM                   )   // not actually read
87   AM_RANGE(0xe800, 0xe9ff) AM_READ(SMH_RAM               )
88   AM_RANGE(0xfff0, 0xffff) AM_READ(SMH_ROM               )   // Reset/IRQ vectors
89ADDRESS_MAP_END
90
91static ADDRESS_MAP_START( metlclsh_writemem, ADDRESS_SPACE_PROGRAM, 8 )
92   AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM               )
93   AM_RANGE(0x8000, 0x9fff) AM_WRITE(sharedram_w) AM_BASE(&sharedram   )
94   AM_RANGE(0xa000, 0xbfff) AM_WRITE(SMH_ROM               )
95   AM_RANGE(0xc080, 0xc080) AM_WRITE(SMH_NOP               )   // ? 0
96   AM_RANGE(0xc0c2, 0xc0c2) AM_WRITE(metlclsh_cause_irq      )   // cause irq on cpu #2
97   AM_RANGE(0xc0c3, 0xc0c3) AM_WRITE(metlclsh_ack_nmi         )   // nmi ack
98   AM_RANGE(0xc800, 0xc82f) AM_WRITE(paletteram_xxxxBBBBGGGGRRRR_split1_w) AM_BASE(&paletteram      )
99   AM_RANGE(0xcc00, 0xcc2f) AM_WRITE(paletteram_xxxxBBBBGGGGRRRR_split2_w) AM_BASE(&paletteram_2   )
100   AM_RANGE(0xd000, 0xd001) AM_DEVWRITE("ym1", ym2203_w   )
78   AM_RANGE(0xc080, 0xc080) AM_WRITENOP                     // ? 0
79   AM_RANGE(0xc0c2, 0xc0c2) AM_WRITE(metlclsh_cause_irq)         // cause irq on cpu #2
80   AM_RANGE(0xc0c3, 0xc0c3) AM_WRITE(metlclsh_ack_nmi)            // nmi ack
81/**/AM_RANGE(0xc800, 0xc82f) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_split1_w) AM_BASE(&paletteram)
82/**/AM_RANGE(0xcc00, 0xcc2f) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_split2_w) AM_BASE(&paletteram_2)
83   AM_RANGE(0xd000, 0xd001) AM_DEVREADWRITE("ym1", ym2203_r,ym2203_w)
84/**/AM_RANGE(0xd800, 0xdfff) AM_RAM_WRITE(metlclsh_fgram_w) AM_BASE(&metlclsh_fgram)
10185   AM_RANGE(0xe000, 0xe001) AM_DEVWRITE("ym2", ym3526_w   )
102   AM_RANGE(0xe800, 0xe9ff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size   )
103   AM_RANGE(0xd800, 0xdfff) AM_WRITE(metlclsh_fgram_w) AM_BASE(&metlclsh_fgram      )
104   AM_RANGE(0xfff0, 0xffff) AM_WRITE(SMH_ROM               )
86   AM_RANGE(0xe800, 0xe9ff) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size   )
87   AM_RANGE(0xfff0, 0xffff) AM_ROM                           // Reset/IRQ vectors
10588ADDRESS_MAP_END
10689
10790
r4679r4680
11396
11497static WRITE8_HANDLER( metlclsh_cause_nmi2 )
11598{
116   cpu_set_input_line(space->machine->cpu[0],INPUT_LINE_NMI,ASSERT_LINE);
99   cputag_set_input_line(space->machine, "maincpu", INPUT_LINE_NMI, ASSERT_LINE);
117100}
118101
119102static WRITE8_HANDLER( metlclsh_ack_irq2 )
120103{
121   cpu_set_input_line(space->machine->cpu[1],M6809_IRQ_LINE,CLEAR_LINE);
104   cputag_set_input_line(space->machine, "sub", M6809_IRQ_LINE, CLEAR_LINE);
122105}
123106
124107static WRITE8_HANDLER( metlclsh_ack_nmi2 )
125108{
126   cpu_set_input_line(space->machine->cpu[1],INPUT_LINE_NMI,CLEAR_LINE);
109   cputag_set_input_line(space->machine, "sub", INPUT_LINE_NMI, CLEAR_LINE);
127110}
128111
129112static WRITE8_HANDLER( metlclsh_flipscreen_w )
r4679r4680
131114   flip_screen_set(space->machine, data & 1);
132115}
133116
134static ADDRESS_MAP_START( metlclsh_readmem2, ADDRESS_SPACE_PROGRAM, 8 )
135   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM         )
136   AM_RANGE(0x8000, 0x9fff) AM_READ(sharedram_r      )
137   AM_RANGE(0xc000, 0xc000) AM_READ_PORT("IN0")
117static ADDRESS_MAP_START( metlclsh_slave_map, ADDRESS_SPACE_PROGRAM, 8 )
118   AM_RANGE(0x0000, 0x7fff) AM_ROM
119   AM_RANGE(0x8000, 0x9fff) AM_RAM AM_SHARE(1)
120   AM_RANGE(0xc000, 0xc000) AM_READ_PORT("IN0") AM_WRITE(metlclsh_gfxbank_w)   // bg tiles bank
138121   AM_RANGE(0xc001, 0xc001) AM_READ_PORT("IN1")
139122   AM_RANGE(0xc002, 0xc002) AM_READ_PORT("IN2")
140123   AM_RANGE(0xc003, 0xc003) AM_READ_PORT("DSW")
141   AM_RANGE(0xd000, 0xd7ff) AM_READ(SMH_BANK1         )
142   AM_RANGE(0xfff0, 0xffff) AM_READ(SMH_ROM         )   // Reset/IRQ vectors
124   AM_RANGE(0xc0c0, 0xc0c0) AM_WRITE(metlclsh_cause_nmi2)         // cause nmi on cpu #1
125   AM_RANGE(0xc0c1, 0xc0c1) AM_WRITE(metlclsh_ack_irq2)         // irq ack
126   AM_RANGE(0xd000, 0xd7ff) AM_ROMBANK(1) AM_WRITE(metlclsh_bgram_w) AM_BASE(&metlclsh_bgram) // this is banked
127   AM_RANGE(0xe301, 0xe301) AM_WRITE(metlclsh_flipscreen_w)      // 0/1
128   AM_RANGE(0xe401, 0xe401) AM_WRITE(metlclsh_rambank_w)
129   AM_RANGE(0xe402, 0xe403) AM_WRITEONLY AM_BASE(&metlclsh_scrollx)
130//  AM_RANGE(0xe404, 0xe404) AM_WRITENOP                            // ? 0
131//  AM_RANGE(0xe410, 0xe410) AM_WRITENOP                            // ? 0 on startup only
132   AM_RANGE(0xe417, 0xe417) AM_WRITE(metlclsh_ack_nmi2)         // nmi ack
133   AM_RANGE(0xfff0, 0xffff) AM_ROM                           // Reset/IRQ vectors
143134ADDRESS_MAP_END
144135
145static ADDRESS_MAP_START( metlclsh_writemem2, ADDRESS_SPACE_PROGRAM, 8 )
146   AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM                  )
147   AM_RANGE(0x8000, 0x9fff) AM_WRITE(sharedram_w               )
148   AM_RANGE(0xc000, 0xc000) AM_WRITE(metlclsh_gfxbank_w         )   // bg tiles bank
149   AM_RANGE(0xc0c0, 0xc0c0) AM_WRITE(metlclsh_cause_nmi2         )   // cause nmi on cpu #1
150   AM_RANGE(0xc0c1, 0xc0c1) AM_WRITE(metlclsh_ack_irq2            )   // irq ack
151   AM_RANGE(0xd000, 0xd7ff) AM_WRITE(metlclsh_bgram_w) AM_BASE(&metlclsh_bgram   )   // this is banked
152   AM_RANGE(0xe417, 0xe417) AM_WRITE(metlclsh_ack_nmi2            )   // nmi ack
153   AM_RANGE(0xe301, 0xe301) AM_WRITE(metlclsh_flipscreen_w         )   // 0/1
154   AM_RANGE(0xe401, 0xe401) AM_WRITE(metlclsh_rambank_w         )
155   AM_RANGE(0xe402, 0xe403) AM_WRITE(SMH_RAM) AM_BASE(&metlclsh_scrollx   )
156//  AM_RANGE(0xe404, 0xe404) AM_WRITE(SMH_NOP                      )   // ? 0
157//  AM_RANGE(0xe410, 0xe410) AM_WRITE(SMH_NOP                      )   // ? 0 on startup only
158   AM_RANGE(0xfff0, 0xffff) AM_WRITE(SMH_ROM                  )
159ADDRESS_MAP_END
160136
161
162137/***************************************************************************
163138
164139                                Input Ports
r4679r4680
287262
288263static void metlclsh_irqhandler(const device_config *device, int linestate)
289264{
290   cpu_set_input_line(device->machine->cpu[0],M6809_IRQ_LINE,linestate);
265   cputag_set_input_line(device->machine, "maincpu", M6809_IRQ_LINE, linestate);
291266}
292267
293268static const ym3526_interface ym3526_config =
r4679r4680
313288
314289   /* basic machine hardware */
315290   MDRV_CPU_ADD("maincpu", M6809, 1500000)        // ?
316   MDRV_CPU_PROGRAM_MAP(metlclsh_readmem, metlclsh_writemem)
291   MDRV_CPU_PROGRAM_MAP(metlclsh_master_map, 0)
317292   // IRQ by YM3526, NMI by cpu #2
318293
319294   MDRV_CPU_ADD("sub", M6809, 1500000)        // ?
320   MDRV_CPU_PROGRAM_MAP(metlclsh_readmem2, metlclsh_writemem2)
295   MDRV_CPU_PROGRAM_MAP(metlclsh_slave_map, 0)
321296   MDRV_CPU_VBLANK_INT_HACK(metlclsh_interrupt2,2)
322297   // IRQ by cpu #1, NMI by coins insertion
323298
r4679r4680
456431ROM_END
457432
458433GAME( 1985, metlclsh, 0, metlclsh, metlclsh, 0, ROT0, "Data East", "Metal Clash (Japan)", 0 )
459
src/mame/drivers/88games.c
r4679r4680
6868
6969static WRITE8_HANDLER( k88games_sh_irqtrigger_w )
7070{
71   cpu_set_input_line_and_vector(space->machine->cpu[1], 0, HOLD_LINE, 0xff);
71   cputag_set_input_line_and_vector(space->machine, "audiocpu", 0, HOLD_LINE, 0xff);
7272}
7373
7474static UINT8 speech_chip[8];
r4679r4680
477477
478478static MACHINE_RESET( 88games )
479479{
480   konami_configure_set_lines(machine->cpu[0], k88games_banking);
480   konami_configure_set_lines(cputag_get_cpu(machine, "maincpu"), k88games_banking);
481481   paletteram = &memory_region(machine, "maincpu")[0x20000];
482482}
483483
src/mame/drivers/ddenlovr.c
r4679r4680
159159   int i;
160160   for (i = 0; i < 8; i++)
161161   {
162      ddenlovr_pixmap[i] = auto_malloc(512*512);
162      ddenlovr_pixmap[i] = auto_alloc_array(machine, UINT8, 512*512);
163163      ddenlovr_scroll[i*2+0] = ddenlovr_scroll[i*2+1] = 0;
164164   }
165165
r4679r4680
908908            #endif
909909         }
910910
911         cpu_set_input_line_and_vector(machine->cpu[0], 0, HOLD_LINE, irq_vector);
911         cputag_set_input_line_and_vector(machine, "maincpu", 0, HOLD_LINE, irq_vector);
912912         break;
913913
914914      default:
r4679r4680
15751575   COMBINE_DATA(quiz365_protection + offset);
15761576}
15771577
1578static ADDRESS_MAP_START( quiz365_readmem, ADDRESS_SPACE_PROGRAM, 16 )
1579   AM_RANGE(0x000000, 0x17ffff) AM_READ(SMH_ROM)            // ROM
1580   AM_RANGE(0x200c02, 0x200c03) AM_READ(quiz365_protection_r)   // Protection
1581   AM_RANGE(0x300204, 0x300207) AM_READ(quiz365_input2_r)      //
1582   AM_RANGE(0x300270, 0x300271) AM_READ(unk16_r)            // ? must be 78 on startup (not necessary in ddlover)
1583   AM_RANGE(0x300286, 0x300287) AM_READ(ddenlovr_gfxrom_r)      // Video Chip
1584   AM_RANGE(0x3002c0, 0x3002c1) AM_DEVREAD8("oki", okim6295_r, 0x00ff)            // Sound
1585   AM_RANGE(0x300340, 0x30035f) AM_DEVREAD8("rtc", msm6242_r, 0x00ff)   // 6242RTC
1586   AM_RANGE(0x300384, 0x300385) AM_DEVREAD8("ay", ay8910_r, 0x00ff)
1587   AM_RANGE(0xff0000, 0xffffff) AM_READ(SMH_RAM)            // RAM
1588ADDRESS_MAP_END
1578static ADDRESS_MAP_START( quiz365_map, ADDRESS_SPACE_PROGRAM, 16 )
1579   AM_RANGE(0x000000, 0x17ffff) AM_ROM                                       // ROM
15891580
1590static ADDRESS_MAP_START( quiz365_writemem, ADDRESS_SPACE_PROGRAM, 16 )
1591   AM_RANGE(0x000000, 0x17ffff) AM_WRITE(SMH_ROM)               // ROM
1592   AM_RANGE(0x200000, 0x2003ff) AM_WRITE(ddenlovr_palette_w)      // Palette
1593   AM_RANGE(0x200e0a, 0x200e0d) AM_WRITE(quiz365_protection_w)      // Protection
1594//  AM_RANGE(0x201000, 0x2017ff) AM_WRITE(SMH_RAM)                  // ?
1581   AM_RANGE(0x200000, 0x2003ff) AM_WRITE(ddenlovr_palette_w)                     // Palette
1582
1583   AM_RANGE(0x200c02, 0x200c03) AM_READ(quiz365_protection_r)                     // Protection
1584   AM_RANGE(0x200e0a, 0x200e0d) AM_WRITE(quiz365_protection_w)                     // Protection
1585//  AM_RANGE(0x201000, 0x2017ff) AM_WRITE(SMH_RAM)                                      // ?
1586
15951587   AM_RANGE(0x300200, 0x300201) AM_WRITE(ddenlovr_select2_16_w)
1596   AM_RANGE(0x300202, 0x300203) AM_WRITE(quiz365_coincounter_w)   // Coin Counters + more stuff written on startup
1588   AM_RANGE(0x300202, 0x300203) AM_WRITE(quiz365_coincounter_w)                  // Coin Counters + more stuff written on startup
1589   AM_RANGE(0x300204, 0x300207) AM_READ(quiz365_input2_r)                        //
1590
15971591   AM_RANGE(0x300240, 0x300247) AM_WRITE(ddenlovr16_palette_base_w)
15981592   AM_RANGE(0x300248, 0x30024f) AM_WRITE(ddenlovr16_palette_mask_w)
15991593   AM_RANGE(0x300250, 0x300257) AM_WRITE(ddenlovr16_transparency_pen_w)
r4679r4680
16011595   AM_RANGE(0x300268, 0x300269) AM_WRITE(ddenlovr16_bgcolor_w)
16021596   AM_RANGE(0x30026a, 0x30026b) AM_WRITE(ddenlovr16_priority_w)
16031597   AM_RANGE(0x30026c, 0x30026d) AM_WRITE(ddenlovr16_layer_enable_w)
1598   AM_RANGE(0x300270, 0x300271) AM_READ(unk16_r)                              // ? must be 78 on startup (not necessary in ddlover)
16041599   AM_RANGE(0x300280, 0x300283) AM_WRITE(ddenlovr_blitter_w)
1600   AM_RANGE(0x300286, 0x300287) AM_READ(ddenlovr_gfxrom_r)                        // Video Chip
1601
1602   AM_RANGE(0x3002c0, 0x3002c1) AM_DEVREADWRITE8("oki", okim6295_r, okim6295_w, 0x00ff)// Sound
16051603   AM_RANGE(0x300300, 0x300303) AM_DEVWRITE8("ym", ym2413_w, 0x00ff)
1606   AM_RANGE(0x300340, 0x30035f) AM_DEVWRITE8("rtc", msm6242_w, 0x00ff)   // 6242RTC
1607   AM_RANGE(0x3003ca, 0x3003cb) AM_WRITE(ddenlovr_blitter_irq_ack_w)            // Blitter irq acknowledge
1604   AM_RANGE(0x300340, 0x30035f) AM_DEVREADWRITE8("rtc", msm6242_r, msm6242_w, 0x00ff)   // 6242RTC
16081605   AM_RANGE(0x300380, 0x300383) AM_DEVWRITE8("ay", ay8910_address_data_w, 0x00ff)
1609   AM_RANGE(0x3002c0, 0x3002c1) AM_DEVWRITE8("oki", okim6295_w, 0x00ff)
1606   AM_RANGE(0x300384, 0x300385) AM_DEVREAD8("ay", ay8910_r, 0x00ff)
16101607   AM_RANGE(0x3003c2, 0x3003c3) AM_DEVWRITE("oki", quiz365_oki_bank1_w)
1608   AM_RANGE(0x3003ca, 0x3003cb) AM_WRITE(ddenlovr_blitter_irq_ack_w)               // Blitter irq acknowledge
16111609   AM_RANGE(0x3003cc, 0x3003cd) AM_DEVWRITE("oki", quiz365_oki_bank2_w)
1612   AM_RANGE(0xff0000, 0xffffff) AM_WRITE(SMH_RAM)   // RAM
1610
1611   AM_RANGE(0xff0000, 0xffffff) AM_RAM                                       // RAM
16131612ADDRESS_MAP_END
16141613
16151614
r4679r4680
16391638   return ddenlovr_blitter_irq_flag ? 0x03 : 0x00;      // bit 4 = 1 -> blitter busy
16401639}
16411640
1642static ADDRESS_MAP_START( ddenlvrj_readmem, ADDRESS_SPACE_PROGRAM, 16 )
1643   AM_RANGE(0x000000, 0x07ffff) AM_READ(SMH_ROM)               // ROM
1644   AM_RANGE(0x300070, 0x300071) AM_READ(unk16_r)               // ? must be 78 on startup (not necessary in ddlover)
1645   AM_RANGE(0x300086, 0x300087) AM_READ(ddenlovr_gfxrom_r)         // Video Chip
1646   AM_RANGE(0x300100, 0x30011f) AM_DEVREAD8("rtc", msm6242_r,   0x00ff)   // 6242RTC
1647   AM_RANGE(0x300180, 0x300181) AM_READ_PORT("P1")
1648   AM_RANGE(0x300182, 0x300183) AM_READ_PORT("P2")
1649   AM_RANGE(0x300184, 0x300185) AM_READ_PORT("SYSTEM")
1650   AM_RANGE(0x300186, 0x300187) AM_READ(ddenlvrj_dsw_r)         // DSW
1651   AM_RANGE(0x300240, 0x300241) AM_DEVREAD8("oki", okim6295_r, 0x00ff)   // Sound
1652   AM_RANGE(0xff0000, 0xffffff) AM_READ(SMH_RAM)               // RAM
1653ADDRESS_MAP_END
1641static ADDRESS_MAP_START( ddenlvrj_map, ADDRESS_SPACE_PROGRAM, 16 )
1642   AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM
16541643
1655static ADDRESS_MAP_START( ddenlvrj_writemem, ADDRESS_SPACE_PROGRAM, 16 )
1656   AM_RANGE(0x000000, 0x07ffff) AM_WRITE(SMH_ROM)               // ROM
1657   AM_RANGE(0x200000, 0x2003ff) AM_WRITE(ddenlovr_palette_w)      // Palette
1658//  AM_RANGE(0x201000, 0x2017ff) AM_WRITE(SMH_RAM)                  // ? B0 on startup, then 00
1644   AM_RANGE(0x200000, 0x2003ff) AM_WRITE(ddenlovr_palette_w)                     // Palette
1645//  AM_RANGE(0x201000, 0x2017ff) AM_WRITE(SMH_RAM)                                      // ? B0 on startup, then 00
1646
16591647   AM_RANGE(0x300040, 0x300047) AM_WRITE(ddenlovr16_palette_base_w)
16601648   AM_RANGE(0x300048, 0x30004f) AM_WRITE(ddenlovr16_palette_mask_w)
16611649   AM_RANGE(0x300050, 0x300057) AM_WRITE(ddenlovr16_transparency_pen_w)
r4679r4680
16631651   AM_RANGE(0x300068, 0x300069) AM_WRITE(ddenlovr16_bgcolor_w)
16641652   AM_RANGE(0x30006a, 0x30006b) AM_WRITE(ddenlovr16_priority_w)
16651653   AM_RANGE(0x30006c, 0x30006d) AM_WRITE(ddenlovr16_layer_enable_w)
1654   AM_RANGE(0x300070, 0x300071) AM_READ(unk16_r)                              // ? must be 78 on startup (not necessary in ddlover)
16661655   AM_RANGE(0x300080, 0x300083) AM_WRITE(ddenlovr_blitter_w)
1656   AM_RANGE(0x300086, 0x300087) AM_READ(ddenlovr_gfxrom_r)                        // Video Chip
16671657   AM_RANGE(0x3000c0, 0x3000c3) AM_DEVWRITE8("ym", ym2413_w, 0x00ff)
1668   AM_RANGE(0x300100, 0x30011f) AM_DEVWRITE8("rtc", msm6242_w, 0x00ff)   // 6242RTC
1658   AM_RANGE(0x300100, 0x30011f) AM_DEVREADWRITE8("rtc", msm6242_r, msm6242_w, 0x00ff)   // 6242RTC
16691659   AM_RANGE(0x300140, 0x300143) AM_DEVWRITE8("ay", ay8910_address_data_w, 0x00ff)
1670   AM_RANGE(0x300188, 0x300189) AM_WRITE(ddenlvrj_coincounter_w)               // Coin Counters
1671   AM_RANGE(0x30018a, 0x30018b) AM_WRITE(SMH_RAM) AM_BASE( &ddenlvrj_dsw_sel )      // DSW select
1660   AM_RANGE(0x300180, 0x300181) AM_READ_PORT("P1")
1661   AM_RANGE(0x300182, 0x300183) AM_READ_PORT("P2")
1662   AM_RANGE(0x300184, 0x300185) AM_READ_PORT("SYSTEM")
1663   AM_RANGE(0x300186, 0x300187) AM_READ(ddenlvrj_dsw_r)                        // DSW
1664   AM_RANGE(0x300188, 0x300189) AM_WRITE(ddenlvrj_coincounter_w)                  // Coin Counters
1665   AM_RANGE(0x30018a, 0x30018b) AM_WRITE(SMH_RAM) AM_BASE( &ddenlvrj_dsw_sel )         // DSW select
16721666   AM_RANGE(0x30018c, 0x30018d) AM_DEVWRITE("oki", ddenlovr_oki_bank_w)
1673   AM_RANGE(0x3001ca, 0x3001cb) AM_WRITE(ddenlovr_blitter_irq_ack_w)            // Blitter irq acknowledge
1674   AM_RANGE(0x300240, 0x300241) AM_DEVWRITE8("oki", okim6295_w, 0x00ff)
1675   AM_RANGE(0xff0000, 0xffffff) AM_WRITE(SMH_RAM)                           // RAM
1667   AM_RANGE(0x3001ca, 0x3001cb) AM_WRITE(ddenlovr_blitter_irq_ack_w)               // Blitter irq acknowledge
1668   AM_RANGE(0x300240, 0x300241) AM_DEVREADWRITE8("oki", okim6295_r, okim6295_w, 0x00ff)// Sound
1669   AM_RANGE(0xff0000, 0xffffff) AM_RAM                                       // RAM
16761670ADDRESS_MAP_END
16771671
16781672
r4679r4680
17001694   okim6295_set_bank_base(devtag_get_device(space->machine, "oki"), ((*ddenlvrk_protection2)&0x7) * 0x40000);
17011695}
17021696
1703static ADDRESS_MAP_START( ddenlvrk_readmem, ADDRESS_SPACE_PROGRAM, 16 )
1704   AM_RANGE(0x000000, 0x07ffff) AM_READ(SMH_ROM)               // ROM
1705   AM_RANGE(0xe00086, 0xe00087) AM_READ(ddenlovr_gfxrom_r)         // Video Chip
1706   AM_RANGE(0xe00070, 0xe00071) AM_READNOP
1707   AM_RANGE(0xe00100, 0xe00101) AM_READ_PORT("P1")
1708   AM_RANGE(0xe00102, 0xe00103) AM_READ_PORT("P2")
1709   AM_RANGE(0xe00104, 0xe00105) AM_READ_PORT("SYSTEM")
1710   AM_RANGE(0xe00200, 0xe00201) AM_READ_PORT("DSW")
1711   AM_RANGE(0xe00500, 0xe0051f) AM_DEVREAD8("rtc", msm6242_r,   0x00ff)   // 6242RTC
1712   AM_RANGE(0xe00604, 0xe00605) AM_DEVREAD8("ay", ay8910_r, 0x00ff)
1713   AM_RANGE(0xe00700, 0xe00701) AM_DEVREAD8("oki", okim6295_r, 0x00ff)   // Sound
1714   AM_RANGE(0xff0000, 0xffffff) AM_READ(SMH_RAM)               // RAM
1715ADDRESS_MAP_END
1697static ADDRESS_MAP_START( ddenlvrk_map, ADDRESS_SPACE_PROGRAM, 16 )
1698   AM_RANGE(0x000000, 0x07ffff) AM_ROM                                          // ROM
17161699
1717static ADDRESS_MAP_START( ddenlvrk_writemem, ADDRESS_SPACE_PROGRAM, 16 )
1718   AM_RANGE(0x000000, 0x07ffff) AM_WRITE(SMH_ROM)                  // ROM
1719
17201700   AM_RANGE(0x100000, 0x100001) AM_READWRITE(ddenlvrk_protection1_r, SMH_RAM)               AM_BASE(&ddenlvrk_protection1)
17211701   AM_RANGE(0x200000, 0x200001) AM_READWRITE(ddenlvrk_protection2_r, ddenlvrk_protection2_w)   AM_BASE(&ddenlvrk_protection2)
17221702
1723   AM_RANGE(0xd00000, 0xd003ff) AM_WRITE(ddenlovr_palette_w)         // Palette
1724//  AM_RANGE(0xd01000, 0xd017ff) SMH_RAM)                               // ? B0 on startup, then 00
1703   AM_RANGE(0xd00000, 0xd003ff) AM_WRITE(ddenlovr_palette_w)                        // Palette
1704//  AM_RANGE(0xd01000, 0xd017ff) SMH_RAM)                                                   // ? B0 on startup, then 00
1705
17251706   AM_RANGE(0xe00040, 0xe00047) AM_WRITE(ddenlovr16_palette_base_w)
17261707   AM_RANGE(0xe00048, 0xe0004f) AM_WRITE(ddenlovr16_palette_mask_w)
17271708   AM_RANGE(0xe00050, 0xe00057) AM_WRITE(ddenlovr16_transparency_pen_w)
r4679r4680
17291710   AM_RANGE(0xe00068, 0xe00069) AM_WRITE(ddenlovr16_bgcolor_w)
17301711   AM_RANGE(0xe0006a, 0xe0006b) AM_WRITE(ddenlovr16_priority_w)
17311712   AM_RANGE(0xe0006c, 0xe0006d) AM_WRITE(ddenlovr16_layer_enable_w)
1713   AM_RANGE(0xe00070, 0xe00071) AM_READNOP
17321714   AM_RANGE(0xe00080, 0xe00083) AM_WRITE(ddenlovr_blitter_w)
1733   AM_RANGE(0xe00302, 0xe00303) AM_WRITE(ddenlovr_blitter_irq_ack_w)   // Blitter irq acknowledge
1734   AM_RANGE(0xe00308, 0xe00309) AM_WRITE(ddenlovr_coincounter_0_w)      // Coin Counters
1735   AM_RANGE(0xe0030c, 0xe0030d) AM_WRITE(ddenlovr_coincounter_1_w)      //
1736   AM_RANGE(0xe00400, 0xe00403) AM_DEVWRITE8("ym", ym2413_w, 0x00ff)
1737   AM_RANGE(0xe00500, 0xe0051f) AM_DEVWRITE8("rtc", msm6242_w, 0x00ff)   // 6242RTC
1738//  AM_RANGE(0xe00302, 0xe00303) AM_WRITENOP                      // ?
1739   AM_RANGE(0xe00600, 0xe00603) AM_DEVWRITE8("ay", ay8910_address_data_w, 0x00ff)
1740   AM_RANGE(0xe00700, 0xe00701) AM_DEVWRITE8("oki", okim6295_w, 0x00ff)
1741   AM_RANGE(0xff0000, 0xffffff) AM_WRITE(SMH_RAM)                  // RAM
1742ADDRESS_MAP_END
1715   AM_RANGE(0xe00086, 0xe00087) AM_READ(ddenlovr_gfxrom_r)                           // Video Chip
17431716
1744
1745
1746
1747static ADDRESS_MAP_START( ddenlovr_readmem, ADDRESS_SPACE_PROGRAM, 16 )
1748   AM_RANGE(0x000000, 0x07ffff) AM_READ(SMH_ROM)               // ROM
1749   AM_RANGE(0xe00086, 0xe00087) AM_READ(ddenlovr_gfxrom_r)         // Video Chip
1750   AM_RANGE(0xe00070, 0xe00071) AM_READ(unk16_r)               // ? must be 78 on startup (not necessary in ddlover)
17511717   AM_RANGE(0xe00100, 0xe00101) AM_READ_PORT("P1")
17521718   AM_RANGE(0xe00102, 0xe00103) AM_READ_PORT("P2")
17531719   AM_RANGE(0xe00104, 0xe00105) AM_READ_PORT("SYSTEM")
17541720   AM_RANGE(0xe00200, 0xe00201) AM_READ_PORT("DSW")
1755   AM_RANGE(0xe00500, 0xe0051f) AM_DEVREAD8("rtc", msm6242_r,   0x00ff)   // 6242RTC
1721   AM_RANGE(0xe00302, 0xe00303) AM_WRITE(ddenlovr_blitter_irq_ack_w)                  // Blitter irq acknowledge
1722   AM_RANGE(0xe00308, 0xe00309) AM_WRITE(ddenlovr_coincounter_0_w)                     // Coin Counters
1723   AM_RANGE(0xe0030c, 0xe0030d) AM_WRITE(ddenlovr_coincounter_1_w)                     //
1724
1725   AM_RANGE(0xe00400, 0xe00403) AM_DEVWRITE8("ym", ym2413_w, 0x00ff)
1726   AM_RANGE(0xe00500, 0xe0051f) AM_DEVREADWRITE8("rtc", msm6242_r,   msm6242_w, 0x00ff)      // 6242RTC
1727   AM_RANGE(0xe00600, 0xe00603) AM_DEVWRITE8("ay", ay8910_address_data_w, 0x00ff)
17561728   AM_RANGE(0xe00604, 0xe00605) AM_DEVREAD8("ay", ay8910_r, 0x00ff)
1757   AM_RANGE(0xe00700, 0xe00701) AM_DEVREAD8("oki", okim6295_r, 0x00ff)   // Sound
1758   AM_RANGE(0xff0000, 0xffffff) AM_READ(SMH_RAM)               // RAM
1729   AM_RANGE(0xe00700, 0xe00701) AM_DEVREADWRITE8("oki", okim6295_r, okim6295_w, 0x00ff)   // Sound
1730   AM_RANGE(0xff0000, 0xffffff) AM_RAM                                          // RAM
17591731ADDRESS_MAP_END
17601732
1761static ADDRESS_MAP_START( ddenlovr_writemem, ADDRESS_SPACE_PROGRAM, 16 )
1762   AM_RANGE(0x000000, 0x07ffff) AM_WRITE(SMH_ROM)                  // ROM
1733
1734
1735
1736static ADDRESS_MAP_START( ddenlovr_map, ADDRESS_SPACE_PROGRAM, 16 )
1737   AM_RANGE(0x000000, 0x07ffff) AM_ROM                                          // ROM
1738
17631739   AM_RANGE(0x300000, 0x300001) AM_DEVWRITE("oki", ddenlovr_oki_bank_w)
1764   AM_RANGE(0xd00000, 0xd003ff) AM_WRITE(ddenlovr_palette_w)         // Palette
1765//  AM_RANGE(0xd01000, 0xd017ff) SMH_RAM)                               // ? B0 on startup, then 00
1740
1741   AM_RANGE(0xd00000, 0xd003ff) AM_WRITE(ddenlovr_palette_w)                        // Palette
1742//  AM_RANGE(0xd01000, 0xd017ff) SMH_RAM)                                                   // ? B0 on startup, then 00
1743
17661744   AM_RANGE(0xe00040, 0xe00047) AM_WRITE(ddenlovr16_palette_base_w)
17671745   AM_RANGE(0xe00048, 0xe0004f) AM_WRITE(ddenlovr16_palette_mask_w)
17681746   AM_RANGE(0xe00050, 0xe00057) AM_WRITE(ddenlovr16_transparency_pen_w)
r4679r4680
17701748   AM_RANGE(0xe00068, 0xe00069) AM_WRITE(ddenlovr16_bgcolor_w)
17711749   AM_RANGE(0xe0006a, 0xe0006b) AM_WRITE(ddenlovr16_priority_w)
17721750   AM_RANGE(0xe0006c, 0xe0006d) AM_WRITE(ddenlovr16_layer_enable_w)
1751   AM_RANGE(0xe00070, 0xe00071) AM_READ(unk16_r)                                 // ? must be 78 on startup (not necessary in ddlover)
17731752   AM_RANGE(0xe00080, 0xe00083) AM_WRITE(ddenlovr_blitter_w)
1774   AM_RANGE(0xe00302, 0xe00303) AM_WRITE(ddenlovr_blitter_irq_ack_w)   // Blitter irq acknowledge
1775   AM_RANGE(0xe00308, 0xe00309) AM_WRITE(ddenlovr_coincounter_0_w)      // Coin Counters
1776   AM_RANGE(0xe0030c, 0xe0030d) AM_WRITE(ddenlovr_coincounter_1_w)      //
1753   AM_RANGE(0xe00086, 0xe00087) AM_READ(ddenlovr_gfxrom_r)                           // Video Chip
1754
1755   AM_RANGE(0xe00100, 0xe00101) AM_READ_PORT("P1")
1756   AM_RANGE(0xe00102, 0xe00103) AM_READ_PORT("P2")
1757   AM_RANGE(0xe00104, 0xe00105) AM_READ_PORT("SYSTEM")
1758   AM_RANGE(0xe00200, 0xe00201) AM_READ_PORT("DSW")
1759   AM_RANGE(0xe00302, 0xe00303) AM_WRITE(ddenlovr_blitter_irq_ack_w)                  // Blitter irq acknowledge
1760   AM_RANGE(0xe00308, 0xe00309) AM_WRITE(ddenlovr_coincounter_0_w)                     // Coin Counters
1761   AM_RANGE(0xe0030c, 0xe0030d) AM_WRITE(ddenlovr_coincounter_1_w)                     //
1762
17771763   AM_RANGE(0xe00400, 0xe00403) AM_DEVWRITE8("ym", ym2413_w, 0x00ff)
1778   AM_RANGE(0xe00500, 0xe0051f) AM_DEVWRITE8("rtc", msm6242_w, 0x00ff)   // 6242RTC
1779//  AM_RANGE(0xe00302, 0xe00303) AM_WRITENOP                      // ?
1764   AM_RANGE(0xe00500, 0xe0051f) AM_DEVREADWRITE8("rtc", msm6242_r, msm6242_w, 0x00ff)      // 6242RTC
17801765   AM_RANGE(0xe00600, 0xe00603) AM_DEVWRITE8("ay", ay8910_address_data_w, 0x00ff)
1781   AM_RANGE(0xe00700, 0xe00701) AM_DEVWRITE8("oki", okim6295_w, 0x00ff)
1782   AM_RANGE(0xff0000, 0xffffff) AM_WRITE(SMH_RAM)                  // RAM
1766   AM_RANGE(0xe00604, 0xe00605) AM_DEVREAD8("ay", ay8910_r, 0x00ff)
1767   AM_RANGE(0xe00700, 0xe00701) AM_DEVREADWRITE8("oki", okim6295_r, okim6295_w, 0x00ff)   // Sound
1768   AM_RANGE(0xff0000, 0xffffff) AM_RAM                                          // RAM
17831769ADDRESS_MAP_END
17841770
17851771
r4679r4680
18301816      okim6295_set_bank_base(device, (data & 3) * 0x40000);
18311817}
18321818
1833static ADDRESS_MAP_START( nettoqc_readmem, ADDRESS_SPACE_PROGRAM, 16 )
1834   AM_RANGE(0x000000, 0x17ffff) AM_READ(SMH_ROM)            // ROM
1835   AM_RANGE(0x200c02, 0x200c03) AM_READ(nettoqc_protection_r)   //
1836   AM_RANGE(0x300070, 0x300071) AM_READ(unk16_r)            // ? must be 78 on startup (not necessary in ddlover)
1837   AM_RANGE(0x300086, 0x300087) AM_READ(ddenlovr_gfxrom_r)      // Video Chip
1838   AM_RANGE(0x300100, 0x30011f) AM_DEVREAD8("rtc", msm6242_r,   0x00ff)   // 6242RTC
1839   AM_RANGE(0x300180, 0x300181) AM_READ_PORT("P1")
1840   AM_RANGE(0x300182, 0x300183) AM_READ_PORT("P2")
1841   AM_RANGE(0x300184, 0x300185) AM_READ_PORT("SYSTEM")
1842   AM_RANGE(0x300186, 0x300187) AM_READ(nettoqc_input_r)      // DSW's
1843   AM_RANGE(0x300240, 0x300241) AM_DEVREAD8("oki", okim6295_r, 0x00ff)   // Sound
1844   AM_RANGE(0xff0000, 0xffffff) AM_READ(SMH_RAM)            // RAM
1845ADDRESS_MAP_END
1819static ADDRESS_MAP_START( nettoqc_map, ADDRESS_SPACE_PROGRAM, 16 )
1820   AM_RANGE(0x000000, 0x17ffff) AM_ROM                                          // ROM
18461821
1847static ADDRESS_MAP_START( nettoqc_writemem, ADDRESS_SPACE_PROGRAM, 16 )
1848   AM_RANGE(0x000000, 0x17ffff) AM_WRITE(SMH_ROM)            // ROM
1849   AM_RANGE(0x200000, 0x2003ff) AM_WRITE(ddenlovr_palette_w)   // Palette
1850   AM_RANGE(0x200e0a, 0x200e0d) AM_WRITE(SMH_RAM) AM_BASE(&nettoqc_protection_val)   //
1851   AM_RANGE(0x201000, 0x2017ff) AM_WRITE(SMH_RAM)            // ?
1822   AM_RANGE(0x200000, 0x2003ff) AM_WRITE(ddenlovr_palette_w)                        // Palette
1823   AM_RANGE(0x200c02, 0x200c03) AM_READ(nettoqc_protection_r)                        //
1824   AM_RANGE(0x200e0a, 0x200e0d) AM_WRITE(SMH_RAM) AM_BASE(&nettoqc_protection_val)         //
1825   AM_RANGE(0x201000, 0x2017ff) AM_WRITE(SMH_RAM)                                 // ?
1826
18521827   AM_RANGE(0x300040, 0x300047) AM_WRITE(ddenlovr16_palette_base_w)
18531828   AM_RANGE(0x300048, 0x30004f) AM_WRITE(ddenlovr16_palette_mask_w)
18541829   AM_RANGE(0x300050, 0x300057) AM_WRITE(ddenlovr16_transparency_pen_w)
r4679r4680
18561831   AM_RANGE(0x300068, 0x300069) AM_WRITE(ddenlovr16_bgcolor_w)
18571832   AM_RANGE(0x30006a, 0x30006b) AM_WRITE(ddenlovr16_priority_w)
18581833   AM_RANGE(0x30006c, 0x30006d) AM_WRITE(ddenlovr16_layer_enable_w)
1834   AM_RANGE(0x300070, 0x300071) AM_READ(unk16_r)                                 // ? must be 78 on startup (not necessary in ddlover)
18591835   AM_RANGE(0x300080, 0x300083) AM_WRITE(ddenlovr_blitter_w)
1836   AM_RANGE(0x300086, 0x300087) AM_READ(ddenlovr_gfxrom_r)                           // Video Chip
18601837   AM_RANGE(0x3000c0, 0x3000c3) AM_DEVWRITE8("ym", ym2413_w, 0x00ff)
1861   AM_RANGE(0x300100, 0x30011f) AM_DEVWRITE8("rtc", msm6242_w, 0x00ff)   // 6242RTC
1838   AM_RANGE(0x300100, 0x30011f) AM_DEVREADWRITE8("rtc", msm6242_r, msm6242_w, 0x00ff)      // 6242RTC
18621839   AM_RANGE(0x300140, 0x300143) AM_DEVWRITE8("ay", ay8910_address_data_w, 0x00ff)
1863   AM_RANGE(0x300188, 0x300189) AM_WRITE(nettoqc_coincounter_w)   // Coin Counters
1864   AM_RANGE(0x30018a, 0x30018b) AM_WRITE(ddenlovr_select_16_w)      //
1840   AM_RANGE(0x300180, 0x300181) AM_READ_PORT("P1")
1841   AM_RANGE(0x300182, 0x300183) AM_READ_PORT("P2")
1842   AM_RANGE(0x300184, 0x300185) AM_READ_PORT("SYSTEM")
1843   AM_RANGE(0x300186, 0x300187) AM_READ(nettoqc_input_r)                           // DSW's
1844   AM_RANGE(0x300188, 0x300189) AM_WRITE(nettoqc_coincounter_w)                     // Coin Counters
1845   AM_RANGE(0x30018a, 0x30018b) AM_WRITE(ddenlovr_select_16_w)                        //
18651846   AM_RANGE(0x30018c, 0x30018d) AM_DEVWRITE("oki", nettoqc_oki_bank_w)
1866   AM_RANGE(0x3001ca, 0x3001cb) AM_WRITE(ddenlovr_blitter_irq_ack_w)   // Blitter irq acknowledge
1867   AM_RANGE(0x300240, 0x300241) AM_DEVWRITE8("oki", okim6295_w, 0x00ff)
1868   AM_RANGE(0xff0000, 0xffffff) AM_WRITE(SMH_RAM)               // RAM
1847   AM_RANGE(0x3001ca, 0x3001cb) AM_WRITE(ddenlovr_blitter_irq_ack_w)                  // Blitter irq acknowledge
1848   AM_RANGE(0x300240, 0x300241) AM_DEVREADWRITE8("oki", okim6295_r, okim6295_w, 0x00ff)   // Sound
1849   AM_RANGE(0xff0000, 0xffffff) AM_RAM                                          // RAM
18691850ADDRESS_MAP_END
18701851
18711852
r4679r4680
18971878}
18981879
18991880
1900static ADDRESS_MAP_START( quizchq_readmem, ADDRESS_SPACE_PROGRAM, 8 )
1901   AM_RANGE(0x0000, 0x5fff) AM_READ(SMH_ROM)   // ROM
1902   AM_RANGE(0x6000, 0x6fff) AM_READ(SMH_RAM)   // RAM
1903   AM_RANGE(0x7000, 0x7fff) AM_READ(SMH_BANK2)   // RAM (Banked)
1904   AM_RANGE(0x8000, 0xffff) AM_READ(SMH_BANK1)   // ROM (Banked)
1881static ADDRESS_MAP_START( quizchq_map, ADDRESS_SPACE_PROGRAM, 8 )
1882   AM_RANGE(0x0000, 0x5fff) AM_ROM                                 // ROM
1883   AM_RANGE(0x6000, 0x6fff) AM_RAM                                 // RAM
1884   AM_RANGE(0x7000, 0x7fff) AM_RAMBANK(2)                           // RAM (Banked)
1885   AM_RANGE(0x8000, 0xffff) AM_ROMBANK(1) AM_WRITE(rongrong_palette_w)      // ROM (Banked)
19051886ADDRESS_MAP_END
19061887
1907static ADDRESS_MAP_START( quizchq_writemem, ADDRESS_SPACE_PROGRAM, 8 )
1908   AM_RANGE(0x6000, 0x6fff) AM_WRITE(SMH_RAM)      // RAM
1909   AM_RANGE(0x7000, 0x7fff) AM_WRITE(SMH_BANK2)   // RAM (Banked)
1910   AM_RANGE(0x8000, 0x81ff) AM_WRITE(rongrong_palette_w)
1911ADDRESS_MAP_END
1912
1913static ADDRESS_MAP_START( quizchq_readport, ADDRESS_SPACE_IO, 8 )   ADDRESS_MAP_GLOBAL_MASK(0xff)
1888static ADDRESS_MAP_START( quizchq_portmap, ADDRESS_SPACE_IO, 8 )   ADDRESS_MAP_GLOBAL_MASK(0xff)
1889   AM_RANGE(0x00, 0x01) AM_WRITE(rongrong_blitter_w)
19141890   AM_RANGE(0x03, 0x03) AM_READ(rongrong_gfxrom_r)
1915   AM_RANGE(0x1b, 0x1b) AM_READ(rongrong_blitter_busy_r)
1916   AM_RANGE(0x1c, 0x1c) AM_READ(rongrong_input_r)
1917   AM_RANGE(0x22, 0x23) AM_READ(rongrong_input2_r)
1918   AM_RANGE(0x40, 0x40) AM_DEVREAD("oki", okim6295_r)
1919   AM_RANGE(0x98, 0x98) AM_READ(unk_r)                     // ? must be 78 on startup
1920   AM_RANGE(0xa0, 0xaf) AM_DEVREAD("rtc", msm6242_r)   // 6242RTC
1921ADDRESS_MAP_END
1891   AM_RANGE(0x1b, 0x1b) AM_READWRITE(rongrong_blitter_busy_r, rongrong_blitter_busy_w)
19221892
1923static ADDRESS_MAP_START( quizchq_writeport, ADDRESS_SPACE_IO, 8 )   ADDRESS_MAP_GLOBAL_MASK(0xff)
1924   AM_RANGE(0x00, 0x01) AM_WRITE(rongrong_blitter_w)
1925   AM_RANGE(0x1b, 0x1b) AM_WRITE(rongrong_blitter_busy_w)
1893   AM_RANGE(0x1c, 0x1c) AM_READ(rongrong_input_r)
19261894   AM_RANGE(0x1e, 0x1e) AM_WRITE(rongrong_select_w)
19271895   AM_RANGE(0x20, 0x20) AM_WRITE(ddenlovr_select2_w)
1928   AM_RANGE(0x40, 0x40) AM_DEVWRITE("oki", okim6295_w)
1896   AM_RANGE(0x22, 0x23) AM_READ(rongrong_input2_r)
1897
1898   AM_RANGE(0x40, 0x40) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w)
19291899   AM_RANGE(0x60, 0x61) AM_DEVWRITE("ym", ym2413_w)
1900
19301901   AM_RANGE(0x80, 0x83) AM_WRITE(ddenlovr_palette_base_w)
19311902   AM_RANGE(0x84, 0x87) AM_WRITE(ddenlovr_palette_mask_w)
19321903   AM_RANGE(0x88, 0x8b) AM_WRITE(ddenlovr_transparency_pen_w)
r4679r4680
19341905   AM_RANGE(0x94, 0x94) AM_WRITE(ddenlovr_bgcolor_w)
19351906   AM_RANGE(0x95, 0x95) AM_WRITE(ddenlovr_priority_w)
19361907   AM_RANGE(0x96, 0x96) AM_WRITE(ddenlovr_layer_enable_w)
1937   AM_RANGE(0xa0, 0xaf) AM_DEVWRITE("rtc", msm6242_w)   // 6242RTC
1908   AM_RANGE(0x98, 0x98) AM_READ(unk_r)                     // ? must be 78 on startup
1909
1910   AM_RANGE(0xa0, 0xaf) AM_DEVREADWRITE("rtc", msm6242_r, msm6242_w)   // 6242RTC
19381911   AM_RANGE(0xc0, 0xc0) AM_DEVWRITE("oki", quizchq_oki_bank_w)
19391912   AM_RANGE(0xc2, 0xc2) AM_WRITENOP                  // enables palette RAM at 8000
19401913ADDRESS_MAP_END
19411914
19421915
19431916
1944static ADDRESS_MAP_START( rongrong_readmem, ADDRESS_SPACE_PROGRAM, 8 )
1945   AM_RANGE(0x0000, 0x5fff) AM_READ(SMH_ROM)   // ROM
1946   AM_RANGE(0x6000, 0x6fff) AM_READ(SMH_RAM)   // RAM
1947   AM_RANGE(0x7000, 0x7fff) AM_READ(SMH_BANK2)   // RAM (Banked)
1948   AM_RANGE(0x8000, 0xffff) AM_READ(SMH_BANK1)   // ROM (Banked)
1917static ADDRESS_MAP_START( rongrong_map, ADDRESS_SPACE_PROGRAM, 8 )
1918   AM_RANGE(0x0000, 0x5fff) AM_ROM                                 // ROM
1919   AM_RANGE(0x6000, 0x6fff) AM_RAM                                 // RAM
1920   AM_RANGE(0x7000, 0x7fff) AM_RAMBANK(2)                           // RAM (Banked)
1921   AM_RANGE(0x8000, 0xffff) AM_ROMBANK(1) AM_WRITE(rongrong_palette_w)      // ROM (Banked)
19491922ADDRESS_MAP_END
19501923
1951static ADDRESS_MAP_START( rongrong_writemem, ADDRESS_SPACE_PROGRAM, 8 )
1952   AM_RANGE(0x6000, 0x6fff) AM_WRITE(SMH_RAM)      // RAM
1953   AM_RANGE(0x7000, 0x7fff) AM_WRITE(SMH_BANK2)   // RAM (Banked)
1954   AM_RANGE(0xf000, 0xf1ff) AM_WRITE(rongrong_palette_w)
1955ADDRESS_MAP_END
1956
1957static ADDRESS_MAP_START( rongrong_readport, ADDRESS_SPACE_IO, 8 )   ADDRESS_MAP_GLOBAL_MASK(0xff)
1924static ADDRESS_MAP_START( rongrong_portmap, ADDRESS_SPACE_IO, 8 )   ADDRESS_MAP_GLOBAL_MASK(0xff)
1925   AM_RANGE(0x00, 0x01) AM_WRITE(rongrong_blitter_w)
19581926   AM_RANGE(0x03, 0x03) AM_READ(rongrong_gfxrom_r)
1959   AM_RANGE(0x1b, 0x1b) AM_READ(rongrong_blitter_busy_r)
1960   AM_RANGE(0x1c, 0x1c) AM_READ(rongrong_input_r)
1961   AM_RANGE(0x20, 0x2f) AM_DEVREAD("rtc", msm6242_r)   // 6242RTC
1962   AM_RANGE(0x40, 0x40) AM_DEVREAD("oki", okim6295_r)
1963   AM_RANGE(0x98, 0x98) AM_READ(unk_r)                     // ? must be 78 on startup
1964   AM_RANGE(0xa2, 0xa3) AM_READ(rongrong_input2_r)
1965ADDRESS_MAP_END
1927   AM_RANGE(0x1b, 0x1b) AM_READWRITE(rongrong_blitter_busy_r, rongrong_blitter_busy_w)
19661928
1967static ADDRESS_MAP_START( rongrong_writeport, ADDRESS_SPACE_IO, 8 )   ADDRESS_MAP_GLOBAL_MASK(0xff)
1968   AM_RANGE(0x00, 0x01) AM_WRITE(rongrong_blitter_w)
1969   AM_RANGE(0x1b, 0x1b) AM_WRITE(rongrong_blitter_busy_w)
1929   AM_RANGE(0x1c, 0x1c) AM_READ(rongrong_input_r)
19701930   AM_RANGE(0x1e, 0x1e) AM_WRITE(rongrong_select_w)
1971   AM_RANGE(0x20, 0x2f) AM_DEVWRITE("rtc", msm6242_w)   // 6242RTC
1972   AM_RANGE(0x40, 0x40) AM_DEVWRITE("oki", okim6295_w)
1931
1932   AM_RANGE(0x20, 0x2f) AM_DEVREADWRITE("rtc", msm6242_r, msm6242_w)   // 6242RTC
1933   AM_RANGE(0x40, 0x40) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w)
19731934   AM_RANGE(0x60, 0x61) AM_DEVWRITE("ym", ym2413_w)
1935
19741936   AM_RANGE(0x80, 0x83) AM_WRITE(ddenlovr_palette_base_w)
19751937   AM_RANGE(0x84, 0x87) AM_WRITE(ddenlovr_palette_mask_w)
19761938   AM_RANGE(0x88, 0x8b) AM_WRITE(ddenlovr_transparency_pen_w)
r4679r4680
19781940   AM_RANGE(0x94, 0x94) AM_WRITE(ddenlovr_bgcolor_w)
19791941   AM_RANGE(0x95, 0x95) AM_WRITE(ddenlovr_priority_w)
19801942   AM_RANGE(0x96, 0x96) AM_WRITE(ddenlovr_layer_enable_w)
1943   AM_RANGE(0x98, 0x98) AM_READ(unk_r)                           // ? must be 78 on startup
1944
19811945   AM_RANGE(0xa0, 0xa0) AM_WRITE(ddenlovr_select2_w)
1982   AM_RANGE(0xc2, 0xc2) AM_WRITENOP   // enables palette RAM at f000, and protection device at f705/f706/f601
1946   AM_RANGE(0xa2, 0xa3) AM_READ(rongrong_input2_r)
1947   AM_RANGE(0xc2, 0xc2) AM_WRITENOP                           // enables palette RAM at f000, and protection device at f705/f706/f601
19831948ADDRESS_MAP_END
19841949/*
198519501e input select,1c input read
r4679r4680
20091974static WRITE8_HANDLER( mmpanic_soundlatch_w )
20101975{
20111976   soundlatch_w(space,0,data);
2012   cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_NMI, PULSE_LINE);
1977   cputag_set_input_line(space->machine, "soundcpu", INPUT_LINE_NMI, PULSE_LINE);
20131978}
20141979
20151980static WRITE8_HANDLER( mmpanic_blitter_w )
r4679r4680
20572022
20582023/* Main CPU */
20592024
2060static ADDRESS_MAP_START( mmpanic_readmem, ADDRESS_SPACE_PROGRAM, 8 )
2061   AM_RANGE(0x0051, 0x0051) AM_READ(magic_r)   // ?
2062   AM_RANGE(0x0000, 0x5fff) AM_READ(SMH_ROM)   // ROM
2063   AM_RANGE(0x6000, 0x6fff) AM_READ(SMH_RAM)   // RAM
2064   AM_RANGE(0x7000, 0x7fff) AM_READ(SMH_BANK2)   // RAM (Banked)
2065   AM_RANGE(0x8000, 0xffff) AM_READ(SMH_BANK1)   // ROM (Banked)
2025static ADDRESS_MAP_START( mmpanic_map, ADDRESS_SPACE_PROGRAM, 8 )
2026   AM_RANGE(0x0051, 0x0051) AM_READ(magic_r)                        // ?
2027   AM_RANGE(0x0000, 0x5fff) AM_ROM                                 // ROM
2028   AM_RANGE(0x6000, 0x6fff) AM_RAM                                 // RAM
2029   AM_RANGE(0x7000, 0x7fff) AM_RAMBANK(2)                           // RAM (Banked)
2030   AM_RANGE(0x8000, 0xffff) AM_ROMBANK(1) AM_WRITE(rongrong_palette_w)      // ROM (Banked)
20662031ADDRESS_MAP_END
20672032
2068static ADDRESS_MAP_START( mmpanic_writemem, ADDRESS_SPACE_PROGRAM, 8 )
2069   AM_RANGE(0x6000, 0x6fff) AM_WRITE(SMH_RAM)      // RAM
2070   AM_RANGE(0x7000, 0x7fff) AM_WRITE(SMH_BANK2)   // RAM (Banked)
2071   AM_RANGE(0x8000, 0x81ff) AM_WRITE(rongrong_palette_w)
2072ADDRESS_MAP_END
2073
2074static ADDRESS_MAP_START( mmpanic_readport, ADDRESS_SPACE_IO, 8 )
2033static ADDRESS_MAP_START( mmpanic_portmap, ADDRESS_SPACE_IO, 8 )
20752034   ADDRESS_MAP_GLOBAL_MASK(0xff)
2076   AM_RANGE(0x00, 0x0f) AM_DEVREAD("rtc", msm6242_r)   // 6242RTC
2077   AM_RANGE(0x38, 0x38) AM_READ(unk_r)            // ? must be 78 on startup
2078   AM_RANGE(0x58, 0x58) AM_READ(unk_r)            // ? must be 78 on startup
2079   AM_RANGE(0x63, 0x63) AM_READ(rongrong_gfxrom_r)   // Video Chip
2080   AM_RANGE(0x6a, 0x6a) AM_READ_PORT("IN0")
2081   AM_RANGE(0x6b, 0x6b) AM_READ_PORT("IN1")
2082   AM_RANGE(0x6c, 0x6d) AM_READ(mmpanic_link_r)   // Other cabinets?
2083   AM_RANGE(0x7c, 0x7c) AM_DEVREAD("oki", okim6295_r)   // Sound
2084   AM_RANGE(0x94, 0x94) AM_READ_PORT("DSW1")
2085   AM_RANGE(0x98, 0x98) AM_READ_PORT("DSW2")
2086   AM_RANGE(0x9c, 0x9c) AM_READ_PORT("DSW3")      // DSW 1&2 high bits
2087ADDRESS_MAP_END
2035   AM_RANGE(0x00, 0x0f) AM_DEVREADWRITE("rtc", msm6242_r, msm6242_w)   // 6242RTC
20882036
2089static ADDRESS_MAP_START( mmpanic_writeport, ADDRESS_SPACE_IO, 8 )
2090   ADDRESS_MAP_GLOBAL_MASK(0xff)
2091   AM_RANGE(0x00, 0x0f) AM_DEVWRITE("rtc", msm6242_w)   // 6242RTC
20922037   // Layers 0-3:
20932038   AM_RANGE(0x20, 0x23) AM_WRITE(ddenlovr_palette_base_w)
20942039   AM_RANGE(0x24, 0x27) AM_WRITE(ddenlovr_palette_mask_w)
r4679r4680
20972042   AM_RANGE(0x34, 0x34) AM_WRITE(ddenlovr_bgcolor_w)
20982043   AM_RANGE(0x35, 0x35) AM_WRITE(ddenlovr_priority_w)
20992044   AM_RANGE(0x36, 0x36) AM_WRITE(ddenlovr_layer_enable_w)
2045   AM_RANGE(0x38, 0x38) AM_READ(unk_r)            // ? must be 78 on startup
2046
21002047   // Layers 4-7:
21012048   AM_RANGE(0x40, 0x43) AM_WRITE(ddenlovr_palette_base2_w)
21022049   AM_RANGE(0x44, 0x47) AM_WRITE(ddenlovr_palette_mask2_w)
r4679r4680
21052052   AM_RANGE(0x54, 0x54) AM_WRITE(ddenlovr_bgcolor2_w)
21062053   AM_RANGE(0x55, 0x55) AM_WRITE(ddenlovr_priority2_w)
21072054   AM_RANGE(0x56, 0x56) AM_WRITE(ddenlovr_layer_enable2_w)
2055   AM_RANGE(0x58, 0x58) AM_READ(unk_r)            // ? must be 78 on startup
21082056
21092057   AM_RANGE(0x60, 0x61) AM_WRITE(mmpanic_blitter_w)
2058   AM_RANGE(0x63, 0x63) AM_READ(rongrong_gfxrom_r)   // Video Chip
21102059   AM_RANGE(0x64, 0x65) AM_WRITE(mmpanic_blitter2_w)
21112060   AM_RANGE(0x68, 0x68) AM_DEVWRITE("ay", ddenlovr_select_w)
21122061   AM_RANGE(0x69, 0x69) AM_WRITE(mmpanic_lockout_w)
2062   AM_RANGE(0x6a, 0x6a) AM_READ_PORT("IN0")
2063   AM_RANGE(0x6b, 0x6b) AM_READ_PORT("IN1")
2064   AM_RANGE(0x6c, 0x6d) AM_READ(mmpanic_link_r)   // Other cabinets?
21132065   AM_RANGE(0x74, 0x74) AM_WRITE(mmpanic_rombank_w)
2114
21152066   AM_RANGE(0x78, 0x78) AM_WRITENOP            // 0, during RST 08 (irq acknowledge?)
2116
2117   AM_RANGE(0x7c, 0x7c) AM_DEVWRITE("oki", okim6295_w)   // Sound
2067   AM_RANGE(0x7c, 0x7c) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w)   // Sound
21182068   AM_RANGE(0x8c, 0x8c) AM_WRITE(mmpanic_soundlatch_w)   //
21192069   AM_RANGE(0x88, 0x88) AM_WRITE(mmpanic_leds_w)      // Leds
21202070   AM_RANGE(0x90, 0x90) AM_WRITENOP            // written just before port 8c
2071   AM_RANGE(0x94, 0x94) AM_READ_PORT("DSW1")
2072   AM_RANGE(0x98, 0x98) AM_READ_PORT("DSW2")
2073   AM_RANGE(0x9c, 0x9c) AM_READ_PORT("DSW3")      // DSW 1&2 high bits
21212074   AM_RANGE(0xa6, 0xa6) AM_WRITE(mmpanic_leds2_w)      //
21222075ADDRESS_MAP_END
21232076
21242077/* Sound CPU */
21252078
2126static ADDRESS_MAP_START( mmpanic_sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
2127   AM_RANGE(0x0000, 0x5fff) AM_READ(SMH_ROM)   // ROM
2128   AM_RANGE(0x6000, 0x66ff) AM_READ(SMH_RAM)   // RAM
2129   AM_RANGE(0x8000, 0xffff) AM_READ(SMH_ROM)   // ROM
2079static ADDRESS_MAP_START( mmpanic_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
2080   AM_RANGE(0x0000, 0x5fff) AM_ROM   // ROM
2081   AM_RANGE(0x6000, 0x66ff) AM_RAM   // RAM
2082   AM_RANGE(0x8000, 0xffff) AM_ROM   // ROM
21302083ADDRESS_MAP_END
21312084
2132static ADDRESS_MAP_START( mmpanic_sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
2133   AM_RANGE(0x6000, 0x66ff) AM_WRITE(SMH_RAM)   // RAM
2134ADDRESS_MAP_END
2135
2136static ADDRESS_MAP_START( mmpanic_sound_readport, ADDRESS_SPACE_IO, 8 )   ADDRESS_MAP_GLOBAL_MASK(0xff)
2085static ADDRESS_MAP_START( mmpanic_sound_portmap, ADDRESS_SPACE_IO, 8 )   ADDRESS_MAP_GLOBAL_MASK(0xff)
21372086   AM_RANGE(0x00, 0x00) AM_READ(soundlatch_r)
2138   AM_RANGE(0x02, 0x02) AM_READ(SMH_NOP )   // read just before port 00
2139   AM_RANGE(0x04, 0x04) AM_READ(SMH_NOP )   // read only once at the start
2140ADDRESS_MAP_END
2141
2142static ADDRESS_MAP_START( mmpanic_sound_writeport, ADDRESS_SPACE_IO, 8 )   ADDRESS_MAP_GLOBAL_MASK(0xff)
2143   AM_RANGE(0x04, 0x04) AM_WRITENOP   // 0, during IRQ
2087   AM_RANGE(0x02, 0x02) AM_READ(SMH_NOP )      // read just before port 00
2088   AM_RANGE(0x04, 0x04) AM_NOP               // read only once at the start
21442089   AM_RANGE(0x06, 0x06) AM_WRITENOP   // almost always 1, sometimes 0
21452090   AM_RANGE(0x08, 0x09) AM_DEVWRITE("ym", ym2413_w)
21462091   AM_RANGE(0x0c, 0x0c) AM_DEVWRITE("ay", ay8910_data_w)
r4679r4680
21552100
21562101/* Main CPU */
21572102
2158static ADDRESS_MAP_START( funkyfig_readmem, ADDRESS_SPACE_PROGRAM, 8 )
2159   AM_RANGE(0x0000, 0x5fff) AM_READ(SMH_ROM)
2160   AM_RANGE(0x6000, 0x6fff) AM_READ(SMH_RAM)
2161   AM_RANGE(0x7000, 0x7fff) AM_READ(SMH_BANK2)   // RAM (Banked)
2162   AM_RANGE(0x8000, 0xffff) AM_READ(SMH_BANK1)   // ROM (Banked)
2163ADDRESS_MAP_END
2103static ADDRESS_MAP_START( funkyfig_map, ADDRESS_SPACE_PROGRAM, 8 )
2104   AM_RANGE(0x0000, 0x5fff) AM_ROM
2105   AM_RANGE(0x6000, 0x6fff) AM_RAM
2106   AM_RANGE(0x7000, 0x7fff) AM_RAMBANK(2)         // RAM (Banked)
21642107
2165static ADDRESS_MAP_START( funkyfig_writemem, ADDRESS_SPACE_PROGRAM, 8 )
2166   AM_RANGE(0x6000, 0x6fff) AM_WRITE(SMH_RAM)
2167   AM_RANGE(0x7000, 0x7fff) AM_WRITE(SMH_BANK2)   // RAM (Banked)
2108   AM_RANGE(0x8000, 0xffff) AM_ROMBANK(1)
21682109   AM_RANGE(0x8000, 0x81ff) AM_WRITE(rongrong_palette_w)
21692110   AM_RANGE(0x8400, 0x87ff) AM_WRITENOP
21702111ADDRESS_MAP_END
r4679r4680
22442185   }
22452186}
22462187
2247static ADDRESS_MAP_START( funkyfig_readport, ADDRESS_SPACE_IO, 8 )   ADDRESS_MAP_GLOBAL_MASK(0xff)
2248   AM_RANGE(0x00, 0x00) AM_DEVREAD("oki", okim6295_r)   // Sound
2249   AM_RANGE(0x04, 0x04) AM_READ(funkyfig_busy_r)
2250   AM_RANGE(0x1c, 0x1c) AM_READ(funkyfig_dsw_r)
2251   AM_RANGE(0x23, 0x23) AM_READ(rongrong_gfxrom_r)      // Video Chip
2252   AM_RANGE(0x40, 0x4f) AM_DEVREAD("rtc", msm6242_r)   // 6242RTC
2253   AM_RANGE(0x78, 0x78) AM_READ(unk_r)               // ? must be 78 on startup
2254   AM_RANGE(0x82, 0x82) AM_READ(funkyfig_coin_r)
2255   AM_RANGE(0x83, 0x83) AM_READ(funkyfig_key_r)
2256//  Other cabinets?
2257ADDRESS_MAP_END
2258
2259static ADDRESS_MAP_START( funkyfig_writeport, ADDRESS_SPACE_IO, 8 )   ADDRESS_MAP_GLOBAL_MASK(0xff)
2260   AM_RANGE(0x00, 0x00) AM_DEVWRITE("oki", okim6295_w)   // Sound
2188static ADDRESS_MAP_START( funkyfig_portmap, ADDRESS_SPACE_IO, 8 )   ADDRESS_MAP_GLOBAL_MASK(0xff)
2189   AM_RANGE(0x00, 0x00) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w)   // Sound
22612190   AM_RANGE(0x01, 0x01) AM_WRITE(mmpanic_leds_w)      // Leds
22622191   AM_RANGE(0x02, 0x02) AM_WRITE(mmpanic_soundlatch_w)   //
2192   AM_RANGE(0x04, 0x04) AM_READ(funkyfig_busy_r)
2193   AM_RANGE(0x1c, 0x1c) AM_READ(funkyfig_dsw_r)
22632194   AM_RANGE(0x1e, 0x1e) AM_WRITE(funkyfig_rombank_w)
22642195   AM_RANGE(0x20, 0x21) AM_WRITE(funkyfig_blitter_w)
2265   AM_RANGE(0x40, 0x4f) AM_DEVWRITE("rtc", msm6242_w)   // 6242RTC
2196   AM_RANGE(0x23, 0x23) AM_READ(rongrong_gfxrom_r)      // Video Chip
2197   AM_RANGE(0x40, 0x4f) AM_DEVREADWRITE("rtc", msm6242_r, msm6242_w)   // 6242RTC
22662198
22672199   // Layers 0-3:
22682200   AM_RANGE(0x60, 0x63) AM_WRITE(ddenlovr_palette_base_w)
r4679r4680
22722204   AM_RANGE(0x74, 0x74) AM_WRITE(ddenlovr_bgcolor_w)
22732205   AM_RANGE(0x75, 0x75) AM_WRITE(ddenlovr_priority_w)
22742206   AM_RANGE(0x76, 0x76) AM_WRITE(ddenlovr_layer_enable_w)
2207   AM_RANGE(0x78, 0x78) AM_READ(unk_r)               // ? must be 78 on startup
22752208
22762209   AM_RANGE(0x80, 0x80) AM_WRITE(ddenlovr_select2_w)
22772210   AM_RANGE(0x81, 0x81) AM_WRITE(funkyfig_lockout_w)
2211   AM_RANGE(0x82, 0x82) AM_READ(funkyfig_coin_r)
2212   AM_RANGE(0x83, 0x83) AM_READ(funkyfig_key_r)
2213
22782214   AM_RANGE(0xa2, 0xa2) AM_WRITE(mmpanic_leds2_w)
22792215ADDRESS_MAP_END
22802216
22812217
22822218/* Sound CPU */
22832219
2284static ADDRESS_MAP_START( funkyfig_sound_readport, ADDRESS_SPACE_IO, 8 )   ADDRESS_MAP_GLOBAL_MASK(0xff)
2220static ADDRESS_MAP_START( funkyfig_sound_portmap, ADDRESS_SPACE_IO, 8 )   ADDRESS_MAP_GLOBAL_MASK(0xff)
22852221   AM_RANGE(0x02, 0x02) AM_READ(soundlatch_r)
22862222   AM_RANGE(0x04, 0x04) AM_READNOP   // read only once at the start
22872223ADDRESS_MAP_END
r4679r4680
23032239   memory_set_bankptr(space->machine, 2, &rom[0x90000 + 0x1000 * ((data & 0xf0) >> 4)]);
23042240}
23052241
2306static ADDRESS_MAP_START( hanakanz_readmem, ADDRESS_SPACE_PROGRAM, 8 )
2307   AM_RANGE(0x0000, 0x5fff) AM_READ(SMH_ROM)   // ROM
2308   AM_RANGE(0x6000, 0x6fff) AM_READ(SMH_RAM)   // RAM
2309   AM_RANGE(0x7000, 0x7fff) AM_READ(SMH_BANK2)   // RAM (Banked)
2310   AM_RANGE(0x8000, 0xffff) AM_READ(SMH_BANK1)   // ROM (Banked)
2242static ADDRESS_MAP_START( hanakanz_map, ADDRESS_SPACE_PROGRAM, 8 )
2243   AM_RANGE(0x0000, 0x5fff) AM_ROM                        // ROM
2244   AM_RANGE(0x6000, 0x6fff) AM_RAM                        // RAM
2245   AM_RANGE(0x7000, 0x7fff) AM_RAMBANK(2)                  // RAM (Banked)
2246   AM_RANGE(0x8000, 0xffff) AM_ROMBANK(1)                  // ROM (Banked)
23112247ADDRESS_MAP_END
2312static ADDRESS_MAP_START( hanakanz_writemem, ADDRESS_SPACE_PROGRAM, 8 )
2313   AM_RANGE(0x6000, 0x6fff) AM_WRITE(SMH_RAM)   // RAM
2314   AM_RANGE(0x7000, 0x7fff) AM_WRITE(SMH_BANK2)   // RAM (Banked)
2315ADDRESS_MAP_END
23162248
23172249
23182250static UINT8 keyb,dsw;
r4679r4680
24312363   return mame_rand(space->machine);
24322364}
24332365
2434static ADDRESS_MAP_START( hanakanz_readport, ADDRESS_SPACE_IO, 8 )   ADDRESS_MAP_GLOBAL_MASK(0xff)
2435   AM_RANGE(0x2c, 0x2c) AM_READ(hanakanz_busy_r)
2436   AM_RANGE(0x32, 0x32) AM_READ(hanakanz_dsw_r)
2437   AM_RANGE(0x83, 0x84) AM_READ(hanakanz_gfxrom_r)
2438   AM_RANGE(0x90, 0x90) AM_READ_PORT("SYSTEM")
2439   AM_RANGE(0x91, 0x92) AM_READ(hanakanz_keyb_r)
2440   AM_RANGE(0x96, 0x96) AM_READ(hanakanz_rand_r)
2441   AM_RANGE(0xc0, 0xc0) AM_DEVREAD("oki", okim6295_r)
2442   AM_RANGE(0xe0, 0xef) AM_DEVREAD("rtc", msm6242_r)   // 6242RTC
2443ADDRESS_MAP_END
2444
2445static ADDRESS_MAP_START( hanakanz_writeport, ADDRESS_SPACE_IO, 8 )   ADDRESS_MAP_GLOBAL_MASK(0xff)
2446   AM_RANGE(0x2c, 0x2c) AM_DEVWRITE("oki", hanakanz_oki_bank_w)
2366static ADDRESS_MAP_START( hanakanz_portmap, ADDRESS_SPACE_IO, 8 )   ADDRESS_MAP_GLOBAL_MASK(0xff)
2367   AM_RANGE(0x2c, 0x2c) AM_READ(hanakanz_busy_r) AM_DEVWRITE("oki", hanakanz_oki_bank_w)
24472368   AM_RANGE(0x2e, 0x2e) AM_WRITE(hanakanz_blitter_reg_w)
24482369   AM_RANGE(0x30, 0x30) AM_WRITE(hanakanz_rombank_w)
24492370   AM_RANGE(0x31, 0x31) AM_WRITE(hanakanz_dsw_w)
2371   AM_RANGE(0x32, 0x32) AM_READ(hanakanz_dsw_r)
24502372   AM_RANGE(0x80, 0x80) AM_WRITE(hanakanz_blitter_data_w)
24512373   AM_RANGE(0x81, 0x81) AM_WRITE(hanakanz_palette_w)
2374   AM_RANGE(0x83, 0x84) AM_READ(hanakanz_gfxrom_r)
2375   AM_RANGE(0x90, 0x90) AM_READ_PORT("SYSTEM")
2376   AM_RANGE(0x91, 0x92) AM_READ(hanakanz_keyb_r)
24522377   AM_RANGE(0x93, 0x93) AM_WRITE(hanakanz_coincounter_w)
24532378   AM_RANGE(0x94, 0x94) AM_WRITE(hanakanz_keyb_w)
2379   AM_RANGE(0x96, 0x96) AM_READ(hanakanz_rand_r)
24542380   AM_RANGE(0xa0, 0xa1) AM_DEVWRITE("ym", ym2413_w)
2455   AM_RANGE(0xc0, 0xc0) AM_DEVWRITE("oki", okim6295_w)
2456   AM_RANGE(0xe0, 0xef) AM_DEVWRITE("rtc", msm6242_w)   // 6242RTC
2381   AM_RANGE(0xc0, 0xc0) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w)
2382   AM_RANGE(0xe0, 0xef) AM_DEVREADWRITE("rtc", msm6242_r, msm6242_w)   // 6242RTC
24572383ADDRESS_MAP_END
24582384
24592385
2460static ADDRESS_MAP_START( hkagerou_readport, ADDRESS_SPACE_IO, 8 )   ADDRESS_MAP_GLOBAL_MASK(0xff)
2461   AM_RANGE(0x2c, 0x2c) AM_READ(hanakanz_busy_r)
2462   AM_RANGE(0x32, 0x32) AM_READ(hanakanz_dsw_r)
2463   AM_RANGE(0x83, 0x84) AM_READ(hanakanz_gfxrom_r)
2464   AM_RANGE(0xb0, 0xb0) AM_READ_PORT("SYSTEM")
2465   AM_RANGE(0xb1, 0xb2) AM_READ(hanakanz_keyb_r)
2466   AM_RANGE(0xb6, 0xb6) AM_READ(hanakanz_rand_r)
2467   AM_RANGE(0xc0, 0xc0) AM_DEVREAD("oki", okim6295_r)
2468   AM_RANGE(0xe0, 0xef) AM_DEVREAD("rtc", msm6242_r)   // 6242RTC
2469ADDRESS_MAP_END
2470
2471static ADDRESS_MAP_START( hkagerou_writeport, ADDRESS_SPACE_IO, 8 )   ADDRESS_MAP_GLOBAL_MASK(0xff)
2472   AM_RANGE(0x2c, 0x2c) AM_DEVWRITE("oki", hanakanz_oki_bank_w)
2386static ADDRESS_MAP_START( hkagerou_portmap, ADDRESS_SPACE_IO, 8 )   ADDRESS_MAP_GLOBAL_MASK(0xff)
2387   AM_RANGE(0x2c, 0x2c) AM_READ(hanakanz_busy_r) AM_DEVWRITE("oki", hanakanz_oki_bank_w)
24732388   AM_RANGE(0x2e, 0x2e) AM_WRITE(hanakanz_blitter_reg_w)
24742389   AM_RANGE(0x30, 0x30) AM_WRITE(hanakanz_rombank_w)
24752390   AM_RANGE(0x31, 0x31) AM_WRITE(hanakanz_dsw_w)
2391   AM_RANGE(0x32, 0x32) AM_READ(hanakanz_dsw_r)
24762392   AM_RANGE(0x80, 0x80) AM_WRITE(hanakanz_blitter_data_w)
24772393   AM_RANGE(0x81, 0x81) AM_WRITE(hanakanz_palette_w)
2394   AM_RANGE(0x83, 0x84) AM_READ(hanakanz_gfxrom_r)
24782395   AM_RANGE(0xa0, 0xa1) AM_DEVWRITE("ym", ym2413_w)
2396   AM_RANGE(0xb0, 0xb0) AM_READ_PORT("SYSTEM")
2397   AM_RANGE(0xb1, 0xb2) AM_READ(hanakanz_keyb_r)
24792398   AM_RANGE(0xb3, 0xb3) AM_WRITE(hanakanz_coincounter_w)
24802399   AM_RANGE(0xb4, 0xb4) AM_WRITE(hanakanz_keyb_w)
2481   AM_RANGE(0xc0, 0xc0) AM_DEVWRITE("oki", okim6295_w)
2482   AM_RANGE(0xe0, 0xef) AM_DEVWRITE("rtc", msm6242_w)   // 6242RTC
2400   AM_RANGE(0xb6, 0xb6) AM_READ(hanakanz_rand_r)
2401   AM_RANGE(0xc0, 0xc0) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w)
2402   AM_RANGE(0xe0, 0xef) AM_DEVREADWRITE("rtc", msm6242_r, msm6242_w)   // 6242RTC
24832403ADDRESS_MAP_END
24842404
24852405
r4679r4680
24952415   return mjreach1_protection_val;
24962416}
24972417
2498static ADDRESS_MAP_START( mjreach1_readport, ADDRESS_SPACE_IO, 8 )   ADDRESS_MAP_GLOBAL_MASK(0xff)
2499   AM_RANGE(0x2c, 0x2c) AM_READ(hanakanz_busy_r)
2500   AM_RANGE(0x32, 0x32) AM_READ(hanakanz_dsw_r)
2501   AM_RANGE(0x83, 0x84) AM_READ(hanakanz_gfxrom_r)
2502   AM_RANGE(0x92, 0x92) AM_READ(hanakanz_rand_r)
2503   AM_RANGE(0x93, 0x93) AM_READ(mjreach1_protection_r   )
2504   AM_RANGE(0x94, 0x94) AM_READ_PORT("SYSTEM")
2505   AM_RANGE(0x95, 0x96) AM_READ(hanakanz_keyb_r)
2506   AM_RANGE(0xc0, 0xc0) AM_DEVREAD("oki", okim6295_r)
2507   AM_RANGE(0xe0, 0xef) AM_DEVREAD("rtc", msm6242_r)   // 6242RTC
2508ADDRESS_MAP_END
2509
2510static ADDRESS_MAP_START( mjreach1_writeport, ADDRESS_SPACE_IO, 8 )   ADDRESS_MAP_GLOBAL_MASK(0xff)
2511   AM_RANGE(0x2c, 0x2c) AM_DEVWRITE("oki", hanakanz_oki_bank_w)
2418static ADDRESS_MAP_START( mjreach1_portmap, ADDRESS_SPACE_IO, 8 )   ADDRESS_MAP_GLOBAL_MASK(0xff)
2419   AM_RANGE(0x2c, 0x2c) AM_READ(hanakanz_busy_r) AM_DEVWRITE("oki", hanakanz_oki_bank_w)
25122420   AM_RANGE(0x2e, 0x2e) AM_WRITE(hanakanz_blitter_reg_w)
25132421   AM_RANGE(0x30, 0x30) AM_WRITE(hanakanz_rombank_w)
25142422   AM_RANGE(0x31, 0x31) AM_WRITE(hanakanz_dsw_w)
2423   AM_RANGE(0x32, 0x32) AM_READ(hanakanz_dsw_r)
25152424   AM_RANGE(0x80, 0x80) AM_WRITE(hanakanz_blitter_data_w)
25162425   AM_RANGE(0x81, 0x81) AM_WRITE(hanakanz_palette_w)
2426   AM_RANGE(0x83, 0x84) AM_READ(hanakanz_gfxrom_r)
25172427   AM_RANGE(0x90, 0x90) AM_WRITE(hanakanz_keyb_w)
2518   AM_RANGE(0x93, 0x93) AM_WRITE(mjreach1_protection_w)
2428   AM_RANGE(0x92, 0x92) AM_READ(hanakanz_rand_r)
2429   AM_RANGE(0x93, 0x93) AM_READWRITE(mjreach1_protection_r, mjreach1_protection_w)
2430   AM_RANGE(0x94, 0x94) AM_READ_PORT("SYSTEM")
2431   AM_RANGE(0x95, 0x96) AM_READ(hanakanz_keyb_r)
25192432   AM_RANGE(0x97, 0x97) AM_WRITE(hanakanz_coincounter_w)
25202433   AM_RANGE(0xa0, 0xa1) AM_DEVWRITE("ym", ym2413_w)
2521   AM_RANGE(0xc0, 0xc0) AM_DEVWRITE("oki", okim6295_w)
2522   AM_RANGE(0xe0, 0xef) AM_DEVWRITE("rtc", msm6242_w)   // 6242RTC
2434   AM_RANGE(0xc0, 0xc0) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w)
2435   AM_RANGE(0xe0, 0xef) AM_DEVREADWRITE("rtc", msm6242_r, msm6242_w)   // 6242RTC
25232436ADDRESS_MAP_END
25242437
25252438
r4679r4680
26262539#endif
26272540}
26282541
2629static ADDRESS_MAP_START( mjchuuka_readport, ADDRESS_SPACE_IO, 8 )   // 16 bit I/O
2542static ADDRESS_MAP_START( mjchuuka_portmap, ADDRESS_SPACE_IO, 8 )   // 16 bit I/O
26302543   AM_RANGE(0x13, 0x13) AM_MIRROR(0xff00) AM_READ(hanakanz_rand_r)
2544   AM_RANGE(0x1c, 0x1c) AM_MIRROR(0xff00) AM_WRITE(hanakanz_rombank_w)
2545   AM_RANGE(0x1e, 0x1e) AM_MIRROR(0xff00) AM_DEVWRITE("oki", mjchuuka_oki_bank_w   )
2546   AM_RANGE(0x20, 0x20) AM_MIRROR(0xff00) AM_MASK(0xff00) AM_WRITE(mjchuuka_blitter_w)
2547   AM_RANGE(0x21, 0x21) AM_MIRROR(0xff00) AM_MASK(0xff00) AM_WRITE(mjchuuka_palette_w)
26312548   AM_RANGE(0x23, 0x23) AM_MIRROR(0xff00) AM_READ(mjchuuka_gfxrom_0_r)
2549   AM_RANGE(0x40, 0x40) AM_MIRROR(0xff00) AM_WRITE(mjchuuka_coincounter_w)
2550   AM_RANGE(0x41, 0x41) AM_MIRROR(0xff00) AM_WRITE(hanakanz_keyb_w)
26322551   AM_RANGE(0x42, 0x42) AM_MIRROR(0xff00) AM_READ_PORT("SYSTEM")
26332552   AM_RANGE(0x43, 0x44) AM_MIRROR(0xff00) AM_READ(mjchuuka_keyb_r)
26342553   AM_RANGE(0x45, 0x45) AM_MIRROR(0xff00) AM_READ(mjchuuka_gfxrom_1_r)
r4679r4680
26372556   AM_RANGE(0x62, 0x62) AM_MIRROR(0xff00) AM_READ_PORT("DSW3")
26382557   AM_RANGE(0x63, 0x63) AM_MIRROR(0xff00) AM_READ_PORT("DSW4")
26392558   AM_RANGE(0x64, 0x64) AM_MIRROR(0xff00) AM_READ_PORT("DSW5")      // DSW 1-4 high bits
2640   AM_RANGE(0x80, 0x80) AM_MIRROR(0xff00) AM_DEVREAD("oki", okim6295_r)
2641   AM_RANGE(0xc0, 0xcf) AM_MIRROR(0xff00) AM_DEVREAD("rtc", msm6242_r)   // 6242RTC
2642ADDRESS_MAP_END
2643
2644static ADDRESS_MAP_START( mjchuuka_writeport, ADDRESS_SPACE_IO, 8 )   // 16 bit I/O
2645   AM_RANGE(0x1c, 0x1c) AM_MIRROR(0xff00) AM_WRITE(hanakanz_rombank_w)
2646   AM_RANGE(0x20, 0x20) AM_MIRROR(0xff00) AM_MASK(0xff00) AM_WRITE(mjchuuka_blitter_w)
2647   AM_RANGE(0x21, 0x21) AM_MIRROR(0xff00) AM_MASK(0xff00) AM_WRITE(mjchuuka_palette_w)
2648   AM_RANGE(0x40, 0x40) AM_MIRROR(0xff00) AM_WRITE(mjchuuka_coincounter_w)
2649   AM_RANGE(0x41, 0x41) AM_MIRROR(0xff00) AM_WRITE(hanakanz_keyb_w)
2650   AM_RANGE(0x80, 0x80) AM_MIRROR(0xff00) AM_DEVWRITE("oki", okim6295_w)
2651   AM_RANGE(0xc0, 0xcf) AM_MIRROR(0xff00) AM_DEVWRITE("rtc", msm6242_w)   // 6242RTC
2559   AM_RANGE(0x80, 0x80) AM_MIRROR(0xff00) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w)
26522560   AM_RANGE(0xa0, 0xa1) AM_MIRROR(0xff00) AM_DEVWRITE("ym", ym2413_w)
2561   AM_RANGE(0xc0, 0xcf) AM_MIRROR(0xff00) AM_DEVREADWRITE("rtc", msm6242_r, msm6242_w)   // 6242RTC
26532562   AM_RANGE(0xe0, 0xe1) AM_MIRROR(0xff00) AM_DEVWRITE("ay", ay8910_address_data_w)
2654   AM_RANGE(0x1e, 0x1e) AM_MIRROR(0xff00) AM_DEVWRITE("oki", mjchuuka_oki_bank_w   )
26552563ADDRESS_MAP_END
26562564
26572565
r4679r4680
26592567                        Mahjong The Mysterious World
26602568***************************************************************************/
26612569
2662static ADDRESS_MAP_START( mjmyster_readmem, ADDRESS_SPACE_PROGRAM, 8 )
2663   AM_RANGE(0x0000, 0x5fff) AM_READ(SMH_ROM)   // ROM
2664   AM_RANGE(0x6000, 0x6fff) AM_READ(SMH_RAM)   // RAM
2665   AM_RANGE(0x7000, 0x7fff) AM_READ(SMH_BANK2)   // RAM (Banked)
2666   AM_RANGE(0x8000, 0xffff) AM_READ(SMH_BANK1)   // ROM/RAM (Banked)
2667ADDRESS_MAP_END
2668
2669static ADDRESS_MAP_START( mjmyster_writemem, ADDRESS_SPACE_PROGRAM, 8 )
2670   AM_RANGE(0x6000, 0x6fff) AM_WRITE(SMH_RAM)      // RAM
2671   AM_RANGE(0x7000, 0x7fff) AM_WRITE(SMH_BANK2)   // RAM (Banked)
2570static ADDRESS_MAP_START( mjmyster_map, ADDRESS_SPACE_PROGRAM, 8 )
2571   AM_RANGE(0x0000, 0x5fff) AM_ROM            // ROM
2572   AM_RANGE(0x6000, 0x6fff) AM_RAM            // RAM
2573   AM_RANGE(0x7000, 0x7fff) AM_RAMBANK(2)      // RAM (Banked)
2574   AM_RANGE(0x8000, 0xffff) AM_ROMBANK(1)      // ROM/RAM (Banked)
26722575   AM_RANGE(0xf000, 0xf1ff) AM_WRITE(rongrong_palette_w)   // RAM enabled by bit 4 of rombank
26732576   AM_RANGE(0xf200, 0xffff) AM_WRITENOP      // ""
26742577ADDRESS_MAP_END
r4679r4680
27522655   blitter_w(space, 0,offset,data,0xfc);
27532656}
27542657
2755static ADDRESS_MAP_START( mjmyster_readport, ADDRESS_SPACE_IO, 8 )   ADDRESS_MAP_GLOBAL_MASK(0xff)
2756   AM_RANGE(0x03, 0x03) AM_READ(rongrong_gfxrom_r)
2757   AM_RANGE(0x22, 0x22) AM_READ(mjmyster_coins_r)
2758   AM_RANGE(0x23, 0x23) AM_READ(mjmyster_keyb_r)
2759   AM_RANGE(0x40, 0x40) AM_DEVREAD("oki", okim6295_r)
2760   AM_RANGE(0x44, 0x44) AM_DEVREAD("ay", ay8910_r)
2761   AM_RANGE(0x60, 0x6f) AM_DEVREAD("rtc", msm6242_r)   // 6242RTC
2762   AM_RANGE(0x98, 0x98) AM_READ(unk_r)                     // ? must be 78 on startup
2763   AM_RANGE(0xc2, 0xc2) AM_READ(hanakanz_rand_r)
2764   AM_RANGE(0xc3, 0xc3) AM_READ(mjmyster_dsw_r)
2765ADDRESS_MAP_END
2766
2767static ADDRESS_MAP_START( mjmyster_writeport, ADDRESS_SPACE_IO, 8 )   ADDRESS_MAP_GLOBAL_MASK(0xff)
2658static ADDRESS_MAP_START( mjmyster_portmap, ADDRESS_SPACE_IO, 8 )   ADDRESS_MAP_GLOBAL_MASK(0xff)
27682659   AM_RANGE(0x00, 0x01) AM_WRITE(mjmyster_blitter_w)
2660   AM_RANGE(0x03, 0x03) AM_READ(rongrong_gfxrom_r)
27692661   AM_RANGE(0x1c, 0x1c) AM_WRITE(mjmyster_rambank_w)
27702662   AM_RANGE(0x1e, 0x1e) AM_WRITE(mmpanic_rombank_w)
27712663   AM_RANGE(0x20, 0x20) AM_WRITE(mjmyster_select2_w)
27722664   AM_RANGE(0x21, 0x21) AM_WRITE(mjmyster_coincounter_w)
2773   AM_RANGE(0x40, 0x40) AM_DEVWRITE("oki", okim6295_w)
2665   AM_RANGE(0x22, 0x22) AM_READ(mjmyster_coins_r)
2666   AM_RANGE(0x23, 0x23) AM_READ(mjmyster_keyb_r)
2667   AM_RANGE(0x40, 0x40) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w)
27742668   AM_RANGE(0x42, 0x43) AM_DEVWRITE("ym", ym2413_w)
2669   AM_RANGE(0x44, 0x44) AM_DEVREAD("ay", ay8910_r)
27752670   AM_RANGE(0x46, 0x46) AM_DEVWRITE("ay", ay8910_data_w)
27762671   AM_RANGE(0x48, 0x48) AM_DEVWRITE("ay", ay8910_address_w)
2777   AM_RANGE(0x60, 0x6f) AM_DEVWRITE("rtc", msm6242_w)   // 6242RTC
2672   AM_RANGE(0x60, 0x6f) AM_DEVREADWRITE("rtc", msm6242_r, msm6242_w)   // 6242RTC
27782673   AM_RANGE(0x80, 0x83) AM_WRITE(ddenlovr_palette_base_w)
27792674   AM_RANGE(0x84, 0x87) AM_WRITE(ddenlovr_palette_mask_w)
27802675   AM_RANGE(0x88, 0x8b) AM_WRITE(ddenlovr_transparency_pen_w)
r4679r4680
27822677   AM_RANGE(0x94, 0x94) AM_WRITE(ddenlovr_bgcolor_w)
27832678   AM_RANGE(0x95, 0x95) AM_WRITE(ddenlovr_priority_w)
27842679   AM_RANGE(0x96, 0x96) AM_WRITE(ddenlovr_layer_enable_w)
2680   AM_RANGE(0x98, 0x98) AM_READ(unk_r)                     // ? must be 78 on startup
2681   AM_RANGE(0xc2, 0xc2) AM_READ(hanakanz_rand_r)
2682   AM_RANGE(0xc3, 0xc3) AM_READ(mjmyster_dsw_r)
27852683ADDRESS_MAP_END
27862684
27872685/***************************************************************************
r4679r4680
28052703   return rom[0x10000 + 0x8000 * (hginga_rombank & 0x7) + 0xf601 - 0x8000];
28062704}
28072705
2808static ADDRESS_MAP_START( hginga_readmem, ADDRESS_SPACE_PROGRAM, 8 )
2809   AM_RANGE(0x0000, 0x5fff) AM_READ(SMH_ROM)   // ROM
2810   AM_RANGE(0x6000, 0x6fff) AM_READ(SMH_RAM)   // RAM
2811   AM_RANGE(0x7000, 0x7fff) AM_READ(SMH_BANK2)   // RAM (Banked)
2706static ADDRESS_MAP_START( hginga_map, ADDRESS_SPACE_PROGRAM, 8 )
2707   AM_RANGE(0x0000, 0x5fff) AM_ROM                        // ROM
2708   AM_RANGE(0x6000, 0x6fff) AM_RAM                        // RAM
2709   AM_RANGE(0x7000, 0x7fff) AM_RAMBANK(2)                  // RAM (Banked)
28122710   AM_RANGE(0xf601, 0xf601) AM_READ(hginga_protection_r)
2813   AM_RANGE(0x8000, 0xffff) AM_READ(SMH_BANK1)   // ROM/RAM (Banked)
2814ADDRESS_MAP_END
2815
2816static ADDRESS_MAP_START( hginga_writemem, ADDRESS_SPACE_PROGRAM, 8 )
2817   AM_RANGE(0x6000, 0x6fff) AM_WRITE(SMH_RAM)      // RAM
2818   AM_RANGE(0x7000, 0x7fff) AM_WRITE(SMH_BANK2)   // RAM (Banked)
2711   AM_RANGE(0x8000, 0xffff) AM_ROMBANK(1)                  // ROM/RAM (Banked)
28192712   AM_RANGE(0xf000, 0xf1ff) AM_WRITE(rongrong_palette_w)   // RAM enabled by bit 4 of rombank
28202713   AM_RANGE(0xf700, 0xf706) AM_WRITENOP
28212714ADDRESS_MAP_END
r4679r4680
29322825   blitter_w(space, 0,offset,data,0xfc);
29332826}
29342827
2935static ADDRESS_MAP_START( hginga_readport, ADDRESS_SPACE_IO, 8 )   ADDRESS_MAP_GLOBAL_MASK(0xff)
2936   AM_RANGE(0x03, 0x03) AM_READ(rongrong_gfxrom_r)
2937   AM_RANGE(0x1c, 0x1c) AM_READNOP
2938   AM_RANGE(0x24, 0x24) AM_DEVREAD("ay", ay8910_r)
2939   AM_RANGE(0x60, 0x6f) AM_DEVREAD("rtc", msm6242_r)   // 6242RTC
2940   AM_RANGE(0x42, 0x42) AM_READ(hginga_coins_r)
2941   AM_RANGE(0x43, 0x43) AM_READ(hginga_input_r)
2942   AM_RANGE(0xb8, 0xb8) AM_READ(unk_r)   // ? must be 78 on startup
2943ADDRESS_MAP_END
2944
2945static ADDRESS_MAP_START( hginga_writeport, ADDRESS_SPACE_IO, 8 )   ADDRESS_MAP_GLOBAL_MASK(0xff)
2828static ADDRESS_MAP_START( hginga_portmap, ADDRESS_SPACE_IO, 8 )   ADDRESS_MAP_GLOBAL_MASK(0xff)
29462829   AM_RANGE(0x00, 0x01) AM_WRITE(hginga_blitter_w)
2947   AM_RANGE(0x1c, 0x1c) AM_WRITE(mjmyster_rambank_w)
2830   AM_RANGE(0x03, 0x03) AM_READ(rongrong_gfxrom_r)
2831   AM_RANGE(0x1c, 0x1c) AM_READNOP AM_WRITE(mjmyster_rambank_w)
29482832   AM_RANGE(0x1e, 0x1e) AM_WRITE(hginga_rombank_w)
29492833   AM_RANGE(0x22, 0x23) AM_DEVWRITE("ym", ym2413_w)
2834   AM_RANGE(0x24, 0x24) AM_DEVREAD("ay", ay8910_r)
29502835   AM_RANGE(0x26, 0x26) AM_DEVWRITE("ay", ay8910_data_w)
29512836   AM_RANGE(0x28, 0x28) AM_DEVWRITE("ay", ay8910_address_w)
29522837   AM_RANGE(0x40, 0x40) AM_WRITE(hginga_input_w)
29532838   AM_RANGE(0x41, 0x41) AM_WRITE(hginga_coins_w)
2954   AM_RANGE(0x60, 0x6f) AM_DEVWRITE("rtc", msm6242_w)   // 6242RTC
2839   AM_RANGE(0x42, 0x42) AM_READ(hginga_coins_r)
2840   AM_RANGE(0x43, 0x43) AM_READ(hginga_input_r)
2841   AM_RANGE(0x60, 0x6f) AM_DEVREADWRITE("rtc", msm6242_r, msm6242_w)   // 6242RTC
29552842   AM_RANGE(0x80, 0x80) AM_WRITE(hginga_80_w)
29562843   AM_RANGE(0xa0, 0xa3) AM_WRITE(ddenlovr_palette_base_w)
29572844   AM_RANGE(0xa4, 0xa7) AM_WRITE(ddenlovr_palette_mask_w)
r4679r4680
29602847   AM_RANGE(0xb4, 0xb4) AM_WRITE(ddenlovr_bgcolor_w)
29612848   AM_RANGE(0xb5, 0xb5) AM_WRITE(ddenlovr_priority_w)
29622849   AM_RANGE(0xb6, 0xb6) AM_WRITE(ddenlovr_layer_enable_w)
2850   AM_RANGE(0xb8, 0xb8) AM_READ(unk_r)   // ? must be 78 on startup
29632851ADDRESS_MAP_END
29642852
29652853
r4679r4680
30292917   return rom[0x10000 + 0x8000 * (hginga_rombank & 0x7) + 0xe601 - 0x8000];
30302918}
30312919
3032static ADDRESS_MAP_START( hgokou_readmem, ADDRESS_SPACE_PROGRAM, 8 )
3033   AM_RANGE(0x0000, 0x5fff) AM_READ(SMH_ROM)   // ROM
3034   AM_RANGE(0x6000, 0x6fff) AM_READ(SMH_RAM)   // RAM
3035   AM_RANGE(0x7000, 0x7fff) AM_READ(SMH_BANK2)   // RAM (Banked)
2920static ADDRESS_MAP_START( hgokou_map, ADDRESS_SPACE_PROGRAM, 8 )
2921   AM_RANGE(0x0000, 0x5fff) AM_ROM                        // ROM
2922   AM_RANGE(0x6000, 0x6fff) AM_RAM                        // RAM
2923   AM_RANGE(0x7000, 0x7fff) AM_RAMBANK(2)                  // RAM (Banked)
30362924   AM_RANGE(0xe601, 0xe601) AM_READ(hgokou_protection_r)
3037   AM_RANGE(0x8000, 0xffff) AM_READ(SMH_BANK1)   // ROM (Banked)
3038ADDRESS_MAP_END
3039static ADDRESS_MAP_START( hgokou_writemem, ADDRESS_SPACE_PROGRAM, 8 )
3040   AM_RANGE(0x6000, 0x6fff) AM_WRITE(SMH_RAM)      // RAM
3041   AM_RANGE(0x7000, 0x7fff) AM_WRITE(SMH_BANK2)   // RAM (Banked)
2925   AM_RANGE(0x8000, 0xffff) AM_ROMBANK(1)                  // ROM (Banked)
30422926   AM_RANGE(0xe000, 0xe1ff) AM_WRITE(rongrong_palette_w)
30432927   AM_RANGE(0xe700, 0xe706) AM_WRITENOP
30442928ADDRESS_MAP_END
30452929
30462930
3047static ADDRESS_MAP_START( hgokou_readport, ADDRESS_SPACE_IO, 8 )   ADDRESS_MAP_GLOBAL_MASK(0xff)
3048   AM_RANGE(0x03, 0x03) AM_READ(rongrong_gfxrom_r)
3049   AM_RANGE(0x1c, 0x1c) AM_READNOP                  // ? ack on RTC int
3050   AM_RANGE(0x20, 0x2f) AM_DEVREAD("rtc", msm6242_r)   // 6242RTC
3051   AM_RANGE(0x58, 0x58) AM_READ(unk_r)                     // ? must be 78 on startup
3052   AM_RANGE(0x62, 0x62) AM_READ(hgokou_input_r)
3053   AM_RANGE(0x80, 0x80) AM_DEVREAD("oki", okim6295_r)
3054   AM_RANGE(0x84, 0x84) AM_DEVREAD("ay", ay8910_r)
3055   AM_RANGE(0xb0, 0xb0) AM_READ(hanakanz_rand_r)
3056ADDRESS_MAP_END
3057static ADDRESS_MAP_START( hgokou_writeport, ADDRESS_SPACE_IO, 8 )   ADDRESS_MAP_GLOBAL_MASK(0xff)
2931static ADDRESS_MAP_START( hgokou_portmap, ADDRESS_SPACE_IO, 8 )   ADDRESS_MAP_GLOBAL_MASK(0xff)
30582932   AM_RANGE(0x00, 0x01) AM_WRITE(hginga_blitter_w)
3059   AM_RANGE(0x1c, 0x1c) AM_WRITE(mjmyster_rambank_w)
2933   AM_RANGE(0x03, 0x03) AM_READ(rongrong_gfxrom_r)
2934   AM_RANGE(0x1c, 0x1c) AM_READNOP AM_WRITE(mjmyster_rambank_w)      // ? ack on RTC int
30602935   AM_RANGE(0x1e, 0x1e) AM_WRITE(hginga_rombank_w)
3061   AM_RANGE(0x20, 0x2f) AM_DEVWRITE("rtc", msm6242_w)   // 6242RTC
2936   AM_RANGE(0x20, 0x2f) AM_DEVREADWRITE("rtc", msm6242_r, msm6242_w)   // 6242RTC
30622937   AM_RANGE(0x40, 0x43) AM_WRITE(ddenlovr_palette_base_w)
30632938   AM_RANGE(0x44, 0x47) AM_WRITE(ddenlovr_palette_mask_w)
30642939   AM_RANGE(0x48, 0x4b) AM_WRITE(ddenlovr_transparency_pen_w)
r4679r4680
30662941   AM_RANGE(0x54, 0x54) AM_WRITE(ddenlovr_bgcolor_w)
30672942   AM_RANGE(0x55, 0x55) AM_WRITE(ddenlovr_priority_w)
30682943   AM_RANGE(0x56, 0x56) AM_WRITE(ddenlovr_layer_enable_w)
2944   AM_RANGE(0x58, 0x58) AM_READ(unk_r)                           // ? must be 78 on startup
30692945   AM_RANGE(0x60, 0x60) AM_WRITE(hginga_input_w)
30702946   AM_RANGE(0x61, 0x61) AM_WRITE(hgokou_input_w)
3071   AM_RANGE(0x80, 0x80) AM_DEVWRITE("oki", okim6295_w)
2947   AM_RANGE(0x62, 0x62) AM_READ(hgokou_input_r)
2948   AM_RANGE(0x80, 0x80) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w)
30722949   AM_RANGE(0x82, 0x83) AM_DEVWRITE("ym", ym2413_w)
2950   AM_RANGE(0x84, 0x84) AM_DEVREAD("ay", ay8910_r)
30732951   AM_RANGE(0x86, 0x86) AM_DEVWRITE("ay", ay8910_data_w)
30742952   AM_RANGE(0x88, 0x88) AM_DEVWRITE("ay", ay8910_address_w)
2953   AM_RANGE(0xb0, 0xb0) AM_READ(hanakanz_rand_r)
30752954ADDRESS_MAP_END
30762955
30772956
r4679r4680
31303009   }
31313010}
31323011
3133static ADDRESS_MAP_START( hparadis_readmem, ADDRESS_SPACE_PROGRAM, 8 )
3134   AM_RANGE(0x0000, 0x5fff) AM_READ(SMH_ROM)   // ROM
3135   AM_RANGE(0x6000, 0x6fff) AM_READ(SMH_RAM)   // RAM
3136   AM_RANGE(0x7000, 0x7fff) AM_READ(SMH_BANK2)   // RAM (Banked)
3137   AM_RANGE(0x8000, 0xffff) AM_READ(SMH_BANK1)   // ROM (Banked)
3138ADDRESS_MAP_END
3139static ADDRESS_MAP_START( hparadis_writemem, ADDRESS_SPACE_PROGRAM, 8 )
3140   AM_RANGE(0x6000, 0x6fff) AM_WRITE(SMH_RAM)      // RAM
3141   AM_RANGE(0x7000, 0x7fff) AM_WRITE(SMH_BANK2)   // RAM (Banked)
3012static ADDRESS_MAP_START( hparadis_map, ADDRESS_SPACE_PROGRAM, 8 )
3013   AM_RANGE(0x0000, 0x5fff) AM_ROM                        // ROM
3014   AM_RANGE(0x6000, 0x6fff) AM_RAM                        // RAM
3015   AM_RANGE(0x7000, 0x7fff) AM_RAMBANK(2)                  // RAM (Banked)
3016   AM_RANGE(0x8000, 0xffff) AM_ROMBANK(1)                  // ROM (Banked)
31423017   AM_RANGE(0xc000, 0xc1ff) AM_WRITE(rongrong_palette_w)
31433018ADDRESS_MAP_END
31443019
31453020// the RTC seems unused
3146static ADDRESS_MAP_START( hparadis_readport, ADDRESS_SPACE_IO, 8 )   ADDRESS_MAP_GLOBAL_MASK(0xff)
3021static ADDRESS_MAP_START( hparadis_portmap, ADDRESS_SPACE_IO, 8 )   ADDRESS_MAP_GLOBAL_MASK(0xff)
3022   AM_RANGE(0x00, 0x01) AM_WRITE(rongrong_blitter_w)
31473023   AM_RANGE(0x03, 0x03) AM_READ(rongrong_gfxrom_r)
3148   AM_RANGE(0x1b, 0x1b) AM_READ(rongrong_blitter_busy_r)
3024   AM_RANGE(0x1b, 0x1b) AM_READWRITE(rongrong_blitter_busy_r, rongrong_blitter_busy_w)
31493025   AM_RANGE(0x1c, 0x1c) AM_READ(hparadis_dsw_r)
3150   AM_RANGE(0x40, 0x40) AM_DEVREAD("oki", okim6295_r)
3151   AM_RANGE(0x98, 0x98) AM_READ(unk_r)   // ? must be 78 on startup
3152   AM_RANGE(0xa2, 0xa3) AM_READ(hparadis_input_r)
3153ADDRESS_MAP_END
3154static ADDRESS_MAP_START( hparadis_writeport, ADDRESS_SPACE_IO, 8 )   ADDRESS_MAP_GLOBAL_MASK(0xff)
3155   AM_RANGE(0x00, 0x01) AM_WRITE(rongrong_blitter_w)
3156   AM_RANGE(0x1b, 0x1b) AM_WRITE(rongrong_blitter_busy_w)
31573026   AM_RANGE(0x1e, 0x1e) AM_WRITE(hparadis_select_w)
3158   AM_RANGE(0x40, 0x40) AM_DEVWRITE("oki", okim6295_w)
3027   AM_RANGE(0x40, 0x40) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w)
31593028   AM_RANGE(0x60, 0x61) AM_DEVWRITE("ym", ym2413_w)
31603029   AM_RANGE(0x80, 0x83) AM_WRITE(ddenlovr_palette_base_w)
31613030   AM_RANGE(0x84, 0x87) AM_WRITE(ddenlovr_palette_mask_w)
r4679r4680
31643033   AM_RANGE(0x94, 0x94) AM_WRITE(ddenlovr_bgcolor_w)
31653034   AM_RANGE(0x95, 0x95) AM_WRITE(ddenlovr_priority_w)
31663035   AM_RANGE(0x96, 0x96) AM_WRITE(ddenlovr_layer_enable_w)
3036   AM_RANGE(0x98, 0x98) AM_READ(unk_r)   // ? must be 78 on startup
31673037   AM_RANGE(0xa0, 0xa0) AM_WRITE(hginga_input_w)
31683038   AM_RANGE(0xa1, 0xa1) AM_WRITE(hparadis_coin_w)
3039   AM_RANGE(0xa2, 0xa3) AM_READ(hparadis_input_r)
31693040   AM_RANGE(0xc2, 0xc2) AM_WRITENOP   // enables palette RAM at c000
31703041ADDRESS_MAP_END
31713042
r4679r4680
31893060   return 0xff;
31903061}
31913062
3192static ADDRESS_MAP_START( mjmywrld_readport, ADDRESS_SPACE_IO, 8 )   ADDRESS_MAP_GLOBAL_MASK(0xff)
3193   AM_RANGE(0x03, 0x03) AM_READ(rongrong_gfxrom_r)
3194   AM_RANGE(0x22, 0x22) AM_READ(mjmywrld_coins_r)
3195   AM_RANGE(0x23, 0x23) AM_READ(mjmyster_keyb_r)
3196   AM_RANGE(0x40, 0x40) AM_DEVREAD("oki", okim6295_r)
3197   AM_RANGE(0x44, 0x44) AM_DEVREAD("ay", ay8910_r)
3198   AM_RANGE(0x60, 0x6f) AM_DEVREAD("rtc", msm6242_r)   // 6242RTC
3199   AM_RANGE(0x98, 0x98) AM_READ(unk_r)   // ? must be 78 on startup
3200   AM_RANGE(0xc0, 0xc0) AM_READ(hanakanz_rand_r)
3201   AM_RANGE(0xe0, 0xe0) AM_READ(mjmyster_dsw_r)
3202ADDRESS_MAP_END
3203
3204static ADDRESS_MAP_START( mjmywrld_writeport, ADDRESS_SPACE_IO, 8 )   ADDRESS_MAP_GLOBAL_MASK(0xff)
3063static ADDRESS_MAP_START( mjmywrld_portmap, ADDRESS_SPACE_IO, 8 )   ADDRESS_MAP_GLOBAL_MASK(0xff)
32053064   AM_RANGE(0x00, 0x01) AM_WRITE(mjmyster_blitter_w)
3065   AM_RANGE(0x03, 0x03) AM_READ(rongrong_gfxrom_r)
32063066   AM_RANGE(0x1c, 0x1c) AM_WRITE(mjmyster_rambank_w)
32073067   AM_RANGE(0x1e, 0x1e) AM_WRITE(hginga_rombank_w)
32083068   AM_RANGE(0x20, 0x20) AM_WRITE(mjmyster_select2_w)
32093069   AM_RANGE(0x21, 0x21) AM_WRITE(mjmyster_coincounter_w)
3210   AM_RANGE(0x40, 0x40) AM_DEVWRITE("oki", okim6295_w)
3070   AM_RANGE(0x22, 0x22) AM_READ(mjmywrld_coins_r)
3071   AM_RANGE(0x23, 0x23) AM_READ(mjmyster_keyb_r)
3072   AM_RANGE(0x40, 0x40) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w)
32113073   AM_RANGE(0x42, 0x43) AM_DEVWRITE("ym", ym2413_w)
3074   AM_RANGE(0x44, 0x44) AM_DEVREAD("ay", ay8910_r)
32123075   AM_RANGE(0x46, 0x46) AM_DEVWRITE("ay", ay8910_data_w)
32133076   AM_RANGE(0x48, 0x48) AM_DEVWRITE("ay", ay8910_address_w)
3214   AM_RANGE(0x60, 0x6f) AM_DEVWRITE("rtc", msm6242_w)   // 6242RTC
3077   AM_RANGE(0x60, 0x6f) AM_DEVREADWRITE("rtc", msm6242_r, msm6242_w)   // 6242RTC
32153078   AM_RANGE(0x80, 0x83) AM_WRITE(ddenlovr_palette_base_w)
32163079   AM_RANGE(0x84, 0x87) AM_WRITE(ddenlovr_palette_mask_w)
32173080   AM_RANGE(0x88, 0x8b) AM_WRITE(ddenlovr_transparency_pen_w)
r4679r4680
32193082   AM_RANGE(0x94, 0x94) AM_WRITE(ddenlovr_bgcolor_w)
32203083   AM_RANGE(0x95, 0x95) AM_WRITE(ddenlovr_priority_w)
32213084   AM_RANGE(0x96, 0x96) AM_WRITE(ddenlovr_layer_enable_w)
3085   AM_RANGE(0x98, 0x98) AM_READ(unk_r)   // ? must be 78 on startup
3086   AM_RANGE(0xc0, 0xc0) AM_READ(hanakanz_rand_r)
3087   AM_RANGE(0xe0, 0xe0) AM_READ(mjmyster_dsw_r)
32223088ADDRESS_MAP_END
32233089
32243090
r4679r4680
32683134   return 0xffff;   // read but not used, it seems
32693135}
32703136
3271static ADDRESS_MAP_START( akamaru_readmem, ADDRESS_SPACE_PROGRAM, 16 )
3272   AM_RANGE(0x000000, 0x1fffff) AM_READ(SMH_ROM)            // ROM
3137static ADDRESS_MAP_START( akamaru_map, ADDRESS_SPACE_PROGRAM, 16 )
3138   AM_RANGE(0x000000, 0x1fffff) AM_ROM                                          // ROM
3139
3140   AM_RANGE(0x213570, 0x213571) AM_WRITE(akamaru_protection1_w)                     // OKI bank
32733141   AM_RANGE(0x624680, 0x624681) AM_READ(akamaru_protection1_r)
3274   AM_RANGE(0xe00086, 0xe00087) AM_READ(ddenlovr_gfxrom_r)      // Video Chip
3275   AM_RANGE(0xe00070, 0xe00071) AM_READ(unk16_r)            // ? must be 78 on startup (not necessary in ddlover)
3276   AM_RANGE(0xe00100, 0xe00101) AM_READ_PORT("P1")
3277   AM_RANGE(0xe00102, 0xe00103) AM_READ_PORT("P2")
3278   AM_RANGE(0xe00104, 0xe00105) AM_READ_PORT("SYSTEM")
3279   AM_RANGE(0xe00106, 0xe00107) AM_READ(akamaru_protection2_r)
3280   AM_RANGE(0xe0010c, 0xe0010d) AM_READ(akamaru_e0010d_r)
3281   AM_RANGE(0xe00200, 0xe00201) AM_READ(akamaru_dsw_r)         // DSW
3282   AM_RANGE(0xe00204, 0xe00205) AM_READ(akamaru_blitter_r)      // Blitter Busy & IRQ
3283   AM_RANGE(0xe00500, 0xe0051f) AM_DEVREAD8("rtc", msm6242_r, 0x00ff)   // 6242RTC
3284   AM_RANGE(0xe00604, 0xe00605) AM_DEVREAD8("ay", ay8910_r, 0x00ff)
3285   AM_RANGE(0xe00700, 0xe00701) AM_DEVREAD8("oki", okim6295_r, 0x00ff)            // Sound
3286   AM_RANGE(0xff0000, 0xffffff) AM_READ(SMH_RAM)                        // RAM
3287ADDRESS_MAP_END
32883142
3289static ADDRESS_MAP_START( akamaru_writemem, ADDRESS_SPACE_PROGRAM, 16 )
3290   AM_RANGE(0x000000, 0x1fffff) AM_WRITE(SMH_ROM)               // ROM
3291   AM_RANGE(0x213570, 0x213571) AM_WRITE(akamaru_protection1_w)   // OKI bank
3292   AM_RANGE(0xd00000, 0xd003ff) AM_WRITE(ddenlovr_palette_w)      // Palette
3293//  AM_RANGE(0xd01000, 0xd017ff) AM_WRITE(SMH_RAM)                  // 0
3143   AM_RANGE(0xd00000, 0xd003ff) AM_WRITE(ddenlovr_palette_w)                        // Palette
3144//  AM_RANGE(0xd01000, 0xd017ff) AM_WRITE(SMH_RAM)                                          // 0
3145
32943146   AM_RANGE(0xe00040, 0xe00047) AM_WRITE(ddenlovr16_palette_base_w)
32953147   AM_RANGE(0xe00048, 0xe0004f) AM_WRITE(ddenlovr16_palette_mask_w)
32963148   AM_RANGE(0xe00050, 0xe00057) AM_WRITE(ddenlovr16_transparency_pen_w)
r4679r4680
32983150   AM_RANGE(0xe00068, 0xe00069) AM_WRITE(ddenlovr16_bgcolor_w)
32993151   AM_RANGE(0xe0006a, 0xe0006b) AM_WRITE(ddenlovr16_priority_w)
33003152   AM_RANGE(0xe0006c, 0xe0006d) AM_WRITE(ddenlovr16_layer_enable_w)
3153   AM_RANGE(0xe00070, 0xe00071) AM_READ(unk16_r)                                 // ? must be 78 on startup (not necessary in ddlover)
33013154   AM_RANGE(0xe00080, 0xe00083) AM_WRITE(ddenlovr_blitter_w)
3155   AM_RANGE(0xe00086, 0xe00087) AM_READ(ddenlovr_gfxrom_r)                           // Video Chip
3156
3157   AM_RANGE(0xe00100, 0xe00101) AM_READ_PORT("P1")
3158   AM_RANGE(0xe00102, 0xe00103) AM_READ_PORT("P2")
3159   AM_RANGE(0xe00104, 0xe00105) AM_READ_PORT("SYSTEM")
3160
3161   AM_RANGE(0xe00106, 0xe00107) AM_READ(akamaru_protection2_r)
33023162   AM_RANGE(0xe00108, 0xe0010b) AM_WRITE(SMH_RAM) AM_BASE( &akamaru_protection2)
3303   AM_RANGE(0xe00302, 0xe00303) AM_WRITE(ddenlovr_blitter_irq_ack_w)         // Blitter irq acknowledge
3304   AM_RANGE(0xe00304, 0xe00307) AM_WRITE(SMH_RAM) AM_BASE( &akamaru_dsw_sel)   // DSW select
3305   AM_RANGE(0xe00308, 0xe00309) AM_WRITE(ddenlovr_coincounter_0_w)            // Coin Counters
3306   AM_RANGE(0xe0030c, 0xe0030d) AM_WRITE(ddenlovr_coincounter_1_w)            //
3163
3164   AM_RANGE(0xe0010c, 0xe0010d) AM_READ(akamaru_e0010d_r)
3165   AM_RANGE(0xe00200, 0xe00201) AM_READ(akamaru_dsw_r)                              // DSW
3166
3167   AM_RANGE(0xe00204, 0xe00205) AM_READ(akamaru_blitter_r)                           // Blitter Busy & IRQ
3168   AM_RANGE(0xe00302, 0xe00303) AM_WRITE(ddenlovr_blitter_irq_ack_w)                  // Blitter irq acknowledge
3169
3170   AM_RANGE(0xe00304, 0xe00307) AM_WRITE(SMH_RAM) AM_BASE( &akamaru_dsw_sel)            // DSW select
3171   AM_RANGE(0xe00308, 0xe00309) AM_WRITE(ddenlovr_coincounter_0_w)                     // Coin Counters
3172   AM_RANGE(0xe0030c, 0xe0030d) AM_WRITE(ddenlovr_coincounter_1_w)                     //
3173
33073174   AM_RANGE(0xe00400, 0xe00403) AM_DEVWRITE8("ym", ym2413_w, 0x00ff)
3308   AM_RANGE(0xe00500, 0xe0051f) AM_DEVWRITE8("rtc", msm6242_w, 0x00ff)   // 6242RTC
3175   AM_RANGE(0xe00500, 0xe0051f) AM_DEVREADWRITE8("rtc", msm6242_r, msm6242_w, 0x00ff)      // 6242RTC
33093176   AM_RANGE(0xe00600, 0xe00603) AM_DEVWRITE8("ay", ay8910_address_data_w, 0x00ff)
3310   AM_RANGE(0xe00700, 0xe00701) AM_DEVWRITE8("oki", okim6295_w, 0x00ff)
3311   AM_RANGE(0xff0000, 0xffffff) AM_WRITE(SMH_RAM)                        // RAM
3177   AM_RANGE(0xe00604, 0xe00605) AM_DEVREAD8("ay", ay8910_r, 0x00ff)
3178   AM_RANGE(0xe00700, 0xe00701) AM_DEVREADWRITE8("oki", okim6295_r, okim6295_w, 0x00ff)   // Sound
3179   AM_RANGE(0xff0000, 0xffffff) AM_RAM                                          // RAM
33123180ADDRESS_MAP_END
33133181
33143182
r4679r4680
33733241   }
33743242}
33753243
3376static ADDRESS_MAP_START( mjflove_readport, ADDRESS_SPACE_IO, 8 )   // 16 bit I/O
3244static ADDRESS_MAP_START( mjflove_portmap, ADDRESS_SPACE_IO, 8 )   // 16 bit I/O
33773245   AM_RANGE(0x0010, 0x0010) AM_READ(hanakanz_rand_r) AM_MIRROR(0xff00)
33783246   AM_RANGE(0x001c, 0x001c) AM_READ_PORT("DSW2") AM_MIRROR(0xff00)
3379   AM_RANGE(0x0038, 0x0038) AM_READNOP         // ? ack or watchdog
3380   AM_RANGE(0x0043, 0x0043) AM_READ(rongrong_gfxrom_r)
3381   AM_RANGE(0x0080, 0x0081) AM_READ(mjflove_keyb_r)
3382   AM_RANGE(0x0082, 0x0082) AM_READ_PORT("SYSTEM")
3383   AM_RANGE(0x00da, 0x00da) AM_READ(mjflove_protection_r) AM_MIRROR(0xff00)
3384   AM_RANGE(0x0100, 0x0100) AM_READ_PORT("DSW1")
3385   AM_RANGE(0x0280, 0x028f) AM_DEVREAD("rtc", msm6242_r)   // 6242RTC
3386   AM_RANGE(0x0380, 0x0380) AM_DEVREAD("oki", okim6295_r)
3387ADDRESS_MAP_END
3388
3389static ADDRESS_MAP_START( mjflove_writeport, ADDRESS_SPACE_IO, 8 )   // 16 bit I/O
33903247   AM_RANGE(0x001e, 0x001e) AM_WRITE(hanakanz_keyb_w) AM_MIRROR(0xff00)
33913248   AM_RANGE(0x0020, 0x0023) AM_WRITE(ddenlovr_palette_base_w)
33923249   AM_RANGE(0x0024, 0x0027) AM_WRITE(ddenlovr_palette_mask_w)
r4679r4680
33953252   AM_RANGE(0x0034, 0x0034) AM_WRITE(ddenlovr_bgcolor_w)
33963253   AM_RANGE(0x0035, 0x0035) AM_WRITE(ddenlovr_priority_w)
33973254   AM_RANGE(0x0036, 0x0036) AM_WRITE(ddenlovr_layer_enable_w)
3255   AM_RANGE(0x0038, 0x0038) AM_READNOP         // ? ack or watchdog
33983256   AM_RANGE(0x0040, 0x0041) AM_WRITE(mjflove_blitter_w) AM_MIRROR(0xff00)
3257   AM_RANGE(0x0043, 0x0043) AM_READ(rongrong_gfxrom_r)
3258   AM_RANGE(0x0080, 0x0081) AM_READ(mjflove_keyb_r)
3259   AM_RANGE(0x0082, 0x0082) AM_READ_PORT("SYSTEM")
3260   AM_RANGE(0x00da, 0x00da) AM_READ(mjflove_protection_r) AM_MIRROR(0xff00)
33993261   AM_RANGE(0x00f2, 0x00f2) AM_WRITE(mjmyster_rambank_w) AM_MIRROR(0xff00)
34003262   AM_RANGE(0x00f8, 0x00f8) AM_WRITE(mjflove_rombank_w) AM_MIRROR(0xff00)
34013263   AM_RANGE(0x00fa, 0x00fa) AM_DEVWRITE("oki", mjflove_okibank_w)
3264   AM_RANGE(0x0100, 0x0100) AM_READ_PORT("DSW1")
34023265   AM_RANGE(0x0181, 0x0181) AM_WRITENOP                  // ? int. enable
34033266   AM_RANGE(0x0184, 0x0184) AM_WRITE(mjflove_coincounter_w)
34043267   AM_RANGE(0x0200, 0x0201) AM_DEVWRITE("ym", ym2413_w)
3405   AM_RANGE(0x0280, 0x028f) AM_DEVWRITE("rtc", msm6242_w)   // 6242RTC
3268   AM_RANGE(0x0280, 0x028f) AM_DEVREADWRITE("rtc", msm6242_r, msm6242_w)   // 6242RTC
34063269   AM_RANGE(0x0300, 0x0301) AM_DEVWRITE("ay", ay8910_address_data_w)
3407   AM_RANGE(0x0380, 0x0380) AM_DEVWRITE("oki", okim6295_w)
3270   AM_RANGE(0x0380, 0x0380) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w)
34083271ADDRESS_MAP_END
34093272
34103273/***************************************************************************
r4679r4680
34273290   return 0x04;   // !bit 2 = blitter busy
34283291}
34293292
3430static ADDRESS_MAP_START( jongtei_readport, ADDRESS_SPACE_IO, 8 )   ADDRESS_MAP_GLOBAL_MASK(0xff)
3431   AM_RANGE(0x2c, 0x2c) AM_READ(jongtei_busy_r)
3432   AM_RANGE(0x32, 0x32) AM_READ(hanakanz_dsw_r)
3433   AM_RANGE(0x40, 0x40) AM_READ_PORT("SYSTEM")
3434   AM_RANGE(0x41, 0x42) AM_READ(hanakanz_keyb_r)
3435   AM_RANGE(0x46, 0x46) AM_READ(hanakanz_rand_r)
3436   AM_RANGE(0x63, 0x64) AM_READ(hanakanz_gfxrom_r)
3437   AM_RANGE(0xa0, 0xa0) AM_DEVREAD("oki", okim6295_r)
3438   AM_RANGE(0xc0, 0xcf) AM_DEVREAD("rtc", msm6242_r)   // 6242RTC
3439ADDRESS_MAP_END
3440static ADDRESS_MAP_START( jongtei_writeport, ADDRESS_SPACE_IO, 8 )   ADDRESS_MAP_GLOBAL_MASK(0xff)
3441   AM_RANGE(0x2c, 0x2c) AM_DEVWRITE("oki", jongtei_okibank_w)
3293static ADDRESS_MAP_START( jongtei_portmap, ADDRESS_SPACE_IO, 8 )   ADDRESS_MAP_GLOBAL_MASK(0xff)
3294   AM_RANGE(0x2c, 0x2c) AM_READ(jongtei_busy_r) AM_DEVWRITE("oki", jongtei_okibank_w)
34423295   AM_RANGE(0x2e, 0x2e) AM_WRITE(hanakanz_blitter_reg_w)
34433296   AM_RANGE(0x30, 0x30) AM_WRITE(hanakanz_rombank_w)
34443297   AM_RANGE(0x31, 0x31) AM_WRITE(jongtei_dsw_keyb_w)
3298   AM_RANGE(0x32, 0x32) AM_READ(hanakanz_dsw_r)
3299   AM_RANGE(0x40, 0x40) AM_READ_PORT("SYSTEM")
3300   AM_RANGE(0x41, 0x42) AM_READ(hanakanz_keyb_r)
34453301   AM_RANGE(0x43, 0x43) AM_WRITE(hanakanz_coincounter_w)
3302   AM_RANGE(0x46, 0x46) AM_READ(hanakanz_rand_r)
34463303   AM_RANGE(0x60, 0x60) AM_WRITE(hanakanz_blitter_data_w)
34473304   AM_RANGE(0x61, 0x61) AM_WRITE(hanakanz_palette_w)
3305   AM_RANGE(0x63, 0x64) AM_READ(hanakanz_gfxrom_r)
34483306   AM_RANGE(0x80, 0x81) AM_DEVWRITE("ym", ym2413_w)
3449   AM_RANGE(0xa0, 0xa0) AM_DEVWRITE("oki", okim6295_w)
3450   AM_RANGE(0xc0, 0xcf) AM_DEVWRITE("rtc", msm6242_w)   // 6242RTC
3307   AM_RANGE(0xa0, 0xa0) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w)
3308   AM_RANGE(0xc0, 0xcf) AM_DEVREADWRITE("rtc", msm6242_r, msm6242_w)   // 6242RTC
34513309ADDRESS_MAP_END
34523310
34533311
r4679r4680
68156673
68166674   /* basic machine hardware */
68176675   MDRV_CPU_ADD("maincpu",M68000, XTAL_24MHz / 2)
6818   MDRV_CPU_PROGRAM_MAP(ddenlovr_readmem,ddenlovr_writemem)
6676   MDRV_CPU_PROGRAM_MAP(ddenlovr_map,0)
68196677   MDRV_CPU_VBLANK_INT("screen", irq1_line_hold)
68206678
68216679   /* video hardware */
r4679r4680
68546712   /* basic machine hardware */
68556713   MDRV_IMPORT_FROM(ddenlovr)
68566714   MDRV_CPU_MODIFY("maincpu")
6857   MDRV_CPU_PROGRAM_MAP(ddenlvrj_readmem,ddenlvrj_writemem)
6715   MDRV_CPU_PROGRAM_MAP(ddenlvrj_map,0)
68586716MACHINE_DRIVER_END
68596717
68606718static MACHINE_DRIVER_START( ddenlvrk )
68616719   MDRV_IMPORT_FROM(ddenlovr)
68626720   MDRV_CPU_MODIFY("maincpu")
6863   MDRV_CPU_PROGRAM_MAP(ddenlvrk_readmem,ddenlvrk_writemem)
6721   MDRV_CPU_PROGRAM_MAP(ddenlvrk_map,0)
68646722MACHINE_DRIVER_END
68656723
68666724static MACHINE_DRIVER_START( akamaru )
r4679r4680
68686726   /* basic machine hardware */
68696727   MDRV_IMPORT_FROM(ddenlovr)
68706728   MDRV_CPU_MODIFY("maincpu")
6871   MDRV_CPU_PROGRAM_MAP(akamaru_readmem,akamaru_writemem)
6729   MDRV_CPU_PROGRAM_MAP(akamaru_map,0)
68726730MACHINE_DRIVER_END
68736731
68746732
r4679r4680
68876745   /* basic machine hardware */
68886746   MDRV_IMPORT_FROM(ddenlovr)
68896747   MDRV_CPU_MODIFY("maincpu")
6890   MDRV_CPU_PROGRAM_MAP(quiz365_readmem,quiz365_writemem)
6748   MDRV_CPU_PROGRAM_MAP(quiz365_map,0)
68916749
68926750   MDRV_SOUND_MODIFY("ay")
68936751   MDRV_SOUND_CONFIG(quiz365_ay8910_interface)
r4679r4680
68996757   /* basic machine hardware */
69006758   MDRV_IMPORT_FROM(ddenlovr)
69016759   MDRV_CPU_MODIFY("maincpu")
6902   MDRV_CPU_PROGRAM_MAP(nettoqc_readmem,nettoqc_writemem)
6760   MDRV_CPU_PROGRAM_MAP(nettoqc_map,0)
69036761MACHINE_DRIVER_END
69046762
69056763/***************************************************************************
r4679r4680
69406798
69416799   /* basic machine hardware */
69426800   MDRV_CPU_ADD("maincpu", Z80, 8000000)   /* ? */
6943   MDRV_CPU_PROGRAM_MAP(quizchq_readmem,quizchq_writemem)
6944   MDRV_CPU_IO_MAP(quizchq_readport,quizchq_writeport)
6801   MDRV_CPU_PROGRAM_MAP(quizchq_map,0)
6802   MDRV_CPU_IO_MAP(quizchq_portmap,0)
69456803   MDRV_CPU_VBLANK_INT("screen", quizchq_irq)
69466804
69476805   /* video hardware */
r4679r4680
69776835   /* basic machine hardware */
69786836   MDRV_IMPORT_FROM(quizchq)
69796837   MDRV_CPU_MODIFY("maincpu")
6980   MDRV_CPU_PROGRAM_MAP(rongrong_readmem,rongrong_writemem)
6981   MDRV_CPU_IO_MAP(rongrong_readport,rongrong_writeport)
6838   MDRV_CPU_PROGRAM_MAP(rongrong_map,0)
6839   MDRV_CPU_IO_MAP(rongrong_portmap,0)
69826840MACHINE_DRIVER_END
69836841
69846842/***************************************************************************
r4679r4680
70136871
70146872   /* basic machine hardware */
70156873   MDRV_CPU_ADD("maincpu", Z80, 8000000)
7016   MDRV_CPU_PROGRAM_MAP(mmpanic_readmem,mmpanic_writemem)
7017   MDRV_CPU_IO_MAP(mmpanic_readport,mmpanic_writeport)
6874   MDRV_CPU_PROGRAM_MAP(mmpanic_map,0)
6875   MDRV_CPU_IO_MAP(mmpanic_portmap,0)
70186876   MDRV_CPU_VBLANK_INT("screen", mmpanic_irq)
70196877
70206878   MDRV_CPU_ADD("soundcpu", Z80, 3579545)
7021   MDRV_CPU_PROGRAM_MAP(mmpanic_sound_readmem,mmpanic_sound_writemem)
7022   MDRV_CPU_IO_MAP(mmpanic_sound_readport,mmpanic_sound_writeport)
6879   MDRV_CPU_PROGRAM_MAP(mmpanic_sound_map,0)
6880   MDRV_CPU_IO_MAP(mmpanic_sound_portmap,0)
70236881   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)   // NMI by main cpu
70246882
70256883   /* video hardware */
r4679r4680
70856943
70866944   /* basic machine hardware */
70876945   MDRV_CPU_ADD("maincpu",Z80,8000000)   // TMPZ84C015BF-8
7088   MDRV_CPU_PROGRAM_MAP(hanakanz_readmem,hanakanz_writemem)
7089   MDRV_CPU_IO_MAP(hanakanz_readport,hanakanz_writeport)
6946   MDRV_CPU_PROGRAM_MAP(hanakanz_map,0)
6947   MDRV_CPU_IO_MAP(hanakanz_portmap,0)
70906948   MDRV_CPU_VBLANK_INT("screen", hanakanz_irq)
70916949
70926950   /* video hardware */
r4679r4680
71216979   /* basic machine hardware */
71226980   MDRV_IMPORT_FROM( hanakanz )
71236981   MDRV_CPU_MODIFY("maincpu")
7124   MDRV_CPU_IO_MAP(hkagerou_readport,hkagerou_writeport)
6982   MDRV_CPU_IO_MAP(hkagerou_portmap,0)
71256983MACHINE_DRIVER_END
71266984
71276985static MACHINE_DRIVER_START( mjreach1 )
71286986   /* basic machine hardware */
71296987   MDRV_IMPORT_FROM( hanakanz )
71306988   MDRV_CPU_MODIFY("maincpu")
7131   MDRV_CPU_IO_MAP(mjreach1_readport,mjreach1_writeport)
6989   MDRV_CPU_IO_MAP(mjreach1_portmap,0)
71326990MACHINE_DRIVER_END
71336991
71346992
r4679r4680
71627020   /* basic machine hardware */
71637021   MDRV_IMPORT_FROM( hanakanz )
71647022   MDRV_CPU_MODIFY("maincpu")
7165   MDRV_CPU_IO_MAP(mjchuuka_readport,mjchuuka_writeport)
7023   MDRV_CPU_IO_MAP(mjchuuka_portmap,0)
71667024   MDRV_CPU_VBLANK_INT("screen", mjchuuka_irq)
71677025
71687026   MDRV_SOUND_ADD("ay", AY8910, 1789772)
r4679r4680
71747032
71757033   MDRV_IMPORT_FROM(mmpanic)
71767034   MDRV_CPU_MODIFY("maincpu")
7177   MDRV_CPU_PROGRAM_MAP(funkyfig_readmem,funkyfig_writemem)
7178   MDRV_CPU_IO_MAP(funkyfig_readport,funkyfig_writeport)
7035   MDRV_CPU_PROGRAM_MAP(funkyfig_map,0)
7036   MDRV_CPU_IO_MAP(funkyfig_portmap,0)
71797037   MDRV_CPU_VBLANK_INT("screen", mjchuuka_irq)
71807038
71817039   MDRV_CPU_MODIFY("soundcpu")
7182   MDRV_CPU_IO_MAP(funkyfig_sound_readport,mmpanic_sound_writeport)
7040   MDRV_CPU_IO_MAP(funkyfig_sound_portmap,0)
71837041
71847042   MDRV_VIDEO_START(ddenlovr)   // no extra layers?
71857043MACHINE_DRIVER_END
r4679r4680
72357093   /* basic machine hardware */
72367094   MDRV_IMPORT_FROM( quizchq )
72377095   MDRV_CPU_MODIFY("maincpu")
7238   MDRV_CPU_PROGRAM_MAP(mjmyster_readmem,mjmyster_writemem)
7239   MDRV_CPU_IO_MAP(mjmyster_readport,mjmyster_writeport)
7096   MDRV_CPU_PROGRAM_MAP(mjmyster_map,0)
7097   MDRV_CPU_IO_MAP(mjmyster_portmap,0)
72407098   MDRV_CPU_VBLANK_INT_HACK(mjmyster_irq, 2)
72417099   MDRV_CPU_PERIODIC_INT(rtc_nmi_irq, 1)
72427100
r4679r4680
72847142   /* basic machine hardware */
72857143   MDRV_IMPORT_FROM( quizchq )
72867144   MDRV_CPU_MODIFY("maincpu")
7287   MDRV_CPU_PROGRAM_MAP(hginga_readmem,hginga_writemem)
7288   MDRV_CPU_IO_MAP(hginga_readport,hginga_writeport)
7145   MDRV_CPU_PROGRAM_MAP(hginga_map,0)
7146   MDRV_CPU_IO_MAP(hginga_portmap,0)
72897147   MDRV_CPU_VBLANK_INT("screen", hginga_irq)
72907148
72917149   MDRV_SOUND_ADD("ay", AY8910, 3579545)
r4679r4680
72977155   /* basic machine hardware */
72987156   MDRV_IMPORT_FROM( quizchq )
72997157   MDRV_CPU_MODIFY("maincpu")
7300   MDRV_CPU_PROGRAM_MAP(hgokou_readmem,hgokou_writemem)
7301   MDRV_CPU_IO_MAP(hgokou_readport,hgokou_writeport)
7158   MDRV_CPU_PROGRAM_MAP(hgokou_map,0)
7159   MDRV_CPU_IO_MAP(hgokou_portmap,0)
73027160   MDRV_CPU_VBLANK_INT("screen", hginga_irq)
73037161
73047162   MDRV_SOUND_ADD("ay", AY8910, 3579545)
r4679r4680
73107168   /* basic machine hardware */
73117169   MDRV_IMPORT_FROM( mjmyster )
73127170   MDRV_CPU_MODIFY("maincpu")
7313   MDRV_CPU_PROGRAM_MAP(hginga_readmem,hginga_writemem)
7314   MDRV_CPU_IO_MAP(mjmywrld_readport,mjmywrld_writeport)
7171   MDRV_CPU_PROGRAM_MAP(hginga_map,0)
7172   MDRV_CPU_IO_MAP(mjmywrld_portmap,0)
73157173MACHINE_DRIVER_END
73167174
73177175static MACHINE_DRIVER_START( mjmyuniv )
73187176   /* basic machine hardware */
73197177   MDRV_IMPORT_FROM( quizchq )
73207178   MDRV_CPU_MODIFY("maincpu")
7321   MDRV_CPU_PROGRAM_MAP(mjmyster_readmem,mjmyster_writemem)
7322   MDRV_CPU_IO_MAP(mjmyster_readport,mjmyster_writeport)
7179   MDRV_CPU_PROGRAM_MAP(mjmyster_map,0)
7180   MDRV_CPU_IO_MAP(mjmyster_portmap,0)
73237181   MDRV_CPU_VBLANK_INT_HACK(mjmyster_irq, 2)
73247182   MDRV_CPU_PERIODIC_INT(rtc_nmi_irq, 1)
73257183
r4679r4680
73327190   /* basic machine hardware */
73337191   MDRV_IMPORT_FROM( quizchq )
73347192   MDRV_CPU_MODIFY("maincpu")
7335   MDRV_CPU_IO_MAP(mjmyster_readport,mjmyster_writeport)
7193   MDRV_CPU_IO_MAP(mjmyster_portmap,0)
73367194   MDRV_CPU_VBLANK_INT_HACK(mjmyster_irq, 2)
73377195   MDRV_CPU_PERIODIC_INT(rtc_nmi_irq, 1)
73387196
r4679r4680
73627220   /* basic machine hardware */
73637221   MDRV_IMPORT_FROM( quizchq )
73647222   MDRV_CPU_MODIFY("maincpu")
7365   MDRV_CPU_PROGRAM_MAP(rongrong_readmem,rongrong_writemem)
7366   MDRV_CPU_IO_MAP(mjflove_readport,mjflove_writeport)
7223   MDRV_CPU_PROGRAM_MAP(rongrong_map,0)
7224   MDRV_CPU_IO_MAP(mjflove_portmap,0)
73677225   MDRV_CPU_VBLANK_INT_HACK(mjflove_irq, 2)
73687226
73697227   MDRV_VIDEO_START(mjflove)   // blitter commands in the roms are shuffled around
r4679r4680
73837241   /* basic machine hardware */
73847242   MDRV_IMPORT_FROM( quizchq )
73857243   MDRV_CPU_MODIFY("maincpu")
7386   MDRV_CPU_PROGRAM_MAP(hparadis_readmem,hparadis_writemem)
7387   MDRV_CPU_IO_MAP(hparadis_readport,hparadis_writeport)
7244   MDRV_CPU_PROGRAM_MAP(hparadis_map,0)
7245   MDRV_CPU_IO_MAP(hparadis_portmap,0)
73887246   MDRV_CPU_VBLANK_INT("screen", hparadis_irq)
73897247MACHINE_DRIVER_END
73907248
r4679r4680
73927250
73937251   /* basic machine hardware */
73947252   MDRV_CPU_ADD("maincpu",Z80, XTAL_20MHz / 2)   // ?
7395   MDRV_CPU_PROGRAM_MAP(hanakanz_readmem,hanakanz_writemem)
7396   MDRV_CPU_IO_MAP(jongtei_readport,jongtei_writeport)
7253   MDRV_CPU_PROGRAM_MAP(hanakanz_map,0)
7254   MDRV_CPU_IO_MAP(jongtei_portmap,0)
73977255   MDRV_CPU_VBLANK_INT("screen", hanakanz_irq)
73987256
73997257   /* video hardware */
r4679r4680
80387896       version of the game might be a bootleg with the protection
80397897       patched. (both sets need this)
80407898     */
8041   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x60d4, 0x60d4, 0, 0, SMH_NOP);
7899   memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x60d4, 0x60d4, 0, 0, (read8_space_func)SMH_NOP);
80427900}
80437901
80447902/***************************************************************************
src/mame/drivers/chinagat.c
r4679r4680
150150   /* on the rising edge of VBLK (vcount == F8), signal an NMI */
151151   if (vcount == 0xf8)
152152   {
153      cpu_set_input_line(timer->machine->cpu[0], INPUT_LINE_NMI, ASSERT_LINE);
153      cputag_set_input_line(timer->machine, "maincpu", INPUT_LINE_NMI, ASSERT_LINE);
154154   }
155155
156156   /* set 1ms signal on rising edge of vcount & 8 */
157157   if (!(vcount_old & 8) && (vcount & 8))
158158   {
159      cpu_set_input_line(timer->machine->cpu[0], M6809_FIRQ_LINE, ASSERT_LINE);
159      cputag_set_input_line(timer->machine, "maincpu", M6809_FIRQ_LINE, ASSERT_LINE);
160160   }
161161
162162   /* adjust for next scanline */
r4679r4680
172172   {
173173      case 0: /* 3e00 - SND irq */
174174         soundlatch_w( space, 0, data );
175         cpu_set_input_line(space->machine->cpu[2], sound_irq, (sound_irq == INPUT_LINE_NMI) ? PULSE_LINE : HOLD_LINE );
175         cputag_set_input_line(space->machine, "audiocpu", sound_irq, (sound_irq == INPUT_LINE_NMI) ? PULSE_LINE : HOLD_LINE );
176176         break;
177177
178178      case 1: /* 3e01 - NMI ack */
179         cpu_set_input_line(space->machine->cpu[0], INPUT_LINE_NMI, CLEAR_LINE);
179         cputag_set_input_line(space->machine, "maincpu", INPUT_LINE_NMI, CLEAR_LINE);
180180         break;
181181
182182      case 2: /* 3e02 - FIRQ ack */
183         cpu_set_input_line(space->machine->cpu[0], M6809_FIRQ_LINE, CLEAR_LINE);
183         cputag_set_input_line(space->machine, "maincpu", M6809_FIRQ_LINE, CLEAR_LINE);
184184         break;
185185
186186      case 3: /* 3e03 - IRQ ack */
187         cpu_set_input_line(space->machine->cpu[0], M6809_IRQ_LINE, CLEAR_LINE);
187         cputag_set_input_line(space->machine, "maincpu", M6809_IRQ_LINE, CLEAR_LINE);
188188         break;
189189
190190      case 4: /* 3e04 - sub CPU IRQ ack */
191         cpu_set_input_line(space->machine->cpu[1], sprite_irq, (sprite_irq == INPUT_LINE_NMI) ? PULSE_LINE : HOLD_LINE );
191         cputag_set_input_line(space->machine, "sub", sprite_irq, (sprite_irq == INPUT_LINE_NMI) ? PULSE_LINE : HOLD_LINE );
192192         break;
193193   }
194194}
r4679r4680
225225#if 0
226226   if (saiyugb1_mcu_command == 0x78)
227227   {
228      cpu_suspend(space->machine->cpu[3], SUSPEND_REASON_HALT, 1);   /* Suspend (speed up) */
228      cputag_suspend(space->machine, "mcu", SUSPEND_REASON_HALT, 1);   /* Suspend (speed up) */
229229   }
230230#endif
231231   return saiyugb1_mcu_command;
r4679r4680
237237#if 0
238238   if (data != 0x78)
239239   {
240      cpu_resume(space->machine->cpu[3], SUSPEND_REASON_HALT);   /* Wake up */
240      cputag_resume(space->machine, "mcu", SUSPEND_REASON_HALT);   /* Wake up */
241241   }
242242#endif
243243}
r4679r4680
337337   AM_RANGE(0x2800, 0x2fff) AM_RAM_WRITE(ddragon_bgvideoram_w) AM_BASE(&ddragon_bgvideoram)
338338   AM_RANGE(0x3000, 0x317f) AM_WRITE(paletteram_xxxxBBBBGGGGRRRR_split1_w) AM_BASE(&paletteram)
339339   AM_RANGE(0x3400, 0x357f) AM_WRITE(paletteram_xxxxBBBBGGGGRRRR_split2_w) AM_BASE(&paletteram_2)
340   AM_RANGE(0x3800, 0x397f) AM_WRITE(SMH_BANK3) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
340   AM_RANGE(0x3800, 0x397f) AM_WRITE(SMH_BANK(3)) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
341341   AM_RANGE(0x3e00, 0x3e04) AM_WRITE(chinagat_interrupt_w)
342342   AM_RANGE(0x3e06, 0x3e06) AM_WRITE(SMH_RAM) AM_BASE(&ddragon_scrolly_lo)
343343   AM_RANGE(0x3e07, 0x3e07) AM_WRITE(SMH_RAM) AM_BASE(&ddragon_scrollx_lo)
r4679r4680
520520
521521static void chinagat_irq_handler(const device_config *device, int irq)
522522{
523   cpu_set_input_line(device->machine->cpu[2], 0, irq ? ASSERT_LINE : CLEAR_LINE );
523   cputag_set_input_line(device->machine, "audiocpu", 0, irq ? ASSERT_LINE : CLEAR_LINE );
524524}
525525
526526static const ym2151_interface ym2151_config =
src/mame/drivers/kaneko16.c
r4679r4680
270270   if (ACCESSING_BITS_8_15)
271271   {
272272      soundlatch_w(space, 0, (data & 0xff00) >> 8 );
273      cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_NMI, PULSE_LINE);
273      cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
274274   }
275275}
276276
src/mame/drivers/goldstar.c
r4679r4680
111111
112112extern WRITE8_HANDLER( goldstar_fg_vidram_w );
113113extern WRITE8_HANDLER( goldstar_fg_atrram_w );
114extern WRITE8_HANDLER( cm_girl_scroll_w );
114115
115116WRITE8_HANDLER( goldstar_fa00_w );
116117WRITE8_HANDLER( cm_background_col_w );
r4679r4680
188189   AM_RANGE(0x10, 0x10) AM_READ_PORT("DSW6")
189190ADDRESS_MAP_END
190191
192static WRITE8_HANDLER( ncb3_port81_w )
193{
194//  if (data!=0x00)
195//      popmessage("ncb3_port81_w %02x\n",data);
196}
191197
192
198// where is colour bank for 'all blue' in attract?
193199static ADDRESS_MAP_START( ncb3_map, ADDRESS_SPACE_PROGRAM, 8 )
194200   AM_RANGE(0x0000, 0xb7ff) AM_ROM
195201   AM_RANGE(0xb800, 0xbfff) AM_RAM AM_BASE(&nvram) AM_SIZE(&nvram_size)
r4679r4680
220226//  AM_RANGE(0x06, 0x06) AM_READ(ncb3_unkread_r)    // unknown...
221227//  AM_RANGE(0x08, 0x08) AM_READ(ncb3_unkread_r)    // unknown...
222228   AM_RANGE(0x10, 0x10) AM_READ_PORT("DSW5")   /* confirmed for ncb3 */
223//  AM_RANGE(0x81, 0x81) ---> large writes.
229   AM_RANGE(0x81, 0x81) AM_WRITE(ncb3_port81_w) // ---> large writes.
224230
225231ADDRESS_MAP_END
226232
r4679r4680
265271
266272   AM_RANGE(0xd000, 0xd7ff) AM_RAM AM_BASE(&nvram) AM_SIZE(&nvram_size)
267273
274
268275   AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_WRITE(goldstar_fg_vidram_w) AM_BASE(&videoram)
269276   AM_RANGE(0xe800, 0xefff) AM_RAM AM_WRITE(goldstar_fg_atrram_w) AM_BASE(&colorram)
270277
r4679r4680
281288   AM_RANGE(0xfc80, 0xffff) AM_RAM
282289ADDRESS_MAP_END
283290
291static ADDRESS_MAP_START( nfm_map, ADDRESS_SPACE_PROGRAM, 8 )
292   AM_RANGE(0x0000, 0xd7ff) AM_ROM AM_WRITENOP
293
294   AM_RANGE(0xd800, 0xdfff) AM_RAM AM_BASE(&nvram) AM_SIZE(&nvram_size)
295
296
297   AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_WRITE(goldstar_fg_vidram_w) AM_BASE(&videoram)
298   AM_RANGE(0xe800, 0xefff) AM_RAM AM_WRITE(goldstar_fg_atrram_w) AM_BASE(&colorram)
299
300   AM_RANGE(0xf000, 0xf1ff) AM_RAM AM_WRITE( goldstar_reel1_ram_w ) AM_BASE(&goldstar_reel1_ram)
301   AM_RANGE(0xf200, 0xf3ff) AM_RAM AM_WRITE( goldstar_reel2_ram_w ) AM_BASE(&goldstar_reel2_ram)
302   AM_RANGE(0xf400, 0xf5ff) AM_RAM AM_WRITE( goldstar_reel3_ram_w ) AM_BASE(&goldstar_reel3_ram)
303   AM_RANGE(0xf600, 0xf7ff) AM_RAM
304
305   AM_RANGE(0xf800, 0xf87f) AM_RAM AM_BASE(&goldstar_reel1_scroll)
306   AM_RANGE(0xf880, 0xf9ff) AM_RAM
307   AM_RANGE(0xfa00, 0xfa7f) AM_RAM AM_BASE(&goldstar_reel2_scroll)
308   AM_RANGE(0xfa80, 0xfbff) AM_RAM
309   AM_RANGE(0xfc00, 0xfc7f) AM_RAM AM_BASE(&goldstar_reel3_scroll)
310   AM_RANGE(0xfc80, 0xffff) AM_RAM
311ADDRESS_MAP_END
312
313
284314static ADDRESS_MAP_START( cm_portmap, ADDRESS_SPACE_IO, 8 )
285315   ADDRESS_MAP_GLOBAL_MASK(0xff)
286316   AM_RANGE(0x01, 0x01) AM_DEVREAD("ay", ay8910_r)
r4679r4680
288318   AM_RANGE(0x04, 0x07) AM_DEVREADWRITE("ppi8255_0", ppi8255_r, ppi8255_w)   /* Input Ports */
289319   AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("ppi8255_1", ppi8255_r, ppi8255_w)   /* DIP switches */
290320   AM_RANGE(0x10, 0x10) AM_WRITE (cm_outport0_w)   /* output port */
291//  AM_RANGE(0x11, 0x11) AM_WRITENOP
321   AM_RANGE(0x11, 0x11) AM_WRITENOP
292322   AM_RANGE(0x12, 0x12) AM_WRITE (cm_outport1_w)   /* output port */
293323   AM_RANGE(0x13, 0x13) AM_WRITE(cm_background_col_w)
324   AM_RANGE(0x14, 0x14) AM_WRITE(cm_girl_scroll_w)
294325ADDRESS_MAP_END
295326
296327
r4679r4680
556587   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
557588
558589   PORT_START("DSW5")
559   PORT_DIPNAME( 0x01, 0x01, "Display Of Doll On Demo" )          PORT_DIPLOCATION("DSW5:1")   /* not working */
590   PORT_DIPNAME( 0x01, 0x00, "Display Of Doll On Demo" )          PORT_DIPLOCATION("DSW5:1")   /* not working */
560591   PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
561592   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
562593   PORT_DIPNAME( 0x06, 0x06, "Coin In Limit" )                    PORT_DIPLOCATION("DSW5:2,3")   /* not checked */
r4679r4680
569600   PORT_DIPSETTING(    0x10, "9-5-1" )
570601   PORT_DIPSETTING(    0x08, "6-3-1" )
571602   PORT_DIPSETTING(    0x00, "3-2-1" )
572   PORT_DIPNAME( 0x20, 0x20, "Display Of Doll At All Fr. Bonus" ) PORT_DIPLOCATION("DSW5:6")   /* not checked */
603   PORT_DIPNAME( 0x20, 0x00, "Display Of Doll At All Fr. Bonus" ) PORT_DIPLOCATION("DSW5:6")   /* not checked */
573604   PORT_DIPSETTING(    0x20, DEF_STR( Low ) )
574605   PORT_DIPSETTING(    0x00, DEF_STR( High ) )
575606   PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )                 PORT_DIPLOCATION("DSW5:7")   /* listed as unused */
r4679r4680
718749   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
719750
720751   PORT_START("DSW5")
721   PORT_DIPNAME( 0x01, 0x01, "Flash 'Dyna - C.M.V.4' string in attract" ) PORT_DIPLOCATION("DSW5:1")   /* OK */
752   PORT_DIPNAME( 0x01, 0x00, "Flash 'Dyna - C.M.V.4' string in attract" ) PORT_DIPLOCATION("DSW5:1")   /* OK */
722753   PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
723754   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
724755   PORT_DIPNAME( 0x06, 0x06, "Coin In Limit" )                    PORT_DIPLOCATION("DSW5:2,3")   /* not checked */
r4679r4680
731762   PORT_DIPSETTING(    0x10, "9-5-1" )
732763   PORT_DIPSETTING(    0x08, "6-3-1" )
733764   PORT_DIPSETTING(    0x00, "3-2-1" )
734   PORT_DIPNAME( 0x20, 0x20, "Display Of Doll At All Fr. Bonus" ) PORT_DIPLOCATION("DSW5:6")   /* not checked */
765   PORT_DIPNAME( 0x20, 0x00, "Display Of Doll At All Fr. Bonus" ) PORT_DIPLOCATION("DSW5:6")   /* not checked */
735766   PORT_DIPSETTING(    0x20, DEF_STR( Low ) )
736767   PORT_DIPSETTING(    0x00, DEF_STR( High ) )
737768   PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )                 PORT_DIPLOCATION("DSW5:7")   /* listed as unused */
r4679r4680
880911   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
881912
882913   PORT_START("DSW5")
883   PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) )                 PORT_DIPLOCATION("DSW5:1")   /* not checked */
914   PORT_DIPNAME( 0x01, 0x00, "Display Of Doll On Demo" )          PORT_DIPLOCATION("DSW5:1")   /* not working */
884915   PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
885916   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
886917   PORT_DIPNAME( 0x06, 0x06, "Coin In Limit" )                    PORT_DIPLOCATION("DSW5:2,3")   /* not checked */
r4679r4680
893924   PORT_DIPSETTING(    0x10, "9-5-1" )
894925   PORT_DIPSETTING(    0x08, "6-3-1" )
895926   PORT_DIPSETTING(    0x00, "3-2-1" )
896   PORT_DIPNAME( 0x20, 0x20, "Display Of Doll At All Fr. Bonus" ) PORT_DIPLOCATION("DSW5:6")   /* not checked */
927   PORT_DIPNAME( 0x20, 0x00, "Display Of Doll At All Fr. Bonus" ) PORT_DIPLOCATION("DSW5:6")   /* not checked */
897928   PORT_DIPSETTING(    0x20, DEF_STR( Low ) )
898929   PORT_DIPSETTING(    0x00, DEF_STR( High ) )
899930   PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )                 PORT_DIPLOCATION("DSW5:7")   /* listed as unused */
r4679r4680
10421073   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
10431074
10441075   PORT_START("DSW5")
1045   PORT_DIPNAME( 0x01, 0x01, "Display Of Doll On Demo" )          PORT_DIPLOCATION("DSW5:1")   /* not checked */
1076   PORT_DIPNAME( 0x01, 0x00, "Display Of Doll On Demo" )          PORT_DIPLOCATION("DSW5:1")   /* not checked */
10461077   PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
10471078   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
10481079   PORT_DIPNAME( 0x06, 0x06, "Coin In Limit" )                    PORT_DIPLOCATION("DSW5:2,3")   /* not checked */
r4679r4680
10551086   PORT_DIPSETTING(    0x10, "9-5-1" )
10561087   PORT_DIPSETTING(    0x08, "6-3-1" )
10571088   PORT_DIPSETTING(    0x00, "3-2-1" )
1058   PORT_DIPNAME( 0x20, 0x20, "Display Of Doll At All Fr. Bonus" ) PORT_DIPLOCATION("DSW5:6")   /* not checked */
1089   PORT_DIPNAME( 0x20, 0x00, "Display Of Doll At All Fr. Bonus" ) PORT_DIPLOCATION("DSW5:6")   /* not checked */
10591090   PORT_DIPSETTING(    0x20, DEF_STR( Low ) )
10601091   PORT_DIPSETTING(    0x00, DEF_STR( High ) )
10611092   PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )                 PORT_DIPLOCATION("DSW5:7")   /* listed as unused */
r4679r4680
12041235   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
12051236
12061237   PORT_START("DSW5")
1207   PORT_DIPNAME( 0x01, 0x01, "Display Of Doll On Demo" )          PORT_DIPLOCATION("DSW5:1")   /* not checked */
1238   PORT_DIPNAME( 0x01, 0x00, "Display Of Doll On Demo" )          PORT_DIPLOCATION("DSW5:1")   /* not checked */
12081239   PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
12091240   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
12101241   PORT_DIPNAME( 0x06, 0x06, "Coin In Limit" )                    PORT_DIPLOCATION("DSW5:2,3")   /* not checked */
r4679r4680
12171248   PORT_DIPSETTING(    0x10, "9-5-1" )
12181249   PORT_DIPSETTING(    0x08, "6-3-1" )
12191250   PORT_DIPSETTING(    0x00, "3-2-1" )
1220   PORT_DIPNAME( 0x20, 0x20, "Display Of Doll At All Fr. Bonus" ) PORT_DIPLOCATION("DSW5:6")   /* not checked */
1251   PORT_DIPNAME( 0x20, 0x00, "Display Of Doll At All Fr. Bonus" ) PORT_DIPLOCATION("DSW5:6")   /* not checked */
12211252   PORT_DIPSETTING(    0x20, DEF_STR( Low ) )
12221253   PORT_DIPSETTING(    0x00, DEF_STR( High ) )
12231254   PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )                 PORT_DIPLOCATION("DSW5:7")   /* listed as unused */
r4679r4680
39974028   32*8
39984029};
39994030
4031// cmasterc set
4032static const gfx_layout tiles8x32x4alt_layout =
4033{
4034   8,32,
4035   RGN_FRAC(1,2),
4036   4,
4037   { RGN_FRAC(1,2)+0, RGN_FRAC(1,2)+4,0,4 },
4038   { 3,2,1,0,11, 10, 9, 8 },
4039   { 0*16, 1*16,  2*16,  3*16,  4*16,  5*16,  6*16,  7*16,
4040     8*16, 9*16, 10*16, 11*16, 12*16, 13*16, 14*16, 15*16,
4041    16*16,17*16, 18*16, 19*16, 20*16, 21*16, 22*16, 23*16,
4042     24*16,25*16, 26*16, 27*16, 28*16, 29*16, 30*16, 31*16
4043   },
4044   16*32
4045};
4046
40004047static const UINT32 layout_xoffset[128] =
40014048{
40024049   STEP32(0*128,4),STEP32(1*128,4),STEP32(2*128,4),STEP32(3*128,4)
r4679r4680
40984145   GFXDECODE_ENTRY( "user1", 0, tiles128x128x4_layout, 128, 4 )
40994146GFXDECODE_END
41004147
4148static GFXDECODE_START( cmasterc )
4149   GFXDECODE_ENTRY( "gfx1", 0, tiles8x8x3_layout, 0, 16 )
4150   GFXDECODE_ENTRY( "reels", 0, tiles8x32x4alt_layout, 128+64, 4 )
4151   GFXDECODE_ENTRY( "user1", 0, tiles128x128x4_layout, 128, 4 )
4152GFXDECODE_END
4153
4154
41014155static GFXDECODE_START( cmast91 )
41024156   GFXDECODE_ENTRY( "gfx1", 0, tiles8x8x3_layout, 0, 16 )
41034157   GFXDECODE_ENTRY( "gfx2", 0, tiles8x32x4_layout, 128+64, 4 ) // or is there a register for the +64?
r4679r4680
41124166#endif
41134167
41144168
4169static const gfx_layout tiles8x32_4bpp_layout =
4170{
4171   8,32,
4172   RGN_FRAC(1,4),
4173   4,
4174   { RGN_FRAC(0,4),RGN_FRAC(1,4),RGN_FRAC(2,4),RGN_FRAC(3,4) },
4175   { 0,1,2,3,4,5,6,7},
4176   { 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,17*8,18*8,19*8,20*8,21*8,22*8,23*8,24*8,25*8,26*8,27*8,28*8,29*8,30*8,31*8 },
4177   32*8
4178};
4179
4180static const gfx_layout tiles8x8_3bpp_layout =
4181{
4182   8,8,
4183   RGN_FRAC(1,3),
4184   3,
4185   { RGN_FRAC(0,3),RGN_FRAC(1,3),RGN_FRAC(2,3) },
4186   { 0,1,2,3,4,5,6,7},
4187   { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
4188   8*8
4189};
4190
4191static GFXDECODE_START( nfm )
4192   GFXDECODE_ENTRY( "tilegfx", 0, tiles8x8_3bpp_layout, 0, 16 )
4193   GFXDECODE_ENTRY( "reelgfx", 0, tiles8x32_4bpp_layout, 0, 16 )
4194GFXDECODE_END
4195
4196
41154197/*************************************
41164198*      PPI 8255 (x3) Interfaces      *
41174199*************************************/
r4679r4680
45664648   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
45674649MACHINE_DRIVER_END
45684650
4651static MACHINE_DRIVER_START( cmasterc )
4652
4653   MDRV_IMPORT_FROM(cm)
4654   MDRV_GFXDECODE(cmasterc)
4655
4656MACHINE_DRIVER_END
4657
45694658static MACHINE_DRIVER_START( cmnobmp )
45704659
45714660   /* basic machine hardware */
r4679r4680
48744963   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 2.00)   /* analyzed for clips */
48754964MACHINE_DRIVER_END
48764965
4966static MACHINE_DRIVER_START( nfm )
48774967
4968   /* basic machine hardware */
4969   MDRV_CPU_ADD("maincpu", Z80, CPU_CLOCK)
4970   MDRV_CPU_PROGRAM_MAP(nfm_map, 0)
4971   MDRV_CPU_IO_MAP(amcoe2_portmap, 0)
4972   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
4973
4974   /* 2x 8255 */
4975   MDRV_PPI8255_ADD( "ppi8255_0", cm_ppi8255_intf[0] )
4976   MDRV_PPI8255_ADD( "ppi8255_1", cm_ppi8255_intf[1] )
4977
4978   /* video hardware */
4979   MDRV_SCREEN_ADD("screen", RASTER)
4980   MDRV_SCREEN_REFRESH_RATE(60)
4981//  MDRV_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
4982   MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
4983   MDRV_SCREEN_SIZE(64*8, 32*8)
4984   MDRV_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 2*8, 30*8-1)
4985
4986   MDRV_GFXDECODE(nfm)
4987   MDRV_PALETTE_LENGTH(256)
4988   MDRV_PALETTE_INIT(cm)
4989   MDRV_NVRAM_HANDLER(goldstar)
4990
4991   MDRV_VIDEO_START(cherrym)
4992   MDRV_VIDEO_UPDATE(goldstar)
4993
4994   /* sound hardware */
4995   MDRV_SPEAKER_STANDARD_MONO("mono")
4996   MDRV_SOUND_ADD("ay", AY8910, AY_CLOCK)
4997   MDRV_SOUND_CONFIG(cm_ay8910_config)
4998   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 2.00)   /* analyzed for clips */
4999MACHINE_DRIVER_END
5000
5001
48785002/***************************************************************************
48795003
48805004  Game driver(s)
r4679r4680
54205544   ROM_LOAD( "msii841.u4",  0x10000,  0x8000, CRC(e39fff9c) SHA1(22fdc517fa478441622c6245cecb5728c5595757) )
54215545
54225546   /* these gfx are in a different format to usual */
5423   ROM_REGION( 0x8000, "gfx2", ROMREGION_DISPOSE )
5547   ROM_REGION( 0x8000, "reels", ROMREGION_DISPOSE )
54245548   ROM_LOAD( "msii841.u1",  0x0000,  0x4000, CRC(cf322ed2) SHA1(84df96229b7bdba0ab498e3bf9c77d7a7661f7b3) )
54255549   ROM_LOAD( "msii841.u2",  0x4000,  0x4000, CRC(58c05653) SHA1(59454c07f4fe5b684d078cf97f2b1ee05b02f4ed) )
54265550
r4679r4680
66776801
66786802
66796803
6804
66806805/* descrambled by looking at CALLs
66816806
668268070000 -> 0000
r4679r4680
69267051
69277052
69287053
7054ROM_START( nfm )
7055   ROM_REGION( 0x10000, "maincpu", 0 )
7056   ROM_LOAD( "fuitprg", 0x00000, 0x01000, CRC(6f6c98cf) SHA1(4641cb2b90d4d21edc65e504584f3ec92fe741c4) )
7057   ROM_CONTINUE(0x5000,0x1000)
7058   ROM_CONTINUE(0x7000,0x1000)
7059   ROM_CONTINUE(0xa000,0x1000)
7060   ROM_CONTINUE(0x2000,0x1000) //?
7061   ROM_CONTINUE(0xb000,0x1000) //?
7062   ROM_CONTINUE(0x9000,0x1000)
7063   ROM_CONTINUE(0xc000,0x1000)
7064   ROM_CONTINUE(0x1000,0x1000)
7065   ROM_CONTINUE(0x3000,0x1000)
7066   ROM_CONTINUE(0x6000,0x1000)
7067   ROM_CONTINUE(0x4000,0x1000)
7068   ROM_CONTINUE(0x8000,0x1000)
7069   ROM_CONTINUE(0xd000,0x1000) // ?
7070   ROM_CONTINUE(0xe000,0x1000)
7071   ROM_CONTINUE(0xf000,0x1000)
69297072
7073   ROM_REGION( 0x10000, "reelgfx", 0 )
7074   ROM_LOAD( "fruit1", 0x00000, 0x04000, CRC(dd096dae) SHA1(ab34942cfa4fe7d46892819372c42f566c249f8c) )
7075   ROM_CONTINUE(0x0000, 0x4000)
7076   ROM_LOAD( "fruit2", 0x04000, 0x04000, CRC(6a37a16f) SHA1(7adb08d3e4de9768a8e41760a044bf52509da211) )
7077   ROM_CONTINUE(0x0000, 0x4000)
7078   ROM_LOAD( "fruit3", 0x08000, 0x04000, CRC(f3361ba7) SHA1(1a7b9c4f685656447bd6ce5f361e6e4af63012e3) )
7079   ROM_CONTINUE(0x8000, 0x4000)
7080   ROM_LOAD( "fruit4", 0x0c000, 0x04000, CRC(99ac5ddf) SHA1(65b6abb98f3156f4c0c55478d09c612eed5ae555) )
69307081
7082   // do these graphics really belong with this set? a lot of the tiles seem wrong for it
7083   ROM_REGION( 0x18000, "tilegfx", 0 )
7084   ROM_LOAD( "fruit5", 0x00000, 0x08000, CRC(a7a8f08d) SHA1(76c93194133ba85c0dde1f364260e16d5b647134) )
7085   ROM_LOAD( "fruit6", 0x08000, 0x08000, CRC(39d5b89a) SHA1(4cf52fa557ffc792d3e13f7dbb5d45fd617bac85) )
7086   ROM_LOAD( "fruit7", 0x10000, 0x08000, CRC(3ade6709) SHA1(9cdf2814e50c5433c582fc40265c5df2a16e99e7) )
7087
7088   ROM_REGION( 0x18000, "proms", 0 ) // colours?
7089   ROM_LOAD( "fruiprg2", 0x00000, 0x08000, CRC(13925ff5) SHA1(236415a244ef6092834f8080cf0d2e04bbfa2650) )
7090ROM_END
7091
7092
69317093static DRIVER_INIT(goldstar)
69327094{
69337095   int A;
r4679r4680
69637125      0xa000, 0xa800, 0xb000, 0xb800,
69647126   };
69657127
6966   buffer = malloc(0x10000);
7128   buffer = alloc_array_or_die(UINT8, 0x10000);
69677129   memcpy(buffer,ROM,0x10000);
69687130
69697131   // swap some 0x800 blocks around..
r4679r4680
70287190      ROM[i] = chry10_decrypt(ROM[i]);
70297191   }
70307192
7031   buffer = malloc_or_die(size);
7193   buffer = alloc_array_or_die(UINT8, size);
70327194   memcpy(buffer, ROM, size);
70337195
70347196   free(buffer);
r4679r4680
70587220      ROM[i] = decrypt(ROM[i], i);
70597221   }
70607222
7061   buffer = malloc_or_die(size);
7223   buffer = alloc_array_or_die(UINT8, size);
70627224   memcpy(buffer, ROM, size);
70637225
70647226   free(buffer);
r4679r4680
71767338        ROM[i] = x;
71777339   }
71787340
7179   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x1d, 0x1d, 0, 0, fixedvala8_r);
7180   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x2a, 0x2a, 0, 0, fixedvalb4_r);
7341   memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_IO), 0x1d, 0x1d, 0, 0, fixedvala8_r);
7342   memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_IO), 0x2a, 0x2a, 0, 0, fixedvalb4_r);
71817343   /* Oki 6295 at 0x20 */
71827344}
71837345
r4679r4680
72067368
72077369
72087370
7209   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x16, 0x16, 0, 0, fixedval38_r);
7371   memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_IO), 0x16, 0x16, 0, 0, fixedval38_r);
72107372   /* Oki 6295 at 0x20 */
72117373}
72127374
r4679r4680
72337395      ROM[i] = x;
72347396   }
72357397
7236   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x1e, 0x1e, 0, 0, fixedvalea_r);
7398   memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_IO), 0x1e, 0x1e, 0, 0, fixedvalea_r);
72377399   /* Oki 6295 at 0x20 */
72387400}
72397401
r4679r4680
72607422      ROM[i] = x;
72617423   }
72627424
7263   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x31, 0x31, 0, 0, fixedval68_r);
7425   memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_IO), 0x31, 0x31, 0, 0, fixedval68_r);
72647426
72657427}
72667428
r4679r4680
72967458      ROM[i] = x;
72977459   }
72987460   // nfb96b needs both of these
7299   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x23, 0x23, 0, 0, fixedval80_r);
7300   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x5a, 0x5a, 0, 0, fixedvalaa_r);
7461   memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_IO), 0x23, 0x23, 0, 0, fixedval80_r);
7462   memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_IO), 0x5a, 0x5a, 0, 0, fixedvalaa_r);
73017463
73027464   // csel96b
7303   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x6e, 0x6e, 0, 0, fixedval96_r);
7465   memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_IO), 0x6e, 0x6e, 0, 0, fixedval96_r);
73047466
73057467}
73067468
r4679r4680
73277489      ROM[i] = x;
73287490   }
73297491
7330   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x2e, 0x2e, 0, 0, fixedvalbe_r);
7492   memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_IO), 0x2e, 0x2e, 0, 0, fixedvalbe_r);
73317493
73327494}
73337495
r4679r4680
73587520      ROM[i] = x;
73597521   }
73607522
7361   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x5e, 0x5e, 0, 0, fixedval84_r);
7362   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x36, 0x36, 0, 0, fixedval90_r);
7523   memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_IO), 0x5e, 0x5e, 0, 0, fixedval84_r);
7524   memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_IO), 0x36, 0x36, 0, 0, fixedval90_r);
73637525}
73647526
73657527static READ8_HANDLER( fixedvalb2_r )
r4679r4680
73857547      ROM[i] = x;
73867548   }
73877549
7388   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x34, 0x34, 0, 0, fixedvalb2_r);
7550   memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_IO), 0x34, 0x34, 0, 0, fixedvalb2_r);
73897551}
73907552
73917553static READ8_HANDLER( fixedval48_r )
r4679r4680
74117573      ROM[i] = x;
74127574   }
74137575
7414   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x17, 0x17, 0, 0, fixedval48_r);
7576   memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_IO), 0x17, 0x17, 0, 0, fixedval48_r);
74157577}
74167578
74177579static READ8_HANDLER( fixedval09_r )
r4679r4680
74427604
74437605      ROM[i] = x;
74447606   }
7445   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x32, 0x32, 0, 0, fixedval74_r);
7446   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x12, 0x12, 0, 0, fixedval09_r);
7607   memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_IO), 0x32, 0x32, 0, 0, fixedval74_r);
7608   memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_IO), 0x12, 0x12, 0, 0, fixedval09_r);
74477609   /* oki6295 at 0x20 */
74487610}
74497611
r4679r4680
74707632      ROM[i] = x;
74717633   }
74727634
7473   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x21, 0x21, 0, 0, fixedval58_r);
7635   memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_IO), 0x21, 0x21, 0, 0, fixedval58_r);
74747636}
74757637
74767638static READ8_HANDLER( fixedvale4_r )
r4679r4680
75017663      ROM[i] = x;
75027664   }
75037665
7504   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x16, 0x16, 0, 0, fixedvalc7_r);
7505   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x1a, 0x1a, 0, 0, fixedvale4_r);
7666   memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_IO), 0x16, 0x16, 0, 0, fixedvalc7_r);
7667   memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_IO), 0x1a, 0x1a, 0, 0, fixedvale4_r);
75067668}
75077669
75087670
r4679r4680
75317693GAME( 1992, cmv4a,     cmv4,     cm,       cmv4,     cmv4,      ROT0, "Dyna",              "Cherry Master (ver.4, set 2)",                GAME_NOT_WORKING )   /* stealth game? */
75327694GAME( 1991, cmaster,   0,        cm,       cmaster,  0,         ROT0, "Dyna",              "Cherry Master I (ver.1.01, set 1)",           0 )
75337695GAME( 1991, cmasterb,  cmaster,  cm,       cmasterb, cmv4,      ROT0, "Dyna",              "Cherry Master I (ver.1.01, set 2)",           0 )
7534GAME( 1991, cmasterc,  cmaster,  cm,       cmasterc, cmv4,      ROT0, "Dyna",              "Cherry Master I (ver.1.01, set 3)",           GAME_IMPERFECT_GRAPHICS )
7696GAME( 1991, cmasterc,  cmaster,  cmasterc, cmasterc, cmv4,      ROT0, "Dyna",              "Cherry Master I (ver.1.01, set 3)",           0 )
75357697GAME( 1991, cmast91,   0,        cmast91,  cmast91,  cmast91,   ROT0, "Dyna",              "Cherry Master '91 (ver.1.30)",                0 )
75367698
75377699
r4679r4680
75817743GAME( 2002, carb2002,  nfb96,    amcoe2,   nfb96bl,   0,         ROT0, "bootleg", "Carriage Bonus 2002 (bootleg)",                         GAME_WRONG_COLORS )
75827744GAME( 2003, carb2003,  nfb96,    amcoe2,   nfb96bl,   0,         ROT0, "bootleg", "Carriage Bonus 2003 (bootleg)",                         GAME_WRONG_COLORS )
75837745
7746GAME( 2003, nfm, 0, nfm, nfb96bl, 0, ROT0, "Ming-Yang Electronic",         "New Fruit Machine (Ming-Yang Electronic)", GAME_NOT_WORKING )
75847747
75857748/* possible stealth sets:
75867749
src/mame/drivers/dbz.c
r4679r4680
120120
121121static WRITE16_HANDLER( dbz_sound_cause_nmi )
122122{
123   cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_NMI, PULSE_LINE);
123   cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
124124}
125125
126126static void dbz_sound_irq(const device_config *device, int irq)
127127{
128128   if (irq)
129      cpu_set_input_line(device->machine->cpu[1], 0, ASSERT_LINE);
129      cputag_set_input_line(device->machine, "audiocpu", 0, ASSERT_LINE);
130130   else
131      cpu_set_input_line(device->machine->cpu[1], 0, CLEAR_LINE);
131      cputag_set_input_line(device->machine, "audiocpu", 0, CLEAR_LINE);
132132}
133133
134static ADDRESS_MAP_START( dbz_readmem, ADDRESS_SPACE_PROGRAM, 16 )
135   AM_RANGE(0x000000, 0x0fffff) AM_READ(SMH_ROM)
136   AM_RANGE(0x480000, 0x48ffff) AM_READ(SMH_RAM)
137   AM_RANGE(0x490000, 0x491fff) AM_READ(K056832_ram_word_r)   // '157 RAM is mirrored twice
138   AM_RANGE(0x492000, 0x493fff) AM_READ(K056832_ram_word_r)
134static ADDRESS_MAP_START( dbz_map, ADDRESS_SPACE_PROGRAM, 16 )
135   AM_RANGE(0x000000, 0x0fffff) AM_ROM
136   AM_RANGE(0x480000, 0x48ffff) AM_RAM
137   AM_RANGE(0x490000, 0x491fff) AM_READWRITE(K056832_ram_word_r, K056832_ram_word_w)   // '157 RAM is mirrored twice
138   AM_RANGE(0x492000, 0x493fff) AM_READWRITE(K056832_ram_word_r, K056832_ram_word_w)
139139   AM_RANGE(0x498000, 0x49ffff) AM_READ(K056832_rom_word_8000_r)   // code near a60 in dbz2, subroutine at 730 in dbz
140   AM_RANGE(0x4a0000, 0x4a0fff) AM_READ(K053247_word_r)
141   AM_RANGE(0x4a1000, 0x4a3fff) AM_READ(SMH_RAM)
142   AM_RANGE(0x4a8000, 0x4abfff) AM_READ(SMH_RAM)         // palette
140   AM_RANGE(0x4a0000, 0x4a0fff) AM_READWRITE(K053247_word_r, K053247_word_w)
141   AM_RANGE(0x4a1000, 0x4a3fff) AM_RAM
142   AM_RANGE(0x4a8000, 0x4abfff) AM_RAM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE(&paletteram16) // palette
143143   AM_RANGE(0x4c0000, 0x4c0001) AM_READ(K053246_word_r)
144   AM_RANGE(0x4e0000, 0x4e0001) AM_READ_PORT("P1_P2")
145   AM_RANGE(0x4e0002, 0x4e0003) AM_READ_PORT("SYSTEM_DSW1")
146   AM_RANGE(0x4e4000, 0x4e4001) AM_READ_PORT("DSW2")
147   AM_RANGE(0x500000, 0x501fff) AM_READ(SMH_RAM)
148   AM_RANGE(0x508000, 0x509fff) AM_READ(SMH_RAM)
149   AM_RANGE(0x510000, 0x513fff) AM_READ(SMH_RAM)
150   AM_RANGE(0x518000, 0x51bfff) AM_READ(SMH_RAM)
151   AM_RANGE(0x600000, 0x6fffff) AM_READNOP          // PSAC 1 ROM readback window
152   AM_RANGE(0x700000, 0x7fffff) AM_READNOP          // PSAC 2 ROM readback window
153ADDRESS_MAP_END
154
155static ADDRESS_MAP_START( dbz_writemem, ADDRESS_SPACE_PROGRAM, 16 )
156   AM_RANGE(0x480000, 0x48ffff) AM_WRITE(SMH_RAM)
157   AM_RANGE(0x490000, 0x491fff) AM_WRITE(K056832_ram_word_w)
158   AM_RANGE(0x492000, 0x493fff) AM_WRITE(K056832_ram_word_w)
159   AM_RANGE(0x4a0000, 0x4a0fff) AM_WRITE(K053247_word_w)
160   AM_RANGE(0x4a1000, 0x4a3fff) AM_WRITE(SMH_RAM)
161   AM_RANGE(0x4a8000, 0x4abfff) AM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE(&paletteram16)
162144   AM_RANGE(0x4c0000, 0x4c0007) AM_WRITE(K053246_word_w)
163145   AM_RANGE(0x4c4000, 0x4c4007) AM_WRITE(K053246_word_w)
164146   AM_RANGE(0x4c8000, 0x4c8007) AM_WRITE(K056832_b_word_w)
165147   AM_RANGE(0x4cc000, 0x4cc03f) AM_WRITE(K056832_word_w)
166   AM_RANGE(0x4ec000, 0x4ec001) AM_WRITE(dbzcontrol_w)
167148   AM_RANGE(0x4d0000, 0x4d001f) AM_WRITE(SMH_RAM) AM_BASE(&K053936_0_ctrl)
168149   AM_RANGE(0x4d4000, 0x4d401f) AM_WRITE(SMH_RAM) AM_BASE(&K053936_1_ctrl)
150   AM_RANGE(0x4e0000, 0x4e0001) AM_READ_PORT("P1_P2")
151   AM_RANGE(0x4e0002, 0x4e0003) AM_READ_PORT("SYSTEM_DSW1")
152   AM_RANGE(0x4e4000, 0x4e4001) AM_READ_PORT("DSW2")
169153   AM_RANGE(0x4e8000, 0x4e8001) AM_WRITENOP
154   AM_RANGE(0x4ec000, 0x4ec001) AM_WRITE(dbzcontrol_w)
170155   AM_RANGE(0x4f0000, 0x4f0001) AM_WRITE(dbz_sound_command_w)
171156   AM_RANGE(0x4f4000, 0x4f4001) AM_WRITE(dbz_sound_cause_nmi)
172157   AM_RANGE(0x4f8000, 0x4f801f) AM_WRITENOP      // 251 #1
173158   AM_RANGE(0x4fc000, 0x4fc01f) AM_WRITE(K053251_lsb_w)   // 251 #2
174   AM_RANGE(0x500000, 0x501fff) AM_WRITE(dbz_bg2_videoram_w) AM_BASE(&dbz_bg2_videoram)
175   AM_RANGE(0x508000, 0x509fff) AM_WRITE(dbz_bg1_videoram_w) AM_BASE(&dbz_bg1_videoram)
176   AM_RANGE(0x510000, 0x513fff) AM_WRITE(SMH_RAM) AM_BASE(&K053936_0_linectrl) // ?? guess, it might not be
177   AM_RANGE(0x518000, 0x51bfff) AM_WRITE(SMH_RAM) AM_BASE(&K053936_1_linectrl) // ?? guess, it might not be
159
160   AM_RANGE(0x500000, 0x501fff) AM_RAM_WRITE(dbz_bg2_videoram_w) AM_BASE(&dbz_bg2_videoram)
161   AM_RANGE(0x508000, 0x509fff) AM_RAM_WRITE(dbz_bg1_videoram_w) AM_BASE(&dbz_bg1_videoram)
162   AM_RANGE(0x510000, 0x513fff) AM_RAM AM_BASE(&K053936_0_linectrl) // ?? guess, it might not be
163   AM_RANGE(0x518000, 0x51bfff) AM_RAM AM_BASE(&K053936_1_linectrl) // ?? guess, it might not be
164   AM_RANGE(0x600000, 0x6fffff) AM_READNOP          // PSAC 1 ROM readback window
165   AM_RANGE(0x700000, 0x7fffff) AM_READNOP          // PSAC 2 ROM readback window
178166ADDRESS_MAP_END
179167
180168/* dbz sound */
181169/* IRQ: from YM2151.  NMI: from 68000.  Port 0: write to ack NMI */
182170
183static ADDRESS_MAP_START( dbz_sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
184   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
185   AM_RANGE(0x8000, 0xbfff) AM_READ(SMH_RAM)
186   AM_RANGE(0xc000, 0xc001) AM_DEVREAD("ym", ym2151_r)
187   AM_RANGE(0xd000, 0xd002) AM_DEVREAD("oki", okim6295_r)
171static ADDRESS_MAP_START( dbz_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
172   AM_RANGE(0x0000, 0x7fff) AM_ROM
173   AM_RANGE(0x8000, 0xbfff) AM_RAM
174   AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
175   AM_RANGE(0xd000, 0xd002) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w)
188176   AM_RANGE(0xe000, 0xe001) AM_READ(soundlatch_r)
189177ADDRESS_MAP_END
190178
191static ADDRESS_MAP_START( dbz_sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
192   AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM)
193   AM_RANGE(0x8000, 0xbfff) AM_WRITE(SMH_RAM)
194   AM_RANGE(0xc000, 0xc001) AM_DEVWRITE("ym", ym2151_w)
195   AM_RANGE(0xd000, 0xd001) AM_DEVWRITE("oki", okim6295_w)
196ADDRESS_MAP_END
197
198179static ADDRESS_MAP_START( dbz_sound_io_map, ADDRESS_SPACE_IO, 8 )
199180   ADDRESS_MAP_GLOBAL_MASK(0xff)
200181   AM_RANGE(0x00, 0x00) AM_WRITENOP
r4679r4680
341322
342323   /* basic machine hardware */
343324   MDRV_CPU_ADD("maincpu", M68000, 16000000)
344   MDRV_CPU_PROGRAM_MAP(dbz_readmem,dbz_writemem)
325   MDRV_CPU_PROGRAM_MAP(dbz_map,0)
345326   MDRV_CPU_VBLANK_INT_HACK(dbz_interrupt,2)
346327
347328   MDRV_CPU_ADD("audiocpu", Z80, 4000000)
348   MDRV_CPU_PROGRAM_MAP(dbz_sound_readmem, dbz_sound_writemem)
329   MDRV_CPU_PROGRAM_MAP(dbz_sound_map, 0)
349330   MDRV_CPU_IO_MAP(dbz_sound_io_map, 0)
350331
351332   MDRV_GFXDECODE(dbz)
src/mame/drivers/cybertnk.c
r4679r4680
304304      case 0:
305305         // sound data
306306         if (ACCESSING_BITS_0_7)
307            cpu_set_input_line(space->machine->cpu[2], 0, HOLD_LINE);
307            cputag_set_input_line(space->machine, "audiocpu", 0, HOLD_LINE);
308308         else
309309            LOG_UNKNOWN_WRITE
310310         break;
src/mame/drivers/wc90.c
r4679r4680
7676
7777
7878   bankaddress = 0x10000 + ( ( data & 0xf8 ) << 8 );
79   memory_set_bankptr(space->machine, 1,&RAM[bankaddress] );
79   memory_set_bankptr(space->machine, 1, &RAM[bankaddress] );
8080}
8181
8282static WRITE8_HANDLER( wc90_bankswitch1_w )
r4679r4680
8686
8787
8888   bankaddress = 0x10000 + ( ( data & 0xf8 ) << 8 );
89   memory_set_bankptr(space->machine, 2,&RAM[bankaddress] );
89   memory_set_bankptr(space->machine, 2, &RAM[bankaddress] );
9090}
9191
9292static WRITE8_HANDLER( wc90_sound_command_w )
9393{
94   soundlatch_w(space,offset,data);
95   cpu_set_input_line(space->machine->cpu[2],INPUT_LINE_NMI,PULSE_LINE);
94   soundlatch_w(space, offset, data);
95   cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
9696}
9797
9898
r4679r4680
105105   AM_RANGE(0xc000, 0xcfff) AM_RAM_WRITE(wc90_bgvideoram_w) AM_BASE(&wc90_bgvideoram)
106106   AM_RANGE(0xd000, 0xdfff) AM_RAM
107107   AM_RANGE(0xe000, 0xefff) AM_RAM_WRITE(wc90_txvideoram_w) AM_BASE(&wc90_txvideoram)   /* tx video ram */
108   AM_RANGE(0xf000, 0xf7ff) AM_READWRITE(SMH_BANK1, SMH_ROM)
108   AM_RANGE(0xf000, 0xf7ff) AM_READWRITE(SMH_BANK(1), SMH_ROM)
109109   AM_RANGE(0xf800, 0xfbff) AM_READWRITE(wc90_shared_r, wc90_shared_w) AM_BASE(&wc90_shared)
110110   AM_RANGE(0xfc00, 0xfc00) AM_READ_PORT("P1")
111111   AM_RANGE(0xfc02, 0xfc02) AM_READ_PORT("P2")
r4679r4680
135135   AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
136136   AM_RANGE(0xd800, 0xdfff) AM_RAM
137137   AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(paletteram_xxxxBBBBRRRRGGGG_be_w) AM_BASE(&paletteram)
138   AM_RANGE(0xf000, 0xf7ff) AM_READWRITE(SMH_BANK2, SMH_ROM)
138   AM_RANGE(0xf000, 0xf7ff) AM_READWRITE(SMH_BANK(2), SMH_ROM)
139139   AM_RANGE(0xf800, 0xfbff) AM_READWRITE(wc90_shared_r, wc90_shared_w)
140140   AM_RANGE(0xfc00, 0xfc00) AM_WRITE(wc90_bankswitch1_w)
141141   AM_RANGE(0xfc01, 0xfc01) AM_WRITE(watchdog_reset_w)
r4679r4680
282282/* handler called by the 2608 emulator when the internal timers cause an IRQ */
283283static void irqhandler(const device_config *device, int irq)
284284{
285   cpu_set_input_line(device->machine->cpu[2],0,irq ? ASSERT_LINE : CLEAR_LINE);
285   cputag_set_input_line(device->machine, "audiocpu", 0, irq ? ASSERT_LINE : CLEAR_LINE);
286286}
287287
288288static const ym2608_interface ym2608_config =
src/mame/drivers/gauntlet.c
r4679r4680
149149
150150static void update_interrupts(running_machine *machine)
151151{
152   cpu_set_input_line(machine->cpu[0], 4, atarigen_video_int_state ? ASSERT_LINE : CLEAR_LINE);
153   cpu_set_input_line(machine->cpu[0], 6, atarigen_sound_int_state ? ASSERT_LINE : CLEAR_LINE);
152   cputag_set_input_line(machine, "maincpu", 4, atarigen_video_int_state ? ASSERT_LINE : CLEAR_LINE);
153   cputag_set_input_line(machine, "maincpu", 6, atarigen_sound_int_state ? ASSERT_LINE : CLEAR_LINE);
154154}
155155
156156
157157static void scanline_update(const device_config *screen, int scanline)
158158{
159   const address_space *space = cpu_get_address_space(screen->machine->cpu[1], ADDRESS_SPACE_PROGRAM);
159   const address_space *space = cputag_get_address_space(screen->machine, "audiocpu", ADDRESS_SPACE_PROGRAM);
160160
161161   /* sound IRQ is on 32V */
162162   if (scanline & 32)
163      atarigen_6502_irq_gen(screen->machine->cpu[1]);
163      atarigen_6502_irq_gen(cputag_get_cpu(screen->machine, "audiocpu"));
164164   else
165165      atarigen_6502_irq_ack_r(space, 0);
166166}
r4679r4680
175175   atarigen_slapstic_reset();
176176   atarigen_interrupt_reset(update_interrupts);
177177   atarigen_scanline_timer_reset(machine->primary_screen, scanline_update, 32);
178   atarigen_sound_io_reset(machine->cpu[1]);
178   atarigen_sound_io_reset(cputag_get_cpu(machine, "audiocpu"));
179179}
180180
181181
r4679r4680
211211
212212      if ((oldword ^ sound_reset_val) & 1)
213213      {
214         cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_RESET, (sound_reset_val & 1) ? CLEAR_LINE : ASSERT_LINE);
214         cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_RESET, (sound_reset_val & 1) ? CLEAR_LINE : ASSERT_LINE);
215215         atarigen_sound_reset(space->machine);
216216      }
217217   }
r4679r4680
16301630{
16311631   UINT8 *rom = memory_region(machine, "maincpu");
16321632   atarigen_eeprom_default = NULL;
1633   atarigen_slapstic_init(machine->cpu[0], 0x038000, 0, slapstic);
1633   atarigen_slapstic_init(cputag_get_cpu(machine, "maincpu"), 0x038000, 0, slapstic);
16341634
16351635   /* swap the top and bottom halves of the main CPU ROM images */
16361636   atarigen_swap_mem(rom + 0x000000, rom + 0x008000, 0x8000);
r4679r4680
16651665static DRIVER_INIT( vindctr2 )
16661666{
16671667   UINT8 *gfx2_base = memory_region(machine, "gfx2");
1668   UINT8 *data = malloc_or_die(0x8000);
1668   UINT8 *data = alloc_array_or_die(UINT8, 0x8000);
16691669   int i;
16701670
16711671   gauntlet_common_init(machine, 118, 1);
src/mame/drivers/ms32.c
r4679r4680
223223
224224static WRITE32_HANDLER( ms32_sound_w )
225225{
226   soundlatch_w(space,0, data & 0xff);
227   cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_NMI, ASSERT_LINE);
226   soundlatch_w(space, 0, data & 0xff);
227   cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, ASSERT_LINE);
228228
229229   // give the Z80 time to respond
230230   cpu_spinuntil_time(space->cpu, ATTOTIME_IN_USEC(40));
r4679r4680
237237
238238static WRITE32_HANDLER( reset_sub_w )
239239{
240   if(data) cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_RESET, PULSE_LINE); // 0 too ?
240   if(data) cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_RESET, PULSE_LINE); // 0 too ?
241241}
242242
243243
r4679r4680
268268support for them bad tiles appear in the bg.
269269*/
270270
271
272static ADDRESS_MAP_START( ms32_readmem, ADDRESS_SPACE_PROGRAM, 32 )
273   AM_RANGE(0x00000000, 0x001fffff) AM_READ(SMH_ROM)
274   AM_RANGE(0xfc000000, 0xfc007fff) AM_READ(SMH_RAM)
275   AM_RANGE(0xfc800000, 0xfc800003) AM_READNOP   /* sound? */
276   AM_RANGE(0xfcc00004, 0xfcc00007) AM_READ_PORT("INPUTS")
277   AM_RANGE(0xfcc00010, 0xfcc00013) AM_READ_PORT("DSW")
278/**/AM_RANGE(0xfce00600, 0xfce0065f) AM_READ(SMH_RAM)   /* roz control registers */
279/**/AM_RANGE(0xfce00a00, 0xfce00a17) AM_READ(SMH_RAM)   /* tx scroll registers */
280/**/AM_RANGE(0xfce00a20, 0xfce00a37) AM_READ(SMH_RAM)   /* bg scroll registers */
281
282   AM_RANGE(0xfd000000, 0xfd000003) AM_READ(ms32_sound_r)
283   AM_RANGE(0xfd0e0000, 0xfd0e0003) AM_READ(ms32_read_inputs3) /* analog controls in f1superb? */
284
285///**/AM_RANGE(0xfd104000, 0xfd105fff) AM_READ(SMH_RAM) /* f1superb */
286///**/AM_RANGE(0xfd144000, 0xfd145fff) AM_READ(SMH_RAM) /* f1superb */
287
288   AM_RANGE(0xfd180000, 0xfd19ffff) AM_READ(ms32_priram_r)   /* priority ram */
289   AM_RANGE(0xfd1a0000, 0xfd1bffff) AM_READ(ms32_priram_r)   /* mirror only used by memory test in service mode */
290
291   AM_RANGE(0xfd400000, 0xfd43ffff) AM_READ(SMH_RAM) /* Palette */
292///**/AM_RANGE(0xfd440000, 0xfd47ffff) AM_READ(SMH_RAM) /* f1superb color */
293
294///**/AM_RANGE(0xfdc00000, 0xfdc006ff) AM_READ(SMH_RAM) /* f1superb */
295///**/AM_RANGE(0xfde00000, 0xfde01fff) AM_READ(SMH_RAM) /* f1superb lineram */
296   AM_RANGE(0xfe000000, 0xfe01ffff) AM_READ(ms32_rozram_r)   /* roz layer */
297   AM_RANGE(0xfe020000, 0xfe03ffff) AM_READ(ms32_rozram_r)   /* mirror only used by memory test in service mode */
298   AM_RANGE(0xfe200000, 0xfe201fff) AM_READ(ms32_lineram_r) /* line ram for roz layer */
299///**/AM_RANGE(0xfe202000, 0xfe2fffff) AM_READ(SMH_RAM) /* f1superb vram */
300
301   AM_RANGE(0xfe800000, 0xfe83ffff) AM_READ(ms32_spram_r)   /* sprites */
302   AM_RANGE(0xfe840000, 0xfe87ffff) AM_READ(ms32_spram_r)   /* mirror only used by memory test in service mode */
303   AM_RANGE(0xfec00000, 0xfec07fff) AM_READ(ms32_txram_r)   /* tx layer */
304   AM_RANGE(0xfec08000, 0xfec0ffff) AM_READ(ms32_bgram_r)   /* bg layer */
305   AM_RANGE(0xfec10000, 0xfec17fff) AM_READ(ms32_txram_r)   /* mirror only used by memory test in service mode */
306   AM_RANGE(0xfec18000, 0xfec1ffff) AM_READ(ms32_bgram_r)
307   AM_RANGE(0xfee00000, 0xfee1ffff) AM_READ(SMH_RAM)
308   AM_RANGE(0xffe00000, 0xffffffff) AM_READ(SMH_BANK1)
309ADDRESS_MAP_END
310
311271static WRITE32_HANDLER( pip_w )
312272{
313273   if (data)
314274      popmessage("fce00a7c = %02x",data);
315275}
316276
317static ADDRESS_MAP_START( ms32_writemem, ADDRESS_SPACE_PROGRAM, 32 )
318   AM_RANGE(0x00000000, 0x001fffff) AM_WRITE(SMH_ROM)
319   AM_RANGE(0xfc000000, 0xfc007fff) AM_WRITE(SMH_RAM) AM_BASE(&ms32_fc000000)   // NVRAM?
277static ADDRESS_MAP_START( ms32_map, ADDRESS_SPACE_PROGRAM, 32 )
278   AM_RANGE(0x00000000, 0x001fffff) AM_ROM
279   AM_RANGE(0xfc000000, 0xfc007fff) AM_RAM AM_BASE(&ms32_fc000000)   // NVRAM?
280   AM_RANGE(0xfc800000, 0xfc800003) AM_READNOP   /* sound? */
320281   AM_RANGE(0xfc800000, 0xfc800003) AM_WRITE(ms32_sound_w) /* sound? */
321   AM_RANGE(0xfce00000, 0xfce00003) AM_WRITE(ms32_gfxctrl_w)   /* flip screen + other unknown bits */
282
283   AM_RANGE(0xfcc00004, 0xfcc00007) AM_READ_PORT("INPUTS")
284   AM_RANGE(0xfcc00010, 0xfcc00013) AM_READ_PORT("DSW")
285
322286   AM_RANGE(0xfce00034, 0xfce00037) AM_WRITENOP // irq ack?
323287   AM_RANGE(0xfce00038, 0xfce0003b) AM_WRITE(reset_sub_w)
324288   AM_RANGE(0xfce00050, 0xfce0005f) AM_WRITENOP   // watchdog? I haven't investigated
325//  AM_RANGE(0xfce00000, 0xfce0007f) AM_WRITE(SMH_RAM) AM_BASE(&ms32_fce00000) /* registers not ram? */
289//  AM_RANGE(0xfce00000, 0xfce0007f) AM_WRITEONLY AM_BASE(&ms32_fce00000) /* registers not ram? */
290   AM_RANGE(0xfce00000, 0xfce00003) AM_WRITE(ms32_gfxctrl_w)   /* flip screen + other unknown bits */
326291   AM_RANGE(0xfce00280, 0xfce0028f) AM_WRITE(ms32_brightness_w)   // global brightness control
327   AM_RANGE(0xfce00600, 0xfce0065f) AM_WRITE(SMH_RAM) AM_BASE(&ms32_roz_ctrl)   /* roz control registers */
328//  { 0xfce00800, 0xfce0085f, // f1superb, roz #2 control?
329   AM_RANGE(0xfce00a00, 0xfce00a17) AM_WRITE(SMH_RAM) AM_BASE(&ms32_tx_scroll)   /* tx layer scroll */
330   AM_RANGE(0xfce00a20, 0xfce00a37) AM_WRITE(SMH_RAM) AM_BASE(&ms32_bg_scroll)   /* bg layer scroll */
292/**/AM_RANGE(0xfce00600, 0xfce0065f) AM_RAM AM_BASE(&ms32_roz_ctrl)      /* roz control registers */
293/**/AM_RANGE(0xfce00a00, 0xfce00a17) AM_RAM AM_BASE(&ms32_tx_scroll)   /* tx layer scroll */
294/**/AM_RANGE(0xfce00a20, 0xfce00a37) AM_RAM AM_BASE(&ms32_bg_scroll)   /* bg layer scroll */
331295   AM_RANGE(0xfce00a7c, 0xfce00a7f) AM_WRITE(pip_w)   // ??? layer related? seems to be always 0
296//  AM_RANGE(0xfce00800, 0xfce0085f) // f1superb, roz #2 control?
332297//  AM_RANGE(0xfce00e00, 0xfce00e03)    coin counters + something else
333298
334//  AM_RANGE(0xfd104000, 0xfd105fff) AM_WRITE(SMH_RAM) /* f1superb */
335//  AM_RANGE(0xfd144000, 0xfd145fff) AM_WRITE(SMH_RAM) /* f1superb */
299   AM_RANGE(0xfd000000, 0xfd000003) AM_READ(ms32_sound_r)
300   AM_RANGE(0xfd0e0000, 0xfd0e0003) AM_READ(ms32_read_inputs3) /* analog controls in f1superb? */
336301
337   AM_RANGE(0xfd180000, 0xfd19ffff) AM_WRITE(ms32_priram_w) AM_BASE(&ms32_priram)   /* priority ram */
338   AM_RANGE(0xfd1a0000, 0xfd1bffff) AM_WRITE(ms32_priram_w)         /* mirror only used by memory test in service mode */
302///**/AM_RANGE(0xfd104000, 0xfd105fff) AM_RAM /* f1superb */
303///**/AM_RANGE(0xfd144000, 0xfd145fff) AM_RAM /* f1superb */
339304
340   AM_RANGE(0xfd1c0000, 0xfd1c0003) AM_WRITE(SMH_RAM) AM_BASE(&ms32_mahjong_input_select) // ?
305   AM_RANGE(0xfd180000, 0xfd19ffff) AM_READWRITE(ms32_priram_r,ms32_priram_w) AM_BASE(&ms32_priram) /* priority ram */
306   AM_RANGE(0xfd1a0000, 0xfd1bffff) AM_READWRITE(ms32_priram_r,ms32_priram_w)   /* mirror only used by memory test in service mode */
307   AM_RANGE(0xfd1c0000, 0xfd1c0003) AM_WRITEONLY AM_BASE(&ms32_mahjong_input_select)
341308
342   AM_RANGE(0xfd400000, 0xfd43ffff) AM_WRITE(ms32_palram_w) AM_BASE(&ms32_palram) /* Palette */
343///**/AM_RANGE(0xfd440000, 0xfd47ffff) AM_WRITE(SMH_RAM) /* f1superb color */
344//  AM_RANGE(0xfdc00000, 0xfdc006ff) AM_WRITE(SMH_RAM) /* f1superb */
345//  AM_RANGE(0xfde00000, 0xfde01fff) AM_WRITE(SMH_RAM) /* f1superb, lineram #2? */
309   AM_RANGE(0xfd400000, 0xfd43ffff) AM_RAM_WRITE(ms32_palram_w) AM_BASE(&ms32_palram) /* Palette */
310///**/AM_RANGE(0xfd440000, 0xfd47ffff) AM_RAM /* f1superb color */
346311
347   AM_RANGE(0xfe000000, 0xfe01ffff) AM_WRITE(ms32_rozram_w) AM_BASE(&ms32_rozram)   /* roz layer */
348   AM_RANGE(0xfe020000, 0xfe03ffff) AM_WRITE(ms32_rozram_w)      /* mirror only used by memory test in service mode */
312///**/AM_RANGE(0xfdc00000, 0xfdc006ff) AM_RAM /* f1superb */
313///**/AM_RANGE(0xfde00000, 0xfde01fff) AM_RAM /* f1superb lineram #2? */
314   AM_RANGE(0xfe000000, 0xfe01ffff) AM_READWRITE(ms32_rozram_r,ms32_rozram_w) AM_BASE(&ms32_rozram)   /* roz layer */
315   AM_RANGE(0xfe020000, 0xfe03ffff) AM_READWRITE(ms32_rozram_r,ms32_rozram_w)   /* mirror only used by memory test in service mode */
349316   AM_RANGE(0xfe1ffc88, 0xfe1fffff) AM_WRITENOP   /* gratia writes here before falling into lineram, could be a mirror */
350   AM_RANGE(0xfe200000, 0xfe201fff) AM_WRITE(ms32_lineram_w) AM_BASE(&ms32_lineram) /* line ram for roz layer */
351///**/AM_RANGE(0xfe202000, 0xfe2fffff) AM_WRITE(SMH_RAM) /* f1superb vram */
352///**/AM_RANGE(0xfe100000, 0xfe1fffff) AM_WRITE(SMH_RAM) /* gratia writes here ?! */
353   AM_RANGE(0xfe800000, 0xfe83ffff) AM_WRITE(ms32_spram_w) AM_BASE(&ms32_spram)   /* sprites */
354   AM_RANGE(0xfe840000, 0xfe87ffff) AM_WRITE(ms32_spram_w)      /* mirror only used by memory test in service mode */
355   AM_RANGE(0xfec00000, 0xfec07fff) AM_WRITE(ms32_txram_w) AM_BASE(&ms32_txram)   /* tx layer */
356   AM_RANGE(0xfec08000, 0xfec0ffff) AM_WRITE(ms32_bgram_w) AM_BASE(&ms32_bgram)   /* bg layer */
357   AM_RANGE(0xfec10000, 0xfec17fff) AM_WRITE(ms32_txram_w)      /* mirror only used by memory test in service mode */
358   AM_RANGE(0xfec18000, 0xfec1ffff) AM_WRITE(ms32_bgram_w)      /* mirror used by gametngk at the beginning of the game */
359   AM_RANGE(0xfee00000, 0xfee1ffff) AM_WRITE(SMH_RAM) AM_BASE(&ms32_mainram)
360   AM_RANGE(0xffe00000, 0xffffffff) AM_WRITE(SMH_ROM)
317   AM_RANGE(0xfe200000, 0xfe201fff) AM_READWRITE(ms32_lineram_r,ms32_lineram_w) AM_BASE(&ms32_lineram) /* line ram for roz layer */
318///**/AM_RANGE(0xfe202000, 0xfe2fffff) AM_RAM /* f1superb vram */
319
320   AM_RANGE(0xfe800000, 0xfe83ffff) AM_READWRITE(ms32_spram_r,ms32_spram_w) AM_BASE(&ms32_spram)   /* sprites */
321   AM_RANGE(0xfe840000, 0xfe87ffff) AM_READWRITE(ms32_spram_r,ms32_spram_w) /* mirror only used by memory test in service mode */
322   AM_RANGE(0xfec00000, 0xfec07fff) AM_READWRITE(ms32_txram_r,ms32_txram_w) AM_BASE(&ms32_txram)   /* tx layer */
323   AM_RANGE(0xfec08000, 0xfec0ffff) AM_READWRITE(ms32_bgram_r,ms32_bgram_w) AM_BASE(&ms32_bgram)   /* bg layer */
324   AM_RANGE(0xfec10000, 0xfec17fff) AM_READWRITE(ms32_txram_r,ms32_txram_w) /* mirror only used by memory test in service mode */
325   AM_RANGE(0xfec18000, 0xfec1ffff) AM_READWRITE(ms32_bgram_r,ms32_bgram_w) /* mirror used by gametngk at the beginning of the game */
326   AM_RANGE(0xfee00000, 0xfee1ffff) AM_RAM AM_BASE(&ms32_mainram)
327   AM_RANGE(0xffe00000, 0xffffffff) AM_ROMBANK(1)
361328ADDRESS_MAP_END
362329
363330/*************************************
r4679r4680
11061073static void irq_init(running_machine *machine)
11071074{
11081075   irqreq = 0;
1109   cpu_set_input_line(machine->cpu[0], 0, CLEAR_LINE);
1110   cpu_set_irq_callback(machine->cpu[0], irq_callback);
1076   cputag_set_input_line(machine, "maincpu", 0, CLEAR_LINE);
1077   cpu_set_irq_callback(cputag_get_cpu(machine, "maincpu"), irq_callback);
11111078}
11121079
11131080static void irq_raise(running_machine *machine, int level)
11141081{
11151082   irqreq |= (1<<level);
1116   cpu_set_input_line(machine->cpu[0], 0, ASSERT_LINE);
1083   cputag_set_input_line(machine, "maincpu", 0, ASSERT_LINE);
11171084}
11181085
11191086static INTERRUPT_GEN(ms32_interrupt)
r4679r4680
11561123
11571124static READ8_HANDLER( latch_r )
11581125{
1159   cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_NMI, CLEAR_LINE);
1126   cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, CLEAR_LINE);
11601127   return soundlatch_r(space,0)^0xff;
11611128}
11621129
r4679r4680
11681135
11691136static WRITE8_HANDLER( to_main_w )
11701137{
1171      to_main=data;
1172      irq_raise(space->machine, 1);
1138   to_main=data;
1139   irq_raise(space->machine, 1);
11731140}
11741141
1175static ADDRESS_MAP_START( ms32_snd_readmem, ADDRESS_SPACE_PROGRAM, 8 )
1176   AM_RANGE(0x0000, 0x3eff) AM_READ(SMH_ROM)
1177   AM_RANGE(0x3f00, 0x3f0f) AM_DEVREAD("ymf", ymf271_r)
1178   AM_RANGE(0x3f10, 0x3f10) AM_READ(latch_r)
1142static ADDRESS_MAP_START( ms32_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
1143   AM_RANGE(0x0000, 0x3eff) AM_ROM
1144   AM_RANGE(0x3f00, 0x3f0f) AM_DEVREADWRITE("ymf", ymf271_r,ymf271_w)
1145   AM_RANGE(0x3f10, 0x3f10) AM_READWRITE(latch_r,to_main_w)
11791146   AM_RANGE(0x3f20, 0x3f20) AM_READNOP /* 2nd latch ? */
1180   AM_RANGE(0x4000, 0x7fff) AM_READ(SMH_RAM)
1181   AM_RANGE(0x8000, 0xbfff) AM_READ(SMH_BANK4)
1182   AM_RANGE(0xc000, 0xffff) AM_READ(SMH_BANK5)
1183ADDRESS_MAP_END
1184
1185static ADDRESS_MAP_START( ms32_snd_writemem, ADDRESS_SPACE_PROGRAM, 8 )
1186   AM_RANGE(0x0000, 0x3eff) AM_WRITE(SMH_ROM)
1187   AM_RANGE(0x3f00, 0x3f0f) AM_DEVWRITE("ymf", ymf271_w)
1188   AM_RANGE(0x3f10, 0x3f10) AM_WRITE(to_main_w)
11891147   AM_RANGE(0x3f20, 0x3f20) AM_WRITENOP /* to_main2_w  ? */
11901148   AM_RANGE(0x3f40, 0x3f40) AM_WRITENOP   /* YMF271 pin 4 (bit 1) , YMF271 pin 39 (bit 4) */
11911149   AM_RANGE(0x3f70, 0x3f70) AM_WRITENOP   // watchdog? banking? very noisy
11921150   AM_RANGE(0x3f80, 0x3f80) AM_WRITE(ms32_snd_bank_w)
1193   AM_RANGE(0x4000, 0x7fff) AM_WRITE(SMH_RAM)
1194   AM_RANGE(0x8000, 0xffff) AM_WRITE(SMH_ROM)
1151   AM_RANGE(0x4000, 0x7fff) AM_RAM
1152   AM_RANGE(0x8000, 0xbfff) AM_ROMBANK(4)
1153   AM_RANGE(0xc000, 0xffff) AM_ROMBANK(5)
11951154ADDRESS_MAP_END
11961155
1156
11971157/********** MACHINE INIT **********/
11981158
11991159static MACHINE_RESET( ms32 )
r4679r4680
12101170
12111171   /* basic machine hardware */
12121172   MDRV_CPU_ADD("maincpu", V70, 20000000) // 20MHz
1213   MDRV_CPU_PROGRAM_MAP(ms32_readmem,ms32_writemem)
1173   MDRV_CPU_PROGRAM_MAP(ms32_map,0)
12141174   MDRV_CPU_VBLANK_INT_HACK(ms32_interrupt,32)
12151175
12161176   MDRV_CPU_ADD("audiocpu", Z80, 4000000)
1217   MDRV_CPU_PROGRAM_MAP(ms32_snd_readmem, ms32_snd_writemem)
1177   MDRV_CPU_PROGRAM_MAP(ms32_sound_map, 0)
12181178
12191179   MDRV_QUANTUM_TIME(HZ(60000))
12201180
r4679r4680
20291989   source_data = memory_region       ( machine, region );
20301990   source_size = memory_region_length( machine, region );
20311991
2032   result_data = malloc_or_die(source_size);
1992   result_data = alloc_array_or_die(UINT8, source_size);
20331993
20341994   for(i=0; i<source_size; i++)
20351995   {
r4679r4680
20542014   source_data = memory_region       ( machine, region );
20552015   source_size = memory_region_length( machine, region );
20562016
2057   result_data = malloc_or_die(source_size);
2017   result_data = alloc_array_or_die(UINT8, source_size);
20582018
20592019   addr_xor ^= 0x1005d;
20602020
r4679r4680
21082068   source_data = memory_region       ( machine, region );
21092069   source_size = memory_region_length( machine, region );
21102070
2111   result_data = malloc_or_die(source_size);
2071   result_data = alloc_array_or_die(UINT8, source_size);
21122072
21132073   addr_xor ^= 0xc1c5b;
21142074
src/mame/drivers/mpu4.c
r4679r4680
437437      memory_configure_bank(machine, 1, 0, 8, &rom[0x01000], 0x10000);
438438
439439      memory_set_bank(machine, 1,0);
440      device_reset(machine->cpu[0]);
440      device_reset(cputag_get_cpu(machine, "maincpu"));
441441   }
442442
443443}
r4679r4680
464464
465465   if (!serial_card_connected)
466466   {
467      cpu_set_input_line(device->machine->cpu[0], M6809_IRQ_LINE, combined_state ? ASSERT_LINE : CLEAR_LINE);
467      cputag_set_input_line(device->machine, "maincpu", M6809_IRQ_LINE, combined_state ? ASSERT_LINE : CLEAR_LINE);
468468      LOG(("6809 int%d \n", combined_state));
469469   }
470470   else
471471   {
472      cpu_set_input_line(device->machine->cpu[0], M6809_FIRQ_LINE, combined_state ? ASSERT_LINE : CLEAR_LINE);
472      cputag_set_input_line(device->machine, "maincpu", M6809_FIRQ_LINE, combined_state ? ASSERT_LINE : CLEAR_LINE);
473473      LOG(("6809 fint%d \n", combined_state));
474474   }
475475}
r4679r4680
17561756   AM_RANGE(0x0E00, 0x0E03) AM_DEVREADWRITE("pia_ic7", pia6821_r,pia6821_w)      /* PIA6821 IC7 */
17571757   AM_RANGE(0x0F00, 0x0F03) AM_DEVREADWRITE("pia_ic8", pia6821_r,pia6821_w)      /* PIA6821 IC8 */
17581758
1759   AM_RANGE(0x1000, 0xffff) AM_READ(SMH_BANK1)   /* 64k  paged ROM (4 pages)  */
1759   AM_RANGE(0x1000, 0xffff) AM_READ(SMH_BANK(1))   /* 64k  paged ROM (4 pages)  */
17601760ADDRESS_MAP_END
17611761
17621762static ADDRESS_MAP_START( mod4_yam_map, ADDRESS_SPACE_PROGRAM, 8 )
r4679r4680
17781778   AM_RANGE(0x0E00, 0x0E03) AM_DEVREADWRITE("pia_ic7", pia6821_r,pia6821_w)      /* PIA6821 IC7 */
17791779   AM_RANGE(0x0F00, 0x0F03) AM_DEVREADWRITE("pia_ic8", pia6821_r,pia6821_w)      /* PIA6821 IC8 */
17801780
1781   AM_RANGE(0x1000, 0xffff) AM_READ(SMH_BANK1)   // 64k  paged ROM (4 pages)
1781   AM_RANGE(0x1000, 0xffff) AM_READ(SMH_BANK(1))   // 64k  paged ROM (4 pages)
17821782ADDRESS_MAP_END
17831783
17841784static ADDRESS_MAP_START( mod4_oki_map, ADDRESS_SPACE_PROGRAM, 8 )
r4679r4680
18021802   AM_RANGE(0x0E00, 0x0E03) AM_DEVREADWRITE("pia_ic7", pia6821_r,pia6821_w)      /* PIA6821 IC7 */
18031803   AM_RANGE(0x0F00, 0x0F03) AM_DEVREADWRITE("pia_ic8", pia6821_r,pia6821_w)      /* PIA6821 IC8 */
18041804
1805   AM_RANGE(0x1000, 0xffff) AM_READ(SMH_BANK1)   // 64k  paged ROM (4 pages)
1805   AM_RANGE(0x1000, 0xffff) AM_READ(SMH_BANK(1))   // 64k  paged ROM (4 pages)
18061806ADDRESS_MAP_END
18071807
18081808// memory map for barcrest mpu4 board /////////////////////////////////////
r4679r4680
18281828   AM_RANGE(0x0E00, 0x0E03) AM_DEVREADWRITE("pia_ic7", pia6821_r,pia6821_w)      /* PIA6821 IC7 */
18291829   AM_RANGE(0x0F00, 0x0F03) AM_DEVREADWRITE("pia_ic8", pia6821_r,pia6821_w)      /* PIA6821 IC8 */
18301830
1831   AM_RANGE(0x1000, 0xffff) AM_READ(SMH_BANK1)   // 64k paged ROM (4 pages)
1831   AM_RANGE(0x1000, 0xffff) AM_READ(SMH_BANK(1))   // 64k paged ROM (4 pages)
18321832ADDRESS_MAP_END
18331833
18341834static const ay8910_interface ay8910_config =
src/mame/drivers/skylncr.c
r4679r4680
824824
825825static DRIVER_INIT( skylncr )
826826{
827   paletteram   = auto_malloc(0x100 * 3);
828   paletteram_2 = auto_malloc(0x100 * 3);
827   paletteram   = auto_alloc_array(machine, UINT8, 0x100 * 3);
828   paletteram_2 = auto_alloc_array(machine, UINT8, 0x100 * 3);
829829}
830830
831831
src/mame/drivers/darkseal.c
r4679r4680
4141{
4242   switch (offset<<1) {
4343    case 6: /* DMA flag */
44      buffer_spriteram16_w(space,0,0,0xffff);
44      buffer_spriteram16_w(space, 0, 0, 0xffff);
4545      return;
4646    case 8: /* Sound CPU write */
47      soundlatch_w(space,0,data & 0xff);
48      cpu_set_input_line(space->machine->cpu[1],0,HOLD_LINE);
47      soundlatch_w(space, 0, data & 0xff);
48      cputag_set_input_line(space->machine, "audiocpu", 0, HOLD_LINE);
4949       return;
5050     case 0xa: /* IRQ Ack (VBL) */
5151      return;
r4679r4680
7171
7272/******************************************************************************/
7373
74static ADDRESS_MAP_START( darkseal_readmem, ADDRESS_SPACE_PROGRAM, 16 )
75   AM_RANGE(0x000000, 0x07ffff) AM_READ(SMH_ROM)
76   AM_RANGE(0x100000, 0x103fff) AM_READ(SMH_RAM)
77   AM_RANGE(0x120000, 0x1207ff) AM_READ(SMH_RAM)
78   AM_RANGE(0x140000, 0x140fff) AM_READ(SMH_RAM)
79   AM_RANGE(0x141000, 0x141fff) AM_READ(SMH_RAM)
80   AM_RANGE(0x180000, 0x18000f) AM_READ(darkseal_control_r)
81   AM_RANGE(0x220000, 0x220fff) AM_READ(SMH_RAM)
82   AM_RANGE(0x222000, 0x222fff) AM_READ(SMH_RAM)
83ADDRESS_MAP_END
84
85static ADDRESS_MAP_START( darkseal_writemem, ADDRESS_SPACE_PROGRAM, 16 )
86   AM_RANGE(0x000000, 0x07ffff) AM_WRITE(SMH_ROM)
87   AM_RANGE(0x100000, 0x103fff) AM_WRITE(SMH_RAM) AM_BASE(&darkseal_ram)
88   AM_RANGE(0x120000, 0x1207ff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)
89   AM_RANGE(0x140000, 0x140fff) AM_WRITE(darkseal_palette_24bit_rg_w) AM_BASE(&paletteram16)
90   AM_RANGE(0x141000, 0x141fff) AM_WRITE(darkseal_palette_24bit_b_w) AM_BASE(&paletteram16_2)
91   AM_RANGE(0x180000, 0x18000f) AM_WRITE(darkseal_control_w)
74static ADDRESS_MAP_START( darkseal_map, ADDRESS_SPACE_PROGRAM, 16 )
75   AM_RANGE(0x000000, 0x07ffff) AM_ROM
76   AM_RANGE(0x100000, 0x103fff) AM_RAM AM_BASE(&darkseal_ram)
77   AM_RANGE(0x120000, 0x1207ff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)
78   AM_RANGE(0x140000, 0x140fff) AM_RAM_WRITE(darkseal_palette_24bit_rg_w) AM_BASE(&paletteram16)
79   AM_RANGE(0x141000, 0x141fff) AM_RAM_WRITE(darkseal_palette_24bit_b_w) AM_BASE(&paletteram16_2)
80   AM_RANGE(0x180000, 0x18000f) AM_READWRITE(darkseal_control_r, darkseal_control_w)
9281    AM_RANGE(0x200000, 0x200fff) AM_WRITE(darkseal_pf3b_data_w) /* 2nd half of pf3, only used on last level */
9382   AM_RANGE(0x202000, 0x203fff) AM_WRITE(darkseal_pf3_data_w) AM_BASE(&darkseal_pf3_data)
94   AM_RANGE(0x220000, 0x220fff) AM_WRITE(SMH_RAM) AM_BASE(&darkseal_pf12_row)
95   AM_RANGE(0x222000, 0x222fff) AM_WRITE(SMH_RAM) AM_BASE(&darkseal_pf34_row)
83   AM_RANGE(0x220000, 0x220fff) AM_RAM AM_BASE(&darkseal_pf12_row)
84   AM_RANGE(0x222000, 0x222fff) AM_RAM AM_BASE(&darkseal_pf34_row)
9685   AM_RANGE(0x240000, 0x24000f) AM_WRITE(darkseal_control_0_w)
9786   AM_RANGE(0x260000, 0x261fff) AM_WRITE(darkseal_pf2_data_w) AM_BASE(&darkseal_pf2_data)
9887   AM_RANGE(0x262000, 0x263fff) AM_WRITE(darkseal_pf1_data_w) AM_BASE(&darkseal_pf1_data)
r4679r4680
10190
10291/******************************************************************************/
10392
104static ADDRESS_MAP_START( sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
105   AM_RANGE(0x000000, 0x00ffff) AM_READ(SMH_ROM)
106   AM_RANGE(0x100000, 0x100001) AM_DEVREAD("ym1", ym2203_r)
107   AM_RANGE(0x110000, 0x110001) AM_DEVREAD("ym2", ym2151_r)
108   AM_RANGE(0x120000, 0x120001) AM_DEVREAD("oki1", okim6295_r)
109   AM_RANGE(0x130000, 0x130001) AM_DEVREAD("oki2", okim6295_r)
93static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 )
94   AM_RANGE(0x000000, 0x00ffff) AM_ROM
95   AM_RANGE(0x100000, 0x100001) AM_DEVREADWRITE("ym1", ym2203_r, ym2203_w)
96   AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE("ym2", ym2151_r, ym2151_w)
97   AM_RANGE(0x120000, 0x120001) AM_DEVREADWRITE("oki1", okim6295_r, okim6295_w)
98   AM_RANGE(0x130000, 0x130001) AM_DEVREADWRITE("oki2", okim6295_r, okim6295_w)
11099   AM_RANGE(0x140000, 0x140001) AM_READ(soundlatch_r)
111   AM_RANGE(0x1f0000, 0x1f1fff) AM_READ(SMH_BANK8)
112ADDRESS_MAP_END
113
114static ADDRESS_MAP_START( sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
115   AM_RANGE(0x000000, 0x00ffff) AM_WRITE(SMH_ROM)
116   AM_RANGE(0x100000, 0x100001) AM_DEVWRITE("ym1", ym2203_w)
117   AM_RANGE(0x110000, 0x110001) AM_DEVWRITE("ym2", ym2151_w)
118   AM_RANGE(0x120000, 0x120001) AM_DEVWRITE("oki1", okim6295_w)
119   AM_RANGE(0x130000, 0x130001) AM_DEVWRITE("oki2", okim6295_w)
120   AM_RANGE(0x1f0000, 0x1f1fff) AM_WRITE(SMH_BANK8)
100   AM_RANGE(0x1f0000, 0x1f1fff) AM_RAMBANK(8)
121101   AM_RANGE(0x1fec00, 0x1fec01) AM_WRITE(h6280_timer_w)
122102   AM_RANGE(0x1ff400, 0x1ff403) AM_WRITE(h6280_irq_status_w)
123103ADDRESS_MAP_END
r4679r4680
251231
252232static void sound_irq(const device_config *device, int state)
253233{
254   cpu_set_input_line(device->machine->cpu[1],1,state); /* IRQ 2 */
234   cputag_set_input_line(device->machine, "audiocpu", 1, state); /* IRQ 2 */
255235}
256236
257237static const ym2151_interface ym2151_config =
r4679r4680
263243
264244   /* basic machine hardware */
265245   MDRV_CPU_ADD("maincpu", M68000,12000000) /* Custom chip 59 */
266   MDRV_CPU_PROGRAM_MAP(darkseal_readmem,darkseal_writemem)
246   MDRV_CPU_PROGRAM_MAP(darkseal_map,0)
267247   MDRV_CPU_VBLANK_INT("screen", irq6_line_hold)/* VBL */
268248
269249   MDRV_CPU_ADD("audiocpu", H6280, 32220000/4) /* Custom chip 45, Audio section crystal is 32.220 MHz */
270   MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem)
250   MDRV_CPU_PROGRAM_MAP(sound_map,0)
271251
272252   /* video hardware */
273253   MDRV_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM)
src/mame/drivers/20pacgal.c
r4679r4680
6666{
6767   int bit = data & 1;
6868
69   cpu_interrupt_enable(space->machine->cpu[0], bit);
69   cpu_interrupt_enable(cputag_get_cpu(space->machine, "maincpu"), bit);
7070
7171   if (!bit)
72      cpu_set_input_line(space->machine->cpu[0], 0, CLEAR_LINE );
72      cputag_set_input_line(space->machine, "maincpu", 0, CLEAR_LINE );
7373}
7474
7575
r4679r4680
160160
161161static WRITE8_HANDLER( rom_bank_select_w )
162162{
163   _20pacgal_state *state = space->machine->driver_data;
163   _20pacgal_state *state = (_20pacgal_state *)space->machine->driver_data;
164164
165165   state->game_selected = data & 1;
166166
r4679r4680
174174
175175static WRITE8_HANDLER( rom_48000_w )
176176{
177   _20pacgal_state *state = space->machine->driver_data;
177   _20pacgal_state *state = (_20pacgal_state *)space->machine->driver_data;
178178
179179   if (state->game_selected)
180180   {
src/mame/drivers/seicross.c
r4679r4680
8686static MACHINE_RESET( friskyt )
8787{
8888   /* start with the protection mcu halted */
89   cpu_set_input_line(machine->cpu[1], INPUT_LINE_HALT, ASSERT_LINE);
89   cputag_set_input_line(machine, "mcu", INPUT_LINE_HALT, ASSERT_LINE);
9090}
9191
9292
r4679r4680
100100{
101101//logerror("PC %04x: 8910 port B = %02x\n",cpu_get_pc(space->cpu),data);
102102   /* bit 0 is IRQ enable */
103   cpu_interrupt_enable(device->machine->cpu[0],data & 1);
103   cpu_interrupt_enable(cputag_get_cpu(device->machine, "maincpu"), data & 1);
104104
105105   /* bit 1 flips screen */
106106
r4679r4680
108108   if (((portb & 4) == 0) && (data & 4))
109109   {
110110      /* reset and start the protection mcu */
111      cpu_set_input_line(device->machine->cpu[1], INPUT_LINE_RESET, PULSE_LINE);
112      cpu_set_input_line(device->machine->cpu[1], INPUT_LINE_HALT, CLEAR_LINE);
111      cputag_set_input_line(device->machine, "mcu", INPUT_LINE_RESET, PULSE_LINE);
112      cputag_set_input_line(device->machine, "mcu", INPUT_LINE_HALT, CLEAR_LINE);
113113   }
114114
115115   /* other bits unknown */
src/mame/drivers/spbactn.c
r4679r4680
140140{
141141   if (ACCESSING_BITS_0_7)
142142   {
143      soundlatch_w(space,offset,data & 0xff);
144      cpu_set_input_line(space->machine->cpu[1],INPUT_LINE_NMI,PULSE_LINE);
143      soundlatch_w(space, offset, data & 0xff);
144      cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
145145   }
146146}
147147
148static ADDRESS_MAP_START( spbactn_readmem, ADDRESS_SPACE_PROGRAM, 16 )
149   AM_RANGE(0x00000, 0x3ffff) AM_READ(SMH_ROM)
150   AM_RANGE(0x40000, 0x43fff) AM_READ(SMH_RAM)
151   AM_RANGE(0x50000, 0x50fff) AM_READ(SMH_RAM)
152   AM_RANGE(0x60000, 0x67fff) AM_READ(SMH_RAM)
153   AM_RANGE(0x70000, 0x77fff) AM_READ(SMH_RAM)
154   AM_RANGE(0x80000, 0x82fff) AM_READ(SMH_RAM)
148static ADDRESS_MAP_START( spbactn_map, ADDRESS_SPACE_PROGRAM, 16 )
149   AM_RANGE(0x00000, 0x3ffff) AM_ROM
150   AM_RANGE(0x40000, 0x43fff) AM_RAM   // main ram
151   AM_RANGE(0x50000, 0x50fff) AM_RAM AM_BASE(&spbactn_spvideoram)
152   AM_RANGE(0x60000, 0x67fff) AM_RAM AM_BASE(&spbactn_fgvideoram)
153   AM_RANGE(0x70000, 0x77fff) AM_RAM AM_BASE(&spbactn_bgvideoram)
154   AM_RANGE(0x80000, 0x827ff) AM_RAM_WRITE(paletteram16_xxxxBBBBGGGGRRRR_word_w) AM_BASE(&paletteram16)
155155   AM_RANGE(0x90000, 0x90001) AM_READ_PORT("IN0")
156156   AM_RANGE(0x90010, 0x90011) AM_READ_PORT("IN1")
157157   AM_RANGE(0x90020, 0x90021) AM_READ_PORT("SYSTEM")
158158   AM_RANGE(0x90030, 0x90031) AM_READ_PORT("DSW1")
159159   AM_RANGE(0x90040, 0x90041) AM_READ_PORT("DSW2")
160ADDRESS_MAP_END
161160
162static ADDRESS_MAP_START( spbactn_writemem, ADDRESS_SPACE_PROGRAM, 16 )
163   AM_RANGE(0x00000, 0x3ffff) AM_WRITE(SMH_ROM)
164   AM_RANGE(0x40000, 0x43fff) AM_WRITE(SMH_RAM)   // main ram
165   AM_RANGE(0x50000, 0x50fff) AM_WRITE(SMH_RAM) AM_BASE(&spbactn_spvideoram)
166   AM_RANGE(0x60000, 0x67fff) AM_WRITE(SMH_RAM) AM_BASE(&spbactn_fgvideoram)
167   AM_RANGE(0x70000, 0x77fff) AM_WRITE(SMH_RAM) AM_BASE(&spbactn_bgvideoram)
168   AM_RANGE(0x80000, 0x827ff) AM_WRITE(paletteram16_xxxxBBBBGGGGRRRR_word_w) AM_BASE(&paletteram16)
169
170161   /* this is an awful lot of unknowns */
171162   AM_RANGE(0x90000, 0x90001) AM_WRITENOP
172163   AM_RANGE(0x90010, 0x90011) AM_WRITE(soundcommand_w)
r4679r4680
200191   AM_RANGE(0xa0206, 0xa0207) AM_WRITENOP
201192ADDRESS_MAP_END
202193
203static ADDRESS_MAP_START( sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
204   AM_RANGE(0x0000, 0xefff) AM_READ(SMH_ROM)
205   AM_RANGE(0xf000, 0xf7ff) AM_READ(SMH_RAM)
206   AM_RANGE(0xf800, 0xf800) AM_DEVREAD("oki", okim6295_r)
207   AM_RANGE(0xfc00, 0xfc00) AM_READNOP   /* irq ack ?? */
194static ADDRESS_MAP_START( spbactn_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
195   AM_RANGE(0x0000, 0xefff) AM_ROM
196   AM_RANGE(0xf000, 0xf7ff) AM_RAM
197   AM_RANGE(0xf800, 0xf800) AM_DEVREADWRITE("oki", okim6295_r,okim6295_w)
198   AM_RANGE(0xf810, 0xf811) AM_DEVWRITE("ym", ym3812_w)
199
200   AM_RANGE(0xfc00, 0xfc00) AM_READNOP   AM_WRITENOP /* irq ack ?? */
208201   AM_RANGE(0xfc20, 0xfc20) AM_READ(soundlatch_r)
209202ADDRESS_MAP_END
210203
211static ADDRESS_MAP_START( sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
212   AM_RANGE(0x0000, 0xefff) AM_WRITE(SMH_ROM)
213   AM_RANGE(0xf000, 0xf7ff) AM_WRITE(SMH_RAM)
214   AM_RANGE(0xf800, 0xf800) AM_DEVWRITE("oki", okim6295_w)
215   AM_RANGE(0xf810, 0xf811) AM_DEVWRITE("ym", ym3812_w)
216   AM_RANGE(0xfc00, 0xfc00) AM_WRITENOP   /* irq ack ?? */
217ADDRESS_MAP_END
218204
219205static INPUT_PORTS_START( spbactn )
220206   PORT_START("IN0")
r4679r4680
344330
345331static void irqhandler(const device_config *device, int linestate)
346332{
347   cpu_set_input_line(device->machine->cpu[1],0,linestate);
333   cputag_set_input_line(device->machine, "audiocpu", 0, linestate);
348334}
349335
350336static const ym3812_interface ym3812_config =
r4679r4680
355341static MACHINE_DRIVER_START( spbactn )
356342   /* basic machine hardware */
357343   MDRV_CPU_ADD("maincpu", M68000, 12000000)
358   MDRV_CPU_PROGRAM_MAP(spbactn_readmem,spbactn_writemem)
344   MDRV_CPU_PROGRAM_MAP(spbactn_map,0)
359345   MDRV_CPU_VBLANK_INT("screen", irq3_line_hold)
360346
361347   MDRV_CPU_ADD("audiocpu", Z80, 4000000)   /* 4 MHz ??? */
362   MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem)
348   MDRV_CPU_PROGRAM_MAP(spbactn_sound_map,0)
363349
364350   /* video hardware */
365351   MDRV_SCREEN_ADD("screen", RASTER)
src/mame/drivers/system16.c
r4679r4680
255255   sample_buffer <<= 4;
256256   sample_select ^= 1;
257257   if(sample_select == 0)
258      cpu_set_input_line(device->machine->cpu[1], INPUT_LINE_NMI, PULSE_LINE);
258      cputag_set_input_line(device->machine, "soundcpu", INPUT_LINE_NMI, PULSE_LINE);
259259}
260260
261261static const msm5205_interface tturfbl_msm5205_interface =
r4679r4680
367367{
368368   if( ACCESSING_BITS_0_7 )
369369{
370      soundlatch_w( space,0,data&0xff );
371      cpu_set_input_line(space->machine->cpu[1], 0, HOLD_LINE );
370      soundlatch_w( space, 0, data & 0xff );
371      cputag_set_input_line(space->machine, "soundcpu", 0, HOLD_LINE );
372372   }
373373}
374374
375375static WRITE16_HANDLER( sound_command_nmi_w )
376376{
377377   if( ACCESSING_BITS_0_7 )
378{
379      soundlatch_w( space,0,data&0xff );
380      cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_NMI, PULSE_LINE);
378   {
379      soundlatch_w( space, 0, data & 0xff );
380      cputag_set_input_line(space->machine, "soundcpu", INPUT_LINE_NMI, PULSE_LINE);
381381   }
382382}
383383
r4679r4680
11411141
11421142static WRITE16_HANDLER( ga_sound_command_w )
11431143{
1144   COMBINE_DATA( &sys16_workingram[(0xecfc-0xc000)/2] );
1144   COMBINE_DATA( &sys16_workingram[(0xecfc - 0xc000) / 2] );
11451145   if( ACCESSING_BITS_8_15 )
1146{
1147      soundlatch_w( space,0,data>>8 );
1148      cpu_set_input_line(space->machine->cpu[1], 0, HOLD_LINE );
1146   {
1147      soundlatch_w( space, 0, data >> 8 );
1148      cputag_set_input_line(space->machine, "soundcpu", 0, HOLD_LINE );
11491149   }
11501150}
11511151
src/mame/drivers/deniam.c
r4679r4680
5757   if (ACCESSING_BITS_8_15)
5858   {
5959      soundlatch_w(space,offset,(data >> 8) & 0xff);
60      cpu_set_input_line(space->machine->cpu[1],INPUT_LINE_NMI,PULSE_LINE);
60      cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
6161   }
6262}
6363
r4679r4680
7979}
8080
8181
82static ADDRESS_MAP_START( deniam16b_readmem, ADDRESS_SPACE_PROGRAM, 16 )
83   AM_RANGE(0x000000, 0x0fffff) AM_READ(SMH_ROM)
84   AM_RANGE(0x400000, 0x40ffff) AM_READ(SMH_RAM)
85   AM_RANGE(0x410000, 0x410fff) AM_READ(SMH_RAM)
86   AM_RANGE(0xc40002, 0xc40003) AM_READ(deniam_coinctrl_r)
82static ADDRESS_MAP_START( deniam16b_map, ADDRESS_SPACE_PROGRAM, 16 )
83   AM_RANGE(0x000000, 0x0fffff) AM_ROM
84   AM_RANGE(0x400000, 0x40ffff) AM_RAM_WRITE(deniam_videoram_w) AM_BASE(&deniam_videoram)
85   AM_RANGE(0x410000, 0x410fff) AM_RAM_WRITE(deniam_textram_w) AM_BASE(&deniam_textram)
86   AM_RANGE(0x440000, 0x4407ff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)
87   AM_RANGE(0x840000, 0x840fff) AM_WRITE(deniam_palette_w) AM_BASE(&paletteram16)
88   AM_RANGE(0xc40000, 0xc40001) AM_WRITE(sound_command_w)
89   AM_RANGE(0xc40002, 0xc40003) AM_READWRITE(deniam_coinctrl_r, deniam_coinctrl_w)
8790   AM_RANGE(0xc44000, 0xc44001) AM_READ_PORT("SYSTEM")
8891   AM_RANGE(0xc44002, 0xc44003) AM_READ_PORT("P1")
89   AM_RANGE(0xc44004, 0xc44005) AM_READ_PORT("P2")
92   AM_RANGE(0xc44004, 0xc44005) AM_READ_PORT("P2") AM_WRITENOP /* irq ack? */
9093   AM_RANGE(0xc44006, 0xc44007) AM_READNOP   /* unused? */
9194   AM_RANGE(0xc4400a, 0xc4400b) AM_READ_PORT("DSW")
92   AM_RANGE(0xff0000, 0xffffff) AM_READ(SMH_RAM)
95   AM_RANGE(0xff0000, 0xffffff) AM_RAM
9396ADDRESS_MAP_END
9497
95static ADDRESS_MAP_START( deniam16b_writemem, ADDRESS_SPACE_PROGRAM, 16 )
96   AM_RANGE(0x000000, 0x0fffff) AM_WRITE(SMH_ROM)
97   AM_RANGE(0x400000, 0x40ffff) AM_WRITE(deniam_videoram_w) AM_BASE(&deniam_videoram)
98   AM_RANGE(0x410000, 0x410fff) AM_WRITE(deniam_textram_w) AM_BASE(&deniam_textram)
99   AM_RANGE(0x440000, 0x4407ff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)
100   AM_RANGE(0x840000, 0x840fff) AM_WRITE(deniam_palette_w) AM_BASE(&paletteram16)
101   AM_RANGE(0xc40000, 0xc40001) AM_WRITE(sound_command_w)
102   AM_RANGE(0xc40002, 0xc40003) AM_WRITE(deniam_coinctrl_w)
103   AM_RANGE(0xc40004, 0xc40005) AM_WRITENOP   /* irq ack? */
104   AM_RANGE(0xff0000, 0xffffff) AM_WRITE(SMH_RAM)
98static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 )
99   AM_RANGE(0x0000, 0xf7ff) AM_ROM
100   AM_RANGE(0xf800, 0xffff) AM_RAM
105101ADDRESS_MAP_END
106102
107static ADDRESS_MAP_START( sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
108   AM_RANGE(0x0000, 0xf7ff) AM_READ(SMH_ROM)
109   AM_RANGE(0xf800, 0xffff) AM_READ(SMH_RAM)
110ADDRESS_MAP_END
111
112static ADDRESS_MAP_START( sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
113   AM_RANGE(0x0000, 0xf7ff) AM_WRITE(SMH_ROM)
114   AM_RANGE(0xf800, 0xffff) AM_WRITE(SMH_RAM)
115ADDRESS_MAP_END
116
117103static ADDRESS_MAP_START( sound_io_map, ADDRESS_SPACE_IO, 8 )
118104   ADDRESS_MAP_GLOBAL_MASK(0xff)
119105   AM_RANGE(0x01, 0x01) AM_READ(soundlatch_r)
r4679r4680
123109ADDRESS_MAP_END
124110
125111/* identical to 16b, but handles sound directly */
126static ADDRESS_MAP_START( deniam16c_readmem, ADDRESS_SPACE_PROGRAM, 16 )
127   AM_RANGE(0x000000, 0x0fffff) AM_READ(SMH_ROM)
128   AM_RANGE(0x400000, 0x40ffff) AM_READ(SMH_RAM)
129   AM_RANGE(0x410000, 0x410fff) AM_READ(SMH_RAM)
130   AM_RANGE(0xc40000, 0xc40001) AM_DEVREAD8("oki", okim6295_r, 0x00ff)
131   AM_RANGE(0xc40002, 0xc40003) AM_READ(deniam_coinctrl_r)
112static ADDRESS_MAP_START( deniam16c_map, ADDRESS_SPACE_PROGRAM, 16 )
113   AM_RANGE(0x000000, 0x0fffff) AM_ROM
114   AM_RANGE(0x400000, 0x40ffff) AM_RAM_WRITE(deniam_videoram_w) AM_BASE(&deniam_videoram)
115   AM_RANGE(0x410000, 0x410fff) AM_RAM_WRITE(deniam_textram_w) AM_BASE(&deniam_textram)
116   AM_RANGE(0x440000, 0x4407ff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)
117   AM_RANGE(0x840000, 0x840fff) AM_WRITE(deniam_palette_w) AM_BASE(&paletteram16)
118   AM_RANGE(0xc40000, 0xc40001) AM_DEVREADWRITE8("oki", okim6295_r, okim6295_w, 0x00ff)
119   AM_RANGE(0xc40002, 0xc40003) AM_READWRITE(deniam_coinctrl_r, deniam_coinctrl_w)
132120   AM_RANGE(0xc44000, 0xc44001) AM_READ_PORT("SYSTEM")
133121   AM_RANGE(0xc44002, 0xc44003) AM_READ_PORT("P1")
134   AM_RANGE(0xc44004, 0xc44005) AM_READ_PORT("P2")
135   AM_RANGE(0xc44006, 0xc44007) AM_READNOP   /* unused? */
122   AM_RANGE(0xc44004, 0xc44005) AM_READ_PORT("P2") AM_WRITENOP /* irq ack? */
123   AM_RANGE(0xc44006, 0xc44007) AM_READNOP   AM_DEVWRITE("oki", deniam16c_oki_rom_bank_w) /* read unused? */
124   AM_RANGE(0xc40008, 0xc4000b) AM_DEVWRITE8("ym", ym3812_w, 0xff00)
136125   AM_RANGE(0xc4400a, 0xc4400b) AM_READ_PORT("DSW") /* probably YM3812 input port */
137   AM_RANGE(0xff0000, 0xffffff) AM_READ(SMH_RAM)
126   AM_RANGE(0xff0000, 0xffffff) AM_RAM
138127ADDRESS_MAP_END
139128
140static ADDRESS_MAP_START( deniam16c_writemem, ADDRESS_SPACE_PROGRAM, 16 )
141   AM_RANGE(0x000000, 0x0fffff) AM_WRITE(SMH_ROM)
142   AM_RANGE(0x400000, 0x40ffff) AM_WRITE(deniam_videoram_w) AM_BASE(&deniam_videoram)
143   AM_RANGE(0x410000, 0x410fff) AM_WRITE(deniam_textram_w) AM_BASE(&deniam_textram)
144   AM_RANGE(0x440000, 0x4407ff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)
145   AM_RANGE(0x840000, 0x840fff) AM_WRITE(deniam_palette_w) AM_BASE(&paletteram16)
146   AM_RANGE(0xc40000, 0xc40001) AM_DEVWRITE8("oki", okim6295_w, 0x00ff)
147   AM_RANGE(0xc40002, 0xc40003) AM_WRITE(deniam_coinctrl_w)
148   AM_RANGE(0xc40004, 0xc40005) AM_WRITENOP   /* irq ack? */
149   AM_RANGE(0xc40006, 0xc40007) AM_DEVWRITE("oki", deniam16c_oki_rom_bank_w)
150   AM_RANGE(0xc40008, 0xc4000b) AM_DEVWRITE8("ym", ym3812_w, 0xff00)
151   AM_RANGE(0xff0000, 0xffffff) AM_WRITE(SMH_RAM)
152ADDRESS_MAP_END
153129
154130
155
156131static INPUT_PORTS_START( karianx )
157132   PORT_START("SYSTEM")
158133   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
r4679r4680
248223static void irqhandler(const device_config *device, int linestate)
249224{
250225   /* system 16c doesn't have the sound CPU */
251   if (device->machine->cpu[1] != NULL)
252      cpu_set_input_line(device->machine->cpu[1],0,linestate);
226   if (cputag_get_cpu(device->machine, "audiocpu") != NULL)
227      cputag_set_input_line(device->machine, "audiocpu", 0, linestate);
253228}
254229
255230static const ym3812_interface ym3812_config =
r4679r4680
263238
264239   /* basic machine hardware */
265240   MDRV_CPU_ADD("maincpu", M68000,25000000/2)   /* ??? */
266   MDRV_CPU_PROGRAM_MAP(deniam16b_readmem,deniam16b_writemem)
241   MDRV_CPU_PROGRAM_MAP(deniam16b_map,0)
267242   MDRV_CPU_VBLANK_INT("screen", irq4_line_hold)
268243
269244   MDRV_CPU_ADD("audiocpu", Z80,25000000/4)   /* (makes logicpro music tempo correct) */
270   MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem)
245   MDRV_CPU_PROGRAM_MAP(sound_map,0)
271246   MDRV_CPU_IO_MAP(sound_io_map,0)
272247
273248   MDRV_MACHINE_RESET(deniam)
r4679r4680
302277
303278   /* basic machine hardware */
304279   MDRV_CPU_ADD("maincpu", M68000,25000000/2)   /* ??? */
305   MDRV_CPU_PROGRAM_MAP(deniam16c_readmem,deniam16c_writemem)
280   MDRV_CPU_PROGRAM_MAP(deniam16c_map,0)
306281   MDRV_CPU_VBLANK_INT("screen", irq4_line_hold)
307282
308283   MDRV_MACHINE_RESET(deniam)
r4679r4680
431406GAME( 1996, croquis,  logicpro, deniam16b, logicpr2, logicpro, ROT0, "Deniam", "Croquis (Germany)", 0 )
432407GAME( 1996, karianx,  0,        deniam16b, karianx,  karianx,  ROT0, "Deniam", "Karian Cross (Rev. 1.0)", 0 )
433408GAME( 1997, logicpr2, 0,        deniam16c, logicpr2, logicpro, ROT0, "Deniam", "Logic Pro 2 (Japan)", GAME_IMPERFECT_SOUND )
434
src/mame/drivers/nyny.c
r4679r4680
117117   const device_config *pia2 = devtag_get_device(device->machine, "pia2");
118118   int combined_state = pia6821_get_irq_a(pia1) | pia6821_get_irq_b(pia1) | pia6821_get_irq_b(pia2);
119119
120   cpu_set_input_line(device->machine->cpu[0], M6809_IRQ_LINE, combined_state ? ASSERT_LINE : CLEAR_LINE);
120   cputag_set_input_line(device->machine, "maincpu", M6809_IRQ_LINE, combined_state ? ASSERT_LINE : CLEAR_LINE);
121121}
122122
123123
124124static WRITE_LINE_DEVICE_HANDLER( main_cpu_firq )
125125{
126   cpu_set_input_line(device->machine->cpu[0], M6809_FIRQ_LINE, state ? ASSERT_LINE : CLEAR_LINE);
126   cputag_set_input_line(device->machine, "maincpu", M6809_FIRQ_LINE, state ? ASSERT_LINE : CLEAR_LINE);
127127}
128128
129129
r4679r4680
435435static WRITE8_HANDLER( audio_1_command_w )
436436{
437437   soundlatch_w(space, 0, data);
438   cpu_set_input_line(space->machine->cpu[1], M6800_IRQ_LINE, HOLD_LINE);
438   cputag_set_input_line(space->machine, "audiocpu", M6800_IRQ_LINE, HOLD_LINE);
439439}
440440
441441
442442static WRITE8_HANDLER( audio_1_answer_w )
443443{
444444   soundlatch3_w(space, 0, data);
445   cpu_set_input_line(space->machine->cpu[0], M6809_IRQ_LINE, HOLD_LINE);
445   cputag_set_input_line(space->machine, "maincpu", M6809_IRQ_LINE, HOLD_LINE);
446446}
447447
448448
r4679r4680
486486static WRITE8_HANDLER( audio_2_command_w )
487487{
488488   soundlatch2_w(space, 0, (data & 0x60) >> 5);
489   cpu_set_input_line(space->machine->cpu[2], M6800_IRQ_LINE, (data & 0x80) ? CLEAR_LINE : ASSERT_LINE);
489   cputag_set_input_line(space->machine, "audio2", M6800_IRQ_LINE, (data & 0x80) ? CLEAR_LINE : ASSERT_LINE);
490490}
491491
492492
src/mame/drivers/limenko.c
r4679r4680
432432   tilemap_set_transparent_pen(md_tilemap,0);
433433   tilemap_set_transparent_pen(fg_tilemap,0);
434434
435   sprites_bitmap     = auto_bitmap_alloc(384,240,BITMAP_FORMAT_INDEXED16);
436   sprites_bitmap_pri = auto_bitmap_alloc(384,240,BITMAP_FORMAT_INDEXED8);
435   sprites_bitmap     = auto_bitmap_alloc(machine,384,240,BITMAP_FORMAT_INDEXED16);
436   sprites_bitmap_pri = auto_bitmap_alloc(machine,384,240,BITMAP_FORMAT_INDEXED8);
437437}
438438
439439static VIDEO_UPDATE( limenko )
r4679r4680
999999
10001000static DRIVER_INIT( dynabomb )
10011001{
1002   memory_install_read32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xe2784, 0xe2787, 0, 0, dynabomb_speedup_r );
1002   memory_install_read32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xe2784, 0xe2787, 0, 0, dynabomb_speedup_r );
10031003
10041004   spriteram_bit = 1;
10051005}
10061006
10071007static DRIVER_INIT( legendoh )
10081008{
1009   memory_install_read32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x32ab0, 0x32ab3, 0, 0, legendoh_speedup_r );
1009   memory_install_read32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x32ab0, 0x32ab3, 0, 0, legendoh_speedup_r );
10101010
10111011   spriteram_bit = 1;
10121012}
10131013
10141014static DRIVER_INIT( sb2003 )
10151015{
1016   memory_install_read32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x135800, 0x135803, 0, 0, sb2003_speedup_r );
1016   memory_install_read32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x135800, 0x135803, 0, 0, sb2003_speedup_r );
10171017
10181018   spriteram_bit = 1;
10191019}
r4679r4680
10331033      dst[x+2] = (src[x+1]&0x0f) >> 0;
10341034   }
10351035
1036   memory_install_read32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x6626c, 0x6626f, 0, 0, spotty_speedup_r );
1036   memory_install_read32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x6626c, 0x6626f, 0, 0, spotty_speedup_r );
10371037
10381038   spriteram_bit = 1;
10391039}
src/mame/drivers/big10.c
r4679r4680
7171
7272static void big10_vdp_interrupt(running_machine *machine, int i)
7373{
74   cpu_set_input_line (machine->cpu[0], 0, (i ? HOLD_LINE : CLEAR_LINE));
74   cputag_set_input_line (machine, "maincpu", 0, (i ? HOLD_LINE : CLEAR_LINE));
7575}
7676
7777static INTERRUPT_GEN( big10_interrupt )
src/mame/drivers/redalert.c
r4679r4680
115115
116116static READ8_HANDLER( redalert_interrupt_clear_r )
117117{
118   cpu_set_input_line(space->machine->cpu[0], M6502_IRQ_LINE, CLEAR_LINE);
118   cputag_set_input_line(space->machine, "maincpu", M6502_IRQ_LINE, CLEAR_LINE);
119119
120120   /* the result never seems to be actually used */
121121   return video_screen_get_vpos(space->machine->primary_screen);
src/mame/drivers/pipeline.c
r4679r4680
9090
9191static VIDEO_START ( pipeline )
9292{
93   palram=auto_malloc(0x1000);
93   palram=auto_alloc_array(machine, UINT8, 0x1000);
9494   tilemap1 = tilemap_create( machine, get_tile_info,tilemap_scan_rows,8,8,64,32 );
9595   tilemap2 = tilemap_create( machine, get_tile_info2,tilemap_scan_rows,8,8,64,32 );
9696   tilemap_set_transparent_pen(tilemap2,0);
src/mame/drivers/pengo.c
r4679r4680
661661      { 0x88,0x0a,0x82,0x00,0xa0,0x22,0xaa,0x28 }      /* ...1...1...1.... */
662662   };
663663   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
664   UINT8 *decrypt = auto_malloc(0x8000);
664   UINT8 *decrypt = auto_alloc_array(machine, UINT8, 0x8000);
665665   UINT8 *rom = memory_region(machine, "maincpu");
666666   int A;
667667
src/mame/drivers/stadhero.c
r4679r4680
5252      case 4: /* Interrupt ack (VBL - IRQ 5) */
5353         break;
5454      case 6: /* 6502 sound cpu */
55         soundlatch_w(space,0,data & 0xff);
56         cpu_set_input_line(space->machine->cpu[1],INPUT_LINE_NMI,PULSE_LINE);
55         soundlatch_w(space, 0, data & 0xff);
56         cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
5757         break;
5858      default:
5959         logerror("CPU #0 PC %06x: warning - write %02x to unmapped memory address %06x\n",cpu_get_pc(space->cpu),data,0x30c010+offset);
r4679r4680
209209
210210static void irqhandler(const device_config *device, int linestate)
211211{
212   cpu_set_input_line(device->machine->cpu[1],0,linestate);
212   cputag_set_input_line(device->machine, "audiocpu", 0, linestate);
213213}
214214
215215static const ym3812_interface ym3812_config =
src/mame/drivers/prehisle.c
r4679r4680
2929static WRITE16_HANDLER( prehisle_sound16_w )
3030{
3131   soundlatch_w(space, 0, data & 0xff);
32   cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_NMI, PULSE_LINE);
32   cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
3333}
3434
3535/*******************************************************************************/
r4679r4680
202202
203203static void irqhandler(const device_config *device, int irq)
204204{
205   cpu_set_input_line(device->machine->cpu[1],0,irq ? ASSERT_LINE : CLEAR_LINE);
205   cputag_set_input_line(device->machine, "audiocpu", 0, irq ? ASSERT_LINE : CLEAR_LINE);
206206}
207207
208208static const ym3812_interface ym3812_config =
r4679r4680
340340GAME( 1989, prehisle, 0,        prehisle, prehisle, 0, ROT0, "SNK", "Prehistoric Isle in 1930 (World)", GAME_SUPPORTS_SAVE )
341341GAME( 1989, prehislu, prehisle, prehisle, prehisle, 0, ROT0, "SNK of America", "Prehistoric Isle in 1930 (US)", GAME_SUPPORTS_SAVE )
342342GAME( 1989, gensitou, prehisle, prehisle, prehisle, 0, ROT0, "SNK", "Genshi-Tou 1930's", GAME_SUPPORTS_SAVE )
343
src/mame/drivers/simpsons.c
r4679r4680
115115
116116static void sound_nmi_callback( running_machine *machine, int param )
117117{
118   cpu_set_input_line(machine->cpu[1], INPUT_LINE_NMI, ( nmi_enabled ) ? CLEAR_LINE : ASSERT_LINE );
118   cputag_set_input_line(machine, "audiocpu", INPUT_LINE_NMI, ( nmi_enabled ) ? CLEAR_LINE : ASSERT_LINE );
119119
120120   nmi_enabled = 0;
121121}
r4679r4680
123123
124124static TIMER_CALLBACK( nmi_callback )
125125{
126   cpu_set_input_line(machine->cpu[1], INPUT_LINE_NMI, ASSERT_LINE);
126   cputag_set_input_line(machine, "audiocpu", INPUT_LINE_NMI, ASSERT_LINE);
127127}
128128
129129static WRITE8_HANDLER( z80_arm_nmi_w )
130130{
131131//  sound_nmi_enabled = 1;
132   cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_NMI, CLEAR_LINE);
132   cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, CLEAR_LINE);
133133   timer_set(space->machine, ATTOTIME_IN_USEC(25), NULL,0,nmi_callback);   /* kludge until the K053260 is emulated correctly */
134134}
135135
r4679r4680
239239static TIMER_CALLBACK( dmaend_callback )
240240{
241241   if (simpsons_firq_enabled)
242      cpu_set_input_line(machine->cpu[0], KONAMI_FIRQ_LINE, HOLD_LINE);
242      cputag_set_input_line(machine, "maincpu", KONAMI_FIRQ_LINE, HOLD_LINE);
243243}
244244
245245static INTERRUPT_GEN( simpsons_irq )
src/mame/drivers/aladbl.c
r4679r4680
156156static DRIVER_INIT( aladbl )
157157{
158158   // 220000 = writes to mcu? 330000 = reads?
159   memory_install_write16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x220000, 0x220001, 0, 0, aladbl_w);
160   memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x330000, 0x330001, 0, 0, aladbl_r);
159   memory_install_write16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x220000, 0x220001, 0, 0, aladbl_w);
160   memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x330000, 0x330001, 0, 0, aladbl_r);
161161   DRIVER_INIT_CALL(megadrij);
162162}
163163
src/mame/drivers/wwfsstar.c
r4679r4680
218218
219219static WRITE16_HANDLER ( wwfsstar_soundwrite )
220220{
221   soundlatch_w(space,1,data & 0xff);
222   cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_NMI, PULSE_LINE );
221   soundlatch_w(space, 1, data & 0xff);
222   cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE );
223223}
224224
225225static WRITE16_HANDLER( wwfsstar_flipscreen_w )
r4679r4680
230230static WRITE16_HANDLER( wwfsstar_irqack_w )
231231{
232232   if (offset == 0)
233      cpu_set_input_line(space->machine->cpu[0], 6, CLEAR_LINE);
233      cputag_set_input_line(space->machine, "maincpu", 6, CLEAR_LINE);
234234
235235   else
236      cpu_set_input_line(space->machine->cpu[0], 5, CLEAR_LINE);
236      cputag_set_input_line(space->machine, "maincpu", 5, CLEAR_LINE);
237237}
238238
239239/*
r4679r4680
269269   {
270270      if (scanline > 0)
271271         video_screen_update_partial(timer->machine->primary_screen, scanline - 1);
272      cpu_set_input_line(timer->machine->cpu[0], 5, ASSERT_LINE);
272      cputag_set_input_line(timer->machine, "maincpu", 5, ASSERT_LINE);
273273   }
274274
275275   /* Vblank is raised on scanline 240 */
276276   if (scanline == 240)
277277   {
278278      video_screen_update_partial(timer->machine->primary_screen, scanline - 1);
279      cpu_set_input_line(timer->machine->cpu[0], 6, ASSERT_LINE);
279      cputag_set_input_line(timer->machine, "maincpu", 6, ASSERT_LINE);
280280   }
281281}
282282
r4679r4680
421421
422422static void wwfsstar_ymirq_handler(const device_config *device, int irq)
423423{
424   cpu_set_input_line(device->machine->cpu[1], 0 , irq ? ASSERT_LINE : CLEAR_LINE );
424   cputag_set_input_line(device->machine, "audiocpu", 0 , irq ? ASSERT_LINE : CLEAR_LINE );
425425}
426426
427427static const ym2151_interface ym2151_config =
src/mame/drivers/kungfur.c
r4679r4680
327327
328328static INTERRUPT_GEN( kungfur_irq )
329329{
330   cpu_set_input_line(device->machine->cpu[0], M6809_IRQ_LINE, HOLD_LINE);
330   cputag_set_input_line(device->machine, "maincpu", M6809_IRQ_LINE, HOLD_LINE);
331331}
332332
333333static MACHINE_DRIVER_START( kungfur )
src/mame/drivers/actfancr.c
r4679r4680
6969static WRITE8_HANDLER( actfancr_sound_w )
7070{
7171   soundlatch_w(space,0,data & 0xff);
72   cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_NMI, PULSE_LINE);
72   cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
7373}
7474
7575/******************************************************************************/
r4679r4680
276276
277277static void sound_irq(const device_config *device, int linestate)
278278{
279   cpu_set_input_line(device->machine->cpu[1],0,linestate); /* IRQ */
279   cputag_set_input_line(device->machine, "audiocpu", 0, linestate); /* IRQ */
280280}
281281
282282static const ym3812_interface ym3812_config =
r4679r4680
583583
584584static DRIVER_INIT( actfancr )
585585{
586   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1f0026, 0x1f0027, 0, 0, cycle_r);
586   memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1f0026, 0x1f0027, 0, 0, cycle_r);
587587}
588588
589589static DRIVER_INIT( actfancj )
590590{
591   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1f0026, 0x1f0027, 0, 0, cyclej_r);
591   memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1f0026, 0x1f0027, 0, 0, cyclej_r);
592592}
593593
594594
src/mame/drivers/model1.c
r4679r4680
690690   //  logerror("irq: raising %d\n", level);
691691   //  irq_status |= (1 << level);
692692   last_irq = level;
693   cpu_set_input_line(machine->cpu[0], 0, HOLD_LINE);
693   cputag_set_input_line(machine, "maincpu", 0, HOLD_LINE);
694694}
695695
696696static IRQ_CALLBACK(irq_callback)
r4679r4680
713713
714714static void irq_init(running_machine *machine)
715715{
716   cpu_set_input_line(machine->cpu[0], 0, CLEAR_LINE);
717   cpu_set_irq_callback(machine->cpu[0], irq_callback);
716   cputag_set_input_line(machine, "maincpu", 0, CLEAR_LINE);
717   cpu_set_irq_callback(cputag_get_cpu(machine, "maincpu"), irq_callback);
718718}
719719
720720static INTERRUPT_GEN(model1_interrupt)
r4679r4680
730730      // if the FIFO has something in it, signal the 68k too
731731      if (fifo_rptr != fifo_wptr)
732732      {
733         cpu_set_input_line(device->machine->cpu[1], 2, HOLD_LINE);
733         cputag_set_input_line(device->machine, "audiocpu", 2, HOLD_LINE);
734734      }
735735   }
736736}
r4679r4680
758758{
759759   memory_set_bankptr(machine, 1, memory_region(machine, "maincpu") + 0x1000000);
760760   irq_init(machine);
761   model1_vr_tgp_reset();
761   model1_vr_tgp_reset(machine);
762762   model1_sound_irq = 3;
763763
764764   // init the sound FIFO
r4679r4680
839839
840840static READ16_HANDLER( snd_68k_ready_r )
841841{
842   int sr = cpu_get_reg(space->machine->cpu[1], M68K_SR);
842   int sr = cpu_get_reg(cputag_get_cpu(space->machine, "audiocpu"), M68K_SR);
843843
844844   if ((sr & 0x0700) > 0x0100)
845845   {
r4679r4680
857857   if (fifo_wptr >= FIFO_SIZE) fifo_wptr = 0;
858858
859859   // signal the 68000 that there's data waiting
860   cpu_set_input_line(space->machine->cpu[1], 2, HOLD_LINE);
860   cputag_set_input_line(space->machine, "audiocpu", 2, HOLD_LINE);
861861   // give the 68k time to reply
862862   cpu_spinuntil_time(space->cpu, ATTOTIME_IN_USEC(40));
863863}
src/mame/drivers/polepos.c
r4679r4680
289289   switch (offset)
290290   {
291291      case 0x00:   /* IRQON */
292         cpu_interrupt_enable(space->machine->cpu[0],bit);
292         cpu_interrupt_enable(cputag_get_cpu(space->machine, "maincpu"), bit);
293293         if (!bit)
294            cpu_set_input_line(space->machine->cpu[0], 0, CLEAR_LINE);
294            cputag_set_input_line(space->machine, "maincpu", 0, CLEAR_LINE);
295295         break;
296296
297297      case 0x01:   /* IOSEL */
r4679r4680
302302         polepos_sound_enable(devtag_get_device(space->machine, "namco"),bit);
303303         if (!bit)
304304         {
305            polepos_engine_sound_lsb_w(space,0,0);
306            polepos_engine_sound_msb_w(space,0,0);
305            polepos_engine_sound_lsb_w(space, 0, 0);
306            polepos_engine_sound_msb_w(space, 0, 0);
307307         }
308308         break;
309309
r4679r4680
312312         break;
313313
314314      case 0x04:   /* RESB */
315         cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_RESET, bit ? CLEAR_LINE : ASSERT_LINE);
315         cputag_set_input_line(space->machine, "sub", INPUT_LINE_RESET, bit ? CLEAR_LINE : ASSERT_LINE);
316316         break;
317317
318318      case 0x05:   /* RESA */
319         cpu_set_input_line(space->machine->cpu[2], INPUT_LINE_RESET, bit ? CLEAR_LINE : ASSERT_LINE);
319         cputag_set_input_line(space->machine, "sub2", INPUT_LINE_RESET, bit ? CLEAR_LINE : ASSERT_LINE);
320320         break;
321321
322322      case 0x06:   /* SB0 */
r4679r4680
375375#include "cpu/z8000/z8000.h"
376376static MACHINE_RESET( polepos )
377377{
378   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
378   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
379379   int i;
380380
381381   /* Reset all latches */
382   for (i = 0;i < 8;i++)
383      polepos_latch_w(space,i,0);
382   for (i = 0; i < 8; i++)
383      polepos_latch_w(space, i, 0);
384384
385385   namco_06xx_init(machine, 0, 0,
386386      NAMCOIO_51XX, &intf0,
r4679r4680
389389      NAMCOIO_54XX, NULL);
390390
391391   /* set the interrupt vectors (this shouldn't be needed) */
392   cpu_set_input_line_vector(machine->cpu[1], 0, Z8000_NVI);
393   cpu_set_input_line_vector(machine->cpu[2], 0, Z8000_NVI);
392   cpu_set_input_line_vector(cputag_get_cpu(machine, "sub"), 0, Z8000_NVI);
393   cpu_set_input_line_vector(cputag_get_cpu(machine, "sub2"), 0, Z8000_NVI);
394394}
395395
396396
r4679r4680
17741774   polepos_gear_bit = 0x20;
17751775
17761776   /* extra direct mapped inputs read */
1777   memory_install_read_port_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x02, 0x02, 0, 0, "STEER");
1778   memory_install_read_port_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x03, 0x03, 0, 0, "IN0");
1779   memory_install_read_port_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x04, 0x04, 0, 0, "DSWA");
1777   memory_install_read_port_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_IO), 0x02, 0x02, 0, 0, "STEER");
1778   memory_install_read_port_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_IO), 0x03, 0x03, 0, 0, "IN0");
1779   memory_install_read_port_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_IO), 0x04, 0x04, 0, 0, "DSWA");
17801780
17811781}
17821782
17831783static DRIVER_INIT( polepos2 )
17841784{
17851785   /* note that the bootleg version doesn't need this custom IC; it has a hacked ROM in its place */
1786   memory_install_read16_handler(cpu_get_address_space(machine->cpu[1], ADDRESS_SPACE_PROGRAM), 0x4000, 0x5fff, 0, 0, polepos2_ic25_r);
1786   memory_install_read16_handler(cputag_get_address_space(machine, "sub", ADDRESS_SPACE_PROGRAM), 0x4000, 0x5fff, 0, 0, polepos2_ic25_r);
17871787
17881788   DRIVER_INIT_CALL(polepos);
17891789}
src/mame/drivers/taito_b.c
r4679r4680
187187
188188static TIMER_CALLBACK( rsaga2_interrupt2  )
189189{
190   cpu_set_input_line(machine->cpu[0],2,HOLD_LINE);
190   cputag_set_input_line(machine, "maincpu", 2, HOLD_LINE);
191191}
192192
193193static INTERRUPT_GEN( rastansaga2_interrupt )
194194{
195   timer_set(device->machine, cpu_clocks_to_attotime(device,5000), NULL, 0, rsaga2_interrupt2);
195   timer_set(device->machine, cpu_clocks_to_attotime(device, 5000), NULL, 0, rsaga2_interrupt2);
196196   cpu_set_input_line(device, 4, HOLD_LINE);
197197}
198198
199199
200200static TIMER_CALLBACK( crimec_interrupt3 )
201201{
202   cpu_set_input_line(machine->cpu[0],3,HOLD_LINE);
202   cputag_set_input_line(machine, "maincpu", 3, HOLD_LINE);
203203}
204204
205205static INTERRUPT_GEN( crimec_interrupt )
206206{
207   timer_set(device->machine, cpu_clocks_to_attotime(device,5000), NULL, 0, crimec_interrupt3);
207   timer_set(device->machine, cpu_clocks_to_attotime(device, 5000), NULL, 0, crimec_interrupt3);
208208   cpu_set_input_line(device, 5, HOLD_LINE);
209209}
210210
211211
212212static TIMER_CALLBACK( hitice_interrupt6 )
213213{
214   cpu_set_input_line(machine->cpu[0],6,HOLD_LINE);
214   cputag_set_input_line(machine, "maincpu", 6, HOLD_LINE);
215215}
216216
217217static INTERRUPT_GEN( hitice_interrupt )
218218{
219   timer_set(device->machine, cpu_clocks_to_attotime(device,5000), NULL, 0, hitice_interrupt6);
219   timer_set(device->machine, cpu_clocks_to_attotime(device, 5000), NULL, 0, hitice_interrupt6);
220220   cpu_set_input_line(device, 4, HOLD_LINE);
221221}
222222
223223
224224static TIMER_CALLBACK( rambo3_interrupt1 )
225225{
226   cpu_set_input_line(machine->cpu[0],1,HOLD_LINE);
226   cputag_set_input_line(machine, "maincpu", 1, HOLD_LINE);
227227}
228228
229229static INTERRUPT_GEN( rambo3_interrupt )
230230{
231   timer_set(device->machine, cpu_clocks_to_attotime(device,5000), NULL, 0, rambo3_interrupt1);
231   timer_set(device->machine, cpu_clocks_to_attotime(device, 5000), NULL, 0, rambo3_interrupt1);
232232   cpu_set_input_line(device, 6, HOLD_LINE);
233233}
234234
235235
236236static TIMER_CALLBACK( pbobble_interrupt5 )
237237{
238   cpu_set_input_line(machine->cpu[0],5,HOLD_LINE);
238   cputag_set_input_line(machine, "maincpu", 5, HOLD_LINE);
239239}
240240
241241static INTERRUPT_GEN( pbobble_interrupt )
242242{
243   timer_set(device->machine, cpu_clocks_to_attotime(device,5000), NULL, 0, pbobble_interrupt5);
243   timer_set(device->machine, cpu_clocks_to_attotime(device, 5000), NULL, 0, pbobble_interrupt5);
244244   cpu_set_input_line(device, 3, HOLD_LINE);
245245}
246246
247247static TIMER_CALLBACK( viofight_interrupt1 )
248248{
249   cpu_set_input_line(machine->cpu[0],1,HOLD_LINE);
249   cputag_set_input_line(machine, "maincpu", 1, HOLD_LINE);
250250}
251251
252252static INTERRUPT_GEN( viofight_interrupt )
253253{
254   timer_set(device->machine, cpu_clocks_to_attotime(device,5000), NULL, 0, viofight_interrupt1);
254   timer_set(device->machine, cpu_clocks_to_attotime(device, 5000), NULL, 0, viofight_interrupt1);
255255   cpu_set_input_line(device, 4, HOLD_LINE);
256256}
257257
258258static TIMER_CALLBACK( masterw_interrupt4 )
259259{
260   cpu_set_input_line(machine->cpu[0],4,HOLD_LINE);
260   cputag_set_input_line(machine, "maincpu", 4, HOLD_LINE);
261261}
262262
263263static INTERRUPT_GEN( masterw_interrupt )
264264{
265   timer_set(device->machine, cpu_clocks_to_attotime(device,5000), NULL, 0, masterw_interrupt4);
265   timer_set(device->machine, cpu_clocks_to_attotime(device, 5000), NULL, 0, masterw_interrupt4);
266266   cpu_set_input_line(device, 5, HOLD_LINE);
267267}
268268
269269static TIMER_CALLBACK( silentd_interrupt4 )
270270{
271   cpu_set_input_line(machine->cpu[0],4,HOLD_LINE);
271   cputag_set_input_line(machine, "maincpu", 4, HOLD_LINE);
272272}
273273
274274static INTERRUPT_GEN( silentd_interrupt )
275275{
276   timer_set(device->machine, cpu_clocks_to_attotime(device,5000), NULL, 0, silentd_interrupt4);
276   timer_set(device->machine, cpu_clocks_to_attotime(device, 5000), NULL, 0, silentd_interrupt4);
277277   cpu_set_input_line(device, 6, HOLD_LINE);
278278}
279279
280280static TIMER_CALLBACK( selfeena_interrupt4 )
281281{
282   cpu_set_input_line(machine->cpu[0],4,HOLD_LINE);
282   cputag_set_input_line(machine, "maincpu", 4, HOLD_LINE);
283283}
284284
285285static INTERRUPT_GEN( selfeena_interrupt )
286286{
287   timer_set(device->machine, cpu_clocks_to_attotime(device,5000), NULL, 0, selfeena_interrupt4);
287   timer_set(device->machine, cpu_clocks_to_attotime(device, 5000), NULL, 0, selfeena_interrupt4);
288288   cpu_set_input_line(device, 6, HOLD_LINE);
289289}
290290
291291static TIMER_CALLBACK( sbm_interrupt5 )//4
292292{
293   cpu_set_input_line(machine->cpu[0],5,HOLD_LINE);
293   cputag_set_input_line(machine, "maincpu", 5, HOLD_LINE);
294294}
295295
296296static INTERRUPT_GEN( sbm_interrupt )//5
297297{
298   timer_set(device->machine, cpu_clocks_to_attotime(device,10000), NULL, 0, sbm_interrupt5);
298   timer_set(device->machine, cpu_clocks_to_attotime(device, 10000), NULL, 0, sbm_interrupt5);
299299   cpu_set_input_line(device, 4, HOLD_LINE);
300300}
301301
r4679r4680
20752075/* handler called by the YM2610 emulator when the internal timers cause an IRQ */
20762076static void irqhandler(const device_config *device, int irq)
20772077{
2078   cpu_set_input_line(device->machine->cpu[1],0,irq ? ASSERT_LINE : CLEAR_LINE);
2078   cputag_set_input_line(device->machine, "audiocpu", 0, irq ? ASSERT_LINE : CLEAR_LINE);
20792079}
20802080
20812081static const ym2610_interface ym2610_config =
src/mame/drivers/jackal.c
r4679r4680
243243   if (irq_enable)
244244   {
245245      cpu_set_input_line(device, 0, HOLD_LINE);
246      cpu_set_input_line(device->machine->cpu[1], INPUT_LINE_NMI, PULSE_LINE);
246      cputag_set_input_line(device->machine, "slave", INPUT_LINE_NMI, PULSE_LINE);
247247   }
248248}
249249
src/mame/drivers/tank8.c
r4679r4680
1414
1515void tank8_set_collision(running_machine *machine, int index)
1616{
17   cpu_set_input_line(machine->cpu[0], 0, ASSERT_LINE);
17   cputag_set_input_line(machine, "maincpu", 0, ASSERT_LINE);
1818
1919   collision_index = index;
2020}
r4679r4680
4141{
4242   collision_index &= ~0x3f;
4343
44   cpu_set_input_line(space->machine->cpu[0], 0, CLEAR_LINE);
44   cputag_set_input_line(space->machine, "maincpu", 0, CLEAR_LINE);
4545}
4646
4747static WRITE8_DEVICE_HANDLER( tank8_crash_w )
src/mame/drivers/viper.c
r4679r4680
442442      }
443443
444444      default:
445         fatalerror("voodoo3_pci_r: %08X at %08X", reg, cpu_get_pc(device->machine->cpu[0]));
445         fatalerror("voodoo3_pci_r: %08X at %08X", reg, cpu_get_pc(cputag_get_cpu(device->machine, "maincpu")));
446446   }
447447   return 0;
448448}
r4679r4680
510510      }
511511
512512      default:
513         fatalerror("voodoo3_pci_w: %08X, %08X at %08X", data, reg, cpu_get_pc(device->machine->cpu[0]));
513         fatalerror("voodoo3_pci_w: %08X, %08X at %08X", data, reg, cpu_get_pc(cputag_get_cpu(device->machine, "maincpu")));
514514   }
515515}
516516
r4679r4680
637637
638638   DRIVER_INIT_CALL(viper);
639639
640   memory_install_readwrite64_device_handler( cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), ide, 0xff000000, 0xff000fff, 0, 0, cf_card_data_r, cf_card_data_w );
641   memory_install_readwrite64_device_handler( cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), ide, 0xff200000, 0xff200fff, 0, 0, cf_card_r, cf_card_w );
640   memory_install_readwrite64_device_handler( cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), ide, 0xff000000, 0xff000fff, 0, 0, cf_card_data_r, cf_card_data_w );
641   memory_install_readwrite64_device_handler( cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), ide, 0xff200000, 0xff200fff, 0, 0, cf_card_r, cf_card_w );
642642}
643643
644644
src/mame/drivers/namcos86.c
r4679r4680
266266
267267static WRITE8_HANDLER( int_ack1_w )
268268{
269   cpu_set_input_line(space->machine->cpu[0], 0, CLEAR_LINE);
269   cputag_set_input_line(space->machine, "cpu1", 0, CLEAR_LINE);
270270}
271271
272272static WRITE8_HANDLER( int_ack2_w )
273273{
274   cpu_set_input_line(space->machine->cpu[1], 0, CLEAR_LINE);
274   cputag_set_input_line(space->machine, "cpu2", 0, CLEAR_LINE);
275275}
276276
277277
r4679r4680
360360
361361   AM_RANGE(0x4000, 0x5fff) AM_READWRITE(rthunder_spriteram_r,rthunder_spriteram_w)
362362
363   AM_RANGE(0x6000, 0x7fff) AM_READ(SMH_BANK1)
363   AM_RANGE(0x6000, 0x7fff) AM_READ(SMH_BANK(1))
364364   AM_RANGE(0x8000, 0xffff) AM_ROM
365365
366366   /* ROM & Voice expansion board - only some games have it */
r4679r4680
387387   AM_RANGE(ADDR_SPRITE+0x0000, ADDR_SPRITE+0x1fff) AM_READWRITE(rthunder_spriteram_r,rthunder_spriteram_w) AM_BASE(&rthunder_spriteram)   \
388388   AM_RANGE(ADDR_VIDEO1+0x0000, ADDR_VIDEO1+0x1fff) AM_READWRITE(rthunder_videoram1_r,rthunder_videoram1_w)   \
389389   AM_RANGE(ADDR_VIDEO2+0x0000, ADDR_VIDEO2+0x1fff) AM_READWRITE(rthunder_videoram2_r,rthunder_videoram2_w)   \
390   AM_RANGE(ADDR_ROM+0x0000, ADDR_ROM+0x1fff) AM_READ(SMH_BANK2)                        \
390   AM_RANGE(ADDR_ROM+0x0000, ADDR_ROM+0x1fff) AM_READ(SMH_BANK(2))                        \
391391   AM_RANGE(0x8000, 0xffff) AM_ROM                                                \
392392/*  { ADDR_BANK+0x00, ADDR_BANK+0x02 } layer 2 scroll registers would be here */            \
393393   AM_RANGE(ADDR_BANK+0x03, ADDR_BANK+0x03) AM_WRITE(bankswitch2_w)                     \
r4679r4680
15061506   /* shuffle tile ROMs so regular gfx unpack routines can be used */
15071507   gfx = memory_region(machine, "gfx1");
15081508   size = memory_region_length(machine, "gfx1") * 2 / 3;
1509   buffer = malloc_or_die( size );
1509   buffer = alloc_array_or_die(UINT8, size );
15101510
15111511   {
15121512      UINT8 *dest1 = gfx;
r4679r4680
15311531
15321532   gfx = memory_region(machine, "gfx2");
15331533   size = memory_region_length(machine, "gfx2") * 2 / 3;
1534   buffer = malloc_or_die( size );
1534   buffer = alloc_array_or_die(UINT8, size );
15351535
15361536   {
15371537      UINT8 *dest1 = gfx;
src/mame/drivers/suna8.c
r4679r4680
9898   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
9999   UINT8   *RAM   =   memory_region(machine, "maincpu");
100100   size_t   size   =   memory_region_length(machine, "maincpu");
101   UINT8   *decrypt = auto_malloc(size);
101   UINT8   *decrypt = auto_alloc_array(machine, UINT8, size);
102102   int i;
103103
104104   memory_set_decrypted_region(space, 0x0000, 0x7fff, decrypt);
r4679r4680
208208   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
209209   UINT8   *RAM   =   memory_region(machine, "maincpu");
210210   size_t   size   =   memory_region_length(machine, "maincpu");
211   UINT8   *decrypt =    auto_malloc(size);
211   UINT8   *decrypt =    auto_alloc_array(machine, UINT8, size);
212212   UINT8 x;
213213   int i;
214214
r4679r4680
282282   }
283283
284284   memory_configure_bank(machine, 1, 0, 16, memory_region(machine, "maincpu") + 0x10000, 0x4000);
285   memory_configure_bank(machine, 2, 0, 2, auto_malloc(0x2000 * 2), 0x2000);
285   memory_configure_bank(machine, 2, 0, 2, auto_alloc_array(machine, UINT8, 0x2000 * 2), 0x2000);
286286}
287287
288288
r4679r4680
295295   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
296296   UINT8   *RAM   =   memory_region(machine, "maincpu");
297297   size_t   size   =   memory_region_length(machine, "maincpu");
298   UINT8   *decrypt =    auto_malloc(size);
298   UINT8   *decrypt =    auto_alloc_array(machine, UINT8, size);
299299   UINT8 x;
300300   int i;
301301
r4679r4680
363363   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
364364   UINT8   *RAM   =   memory_region(machine, "maincpu");
365365   size_t   size   =   memory_region_length(machine, "maincpu");
366   UINT8   *decrypt =    auto_malloc(size);
366   UINT8   *decrypt =    auto_alloc_array(machine, UINT8, size);
367367   UINT8 x;
368368   int i;
369369
src/mame/drivers/vaportra.c
r4679r4680
3030   /* Force synchronisation between CPUs with fake timer */
3131   timer_call_after_resynch(space->machine, NULL, 0, NULL);
3232   soundlatch_w(space,0,data & 0xff);
33   cpu_set_input_line(space->machine->cpu[1],0,ASSERT_LINE);
33   cputag_set_input_line(space->machine, "audiocpu", 0, ASSERT_LINE);
3434}
3535
3636static READ16_HANDLER( vaportra_control_r )
r4679r4680
7575
7676static READ8_HANDLER( vaportra_soundlatch_r )
7777{
78   cpu_set_input_line(space->machine->cpu[1],0,CLEAR_LINE);
78   cputag_set_input_line(space->machine, "audiocpu", 0, CLEAR_LINE);
7979   return soundlatch_r(space, offset);
8080}
8181
r4679r4680
8686   AM_RANGE(0x120000, 0x120001) AM_DEVREADWRITE("oki1", okim6295_r, okim6295_w)
8787   AM_RANGE(0x130000, 0x130001) AM_DEVREADWRITE("oki2", okim6295_r, okim6295_w)
8888   AM_RANGE(0x140000, 0x140001) AM_READ(vaportra_soundlatch_r)
89   AM_RANGE(0x1f0000, 0x1f1fff) AM_READWRITE(SMH_BANK8,SMH_BANK8)  /* ??? LOOKUP ??? */
89   AM_RANGE(0x1f0000, 0x1f1fff) AM_READWRITE(SMH_BANK(8),SMH_BANK(8))  /* ??? LOOKUP ??? */
9090   AM_RANGE(0x1fec00, 0x1fec01) AM_WRITE(h6280_timer_w)
9191   AM_RANGE(0x1ff400, 0x1ff403) AM_WRITE(h6280_irq_status_w)
9292ADDRESS_MAP_END
r4679r4680
206206
207207static void sound_irq(const device_config *device, int state)
208208{
209   cpu_set_input_line(device->machine->cpu[1],1,state); /* IRQ 2 */
209   cputag_set_input_line(device->machine, "audiocpu", 1, state); /* IRQ 2 */
210210}
211211
212212static const ym2151_interface ym2151_config =
src/mame/drivers/chanbara.c
r4679r4680
184184   AM_RANGE(0x2001, 0x2001) AM_READ_PORT("SYSTEM")
185185   AM_RANGE(0x2003, 0x2003) AM_READ_PORT("JOY")
186186   AM_RANGE(0x3800, 0x3801) AM_DEVREADWRITE("ym", ym2203_r, ym2203_w)
187   AM_RANGE(0x4000, 0x7fff) AM_READ(SMH_BANK1)
187   AM_RANGE(0x4000, 0x7fff) AM_READ(SMH_BANK(1))
188188   AM_RANGE(0x8000, 0xffff) AM_READ(SMH_ROM)
189189ADDRESS_MAP_END
190190
r4679r4680
312312
313313static void sound_irq(const device_config *device, int linestate)
314314{
315   cpu_set_input_line(device->machine->cpu[0],0,linestate);
315   cputag_set_input_line(device->machine, "maincpu", 0, linestate);
316316}
317317
318318
src/mame/drivers/btime.c
r4679r4680
185185   if (audio_nmi_enable_type == AUDIO_ENABLE_DIRECT)
186186   {
187187      audio_nmi_enabled = data & 1;
188      cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_NMI, (audio_nmi_enabled && audio_nmi_state) ? ASSERT_LINE : CLEAR_LINE);
188      cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, (audio_nmi_enabled && audio_nmi_state) ? ASSERT_LINE : CLEAR_LINE);
189189   }
190190}
191191
r4679r4680
195195   if (audio_nmi_enable_type == AUDIO_ENABLE_AY8910)
196196   {
197197      audio_nmi_enabled = ~data & 1;
198      cpu_set_input_line(device->machine->cpu[1], INPUT_LINE_NMI, (audio_nmi_enabled && audio_nmi_state) ? ASSERT_LINE : CLEAR_LINE);
198      cputag_set_input_line(device->machine, "audiocpu", INPUT_LINE_NMI, (audio_nmi_enabled && audio_nmi_state) ? ASSERT_LINE : CLEAR_LINE);
199199   }
200200}
201201
r4679r4680
203203{
204204   int scanline = param;
205205   audio_nmi_state = scanline & 8;
206   cpu_set_input_line(timer->machine->cpu[1], INPUT_LINE_NMI, (audio_nmi_enabled && audio_nmi_state) ? ASSERT_LINE : CLEAR_LINE);
206   cputag_set_input_line(timer->machine, "audiocpu", INPUT_LINE_NMI, (audio_nmi_enabled && audio_nmi_state) ? ASSERT_LINE : CLEAR_LINE);
207207}
208208
209209
r4679r4680
524524static INPUT_CHANGED( coin_inserted_irq_hi )
525525{
526526   if (newval)
527      cpu_set_input_line(field->port->machine->cpu[0], 0, HOLD_LINE);
527      cputag_set_input_line(field->port->machine, "maincpu", 0, HOLD_LINE);
528528}
529529
530530static INPUT_CHANGED( coin_inserted_irq_lo )
531531{
532532   if (!newval)
533      cpu_set_input_line(field->port->machine->cpu[0], 0, HOLD_LINE);
533      cputag_set_input_line(field->port->machine, "maincpu", 0, HOLD_LINE);
534534}
535535
536536static INPUT_CHANGED( coin_inserted_nmi_lo )
537537{
538   cpu_set_input_line(field->port->machine->cpu[0], INPUT_LINE_NMI, newval ? CLEAR_LINE : ASSERT_LINE);
538   cputag_set_input_line(field->port->machine, "maincpu", INPUT_LINE_NMI, newval ? CLEAR_LINE : ASSERT_LINE);
539539}
540540
541541
542542static WRITE8_HANDLER( audio_command_w )
543543{
544544   soundlatch_w(space,offset,data);
545   cpu_set_input_line(space->machine->cpu[1], 0, ASSERT_LINE);
545   cputag_set_input_line(space->machine, "audiocpu", 0, ASSERT_LINE);
546546}
547547
548548static READ8_HANDLER( audio_command_r )
549549{
550   cpu_set_input_line(space->machine->cpu[1], 0, CLEAR_LINE);
550   cputag_set_input_line(space->machine, "audiocpu", 0, CLEAR_LINE);
551551   return soundlatch_r(space,offset);
552552}
553553
r4679r4680
19811981static void decrypt_C10707_cpu(running_machine *machine, const char *cputag)
19821982{
19831983   const address_space *space = cputag_get_address_space(machine, cputag, ADDRESS_SPACE_PROGRAM);
1984   UINT8 *decrypt = auto_malloc(0x10000);
1984   UINT8 *decrypt = auto_alloc_array(machine, UINT8, 0x10000);
19851985   UINT8 *rom = memory_region(machine, cputag);
19861986   offs_t addr;
19871987
r4679r4680
19911991   for (addr = 0; addr < 0x10000; addr++)
19921992      decrypt[addr] = swap_bits_5_6(rom[addr]);
19931993
1994   if (space->cpu == machine->cpu[0])
1994   if (space->cpu == cputag_get_cpu(machine, "maincpu"))
19951995      decrypted = decrypt;
19961996}
19971997
r4679r4680
20132013   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
20142014   UINT8 *rom = memory_region(machine, "maincpu");
20152015
2016   decrypted = auto_malloc(0x10000);
2016   decrypted = auto_alloc_array(machine, UINT8, 0x10000);
20172017   memory_set_decrypted_region(space, 0x0000, 0xffff, decrypted);
20182018
20192019   /* For now, just copy the RAM array over to ROM. Decryption will happen */
r4679r4680
20782078{
20792079   decrypt_C10707_cpu(machine, "maincpu");
20802080
2081   memory_install_read8_handler(cpu_get_address_space(machine->cpu[1], ADDRESS_SPACE_PROGRAM), 0x0200, 0x0fff, 0, 0, SMH_BANK10);
2081   memory_install_read8_handler(cputag_get_address_space(machine, "audiocpu", ADDRESS_SPACE_PROGRAM), 0x0200, 0x0fff, 0, 0, (read8_space_func)SMH_BANK(10));
20822082   memory_set_bankptr(machine, 10, memory_region(machine, "audiocpu") + 0xe200);
20832083   audio_nmi_enable_type = AUDIO_ENABLE_DIRECT;
20842084}
r4679r4680
20932093{
20942094   decrypt_C10707_cpu(machine, "maincpu");
20952095
2096   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xc15f, 0xc15f, 0, 0, wtennis_reset_hack_r);
2096   memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xc15f, 0xc15f, 0, 0, wtennis_reset_hack_r);
20972097
2098   memory_install_read8_handler(cpu_get_address_space(machine->cpu[1], ADDRESS_SPACE_PROGRAM), 0x0200, 0x0fff, 0, 0, SMH_BANK10);
2098   memory_install_read8_handler(cputag_get_address_space(machine, "audiocpu", ADDRESS_SPACE_PROGRAM), 0x0200, 0x0fff, 0, 0, (read8_space_func)SMH_BANK(10));
20992099   memory_set_bankptr(machine, 10, memory_region(machine, "audiocpu") + 0xe200);
21002100   audio_nmi_enable_type = AUDIO_ENABLE_DIRECT;
21012101}
src/mame/drivers/qdrmfgp.c
r4679r4680
4646
4747static CUSTOM_INPUT( inputs_r )
4848{
49   const char *tag1 = param;
49   const char *tag1 = (const char *)param;
5050   const char *tag2 = tag1 + strlen(tag1) + 1;
5151   return input_port_read(field->port->machine, (control & 0x0080) ? tag1 : tag2);
5252}
r4679r4680
283283   if (control & 0x0008)
284284   {
285285      if (state != CLEAR_LINE)
286         cpu_set_input_line(device->machine->cpu[0], 4, HOLD_LINE);
286         cputag_set_input_line(device->machine, "maincpu", 4, HOLD_LINE);
287287      else
288         cpu_set_input_line(device->machine->cpu[0], 4, CLEAR_LINE);
288         cputag_set_input_line(device->machine, "maincpu", 4, CLEAR_LINE);
289289   }
290290}
291291
r4679r4680
294294static TIMER_CALLBACK( gp2_timer_callback )
295295{
296296   if (control & 0x0004)
297      cpu_set_input_line(machine->cpu[0], 3, HOLD_LINE);
297      cputag_set_input_line(machine, "maincpu", 3, HOLD_LINE);
298298}
299299
300300static INTERRUPT_GEN(qdrmfgp2_interrupt)
r4679r4680
313313         if (gp2_irq_control)
314314            gp2_irq_control = 0;
315315         else
316            cpu_set_input_line(device->machine->cpu[0], 5, HOLD_LINE);
317      } else {
318         cpu_set_input_line(device->machine->cpu[0], 5, CLEAR_LINE);
316            cputag_set_input_line(device->machine, "maincpu", 5, HOLD_LINE);
319317      }
318      else
319      {
320         cputag_set_input_line(device->machine, "maincpu", 5, CLEAR_LINE);
321      }
320322   }
321323}
322324
r4679r4680
327329 *
328330 *************************************/
329331
330static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 16 )
331   AM_RANGE(0x000000, 0x0fffff) AM_READ(SMH_ROM)
332   AM_RANGE(0x100000, 0x10ffff) AM_READ(SMH_RAM)            /* work ram */
333   AM_RANGE(0x180000, 0x183fff) AM_READ(SMH_RAM)            /* backup ram */
334   AM_RANGE(0x280000, 0x280fff) AM_READ(SMH_RAM)            /* color ram */
335   AM_RANGE(0x320000, 0x32001f) AM_READ(K053252_word_r)      /* ccu */
336   AM_RANGE(0x330000, 0x330001) AM_READ_PORT("SENSOR")         /* battery power & service sw */
337   AM_RANGE(0x340000, 0x340001) AM_READ_PORT("340000")         /* inputport */
338   AM_RANGE(0x800000, 0x80045f) AM_DEVREAD8("konami", k054539_r, 0x00ff)      /* sound regs */
339   AM_RANGE(0x880000, 0x881fff) AM_READ(K056832_ram_word_r)   /* vram */
340   AM_RANGE(0x882000, 0x883fff) AM_READ(K056832_ram_word_r)   /* vram (mirror) */
341   AM_RANGE(0x900000, 0x901fff) AM_READ(v_rom_r)            /* gfxrom through */
342   AM_RANGE(0xa00000, 0xa0000f) AM_DEVREAD("ide", ide_std_r)            /* IDE control regs */
343   AM_RANGE(0xa4000c, 0xa4000f) AM_DEVREAD("ide", ide_alt_r)            /* IDE status control reg */
344   AM_RANGE(0xc00000, 0xcbffff) AM_READ(sndram_r)            /* sound ram */
332static ADDRESS_MAP_START( qdrmfgp_map, ADDRESS_SPACE_PROGRAM, 16 )
333   AM_RANGE(0x000000, 0x0fffff) AM_ROM
334   AM_RANGE(0x100000, 0x10ffff) AM_RAM AM_BASE(&workram)                               /* work ram */
335   AM_RANGE(0x180000, 0x183fff) AM_RAM AM_BASE(&generic_nvram16) AM_SIZE(&generic_nvram_size)   /* backup ram */
336   AM_RANGE(0x280000, 0x280fff) AM_RAM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE(&paletteram16)
337   AM_RANGE(0x300000, 0x30003f) AM_WRITE(K056832_word_w)                              /* video reg */
338   AM_RANGE(0x320000, 0x32001f) AM_READWRITE(K053252_word_r,K053252_word_w)               /* ccu */
339   AM_RANGE(0x330000, 0x330001) AM_READ_PORT("SENSOR")                                 /* battery power & service sw */
340   AM_RANGE(0x340000, 0x340001) AM_READ_PORT("340000")                                 /* inputport */
341   AM_RANGE(0x350000, 0x350001) AM_WRITENOP                                       /* unknown */
342   AM_RANGE(0x360000, 0x360001) AM_WRITENOP                                       /* unknown */
343   AM_RANGE(0x370000, 0x370001) AM_WRITE(gp_control_w)                                 /* control reg */
344   AM_RANGE(0x380000, 0x380001) AM_WRITENOP                                       /* Watchdog */
345   AM_RANGE(0x800000, 0x80045f) AM_DEVREADWRITE8("konami", k054539_r,k054539_w, 0x00ff)      /* sound regs */
346   AM_RANGE(0x880000, 0x881fff) AM_READWRITE(K056832_ram_word_r,K056832_ram_word_w)         /* vram */
347   AM_RANGE(0x882000, 0x883fff) AM_READWRITE(K056832_ram_word_r,K056832_ram_word_w)         /* vram (mirror) */
348   AM_RANGE(0x900000, 0x901fff) AM_READ(v_rom_r)                                    /* gfxrom through */
349   AM_RANGE(0xa00000, 0xa0000f) AM_DEVREADWRITE("ide", ide_std_r,ide_std_w)               /* IDE control regs */
350   AM_RANGE(0xa4000c, 0xa4000f) AM_DEVREADWRITE("ide", ide_alt_r,ide_alt_w)               /* IDE status control reg */
351   AM_RANGE(0xc00000, 0xcbffff) AM_READWRITE(sndram_r,sndram_w)                        /* sound ram */
345352ADDRESS_MAP_END
346353
347static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 16 )
348   AM_RANGE(0x000000, 0x0fffff) AM_WRITE(SMH_ROM)
349   AM_RANGE(0x100000, 0x10ffff) AM_WRITE(SMH_RAM) AM_BASE(&workram)    /* work ram */
350   AM_RANGE(0x180000, 0x183fff) AM_WRITE(SMH_RAM) AM_BASE(&generic_nvram16) AM_SIZE(&generic_nvram_size)   /* backup ram */
351   AM_RANGE(0x280000, 0x280fff) AM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE(&paletteram16)
352   AM_RANGE(0x300000, 0x30003f) AM_WRITE(K056832_word_w)      /* video reg */
353   AM_RANGE(0x320000, 0x32001f) AM_WRITE(K053252_word_w)      /* ccu */
354   AM_RANGE(0x350000, 0x350001) AM_WRITENOP         /* unknown */
355   AM_RANGE(0x360000, 0x360001) AM_WRITENOP         /* unknown */
356   AM_RANGE(0x370000, 0x370001) AM_WRITE(gp_control_w)         /* control reg */
357   AM_RANGE(0x380000, 0x380001) AM_WRITENOP         /* Watchdog */
358   AM_RANGE(0x800000, 0x80045f) AM_DEVWRITE8("konami", k054539_w, 0x00ff)      /* sound regs */
359   AM_RANGE(0x880000, 0x881fff) AM_WRITE(K056832_ram_word_w)   /* vram */
360   AM_RANGE(0x882000, 0x883fff) AM_WRITE(K056832_ram_word_w)   /* vram (mirror) */
361   AM_RANGE(0xa00000, 0xa0000f) AM_DEVWRITE("ide", ide_std_w)         /* IDE control regs */
362   AM_RANGE(0xa4000c, 0xa4000f) AM_DEVWRITE("ide", ide_alt_w)         /* IDE status control reg */
363   AM_RANGE(0xc00000, 0xcbffff) AM_WRITE(sndram_w)            /* sound ram */
364ADDRESS_MAP_END
365354
366
367static ADDRESS_MAP_START( gp2_readmem, ADDRESS_SPACE_PROGRAM, 16 )
368   AM_RANGE(0x000000, 0x0fffff) AM_READ(SMH_ROM)
369   AM_RANGE(0x100000, 0x110fff) AM_READ(SMH_RAM)            /* work ram */
370   AM_RANGE(0x180000, 0x183fff) AM_READ(SMH_RAM)            /* backup ram */
371   AM_RANGE(0x280000, 0x280fff) AM_READ(SMH_RAM)            /* color ram */
372   AM_RANGE(0x320000, 0x32001f) AM_READ(K053252_word_r)      /* ccu */
373   AM_RANGE(0x330000, 0x330001) AM_READ_PORT("SENSOR")         /* battery power & service */
374   AM_RANGE(0x340000, 0x340001) AM_READ_PORT("340000")         /* inputport */
375   AM_RANGE(0x800000, 0x80045f) AM_DEVREAD8("konami", k054539_r, 0x00ff)      /* sound regs */
376   AM_RANGE(0x880000, 0x881fff) AM_READ(gp2_vram_r)         /* vram */
377   AM_RANGE(0x89f000, 0x8a0fff) AM_READ(gp2_vram_mirror_r)      /* vram (mirror) */
378   AM_RANGE(0x900000, 0x901fff) AM_READ(v_rom_r)            /* gfxrom through */
379   AM_RANGE(0xa00000, 0xa0000f) AM_READ(gp2_ide_std_r)         /* IDE control regs */
380   AM_RANGE(0xa4000c, 0xa4000f) AM_DEVREAD("ide", ide_alt_r)            /* IDE status control reg */
381   AM_RANGE(0xc00000, 0xcbffff) AM_READ(sndram_r)            /* sound ram */
355static ADDRESS_MAP_START( qdrmfgp2_map, ADDRESS_SPACE_PROGRAM, 16 )
356   AM_RANGE(0x000000, 0x0fffff) AM_ROM
357   AM_RANGE(0x100000, 0x110fff) AM_RAM AM_BASE(&workram)                              /* work ram */
358   AM_RANGE(0x180000, 0x183fff) AM_RAM AM_BASE(&generic_nvram16) AM_SIZE(&generic_nvram_size)   /* backup ram */
359   AM_RANGE(0x280000, 0x280fff) AM_RAM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE(&paletteram16)
360   AM_RANGE(0x300000, 0x30003f) AM_WRITE(K056832_word_w)                              /* video reg */
361   AM_RANGE(0x320000, 0x32001f) AM_READWRITE(K053252_word_r,K053252_word_w)               /* ccu */
362   AM_RANGE(0x330000, 0x330001) AM_READ_PORT("SENSOR")                                 /* battery power & service */
363   AM_RANGE(0x340000, 0x340001) AM_READ_PORT("340000")                                 /* inputport */
364   AM_RANGE(0x350000, 0x350001) AM_WRITENOP                                       /* unknown */
365   AM_RANGE(0x360000, 0x360001) AM_WRITENOP                                       /* unknown */
366   AM_RANGE(0x370000, 0x370001) AM_WRITE(gp2_control_w)                              /* control reg */
367   AM_RANGE(0x380000, 0x380001) AM_WRITENOP                                       /* Watchdog */
368   AM_RANGE(0x800000, 0x80045f) AM_DEVREADWRITE8("konami", k054539_r,k054539_w, 0x00ff)      /* sound regs */
369   AM_RANGE(0x880000, 0x881fff) AM_READWRITE(gp2_vram_r,gp2_vram_w)                     /* vram */
370   AM_RANGE(0x89f000, 0x8a0fff) AM_READWRITE(gp2_vram_mirror_r,gp2_vram_mirror_w)            /* vram (mirror) */
371   AM_RANGE(0x900000, 0x901fff) AM_READ(v_rom_r)                                    /* gfxrom through */
372   AM_RANGE(0xa00000, 0xa0000f) AM_READ(gp2_ide_std_r)   AM_DEVWRITE("ide", ide_std_w)         /* IDE control regs */
373   AM_RANGE(0xa4000c, 0xa4000f) AM_DEVREADWRITE("ide", ide_alt_r,ide_alt_w)               /* IDE status control reg */
374   AM_RANGE(0xc00000, 0xcbffff) AM_READWRITE(sndram_r,sndram_w)                        /* sound ram */
382375ADDRESS_MAP_END
383376
384static ADDRESS_MAP_START( gp2_writemem, ADDRESS_SPACE_PROGRAM, 16 )
385   AM_RANGE(0x000000, 0x0fffff) AM_WRITE(SMH_ROM)
386   AM_RANGE(0x100000, 0x110fff) AM_WRITE(SMH_RAM) AM_BASE(&workram)   /* work ram */
387   AM_RANGE(0x180000, 0x183fff) AM_WRITE(SMH_RAM) AM_BASE(&generic_nvram16) AM_SIZE(&generic_nvram_size)   /* backup ram */
388   AM_RANGE(0x280000, 0x280fff) AM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE(&paletteram16)
389   AM_RANGE(0x300000, 0x30003f) AM_WRITE(K056832_word_w)      /* video reg */
390   AM_RANGE(0x320000, 0x32001f) AM_WRITE(K053252_word_w)      /* ccu */
391   AM_RANGE(0x350000, 0x350001) AM_WRITENOP         /* unknown */
392   AM_RANGE(0x360000, 0x360001) AM_WRITENOP         /* unknown */
393   AM_RANGE(0x370000, 0x370001) AM_WRITE(gp2_control_w)      /* control reg */
394   AM_RANGE(0x380000, 0x380001) AM_WRITENOP         /* Watchdog */
395   AM_RANGE(0x800000, 0x80045f) AM_DEVWRITE8("konami", k054539_w, 0x00ff)      /* sound regs */
396   AM_RANGE(0x880000, 0x881fff) AM_WRITE(gp2_vram_w)         /* vram */
397   AM_RANGE(0x89f000, 0x8a0fff) AM_WRITE(gp2_vram_mirror_w)   /* vram (mirror) */
398   AM_RANGE(0xa00000, 0xa0000f) AM_DEVWRITE("ide", ide_std_w)         /* IDE control regs */
399   AM_RANGE(0xa4000c, 0xa4000f) AM_DEVWRITE("ide", ide_alt_w)         /* IDE status control reg */
400   AM_RANGE(0xc00000, 0xcbffff) AM_WRITE(sndram_w)            /* sound ram */
401ADDRESS_MAP_END
402377
403
404378/*************************************
405379 *
406380 *  Port definitions
r4679r4680
590564static void sound_irq(const device_config *device)
591565{
592566   if (control & 0x0001)
593      cpu_set_input_line(device->machine->cpu[0], 1, HOLD_LINE);
567      cputag_set_input_line(device->machine, "maincpu", 1, HOLD_LINE);
594568}
595569
596570static const k054539_interface k054539_config =
r4679r4680
646620
647621   /* basic machine hardware */
648622   MDRV_CPU_ADD("maincpu", M68000, 32000000/2)   /*  16.000 MHz */
649   MDRV_CPU_PROGRAM_MAP(readmem,writemem)
623   MDRV_CPU_PROGRAM_MAP(qdrmfgp_map,0)
650624   MDRV_CPU_VBLANK_INT_HACK(qdrmfgp_interrupt, 2)
651625
652626   MDRV_MACHINE_START(qdrmfgp)
r4679r4680
681655
682656   /* basic machine hardware */
683657   MDRV_CPU_ADD("maincpu", M68000, 32000000/2)   /*  16.000 MHz */
684   MDRV_CPU_PROGRAM_MAP(gp2_readmem,gp2_writemem)
658   MDRV_CPU_PROGRAM_MAP(qdrmfgp2_map,0)
685659   MDRV_CPU_VBLANK_INT("screen", qdrmfgp2_interrupt)
686660
687661   MDRV_MACHINE_START(qdrmfgp)
src/mame/drivers/m14.c
r0r4680
1/********************************************************************************************
2
3M14 Hardware (c) 1979 Irem
4
5driver by Angelo Salese
6
7TODO:
8- Check if the coin latch are correct and understand why the proper gameplay looks stiff;
9- Sound (very likely to be discrete);
10- What are the high 4 bits in the colorram for? They are used on the tiles only, left-over?
11
12==============================================================================================
13x (Mystery Rom)
14(c)1978-1981? Irem?
15PCB No. :M14S-2
16    :M14L-2
17CPU :NEC D8085AC
18Sound   :?
19OSC :6MHz x2
20
21mgpb1.bin
22mgpa2.bin
23mgpa3.bin
24mgpa4.bin
25mgpa5.bin
26mgpb6.bin
27mgpa7.bin
28mgpb8.bin
29
30mgpa9.bin
31mgpa10.bin
32
33
34--- Team Japump!!! ---
35http://japump.i.am/
36Dumped by Chackn
3701/30/2000
38
39********************************************************************************************/
40
41#include "driver.h"
42#include "cpu/i8085/i8085.h"
43
44VIDEO_START( m14 )
45{
46
47}
48
49VIDEO_UPDATE( m14 )
50{
51   const gfx_element *gfx = screen->machine->gfx[0];
52   int count = 0;
53
54   int y,x;
55
56
57   for (y=0;y<32;y++)
58   {
59      for (x=0;x<32;x++)
60      {
61         int tile = videoram[count];
62         int colour = colorram[count] & 0x0f;
63         /* bits 4-7? */
64
65         drawgfx(bitmap,gfx,tile,colour,0,0,x*8,y*8,cliprect,TRANSPARENCY_NONE,0);
66
67         count++;
68      }
69   }
70   return 0;
71}
72
73static READ8_HANDLER( m14_rng_r )
74{
75   /* graphic artifacts happens if this doesn't return random values. */
76   return mame_rand(space->machine);
77}
78
79static WRITE8_HANDLER( test_w )
80{
81   static UINT8 x[5];
82
83   x[offset] = data;
84
85   //popmessage("%02x %02x %02x %02x %02x",x[0],x[1],x[2],x[3],x[4]);
86}
87
88static ADDRESS_MAP_START( m14_map, ADDRESS_SPACE_PROGRAM, 8 )
89   AM_RANGE(0x0000, 0x1fff) AM_ROM
90   AM_RANGE(0x2000, 0x23ff) AM_RAM
91   AM_RANGE(0xe000, 0xe3ff) AM_RAM AM_BASE(&videoram)
92   AM_RANGE(0xe400, 0xe7ff) AM_RAM AM_BASE(&colorram)
93ADDRESS_MAP_END
94
95static ADDRESS_MAP_START( m14_io_map, ADDRESS_SPACE_IO, 8 )
96   ADDRESS_MAP_GLOBAL_MASK(0xff)
97   AM_RANGE(0xf8, 0xf8) AM_READ_PORT("IN0")
98   AM_RANGE(0xf9, 0xf9) AM_READ_PORT("IN1")
99   AM_RANGE(0xfa, 0xfa) AM_READ(m14_rng_r)
100   AM_RANGE(0xfb, 0xfb) AM_READ_PORT("IN3")
101   AM_RANGE(0xf8, 0xfc) AM_WRITE(test_w)
102ADDRESS_MAP_END
103
104static INPUT_CHANGED( left_coin_inserted )
105{
106   /* left coin insertion causes a rst6.5 (vector 0x34) */
107   cputag_set_input_line(field->port->machine, "maincpu", I8085_RST65_LINE, newval ? ASSERT_LINE : CLEAR_LINE);
108}
109
110static INPUT_CHANGED( right_coin_inserted )
111{
112   /* right coin insertion causes a rst5.5 (vector 0x2c) */
113   cputag_set_input_line(field->port->machine, "maincpu", I8085_RST55_LINE, newval ? ASSERT_LINE : CLEAR_LINE);
114}
115
116static INPUT_PORTS_START( m14 )
117   PORT_START("IN0") // paddle?
118   PORT_DIPNAME( 0x01, 0x00, "IN0" )
119   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
120   PORT_DIPSETTING(    0x01, DEF_STR( On ) )
121   PORT_DIPNAME( 0x02, 0x00, DEF_STR( Unknown ) )
122   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
123   PORT_DIPSETTING(    0x02, DEF_STR( On ) )
124   PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) )
125   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
126   PORT_DIPSETTING(    0x04, DEF_STR( On ) )
127   PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) )
128   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
129   PORT_DIPSETTING(    0x08, DEF_STR( On ) )
130   PORT_DIPNAME( 0x10, 0x00, DEF_STR( Unknown ) )
131   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
132   PORT_DIPSETTING(    0x10, DEF_STR( On ) )
133   PORT_DIPNAME( 0x20, 0x00, DEF_STR( Unknown ) )
134   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
135   PORT_DIPSETTING(    0x20, DEF_STR( On ) )
136   PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) )
137   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
138   PORT_DIPSETTING(    0x40, DEF_STR( On ) )
139   PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unknown ) )
140   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
141   PORT_DIPSETTING(    0x80, DEF_STR( On ) )
142
143   PORT_START("IN1")
144   PORT_DIPNAME( 0x01, 0x00, "IN1" )
145   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
146   PORT_DIPSETTING(    0x01, DEF_STR( On ) )
147   PORT_DIPNAME( 0x02, 0x00, DEF_STR( Unknown ) )
148   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
149   PORT_DIPSETTING(    0x02, DEF_STR( On ) )
150   PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) ) //this affects the medal settings
151   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
152   PORT_DIPSETTING(    0x04, DEF_STR( On ) )
153   PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) )
154   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
155   PORT_DIPSETTING(    0x08, DEF_STR( On ) )
156   PORT_DIPNAME( 0x10, 0x00, DEF_STR( Unknown ) )
157   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
158   PORT_DIPSETTING(    0x10, DEF_STR( On ) )
159   PORT_DIPNAME( 0x20, 0x20, "Freeze" )
160   PORT_DIPSETTING(    0x20, DEF_STR( No ) )
161   PORT_DIPSETTING(    0x00, DEF_STR( Yes ) )
162   PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) )
163   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
164   PORT_DIPSETTING(    0x40, DEF_STR( On ) )
165   PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unknown ) )
166   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
167   PORT_DIPSETTING(    0x80, DEF_STR( On ) )
168
169   PORT_START("IN3") //this whole port is stored at work ram $2112.
170   PORT_DIPNAME( 0x01, 0x00, "Show available tiles" ) // debug mode for the rng?
171   PORT_DIPSETTING(    0x00, DEF_STR( No ) )
172   PORT_DIPSETTING(    0x01, DEF_STR( Yes ) )
173   PORT_DIPNAME( 0x02, 0x00, DEF_STR( Unknown ) )
174   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
175   PORT_DIPSETTING(    0x02, DEF_STR( On ) )
176   PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) )
177   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
178   PORT_DIPSETTING(    0x04, DEF_STR( On ) )
179   PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) )
180   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
181   PORT_DIPSETTING(    0x08, DEF_STR( On ) )
182   PORT_DIPNAME( 0x10, 0x00, DEF_STR( Unknown ) )
183   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
184   PORT_DIPSETTING(    0x10, DEF_STR( On ) )
185   PORT_DIPNAME( 0x20, 0x00, DEF_STR( Unknown ) )
186   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
187   PORT_DIPSETTING(    0x20, DEF_STR( On ) )
188   PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) )
189   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
190   PORT_DIPSETTING(    0x40, DEF_STR( On ) )
191   PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unknown ) )
192   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
193   PORT_DIPSETTING(    0x80, DEF_STR( On ) )
194
195   PORT_START("FAKE")
196   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 ) PORT_IMPULSE(1) PORT_CHANGED(left_coin_inserted, 0)
197   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_COIN2 ) PORT_IMPULSE(1) PORT_CHANGED(right_coin_inserted, 0)
198INPUT_PORTS_END
199
200static const gfx_layout charlayout =
201{
202   8,8,
203   RGN_FRAC(1,1),
204   1,
205   { RGN_FRAC(0,1) },
206   { 0, 1, 2, 3, 4, 5, 6, 7 },
207   { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
208   8*8
209};
210
211static GFXDECODE_START( m14 )
212   GFXDECODE_ENTRY( "gfx1", 0, charlayout,     0, 0x10 )
213GFXDECODE_END
214
215static PALETTE_INIT( m14 )
216{
217   int i;
218
219   for (i = 0; i < 0x20; i++)
220   {
221      rgb_t color;
222
223      if (i & 0x01)
224         color = MAKE_RGB(pal1bit(i >> 1), pal1bit(i >> 2), pal1bit(i >> 3));
225      else
226         color = (i & 0x10) ? RGB_WHITE : RGB_BLACK;
227
228      palette_set_color(machine, i, color);
229   }
230}
231
232static INTERRUPT_GEN( m14_irq )
233{
234   cpu_set_input_line(device, I8085_RST75_LINE, ASSERT_LINE);
235   cpu_set_input_line(device, I8085_RST75_LINE, CLEAR_LINE);
236}
237
238static MACHINE_DRIVER_START( m14 )
239
240   /* basic machine hardware */
241   MDRV_CPU_ADD("maincpu",8085A,6000000)
242   MDRV_CPU_PROGRAM_MAP(m14_map,0)
243   MDRV_CPU_IO_MAP(m14_io_map,0)
244   MDRV_CPU_VBLANK_INT("screen",m14_irq)
245
246   /* video hardware */
247   MDRV_SCREEN_ADD("screen", RASTER)
248   MDRV_SCREEN_REFRESH_RATE(60)
249   MDRV_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) //not accurate
250   MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
251   MDRV_SCREEN_SIZE(32*8, 32*8)
252   MDRV_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 28*8-1)
253   MDRV_GFXDECODE(m14)
254   MDRV_PALETTE_LENGTH(0x20)
255   MDRV_PALETTE_INIT(m14)
256
257   MDRV_VIDEO_START(m14)
258   MDRV_VIDEO_UPDATE(m14)
259
260   /* sound hardware */
261//  MDRV_SPEAKER_STANDARD_MONO("mono")
262//  MDRV_SOUND_ADD("ay", AY8910, 8000000/4 /* guess */)
263//  MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
264MACHINE_DRIVER_END
265
266/***************************************************************************
267
268  Game driver(s)
269
270***************************************************************************/
271
272
273ROM_START( ptrmj )
274   ROM_REGION( 0x10000, "maincpu", 0 )
275   ROM_LOAD( "mgpb1.bin",   0x0000, 0x0400, CRC(47c041b8) SHA1(e834c375e689f99a13964863fc9847a8e148ec91) )
276   ROM_LOAD( "mgpa2.bin",   0x0400, 0x0400, CRC(cf8bfa23) SHA1(091055e803255f1b5520f50b31af7135d71d0a40) )
277   ROM_LOAD( "mgpa3.bin",   0x0800, 0x0400, CRC(a07a3093) SHA1(5b86bb11e83c06f828956e7db6dd2c105b023b03) )
278   ROM_LOAD( "mgpa4.bin",   0x0c00, 0x0400, CRC(a420241c) SHA1(7497d90014dabb49f9db1d5d8e3014c634045725) )
279   ROM_LOAD( "mgpa5.bin",   0x1000, 0x0400, CRC(a2df92a3) SHA1(97a3d4b188d26f172881f8cf86bdd83d549f5b74) )
280   ROM_LOAD( "mgpb6.bin",   0x1400, 0x0400, CRC(f5c0fcd4) SHA1(14e2d04be105caeb221dfc226f84cb1722ae2627) )
281   ROM_LOAD( "mgpa7.bin",   0x1800, 0x0400, CRC(56ed7eb2) SHA1(acf954bf4daadb225475937dd3c36baa996f7b65) )
282   ROM_LOAD( "mgpb8.bin",   0x1c00, 0x0400, CRC(3ecb8214) SHA1(8575bcb49f693aa8798b8a7d9a76392bfcc90e0e) )
283
284   ROM_REGION( 0x0800, "gfx1", ROMREGION_DISPOSE )
285   ROM_LOAD( "mgpa9.bin",   0x0000, 0x0400, CRC(cb68b4ec) SHA1(2cf596affb155ae38729fcd95cae424073faf74d) )
286   ROM_LOAD( "mgpa10.bin",  0x0400, 0x0400, CRC(e1a4ebdc) SHA1(d9df42424ede17f0634d8d0a56c0374a33c55333) )
287ROM_END
288
289GAME( 1979, ptrmj,  0,       m14,  m14,  0, ROT0, "Irem", "PT Reach Mahjong (Japan)", GAME_NO_SOUND|GAME_NOT_WORKING )
src/mame/drivers/cps1.c
r4679r4680
27362736
27372737static void cps1_irq_handler_mus(const device_config *device, int irq)
27382738{
2739   cpu_set_input_line(device->machine->cpu[1],0,irq ? ASSERT_LINE : CLEAR_LINE);
2739   cputag_set_input_line(device->machine, "audiocpu", 0, irq ? ASSERT_LINE : CLEAR_LINE);
27402740}
27412741
27422742static const ym2151_interface ym2151_config =
r4679r4680
28922892//  sample_buffer1 >>= 4;
28932893//  sample_select1 ^= 1;
28942894//  if (sample_select1 == 0)
2895//      cpu_set_input_line(machine->cpu[1], INPUT_LINE_NMI, PULSE_LINE);
2895//      cputag_set_input_line(machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
28962896}
28972897
28982898static void m5205_int2(const device_config *device)
r4679r4680
82688268{
82698269   /* Forgotten Worlds has a NEC uPD4701AC on the B-board handling dial inputs from the CN-MOWS connector. */
82708270   /* The memory mapping is handled by PAL LWIO */
8271   memory_install_write16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x800040, 0x800041, 0, 0, forgottn_dial_0_reset_w);
8272   memory_install_write16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x800048, 0x800049, 0, 0, forgottn_dial_1_reset_w);
8273   memory_install_read16_handler (cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x800052, 0x800055, 0, 0, forgottn_dial_0_r);
8274   memory_install_read16_handler (cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x80005a, 0x80005d, 0, 0, forgottn_dial_1_r);
8271   memory_install_write16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x800040, 0x800041, 0, 0, forgottn_dial_0_reset_w);
8272   memory_install_write16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x800048, 0x800049, 0, 0, forgottn_dial_1_reset_w);
8273   memory_install_read16_handler (cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x800052, 0x800055, 0, 0, forgottn_dial_0_r);
8274   memory_install_read16_handler (cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x80005a, 0x80005d, 0, 0, forgottn_dial_1_r);
82758275
82768276   DRIVER_INIT_CALL(cps1);
82778277}
r4679r4680
82808280{
82818281   /* This specific version of SF2 has the CPS-B custom mapped at a different address. */
82828282   /* The mapping is handled by a PAL on the B-board */
8283   memory_install_readwrite16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x800140, 0x80017f, 0, 0, SMH_UNMAP, SMH_UNMAP);
8284   memory_install_readwrite16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x8001c0, 0x8001ff, 0, 0, cps1_cps_b_r, cps1_cps_b_w);
8283   memory_install_readwrite16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x800140, 0x80017f, 0, 0, (read16_space_func)SMH_UNMAP, (write16_space_func)SMH_UNMAP);
8284   memory_install_readwrite16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x8001c0, 0x8001ff, 0, 0, cps1_cps_b_r, cps1_cps_b_w);
82858285
82868286   DRIVER_INIT_CALL(cps1);
82878287}
r4679r4680
82898289static DRIVER_INIT( sf2hack )
82908290{
82918291   /* some SF2 hacks have some inputs wired to the LSB instead of MSB */
8292   memory_install_read16_handler (cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x800018, 0x80001f, 0, 0, cps1_hack_dsw_r);
8292   memory_install_read16_handler (cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x800018, 0x80001f, 0, 0, cps1_hack_dsw_r);
82938293
82948294   DRIVER_INIT_CALL(cps1);
82958295}
r4679r4680
83228322{
83238323   /* Pang 3 is the only non-QSound game to have an EEPROM. */
83248324   /* It is mapped in the CPS-B address range so probably is on the C-board. */
8325   memory_install_readwrite16_handler (cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x80017a, 0x80017b, 0, 0, cps1_eeprom_port_r, cps1_eeprom_port_w);
8325   memory_install_readwrite16_handler (cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x80017a, 0x80017b, 0, 0, cps1_eeprom_port_r, cps1_eeprom_port_w);
83268326
83278327   DRIVER_INIT_CALL(cps1);
83288328}
r4679r4680
83738373      rom[i+3] = rom[i+6];
83748374      rom[i+6] = tmp;
83758375   }
8376   memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x70c01a, 0x70c01b, 0, 0, sf2mdt_r);
8377   memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x70c01c, 0x70c01d, 0, 0, sf2mdt_r);
8378   memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x70c01e, 0x70c01f, 0, 0, sf2mdt_r);
8379   memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x70c010, 0x70c011, 0, 0, sf2mdt_r);
8380   memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x70c018, 0x70c019, 0, 0, sf2mdt_r);
8376   memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x70c01a, 0x70c01b, 0, 0, sf2mdt_r);
8377   memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x70c01c, 0x70c01d, 0, 0, sf2mdt_r);
8378   memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x70c01e, 0x70c01f, 0, 0, sf2mdt_r);
8379   memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x70c010, 0x70c011, 0, 0, sf2mdt_r);
8380   memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x70c018, 0x70c019, 0, 0, sf2mdt_r);
83818381
83828382   DRIVER_INIT_CALL(cps1);
83838383}
src/mame/drivers/nova2001.c
r4679r4680
10091009
10101010   UINT8* const src = memory_region(machine, region);
10111011
1012   UINT8* const temp = malloc_or_die(length);
1012   UINT8* const temp = alloc_array_or_die(UINT8, length);
10131013
10141014   const int mask = (1 << (bit + 1)) - 1;
10151015
src/mame/drivers/starcrus.c
r4679r4680
3434extern int s1_sprite;
3535extern int s2_sprite;
3636
37static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 )
38   AM_RANGE(0x0000, 0x0fff) AM_READ(SMH_ROM) /* Program ROM */
39   AM_RANGE(0x1000, 0x10ff) AM_READ(SMH_RAM) /* RAM */
37static ADDRESS_MAP_START( starcrus_map, ADDRESS_SPACE_PROGRAM, 8 )
38   AM_RANGE(0x0000, 0x0fff) AM_ROM
39   AM_RANGE(0x1000, 0x10ff) AM_RAM
4040ADDRESS_MAP_END
4141
42static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 )
43    AM_RANGE(0x0000, 0x0fff) AM_WRITE(SMH_ROM) /* Program ROM */
44    AM_RANGE(0x1000, 0x10ff) AM_WRITE(SMH_RAM) /* RAM */
45ADDRESS_MAP_END
46
47
48static ADDRESS_MAP_START( io_map, ADDRESS_SPACE_IO, 8 )
42static ADDRESS_MAP_START( starcrus_io_map, ADDRESS_SPACE_IO, 8 )
4943    AM_RANGE(0x00, 0x00) AM_READ_PORT("P1") AM_WRITE(starcrus_s1_x_w)
5044   AM_RANGE(0x01, 0x01) AM_READ_PORT("P2") AM_WRITE(starcrus_s1_y_w)
5145   AM_RANGE(0x02, 0x02) AM_READWRITE(starcrus_coll_det_r, starcrus_s2_x_w)
r4679r4680
164158
165159   /* basic machine hardware */
166160   MDRV_CPU_ADD("maincpu", 8080,9750000/9)  /* 8224 chip is a divide by 9 */
167   MDRV_CPU_PROGRAM_MAP(readmem,writemem)
168   MDRV_CPU_IO_MAP(io_map,0)
161   MDRV_CPU_PROGRAM_MAP(starcrus_map,0)
162   MDRV_CPU_IO_MAP(starcrus_io_map,0)
169163   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
170164
171165   /* video hardware */
src/mame/drivers/jantotsu.c
r4679r4680
7373
7474static VIDEO_START(jantotsu)
7575{
76   jan_bitmap_1 = auto_malloc(0x2000);
77   jan_bitmap_2 = auto_malloc(0x2000);
78   jan_bitmap_3 = auto_malloc(0x2000);
79   jan_bitmap_4 = auto_malloc(0x2000);
76   jan_bitmap_1 = auto_alloc_array(machine, UINT8, 0x2000);
77   jan_bitmap_2 = auto_alloc_array(machine, UINT8, 0x2000);
78   jan_bitmap_3 = auto_alloc_array(machine, UINT8, 0x2000);
79   jan_bitmap_4 = auto_alloc_array(machine, UINT8, 0x2000);
8080   vram_bank = 0;
8181}
8282
r4679r4680
380380
381381static INTERRUPT_GEN( jantotsu_irq )
382382{
383   cpu_set_input_line(device->machine->cpu[0], INPUT_LINE_NMI, PULSE_LINE );
383   cputag_set_input_line(device->machine, "maincpu", INPUT_LINE_NMI, PULSE_LINE );
384384}
385385
386386static MACHINE_RESET( jantotsu )
src/mame/drivers/yunsun16.c
r4679r4680
158158HACK: the game continuously sends this. It'll play the oki sample
159159number 0 on each voice. That sample is 00000-00000.
160160*/
161      if ((data&0xff)!=0x3a)
161      if ((data & 0xff) != 0x3a)
162162      {
163      soundlatch_w(space,0,data & 0xff);
164      cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_NMI, PULSE_LINE);
163      soundlatch_w(space, 0, data & 0xff);
164      cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
165165      }
166166   }
167167}
r4679r4680
169169static DRIVER_INIT( magicbub )
170170{
171171//  remove_mem_write16_handler (0, 0x800180, 0x800181 );
172   memory_install_write16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x800188, 0x800189, 0, 0, magicbub_sound_command_w);
172   memory_install_write16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x800188, 0x800189, 0, 0, magicbub_sound_command_w);
173173}
174174
175175/***************************************************************************
r4679r4680
573573
574574static void soundirq(const device_config *device, int state)
575575{
576   cpu_set_input_line(device->machine->cpu[1], 0, state);
576   cputag_set_input_line(device->machine, "audiocpu", 0, state);
577577}
578578
579579static const ym3812_interface magicbub_ym3812_intf =
src/mame/drivers/wiz.c
r4679r4680
10521052   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
10531053   UINT8 *rom = memory_region(machine, "maincpu");
10541054   int size = memory_region_length(machine, "maincpu");
1055   UINT8 *decrypt = auto_malloc(size);
1055   UINT8 *decrypt = auto_alloc_array(machine, UINT8, size);
10561056   int A;
10571057   const UINT8 *tbl;
10581058
r4679r4680
10861086
10871087static DRIVER_INIT( scion )
10881088{
1089   memory_install_write8_handler(cpu_get_address_space(machine->cpu[1], ADDRESS_SPACE_PROGRAM), 0x4000, 0x4001, 0, 0, SMH_NOP);
1089   memory_install_write8_handler(cputag_get_address_space(machine, "audiocpu", ADDRESS_SPACE_PROGRAM), 0x4000, 0x4001, 0, 0, (write8_space_func)SMH_NOP);
10901090}
10911091
10921092
10931093static DRIVER_INIT( wiz )
10941094{
1095   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xd400, 0xd400, 0, 0, wiz_protection_r);
1095   memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xd400, 0xd400, 0, 0, wiz_protection_r);
10961096}
10971097
10981098
src/mame/drivers/stactics.c
r4679r4680
5555
5656static CUSTOM_INPUT( get_motor_not_ready )
5757{
58   stactics_state *state = field->port->machine->driver_data;
58   stactics_state *state = (stactics_state *)field->port->machine->driver_data;
5959
6060   /* if the motor is self-centering, but not centered yet */
6161    return ((*state->motor_on & 0x01) == 0) &&
r4679r4680
6565
6666static READ8_HANDLER( vert_pos_r )
6767{
68   stactics_state *state = space->machine->driver_data;
68   stactics_state *state = (stactics_state *)space->machine->driver_data;
6969
7070    return 0x70 - state->vert_pos;
7171}
r4679r4680
7373
7474static READ8_HANDLER( horiz_pos_r )
7575{
76   stactics_state *state = space->machine->driver_data;
76   stactics_state *state = (stactics_state *)space->machine->driver_data;
7777
7878    return state->horiz_pos + 0x88;
7979}
r4679r4680
156156
157157static INTERRUPT_GEN( stactics_interrupt )
158158{
159   stactics_state *state = device->machine->driver_data;
159   stactics_state *state = (stactics_state *)device->machine->driver_data;
160160
161161   move_motor(device->machine, state);
162162
r4679r4680
287287
288288static MACHINE_START( stactics )
289289{
290   stactics_state *state = machine->driver_data;
290   stactics_state *state = (stactics_state *)machine->driver_data;
291291
292292   state->vert_pos = 0;
293293   state->horiz_pos = 0;
src/mame/drivers/gaelco3d.c
r4679r4680
202202   memory_set_bank(machine, 1, 0);
203203
204204   /* keep the TMS32031 halted until the code is ready to go */
205   cpu_set_input_line(machine->cpu[1], INPUT_LINE_RESET, ASSERT_LINE);
205   cputag_set_input_line(machine, "tms", INPUT_LINE_RESET, ASSERT_LINE);
206206
207207   for (i = 0; i < SOUND_CHANNELS; i++)
208208   {
r4679r4680
255255
256256static WRITE16_HANDLER( irq_ack_w )
257257{
258   cpu_set_input_line(space->machine->cpu[0], 2, CLEAR_LINE);
258   cputag_set_input_line(space->machine, "maincpu", 2, CLEAR_LINE);
259259}
260260
261261
r4679r4680
308308{
309309   logerror("delayed_sound_w(%02X)\n", param);
310310   sound_data = param;
311   cpu_set_input_line(machine->cpu[2], ADSP2115_IRQ2, ASSERT_LINE);
311   cputag_set_input_line(machine, "adsp", ADSP2115_IRQ2, ASSERT_LINE);
312312}
313313
314314
r4679r4680
323323static READ16_HANDLER( sound_data_r )
324324{
325325   logerror("sound_data_r(%02X)\n", sound_data);
326   cpu_set_input_line(space->machine->cpu[2], ADSP2115_IRQ2, CLEAR_LINE);
326   cputag_set_input_line(space->machine, "adsp", ADSP2115_IRQ2, CLEAR_LINE);
327327   return sound_data;
328328}
329329
r4679r4680
433433   /* this is set to 0 while data is uploaded, then set to $ffff after it is done */
434434   /* it does not ever appear to be touched after that */
435435   logerror("%06X:tms_reset_w(%02X) = %08X & %08X\n", cpu_get_pc(space->cpu), offset, data, mem_mask);
436      cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_RESET, (data == 0xffff) ? CLEAR_LINE : ASSERT_LINE);
436      cputag_set_input_line(space->machine, "tms", INPUT_LINE_RESET, (data == 0xffff) ? CLEAR_LINE : ASSERT_LINE);
437437}
438438
439439
r4679r4680
443443   /* done after uploading, and after modifying the comm area */
444444   logerror("%06X:tms_irq_w(%02X) = %08X & %08X\n", cpu_get_pc(space->cpu), offset, data, mem_mask);
445445   if (ACCESSING_BITS_0_7)
446      cpu_set_input_line(space->machine->cpu[1], 0, (data & 0x01) ? CLEAR_LINE : ASSERT_LINE);
446      cputag_set_input_line(space->machine, "tms", 0, (data & 0x01) ? CLEAR_LINE : ASSERT_LINE);
447447}
448448
449449
r4679r4680
550550static TIMER_CALLBACK( adsp_autobuffer_irq )
551551{
552552   /* get the index register */
553   int reg = cpu_get_reg(machine->cpu[2], ADSP2100_I0 + adsp_ireg);
553   int reg = cpu_get_reg(cputag_get_cpu(machine, "adsp"), ADSP2100_I0 + adsp_ireg);
554554
555555   /* copy the current data into the buffer */
556556// logerror("ADSP buffer: I%d=%04X incs=%04X size=%04X\n", adsp_ireg, reg, adsp_incs, adsp_size);
r4679r4680
567567      reg = adsp_ireg_base;
568568
569569      /* generate the (internal, thats why the pulse) irq */
570      generic_pulse_irq_line(machine->cpu[2], ADSP2105_IRQ1);
570      generic_pulse_irq_line(cputag_get_cpu(machine, "adsp"), ADSP2105_IRQ1);
571571   }
572572
573573   /* store it */
574   cpu_set_reg(machine->cpu[2], ADSP2100_I0 + adsp_ireg, reg);
574   cpu_set_reg(cputag_get_cpu(machine, "adsp"), ADSP2100_I0 + adsp_ireg, reg);
575575}
576576
577577
r4679r4680
11471147   /* allocate memory */
11481148   gaelco3d_texture_size = memory_region_length(machine, "gfx1");
11491149   gaelco3d_texmask_size = memory_region_length(machine, "gfx2") * 8;
1150   gaelco3d_texture = auto_malloc(gaelco3d_texture_size);
1151   gaelco3d_texmask = auto_malloc(gaelco3d_texmask_size);
1150   gaelco3d_texture = auto_alloc_array(machine, UINT8, gaelco3d_texture_size);
1151   gaelco3d_texmask = auto_alloc_array(machine, UINT8, gaelco3d_texmask_size);
11521152
11531153   /* first expand the pixel data */
11541154   src = memory_region(machine, "gfx1");
src/mame/drivers/namcos11.c
r4679r4680
810810      {
811811         if( namcos11_config_table[ n_game ].keycus_r != NULL )
812812         {
813            memory_install_read32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1fa20000, 0x1fa2ffff, 0, 0, namcos11_config_table[ n_game ].keycus_r );
813            memory_install_read32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1fa20000, 0x1fa2ffff, 0, 0, namcos11_config_table[ n_game ].keycus_r );
814814         }
815815         if( namcos11_config_table[ n_game ].n_daughterboard != 0 )
816816         {
r4679r4680
818818            UINT32 len = memory_region_length( machine, "user2" );
819819            UINT8 *rgn = memory_region( machine, "user2" );
820820
821            memory_install_read32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1f000000, 0x1f0fffff, 0, 0, SMH_BANK1 );
822            memory_install_read32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1f100000, 0x1f1fffff, 0, 0, SMH_BANK2 );
823            memory_install_read32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1f200000, 0x1f2fffff, 0, 0, SMH_BANK3 );
824            memory_install_read32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1f300000, 0x1f3fffff, 0, 0, SMH_BANK4 );
825            memory_install_read32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1f400000, 0x1f4fffff, 0, 0, SMH_BANK5 );
826            memory_install_read32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1f500000, 0x1f5fffff, 0, 0, SMH_BANK6 );
827            memory_install_read32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1f600000, 0x1f6fffff, 0, 0, SMH_BANK7 );
828            memory_install_read32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1f700000, 0x1f7fffff, 0, 0, SMH_BANK8 );
821            memory_install_read32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1f000000, 0x1f0fffff, 0, 0, (read32_space_func)SMH_BANK(1) );
822            memory_install_read32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1f100000, 0x1f1fffff, 0, 0, (read32_space_func)SMH_BANK(2) );
823            memory_install_read32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1f200000, 0x1f2fffff, 0, 0, (read32_space_func)SMH_BANK(3) );
824            memory_install_read32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1f300000, 0x1f3fffff, 0, 0, (read32_space_func)SMH_BANK(4) );
825            memory_install_read32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1f400000, 0x1f4fffff, 0, 0, (read32_space_func)SMH_BANK(5) );
826            memory_install_read32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1f500000, 0x1f5fffff, 0, 0, (read32_space_func)SMH_BANK(6) );
827            memory_install_read32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1f600000, 0x1f6fffff, 0, 0, (read32_space_func)SMH_BANK(7) );
828            memory_install_read32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1f700000, 0x1f7fffff, 0, 0, (read32_space_func)SMH_BANK(8) );
829829
830830            for( bank = 0; bank < 8; bank++ )
831831            {
r4679r4680
835835
836836            if( namcos11_config_table[ n_game ].n_daughterboard == 32 )
837837            {
838               memory_install_write32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1fa10020, 0x1fa1002f, 0, 0, bankswitch_rom32_w );
838               memory_install_write32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1fa10020, 0x1fa1002f, 0, 0, bankswitch_rom32_w );
839839            }
840840            if( namcos11_config_table[ n_game ].n_daughterboard == 64 )
841841            {
842842               m_n_bankoffset = 0;
843               memory_install_write32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1f080000, 0x1f080003, 0, 0, bankswitch_rom64_upper_w );
844               memory_install_readwrite32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1fa10020, 0x1fa1002f, 0, 0, SMH_NOP, bankswitch_rom64_w );
843               memory_install_write32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1f080000, 0x1f080003, 0, 0, bankswitch_rom64_upper_w );
844               memory_install_readwrite32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1fa10020, 0x1fa1002f, 0, 0, (read32_space_func)SMH_NOP, bankswitch_rom64_w );
845845               state_save_register_global(machine,  m_n_bankoffset );
846846            }
847847         }
848848         else
849849         {
850            memory_install_write32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1fa10020, 0x1fa1002f, 0, 0, SMH_NOP );
850            memory_install_write32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1fa10020, 0x1fa1002f, 0, 0, (write32_space_func)SMH_NOP );
851851         }
852852         break;
853853      }
r4679r4680
856856
857857   if( strcmp( machine->gamedrv->name, "ptblnk2a" ) == 0 )
858858   {
859      memory_install_write32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1f788000, 0x1f788003, 0, 0, lightgun_w );
860      memory_install_read32_handler (cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1f780000, 0x1f78000f, 0, 0, lightgun_r );
859      memory_install_write32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1f788000, 0x1f788003, 0, 0, lightgun_w );
860      memory_install_read32_handler (cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1f780000, 0x1f78000f, 0, 0, lightgun_r );
861861   }
862862
863863   state_save_register_global(machine,  m_n_oldcoin );
src/mame/drivers/lethalj.c
r4679r4680
161161
162162static CUSTOM_INPUT( ticket_status )
163163{
164   const address_space *space = cpu_get_address_space(field->port->machine->cpu[0], ADDRESS_SPACE_PROGRAM);
164   const address_space *space = cputag_get_address_space(field->port->machine, "maincpu", ADDRESS_SPACE_PROGRAM);
165165   return ticket_dispenser_0_r(space, 0) >> 7;
166166}
167167
r4679r4680
907907static DRIVER_INIT( ripribit )
908908{
909909   ticket_dispenser_init(machine, 200, TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH);
910   memory_install_write16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x04100010, 0x0410001f, 0, 0, ripribit_control_w);
910   memory_install_write16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x04100010, 0x0410001f, 0, 0, ripribit_control_w);
911911}
912912
913913
914914static DRIVER_INIT( cfarm )
915915{
916916   ticket_dispenser_init(machine, 200, TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH);
917   memory_install_write16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x04100010, 0x0410001f, 0, 0, cfarm_control_w);
917   memory_install_write16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x04100010, 0x0410001f, 0, 0, cfarm_control_w);
918918}
919919
920920
921921static DRIVER_INIT( cclownz )
922922{
923923   ticket_dispenser_init(machine, 200, TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_HIGH);
924   memory_install_write16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x04100010, 0x0410001f, 0, 0, cclownz_control_w);
924   memory_install_write16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x04100010, 0x0410001f, 0, 0, cclownz_control_w);
925925}
926926
927927
src/mame/drivers/dcon.c
r4679r4680
3333
3434/***************************************************************************/
3535
36static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 16 )
37   AM_RANGE(0x00000, 0x7ffff) AM_READ(SMH_ROM)
38   AM_RANGE(0x80000, 0x8bfff) AM_READ(SMH_RAM)
39   AM_RANGE(0x8c000, 0x8c7ff) AM_READ(SMH_RAM)
40   AM_RANGE(0x8c800, 0x8cfff) AM_READ(SMH_RAM)
41   AM_RANGE(0x8d000, 0x8d7ff) AM_READ(SMH_RAM)
42   AM_RANGE(0x8d800, 0x8e7ff) AM_READ(SMH_RAM)
43   AM_RANGE(0x8e800, 0x8f7ff) AM_READ(SMH_RAM)
44   AM_RANGE(0x8f800, 0x8ffff) AM_READ(SMH_RAM)
45   AM_RANGE(0xa0000, 0xa000d) AM_READ(seibu_main_word_r)
46   AM_RANGE(0xc001c, 0xc001d) AM_READ(dcon_control_r)
47   AM_RANGE(0xe0000, 0xe0001) AM_READ_PORT("DSW")
48   AM_RANGE(0xe0002, 0xe0003) AM_READ_PORT("P1_P2")
49   AM_RANGE(0xe0004, 0xe0005) AM_READ_PORT("SYSTEM")
50ADDRESS_MAP_END
36static ADDRESS_MAP_START( dcon_map, ADDRESS_SPACE_PROGRAM, 16 )
37   AM_RANGE(0x00000, 0x7ffff) AM_ROM
38   AM_RANGE(0x80000, 0x8bfff) AM_RAM
5139
52static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 16 )
53   AM_RANGE(0x00000, 0x7ffff) AM_WRITE(SMH_ROM)
54   AM_RANGE(0x80000, 0x8bfff) AM_WRITE(SMH_RAM)
55   AM_RANGE(0x8c000, 0x8c7ff) AM_WRITE(dcon_background_w) AM_BASE(&dcon_back_data)
56   AM_RANGE(0x8c800, 0x8cfff) AM_WRITE(dcon_foreground_w) AM_BASE(&dcon_fore_data)
57   AM_RANGE(0x8d000, 0x8d7ff) AM_WRITE(dcon_midground_w) AM_BASE(&dcon_mid_data)
58   AM_RANGE(0x8d800, 0x8e7ff) AM_WRITE(dcon_text_w) AM_BASE(&dcon_textram)
59   AM_RANGE(0x8e800, 0x8f7ff) AM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE(&paletteram16)
60   AM_RANGE(0x8f800, 0x8ffff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)
40   AM_RANGE(0x8c000, 0x8c7ff) AM_RAM_WRITE(dcon_background_w) AM_BASE(&dcon_back_data)
41   AM_RANGE(0x8c800, 0x8cfff) AM_RAM_WRITE(dcon_foreground_w) AM_BASE(&dcon_fore_data)
42   AM_RANGE(0x8d000, 0x8d7ff) AM_RAM_WRITE(dcon_midground_w) AM_BASE(&dcon_mid_data)
43   AM_RANGE(0x8d800, 0x8e7ff) AM_RAM_WRITE(dcon_text_w) AM_BASE(&dcon_textram)
44   AM_RANGE(0x8e800, 0x8f7ff) AM_RAM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE(&paletteram16)
45   AM_RANGE(0x8f800, 0x8ffff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)
6146   AM_RANGE(0x9d000, 0x9d7ff) AM_WRITE(dcon_gfxbank_w)
62   AM_RANGE(0xa0000, 0xa000d) AM_WRITE(seibu_main_word_w)
63   AM_RANGE(0xc001c, 0xc001d) AM_WRITE(dcon_control_w)
47
48   AM_RANGE(0xa0000, 0xa000d) AM_READWRITE(seibu_main_word_r, seibu_main_word_w)
49   AM_RANGE(0xc001c, 0xc001d) AM_READWRITE(dcon_control_r, dcon_control_w)
6450   AM_RANGE(0xc0020, 0xc002f) AM_WRITE(SMH_RAM) AM_BASE(&dcon_scroll_ram)
6551   AM_RANGE(0xc0080, 0xc0081) AM_WRITENOP
6652   AM_RANGE(0xc00c0, 0xc00c1) AM_WRITENOP
53   AM_RANGE(0xe0000, 0xe0001) AM_READ_PORT("DSW")
54   AM_RANGE(0xe0002, 0xe0003) AM_READ_PORT("P1_P2")
55   AM_RANGE(0xe0004, 0xe0005) AM_READ_PORT("SYSTEM")
6756ADDRESS_MAP_END
6857
6958/******************************************************************************/
r4679r4680
271260
272261   /* basic machine hardware */
273262   MDRV_CPU_ADD("maincpu", M68000, 10000000)
274   MDRV_CPU_PROGRAM_MAP(readmem,writemem)
263   MDRV_CPU_PROGRAM_MAP(dcon_map,0)
275264   MDRV_CPU_VBLANK_INT("screen", irq4_line_hold)
276265
277266   SEIBU_SOUND_SYSTEM_CPU(4000000) /* Perhaps 14318180/4? */
r4679r4680
300289
301290   /* basic machine hardware */
302291   MDRV_CPU_ADD("maincpu", M68000, 10000000)
303   MDRV_CPU_PROGRAM_MAP(readmem,writemem)
292   MDRV_CPU_PROGRAM_MAP(dcon_map,0)
304293   MDRV_CPU_VBLANK_INT("screen", irq4_line_hold)
305294
306295   SEIBU2_SOUND_SYSTEM_CPU(14318180/4)
src/mame/drivers/itech8.c
r4679r4680
592592
593593void itech8_update_interrupts(running_machine *machine, int periodic, int tms34061, int blitter)
594594{
595   cpu_type main_cpu_type = cpu_get_type(machine->cpu[0]);
595   cpu_type main_cpu_type = cpu_get_type(cputag_get_cpu(machine, "maincpu"));
596596
597597   /* update the states */
598598   if (periodic != -1) periodic_int = periodic;
r4679r4680
603603   if (main_cpu_type == CPU_M6809 || main_cpu_type == CPU_HD6309)
604604   {
605605      /* just modify lines that have changed */
606      if (periodic != -1) cpu_set_input_line(machine->cpu[0], INPUT_LINE_NMI, periodic ? ASSERT_LINE : CLEAR_LINE);
607      if (tms34061 != -1) cpu_set_input_line(machine->cpu[0], M6809_IRQ_LINE, tms34061 ? ASSERT_LINE : CLEAR_LINE);
608      if (blitter != -1) cpu_set_input_line(machine->cpu[0], M6809_FIRQ_LINE, blitter ? ASSERT_LINE : CLEAR_LINE);
606      if (periodic != -1) cputag_set_input_line(machine, "maincpu", INPUT_LINE_NMI, periodic ? ASSERT_LINE : CLEAR_LINE);
607      if (tms34061 != -1) cputag_set_input_line(machine, "maincpu", M6809_IRQ_LINE, tms34061 ? ASSERT_LINE : CLEAR_LINE);
608      if (blitter != -1) cputag_set_input_line(machine, "maincpu", M6809_FIRQ_LINE, blitter ? ASSERT_LINE : CLEAR_LINE);
609609   }
610610
611611   /* handle the 68000 case */
612612   else
613613   {
614      cpu_set_input_line(machine->cpu[0], 2, blitter_int ? ASSERT_LINE : CLEAR_LINE);
615      cpu_set_input_line(machine->cpu[0], 3, periodic_int ? ASSERT_LINE : CLEAR_LINE);
614      cputag_set_input_line(machine, "maincpu", 2, blitter_int ? ASSERT_LINE : CLEAR_LINE);
615      cputag_set_input_line(machine, "maincpu", 3, periodic_int ? ASSERT_LINE : CLEAR_LINE);
616616   }
617617}
618618
r4679r4680
643643static WRITE8_HANDLER( itech8_nmi_ack_w )
644644{
645645/* doesn't seem to hold for every game (e.g., hstennis) */
646/*  cpu_set_input_line(space->machine->cpu[0], INPUT_LINE_NMI, CLEAR_LINE);*/
646/*  cputag_set_input_line(space->machine, "maincpu", INPUT_LINE_NMI, CLEAR_LINE);*/
647647}
648648
649649
650650static void generate_sound_irq(const device_config *device, int state)
651651{
652   cpu_set_input_line(device->machine->cpu[1], M6809_FIRQ_LINE, state ? ASSERT_LINE : CLEAR_LINE);
652   cputag_set_input_line(device->machine, "soundcpu", M6809_FIRQ_LINE, state ? ASSERT_LINE : CLEAR_LINE);
653653}
654654
655655
r4679r4680
671671
672672static MACHINE_RESET( itech8 )
673673{
674   cpu_type main_cpu_type = cpu_get_type(machine->cpu[0]);
674   cpu_type main_cpu_type = cpu_get_type(cputag_get_cpu(machine, "maincpu"));
675675
676676   /* make sure bank 0 is selected */
677677   if (main_cpu_type == CPU_M6809 || main_cpu_type == CPU_HD6309)
678678   {
679679      memory_set_bankptr(machine, 1, &memory_region(machine, "maincpu")[0x4000]);
680      device_reset(machine->cpu[0]);
680      device_reset(cputag_get_cpu(machine, "maincpu"));
681681   }
682682
683683   /* reset the ticket dispenser */
r4679r4680
793793   /* bit 6 controls the diagnostic sound LED */
794794   /* bit 7 controls the ticket dispenser */
795795   pia_portb_data = data;
796   ticket_dispenser_w(cpu_get_address_space(device->machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0, data & 0x80);
796   ticket_dispenser_w(cputag_get_address_space(device->machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0, data & 0x80);
797797   coin_counter_w(0, (data & 0x20) >> 5);
798798}
799799
r4679r4680
808808static TIMER_CALLBACK( delayed_sound_data_w )
809809{
810810   sound_data = param;
811   cpu_set_input_line(machine->cpu[1], M6809_IRQ_LINE, ASSERT_LINE);
811   cputag_set_input_line(machine, "soundcpu", M6809_IRQ_LINE, ASSERT_LINE);
812812}
813813
814814
r4679r4680
831831
832832static READ8_HANDLER( sound_data_r )
833833{
834   cpu_set_input_line(space->machine->cpu[1], M6809_IRQ_LINE, CLEAR_LINE);
834   cputag_set_input_line(space->machine, "soundcpu", M6809_IRQ_LINE, CLEAR_LINE);
835835   return sound_data;
836836}
837837
r4679r4680
11391139
11401140static CUSTOM_INPUT( gtg_mux )
11411141{
1142   const char *tag1 = param;
1142   const char *tag1 = (const char *)param;
11431143   const char *tag2 = tag1 + strlen(tag1) + 1;
11441144   return input_port_read(field->port->machine, tag1) & input_port_read(field->port->machine, tag2);
11451145}
r4679r4680
26602660
26612661static DRIVER_INIT( grmatch )
26622662{
2663   memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x0160, 0x0160, 0, 0, grmatch_palette_w);
2664   memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x0180, 0x0180, 0, 0, grmatch_xscroll_w);
2665   memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x01e0, 0x01ff, 0, 0, SMH_UNMAP);
2663   memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x0160, 0x0160, 0, 0, grmatch_palette_w);
2664   memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x0180, 0x0180, 0, 0, grmatch_xscroll_w);
2665   memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x01e0, 0x01ff, 0, 0, (write8_space_func)SMH_UNMAP);
26662666}
26672667
26682668
26692669static DRIVER_INIT( slikshot )
26702670{
2671   memory_install_read8_handler (cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x0180, 0x0180, 0, 0, slikshot_z80_r);
2672   memory_install_read8_handler (cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x01cf, 0x01cf, 0, 0, slikshot_z80_control_r);
2673   memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x01cf, 0x01cf, 0, 0, slikshot_z80_control_w);
2671   memory_install_read8_handler (cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x0180, 0x0180, 0, 0, slikshot_z80_r);
2672   memory_install_read8_handler (cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x01cf, 0x01cf, 0, 0, slikshot_z80_control_r);
2673   memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x01cf, 0x01cf, 0, 0, slikshot_z80_control_w);
26742674}
26752675
26762676
26772677static DRIVER_INIT( sstrike )
26782678{
2679   memory_install_read8_handler (cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1180, 0x1180, 0, 0, slikshot_z80_r);
2680   memory_install_read8_handler (cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x11cf, 0x11cf, 0, 0, slikshot_z80_control_r);
2681   memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x11cf, 0x11cf, 0, 0, slikshot_z80_control_w);
2679   memory_install_read8_handler (cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1180, 0x1180, 0, 0, slikshot_z80_r);
2680   memory_install_read8_handler (cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x11cf, 0x11cf, 0, 0, slikshot_z80_control_r);
2681   memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x11cf, 0x11cf, 0, 0, slikshot_z80_control_w);
26822682}
26832683
26842684
r4679r4680
27132713static DRIVER_INIT( rimrockn )
27142714{
27152715   /* additional input ports */
2716   memory_install_read_port_handler (cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x0161, 0x0161, 0, 0, "161");
2717   memory_install_read_port_handler (cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x0162, 0x0162, 0, 0, "162");
2718   memory_install_read_port_handler (cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x0163, 0x0163, 0, 0, "163");
2719   memory_install_read_port_handler (cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x0164, 0x0164, 0, 0, "164");
2720   memory_install_read_port_handler (cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x0165, 0x0165, 0, 0, "165");
2716   memory_install_read_port_handler (cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x0161, 0x0161, 0, 0, "161");
2717   memory_install_read_port_handler (cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x0162, 0x0162, 0, 0, "162");
2718   memory_install_read_port_handler (cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x0163, 0x0163, 0, 0, "163");
2719   memory_install_read_port_handler (cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x0164, 0x0164, 0, 0, "164");
2720   memory_install_read_port_handler (cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x0165, 0x0165, 0, 0, "165");
27212721
27222722   /* different banking mechanism (disable the old one) */
2723   memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x01a0, 0x01a0, 0, 0, rimrockn_bank_w);
2724   memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x01c0, 0x01df, 0, 0, itech8_blitter_w);
2723   memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x01a0, 0x01a0, 0, 0, rimrockn_bank_w);
2724   memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x01c0, 0x01df, 0, 0, itech8_blitter_w);
27252725}
27262726
27272727
src/mame/drivers/galaxian.c
r4679r4680
842842
843843static CUSTOM_INPUT( gmgalax_port_r )
844844{
845   const char *portname = param;
845   const char *portname = (const char *)param;
846846   if (gmgalax_selected_game != 0)
847847      portname += strlen(portname) + 1;
848848   return input_port_read(field->port->machine, portname);
r4679r4680
22292229{
22302230   UINT32 romlength = memory_region_length(machine, "gfx1");
22312231   UINT8 *rombase = memory_region(machine, "gfx1");
2232   UINT8 *scratch = malloc_or_die(romlength);
2232   UINT8 *scratch = alloc_array_or_die(UINT8, romlength);
22332233   UINT32 offs;
22342234
22352235   memcpy(scratch, rombase, romlength);
r4679r4680
22492249{
22502250   UINT32 romlength = memory_region_length(machine, "gfx1");
22512251   UINT8 *rombase = memory_region(machine, "gfx1");
2252   UINT8 *scratch = malloc_or_die(romlength);
2252   UINT8 *scratch = alloc_array_or_die(UINT8, romlength);
22532253   UINT32 offs;
22542254
22552255   memcpy(scratch, rombase, romlength);
r4679r4680
23262326{
23272327   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
23282328
2329   memory_install_write8_handler(space, base + 0x0004, base + 0x0007, 0, 0x07f8, SMH_UNMAP);
2330   memory_install_write8_handler(space, base + 0x0800, base + 0x0807, 0, 0x07f8, SMH_UNMAP);
2331   memory_install_write8_handler(space, base + 0x1800, base + 0x1800, 0, 0x07ff, SMH_UNMAP);
2329   memory_install_write8_handler(space, base + 0x0004, base + 0x0007, 0, 0x07f8, (write8_space_func)SMH_UNMAP);
2330   memory_install_write8_handler(space, base + 0x0800, base + 0x0807, 0, 0x07f8, (write8_space_func)SMH_UNMAP);
2331   memory_install_write8_handler(space, base + 0x1800, base + 0x1800, 0, 0x07ff, (write8_space_func)SMH_UNMAP);
23322332}
23332333
23342334
r4679r4680
23532353   DRIVER_INIT_CALL(galaxian);
23542354
23552355   /* ...but coin lockout disabled/disconnected */
2356   memory_install_write8_handler(space, 0x6002, 0x6002, 0, 0x7f8, SMH_UNMAP);
2356   memory_install_write8_handler(space, 0x6002, 0x6002, 0, 0x7f8, (write8_space_func)SMH_UNMAP);
23572357}
23582358
23592359
r4679r4680
23652365   common_init(machine, scramble_draw_bullet, galaxian_draw_background, NULL, NULL);
23662366
23672367   /* coin lockout disabled */
2368   memory_install_write8_handler(space, 0x6002, 0x6002, 0, 0x7f8, SMH_UNMAP);
2368   memory_install_write8_handler(space, 0x6002, 0x6002, 0, 0x7f8, (write8_space_func)SMH_UNMAP);
23692369}
23702370
23712371
r4679r4680
23772377   common_init(machine, galaxian_draw_bullet, galaxian_draw_background, gmgalax_extend_tile_info, gmgalax_extend_sprite_info);
23782378
23792379   /* ROM is banked */
2380   memory_install_read8_handler(space, 0x0000, 0x3fff, 0, 0, SMH_BANK1);
2380   memory_install_read8_handler(space, 0x0000, 0x3fff, 0, 0, (read8_space_func)SMH_BANK(1));
23812381   memory_configure_bank(machine, 1, 0, 2, memory_region(machine, "maincpu") + 0x10000, 0x4000);
23822382
23832383   /* callback when the game select is toggled */
r4679r4680
24182418   common_init(machine, galaxian_draw_bullet, frogger_draw_background, frogger_extend_tile_info, frogger_extend_sprite_info);
24192419
24202420   /* ...but needs a full 2k of RAM */
2421   memory_install_readwrite8_handler(space, 0x4000, 0x47ff, 0, 0, SMH_BANK1, SMH_BANK1);
2422   frogg_ram = auto_malloc(0x800);
2421   memory_install_readwrite8_handler(space, 0x4000, 0x47ff, 0, 0, (read8_space_func)SMH_BANK(1), (write8_space_func)SMH_BANK(1));
2422   frogg_ram = auto_alloc_array(machine, UINT8, 0x800);
24232423   memory_set_bankptr(machine, 1, frogg_ram);
24242424
24252425   state_save_register_global_pointer(machine, frogg_ram, 0x800);
r4679r4680
24652465static DRIVER_INIT( moonqsr )
24662466{
24672467   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
2468   UINT8 *decrypt = auto_malloc(0x8000);
2468   UINT8 *decrypt = auto_alloc_array(machine, UINT8, 0x8000);
24692469
24702470   /* video extensions */
24712471   common_init(machine, galaxian_draw_bullet, galaxian_draw_background, moonqsr_extend_tile_info, moonqsr_extend_sprite_info);
r4679r4680
24842484   DRIVER_INIT_CALL(galaxian);
24852485
24862486   /* ...but coin lockout disabled/disconnected */
2487   memory_install_write8_handler(space, 0x6002, 0x6002, 0, 0x7f8, SMH_UNMAP);
2487   memory_install_write8_handler(space, 0x6002, 0x6002, 0, 0x7f8, (write8_space_func)SMH_UNMAP);
24882488
24892489   /* also shift the sprite clip offset */
24902490   galaxian_sprite_clip_start = 7;
r4679r4680
25102510   common_init(machine, NULL, galaxian_draw_background, NULL, NULL);
25112511
25122512   /* make ROMs 2 & 3 swappable */
2513   memory_install_read8_handler(space, 0x2000, 0x2fff, 0, 0, SMH_BANK1);
2514   memory_install_read8_handler(space, 0x3000, 0x3fff, 0, 0, SMH_BANK2);
2513   memory_install_read8_handler(space, 0x2000, 0x2fff, 0, 0, (read8_space_func)SMH_BANK(1));
2514   memory_install_read8_handler(space, 0x3000, 0x3fff, 0, 0, (read8_space_func)SMH_BANK(2));
25152515   memory_configure_bank(machine, 1, 0, 2, memory_region(machine, "maincpu") + 0x2000, 0x1000);
25162516   memory_configure_bank(machine, 2, 0, 2, memory_region(machine, "maincpu") + 0x2000, 0x1000);
25172517
25182518   /* also re-install the fixed ROM area as a bank in order to inform the memory system that
25192519       the fixed area only extends to 0x1fff */
2520   memory_install_read8_handler(space, 0x0000, 0x1fff, 0, 0, SMH_BANK3);
2520   memory_install_read8_handler(space, 0x0000, 0x1fff, 0, 0, (read8_space_func)SMH_BANK(3));
25212521   memory_set_bankptr(machine, 3, memory_region(machine, "maincpu") + 0x0000);
25222522
25232523   /* handler for doing the swaps */
r4679r4680
25252525   zigzag_bankswap_w(space, 0, 0);
25262526
25272527   /* coin lockout disabled */
2528   memory_install_write8_handler(space, 0x6002, 0x6002, 0, 0x7f8, SMH_UNMAP);
2528   memory_install_write8_handler(space, 0x6002, 0x6002, 0, 0x7f8, (write8_space_func)SMH_UNMAP);
25292529
25302530   /* remove the galaxian sound hardware */
25312531   unmap_galaxian_sound(machine, 0x6000);
r4679r4680
25512551   common_init(machine, galaxian_draw_bullet, galaxian_draw_background, mooncrst_extend_tile_info, mooncrst_extend_sprite_info);
25522552
25532553   /* move the interrupt enable from $b000 to $b001 */
2554   memory_install_write8_handler(space, 0xb000, 0xb000, 0, 0x7f8, SMH_UNMAP);
2554   memory_install_write8_handler(space, 0xb000, 0xb000, 0, 0x7f8, (write8_space_func)SMH_UNMAP);
25552555   memory_install_write8_handler(space, 0xb001, 0xb001, 0, 0x7f8, irq_enable_w);
25562556
25572557   /* attach the sound command handler */
r4679r4680
26012601   common_init(machine, galaxian_draw_bullet, galaxian_draw_background, mooncrst_extend_tile_info, mooncrst_extend_sprite_info);
26022602
26032603   /* move the interrupt enable from $b000 to $b001 */
2604   memory_install_write8_handler(space, 0xb000, 0xb000, 0, 0x7f8, SMH_UNMAP);
2604   memory_install_write8_handler(space, 0xb000, 0xb000, 0, 0x7f8, (write8_space_func)SMH_UNMAP);
26052605   memory_install_write8_handler(space, 0xb001, 0xb001, 0, 0x7f8, irq_enable_w);
26062606
26072607   /* attach the sound command handler */
r4679r4680
26252625   memory_install_write8_handler(space, 0xa002, 0xa002, 0, 0x7f8, galaxian_gfxbank_w);
26262626
26272627   /* needs a full 2k of RAM */
2628   memory_install_readwrite8_handler(space, 0x8000, 0x87ff, 0, 0, SMH_BANK1, SMH_BANK1);
2629   memory_set_bankptr(machine, 1, auto_malloc(0x800));
2628   memory_install_readwrite8_handler(space, 0x8000, 0x87ff, 0, 0, (read8_space_func)SMH_BANK(1), (write8_space_func)SMH_BANK(1));
2629   memory_set_bankptr(machine, 1, auto_alloc_array(machine, UINT8, 0x800));
26302630
26312631   /* extend ROM */
2632   memory_install_read8_handler(space, 0x0000, 0x5fff, 0, 0, SMH_BANK2);
2632   memory_install_read8_handler(space, 0x0000, 0x5fff, 0, 0, (read8_space_func)SMH_BANK(2));
26332633   memory_set_bankptr(machine, 2, memory_region(machine, "maincpu"));
26342634}
26352635
r4679r4680
26852685   common_init(machine, galaxian_draw_bullet, galaxian_draw_background, batman2_extend_tile_info, upper_extend_sprite_info);
26862686
26872687   /* move the interrupt enable from $b000 to $b001 */
2688   memory_install_write8_handler(space, 0xb000, 0xb000, 0, 0x7f8, SMH_UNMAP);
2688   memory_install_write8_handler(space, 0xb000, 0xb000, 0, 0x7f8, (write8_space_func)SMH_UNMAP);
26892689   memory_install_write8_handler(space, 0xb001, 0xb001, 0, 0x7f8, irq_enable_w);
26902690
26912691   /* extra ROM */
2692   memory_install_read8_handler(space, 0x5000, 0x67ff, 0, 0, SMH_BANK1);
2692   memory_install_read8_handler(space, 0x5000, 0x67ff, 0, 0, (read8_space_func)SMH_BANK(1));
26932693   memory_set_bankptr(machine, 1, memory_region(machine, "maincpu") + 0x5000);
26942694
26952695   /* install RAM at $4000-$4800 */
2696   memory_install_readwrite8_handler(space, 0x4000, 0x47ff, 0, 0, SMH_BANK2, SMH_BANK2);
2697   memory_set_bankptr(machine, 2, auto_malloc(0x800));
2696   memory_install_readwrite8_handler(space, 0x4000, 0x47ff, 0, 0, (read8_space_func)SMH_BANK(2), (write8_space_func)SMH_BANK(2));
2697   memory_set_bankptr(machine, 2, auto_alloc_array(machine, UINT8, 0x800));
26982698
26992699   /* doesn't appear to use original RAM */
2700   memory_install_readwrite8_handler(space, 0x8000, 0x87ff, 0, 0, SMH_UNMAP, SMH_UNMAP);
2700   memory_install_readwrite8_handler(space, 0x8000, 0x87ff, 0, 0, (read8_space_func)SMH_UNMAP, (write8_space_func)SMH_UNMAP);
27012701}
27022702
27032703
r4679r4680
27162716   common_init(machine, theend_draw_bullet, galaxian_draw_background, NULL, NULL);
27172717
27182718   /* coin counter on the upper bit of port C */
2719   memory_install_write8_handler(space, 0x6802, 0x6802, 0, 0x7f8, SMH_UNMAP);
2719   memory_install_write8_handler(space, 0x6802, 0x6802, 0, 0x7f8, (write8_space_func)SMH_UNMAP);
27202720}
27212721
27222722
r4679r4680
27382738   memory_install_write8_handler(space, 0x7000, 0x7000, 0, 0x7ff, watchdog_reset_w);
27392739
27402740   /* I/O appears to be direct, not via PPIs */
2741   memory_install_readwrite8_handler(space, 0x8000, 0xffff, 0, 0, SMH_UNMAP, SMH_UNMAP);
2741   memory_install_readwrite8_handler(space, 0x8000, 0xffff, 0, 0, (read8_space_func)SMH_UNMAP, (write8_space_func)SMH_UNMAP);
27422742   memory_install_read_port_handler(space, 0x8000, 0x8000, 0, 0xffc, "IN0");
27432743   memory_install_read_port_handler(space, 0x8001, 0x8001, 0, 0xffc, "IN1");
27442744   memory_install_read_port_handler(space, 0x8002, 0x8002, 0, 0xffc, "IN2");
r4679r4680
27552755   galaxian_sfx_tilemap = TRUE;
27562756
27572757   /* sound board has space for extra ROM */
2758   memory_install_read8_handler(cpu_get_address_space(machine->cpu[1], ADDRESS_SPACE_PROGRAM), 0x0000, 0x3fff, 0, 0, SMH_BANK1);
2758   memory_install_read8_handler(cpu_get_address_space(machine->cpu[1], ADDRESS_SPACE_PROGRAM), 0x0000, 0x3fff, 0, 0, (read8_space_func)SMH_BANK(1));
27592759   memory_set_bankptr(machine, 1, memory_region(machine, "audiocpu"));
27602760}
27612761
r4679r4680
27682768   common_init(machine, scramble_draw_bullet, scramble_draw_background, NULL, NULL);
27692769
27702770   /* watchdog is at $7800? (or is it just disabled?) */
2771   memory_install_read8_handler(space, 0x7000, 0x7000, 0, 0x7ff, SMH_UNMAP);
2771   memory_install_read8_handler(space, 0x7000, 0x7000, 0, 0x7ff, (read8_space_func)SMH_UNMAP);
27722772   memory_install_read8_handler(space, 0x7800, 0x7800, 0, 0x7ff, watchdog_reset_r);
27732773}
27742774
r4679r4680
28132813   memory_install_write8_handler(space, 0xb001, 0xb001, 0, 0x7f8, froggrmc_sound_control_w);
28142814
28152815   /* actually needs 2k of RAM */
2816   memory_install_readwrite8_handler(space, 0x8000, 0x87ff, 0, 0, SMH_BANK1, SMH_BANK1);
2817   frogg_ram = auto_malloc(0x800);
2816   memory_install_readwrite8_handler(space, 0x8000, 0x87ff, 0, 0, (read8_space_func)SMH_BANK(1), (write8_space_func)SMH_BANK(1));
2817   frogg_ram = auto_alloc_array(machine, UINT8, 0x800);
28182818   memory_set_bankptr(machine, 1, frogg_ram);
28192819
28202820   state_save_register_global_pointer(machine, frogg_ram, 0x800);
r4679r4680
28612861   memory_install_readwrite8_handler(cpu_get_address_space(machine->cpu[1], ADDRESS_SPACE_IO), 0x00, 0xff, 0, 0, scorpion_ay8910_r, scorpion_ay8910_w);
28622862
28632863   /* extra ROM */
2864   memory_install_read8_handler(space, 0x5800, 0x67ff, 0, 0, SMH_BANK1);
2864   memory_install_read8_handler(space, 0x5800, 0x67ff, 0, 0, (read8_space_func)SMH_BANK(1));
28652865   memory_set_bankptr(machine, 1, memory_region(machine, "maincpu") + 0x5800);
28662866
28672867   /* no background related */
2868//  memory_install_write8_handler(space, 0x6803, 0x6803, 0, 0, SMH_NOP);
2868//  memory_install_write8_handler(space, 0x6803, 0x6803, 0, 0, (write8_space_func)SMH_NOP);
28692869
28702870   memory_install_read8_handler(cpu_get_address_space(machine->cpu[1], ADDRESS_SPACE_PROGRAM), 0x3000, 0x3000, 0, 0, scorpion_digitalker_intr_r);
28712871/*
src/mame/drivers/othldrby.c
r4679r4680
9494
9595
9696
97static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 16 )
98   AM_RANGE(0x000000, 0x07ffff) AM_READ(SMH_ROM)
99   AM_RANGE(0x100000, 0x10ffff) AM_READ(SMH_RAM)
100   AM_RANGE(0x200000, 0x20000f) AM_READ(calendar_r)
101   AM_RANGE(0x300004, 0x300007) AM_READ(othldrby_videoram_r)
97static ADDRESS_MAP_START( othldrby_map, ADDRESS_SPACE_PROGRAM, 16 )
98   AM_RANGE(0x000000, 0x07ffff) AM_ROM
99   AM_RANGE(0x100000, 0x10ffff) AM_RAM
100   AM_RANGE(0x200000, 0x20000f) AM_READWRITE(calendar_r,calendar_w)
101   AM_RANGE(0x300000, 0x300001) AM_WRITE(othldrby_videoram_addr_w)
102   AM_RANGE(0x300004, 0x300007) AM_READWRITE(othldrby_videoram_r,othldrby_videoram_w)
103   AM_RANGE(0x300008, 0x300009) AM_WRITE(othldrby_vreg_addr_w)
102104   AM_RANGE(0x30000c, 0x30000d) AM_READ(pip)   // vblank?
103   AM_RANGE(0x400000, 0x400fff) AM_READ(SMH_RAM)
104   AM_RANGE(0x600000, 0x600001) AM_DEVREAD8("oki", okim6295_r, 0x00ff)
105   AM_RANGE(0x30000c, 0x30000f) AM_WRITE(othldrby_vreg_w)
106   AM_RANGE(0x400000, 0x400fff) AM_RAM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE(&paletteram16)
107   AM_RANGE(0x600000, 0x600001) AM_DEVREADWRITE8("oki", okim6295_r,okim6295_w, 0x00ff)
105108   AM_RANGE(0x700000, 0x700001) AM_READ(pap)   // scanline???
106109   AM_RANGE(0x700004, 0x700005) AM_READ_PORT("DSW1")
107110   AM_RANGE(0x700008, 0x700009) AM_READ_PORT("DSW2")
108111   AM_RANGE(0x70000c, 0x70000d) AM_READ_PORT("P1")
109112   AM_RANGE(0x700010, 0x700011) AM_READ_PORT("P2")
110113   AM_RANGE(0x70001c, 0x70001d) AM_READ_PORT("SYSTEM")
111ADDRESS_MAP_END
112
113static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 16 )
114   AM_RANGE(0x000000, 0x07ffff) AM_WRITE(SMH_ROM)
115   AM_RANGE(0x100000, 0x10ffff) AM_WRITE(SMH_RAM)
116   AM_RANGE(0x200000, 0x20000f) AM_WRITE(calendar_w)
117   AM_RANGE(0x300000, 0x300001) AM_WRITE(othldrby_videoram_addr_w)
118   AM_RANGE(0x300004, 0x300007) AM_WRITE(othldrby_videoram_w)
119   AM_RANGE(0x300008, 0x300009) AM_WRITE(othldrby_vreg_addr_w)
120   AM_RANGE(0x30000c, 0x30000f) AM_WRITE(othldrby_vreg_w)
121   AM_RANGE(0x400000, 0x400fff) AM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE(&paletteram16)
122   AM_RANGE(0x600000, 0x600001) AM_DEVWRITE8("oki", okim6295_w, 0x00ff)
123114   AM_RANGE(0x700030, 0x700031) AM_DEVWRITE("oki", oki_bankswitch_w)
124115   AM_RANGE(0x700034, 0x700035) AM_WRITE(coinctrl_w)
125116ADDRESS_MAP_END
126117
127118
128
129119static INPUT_PORTS_START( othldrby )
130120   PORT_START("DSW1")
131121   PORT_DIPNAME( 0x01, 0x00, DEF_STR( Demo_Sounds ) )
r4679r4680
242232
243233   /* basic machine hardware */
244234   MDRV_CPU_ADD("maincpu", M68000, 16000000)
245   MDRV_CPU_PROGRAM_MAP(readmem,writemem)
235   MDRV_CPU_PROGRAM_MAP(othldrby_map,0)
246236   MDRV_CPU_VBLANK_INT("screen", irq4_line_hold)
247237
248238   /* video hardware */
src/mame/drivers/bbusters.c
r4679r4680
264264   if (ACCESSING_BITS_0_7)
265265   {
266266      soundlatch_w(space, 0, data&0xff);
267      cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_NMI, PULSE_LINE);
267      cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
268268   }
269269}
270270
r4679r4680
636636
637637static void sound_irq( const device_config *device, int irq )
638638{
639   cpu_set_input_line(device->machine->cpu[1],0,irq ? ASSERT_LINE : CLEAR_LINE);
639   cputag_set_input_line(device->machine, "audiocpu", 0, irq ? ASSERT_LINE : CLEAR_LINE);
640640}
641641
642642static const ym2608_interface ym2608_config =
r4679r4680
692692
693693static VIDEO_EOF( bbuster )
694694{
695   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
695   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
696696
697697   buffer_spriteram16_w(space,0,0,0xffff);
698698   buffer_spriteram16_2_w(space,0,0,0xffff);
r4679r4680
700700
701701static VIDEO_EOF( mechatt )
702702{
703   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
703   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
704704   buffer_spriteram16_w(space,0,0,0xffff);
705705}
706706
src/mame/drivers/gstriker.c
r4679r4680
202202   if (ACCESSING_BITS_0_7)
203203   {
204204      pending_command = 1;
205      soundlatch_w(space,offset,data & 0xff);
206      cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_NMI, PULSE_LINE);
205      soundlatch_w(space, offset, data & 0xff);
206      cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
207207   }
208208}
209209
r4679r4680
270270static void gs_ym2610_irq(const device_config *device, int irq)
271271{
272272   if (irq)
273      cpu_set_input_line(device->machine->cpu[1], 0, ASSERT_LINE);
273      cputag_set_input_line(device->machine, "audiocpu", 0, ASSERT_LINE);
274274   else
275      cpu_set_input_line(device->machine->cpu[1], 0, CLEAR_LINE);
275      cputag_set_input_line(device->machine, "audiocpu", 0, CLEAR_LINE);
276276}
277277
278278static const ym2610_interface ym2610_config =
r4679r4680
286286UINT16 *gstriker_lineram;
287287
288288
289static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 16 )
290   AM_RANGE(0x000000, 0x0fffff) AM_READ(SMH_ROM)
291   AM_RANGE(0x100000, 0x103fff) AM_READ(SMH_RAM)
292   AM_RANGE(0x140000, 0x141fff) AM_READ(SMH_RAM)
293   AM_RANGE(0x180000, 0x181fff) AM_READ(SMH_RAM)
294   AM_RANGE(0x1c0000, 0x1c0fff) AM_READ(SMH_RAM)
295   AM_RANGE(0xffc000, 0xffffff) AM_READ(SMH_RAM)
289static ADDRESS_MAP_START( gstriker_map, ADDRESS_SPACE_PROGRAM, 16 )
290   AM_RANGE(0x000000, 0x0fffff) AM_ROM
291   AM_RANGE(0x100000, 0x103fff) AM_RAM_WRITE(MB60553_0_vram_w) AM_BASE(&MB60553_0_vram)
292   AM_RANGE(0x140000, 0x141fff) AM_RAM AM_BASE(&CG10103_0_vram)
293   AM_RANGE(0x180000, 0x180fff) AM_RAM_WRITE(VS920A_0_vram_w) AM_BASE(&VS920A_0_vram)
294   AM_RANGE(0x181000, 0x181fff) AM_RAM AM_BASE(&gstriker_lineram)
295   AM_RANGE(0x1c0000, 0x1c0fff) AM_RAM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE(&paletteram16)
296296
297     AM_RANGE(0x200000, 0x20007f) AM_READ(SMH_RAM)
297   AM_RANGE(0x200000, 0x20000f) AM_RAM_WRITE(MB60553_0_regs_w)
298   AM_RANGE(0x200040, 0x20005f) AM_RAM_WRITE(SMH_RAM) AM_BASE(&gs_mixer_regs)
299     AM_RANGE(0x200060, 0x20007f) AM_READ(SMH_RAM)
298300   AM_RANGE(0x200080, 0x200081) AM_READ_PORT("P1")
299301   AM_RANGE(0x200082, 0x200083) AM_READ_PORT("P2")
300302   AM_RANGE(0x200084, 0x200085) AM_READ_PORT("SYSTEM")
301303   AM_RANGE(0x200086, 0x200087) AM_READ_PORT("DSW1")
302304   AM_RANGE(0x200088, 0x200089) AM_READ_PORT("DSW2")
303305   AM_RANGE(0x20008e, 0x20008f) AM_READ(dmmy_8f)
304ADDRESS_MAP_END
305
306static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 16 )
307   AM_RANGE(0x000000, 0x0fffff) AM_WRITE(SMH_ROM)
308   AM_RANGE(0x100000, 0x103fff) AM_WRITE(MB60553_0_vram_w) AM_BASE(&MB60553_0_vram)
309   AM_RANGE(0x140000, 0x141fff) AM_WRITE(SMH_RAM) AM_BASE(&CG10103_0_vram)
310   AM_RANGE(0x180000, 0x180fff) AM_WRITE(VS920A_0_vram_w) AM_BASE(&VS920A_0_vram)
311   AM_RANGE(0x181000, 0x181fff) AM_WRITE(SMH_RAM) AM_BASE(&gstriker_lineram)
312   AM_RANGE(0x1c0000, 0x1c0fff) AM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE(&paletteram16)
313   AM_RANGE(0x200000, 0x20000f) AM_WRITE(MB60553_0_regs_w)
314   AM_RANGE(0x200040, 0x20005f) AM_WRITE(SMH_RAM) AM_BASE(&gs_mixer_regs)
315306   AM_RANGE(0x2000a0, 0x2000a1) AM_WRITE(sound_command_w)
316   AM_RANGE(0xffc000, 0xffffff) AM_WRITE(SMH_RAM) AM_BASE(&work_ram)
317ADDRESS_MAP_END
318307
319static ADDRESS_MAP_START( sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
320   AM_RANGE(0x0000, 0x77ff) AM_READ(SMH_ROM)
321   AM_RANGE(0x7800, 0x7fff) AM_READ(SMH_RAM)
322   AM_RANGE(0x8000, 0xffff) AM_READ(SMH_BANK1)
308   AM_RANGE(0xffc000, 0xffffff) AM_RAM AM_BASE(&work_ram)
323309ADDRESS_MAP_END
324310
325static ADDRESS_MAP_START( sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
326   AM_RANGE(0x0000, 0x77ff) AM_WRITE(SMH_ROM)
327   AM_RANGE(0x7800, 0x7fff) AM_WRITE(SMH_RAM)
328   AM_RANGE(0x8000, 0xffff) AM_WRITE(SMH_ROM)
311static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 )
312   AM_RANGE(0x0000, 0x77ff) AM_ROM
313   AM_RANGE(0x7800, 0x7fff) AM_RAM
314   AM_RANGE(0x8000, 0xffff) AM_ROMBANK(1)
329315ADDRESS_MAP_END
330316
331317static ADDRESS_MAP_START( sound_io_map, ADDRESS_SPACE_IO, 8 )
r4679r4680
565551
566552static MACHINE_DRIVER_START( gstriker )
567553   MDRV_CPU_ADD("maincpu", M68000, 10000000)
568   MDRV_CPU_PROGRAM_MAP(readmem,writemem)
554   MDRV_CPU_PROGRAM_MAP(gstriker_map,0)
569555   MDRV_CPU_VBLANK_INT("screen", irq1_line_hold)
570556
571557   MDRV_CPU_ADD("audiocpu", Z80,8000000/2)   /* 4 MHz ??? */
572   MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem)
558   MDRV_CPU_PROGRAM_MAP(sound_map,0)
573559   MDRV_CPU_IO_MAP(sound_io_map,0)
574560
575561   MDRV_VIDEO_ATTRIBUTES(VIDEO_UPDATE_AFTER_VBLANK)
r4679r4680
609595   MDRV_CPU_VBLANK_INT("screen", irq1_line_hold)
610596
611597   MDRV_CPU_ADD("audiocpu", Z80,8000000/2)   /* 4 MHz ??? */
612   MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem)
598   MDRV_CPU_PROGRAM_MAP(sound_map,0)
613599   MDRV_CPU_IO_MAP(sound_io_map,0)
614600
615601   MDRV_VIDEO_ATTRIBUTES(VIDEO_UPDATE_AFTER_VBLANK)
r4679r4680
989975   pending_command = 0;
990976   mcu_data = 0;
991977
992   memory_install_write16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x20008a, 0x20008b, 0, 0, twrldc94_mcu_w);
993   memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x20008a, 0x20008b, 0, 0, twrldc94_mcu_r);
978   memory_install_write16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x20008a, 0x20008b, 0, 0, twrldc94_mcu_w);
979   memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x20008a, 0x20008b, 0, 0, twrldc94_mcu_r);
994980
995   memory_install_write16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x20008e, 0x20008f, 0, 0, twrldc94_prot_reg_w);
996   memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x20008e, 0x20008f, 0, 0, twrldc94_prot_reg_r);
981   memory_install_write16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x20008e, 0x20008f, 0, 0, twrldc94_prot_reg_w);
982   memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x20008e, 0x20008f, 0, 0, twrldc94_prot_reg_r);
997983}
998984
999985static DRIVER_INIT( twrldc94 )
r4679r4680
1013999   gametype = 3;
10141000   mcu_init( machine );
10151001
1016   memory_install_write16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x200090, 0x200091, 0, 0, vbl_toggle_w); // vblank toggle
1017   memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x200090, 0x200091, 0, 0, vbl_toggle_r);
1002   memory_install_write16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x200090, 0x200091, 0, 0, vbl_toggle_w); // vblank toggle
1003   memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x200090, 0x200091, 0, 0, vbl_toggle_r);
10181004}
10191005
10201006/*** GAME DRIVERS ************************************************************/
r4679r4680
10261012GAME( 1994, vgoalsca, vgoalsoc, vgoal,    vgoalsoc, vgoalsoc,   ROT0, "Tecmo", "V Goal Soccer (set 2)", GAME_NOT_WORKING )
10271013GAME( 1994, twrldc94, 0,        twrldc94, twrldc94, twrldc94,   ROT0, "Tecmo", "Tecmo World Cup '94 (set 1)", GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION | GAME_IMPERFECT_GRAPHICS )
10281014GAME( 1994, twrdc94a, twrldc94, twrldc94, twrldc94, twrldc94a,  ROT0, "Tecmo", "Tecmo World Cup '94 (set 2)", GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION | GAME_IMPERFECT_GRAPHICS )
1029
src/mame/drivers/snk.c
r4679r4680
279279
280280READ8_HANDLER ( snk_cpuA_nmi_trigger_r )
281281{
282   cpu_set_input_line(space->machine->cpu[0], INPUT_LINE_NMI, ASSERT_LINE);
282   cputag_set_input_line(space->machine, "maincpu", INPUT_LINE_NMI, ASSERT_LINE);
283283   return 0xff;
284284}
285285
286286WRITE8_HANDLER( snk_cpuA_nmi_ack_w )
287287{
288   cpu_set_input_line(space->machine->cpu[0], INPUT_LINE_NMI, CLEAR_LINE);
288   cputag_set_input_line(space->machine, "maincpu", INPUT_LINE_NMI, CLEAR_LINE);
289289}
290290
291291READ8_HANDLER ( snk_cpuB_nmi_trigger_r )
292292{
293   cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_NMI, ASSERT_LINE);
293   cputag_set_input_line(space->machine, "sub", INPUT_LINE_NMI, ASSERT_LINE);
294294   return 0xff;
295295}
296296
297297WRITE8_HANDLER( snk_cpuB_nmi_ack_w )
298298{
299   cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_NMI, CLEAR_LINE);
299   cputag_set_input_line(space->machine, "sub", INPUT_LINE_NMI, CLEAR_LINE);
300300}
301301
302302/*********************************************************************/
r4679r4680
318318{
319319   marvins_sound_busy_flag = 1;
320320   soundlatch_w(space, offset, data);
321   cpu_set_input_line(space->machine->cpu[2], 0, HOLD_LINE);
321   cputag_set_input_line(space->machine, "audiocpu", 0, HOLD_LINE);
322322}
323323
324324static READ8_HANDLER( marvins_soundlatch_r )
325325{
326326   marvins_sound_busy_flag = 0;
327   return soundlatch_r(space,0);
327   return soundlatch_r(space, 0);
328328}
329329
330330static CUSTOM_INPUT( marvins_sound_busy )
r4679r4680
334334
335335static READ8_HANDLER( marvins_sound_nmi_ack_r )
336336{
337   cpu_set_input_line(space->machine->cpu[2], INPUT_LINE_NMI, CLEAR_LINE);
337   cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, CLEAR_LINE);
338338   return 0xff;
339339}
340340
r4679r4680
357357         break;
358358   }
359359
360   cpu_set_input_line(machine->cpu[2], INPUT_LINE_NMI, (sound_status & 0x8) ? ASSERT_LINE : CLEAR_LINE);
360   cputag_set_input_line(machine, "audiocpu", INPUT_LINE_NMI, (sound_status & 0x8) ? ASSERT_LINE : CLEAR_LINE);
361361}
362362
363363
r4679r4680
381381
382382static READ8_HANDLER( sgladiat_sound_irq_ack_r )
383383{
384   cpu_set_input_line(space->machine->cpu[2], 0, CLEAR_LINE);
384   cputag_set_input_line(space->machine, "audiocpu", 0, CLEAR_LINE);
385385   return 0xff;
386386}
387387
r4679r4680
442442         break;
443443   }
444444
445   cpu_set_input_line(machine->cpu[2], 0, (sound_status & 0xb) ? ASSERT_LINE : CLEAR_LINE);
445   cputag_set_input_line(machine, "audiocpu", 0, (sound_status & 0xb) ? ASSERT_LINE : CLEAR_LINE);
446446}
447447
448448
r4679r4680
61616161static DRIVER_INIT( countryc )
61626162{
61636163   // replace coin counter with trackball select
6164   memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xc300, 0xc300, 0, 0, countryc_trackball_w);
6164   memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xc300, 0xc300, 0, 0, countryc_trackball_w);
61656165}
61666166
61676167
src/mame/drivers/hyprduel.c
r4679r4680
6161{
6262   int irq = requested_int & ~*hyprduel_irq_enable;
6363
64   cpu_set_input_line(machine->cpu[0], 3, (irq & int_num) ? ASSERT_LINE : CLEAR_LINE);
64   cputag_set_input_line(machine, "maincpu", 3, (irq & int_num) ? ASSERT_LINE : CLEAR_LINE);
6565}
6666
6767static TIMER_CALLBACK( vblank_end_callback )
r4679r4680
115115      case 0x01:
116116         if (!subcpu_resetline)
117117         {
118            cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_RESET, ASSERT_LINE);
118            cputag_set_input_line(space->machine, "sub", INPUT_LINE_RESET, ASSERT_LINE);
119119            subcpu_resetline = 1;
120120         }
121121         break;
r4679r4680
123123      case 0x00:
124124         if (subcpu_resetline)
125125         {
126            cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_RESET, CLEAR_LINE);
126            cputag_set_input_line(space->machine, "sub", INPUT_LINE_RESET, CLEAR_LINE);
127127            subcpu_resetline = 0;
128128         }
129129         cpu_spinuntil_int(space->cpu);
r4679r4680
131131
132132      case 0x0c:
133133      case 0x80:
134         cpu_set_input_line(space->machine->cpu[1], 2, HOLD_LINE);
134         cputag_set_input_line(space->machine, "sub", 2, HOLD_LINE);
135135         break;
136136   }
137137}
r4679r4680
193193
194194static TIMER_CALLBACK( magerror_irq_callback )
195195{
196   cpu_set_input_line(machine->cpu[1], 1, HOLD_LINE);
196   cputag_set_input_line(machine, "sub", 1, HOLD_LINE);
197197}
198198
199199/***************************************************************************
r4679r4680
669669
670670static void sound_irq(const device_config *device, int state)
671671{
672   cpu_set_input_line(device->machine->cpu[1], 1, HOLD_LINE);
672   cputag_set_input_line(device->machine, "sub", 1, HOLD_LINE);
673673}
674674
675675static const ym2151_interface ym2151_config =
r4679r4680
684684static MACHINE_RESET( hyprduel )
685685{
686686   /* start with cpu2 halted */
687   cpu_set_input_line(machine->cpu[1], INPUT_LINE_RESET, ASSERT_LINE);
687   cputag_set_input_line(machine, "sub", INPUT_LINE_RESET, ASSERT_LINE);
688688   subcpu_resetline = 1;
689689   cpu_trigger = 0;
690690
r4679r4680
849849   savestate(machine);
850850
851851   /* cpu synchronization (severe timings) */
852   memory_install_write16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xc0040e, 0xc00411, 0, 0, hyprduel_cpusync_trigger1_w);
853   memory_install_read16_handler(cpu_get_address_space(machine->cpu[1], ADDRESS_SPACE_PROGRAM), 0xc00408, 0xc00409, 0, 0, hyprduel_cpusync_trigger1_r);
854   memory_install_write16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xc00408, 0xc00409, 0, 0, hyprduel_cpusync_trigger2_w);
855   memory_install_read16_handler(cpu_get_address_space(machine->cpu[1], ADDRESS_SPACE_PROGRAM), 0xfff34c, 0xfff34d, 0, 0, hyprduel_cpusync_trigger2_r);
852   memory_install_write16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xc0040e, 0xc00411, 0, 0, hyprduel_cpusync_trigger1_w);
853   memory_install_read16_handler(cputag_get_address_space(machine, "sub", ADDRESS_SPACE_PROGRAM), 0xc00408, 0xc00409, 0, 0, hyprduel_cpusync_trigger1_r);
854   memory_install_write16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xc00408, 0xc00409, 0, 0, hyprduel_cpusync_trigger2_w);
855   memory_install_read16_handler(cputag_get_address_space(machine, "sub", ADDRESS_SPACE_PROGRAM), 0xfff34c, 0xfff34d, 0, 0, hyprduel_cpusync_trigger2_r);
856856}
857857
858858static DRIVER_INIT( magerror )
src/mame/drivers/highvdeo.c
r4679r4680
11421142
11431143static DRIVER_INIT( ciclone )
11441144{
1145   memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x0030, 0x0033, 0, 0, ciclone_status_r );
1145   memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_IO), 0x0030, 0x0033, 0, 0, ciclone_status_r );
11461146}
11471147
11481148/*
r4679r4680
12121212
12131213static DRIVER_INIT( fashion )
12141214{
1215   memory_install_write16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x0002, 0x0003, 0, 0, fashion_output_w );
1215   memory_install_write16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_IO), 0x0002, 0x0003, 0, 0, fashion_output_w );
12161216}
12171217
12181218GAMEL( 2000, tour4000,  0,      tv_vcf,   tv_vcf,   0,       ROT0,  "High Video", "Tour 4000",         0, layout_fashion )
src/mame/drivers/arcadecl.c
r4679r4680
8484
8585static void update_interrupts(running_machine *machine)
8686{
87   cpu_set_input_line(machine->cpu[0], 4, atarigen_scanline_int_state ? ASSERT_LINE : CLEAR_LINE);
87   cputag_set_input_line(machine, "maincpu", 4, atarigen_scanline_int_state ? ASSERT_LINE : CLEAR_LINE);
8888}
8989
9090
r4679r4680
9292{
9393   /* generate 32V signals */
9494   if ((scanline & 32) == 0)
95      atarigen_scanline_int_gen(screen->machine->cpu[0]);
95      atarigen_scanline_int_gen(cputag_get_cpu(screen->machine, "maincpu"));
9696}
9797
9898
src/mame/drivers/namconb1.c
r4679r4680
298298
299299   video_screen_update_partial(machine->primary_screen, param);
300300   pos_irq_active = 1;
301   cpu_set_input_line(machine->cpu[0], namconb_cpureg[0x02] & 0xf, ASSERT_LINE);
301   cputag_set_input_line(machine, "maincpu", namconb_cpureg[0x02] & 0xf, ASSERT_LINE);
302302}
303303
304304static INTERRUPT_GEN( namconb1_interrupt )
r4679r4680
374374{
375375   video_screen_update_partial(machine->primary_screen, param);
376376   pos_irq_active = 1;
377   cpu_set_input_line(machine->cpu[0], namconb_cpureg[0x02], ASSERT_LINE);
377   cputag_set_input_line(machine, "maincpu", namconb_cpureg[0x02], ASSERT_LINE);
378378}
379379
380380static INTERRUPT_GEN( namconb2_interrupt )
r4679r4680
429429   switch(reg) {
430430   case 0x02: // POS IRQ level/enable
431431      if(pos_irq_active && (((prev & 0xf) != (data & 0xf)) || !(data & 0xf0))) {
432         cpu_set_input_line(machine->cpu[0], prev & 0xf, CLEAR_LINE);
432         cputag_set_input_line(machine, "maincpu", prev & 0xf, CLEAR_LINE);
433433         if(data & 0xf0)
434            cpu_set_input_line(machine->cpu[0], data & 0xf, ASSERT_LINE);
434            cputag_set_input_line(machine, "maincpu", data & 0xf, ASSERT_LINE);
435435         else
436436            pos_irq_active = 0;
437437      }
r4679r4680
439439
440440   case 0x04: // VBLANK IRQ level/enable
441441      if(vblank_irq_active && (((prev & 0xf) != (data & 0xf)) || !(data & 0xf0))) {
442         cpu_set_input_line(machine->cpu[0], prev & 0xf, CLEAR_LINE);
442         cputag_set_input_line(machine, "maincpu", prev & 0xf, CLEAR_LINE);
443443         if(data & 0xf0)
444            cpu_set_input_line(machine->cpu[0], data & 0xf, ASSERT_LINE);
444            cputag_set_input_line(machine, "maincpu", data & 0xf, ASSERT_LINE);
445445         else
446446            vblank_irq_active = 0;
447447      }
r4679r4680
449449
450450   case 0x07: // POS ack
451451      if(pos_irq_active) {
452         cpu_set_input_line(machine->cpu[0], namconb_cpureg[0x02] & 0xf, CLEAR_LINE);
452         cputag_set_input_line(machine, "maincpu", namconb_cpureg[0x02] & 0xf, CLEAR_LINE);
453453         pos_irq_active = 0;
454454      }
455455      break;
456456
457457   case 0x09: // VBLANK ack
458458      if(vblank_irq_active) {
459         cpu_set_input_line(machine->cpu[0], namconb_cpureg[0x04] & 0xf, CLEAR_LINE);
459         cputag_set_input_line(machine, "maincpu", namconb_cpureg[0x04] & 0xf, CLEAR_LINE);
460460         vblank_irq_active = 0;
461461      }
462462      break;
r4679r4680
466466
467467   case 0x18: // C75 Control
468468      if(data & 1) {
469         cpu_set_input_line(machine->cpu[1], INPUT_LINE_HALT, CLEAR_LINE);
470         cpu_set_input_line(machine->cpu[1], INPUT_LINE_RESET, ASSERT_LINE);
471         cpu_set_input_line(machine->cpu[1], INPUT_LINE_RESET, CLEAR_LINE);
469         cputag_set_input_line(machine, "mcu", INPUT_LINE_HALT, CLEAR_LINE);
470         cputag_set_input_line(machine, "mcu", INPUT_LINE_RESET, ASSERT_LINE);
471         cputag_set_input_line(machine, "mcu", INPUT_LINE_RESET, CLEAR_LINE);
472472      } else
473         cpu_set_input_line(machine->cpu[1], INPUT_LINE_HALT, ASSERT_LINE);
473         cputag_set_input_line(machine, "mcu", INPUT_LINE_HALT, ASSERT_LINE);
474474      break;
475475   }
476476}
r4679r4680
495495   switch(reg) {
496496   case 0x00: // VBLANK IRQ level
497497      if(vblank_irq_active && (prev != data)) {
498         cpu_set_input_line(machine->cpu[0], prev, CLEAR_LINE);
498         cputag_set_input_line(machine, "maincpu", prev, CLEAR_LINE);
499499         if(data)
500            cpu_set_input_line(machine->cpu[0], data, ASSERT_LINE);
500            cputag_set_input_line(machine, "maincpu", data, ASSERT_LINE);
501501         else
502502            vblank_irq_active = 0;
503503      }
r4679r4680
505505
506506   case 0x02: // POS IRQ level
507507      if(pos_irq_active && (prev != data)) {
508         cpu_set_input_line(machine->cpu[0], prev, CLEAR_LINE);
508         cputag_set_input_line(machine, "maincpu", prev, CLEAR_LINE);
509509         if(data)
510            cpu_set_input_line(machine->cpu[0], data, ASSERT_LINE);
510            cputag_set_input_line(machine, "maincpu", data, ASSERT_LINE);
511511         else
512512            pos_irq_active = 0;
513513      }
r4679r4680
515515
516516   case 0x04: // VBLANK ack
517517      if(vblank_irq_active) {
518         cpu_set_input_line(machine->cpu[0], namconb_cpureg[0x00], CLEAR_LINE);
518         cputag_set_input_line(machine, "maincpu", namconb_cpureg[0x00], CLEAR_LINE);
519519         vblank_irq_active = 0;
520520      }
521521      break;
522522
523523   case 0x06: // POS ack
524524      if(pos_irq_active) {
525         cpu_set_input_line(machine->cpu[0], namconb_cpureg[0x02], CLEAR_LINE);
525         cputag_set_input_line(machine, "maincpu", namconb_cpureg[0x02], CLEAR_LINE);
526526         pos_irq_active = 0;
527527      }
528528      break;
r4679r4680
532532
533533   case 0x16: // C75 Control
534534      if(data & 1) {
535         cpu_set_input_line(machine->cpu[1], INPUT_LINE_HALT, CLEAR_LINE);
536         cpu_set_input_line(machine->cpu[1], INPUT_LINE_RESET, ASSERT_LINE);
537         cpu_set_input_line(machine->cpu[1], INPUT_LINE_RESET, CLEAR_LINE);
535         cputag_set_input_line(machine, "mcu", INPUT_LINE_HALT, CLEAR_LINE);
536         cputag_set_input_line(machine, "mcu", INPUT_LINE_RESET, ASSERT_LINE);
537         cputag_set_input_line(machine, "mcu", INPUT_LINE_RESET, CLEAR_LINE);
538538      } else {
539         cpu_set_input_line(machine->cpu[1], INPUT_LINE_HALT, ASSERT_LINE);
539         cputag_set_input_line(machine, "mcu", INPUT_LINE_HALT, ASSERT_LINE);
540540      }
541541      break;
542542   }
r4679r4680
852852}
853853
854854static ADDRESS_MAP_START( namconb1_am, ADDRESS_SPACE_PROGRAM, 32 )
855   AM_RANGE(0x000000, 0x0fffff) AM_READ(SMH_ROM) AM_WRITE(SMH_ROM)
855   AM_RANGE(0x000000, 0x0fffff) AM_ROM
856856   AM_RANGE(0x100000, 0x10001f) AM_READ(gunbulet_gun_r)
857   AM_RANGE(0x1c0000, 0x1cffff) AM_READ(SMH_RAM) AM_WRITE(SMH_RAM)
857   AM_RANGE(0x1c0000, 0x1cffff) AM_RAM
858858   AM_RANGE(0x1e4000, 0x1e4003) AM_READWRITE(randgen_r,srand_w)
859859   AM_RANGE(0x200000, 0x207fff) AM_READWRITE(namconb_share_r, namconb_share_w)
860860   AM_RANGE(0x208000, 0x2fffff) AM_RAM
861861   AM_RANGE(0x400000, 0x40001f) AM_READWRITE(namconb_cpureg_r, namconb1_cpureg_w)
862   AM_RANGE(0x580000, 0x5807ff) AM_READ(SMH_RAM) AM_WRITE(SMH_RAM) AM_BASE(&nvmem32)
862   AM_RANGE(0x580000, 0x5807ff) AM_RAM AM_BASE(&nvmem32)
863863   AM_RANGE(0x600000, 0x61ffff) AM_READWRITE(namco_obj32_r,namco_obj32_w)
864864   AM_RANGE(0x620000, 0x620007) AM_READWRITE(namco_spritepos32_r,namco_spritepos32_w)
865865   AM_RANGE(0x640000, 0x64ffff) AM_READWRITE(namco_tilemapvideoram32_r,namco_tilemapvideoram32_w )
866866   AM_RANGE(0x660000, 0x66003f) AM_READWRITE(namco_tilemapcontrol32_r,namco_tilemapcontrol32_w)
867   AM_RANGE(0x680000, 0x68000f) AM_READ(SMH_RAM) AM_WRITE(SMH_RAM) AM_BASE(&namconb1_spritebank32)
867   AM_RANGE(0x680000, 0x68000f) AM_RAM AM_BASE(&namconb1_spritebank32)
868868   AM_RANGE(0x6e0000, 0x6e001f) AM_READ(custom_key_r) AM_WRITENOP
869   AM_RANGE(0x700000, 0x707fff) AM_READ(SMH_RAM) AM_WRITE(SMH_RAM) AM_BASE(&paletteram32)
869   AM_RANGE(0x700000, 0x707fff) AM_RAM AM_BASE(&paletteram32)
870870ADDRESS_MAP_END
871871
872872static ADDRESS_MAP_START( namconb2_am, ADDRESS_SPACE_PROGRAM, 32 )
873   AM_RANGE(0x000000, 0x0fffff) AM_READ(SMH_ROM) AM_WRITE(SMH_ROM)
874   AM_RANGE(0x1c0000, 0x1cffff) AM_READ(SMH_RAM) AM_WRITE(SMH_RAM)
873   AM_RANGE(0x000000, 0x0fffff) AM_ROM
874   AM_RANGE(0x1c0000, 0x1cffff) AM_RAM
875875   AM_RANGE(0x1e4000, 0x1e4003) AM_READWRITE(randgen_r,srand_w)
876876   AM_RANGE(0x200000, 0x207fff) AM_READWRITE(namconb_share_r, namconb_share_w)
877877   AM_RANGE(0x208000, 0x2fffff) AM_RAM
878878   AM_RANGE(0x400000, 0x4fffff) AM_ROM AM_REGION("data", 0)
879879   AM_RANGE(0x600000, 0x61ffff) AM_READWRITE(namco_obj32_r,namco_obj32_w)
880880   AM_RANGE(0x620000, 0x620007) AM_READWRITE(namco_spritepos32_r,namco_spritepos32_w)
881   AM_RANGE(0x640000, 0x64000f) AM_READ(SMH_RAM) AM_WRITE(SMH_RAM) /* unknown xy offset */
881   AM_RANGE(0x640000, 0x64000f) AM_RAM /* unknown xy offset */
882882   AM_RANGE(0x680000, 0x68ffff) AM_READWRITE(namco_tilemapvideoram32_r, namco_tilemapvideoram32_w )
883883   AM_RANGE(0x6c0000, 0x6c003f) AM_READWRITE(namco_tilemapcontrol32_r, namco_tilemapcontrol32_w )
884884   AM_RANGE(0x700000, 0x71ffff) AM_READWRITE(namco_rozvideoram32_r,namco_rozvideoram32_w)
885885   AM_RANGE(0x740000, 0x74001f) AM_READWRITE(namco_rozcontrol32_r,namco_rozcontrol32_w)
886   AM_RANGE(0x800000, 0x807fff) AM_READ(SMH_RAM) AM_WRITE(SMH_RAM) AM_BASE(&paletteram32)
887   AM_RANGE(0x900008, 0x90000f) AM_READ(SMH_RAM) AM_WRITE(SMH_RAM) AM_BASE(&namconb1_spritebank32)
888   AM_RANGE(0x940000, 0x94000f) AM_READ(SMH_RAM) AM_WRITE(SMH_RAM) AM_BASE(&namconb1_tilebank32)
886   AM_RANGE(0x800000, 0x807fff) AM_RAM AM_BASE(&paletteram32)
887   AM_RANGE(0x900008, 0x90000f) AM_RAM AM_BASE(&namconb1_spritebank32)
888   AM_RANGE(0x940000, 0x94000f) AM_RAM AM_BASE(&namconb1_tilebank32)
889889   AM_RANGE(0x980000, 0x98000f) AM_READ(namco_rozbank32_r) AM_WRITE(namco_rozbank32_w)
890   AM_RANGE(0xa00000, 0xa007ff) AM_READ(SMH_RAM) AM_WRITE(SMH_RAM) AM_BASE(&nvmem32)
890   AM_RANGE(0xa00000, 0xa007ff) AM_RAM AM_BASE(&nvmem32)
891891   AM_RANGE(0xc00000, 0xc0001f) AM_READ(custom_key_r) AM_WRITENOP
892892   AM_RANGE(0xf00000, 0xf0001f) AM_READWRITE(namconb_cpureg_r, namconb2_cpureg_w)
893ADDRESS_MAP_END /* namconb2_readmem */
893ADDRESS_MAP_END
894894
895895static WRITE16_HANDLER( nbmcu_shared_w )
896896{
src/mame/drivers/flstory.c
r4679r4680
4646
4747static TIMER_CALLBACK( nmi_callback )
4848{
49   if (sound_nmi_enable) cpu_set_input_line(machine->cpu[1],INPUT_LINE_NMI,PULSE_LINE);
49   if (sound_nmi_enable)
50      cputag_set_input_line(machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
5051   else pending_nmi = 1;
5152}
5253
5354static WRITE8_HANDLER( sound_command_w )
5455{
55   soundlatch_w(space,0,data);
56   timer_call_after_resynch(space->machine, NULL, data,nmi_callback);
56   soundlatch_w(space, 0, data);
57   timer_call_after_resynch(space->machine, NULL, data, nmi_callback);
5758}
5859
5960
r4679r4680
6768   sound_nmi_enable = 1;
6869   if (pending_nmi)
6970   {
70      cpu_set_input_line(space->machine->cpu[1],INPUT_LINE_NMI,PULSE_LINE);
71      cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
7172      pending_nmi = 0;
7273   }
7374}
r4679r4680
126127
127128static CUSTOM_INPUT( victnine_mcu_status_bit01_r )
128129{
129   const address_space *space = cpu_get_address_space(field->port->machine->cpu[0], ADDRESS_SPACE_PROGRAM);
130   const address_space *space = cputag_get_address_space(field->port->machine, "maincpu", ADDRESS_SPACE_PROGRAM);
130131
131   return (victnine_mcu_status_r(space,0) & 3);
132   return (victnine_mcu_status_r(space, 0) & 3);
132133}
133134
134135static ADDRESS_MAP_START( victnine_map, ADDRESS_SPACE_PROGRAM, 8 )
r4679r4680
722723   MDRV_CPU_VBLANK_INT_HACK(irq0_line_hold,2)   /* IRQ generated by ??? */
723724                  /* NMI generated by the main CPU */
724725//  MDRV_CPU_ADD("mcu", M68705,4000000)  /* ??? */
725//  MDRV_CPU_PROGRAM_MAP(m68705_readmem,m68705_writemem)
726//  MDRV_CPU_PROGRAM_MAP(m68705_map,0)
726727
727728   MDRV_QUANTUM_TIME(HZ(6000))   /* 100 CPU slices per frame - an high value to ensure proper */
728729                     /* synchronization of the CPUs */
r4679r4680
779780   MDRV_CPU_VBLANK_INT_HACK(irq0_line_hold,2)   /* IRQ generated by ??? */
780781                  /* NMI generated by the main CPU */
781782//  MDRV_CPU_ADD("mcu", M68705,4000000)  /* ??? */
782//  MDRV_CPU_PROGRAM_MAP(m68705_readmem,m68705_writemem)
783//  MDRV_CPU_PROGRAM_MAP(m68705_map,0)
783784
784785   MDRV_QUANTUM_TIME(HZ(6000))   /* 100 CPU slices per frame - an high value to ensure proper */
785786                     /* synchronization of the CPUs */
src/mame/drivers/fcrash.c
r4679r4680
4848   if (ACCESSING_BITS_0_7)
4949   {
5050      soundlatch_w(space,0,data & 0xff);
51      cpu_set_input_line(space->machine->cpu[1], 0, HOLD_LINE);
51      cputag_set_input_line(space->machine, "soundcpu", 0, HOLD_LINE);
5252   }
5353}
5454
r4679r4680
7070   sample_buffer1 >>= 4;
7171   sample_select1 ^= 1;
7272   if (sample_select1 == 0)
73      cpu_set_input_line(device->machine->cpu[1], INPUT_LINE_NMI, PULSE_LINE);
73      cputag_set_input_line(device->machine, "soundcpu", INPUT_LINE_NMI, PULSE_LINE);
7474}
7575
7676static void m5205_int2(const device_config *device)
src/mame/drivers/suprslam.c
r4679r4680
107107   if (ACCESSING_BITS_0_7)
108108   {
109109      pending_command = 1;
110      soundlatch_w(space,offset,data & 0xff);
111      cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_NMI, PULSE_LINE);
110      soundlatch_w(space, offset, data & 0xff);
111      cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
112112   }
113113}
114114
r4679r4680
287287
288288static void irqhandler(const device_config *device, int irq)
289289{
290   cpu_set_input_line(device->machine->cpu[1],0,irq ? ASSERT_LINE : CLEAR_LINE);
290   cputag_set_input_line(device->machine, "audiocpu", 0, irq ? ASSERT_LINE : CLEAR_LINE);
291291}
292292
293293static const ym2610_interface ym2610_config =
r4679r4680
366366/*** GAME DRIVERS ************************************************************/
367367
368368GAME( 1995, suprslam, 0, suprslam, suprslam, 0, ROT0, "Banpresto / Toei Animation", "Super Slams", GAME_IMPERFECT_GRAPHICS )
369
370
src/mame/drivers/strnskil.c
r4679r4680
504504//  AM_RANGE(0xd806, 0xd806) AM_READ(protection_r) /* protection data read (pettanp) */
505505
506506   /* Fujitsu MB8841 4-Bit MCU */
507   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xd806, 0xd806, 0, 0, pettanp_protection_r);
508   memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xd80d, 0xd80d, 0, 0, protection_w);
507   memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xd806, 0xd806, 0, 0, pettanp_protection_r);
508   memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xd80d, 0xd80d, 0, 0, protection_w);
509509
510510}
511511
512512static DRIVER_INIT( banbam )
513513{
514514   /* Fujitsu MB8841 4-Bit MCU */
515   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xd806, 0xd806, 0, 0, banbam_protection_r);
516   memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xd80d, 0xd80d, 0, 0, protection_w);
515   memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xd806, 0xd806, 0, 0, banbam_protection_r);
516   memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xd80d, 0xd80d, 0, 0, protection_w);
517517}
518518
519519GAME( 1984, strnskil, 0,        strnskil, strnskil, 0,       ROT0, "Sun Electronics", "Strength & Skill", 0 )
src/mame/drivers/sfkick.c
r4679r4680
9292      case 0: /* bios */
9393      {
9494         UINT8 *mem = memory_region(machine, "bios");
95         memory_set_bankptr (machine, 1, mem);
96         memory_set_bankptr (machine,2, mem+0x2000);
95         memory_set_bankptr(machine,1, mem);
96         memory_set_bankptr(machine,2, mem+0x2000);
9797      }
9898      break;
9999
100100      case 1: /* ext rom */
101101      {
102102         UINT8 *mem = memory_region(machine, "extrom");
103         memory_set_bankptr (machine,1, mem+0x4000);
104         memory_set_bankptr (machine,2, mem+0x6000);
103         memory_set_bankptr(machine,1, mem+0x4000);
104         memory_set_bankptr(machine,2, mem+0x6000);
105105      }
106106      break;
107107
108108      case 2: /* banked */
109109      {
110110         UINT8 *mem = memory_region(machine, "banked");
111         memory_set_bankptr (machine,1, mem+0x2000*sfkick_bank[0]);
112         memory_set_bankptr (machine,2, mem+0x2000*sfkick_bank[1]);
111         memory_set_bankptr(machine,1, mem+0x2000*sfkick_bank[0]);
112         memory_set_bankptr(machine,2, mem+0x2000*sfkick_bank[1]);
113113      }
114114      break;
115115
r4679r4680
128128      case 0: /* bios - upper part */
129129      {
130130         UINT8 *mem = memory_region(machine, "bios");
131         memory_set_bankptr (machine,3, mem+0x4000);
132         memory_set_bankptr (machine,4, mem+0x6000);
131         memory_set_bankptr(machine,3, mem+0x4000);
132         memory_set_bankptr(machine,4, mem+0x6000);
133133      }
134134      break;
135135
r4679r4680
145145      case 2: /* banked */
146146      {
147147         UINT8 *mem = memory_region(machine, "banked");
148         memory_set_bankptr (machine,3, mem+0x2000*sfkick_bank[2]);
149         memory_set_bankptr (machine,4, mem+0x2000*sfkick_bank[3]);
148         memory_set_bankptr(machine,3, mem+0x2000*sfkick_bank[2]);
149         memory_set_bankptr(machine,4, mem+0x2000*sfkick_bank[3]);
150150      }
151151      break;
152152   }
r4679r4680
174174      case 2: /* banked */
175175      {
176176         UINT8 *mem = memory_region(machine, "banked");
177         memory_set_bankptr (machine,5, mem+0x2000*sfkick_bank[4]);
178         memory_set_bankptr (machine,6, mem+0x2000*sfkick_bank[5]);
177         memory_set_bankptr(machine,5, mem+0x2000*sfkick_bank[4]);
178         memory_set_bankptr(machine,6, mem+0x2000*sfkick_bank[5]);
179179      }
180180      break;
181181   }
r4679r4680
195195      case 2: /* banked */
196196      {
197197         UINT8 *mem = memory_region(machine, "banked");
198         memory_set_bankptr (machine,7, mem+0x2000*sfkick_bank[6]);
199         memory_set_bankptr (machine,8, mem+0x2000*sfkick_bank[7]);
198         memory_set_bankptr(machine,7, mem+0x2000*sfkick_bank[6]);
199         memory_set_bankptr(machine,8, mem+0x2000*sfkick_bank[7]);
200200      }
201201      break;
202202
r4679r4680
293293   }
294294}
295295
296static ADDRESS_MAP_START (readmem, ADDRESS_SPACE_PROGRAM, 8)
297   AM_RANGE( 0x0000, 0x1fff) AM_READ( SMH_BANK1 )
298   AM_RANGE( 0x2000, 0x3fff) AM_READ( SMH_BANK2 )
299   AM_RANGE( 0x4000, 0x5fff) AM_READ( SMH_BANK3 )
300   AM_RANGE( 0x6000, 0x7fff) AM_READ( SMH_BANK4 )
301   AM_RANGE( 0x8000, 0x9fff) AM_READ( SMH_BANK5 )
302   AM_RANGE( 0xa000, 0xbfff) AM_READ( SMH_BANK6 )
303   AM_RANGE( 0xc000, 0xdfff) AM_READ( SMH_BANK7 )
304   AM_RANGE( 0xe000, 0xffff) AM_READ( SMH_BANK8 )
305ADDRESS_MAP_END
306
307static ADDRESS_MAP_START( writemem , ADDRESS_SPACE_PROGRAM, 8)
296static ADDRESS_MAP_START( sfkick_map, ADDRESS_SPACE_PROGRAM, 8)
297   AM_RANGE( 0x0000, 0x1fff) AM_ROMBANK(1)
298   AM_RANGE( 0x2000, 0x3fff) AM_ROMBANK(2)
299   AM_RANGE( 0x4000, 0x5fff) AM_ROMBANK(3)
300   AM_RANGE( 0x6000, 0x7fff) AM_ROMBANK(4)
301   AM_RANGE( 0x8000, 0x9fff) AM_ROMBANK(5)
302   AM_RANGE( 0xa000, 0xbfff) AM_ROMBANK(6)
303   AM_RANGE( 0xc000, 0xdfff) AM_ROMBANK(7)
304   AM_RANGE( 0xe000, 0xffff) AM_ROMBANK(8)
308305   AM_RANGE( 0x0000, 0x3fff) AM_WRITE( page0_w )
309306   AM_RANGE( 0x4000, 0x7fff) AM_WRITE( page1_w )
310307   AM_RANGE( 0x8000, 0xbfff) AM_WRITE( page2_w )
311308   AM_RANGE( 0xc000, 0xffff) AM_WRITE( page3_w )
312309ADDRESS_MAP_END
313310
314static ADDRESS_MAP_START (main_io, ADDRESS_SPACE_IO, 8)
311static ADDRESS_MAP_START( sfkick_io_map, ADDRESS_SPACE_IO, 8)
315312   ADDRESS_MAP_UNMAP_HIGH
316313   ADDRESS_MAP_GLOBAL_MASK(0xff)
317314   AM_RANGE( 0xa0, 0xa7) AM_WRITE( soundlatch_w )
r4679r4680
322319   AM_RANGE( 0xa8, 0xab) AM_DEVREADWRITE("ppi8255", ppi8255_r, ppi8255_w)
323320ADDRESS_MAP_END
324321
325static ADDRESS_MAP_START( sound_mem, ADDRESS_SPACE_PROGRAM, 8 )
322static ADDRESS_MAP_START( sfkick_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
326323   AM_RANGE(0x0000, 0x7fff) AM_ROM
327324   AM_RANGE(0xc000, 0xc7ff) AM_RAM
328325ADDRESS_MAP_END
329326
330static ADDRESS_MAP_START (sound_io, ADDRESS_SPACE_IO, 8)
327static ADDRESS_MAP_START( sfkick_sound_io_map, ADDRESS_SPACE_IO, 8)
331328   ADDRESS_MAP_GLOBAL_MASK(0xff)
332329   AM_RANGE(0x00, 0x00) AM_READ(soundlatch_r)
333330   AM_RANGE(0x04, 0x05) AM_DEVREADWRITE("ym1", ym2203_r, ym2203_w)
r4679r4680
413410
414411static void sfkick_vdp_interrupt(running_machine *machine, int i)
415412{
416   cpu_set_input_line (machine->cpu[0], 0, (i ? HOLD_LINE : CLEAR_LINE));
413   cputag_set_input_line (machine, "maincpu", 0, (i ? HOLD_LINE : CLEAR_LINE));
417414}
418415
419416static VIDEO_START( sfkick )
r4679r4680
444441}
445442static void irqhandler(const device_config *device, int irq)
446443{
447   cpu_set_input_line_and_vector(device->machine->cpu[1], 0, irq ? ASSERT_LINE : CLEAR_LINE, 0xff);
444   cputag_set_input_line_and_vector(device->machine, "soundcpu", 0, irq ? ASSERT_LINE : CLEAR_LINE, 0xff);
448445}
449446
450447static const ym2203_interface ym2203_config =
r4679r4680
460457static MACHINE_DRIVER_START( sfkick )
461458
462459   MDRV_CPU_ADD("maincpu",Z80,MASTER_CLOCK/6)
463   MDRV_CPU_PROGRAM_MAP(readmem,writemem)
464   MDRV_CPU_IO_MAP(main_io,0)
460   MDRV_CPU_PROGRAM_MAP(sfkick_map,0)
461   MDRV_CPU_IO_MAP(sfkick_io_map,0)
465462   MDRV_CPU_VBLANK_INT_HACK(sfkick_interrupt,262)
466463
467464   MDRV_QUANTUM_TIME(HZ(60000))
468465
469466   MDRV_CPU_ADD("soundcpu",Z80,MASTER_CLOCK/6)
470   MDRV_CPU_PROGRAM_MAP(sound_mem,0)
471   MDRV_CPU_IO_MAP(sound_io,0)
467   MDRV_CPU_PROGRAM_MAP(sfkick_sound_map,0)
468   MDRV_CPU_IO_MAP(sfkick_sound_io_map,0)
472469
473470   MDRV_SCREEN_ADD("screen", RASTER)
474471   MDRV_SCREEN_REFRESH_RATE(60)
r4679r4680
500497
501498static DRIVER_INIT(sfkick)
502499{
503   main_mem=auto_malloc(0x4000);
500   main_mem=auto_alloc_array(machine, UINT8, 0x4000);
504501}
505502
506503ROM_START( sfkick )
src/mame/drivers/atetris.c
r4679r4680
8080   int scanline = param;
8181
8282   /* assert/deassert the interrupt */
83   cpu_set_input_line(machine->cpu[0], 0, (scanline & 32) ? ASSERT_LINE : CLEAR_LINE);
83   cputag_set_input_line(machine, "maincpu", 0, (scanline & 32) ? ASSERT_LINE : CLEAR_LINE);
8484
8585   /* set the next timer */
8686   scanline += 32;
r4679r4680
9292
9393static WRITE8_HANDLER( irq_ack_w )
9494{
95   cpu_set_input_line(space->machine->cpu[0], 0, CLEAR_LINE);
95   cputag_set_input_line(space->machine, "maincpu", 0, CLEAR_LINE);
9696}
9797
9898
src/mame/drivers/dgpix.c
r4679r4680
269269
270270static VIDEO_START( dgpix )
271271{
272   vram = auto_malloc(0x40000*2);
272   vram = auto_alloc_array(machine, UINT32, 0x40000*2/4);
273273}
274274
275275static VIDEO_UPDATE( dgpix )
r4679r4680
566566   rom[BYTE4_XOR_BE(0x3aa933)] = 0;
567567
568568//  protection related ?
569//  memory_install_read32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xf0c8b440, 0xf0c8b447, 0, 0, SMH_NOP );
569//  memory_install_read32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xf0c8b440, 0xf0c8b447, 0, 0, (read32_space_func)SMH_NOP );
570570
571571   flash_roms = 2;
572572}
r4679r4680
586586   rom[BYTE4_XOR_BE(0x3a45c9)] = 0;
587587
588588//  protection related ?
589//  memory_install_read32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x12341234, 0x12341243, 0, 0, SMH_NOP );
589//  memory_install_read32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x12341234, 0x12341243, 0, 0, (read32_space_func)SMH_NOP );
590590
591591   flash_roms = 4;
592592}
src/mame/drivers/cosmic.c
r4679r4680
469469}
470470
471471
472static ADDRESS_MAP_START( panic_readmem, ADDRESS_SPACE_PROGRAM, 8 )
473   AM_RANGE(0x0000, 0x3fff) AM_READ(SMH_ROM)
474   AM_RANGE(0x4000, 0x5fff) AM_READ(SMH_RAM)
472static ADDRESS_MAP_START( panic_map, ADDRESS_SPACE_PROGRAM, 8 )
473   AM_RANGE(0x0000, 0x3fff) AM_ROM
474   AM_RANGE(0x4000, 0x5fff) AM_RAM AM_BASE(&videoram) AM_SIZE(&videoram_size)
475   AM_RANGE(0x6000, 0x601f) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
475476   AM_RANGE(0x6800, 0x6800) AM_READ_PORT("P1")
476477   AM_RANGE(0x6801, 0x6801) AM_READ_PORT("P2")
477478   AM_RANGE(0x6802, 0x6802) AM_READ_PORT("DSW")
478479   AM_RANGE(0x6803, 0x6803) AM_READ_PORT("SYSTEM")
479ADDRESS_MAP_END
480
481static ADDRESS_MAP_START( panic_writemem, ADDRESS_SPACE_PROGRAM, 8 )
482   AM_RANGE(0x0000, 0x3fff) AM_WRITE(SMH_ROM)
483   AM_RANGE(0x4000, 0x5fff) AM_WRITE(SMH_RAM) AM_BASE(&videoram) AM_SIZE(&videoram_size)
484   AM_RANGE(0x6000, 0x601f) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
485480   AM_RANGE(0x7000, 0x700b) AM_WRITE(panic_sound_output_w)
486481   AM_RANGE(0x700c, 0x700e) AM_WRITE(cosmic_color_register_w)
487482   AM_RANGE(0x700f, 0x700f) AM_WRITE(flip_screen_w)
r4679r4680
489484ADDRESS_MAP_END
490485
491486
492static ADDRESS_MAP_START( cosmica_readmem, ADDRESS_SPACE_PROGRAM, 8 )
493   AM_RANGE(0x0000, 0x3fff) AM_READ(SMH_ROM)
494   AM_RANGE(0x4000, 0x5fff) AM_READ(SMH_RAM)
487static ADDRESS_MAP_START( cosmica_map, ADDRESS_SPACE_PROGRAM, 8 )
488   AM_RANGE(0x0000, 0x3fff) AM_ROM
489   AM_RANGE(0x4000, 0x5fff) AM_RAM AM_BASE(&videoram) AM_SIZE(&videoram_size)
490   AM_RANGE(0x6000, 0x601f) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
495491   AM_RANGE(0x6800, 0x6800) AM_READ_PORT("P1")
496492   AM_RANGE(0x6801, 0x6801) AM_READ_PORT("P2")
497493   AM_RANGE(0x6802, 0x6802) AM_READ_PORT("DSW")
498494   AM_RANGE(0x6803, 0x6803) AM_READ(cosmica_pixel_clock_r)
499ADDRESS_MAP_END
500
501static ADDRESS_MAP_START( cosmica_writemem, ADDRESS_SPACE_PROGRAM, 8 )
502   AM_RANGE(0x0000, 0x3fff) AM_WRITE(SMH_ROM)
503   AM_RANGE(0x4000, 0x5fff) AM_WRITE(SMH_RAM) AM_BASE(&videoram) AM_SIZE(&videoram_size)
504   AM_RANGE(0x6000, 0x601f) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
505495   AM_RANGE(0x7000, 0x700b) AM_WRITE(cosmica_sound_output_w)
506496   AM_RANGE(0x700c, 0x700d) AM_WRITE(cosmic_color_register_w)
507497   AM_RANGE(0x700f, 0x700f) AM_WRITE(flip_screen_w)
508498ADDRESS_MAP_END
509499
510500
511static ADDRESS_MAP_START( cosmicg_readmem, ADDRESS_SPACE_PROGRAM, 8 )
512   AM_RANGE(0x0000, 0x1fff) AM_READ(SMH_ROM)
513   AM_RANGE(0x2000, 0x3fff) AM_READ(SMH_RAM)
501static ADDRESS_MAP_START( cosmicg_map, ADDRESS_SPACE_PROGRAM, 8 )
502   AM_RANGE(0x0000, 0x1fff) AM_ROM
503   AM_RANGE(0x2000, 0x3fff) AM_RAM AM_BASE(&videoram) AM_SIZE(&videoram_size)
514504ADDRESS_MAP_END
515505
516static ADDRESS_MAP_START( cosmicg_writemem, ADDRESS_SPACE_PROGRAM, 8 )
517   AM_RANGE(0x0000, 0x1fff) AM_WRITE(SMH_ROM)
518   AM_RANGE(0x2000, 0x3fff) AM_WRITE(SMH_RAM) AM_BASE(&videoram) AM_SIZE(&videoram_size)
519ADDRESS_MAP_END
520
521506static ADDRESS_MAP_START( cosmicg_io_map, ADDRESS_SPACE_IO, 8 )
522507   AM_RANGE(0x00, 0x00) AM_READ(cosmicg_port_0_r)
523508   AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1")
r4679r4680
526511ADDRESS_MAP_END
527512
528513
529static ADDRESS_MAP_START( magspot_readmem, ADDRESS_SPACE_PROGRAM, 8 )
530   AM_RANGE(0x0000, 0x2fff) AM_READ(SMH_ROM)
514static ADDRESS_MAP_START( magspot_map, ADDRESS_SPACE_PROGRAM, 8 )
515   AM_RANGE(0x0000, 0x2fff) AM_ROM
531516   AM_RANGE(0x3800, 0x3807) AM_READ(magspot_coinage_dip_r)
517   AM_RANGE(0x4000, 0x401f) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
518   AM_RANGE(0x4800, 0x4800) AM_DEVWRITE("dac", dac_w)
519   AM_RANGE(0x480c, 0x480d) AM_WRITE(cosmic_color_register_w)
520   AM_RANGE(0x480f, 0x480f) AM_WRITE(flip_screen_w)
532521   AM_RANGE(0x5000, 0x5000) AM_READ_PORT("IN0")
533522   AM_RANGE(0x5001, 0x5001) AM_READ_PORT("IN1")
534523   AM_RANGE(0x5002, 0x5002) AM_READ_PORT("IN2")
535524   AM_RANGE(0x5003, 0x5003) AM_READ_PORT("IN3")
536   AM_RANGE(0x6000, 0x7fff) AM_READ(SMH_RAM)
525   AM_RANGE(0x6000, 0x7fff) AM_RAM AM_BASE(&videoram) AM_SIZE(&videoram_size)
537526ADDRESS_MAP_END
538527
539static ADDRESS_MAP_START( magspot_writemem, ADDRESS_SPACE_PROGRAM, 8 )
540   AM_RANGE(0x0000, 0x2fff) AM_WRITE(SMH_ROM)
541   AM_RANGE(0x4000, 0x401f) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
542   AM_RANGE(0x4800, 0x4800) AM_DEVWRITE("dac", dac_w)
543   AM_RANGE(0x480c, 0x480d) AM_WRITE(cosmic_color_register_w)
544   AM_RANGE(0x480f, 0x480f) AM_WRITE(flip_screen_w)
545   AM_RANGE(0x6000, 0x7fff) AM_WRITE(SMH_RAM) AM_BASE(&videoram) AM_SIZE(&videoram_size)
546ADDRESS_MAP_END
547528
548
549529static INPUT_PORTS_START( panic )
550530   PORT_START("P1")
551531   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 )
r4679r4680
11021082   MDRV_IMPORT_FROM(cosmic)
11031083   MDRV_CPU_MODIFY("maincpu")
11041084
1105   MDRV_CPU_PROGRAM_MAP(panic_readmem,panic_writemem)
1085   MDRV_CPU_PROGRAM_MAP(panic_map,0)
11061086   MDRV_CPU_VBLANK_INT_HACK(panic_interrupt,2)
11071087
11081088   /* video hardware */
r4679r4680
11301110   MDRV_IMPORT_FROM(cosmic)
11311111   MDRV_CPU_MODIFY("maincpu")
11321112
1133   MDRV_CPU_PROGRAM_MAP(cosmica_readmem,cosmica_writemem)
1113   MDRV_CPU_PROGRAM_MAP(cosmica_map,0)
11341114   MDRV_CPU_VBLANK_INT_HACK(cosmica_interrupt,32)
11351115
11361116   /* video hardware */
r4679r4680
11611141         /* R Nabet : huh ? This would imply the crystal frequency is somehow divided by 2 before being
11621142            fed to the tms9904 or tms9980.  Also, I have never heard of a tms9900/9980 operating under
11631143            1.5MHz.  So, if someone can check this... */
1164   MDRV_CPU_PROGRAM_MAP(cosmicg_readmem,cosmicg_writemem)
1144   MDRV_CPU_PROGRAM_MAP(cosmicg_map,0)
11651145   MDRV_CPU_IO_MAP(cosmicg_io_map,0)
11661146   MDRV_CPU_VBLANK_INT("screen", cosmicg_interrupt)
11671147
r4679r4680
11951175   MDRV_IMPORT_FROM(cosmic)
11961176   MDRV_CPU_MODIFY("maincpu")
11971177
1198   MDRV_CPU_PROGRAM_MAP(magspot_readmem,magspot_writemem)
1178   MDRV_CPU_PROGRAM_MAP(magspot_map,0)
11991179   MDRV_CPU_VBLANK_INT("screen", magspot_interrupt)
12001180
12011181   /* video hardware */
r4679r4680
12291209   MDRV_IMPORT_FROM(cosmic)
12301210   MDRV_CPU_MODIFY("maincpu")
12311211
1232   MDRV_CPU_PROGRAM_MAP(magspot_readmem,magspot_writemem)
1212   MDRV_CPU_PROGRAM_MAP(magspot_map,0)
12331213   MDRV_CPU_VBLANK_INT("screen", nomnlnd_interrupt)
12341214
12351215   /* video hardware */
r4679r4680
15901570
15911571static DRIVER_INIT( devzone )
15921572{
1593   memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x4807, 0x4807, 0, 0, cosmic_background_enable_w);
1573   memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x4807, 0x4807, 0, 0, cosmic_background_enable_w);
15941574}
15951575
15961576
15971577static DRIVER_INIT( nomnlnd )
15981578{
15991579   const device_config *dac = devtag_get_device(machine, "dac");
1600   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x5000, 0x5001, 0, 0, nomnlnd_port_0_1_r);
1601   memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x4800, 0x4800, 0, 0, SMH_NOP);
1602   memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x4807, 0x4807, 0, 0, cosmic_background_enable_w);
1603   memory_install_write8_device_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), dac, 0x480a, 0x480a, 0, 0, dac_w);
1580   memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x5000, 0x5001, 0, 0, nomnlnd_port_0_1_r);
1581   memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x4800, 0x4800, 0, 0, (write8_space_func)SMH_NOP);
1582   memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x4807, 0x4807, 0, 0, cosmic_background_enable_w);
1583   memory_install_write8_device_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), dac, 0x480a, 0x480a, 0, 0, dac_w);
16041584}
16051585
16061586
r4679r4680
16181598GAME( 1980, panicger, panic,   panic,    panic,    0,       ROT270, "Universal (ADP Automaten license)", "Space Panic (German)", 0 )
16191599GAME( 1980, devzone,  0,       devzone,  devzone,  devzone, ROT270, "Universal", "Devil Zone", GAME_IMPERFECT_SOUND )
16201600GAME( 1980, devzone2, devzone, devzone,  devzone2, devzone, ROT270, "Universal", "Devil Zone (easier)", GAME_IMPERFECT_SOUND )
1621
src/mame/drivers/sangho.c
r4679r4680
5959   sangho_ram[offset]=data;
6060}
6161
62static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 )
62static ADDRESS_MAP_START( pzlestar_map, ADDRESS_SPACE_PROGRAM, 8 )
6363   AM_RANGE(0x0000, 0xffff) AM_WRITE(sangho_ram_w)
64   AM_RANGE(0x0000, 0x3fff) AM_READ( SMH_BANK1 )
65   AM_RANGE(0x4000, 0x7fff) AM_READ( SMH_BANK2 )
66   AM_RANGE(0x8000, 0xbfff) AM_READ( SMH_BANK3 )
67   AM_RANGE(0xc000, 0xffff) AM_READ( SMH_BANK4 )
64   AM_RANGE(0x0000, 0x3fff) AM_ROMBANK(1)
65   AM_RANGE(0x4000, 0x7fff) AM_ROMBANK(2)
66   AM_RANGE(0x8000, 0xbfff) AM_ROMBANK(3)
67   AM_RANGE(0xc000, 0xffff) AM_ROMBANK(4)
6868ADDRESS_MAP_END
6969
7070/* Wrong ! */
r4679r4680
203203
204204static void msx_vdp_interrupt(running_machine *machine, int i)
205205{
206   cpu_set_input_line (machine->cpu[0], 0, (i ? HOLD_LINE : CLEAR_LINE));
206   cputag_set_input_line (machine, "maincpu", 0, (i ? HOLD_LINE : CLEAR_LINE));
207207}
208208
209209static INTERRUPT_GEN( sangho_interrupt )
r4679r4680
223223static MACHINE_DRIVER_START(pzlestar)
224224
225225   MDRV_CPU_ADD("maincpu", Z80,8000000) // ?
226   MDRV_CPU_PROGRAM_MAP(readmem, 0)
226   MDRV_CPU_PROGRAM_MAP(pzlestar_map, 0)
227227   MDRV_CPU_IO_MAP(pzlestar_io_map,0)
228228   MDRV_CPU_VBLANK_INT_HACK(sangho_interrupt,262)
229229
r4679r4680
256256static MACHINE_DRIVER_START(sexyboom )
257257
258258   MDRV_CPU_ADD("maincpu", Z80,8000000) // ?
259   MDRV_CPU_PROGRAM_MAP(readmem, 0)
259   MDRV_CPU_PROGRAM_MAP(pzlestar_map, 0)
260260   MDRV_CPU_IO_MAP(sexyboom_io_map,0)
261261   MDRV_CPU_VBLANK_INT_HACK(sangho_interrupt,262)
262262
r4679r4680
324324
325325static DRIVER_INIT(sangho)
326326{
327   sangho_ram = auto_malloc(0x20000);
327   sangho_ram = auto_alloc_array(machine, UINT8, 0x20000);
328328}
329329
330330GAME( 1991, pzlestar,  0,    pzlestar, sangho, sangho, ROT270, "Sang Ho Soft", "Puzzle Star (Sang Ho Soft)", GAME_NOT_WORKING )
331331GAME( 1992, sexyboom,  0,    sexyboom, sangho, sangho, ROT270, "Sang Ho Soft", "Sexy Boom", GAME_NOT_WORKING | GAME_NO_SOUND )
332
src/mame/drivers/shaolins.c
r4679r4680
3636
3737
3838
39static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 )
39static ADDRESS_MAP_START( shaolins_map, ADDRESS_SPACE_PROGRAM, 8 )
40   AM_RANGE(0x0000, 0x0000) AM_WRITE(shaolins_nmi_w)   /* bit 0 = flip screen, bit 1 = nmi enable, bit 2 = ? */
41                                          /* bit 3, bit 4 = coin counters */
42   AM_RANGE(0x0100, 0x0100) AM_WRITE(watchdog_reset_w)
43   AM_RANGE(0x0300, 0x0300) AM_DEVWRITE("sn1", sn76496_w)    /* trigger chip to read from latch. The program always */
44   AM_RANGE(0x0400, 0x0400) AM_DEVWRITE("sn2", sn76496_w)    /* writes the same number as the latch, so we don't */
45                                             /* bother emulating them. */
4046   AM_RANGE(0x0500, 0x0500) AM_READ_PORT("DSW1")
4147   AM_RANGE(0x0600, 0x0600) AM_READ_PORT("DSW2")
4248   AM_RANGE(0x0700, 0x0700) AM_READ_PORT("SYSTEM")
4349   AM_RANGE(0x0701, 0x0701) AM_READ_PORT("P1")
4450   AM_RANGE(0x0702, 0x0702) AM_READ_PORT("P2")
4551   AM_RANGE(0x0703, 0x0703) AM_READ_PORT("DSW3")
46   AM_RANGE(0x2800, 0x2bff) AM_READ(SMH_RAM)   /* RAM BANK 2 */
47   AM_RANGE(0x3000, 0x33ff) AM_READ(SMH_RAM)   /* RAM BANK 1 */
48   AM_RANGE(0x3800, 0x3fff) AM_READ(SMH_RAM)   /* video RAM */
49   AM_RANGE(0x4000, 0x5fff) AM_READ(SMH_ROM)    /* Machine checks for extra rom */
50   AM_RANGE(0x6000, 0xffff) AM_READ(SMH_ROM)
51ADDRESS_MAP_END
52
53static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 )
54   AM_RANGE(0x0000, 0x0000) AM_WRITE(shaolins_nmi_w)   /* bit 0 = flip screen, bit 1 = nmi enable, bit 2 = ? */
55                              /* bit 3, bit 4 = coin counters */
56   AM_RANGE(0x0100, 0x0100) AM_WRITE(watchdog_reset_w)
57   AM_RANGE(0x0300, 0x0300) AM_DEVWRITE("sn1", sn76496_w)    /* trigger chip to read from latch. The program always */
58   AM_RANGE(0x0400, 0x0400) AM_DEVWRITE("sn2", sn76496_w)    /* writes the same number as the latch, so we don't */
59                              /* bother emulating them. */
60   AM_RANGE(0x0800, 0x0800) AM_WRITENOP   /* latch for 76496 #0 */
61   AM_RANGE(0x1000, 0x1000) AM_WRITENOP   /* latch for 76496 #1 */
52   AM_RANGE(0x0800, 0x0800) AM_WRITENOP               /* latch for 76496 #0 */
53   AM_RANGE(0x1000, 0x1000) AM_WRITENOP               /* latch for 76496 #1 */
6254   AM_RANGE(0x1800, 0x1800) AM_WRITE(shaolins_palettebank_w)
6355   AM_RANGE(0x2000, 0x2000) AM_WRITE(shaolins_scroll_w)
64   AM_RANGE(0x2800, 0x2bff) AM_WRITE(SMH_RAM)   /* RAM BANK 2 */
65   AM_RANGE(0x3000, 0x30ff) AM_WRITE(SMH_RAM)   /* RAM BANK 1 */
66   AM_RANGE(0x3100, 0x33ff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
67   AM_RANGE(0x3800, 0x3bff) AM_WRITE(shaolins_colorram_w) AM_BASE(&colorram)
68   AM_RANGE(0x3c00, 0x3fff) AM_WRITE(shaolins_videoram_w) AM_BASE(&videoram)
69   AM_RANGE(0x6000, 0xffff) AM_WRITE(SMH_ROM)
56   AM_RANGE(0x2800, 0x2bff) AM_RAM                     /* RAM BANK 2 */
57   AM_RANGE(0x3000, 0x30ff) AM_RAM                     /* RAM BANK 1 */
58   AM_RANGE(0x3100, 0x33ff) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
59   AM_RANGE(0x3800, 0x3bff) AM_RAM_WRITE(shaolins_colorram_w) AM_BASE(&colorram)
60   AM_RANGE(0x3c00, 0x3fff) AM_RAM_WRITE(shaolins_videoram_w) AM_BASE(&videoram)
61   AM_RANGE(0x4000, 0x5fff) AM_ROM                     /* Machine checks for extra rom */
62   AM_RANGE(0x6000, 0xffff) AM_ROM
7063ADDRESS_MAP_END
7164
7265
73
7466static INPUT_PORTS_START( shaolins )
7567   PORT_START("SYSTEM")
7668   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
r4679r4680
220212
221213   /* basic machine hardware */
222214   MDRV_CPU_ADD("maincpu", M6809, XTAL_18_432MHz/12)        /* verified on pcb */
223   MDRV_CPU_PROGRAM_MAP(readmem,writemem)
215   MDRV_CPU_PROGRAM_MAP(shaolins_map,0)
224216   MDRV_CPU_VBLANK_INT_HACK(shaolins_interrupt,16)   /* 1 IRQ + 8 NMI */
225217
226218   /* video hardware */
src/mame/drivers/model2.c
r4679r4680
302302   model2_intreq |= (1<<bit);
303303   if (model2_intena & (1<<bit))
304304   {
305      cpu_set_input_line(machine->cpu[0], I960_IRQ2, ASSERT_LINE);
305      cputag_set_input_line(machine, "maincpu", I960_IRQ2, ASSERT_LINE);
306306   }
307307
308308   model2_timervals[tnum] = 0;
r4679r4680
848848
849849static int snd_68k_ready_r(const address_space *space)
850850{
851   int sr = cpu_get_reg(space->machine->cpu[1], M68K_SR);
851   int sr = cpu_get_reg(cputag_get_cpu(space->machine, "audiocpu"), M68K_SR);
852852
853853   if ((sr & 0x0700) > 0x0100)
854854   {
r4679r4680
868868
869869   to_68k = data;
870870
871   cpu_set_input_line(space->machine->cpu[1], 2, HOLD_LINE);
871   cputag_set_input_line(space->machine, "audiocpu", 2, HOLD_LINE);
872872
873873   // give the 68k time to notice
874874   cpu_spinuntil_time(space->cpu, ATTOTIME_IN_USEC(40));
r4679r4680
17131713   AM_RANGE(0x400000, 0x400001) AM_WRITE(model2snd_ctrl)
17141714   AM_RANGE(0x600000, 0x67ffff) AM_ROM AM_REGION("audiocpu", 0x80000)
17151715   AM_RANGE(0x800000, 0x9fffff) AM_ROM AM_REGION("scsp", 0)
1716   AM_RANGE(0xa00000, 0xdfffff) AM_READ(SMH_BANK4)
1717   AM_RANGE(0xe00000, 0xffffff) AM_READ(SMH_BANK5)
1716   AM_RANGE(0xa00000, 0xdfffff) AM_READ(SMH_BANK(4))
1717   AM_RANGE(0xe00000, 0xffffff) AM_READ(SMH_BANK(5))
17181718ADDRESS_MAP_END
17191719
17201720static int scsp_last_line = 0;
r4679r4680
17241724   if (irq > 0)
17251725   {
17261726      scsp_last_line = irq;
1727      cpu_set_input_line(device->machine->cpu[1], irq, ASSERT_LINE);
1727      cputag_set_input_line(device->machine, "audiocpu", irq, ASSERT_LINE);
17281728   }
17291729   else
1730      cpu_set_input_line(device->machine->cpu[1], -irq, CLEAR_LINE);
1730      cputag_set_input_line(device->machine, "audiocpu", -irq, CLEAR_LINE);
17311731}
17321732
17331733static const scsp_interface scsp_config =
r4679r4680
44074407
44084408static DRIVER_INIT( genprot )
44094409{
4410   memory_install_readwrite32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x01d80000, 0x01dfffff, 0, 0, model2_prot_r, model2_prot_w);
4410   memory_install_readwrite32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x01d80000, 0x01dfffff, 0, 0, model2_prot_r, model2_prot_w);
44114411   protstate = protpos = 0;
44124412}
44134413
r4679r4680
44154415{
44164416   UINT32 *ROM = (UINT32 *)memory_region(machine, "maincpu");
44174417
4418   memory_install_readwrite32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x01d80000, 0x01dfffff, 0, 0, model2_prot_r, model2_prot_w);
4418   memory_install_readwrite32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x01d80000, 0x01dfffff, 0, 0, model2_prot_r, model2_prot_w);
44194419   protstate = protpos = 0;
44204420
44214421   // fix bug in program: it destroys the interrupt table and never fixes it
r4679r4680
44264426{
44274427   UINT32 *ROM = (UINT32 *)memory_region(machine, "maincpu");
44284428
4429   memory_install_readwrite32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x01d80000, 0x01dfffff, 0, 0, model2_prot_r, model2_prot_w);
4429   memory_install_readwrite32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x01d80000, 0x01dfffff, 0, 0, model2_prot_r, model2_prot_w);
44304430   protstate = protpos = 0;
44314431
44324432   // fix bug in program: it destroys the interrupt table and never fixes it
r4679r4680
44354435
44364436static DRIVER_INIT( daytonam )
44374437{
4438   memory_install_read32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x240000, 0x24ffff, 0, 0, maxx_r );
4438   memory_install_read32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x240000, 0x24ffff, 0, 0, maxx_r );
44394439}
44404440
44414441static DRIVER_INIT( sgt24h )
44424442{
44434443   UINT32 *ROM = (UINT32 *)memory_region(machine, "maincpu");
44444444
4445   memory_install_readwrite32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x01d80000, 0x01dfffff, 0, 0, model2_prot_r, model2_prot_w);
4445   memory_install_readwrite32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x01d80000, 0x01dfffff, 0, 0, model2_prot_r, model2_prot_w);
44464446   protstate = protpos = 0;
44474447
44484448   ROM[0x56578/4] = 0x08000004;
r4679r4680
44534453{
44544454   UINT32 *ROM = (UINT32 *)memory_region(machine, "maincpu");
44554455
4456   memory_install_readwrite32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x01d80000, 0x01dfffff, 0, 0, model2_prot_r, model2_prot_w);
4456   memory_install_readwrite32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x01d80000, 0x01dfffff, 0, 0, model2_prot_r, model2_prot_w);
44574457   protstate = protpos = 0;
44584458
44594459   ROM[0x630/4] = 0x08000004;
src/mame/drivers/bmcbowl.c
r4679r4680
551551
552552static DRIVER_INIT(bmcbowl)
553553{
554   colorram=auto_malloc(768);
554   colorram = auto_alloc_array(machine, UINT8, 768);
555555}
556556
557557GAME( 1994, bmcbowl,    0, bmcbowl,    bmcbowl,    bmcbowl, ROT0,  "BMC", "BMC Bowling", GAME_IMPERFECT_SOUND | GAME_IMPERFECT_GRAPHICS )
src/mame/drivers/ataxx.c
r4679r4680
651651   leland_rotate_memory(machine, "slave");
652652
653653   /* set up additional input ports */
654   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x00, 0x03, 0, 0, ataxx_trackball_r);
654   memory_install_read8_handler(cputag_get_address_space(machine, "master", ADDRESS_SPACE_IO), 0x00, 0x03, 0, 0, ataxx_trackball_r);
655655}
656656
657657
r4679r4680
674674   leland_rotate_memory(machine, "slave");
675675
676676   /* set up additional input ports */
677   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x00, 0x03, 0, 0, ataxx_trackball_r);
677   memory_install_read8_handler(cputag_get_address_space(machine, "master", ADDRESS_SPACE_IO), 0x00, 0x03, 0, 0, ataxx_trackball_r);
678678}
679679
680680
r4679r4680
697697   leland_rotate_memory(machine, "slave");
698698
699699   /* set up additional input ports */
700   memory_install_read_port_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x0d, 0x0d, 0, 0, "P1_P2");
701   memory_install_read_port_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x0e, 0x0e, 0, 0, "P3_P4");
702   memory_install_read_port_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x0f, 0x0f, 0, 0, "BUTTONS");
700   memory_install_read_port_handler(cputag_get_address_space(machine, "master", ADDRESS_SPACE_IO), 0x0d, 0x0d, 0, 0, "P1_P2");
701   memory_install_read_port_handler(cputag_get_address_space(machine, "master", ADDRESS_SPACE_IO), 0x0e, 0x0e, 0, 0, "P3_P4");
702   memory_install_read_port_handler(cputag_get_address_space(machine, "master", ADDRESS_SPACE_IO), 0x0f, 0x0f, 0, 0, "BUTTONS");
703703}
704704
705705
r4679r4680
722722   leland_rotate_memory(machine, "slave");
723723
724724   /* set up additional input ports */
725   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x00, 0x02, 0, 0, indyheat_wheel_r);
726   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x08, 0x0b, 0, 0, indyheat_analog_r);
727   memory_install_read_port_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x0d, 0x0d, 0, 0, "P1");
728   memory_install_read_port_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x0e, 0x0e, 0, 0, "P2");
729   memory_install_read_port_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x0f, 0x0f, 0, 0, "P3");
725   memory_install_read8_handler(cputag_get_address_space(machine, "master", ADDRESS_SPACE_IO), 0x00, 0x02, 0, 0, indyheat_wheel_r);
726   memory_install_read8_handler(cputag_get_address_space(machine, "master", ADDRESS_SPACE_IO), 0x08, 0x0b, 0, 0, indyheat_analog_r);
727   memory_install_read_port_handler(cputag_get_address_space(machine, "master", ADDRESS_SPACE_IO), 0x0d, 0x0d, 0, 0, "P1");
728   memory_install_read_port_handler(cputag_get_address_space(machine, "master", ADDRESS_SPACE_IO), 0x0e, 0x0e, 0, 0, "P2");
729   memory_install_read_port_handler(cputag_get_address_space(machine, "master", ADDRESS_SPACE_IO), 0x0f, 0x0f, 0, 0, "P3");
730730
731731   /* set up additional output ports */
732   memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x08, 0x0b, 0, 0, indyheat_analog_w);
732   memory_install_write8_handler(cputag_get_address_space(machine, "master", ADDRESS_SPACE_IO), 0x08, 0x0b, 0, 0, indyheat_analog_w);
733733}
734734
735735
r4679r4680
752752   leland_rotate_memory(machine, "slave");
753753
754754   /* set up additional input ports */
755   memory_install_read_port_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x0d, 0x0d, 0, 0, "P2");
756   memory_install_read_port_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x0e, 0x0e, 0, 0, "P1");
757   memory_install_read_port_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x0f, 0x0f, 0, 0, "P3");
755   memory_install_read_port_handler(cputag_get_address_space(machine, "master", ADDRESS_SPACE_IO), 0x0d, 0x0d, 0, 0, "P2");
756   memory_install_read_port_handler(cputag_get_address_space(machine, "master", ADDRESS_SPACE_IO), 0x0e, 0x0e, 0, 0, "P1");
757   memory_install_read_port_handler(cputag_get_address_space(machine, "master", ADDRESS_SPACE_IO), 0x0f, 0x0f, 0, 0, "P3");
758758}
759759
760760
r4679r4680
777777   leland_rotate_memory(machine, "slave");
778778
779779   /* asylum appears to have some extra RAM for the slave CPU */
780   memory_install_readwrite8_handler(cpu_get_address_space(machine->cpu[1], ADDRESS_SPACE_PROGRAM), 0xf000, 0xfffb, 0, 0, SMH_BANK4, SMH_BANK4);
781   memory_set_bankptr(machine, 4, auto_malloc(0x1000));
780   memory_install_readwrite8_handler(cputag_get_address_space(machine, "slave", ADDRESS_SPACE_PROGRAM), 0xf000, 0xfffb, 0, 0, (read8_space_func)SMH_BANK(4), (write8_space_func)SMH_BANK(4));
781   memory_set_bankptr(machine, 4, auto_alloc_array(machine, UINT8, 0x1000));
782782
783783   /* set up additional input ports */
784   memory_install_read_port_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x0d, 0x0d, 0, 0, "P2");
785   memory_install_read_port_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x0e, 0x0e, 0, 0, "P1");
786   memory_install_read_port_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x0f, 0x0f, 0, 0, "P3");
784   memory_install_read_port_handler(cputag_get_address_space(machine, "master", ADDRESS_SPACE_IO), 0x0d, 0x0d, 0, 0, "P2");
785   memory_install_read_port_handler(cputag_get_address_space(machine, "master", ADDRESS_SPACE_IO), 0x0e, 0x0e, 0, 0, "P1");
786   memory_install_read_port_handler(cputag_get_address_space(machine, "master", ADDRESS_SPACE_IO), 0x0f, 0x0f, 0, 0, "P3");
787787}
788788
789789
src/mame/drivers/sshangha.c
r4679r4680
6565WRITE16_HANDLER( sshangha_pf2_data_w );
6666WRITE16_HANDLER( sshangha_pf1_data_w );
6767WRITE16_HANDLER( sshangha_control_0_w );
68WRITE16_HANDLER( sshangha_palette_24bit_w );
69WRITE16_HANDLER (sshangha_video_w);
68WRITE16_HANDLER( sshangha_video_w );
7069
7170extern UINT16 *sshangha_pf1_data;
7271extern UINT16 *sshangha_pf2_data;
r4679r4680
8382   logerror("CPU #0 PC %06x: warning - write unmapped control address %06x %04x\n",cpu_get_pc(space->cpu),offset<<1,data);
8483
8584   if (offset == (0x260 >> 1)) {
86      //soundlatch_w(0,data&0xff);
87      //cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_NMI, PULSE_LINE);
85      //soundlatch_w(0, data & 0xff);
86      //cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
8887   }
8988}
9089
9190static WRITE16_HANDLER( sshangha_sound_w )
9291{
93   soundlatch_w(space,0,data&0xff);
94   cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_NMI, PULSE_LINE);
92   soundlatch_w(space, 0, data & 0xff);
93   cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
9594}
9695
9796/* Protection/IO chip 146 */
r4679r4680
137136
138137static MACHINE_RESET( sshangha )
139138{
140   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
139   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
141140   /* Such thing is needed as there is no code to turn the screen
142141       to normal orientation when the game is reset.
143142       I'm using the value that forces the screen to be in normal
r4679r4680
149148
150149/******************************************************************************/
151150
152static ADDRESS_MAP_START( sshangha_readmem, ADDRESS_SPACE_PROGRAM, 16 )
153   AM_RANGE(0x000000, 0x03ffff) AM_READ(SMH_ROM)
154
151static ADDRESS_MAP_START( sshangha_map, ADDRESS_SPACE_PROGRAM, 16 )
152   AM_RANGE(0x000000, 0x03ffff) AM_ROM
155153   AM_RANGE(0x084000, 0x0847ff) AM_READ(sshanghb_protection16_r)
156   AM_RANGE(0x101000, 0x101001) AM_READ(deco_71_r)//bootleg hack
157
158   AM_RANGE(0x200000, 0x207fff) AM_READ(SMH_RAM)
159   AM_RANGE(0x340000, 0x340fff) AM_READ(SMH_RAM)
160   AM_RANGE(0x350000, 0x350001) AM_READ(deco_71_r)
161   AM_RANGE(0x360000, 0x360fff) AM_READ(SMH_RAM)
162   AM_RANGE(0x370000, 0x370001) AM_READ(deco_71_r)
163   AM_RANGE(0x380000, 0x383fff) AM_READ(SMH_RAM)
164   AM_RANGE(0xfec000, 0xff3fff) AM_READ(SMH_RAM)
165   AM_RANGE(0xff4000, 0xff47ff) AM_READ(sshangha_protection16_r)
166ADDRESS_MAP_END
167
168static ADDRESS_MAP_START( sshangha_writemem, ADDRESS_SPACE_PROGRAM, 16 )
169   AM_RANGE(0x000000, 0x03ffff) AM_WRITE(SMH_ROM)
170154   AM_RANGE(0x10000c, 0x10000d) AM_WRITE(sshangha_sound_w)
155   AM_RANGE(0x101000, 0x101001) AM_READ(deco_71_r)//bootleg hack
171156   AM_RANGE(0x10100c, 0x10100d) AM_WRITE(sshangha_sound_w)   /* the bootleg writes here */
172   AM_RANGE(0x200000, 0x201fff) AM_WRITE(sshangha_pf1_data_w) AM_BASE(&sshangha_pf1_data)
173   AM_RANGE(0x202000, 0x203fff) AM_WRITE(sshangha_pf2_data_w) AM_BASE(&sshangha_pf2_data)
174   AM_RANGE(0x204000, 0x2047ff) AM_WRITE(SMH_RAM) AM_BASE(&sshangha_pf1_rowscroll)
175   AM_RANGE(0x206000, 0x2067ff) AM_WRITE(SMH_RAM) AM_BASE(&sshangha_pf2_rowscroll)
157
158   AM_RANGE(0x200000, 0x201fff) AM_RAM_WRITE(sshangha_pf1_data_w) AM_BASE(&sshangha_pf1_data)
159   AM_RANGE(0x202000, 0x203fff) AM_RAM_WRITE(sshangha_pf2_data_w) AM_BASE(&sshangha_pf2_data)
160   AM_RANGE(0x204000, 0x2047ff) AM_RAM AM_BASE(&sshangha_pf1_rowscroll)
161   AM_RANGE(0x206000, 0x2067ff) AM_RAM AM_BASE(&sshangha_pf2_rowscroll)
162   AM_RANGE(0x206800, 0x207fff) AM_RAM
176163   AM_RANGE(0x300000, 0x30000f) AM_WRITE(sshangha_control_0_w)
177164   AM_RANGE(0x320000, 0x320001) AM_WRITE(sshangha_video_w)
178165   AM_RANGE(0x320002, 0x320005) AM_WRITENOP
179   AM_RANGE(0x340000, 0x340fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16)
166
167   AM_RANGE(0x340000, 0x340fff) AM_RAM AM_BASE(&spriteram16)
168   AM_RANGE(0x350000, 0x350001) AM_READ(deco_71_r)
180169   AM_RANGE(0x350000, 0x350007) AM_WRITENOP
181   AM_RANGE(0x360000, 0x360fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16_2)
170   AM_RANGE(0x360000, 0x360fff) AM_RAM AM_BASE(&spriteram16_2)
171   AM_RANGE(0x370000, 0x370001) AM_READ(deco_71_r)
182172   AM_RANGE(0x370000, 0x370007) AM_WRITENOP
183   AM_RANGE(0x380000, 0x383fff) AM_WRITE(sshangha_palette_24bit_w) AM_BASE(&paletteram16)
184   AM_RANGE(0x3c0000, 0x3c0fff) AM_WRITE(SMH_RAM)   /* Sprite ram buffer on bootleg only?? */
185   AM_RANGE(0xfec000, 0xff3fff) AM_WRITE(SMH_RAM)
186   AM_RANGE(0xff4000, 0xff47ff) AM_WRITE(sshangha_protection16_w) AM_BASE(&sshangha_prot_data)
173   AM_RANGE(0x380000, 0x383fff) AM_RAM_WRITE(paletteram16_xbgr_word_be_w) AM_BASE(&paletteram16)
174   AM_RANGE(0x3c0000, 0x3c0fff) AM_RAM   /* Sprite ram buffer on bootleg only?? */
175   AM_RANGE(0xfec000, 0xff3fff) AM_RAM
176   AM_RANGE(0xff4000, 0xff47ff) AM_READWRITE(sshangha_protection16_r,sshangha_protection16_w) AM_BASE(&sshangha_prot_data)
187177ADDRESS_MAP_END
188178
189179/******************************************************************************/
190180
191static ADDRESS_MAP_START( sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
192   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
193   AM_RANGE(0xc000, 0xc001) AM_DEVREAD("ym", ym2203_r)
194   AM_RANGE(0xf800, 0xffff) AM_READ(SMH_RAM)
181static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 )
182   AM_RANGE(0x0000, 0x7fff) AM_ROM
183   AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ym", ym2203_r,ym2203_w)
184   AM_RANGE(0xf800, 0xffff) AM_RAM
195185//  AM_RANGE(0xf800, 0xf800) AM_READ(soundlatch_r)
196186ADDRESS_MAP_END
197187
198static ADDRESS_MAP_START( sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
199   AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM)
200   AM_RANGE(0xc000, 0xc001) AM_DEVWRITE("ym", ym2203_w)
201   AM_RANGE(0xf800, 0xffff) AM_WRITE(SMH_RAM)
202ADDRESS_MAP_END
203
204188/******************************************************************************/
205189
206190static INPUT_PORTS_START( sshangha )
r4679r4680
325309
326310static void irqhandler(const device_config *device, int state)
327311{
328   cpu_set_input_line(device->machine->cpu[1],0,state);
312   cputag_set_input_line(device->machine, "audiocpu", 0, state);
329313}
330314
331315static const ym2203_interface ym2203_config =
r4679r4680
342326
343327   /* basic machine hardware */
344328   MDRV_CPU_ADD("maincpu", M68000, 28000000/2)
345   MDRV_CPU_PROGRAM_MAP(sshangha_readmem,sshangha_writemem)
329   MDRV_CPU_PROGRAM_MAP(sshangha_map,0)
346330   MDRV_CPU_VBLANK_INT("screen", irq6_line_hold)
347331
348332   MDRV_CPU_ADD("audiocpu", Z80, 16000000/4)
349   MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem)
333   MDRV_CPU_PROGRAM_MAP(sound_map,0)
350334
351335   MDRV_MACHINE_RESET(sshangha)   /* init machine */
352336
src/mame/drivers/wiping.c
r4679r4680
8888static WRITE8_HANDLER( subcpu_reset_w )
8989{
9090   if (data & 1)
91      cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_RESET, CLEAR_LINE);
91      cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_RESET, CLEAR_LINE);
9292   else
93      cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_RESET, ASSERT_LINE);
93      cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_RESET, ASSERT_LINE);
9494}
9595
9696
src/mame/drivers/kyugo.c
r4679r4680
3939
4040MACHINE_RESET( kyugo )
4141{
42   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
42   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
4343   // must start with interrupts and sub CPU disabled
44   cpu_interrupt_enable(machine->cpu[0], 0);
44   cpu_interrupt_enable(cputag_get_cpu(machine, "maincpu"), 0);
4545   kyugo_sub_cpu_control_w(space, 0, 0);
4646}
4747
4848
4949WRITE8_HANDLER( kyugo_sub_cpu_control_w )
5050{
51   cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_HALT, data ? CLEAR_LINE : ASSERT_LINE);
51   cputag_set_input_line(space->machine, "sub", INPUT_LINE_HALT, data ? CLEAR_LINE : ASSERT_LINE);
5252}
5353
5454
r4679r4680
12041204static DRIVER_INIT( gyrodine )
12051205{
12061206   /* add watchdog */
1207   memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xe000, 0xe000, 0, 0, watchdog_reset_w);
1207   memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xe000, 0xe000, 0, 0, watchdog_reset_w);
12081208}
12091209
12101210
12111211static DRIVER_INIT( srdmissn )
12121212{
12131213   /* shared RAM is mapped at 0xe000 as well  */
1214   memory_install_readwrite8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xe000, 0xe7ff, 0, 0, SMH_BANK1, SMH_BANK1);
1214   memory_install_readwrite8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xe000, 0xe7ff, 0, 0, (read8_space_func)SMH_BANK(1), (write8_space_func)SMH_BANK(1));
12151215   memory_set_bankptr(machine, 1, shared_ram);
12161216
12171217   /* extra RAM on sub CPU  */
1218   memory_install_readwrite8_handler(cpu_get_address_space(machine->cpu[1], ADDRESS_SPACE_PROGRAM), 0x8800, 0x8fff, 0, 0, SMH_BANK2, SMH_BANK2);
1219   memory_set_bankptr(machine, 2, auto_malloc(0x800));
1218   memory_install_readwrite8_handler(cputag_get_address_space(machine, "sub", ADDRESS_SPACE_PROGRAM), 0x8800, 0x8fff, 0, 0, (read8_space_func)SMH_BANK(2), (write8_space_func)SMH_BANK(2));
1219   memory_set_bankptr(machine, 2, auto_alloc_array(machine, UINT8, 0x800));
12201220}
12211221
12221222
src/mame/drivers/leland.c
r4679r4680
18391839static void init_master_ports(running_machine *machine, UINT8 mvram_base, UINT8 io_base)
18401840{
18411841   /* set up the master CPU VRAM I/O */
1842   memory_install_readwrite8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), mvram_base, mvram_base + 0x1f, 0, 0, leland_mvram_port_r, leland_mvram_port_w);
1842   memory_install_readwrite8_handler(cputag_get_address_space(machine, "master", ADDRESS_SPACE_IO), mvram_base, mvram_base + 0x1f, 0, 0, leland_mvram_port_r, leland_mvram_port_w);
18431843
18441844   /* set up the master CPU I/O ports */
1845   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), io_base, io_base + 0x1f, 0, 0, leland_master_input_r);
1846   memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), io_base, io_base + 0x0f, 0, 0, leland_master_output_w);
1845   memory_install_read8_handler(cputag_get_address_space(machine, "master", ADDRESS_SPACE_IO), io_base, io_base + 0x1f, 0, 0, leland_master_input_r);
1846   memory_install_write8_handler(cputag_get_address_space(machine, "master", ADDRESS_SPACE_IO), io_base, io_base + 0x0f, 0, 0, leland_master_output_w);
18471847}
18481848
18491849
r4679r4680
18781878   init_master_ports(machine, 0x40, 0x80);
18791879
18801880   /* set up additional input ports */
1881   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x80, 0x80, 0, 0, cerberus_dial_1_r);
1882   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x90, 0x90, 0, 0, cerberus_dial_2_r);
1881   memory_install_read8_handler(cputag_get_address_space(machine, "master", ADDRESS_SPACE_IO), 0x80, 0x80, 0, 0, cerberus_dial_1_r);
1882   memory_install_read8_handler(cputag_get_address_space(machine, "master", ADDRESS_SPACE_IO), 0x90, 0x90, 0, 0, cerberus_dial_2_r);
18831883}
18841884
18851885
r4679r4680
19981998   /* kludge warning: the game uses location E0CA to determine if the joysticks are available */
19991999   /* it gets cleared by the code, but there is no obvious way for the value to be set to a */
20002000   /* non-zero value. If the value is zero, the joystick is never read. */
2001   alleymas_kludge_mem = memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xe0ca, 0xe0ca, 0, 0, alleymas_joystick_kludge);
2001   alleymas_kludge_mem = memory_install_write8_handler(cputag_get_address_space(machine, "master", ADDRESS_SPACE_PROGRAM), 0xe0ca, 0xe0ca, 0, 0, alleymas_joystick_kludge);
20022002}
20032003
20042004
r4679r4680
20512051   init_master_ports(machine, 0x40, 0x80);
20522052
20532053   /* set up additional input ports */
2054   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0xf4, 0xf4, 0, 0, dangerz_input_upper_r);
2055   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0xf8, 0xf8, 0, 0, dangerz_input_y_r);
2056   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0xfc, 0xfc, 0, 0, dangerz_input_x_r);
2054   memory_install_read8_handler(cputag_get_address_space(machine, "master", ADDRESS_SPACE_IO), 0xf4, 0xf4, 0, 0, dangerz_input_upper_r);
2055   memory_install_read8_handler(cputag_get_address_space(machine, "master", ADDRESS_SPACE_IO), 0xf8, 0xf8, 0, 0, dangerz_input_y_r);
2056   memory_install_read8_handler(cputag_get_address_space(machine, "master", ADDRESS_SPACE_IO), 0xfc, 0xfc, 0, 0, dangerz_input_x_r);
20572057}
20582058
20592059
r4679r4680
21442144   init_master_ports(machine, 0x00, 0xc0);
21452145
21462146   /* set up additional input ports */
2147   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0xc0, 0xc0, 0, 0, redline_pedal_1_r);
2148   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0xd0, 0xd0, 0, 0, redline_pedal_2_r);
2149   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0xf8, 0xf8, 0, 0, redline_wheel_2_r);
2150   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0xfb, 0xfb, 0, 0, redline_wheel_1_r);
2147   memory_install_read8_handler(cputag_get_address_space(machine, "master", ADDRESS_SPACE_IO), 0xc0, 0xc0, 0, 0, redline_pedal_1_r);
2148   memory_install_read8_handler(cputag_get_address_space(machine, "master", ADDRESS_SPACE_IO), 0xd0, 0xd0, 0, 0, redline_pedal_2_r);
2149   memory_install_read8_handler(cputag_get_address_space(machine, "master", ADDRESS_SPACE_IO), 0xf8, 0xf8, 0, 0, redline_wheel_2_r);
2150   memory_install_read8_handler(cputag_get_address_space(machine, "master", ADDRESS_SPACE_IO), 0xfb, 0xfb, 0, 0, redline_wheel_1_r);
21512151}
21522152
21532153
r4679r4680
22022202   init_master_ports(machine, 0x00, 0xc0);
22032203
22042204   /* set up additional input ports */
2205   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0xa4, 0xa4, 0, 0, dangerz_input_upper_r);
2206   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0xb8, 0xb8, 0, 0, dangerz_input_y_r);
2207   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0xbc, 0xbc, 0, 0, dangerz_input_x_r);
2205   memory_install_read8_handler(cputag_get_address_space(machine, "master", ADDRESS_SPACE_IO), 0xa4, 0xa4, 0, 0, dangerz_input_upper_r);
2206   memory_install_read8_handler(cputag_get_address_space(machine, "master", ADDRESS_SPACE_IO), 0xb8, 0xb8, 0, 0, dangerz_input_y_r);
2207   memory_install_read8_handler(cputag_get_address_space(machine, "master", ADDRESS_SPACE_IO), 0xbc, 0xbc, 0, 0, dangerz_input_x_r);
22082208}
22092209
22102210
r4679r4680
22332233   init_master_ports(machine, 0x40, 0x80);
22342234
22352235   /* set up additional input ports */
2236   memory_install_read_port_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x7c, 0x7c, 0, 0, "IN4");
2237   memory_install_read_port_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x7f, 0x7f, 0, 0, "IN5");
2236   memory_install_read_port_handler(cputag_get_address_space(machine, "master", ADDRESS_SPACE_IO), 0x7c, 0x7c, 0, 0, "IN4");
2237   memory_install_read_port_handler(cputag_get_address_space(machine, "master", ADDRESS_SPACE_IO), 0x7f, 0x7f, 0, 0, "IN5");
22382238}
22392239
22402240
r4679r4680
22632263   init_master_ports(machine, 0x00, 0xc0);
22642264
22652265   /* set up additional input ports */
2266   memory_install_read_port_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x7c, 0x7c, 0, 0, "IN4");
2267   memory_install_read_port_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x7f, 0x7f, 0, 0, "IN5");
2266   memory_install_read_port_handler(cputag_get_address_space(machine, "master", ADDRESS_SPACE_IO), 0x7c, 0x7c, 0, 0, "IN4");
2267   memory_install_read_port_handler(cputag_get_address_space(machine, "master", ADDRESS_SPACE_IO), 0x7f, 0x7f, 0, 0, "IN5");
22682268}
22692269
22702270
r4679r4680
22932293   init_master_ports(machine, 0x80, 0x40);
22942294
22952295   /* set up additional input ports */
2296   memory_install_read_port_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x7c, 0x7c, 0, 0, "IN4");
2297   memory_install_read_port_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x7f, 0x7f, 0, 0, "IN5");
2296   memory_install_read_port_handler(cputag_get_address_space(machine, "master", ADDRESS_SPACE_IO), 0x7c, 0x7c, 0, 0, "IN4");
2297   memory_install_read_port_handler(cputag_get_address_space(machine, "master", ADDRESS_SPACE_IO), 0x7f, 0x7f, 0, 0, "IN5");
22982298}
22992299
23002300
r4679r4680
23232323   init_master_ports(machine, 0x00, 0x40);
23242324
23252325   /* set up additional input ports */
2326   memory_install_read_port_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x7c, 0x7c, 0, 0, "IN4");
2327   memory_install_read_port_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x7f, 0x7f, 0, 0, "IN5");
2326   memory_install_read_port_handler(cputag_get_address_space(machine, "master", ADDRESS_SPACE_IO), 0x7c, 0x7c, 0, 0, "IN4");
2327   memory_install_read_port_handler(cputag_get_address_space(machine, "master", ADDRESS_SPACE_IO), 0x7f, 0x7f, 0, 0, "IN5");
23282328}
23292329
23302330
r4679r4680
23592359   init_master_ports(machine, 0x40, 0x80);   /* yes, this is intentional */
23602360
23612361   /* set up additional input ports */
2362   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0xf8, 0xf8, 0, 0, offroad_wheel_3_r);
2363   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0xf9, 0xf9, 0, 0, offroad_wheel_1_r);
2364   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0xfb, 0xfb, 0, 0, offroad_wheel_2_r);
2362   memory_install_read8_handler(cputag_get_address_space(machine, "master", ADDRESS_SPACE_IO), 0xf8, 0xf8, 0, 0, offroad_wheel_3_r);
2363   memory_install_read8_handler(cputag_get_address_space(machine, "master", ADDRESS_SPACE_IO), 0xf9, 0xf9, 0, 0, offroad_wheel_1_r);
2364   memory_install_read8_handler(cputag_get_address_space(machine, "master", ADDRESS_SPACE_IO), 0xfb, 0xfb, 0, 0, offroad_wheel_2_r);
23652365}
23662366
23672367
r4679r4680
23952395   init_master_ports(machine, 0x80, 0x40);
23962396
23972397   /* set up additional input ports */
2398   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0xf8, 0xf8, 0, 0, offroad_wheel_3_r);
2399   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0xf9, 0xf9, 0, 0, offroad_wheel_1_r);
2400   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0xfb, 0xfb, 0, 0, offroad_wheel_2_r);
2398   memory_install_read8_handler(cputag_get_address_space(machine, "master", ADDRESS_SPACE_IO), 0xf8, 0xf8, 0, 0, offroad_wheel_3_r);
2399   memory_install_read8_handler(cputag_get_address_space(machine, "master", ADDRESS_SPACE_IO), 0xf9, 0xf9, 0, 0, offroad_wheel_1_r);
2400   memory_install_read8_handler(cputag_get_address_space(machine, "master", ADDRESS_SPACE_IO), 0xfb, 0xfb, 0, 0, offroad_wheel_2_r);
24012401}
24022402
24032403
r4679r4680
24292429   init_master_ports(machine, 0x00, 0x40);
24302430
24312431   /* set up additional input ports */
2432   memory_install_read_port_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x7f, 0x7f, 0, 0, "IN4");
2432   memory_install_read_port_handler(cputag_get_address_space(machine, "master", ADDRESS_SPACE_IO), 0x7f, 0x7f, 0, 0, "IN4");
24332433}
24342434
24352435
src/mame/drivers/pcat_nit.c
r4679r4680
190190
191191static DMA8237_MEM_READ( pc_dma_read_byte )
192192{
193   const address_space *space = cpu_get_address_space(device->machine->cpu[0], ADDRESS_SPACE_PROGRAM);
193   const address_space *space = cputag_get_address_space(device->machine, "maincpu", ADDRESS_SPACE_PROGRAM);
194194   offs_t page_offset = (((offs_t) dma_offset[0][channel]) << 16)
195195      & 0xFF0000;
196196
r4679r4680
200200
201201static DMA8237_MEM_WRITE( pc_dma_write_byte )
202202{
203   const address_space *space = cpu_get_address_space(device->machine->cpu[0], ADDRESS_SPACE_PROGRAM);
203   const address_space *space = cputag_get_address_space(device->machine, "maincpu", ADDRESS_SPACE_PROGRAM);
204204   offs_t page_offset = (((offs_t) dma_offset[0][channel]) << 16)
205205      & 0xFF0000;
206206
r4679r4680
211211{
212212   UINT8 data = at_pages[offset % 0x10];
213213
214   switch(offset % 8) {
214   switch(offset % 8)
215   {
215216   case 1:
216217      data = dma_offset[(offset / 8) & 1][2];
217218      break;
r4679r4680
233234{
234235   at_pages[offset % 0x10] = data;
235236
236   switch(offset % 8) {
237   switch(offset % 8)
238   {
237239   case 1:
238240      dma_offset[(offset / 8) & 1][2] = data;
239241      break;
r4679r4680
2812838259 IRQ controller
282284******************/
283285
284static PIC8259_SET_INT_LINE( pic8259_1_set_int_line ) {
285   cpu_set_input_line(device->machine->cpu[0], 0, interrupt ? HOLD_LINE : CLEAR_LINE);
286static PIC8259_SET_INT_LINE( pic8259_1_set_int_line )
287{
288   cputag_set_input_line(device->machine, "maincpu", 0, interrupt ? HOLD_LINE : CLEAR_LINE);
286289}
287290
288291static const struct pic8259_interface pic8259_1_config = {
289292   pic8259_1_set_int_line
290293};
291294
292static PIC8259_SET_INT_LINE( pic8259_2_set_int_line ) {
295static PIC8259_SET_INT_LINE( pic8259_2_set_int_line )
296{
293297   pic8259_set_irq_line( streetg2_devices.pic8259_1, 2, interrupt);
294298}
295299
r4679r4680
310314
311315static PIT8253_OUTPUT_CHANGED( at_pit8254_out0_changed )
312316{
313   if ( streetg2_devices.pic8259_1 ) {
317   if ( streetg2_devices.pic8259_1 )
318   {
314319      pic8259_set_irq_line(streetg2_devices.pic8259_1, 0, state);
315320   }
316321}
r4679r4680
514519   //todo: 256 colors
515520}
516521
517static void streetg2_set_keyb_int(running_machine *machine, int state) {
522static void streetg2_set_keyb_int(running_machine *machine, int state)
523{
518524   pic8259_set_irq_line(streetg2_devices.pic8259_1, 1, state);
519525}
520526
r4679r4680
524530//  bank = -1;
525531//  lastvalue = -1;
526532//  hv_blank = 0;
527   cpu_set_irq_callback(machine->cpu[0], irq_callback);
533   cpu_set_irq_callback(cputag_get_cpu(machine, "maincpu"), irq_callback);
528534   streetg2_devices.pit8253 = devtag_get_device( machine, "pit8254" );
529535   streetg2_devices.pic8259_1 = devtag_get_device( machine, "pic8259_1" );
530536   streetg2_devices.pic8259_2 = devtag_get_device( machine, "pic8259_2" );
src/mame/drivers/popeye.c
r4679r4680
8080
8181
8282
83static ADDRESS_MAP_START( skyskipr_readmem, ADDRESS_SPACE_PROGRAM, 8 )
84   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
85   AM_RANGE(0x8000, 0x87ff) AM_READ(SMH_RAM)
86   AM_RANGE(0x8c00, 0x8e7f) AM_READ(SMH_RAM)
87   AM_RANGE(0x8e80, 0x8fff) AM_READ(SMH_RAM)
88   AM_RANGE(0xe000, 0xe001) AM_READ(protection_r)
89ADDRESS_MAP_END
90
91static ADDRESS_MAP_START( skyskipr_writemem, ADDRESS_SPACE_PROGRAM, 8 )
92   AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM)
93   AM_RANGE(0x8000, 0x87ff) AM_WRITE(SMH_RAM)
94   AM_RANGE(0x8c00, 0x8c02) AM_WRITE(SMH_RAM) AM_BASE(&popeye_background_pos)
95   AM_RANGE(0x8c03, 0x8c03) AM_WRITE(SMH_RAM) AM_BASE(&popeye_palettebank)
96   AM_RANGE(0x8c04, 0x8e7f) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
97   AM_RANGE(0x8e80, 0x8fff) AM_WRITE(SMH_RAM)
83static ADDRESS_MAP_START( skyskipr_map, ADDRESS_SPACE_PROGRAM, 8 )
84   AM_RANGE(0x0000, 0x7fff) AM_ROM
85   AM_RANGE(0x8000, 0x87ff) AM_RAM
86   AM_RANGE(0x8c00, 0x8c02) AM_RAM AM_BASE(&popeye_background_pos)
87   AM_RANGE(0x8c03, 0x8c03) AM_RAM AM_BASE(&popeye_palettebank)
88   AM_RANGE(0x8c04, 0x8e7f) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
89   AM_RANGE(0x8e80, 0x8fff) AM_RAM
9890   AM_RANGE(0xa000, 0xa3ff) AM_WRITE(popeye_videoram_w) AM_BASE(&videoram)
9991   AM_RANGE(0xa400, 0xa7ff) AM_WRITE(popeye_colorram_w) AM_BASE(&colorram)
10092   AM_RANGE(0xc000, 0xcfff) AM_WRITE(skyskipr_bitmap_w)
101   AM_RANGE(0xe000, 0xe001) AM_WRITE(protection_w)
93   AM_RANGE(0xe000, 0xe001) AM_READWRITE(protection_r,protection_w)
10294ADDRESS_MAP_END
10395
104static ADDRESS_MAP_START( popeye_readmem, ADDRESS_SPACE_PROGRAM, 8 )
105   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
106   AM_RANGE(0x8000, 0x87ff) AM_READ(SMH_RAM)
107   AM_RANGE(0x8800, 0x8bff) AM_READ(SMH_RAM)
108   AM_RANGE(0x8c00, 0x8e7f) AM_READ(SMH_RAM)
109   AM_RANGE(0x8e80, 0x8fff) AM_READ(SMH_RAM)
110   AM_RANGE(0xe000, 0xe001) AM_READ(protection_r)
111ADDRESS_MAP_END
112
113static ADDRESS_MAP_START( popeye_writemem, ADDRESS_SPACE_PROGRAM, 8 )
114   AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM)
115   AM_RANGE(0x8000, 0x87ff) AM_WRITE(SMH_RAM)
116   AM_RANGE(0x8800, 0x8bff) AM_WRITE(SMH_RAM)
117   AM_RANGE(0x8c00, 0x8c02) AM_WRITE(SMH_RAM) AM_BASE(&popeye_background_pos)
118   AM_RANGE(0x8c03, 0x8c03) AM_WRITE(SMH_RAM) AM_BASE(&popeye_palettebank)
119   AM_RANGE(0x8c04, 0x8e7f) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
120   AM_RANGE(0x8e80, 0x8fff) AM_WRITE(SMH_RAM)
96static ADDRESS_MAP_START( popeye_map, ADDRESS_SPACE_PROGRAM, 8 )
97   AM_RANGE(0x0000, 0x7fff) AM_ROM
98   AM_RANGE(0x8000, 0x87ff) AM_RAM
99   AM_RANGE(0x8800, 0x8bff) AM_RAM
100   AM_RANGE(0x8c00, 0x8c02) AM_RAM AM_BASE(&popeye_background_pos)
101   AM_RANGE(0x8c03, 0x8c03) AM_RAM AM_BASE(&popeye_palettebank)
102   AM_RANGE(0x8c04, 0x8e7f) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
103   AM_RANGE(0x8e80, 0x8fff) AM_RAM
121104   AM_RANGE(0xa000, 0xa3ff) AM_WRITE(popeye_videoram_w) AM_BASE(&videoram)
122105   AM_RANGE(0xa400, 0xa7ff) AM_WRITE(popeye_colorram_w) AM_BASE(&colorram)
123106   AM_RANGE(0xc000, 0xdfff) AM_WRITE(popeye_bitmap_w)
124   AM_RANGE(0xe000, 0xe001) AM_WRITE(protection_w)
107   AM_RANGE(0xe000, 0xe001) AM_READWRITE(protection_r,protection_w)
125108ADDRESS_MAP_END
126109
127static ADDRESS_MAP_START( popeyebl_readmem, ADDRESS_SPACE_PROGRAM, 8 )
128   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
129   AM_RANGE(0x8000, 0x87ff) AM_READ(SMH_RAM)
130   AM_RANGE(0x8c00, 0x8e7f) AM_READ(SMH_RAM)
131   AM_RANGE(0x8e80, 0x8fff) AM_READ(SMH_RAM)
132   AM_RANGE(0xe000, 0xe01f) AM_READ(SMH_ROM)
133ADDRESS_MAP_END
134
135static ADDRESS_MAP_START( popeyebl_writemem, ADDRESS_SPACE_PROGRAM, 8 )
136   AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM)
137   AM_RANGE(0x8000, 0x87ff) AM_WRITE(SMH_RAM)
138   AM_RANGE(0x8c00, 0x8c02) AM_WRITE(SMH_RAM) AM_BASE(&popeye_background_pos)
139   AM_RANGE(0x8c03, 0x8c03) AM_WRITE(SMH_RAM) AM_BASE(&popeye_palettebank)
140   AM_RANGE(0x8c04, 0x8e7f) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
141   AM_RANGE(0x8e80, 0x8fff) AM_WRITE(SMH_RAM)
110static ADDRESS_MAP_START( popeyebl_map, ADDRESS_SPACE_PROGRAM, 8 )
111   AM_RANGE(0x0000, 0x7fff) AM_ROM
112   AM_RANGE(0x8000, 0x87ff) AM_RAM
113   AM_RANGE(0x8c00, 0x8c02) AM_RAM AM_BASE(&popeye_background_pos)
114   AM_RANGE(0x8c03, 0x8c03) AM_RAM AM_BASE(&popeye_palettebank)
115   AM_RANGE(0x8c04, 0x8e7f) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
116   AM_RANGE(0x8e80, 0x8fff) AM_RAM
142117   AM_RANGE(0xa000, 0xa3ff) AM_WRITE(popeye_videoram_w) AM_BASE(&videoram)
143118   AM_RANGE(0xa400, 0xa7ff) AM_WRITE(popeye_colorram_w) AM_BASE(&colorram)
144119   AM_RANGE(0xc000, 0xcfff) AM_WRITE(skyskipr_bitmap_w)
145   AM_RANGE(0xe000, 0xe01f) AM_WRITE(SMH_ROM)
120   AM_RANGE(0xe000, 0xe01f) AM_ROM
146121ADDRESS_MAP_END
147122
148static ADDRESS_MAP_START( io_map, ADDRESS_SPACE_IO, 8 )
123static ADDRESS_MAP_START( popeye_io_map, ADDRESS_SPACE_IO, 8 )
149124   ADDRESS_MAP_GLOBAL_MASK(0xff)
150125   AM_RANGE(0x00, 0x01) AM_DEVWRITE("ay", ay8910_address_data_w)
151126   AM_RANGE(0x00, 0x00) AM_READ_PORT("P1")
r4679r4680
470445static MACHINE_DRIVER_START( skyskipr )
471446   /* basic machine hardware */
472447   MDRV_CPU_ADD("maincpu", Z80, XTAL_8MHz/2)   /* 4 MHz */
473   MDRV_CPU_PROGRAM_MAP(skyskipr_readmem,skyskipr_writemem)
474   MDRV_CPU_IO_MAP(io_map,0)
448   MDRV_CPU_PROGRAM_MAP(skyskipr_map,0)
449   MDRV_CPU_IO_MAP(popeye_io_map,0)
475450   MDRV_CPU_VBLANK_INT("screen", popeye_interrupt)
476451
477452   /* video hardware */
r4679r4680
501476static MACHINE_DRIVER_START( popeye )
502477   MDRV_IMPORT_FROM(skyskipr)
503478   MDRV_CPU_MODIFY("maincpu")
504   MDRV_CPU_PROGRAM_MAP(popeye_readmem,popeye_writemem)
479   MDRV_CPU_PROGRAM_MAP(popeye_map,0)
505480
506481   MDRV_VIDEO_START(popeye)
507482MACHINE_DRIVER_END
r4679r4680
510485static MACHINE_DRIVER_START( popeyebl )
511486   MDRV_IMPORT_FROM(skyskipr)
512487   MDRV_CPU_MODIFY("maincpu")
513   MDRV_CPU_PROGRAM_MAP(popeyebl_readmem,popeyebl_writemem)
488   MDRV_CPU_PROGRAM_MAP(popeyebl_map,0)
514489
515490   MDRV_PALETTE_INIT(popeyebl)
516491   MDRV_VIDEO_START(popeye)
r4679r4680
668643   int len = 0x10000;
669644
670645   /* decrypt the program ROMs */
671   buffer = malloc_or_die(len);
646   buffer = alloc_array_or_die(UINT8, len);
672647   {
673648      int i;
674649      for (i = 0;i < len; i++)
r4679r4680
689664   int len = 0x10000;
690665
691666   /* decrypt the program ROMs */
692   buffer = malloc_or_die(len);
667   buffer = alloc_array_or_die(UINT8, len);
693668   {
694669      int i;
695670      for (i = 0;i < len; i++)
src/mame/drivers/gstream.c
r4679r4680
519519
520520static DRIVER_INIT( gstream )
521521{
522   memory_install_read32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xd1ee0, 0xd1ee3, 0, 0, gstream_speedup_r );
522   memory_install_read32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xd1ee0, 0xd1ee3, 0, 0, gstream_speedup_r );
523523
524524}
525525
src/mame/drivers/compgolf.c
r4679r4680
5151   compgolf_scrolly_hi = (data & 2) << 7;
5252}
5353
54static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 )
55   AM_RANGE(0x0000, 0x07ff) AM_READ(SMH_RAM)
56   AM_RANGE(0x1000, 0x17ff) AM_READ(SMH_RAM)
57   AM_RANGE(0x1800, 0x1fff) AM_READ(SMH_RAM)
58   AM_RANGE(0x2000, 0x2060) AM_READ(SMH_RAM)
54static ADDRESS_MAP_START( compgolf_map, ADDRESS_SPACE_PROGRAM, 8 )
55   AM_RANGE(0x0000, 0x07ff) AM_RAM
56   AM_RANGE(0x1000, 0x17ff) AM_RAM_WRITE(compgolf_video_w) AM_BASE(&videoram)
57   AM_RANGE(0x1800, 0x1fff) AM_RAM_WRITE(compgolf_back_w) AM_BASE(&compgolf_bg_ram)
58   AM_RANGE(0x2000, 0x2060) AM_RAM AM_BASE(&spriteram)
59   AM_RANGE(0x2061, 0x2061) AM_WRITENOP
5960   AM_RANGE(0x3000, 0x3000) AM_READ_PORT("P1")
60   AM_RANGE(0x3001, 0x3001) AM_READ_PORT("P2")
61   AM_RANGE(0x3001, 0x3001) AM_READ_PORT("P2") AM_WRITE(compgolf_ctrl_w)
6162   AM_RANGE(0x3002, 0x3002) AM_READ_PORT("DSW1")
6263   AM_RANGE(0x3003, 0x3003) AM_READ_PORT("DSW2")
63   AM_RANGE(0x3800, 0x3801) AM_DEVREAD("ym", ym2203_r)
64   AM_RANGE(0x4000, 0x7fff) AM_READ(SMH_BANK1)
65   AM_RANGE(0x8000, 0xffff) AM_READ(SMH_ROM)
64   AM_RANGE(0x3800, 0x3801) AM_DEVREADWRITE("ym", ym2203_r, ym2203_w)
65   AM_RANGE(0x4000, 0x7fff) AM_ROMBANK(1)
66   AM_RANGE(0x8000, 0xffff) AM_ROM
6667ADDRESS_MAP_END
6768
68static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 )
69   AM_RANGE(0x0000, 0x07ff) AM_WRITE(SMH_RAM)
70   AM_RANGE(0x1000, 0x17ff) AM_WRITE(compgolf_video_w) AM_BASE(&videoram)
71   AM_RANGE(0x1800, 0x1fff) AM_WRITE(compgolf_back_w) AM_BASE(&compgolf_bg_ram)
72   AM_RANGE(0x2000, 0x2060) AM_WRITE(SMH_RAM) AM_BASE(&spriteram)
73   AM_RANGE(0x2061, 0x2061) AM_WRITENOP
74   AM_RANGE(0x3001, 0x3001) AM_WRITE(compgolf_ctrl_w)
75   AM_RANGE(0x3800, 0x3801) AM_DEVWRITE("ym", ym2203_w)
76   AM_RANGE(0x4000, 0x7fff) AM_WRITE(SMH_ROM)
77   AM_RANGE(0x8000, 0xffff) AM_WRITE(SMH_ROM)
78ADDRESS_MAP_END
79
8069/***************************************************************************/
8170
8271static INPUT_PORTS_START( compgolf )
r4679r4680
192181
193182static void sound_irq(const device_config *device, int linestate)
194183{
195   cpu_set_input_line(device->machine->cpu[0],0,linestate);
184   cputag_set_input_line(device->machine, "maincpu", 0, linestate);
196185}
197186
198187static const ym2203_interface ym2203_config =
r4679r4680
210199
211200static MACHINE_DRIVER_START( compgolf )
212201   MDRV_CPU_ADD("maincpu", M6809, 2000000)
213   MDRV_CPU_PROGRAM_MAP(readmem,writemem)
202   MDRV_CPU_PROGRAM_MAP(compgolf_map,0)
214203   MDRV_CPU_VBLANK_INT("screen", nmi_line_pulse)
215204
216205   /* video hardware */
src/mame/drivers/cps2.c
r4679r4680
590590#include "cpu/m68000/m68000.h"
591591#include "sound/qsound.h"
592592#include "sound/okim6295.h" // gigamn2 bootleg
593#include "chd.h"
594593
595594#include "cps1.h"       /* External CPS1 definitions */
596595
r4679r4680
753752   /* bit 7 - */
754753
755754        /* Z80 Reset */
756   if (space->machine->cpu[1])   cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_RESET, (data & 0x0008) ? CLEAR_LINE : ASSERT_LINE);
755   if (cputag_get_cpu(space->machine, "audiocpu"))
756      cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_RESET, (data & 0x0008) ? CLEAR_LINE : ASSERT_LINE);
757757
758758   coin_counter_w(0, data & 0x0001);
759759   if( (strncmp(space->machine->gamedrv->name,"pzloop2",8)==0) ||
r4679r4680
836836 *
837837 *************************************/
838838
839static ADDRESS_MAP_START( cps2_readmem, ADDRESS_SPACE_PROGRAM, 16 )
840   AM_RANGE(0x000000, 0x3fffff) AM_READ(SMH_ROM)                   /* 68000 ROM */
841   AM_RANGE(0x400000, 0x40000b) AM_READ(SMH_RAM)                   /* CPS2 object output */
842   AM_RANGE(0x618000, 0x619fff) AM_READ(qsound_sharedram1_r)       /* Q RAM */
843   AM_RANGE(0x662000, 0x662001) AM_READ(SMH_RAM)                   /* Network adapter related, accessed in SSF2TB */
844   AM_RANGE(0x662008, 0x662009) AM_READ(SMH_RAM)                   /* Network adapter related, accessed in SSF2TB */
845   AM_RANGE(0x662020, 0x662021) AM_READ(SMH_RAM)                   /* Network adapter related, accessed in SSF2TB */
846   AM_RANGE(0x660000, 0x663fff) AM_READ(SMH_RAM)                   /* When bit 14 of 0x804030 equals 0 this space is available. Many games store highscores and other info here if available. */
847   AM_RANGE(0x664000, 0x664001) AM_READ(SMH_RAM)                   /* Unknown - Only used if 0x660000-0x663fff available (could be RAM enable?) */
848   AM_RANGE(0x708000, 0x709fff) AM_READ(cps2_objram2_r)            /* Object RAM */
849   AM_RANGE(0x70a000, 0x70bfff) AM_READ(cps2_objram2_r)            /* mirror */
850   AM_RANGE(0x70c000, 0x70dfff) AM_READ(cps2_objram2_r)            /* mirror */
851   AM_RANGE(0x70e000, 0x70ffff) AM_READ(cps2_objram2_r)            /* mirror */
852   AM_RANGE(0x800140, 0x80017f) AM_READ(cps1_cps_b_r)              /* mirror (sfa) */
853   AM_RANGE(0x804000, 0x804001) AM_READ_PORT("IN0")                /* IN0 */
854   AM_RANGE(0x804010, 0x804011) AM_READ_PORT("IN1")                /* IN1 */
855   AM_RANGE(0x804020, 0x804021) AM_READ_PORT("IN2")                /* IN2 + EEPROM */
856   AM_RANGE(0x804030, 0x804031) AM_READ(cps2_qsound_volume_r)      /* Master volume. Also when bit 14=0 addon memory is present, when bit 15=0 network adapter present. */
857   AM_RANGE(0x8040b0, 0x8040b3) AM_READ(kludge_r)                  /* unknown (xmcotaj hangs if this is 0) */
858   AM_RANGE(0x804140, 0x80417f) AM_READ(cps1_cps_b_r)              /* CPS-B custom */
859   AM_RANGE(0x900000, 0x92ffff) AM_READ(SMH_RAM)                   /* Video RAM */
860   AM_RANGE(0xff0000, 0xffffff) AM_READ(SMH_RAM)                   /* RAM */
839static ADDRESS_MAP_START( cps2_map, ADDRESS_SPACE_PROGRAM, 16 )
840   AM_RANGE(0x000000, 0x3fffff) AM_ROM                                                         /* 68000 ROM */
841   AM_RANGE(0x400000, 0x40000b) AM_RAM AM_BASE(&cps2_output) AM_SIZE(&cps2_output_size)                  /* CPS2 object output */
842   AM_RANGE(0x618000, 0x619fff) AM_READWRITE(qsound_sharedram1_r, qsound_sharedram1_w)                      /* Q RAM */
843   AM_RANGE(0x662000, 0x662001) AM_RAM                                                         /* Network adapter related, accessed in SSF2TB */
844   AM_RANGE(0x662008, 0x662009) AM_RAM                                                         /* Network adapter related, accessed in SSF2TB */
845   AM_RANGE(0x662020, 0x662021) AM_RAM                                                         /* Network adapter related, accessed in SSF2TB */
846   AM_RANGE(0x660000, 0x663fff) AM_RAM                                                         /* When bit 14 of 0x804030 equals 0 this space is available. Many games store highscores and other info here if available. */
847   AM_RANGE(0x664000, 0x664001) AM_RAM                                                         /* Unknown - Only used if 0x660000-0x663fff available (could be RAM enable?) */
848   AM_RANGE(0x700000, 0x701fff) AM_WRITE(cps2_objram1_w) AM_BASE(&cps2_objram1)                          /* Object RAM, no game seems to use it directly */
849   AM_RANGE(0x708000, 0x709fff) AM_READWRITE(cps2_objram2_r, cps2_objram2_w) AM_BASE(&cps2_objram2)         /* Object RAM */
850   AM_RANGE(0x70a000, 0x70bfff) AM_READWRITE(cps2_objram2_r, cps2_objram2_w) AM_BASE(&cps2_objram2)         /* mirror */
851   AM_RANGE(0x70c000, 0x70dfff) AM_READWRITE(cps2_objram2_r, cps2_objram2_w) AM_BASE(&cps2_objram2)         /* mirror */
852   AM_RANGE(0x70e000, 0x70ffff) AM_READWRITE(cps2_objram2_r, cps2_objram2_w) AM_BASE(&cps2_objram2)         /* mirror */
853   AM_RANGE(0x800100, 0x80013f) AM_WRITE(cps1_cps_a_w) AM_BASE(&cps1_cps_a_regs)                        /* mirror (sfa) */
854   AM_RANGE(0x800140, 0x80017f) AM_READWRITE(cps1_cps_b_r, cps1_cps_b_w) AM_BASE(&cps1_cps_b_regs)          /* mirror (sfa) */
855   AM_RANGE(0x804000, 0x804001) AM_READ_PORT("IN0")                                                 /* IN0 */
856   AM_RANGE(0x804010, 0x804011) AM_READ_PORT("IN1")                                                 /* IN1 */
857   AM_RANGE(0x804020, 0x804021) AM_READ_PORT("IN2")                                                 /* IN2 + EEPROM */
858   AM_RANGE(0x804030, 0x804031) AM_READ(cps2_qsound_volume_r)                                       /* Master volume. Also when bit 14=0 addon memory is present, when bit 15=0 network adapter present. */
859   AM_RANGE(0x804040, 0x804041) AM_WRITE(cps2_eeprom_port_w)                                       /* EEPROM */
860   AM_RANGE(0x8040a0, 0x8040a1) AM_WRITENOP                                                         /* Unknown (reset once on startup) */
861   AM_RANGE(0x8040b0, 0x8040b3) AM_READ(kludge_r)                                                /* unknown (xmcotaj hangs if this is 0) */
862   AM_RANGE(0x8040e0, 0x8040e1) AM_WRITE(cps2_objram_bank_w)                                       /* bit 0 = Object ram bank swap */
863   AM_RANGE(0x804100, 0x80413f) AM_WRITE(cps1_cps_a_w) AM_BASE(&cps1_cps_a_regs)                         /* CPS-A custom */
864   AM_RANGE(0x804140, 0x80417f) AM_READWRITE(cps1_cps_b_r, cps1_cps_b_w)                                   /* CPS-B custom */
865   AM_RANGE(0x900000, 0x92ffff) AM_RAM_WRITE(cps1_gfxram_w) AM_BASE(&cps1_gfxram) AM_SIZE(&cps1_gfxram_size)   /* Video RAM */
866   AM_RANGE(0xff0000, 0xffffff) AM_RAM                                                         /* RAM */
861867ADDRESS_MAP_END
862868
863static ADDRESS_MAP_START( cps2_writemem, ADDRESS_SPACE_PROGRAM, 16 )
864   AM_RANGE(0x000000, 0x3fffff) AM_WRITE(SMH_ROM)                  /* ROM */
865   AM_RANGE(0x400000, 0x40000b) AM_WRITE(SMH_RAM) AM_BASE(&cps2_output) AM_SIZE(&cps2_output_size)    /* CPS2 output */
866   AM_RANGE(0x618000, 0x619fff) AM_WRITE(qsound_sharedram1_w)        /* Q RAM */
867   AM_RANGE(0x662000, 0x662001) AM_WRITE(SMH_RAM)                  /* Network adapter related, accessed in SSF2TB */
868   AM_RANGE(0x662008, 0x662009) AM_WRITE(SMH_RAM)                  /* Network adapter related, accessed in SSF2TB (not sure if this port is write only yet)*/
869   AM_RANGE(0x662020, 0x662021) AM_WRITE(SMH_RAM)                  /* Network adapter related, accessed in SSF2TB */
870   AM_RANGE(0x660000, 0x663fff) AM_WRITE(SMH_RAM)                  /* When bit 14 of 0x804030 equals 0 this space is available. Many games store highscores and other info here if available. */
871   AM_RANGE(0x664000, 0x664001) AM_WRITE(SMH_RAM)                  /* Unknown - Only used if 0x660000-0x663fff available (could be RAM enable?) */
872   AM_RANGE(0x700000, 0x701fff) AM_WRITE(cps2_objram1_w) AM_BASE(&cps2_objram1)     /* Object RAM, no game seems to use it directly */
873   AM_RANGE(0x708000, 0x709fff) AM_WRITE(cps2_objram2_w) AM_BASE(&cps2_objram2)     /* Object RAM */
874   AM_RANGE(0x70a000, 0x70bfff) AM_WRITE(cps2_objram2_w)             /* mirror */
875   AM_RANGE(0x70c000, 0x70dfff) AM_WRITE(cps2_objram2_w)             /* mirror */
876   AM_RANGE(0x70e000, 0x70ffff) AM_WRITE(cps2_objram2_w)             /* mirror */
877   AM_RANGE(0x800100, 0x80013f) AM_WRITE(cps1_cps_a_w) AM_BASE(&cps1_cps_a_regs)   /* mirror (sfa) */
878   AM_RANGE(0x800140, 0x80017f) AM_WRITE(cps1_cps_b_w) AM_BASE(&cps1_cps_b_regs)   /* mirror (sfa) */
879   AM_RANGE(0x804040, 0x804041) AM_WRITE(cps2_eeprom_port_w)         /* EEPROM */
880   AM_RANGE(0x8040a0, 0x8040a1) AM_WRITENOP                  /* Unknown (reset once on startup) */
881   AM_RANGE(0x8040e0, 0x8040e1) AM_WRITE(cps2_objram_bank_w)         /* bit 0 = Object ram bank swap */
882   AM_RANGE(0x804100, 0x80413f) AM_WRITE(cps1_cps_a_w) AM_BASE(&cps1_cps_a_regs)   /* CPS-A custom */
883   AM_RANGE(0x804140, 0x80417f) AM_WRITE(cps1_cps_b_w) AM_BASE(&cps1_cps_b_regs)   /* CPS-B custom */
884   AM_RANGE(0x900000, 0x92ffff) AM_WRITE(cps1_gfxram_w) AM_BASE(&cps1_gfxram) AM_SIZE(&cps1_gfxram_size)
885   AM_RANGE(0xff0000, 0xffffff) AM_WRITE(SMH_RAM)                  /* RAM */
886ADDRESS_MAP_END
887869
888
889static ADDRESS_MAP_START( dead_cps2_writemem, ADDRESS_SPACE_PROGRAM, 16 )
890   AM_RANGE(0x000000, 0x3fffff) AM_WRITE(SMH_ROM)            /* ROM */
891   AM_RANGE(0x618000, 0x619fff) AM_WRITE(qsound_sharedram1_w)      /* Q RAM */
892   AM_RANGE(0x662000, 0x662001) AM_WRITE(SMH_RAM)            /* Network adapter related, accessed in SSF2TB */
893   AM_RANGE(0x662008, 0x662009) AM_WRITE(SMH_RAM)            /* Network adapter related, accessed in SSF2TB (not sure if this port is write only yet)*/
894   AM_RANGE(0x662020, 0x662021) AM_WRITE(SMH_RAM)            /* Network adapter related, accessed in SSF2TB */
895   AM_RANGE(0x660000, 0x663fff) AM_WRITE(SMH_RAM)            /* When bit 14 of 0x804030 equals 0 this space is available. Many games store highscores and other info here if available. */
896   AM_RANGE(0x664000, 0x664001) AM_WRITE(SMH_RAM)            /* Unknown - Only used if 0x660000-0x663fff available (could be RAM enable?) */
897   AM_RANGE(0x700000, 0x701fff) AM_WRITE(cps2_objram1_w) AM_BASE(&cps2_objram1)   /* Object RAM, no game seems to use it directly */
898   AM_RANGE(0x708000, 0x709fff) AM_WRITE(cps2_objram2_w) AM_BASE(&cps2_objram2)   /* Object RAM */
899   AM_RANGE(0x70a000, 0x70bfff) AM_WRITE(cps2_objram2_w)         /* mirror */
900   AM_RANGE(0x70c000, 0x70dfff) AM_WRITE(cps2_objram2_w)         /* mirror */
901   AM_RANGE(0x70e000, 0x70ffff) AM_WRITE(cps2_objram2_w)         /* mirror */
902   AM_RANGE(0x800100, 0x80013f) AM_WRITE(cps1_cps_a_w) AM_BASE(&cps1_cps_a_regs)   /* mirror (sfa) */
903   AM_RANGE(0x800140, 0x80017f) AM_WRITE(cps1_cps_b_w) AM_BASE(&cps1_cps_b_regs)   /* mirror (sfa) */
904   AM_RANGE(0x804040, 0x804041) AM_WRITE(cps2_eeprom_port_w)      /* EEPROM */
905   AM_RANGE(0x8040a0, 0x8040a1) AM_WRITENOP            /* Unknown (reset once on startup) */
906   AM_RANGE(0x8040e0, 0x8040e1) AM_WRITE(cps2_objram_bank_w)      /* bit 0 = Object ram bank swap */
907   AM_RANGE(0x804100, 0x80413f) AM_WRITE(cps1_cps_a_w) AM_BASE(&cps1_cps_a_regs)   /* CPS-A custom */
908   AM_RANGE(0x804140, 0x80417f) AM_WRITE(cps1_cps_b_w) AM_BASE(&cps1_cps_b_regs)   /* CPS-B custom */
909   AM_RANGE(0x900000, 0x92ffff) AM_WRITE(cps1_gfxram_w) AM_BASE(&cps1_gfxram) AM_SIZE(&cps1_gfxram_size)
910   AM_RANGE(0xff0000, 0xffffef) AM_WRITE(SMH_RAM)            /* RAM */
911   AM_RANGE(0xfffff0, 0xfffffb) AM_WRITE(SMH_RAM) AM_BASE(&cps2_output) AM_SIZE(&cps2_output_size)   /* CPS2 output */
870static ADDRESS_MAP_START( dead_cps2_map, ADDRESS_SPACE_PROGRAM, 16 )
871   AM_RANGE(0x000000, 0x3fffff) AM_ROM                                                         /* 68000 ROM */
872   AM_RANGE(0x400000, 0x40000b) AM_RAM AM_BASE(&cps2_output) AM_SIZE(&cps2_output_size)                  /* CPS2 object output */
873   AM_RANGE(0x618000, 0x619fff) AM_READWRITE(qsound_sharedram1_r, qsound_sharedram1_w)                      /* Q RAM */
874   AM_RANGE(0x662000, 0x662001) AM_RAM                                                         /* Network adapter related, accessed in SSF2TB */
875   AM_RANGE(0x662008, 0x662009) AM_RAM                                                         /* Network adapter related, accessed in SSF2TB */
876   AM_RANGE(0x662020, 0x662021) AM_RAM                                                         /* Network adapter related, accessed in SSF2TB */
877   AM_RANGE(0x660000, 0x663fff) AM_RAM                                                         /* When bit 14 of 0x804030 equals 0 this space is available. Many games store highscores and other info here if available. */
878   AM_RANGE(0x664000, 0x664001) AM_RAM                                                         /* Unknown - Only used if 0x660000-0x663fff available (could be RAM enable?) */
879   AM_RANGE(0x700000, 0x701fff) AM_WRITE(cps2_objram1_w) AM_BASE(&cps2_objram1)                          /* Object RAM, no game seems to use it directly */
880   AM_RANGE(0x708000, 0x709fff) AM_READWRITE(cps2_objram2_r, cps2_objram2_w) AM_BASE(&cps2_objram2)         /* Object RAM */
881   AM_RANGE(0x70a000, 0x70bfff) AM_READWRITE(cps2_objram2_r, cps2_objram2_w) AM_BASE(&cps2_objram2)         /* mirror */
882   AM_RANGE(0x70c000, 0x70dfff) AM_READWRITE(cps2_objram2_r, cps2_objram2_w) AM_BASE(&cps2_objram2)         /* mirror */
883   AM_RANGE(0x70e000, 0x70ffff) AM_READWRITE(cps2_objram2_r, cps2_objram2_w) AM_BASE(&cps2_objram2)         /* mirror */
884   AM_RANGE(0x800100, 0x80013f) AM_WRITE(cps1_cps_a_w) AM_BASE(&cps1_cps_a_regs)                        /* mirror (sfa) */
885   AM_RANGE(0x800140, 0x80017f) AM_READWRITE(cps1_cps_b_r, cps1_cps_b_w) AM_BASE(&cps1_cps_b_regs)          /* mirror (sfa) */
886   AM_RANGE(0x804000, 0x804001) AM_READ_PORT("IN0")                                                 /* IN0 */
887   AM_RANGE(0x804010, 0x804011) AM_READ_PORT("IN1")                                                 /* IN1 */
888   AM_RANGE(0x804020, 0x804021) AM_READ_PORT("IN2")                                                 /* IN2 + EEPROM */
889   AM_RANGE(0x804030, 0x804031) AM_READ(cps2_qsound_volume_r)                                       /* Master volume. Also when bit 14=0 addon memory is present, when bit 15=0 network adapter present. */
890   AM_RANGE(0x804040, 0x804041) AM_WRITE(cps2_eeprom_port_w)                                       /* EEPROM */
891   AM_RANGE(0x8040a0, 0x8040a1) AM_WRITENOP                                                         /* Unknown (reset once on startup) */
892   AM_RANGE(0x8040b0, 0x8040b3) AM_READ(kludge_r)                                                /* unknown (xmcotaj hangs if this is 0) */
893   AM_RANGE(0x8040e0, 0x8040e1) AM_WRITE(cps2_objram_bank_w)                                       /* bit 0 = Object ram bank swap */
894   AM_RANGE(0x804100, 0x80413f) AM_WRITE(cps1_cps_a_w) AM_BASE(&cps1_cps_a_regs)                         /* CPS-A custom */
895   AM_RANGE(0x804140, 0x80417f) AM_READWRITE(cps1_cps_b_r, cps1_cps_b_w)                                   /* CPS-B custom */
896   AM_RANGE(0x900000, 0x92ffff) AM_RAM_WRITE(cps1_gfxram_w) AM_BASE(&cps1_gfxram) AM_SIZE(&cps1_gfxram_size)   /* Video RAM */
897   AM_RANGE(0xff0000, 0xffffef) AM_RAM                                                         /* RAM */
898   AM_RANGE(0xfffff0, 0xfffffb) AM_RAM AM_BASE(&cps2_output) AM_SIZE(&cps2_output_size)                  /* CPS2 output */
912899ADDRESS_MAP_END
913900
901
914902/*************************************
915903 *
916904 *  Generic port definitions
r4679r4680
12241212
12251213   /* basic machine hardware */
12261214   MDRV_CPU_ADD("maincpu", M68000, XTAL_16MHz)
1227   MDRV_CPU_PROGRAM_MAP(cps2_readmem,cps2_writemem)
1215   MDRV_CPU_PROGRAM_MAP(cps2_map,0)
12281216   MDRV_CPU_VBLANK_INT_HACK(cps2_interrupt,259)   // 262  /* ??? interrupts per frame */
12291217
12301218   MDRV_CPU_ADD("audiocpu", Z80, 8000000)
r4679r4680
12701258   MDRV_IMPORT_FROM(cps2)
12711259
12721260   MDRV_CPU_MODIFY("maincpu")
1273   MDRV_CPU_PROGRAM_MAP(cps2_readmem,dead_cps2_writemem)
1261   MDRV_CPU_PROGRAM_MAP(dead_cps2_map,0)
12741262MACHINE_DRIVER_END
12751263
12761264static MACHINE_DRIVER_START( gigamn2 )
r4679r4680
74157403   DRIVER_INIT_CALL(cps2crpt);
74167404   cps2networkpresent = 0;
74177405
7418   cpu_set_clockscale(machine->cpu[0], 0.7375f); /* RAM access waitstates etc. aren't emulated - slow the CPU to compensate */
7406   cpu_set_clockscale(cputag_get_cpu(machine, "maincpu"), 0.7375f); /* RAM access waitstates etc. aren't emulated - slow the CPU to compensate */
74197407}
74207408
74217409static DRIVER_INIT( ssf2tb )
r4679r4680
74327420static DRIVER_INIT ( pzloop2 )
74337421{
74347422   DRIVER_INIT_CALL(cps2);
7435   memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x804000, 0x804001, 0, 0, joy_or_paddle_r);
7423   memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x804000, 0x804001, 0, 0, joy_or_paddle_r);
74367424}
74377425
74387426static UINT16* gigamn2_dummyqsound_ram;
r4679r4680
74477435
74487436   DRIVER_INIT_CALL(cps2);
74497437
7450   gigamn2_dummyqsound_ram = auto_malloc(0x20000);
7451   memory_install_readwrite16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x618000, 0x619fff, 0, 0, gigamn2_dummyqsound_r, gigamn2_dummyqsound_w); // no qsound..
7438   gigamn2_dummyqsound_ram = auto_alloc_array(machine, UINT16, 0x20000/2);
7439   memory_install_readwrite16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x618000, 0x619fff, 0, 0, gigamn2_dummyqsound_r, gigamn2_dummyqsound_w); // no qsound..
74527440   memory_set_decrypted_region(space, 0x000000, (length) - 1, &rom[length/4]);
7453   m68k_set_encrypted_opcode_range(machine->cpu[0],0,length);
7441   m68k_set_encrypted_opcode_range(cputag_get_cpu(machine, "maincpu"), 0, length);
74547442}
74557443
74567444
src/mame/drivers/lordgun.c
r4679r4680
3232#include "machine/eeprom.h"
3333#include "sound/3812intf.h"
3434#include "sound/okim6295.h"
35#include "lordgun.h"
3536
36// Variables defined in video:
3737
38extern UINT16 *lordgun_vram_0, *lordgun_scroll_x_0, *lordgun_scroll_y_0;
39extern UINT16 *lordgun_vram_1, *lordgun_scroll_x_1, *lordgun_scroll_y_1;
40extern UINT16 *lordgun_vram_2, *lordgun_scroll_x_2, *lordgun_scroll_y_2;
41extern UINT16 *lordgun_vram_3, *lordgun_scroll_x_3, *lordgun_scroll_y_3;
42extern UINT16 *lordgun_scrollram;
4338static UINT16 *lordgun_priority_ram, lordgun_priority;
44extern int lordgun_whitescreen;
4539
46extern struct
47{
48   int      scr_x,   scr_y;
49   UINT16   hw_x,   hw_y;
50}   lordgun_gun[2];
5140
52// Functions defined in video:
53
54WRITE16_HANDLER( lordgun_vram_0_w );
55WRITE16_HANDLER( lordgun_vram_1_w );
56WRITE16_HANDLER( lordgun_vram_2_w );
57WRITE16_HANDLER( lordgun_vram_3_w );
58
59void lordgun_update_gun(running_machine *machine, int i);
60
61VIDEO_START( lordgun );
62VIDEO_UPDATE( lordgun );
63
6441/***************************************************************************
6542
6643    Code Decryption
r4679r4680
163140   if (ACCESSING_BITS_0_7)   soundlatch_w (space, 0, (data >> 0) & 0xff);
164141   if (ACCESSING_BITS_8_15)   soundlatch2_w(space, 0, (data >> 8) & 0xff);
165142
166   cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_NMI, PULSE_LINE);
143   cputag_set_input_line(space->machine, "soundcpu", INPUT_LINE_NMI, PULSE_LINE);
167144}
168145
169146static ADDRESS_MAP_START( lordgun_map, ADDRESS_SPACE_PROGRAM, 16 )
r4679r4680
336313   PORT_DIPNAME( 0x08, 0x08, "Coin Slots" )
337314   PORT_DIPSETTING(    0x08, "Separate" )
338315   PORT_DIPSETTING(    0x00, "Common" )
339   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 )
340   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 )
316   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
317   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
341318   PORT_SERVICE_NO_TOGGLE( 0x40, IP_ACTIVE_LOW )
342319   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM(eeprom_bit_r, NULL)
343320
r4679r4680
423400
424401static void soundirq(const device_config *device, int state)
425402{
426   cpu_set_input_line(device->machine->cpu[1], 0, state);
403   cputag_set_input_line(device->machine, "soundcpu", 0, state);
427404}
428405
429406static const ym3812_interface lordgun_ym3812_interface =
src/mame/drivers/igs017.c
r4679r4680
124124   int i;
125125
126126   sprites_gfx_size   =   size / 2 * 3;
127   sprites_gfx         =   auto_malloc(sprites_gfx_size);
127   sprites_gfx         =   auto_alloc_array(machine, UINT8, sprites_gfx_size);
128128
129129   for (i = 0; i < size / 2 ; i++)
130130   {
r4679r4680
296296{
297297   int length = memory_region_length(machine, "maincpu");
298298   UINT8 *rom = memory_region(machine, "maincpu");
299   UINT8 *tmp = auto_malloc(length);
299   UINT8 *tmp = auto_alloc_array(machine, UINT8, length);
300300   int i;
301301
302302   // decrypt the program ROM
r4679r4680
394394{
395395   int length = memory_region_length(machine, "sprites");
396396   UINT8 *rom = memory_region(machine, "sprites");
397   UINT8 *tmp = auto_malloc(length);
397   UINT8 *tmp = auto_alloc_array(machine, UINT8, length);
398398   int i;
399399
400400   // address lines swap (to do: collapse into one bitswap)
r4679r4680
491491{
492492   int length = memory_region_length(machine, "tilemaps");
493493   UINT8 *rom = memory_region(machine, "tilemaps");
494   UINT8 *tmp = malloc_or_die(length);
494   UINT8 *tmp = alloc_array_or_die(UINT8, length);
495495   int i;
496496
497497   memcpy(tmp,rom,length);
src/mame/drivers/lemmings.c
r4679r4680
7676static WRITE16_HANDLER( lemmings_sound_w )
7777{
7878   soundlatch_w(space,0,data&0xff);
79   cpu_set_input_line(space->machine->cpu[1],1,HOLD_LINE);
79   cputag_set_input_line(space->machine, "audiocpu", 1, HOLD_LINE);
8080}
8181
8282static WRITE8_HANDLER( lemmings_sound_ack_w )
8383{
84   cpu_set_input_line(space->machine->cpu[1],1,CLEAR_LINE);
84   cputag_set_input_line(space->machine, "audiocpu", 1, CLEAR_LINE);
8585}
8686
8787/******************************************************************************/
8888
89static ADDRESS_MAP_START( lemmings_readmem, ADDRESS_SPACE_PROGRAM, 16 )
90   AM_RANGE(0x000000, 0x0fffff) AM_READ(SMH_ROM)
91   AM_RANGE(0x100000, 0x10ffff) AM_READ(SMH_RAM)
92   AM_RANGE(0x120000, 0x1207ff) AM_READ(SMH_RAM)
93   AM_RANGE(0x140000, 0x1407ff) AM_READ(SMH_RAM)
94   AM_RANGE(0x160000, 0x160fff) AM_READ(SMH_RAM)
95   AM_RANGE(0x1a0000, 0x1a07ff) AM_READ(lemmings_prot_r)
89static ADDRESS_MAP_START( lemmings_map, ADDRESS_SPACE_PROGRAM, 16 )
90   AM_RANGE(0x000000, 0x0fffff) AM_ROM
91   AM_RANGE(0x100000, 0x10ffff) AM_RAM
92   AM_RANGE(0x120000, 0x1207ff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)
93   AM_RANGE(0x140000, 0x1407ff) AM_RAM AM_BASE(&spriteram16_2) AM_SIZE(&spriteram_2_size)
94   AM_RANGE(0x160000, 0x160fff) AM_RAM_WRITE(lemmings_palette_24bit_w) AM_BASE(&paletteram16)
95   AM_RANGE(0x170000, 0x17000f) AM_RAM_WRITE(lemmings_control_w) AM_BASE(&lemmings_control_data)
9696   AM_RANGE(0x190000, 0x19000f) AM_READ(lemmings_trackball_r)
97   AM_RANGE(0x200000, 0x202fff) AM_READ(SMH_RAM)
98   AM_RANGE(0x300000, 0x37ffff) AM_READ(SMH_RAM)
99   AM_RANGE(0x380000, 0x39ffff) AM_READ(SMH_RAM)
100ADDRESS_MAP_END
101
102static ADDRESS_MAP_START( lemmings_writemem, ADDRESS_SPACE_PROGRAM, 16 )
103   AM_RANGE(0x000000, 0x0fffff) AM_WRITE(SMH_ROM)
104   AM_RANGE(0x100000, 0x10ffff) AM_WRITE(SMH_RAM)
105   AM_RANGE(0x120000, 0x1207ff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)
106   AM_RANGE(0x140000, 0x1407ff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16_2) AM_SIZE(&spriteram_2_size)
107   AM_RANGE(0x160000, 0x160fff) AM_WRITE(lemmings_palette_24bit_w) AM_BASE(&paletteram16)
108   AM_RANGE(0x170000, 0x17000f) AM_WRITE(lemmings_control_w) AM_BASE(&lemmings_control_data)
97   AM_RANGE(0x1a0000, 0x1a07ff) AM_READ(lemmings_prot_r)
10998   AM_RANGE(0x1a0064, 0x1a0065) AM_WRITE(lemmings_sound_w)
11099   AM_RANGE(0x1c0000, 0x1c0001) AM_WRITE(buffer_spriteram16_w) /* 1 written once a frame */
111100   AM_RANGE(0x1e0000, 0x1e0001) AM_WRITE(buffer_spriteram16_2_w) /* 1 written once a frame */
112   AM_RANGE(0x200000, 0x201fff) AM_WRITE(lemmings_vram_w) AM_BASE(&lemmings_vram_data)
113   AM_RANGE(0x300000, 0x37ffff) AM_WRITE(lemmings_pixel_0_w) AM_BASE(&lemmings_pixel_0_data)
114   AM_RANGE(0x380000, 0x39ffff) AM_WRITE(lemmings_pixel_1_w) AM_BASE(&lemmings_pixel_1_data)
101   AM_RANGE(0x200000, 0x201fff) AM_RAM_WRITE(lemmings_vram_w) AM_BASE(&lemmings_vram_data)
102   AM_RANGE(0x202000, 0x202fff) AM_RAM
103   AM_RANGE(0x300000, 0x37ffff) AM_RAM_WRITE(lemmings_pixel_0_w) AM_BASE(&lemmings_pixel_0_data)
104   AM_RANGE(0x380000, 0x39ffff) AM_RAM_WRITE(lemmings_pixel_1_w) AM_BASE(&lemmings_pixel_1_data)
115105ADDRESS_MAP_END
116106
117107/******************************************************************************/
118108
119static ADDRESS_MAP_START( sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
120   AM_RANGE(0x0000, 0x07ff) AM_READ(SMH_RAM)
121   AM_RANGE(0x0800, 0x0801) AM_DEVREAD("ym", ym2151_r)
122   AM_RANGE(0x1000, 0x1000) AM_DEVREAD("oki", okim6295_r)
123   AM_RANGE(0x1800, 0x1800) AM_READ(soundlatch_r)
124   AM_RANGE(0x8000, 0xffff) AM_READ(SMH_ROM)
109static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 )
110   AM_RANGE(0x0000, 0x07ff) AM_RAM
111   AM_RANGE(0x0800, 0x0801) AM_DEVREADWRITE("ym", ym2151_r,ym2151_w)
112   AM_RANGE(0x1000, 0x1000) AM_DEVREADWRITE("oki", okim6295_r,okim6295_w)
113   AM_RANGE(0x1800, 0x1800) AM_READWRITE(soundlatch_r,lemmings_sound_ack_w)
114   AM_RANGE(0x8000, 0xffff) AM_ROM
125115ADDRESS_MAP_END
126116
127static ADDRESS_MAP_START( sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
128   AM_RANGE(0x0000, 0x07ff) AM_WRITE(SMH_RAM)
129   AM_RANGE(0x0800, 0x0801) AM_DEVWRITE("ym", ym2151_w)
130   AM_RANGE(0x1000, 0x1000) AM_DEVWRITE("oki", okim6295_w)
131   AM_RANGE(0x1800, 0x1800) AM_WRITE(lemmings_sound_ack_w)
132   AM_RANGE(0x8000, 0xffff) AM_WRITE(SMH_ROM)
133ADDRESS_MAP_END
134
135117/******************************************************************************/
136118
137119static INPUT_PORTS_START( lemmings )
r4679r4680
257239
258240static void sound_irq(const device_config *device, int state)
259241{
260   cpu_set_input_line(device->machine->cpu[1],0,state);
242   cputag_set_input_line(device->machine, "audiocpu", 0, state);
261243}
262244
263245static const ym2151_interface ym2151_config =
r4679r4680
269251
270252   /* basic machine hardware */
271253   MDRV_CPU_ADD("maincpu", M68000, 14000000)
272   MDRV_CPU_PROGRAM_MAP(lemmings_readmem,lemmings_writemem)
254   MDRV_CPU_PROGRAM_MAP(lemmings_map,0)
273255   MDRV_CPU_VBLANK_INT("screen", irq6_line_hold)
274256
275257   MDRV_CPU_ADD("audiocpu", M6809,32220000/8)
276   MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem)
258   MDRV_CPU_PROGRAM_MAP(sound_map,0)
277259
278260   /* video hardware */
279261   MDRV_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM)
src/mame/drivers/pushman.c
r4679r4680
5252static WRITE16_HANDLER( pushman_control_w )
5353{
5454   if (ACCESSING_BITS_8_15)
55      soundlatch_w(space,0,(data>>8)&0xff);
55      soundlatch_w(space, 0, (data >> 8) & 0xff);
5656}
5757
5858static READ16_HANDLER( pushman_68705_r )
5959{
60   if (offset==0)
60   if (offset == 0)
6161      return latch;
6262
63   if (offset==3 && new_latch) { new_latch=0; return 0; }
64   if (offset==3 && !new_latch) return 0xff;
63   if (offset == 3 && new_latch) { new_latch = 0; return 0; }
64   if (offset == 3 && !new_latch) return 0xff;
6565
66   return (shared_ram[2*offset+1]<<8)+shared_ram[2*offset];
66   return (shared_ram[2 * offset + 1] << 8) + shared_ram[2 * offset];
6767}
6868
6969static WRITE16_HANDLER( pushman_68705_w )
7070{
7171   if (ACCESSING_BITS_8_15)
72      shared_ram[2*offset]=data>>8;
72      shared_ram[2 * offset] = data >> 8;
7373   if (ACCESSING_BITS_0_7)
74      shared_ram[2*offset+1]=data&0xff;
74      shared_ram[2 * offset + 1] = data & 0xff;
7575
76   if (offset==1)
76   if (offset == 1)
7777   {
78        cpu_set_input_line(space->machine->cpu[2],M68705_IRQ_LINE,HOLD_LINE);
78        cputag_set_input_line(space->machine, "mcu", M68705_IRQ_LINE, HOLD_LINE);
7979      cpu_spin(space->cpu);
80      new_latch=0;
80      new_latch = 0;
8181   }
8282}
8383
8484/* ElSemi - Bouncing balls protection. */
8585static READ16_HANDLER( bballs_68705_r )
8686{
87   if (offset==0)
87   if (offset == 0)
8888      return latch;
89   if(offset==3 && new_latch)
89   if(offset == 3 && new_latch)
9090   {
91           new_latch=0;
91           new_latch = 0;
9292      return 0;
9393   }
94   if(offset==3 && !new_latch)
94   if(offset == 3 && !new_latch)
9595      return 0xff;
9696
97   return (shared_ram[2*offset+1]<<8)+shared_ram[2*offset];
97   return (shared_ram[2 * offset + 1] << 8) + shared_ram[2 * offset];
9898}
9999
100100static WRITE16_HANDLER( bballs_68705_w )
101101{
102102   if (ACCESSING_BITS_8_15)
103      shared_ram[2*offset]=data>>8;
103      shared_ram[2 * offset] = data >> 8;
104104   if (ACCESSING_BITS_0_7)
105      shared_ram[2*offset+1]=data&0xff;
105      shared_ram[2 * offset + 1] = data & 0xff;
106106
107   if(offset==0)
107   if(offset == 0)
108108   {
109      latch=0;
110      if(shared_ram[0]<=0xf)
109      latch = 0;
110      if(shared_ram[0] <= 0xf)
111111      {
112         latch=shared_ram[0]<<2;
112         latch = shared_ram[0] << 2;
113113         if(shared_ram[1])
114            latch|=2;
115         new_latch=1;
114            latch |= 2;
115         new_latch = 1;
116116      }
117117      else if(shared_ram[0])
118118      {
119119         if(shared_ram[1])
120            latch|=2;
121         new_latch=1;
120            latch |= 2;
121         new_latch = 1;
122122      }
123123   }
124124}
r4679r4680
131131
132132static WRITE8_HANDLER( pushman_68000_w )
133133{
134   if (offset==2 && (shared_ram[2]&2)==0 && data&2) {
135      latch=(shared_ram[1]<<8)|shared_ram[0];
136      new_latch=1;
134   if (offset == 2 && (shared_ram[2] & 2) == 0 && data & 2)
135   {
136      latch = (shared_ram[1] << 8) | shared_ram[0];
137      new_latch = 1;
137138   }
138   shared_ram[offset]=data;
139   shared_ram[offset] = data;
139140}
140141
141142static MACHINE_RESET( bballs )
142143{
143   latch=0x400;
144   latch = 0x400;
144145}
145146
146147/******************************************************************************/
147148
148static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 16 )
149   AM_RANGE(0x000000, 0x01ffff) AM_READ(SMH_ROM)
150   AM_RANGE(0x060000, 0x060007) AM_READ(pushman_68705_r)
151   AM_RANGE(0xfe0800, 0xfe17ff) AM_READ(SMH_RAM)
152   AM_RANGE(0xfe4000, 0xfe4001) AM_READ_PORT("INPUTS")
153   AM_RANGE(0xfe4002, 0xfe4003) AM_READ_PORT("SYSTEM")
149static ADDRESS_MAP_START( pushman_map, ADDRESS_SPACE_PROGRAM, 16 )
150   AM_RANGE(0x000000, 0x01ffff) AM_ROM
151   AM_RANGE(0x060000, 0x060007) AM_READWRITE(pushman_68705_r,pushman_68705_w)
152   AM_RANGE(0xfe0800, 0xfe17ff) AM_RAM AM_BASE(&spriteram16)
153   AM_RANGE(0xfe4000, 0xfe4001) AM_READ_PORT("INPUTS") AM_WRITE(pushman_flipscreen_w)
154   AM_RANGE(0xfe4002, 0xfe4003) AM_READ_PORT("SYSTEM") AM_WRITE(pushman_control_w)
154155   AM_RANGE(0xfe4004, 0xfe4005) AM_READ_PORT("DSW")
155   AM_RANGE(0xfec000, 0xfec7ff) AM_READ(SMH_RAM)
156   AM_RANGE(0xff8000, 0xff87ff) AM_READ(SMH_RAM)
157   AM_RANGE(0xffc000, 0xffffff) AM_READ(SMH_RAM)
158ADDRESS_MAP_END
159
160static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 16 )
161   AM_RANGE(0x000000, 0x01ffff) AM_WRITE(SMH_ROM)
162   AM_RANGE(0x060000, 0x060007) AM_WRITE(pushman_68705_w)
163   AM_RANGE(0xfe0800, 0xfe17ff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16)
164   AM_RANGE(0xfe4000, 0xfe4001) AM_WRITE(pushman_flipscreen_w)
165   AM_RANGE(0xfe4002, 0xfe4003) AM_WRITE(pushman_control_w)
166156   AM_RANGE(0xfe8000, 0xfe8003) AM_WRITE(pushman_scroll_w)
167157   AM_RANGE(0xfe800e, 0xfe800f) AM_WRITENOP /* ? */
168   AM_RANGE(0xfec000, 0xfec7ff) AM_WRITE(pushman_videoram_w) AM_BASE(&videoram16)
169   AM_RANGE(0xff8000, 0xff87ff) AM_WRITE(paletteram16_xxxxRRRRGGGGBBBB_word_w) AM_BASE(&paletteram16)
170   AM_RANGE(0xffc000, 0xffffff) AM_WRITE(SMH_RAM)
158   AM_RANGE(0xfec000, 0xfec7ff) AM_RAM_WRITE(pushman_videoram_w) AM_BASE(&videoram16)
159   AM_RANGE(0xff8000, 0xff87ff) AM_RAM_WRITE(paletteram16_xxxxRRRRGGGGBBBB_word_w) AM_BASE(&paletteram16)
160   AM_RANGE(0xffc000, 0xffffff) AM_RAM
171161ADDRESS_MAP_END
172162
173static ADDRESS_MAP_START( mcu_readmem, ADDRESS_SPACE_PROGRAM, 8 )
174   AM_RANGE(0x0000, 0x0007) AM_READ(pushman_68000_r)
175   AM_RANGE(0x0010, 0x007f) AM_READ(SMH_RAM)
176   AM_RANGE(0x0080, 0x0fff) AM_READ(SMH_ROM)
163static ADDRESS_MAP_START( mcu_map, ADDRESS_SPACE_PROGRAM, 8 )
164   AM_RANGE(0x0000, 0x0007) AM_READWRITE(pushman_68000_r,pushman_68000_w)
165   AM_RANGE(0x0010, 0x007f) AM_RAM
166   AM_RANGE(0x0080, 0x0fff) AM_ROM
177167ADDRESS_MAP_END
178168
179static ADDRESS_MAP_START( mcu_writemem, ADDRESS_SPACE_PROGRAM, 8 )
180   AM_RANGE(0x0000, 0x0007) AM_WRITE(pushman_68000_w)
181   AM_RANGE(0x0010, 0x007f) AM_WRITE(SMH_RAM)
182   AM_RANGE(0x0080, 0x0fff) AM_WRITE(SMH_ROM)
183ADDRESS_MAP_END
184
185static ADDRESS_MAP_START( sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
186   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
187   AM_RANGE(0xc000, 0xc7ff) AM_READ(SMH_RAM)
169static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 )
170   AM_RANGE(0x0000, 0x7fff) AM_ROM
171   AM_RANGE(0xc000, 0xc7ff) AM_RAM
188172   AM_RANGE(0xe000, 0xe000) AM_READ(soundlatch_r)
189173ADDRESS_MAP_END
190174
191static ADDRESS_MAP_START( sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
192   AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM)
193   AM_RANGE(0xc000, 0xc7ff) AM_WRITE(SMH_RAM)
194ADDRESS_MAP_END
195
196175static ADDRESS_MAP_START( sound_io_map, ADDRESS_SPACE_IO, 8 )
197176   ADDRESS_MAP_GLOBAL_MASK(0xff)
198177   AM_RANGE(0x00, 0x01) AM_DEVWRITE("ym1", ym2203_w)
199178   AM_RANGE(0x80, 0x81) AM_DEVWRITE("ym2", ym2203_w)
200179ADDRESS_MAP_END
201180
202static ADDRESS_MAP_START( bballs_readmem, ADDRESS_SPACE_PROGRAM, 16 )
181static ADDRESS_MAP_START( bballs_map, ADDRESS_SPACE_PROGRAM, 16 )
203182   ADDRESS_MAP_GLOBAL_MASK(0xfffff)
204   AM_RANGE(0x00000, 0x1ffff) AM_READ(SMH_ROM)
205   AM_RANGE(0x60000, 0x60007) AM_READ(bballs_68705_r)
206   AM_RANGE(0xe0800, 0xe17ff) AM_READ(SMH_RAM)
207   AM_RANGE(0xe4000, 0xe4001) AM_READ_PORT("INPUTS")
208   AM_RANGE(0xe4002, 0xe4003) AM_READ_PORT("SYSTEM")
183   AM_RANGE(0x00000, 0x1ffff) AM_ROM
184   AM_RANGE(0x60000, 0x60007) AM_READWRITE(bballs_68705_r,bballs_68705_w)
185   AM_RANGE(0xe0800, 0xe17ff) AM_RAM AM_BASE(&spriteram16)
186   AM_RANGE(0xe4000, 0xe4001) AM_READ_PORT("INPUTS") AM_WRITE(pushman_flipscreen_w)
187   AM_RANGE(0xe4002, 0xe4003) AM_READ_PORT("SYSTEM") AM_WRITE(pushman_control_w)
209188   AM_RANGE(0xe4004, 0xe4005) AM_READ_PORT("DSW")
210   AM_RANGE(0xec000, 0xec7ff) AM_READ(SMH_RAM)
211   AM_RANGE(0xf8000, 0xf87ff) AM_READ(SMH_RAM)
212   AM_RANGE(0xfc000, 0xfffff) AM_READ(SMH_RAM)
213ADDRESS_MAP_END
214
215static ADDRESS_MAP_START( bballs_writemem, ADDRESS_SPACE_PROGRAM, 16 )
216   ADDRESS_MAP_GLOBAL_MASK(0xfffff)
217   AM_RANGE(0x00000, 0x1ffff) AM_WRITE(SMH_ROM)
218   AM_RANGE(0x60000, 0x60007) AM_WRITE(bballs_68705_w)
219   AM_RANGE(0xe0800, 0xe17ff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16)
220   AM_RANGE(0xe4000, 0xe4001) AM_WRITE(pushman_flipscreen_w)
221   AM_RANGE(0xe4002, 0xe4003) AM_WRITE(pushman_control_w)
222189   AM_RANGE(0xe8000, 0xe8003) AM_WRITE(pushman_scroll_w)
223190   AM_RANGE(0xe800e, 0xe800f) AM_WRITENOP /* ? */
224   AM_RANGE(0xec000, 0xec7ff) AM_WRITE(pushman_videoram_w) AM_BASE(&videoram16)
225   AM_RANGE(0xf8000, 0xf87ff) AM_WRITE(paletteram16_xxxxRRRRGGGGBBBB_word_w) AM_BASE(&paletteram16)
226   AM_RANGE(0xfc000, 0xfffff) AM_WRITE(SMH_RAM)
191   AM_RANGE(0xec000, 0xec7ff) AM_RAM_WRITE(pushman_videoram_w) AM_BASE(&videoram16)
192   AM_RANGE(0xf8000, 0xf87ff) AM_RAM_WRITE(paletteram16_xxxxRRRRGGGGBBBB_word_w) AM_BASE(&paletteram16)
193   AM_RANGE(0xfc000, 0xfffff) AM_RAM
227194ADDRESS_MAP_END
228195
229196/******************************************************************************/
r4679r4680
433400
434401static void irqhandler(const device_config *device, int irq)
435402{
436   cpu_set_input_line(device->machine->cpu[1],0,irq ? ASSERT_LINE : CLEAR_LINE);
403   cputag_set_input_line(device->machine, "audiocpu", 0, irq ? ASSERT_LINE : CLEAR_LINE);
437404}
438405
439406static const ym2203_interface ym2203_config =
r4679r4680
451418
452419   /* basic machine hardware */
453420   MDRV_CPU_ADD("maincpu", M68000, 8000000)
454   MDRV_CPU_PROGRAM_MAP(readmem,writemem)
421   MDRV_CPU_PROGRAM_MAP(pushman_map,0)
455422   MDRV_CPU_VBLANK_INT("screen", irq2_line_hold)
456423
457424   MDRV_CPU_ADD("audiocpu", Z80, 4000000)
458   MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem)
425   MDRV_CPU_PROGRAM_MAP(sound_map,0)
459426   MDRV_CPU_IO_MAP(sound_io_map,0)
460427
461428   /* ElSemi. Reversed the CPU order so the sound callback works with bballs */
462429   MDRV_CPU_ADD("mcu", M68705, 4000000)   /* No idea */
463   MDRV_CPU_PROGRAM_MAP(mcu_readmem,mcu_writemem)
430   MDRV_CPU_PROGRAM_MAP(mcu_map,0)
464431
465432   MDRV_QUANTUM_TIME(HZ(3600))
466433
r4679r4680
493460
494461   /* basic machine hardware */
495462   MDRV_CPU_ADD("maincpu", M68000, 8000000)
496   MDRV_CPU_PROGRAM_MAP(bballs_readmem,bballs_writemem)
463   MDRV_CPU_PROGRAM_MAP(bballs_map,0)
497464   MDRV_CPU_VBLANK_INT("screen", irq2_line_hold)
498465
499466   MDRV_CPU_ADD("audiocpu", Z80, 4000000)
500   MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem)
467   MDRV_CPU_PROGRAM_MAP(sound_map,0)
501468   MDRV_CPU_IO_MAP(sound_io_map,0)
502469
503470   MDRV_QUANTUM_TIME(HZ(3600))
src/mame/drivers/zerozone.c
r4679r4680
6262{
6363   if (ACCESSING_BITS_8_15)
6464   {
65      soundlatch_w(space,offset,data >> 8);
66      cpu_set_input_line_and_vector(space->machine->cpu[1],0,HOLD_LINE,0xff);
65      soundlatch_w(space, offset, data >> 8);
66      cputag_set_input_line_and_vector(space->machine, "audiocpu", 0, HOLD_LINE, 0xff);
6767   }
6868}
6969
src/mame/drivers/espial.c
r4679r4680
1919static TIMER_CALLBACK( interrupt_disable )
2020{
2121   //interrupt_enable = 0;
22   cpu_interrupt_enable(machine->cpu[0],0);
22   cpu_interrupt_enable(cputag_get_cpu(machine, "maincpu"), 0);
2323}
2424
2525MACHINE_RESET( espial )
r4679r4680
2929   sound_nmi_enabled = FALSE;
3030}
3131
32MACHINE_START( espial )
33{
34    //state_save_register_global_array(machine, mcu_out[1]);
35    state_save_register_global(machine, sound_nmi_enabled);
36}
3237
38
3339WRITE8_HANDLER( zodiac_master_interrupt_enable_w )
3440{
3541   interrupt_enable_w(space,offset,~data & 1);
r4679r4680
6167WRITE8_HANDLER( zodiac_master_soundlatch_w )
6268{
6369   soundlatch_w(space, offset, data);
64   cpu_set_input_line(space->machine->cpu[1], 0, HOLD_LINE);
70   cputag_set_input_line(space->machine, "audiocpu", 0, HOLD_LINE);
6571}
6672
6773
68
69static ADDRESS_MAP_START( espial_readmem, ADDRESS_SPACE_PROGRAM, 8 )
70   AM_RANGE(0x0000, 0x4fff) AM_READ(SMH_ROM)
71   AM_RANGE(0x5800, 0x5fff) AM_READ(SMH_RAM)
74static ADDRESS_MAP_START( espial_map, ADDRESS_SPACE_PROGRAM, 8 )
75   AM_RANGE(0x0000, 0x4fff) AM_ROM
76   AM_RANGE(0x5800, 0x5fff) AM_RAM
7277   AM_RANGE(0x6081, 0x6081) AM_READ_PORT("IN0")
7378   AM_RANGE(0x6082, 0x6082) AM_READ_PORT("DSW1")
7479   AM_RANGE(0x6083, 0x6083) AM_READ_PORT("IN1")
7580   AM_RANGE(0x6084, 0x6084) AM_READ_PORT("IN2")
76   AM_RANGE(0x6090, 0x6090) AM_READ(soundlatch_r)   /* the main CPU reads the command back from the slave */
77   AM_RANGE(0x7000, 0x7000) AM_READ(watchdog_reset_r)
78   AM_RANGE(0x8000, 0x803f) AM_READ(SMH_RAM)
79   AM_RANGE(0x8400, 0x87ff) AM_READ(SMH_RAM)
80   AM_RANGE(0x8c00, 0x903f) AM_READ(SMH_RAM)
81   AM_RANGE(0x9400, 0x97ff) AM_READ(SMH_RAM)
82   AM_RANGE(0xc000, 0xcfff) AM_READ(SMH_ROM)
83ADDRESS_MAP_END
84
85static ADDRESS_MAP_START( espial_writemem, ADDRESS_SPACE_PROGRAM, 8 )
86   AM_RANGE(0x0000, 0x4fff) AM_WRITE(SMH_ROM)
87   AM_RANGE(0x5800, 0x5fff) AM_WRITE(SMH_RAM)
88   AM_RANGE(0x6090, 0x6090) AM_WRITE(zodiac_master_soundlatch_w)
89   AM_RANGE(0x7000, 0x7000) AM_WRITE(watchdog_reset_w)
81   AM_RANGE(0x6090, 0x6090) AM_READWRITE(soundlatch_r, zodiac_master_soundlatch_w)   /* the main CPU reads the command back from the slave */
82   AM_RANGE(0x7000, 0x7000) AM_READWRITE(watchdog_reset_r, watchdog_reset_w)
9083   AM_RANGE(0x7100, 0x7100) AM_WRITE(zodiac_master_interrupt_enable_w)
9184   AM_RANGE(0x7200, 0x7200) AM_WRITE(espial_flipscreen_w)
92   AM_RANGE(0x8000, 0x801f) AM_WRITE(SMH_RAM) AM_BASE(&espial_spriteram_1)
93   AM_RANGE(0x8400, 0x87ff) AM_WRITE(espial_videoram_w) AM_BASE(&espial_videoram)
85   AM_RANGE(0x8000, 0x801f) AM_RAM AM_BASE(&espial_spriteram_1)
86   AM_RANGE(0x8020, 0x803f) AM_READ(SMH_RAM)
87   AM_RANGE(0x8400, 0x87ff) AM_RAM_WRITE(espial_videoram_w) AM_BASE(&espial_videoram)
9488   AM_RANGE(0x8800, 0x880f) AM_WRITE(SMH_RAM) AM_BASE(&espial_spriteram_3)
95   AM_RANGE(0x8c00, 0x8fff) AM_WRITE(espial_attributeram_w) AM_BASE(&espial_attributeram)
96   AM_RANGE(0x9000, 0x901f) AM_WRITE(SMH_RAM) AM_BASE(&espial_spriteram_2)
97   AM_RANGE(0x9020, 0x903f) AM_WRITE(espial_scrollram_w) AM_BASE(&espial_scrollram)
98   AM_RANGE(0x9400, 0x97ff) AM_WRITE(espial_colorram_w) AM_BASE(&espial_colorram)
99   AM_RANGE(0xc000, 0xcfff) AM_WRITE(SMH_ROM)
89   AM_RANGE(0x8c00, 0x8fff) AM_RAM_WRITE(espial_attributeram_w) AM_BASE(&espial_attributeram)
90   AM_RANGE(0x9000, 0x901f) AM_RAM AM_BASE(&espial_spriteram_2)
91   AM_RANGE(0x9020, 0x903f) AM_RAM_WRITE(espial_scrollram_w) AM_BASE(&espial_scrollram)
92   AM_RANGE(0x9400, 0x97ff) AM_RAM_WRITE(espial_colorram_w) AM_BASE(&espial_colorram)
93   AM_RANGE(0xc000, 0xcfff) AM_ROM
10094ADDRESS_MAP_END
10195
10296
10397/* there are a lot of unmapped reads from all over memory as the
10498   code uses POP instructions in a delay loop */
105static ADDRESS_MAP_START( netwars_readmem, ADDRESS_SPACE_PROGRAM, 8 )
106   AM_RANGE(0x0000, 0x3fff) AM_READ(SMH_ROM)
107   AM_RANGE(0x5800, 0x5fff) AM_READ(SMH_RAM)
99static ADDRESS_MAP_START( netwars_map, ADDRESS_SPACE_PROGRAM, 8 )
100   AM_RANGE(0x0000, 0x3fff) AM_ROM
101   AM_RANGE(0x5800, 0x5fff) AM_RAM
108102   AM_RANGE(0x6081, 0x6081) AM_READ_PORT("IN0")
109103   AM_RANGE(0x6082, 0x6082) AM_READ_PORT("DSW1")
110104   AM_RANGE(0x6083, 0x6083) AM_READ_PORT("IN1")
111105   AM_RANGE(0x6084, 0x6084) AM_READ_PORT("IN2")
112   AM_RANGE(0x6090, 0x6090) AM_READ(soundlatch_r)   /* the main CPU reads the command back from the slave */
113   AM_RANGE(0x7000, 0x7000) AM_READ(watchdog_reset_r)
114   AM_RANGE(0x8000, 0x97ff) AM_READ(SMH_RAM)
115ADDRESS_MAP_END
116
117static ADDRESS_MAP_START( netwars_writemem, ADDRESS_SPACE_PROGRAM, 8 )
118   AM_RANGE(0x0000, 0x3fff) AM_WRITE(SMH_ROM)
119   AM_RANGE(0x5800, 0x5fff) AM_WRITE(SMH_RAM)
120   AM_RANGE(0x6090, 0x6090) AM_WRITE(zodiac_master_soundlatch_w)
121   AM_RANGE(0x7000, 0x7000) AM_WRITE(watchdog_reset_w)
106   AM_RANGE(0x6090, 0x6090) AM_READWRITE(soundlatch_r, zodiac_master_soundlatch_w)   /* the main CPU reads the command back from the slave */
107   AM_RANGE(0x7000, 0x7000) AM_READWRITE(watchdog_reset_r, watchdog_reset_w)
122108   AM_RANGE(0x7100, 0x7100) AM_WRITE(zodiac_master_interrupt_enable_w)
123109   AM_RANGE(0x7200, 0x7200) AM_WRITE(espial_flipscreen_w)
124   AM_RANGE(0x8000, 0x801f) AM_WRITE(SMH_RAM) AM_BASE(&espial_spriteram_1)
125   AM_RANGE(0x8000, 0x87ff) AM_WRITE(espial_videoram_w) AM_BASE(&espial_videoram)
126   AM_RANGE(0x8800, 0x880f) AM_WRITE(SMH_RAM) AM_BASE(&espial_spriteram_3)
127   AM_RANGE(0x8800, 0x8fff) AM_WRITE(espial_attributeram_w) AM_BASE(&espial_attributeram)
128   AM_RANGE(0x9000, 0x901f) AM_WRITE(SMH_RAM) AM_BASE(&espial_spriteram_2)
129   AM_RANGE(0x9020, 0x903f) AM_WRITE(espial_scrollram_w) AM_BASE(&espial_scrollram)
130   AM_RANGE(0x9000, 0x97ff) AM_WRITE(espial_colorram_w) AM_BASE(&espial_colorram)
110   AM_RANGE(0x8000, 0x801f) AM_RAM AM_BASE(&espial_spriteram_1)
111   AM_RANGE(0x8000, 0x87ff) AM_RAM_WRITE(espial_videoram_w) AM_BASE(&espial_videoram)
112   AM_RANGE(0x8800, 0x880f) AM_RAM AM_BASE(&espial_spriteram_3)
113   AM_RANGE(0x8800, 0x8fff) AM_RAM_WRITE(espial_attributeram_w) AM_BASE(&espial_attributeram)
114   AM_RANGE(0x9000, 0x901f) AM_RAM AM_BASE(&espial_spriteram_2)
115   AM_RANGE(0x9020, 0x903f) AM_RAM_WRITE(espial_scrollram_w) AM_BASE(&espial_scrollram)
116   AM_RANGE(0x9000, 0x97ff) AM_RAM_WRITE(espial_colorram_w) AM_BASE(&espial_colorram)
131117ADDRESS_MAP_END
132118
133119
134static ADDRESS_MAP_START( sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
135   AM_RANGE(0x0000, 0x1fff) AM_READ(SMH_ROM)
136   AM_RANGE(0x2000, 0x23ff) AM_READ(SMH_RAM)
137   AM_RANGE(0x6000, 0x6000) AM_READ(soundlatch_r)
138ADDRESS_MAP_END
139
140static ADDRESS_MAP_START( sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
141   AM_RANGE(0x0000, 0x1fff) AM_WRITE(SMH_ROM)
142   AM_RANGE(0x2000, 0x23ff) AM_WRITE(SMH_RAM)
120static ADDRESS_MAP_START( espial_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
121   AM_RANGE(0x0000, 0x1fff) AM_ROM
122   AM_RANGE(0x2000, 0x23ff) AM_RAM
143123   AM_RANGE(0x4000, 0x4000) AM_WRITE(espial_sound_nmi_enable_w)
144   AM_RANGE(0x6000, 0x6000) AM_WRITE(soundlatch_w)
124   AM_RANGE(0x6000, 0x6000) AM_READWRITE(soundlatch_r, soundlatch_w)
145125ADDRESS_MAP_END
146126
147static ADDRESS_MAP_START( sound_io_map, ADDRESS_SPACE_IO, 8 )
127static ADDRESS_MAP_START( espial_sound_io_map, ADDRESS_SPACE_IO, 8 )
148128   ADDRESS_MAP_GLOBAL_MASK(0xff)
149129   AM_RANGE(0x00, 0x01) AM_DEVWRITE("ay", ay8910_address_data_w)
150130ADDRESS_MAP_END
r4679r4680
313293
314294   /* basic machine hardware */
315295   MDRV_CPU_ADD("maincpu", Z80, 3072000)   /* 3.072 MHz */
316   MDRV_CPU_PROGRAM_MAP(espial_readmem,espial_writemem)
296   MDRV_CPU_PROGRAM_MAP(espial_map,0)
317297   MDRV_CPU_VBLANK_INT_HACK(zodiac_master_interrupt,2)
318298
319299   MDRV_CPU_ADD("audiocpu", Z80, 3072000)   /* 2 MHz?????? */
320   MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem)
321   MDRV_CPU_IO_MAP(sound_io_map,0)
300   MDRV_CPU_PROGRAM_MAP(espial_sound_map,0)
301   MDRV_CPU_IO_MAP(espial_sound_io_map,0)
322302   MDRV_CPU_VBLANK_INT_HACK(espial_sound_nmi_gen,4)
323303
324304   MDRV_MACHINE_RESET(espial)
305   MDRV_MACHINE_START(espial)
325306
326307   /* video hardware */
327308   MDRV_SCREEN_ADD("screen", RASTER)
r4679r4680
350331   MDRV_IMPORT_FROM(espial)
351332
352333   MDRV_CPU_MODIFY("maincpu")
353   MDRV_CPU_PROGRAM_MAP(netwars_readmem,netwars_writemem)
334   MDRV_CPU_PROGRAM_MAP(netwars_map,0)
354335
355336   /* video hardware */
356337   MDRV_SCREEN_MODIFY("screen")
r4679r4680
439420
440421
441422
442GAME( 1983, espial,  0,      espial,  espial,  0, ROT0,  "[Orca] Thunderbolt", "Espial (Europe)", 0 )
443GAME( 1983, espialu, espial, espial,  espial,  0, ROT0,  "[Orca] Thunderbolt", "Espial (US?)", 0 )
444GAME( 1983, netwars, 0,      netwars, netwars, 0, ROT90, "Orca (Esco Trading Co license)", "Net Wars", 0 )
423GAME( 1983, espial,  0,      espial,  espial,  0, ROT0,  "[Orca] Thunderbolt", "Espial (Europe)", GAME_SUPPORTS_SAVE )
424GAME( 1983, espialu, espial, espial,  espial,  0, ROT0,  "[Orca] Thunderbolt", "Espial (US?)", GAME_SUPPORTS_SAVE )
425GAME( 1983, netwars, 0,      netwars, netwars, 0, ROT90, "Orca (Esco Trading Co license)", "Net Wars", GAME_SUPPORTS_SAVE )
src/mame/drivers/hyperspt.c
r4679r4680
7070
7171
7272
73static ADDRESS_MAP_START( hyperspt_readmem, ADDRESS_SPACE_PROGRAM, 8 )
74   AM_RANGE(0x1000, 0x10ff) AM_READ(SMH_RAM)
73static ADDRESS_MAP_START( hyperspt_map, ADDRESS_SPACE_PROGRAM, 8 )
74   AM_RANGE(0x1000, 0x10bf) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
75   AM_RANGE(0x10c0, 0x10ff) AM_RAM AM_BASE(&hyperspt_scroll)   /* Scroll amount */
76   AM_RANGE(0x1400, 0x1400) AM_WRITE(watchdog_reset_w)
77   AM_RANGE(0x1480, 0x1480) AM_WRITE(hyperspt_flipscreen_w)
78   AM_RANGE(0x1481, 0x1481) AM_WRITE(konami_sh_irqtrigger_w)  /* cause interrupt on audio CPU */
79   AM_RANGE(0x1483, 0x1484) AM_WRITE(hyperspt_coin_counter_w)
80   AM_RANGE(0x1487, 0x1487) AM_WRITE(interrupt_enable_w)  /* Interrupt enable */
81   AM_RANGE(0x1500, 0x1500) AM_WRITE(soundlatch_w)
7582   AM_RANGE(0x1600, 0x1600) AM_READ_PORT("DSW2")
7683   AM_RANGE(0x1680, 0x1680) AM_READ_PORT("SYSTEM")
7784//  AM_RANGE(0x1681, 0x1681) AM_READ_PORT("P1_P2")
7885   AM_RANGE(0x1681, 0x1681) AM_READ(konami_IN1_r)    /* P1/P2 IO and handle fake button for cheating */
7986   AM_RANGE(0x1682, 0x1682) AM_READ_PORT("P3_P4")
8087   AM_RANGE(0x1683, 0x1683) AM_READ_PORT("DSW1")
81   AM_RANGE(0x2000, 0x3fff) AM_READ(SMH_RAM)
82   AM_RANGE(0x4000, 0xffff) AM_READ(SMH_ROM)
88   AM_RANGE(0x2000, 0x27ff) AM_RAM_WRITE(hyperspt_videoram_w) AM_BASE(&videoram)
89   AM_RANGE(0x2800, 0x2fff) AM_RAM_WRITE(hyperspt_colorram_w) AM_BASE(&colorram)
90   AM_RANGE(0x3000, 0x37ff) AM_RAM
91   AM_RANGE(0x3800, 0x3fff) AM_RAM AM_BASE(&nvram) AM_SIZE(&nvram_size)
92   AM_RANGE(0x4000, 0xffff) AM_ROM
8393ADDRESS_MAP_END
8494
85static ADDRESS_MAP_START( roadf_readmem, ADDRESS_SPACE_PROGRAM, 8 )
86   AM_RANGE(0x1000, 0x10ff) AM_READ(SMH_RAM)
87   AM_RANGE(0x1600, 0x1600) AM_READ_PORT("DSW2")
88   AM_RANGE(0x1680, 0x1680) AM_READ_PORT("SYSTEM")
89   AM_RANGE(0x1681, 0x1681) AM_READ_PORT("P1")
90   AM_RANGE(0x1682, 0x1682) AM_READ_PORT("P2")
91   AM_RANGE(0x1683, 0x1683) AM_READ_PORT("DSW1")
92   AM_RANGE(0x2000, 0x3fff) AM_READ(SMH_RAM)
93   AM_RANGE(0x4000, 0xffff) AM_READ(SMH_ROM)
94ADDRESS_MAP_END
95
96static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 )
97   AM_RANGE(0x1000, 0x10bf) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
98   AM_RANGE(0x10C0, 0x10ff) AM_WRITE(SMH_RAM) AM_BASE(&hyperspt_scroll)   /* Scroll amount */
95static ADDRESS_MAP_START( roadf_map, ADDRESS_SPACE_PROGRAM, 8 )
96   AM_RANGE(0x1000, 0x10bf) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
97   AM_RANGE(0x10c0, 0x10ff) AM_RAM AM_BASE(&hyperspt_scroll)   /* Scroll amount */
9998   AM_RANGE(0x1400, 0x1400) AM_WRITE(watchdog_reset_w)
10099   AM_RANGE(0x1480, 0x1480) AM_WRITE(hyperspt_flipscreen_w)
101100   AM_RANGE(0x1481, 0x1481) AM_WRITE(konami_sh_irqtrigger_w)  /* cause interrupt on audio CPU */
102101   AM_RANGE(0x1483, 0x1484) AM_WRITE(hyperspt_coin_counter_w)
103102   AM_RANGE(0x1487, 0x1487) AM_WRITE(interrupt_enable_w)  /* Interrupt enable */
104103   AM_RANGE(0x1500, 0x1500) AM_WRITE(soundlatch_w)
105   AM_RANGE(0x2000, 0x27ff) AM_WRITE(hyperspt_videoram_w) AM_BASE(&videoram)
106   AM_RANGE(0x2800, 0x2fff) AM_WRITE(hyperspt_colorram_w) AM_BASE(&colorram)
107   AM_RANGE(0x3000, 0x37ff) AM_WRITE(SMH_RAM)
108   AM_RANGE(0x3800, 0x3fff) AM_WRITE(SMH_RAM) AM_BASE(&nvram) AM_SIZE(&nvram_size)
109   AM_RANGE(0x4000, 0xffff) AM_WRITE(SMH_ROM)
104   AM_RANGE(0x1600, 0x1600) AM_READ_PORT("DSW2")
105   AM_RANGE(0x1680, 0x1680) AM_READ_PORT("SYSTEM")
106   AM_RANGE(0x1681, 0x1681) AM_READ_PORT("P1")
107   AM_RANGE(0x1682, 0x1682) AM_READ_PORT("P2")
108   AM_RANGE(0x1683, 0x1683) AM_READ_PORT("DSW1")
109   AM_RANGE(0x2000, 0x27ff) AM_RAM_WRITE(hyperspt_videoram_w) AM_BASE(&videoram)
110   AM_RANGE(0x2800, 0x2fff) AM_RAM_WRITE(hyperspt_colorram_w) AM_BASE(&colorram)
111   AM_RANGE(0x3000, 0x37ff) AM_RAM
112   AM_RANGE(0x3800, 0x3fff) AM_RAM AM_BASE(&nvram) AM_SIZE(&nvram_size)
113   AM_RANGE(0x4000, 0xffff) AM_ROM
110114ADDRESS_MAP_END
111115
112static ADDRESS_MAP_START( sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
113   AM_RANGE(0x0000, 0x3fff) AM_READ(SMH_ROM)
114   AM_RANGE(0x4000, 0x4fff) AM_READ(SMH_RAM)
116static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 )
117   AM_RANGE(0x0000, 0x3fff) AM_ROM
118   AM_RANGE(0x4000, 0x4fff) AM_RAM
115119   AM_RANGE(0x6000, 0x6000) AM_READ(soundlatch_r)
116120   AM_RANGE(0x8000, 0x8000) AM_READ(hyperspt_sh_timer_r)
117ADDRESS_MAP_END
118
119static ADDRESS_MAP_START( sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
120   AM_RANGE(0x0000, 0x3fff) AM_WRITE(SMH_ROM)
121   AM_RANGE(0x4000, 0x4fff) AM_WRITE(SMH_RAM)
122121   AM_RANGE(0xa000, 0xa000) AM_DEVWRITE("vlm", vlm5030_data_w) /* speech data */
123122   AM_RANGE(0xc000, 0xdfff) AM_DEVWRITE("vlm", hyperspt_sound_w)     /* speech and output control */
124123   AM_RANGE(0xe000, 0xe000) AM_DEVWRITE("dac", dac_w)
r4679r4680
309308
310309   /* basic machine hardware */
311310   MDRV_CPU_ADD("maincpu", M6809, XTAL_18_432MHz/12)   /* verified on pcb */
312   MDRV_CPU_PROGRAM_MAP(hyperspt_readmem,writemem)
311   MDRV_CPU_PROGRAM_MAP(hyperspt_map,0)
313312   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
314313
315314   MDRV_CPU_ADD("audiocpu", Z80,XTAL_14_31818MHz/4) /* verified on pcb */
316   MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem)
315   MDRV_CPU_PROGRAM_MAP(sound_map,0)
317316
318317   MDRV_NVRAM_HANDLER(hyperspt)
319318
r4679r4680
349348static MACHINE_DRIVER_START( roadf )
350349   MDRV_IMPORT_FROM(hyperspt)
351350   MDRV_CPU_MODIFY("maincpu")
352   MDRV_CPU_PROGRAM_MAP(roadf_readmem, writemem)
351   MDRV_CPU_PROGRAM_MAP(roadf_map,0)
353352   MDRV_GFXDECODE(roadf)
354353   MDRV_VIDEO_START(roadf)
355354MACHINE_DRIVER_END
src/mame/drivers/tiamc1.c
r4679r4680
120120
121121static MACHINE_RESET( tiamc1 )
122122{
123   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
123   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
124124   tiamc1_bankswitch_w(space, 0, 0);
125125}
126126
src/mame/drivers/toaplan1.c
r4679r4680
12241224
12251225static void irqhandler(const device_config *device, int linestate)
12261226{
1227   cpu_set_input_line(device->machine->cpu[1],0,linestate);
1227   cputag_set_input_line(device->machine, "audiocpu", 0, linestate);
12281228}
12291229
12301230static const ym3812_interface ym3812_config =
src/mame/drivers/segag80r.c
r4679r4680
160160{
161161   /* pressing the service switch sends an NMI */
162162   if (newval)
163      cpu_set_input_line(field->port->machine->cpu[0], INPUT_LINE_NMI, PULSE_LINE);
163      cputag_set_input_line(field->port->machine, "maincpu", INPUT_LINE_NMI, PULSE_LINE);
164164}
165165
166166
r4679r4680
296296
297297static WRITE8_DEVICE_HANDLER( sindbadm_soundport_w )
298298{
299   const address_space *space = cpu_get_address_space(device->machine->cpu[0], ADDRESS_SPACE_PROGRAM);
300   soundlatch_w(space,0,data);
301   cpu_set_input_line(device->machine->cpu[1], INPUT_LINE_NMI, PULSE_LINE);
299   const address_space *space = cputag_get_address_space(device->machine, "maincpu", ADDRESS_SPACE_PROGRAM);
300   soundlatch_w(space, 0, data);
301   cputag_set_input_line(device->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
302302   cpuexec_boost_interleave(device->machine, attotime_zero, ATTOTIME_IN_USEC(50));
303303}
304304
r4679r4680
13961396   /* expand the background ROMs; A11/A12 of each ROM is independently controlled via */
13971397   /* banking */
13981398   dest = memory_region(machine, region);
1399   temp = malloc_or_die(0x4000);
1399   temp = alloc_array_or_die(UINT8, 0x4000);
14001400   memcpy(temp, dest, 0x4000);
14011401
14021402   /* 16 effective total banks */
r4679r4680
14251425   segag80r_background_pcb = G80_BACKGROUND_NONE;
14261426
14271427   /* install speech board */
1428   memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x38, 0x38, 0, 0, sega_speech_data_w);
1429   memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x3b, 0x3b, 0, 0, sega_speech_control_w);
1428   memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_IO), 0x38, 0x38, 0, 0, sega_speech_data_w);
1429   memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_IO), 0x3b, 0x3b, 0, 0, sega_speech_control_w);
14301430
14311431   /* install Astro Blaster sound board */
1432   memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x3e, 0x3f, 0, 0, astrob_sound_w);
1432   memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_IO), 0x3e, 0x3f, 0, 0, astrob_sound_w);
14331433}
14341434
14351435
r4679r4680
14521452   segag80r_background_pcb = G80_BACKGROUND_SPACEOD;
14531453
14541454   /* configure ports for the background board */
1455   memory_install_readwrite8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x08, 0x0f, 0, 0, spaceod_back_port_r, spaceod_back_port_w);
1455   memory_install_readwrite8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_IO), 0x08, 0x0f, 0, 0, spaceod_back_port_r, spaceod_back_port_w);
14561456
14571457   /* install Space Odyssey sound board */
1458   memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x0e, 0x0f, 0, 0, spaceod_sound_w);
1458   memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_IO), 0x0e, 0x0f, 0, 0, spaceod_sound_w);
14591459
14601460   /* install our wacky mangled ports */
1461   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0xf8, 0xfb, 0, 0, spaceod_mangled_ports_r);
1462   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0xfc, 0xfc, 0, 0, spaceod_port_fc_r);
1461   memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_IO), 0xf8, 0xfb, 0, 0, spaceod_mangled_ports_r);
1462   memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_IO), 0xfc, 0xfc, 0, 0, spaceod_port_fc_r);
14631463}
14641464
14651465
r4679r4680
14731473   monsterb_expand_gfx(machine, "gfx1");
14741474
14751475   /* install background board handlers */
1476   memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0xb8, 0xbd, 0, 0, monsterb_back_port_w);
1477   memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xe000, 0xffff, 0, 0, monsterb_vidram_w);
1476   memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_IO), 0xb8, 0xbd, 0, 0, monsterb_back_port_w);
1477   memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xe000, 0xffff, 0, 0, monsterb_vidram_w);
14781478}
14791479
14801480
r4679r4680
14891489   monsterb_expand_gfx(machine, "gfx1");
14901490
14911491   /* install background board handlers */
1492   memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0xb4, 0xb5, 0, 0, pignewt_back_color_w);
1493   memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0xb8, 0xbd, 0, 0, pignewt_back_port_w);
1494   memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xe000, 0xffff, 0, 0, pignewt_vidram_w);
1492   memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_IO), 0xb4, 0xb5, 0, 0, pignewt_back_color_w);
1493   memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_IO), 0xb8, 0xbd, 0, 0, pignewt_back_port_w);
1494   memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xe000, 0xffff, 0, 0, pignewt_vidram_w);
14951495}
14961496
14971497
r4679r4680
15051505   monsterb_expand_gfx(machine, "gfx1");
15061506
15071507   /* install background board handlers */
1508   memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0xb4, 0xb5, 0, 0, pignewt_back_color_w);
1509   memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0xb8, 0xbd, 0, 0, pignewt_back_port_w);
1510   memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xe000, 0xffff, 0, 0, pignewt_vidram_w);
1508   memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_IO), 0xb4, 0xb5, 0, 0, pignewt_back_color_w);
1509   memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_IO), 0xb8, 0xbd, 0, 0, pignewt_back_port_w);
1510   memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xe000, 0xffff, 0, 0, pignewt_vidram_w);
15111511
15121512   /* install Universal sound board */
1513   memory_install_readwrite8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x3f, 0x3f, 0, 0, sega_usb_status_r, sega_usb_data_w);
1514   memory_install_readwrite8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xd000, 0xdfff, 0, 0, sega_usb_ram_r, usb_ram_w);
1513   memory_install_readwrite8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_IO), 0x3f, 0x3f, 0, 0, sega_usb_status_r, sega_usb_data_w);
1514   memory_install_readwrite8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xd000, 0xdfff, 0, 0, sega_usb_ram_r, usb_ram_w);
15151515}
15161516
15171517
r4679r4680
15251525   segag80r_background_pcb = G80_BACKGROUND_SINDBADM;
15261526
15271527   /* install background board handlers */
1528   memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x40, 0x41, 0, 0, sindbadm_back_port_w);
1529   memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xe000, 0xffff, 0, 0, sindbadm_vidram_w);
1528   memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_IO), 0x40, 0x41, 0, 0, sindbadm_back_port_w);
1529   memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xe000, 0xffff, 0, 0, sindbadm_vidram_w);
15301530}
15311531
15321532
src/mame/drivers/hnayayoi.c
r4679r4680
103103
104104
105105
106static ADDRESS_MAP_START( hnayayoi_readmem, ADDRESS_SPACE_PROGRAM, 8 )
107   AM_RANGE(0x0000, 0x77ff) AM_READ(SMH_ROM)
108   AM_RANGE(0x7800, 0x7fff) AM_READ(SMH_RAM)
109   AM_RANGE(0x8000, 0xffff) AM_READ(SMH_ROM)
106static ADDRESS_MAP_START( hnayayoi_map, ADDRESS_SPACE_PROGRAM, 8 )
107   AM_RANGE(0x0000, 0x77ff) AM_ROM
108   AM_RANGE(0x7800, 0x7fff) AM_RAM AM_BASE(&generic_nvram) AM_SIZE(&generic_nvram_size)
109   AM_RANGE(0x8000, 0xffff) AM_ROM
110110ADDRESS_MAP_END
111111
112static ADDRESS_MAP_START( hnayayoi_writemem, ADDRESS_SPACE_PROGRAM, 8 )
113   AM_RANGE(0x0000, 0x77ff) AM_WRITE(SMH_ROM)
114   AM_RANGE(0x7800, 0x7fff) AM_WRITE(SMH_RAM) AM_BASE(&generic_nvram) AM_SIZE(&generic_nvram_size)
115   AM_RANGE(0x8000, 0xffff) AM_WRITE(SMH_ROM)
116ADDRESS_MAP_END
117
118112static ADDRESS_MAP_START( hnayayoi_io_map, ADDRESS_SPACE_IO, 8 )
119113   ADDRESS_MAP_GLOBAL_MASK(0xff)
120114   AM_RANGE(0x00, 0x01) AM_DEVWRITE("ym", ym2203_w)
r4679r4680
135129   AM_RANGE(0x62, 0x67) AM_WRITE(dynax_blitter_rev1_param_w)
136130ADDRESS_MAP_END
137131
138static ADDRESS_MAP_START( hnfubuki_readmem, ADDRESS_SPACE_PROGRAM, 8 )
139   AM_RANGE(0x0000, 0x77ff) AM_READ(SMH_ROM)
140   AM_RANGE(0x7800, 0x7fff) AM_READ(SMH_RAM)
141   AM_RANGE(0x8000, 0xfeff) AM_READ(SMH_ROM)
132static ADDRESS_MAP_START( hnfubuki_map, ADDRESS_SPACE_PROGRAM, 8 )
133   AM_RANGE(0x0000, 0x77ff) AM_ROM
134   AM_RANGE(0x7800, 0x7fff) AM_RAM AM_BASE(&generic_nvram) AM_SIZE(&generic_nvram_size)
135   AM_RANGE(0x8000, 0xfeff) AM_ROM
136   AM_RANGE(0xff00, 0xff01) AM_DEVWRITE("ym", ym2203_w)
142137   AM_RANGE(0xff02, 0xff03) AM_DEVREAD("ym", ym2203_r)
143138   AM_RANGE(0xff04, 0xff04) AM_READ_PORT("DSW3")
144   AM_RANGE(0xff41, 0xff41) AM_READ(keyboard_0_r)
145   AM_RANGE(0xff42, 0xff42) AM_READ(keyboard_1_r)
146   AM_RANGE(0xff43, 0xff43) AM_READ_PORT("COIN")
147ADDRESS_MAP_END
148
149static ADDRESS_MAP_START( hnfubuki_writemem, ADDRESS_SPACE_PROGRAM, 8 )
150   AM_RANGE(0x0000, 0x77ff) AM_WRITE(SMH_ROM)
151   AM_RANGE(0x7800, 0x7fff) AM_WRITE(SMH_RAM) AM_BASE(&generic_nvram) AM_SIZE(&generic_nvram_size)
152   AM_RANGE(0x8000, 0xfeff) AM_WRITE(SMH_ROM)
153   AM_RANGE(0xff00, 0xff01) AM_DEVWRITE("ym", ym2203_w)
154139   AM_RANGE(0xff06, 0xff06) AM_DEVWRITE("msm", adpcm_data_w)
155140//  AM_RANGE(0xff08, 0xff08) AM_WRITENOP // CRT Controller
156141//  AM_RANGE(0xff09, 0xff09) AM_WRITENOP // CRT Controller
r4679r4680
159144   AM_RANGE(0xff23, 0xff23) AM_DEVWRITE("msm", adpcm_vclk_w)
160145   AM_RANGE(0xff24, 0xff24) AM_DEVWRITE("msm", adpcm_reset_inv_w)
161146   AM_RANGE(0xff40, 0xff40) AM_WRITE(keyboard_w)
147   AM_RANGE(0xff41, 0xff41) AM_READ(keyboard_0_r)
148   AM_RANGE(0xff42, 0xff42) AM_READ(keyboard_1_r)
149   AM_RANGE(0xff43, 0xff43) AM_READ_PORT("COIN")
162150   AM_RANGE(0xff60, 0xff61) AM_WRITE(hnayayoi_palbank_w)
163151   AM_RANGE(0xff62, 0xff67) AM_WRITE(dynax_blitter_rev1_param_w)
164152ADDRESS_MAP_END
165153
166static ADDRESS_MAP_START( untoucha_readmem, ADDRESS_SPACE_PROGRAM, 8 )
167   AM_RANGE(0x0000, 0x77ff) AM_READ(SMH_ROM)
168   AM_RANGE(0x7800, 0x7fff) AM_READ(SMH_RAM)
169   AM_RANGE(0x8000, 0xffff) AM_READ(SMH_ROM)
154static ADDRESS_MAP_START( untoucha_map, ADDRESS_SPACE_PROGRAM, 8 )
155   AM_RANGE(0x0000, 0x77ff) AM_ROM
156   AM_RANGE(0x7800, 0x7fff) AM_RAM AM_BASE(&generic_nvram) AM_SIZE(&generic_nvram_size)
157   AM_RANGE(0x8000, 0xffff) AM_ROM
170158ADDRESS_MAP_END
171159
172static ADDRESS_MAP_START( untoucha_writemem, ADDRESS_SPACE_PROGRAM, 8 )
173   AM_RANGE(0x0000, 0x77ff) AM_WRITE(SMH_ROM)
174   AM_RANGE(0x7800, 0x7fff) AM_WRITE(SMH_RAM) AM_BASE(&generic_nvram) AM_SIZE(&generic_nvram_size)
175   AM_RANGE(0x8000, 0xffff) AM_WRITE(SMH_ROM)
176ADDRESS_MAP_END
177
178160static ADDRESS_MAP_START( untoucha_io_map, ADDRESS_SPACE_IO, 8 )
179161   ADDRESS_MAP_GLOBAL_MASK(0xff)
180162   AM_RANGE(0x10, 0x10) AM_DEVWRITE("ym", ym2203_control_port_w)
r4679r4680
562544static MACHINE_DRIVER_START( hnayayoi )
563545   /* basic machine hardware */
564546   MDRV_CPU_ADD("maincpu", Z80, 20000000/4 )        /* 5 MHz ???? */
565   MDRV_CPU_PROGRAM_MAP(hnayayoi_readmem,hnayayoi_writemem)
547   MDRV_CPU_PROGRAM_MAP(hnayayoi_map,0)
566548   MDRV_CPU_IO_MAP(hnayayoi_io_map,0)
567549   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
568550   MDRV_CPU_PERIODIC_INT(nmi_line_pulse, 8000)
r4679r4680
603585static MACHINE_DRIVER_START( hnfubuki )
604586   MDRV_IMPORT_FROM(hnayayoi)
605587   MDRV_CPU_MODIFY("maincpu")
606   MDRV_CPU_PROGRAM_MAP(hnfubuki_readmem,hnfubuki_writemem)
588   MDRV_CPU_PROGRAM_MAP(hnfubuki_map,0)
607589MACHINE_DRIVER_END
608590
609591static MACHINE_DRIVER_START( untoucha )
610592   MDRV_IMPORT_FROM(hnayayoi)
611593   MDRV_CPU_MODIFY("maincpu")
612   MDRV_CPU_PROGRAM_MAP(untoucha_readmem,untoucha_writemem)
594   MDRV_CPU_PROGRAM_MAP(untoucha_map,0)
613595   MDRV_CPU_IO_MAP(untoucha_io_map,0)
614596
615597   MDRV_VIDEO_START(untoucha)
src/mame/drivers/shanghai.c
r4679r4680
5959
6060static VIDEO_START( shanghai )
6161{
62   HD63484_start();
62   HD63484_start(machine);
6363}
6464
6565static VIDEO_UPDATE( shanghai )
src/mame/drivers/tmnt.c
r4679r4680
195195static WRITE16_HANDLER( tmnt_sound_command_w )
196196{
197197   if (ACCESSING_BITS_0_7)
198      soundlatch_w(space,0,data & 0xff);
198      soundlatch_w(space, 0, data & 0xff);
199199}
200200
201201static READ8_DEVICE_HANDLER( punkshot_sound_r )
202202{
203203   /* If the sound CPU is running, read the status, otherwise
204204       just make it pass the test */
205   return k053260_r(device,2 + offset);
205   return k053260_r(device, 2 + offset);
206206}
207207
208208static WRITE8_DEVICE_HANDLER( glfgreat_sound_w )
r4679r4680
210210   k053260_w(device, offset, data);
211211
212212   if (offset)
213      cpu_set_input_line_and_vector(device->machine->cpu[1],0,HOLD_LINE,0xff);
213      cputag_set_input_line_and_vector(device->machine, "audiocpu", 0, HOLD_LINE, 0xff);
214214}
215215
216216static READ16_HANDLER( prmrsocr_sound_r )
r4679r4680
223223   if (ACCESSING_BITS_0_7)
224224   {
225225      data &= 0xff;
226      if (offset == 0) soundlatch_w(space,0,data);
227      else soundlatch2_w(space,0,data);
226      if (offset == 0) soundlatch_w(space, 0, data);
227      else soundlatch2_w(space, 0, data);
228228   }
229229}
230230
231231static WRITE16_HANDLER( prmrsocr_sound_irq_w )
232232{
233   cpu_set_input_line_and_vector(space->machine->cpu[1],0,HOLD_LINE,0xff);
233   cputag_set_input_line_and_vector(space->machine, "audiocpu", 0, HOLD_LINE, 0xff);
234234}
235235
236236static WRITE8_HANDLER( prmrsocr_audio_bankswitch_w )
r4679r4680
280280   int i;
281281   UINT8 *source = memory_region(machine, "title");
282282
283   sampledata = auto_malloc(0x40000*sizeof(sampledata[0]));
283   sampledata = auto_alloc_array(machine, INT16, 0x40000);
284284
285285   /*  Sound sample for TMNT.D05 is stored in the following mode (ym3012 format):
286286     *
r4679r4680
317317
318318static TIMER_CALLBACK( nmi_callback )
319319{
320   cpu_set_input_line(machine->cpu[1], INPUT_LINE_NMI, ASSERT_LINE);
320   cputag_set_input_line(machine, "audiocpu", INPUT_LINE_NMI, ASSERT_LINE);
321321}
322322
323323static WRITE8_HANDLER( sound_arm_nmi_w )
324324{
325325//  sound_nmi_enabled = 1;
326   cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_NMI, CLEAR_LINE);
326   cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, CLEAR_LINE);
327327   timer_set(space->machine, ATTOTIME_IN_USEC(50), NULL,0,nmi_callback);   /* kludge until the K053260 is emulated correctly */
328328}
329329
r4679r4680
591591
592592      /* bit 5 triggers IRQ on sound cpu */
593593      if (last == 0 && (data & 0x20) != 0)
594         cpu_set_input_line_and_vector(space->machine->cpu[1],0,HOLD_LINE,0xff);
594         cputag_set_input_line_and_vector(space->machine, "audiocpu", 0, HOLD_LINE, 0xff);
595595      last = data & 0x20;
596596
597597      /* bit 6 = enable char ROM reading through the video RAM */
r4679r4680
755755static WRITE16_HANDLER( ssriders_soundkludge_w )
756756{
757757   /* I think this is more than just a trigger */
758   cpu_set_input_line_and_vector(space->machine->cpu[1],0,HOLD_LINE,0xff);
758   cputag_set_input_line_and_vector(space->machine, "audiocpu", 0, HOLD_LINE, 0xff);
759759}
760760
761761static ADDRESS_MAP_START( blswhstl_main_map, ADDRESS_SPACE_PROGRAM, 16 )
r4679r4680
12291229
12301230static ADDRESS_MAP_START( prmrsocr_audio_map, ADDRESS_SPACE_PROGRAM, 8 )
12311231   AM_RANGE(0x0000, 0x7fff) AM_ROM
1232   AM_RANGE(0x8000, 0xbfff) AM_READWRITE(SMH_BANK1, SMH_ROM)
1232   AM_RANGE(0x8000, 0xbfff) AM_READWRITE(SMH_BANK(1), SMH_ROM)
12331233   AM_RANGE(0xc000, 0xdfff) AM_RAM
12341234   AM_RANGE(0xe000, 0xe0ff) AM_DEVREADWRITE("konami", k054539_r, k054539_w)
12351235   AM_RANGE(0xe100, 0xe12f) AM_DEVREADWRITE("konami", k054539_ctrl_r, k054539_ctrl_w)
r4679r4680
23732373
23742374static void sound_nmi(const device_config *device)
23752375{
2376   cpu_set_input_line(device->machine->cpu[1], INPUT_LINE_NMI, PULSE_LINE);
2376   cputag_set_input_line(device->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
23772377}
23782378
23792379static const k054539_interface k054539_config =
r4679r4680
37493749      }
37503750   }
37513751
3752   temp = malloc_or_die(len);
3752   temp = alloc_array_or_die(UINT8, len);
37533753   memcpy(temp,gfxdata,len);
37543754   for (A = 0;A < len/4;A++)
37553755   {
r4679r4680
38453845      }
38463846   }
38473847
3848   temp = malloc_or_die(len);
3848   temp = alloc_array_or_die(UINT8, len);
38493849   memcpy(temp,gfxdata,len);
38503850   code_conv_table = &memory_region(machine, "proms")[0x0000];
38513851   for (A = 0;A < len/4;A++)
src/mame/drivers/jpmimpct.c
r4679r4680
155155
156156static void update_irqs(running_machine *machine)
157157{
158   cpu_set_input_line(machine->cpu[0], 2, tms_irq ? ASSERT_LINE : CLEAR_LINE);
159   cpu_set_input_line(machine->cpu[0], 5, duart_1_irq ? ASSERT_LINE : CLEAR_LINE);
158   cputag_set_input_line(machine, "maincpu", 2, tms_irq ? ASSERT_LINE : CLEAR_LINE);
159   cputag_set_input_line(machine, "maincpu", 5, duart_1_irq ? ASSERT_LINE : CLEAR_LINE);
160160}
161161
162162
r4679r4680
197197
198198static WRITE16_HANDLER( m68k_tms_w )
199199{
200   tms34010_host_w(space->machine->cpu[1], offset, data);
200   tms34010_host_w(cputag_get_cpu(space->machine, "dsp"), offset, data);
201201}
202202
203203static READ16_HANDLER( m68k_tms_r )
204204{
205   return tms34010_host_r(space->machine->cpu[1], offset);
205   return tms34010_host_r(cputag_get_cpu(space->machine, "dsp"), offset);
206206}
207207
208208
src/mame/drivers/namcos12.c
r4679r4680
11561156
11571157static void system11gun_install( running_machine *machine )
11581158{
1159   memory_install_write32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1f788000, 0x1f788003, 0, 0, system11gun_w );
1160   memory_install_read32_handler (cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1f780000, 0x1f78000f, 0, 0, system11gun_r );
1159   memory_install_write32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1f788000, 0x1f788003, 0, 0, system11gun_w );
1160   memory_install_read32_handler (cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1f780000, 0x1f78000f, 0, 0, system11gun_r );
11611161}
11621162
11631163static UINT8 kcram[ 12 ];
r4679r4680
12251225
12261226static MACHINE_RESET( namcos12 )
12271227{
1228   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
1228   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
12291229   psx_machine_init(machine);
12301230   bankoffset_w(space,0,0,0xffffffff);
12311231   has_tektagt_dma = 0;
r4679r4680
12601260      strcmp( machine->gamedrv->name, "ghlpanic" ) == 0 )
12611261   {
12621262      /* this is based on guesswork, it might not even be keycus. */
1263      memory_install_read32_handler (space, 0x1fc20280, 0x1fc2028b, 0, 0, SMH_BANK2 );
1263      memory_install_read32_handler (space, 0x1fc20280, 0x1fc2028b, 0, 0, (read32_space_func)SMH_BANK(2) );
12641264      memory_install_write32_handler(space, 0x1f008000, 0x1f008003, 0, 0, kcon_w );
12651265      memory_install_write32_handler(space, 0x1f018000, 0x1f018003, 0, 0, kcoff_w );
12661266
src/mame/drivers/raiden2.c
r4679r4680
17091709   ROM_REGION( 0x100000, "oki2", ROMREGION_ERASEFF )   /* ADPCM samples */
17101710ROM_END
17111711
1712ROM_START( zeroteac )
1713   ROM_REGION( 0x200000, "user1", 0 ) /* v30 main cpu */
1714   ROM_LOAD32_BYTE("b1.024",   0x000000, 0x40000, CRC(528de3b9) SHA1(9ca8cdc0212f2540e852d20ab4c04f68b967d024) )
1715   ROM_LOAD32_BYTE("b3.023",   0x000002, 0x40000, CRC(3688739a) SHA1(f98f461fb8e7804b3b4020a5e3762d36d6458a62) )
1716   ROM_LOAD32_BYTE("b2.025",   0x000001, 0x40000, CRC(5176015e) SHA1(6b372564b2f1b1f56cae0c98f4ca588b784bfa3d) )
1717   ROM_LOAD32_BYTE("b4.026",   0x000003, 0x40000, CRC(c79925cb) SHA1(aaff9f626ec61bc0ff038ebd722fe361dccc49fb) )
1718
1719   ROM_REGION( 0x40000, "user2", 0 )   /* COPDX */
1720   ROM_LOAD( "copx-d2",   0x00000, 0x40000, CRC(a6732ff9) SHA1(c4856ec77869d9098da24b1bb3d7d58bb74b4cda) )
1721
1722   ROM_REGION( 0x20000, "audiocpu", 0 ) /* 64k code for sound Z80 */
1723   ROM_LOAD( "5.bin",  0x000000, 0x10000, CRC(efc484ca) SHA1(c34b8e3e7f4c2967bc6414348993478ed637d338) )
1724
1725   ROM_REGION( 0x020000, "gfx1", ROMREGION_DISPOSE ) /* chars */
1726   ROM_LOAD16_BYTE( "b7.072",   0x000000,   0x010000, CRC(30ec0241) SHA1(a0d0be9458bf97cb9764fb85c988bb816710475e) )
1727   ROM_LOAD16_BYTE( "b8.077",   0x000001,   0x010000, CRC(e18b3a75) SHA1(3d52bba8d47d0d9108ee79014fd64d6e856a3fde) )
1728
1729   ROM_REGION( 0x400000, "gfx2", ROMREGION_DISPOSE ) /* background gfx */
1730   ROM_LOAD( "back-1",   0x000000, 0x100000, CRC(8b7f9219) SHA1(3412b6f8a4fe245e521ddcf185a53f2f4520eb57) )
1731   ROM_LOAD( "back-2",   0x100000, 0x080000, CRC(ce61c952) SHA1(52a843c8ba428b121fab933dd3b313b2894d80ac) )
1732
1733   ROM_REGION( 0x800000, "gfx3", ROMREGION_DISPOSE ) /* sprite gfx (encrypted) (diff encrypt to raiden2? ) */
1734   ROM_LOAD32_WORD( "obj-1",  0x000000, 0x200000, CRC(45be8029) SHA1(adc164f9dede9a86b96a4d709e9cba7d2ad0e564) )
1735   ROM_LOAD32_WORD( "obj-2",  0x000002, 0x200000, CRC(cb61c19d) SHA1(151a2ce9c32f3321a974819e9b165dddc31c8153) )
1736
1737   ROM_REGION( 0x100000, "oki1", 0 )   /* ADPCM samples */
1738   ROM_LOAD( "6.105", 0x00000, 0x40000,  CRC(b4a6e899) SHA1(175ab656db3c3258ff10eede89890f62435d2298) )
1739
1740   ROM_REGION( 0x100000, "oki2", ROMREGION_ERASEFF )   /* ADPCM samples */
1741ROM_END
1742
17121743/* Different hardware, uses COPX-D3 for protection  */
17131744ROM_START( nzerotea )
17141745   ROM_REGION( 0x200000, "user1", 0 ) /* v30 main cpu */
r4679r4680
21932224GAME( 1993, zeroteam, 0,       raiden2,  raiden2,  raiden2,  ROT0,   "Seibu Kaihatsu", "Zero Team (set 1)", GAME_NOT_WORKING|GAME_NO_SOUND)
21942225GAME( 1993, zeroteaa, zeroteam,raiden2,  raiden2,  raiden2,  ROT0,   "Seibu Kaihatsu", "Zero Team (set 2)", GAME_NOT_WORKING|GAME_NO_SOUND)
21952226GAME( 1993, zeroteab, zeroteam,raiden2,  raiden2,  raiden2,  ROT0,   "Seibu Kaihatsu", "Zero Team (set 3)", GAME_NOT_WORKING|GAME_NO_SOUND)
2227GAME( 1993, zeroteac, zeroteam,raiden2,  raiden2,  raiden2,  ROT0,   "Seibu Kaihatsu", "Zero Team (set 4)", GAME_NOT_WORKING|GAME_NO_SOUND)
21962228GAME( 1993, zerotsel, zeroteam,raiden2,  raiden2,  raiden2,  ROT0,   "Seibu Kaihatsu", "Zero Team Selection", GAME_NOT_WORKING|GAME_NO_SOUND)
21972229GAME( 1995, xsedae,   0,       raiden2,  raiden2,  xsedae,   ROT0,   "Dream Island",   "X Se Dae Quiz", GAME_NOT_WORKING|GAME_NO_SOUND)
21982230
src/mame/drivers/zodiack.c
r4679r4680
527527   MDRV_CPU_VBLANK_INT_HACK(espial_sound_nmi_gen,8)   /* IRQs are triggered by the main CPU */
528528
529529   MDRV_MACHINE_RESET(zodiack)
530   MDRV_MACHINE_START(espial)
530531
531532   /* video hardware */
532533   MDRV_SCREEN_ADD("screen", RASTER)
r4679r4680
662663   ROM_LOAD( "mb7051.2b",   0x0020, 0x0020, CRC(465e31d4) SHA1(d47a4aa0e8931dcd8f85017ef04c2f6ad79f5725) )
663664ROM_END
664665
665
666
667GAME( 1983, zodiack,  0, zodiack, zodiack,  0, ROT270, "Orca (Esco Trading Co)", "Zodiack", GAME_IMPERFECT_COLORS )   /* bullet color needs to be verified */
668GAME( 1983, dogfight, 0, zodiack, dogfight, 0, ROT270, "[Orca] Thunderbolt", "Dog Fight (Thunderbolt)", GAME_IMPERFECT_COLORS )   /* bullet color needs to be verified */
669GAME( 1982, moguchan, 0, percuss, moguchan, 0, ROT270, "Orca (Eastern Commerce Inc. license) (bootleg?)",  /* this is in the ROM at $0b5c */ "Moguchan", GAME_WRONG_COLORS )
670GAME( 1981, percuss,  0, percuss, percuss,  0, ROT270, "Orca", "The Percussor", 0 )
671GAME( 1982, bounty,   0, percuss, bounty,   0, ROT180, "Orca", "The Bounty", 0 )
666GAME( 1983, zodiack,  0, zodiack, zodiack,  0, ROT270, "Orca (Esco Trading Co)", "Zodiack", GAME_IMPERFECT_COLORS | GAME_SUPPORTS_SAVE )   /* bullet color needs to be verified */
667GAME( 1983, dogfight, 0, zodiack, dogfight, 0, ROT270, "[Orca] Thunderbolt", "Dog Fight (Thunderbolt)", GAME_IMPERFECT_COLORS | GAME_SUPPORTS_SAVE )   /* bullet color needs to be verified */
668GAME( 1982, moguchan, 0, percuss, moguchan, 0, ROT270, "Orca (Eastern Commerce Inc. license) (bootleg?)",  /* this is in the ROM at $0b5c */ "Moguchan", GAME_WRONG_COLORS | GAME_SUPPORTS_SAVE )
669GAME( 1981, percuss,  0, percuss, percuss,  0, ROT270, "Orca", "The Percussor", GAME_SUPPORTS_SAVE )
670GAME( 1982, bounty,   0, percuss, bounty,   0, ROT180, "Orca", "The Bounty", GAME_SUPPORTS_SAVE )
src/mame/drivers/mogura.c
r4679r4680
9595   dac_data_w(devtag_get_device(space->machine, "dac2"), (data & 0x0f)<<4 );   /* right */
9696}
9797
98static ADDRESS_MAP_START( io_map, ADDRESS_SPACE_IO, 8 )
99   ADDRESS_MAP_GLOBAL_MASK(0xff)
100   AM_RANGE(0x00, 0x00) AM_WRITENOP   // ??
101   AM_RANGE(0x08, 0x08) AM_READ_PORT("SYSTEM")
102   AM_RANGE(0x0c, 0x0c) AM_READ_PORT("P1")
103   AM_RANGE(0x0d, 0x0d) AM_READ_PORT("P2")
104   AM_RANGE(0x0e, 0x0e) AM_READ_PORT("P3")
105   AM_RANGE(0x0f, 0x0f) AM_READ_PORT("P4")
106   AM_RANGE(0x10, 0x10) AM_READ_PORT("SERVICE")
107   AM_RANGE(0x14, 0x14) AM_WRITE(mogura_dac_w)   /* 4 bit DAC x 2. MSB = left, LSB = right */
108ADDRESS_MAP_END
10998
11099
100
111101static WRITE8_HANDLER ( mogura_gfxram_w )
112102{
113103   mogura_gfxram[offset] = data ;
r4679r4680
116106}
117107
118108
119static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 )
120   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
121   AM_RANGE(0xc000, 0xdfff) AM_READ(SMH_RAM) // main ram
122   AM_RANGE(0xe000, 0xefff) AM_READ(SMH_RAM) // ram based characters
123   AM_RANGE(0xf000, 0xffff) AM_READ(SMH_RAM) // tilemap
109static ADDRESS_MAP_START( mogura_map, ADDRESS_SPACE_PROGRAM, 8 )
110   AM_RANGE(0x0000, 0x7fff) AM_ROM
111   AM_RANGE(0xc000, 0xdfff) AM_RAM // main ram
112   AM_RANGE(0xe000, 0xefff) AM_RAM_WRITE(mogura_gfxram_w) AM_BASE(&mogura_gfxram) // ram based characters
113   AM_RANGE(0xf000, 0xffff) AM_RAM_WRITE(mogura_tileram_w) AM_BASE(&mogura_tileram) // tilemap
124114ADDRESS_MAP_END
125115
126static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 )
127   AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM)
128   AM_RANGE(0xc000, 0xdfff) AM_WRITE(SMH_RAM)
129   AM_RANGE(0xe000, 0xefff) AM_WRITE(mogura_gfxram_w) AM_BASE(&mogura_gfxram)
130   AM_RANGE(0xf000, 0xffff) AM_WRITE(mogura_tileram_w) AM_BASE(&mogura_tileram)
116static ADDRESS_MAP_START( mogura_io_map, ADDRESS_SPACE_IO, 8 )
117   ADDRESS_MAP_GLOBAL_MASK(0xff)
118   AM_RANGE(0x00, 0x00) AM_WRITENOP   // ??
119   AM_RANGE(0x08, 0x08) AM_READ_PORT("SYSTEM")
120   AM_RANGE(0x0c, 0x0c) AM_READ_PORT("P1")
121   AM_RANGE(0x0d, 0x0d) AM_READ_PORT("P2")
122   AM_RANGE(0x0e, 0x0e) AM_READ_PORT("P3")
123   AM_RANGE(0x0f, 0x0f) AM_READ_PORT("P4")
124   AM_RANGE(0x10, 0x10) AM_READ_PORT("SERVICE")
125   AM_RANGE(0x14, 0x14) AM_WRITE(mogura_dac_w)   /* 4 bit DAC x 2. MSB = left, LSB = right */
131126ADDRESS_MAP_END
132127
133
134128static INPUT_PORTS_START( mogura )
135129   PORT_START("SYSTEM")
136130   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
r4679r4680
179173static MACHINE_DRIVER_START( mogura )
180174   /* basic machine hardware */
181175   MDRV_CPU_ADD("maincpu", Z80,3000000)       /* 3 MHz */
182   MDRV_CPU_PROGRAM_MAP(readmem,writemem)
183   MDRV_CPU_IO_MAP(io_map,0)
176   MDRV_CPU_PROGRAM_MAP(mogura_map,0)
177   MDRV_CPU_IO_MAP(mogura_io_map,0)
184178   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
185179
186180   MDRV_GFXDECODE(mogura)
r4679r4680
217211   ROM_LOAD( "gx141.7j", 0x00, 0x20,  CRC(b21c5d5f) SHA1(6913c840dd69a7d4687f4c4cbe3ff12300f62bc2) )
218212ROM_END
219213
220GAME( 1991, mogura, 0, mogura, mogura, 0, ROT0, "Konami", "Mogura Desse", 0 )
214GAME( 1991, mogura, 0, mogura, mogura, 0, ROT0, "Konami", "Mogura Desse (Japan)", 0 )
src/mame/drivers/system18.c
r4679r4680
9696
9797/***************************************************************************/
9898
99static void set_fg_page( int data ){
99static void set_fg_page( int data )
100{
100101   sys16_fg_page[0] = data>>12;
101102   sys16_fg_page[1] = (data>>8)&0xf;
102103   sys16_fg_page[2] = (data>>4)&0xf;
103104   sys16_fg_page[3] = data&0xf;
104105}
105106
106static void set_bg_page( int data ){
107static void set_bg_page( int data )
108{
107109   sys16_bg_page[0] = data>>12;
108110   sys16_bg_page[1] = (data>>8)&0xf;
109111   sys16_bg_page[2] = (data>>4)&0xf;
110112   sys16_bg_page[3] = data&0xf;
111113}
112114
113static void set_fg2_page( int data ){
115static void set_fg2_page( int data )
116{
114117   sys16_fg2_page[0] = data>>12;
115118   sys16_fg2_page[1] = (data>>8)&0xf;
116119   sys16_fg2_page[2] = (data>>4)&0xf;
117120   sys16_fg2_page[3] = data&0xf;
118121}
119122
120static void set_bg2_page( int data ){
123static void set_bg2_page( int data )
124{
121125   sys16_bg2_page[0] = data>>12;
122126   sys16_bg2_page[1] = (data>>8)&0xf;
123127   sys16_bg2_page[2] = (data>>4)&0xf;
r4679r4680
174178   sample_buffer >>= 4;
175179   sample_select ^= 1;
176180   if(sample_select == 0)
177      cpu_set_input_line(device->machine->cpu[1], INPUT_LINE_NMI, PULSE_LINE);
181      cputag_set_input_line(device->machine, "soundcpu", INPUT_LINE_NMI, PULSE_LINE);
178182}
179183
180184static const msm5205_interface shdancbl_msm5205_interface =
r4679r4680
185189
186190static UINT8* shdancbl_soundbank_ptr = NULL;      /* Pointer to currently selected portion of ROM */
187191
188static WRITE16_HANDLER( sound_command_irq_w ){
189   if( ACCESSING_BITS_0_7 ){
190      soundlatch_w( space,0,data&0xff );
191      cpu_set_input_line(space->machine->cpu[1], 0, HOLD_LINE );
192static WRITE16_HANDLER( sound_command_irq_w )
193{
194   if( ACCESSING_BITS_0_7 )
195   {
196      soundlatch_w( space, 0, data&0xff );
197      cputag_set_input_line(space->machine, "soundcpu", 0, HOLD_LINE );
192198   }
193199}
194200
r4679r4680
282288   AM_RANGE(0xc0, 0xc0) AM_READ(soundlatch_r)
283289ADDRESS_MAP_END
284290
285static WRITE16_HANDLER( sound_command_nmi_w ){
286   if( ACCESSING_BITS_0_7 ){
287      soundlatch_w( space,0,data&0xff );
288      cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_NMI, PULSE_LINE);
291static WRITE16_HANDLER( sound_command_nmi_w )
292{
293   if( ACCESSING_BITS_0_7 )
294   {
295      soundlatch_w( space, 0, data & 0xff );
296      cputag_set_input_line(space->machine, "soundcpu", INPUT_LINE_NMI, PULSE_LINE);
289297   }
290298}
291299
r4679r4680
689697   sys16_update_proc = shdancbl_update_proc;
690698}
691699
692static READ16_HANDLER( shdancbl_skip_r ){
700static READ16_HANDLER( shdancbl_skip_r )
701{
693702   if (cpu_get_pc(space->cpu)==0x2f76) {cpu_spinuntil_int(space->cpu); return 0xffff;}
694703   return sys16_workingram[0];
695704}
r4679r4680
705714      mem[i] ^= 0xFF;
706715
707716   MACHINE_RESET_CALL(sys16_onetime);
708   memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xffc000, 0xffc001, 0, 0, shdancbl_skip_r );
717   memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xffc000, 0xffc001, 0, 0, shdancbl_skip_r );
709718
710719   sys18_splittab_fg_x=&sys16_textram[0x0f80/2];
711720   sys18_splittab_bg_x=&sys16_textram[0x0fc0/2];
r4679r4680
746755
747756/***************************************************************************/
748757
749static void mwalkbl_update_proc( void ){
758static void mwalkbl_update_proc( void )
759{
750760   sys16_fg_scrollx = sys16_textram[0x0e98/2];
751761   sys16_bg_scrollx = sys16_textram[0x0e9a/2];
752762   sys16_fg_scrolly = sys16_textram[0x0e90/2];
r4679r4680
773783      sys18_bg2_active=0;
774784}
775785
776static MACHINE_RESET( mwalkbl ){
786static MACHINE_RESET( mwalkbl )
787{
777788   static const sys16_patch patch[] =
778789   {
779790      { 0x70116, 0x4e },
r4679r4680
822833   sys16_update_proc = mwalkbl_update_proc;
823834}
824835
825static DRIVER_INIT( mwalkbl ){
836static DRIVER_INIT( mwalkbl )
837{
826838   UINT8 *RAM= memory_region(machine, "soundcpu");
827839   static const int mwalk_sound_info[] =
828840   {
r4679r4680
867879
868880/***************************************************************************/
869881
870static void astormbl_update_proc( void ){
882static void astormbl_update_proc( void )
883{
871884   UINT16 data;
872885   sys16_fg_scrollx = sys16_textram[0x0e98/2];
873886   sys16_bg_scrollx = sys16_textram[0x0e9a/2];
r4679r4680
914927      sys18_bg2_active=0;
915928}
916929
917static MACHINE_RESET( astormbl ){
930static MACHINE_RESET( astormbl )
931{
918932   static const sys16_patch patch[] =
919933   {
920934      { 0x02D6E, 0x32 },
r4679r4680
984998}
985999
9861000
987static DRIVER_INIT( astormbl ){
1001static DRIVER_INIT( astormbl )
1002{
9881003   UINT8 *RAM= memory_region(machine, "soundcpu");
9891004   static const int astormbl_sound_info[] =
9901005   {
r4679r4680
14641479GAME( 1990, mwalkbl,  mwalk,    mwalkbl,  mwalkbl,  mwalkbl,  ROT0, "bootleg", "Michael Jackson's Moonwalker (bootleg)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
14651480
14661481GAME( 1989, shdancbl, shdancer, shdancbl, mwalkbl,  shdancbl, ROT0, "bootleg", "Shadow Dancer (bootleg)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
1467
src/mame/drivers/taitojc.c
r4679r4680
775775      {
776776         if (!first_dsp_reset)
777777         {
778            cpu_set_input_line(space->machine->cpu[3], INPUT_LINE_RESET, CLEAR_LINE);
778            cputag_set_input_line(space->machine, "dsp", INPUT_LINE_RESET, CLEAR_LINE);
779779         }
780780         first_dsp_reset = 0;
781781      }
782782      else
783783      {
784         cpu_set_input_line(space->machine->cpu[3], INPUT_LINE_RESET, ASSERT_LINE);
784         cputag_set_input_line(space->machine, "dsp", INPUT_LINE_RESET, ASSERT_LINE);
785785      }
786786   }
787787}
r4679r4680
12801280   f3_68681_reset(machine);
12811281
12821282   // hold the TMS in reset until we have code
1283   cpu_set_input_line(machine->cpu[3], INPUT_LINE_RESET, ASSERT_LINE);
1283   cputag_set_input_line(machine, "dsp", INPUT_LINE_RESET, ASSERT_LINE);
12841284}
12851285
12861286static INTERRUPT_GEN( taitojc_vblank )
r4679r4680
13331333
13341334static DRIVER_INIT( taitojc )
13351335{
1336   f3_shared_ram = auto_malloc(0x800);
1336   f3_shared_ram = auto_alloc_array(machine, UINT32, 0x800/4);
13371337
1338   polygon_fifo = auto_malloc(POLYGON_FIFO_SIZE * sizeof(UINT16));
1338   polygon_fifo = auto_alloc_array(machine, UINT16, POLYGON_FIFO_SIZE);
13391339}
13401340
13411341ROM_START( sidebs )
src/mame/drivers/missb2.c
r4679r4680
336336static void irqhandler(const device_config *device, int irq)
337337{
338338   logerror("YM3526 firing an IRQ\n");
339//  cpu_set_input_line(device->machine->cpu[2],0,irq ? ASSERT_LINE : CLEAR_LINE);
339//  cputag_set_input_line(device->machine, "audiocpu", 0, irq ? ASSERT_LINE : CLEAR_LINE);
340340}
341341
342342static const ym3526_interface ym3526_config =
src/mame/drivers/pitnrun.c
r4679r4680
9191   flip_screen_y_set(space->machine, data);
9292}
9393
94static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 )
95   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
96   AM_RANGE(0x8000, 0x87ff) AM_READ(SMH_RAM)
97   AM_RANGE(0x8800, 0x8fff) AM_READ(pitnrun_videoram_r)
98   AM_RANGE(0x9000, 0x9fff) AM_READ(pitnrun_videoram2_r)
99   AM_RANGE(0xa000, 0xa0ff) AM_READ(SMH_RAM)
94static ADDRESS_MAP_START( pitnrun_map, ADDRESS_SPACE_PROGRAM, 8 )
95   AM_RANGE(0x0000, 0x7fff) AM_ROM
96   AM_RANGE(0x8000, 0x87ff) AM_RAM
97   AM_RANGE(0x8800, 0x8fff) AM_RAM_WRITE(pitnrun_videoram_w) AM_BASE(&videoram) AM_SIZE(&videoram_size)
98   AM_RANGE(0x9000, 0x9fff) AM_RAM_WRITE(pitnrun_videoram2_w) AM_BASE(&pitnrun_videoram2)
99   AM_RANGE(0xa000, 0xa0ff) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
100100   AM_RANGE(0xa800, 0xa800) AM_READ_PORT("SYSTEM")
101   AM_RANGE(0xb000, 0xb000) AM_READ_PORT("DSW")
102   AM_RANGE(0xb800, 0xb800) AM_READ_PORT("INPUTS")
103   AM_RANGE(0xd800, 0xd800) AM_READ(pitnrun_mcu_status_r)
104   AM_RANGE(0xd000, 0xd000) AM_READ(pitnrun_mcu_data_r)
105   AM_RANGE(0xf000, 0xf000) AM_READ(watchdog_reset_r)
106ADDRESS_MAP_END
107
108static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 )
109   AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM)
110   AM_RANGE(0x8000, 0x87ff) AM_WRITE(SMH_RAM)
111   AM_RANGE(0x8800, 0x8fff) AM_WRITE(pitnrun_videoram_w) AM_BASE(&videoram) AM_SIZE(&videoram_size)
112   AM_RANGE(0x9000, 0x9fff) AM_WRITE(pitnrun_videoram2_w) AM_BASE(&pitnrun_videoram2)
113   AM_RANGE(0xa000, 0xa0ff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
114101   AM_RANGE(0xa800, 0xa807) AM_WRITENOP /* Analog Sound */
115   AM_RANGE(0xb000, 0xb000) AM_WRITE(nmi_enable_w)
102   AM_RANGE(0xb000, 0xb000) AM_READ_PORT("DSW") AM_WRITE(nmi_enable_w)
116103   AM_RANGE(0xb001, 0xb001) AM_WRITE(pitnrun_color_select_w)
117104   AM_RANGE(0xb004, 0xb004) AM_WRITENOP/* COLOR SEL 2 - not used ?*/
118105   AM_RANGE(0xb005, 0xb005) AM_WRITE(pitnrun_char_bank_select)
119106   AM_RANGE(0xb006, 0xb006) AM_WRITE(pitnrun_hflip_w)
120107   AM_RANGE(0xb007, 0xb007) AM_WRITE(pitnrun_vflip_w)
121   AM_RANGE(0xb800, 0xb800) AM_WRITE(soundlatch_w)
108   AM_RANGE(0xb800, 0xb800) AM_READ_PORT("INPUTS") AM_WRITE(soundlatch_w)
122109   AM_RANGE(0xc800, 0xc801) AM_WRITE(pitnrun_scroll_w)
123110   AM_RANGE(0xc802, 0xc802) AM_WRITENOP/* VP(VF?)MCV - not used ?*/
124111   AM_RANGE(0xc804, 0xc804) AM_WRITE(pitnrun_mcu_data_w)
125112   AM_RANGE(0xc805, 0xc805) AM_WRITE(pitnrun_h_heed_w)
126113    AM_RANGE(0xc806, 0xc806) AM_WRITE(pitnrun_v_heed_w)
127114   AM_RANGE(0xc807, 0xc807) AM_WRITE(pitnrun_ha_w)
115   AM_RANGE(0xd800, 0xd800) AM_READ(pitnrun_mcu_status_r)
116   AM_RANGE(0xd000, 0xd000) AM_READ(pitnrun_mcu_data_r)
117   AM_RANGE(0xf000, 0xf000) AM_READ(watchdog_reset_r)
128118ADDRESS_MAP_END
129119
120static ADDRESS_MAP_START( pitnrun_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
121   AM_RANGE(0x0000, 0x2fff) AM_ROM
122   AM_RANGE(0x3800, 0x3bff) AM_RAM
123ADDRESS_MAP_END
130124
131static ADDRESS_MAP_START( sound_io_map, ADDRESS_SPACE_IO, 8 )
125static ADDRESS_MAP_START( pitnrun_sound_io_map, ADDRESS_SPACE_IO, 8 )
132126   ADDRESS_MAP_GLOBAL_MASK(0xff)
133127   AM_RANGE(0x00, 0x00) AM_WRITE(soundlatch_clear_w)
134128   AM_RANGE(0x8c, 0x8d) AM_DEVWRITE("ay2", ay8910_address_data_w)
r4679r4680
139133   AM_RANGE(0x98, 0x98) AM_WRITENOP
140134ADDRESS_MAP_END
141135
142static ADDRESS_MAP_START( sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
143   AM_RANGE(0x0000, 0x2fff) AM_READ(SMH_ROM)
144   AM_RANGE(0x3800, 0x3bff) AM_READ(SMH_RAM)
145ADDRESS_MAP_END
146
147static ADDRESS_MAP_START( sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
148   AM_RANGE(0x0000, 0x2fff) AM_WRITE(SMH_ROM)
149   AM_RANGE(0x3800, 0x3bff) AM_WRITE(SMH_RAM)
150ADDRESS_MAP_END
151
152
153static ADDRESS_MAP_START( mcu_readmem, ADDRESS_SPACE_PROGRAM, 8 )
136static ADDRESS_MAP_START( pitnrun_mcu_map, ADDRESS_SPACE_PROGRAM, 8 )
154137   ADDRESS_MAP_GLOBAL_MASK(0x7ff)
155   AM_RANGE(0x0000, 0x0000) AM_READ(pitnrun_68705_portA_r)
156   AM_RANGE(0x0001, 0x0001) AM_READ(pitnrun_68705_portB_r)
138   AM_RANGE(0x0000, 0x0000) AM_READWRITE(pitnrun_68705_portA_r,pitnrun_68705_portA_w)
139   AM_RANGE(0x0001, 0x0001) AM_READWRITE(pitnrun_68705_portB_r,pitnrun_68705_portB_w)
157140   AM_RANGE(0x0002, 0x0002) AM_READ(pitnrun_68705_portC_r)
158   AM_RANGE(0x0003, 0x007f) AM_READ(SMH_RAM)
159   AM_RANGE(0x0080, 0x07ff) AM_READ(SMH_ROM)
141   AM_RANGE(0x0003, 0x007f) AM_RAM
142   AM_RANGE(0x0080, 0x07ff) AM_ROM
160143ADDRESS_MAP_END
161144
162static ADDRESS_MAP_START( mcu_writemem, ADDRESS_SPACE_PROGRAM, 8 )
163   ADDRESS_MAP_GLOBAL_MASK(0x7ff)
164   AM_RANGE(0x0000, 0x0000) AM_WRITE(pitnrun_68705_portA_w)
165   AM_RANGE(0x0001, 0x0001) AM_WRITE(pitnrun_68705_portB_w)
166   AM_RANGE(0x0003, 0x007f) AM_WRITE(SMH_RAM)
167   AM_RANGE(0x0080, 0x07ff) AM_WRITE(SMH_ROM)
168ADDRESS_MAP_END
169145
170146static INPUT_PORTS_START( pitnrun )
171147   PORT_START("SYSTEM")
r4679r4680
254230
255231static MACHINE_DRIVER_START( pitnrun )
256232   MDRV_CPU_ADD("maincpu", Z80,XTAL_18_432MHz/6)       /* verified on pcb */
257   MDRV_CPU_PROGRAM_MAP(readmem,writemem)
233   MDRV_CPU_PROGRAM_MAP(pitnrun_map,0)
258234   MDRV_CPU_VBLANK_INT("screen", pitnrun_nmi_source)
259235
260236   MDRV_CPU_ADD("audiocpu", Z80, XTAL_5MHz/2)       /* verified on pcb */
261   MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem)
262   MDRV_CPU_IO_MAP(sound_io_map,0)
237   MDRV_CPU_PROGRAM_MAP(pitnrun_sound_map,0)
238   MDRV_CPU_IO_MAP(pitnrun_sound_io_map,0)
263239   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
264240
265241   MDRV_CPU_ADD("mcu", M68705,XTAL_18_432MHz/6)       /* verified on pcb */
266   MDRV_CPU_PROGRAM_MAP(mcu_readmem,mcu_writemem)
242   MDRV_CPU_PROGRAM_MAP(pitnrun_mcu_map,0)
267243
268244   MDRV_MACHINE_RESET(pitnrun)
269245
src/mame/drivers/ddealer.c
r4679r4680
627627
628628static DRIVER_INIT( ddealer )
629629{
630   memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xfe01c, 0xfe01d, 0, 0, ddealer_mcu_r );
630   memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xfe01c, 0xfe01d, 0, 0, ddealer_mcu_r );
631631}
632632
633633ROM_START( ddealer )
src/mame/drivers/berzerk.c
r4679r4680
160160
161161   /* set the IRQ line if enabled */
162162   if (irq_enabled)
163      cpu_set_input_line_and_vector(machine->cpu[0], 0, HOLD_LINE, 0xfc);
163      cputag_set_input_line_and_vector(machine, "maincpu", 0, HOLD_LINE, 0xfc);
164164
165165   /* set up for next interrupt */
166166   next_irq_number = (irq_number + 1) % IRQS_PER_FRAME;
r4679r4680
237237
238238   /* pulse the NMI line if enabled */
239239   if (nmi_enabled)
240      cpu_set_input_line(machine->cpu[0], INPUT_LINE_NMI, PULSE_LINE);
240      cputag_set_input_line(machine, "maincpu", INPUT_LINE_NMI, PULSE_LINE);
241241
242242   /* set up for next interrupt */
243243   next_nmi_number = (nmi_number + 1) % NMIS_PER_FRAME;
r4679r4680
533533
534534static SOUND_RESET(berzerk)
535535{
536   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO);
536   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_IO);
537537   /* clears the flip-flop controlling the volume and freq on the speech chip */
538538   berzerk_audio_w(space, 4, 0x40);
539539}
src/mame/drivers/tehkanwc.c
r4679r4680
113113static WRITE8_HANDLER( sub_cpu_halt_w )
114114{
115115   if (data)
116      cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_RESET, CLEAR_LINE);
116      cputag_set_input_line(space->machine, "sub", INPUT_LINE_RESET, CLEAR_LINE);
117117   else
118      cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_RESET, ASSERT_LINE);
118      cputag_set_input_line(space->machine, "sub", INPUT_LINE_RESET, ASSERT_LINE);
119119}
120120
121121
r4679r4680
158158
159159static WRITE8_HANDLER( sound_command_w )
160160{
161   soundlatch_w(space,offset,data);
162   cpu_set_input_line(space->machine->cpu[2],INPUT_LINE_NMI,PULSE_LINE);
161   soundlatch_w(space, offset, data);
162   cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
163163}
164164
165165static TIMER_CALLBACK( reset_callback )
166166{
167   cpu_set_input_line(machine->cpu[2], INPUT_LINE_RESET, PULSE_LINE);
167   cputag_set_input_line(machine, "audiocpu", INPUT_LINE_RESET, PULSE_LINE);
168168}
169169
170170static WRITE8_HANDLER( sound_answer_w )
171171{
172   soundlatch2_w(space,0,data);
172   soundlatch2_w(space, 0, data);
173173
174174   /* in Gridiron, the sound CPU goes in a tight loop after the self test, */
175175   /* probably waiting to be reset by a watchdog */
176   if (cpu_get_pc(space->cpu) == 0x08bc) timer_set(space->machine, ATTOTIME_IN_SEC(1), NULL,0,reset_callback);
176   if (cpu_get_pc(space->cpu) == 0x08bc) timer_set(space->machine, ATTOTIME_IN_SEC(1), NULL, 0, reset_callback);
177177}
178178
179179
src/mame/drivers/citycon.c
r4679r4680
3030
3131
3232
33static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 )
34   AM_RANGE(0x0000, 0x1fff) AM_READ(SMH_RAM)
35   AM_RANGE(0x3000, 0x3000) AM_READ(citycon_in_r)   /* player 1 & 2 inputs multiplexed */
36   AM_RANGE(0x3001, 0x3001) AM_READ_PORT("DSW1")
37   AM_RANGE(0x3002, 0x3002) AM_READ_PORT("DSW2")
38   AM_RANGE(0x3007, 0x3007) AM_READ(watchdog_reset_r)   /* ? */
39   AM_RANGE(0x4000, 0xffff) AM_READ(SMH_ROM)
40ADDRESS_MAP_END
41
42static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 )
43   AM_RANGE(0x0000, 0x0fff) AM_WRITE(SMH_RAM)
44   AM_RANGE(0x1000, 0x1fff) AM_WRITE(citycon_videoram_w) AM_BASE(&citycon_videoram)
33static ADDRESS_MAP_START( citycon_map, ADDRESS_SPACE_PROGRAM, 8 )
34   AM_RANGE(0x0000, 0x0fff) AM_RAM
35   AM_RANGE(0x1000, 0x1fff) AM_RAM_WRITE(citycon_videoram_w) AM_BASE(&citycon_videoram)
4536   AM_RANGE(0x2000, 0x20ff) AM_WRITE(citycon_linecolor_w) AM_BASE(&citycon_linecolor)
4637   AM_RANGE(0x2800, 0x28ff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
47   AM_RANGE(0x3000, 0x3000) AM_WRITE(citycon_background_w)
48   AM_RANGE(0x3001, 0x3001) AM_WRITE(soundlatch_w)
49   AM_RANGE(0x3002, 0x3002) AM_WRITE(soundlatch2_w)
38   AM_RANGE(0x3000, 0x3000) AM_READWRITE(citycon_in_r, citycon_background_w)   /* player 1 & 2 inputs multiplexed */
39   AM_RANGE(0x3001, 0x3001) AM_READ_PORT("DSW1") AM_WRITE(soundlatch_w)
40   AM_RANGE(0x3002, 0x3002) AM_READ_PORT("DSW2") AM_WRITE(soundlatch2_w)
5041   AM_RANGE(0x3004, 0x3005) AM_WRITE(SMH_RAM) AM_BASE(&citycon_scroll)
42   AM_RANGE(0x3007, 0x3007) AM_READ(watchdog_reset_r)   /* ? */
5143   AM_RANGE(0x3800, 0x3cff) AM_WRITE(paletteram_RRRRGGGGBBBBxxxx_be_w) AM_BASE(&paletteram)
52   AM_RANGE(0x4000, 0xffff) AM_WRITE(SMH_ROM)
44   AM_RANGE(0x4000, 0xffff) AM_ROM
5345ADDRESS_MAP_END
5446
55static ADDRESS_MAP_START( readmem_sound, ADDRESS_SPACE_PROGRAM, 8 )
56   AM_RANGE(0x0000, 0x0fff) AM_READ(SMH_RAM)
47static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 )
48   AM_RANGE(0x0000, 0x0fff) AM_RAM
49   AM_RANGE(0x4000, 0x4001) AM_DEVWRITE("ay", ay8910_address_data_w)
5750//  AM_RANGE(0x4002, 0x4002) AM_DEVREAD("ay", ay8910_r)  /* ?? */
58   AM_RANGE(0x6000, 0x6001) AM_DEVREAD("ym", ym2203_r)
59   AM_RANGE(0x8000, 0xffff) AM_READ(SMH_ROM)
51   AM_RANGE(0x6000, 0x6001) AM_DEVREADWRITE("ym", ym2203_r, ym2203_w)
52   AM_RANGE(0x8000, 0xffff) AM_ROM
6053ADDRESS_MAP_END
6154
62static ADDRESS_MAP_START( writemem_sound, ADDRESS_SPACE_PROGRAM, 8 )
63   AM_RANGE(0x0000, 0x0fff) AM_WRITE(SMH_RAM)
64   AM_RANGE(0x4000, 0x4001) AM_DEVWRITE("ay", ay8910_address_data_w)
65   AM_RANGE(0x6000, 0x6001) AM_DEVWRITE("ym", ym2203_w)
66   AM_RANGE(0x8000, 0xffff) AM_WRITE(SMH_ROM)
67ADDRESS_MAP_END
6855
6956
70
7157static INPUT_PORTS_START( citycon )
7258   PORT_START("P1")
7359   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY
r4679r4680
207193
208194   /* basic machine hardware */
209195   MDRV_CPU_ADD("maincpu", M6809, 2048000)        /* 2.048 MHz ??? */
210   MDRV_CPU_PROGRAM_MAP(readmem,writemem)
196   MDRV_CPU_PROGRAM_MAP(citycon_map,0)
211197   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
212198
213199   MDRV_CPU_ADD("audiocpu", M6809, 640000)       /* 0.640 MHz ??? */
214   MDRV_CPU_PROGRAM_MAP(readmem_sound,writemem_sound)
200   MDRV_CPU_PROGRAM_MAP(sound_map,0)
215201   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
216202
217203   /* video hardware */
src/mame/drivers/suprridr.c
r4679r4680
118118static TIMER_CALLBACK( delayed_sound_w )
119119{
120120   sound_data = param;
121   cpu_set_input_line(machine->cpu[1], 0, ASSERT_LINE);
121   cputag_set_input_line(machine, "audiocpu", 0, ASSERT_LINE);
122122}
123123
124124
r4679r4680
136136
137137static WRITE8_HANDLER( sound_irq_ack_w )
138138{
139   cpu_set_input_line(space->machine->cpu[1], 0, CLEAR_LINE);
139   cputag_set_input_line(space->machine, "audiocpu", 0, CLEAR_LINE);
140140}
141141
142142
src/mame/drivers/spy.c
r4679r4680
325325      }
326326      spy_collision();
327327//ZT
328      cpu_set_input_line(space->machine->cpu[0],M6809_FIRQ_LINE,HOLD_LINE);
328      cputag_set_input_line(space->machine, "maincpu", M6809_FIRQ_LINE, HOLD_LINE);
329329   }
330330
331331   old = data;
r4679r4680
334334
335335static WRITE8_HANDLER( spy_sh_irqtrigger_w )
336336{
337   cpu_set_input_line_and_vector(space->machine->cpu[1],0,HOLD_LINE,0xff);
337   cputag_set_input_line_and_vector(space->machine, "audiocpu", 0, HOLD_LINE, 0xff);
338338}
339339
340340static WRITE8_HANDLER( sound_bank_w )
r4679r4680
351351
352352
353353
354static ADDRESS_MAP_START( spy_readmem, ADDRESS_SPACE_PROGRAM, 8 )
355   AM_RANGE(0x0000, 0x07ff) AM_READ(spy_bankedram1_r)
356   AM_RANGE(0x0800, 0x1aff) AM_READ(SMH_RAM)
354static ADDRESS_MAP_START( spy_map, ADDRESS_SPACE_PROGRAM, 8 )
355   AM_RANGE(0x0000, 0x07ff) AM_READWRITE(spy_bankedram1_r,spy_bankedram1_w) AM_BASE(&ram)
356   AM_RANGE(0x0800, 0x1aff) AM_RAM
357   AM_RANGE(0x3f80, 0x3f80) AM_WRITE(bankswitch_w)
358   AM_RANGE(0x3f90, 0x3f90) AM_WRITE(spy_3f90_w)
359   AM_RANGE(0x3fa0, 0x3fa0) AM_WRITE(watchdog_reset_w)
360   AM_RANGE(0x3fb0, 0x3fb0) AM_WRITE(soundlatch_w)
361   AM_RANGE(0x3fc0, 0x3fc0) AM_WRITE(spy_sh_irqtrigger_w)
357362   AM_RANGE(0x3fd0, 0x3fd0) AM_READ_PORT("SYSTEM")
358363   AM_RANGE(0x3fd1, 0x3fd1) AM_READ_PORT("P1")
359364   AM_RANGE(0x3fd2, 0x3fd2) AM_READ_PORT("P2")
360365   AM_RANGE(0x3fd3, 0x3fd3) AM_READ_PORT("DSW1")
361366   AM_RANGE(0x3fe0, 0x3fe0) AM_READ_PORT("DSW2")
362   AM_RANGE(0x2000, 0x5fff) AM_READ(K052109_051960_r)
363   AM_RANGE(0x6000, 0x7fff) AM_READ(SMH_BANK1)
364   AM_RANGE(0x8000, 0xffff) AM_READ(SMH_ROM)
367   AM_RANGE(0x2000, 0x5fff) AM_READWRITE(K052109_051960_r,K052109_051960_w)
368   AM_RANGE(0x6000, 0x7fff) AM_ROMBANK(1)
369   AM_RANGE(0x8000, 0xffff) AM_ROM
365370ADDRESS_MAP_END
366371
367static ADDRESS_MAP_START( spy_writemem, ADDRESS_SPACE_PROGRAM, 8 )
368   AM_RANGE(0x0000, 0x07ff) AM_WRITE(spy_bankedram1_w) AM_BASE(&ram)
369   AM_RANGE(0x0800, 0x1aff) AM_WRITE(SMH_RAM)
370   AM_RANGE(0x3f80, 0x3f80) AM_WRITE(bankswitch_w)
371   AM_RANGE(0x3f90, 0x3f90) AM_WRITE(spy_3f90_w)
372   AM_RANGE(0x3fa0, 0x3fa0) AM_WRITE(watchdog_reset_w)
373   AM_RANGE(0x3fb0, 0x3fb0) AM_WRITE(soundlatch_w)
374   AM_RANGE(0x3fc0, 0x3fc0) AM_WRITE(spy_sh_irqtrigger_w)
375   AM_RANGE(0x2000, 0x5fff) AM_WRITE(K052109_051960_w)
376   AM_RANGE(0x6000, 0x7fff) AM_WRITE(SMH_ROM)
377   AM_RANGE(0x8000, 0xffff) AM_WRITE(SMH_ROM)
378ADDRESS_MAP_END
379
380static ADDRESS_MAP_START( spy_sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
381   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
382   AM_RANGE(0x8000, 0x87ff) AM_READ(SMH_RAM)
383   AM_RANGE(0xa000, 0xa00d) AM_DEVREAD("konami1", k007232_r)
384   AM_RANGE(0xb000, 0xb00d) AM_DEVREAD("konami2", k007232_r)
385   AM_RANGE(0xc000, 0xc001) AM_DEVREAD("ym", ym3812_r)
372static ADDRESS_MAP_START( spy_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
373   AM_RANGE(0x0000, 0x7fff) AM_ROM
374   AM_RANGE(0x8000, 0x87ff) AM_RAM
375   AM_RANGE(0x9000, 0x9000) AM_WRITE(sound_bank_w)
376   AM_RANGE(0xa000, 0xa00d) AM_DEVREADWRITE("konami1", k007232_r,k007232_w)
377   AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE("konami2", k007232_r,k007232_w)
378   AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ym", ym3812_r,ym3812_w)
386379   AM_RANGE(0xd000, 0xd000) AM_READ(soundlatch_r)
387380ADDRESS_MAP_END
388381
389static ADDRESS_MAP_START( spy_sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
390   AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM)
391   AM_RANGE(0x8000, 0x87ff) AM_WRITE(SMH_RAM)
392   AM_RANGE(0x9000, 0x9000) AM_WRITE(sound_bank_w)
393   AM_RANGE(0xa000, 0xa00d) AM_DEVWRITE("konami1", k007232_w)
394   AM_RANGE(0xb000, 0xb00d) AM_DEVWRITE("konami2", k007232_w)
395   AM_RANGE(0xc000, 0xc001) AM_DEVWRITE("ym", ym3812_w)
396ADDRESS_MAP_END
397382
398
399
400383static INPUT_PORTS_START( spy )
401384   PORT_START("P1")
402385   KONAMI8_ALT_B21(1)   /* button 3 unused */
r4679r4680
475458
476459static void irqhandler(const device_config *device, int linestate)
477460{
478   cpu_set_input_line(device->machine->cpu[1], INPUT_LINE_NMI, linestate);
461   cputag_set_input_line(device->machine, "audiocpu", INPUT_LINE_NMI, linestate);
479462}
480463
481464static const ym3812_interface ym3812_config =
r4679r4680
489472
490473   /* basic machine hardware */
491474   MDRV_CPU_ADD("maincpu", M6809, 3000000) /* ? */
492   MDRV_CPU_PROGRAM_MAP(spy_readmem,spy_writemem)
475   MDRV_CPU_PROGRAM_MAP(spy_map,0)
493476   MDRV_CPU_VBLANK_INT("screen", spy_interrupt)
494477
495478   MDRV_CPU_ADD("audiocpu", Z80, 3579545)
496   MDRV_CPU_PROGRAM_MAP(spy_sound_readmem,spy_sound_writemem)
479   MDRV_CPU_PROGRAM_MAP(spy_sound_map,0)
497480                        /* nmi by the sound chip */
498481
499482   /* video hardware */
src/mame/drivers/psikyo.c
r4679r4680
172172static TIMER_CALLBACK( psikyo_soundlatch_callback )
173173{
174174   psikyo_soundlatch = param;
175   cpu_set_input_line(machine->cpu[1], INPUT_LINE_NMI, ASSERT_LINE);
175   cputag_set_input_line(machine, "audiocpu", INPUT_LINE_NMI, ASSERT_LINE);
176176   z80_nmi = 1;
177177}
178178
r4679r4680
211211};
212212
213213static UINT8 s1945_mcu_direction, s1945_mcu_latch1, s1945_mcu_latch2, s1945_mcu_inlatch, s1945_mcu_index;
214static UINT8 s1945_mcu_latching, s1945_mcu_mode, s1945_mcu_direction, s1945_mcu_control, s1945_mcu_bctrl;
214static UINT8 s1945_mcu_latching, s1945_mcu_mode, s1945_mcu_control, s1945_mcu_bctrl;
215215static const UINT8 *s1945_mcu_table;
216216
217217static void s1945_mcu_init(const UINT8 *mcu_table)
r4679r4680
343343      paletteram16_xRRRRRGGGGGBBBBB_word_w(space, offset*2+1, data, mem_mask);
344344}
345345
346static ADDRESS_MAP_START( psikyo_readmem, ADDRESS_SPACE_PROGRAM, 32 )
347   AM_RANGE(0x000000, 0x0fffff) AM_READ(SMH_ROM         )   // ROM (not all used)
348   AM_RANGE(0x400000, 0x401fff) AM_READ(SMH_RAM         )   // Sprites Data
349   AM_RANGE(0x600000, 0x601fff) AM_READ(SMH_RAM         )   // Palette
350   AM_RANGE(0x800000, 0x801fff) AM_READ(SMH_RAM         )   // Layer 0
351   AM_RANGE(0x802000, 0x803fff) AM_READ(SMH_RAM         )   // Layer 1
352   AM_RANGE(0x804000, 0x807fff) AM_READ(SMH_RAM         )   // RAM + Vregs
353//  AM_RANGE(0xc00000, 0xc0000b) AM_READ(psikyo_input_r )   Depends on board, see DRIVER_INIT
354   AM_RANGE(0xfe0000, 0xffffff) AM_READ(SMH_RAM         )   // RAM
346static ADDRESS_MAP_START( psikyo_map, ADDRESS_SPACE_PROGRAM, 32 )
347   AM_RANGE(0x000000, 0x0fffff) AM_ROM                                          // ROM (not all used)
348   AM_RANGE(0x400000, 0x401fff) AM_RAM AM_BASE(&spriteram32) AM_SIZE(&spriteram_size)      // Sprites, buffered by two frames (list buffered + fb buffered)
349   AM_RANGE(0x600000, 0x601fff) AM_RAM_WRITE(paletteram32_xRRRRRGGGGGBBBBB_dword_w) AM_BASE(&paletteram32)   // Palette
350   AM_RANGE(0x800000, 0x801fff) AM_RAM_WRITE(psikyo_vram_0_w) AM_BASE(&psikyo_vram_0)      // Layer 0
351   AM_RANGE(0x802000, 0x803fff) AM_RAM_WRITE(psikyo_vram_1_w) AM_BASE(&psikyo_vram_1)      // Layer 1
352   AM_RANGE(0x804000, 0x807fff) AM_RAM AM_BASE(&psikyo_vregs)                        // RAM + Vregs
353//  AM_RANGE(0xc00000, 0xc0000b) AM_READ(psikyo_input_r)                                    // Depends on board, see DRIVER_INIT
354//  AM_RANGE(0xc00004, 0xc0000b) AM_WRITE(s1945_mcu_w)                                      // MCU on sh404, see DRIVER_INIT
355//  AM_RANGE(0xc00010, 0xc00013) AM_WRITE(psikyo_soundlatch_w)                              // Depends on board, see DRIVER_INIT
356   AM_RANGE(0xfe0000, 0xffffff) AM_RAM                                          // RAM
355357ADDRESS_MAP_END
356358
357static ADDRESS_MAP_START( psikyo_writemem, ADDRESS_SPACE_PROGRAM, 32 )
358   AM_RANGE(0x000000, 0x0fffff) AM_WRITE(SMH_ROM                     )   // ROM (not all used)
359   AM_RANGE(0x400000, 0x401fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram32) AM_SIZE(&spriteram_size)   // Sprites, buffered by two frames (list buffered + fb buffered)
360   AM_RANGE(0x600000, 0x601fff) AM_WRITE(paletteram32_xRRRRRGGGGGBBBBB_dword_w) AM_BASE(&paletteram32   )   // Palette
361   AM_RANGE(0x800000, 0x801fff) AM_WRITE(psikyo_vram_0_w) AM_BASE(&psikyo_vram_0   )   // Layer 0
362   AM_RANGE(0x802000, 0x803fff) AM_WRITE(psikyo_vram_1_w) AM_BASE(&psikyo_vram_1   )   // Layer 1
363   AM_RANGE(0x804000, 0x807fff) AM_WRITE(SMH_RAM) AM_BASE(&psikyo_vregs         )   // RAM + Vregs
364//  AM_RANGE(0xc00004, 0xc0000b) AM_WRITE(s1945_mcu_w                       )   MCU on sh404, see DRIVER_INIT
365//  AM_RANGE(0xc00010, 0xc00013) AM_WRITE(psikyo_soundlatch_w               )   Depends on board, see DRIVER_INIT
366   AM_RANGE(0xfe0000, 0xffffff) AM_WRITE(SMH_RAM                     )   // RAM
367ADDRESS_MAP_END
368359
369
370
371360/***************************************************************************
372361
373362
r4679r4680
378367
379368static void sound_irq( const device_config *device, int irq )
380369{
381   cpu_set_input_line(device->machine->cpu[1],0,irq ? ASSERT_LINE : CLEAR_LINE);
370   cputag_set_input_line(device->machine, "audiocpu", 0, irq ? ASSERT_LINE : CLEAR_LINE);
382371}
383372
384373static READ8_HANDLER( psikyo_soundlatch_r )
r4679r4680
388377
389378static WRITE8_HANDLER( psikyo_clear_nmi_w )
390379{
391   cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_NMI, CLEAR_LINE);
380   cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, CLEAR_LINE);
392381   z80_nmi = 0;
393382}
394383
r4679r4680
404393   memory_set_bankptr(space->machine, 1, &RAM[bank * 0x8000 + 0x10000]);
405394}
406395
407static ADDRESS_MAP_START( sngkace_sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
408   AM_RANGE(0x0000, 0x77ff) AM_READ(SMH_ROM      )   // ROM
409   AM_RANGE(0x7800, 0x7fff) AM_READ(SMH_RAM      )   // RAM
410   AM_RANGE(0x8000, 0xffff) AM_READ(SMH_BANK1      )   // Banked ROM
396static ADDRESS_MAP_START( sngkace_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
397   AM_RANGE(0x0000, 0x77ff) AM_ROM                     // ROM
398   AM_RANGE(0x7800, 0x7fff) AM_RAM                     // RAM
399   AM_RANGE(0x8000, 0xffff) AM_ROMBANK(1)               // Banked ROM
411400ADDRESS_MAP_END
412401
413static ADDRESS_MAP_START( sngkace_sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
414   AM_RANGE(0x0000, 0x77ff) AM_WRITE(SMH_ROM      )   // ROM
415   AM_RANGE(0x7800, 0x7fff) AM_WRITE(SMH_RAM      )   // RAM
416   AM_RANGE(0x8000, 0xffff) AM_WRITE(SMH_ROM      )   // Banked ROM
417ADDRESS_MAP_END
418
419402static ADDRESS_MAP_START( sngkace_sound_io_map, ADDRESS_SPACE_IO, 8 )
420403   ADDRESS_MAP_GLOBAL_MASK(0xff)
421   AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ym", ym2610_r, ym2610_w               )
422   AM_RANGE(0x04, 0x04) AM_WRITE(sngkace_sound_bankswitch_w                        )
423   AM_RANGE(0x08, 0x08) AM_READ(psikyo_soundlatch_r                              )
424   AM_RANGE(0x0c, 0x0c) AM_WRITE(psikyo_clear_nmi_w                              )
404   AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ym", ym2610_r, ym2610_w)
405   AM_RANGE(0x04, 0x04) AM_WRITE(sngkace_sound_bankswitch_w)
406   AM_RANGE(0x08, 0x08) AM_READ(psikyo_soundlatch_r)
407   AM_RANGE(0x0c, 0x0c) AM_WRITE(psikyo_clear_nmi_w)
425408ADDRESS_MAP_END
426409
410
427411/***************************************************************************
428412                                Gun Bird
429413***************************************************************************/
r4679r4680
439423   memory_set_bankptr(space->machine, 1, &RAM[bank * 0x8000 + 0x10000 + 0x200]);
440424}
441425
442static ADDRESS_MAP_START( gunbird_sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
443   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM      )   // ROM
444   AM_RANGE(0x8000, 0x81ff) AM_READ(SMH_RAM      )   // RAM
445   AM_RANGE(0x8200, 0xffff) AM_READ(SMH_BANK1      )   // Banked ROM
426static ADDRESS_MAP_START( gunbird_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
427   AM_RANGE(0x0000, 0x7fff) AM_ROM                     // ROM
428   AM_RANGE(0x8000, 0x81ff) AM_RAM                     // RAM
429   AM_RANGE(0x8200, 0xffff) AM_ROMBANK(1)               // Banked ROM
446430ADDRESS_MAP_END
447431
448static ADDRESS_MAP_START( gunbird_sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
449   AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM      )   // ROM
450   AM_RANGE(0x8000, 0x81ff) AM_WRITE(SMH_RAM      )   // RAM
451   AM_RANGE(0x8200, 0xffff) AM_WRITE(SMH_ROM      )   // Banked ROM
452ADDRESS_MAP_END
453
454432static ADDRESS_MAP_START( gunbird_sound_io_map, ADDRESS_SPACE_IO, 8 )
455433   ADDRESS_MAP_GLOBAL_MASK(0xff)
456   AM_RANGE(0x00, 0x00) AM_WRITE(gunbird_sound_bankswitch_w                        )
457   AM_RANGE(0x04, 0x07) AM_DEVREADWRITE("ym", ym2610_r, ym2610_w               )
458   AM_RANGE(0x08, 0x08) AM_READ(psikyo_soundlatch_r                              )
459   AM_RANGE(0x0c, 0x0c) AM_WRITE(psikyo_clear_nmi_w                              )
434   AM_RANGE(0x00, 0x00) AM_WRITE(gunbird_sound_bankswitch_w)
435   AM_RANGE(0x04, 0x07) AM_DEVREADWRITE("ym", ym2610_r, ym2610_w)
436   AM_RANGE(0x08, 0x08) AM_READ(psikyo_soundlatch_r)
437   AM_RANGE(0x0c, 0x0c) AM_WRITE(psikyo_clear_nmi_w)
460438ADDRESS_MAP_END
461439
462440/***************************************************************************
r4679r4680
465443
466444static ADDRESS_MAP_START( s1945_sound_io_map, ADDRESS_SPACE_IO, 8 )
467445   ADDRESS_MAP_GLOBAL_MASK(0xff)
468   AM_RANGE(0x00, 0x00) AM_WRITE(gunbird_sound_bankswitch_w                        )
469   AM_RANGE(0x02, 0x03) AM_WRITE(SMH_NOP                                       )
470   AM_RANGE(0x08, 0x0d) AM_DEVREADWRITE("ymf", ymf278b_r, ymf278b_w               )
471   AM_RANGE(0x10, 0x10) AM_READ(psikyo_soundlatch_r                              )
472   AM_RANGE(0x18, 0x18) AM_WRITE(psikyo_clear_nmi_w                              )
446   AM_RANGE(0x00, 0x00) AM_WRITE(gunbird_sound_bankswitch_w)
447   AM_RANGE(0x02, 0x03) AM_WRITENOP
448   AM_RANGE(0x08, 0x0d) AM_DEVREADWRITE("ymf", ymf278b_r, ymf278b_w)
449   AM_RANGE(0x10, 0x10) AM_READ(psikyo_soundlatch_r)
450   AM_RANGE(0x18, 0x18) AM_WRITE(psikyo_clear_nmi_w)
473451ADDRESS_MAP_END
474452
475453/***************************************************************************
r4679r4680
12071185
12081186   /* basic machine hardware */
12091187   MDRV_CPU_ADD("maincpu", M68EC020, 16000000)
1210   MDRV_CPU_PROGRAM_MAP(psikyo_readmem,psikyo_writemem)
1188   MDRV_CPU_PROGRAM_MAP(psikyo_map,0)
12111189   MDRV_CPU_VBLANK_INT("screen", irq1_line_hold)
12121190
12131191   MDRV_CPU_ADD("audiocpu", Z80, 4000000)   /* ? */
1214   MDRV_CPU_PROGRAM_MAP(sngkace_sound_readmem,sngkace_sound_writemem)
1192   MDRV_CPU_PROGRAM_MAP(sngkace_sound_map,0)
12151193   MDRV_CPU_IO_MAP(sngkace_sound_io_map,0)
12161194
12171195   MDRV_MACHINE_RESET(psikyo)
r4679r4680
12581236
12591237   /* basic machine hardware */
12601238   MDRV_CPU_ADD("maincpu", M68EC020, 16000000)
1261   MDRV_CPU_PROGRAM_MAP(psikyo_readmem,psikyo_writemem)
1239   MDRV_CPU_PROGRAM_MAP(psikyo_map,0)
12621240   MDRV_CPU_VBLANK_INT("screen", irq1_line_hold)
12631241
12641242   MDRV_CPU_ADD("audiocpu", Z80, 4000000)   /* ! LZ8420M (Z80 core) ! */
1265   MDRV_CPU_PROGRAM_MAP(gunbird_sound_readmem,gunbird_sound_writemem)
1243   MDRV_CPU_PROGRAM_MAP(gunbird_sound_map,0)
12661244   MDRV_CPU_IO_MAP(gunbird_sound_io_map,0)
12671245
12681246   MDRV_MACHINE_RESET(psikyo)
r4679r4680
13041282static void irqhandler(const device_config *device, int linestate)
13051283{
13061284   if (linestate)
1307      cpu_set_input_line(device->machine->cpu[1], 0, ASSERT_LINE);
1285      cputag_set_input_line(device->machine, "audiocpu", 0, ASSERT_LINE);
13081286   else
1309      cpu_set_input_line(device->machine->cpu[1], 0, CLEAR_LINE);
1287      cputag_set_input_line(device->machine, "audiocpu", 0, CLEAR_LINE);
13101288}
13111289
13121290static const ymf278b_interface ymf278b_config =
r4679r4680
13181296
13191297   /* basic machine hardware */
13201298   MDRV_CPU_ADD("maincpu", M68EC020, 16000000)
1321   MDRV_CPU_PROGRAM_MAP(psikyo_readmem,psikyo_writemem)
1299   MDRV_CPU_PROGRAM_MAP(psikyo_map,0)
13221300   MDRV_CPU_VBLANK_INT("screen", irq1_line_hold)
13231301
13241302   MDRV_CPU_ADD("audiocpu", Z80, 4000000)   /* ! LZ8420M (Z80 core) ! */
1325   MDRV_CPU_PROGRAM_MAP(gunbird_sound_readmem,gunbird_sound_writemem)
1303   MDRV_CPU_PROGRAM_MAP(gunbird_sound_map,0)
13261304   MDRV_CPU_IO_MAP(s1945_sound_io_map,0)
13271305
13281306   /* MCU should go here */
r4679r4680
14391417      int i;
14401418
14411419      /* Bit 6&7 of the samples are swapped. Naughty, naughty... */
1442      for (i=0;i<len;i++)
1420      for (i = 0; i < len; i++)
14431421      {
14441422         int x = RAM[i];
14451423         RAM[i] = ((x & 0x40) << 1) | ((x & 0x80) >> 1) | (x & 0x3f);
r4679r4680
14471425   }
14481426
14491427   /* input ports */
1450   memory_install_read32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xc00000, 0xc0000b, 0, 0, sngkace_input_r);
1428   memory_install_read32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xc00000, 0xc0000b, 0, 0, sngkace_input_r);
14511429
14521430   /* sound latch */
1453   memory_install_write32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xc00010, 0xc00013, 0, 0, psikyo_soundlatch_w);
1431   memory_install_write32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xc00010, 0xc00013, 0, 0, psikyo_soundlatch_w);
14541432
14551433   psikyo_ka302c_banking = 0; // SH201B doesn't have any gfx banking
14561434   psikyo_switch_banks(0, 0); // sngkace / samuraia don't use banking
r4679r4680
16191597static DRIVER_INIT( gunbird )
16201598{
16211599   /* input ports */
1622   memory_install_read32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xc00000, 0xc0000b, 0, 0, gunbird_input_r);
1600   memory_install_read32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xc00000, 0xc0000b, 0, 0, gunbird_input_r);
16231601
16241602   /* sound latch */
1625   memory_install_write32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xc00010, 0xc00013, 0, 0, psikyo_soundlatch_w);
1603   memory_install_write32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xc00010, 0xc00013, 0, 0, psikyo_soundlatch_w);
16261604
16271605   psikyo_ka302c_banking = 1;
16281606}
r4679r4680
16771655static DRIVER_INIT( s1945jn )
16781656{
16791657   /* input ports */
1680   memory_install_read32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xc00000, 0xc0000b, 0, 0, gunbird_input_r);
1658   memory_install_read32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xc00000, 0xc0000b, 0, 0, gunbird_input_r);
16811659
16821660   /* sound latch */
1683   memory_install_write32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xc00010, 0xc00013, 0, 0, s1945_soundlatch_w);
1661   memory_install_write32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xc00010, 0xc00013, 0, 0, s1945_soundlatch_w);
16841662
16851663   psikyo_ka302c_banking = 1;
16861664}
r4679r4680
18841862static DRIVER_INIT( s1945 )
18851863{
18861864   /* input ports */
1887   memory_install_read32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xc00000, 0xc0000b, 0, 0, s1945_input_r);
1865   memory_install_read32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xc00000, 0xc0000b, 0, 0, s1945_input_r);
18881866
18891867   /* sound latch */
1890   memory_install_write32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xc00010, 0xc00013, 0, 0, s1945_soundlatch_w);
1868   memory_install_write32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xc00010, 0xc00013, 0, 0, s1945_soundlatch_w);
18911869
18921870   /* protection and tile bank switching */
1893   memory_install_write32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xc00004, 0xc0000b, 0, 0, s1945_mcu_w);
1871   memory_install_write32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xc00004, 0xc0000b, 0, 0, s1945_mcu_w);
18941872   s1945_mcu_init(s1945_table);
18951873
18961874   psikyo_ka302c_banking = 0; // Banking is controlled by mcu
r4679r4680
18991877static DRIVER_INIT( s1945a )
19001878{
19011879   /* input ports */
1902   memory_install_read32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xc00000, 0xc0000b, 0, 0, s1945_input_r);
1880   memory_install_read32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xc00000, 0xc0000b, 0, 0, s1945_input_r);
19031881
19041882   /* sound latch */
1905   memory_install_write32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xc00010, 0xc00013, 0, 0, s1945_soundlatch_w);
1883   memory_install_write32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xc00010, 0xc00013, 0, 0, s1945_soundlatch_w);
19061884
19071885   /* protection and tile bank switching */
1908   memory_install_write32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xc00004, 0xc0000b, 0, 0, s1945_mcu_w);
1886   memory_install_write32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xc00004, 0xc0000b, 0, 0, s1945_mcu_w);
19091887   s1945_mcu_init(s1945a_table);
19101888
19111889   psikyo_ka302c_banking = 0; // Banking is controlled by mcu
r4679r4680
19141892static DRIVER_INIT( s1945j )
19151893{
19161894   /* input ports*/
1917   memory_install_read32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xc00000, 0xc0000b, 0, 0, s1945_input_r);
1895   memory_install_read32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xc00000, 0xc0000b, 0, 0, s1945_input_r);
19181896
19191897   /* sound latch */
1920   memory_install_write32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xc00010, 0xc00013, 0, 0, s1945_soundlatch_w);
1898   memory_install_write32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xc00010, 0xc00013, 0, 0, s1945_soundlatch_w);
19211899
19221900   /* protection and tile bank switching */
1923   memory_install_write32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xc00004, 0xc0000b, 0, 0, s1945_mcu_w);
1901   memory_install_write32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xc00004, 0xc0000b, 0, 0, s1945_mcu_w);
19241902   s1945_mcu_init(s1945j_table);
19251903
19261904   psikyo_ka302c_banking = 0; // Banking is controlled by mcu
r4679r4680
20111989static DRIVER_INIT( tengai )
20121990{
20131991   /* input ports */
2014   memory_install_read32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xc00000, 0xc0000b, 0, 0, s1945_input_r);
1992   memory_install_read32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xc00000, 0xc0000b, 0, 0, s1945_input_r);
20151993
20161994   /* sound latch */
2017   memory_install_write32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xc00010, 0xc00013, 0, 0, s1945_soundlatch_w);
1995   memory_install_write32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xc00010, 0xc00013, 0, 0, s1945_soundlatch_w);
20181996
20191997   /* protection */
2020   memory_install_write32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xc00004, 0xc0000b, 0, 0, s1945_mcu_w);
1998   memory_install_write32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xc00004, 0xc0000b, 0, 0, s1945_mcu_w);
20211999   s1945_mcu_init(0);
20222000
20232001   psikyo_ka302c_banking = 0; // Banking is controlled by mcu
r4679r4680
20462024GAME( 1995, s1945k,   s1945,    s1945,    s1945j,   s1945,    ROT270, "Psikyo", "Strikers 1945 (Korea)", 0 )
20472025GAME( 1996, tengai,   0,        s1945,    tengai,   tengai,   ROT0,   "Psikyo", "Tengai (World)", 0 )
20482026GAME( 1996, tengaij,  tengai,   s1945,    tengaij,  tengai,   ROT0,   "Psikyo", "Sengoku Blade: Sengoku Ace Episode II / Tengai", 0 ) // Region dip - 0x0f=Japan, anything else=World
2049
src/mame/drivers/dacholer.c
r4679r4680
7070
7171static WRITE8_HANDLER(snd_w)
7272{
73   soundlatch_w(space,offset,data);
74   cpu_set_input_line(space->machine->cpu[1],INPUT_LINE_NMI,PULSE_LINE);
73   soundlatch_w(space, offset, data);
74   cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
7575}
7676
7777static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 8 )
r4679r4680
379379
380380static void adpcm_int(const device_config *device)
381381{
382   if(snd_interrupt_enable == 1 || (snd_interrupt_enable ==0 && msm_toggle==1))
382   if(snd_interrupt_enable == 1 || (snd_interrupt_enable == 0 && msm_toggle == 1))
383383   {
384      msm5205_data_w(device,msm_data >> 4);
385      msm_data<<=4;
386      msm_toggle^=1;
387      if (msm_toggle==0)
384      msm5205_data_w(device, msm_data >> 4);
385      msm_data <<= 4;
386      msm_toggle ^= 1;
387      if (msm_toggle == 0)
388388      {
389         cpu_set_input_line_and_vector(device->machine->cpu[1], 0, HOLD_LINE, 0x38);
389         cputag_set_input_line_and_vector(device->machine, "audiocpu", 0, HOLD_LINE, 0x38);
390390      }
391391   }
392392}
src/mame/drivers/esd16.c
r4679r4680
8383{
8484   if (ACCESSING_BITS_0_7)
8585   {
86      soundlatch_w(space,0,data & 0xff);
87      cpu_set_input_line(space->machine->cpu[1],0,ASSERT_LINE);      // Generate an IRQ
86      soundlatch_w(space, 0, data & 0xff);
87      cputag_set_input_line(space->machine, "audiocpu", 0, ASSERT_LINE);      // Generate an IRQ
8888      cpu_spinuntil_time(space->cpu, ATTOTIME_IN_USEC(50));   // Allow the other CPU to reply
8989   }
9090}
r4679r4680
9595 AFAIK)
9696*/
9797
98static ADDRESS_MAP_START( multchmp_readmem, ADDRESS_SPACE_PROGRAM, 16 )
99   AM_RANGE(0x000000, 0x07ffff) AM_READ(SMH_ROM            )   // ROM
100   AM_RANGE(0x100000, 0x10ffff) AM_READ(SMH_RAM            )   // RAM
101   AM_RANGE(0x200000, 0x2005ff) AM_READ(SMH_RAM            )   // Palette
102/**/AM_RANGE(0x300000, 0x3007ff) AM_READ(SMH_RAM            )   // Sprites
103/**/AM_RANGE(0x400000, 0x403fff) AM_READ(SMH_RAM            )   // Layers
104/**/AM_RANGE(0x420000, 0x423fff) AM_READ(SMH_RAM            )   //
105/**/AM_RANGE(0x500000, 0x500003) AM_READ(SMH_RAM            )   // Scroll
106/**/AM_RANGE(0x500004, 0x500007) AM_READ(SMH_RAM            )   //
107/**/AM_RANGE(0x500008, 0x50000b) AM_READ(SMH_RAM            )   //
108/**/AM_RANGE(0x50000c, 0x50000f) AM_READ(SMH_RAM            )   //
98static ADDRESS_MAP_START( multchmp_map, ADDRESS_SPACE_PROGRAM, 16 )
99   AM_RANGE(0x000000, 0x07ffff) AM_ROM                                                      // ROM
100   AM_RANGE(0x100000, 0x10ffff) AM_RAM                                                      // RAM
101   AM_RANGE(0x200000, 0x2005ff) AM_RAM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE(&paletteram16)   // Palette
102/**/AM_RANGE(0x300000, 0x3007ff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)                  // Sprites
103   AM_RANGE(0x300800, 0x300807) AM_WRITE(esd16_spriteram_w)                                    // Sprites (Mirrored)
104/**/AM_RANGE(0x400000, 0x403fff) AM_RAM_WRITE(esd16_vram_0_w) AM_BASE(&esd16_vram_0)                  // Layers
105/**/AM_RANGE(0x420000, 0x423fff) AM_RAM_WRITE(esd16_vram_1_w) AM_BASE(&esd16_vram_1)                  //
106/**/AM_RANGE(0x500000, 0x500003) AM_RAM AM_BASE(&esd16_scroll_0)                                 // Scroll
107/**/AM_RANGE(0x500004, 0x500007) AM_RAM AM_BASE(&esd16_scroll_1)                                 //
108/**/AM_RANGE(0x500008, 0x50000b) AM_RAM                                                      //
109/**/AM_RANGE(0x50000c, 0x50000f) AM_RAM                                                      //
110   AM_RANGE(0x600000, 0x600001) AM_WRITE(SMH_NOP)                                             // IRQ Ack
109111   AM_RANGE(0x600002, 0x600003) AM_READ_PORT("P1_P2")
110112   AM_RANGE(0x600004, 0x600005) AM_READ_PORT("SYSTEM")
111113   AM_RANGE(0x600006, 0x600007) AM_READ_PORT("DSW")
112   AM_RANGE(0x700008, 0x70000b) AM_READ(SMH_NOP            )   // ? Only read once
114   AM_RANGE(0x600008, 0x600009) AM_WRITE(esd16_tilemap0_color_w)                                 // Flip Screen + Tileamp0 palette banking
115   AM_RANGE(0x60000a, 0x60000b) AM_WRITE(SMH_NOP)                                             // ? 2
116   AM_RANGE(0x60000c, 0x60000d) AM_WRITE(esd16_sound_command_w)                                 // To Sound CPU
117   AM_RANGE(0x700008, 0x70000b) AM_READ(SMH_NOP)                                             // ? Only read once
113118ADDRESS_MAP_END
114119
115static ADDRESS_MAP_START( multchmp_writemem, ADDRESS_SPACE_PROGRAM, 16 )
116   AM_RANGE(0x000000, 0x07ffff) AM_WRITE(SMH_ROM                  )   // ROM
117   AM_RANGE(0x100000, 0x10ffff) AM_WRITE(SMH_RAM                  )   // RAM
118   AM_RANGE(0x200000, 0x2005ff) AM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE(&paletteram16   )   // Palette
119   AM_RANGE(0x300000, 0x3007ff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size   )   // Sprites
120   AM_RANGE(0x300800, 0x300807) AM_WRITE(esd16_spriteram_w            )   // Sprites (Mirrored)
121   AM_RANGE(0x400000, 0x403fff) AM_WRITE(esd16_vram_0_w) AM_BASE(&esd16_vram_0   )   // Layers
122   AM_RANGE(0x420000, 0x423fff) AM_WRITE(esd16_vram_1_w) AM_BASE(&esd16_vram_1   )   // Scroll
123   AM_RANGE(0x500000, 0x500003) AM_WRITE(SMH_RAM) AM_BASE(&esd16_scroll_0   )   //
124   AM_RANGE(0x500004, 0x500007) AM_WRITE(SMH_RAM) AM_BASE(&esd16_scroll_1   )   //
125   AM_RANGE(0x500008, 0x50000b) AM_WRITE(SMH_RAM                  )   // ? 0
126   AM_RANGE(0x50000c, 0x50000f) AM_WRITE(SMH_RAM                  )   // ? 0
127   AM_RANGE(0x600000, 0x600001) AM_WRITE(SMH_NOP                  )   // IRQ Ack
128   AM_RANGE(0x600008, 0x600009) AM_WRITE(esd16_tilemap0_color_w      )   // Flip Screen + Tileamp0 palette banking
129   AM_RANGE(0x60000a, 0x60000b) AM_WRITE(SMH_NOP                  )   // ? 2
130   AM_RANGE(0x60000c, 0x60000d) AM_WRITE(esd16_sound_command_w         )   // To Sound CPU
131ADDRESS_MAP_END
132
133120static WRITE16_HANDLER(hedpanic_platform_w)
134121{
135122   int offsets = headpanic_platform_x[0]+0x40* headpanic_platform_y[0];
r4679r4680
168155//  logerror("(0x%06x) Unk EEPROM write: %04x %04x\n", cpu_get_pc(space->cpu), data, mem_mask);
169156}
170157
171static ADDRESS_MAP_START( hedpanic_readmem, ADDRESS_SPACE_PROGRAM, 16 )
172   AM_RANGE(0x000000, 0x07ffff) AM_READ(SMH_ROM            )   // ROM
173   AM_RANGE(0x100000, 0x10ffff) AM_READ(SMH_RAM)
174   AM_RANGE(0x800000, 0x800fff) AM_READ(SMH_RAM)
175   AM_RANGE(0xc00002, 0xc00003) AM_READ_PORT("P1_P2")
176   AM_RANGE(0xc00004, 0xc00005) AM_READ_PORT("SYSTEM")
177   AM_RANGE(0xc00006, 0xc00007) AM_READ(esd_eeprom_r   )
178ADDRESS_MAP_END
179
180static ADDRESS_MAP_START( hedpanic_writemem, ADDRESS_SPACE_PROGRAM, 16 )
181   AM_RANGE(0x000000, 0x07ffff) AM_WRITE(SMH_ROM                  )   // ROM
182   AM_RANGE(0x100000, 0x10ffff) AM_WRITE(SMH_RAM)
183   AM_RANGE(0x800000, 0x800fff) AM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE(&paletteram16)
184   AM_RANGE(0x900000, 0x9007ff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size   )   // Sprites
185   AM_RANGE(0x900800, 0x900807) AM_WRITE(esd16_spriteram_w            )   // Sprites (Mirrored)
186   AM_RANGE(0xa00000, 0xa03fff) AM_WRITE(esd16_vram_0_w) AM_BASE(&esd16_vram_0   )   // Layers
187   AM_RANGE(0xa20000, 0xa23fff) AM_WRITE(esd16_vram_1_w) AM_BASE(&esd16_vram_1   )   //
188   AM_RANGE(0xa24000, 0xa27fff) AM_WRITE(esd16_vram_1_w) AM_BASE(&esd16_vram_1   )   // mirror?
189   AM_RANGE(0xb00000, 0xb00003) AM_WRITE(SMH_RAM) AM_BASE(&esd16_scroll_0   )   // Scroll
190   AM_RANGE(0xb00004, 0xb00007) AM_WRITE(SMH_RAM) AM_BASE(&esd16_scroll_1   )   //
158static ADDRESS_MAP_START( hedpanic_map, ADDRESS_SPACE_PROGRAM, 16 )
159   AM_RANGE(0x000000, 0x07ffff) AM_ROM                                                      // ROM
160   AM_RANGE(0x100000, 0x10ffff) AM_RAM                                                      // RAM
161   AM_RANGE(0x800000, 0x800fff) AM_RAM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE(&paletteram16)   // Palette
162   AM_RANGE(0x900000, 0x9007ff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)         // Sprites
163   AM_RANGE(0x900800, 0x900807) AM_WRITE(esd16_spriteram_w)                                    // Sprites (Mirrored)
164   AM_RANGE(0xa00000, 0xa03fff) AM_WRITE(esd16_vram_0_w) AM_BASE(&esd16_vram_0)                     // Layers
165   AM_RANGE(0xa20000, 0xa23fff) AM_WRITE(esd16_vram_1_w) AM_BASE(&esd16_vram_1)                     //
166   AM_RANGE(0xa24000, 0xa27fff) AM_WRITE(esd16_vram_1_w) AM_BASE(&esd16_vram_1)                     // mirror?
167   AM_RANGE(0xb00000, 0xb00003) AM_WRITE(SMH_RAM) AM_BASE(&esd16_scroll_0)                           // Scroll
168   AM_RANGE(0xb00004, 0xb00007) AM_WRITE(SMH_RAM) AM_BASE(&esd16_scroll_1)                           //
191169   AM_RANGE(0xb00008, 0xb00009) AM_WRITE(SMH_RAM) AM_BASE(&headpanic_platform_x)
192170   AM_RANGE(0xb0000a, 0xb0000b) AM_WRITE(SMH_RAM) AM_BASE(&headpanic_platform_y)
193   AM_RANGE(0xb0000c, 0xb0000d) AM_WRITENOP // ??
194   AM_RANGE(0xb0000e, 0xb0000f) AM_WRITE(SMH_RAM) AM_BASE(&head_layersize) // ??
171   AM_RANGE(0xb0000c, 0xb0000d) AM_WRITENOP                                                 // ??
172   AM_RANGE(0xb0000e, 0xb0000f) AM_WRITE(SMH_RAM) AM_BASE(&head_layersize)                         // ??
195173   AM_RANGE(0xc00000, 0xc00001) AM_WRITENOP // IRQ Ack
174   AM_RANGE(0xc00002, 0xc00003) AM_READ_PORT("P1_P2")
175   AM_RANGE(0xc00004, 0xc00005) AM_READ_PORT("SYSTEM")
176   AM_RANGE(0xc00006, 0xc00007) AM_READ(esd_eeprom_r   )
196177   AM_RANGE(0xc00008, 0xc00009) AM_WRITE(esd16_tilemap0_color_w)   // Flip Screen + Tileamp0 palette banking
197178   AM_RANGE(0xc0000a, 0xc0000b) AM_WRITENOP   // ? 2 not checked
198179   AM_RANGE(0xc0000c, 0xc0000d) AM_WRITE(esd16_sound_command_w         )   // To Sound CPU // ok
r4679r4680
202183
203184/* Multi Champ Deluxe, like Head Panic but different addresses */
204185
205static ADDRESS_MAP_START( mchampdx_readmem, ADDRESS_SPACE_PROGRAM, 16 )
206   AM_RANGE(0x000000, 0x07ffff) AM_READ(SMH_ROM            )   // ROM
207   AM_RANGE(0x200000, 0x20ffff) AM_READ(SMH_RAM)
208   AM_RANGE(0x400000, 0x400fff) AM_READ(SMH_RAM)
186static ADDRESS_MAP_START( mchampdx_map, ADDRESS_SPACE_PROGRAM, 16 )
187   AM_RANGE(0x000000, 0x07ffff) AM_ROM                                                      // ROM
188   AM_RANGE(0x200000, 0x20ffff) AM_RAM                                                      // RAM
189   AM_RANGE(0x300000, 0x303fff) AM_WRITE(esd16_vram_0_w) AM_BASE(&esd16_vram_0)                     // Layers
190   AM_RANGE(0x320000, 0x323fff) AM_WRITE(esd16_vram_1_w) AM_BASE(&esd16_vram_1)                     //
191   AM_RANGE(0x324000, 0x327fff) AM_WRITE(esd16_vram_1_w) AM_BASE(&esd16_vram_1)                     // mirror?
192   AM_RANGE(0x400000, 0x400fff) AM_RAM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE(&paletteram16)   // Palette
193    AM_RANGE(0x500000, 0x500001) AM_WRITENOP   // IRQ Ack
209194   AM_RANGE(0x500002, 0x500003) AM_READ_PORT("P1_P2")
210195   AM_RANGE(0x500004, 0x500005) AM_READ_PORT("SYSTEM")
211   AM_RANGE(0x500006, 0x500007) AM_READ(esd_eeprom_r   )
212ADDRESS_MAP_END
213
214static ADDRESS_MAP_START( mchampdx_writemem, ADDRESS_SPACE_PROGRAM, 16 )
215   AM_RANGE(0x000000, 0x07ffff) AM_WRITE(SMH_ROM                  )   // ROM
216   AM_RANGE(0x200000, 0x20ffff) AM_WRITE(SMH_RAM)
217   AM_RANGE(0x300000, 0x303fff) AM_WRITE(esd16_vram_0_w) AM_BASE(&esd16_vram_0   )   // Layers
218   AM_RANGE(0x320000, 0x323fff) AM_WRITE(esd16_vram_1_w) AM_BASE(&esd16_vram_1   )   //
219   AM_RANGE(0x324000, 0x327fff) AM_WRITE(esd16_vram_1_w) AM_BASE(&esd16_vram_1   )   // mirror?
220   AM_RANGE(0x400000, 0x400fff) AM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE(&paletteram16)
221    AM_RANGE(0x500000, 0x500001) AM_WRITENOP   // IRQ Ack
222   AM_RANGE(0x500008, 0x500009) AM_WRITE(esd16_tilemap0_color_w)   // Flip Screen + Tileamp0 palette banking
223   AM_RANGE(0x50000a, 0x50000b) AM_WRITENOP   // ? 2 not checked
224   AM_RANGE(0x50000c, 0x50000d) AM_WRITE(esd16_sound_command_w         )   // To Sound CPU // ok
196   AM_RANGE(0x500006, 0x500007) AM_READ(esd_eeprom_r)
197   AM_RANGE(0x500008, 0x500009) AM_WRITE(esd16_tilemap0_color_w)                                 // Flip Screen + Tileamp0 palette banking
198   AM_RANGE(0x50000a, 0x50000b) AM_WRITENOP                                                // ? 2 not checked
199   AM_RANGE(0x50000c, 0x50000d) AM_WRITE(esd16_sound_command_w)                                 // To Sound CPU // ok
225200   AM_RANGE(0x50000e, 0x50000f) AM_WRITE(esd_eeprom_w)
226   AM_RANGE(0x600000, 0x6007ff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size   )   // Sprites
227   AM_RANGE(0x600800, 0x600807) AM_WRITE(esd16_spriteram_w            )   // Sprites (Mirrored)
228   AM_RANGE(0x700000, 0x700003) AM_WRITE(SMH_RAM) AM_BASE(&esd16_scroll_0   )   // Scroll
229   AM_RANGE(0x700004, 0x700007) AM_WRITE(SMH_RAM) AM_BASE(&esd16_scroll_1   )   //
230   AM_RANGE(0x700008, 0x700009) AM_WRITE(SMH_RAM) AM_BASE(&headpanic_platform_x) // not used in mchampdx?
231   AM_RANGE(0x70000a, 0x70000b) AM_WRITE(SMH_RAM) AM_BASE(&headpanic_platform_y) // not used in mchampdx?
232   AM_RANGE(0x70000c, 0x70000d) AM_WRITENOP // ??
233   AM_RANGE(0x70000e, 0x70000f) AM_WRITE(SMH_RAM) AM_BASE(&head_layersize) // ??
234   AM_RANGE(0xd00008, 0xd00009) AM_WRITE(hedpanic_platform_w) // not used in mchampdx?
201   AM_RANGE(0x600000, 0x6007ff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)         // Sprites
202   AM_RANGE(0x600800, 0x600807) AM_WRITE(esd16_spriteram_w)                                    // Sprites (Mirrored)
203   AM_RANGE(0x700000, 0x700003) AM_WRITE(SMH_RAM) AM_BASE(&esd16_scroll_0)                           // Scroll
204   AM_RANGE(0x700004, 0x700007) AM_WRITE(SMH_RAM) AM_BASE(&esd16_scroll_1)                           //
205   AM_RANGE(0x700008, 0x700009) AM_WRITE(SMH_RAM) AM_BASE(&headpanic_platform_x)                      // not used in mchampdx?
206   AM_RANGE(0x70000a, 0x70000b) AM_WRITE(SMH_RAM) AM_BASE(&headpanic_platform_y)                      // not used in mchampdx?
207   AM_RANGE(0x70000c, 0x70000d) AM_WRITENOP                                                 // ??
208   AM_RANGE(0x70000e, 0x70000f) AM_WRITE(SMH_RAM) AM_BASE(&head_layersize)                         // ??
209   AM_RANGE(0xd00008, 0xd00009) AM_WRITE(hedpanic_platform_w)                                     // not used in mchampdx?
235210ADDRESS_MAP_END
236211
237212/* Tang Tang - like the others but again with different addresses */
238213
239static ADDRESS_MAP_START( tangtang_readmem, ADDRESS_SPACE_PROGRAM, 16 )
240   AM_RANGE(0x000000, 0x07ffff) AM_READ(SMH_ROM            )   // ROM
241   AM_RANGE(0x100000, 0x100fff) AM_READ(SMH_RAM)
214static ADDRESS_MAP_START( tangtang_map, ADDRESS_SPACE_PROGRAM, 16 )
215   AM_RANGE(0x000000, 0x07ffff) AM_ROM                                                      // ROM
216   AM_RANGE(0x100000, 0x100fff) AM_RAM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE(&paletteram16)   // RAM
217   AM_RANGE(0x200000, 0x2007ff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)         // Sprites
218   AM_RANGE(0x200800, 0x200807) AM_WRITE(esd16_spriteram_w)                                    // Sprites (Mirrored)
219   AM_RANGE(0x300000, 0x303fff) AM_WRITE(esd16_vram_0_w) AM_BASE(&esd16_vram_0)                     // Layers
220   AM_RANGE(0x320000, 0x323fff) AM_WRITE(esd16_vram_1_w) AM_BASE(&esd16_vram_1)                     //
221   AM_RANGE(0x324000, 0x327fff) AM_WRITE(esd16_vram_1_w) AM_BASE(&esd16_vram_1)                     // mirror?
222   AM_RANGE(0x400000, 0x400003) AM_WRITE(SMH_RAM) AM_BASE(&esd16_scroll_0)                           // Scroll
223   AM_RANGE(0x400004, 0x400007) AM_WRITE(SMH_RAM) AM_BASE(&esd16_scroll_1)                           //
224   AM_RANGE(0x400008, 0x400009) AM_WRITE(SMH_RAM) AM_BASE(&headpanic_platform_x)                      // not used in mchampdx?
225   AM_RANGE(0x40000a, 0x40000b) AM_WRITE(SMH_RAM) AM_BASE(&headpanic_platform_y)                      // not used in mchampdx?
226   AM_RANGE(0x40000c, 0x40000d) AM_WRITENOP                                                 // ??
227   AM_RANGE(0x40000e, 0x40000f) AM_WRITE(SMH_RAM) AM_BASE(&head_layersize)                           // ??
228   AM_RANGE(0x500000, 0x500001) AM_WRITENOP   // IRQ Ack
242229   AM_RANGE(0x500002, 0x500003) AM_READ_PORT("P1_P2")
243230   AM_RANGE(0x500004, 0x500005) AM_READ_PORT("SYSTEM")
244   AM_RANGE(0x500006, 0x500007) AM_READ(esd_eeprom_r   )
245   AM_RANGE(0x700000, 0x70ffff) AM_READ(SMH_RAM) // main ram
246ADDRESS_MAP_END
247
248static ADDRESS_MAP_START( tangtang_writemem, ADDRESS_SPACE_PROGRAM, 16 )
249   AM_RANGE(0x000000, 0x07ffff) AM_WRITE(SMH_ROM                  )   // ROM
250   AM_RANGE(0x100000, 0x100fff) AM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE(&paletteram16)
251   AM_RANGE(0x200000, 0x2007ff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size   )   // Sprites
252   AM_RANGE(0x200800, 0x200807) AM_WRITE(esd16_spriteram_w            )   // Sprites (Mirrored)
253   AM_RANGE(0x300000, 0x303fff) AM_WRITE(esd16_vram_0_w) AM_BASE(&esd16_vram_0   )   // Layers
254   AM_RANGE(0x320000, 0x323fff) AM_WRITE(esd16_vram_1_w) AM_BASE(&esd16_vram_1   )   //
255   AM_RANGE(0x324000, 0x327fff) AM_WRITE(esd16_vram_1_w) AM_BASE(&esd16_vram_1   )   // mirror?
256   AM_RANGE(0x400000, 0x400003) AM_WRITE(SMH_RAM) AM_BASE(&esd16_scroll_0   )   // Scroll
257   AM_RANGE(0x400004, 0x400007) AM_WRITE(SMH_RAM) AM_BASE(&esd16_scroll_1   )   //
258   AM_RANGE(0x400008, 0x400009) AM_WRITE(SMH_RAM) AM_BASE(&headpanic_platform_x) // not used in mchampdx?
259   AM_RANGE(0x40000a, 0x40000b) AM_WRITE(SMH_RAM) AM_BASE(&headpanic_platform_y) // not used in mchampdx?
260   AM_RANGE(0x40000c, 0x40000d) AM_WRITENOP // ??
261   AM_RANGE(0x40000e, 0x40000f) AM_WRITE(SMH_RAM) AM_BASE(&head_layersize) // ??
262   AM_RANGE(0x500000, 0x500001) AM_WRITENOP   // IRQ Ack
263   AM_RANGE(0x500008, 0x500009) AM_WRITE(esd16_tilemap0_color_w)   // Flip Screen + Tileamp0 palette banking
264   AM_RANGE(0x50000a, 0x50000b) AM_WRITENOP   // ? 2 not checked
265   AM_RANGE(0x50000c, 0x50000d) AM_WRITE(esd16_sound_command_w         )   // To Sound CPU // ok
231   AM_RANGE(0x500006, 0x500007) AM_READ(esd_eeprom_r)
232   AM_RANGE(0x500008, 0x500009) AM_WRITE(esd16_tilemap0_color_w)                                 // Flip Screen + Tileamp0 palette banking
233   AM_RANGE(0x50000a, 0x50000b) AM_WRITENOP                                                // ? 2 not checked
234   AM_RANGE(0x50000c, 0x50000d) AM_WRITE(esd16_sound_command_w)                                 // To Sound CPU // ok
266235   AM_RANGE(0x50000e, 0x50000f) AM_WRITE(esd_eeprom_w)
267236   AM_RANGE(0x600008, 0x600009) AM_WRITE(hedpanic_platform_w)
268   AM_RANGE(0x700000, 0x70ffff) AM_WRITE(SMH_RAM)
237   AM_RANGE(0x700000, 0x70ffff) AM_RAM                                                      // main ram
269238ADDRESS_MAP_END
270239
271240
r4679r4680
285254   memory_set_bankptr(space->machine, 1, memory_region(space->machine, "audiocpu") + 0x4000 * bank);
286255}
287256
288static ADDRESS_MAP_START( multchmp_sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
289   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM      )   // ROM
290   AM_RANGE(0x8000, 0xbfff) AM_READ(SMH_BANK1      )   // Banked ROM
291   AM_RANGE(0xf800, 0xffff) AM_READ(SMH_RAM      )   // RAM
257static ADDRESS_MAP_START( multchmp_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
258   AM_RANGE(0x0000, 0x7fff) AM_ROM                        // ROM
259   AM_RANGE(0x8000, 0xbfff) AM_ROMBANK(1)                  // Banked ROM
260   AM_RANGE(0xf800, 0xffff) AM_RAM                        // RAM
292261ADDRESS_MAP_END
293262
294static ADDRESS_MAP_START( multchmp_sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
295   AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM      )   // ROM
296   AM_RANGE(0x8000, 0xbfff) AM_WRITE(SMH_ROM      )   // Banked ROM
297   AM_RANGE(0xf800, 0xffff) AM_WRITE(SMH_RAM      )   // RAM
298ADDRESS_MAP_END
299
300263static READ8_HANDLER( esd16_sound_command_r )
301264{
302265   /* Clear IRQ only after reading the command, or some get lost */
303   cpu_set_input_line(space->machine->cpu[1],0,CLEAR_LINE);
304   return soundlatch_r(space,0);
266   cputag_set_input_line(space->machine, "audiocpu", 0, CLEAR_LINE);
267   return soundlatch_r(space, 0);
305268}
306269
307270static ADDRESS_MAP_START( multchmp_sound_io_map, ADDRESS_SPACE_IO, 8 )
r4679r4680
566529
567530   /* basic machine hardware */
568531   MDRV_CPU_ADD("maincpu",M68000, 16000000)
569   MDRV_CPU_PROGRAM_MAP(multchmp_readmem,multchmp_writemem)
532   MDRV_CPU_PROGRAM_MAP(multchmp_map,0)
570533   MDRV_CPU_VBLANK_INT("screen", irq6_line_hold)
571534
572535   MDRV_CPU_ADD("audiocpu", Z80, 4000000)   /* ? */
573   MDRV_CPU_PROGRAM_MAP(multchmp_sound_readmem,multchmp_sound_writemem)
536   MDRV_CPU_PROGRAM_MAP(multchmp_sound_map,0)
574537   MDRV_CPU_IO_MAP(multchmp_sound_io_map,0)
575538   MDRV_CPU_VBLANK_INT_HACK(nmi_line_pulse,32)   /* IRQ By Main CPU */
576539
r4679r4680
605568   MDRV_IMPORT_FROM(multchmp)
606569
607570   MDRV_CPU_MODIFY("maincpu")
608   MDRV_CPU_PROGRAM_MAP(hedpanic_readmem,hedpanic_writemem)
571   MDRV_CPU_PROGRAM_MAP(hedpanic_map,0)
609572
610573   MDRV_NVRAM_HANDLER(93C46)
611574
r4679r4680
622585   MDRV_IMPORT_FROM(hedpanic)
623586
624587   MDRV_CPU_MODIFY("maincpu")
625   MDRV_CPU_PROGRAM_MAP(mchampdx_readmem,mchampdx_writemem)
588   MDRV_CPU_PROGRAM_MAP(mchampdx_map,0)
626589MACHINE_DRIVER_END
627590
628591static MACHINE_DRIVER_START( tangtang )
r4679r4680
631594   MDRV_IMPORT_FROM(hedpanic)
632595
633596   MDRV_CPU_MODIFY("maincpu")
634   MDRV_CPU_PROGRAM_MAP(tangtang_readmem,tangtang_writemem)
597   MDRV_CPU_PROGRAM_MAP(tangtang_map,0)
635598
636599   MDRV_GFXDECODE(tangtang)
637600MACHINE_DRIVER_END
src/mame/drivers/jangou.c
r4679r4680
9595
9696static VIDEO_START( jangou )
9797{
98   blit_buffer = auto_malloc(256*256);
98   blit_buffer = auto_alloc_array(machine, UINT8, 256*256);
9999}
100100
101101static VIDEO_UPDATE( jangou )
r4679r4680
269269static WRITE8_HANDLER( sound_latch_w )
270270{
271271   soundlatch_w(space, 0, data & 0xff);
272   cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_NMI, ASSERT_LINE);
272   cputag_set_input_line(space->machine, "cpu1", INPUT_LINE_NMI, ASSERT_LINE);
273273}
274274
275275static READ8_HANDLER( sound_latch_r )
276276{
277   cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_NMI, CLEAR_LINE);
277   cputag_set_input_line(space->machine, "cpu1", INPUT_LINE_NMI, CLEAR_LINE);
278278   return soundlatch_r(space, 0);
279279}
280280
r4679r4680
292292
293293   /* Trigger an IRQ for every 8 shifted bits */
294294   if ((++cvsd_shift_cnt & 7) == 0)
295      cpu_set_input_line(machine->cpu[1], 0, HOLD_LINE);
295      cputag_set_input_line(machine, "cpu1", 0, HOLD_LINE);
296296}
297297
298298
r4679r4680
311311   else
312312   {
313313      msm5205_data_w(device, adpcm_byte & 0xf);
314      cpu_set_input_line(device->machine->cpu[1], 0, HOLD_LINE);
314      cputag_set_input_line(device->machine, "cpu1", 0, HOLD_LINE);
315315   }
316316
317317   msm5205_vclk_toggle ^= 1;
r4679r4680
333333
334334static WRITE8_HANDLER( master_com_w )
335335{
336   cpu_set_input_line(space->machine->cpu[2], 0, HOLD_LINE);
336   cputag_set_input_line(space->machine, "nsc", 0, HOLD_LINE);
337337   nsc_latch = data;
338338}
339339
r4679r4680
10261026
10271027static DRIVER_INIT( jngolady )
10281028{
1029   memory_install_read8_handler(cpu_get_address_space(machine->cpu[2], ADDRESS_SPACE_PROGRAM), 0x08, 0x08, 0, 0, jngolady_rng_r );
1029   memory_install_read8_handler(cputag_get_address_space(machine, "nsc", ADDRESS_SPACE_PROGRAM), 0x08, 0x08, 0, 0, jngolady_rng_r );
10301030}
10311031
10321032static DRIVER_INIT (luckygrl)
src/mame/drivers/model3.c
r4679r4680
388388static void update_irq_state(running_machine *machine)
389389{
390390   if ((irq_enable & irq_state) || scsi_irq_state)
391      cpu_set_input_line(machine->cpu[0], PPC_IRQ, ASSERT_LINE);
391      cputag_set_input_line(machine, "maincpu", PPC_IRQ, ASSERT_LINE);
392392   else
393      cpu_set_input_line(machine->cpu[0], PPC_IRQ, CLEAR_LINE);
393      cputag_set_input_line(machine, "maincpu", PPC_IRQ, CLEAR_LINE);
394394}
395395
396396void model3_set_irq_line(running_machine *machine, UINT8 bit, int state)
r4679r4680
768768
769769static UINT32 scsi_fetch(running_machine *machine, UINT32 dsp)
770770{
771   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
771   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
772772   UINT32 result;
773773   result = memory_read_dword(space, dsp);
774774   return FLIPENDIAN_INT32(result);
r4679r4680
873873
874874static void real3d_dma_callback(running_machine *machine, UINT32 src, UINT32 dst, int length, int byteswap)
875875{
876   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
876   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
877877   switch(dst >> 24)
878878   {
879879      case 0x88:      /* Display List End Trigger */
r4679r4680
897897      case 0x9c:      /* Unknown */
898898         break;
899899      default:
900         fatalerror("dma_callback: %08X, %08X, %d at %08X", src, dst, length, cpu_get_pc(machine->cpu[0]));
900         fatalerror("dma_callback: %08X, %08X, %d at %08X", src, dst, length, cpu_get_pc(cputag_get_cpu(machine, "maincpu")));
901901         break;
902902   }
903903}
r4679r4680
981981static void configure_fast_ram(running_machine *machine)
982982{
983983   /* set conservative DRC options */
984   ppcdrc_set_options(machine->cpu[0], PPCDRC_COMPATIBLE_OPTIONS - PPCDRC_ACCURATE_SINGLES);
984   ppcdrc_set_options(cputag_get_cpu(machine, "maincpu"), PPCDRC_COMPATIBLE_OPTIONS - PPCDRC_ACCURATE_SINGLES);
985985
986986   /* configure fast RAM regions for DRC */
987   ppcdrc_add_fastram(machine->cpu[0], 0x00000000, 0x007fffff, FALSE, work_ram);
987   ppcdrc_add_fastram(cputag_get_cpu(machine, "maincpu"), 0x00000000, 0x007fffff, FALSE, work_ram);
988988}
989989
990990static MACHINE_START(model3_10)
r4679r4680
42984298   AM_RANGE(0x400000, 0x400001) AM_WRITE(model3snd_ctrl)
42994299   AM_RANGE(0x600000, 0x67ffff) AM_ROM AM_REGION("audiocpu", 0x80000)
43004300   AM_RANGE(0x800000, 0x9fffff) AM_ROM AM_REGION("samples", 0)
4301   AM_RANGE(0xa00000, 0xdfffff) AM_READ(SMH_BANK4)
4302   AM_RANGE(0xe00000, 0xffffff) AM_READ(SMH_BANK5)
4301   AM_RANGE(0xa00000, 0xdfffff) AM_READ(SMH_BANK(4))
4302   AM_RANGE(0xe00000, 0xffffff) AM_READ(SMH_BANK(5))
43034303ADDRESS_MAP_END
43044304
43054305static int scsp_last_line = 0;
r4679r4680
43094309    if (irq > 0)
43104310   {
43114311      scsp_last_line = irq;
4312      cpu_set_input_line(device->machine->cpu[1], irq, ASSERT_LINE);
4312      cputag_set_input_line(device->machine, "audiocpu", irq, ASSERT_LINE);
43134313   }
43144314   else
4315      cpu_set_input_line(device->machine->cpu[1], -irq, CLEAR_LINE);
4315      cputag_set_input_line(device->machine, "audiocpu", -irq, CLEAR_LINE);
43164316}
43174317
43184318static const scsp_interface scsp_config =
r4679r4680
45334533   int vrom_length = memory_region_length(machine, "user3");
45344534   UINT16 *vrom;
45354535
4536   model3_vrom = auto_malloc(0x4000000);
4536   model3_vrom = auto_alloc_array(machine, UINT32, 0x4000000/4);
45374537   vrom = (UINT16 *)model3_vrom;
45384538
45394539   if( vrom_length <= 0x1000000 ) {
r4679r4680
45584558{
45594559   interleave_vroms(machine);
45604560
4561   memory_install_readwrite64_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xc0000000, 0xc00000ff, 0, 0, scsi_r, scsi_w );
4561   memory_install_readwrite64_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xc0000000, 0xc00000ff, 0, 0, scsi_r, scsi_w );
45624562
4563   memory_install_read64_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xff000000, 0xff7fffff, 0, 0, SMH_BANK1 );
4563   memory_install_read64_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xff000000, 0xff7fffff, 0, 0, (read64_space_func)SMH_BANK(1) );
45644564
4565   memory_install_readwrite64_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xf0800cf8, 0xf0800cff, 0, 0, mpc105_addr_r, mpc105_addr_w );
4566   memory_install_readwrite64_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xf0c00cf8, 0xf0c00cff, 0, 0, mpc105_data_r, mpc105_data_w );
4567   memory_install_readwrite64_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xf8fff000, 0xf8fff0ff, 0, 0, mpc105_reg_r, mpc105_reg_w );
4565   memory_install_readwrite64_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xf0800cf8, 0xf0800cff, 0, 0, mpc105_addr_r, mpc105_addr_w );
4566   memory_install_readwrite64_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xf0c00cf8, 0xf0c00cff, 0, 0, mpc105_data_r, mpc105_data_w );
4567   memory_install_readwrite64_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xf8fff000, 0xf8fff0ff, 0, 0, mpc105_reg_r, mpc105_reg_w );
45684568}
45694569
45704570static DRIVER_INIT( model3_15 )
45714571{
45724572   interleave_vroms(machine);
4573   memory_install_read64_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xff000000, 0xff7fffff, 0, 0, SMH_BANK1 );
4573   memory_install_read64_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xff000000, 0xff7fffff, 0, 0, (read64_space_func)SMH_BANK(1) );
45744574
4575   memory_install_readwrite64_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xf0800cf8, 0xf0800cff, 0, 0, mpc105_addr_r, mpc105_addr_w );
4576   memory_install_readwrite64_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xf0c00cf8, 0xf0c00cff, 0, 0, mpc105_data_r, mpc105_data_w );
4577   memory_install_readwrite64_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xf8fff000, 0xf8fff0ff, 0, 0, mpc105_reg_r, mpc105_reg_w );
4575   memory_install_readwrite64_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xf0800cf8, 0xf0800cff, 0, 0, mpc105_addr_r, mpc105_addr_w );
4576   memory_install_readwrite64_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xf0c00cf8, 0xf0c00cff, 0, 0, mpc105_data_r, mpc105_data_w );
4577   memory_install_readwrite64_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xf8fff000, 0xf8fff0ff, 0, 0, mpc105_reg_r, mpc105_reg_w );
45784578}
45794579
45804580static DRIVER_INIT( model3_20 )
45814581{
45824582   interleave_vroms(machine);
4583   memory_install_read64_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xff000000, 0xff7fffff, 0, 0, SMH_BANK1 );
4583   memory_install_read64_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xff000000, 0xff7fffff, 0, 0, (read64_space_func)SMH_BANK(1) );
45844584
4585   memory_install_readwrite64_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xc2000000, 0xc20000ff, 0, 0, real3d_dma_r, real3d_dma_w );
4585   memory_install_readwrite64_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xc2000000, 0xc20000ff, 0, 0, real3d_dma_r, real3d_dma_w );
45864586
4587   memory_install_readwrite64_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xfec00000, 0xfedfffff, 0, 0, mpc106_addr_r, mpc106_addr_w );
4588   memory_install_readwrite64_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xfee00000, 0xfeffffff, 0, 0, mpc106_data_r, mpc106_data_w );
4589   memory_install_readwrite64_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xf8fff000, 0xf8fff0ff, 0, 0, mpc106_reg_r, mpc106_reg_w );
4587   memory_install_readwrite64_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xfec00000, 0xfedfffff, 0, 0, mpc106_addr_r, mpc106_addr_w );
4588   memory_install_readwrite64_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xfee00000, 0xfeffffff, 0, 0, mpc106_data_r, mpc106_data_w );
4589   memory_install_readwrite64_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xf8fff000, 0xf8fff0ff, 0, 0, mpc106_reg_r, mpc106_reg_w );
45904590}
45914591
45924592static DRIVER_INIT( lostwsga )
r4679r4680
45954595
45964596   DRIVER_INIT_CALL(model3_15);
45974597   /* TODO: there's an M68K device at 0xC0000000 - FF, maybe lightgun controls ? */
4598   memory_install_readwrite64_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xc1000000, 0xc10000ff, 0, 0, scsi_r, scsi_w );
4598   memory_install_readwrite64_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xc1000000, 0xc10000ff, 0, 0, scsi_r, scsi_w );
45994599
46004600   rom[0x7374f0/4] = 0x38840004;      /* This seems to be an actual bug in the original code */
46014601}
r4679r4680
46064606
46074607   DRIVER_INIT_CALL(model3_15);
46084608   /* TODO: network device at 0xC0000000 - FF */
4609   memory_install_readwrite64_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xf9000000, 0xf90000ff, 0, 0, scsi_r, scsi_w );
4609   memory_install_readwrite64_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xf9000000, 0xf90000ff, 0, 0, scsi_r, scsi_w );
46104610
46114611   rom[(0x71275c^4)/4] = 0x60000000;
46124612   rom[(0x71277c^4)/4] = 0x60000000;
r4679r4680
46184618
46194619   DRIVER_INIT_CALL(model3_15);
46204620   /* TODO: network device at 0xC0000000 - FF */
4621   memory_install_readwrite64_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xc1000000, 0xc10000ff, 0, 0, scsi_r, scsi_w );
4621   memory_install_readwrite64_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xc1000000, 0xc10000ff, 0, 0, scsi_r, scsi_w );
46224622
46234623   rom[(0x713724^4)/4] = 0x60000000;
46244624   rom[(0x713744^4)/4] = 0x60000000;
r4679r4680
46344634   UINT32 *rom = (UINT32*)memory_region(machine, "user1");
46354635   DRIVER_INIT_CALL(model3_15);
46364636
4637   memory_install_readwrite64_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xc1000000, 0xc10000ff, 0, 0, scsi_r, scsi_w );
4637   memory_install_readwrite64_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xc1000000, 0xc10000ff, 0, 0, scsi_r, scsi_w );
46384638
46394639   rom[(0x73fe38^4)/4] = 0x38840004;      /* This seems to be an actual bug in the original code */
46404640
r4679r4680
46654665   rom[(0x70e710^4)/4] = 0x60000000;
46664666
46674667   interleave_vroms(machine);
4668   memory_install_read64_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xff000000, 0xff7fffff, 0, 0, SMH_BANK1 );
4668   memory_install_read64_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xff000000, 0xff7fffff, 0, 0, (read64_space_func)SMH_BANK(1) );
46694669
4670   memory_install_readwrite64_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xf9000000, 0xf90000ff, 0, 0, scsi_r, scsi_w );
4670   memory_install_readwrite64_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xf9000000, 0xf90000ff, 0, 0, scsi_r, scsi_w );
46714671
4672   memory_install_readwrite64_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xf0800cf8, 0xf0800cff, 0, 0, mpc106_addr_r, mpc106_addr_w );
4673   memory_install_readwrite64_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xfec00000, 0xfedfffff, 0, 0, mpc106_addr_r, mpc106_addr_w );
4674   memory_install_readwrite64_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xf0c00cf8, 0xf0c00cff, 0, 0, mpc106_data_r, mpc106_data_w );
4675   memory_install_readwrite64_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xfee00000, 0xfeffffff, 0, 0, mpc106_data_r, mpc106_data_w );
4676   memory_install_readwrite64_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xf8fff000, 0xf8fff0ff, 0, 0, mpc106_reg_r, mpc106_reg_w );
4672   memory_install_readwrite64_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xf0800cf8, 0xf0800cff, 0, 0, mpc106_addr_r, mpc106_addr_w );
4673   memory_install_readwrite64_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xfec00000, 0xfedfffff, 0, 0, mpc106_addr_r, mpc106_addr_w );
4674   memory_install_readwrite64_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xf0c00cf8, 0xf0c00cff, 0, 0, mpc106_data_r, mpc106_data_w );
4675   memory_install_readwrite64_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xfee00000, 0xfeffffff, 0, 0, mpc106_data_r, mpc106_data_w );
4676   memory_install_readwrite64_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xf8fff000, 0xf8fff0ff, 0, 0, mpc106_reg_r, mpc106_reg_w );
46774677}
46784678
46794679static DRIVER_INIT( vs29815 )
r4679r4680
46844684   rom[(0x60290c^4)/4] = 0x60000000;
46854685
46864686   interleave_vroms(machine);
4687   memory_install_read64_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xff000000, 0xff7fffff, 0, 0, SMH_BANK1 );
4687   memory_install_read64_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xff000000, 0xff7fffff, 0, 0, (read64_space_func)SMH_BANK(1) );
46884688
4689   memory_install_readwrite64_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xf9000000, 0xf90000ff, 0, 0, scsi_r, scsi_w );
4689   memory_install_readwrite64_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xf9000000, 0xf90000ff, 0, 0, scsi_r, scsi_w );
46904690
4691   memory_install_readwrite64_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xf0800cf8, 0xf0800cff, 0, 0, mpc106_addr_r, mpc106_addr_w );
4692   memory_install_readwrite64_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xfec00000, 0xfedfffff, 0, 0, mpc106_addr_r, mpc106_addr_w );
4693   memory_install_readwrite64_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xf0c00cf8, 0xf0c00cff, 0, 0, mpc106_data_r, mpc106_data_w );
4694   memory_install_readwrite64_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xfee00000, 0xfeffffff, 0, 0, mpc106_data_r, mpc106_data_w );
4695   memory_install_readwrite64_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xf8fff000, 0xf8fff0ff, 0, 0, mpc106_reg_r, mpc106_reg_w );
4691   memory_install_readwrite64_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xf0800cf8, 0xf0800cff, 0, 0, mpc106_addr_r, mpc106_addr_w );
4692   memory_install_readwrite64_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xfec00000, 0xfedfffff, 0, 0, mpc106_addr_r, mpc106_addr_w );
4693   memory_install_readwrite64_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xf0c00cf8, 0xf0c00cff, 0, 0, mpc106_data_r, mpc106_data_w );
4694   memory_install_readwrite64_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xfee00000, 0xfeffffff, 0, 0, mpc106_data_r, mpc106_data_w );
4695   memory_install_readwrite64_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xf8fff000, 0xf8fff0ff, 0, 0, mpc106_reg_r, mpc106_reg_w );
46964696}
46974697
46984698static DRIVER_INIT( bass )
r4679r4680
47034703   rom[(0x7999c8^4)/4] = 0x60000000;
47044704
47054705   interleave_vroms(machine);
4706   memory_install_read64_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xff000000, 0xff7fffff, 0, 0, SMH_BANK1 );
4706   memory_install_read64_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xff000000, 0xff7fffff, 0, 0, (read64_space_func)SMH_BANK(1) );
47074707
4708   memory_install_readwrite64_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xf9000000, 0xf90000ff, 0, 0, scsi_r, scsi_w );
4708   memory_install_readwrite64_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xf9000000, 0xf90000ff, 0, 0, scsi_r, scsi_w );
47094709
4710   memory_install_readwrite64_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xf0800cf8, 0xf0800cff, 0, 0, mpc106_addr_r, mpc106_addr_w );
4711   memory_install_readwrite64_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xfec00000, 0xfedfffff, 0, 0, mpc106_addr_r, mpc106_addr_w );
4712   memory_install_readwrite64_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xf0c00cf8, 0xf0c00cff, 0, 0, mpc106_data_r, mpc106_data_w );
4713   memory_install_readwrite64_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xfee00000, 0xfeffffff, 0, 0, mpc106_data_r, mpc106_data_w );
4714   memory_install_readwrite64_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xf8fff000, 0xf8fff0ff, 0, 0, mpc106_reg_r, mpc106_reg_w );
4710   memory_install_readwrite64_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xf0800cf8, 0xf0800cff, 0, 0, mpc106_addr_r, mpc106_addr_w );
4711   memory_install_readwrite64_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xfec00000, 0xfedfffff, 0, 0, mpc106_addr_r, mpc106_addr_w );
4712   memory_install_readwrite64_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xf0c00cf8, 0xf0c00cff, 0, 0, mpc106_data_r, mpc106_data_w );
4713   memory_install_readwrite64_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xfee00000, 0xfeffffff, 0, 0, mpc106_data_r, mpc106_data_w );
4714   memory_install_readwrite64_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xf8fff000, 0xf8fff0ff, 0, 0, mpc106_reg_r, mpc106_reg_w );
47154715}
47164716
47174717static DRIVER_INIT( getbass )
47184718{
47194719   interleave_vroms(machine);
4720   memory_install_read64_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xff000000, 0xff7fffff, 0, 0, SMH_BANK1 );
4720   memory_install_read64_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xff000000, 0xff7fffff, 0, 0, (read64_space_func)SMH_BANK(1) );
47214721
4722   memory_install_readwrite64_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xf9000000, 0xf90000ff, 0, 0, scsi_r, scsi_w );
4722   memory_install_readwrite64_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xf9000000, 0xf90000ff, 0, 0, scsi_r, scsi_w );
47234723
4724   memory_install_readwrite64_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xf0800cf8, 0xf0800cff, 0, 0, mpc105_addr_r, mpc105_addr_w );
4725   memory_install_readwrite64_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xf0c00cf8, 0xf0c00cff, 0, 0, mpc105_data_r, mpc105_data_w );
4726   memory_install_readwrite64_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xf8fff000, 0xf8fff0ff, 0, 0, mpc105_reg_r, mpc105_reg_w );
4724   memory_install_readwrite64_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xf0800cf8, 0xf0800cff, 0, 0, mpc105_addr_r, mpc105_addr_w );
4725   memory_install_readwrite64_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xf0c00cf8, 0xf0c00cff, 0, 0, mpc105_data_r, mpc105_data_w );
4726   memory_install_readwrite64_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xf8fff000, 0xf8fff0ff, 0, 0, mpc105_reg_r, mpc105_reg_w );
47274727}
47284728
47294729static DRIVER_INIT( vs2 )
r4679r4680
47724772   UINT32 *rom = (UINT32*)memory_region(machine, "user1");
47734773   DRIVER_INIT_CALL(model3_20);
47744774
4775   memory_install_readwrite64_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xc0000000, 0xc00fffff, 0, 0, network_r, network_w );
4775   memory_install_readwrite64_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xc0000000, 0xc00fffff, 0, 0, network_r, network_w );
47764776
47774777   rom[(0x50e8d4^4)/4] = 0x60000000;
47784778   rom[(0x50e8f4^4)/4] = 0x60000000;
r4679r4680
48404840   UINT32 *rom = (UINT32*)memory_region(machine, "user1");
48414841   DRIVER_INIT_CALL(model3_20);
48424842
4843   memory_install_write64_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xc3800000, 0xc3800007, 0, 0, daytona2_rombank_w );
4843   memory_install_write64_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xc3800000, 0xc3800007, 0, 0, daytona2_rombank_w );
48444844
48454845   //rom[(0x68468c^4)/4] = 0x60000000;
48464846   rom[(0x6063c4^4)/4] = 0x60000000;
r4679r4680
48534853   UINT32 *rom = (UINT32*)memory_region(machine, "user1");
48544854   DRIVER_INIT_CALL(model3_20);
48554855
4856   memory_install_write64_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xc3800000, 0xc3800007, 0, 0, daytona2_rombank_w );
4856   memory_install_write64_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xc3800000, 0xc3800007, 0, 0, daytona2_rombank_w );
48574857
48584858   rom[(0x606784^4)/4] = 0x60000000;
48594859   rom[(0x69a3fc^4)/4] = 0x60000000;      // jump to encrypted code
src/mame/drivers/namcos21.c
r4679r4680
331331
332332
333333#define DSP_BUF_MAX (4096*12)
334static struct
334typedef struct _dsp_state dsp_state;
335struct _dsp_state
335336{
336337   unsigned masterSourceAddr;
337338   UINT16 slaveInputBuffer[DSP_BUF_MAX];
r4679r4680
344345   unsigned masterDirectDrawSize;
345346   int masterFinished;
346347   int slaveActive;
347} *mpDspState;
348};
349static dsp_state *mpDspState;
348350
349351static INT32
350352ReadPointROMData( running_machine *machine, unsigned offset )
r4679r4680
632634   pMem[0x8000] = 0xFF80;
633635   pMem[0x8001] = 0x0000;
634636
635   mpDspState = auto_malloc( sizeof(*mpDspState) );
636   memset( mpDspState, 0, sizeof(*mpDspState) );
637   mpDspState = auto_alloc_clear(machine, dsp_state);
637638
638639   return 0;
639640}
r4679r4680
798799}
799800
800801static ADDRESS_MAP_START( master_dsp_program, ADDRESS_SPACE_PROGRAM, 16 )
801   AM_RANGE(0x0000, 0x0fff) AM_READ(SMH_ROM) /* BIOS */
802   AM_RANGE(0x8000, 0xbfff) AM_READ(SMH_RAM) AM_WRITE(SMH_RAM) AM_BASE(&master_dsp_code)
802   AM_RANGE(0x0000, 0x0fff) AM_ROM /* BIOS */
803   AM_RANGE(0x8000, 0xbfff) AM_RAM AM_BASE(&master_dsp_code)
803804ADDRESS_MAP_END
804805
805806static ADDRESS_MAP_START( master_dsp_data, ADDRESS_SPACE_DATA, 16 )
806   AM_RANGE(0x2000, 0x200f) AM_READ(dspcuskey_r) AM_WRITE(dspcuskey_w)
807   AM_RANGE(0x8000, 0xffff) AM_READ(dspram16_r) AM_WRITE(dspram16_w) /* 0x8000 words */
807   AM_RANGE(0x2000, 0x200f) AM_READWRITE(dspcuskey_r,dspcuskey_w)
808   AM_RANGE(0x8000, 0xffff) AM_READWRITE(dspram16_r,dspram16_w) /* 0x8000 words */
808809ADDRESS_MAP_END
809810
810811static ADDRESS_MAP_START( master_dsp_io, ADDRESS_SPACE_IO, 16 )
811   AM_RANGE(0x00,0x00) AM_READ(dsp_port0_r) AM_WRITE(dsp_port0_w)
812   AM_RANGE(0x01,0x01 )AM_READ(dsp_port1_r) AM_WRITE(dsp_port1_w)
813   AM_RANGE(0x02,0x02) AM_READ(dsp_port2_r) AM_WRITE(dsp_port2_w)
814   AM_RANGE(0x03,0x03) AM_READ(dsp_port3_idc_rcv_enable_r) AM_WRITE(dsp_port3_w)
812   AM_RANGE(0x00,0x00) AM_READWRITE(dsp_port0_r,dsp_port0_w)
813   AM_RANGE(0x01,0x01) AM_READWRITE(dsp_port1_r,dsp_port1_w)
814   AM_RANGE(0x02,0x02) AM_READWRITE(dsp_port2_r,dsp_port2_w)
815   AM_RANGE(0x03,0x03) AM_READWRITE(dsp_port3_idc_rcv_enable_r,dsp_port3_w)
815816   AM_RANGE(0x04,0x04) AM_WRITE(dsp_port4_w)
816   AM_RANGE(0x08,0x08) AM_READ(dsp_port8_r) AM_WRITE(dsp_port8_w)
817   AM_RANGE(0x08,0x08) AM_READWRITE(dsp_port8_r,dsp_port8_w)
817818   AM_RANGE(0x09,0x09) AM_READ(dsp_port9_r)
818   AM_RANGE(0x0a,0x0a) AM_READ(dsp_porta_r) AM_WRITE(dsp_porta_w)
819   AM_RANGE(0x0b,0x0b) AM_READ(dsp_portb_r) AM_WRITE(dsp_portb_w)
819   AM_RANGE(0x0a,0x0a) AM_READWRITE(dsp_porta_r,dsp_porta_w)
820   AM_RANGE(0x0b,0x0b) AM_READWRITE(dsp_portb_r,dsp_portb_w)
820821   AM_RANGE(0x0c,0x0c) AM_WRITE(dsp_portc_w)
821822   AM_RANGE(0x0f,0x0f) AM_READ(dsp_portf_r)
822   AM_RANGE(TMS32025_HOLD,  TMS32025_HOLD)  AM_READ( SMH_NOP )
823   AM_RANGE(TMS32025_HOLDA, TMS32025_HOLDA) AM_WRITE( SMH_NOP )
823   AM_RANGE(TMS32025_HOLD,  TMS32025_HOLD)  AM_READNOP
824   AM_RANGE(TMS32025_HOLDA, TMS32025_HOLDA) AM_WRITENOP
824825   AM_RANGE(TMS32025_XF,    TMS32025_XF)    AM_WRITE( dsp_xf_w )
825826ADDRESS_MAP_END
826827
r4679r4680
927928}
928929
929930static ADDRESS_MAP_START( slave_dsp_program, ADDRESS_SPACE_PROGRAM, 16 )
930   AM_RANGE(0x0000, 0x0fff) AM_READ(SMH_ROM) /* BIOS */
931   AM_RANGE(0x8000, 0x8fff) AM_READ(SMH_RAM) AM_WRITE(SMH_RAM)
931   AM_RANGE(0x0000, 0x0fff) AM_ROM /* BIOS */
932   AM_RANGE(0x8000, 0x8fff) AM_RAM
932933ADDRESS_MAP_END
933934
934935static ADDRESS_MAP_START( slave_dsp_data, ADDRESS_SPACE_DATA, 16 )
r4679r4680
936937ADDRESS_MAP_END
937938
938939static ADDRESS_MAP_START( slave_dsp_io, ADDRESS_SPACE_IO, 16 )
939   AM_RANGE(0x00,0x00) AM_READ(slave_port0_r) AM_WRITE(slave_port0_w)
940   AM_RANGE(0x00,0x00) AM_READWRITE(slave_port0_r,slave_port0_w)
940941   AM_RANGE(0x02,0x02) AM_READ(slave_port2_r)
941   AM_RANGE(0x03,0x03) AM_READ(slave_port3_r) AM_WRITE(slave_port3_w)
942   AM_RANGE(0x03,0x03) AM_READWRITE(slave_port3_r,slave_port3_w)
942943   AM_RANGE(0x0f,0x0f) AM_READ(slave_portf_r)
943944   AM_RANGE(TMS32025_HOLD,  TMS32025_HOLD)  AM_READNOP
944945   AM_RANGE(TMS32025_HOLDA, TMS32025_HOLDA) AM_WRITENOP
r4679r4680
11051106/*************************************************************/
11061107/* MASTER 68000 CPU Memory declarations                      */
11071108/*************************************************************/
1109
1110#define NAMCO21_68K_COMMON \
1111   AM_RANGE(0x200000, 0x20ffff) AM_READWRITE(dspram16_r,dspram16_w) AM_BASE(&namcos21_dspram16) \
1112   AM_RANGE(0x280000, 0x280001) AM_WRITENOP /* written once on startup */ \
1113   AM_RANGE(0x400000, 0x400001) AM_WRITE(pointram_control_w) \
1114   AM_RANGE(0x440000, 0x440001) AM_READWRITE(pointram_data_r,pointram_data_w) \
1115   AM_RANGE(0x440002, 0x47ffff) AM_WRITENOP /* (?) Air Combat */ \
1116   AM_RANGE(0x480000, 0x4807ff) AM_READWRITE(namcos21_depthcue_r,namcos21_depthcue_w) /* Air Combat */ \
1117   AM_RANGE(0x700000, 0x71ffff) AM_READWRITE(namco_obj16_r,namco_obj16_w) \
1118   AM_RANGE(0x720000, 0x720007) AM_READWRITE(namco_spritepos16_r,namco_spritepos16_w) \
1119   AM_RANGE(0x740000, 0x75ffff) AM_READWRITE(paletteram16_r,paletteram16_w) AM_BASE(&paletteram16) \
1120   AM_RANGE(0x760000, 0x760001) AM_READWRITE(namcos21_video_enable_r,namcos21_video_enable_w) \
1121   AM_RANGE(0x800000, 0x8fffff) AM_READ(datarom_r) \
1122   AM_RANGE(0x900000, 0x90ffff) AM_READWRITE(shareram1_r,shareram1_w) AM_BASE(&mpSharedRAM1) \
1123   AM_RANGE(0xa00000, 0xa00fff) AM_READWRITE(namcos2_68k_dualportram_word_r,namcos2_68k_dualportram_word_w) \
1124   AM_RANGE(0xb00000, 0xb03fff) AM_READWRITE(NAMCO_C139_SCI_buffer_r,NAMCO_C139_SCI_buffer_w) \
1125   AM_RANGE(0xb80000, 0xb8000f) AM_READWRITE(NAMCO_C139_SCI_register_r,NAMCO_C139_SCI_register_w) \
1126   AM_RANGE(0xc00000, 0xcfffff) AM_READ(data2_r) /* Cyber Sled */ \
1127   AM_RANGE(0xd00000, 0xdfffff) AM_READ(data2_r) \
1128
11081129static ADDRESS_MAP_START( namcos21_68k_master, ADDRESS_SPACE_PROGRAM, 16 )
1109   AM_RANGE(0x000000, 0x0fffff) AM_READ(SMH_ROM) AM_WRITE(SMH_ROM)
1110   AM_RANGE(0x100000, 0x10ffff) AM_READ(SMH_RAM) AM_WRITE(SMH_RAM) /* private work RAM */
1111   AM_RANGE(0x180000, 0x183fff) AM_READ(NAMCOS2_68K_eeprom_R) AM_WRITE(NAMCOS2_68K_eeprom_W)// AM_BASE(&namcos2_eeprom) AM_SIZE(&namcos2_eeprom_size)
1112   AM_RANGE(0x1c0000, 0x1fffff) AM_READ(namcos2_68k_master_C148_r) AM_WRITE(namcos2_68k_master_C148_w)
1130   AM_RANGE(0x000000, 0x0fffff) AM_ROM
1131   AM_RANGE(0x100000, 0x10ffff) AM_RAM /* private work RAM */
1132   AM_RANGE(0x180000, 0x183fff) AM_READWRITE(NAMCOS2_68K_eeprom_R,NAMCOS2_68K_eeprom_W)// AM_BASE(&namcos2_eeprom) AM_SIZE(&namcos2_eeprom_size)
1133   AM_RANGE(0x1c0000, 0x1fffff) AM_READWRITE(namcos2_68k_master_C148_r,namcos2_68k_master_C148_w)
1134   NAMCO21_68K_COMMON
11131135ADDRESS_MAP_END
11141136
11151137static ADDRESS_MAP_START( namcos21_68k_slave, ADDRESS_SPACE_PROGRAM, 16 )
1116   AM_RANGE(0x000000, 0x07ffff) AM_READ(SMH_ROM) AM_WRITE(SMH_ROM)
1117   AM_RANGE(0x100000, 0x13ffff) AM_READ(SMH_RAM) AM_WRITE(SMH_RAM) /* private work RAM */
1118   AM_RANGE(0x1c0000, 0x1fffff) AM_READ(namcos2_68k_slave_C148_r) AM_WRITE(namcos2_68k_slave_C148_w)
1138   AM_RANGE(0x000000, 0x07ffff) AM_ROM
1139   AM_RANGE(0x100000, 0x13ffff) AM_RAM /* private work RAM */
1140   AM_RANGE(0x1c0000, 0x1fffff) AM_READWRITE(namcos2_68k_slave_C148_r,namcos2_68k_slave_C148_w)
1141   NAMCO21_68K_COMMON
11191142ADDRESS_MAP_END
11201143
1121static ADDRESS_MAP_START( namcos21_68k_common, ADDRESS_SPACE_PROGRAM, 16 )
1122   AM_RANGE(0x200000, 0x20ffff) AM_READ(dspram16_r) AM_WRITE(dspram16_w) AM_BASE(&namcos21_dspram16)
1123   AM_RANGE(0x280000, 0x280001) AM_WRITENOP /* written once on startup */
1124   AM_RANGE(0x400000, 0x400001) AM_WRITE(pointram_control_w)
1125   AM_RANGE(0x440000, 0x440001) AM_READ(pointram_data_r) AM_WRITE(pointram_data_w)
1126   AM_RANGE(0x440002, 0x47ffff) AM_WRITENOP /* (?) Air Combat */
1127   AM_RANGE(0x480000, 0x4807ff) AM_WRITE(namcos21_depthcue_w) AM_READ(namcos21_depthcue_r) /* Air Combat */
1128   AM_RANGE(0x700000, 0x71ffff) AM_READ(namco_obj16_r) AM_WRITE(namco_obj16_w)
1129   AM_RANGE(0x720000, 0x720007) AM_READ(namco_spritepos16_r) AM_WRITE(namco_spritepos16_w)
1130   AM_RANGE(0x740000, 0x75ffff) AM_READ(paletteram16_r ) AM_WRITE(paletteram16_w) AM_BASE(&paletteram16)
1131   AM_RANGE(0x760000, 0x760001) AM_READ(namcos21_video_enable_r) AM_WRITE(namcos21_video_enable_w)
1132   AM_RANGE(0x800000, 0x8fffff) AM_READ(datarom_r)
1133   AM_RANGE(0x900000, 0x90ffff) AM_READ(shareram1_r) AM_WRITE(shareram1_w) AM_BASE(&mpSharedRAM1)
1134   AM_RANGE(0xa00000, 0xa00fff) AM_READ(namcos2_68k_dualportram_word_r) AM_WRITE(namcos2_68k_dualportram_word_w)
1135   AM_RANGE(0xb00000, 0xb03fff) AM_READ(NAMCO_C139_SCI_buffer_r) AM_WRITE(NAMCO_C139_SCI_buffer_w)
1136   AM_RANGE(0xb80000, 0xb8000f) AM_READ(NAMCO_C139_SCI_register_r) AM_WRITE(NAMCO_C139_SCI_register_w)
1137   AM_RANGE(0xc00000, 0xcfffff) AM_READ(data2_r) /* Cyber Sled */
1138   AM_RANGE(0xd00000, 0xdfffff) AM_READ(data2_r)
1139ADDRESS_MAP_END
11401144
11411145/*************************************************************
11421146 * Winning Run is prototype "System21" hardware.
r4679r4680
12761280}
12771281
12781282static ADDRESS_MAP_START( winrun_dsp_program, ADDRESS_SPACE_PROGRAM, 16 )
1279   AM_RANGE(0x0000, 0x0fff) AM_READ(SMH_ROM)
1283   AM_RANGE(0x0000, 0x0fff) AM_ROM
12801284ADDRESS_MAP_END
12811285
12821286static ADDRESS_MAP_START( winrun_dsp_data, ADDRESS_SPACE_DATA, 16 )
1283   AM_RANGE( 0x2000, 0x200f ) AM_READ(winrun_cuskey_r) AM_WRITE(winrun_cuskey_w)
1284   AM_RANGE( 0x4000, 0x4fff ) AM_READ(winrun_dspcomram_r) AM_WRITE(winrun_dspcomram_w)
1287   AM_RANGE( 0x2000, 0x200f ) AM_READWRITE(winrun_cuskey_r,winrun_cuskey_w)
1288   AM_RANGE( 0x4000, 0x4fff ) AM_READWRITE(winrun_dspcomram_r,winrun_dspcomram_w)
12851289   AM_RANGE( 0x8000, 0xffff ) AM_READ(winrun_table_r )
12861290ADDRESS_MAP_END
12871291
12881292static ADDRESS_MAP_START( winrun_dsp_io, ADDRESS_SPACE_IO, 16 )
1289   AM_RANGE(0x08,0x09) AM_WRITE(winrun_dsp_pointrom_addr_w) AM_READ(winrun_dsp_pointrom_data_r)
1293   AM_RANGE(0x08,0x09) AM_READWRITE(winrun_dsp_pointrom_data_r,winrun_dsp_pointrom_addr_w)
12901294   AM_RANGE(0x0a,0x0a) AM_WRITE(winrun_dsp_render_w)
12911295   AM_RANGE(0x0b,0x0b) AM_WRITENOP
12921296   AM_RANGE(0x0c,0x0c) AM_WRITE(winrun_dsp_complete_w)
12931297   AM_RANGE(TMS32025_BIO,   TMS32025_BIO)   AM_READ( winrun_poly_reset_r )
1294   AM_RANGE(TMS32025_HOLD,  TMS32025_HOLD)  AM_READ( SMH_NOP )
1295   AM_RANGE(TMS32025_HOLDA, TMS32025_HOLDA) AM_WRITE( SMH_NOP )
1296   AM_RANGE(TMS32025_XF,    TMS32025_XF)    AM_WRITE( SMH_NOP )
1298   AM_RANGE(TMS32025_HOLD,  TMS32025_HOLD)  AM_READNOP
1299   AM_RANGE(TMS32025_HOLDA, TMS32025_HOLDA) AM_WRITENOP
1300   AM_RANGE(TMS32025_XF,    TMS32025_XF)    AM_WRITENOP
12971301ADDRESS_MAP_END
12981302
12991303static READ16_HANDLER( gpu_data_r )
r4679r4680
13521356}
13531357
13541358static ADDRESS_MAP_START( am_master_winrun, ADDRESS_SPACE_PROGRAM, 16 )
1355   AM_RANGE(0x000000, 0x03ffff) AM_READ(SMH_ROM) AM_WRITE(SMH_ROM)
1356   AM_RANGE(0x100000, 0x10ffff) AM_READ(SMH_RAM) AM_WRITE(SMH_RAM) /* work RAM */
1357   AM_RANGE(0x180000, 0x183fff) AM_READ(NAMCOS2_68K_eeprom_R) AM_WRITE(NAMCOS2_68K_eeprom_W)// AM_BASE(&namcos2_eeprom) AM_SIZE(&namcos2_eeprom_size)
1358   AM_RANGE(0x1c0000, 0x1fffff) AM_READ(namcos2_68k_master_C148_r) AM_WRITE(namcos2_68k_master_C148_w)
1359   AM_RANGE(0x250000, 0x25ffff) AM_READ(SMH_RAM) AM_WRITE(SMH_RAM) AM_BASE( &winrun_polydata )
1360   AM_RANGE(0x260000, 0x26ffff) AM_READ(SMH_RAM) AM_WRITE(SMH_RAM) /* unused? */
1359   AM_RANGE(0x000000, 0x03ffff) AM_ROM
1360   AM_RANGE(0x100000, 0x10ffff) AM_RAM /* work RAM */
1361   AM_RANGE(0x180000, 0x183fff) AM_READWRITE(NAMCOS2_68K_eeprom_R,NAMCOS2_68K_eeprom_W)// AM_BASE(&namcos2_eeprom) AM_SIZE(&namcos2_eeprom_size)
1362   AM_RANGE(0x1c0000, 0x1fffff) AM_READWRITE(namcos2_68k_master_C148_r,namcos2_68k_master_C148_w)
1363   AM_RANGE(0x250000, 0x25ffff) AM_RAM AM_BASE( &winrun_polydata )
1364   AM_RANGE(0x260000, 0x26ffff) AM_RAM /* unused? */
13611365   AM_RANGE(0x280000, 0x281fff) AM_WRITE(winrun_dspbios_w) AM_BASE(&winrun_dspbios)
1362   AM_RANGE(0x380000, 0x38000f) AM_READ(winrun_dspcomram_control_r) AM_WRITE(winrun_dspcomram_control_w)
1363   AM_RANGE(0x3c0000, 0x3c1fff) AM_READ(winrun_68k_dspcomram_r) AM_WRITE(winrun_68k_dspcomram_w)
1366   AM_RANGE(0x380000, 0x38000f) AM_READWRITE(winrun_dspcomram_control_r,winrun_dspcomram_control_w)
1367   AM_RANGE(0x3c0000, 0x3c1fff) AM_READWRITE(winrun_68k_dspcomram_r,winrun_68k_dspcomram_w)
13641368   AM_RANGE(0x400000, 0x400001) AM_WRITE(pointram_control_w)
1365   AM_RANGE(0x440000, 0x440001) AM_READ(pointram_data_r) AM_WRITE(pointram_data_w)
1366   AM_RANGE(0x600000, 0x60ffff) AM_READ(winrun_gpucomram_r) AM_WRITE(winrun_gpucomram_w)
1369   AM_RANGE(0x440000, 0x440001) AM_READWRITE(pointram_data_r,pointram_data_w)
1370   AM_RANGE(0x600000, 0x60ffff) AM_READWRITE(winrun_gpucomram_r,winrun_gpucomram_w)
13671371   AM_RANGE(0x800000, 0x87ffff) AM_READ(datarom_r)
1368   AM_RANGE(0x900000, 0x90ffff) AM_READ(shareram1_r) AM_WRITE(shareram1_w) AM_BASE(&mpSharedRAM1)
1369   AM_RANGE(0xa00000, 0xa00fff) AM_READ(namcos2_68k_dualportram_word_r) AM_WRITE(namcos2_68k_dualportram_word_w)
1370   AM_RANGE(0xb00000, 0xb03fff) AM_READ(NAMCO_C139_SCI_buffer_r) AM_WRITE(NAMCO_C139_SCI_buffer_w)
1371   AM_RANGE(0xb80000, 0xb8000f) AM_READ(NAMCO_C139_SCI_register_r) AM_WRITE(NAMCO_C139_SCI_register_w)
1372   AM_RANGE(0x900000, 0x90ffff) AM_READWRITE(shareram1_r,shareram1_w) AM_BASE(&mpSharedRAM1)
1373   AM_RANGE(0xa00000, 0xa00fff) AM_READWRITE(namcos2_68k_dualportram_word_r,namcos2_68k_dualportram_word_w)
1374   AM_RANGE(0xb00000, 0xb03fff) AM_READWRITE(NAMCO_C139_SCI_buffer_r,NAMCO_C139_SCI_buffer_w)
1375   AM_RANGE(0xb80000, 0xb8000f) AM_READWRITE(NAMCO_C139_SCI_register_r,NAMCO_C139_SCI_register_w)
13721376ADDRESS_MAP_END
13731377
13741378static ADDRESS_MAP_START( am_slave_winrun, ADDRESS_SPACE_PROGRAM, 16 )
1375   AM_RANGE(0x000000, 0x03ffff) AM_READ(SMH_ROM) AM_WRITE(SMH_ROM)
1376   AM_RANGE(0x100000, 0x13ffff) AM_READ(SMH_RAM) AM_WRITE(SMH_RAM)
1377   AM_RANGE(0x1c0000, 0x1fffff) AM_READ(namcos2_68k_slave_C148_r) AM_WRITE(namcos2_68k_slave_C148_w)
1378   AM_RANGE(0x600000, 0x60ffff) AM_READ(winrun_gpucomram_r) AM_WRITE(winrun_gpucomram_w)
1379   AM_RANGE(0x000000, 0x03ffff) AM_ROM
1380   AM_RANGE(0x100000, 0x13ffff) AM_RAM
1381   AM_RANGE(0x1c0000, 0x1fffff) AM_READWRITE(namcos2_68k_slave_C148_r,namcos2_68k_slave_C148_w)
1382   AM_RANGE(0x600000, 0x60ffff) AM_READWRITE(winrun_gpucomram_r,winrun_gpucomram_w)
13791383   AM_RANGE(0x800000, 0x87ffff) AM_READ(datarom_r)
1380   AM_RANGE(0x900000, 0x90ffff) AM_READ(shareram1_r) AM_WRITE(shareram1_w)
1381   AM_RANGE(0xa00000, 0xa00fff) AM_READ(namcos2_68k_dualportram_word_r) AM_WRITE(namcos2_68k_dualportram_word_w)
1382   AM_RANGE(0xb00000, 0xb03fff) AM_READ(NAMCO_C139_SCI_buffer_r) AM_WRITE(NAMCO_C139_SCI_buffer_w)
1383   AM_RANGE(0xb80000, 0xb8000f) AM_READ(NAMCO_C139_SCI_register_r) AM_WRITE(NAMCO_C139_SCI_register_w)
1384   AM_RANGE(0x900000, 0x90ffff) AM_READWRITE(shareram1_r,shareram1_w)
1385   AM_RANGE(0xa00000, 0xa00fff) AM_READWRITE(namcos2_68k_dualportram_word_r,namcos2_68k_dualportram_word_w)
1386   AM_RANGE(0xb00000, 0xb03fff) AM_READWRITE(NAMCO_C139_SCI_buffer_r,NAMCO_C139_SCI_buffer_w)
1387   AM_RANGE(0xb80000, 0xb8000f) AM_READWRITE(NAMCO_C139_SCI_register_r,NAMCO_C139_SCI_register_w)
13841388ADDRESS_MAP_END
13851389
13861390static ADDRESS_MAP_START( am_gpu_winrun, ADDRESS_SPACE_PROGRAM, 16 )
1387   AM_RANGE(0x000000, 0x07ffff) AM_READ(SMH_ROM) AM_WRITE(SMH_ROM)
1388   AM_RANGE(0x100000, 0x100001) AM_READ(winrun_gpu_color_r) AM_WRITE(winrun_gpu_color_w) /* ? */
1389   AM_RANGE(0x180000, 0x19ffff) AM_READ(SMH_RAM) AM_WRITE(SMH_RAM) /* work RAM */
1390   AM_RANGE(0x1c0000, 0x1fffff) AM_READ(namcos2_68k_gpu_C148_r) AM_WRITE(namcos2_68k_gpu_C148_w)
1391   AM_RANGE(0x200000, 0x20ffff) AM_READ(SMH_RAM) AM_WRITE(SMH_RAM) AM_BASE( &winrun_gpucomram )
1392   AM_RANGE(0x400000, 0x41ffff) AM_READ(paletteram16_r) AM_WRITE(paletteram16_w) AM_BASE( &paletteram16 )
1391   AM_RANGE(0x000000, 0x07ffff) AM_ROM
1392   AM_RANGE(0x100000, 0x100001) AM_READWRITE(winrun_gpu_color_r,winrun_gpu_color_w) /* ? */
1393   AM_RANGE(0x180000, 0x19ffff) AM_RAM /* work RAM */
1394   AM_RANGE(0x1c0000, 0x1fffff) AM_READWRITE(namcos2_68k_gpu_C148_r,namcos2_68k_gpu_C148_w)
1395   AM_RANGE(0x200000, 0x20ffff) AM_RAM AM_BASE( &winrun_gpucomram )
1396   AM_RANGE(0x400000, 0x41ffff) AM_READWRITE(paletteram16_r,paletteram16_w) AM_BASE( &paletteram16 )
13931397   AM_RANGE(0x600000, 0x6fffff) AM_READ(gpu_data_r)
1394   AM_RANGE(0xc00000, 0xcfffff) AM_READ(winrun_gpu_videoram_r) AM_WRITE(winrun_gpu_videoram_w)
1395   AM_RANGE(0xd00000, 0xd0000f) AM_READ(winrun_gpu_register_r) AM_WRITE(winrun_gpu_register_w)
1398   AM_RANGE(0xc00000, 0xcfffff) AM_READWRITE(winrun_gpu_videoram_r,winrun_gpu_videoram_w)
1399   AM_RANGE(0xd00000, 0xd0000f) AM_READWRITE(winrun_gpu_register_r,winrun_gpu_register_w)
13961400//  AM_RANGE(0xe0000c, 0xe0000d) POSIRQ
13971401ADDRESS_MAP_END
13981402
1403
13991404/*************************************************************/
14001405/* SOUND 6809 CPU Memory declarations                        */
14011406/*************************************************************/
14021407
1403static ADDRESS_MAP_START( readmem_sound, ADDRESS_SPACE_PROGRAM, 8 )
1404   AM_RANGE(0x0000, 0x3fff) AM_READ(BANKED_SOUND_ROM_R) /* banked */
1405   AM_RANGE(0x4000, 0x4001) AM_DEVREAD("ym", ym2151_r)
1406   AM_RANGE(0x5000, 0x6fff) AM_DEVREAD("c140", c140_r)
1407   AM_RANGE(0x7000, 0x77ff) AM_READ(namcos2_dualportram_byte_r)
1408   AM_RANGE(0x7800, 0x7fff) AM_READ(namcos2_dualportram_byte_r)   /* mirror */
1409   AM_RANGE(0x8000, 0x9fff) AM_READ(SMH_RAM)
1410   AM_RANGE(0xd000, 0xffff) AM_READ(SMH_ROM)
1411ADDRESS_MAP_END
1412
1413static ADDRESS_MAP_START( writemem_sound, ADDRESS_SPACE_PROGRAM, 8 )
1408static ADDRESS_MAP_START( am_sound_winrun, ADDRESS_SPACE_PROGRAM, 8 )
1409   AM_RANGE(0x0000, 0x3fff) AM_ROMBANK(6) /* banked */
14141410   AM_RANGE(0x3000, 0x3003) AM_WRITENOP /* ? */
1415   AM_RANGE(0x0000, 0x3fff) AM_WRITE(SMH_ROM)
1416   AM_RANGE(0x4000, 0x4001) AM_DEVWRITE("ym", ym2151_w)
1417   AM_RANGE(0x5000, 0x6fff) AM_DEVWRITE("c140", c140_w)
1418   AM_RANGE(0x7000, 0x77ff) AM_WRITE(namcos2_dualportram_byte_w) AM_BASE(&mpDualPortRAM)
1419   AM_RANGE(0x7800, 0x7fff) AM_WRITE(namcos2_dualportram_byte_w) /* mirror */
1420   AM_RANGE(0x8000, 0x9fff) AM_WRITE(SMH_RAM)
1411   AM_RANGE(0x4000, 0x4001) AM_DEVREADWRITE("ym", ym2151_r,ym2151_w)
1412   AM_RANGE(0x5000, 0x6fff) AM_DEVREADWRITE("c140", c140_r,c140_w)
1413   AM_RANGE(0x7000, 0x77ff) AM_READWRITE(namcos2_dualportram_byte_r,namcos2_dualportram_byte_w) AM_BASE(&mpDualPortRAM)
1414   AM_RANGE(0x7800, 0x7fff) AM_READWRITE(namcos2_dualportram_byte_r,namcos2_dualportram_byte_w) /* mirror */
1415   AM_RANGE(0x8000, 0x9fff) AM_RAM
14211416   AM_RANGE(0xa000, 0xbfff) AM_WRITENOP /* amplifier enable on 1st write */
14221417   AM_RANGE(0xc000, 0xc001) AM_WRITE(namcos2_sound_bankselect_w)
14231418   AM_RANGE(0xd001, 0xd001) AM_WRITENOP /* watchdog */
1419   AM_RANGE(0xd000, 0xffff) AM_ROM
14241420   AM_RANGE(0xc000, 0xffff) AM_WRITENOP /* avoid debug log noise; games write frequently to 0xe000 */
14251421ADDRESS_MAP_END
14261422
1423
14271424/*************************************************************/
14281425/* I/O HD63705 MCU Memory declarations                       */
14291426/*************************************************************/
14301427
1431static ADDRESS_MAP_START( readmem_mcu, ADDRESS_SPACE_PROGRAM, 8 )
1428static ADDRESS_MAP_START( am_mcu_winrun, ADDRESS_SPACE_PROGRAM, 8 )
14321429   AM_RANGE(0x0000, 0x0000) AM_READNOP
14331430   AM_RANGE(0x0001, 0x0001) AM_READ_PORT("PORTB")         /* p1,p2 start */
14341431   AM_RANGE(0x0002, 0x0002) AM_READ_PORT("PORTC")         /* coins */
1435   AM_RANGE(0x0003, 0x0003) AM_READ(namcos2_mcu_port_d_r)
1432   AM_RANGE(0x0003, 0x0003) AM_READWRITE(namcos2_mcu_port_d_r,namcos2_mcu_port_d_w)
14361433   AM_RANGE(0x0007, 0x0007) AM_READ_PORT("PORTH")         /* fire buttons */
1437   AM_RANGE(0x0010, 0x0010) AM_READ(namcos2_mcu_analog_ctrl_r)
1438   AM_RANGE(0x0011, 0x0011) AM_READ(namcos2_mcu_analog_port_r)
1439   AM_RANGE(0x0008, 0x003f) AM_READ(SMH_RAM)
1440   AM_RANGE(0x0040, 0x01bf) AM_READ(SMH_RAM)
1441   AM_RANGE(0x01c0, 0x1fff) AM_READ(SMH_ROM)
1434   AM_RANGE(0x0010, 0x0010) AM_READWRITE(namcos2_mcu_analog_ctrl_r,namcos2_mcu_analog_ctrl_w)
1435   AM_RANGE(0x0011, 0x0011) AM_READWRITE(namcos2_mcu_analog_port_r,namcos2_mcu_analog_port_w)
1436   AM_RANGE(0x0000, 0x003f) AM_RAM
1437   AM_RANGE(0x0040, 0x01bf) AM_RAM
1438   AM_RANGE(0x01c0, 0x1fff) AM_ROM
14421439   AM_RANGE(0x2000, 0x2000) AM_READ_PORT("DSW")
14431440   AM_RANGE(0x3000, 0x3000) AM_READ_PORT("DIAL0")
14441441   AM_RANGE(0x3001, 0x3001) AM_READ_PORT("DIAL1")
14451442   AM_RANGE(0x3002, 0x3002) AM_READ_PORT("DIAL2")
14461443   AM_RANGE(0x3003, 0x3003) AM_READ_PORT("DIAL3")
1447   AM_RANGE(0x5000, 0x57ff) AM_READ(namcos2_dualportram_byte_r)
1444   AM_RANGE(0x5000, 0x57ff) AM_READWRITE(namcos2_dualportram_byte_r,namcos2_dualportram_byte_w) AM_BASE(&mpDualPortRAM)
14481445   AM_RANGE(0x6000, 0x6fff) AM_READNOP            /* watchdog */
1449   AM_RANGE(0x8000, 0xffff) AM_READ(SMH_ROM)
1446   AM_RANGE(0x8000, 0xffff) AM_ROM
14501447ADDRESS_MAP_END
14511448
1452static ADDRESS_MAP_START( writemem_mcu, ADDRESS_SPACE_PROGRAM, 8 )
1453   AM_RANGE(0x0003, 0x0003) AM_WRITE(namcos2_mcu_port_d_w)
1454   AM_RANGE(0x0010, 0x0010) AM_WRITE(namcos2_mcu_analog_ctrl_w)
1455   AM_RANGE(0x0011, 0x0011) AM_WRITE(namcos2_mcu_analog_port_w)
1456   AM_RANGE(0x0000, 0x003f) AM_WRITE(SMH_RAM)
1457   AM_RANGE(0x0040, 0x01bf) AM_WRITE(SMH_RAM)
1458   AM_RANGE(0x01c0, 0x1fff) AM_WRITE(SMH_ROM)
1459   AM_RANGE(0x5000, 0x57ff) AM_WRITE(namcos2_dualportram_byte_w) AM_BASE(&mpDualPortRAM)
1460   AM_RANGE(0x8000, 0xffff) AM_WRITE(SMH_ROM)
1461ADDRESS_MAP_END
14621449
14631450////////////////////////////////////////////////////////////////////////////////
14641451////////////////////////////////////////////////////////////////////////////////
14651452////////////////////////////////////////////////////////////////////////////////
14661453////////////////////////////////////////////////////////////////////////////////
14671454
1468static ADDRESS_MAP_START( driveyes_68k_master, ADDRESS_SPACE_PROGRAM, 16 )
1469   AM_RANGE(0x000000, 0x03ffff) AM_READ(SMH_ROM) AM_WRITE(SMH_ROM)
1470   AM_RANGE(0x100000, 0x10ffff) AM_READ(SMH_RAM) AM_WRITE(SMH_RAM) /* private work RAM */
1471   AM_RANGE(0x180000, 0x183fff) AM_READ(NAMCOS2_68K_eeprom_R) AM_WRITE(NAMCOS2_68K_eeprom_W)// AM_BASE(&namcos2_eeprom) AM_SIZE(&namcos2_eeprom_size)
1472   AM_RANGE(0x1c0000, 0x1fffff) AM_READ(namcos2_68k_master_C148_r) AM_WRITE(namcos2_68k_master_C148_w)
1455#define DRIVEYES_68K_COMMON \
1456   AM_RANGE(0x700000, 0x71ffff) AM_READWRITE(namco_obj16_r,namco_obj16_w) \
1457   AM_RANGE(0x720000, 0x720007) AM_READWRITE(namco_spritepos16_r,namco_spritepos16_w) \
1458   AM_RANGE(0x740000, 0x75ffff) AM_READWRITE(paletteram16_r,paletteram16_w) AM_BASE(&paletteram16) \
1459   AM_RANGE(0x760000, 0x760001) AM_READWRITE(namcos21_video_enable_r,namcos21_video_enable_w) \
1460   AM_RANGE(0x800000, 0x8fffff) AM_READ(datarom_r) \
1461   AM_RANGE(0x900000, 0x90ffff) AM_READWRITE(shareram1_r,shareram1_w) AM_BASE(&mpSharedRAM1) \
1462   AM_RANGE(0xa00000, 0xa00fff) AM_READWRITE(namcos2_68k_dualportram_word_r,namcos2_68k_dualportram_word_w) \
1463   AM_RANGE(0xb00000, 0xb03fff) AM_READWRITE(NAMCO_C139_SCI_buffer_r,NAMCO_C139_SCI_buffer_w) \
1464   AM_RANGE(0xb80000, 0xb8000f) AM_READWRITE(NAMCO_C139_SCI_register_r,NAMCO_C139_SCI_register_w) \
14731465
1474   AM_RANGE(0x250000, 0x25ffff) AM_READ(SMH_RAM) AM_WRITE(SMH_RAM) AM_BASE( &winrun_polydata )
1466
1467static ADDRESS_MAP_START( driveyes_68k_master, ADDRESS_SPACE_PROGRAM, 16 )
1468   AM_RANGE(0x000000, 0x03ffff) AM_ROM
1469   AM_RANGE(0x100000, 0x10ffff) AM_RAM /* private work RAM */
1470   AM_RANGE(0x180000, 0x183fff) AM_READWRITE(NAMCOS2_68K_eeprom_R,NAMCOS2_68K_eeprom_W)// AM_BASE(&namcos2_eeprom) AM_SIZE(&namcos2_eeprom_size)
1471   AM_RANGE(0x1c0000, 0x1fffff) AM_READWRITE(namcos2_68k_master_C148_r,namcos2_68k_master_C148_w)
1472   AM_RANGE(0x250000, 0x25ffff) AM_RAM AM_BASE( &winrun_polydata )
14751473   AM_RANGE(0x280000, 0x281fff) AM_WRITE(winrun_dspbios_w) AM_BASE(&winrun_dspbios)
1476   AM_RANGE(0x380000, 0x38000f) AM_READ(winrun_dspcomram_control_r) AM_WRITE(winrun_dspcomram_control_w)
1477   AM_RANGE(0x3c0000, 0x3c1fff) AM_READ(winrun_68k_dspcomram_r) AM_WRITE(winrun_68k_dspcomram_w)
1474   AM_RANGE(0x380000, 0x38000f) AM_READWRITE(winrun_dspcomram_control_r,winrun_dspcomram_control_w)
1475   AM_RANGE(0x3c0000, 0x3c1fff) AM_READWRITE(winrun_68k_dspcomram_r,winrun_68k_dspcomram_w)
14781476   AM_RANGE(0x400000, 0x400001) AM_WRITE(pointram_control_w)
1479   AM_RANGE(0x440000, 0x440001) AM_READ(pointram_data_r) AM_WRITE(pointram_data_w)
1477   AM_RANGE(0x440000, 0x440001) AM_READWRITE(pointram_data_r,pointram_data_w)
1478   DRIVEYES_68K_COMMON
14801479ADDRESS_MAP_END
14811480
14821481static ADDRESS_MAP_START( driveyes_68k_slave, ADDRESS_SPACE_PROGRAM, 16 )
1483   AM_RANGE(0x000000, 0x03ffff) AM_READ(SMH_ROM) AM_WRITE(SMH_ROM)
1484   AM_RANGE(0x100000, 0x10ffff) AM_READ(SMH_RAM) AM_WRITE(SMH_RAM) /* private work RAM */
1482   AM_RANGE(0x000000, 0x03ffff) AM_ROM
1483   AM_RANGE(0x100000, 0x10ffff) AM_RAM /* private work RAM */
14851484   AM_RANGE(0x1c0000, 0x1fffff) AM_READ(namcos2_68k_slave_C148_r) AM_WRITE(namcos2_68k_slave_C148_w)
1485   DRIVEYES_68K_COMMON
14861486ADDRESS_MAP_END
14871487
1488static ADDRESS_MAP_START( driveyes_68k_common, ADDRESS_SPACE_PROGRAM, 16 )
1489   AM_RANGE(0x700000, 0x71ffff) AM_READ(namco_obj16_r) AM_WRITE(namco_obj16_w)
1490   AM_RANGE(0x720000, 0x720007) AM_READ(namco_spritepos16_r) AM_WRITE(namco_spritepos16_w)
1491   AM_RANGE(0x740000, 0x75ffff) AM_READ(paletteram16_r ) AM_WRITE(paletteram16_w) AM_BASE(&paletteram16)
1492   AM_RANGE(0x760000, 0x760001) AM_READ(namcos21_video_enable_r) AM_WRITE(namcos21_video_enable_w)
1493   AM_RANGE(0x800000, 0x8fffff) AM_READ(datarom_r)
1494   AM_RANGE(0x900000, 0x90ffff) AM_READ(shareram1_r) AM_WRITE(shareram1_w) AM_BASE(&mpSharedRAM1)
1495   AM_RANGE(0xa00000, 0xa00fff) AM_READ(namcos2_68k_dualportram_word_r) AM_WRITE(namcos2_68k_dualportram_word_w)
1496   AM_RANGE(0xb00000, 0xb03fff) AM_READ(NAMCO_C139_SCI_buffer_r) AM_WRITE(NAMCO_C139_SCI_buffer_w)
1497   AM_RANGE(0xb80000, 0xb8000f) AM_READ(NAMCO_C139_SCI_register_r) AM_WRITE(NAMCO_C139_SCI_register_w)
1498ADDRESS_MAP_END
14991488
15001489static const gfx_layout tile_layout =
15011490{
r4679r4680
15361525
15371526static MACHINE_DRIVER_START( s21base )
15381527   MDRV_CPU_ADD("maincpu", M68000,12288000) /* Master */
1539   MDRV_CPU_PROGRAM_MAP(namcos21_68k_master, namcos21_68k_common)
1528   MDRV_CPU_PROGRAM_MAP(namcos21_68k_master, 0)
15401529   MDRV_CPU_VBLANK_INT("screen", namcos2_68k_master_vblank)
15411530
15421531   MDRV_CPU_ADD("slave", M68000,12288000) /* Slave */
1543   MDRV_CPU_PROGRAM_MAP(namcos21_68k_slave, namcos21_68k_common)
1532   MDRV_CPU_PROGRAM_MAP(namcos21_68k_slave, 0)
15441533   MDRV_CPU_VBLANK_INT("screen", namcos2_68k_slave_vblank)
15451534
15461535   MDRV_CPU_ADD("audiocpu", M6809,3072000) /* Sound */
1547   MDRV_CPU_PROGRAM_MAP(readmem_sound,writemem_sound)
1536   MDRV_CPU_PROGRAM_MAP(am_sound_winrun,0)
15481537   MDRV_CPU_VBLANK_INT_HACK(irq0_line_hold,2)
15491538   MDRV_CPU_PERIODIC_INT(irq1_line_hold,120)
15501539
15511540   MDRV_CPU_ADD("mcu", HD63705,2048000) /* IO */
1552   MDRV_CPU_PROGRAM_MAP(readmem_mcu,writemem_mcu)
1541   MDRV_CPU_PROGRAM_MAP(am_mcu_winrun,0)
15531542   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
15541543
15551544   MDRV_CPU_ADD("dspmaster", TMS32025,24000000) /* 24 MHz? overclocked */
r4679r4680
16151604
16161605static MACHINE_DRIVER_START( driveyes )
16171606   MDRV_CPU_ADD("maincpu", M68000,12288000) /* Master */
1618   MDRV_CPU_PROGRAM_MAP(driveyes_68k_master, driveyes_68k_common)
1607   MDRV_CPU_PROGRAM_MAP(driveyes_68k_master, 0)
16191608   MDRV_CPU_VBLANK_INT("screen", namcos2_68k_master_vblank)
16201609
16211610   MDRV_CPU_ADD("slave", M68000,12288000) /* Slave */
1622   MDRV_CPU_PROGRAM_MAP(driveyes_68k_slave, driveyes_68k_common)
1611   MDRV_CPU_PROGRAM_MAP(driveyes_68k_slave, 0)
16231612   MDRV_CPU_VBLANK_INT("screen", namcos2_68k_slave_vblank)
16241613
16251614   MDRV_CPU_ADD("audiocpu", M6809,3072000) /* Sound */
1626   MDRV_CPU_PROGRAM_MAP(readmem_sound,writemem_sound)
1615   MDRV_CPU_PROGRAM_MAP(am_sound_winrun,0)
16271616   MDRV_CPU_VBLANK_INT_HACK(irq0_line_hold,2)
16281617   MDRV_CPU_PERIODIC_INT(irq1_line_hold,120)
16291618
16301619   MDRV_CPU_ADD("mcu", HD63705,2048000) /* IO */
1631   MDRV_CPU_PROGRAM_MAP(readmem_mcu,writemem_mcu)
1620   MDRV_CPU_PROGRAM_MAP(am_mcu_winrun,0)
16321621   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
16331622
16341623   MDRV_CPU_ADD("dsp", TMS32025,24000000*2) /* 24 MHz? overclocked */
r4679r4680
16781667   MDRV_CPU_VBLANK_INT("screen", namcos2_68k_slave_vblank)
16791668
16801669   MDRV_CPU_ADD("audiocpu", M6809,3072000) /* Sound */
1681   MDRV_CPU_PROGRAM_MAP(readmem_sound,writemem_sound)
1670   MDRV_CPU_PROGRAM_MAP(am_sound_winrun,0)
16821671   MDRV_CPU_VBLANK_INT_HACK(irq0_line_hold,2)
16831672   MDRV_CPU_PERIODIC_INT(irq1_line_hold,120)
16841673
16851674   MDRV_CPU_ADD("mcu", HD63705,2048000) /* IO */
1686   MDRV_CPU_PROGRAM_MAP(readmem_mcu,writemem_mcu)
1675   MDRV_CPU_PROGRAM_MAP(am_mcu_winrun,0)
16871676   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
16881677
16891678   MDRV_CPU_ADD("dsp", TMS32025,24000000) /* 24 MHz? overclocked */
r4679r4680
22022191static void namcos21_init( running_machine *machine, int game_type )
22032192{
22042193   namcos2_gametype = game_type;
2205   pointram = auto_malloc(PTRAM_SIZE);
2194   pointram = auto_alloc_array(machine, UINT8, PTRAM_SIZE);
22062195   mpDataROM = (UINT16 *)memory_region( machine, "user1" );
22072196   InitDSP(machine);
22082197   mbNeedsKickstart = 20;
r4679r4680
22192208   pMem[pc++] = 0xff80; /* b */
22202209   pMem[pc++] = 0;
22212210
2222   winrun_dspcomram = auto_malloc(sizeof(UINT16)*0x1000*2);
2211   winrun_dspcomram = auto_alloc_array(machine, UINT16, 0x1000*2);
22232212
22242213   namcos2_gametype = NAMCOS21_WINRUN91;
22252214   mpDataROM = (UINT16 *)memory_region( machine, "user1" );
2226   pointram = auto_malloc(PTRAM_SIZE);
2215   pointram = auto_alloc_array(machine, UINT8, PTRAM_SIZE);
22272216   pointram_idx = 0;
22282217   mbNeedsKickstart = 0;
22292218}
r4679r4680
22612250   int pc = 0;
22622251   pMem[pc++] = 0xff80; /* b */
22632252   pMem[pc++] = 0;
2264   winrun_dspcomram = auto_malloc(sizeof(UINT16)*0x1000*2);
2253   winrun_dspcomram = auto_alloc_array(machine, UINT16, 0x1000*2);
22652254   namcos2_gametype = NAMCOS21_DRIVERS_EYES;
22662255   mpDataROM = (UINT16 *)memory_region( machine, "user1" );
2267   pointram = auto_malloc(PTRAM_SIZE);
2256   pointram = auto_alloc_array(machine, UINT8, PTRAM_SIZE);
22682257   pointram_idx = 0;
22692258   mbNeedsKickstart = 0;
22702259}
src/mame/drivers/pgm.c
r4679r4680
349349   if (PGMARM7LOGERROR) logerror("M68K: Latch write: %04x (%04x) (%06x)\n", data & 0x0000ffff, mem_mask, cpu_get_pc(space->cpu) );
350350   COMBINE_DATA(&kov2_latchdata_68k_w);
351351
352   generic_pulse_irq_line(space->machine->cpu[2], ARM7_FIRQ_LINE);
352   generic_pulse_irq_line(cputag_get_cpu(space->machine, "prot"), ARM7_FIRQ_LINE);
353353   cpuexec_boost_interleave(space->machine, attotime_zero, ATTOTIME_IN_USEC(200));
354   cpu_spinuntil_time(space->cpu, cpu_clocks_to_attotime(space->machine->cpu[2], 200)); // give the arm time to respond (just boosting the interleave doesn't help)
354   cpu_spinuntil_time(space->cpu, cputag_clocks_to_attotime(space->machine, "prot", 200)); // give the arm time to respond (just boosting the interleave doesn't help)
355355}
356356
357357static READ16_HANDLER( arm7_ram_r )
r4679r4680
385385{
386386   if (PGMLOGERROR) logerror("Z80: reset %04x @ %04x (%06x)\n", data, mem_mask, cpu_get_pc(space->cpu));
387387
388   if(data == 0x5050) {
388   if(data == 0x5050)
389   {
389390      devtag_reset(space->machine, "ics");
390      cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_HALT, CLEAR_LINE);
391      cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_RESET, PULSE_LINE);
392      if(0) {
391      cputag_set_input_line(space->machine, "soundcpu", INPUT_LINE_HALT, CLEAR_LINE);
392      cputag_set_input_line(space->machine, "soundcpu", INPUT_LINE_RESET, PULSE_LINE);
393      if(0)
394      {
393395         FILE *out;
394396         out = fopen("z80ram.bin", "wb");
395397         fwrite(z80_mainram, 1, 65536, out);
r4679r4680
400402   {
401403      /* this might not be 100% correct, but several of the games (ddp2, puzzli2 etc. expect the z80 to be turned
402404           off during data uploads, they write here before the upload */
403      cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_HALT, ASSERT_LINE);
405      cputag_set_input_line(space->machine, "soundcpu", INPUT_LINE_HALT, ASSERT_LINE);
404406   }
405407}
406408
r4679r4680
411413
412414static WRITE16_HANDLER ( m68k_l1_w )
413415{
414   if(ACCESSING_BITS_0_7) {
416   if(ACCESSING_BITS_0_7)
417   {
415418      if (PGMLOGERROR) logerror("SL 1 m68.w %02x (%06x) IRQ\n", data & 0xff, cpu_get_pc(space->cpu));
416419      soundlatch_w(space, 0, data);
417      cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_NMI, PULSE_LINE );
420      cputag_set_input_line(space->machine, "soundcpu", INPUT_LINE_NMI, PULSE_LINE );
418421   }
419422}
420423
r4679r4680
426429
427430static void sound_irq(const device_config *device, int level)
428431{
429   cpu_set_input_line(device->machine->cpu[1], 0, level);
432   cputag_set_input_line(device->machine, "soundcpu", 0, level);
430433}
431434
432435static const ics2115_interface pgm_ics2115_interface = {
r4679r4680
885888
886889static WRITE16_HANDLER( svg_68k_nmi_w )
887890{
888   generic_pulse_irq_line(space->machine->cpu[2], ARM7_FIRQ_LINE);
891   generic_pulse_irq_line(cputag_get_cpu(space->machine, "prot"), ARM7_FIRQ_LINE);
889892   cpuexec_boost_interleave(space->machine, attotime_zero, ATTOTIME_IN_USEC(200));
890   cpu_spinuntil_time(space->cpu, cpu_clocks_to_attotime(space->machine->cpu[2], 200)); // give the arm time to respond (just boosting the interleave doesn't help)
893   cpu_spinuntil_time(space->cpu, cputag_clocks_to_attotime(space->machine, "prot", 200)); // give the arm time to respond (just boosting the interleave doesn't help)
891894}
892895
893896static WRITE16_HANDLER( svg_latch_68k_w )
r4679r4680
12591262
12601263/* only dragon world 2 NEEDs irq4, Puzzli 2 explicitly doesn't want it, what
12611264   is the source? maybe the protection device? */
1262static INTERRUPT_GEN( drgw_interrupt ) {
1265static INTERRUPT_GEN( drgw_interrupt )
1266{
12631267   if( cpu_getiloops(device) == 0 )
12641268      cpu_set_input_line(device, 6, HOLD_LINE);
12651269   else
r4679r4680
12681272
12691273static MACHINE_RESET ( pgm )
12701274{
1271   cpu_set_input_line(machine->cpu[1], INPUT_LINE_HALT, ASSERT_LINE);
1275   cputag_set_input_line(machine, "soundcpu", INPUT_LINE_HALT, ASSERT_LINE);
12721276}
12731277
12741278static MACHINE_DRIVER_START( pgm )
r4679r4680
14271431   while (pgm_sprite_a_region_allocate < needed)
14281432      pgm_sprite_a_region_allocate = pgm_sprite_a_region_allocate <<1;
14291433
1430   pgm_sprite_a_region = auto_malloc (pgm_sprite_a_region_allocate);
1434   pgm_sprite_a_region = auto_alloc_array(machine, UINT8, pgm_sprite_a_region_allocate);
14311435
14321436
14331437   for (cnt = 0 ; cnt < srcsize/2 ; cnt++)
r4679r4680
14651469{
14661470   pgm_basic_init(machine);
14671471
1468   memory_install_readwrite16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xC0400e, 0xC0400f, 0, 0, pgm_asic3_r, pgm_asic3_w);
1469   memory_install_write16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xC04000, 0xC04001, 0, 0, pgm_asic3_reg_w);
1472   memory_install_readwrite16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xC0400e, 0xC0400f, 0, 0, pgm_asic3_r, pgm_asic3_w);
1473   memory_install_write16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xC04000, 0xC04001, 0, 0, pgm_asic3_reg_w);
14701474}
14711475
14721476static void drgwld2_common_init(running_machine *machine)
r4679r4680
14791483    select and after failing in the 2nd stage (probably there are other checks
14801484    out there).
14811485    */
1482   memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xd80000, 0xd80003, 0, 0, dw2_d80000_r);
1486   memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xd80000, 0xd80003, 0, 0, dw2_d80000_r);
14831487}
14841488
14851489static DRIVER_INIT( drgw2 )
r4679r4680
15811585static void svg_basic_init(running_machine *machine)
15821586{
15831587   pgm_basic_init(machine);
1584   svg_shareram[0]=auto_malloc(0x10000);
1585   svg_shareram[1]=auto_malloc(0x10000);
1588   svg_shareram[0]=auto_alloc_array(machine, UINT32, 0x10000/4);
1589   svg_shareram[1]=auto_alloc_array(machine, UINT32, 0x10000/4);
15861590   svg_ram_sel=0;
15871591}
15881592
r4679r4680
16141618{
16151619   pgm_basic_init(machine);
16161620
1617//  memory_install_readwrite16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xda0000, 0xdaffff, 0, 0, dw3_prot_r, dw3_prot_w);
1621//  memory_install_readwrite16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xda0000, 0xdaffff, 0, 0, dw3_prot_r, dw3_prot_w);
16181622
16191623    pgm_dw3_decrypt(machine);
16201624}
r4679r4680
18571861   mem16[0x108a42/2]=0x5202;
18581862   mem16[0x108a44/2]=0x0c02;
18591863
1860   memory_install_readwrite16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xd40000, 0xd40003, 0, 0, killbld_prot_r, killbld_prot_w);
1864   memory_install_readwrite16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xd40000, 0xd40003, 0, 0, killbld_prot_r, killbld_prot_w);
18611865}
18621866
18631867static DRIVER_INIT( puzzli2 )
r4679r4680
18701874
18711875   pgm_basic_init(machine);
18721876
1873   memory_install_readwrite16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x500000, 0x500003, 0, 0, ASIC28_r16, ASIC28_w16);
1877   memory_install_readwrite16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x500000, 0x500003, 0, 0, ASIC28_r16, ASIC28_w16);
18741878
18751879   /* 0x4f0000 - ? is actually ram shared with the protection device,
18761880      the protection device provides the region code */
1877   memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x4f0000, 0x4fffff, 0, 0, sango_protram_r);
1881   memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x4f0000, 0x4fffff, 0, 0, sango_protram_r);
18781882
18791883    pgm_puzzli2_decrypt(machine);
18801884
r4679r4680
20722076{
20732077   pgm_basic_init(machine);
20742078
2075   memory_install_readwrite16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xdcb400, 0xdcb403, 0, 0, olds_r16, olds_w16);
2076   memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x8178f4, 0x8178f5, 0, 0, olds_prot_swap_r16);
2079   memory_install_readwrite16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xdcb400, 0xdcb403, 0, 0, olds_r16, olds_w16);
2080   memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x8178f4, 0x8178f5, 0, 0, olds_prot_swap_r16);
20772081}
20782082
20792083/*** Rom Loading *************************************************************/
src/mame/drivers/itgamble.c
r4679r4680
171171static MACHINE_RESET( itgamble )
172172{
173173   /* stop the CPU, we have no code for it anyway */
174   cpu_set_input_line(machine->cpu[0], INPUT_LINE_HALT, ASSERT_LINE);
174   cputag_set_input_line(machine, "maincpu", INPUT_LINE_HALT, ASSERT_LINE);
175175}
176176
177177
src/mame/drivers/iqblock.c
r4679r4680
8585
8686static WRITE8_HANDLER( iqblock_irqack_w )
8787{
88   cpu_set_input_line(space->machine->cpu[0], 0, CLEAR_LINE);
88   cputag_set_input_line(space->machine, "maincpu", 0, CLEAR_LINE);
8989}
9090
9191static READ8_HANDLER( extrarom_r )
r4679r4680
441441   paletteram_2       = rom + 0x12800;
442442   iqblock_fgvideoram = rom + 0x16800;
443443   iqblock_bgvideoram = rom + 0x17000;
444   memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xfe26, 0xfe26, 0, 0, iqblock_prot_w);
444   memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xfe26, 0xfe26, 0, 0, iqblock_prot_w);
445445   iqblock_video_type=1;
446446}
447447
r4679r4680
463463   paletteram_2       = rom + 0x12800;
464464   iqblock_fgvideoram = rom + 0x16800;
465465   iqblock_bgvideoram = rom + 0x17000;
466   memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xfe39, 0xfe39, 0, 0, grndtour_prot_w);
466   memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xfe39, 0xfe39, 0, 0, grndtour_prot_w);
467467   iqblock_video_type=0;
468468}
469469
r4679r4680
471471
472472GAME( 1993, iqblock,  0, iqblock,  iqblock, iqblock,  ROT0, "IGS", "IQ-Block", 0 )
473473GAME( 1993, grndtour, 0, iqblock,  iqblock, grndtour, ROT0, "IGS", "Grand Tour", 0 )
474
src/mame/drivers/gameplan.c
r4679r4680
9191
9292static WRITE8_DEVICE_HANDLER( io_select_w )
9393{
94   gameplan_state *state = device->machine->driver_data;
94   gameplan_state *state = (gameplan_state *)device->machine->driver_data;
9595
9696   switch (data)
9797   {
r4679r4680
108108static READ8_DEVICE_HANDLER( io_port_r )
109109{
110110   static const char *const portnames[] = { "IN0", "IN1", "IN2", "IN3", "DSW0", "DSW1" };
111   gameplan_state *state = device->machine->driver_data;
111   gameplan_state *state = (gameplan_state *)device->machine->driver_data;
112112
113113   return input_port_read(device->machine, portnames[state->current_port]);
114114}
r4679r4680
139139
140140static WRITE8_DEVICE_HANDLER( audio_reset_w )
141141{
142   gameplan_state *state = device->machine->driver_data;
143   cpu_set_input_line(device->machine->cpu[1], INPUT_LINE_RESET, data ? CLEAR_LINE : ASSERT_LINE);
142   gameplan_state *state = (gameplan_state *)device->machine->driver_data;
143   cputag_set_input_line(device->machine, "audiocpu", INPUT_LINE_RESET, data ? CLEAR_LINE : ASSERT_LINE);
144144   if (data == 0)
145145   {
146146      device_reset(state->riot);
r4679r4680
151151
152152static WRITE8_DEVICE_HANDLER( audio_cmd_w )
153153{
154   gameplan_state *state = device->machine->driver_data;
154   gameplan_state *state = (gameplan_state *)device->machine->driver_data;
155155   riot6532_porta_in_set(state->riot, data, 0x7f);
156156}
157157
158158
159159static WRITE8_DEVICE_HANDLER( audio_trigger_w )
160160{
161   gameplan_state *state = device->machine->driver_data;
161   gameplan_state *state = (gameplan_state *)device->machine->driver_data;
162162   riot6532_porta_in_set(state->riot, data << 7, 0x80);
163163}
164164
r4679r4680
182182
183183static void r6532_irq(const device_config *device, int state)
184184{
185   cpu_set_input_line(device->machine->cpu[1], 0, state);
185   cputag_set_input_line(device->machine, "audiocpu", 0, state);
186186   if (state == ASSERT_LINE)
187187      cpuexec_boost_interleave(device->machine, attotime_zero, ATTOTIME_IN_USEC(10));
188188}
r4679r4680
190190
191191static void r6532_soundlatch_w(const device_config *device, UINT8 newdata, UINT8 olddata)
192192{
193   const address_space *space = cpu_get_address_space(device->machine->cpu[0], ADDRESS_SPACE_PROGRAM);
193   const address_space *space = cputag_get_address_space(device->machine, "maincpu", ADDRESS_SPACE_PROGRAM);
194194   soundlatch_w(space, 0, newdata);
195195}
196196
r4679r4680
214214
215215static MACHINE_START( gameplan )
216216{
217   gameplan_state *state = machine->driver_data;
217   gameplan_state *state = (gameplan_state *)machine->driver_data;
218218
219219   state->riot = devtag_get_device(machine, "riot");
220220
src/mame/drivers/capbowl.c
r4679r4680
191191
192192static WRITE8_HANDLER( capbowl_sndcmd_w )
193193{
194   cpu_set_input_line(space->machine->cpu[1], M6809_IRQ_LINE, HOLD_LINE);
194   cputag_set_input_line(space->machine, "audiocpu", M6809_IRQ_LINE, HOLD_LINE);
195195   soundlatch_w(space, offset, data);
196196}
197197
r4679r4680
206206
207207static void firqhandler(const device_config *device, int irq)
208208{
209   cpu_set_input_line(device->machine->cpu[1], 1, irq ? ASSERT_LINE : CLEAR_LINE);
209   cputag_set_input_line(device->machine, "audiocpu", 1, irq ? ASSERT_LINE : CLEAR_LINE);
210210}
211211
212212
src/mame/drivers/darius.c
r4679r4680
156156   /* bit 0 enables cpu B */
157157   /* however this fails when recovering from a save state
158158       if cpu B is disabled !! */
159   cpu_set_input_line(machine->cpu[2], INPUT_LINE_RESET, (cpua_ctrl &0x1) ? CLEAR_LINE : ASSERT_LINE);
159   cputag_set_input_line(machine, "cpub", INPUT_LINE_RESET, (cpua_ctrl &0x1) ? CLEAR_LINE : ASSERT_LINE);
160160
161161}
162162
r4679r4680
247247                     MEMORY STRUCTURES
248248***********************************************************/
249249
250static ADDRESS_MAP_START( darius_readmem, ADDRESS_SPACE_PROGRAM, 16 )
251   AM_RANGE(0x000000, 0x05ffff) AM_READ(SMH_ROM)
252   AM_RANGE(0x080000, 0x08ffff) AM_READ(SMH_RAM)      /* main RAM */
253   AM_RANGE(0xc00000, 0xc0001f) AM_READ(darius_ioc_r)   /* inputs, sound */
254   AM_RANGE(0xd00000, 0xd0ffff) AM_READ(PC080SN_word_0_r)   /* tilemaps */
255   AM_RANGE(0xd80000, 0xd80fff) AM_READ(SMH_RAM)   /* palette */
256   AM_RANGE(0xe00100, 0xe00fff) AM_RAM AM_SHARE(1) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)
257   AM_RANGE(0xe01000, 0xe02fff) AM_RAM AM_SHARE(2)
258   AM_RANGE(0xe08000, 0xe0ffff) AM_RAM_WRITE(darius_fg_layer_w) AM_SHARE(3) AM_BASE(&darius_fg_ram)
259   AM_RANGE(0xe10000, 0xe10fff) AM_READ(SMH_RAM)      /* ??? */
260ADDRESS_MAP_END
261
262static ADDRESS_MAP_START( darius_writemem, ADDRESS_SPACE_PROGRAM, 16 )
263   AM_RANGE(0x000000, 0x05ffff) AM_WRITE(SMH_ROM)
264   AM_RANGE(0x080000, 0x08ffff) AM_WRITE(SMH_RAM)
250static ADDRESS_MAP_START( darius_map, ADDRESS_SPACE_PROGRAM, 16 )
251   AM_RANGE(0x000000, 0x05ffff) AM_ROM
252   AM_RANGE(0x080000, 0x08ffff) AM_RAM                                    /* main RAM */
265253   AM_RANGE(0x0a0000, 0x0a0001) AM_WRITE(cpua_ctrl_w)
266254   AM_RANGE(0x0b0000, 0x0b0001) AM_WRITE(darius_watchdog_w)
267   AM_RANGE(0xc00000, 0xc0007f) AM_WRITE(darius_ioc_w)   /* coin ctr & lockout, sound */
268   AM_RANGE(0xd00000, 0xd0ffff) AM_WRITE(PC080SN_word_0_w)
255   AM_RANGE(0xc00000, 0xc0007f) AM_READWRITE(darius_ioc_r, darius_ioc_w)         /* inputs, sound */
256   AM_RANGE(0xd00000, 0xd0ffff) AM_READWRITE(PC080SN_word_0_r, PC080SN_word_0_w)   /* tilemaps */
269257   AM_RANGE(0xd20000, 0xd20003) AM_WRITE(PC080SN_yscroll_word_0_w)
270258   AM_RANGE(0xd40000, 0xd40003) AM_WRITE(PC080SN_xscroll_word_0_w)
271259   AM_RANGE(0xd50000, 0xd50003) AM_WRITE(PC080SN_ctrl_word_0_w)
272   AM_RANGE(0xd80000, 0xd80fff) AM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE(&paletteram16)
273   AM_RANGE(0xe10000, 0xe10fff) AM_WRITE(SMH_RAM)
260   AM_RANGE(0xd80000, 0xd80fff) AM_RAM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE(&paletteram16)/* palette */
261   AM_RANGE(0xe00100, 0xe00fff) AM_RAM AM_SHARE(1) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)
262   AM_RANGE(0xe01000, 0xe02fff) AM_RAM AM_SHARE(2)
263   AM_RANGE(0xe08000, 0xe0ffff) AM_RAM_WRITE(darius_fg_layer_w) AM_SHARE(3) AM_BASE(&darius_fg_ram)
264   AM_RANGE(0xe10000, 0xe10fff) AM_RAM                                    /* ??? */
274265ADDRESS_MAP_END
275266
276static ADDRESS_MAP_START( darius_cpub_readmem, ADDRESS_SPACE_PROGRAM, 16 )
277   AM_RANGE(0x000000, 0x03ffff) AM_READ(SMH_ROM)
278   AM_RANGE(0x040000, 0x04ffff) AM_READ(SMH_RAM)   /* local RAM */
267static ADDRESS_MAP_START( darius_cpub_map, ADDRESS_SPACE_PROGRAM, 16 )
268   AM_RANGE(0x000000, 0x03ffff) AM_ROM
269   AM_RANGE(0x040000, 0x04ffff) AM_RAM            /* local RAM */
270   AM_RANGE(0xc00000, 0xc0007f) AM_WRITE(darius_ioc_w)   /* only writes $c00050 (?) */
271   AM_RANGE(0xd80000, 0xd80fff) AM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w)
279272   AM_RANGE(0xe00100, 0xe00fff) AM_RAM AM_SHARE(1)
280273   AM_RANGE(0xe01000, 0xe02fff) AM_RAM AM_SHARE(2)
281274   AM_RANGE(0xe08000, 0xe0ffff) AM_RAM_WRITE(darius_fg_layer_w) AM_SHARE(3)
282275ADDRESS_MAP_END
283276
284static ADDRESS_MAP_START( darius_cpub_writemem, ADDRESS_SPACE_PROGRAM, 16 )
285   AM_RANGE(0x000000, 0x03ffff) AM_WRITE(SMH_ROM)
286   AM_RANGE(0x040000, 0x04ffff) AM_WRITE(SMH_RAM)
287   AM_RANGE(0xc00000, 0xc0007f) AM_WRITE(darius_ioc_w)   /* only writes $c00050 (?) */
288   AM_RANGE(0xd80000, 0xd80fff) AM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w)
289ADDRESS_MAP_END
290277
291
292278/*****************************************************
293279                        SOUND
294280*****************************************************/
r4679r4680
486472           Sound memory structures / ADPCM
487473*****************************************************/
488474
489static ADDRESS_MAP_START( darius_sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
490   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_BANK1)
491   AM_RANGE(0x8000, 0x8fff) AM_READ(SMH_RAM)
492   AM_RANGE(0x9000, 0x9001) AM_DEVREAD("ym1", ym2203_r)
493   AM_RANGE(0xa000, 0xa001) AM_DEVREAD("ym2", ym2203_r)
494   AM_RANGE(0xb000, 0xb000) AM_READNOP
495   AM_RANGE(0xb001, 0xb001) AM_READ(taitosound_slave_comm_r)
496ADDRESS_MAP_END
497
498static ADDRESS_MAP_START( darius_sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
499   AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM)
500   AM_RANGE(0x8000, 0x8fff) AM_WRITE(SMH_RAM)
501   AM_RANGE(0x9000, 0x9001) AM_DEVWRITE("ym1", ym2203_w)
502   AM_RANGE(0xa000, 0xa001) AM_DEVWRITE("ym2", ym2203_w)
503   AM_RANGE(0xb000, 0xb000) AM_WRITE(taitosound_slave_port_w)
504   AM_RANGE(0xb001, 0xb001) AM_WRITE(taitosound_slave_comm_w)
475static ADDRESS_MAP_START( darius_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
476   AM_RANGE(0x0000, 0x7fff) AM_ROMBANK(1)
477   AM_RANGE(0x8000, 0x8fff) AM_RAM
478   AM_RANGE(0x9000, 0x9001) AM_DEVREADWRITE("ym1", ym2203_r, ym2203_w)
479   AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE("ym2", ym2203_r, ym2203_w)
480   AM_RANGE(0xb000, 0xb000) AM_READWRITE(SMH_NOP, taitosound_slave_port_w)
481   AM_RANGE(0xb001, 0xb001) AM_READWRITE(taitosound_slave_comm_r, taitosound_slave_comm_w)
505482   AM_RANGE(0xc000, 0xc000) AM_WRITE(darius_fm0_pan)
506483   AM_RANGE(0xc400, 0xc400) AM_WRITE(darius_fm1_pan)
507484   AM_RANGE(0xc800, 0xc800) AM_WRITE(darius_psg0_pan)
r4679r4680
512489   AM_RANGE(0xdc00, 0xdc00) AM_WRITE(sound_bankswitch_w)
513490ADDRESS_MAP_END
514491
515static ADDRESS_MAP_START( darius_sound2_readmem, ADDRESS_SPACE_PROGRAM, 8 )
516   AM_RANGE(0x0000, 0xffff) AM_READ(SMH_ROM)
492static ADDRESS_MAP_START( darius_sound2_map, ADDRESS_SPACE_PROGRAM, 8 )
493   AM_RANGE(0x0000, 0xffff) AM_READWRITE(SMH_ROM, SMH_NOP)
517494   /* yes, no RAM */
518495ADDRESS_MAP_END
519496
520static ADDRESS_MAP_START( darius_sound2_writemem, ADDRESS_SPACE_PROGRAM, 8 )
521   AM_RANGE(0x0000, 0xffff) AM_WRITENOP   /* writes rom whenever interrupt occurs - as no stack */
522   /* yes, no RAM */
523ADDRESS_MAP_END
524497
525
526498static void darius_adpcm_int (const device_config *device)
527499{
528500   if (nmi_enable)
529      cpu_set_input_line(device->machine->cpu[3], INPUT_LINE_NMI, PULSE_LINE);
501      cputag_set_input_line(device->machine, "adpcm", INPUT_LINE_NMI, PULSE_LINE);
530502}
531503
532504static const msm5205_interface msm5205_config =
r4679r4680
803775/* handler called by the YM2203 emulator when the internal timers cause an IRQ */
804776static void irqhandler(const device_config *device, int irq)   /* assumes Z80 sandwiched between 68Ks */
805777{
806   cpu_set_input_line(device->machine->cpu[1],0,irq ? ASSERT_LINE : CLEAR_LINE);
778   cputag_set_input_line(device->machine, "audiocpu", 0, irq ? ASSERT_LINE : CLEAR_LINE);
807779}
808780
809781static const ym2203_interface ym2203_interface_1 =
r4679r4680
840812
841813   /* basic machine hardware */
842814   MDRV_CPU_ADD("maincpu", M68000,16000000/2)   /* 8 MHz ? */
843   MDRV_CPU_PROGRAM_MAP(darius_readmem,darius_writemem)
815   MDRV_CPU_PROGRAM_MAP(darius_map,0)
844816   MDRV_CPU_VBLANK_INT("lscreen", irq4_line_hold)
845817
846818   MDRV_CPU_ADD("audiocpu", Z80,8000000/2)   /* 4 MHz ? */
847   MDRV_CPU_PROGRAM_MAP(darius_sound_readmem,darius_sound_writemem)
819   MDRV_CPU_PROGRAM_MAP(darius_sound_map,0)
848820
849821   MDRV_CPU_ADD("cpub", M68000,16000000/2)   /* 8 MHz ? */
850   MDRV_CPU_PROGRAM_MAP(darius_cpub_readmem,darius_cpub_writemem)
822   MDRV_CPU_PROGRAM_MAP(darius_cpub_map,0)
851823   MDRV_CPU_VBLANK_INT("lscreen", irq4_line_hold)
852824
853825   MDRV_CPU_ADD("adpcm", Z80,8000000/2) /* 4 MHz ? */   /* ADPCM player using MSM5205 */
854   MDRV_CPU_PROGRAM_MAP(darius_sound2_readmem,darius_sound2_writemem)
826   MDRV_CPU_PROGRAM_MAP(darius_sound2_map,0)
855827   MDRV_CPU_IO_MAP(darius_sound2_io_map,0)
856828
857829   MDRV_QUANTUM_TIME(HZ(600))   /* 10 CPU slices per frame ? */
r4679r4680
12501222GAME( 1986, dariusj,  darius,   darius,   dariusj,  darius,   ROT0, "Taito Corporation", "Darius (Japan)", 0 )
12511223GAME( 1986, dariuso,  darius,   darius,   dariusj,  darius,   ROT0, "Taito Corporation", "Darius (Japan old version)", 0 )
12521224GAME( 1986, dariuse,  darius,   darius,   dariuse,  darius,   ROT0, "Taito Corporation", "Darius (Extra) (Japan)", 0 )
1253
src/mame/drivers/ssingles.c
r4679r4680
164164static ADDRESS_MAP_START( ssingles_map, ADDRESS_SPACE_PROGRAM, 8 )
165165   AM_RANGE(0x0000, 0x00ff) AM_WRITE(ssingles_videoram_w)
166166   AM_RANGE(0x0800, 0x08ff) AM_WRITE(ssingles_colorram_w)
167   AM_RANGE(0x0000, 0x1fff) AM_READ( SMH_ROM )
167   AM_RANGE(0x0000, 0x1fff) AM_ROM
168168   AM_RANGE(0xc000, 0xc000) AM_READ( c000_r )
169169   AM_RANGE(0xc001, 0xc001) AM_READWRITE( c001_r, c001_w )
170170   AM_RANGE(0x6000, 0xbfff) AM_ROM
r4679r4680
307307
308308static DRIVER_INIT(ssingles)
309309{
310   ssingles_videoram=auto_malloc(VMEM_SIZE);
311   ssingles_colorram=auto_malloc(VMEM_SIZE);
312   memset(ssingles_videoram,0,VMEM_SIZE);
313   memset(ssingles_colorram,0,VMEM_SIZE);
310   ssingles_videoram=auto_alloc_array_clear(machine, UINT8, VMEM_SIZE);
311   ssingles_colorram=auto_alloc_array_clear(machine, UINT8, VMEM_SIZE);
314312   state_save_register_global_pointer(machine, ssingles_videoram, VMEM_SIZE);
315313   state_save_register_global_pointer(machine, ssingles_colorram, VMEM_SIZE);
316314}
src/mame/drivers/kinst.c
r4679r4680
190190   }
191191
192192   /* set the fastest DRC options */
193   mips3drc_set_options(machine->cpu[0], MIPS3DRC_FASTEST_OPTIONS);
193   mips3drc_set_options(cputag_get_cpu(machine, "maincpu"), MIPS3DRC_FASTEST_OPTIONS);
194194
195195   /* configure fast RAM regions for DRC */
196   mips3drc_add_fastram(machine->cpu[0], 0x08000000, 0x087fffff, FALSE, rambase2);
197   mips3drc_add_fastram(machine->cpu[0], 0x00000000, 0x0007ffff, FALSE, rambase);
198   mips3drc_add_fastram(machine->cpu[0], 0x1fc00000, 0x1fc7ffff, TRUE,  rombase);
196   mips3drc_add_fastram(cputag_get_cpu(machine, "maincpu"), 0x08000000, 0x087fffff, FALSE, rambase2);
197   mips3drc_add_fastram(cputag_get_cpu(machine, "maincpu"), 0x00000000, 0x0007ffff, FALSE, rambase);
198   mips3drc_add_fastram(cputag_get_cpu(machine, "maincpu"), 0x1fc00000, 0x1fc7ffff, TRUE,  rombase);
199199}
200200
201201
r4679r4680
254254
255255static TIMER_CALLBACK( irq0_stop )
256256{
257   cpu_set_input_line(machine->cpu[0], 0, CLEAR_LINE);
257   cputag_set_input_line(machine, "maincpu", 0, CLEAR_LINE);
258258}
259259
260260
r4679r4680
267267
268268static void ide_interrupt(const device_config *device, int state)
269269{
270   cpu_set_input_line(device->machine->cpu[0], 1, state);
270   cputag_set_input_line(device->machine, "maincpu", 1, state);
271271}
272272
273273
src/mame/drivers/beathead.c
r4679r4680
144144
145145   /* on scanline zero, clear any halt condition */
146146   if (scanline == 0)
147      cpu_set_input_line(machine->cpu[0], INPUT_LINE_HALT, CLEAR_LINE);
147      cputag_set_input_line(machine, "maincpu", INPUT_LINE_HALT, CLEAR_LINE);
148148
149149   /* wrap around at 262 */
150150   scanline++;
r4679r4680
204204   {
205205      irq_line_state = gen_int;
206206//      if (irq_line_state != CLEAR_LINE)
207         cpu_set_input_line(machine->cpu[0], ASAP_IRQ0, irq_line_state);
207         cputag_set_input_line(machine, "maincpu", ASAP_IRQ0, irq_line_state);
208208//      else
209209//          asap_set_irq_line(ASAP_IRQ0, irq_line_state);
210210   }
r4679r4680
299299static WRITE32_HANDLER( sound_reset_w )
300300{
301301   logerror("Sound reset = %d\n", !offset);
302   cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_RESET, offset ? CLEAR_LINE : ASSERT_LINE);
302   cputag_set_input_line(space->machine, "jsa", INPUT_LINE_RESET, offset ? CLEAR_LINE : ASSERT_LINE);
303303}
304304
305305
r4679r4680
514514   atarijsa_init(machine, "IN2", 0x0040);
515515
516516   /* prepare the speedups */
517   speedup_data = memory_install_read32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x00000ae8, 0x00000aeb, 0, 0, speedup_r);
518   movie_speedup_data = memory_install_read32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x00000804, 0x00000807, 0, 0, movie_speedup_r);
517   speedup_data = memory_install_read32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x00000ae8, 0x00000aeb, 0, 0, speedup_r);
518   movie_speedup_data = memory_install_read32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x00000804, 0x00000807, 0, 0, movie_speedup_r);
519519}
520520
521521
src/mame/drivers/st0016.c
r4679r4680
136136   AM_RANGE(0x80000000, 0x8001ffff) AM_RAM
137137   AM_RANGE(0xc0000000, 0xc001ffff) AM_RAM
138138   AM_RANGE(0x40000000, 0x4000000f) AM_READ(latch32_r) AM_WRITE(latch32_w)
139   AM_RANGE(0xfff80000, 0xffffffff) AM_READ(SMH_BANK2)
139   AM_RANGE(0xfff80000, 0xffffffff) AM_READ(SMH_BANK(2))
140140ADDRESS_MAP_END
141141
142142static ADDRESS_MAP_START( st0016_m2_io, ADDRESS_SPACE_IO, 8 )
src/mame/drivers/cchasm.c
r4679r4680
6868
6969static void cchasm_6840_irq(running_machine *machine, int state)
7070{
71   cpu_set_input_line(machine->cpu[0], 4, state?ASSERT_LINE:CLEAR_LINE);
71   cputag_set_input_line(machine, "maincpu", 4, state ? ASSERT_LINE : CLEAR_LINE);
7272}
7373static const ptm6840_interface cchasm_6840_intf =
7474{
src/mame/drivers/sbasketb.c
r4679r4680
6464
6565static WRITE8_HANDLER( sbasketb_sh_irqtrigger_w )
6666{
67   cpu_set_input_line_and_vector(space->machine->cpu[1],0,HOLD_LINE,0xff);
67   cputag_set_input_line_and_vector(space->machine, "audiocpu", 0, HOLD_LINE, 0xff);
6868}
6969
7070static WRITE8_HANDLER( sbasketb_coin_counter_w )
r4679r4680
7373}
7474
7575
76static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 )
77   AM_RANGE(0x2000, 0x3bff) AM_READ(SMH_RAM)
76static ADDRESS_MAP_START( sbasketb_map, ADDRESS_SPACE_PROGRAM, 8 )
77   AM_RANGE(0x2000, 0x2fff) AM_RAM
78   AM_RANGE(0x3000, 0x33ff) AM_RAM_WRITE(sbasketb_colorram_w) AM_BASE(&colorram)
79   AM_RANGE(0x3400, 0x37ff) AM_RAM_WRITE(sbasketb_videoram_w) AM_BASE(&videoram)
80   AM_RANGE(0x3800, 0x39ff) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
81   AM_RANGE(0x3a00, 0x3bff) AM_RAM           /* Probably unused, but initialized */
82   AM_RANGE(0x3c00, 0x3c00) AM_WRITE(watchdog_reset_w)
7883   AM_RANGE(0x3c10, 0x3c10) AM_READNOP    /* ???? */
84   AM_RANGE(0x3c20, 0x3c20) AM_WRITEONLY AM_BASE(&sbasketb_palettebank)
85   AM_RANGE(0x3c80, 0x3c80) AM_WRITE(sbasketb_flipscreen_w)
86   AM_RANGE(0x3c81, 0x3c81) AM_WRITE(interrupt_enable_w)
87   AM_RANGE(0x3c83, 0x3c84) AM_WRITE(sbasketb_coin_counter_w)
88   AM_RANGE(0x3c85, 0x3c85) AM_WRITE(SMH_RAM) AM_BASE(&sbasketb_spriteram_select)
89   AM_RANGE(0x3d00, 0x3d00) AM_WRITE(soundlatch_w)
90   AM_RANGE(0x3d80, 0x3d80) AM_WRITE(sbasketb_sh_irqtrigger_w)
7991   AM_RANGE(0x3e00, 0x3e00) AM_READ_PORT("SYSTEM")
8092   AM_RANGE(0x3e01, 0x3e01) AM_READ_PORT("P1")
8193   AM_RANGE(0x3e02, 0x3e02) AM_READ_PORT("P2")
8294   AM_RANGE(0x3e03, 0x3e03) AM_READNOP
8395   AM_RANGE(0x3e80, 0x3e80) AM_READ_PORT("DSW2")
8496   AM_RANGE(0x3f00, 0x3f00) AM_READ_PORT("DSW1")
97   AM_RANGE(0x3f80, 0x3f80) AM_WRITEONLY AM_BASE(&sbasketb_scroll)
8598   AM_RANGE(0x6000, 0xffff) AM_READ(SMH_ROM)
8699ADDRESS_MAP_END
87100
88static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 )
89   AM_RANGE(0x2000, 0x2fff) AM_WRITE(SMH_RAM)
90   AM_RANGE(0x3000, 0x33ff) AM_WRITE(sbasketb_colorram_w) AM_BASE(&colorram)
91   AM_RANGE(0x3400, 0x37ff) AM_WRITE(sbasketb_videoram_w) AM_BASE(&videoram)
92   AM_RANGE(0x3800, 0x39ff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
93   AM_RANGE(0x3a00, 0x3bff) AM_WRITE(SMH_RAM)           /* Probably unused, but initialized */
94   AM_RANGE(0x3c00, 0x3c00) AM_WRITE(watchdog_reset_w)
95   AM_RANGE(0x3c20, 0x3c20) AM_WRITE(SMH_RAM) AM_BASE(&sbasketb_palettebank)
96   AM_RANGE(0x3c80, 0x3c80) AM_WRITE(sbasketb_flipscreen_w)
97   AM_RANGE(0x3c81, 0x3c81) AM_WRITE(interrupt_enable_w)
98   AM_RANGE(0x3c83, 0x3c84) AM_WRITE(sbasketb_coin_counter_w)
99   AM_RANGE(0x3c85, 0x3c85) AM_WRITE(SMH_RAM) AM_BASE(&sbasketb_spriteram_select)
100   AM_RANGE(0x3d00, 0x3d00) AM_WRITE(soundlatch_w)
101   AM_RANGE(0x3d80, 0x3d80) AM_WRITE(sbasketb_sh_irqtrigger_w)
102   AM_RANGE(0x3f80, 0x3f80) AM_WRITE(SMH_RAM) AM_BASE(&sbasketb_scroll)
103ADDRESS_MAP_END
104
105static ADDRESS_MAP_START( sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
106   AM_RANGE(0x0000, 0x1fff) AM_READ(SMH_ROM)
107   AM_RANGE(0x4000, 0x43ff) AM_READ(SMH_RAM)
101static ADDRESS_MAP_START( sbasketb_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
102   AM_RANGE(0x0000, 0x1fff) AM_ROM
103   AM_RANGE(0x4000, 0x43ff) AM_RAM
108104   AM_RANGE(0x6000, 0x6000) AM_READ(soundlatch_r)
109105   AM_RANGE(0x8000, 0x8000) AM_READ(hyperspt_sh_timer_r)
110ADDRESS_MAP_END
111
112static ADDRESS_MAP_START( sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
113   AM_RANGE(0x4000, 0x43ff) AM_WRITE(SMH_RAM)
114106   AM_RANGE(0xa000, 0xa000) AM_DEVWRITE("vlm", vlm5030_data_w) /* speech data */
115107   AM_RANGE(0xc000, 0xdfff) AM_DEVWRITE("vlm", hyperspt_sound_w)     /* speech and output controll */
116108   AM_RANGE(0xe000, 0xe000) AM_DEVWRITE("dac", dac_w)
r4679r4680
119111ADDRESS_MAP_END
120112
121113
122
123114static INPUT_PORTS_START( sbasketb )
124115   PORT_START("SYSTEM")
125116   KONAMI8_SYSTEM_UNK
r4679r4680
197188
198189   /* basic machine hardware */
199190   MDRV_CPU_ADD("maincpu", M6809, 1400000)        /* 1.400 MHz ??? */
200   MDRV_CPU_PROGRAM_MAP(readmem,writemem)
191   MDRV_CPU_PROGRAM_MAP(sbasketb_map,0)
201192   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
202193
203194   MDRV_CPU_ADD("audiocpu", Z80, XTAL_14_31818MHz / 4)   /* 3.5795 MHz */
204   MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem)
195   MDRV_CPU_PROGRAM_MAP(sbasketb_sound_map,0)
205196
206197   /* video hardware */
207198   MDRV_SCREEN_ADD("screen", RASTER)
src/mame/drivers/funkyjet.c
r4679r4680
102102
103103/******************************************************************************/
104104
105static ADDRESS_MAP_START( funkyjet_readmem, ADDRESS_SPACE_PROGRAM, 16 )
106   AM_RANGE(0x000000, 0x07ffff) AM_READ(SMH_ROM)
107   AM_RANGE(0x120000, 0x1207ff) AM_READ(SMH_RAM)
108   AM_RANGE(0x140000, 0x143fff) AM_READ(SMH_RAM)
109   AM_RANGE(0x160000, 0x1607ff) AM_READ(SMH_RAM)
110   AM_RANGE(0x180000, 0x1807ff) AM_READ(deco16_146_funkyjet_prot_r)
111   AM_RANGE(0x320000, 0x321fff) AM_READ(SMH_RAM)
112   AM_RANGE(0x322000, 0x323fff) AM_READ(SMH_RAM)
113   AM_RANGE(0x340000, 0x340bff) AM_READ(SMH_RAM)
114   AM_RANGE(0x342000, 0x342bff) AM_READ(SMH_RAM)
115ADDRESS_MAP_END
116
117static ADDRESS_MAP_START( funkyjet_writemem, ADDRESS_SPACE_PROGRAM, 16 )
118   AM_RANGE(0x000000, 0x07ffff) AM_WRITE(SMH_ROM)
119   AM_RANGE(0x120000, 0x1207ff) AM_WRITE(paletteram16_xxxxBBBBGGGGRRRR_word_w) AM_BASE(&paletteram16)
120   AM_RANGE(0x140000, 0x143fff) AM_WRITE(SMH_RAM)
121   AM_RANGE(0x160000, 0x1607ff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16)
122   AM_RANGE(0x180000, 0x1807ff) AM_WRITE(deco16_146_funkyjet_prot_w) AM_BASE(&deco16_prot_ram)
105static ADDRESS_MAP_START( funkyjet_map, ADDRESS_SPACE_PROGRAM, 16 )
106   AM_RANGE(0x000000, 0x07ffff) AM_ROM
107   AM_RANGE(0x120000, 0x1207ff) AM_RAM_WRITE(paletteram16_xxxxBBBBGGGGRRRR_word_w) AM_BASE(&paletteram16)
108   AM_RANGE(0x140000, 0x143fff) AM_RAM
109   AM_RANGE(0x160000, 0x1607ff) AM_RAM AM_BASE(&spriteram16)
110   AM_RANGE(0x180000, 0x1807ff) AM_READWRITE(deco16_146_funkyjet_prot_r, deco16_146_funkyjet_prot_w) AM_BASE(&deco16_prot_ram)
123111   AM_RANGE(0x184000, 0x184001) AM_WRITENOP
124112   AM_RANGE(0x188000, 0x188001) AM_WRITENOP
125113   AM_RANGE(0x300000, 0x30000f) AM_WRITE(SMH_RAM) AM_BASE(&deco16_pf12_control)
126   AM_RANGE(0x320000, 0x321fff) AM_WRITE(deco16_pf1_data_w) AM_BASE(&deco16_pf1_data)
127   AM_RANGE(0x322000, 0x323fff) AM_WRITE(deco16_pf2_data_w) AM_BASE(&deco16_pf2_data)
128   AM_RANGE(0x340000, 0x340bff) AM_WRITE(SMH_RAM) AM_BASE(&deco16_pf1_rowscroll)
129   AM_RANGE(0x342000, 0x342bff) AM_WRITE(SMH_RAM) AM_BASE(&deco16_pf2_rowscroll)
114   AM_RANGE(0x320000, 0x321fff) AM_RAM_WRITE(deco16_pf1_data_w) AM_BASE(&deco16_pf1_data)
115   AM_RANGE(0x322000, 0x323fff) AM_RAM_WRITE(deco16_pf2_data_w) AM_BASE(&deco16_pf2_data)
116   AM_RANGE(0x340000, 0x340bff) AM_RAM AM_BASE(&deco16_pf1_rowscroll)
117   AM_RANGE(0x342000, 0x342bff) AM_RAM AM_BASE(&deco16_pf2_rowscroll)
130118ADDRESS_MAP_END
131119
132120/******************************************************************************/
133121
134122/* Physical memory map (21 bits) */
135static ADDRESS_MAP_START( sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
136   AM_RANGE(0x000000, 0x00ffff) AM_READ(SMH_ROM)
137   AM_RANGE(0x100000, 0x100001) AM_READNOP
138   AM_RANGE(0x110000, 0x110001) AM_DEVREAD("ym", ym2151_r)
139   AM_RANGE(0x120000, 0x120001) AM_DEVREAD("oki", okim6295_r)
140   AM_RANGE(0x130000, 0x130001) AM_READNOP /* This board only has 1 oki chip */
123static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 )
124   AM_RANGE(0x000000, 0x00ffff) AM_ROM
125   AM_RANGE(0x100000, 0x100001) AM_NOP /* YM2203 - this board doesn't have one */
126   AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
127   AM_RANGE(0x120000, 0x120001) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w)
128   AM_RANGE(0x130000, 0x130001) AM_NOP /* This board only has 1 oki chip */
141129   AM_RANGE(0x140000, 0x140001) AM_READ(soundlatch_r)
142   AM_RANGE(0x1f0000, 0x1f1fff) AM_READ(SMH_BANK8)
143ADDRESS_MAP_END
144
145static ADDRESS_MAP_START( sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
146   AM_RANGE(0x000000, 0x00ffff) AM_WRITE(SMH_ROM)
147   AM_RANGE(0x100000, 0x100001) AM_WRITENOP /* YM2203 - this board doesn't have one */
148   AM_RANGE(0x110000, 0x110001) AM_DEVWRITE("ym", ym2151_w)
149   AM_RANGE(0x120000, 0x120001) AM_DEVWRITE("oki", okim6295_w)
150   AM_RANGE(0x130000, 0x130001) AM_WRITENOP
151   AM_RANGE(0x1f0000, 0x1f1fff) AM_WRITE(SMH_BANK8)
130   AM_RANGE(0x1f0000, 0x1f1fff) AM_RAMBANK(8)
152131   AM_RANGE(0x1fec00, 0x1fec01) AM_WRITE(h6280_timer_w)
153132   AM_RANGE(0x1ff400, 0x1ff403) AM_WRITE(h6280_irq_status_w)
154133ADDRESS_MAP_END
r4679r4680
300279
301280static void sound_irq(const device_config *device, int state)
302281{
303   cpu_set_input_line(device->machine->cpu[1],1,state); /* IRQ 2 */
282   cputag_set_input_line(device->machine, "audiocpu", 1, state); /* IRQ 2 */
304283}
305284
306285static const ym2151_interface ym2151_config =
r4679r4680
312291
313292   /* basic machine hardware */
314293   MDRV_CPU_ADD("maincpu", M68000, 14000000) /* 28 MHz crystal */
315   MDRV_CPU_PROGRAM_MAP(funkyjet_readmem,funkyjet_writemem)
294   MDRV_CPU_PROGRAM_MAP(funkyjet_map,0)
316295   MDRV_CPU_VBLANK_INT("screen", irq6_line_hold)
317296
318297   MDRV_CPU_ADD("audiocpu", H6280,32220000/4)   /* Custom chip 45, Audio section crystal is 32.220 MHz */
319   MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem)
298   MDRV_CPU_PROGRAM_MAP(sound_map,0)
320299
321300   /* video hardware */
322301   MDRV_SCREEN_ADD("screen", RASTER)
src/mame/drivers/skyarmy.c
r4679r4680
5858        tilemap_mark_tile_dirty(skyarmy_tilemap,offset);
5959}
6060
61static WRITE8_HANDLER( skyarmy_scrollram_w )
62{
63        skyarmy_scrollram[offset] = data;
64}
65
66
67static READ8_HANDLER( skyarmy_scrollram_r )
68{
69        return skyarmy_scrollram[offset];
70}
71
72
7361static PALETTE_INIT( skyarmy )
7462{
7563   int i;
r4679r4680
154142}
155143
156144
157static ADDRESS_MAP_START( skyarmy_readmem, ADDRESS_SPACE_PROGRAM, 8 )
158   AM_RANGE(0x0000, 0x7FFF) AM_READ(SMH_ROM)
159        AM_RANGE(0x8000, 0x87FF) AM_READ(SMH_RAM)
160        AM_RANGE(0x8800, 0x93FF) AM_READ(SMH_RAM) /* Video RAM */
161        AM_RANGE(0x9800, 0x983F) AM_READ(SMH_RAM) /* Sprites */
162        AM_RANGE(0x9840, 0x985F) AM_READ(skyarmy_scrollram_r) /* Sroll RAM */
163        AM_RANGE(0xA000, 0xA000) AM_READ_PORT("DSW")
164        AM_RANGE(0xA001, 0xA001) AM_READ_PORT("P1")
165        AM_RANGE(0xA002, 0xA002) AM_READ_PORT("P2")
166        AM_RANGE(0xA003, 0xA003) AM_READ_PORT("SYSTEM")
145static ADDRESS_MAP_START( skyarmy_map, ADDRESS_SPACE_PROGRAM, 8 )
146   AM_RANGE(0x0000, 0x7fff) AM_ROM
147   AM_RANGE(0x8000, 0x87ff) AM_RAM
148   AM_RANGE(0x8800, 0x8fff) AM_RAM_WRITE(skyarmy_videoram_w) AM_BASE(&skyarmy_videoram) /* Video RAM */
149   AM_RANGE(0x9000, 0x93ff) AM_RAM_WRITE(skyarmy_colorram_w) AM_BASE(&skyarmy_colorram) /* Color RAM */
150   AM_RANGE(0x9800, 0x983f) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size) /* Sprites */
151   AM_RANGE(0x9840, 0x985f) AM_RAM AM_BASE(&skyarmy_scrollram)  /* Scroll RAM */
152   AM_RANGE(0xa000, 0xa000) AM_READ_PORT("DSW")
153   AM_RANGE(0xa001, 0xa001) AM_READ_PORT("P1")
154   AM_RANGE(0xa002, 0xa002) AM_READ_PORT("P2")
155   AM_RANGE(0xa003, 0xa003) AM_READ_PORT("SYSTEM")
156   AM_RANGE(0xa004, 0xa004) AM_WRITE(nmi_enable_w) // ???
157   AM_RANGE(0xa005, 0xa005) AM_WRITENOP
158   AM_RANGE(0xa006, 0xa006) AM_WRITENOP
159   AM_RANGE(0xa007, 0xa007) AM_WRITENOP
167160ADDRESS_MAP_END
168161
169static ADDRESS_MAP_START( skyarmy_writemem, ADDRESS_SPACE_PROGRAM, 8 )
170   AM_RANGE(0x0000, 0x7FFF) AM_WRITE(SMH_ROM)
171        AM_RANGE(0x8000, 0x87FF) AM_WRITE(SMH_RAM)
172        AM_RANGE(0x8800, 0x8BFF) AM_WRITE(skyarmy_videoram_w) AM_BASE(&skyarmy_videoram) /* Video RAM */
173        AM_RANGE(0x9000, 0x93FF) AM_WRITE(skyarmy_colorram_w) AM_BASE(&skyarmy_colorram) /* Color RAM */
174        AM_RANGE(0x9800, 0x983F) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size) /* Sprites */
175        AM_RANGE(0x9840, 0x985F) AM_WRITE(skyarmy_scrollram_w) AM_BASE(&skyarmy_scrollram) /* Sprites */
176        AM_RANGE(0xa004, 0xa004) AM_WRITE(nmi_enable_w) // ???
177        AM_RANGE(0xa005, 0xa005) AM_WRITENOP
178        AM_RANGE(0xa006, 0xa006) AM_WRITENOP
179        AM_RANGE(0xa007, 0xa007) AM_WRITENOP
162static ADDRESS_MAP_START( skyarmy_io_map, ADDRESS_SPACE_IO, 8 )
163   ADDRESS_MAP_GLOBAL_MASK(0xff)
164   AM_RANGE(0x04, 0x05) AM_DEVWRITE("ay", ay8910_address_data_w)
165   AM_RANGE(0x06, 0x06) AM_DEVREAD("ay", ay8910_r)
180166ADDRESS_MAP_END
181167
182168static INPUT_PORTS_START( skyarmy )
r4679r4680
249235        GFXDECODE_ENTRY( "gfx2", 0, spritelayout, 0, 32 )
250236GFXDECODE_END
251237
252
253static ADDRESS_MAP_START( io_map, ADDRESS_SPACE_IO, 8 )
254   ADDRESS_MAP_GLOBAL_MASK(0xff)
255   AM_RANGE(0x04, 0x05) AM_DEVWRITE("ay", ay8910_address_data_w)
256   AM_RANGE(0x06, 0x06) AM_DEVREAD("ay", ay8910_r)
257ADDRESS_MAP_END
258
259238static MACHINE_DRIVER_START( skyarmy )
260239   MDRV_CPU_ADD("maincpu", Z80,4000000)
261   MDRV_CPU_PROGRAM_MAP(skyarmy_readmem,skyarmy_writemem)
262   MDRV_CPU_IO_MAP(io_map,0)
240   MDRV_CPU_PROGRAM_MAP(skyarmy_map,0)
241   MDRV_CPU_IO_MAP(skyarmy_io_map,0)
263242   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
264243   MDRV_CPU_PERIODIC_INT(skyarmy_nmi_source,650)   /* Hz */
265244
src/mame/drivers/ksayakyu.c
r4679r4680
107107
108108static ADDRESS_MAP_START( maincpu_map, ADDRESS_SPACE_PROGRAM, 8 )
109109   AM_RANGE(0x0000, 0x3fff) AM_ROM
110   AM_RANGE(0x4000, 0x7fff) AM_READWRITE(SMH_BANK1, SMH_NOP)
110   AM_RANGE(0x4000, 0x7fff) AM_READWRITE(SMH_BANK(1), SMH_NOP)
111111   AM_RANGE(0x8000, 0x9fff) AM_ROM
112112   AM_RANGE(0xa000, 0xa7ff) AM_RAM
113113   AM_RANGE(0xa800, 0xa800) AM_READ_PORT("P1")
src/mame/drivers/qix.c
r4679r4680
11881188
11891189static int kram3_permut2(int tbl_index, int idx, const UINT8 *xor_table)
11901190{
1191   int xor = 0;
1191   int xorval = 0;
11921192
11931193   if (idx == 0 || idx == 3)
11941194   {
1195      xor = xor_table[tbl_index];
1195      xorval = xor_table[tbl_index];
11961196
11971197      // handle missing values in table
1198      if (xor == 99)
1199         return xor;
1198      if (xorval == 99)
1199         return xorval;
12001200   }
12011201
1202   xor ^= 0x02;
1202   xorval ^= 0x02;
12031203
12041204   if (idx == 3)
1205      xor = BITSWAP8(xor, 7,6,5,4, 0,2,3,1);
1205      xorval = BITSWAP8(xorval, 7,6,5,4, 0,2,3,1);
12061206
1207   return xor;
1207   return xorval;
12081208}
12091209
12101210static int kram3_decrypt(int address, int value)
r4679r4680
12581258   i = 0;
12591259   patch = memory_region(machine, "user1");
12601260   rom = memory_region(machine, "maincpu");
1261   decrypted = auto_malloc(0x6000);
1261   decrypted = auto_alloc_array(machine, UINT8, 0x6000);
12621262
12631263   memory_set_decrypted_region(mainspace, 0xa000, 0xffff, decrypted);
12641264
r4679r4680
12721272   patch = memory_region(machine, "user2");
12731273   size = memory_region_length(machine, "user2");
12741274   rom = memory_region(machine, "videocpu");
1275   decrypted = auto_malloc(0x6000);
1275   decrypted = auto_alloc_array(machine, UINT8, 0x6000);
12761276
12771277   memory_set_decrypted_region(videospace, 0xa000, 0xffff, decrypted);
12781278
src/mame/drivers/suprgolf.c
r4679r4680
7070static VIDEO_START( suprgolf )
7171{
7272   suprgolf_tilemap = tilemap_create( machine, get_tile_info,tilemap_scan_rows,8,8,32,32 );
73   paletteram = auto_malloc(0x1000);
74   suprgolf_bg_vram = auto_malloc(0x2000*0x20);
75   suprgolf_bg_pen = auto_malloc(0x2000*0x20);
73   paletteram = auto_alloc_array(machine, UINT8, 0x1000);
74   suprgolf_bg_vram = auto_alloc_array(machine, UINT8, 0x2000*0x20);
75   suprgolf_bg_pen = auto_alloc_array(machine, UINT8, 0x2000*0x20);
7676
7777   tilemap_set_transparent_pen(suprgolf_tilemap,15);
7878}
r4679r4680
181181   suprgolf_bg_bank = (data & 0x1f);
182182
183183   if(data & 0x20) //TODO: understand the proper condition
184      cpu_set_input_line(space->machine->cpu[0], INPUT_LINE_NMI, PULSE_LINE);
184      cputag_set_input_line(space->machine, "maincpu", INPUT_LINE_NMI, PULSE_LINE);
185185}
186186
187187static UINT8 pen;
src/mame/drivers/xexex.c
r4679r4680
273273
274274static WRITE16_HANDLER( sound_irq_w )
275275{
276   cpu_set_input_line(space->machine->cpu[1], 0, HOLD_LINE);
276   cputag_set_input_line(space->machine, "audiocpu", 0, HOLD_LINE);
277277}
278278
279279static READ16_HANDLER( sound_status_r )
r4679r4680
309309
310310      // IRQ 5 is the "object DMA end interrupt" and shouldn't be triggered
311311      // if object data isn't ready for DMA within the frame.
312      cpu_set_input_line(machine->cpu[0], 5, HOLD_LINE);
312      cputag_set_input_line(machine, "maincpu", 5, HOLD_LINE);
313313   }
314314}
315315
r4679r4680
393393
394394
395395static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 )
396   AM_RANGE(0x8000, 0xbfff) AM_READ(SMH_BANK2)
396   AM_RANGE(0x8000, 0xbfff) AM_READ(SMH_BANK(2))
397397   AM_RANGE(0x0000, 0xbfff) AM_ROM
398398   AM_RANGE(0xc000, 0xdfff) AM_RAM
399399   AM_RANGE(0xe000, 0xe22f) AM_DEVREADWRITE("konami", k054539_r, k054539_w)
src/mame/drivers/himesiki.c
r4679r4680
101101static WRITE8_HANDLER( himesiki_rombank_w )
102102{
103103   UINT8 *ROM = memory_region(space->machine, "maincpu");
104   memory_set_bankptr(space->machine, 1, &ROM[0x10000+0x800*(data & 8)]);
104   memory_set_bankptr(space->machine, 1, &ROM[0x10000 + 0x800 * (data & 8)]);
105105
106106   if (data & 0xf7)
107107      logerror("p06_w %02x\n",data);
r4679r4680
110110static WRITE8_HANDLER( himesiki_sound_w )
111111{
112112   soundlatch_w(space, offset, data);
113   cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_NMI, PULSE_LINE);
113   cputag_set_input_line(space->machine, "sub", INPUT_LINE_NMI, PULSE_LINE);
114114}
115115
116116/****************************************************************************/
src/mame/drivers/marinedt.c
r4679r4680
115115   tilemap_mark_tile_dirty(tx_tilemap, offset);
116116}
117117
118static ADDRESS_MAP_START( marinedt_readmem, ADDRESS_SPACE_PROGRAM, 8 )
119   AM_RANGE(0x0000, 0x37ff) AM_READ(SMH_ROM)
120   AM_RANGE(0x4000, 0x43ff) AM_READ(SMH_RAM)
121   AM_RANGE(0x4400, 0x47ff) AM_READ(SMH_RAM)   //unused, vram mirror?
122   AM_RANGE(0x4000, 0x4bff) AM_READ(SMH_RAM)
123ADDRESS_MAP_END
124
125static ADDRESS_MAP_START( marinedt_writemem, ADDRESS_SPACE_PROGRAM, 8 )
126   AM_RANGE(0x0000, 0x37ff) AM_WRITE(SMH_ROM)
127   AM_RANGE(0x4000, 0x47ff) AM_WRITE(SMH_RAM)
128   AM_RANGE(0x4800, 0x4bff) AM_WRITE(tx_tileram_w) AM_BASE(&tx_tileram)
129   AM_RANGE(0x4c00, 0x4c00) AM_WRITENOP   //?? maybe off by one error
130ADDRESS_MAP_END
131
132118static READ8_HANDLER( marinedt_port1_r )
133119{
134120//might need to be reversed for cocktail stuff
r4679r4680
270256
271257}
272258
259static ADDRESS_MAP_START( marinedt_map, ADDRESS_SPACE_PROGRAM, 8 )
260   AM_RANGE(0x0000, 0x37ff) AM_ROM
261   AM_RANGE(0x4000, 0x43ff) AM_RAM
262   AM_RANGE(0x4400, 0x47ff) AM_RAM            //unused, vram mirror?
263   AM_RANGE(0x4800, 0x4bff) AM_RAM_WRITE(tx_tileram_w) AM_BASE(&tx_tileram)
264   AM_RANGE(0x4c00, 0x4c00) AM_WRITENOP   //?? maybe off by one error
265ADDRESS_MAP_END
273266
274267static ADDRESS_MAP_START( marinedt_io_map, ADDRESS_SPACE_IO, 8 )
275268   ADDRESS_MAP_GLOBAL_MASK(0xff)
r4679r4680
448441   tilemap_set_scrolldx(tx_tilemap, 0, 4*8);
449442   tilemap_set_scrolldy(tx_tilemap, 0, -4*8);
450443
451   tile = auto_bitmap_alloc(32 * 8, 32 * 8, video_screen_get_format(machine->primary_screen));
452   obj1 = auto_bitmap_alloc(32,32,video_screen_get_format(machine->primary_screen));
453   obj2 = auto_bitmap_alloc(32,32,video_screen_get_format(machine->primary_screen));
444   tile = auto_bitmap_alloc(machine,32 * 8, 32 * 8, video_screen_get_format(machine->primary_screen));
445   obj1 = auto_bitmap_alloc(machine,32,32,video_screen_get_format(machine->primary_screen));
446   obj2 = auto_bitmap_alloc(machine,32,32,video_screen_get_format(machine->primary_screen));
454447}
455448
456449
r4679r4680
577570
578571   /* basic machine hardware */
579572   MDRV_CPU_ADD("maincpu", Z80,10000000/4)
580   MDRV_CPU_PROGRAM_MAP(marinedt_readmem,marinedt_writemem)
573   MDRV_CPU_PROGRAM_MAP(marinedt_map,0)
581574   MDRV_CPU_IO_MAP(marinedt_io_map,0)
582575   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
583576
src/mame/drivers/ironhors.c
r4679r4680
4646
4747static WRITE8_HANDLER( ironhors_sh_irqtrigger_w )
4848{
49   cpu_set_input_line_and_vector(space->machine->cpu[1],0,HOLD_LINE,0xff);
49   cputag_set_input_line_and_vector(space->machine, "soundcpu", 0, HOLD_LINE, 0xff);
5050}
5151
5252static WRITE8_DEVICE_HANDLER( ironhors_filter_w )
r4679r4680
390390
391391static READ8_DEVICE_HANDLER( farwest_soundlatch_r )
392392{
393   return soundlatch_r(cpu_get_address_space(device->machine->cpu[1], ADDRESS_SPACE_PROGRAM),0);
393   return soundlatch_r(cputag_get_address_space(device->machine, "soundcpu", ADDRESS_SPACE_PROGRAM),0);
394394}
395395
396396static const ym2203_interface farwest_ym2203_config =
src/mame/drivers/battlex.c
r4679r4680
5959
6060/*** MEMORY & PORT READ / WRITE **********************************************/
6161
62static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 )
63   AM_RANGE(0x0000, 0x5fff) AM_READ(SMH_ROM)
64   AM_RANGE(0x8000, 0x8fff) AM_READ(SMH_RAM) /* not read? */
65   AM_RANGE(0x9000, 0x91ff) AM_READ(SMH_RAM) /* not read? */
66   AM_RANGE(0xa000, 0xa3ff) AM_READ(SMH_RAM)
67   AM_RANGE(0xe000, 0xe03f) AM_READ(SMH_RAM) /* not read? */
62static ADDRESS_MAP_START( battlex_map, ADDRESS_SPACE_PROGRAM, 8 )
63   AM_RANGE(0x0000, 0x5fff) AM_ROM
64   AM_RANGE(0x8000, 0x8fff) AM_RAM_WRITE(battlex_videoram_w) AM_BASE(&videoram)
65   AM_RANGE(0x9000, 0x91ff) AM_RAM AM_BASE(&spriteram)
66   AM_RANGE(0xa000, 0xa3ff) AM_RAM
67   AM_RANGE(0xe000, 0xe03f) AM_RAM_WRITE(battlex_palette_w)
6868ADDRESS_MAP_END
6969
70static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 )
71   AM_RANGE(0x0000, 0x5fff) AM_WRITE(SMH_ROM)
72   AM_RANGE(0x8000, 0x8fff) AM_WRITE(battlex_videoram_w) AM_BASE(&videoram)
73   AM_RANGE(0x9000, 0x91ff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram)
74   AM_RANGE(0xa000, 0xa3ff) AM_WRITE(SMH_RAM) /* main */
75   AM_RANGE(0xe000, 0xe03f) AM_WRITE(battlex_palette_w) /* probably palette */
76ADDRESS_MAP_END
7770
78
7971static ADDRESS_MAP_START( io_map, ADDRESS_SPACE_IO, 8 )
8072   ADDRESS_MAP_GLOBAL_MASK(0xff)
8173   AM_RANGE(0x00, 0x00) AM_READ_PORT("DSW1")
r4679r4680
206198
207199   /* basic machine hardware */
208200   MDRV_CPU_ADD("maincpu", Z80,10000000/2 )       /* 10 MHz, divided ? (Z80A CPU) */
209   MDRV_CPU_PROGRAM_MAP(readmem,writemem)
201   MDRV_CPU_PROGRAM_MAP(battlex_map,0)
210202   MDRV_CPU_IO_MAP(io_map,0)
211203   MDRV_CPU_VBLANK_INT_HACK(irq0_line_hold,8) /* controls game speed? */
212204
src/mame/drivers/skullxbo.c
r4679r4680
3333
3434static void update_interrupts(running_machine *machine)
3535{
36   cpu_set_input_line(machine->cpu[0], 1, atarigen_scanline_int_state ? ASSERT_LINE : CLEAR_LINE);
37   cpu_set_input_line(machine->cpu[0], 2, atarigen_video_int_state ? ASSERT_LINE : CLEAR_LINE);
38   cpu_set_input_line(machine->cpu[0], 4, atarigen_sound_int_state ? ASSERT_LINE : CLEAR_LINE);
36   cputag_set_input_line(machine, "maincpu", 1, atarigen_scanline_int_state ? ASSERT_LINE : CLEAR_LINE);
37   cputag_set_input_line(machine, "maincpu", 2, atarigen_video_int_state ? ASSERT_LINE : CLEAR_LINE);
38   cputag_set_input_line(machine, "maincpu", 4, atarigen_sound_int_state ? ASSERT_LINE : CLEAR_LINE);
3939}
4040
4141
4242static TIMER_CALLBACK( irq_gen )
4343{
44   atarigen_scanline_int_gen(machine->cpu[0]);
44   atarigen_scanline_int_gen(cputag_get_cpu(machine, "maincpu"));
4545}
4646
4747
src/mame/drivers/adp.c
r4679r4680
166166
167167static void duart_irq_handler(const device_config *device, UINT8 vector)
168168{
169   cpu_set_input_line_and_vector(device->machine->cpu[0], 4, HOLD_LINE, vector);
169   cputag_set_input_line_and_vector(device->machine, "maincpu", 4, HOLD_LINE, vector);
170170};
171171
172172static void duart_tx(const device_config *device, int channel, UINT8 data)
r4679r4680
241241//  UINT32 i;
242242//  UINT16 *prgrom = (UINT16*)memory_region(machine, "maincpu");
243243
244   HD63484_start();
244   HD63484_start(machine);
245245
246246//  for (i = 0; i < 0x70000; i++)
247247//      HD63484_ram[0x90000 + i] = prgrom[i];
src/mame/drivers/sliver.c
r4679r4680
307307
308308static void render_jpeg(running_machine *machine)
309309{
310   int x,y;
311   int addr=jpeg_addr;
310   int x, y;
311   int addr = jpeg_addr;
312312   UINT8 *rom;
313313
314   bitmap_fill(sliver_bitmap_bg, 0,0);
315   if(jpeg_addr<0)
314   bitmap_fill(sliver_bitmap_bg, 0, 0);
315   if(jpeg_addr < 0)
316316   {
317317      return;
318318   }
319319   rom = memory_region(machine, "user3");
320   for (y=0;y<jpeg_h;y++)
320   for (y = 0; y < jpeg_h; y++)
321321   {
322      for (x=0;x<jpeg_w;x++)
322      for (x = 0; x < jpeg_w; x++)
323323      {
324         plot_pixel_rgb(x-x_offset+jpeg_x,jpeg_h-y-y_offset-jpeg_y,rom[addr],rom[addr+1],rom[addr+2]);
324         plot_pixel_rgb(x - x_offset + jpeg_x, jpeg_h - y - y_offset - jpeg_y, rom[addr], rom[addr + 1], rom[addr + 2]);
325325         addr+=3;
326326      }
327327   }
r4679r4680
329329
330330static int find_data(int offset)
331331{
332   int idx=0;
333   while(gfxlookup[idx][0]>=0)
332   int idx = 0;
333   while(gfxlookup[idx][0] >= 0)
334334   {
335      if(offset==gfxlookup[idx][1])
335      if(offset == gfxlookup[idx][1])
336336      {
337337         return idx;
338338      }
r4679r4680
346346      COMBINE_DATA(&jpeg2);
347347
348348      {
349         int idx=find_data((int)jpeg2+(((int)jpeg1)<<16));
350         if(idx>=0)
349         int idx = find_data((int)jpeg2 + (((int)jpeg1) << 16));
350         if(idx >= 0)
351351         {
352            jpeg_addr=gfxlookup[idx][0];
353            jpeg_w=gfxlookup[idx][2];
354            jpeg_h=gfxlookup[idx][3];
352            jpeg_addr = gfxlookup[idx][0];
353            jpeg_w = gfxlookup[idx][2];
354            jpeg_h = gfxlookup[idx][3];
355355            render_jpeg(space->machine);
356356      }
357357      else
358358         {
359            jpeg_addr=-1;
359            jpeg_addr = -1;
360360         }
361361      }
362362}
r4679r4680
370370{
371371   if(io_offset<IO_SIZE)
372372   {
373      int tmpx,tmpy;
373      int tmpx, tmpy;
374374      COMBINE_DATA(&io_reg[io_offset]);
375375
376      tmpy=io_reg[0x1a]+(io_reg[0x1b]<<8)-io_reg[0x20]; //0x20  ???
377      tmpx=io_reg[0x1e]+(io_reg[0x1f]<<8);
376      tmpy = io_reg[0x1a] + (io_reg[0x1b] << 8) - io_reg[0x20]; //0x20  ???
377      tmpx = io_reg[0x1e] + (io_reg[0x1f] << 8);
378378
379      if(tmpy!=jpeg_y || tmpx!=jpeg_x)
379      if(tmpy != jpeg_y || tmpx != jpeg_x)
380380      {
381         jpeg_x=tmpx;
382         jpeg_y=tmpy;
381         jpeg_x = tmpx;
382         jpeg_y = tmpy;
383383         render_jpeg(space->machine);
384384      }
385385   }
r4679r4680
391391
392392static WRITE16_HANDLER(sound_w)
393393{
394      soundlatch_w(space,0,data & 0xff);
395      cpu_set_input_line(space->machine->cpu[1], MCS51_INT0_LINE, HOLD_LINE);
394      soundlatch_w(space, 0, data & 0xff);
395      cputag_set_input_line(space->machine, "audiocpu", MCS51_INT0_LINE, HOLD_LINE);
396396}
397397
398398static ADDRESS_MAP_START( sliver_map, ADDRESS_SPACE_PROGRAM, 16 )
r4679r4680
590590static DRIVER_INIT(sliver)
591591{
592592   jpeg_addr = -1;
593   colorram=auto_malloc(256*3);
593   colorram=auto_alloc_array(machine, UINT8, 256*3);
594594}
595595
596596GAME( 1996, sliver, 0,        sliver, sliver, sliver, ROT0,  "Hollow Corp", "Sliver", GAME_IMPERFECT_GRAPHICS )
src/mame/drivers/konamigq.c
r4679r4680
6767      sndto000[ ( offset << 1 ) + 1 ] = data >> 16;
6868      if( offset == 3 )
6969      {
70         cpu_set_input_line(space->machine->cpu[1], 1, HOLD_LINE );
70         cputag_set_input_line(space->machine, "soundcpu", 1, HOLD_LINE );
7171      }
7272   }
7373   if( ACCESSING_BITS_0_15 )
r4679r4680
141141   eeprom_write_bit( ( data & 0x01 ) ? 1 : 0 );
142142   eeprom_set_clock_line( ( data & 0x04 ) ? ASSERT_LINE : CLEAR_LINE );
143143   eeprom_set_cs_line( ( data & 0x02 ) ? CLEAR_LINE : ASSERT_LINE );
144   cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_RESET, ( data & 0x40 ) ? CLEAR_LINE : ASSERT_LINE );
144   cputag_set_input_line(space->machine, "soundcpu", INPUT_LINE_RESET, ( data & 0x40 ) ? CLEAR_LINE : ASSERT_LINE );
145145}
146146
147147/* PCM RAM */
r4679r4680
270270}
271271
272272/* 68000 memory handling */
273static ADDRESS_MAP_START( sndreadmem, ADDRESS_SPACE_PROGRAM, 16 )
274   AM_RANGE(0x000000, 0x07ffff) AM_READ(SMH_ROM)
275   AM_RANGE(0x100000, 0x10ffff) AM_READ(SMH_RAM)
276   AM_RANGE(0x200000, 0x2004ff) AM_READ(dual539_r)
277   AM_RANGE(0x300000, 0x300001) AM_READ(tms57002_data_word_r)
278   AM_RANGE(0x400010, 0x40001f) AM_READ(sndcomm68k_r)
279   AM_RANGE(0x500000, 0x500001) AM_READ(tms57002_status_word_r)
280ADDRESS_MAP_END
281
282static ADDRESS_MAP_START( sndwritemem, ADDRESS_SPACE_PROGRAM, 16 )
283   AM_RANGE(0x100000, 0x10ffff) AM_WRITE(SMH_RAM)
284   AM_RANGE(0x200000, 0x2004ff) AM_WRITE(dual539_w)
285   AM_RANGE(0x300000, 0x300001) AM_WRITE(tms57002_data_word_w)
273static ADDRESS_MAP_START( konamigq_sound_map, ADDRESS_SPACE_PROGRAM, 16 )
274   AM_RANGE(0x000000, 0x07ffff) AM_ROM
275   AM_RANGE(0x100000, 0x10ffff) AM_RAM
276   AM_RANGE(0x200000, 0x2004ff) AM_READWRITE(dual539_r,dual539_w)
277   AM_RANGE(0x300000, 0x300001) AM_READWRITE(tms57002_data_word_r,tms57002_data_word_w)
286278   AM_RANGE(0x400000, 0x40000f) AM_WRITE(sndcomm68k_w)
287   AM_RANGE(0x500000, 0x500001) AM_WRITE(tms57002_control_word_w)
279   AM_RANGE(0x400010, 0x40001f) AM_READ(sndcomm68k_r)
280   AM_RANGE(0x500000, 0x500001) AM_READWRITE(tms57002_status_word_r,tms57002_control_word_w)
288281   AM_RANGE(0x580000, 0x580001) AM_WRITENOP /* ?? */
289282ADDRESS_MAP_END
290283
284
291285static const k054539_interface k054539_config =
292286{
293287   "shared"
r4679r4680
391385   MDRV_CPU_VBLANK_INT("screen", psx_vblank)
392386
393387   MDRV_CPU_ADD( "soundcpu", M68000, 8000000 )
394   MDRV_CPU_PROGRAM_MAP( sndreadmem, sndwritemem )
388   MDRV_CPU_PROGRAM_MAP( konamigq_sound_map, 0 )
395389   MDRV_CPU_PERIODIC_INT( irq2_line_hold, 480 )
396390
397391   MDRV_MACHINE_START( konamigq )
src/mame/drivers/epos.c
r4679r4680
6060 *
6161 *************************************/
6262
63static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 )
64   AM_RANGE(0x0000, 0x77ff) AM_READ(SMH_ROM)
65   AM_RANGE(0x7800, 0xffff) AM_READ(SMH_RAM)
63static ADDRESS_MAP_START( epos_map, ADDRESS_SPACE_PROGRAM, 8 )
64   AM_RANGE(0x0000, 0x77ff) AM_ROM
65   AM_RANGE(0x7800, 0x7fff) AM_RAM
66   AM_RANGE(0x8000, 0xffff) AM_RAM AM_BASE(&videoram) AM_SIZE(&videoram_size)
6667ADDRESS_MAP_END
6768
6869
69static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 )
70   AM_RANGE(0x0000, 0x77ff) AM_WRITE(SMH_ROM)
71   AM_RANGE(0x7800, 0x7fff) AM_WRITE(SMH_RAM)
72   AM_RANGE(0x8000, 0xffff) AM_WRITE(SMH_RAM) AM_BASE(&videoram) AM_SIZE(&videoram_size)
70static ADDRESS_MAP_START( dealer_map, ADDRESS_SPACE_PROGRAM, 8 )
71   AM_RANGE(0x0000, 0x5fff) AM_ROMBANK(1)
72   AM_RANGE(0x6000, 0x6fff) AM_ROMBANK(2)
73   AM_RANGE(0x7000, 0x7fff) AM_RAM
74   AM_RANGE(0x8000, 0xffff) AM_RAM AM_BASE(&videoram) AM_SIZE(&videoram_size)
7375ADDRESS_MAP_END
7476
75
76static ADDRESS_MAP_START( dealer_readmem, ADDRESS_SPACE_PROGRAM, 8 )
77   AM_RANGE(0x0000, 0x5fff) AM_READ(SMH_BANK1)
78   AM_RANGE(0x6000, 0x6fff) AM_READ(SMH_BANK2)
79   AM_RANGE(0x7000, 0xffff) AM_READ(SMH_RAM)
80ADDRESS_MAP_END
81
82static ADDRESS_MAP_START( dealer_writemem, ADDRESS_SPACE_PROGRAM, 8 )
83   AM_RANGE(0x0000, 0x6fff) AM_WRITE(SMH_ROM)
84   AM_RANGE(0x7000, 0x7fff) AM_WRITE(SMH_RAM)
85   AM_RANGE(0x8000, 0xffff) AM_WRITE(SMH_RAM) AM_BASE(&videoram) AM_SIZE(&videoram_size)
86ADDRESS_MAP_END
87
8877/*************************************
8978 *
9079 *  Main CPU port handlers
r4679r4680
382371
383372   /* basic machine hardware */
384373   MDRV_CPU_ADD("maincpu", Z80, 11000000/4)   /* 2.75 MHz (see notes) */
385   MDRV_CPU_PROGRAM_MAP(readmem,writemem)
374   MDRV_CPU_PROGRAM_MAP(epos_map,0)
386375   MDRV_CPU_IO_MAP(io_map,0)
387376   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
388377
r4679r4680
406395static MACHINE_DRIVER_START( dealer )
407396   /* basic machine hardware */
408397   MDRV_CPU_ADD("maincpu", Z80, 11000000/4)   /* 2.75 MHz (see notes) */
409   MDRV_CPU_PROGRAM_MAP(dealer_readmem,dealer_writemem)
398   MDRV_CPU_PROGRAM_MAP(dealer_map,0)
410399   MDRV_CPU_IO_MAP(dealer_io_map,0)
411400   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
412401
src/mame/drivers/mrflea.c
r4679r4680
8282
8383static GFXDECODE_START( mrflea )
8484   GFXDECODE_ENTRY( "gfx1", 0, sprite_layout,   0x10, 1 )
85   GFXDECODE_ENTRY( "gfx2", 0, tile_layout,      0x00, 1 )
85   GFXDECODE_ENTRY( "gfx2", 0, tile_layout,   0x00, 1 )
8686GFXDECODE_END
8787
8888/*******************************************************/
8989
90static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 )
91   AM_RANGE(0x0000, 0xbfff) AM_READ(SMH_ROM)
92   AM_RANGE(0xc000, 0xcfff) AM_READ(SMH_RAM)
93ADDRESS_MAP_END
94
95static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 )
96   AM_RANGE(0x0000, 0xbfff) AM_WRITE(SMH_ROM)
97   AM_RANGE(0xc000, 0xcfff) AM_WRITE(SMH_RAM)
98   AM_RANGE(0xe000, 0xe7ff) AM_WRITE(mrflea_videoram_w) AM_BASE(&videoram)
99   AM_RANGE(0xe800, 0xe83f) AM_WRITE(paletteram_xxxxRRRRGGGGBBBB_le_w) AM_BASE(&paletteram)
100   AM_RANGE(0xec00, 0xecff) AM_WRITE(mrflea_spriteram_w) AM_BASE(&spriteram)
101ADDRESS_MAP_END
102
103static ADDRESS_MAP_START( readmem_io, ADDRESS_SPACE_PROGRAM, 8 )
104   AM_RANGE(0x0000, 0x0fff) AM_READ(SMH_ROM)
105   AM_RANGE(0x2000, 0x3fff) AM_READ(SMH_ROM)
106   AM_RANGE(0x8000, 0x80ff) AM_READ(SMH_RAM)
107   AM_RANGE(0x9000, 0x905a) AM_READ(SMH_RAM) /* ? */
108ADDRESS_MAP_END
109
110static ADDRESS_MAP_START( writemem_io, ADDRESS_SPACE_PROGRAM, 8 )
111   AM_RANGE(0x0000, 0x0fff) AM_WRITE(SMH_ROM)
112   AM_RANGE(0x2000, 0x3fff) AM_WRITE(SMH_ROM)
113   AM_RANGE(0x8000, 0x80ff) AM_WRITE(SMH_RAM)
114   AM_RANGE(0x9000, 0x905a) AM_WRITE(SMH_RAM) /* ? */
115ADDRESS_MAP_END
116
117/*******************************************************/
118
119static WRITE8_HANDLER( mrflea_main_w ){
90static WRITE8_HANDLER( mrflea_main_w )
91{
12092   mrflea_status |= 0x01; // pending command to main CPU
12193   mrflea_main = data;
12294}
12395
124static WRITE8_HANDLER( mrflea_io_w ){
96static WRITE8_HANDLER( mrflea_io_w )
97{
12598   mrflea_status |= 0x08; // pending command to IO CPU
12699   mrflea_io = data;
127   cpu_set_input_line(space->machine->cpu[1], 0, HOLD_LINE );
100   cputag_set_input_line(space->machine, "sub", 0, HOLD_LINE );
128101}
129102
130static READ8_HANDLER( mrflea_main_r ){
103static READ8_HANDLER( mrflea_main_r )
104{
131105   mrflea_status &= ~0x01; // main CPU command read
132106   return mrflea_main;
133107}
134108
135static READ8_HANDLER( mrflea_io_r ){
109static READ8_HANDLER( mrflea_io_r )
110{
136111   mrflea_status &= ~0x08; // IO CPU command read
137112   return mrflea_io;
138113}
139114
140115/*******************************************************/
141116
142static READ8_HANDLER( mrflea_main_status_r ){
117static READ8_HANDLER( mrflea_main_status_r )
118{
143119   /*  0x01: main CPU command pending
144120        0x08: io cpu ready */
145121   return mrflea_status^0x08;
146122}
147123
148static READ8_HANDLER( mrflea_io_status_r ){
124static READ8_HANDLER( mrflea_io_status_r )
125{
149126   /*  0x08: IO CPU command pending
150127        0x01: main cpu ready */
151128   return mrflea_status^0x01;
152129}
153130
154static INTERRUPT_GEN( mrflea_io_interrupt ){
131static INTERRUPT_GEN( mrflea_slave_interrupt )
132{
155133   if( cpu_getiloops(device)==0 || (mrflea_status&0x08) )
156134      cpu_set_input_line(device, 0, HOLD_LINE);
157135}
158136
159static READ8_HANDLER( mrflea_interrupt_type_r ){
137static READ8_HANDLER( mrflea_interrupt_type_r )
138{
160139/* there are two interrupt types:
161140    1. triggered (in response to sound command)
162141    2. heartbeat (for music timing)
r4679r4680
167146
168147/*******************************************************/
169148
170static ADDRESS_MAP_START( io_map, ADDRESS_SPACE_IO, 8 )
149static ADDRESS_MAP_START( mrflea_master_map, ADDRESS_SPACE_PROGRAM, 8 )
150   AM_RANGE(0x0000, 0xbfff) AM_ROM
151   AM_RANGE(0xc000, 0xcfff) AM_RAM
152   AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(mrflea_videoram_w) AM_BASE(&videoram)
153   AM_RANGE(0xe800, 0xe83f) AM_RAM_WRITE(paletteram_xxxxRRRRGGGGBBBB_le_w) AM_BASE(&paletteram)
154   AM_RANGE(0xec00, 0xecff) AM_RAM_WRITE(mrflea_spriteram_w) AM_BASE(&spriteram)
155ADDRESS_MAP_END
156
157static ADDRESS_MAP_START( mrflea_master_io_map, ADDRESS_SPACE_IO, 8 )
171158   ADDRESS_MAP_GLOBAL_MASK(0xff)
172159   AM_RANGE(0x00, 0x00) AM_WRITENOP /* watchdog? */
173160   AM_RANGE(0x40, 0x40) AM_WRITE(mrflea_io_w)
r4679r4680
179166
180167/*******************************************************/
181168
182static WRITE8_HANDLER( mrflea_select1_w ){
169static WRITE8_HANDLER( mrflea_select1_w )
170{
183171   mrflea_select1 = data;
184172}
185173
r4679r4680
188176   return 0x00;
189177}
190178
191static WRITE8_HANDLER( mrflea_data1_w ){
179static WRITE8_HANDLER( mrflea_data1_w )
180{
192181}
193182
194static ADDRESS_MAP_START( inout_io_map, ADDRESS_SPACE_IO, 8 )
183static ADDRESS_MAP_START( mrflea_slave_map, ADDRESS_SPACE_PROGRAM, 8 )
184   AM_RANGE(0x0000, 0x0fff) AM_ROM
185   AM_RANGE(0x2000, 0x3fff) AM_ROM
186   AM_RANGE(0x8000, 0x80ff) AM_RAM
187   AM_RANGE(0x9000, 0x905a) AM_RAM /* ? */
188ADDRESS_MAP_END
189
190static ADDRESS_MAP_START( mrflea_slave_io_map, ADDRESS_SPACE_IO, 8 )
195191   ADDRESS_MAP_GLOBAL_MASK(0xff)
196192   AM_RANGE(0x00, 0x00) AM_WRITENOP /* watchdog */
197193   AM_RANGE(0x10, 0x10) AM_READWRITE(mrflea_interrupt_type_r, SMH_NOP) /* ? / irq ACK */
r4679r4680
232228
233229   /* basic machine hardware */
234230   MDRV_CPU_ADD("maincpu", Z80, 4000000) /* 4 MHz? */
235   MDRV_CPU_PROGRAM_MAP(readmem,writemem)
236   MDRV_CPU_IO_MAP(io_map,0)
231   MDRV_CPU_PROGRAM_MAP(mrflea_master_map,0)
232   MDRV_CPU_IO_MAP(mrflea_master_io_map,0)
237233   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold) /* NMI resets the game */
238234
239235   MDRV_CPU_ADD("sub", Z80, 6000000)
240   MDRV_CPU_PROGRAM_MAP(readmem_io,writemem_io)
241   MDRV_CPU_IO_MAP(inout_io_map,0)
242   MDRV_CPU_VBLANK_INT_HACK(mrflea_io_interrupt,2)
236   MDRV_CPU_PROGRAM_MAP(mrflea_slave_map,0)
237   MDRV_CPU_IO_MAP(mrflea_slave_io_map,0)
238   MDRV_CPU_VBLANK_INT_HACK(mrflea_slave_interrupt,2)
243239
244240   MDRV_QUANTUM_TIME(HZ(6000))
245241
src/mame/drivers/cps3.c
r4679r4680
620620   return ((value<<n)|aux)%0x10000;
621621}
622622
623static UINT16 rotxor(UINT16 val, UINT16 xor)
623static UINT16 rotxor(UINT16 val, UINT16 xorval)
624624{
625625   UINT16 res;
626626
627627   res = val + rotate_left(val,2);
628628
629   res = rotate_left(res,4) ^ (res & (val ^ xor));
629   res = rotate_left(res,4) ^ (res & (val ^ xorval));
630630
631631   return res;
632632}
r4679r4680
690690   cps3_user4region = memory_region(machine,"user4");
691691   cps3_user5region = memory_region(machine,"user5");
692692
693   if (!cps3_user4region) cps3_user4region = auto_malloc(USER4REGION_LENGTH);
694   if (!cps3_user5region) cps3_user5region = auto_malloc(USER5REGION_LENGTH);
693   if (!cps3_user4region) cps3_user4region = auto_alloc_array(machine, UINT8, USER4REGION_LENGTH);
694   if (!cps3_user5region) cps3_user5region = auto_alloc_array(machine, UINT8, USER5REGION_LENGTH);
695695
696696   // set strict verify
697   sh2drc_set_options(machine->cpu[0], SH2DRC_STRICT_VERIFY);
697   sh2drc_set_options(cputag_get_cpu(machine, "maincpu"), SH2DRC_STRICT_VERIFY);
698698
699699   cps3_decrypt_bios(machine);
700   decrypted_gamerom = auto_malloc(0x1000000);
700   decrypted_gamerom = auto_alloc_array(machine, UINT32, 0x1000000/4);
701701
702702   /* just some NOPs for the game to execute if it crashes and starts executing unmapped addresses
703703     - this prevents MAME from crashing */
704   cps3_nops = auto_malloc(0x4);
704   cps3_nops = auto_alloc(machine, UINT32);
705705   cps3_nops[0] = 0x00090009;
706706
707707
708   cps3_0xc0000000_ram_decrypted = auto_malloc(0x400);
709   memory_set_direct_update_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), cps3_direct_handler);
708   cps3_0xc0000000_ram_decrypted = auto_alloc_array(machine, UINT32, 0x400/4);
709   memory_set_direct_update_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), cps3_direct_handler);
710710
711711   // flash roms
712712
713713   for (i=0;i<48;i++)
714714      intelflash_init( machine, i, FLASH_FUJITSU_29F016A, NULL );
715715
716   cps3_eeprom = auto_malloc(0x400);
716   cps3_eeprom = auto_alloc_array(machine, UINT32, 0x400/4);
717717}
718718
719719static DRIVER_INIT( jojo )    { cps3_key1 = 0x02203ee3; cps3_key2 = 0x01301972; cps3_altEncryption = 0; DRIVER_INIT_CALL(cps3); }
r4679r4680
796796
797797static VIDEO_START(cps3)
798798{
799   cps3_ss_ram       = auto_malloc(0x10000);
799   cps3_ss_ram       = auto_alloc_array(machine, UINT32, 0x10000/4);
800800   memset(cps3_ss_ram, 0x00, 0x10000);
801801   state_save_register_global_pointer(machine, cps3_ss_ram, 0x10000/4);
802802
803   cps3_char_ram = auto_malloc(0x800000);
803   cps3_char_ram = auto_alloc_array(machine, UINT32, 0x800000/4);
804804   memset(cps3_char_ram, 0x00, 0x800000);
805805   state_save_register_global_pointer(machine, cps3_char_ram, 0x800000 /4);
806806
r4679r4680
815815
816816   //decode_charram();
817817
818   cps3_mame_colours = auto_malloc(0x80000);
818   cps3_mame_colours = auto_alloc_array(machine, UINT32, 0x80000/4);
819819   memset(cps3_mame_colours, 0x00, 0x80000);
820820
821821   cps3_screenwidth = 384;
822822
823823   // the renderbuffer can be twice the size of the screen, this allows us to handle framebuffer zoom values
824824   // between 0x00 and 0x80 (0x40 is normal, 0x80 would be 'view twice as much', 0x20 is 'view half as much')
825   renderbuffer_bitmap = auto_bitmap_alloc(512*2,224*2,video_screen_get_format(machine->primary_screen));
825   renderbuffer_bitmap = auto_bitmap_alloc(machine,512*2,224*2,video_screen_get_format(machine->primary_screen));
826826
827827   renderbuffer_clip.min_x = 0;
828828   renderbuffer_clip.max_x = cps3_screenwidth-1;
r4679r4680
14291429      UINT32* romdata = (UINT32*)cps3_user5region;
14301430      int real_offset = 0;
14311431      UINT32 newdata;
1432      UINT8* ptr1 = intelflash_getmemptr(flash1);
1433      UINT8* ptr2 = intelflash_getmemptr(flash2);
1432      UINT8* ptr1 = (UINT8*)intelflash_getmemptr(flash1);
1433      UINT8* ptr2 = (UINT8*)intelflash_getmemptr(flash2);
14341434
14351435      real_offset = ((cram_gfxflash_bank&0x3e) * 0x200000) + offset*4;
14361436
r4679r4680
15321532      UINT32* romdata2 = (UINT32*)decrypted_gamerom;
15331533      int real_offset = 0;
15341534      UINT32 newdata;
1535      UINT8* ptr1 = intelflash_getmemptr(base+0);
1536      UINT8* ptr2 = intelflash_getmemptr(base+1);
1537      UINT8* ptr3 = intelflash_getmemptr(base+2);
1538      UINT8* ptr4 = intelflash_getmemptr(base+3);
1535      UINT8* ptr1 = (UINT8*)intelflash_getmemptr(base+0);
1536      UINT8* ptr2 = (UINT8*)intelflash_getmemptr(base+1);
1537      UINT8* ptr3 = (UINT8*)intelflash_getmemptr(base+2);
1538      UINT8* ptr4 = (UINT8*)intelflash_getmemptr(base+3);
15391539
15401540      real_offset = offset * 4;
15411541
r4679r4680
18061806            }
18071807
18081808
1809            cpu_set_input_line(space->machine->cpu[0],10, ASSERT_LINE);
1809            cputag_set_input_line(space->machine, "maincpu", 10, ASSERT_LINE);
18101810
18111811
18121812         }
r4679r4680
20022002
20032003   //printf("charDMA start:\n");
20042004
2005   for (i=0;i<0x1000;i+=3)
2005   for (i = 0; i < 0x1000; i += 3)
20062006   {
2007      UINT32 dat1 = LITTLE_ENDIANIZE_INT32(cps3_char_ram[i+0+(address)]);
2008      UINT32 dat2 = LITTLE_ENDIANIZE_INT32(cps3_char_ram[i+1+(address)]);
2009      UINT32 dat3 = LITTLE_ENDIANIZE_INT32(cps3_char_ram[i+2+(address)]);
2010      UINT32 real_source      = (dat3<<1)-0x400000;
2011      UINT32 real_destination =  dat2<<3;
2012      UINT32 real_length      = (((dat1&0x001fffff)+1)<<3);
2007      UINT32 dat1 = LITTLE_ENDIANIZE_INT32(cps3_char_ram[i + 0 + (address)]);
2008      UINT32 dat2 = LITTLE_ENDIANIZE_INT32(cps3_char_ram[i + 1 + (address)]);
2009      UINT32 dat3 = LITTLE_ENDIANIZE_INT32(cps3_char_ram[i + 2 + (address)]);
2010      UINT32 real_source      = (dat3 << 1) - 0x400000;
2011      UINT32 real_destination =  dat2 << 3;
2012      UINT32 real_length      = (((dat1 & 0x001fffff) + 1) << 3);
20132013
20142014      /* 0x01000000 is the end of list marker, 0x13131313 is our default fill */
2015      if ((dat1==0x01000000) || (dat1==0x13131313)) break;
2015      if ((dat1 == 0x01000000) || (dat1 == 0x13131313)) break;
20162016
20172017        //printf("%08x %08x %08x real_source %08x (rom %d offset %08x) real_destination %08x, real_length %08x\n", dat1, dat2, dat3, real_source, real_source/0x800000, real_source%0x800000, real_destination, real_length);
20182018
2019      if  ( (dat1&0x00e00000) ==0x00800000 )
2019      if  ((dat1 & 0x00e00000) == 0x00800000)
20202020      {
20212021         /* Sets a table used by the decompression routines */
20222022         {
20232023            /* We should probably copy this, but a pointer to it is fine for our purposes as the data doesn't change */
20242024            current_table_address = real_source;
20252025         }
2026         cpu_set_input_line(machine->cpu[0],10, ASSERT_LINE);
2026         cputag_set_input_line(machine, "maincpu", 10, ASSERT_LINE);
20272027      }
2028      else if  ( (dat1&0x00e00000) ==0x00400000 )
2028      else if  ((dat1 & 0x00e00000) == 0x00400000)
20292029      {
20302030         /* 6bpp DMA decompression
20312031              - this is used for the majority of sprites and backgrounds */
20322032         cps3_do_char_dma( machine, real_source, real_destination, real_length );
2033         cpu_set_input_line(machine->cpu[0],10, ASSERT_LINE);
2033         cputag_set_input_line(machine, "maincpu", 10, ASSERT_LINE);
20342034
20352035      }
2036      else if  ( (dat1&0x00e00000) ==0x00600000 )
2036      else if  ((dat1 & 0x00e00000) == 0x00600000)
20372037      {
20382038         /* 8bpp DMA decompression
20392039              - this is used on SFIII NG Sean's Stage ONLY */
20402040         cps3_do_alt_char_dma( machine, real_source, real_destination, real_length);
2041         cpu_set_input_line(machine->cpu[0],10, ASSERT_LINE);
2041         cputag_set_input_line(machine, "maincpu", 10, ASSERT_LINE);
20422042      }
20432043      else
20442044      {
r4679r4680
20952095
20962096static WRITE32_HANDLER( cps3_irq10_ack_w )
20972097{
2098   cpu_set_input_line(space->machine->cpu[0],10, CLEAR_LINE); return;
2098   cputag_set_input_line(space->machine, "maincpu", 10, CLEAR_LINE); return;
20992099}
21002100
21012101static WRITE32_HANDLER( cps3_irq12_ack_w )
21022102{
2103   cpu_set_input_line(space->machine->cpu[0],12, CLEAR_LINE); return;
2103   cputag_set_input_line(space->machine, "maincpu", 12, CLEAR_LINE); return;
21042104}
21052105
21062106static WRITE32_HANDLER( cps3_unk_vidregs_w )
r4679r4680
22972297   for (i=0;i<0x800000;i+=4)
22982298   {
22992299      UINT32 data;
2300      UINT8* ptr1 = intelflash_getmemptr(0);
2301      UINT8* ptr2 = intelflash_getmemptr(1);
2302      UINT8* ptr3 = intelflash_getmemptr(2);
2303      UINT8* ptr4 = intelflash_getmemptr(3);
2300      UINT8* ptr1 = (UINT8*)intelflash_getmemptr(0);
2301      UINT8* ptr2 = (UINT8*)intelflash_getmemptr(1);
2302      UINT8* ptr3 = (UINT8*)intelflash_getmemptr(2);
2303      UINT8* ptr4 = (UINT8*)intelflash_getmemptr(3);
23042304
23052305      data = romdata[i/4];
23062306
r4679r4680
23132313   for (i=0;i<0x800000;i+=4)
23142314   {
23152315      UINT32 data;
2316      UINT8* ptr1 = intelflash_getmemptr(4);
2317      UINT8* ptr2 = intelflash_getmemptr(5);
2318      UINT8* ptr3 = intelflash_getmemptr(6);
2319      UINT8* ptr4 = intelflash_getmemptr(7);
2316      UINT8* ptr1 = (UINT8*)intelflash_getmemptr(4);
2317      UINT8* ptr2 = (UINT8*)intelflash_getmemptr(5);
2318      UINT8* ptr3 = (UINT8*)intelflash_getmemptr(6);
2319      UINT8* ptr4 = (UINT8*)intelflash_getmemptr(7);
23202320
23212321      data = romdata[(0x800000+i)/4];
23222322
r4679r4680
23382338
23392339         for (i=0;i<0x200000;i+=2)
23402340         {
2341            UINT8* ptr1 = intelflash_getmemptr(flashnum);
2342            UINT8* ptr2 = intelflash_getmemptr(flashnum+1);
2341            UINT8* ptr1 = (UINT8*)intelflash_getmemptr(flashnum);
2342            UINT8* ptr2 = (UINT8*)intelflash_getmemptr(flashnum+1);
23432343            UINT32 dat = romdata[(thebase+i)/2];
23442344
23452345            ptr1[BYTE_XOR_LE(i+1)] =  (dat&0xff000000)>>24;
r4679r4680
23642364   for (i=0;i<0x800000;i+=4)
23652365   {
23662366      UINT32 data;
2367      UINT8* ptr1 = intelflash_getmemptr(0);
2368      UINT8* ptr2 = intelflash_getmemptr(1);
2369      UINT8* ptr3 = intelflash_getmemptr(2);
2370      UINT8* ptr4 = intelflash_getmemptr(3);
2367      UINT8* ptr1 = (UINT8*)intelflash_getmemptr(0);
2368      UINT8* ptr2 = (UINT8*)intelflash_getmemptr(1);
2369      UINT8* ptr3 = (UINT8*)intelflash_getmemptr(2);
2370      UINT8* ptr4 = (UINT8*)intelflash_getmemptr(3);
23712371
23722372      data = ((ptr1[i/4]<<24) | (ptr2[i/4]<<16) | (ptr3[i/4]<<8) | (ptr4[i/4]<<0));
23732373
r4679r4680
23832383   for (i=0;i<0x800000;i+=4)
23842384   {
23852385      UINT32 data;
2386      UINT8* ptr1 = intelflash_getmemptr(4);
2387      UINT8* ptr2 = intelflash_getmemptr(5);
2388      UINT8* ptr3 = intelflash_getmemptr(6);
2389      UINT8* ptr4 = intelflash_getmemptr(7);
2386      UINT8* ptr1 = (UINT8*)intelflash_getmemptr(4);
2387      UINT8* ptr2 = (UINT8*)intelflash_getmemptr(5);
2388      UINT8* ptr3 = (UINT8*)intelflash_getmemptr(6);
2389      UINT8* ptr4 = (UINT8*)intelflash_getmemptr(7);
23902390
23912391      data = ((ptr1[i/4]<<24) | (ptr2[i/4]<<16) | (ptr3[i/4]<<8) | (ptr4[i/4]<<0));
23922392
r4679r4680
24082408
24092409         for (i=0;i<0x200000;i+=2)
24102410         {
2411            UINT8* ptr1 = intelflash_getmemptr(flashnum);
2412            UINT8* ptr2 = intelflash_getmemptr(flashnum+1);
2411            UINT8* ptr1 = (UINT8*)intelflash_getmemptr(flashnum);
2412            UINT8* ptr2 = (UINT8*)intelflash_getmemptr(flashnum+1);
24132413            UINT32 dat = (ptr1[i+0]<<8) |
24142414                        (ptr1[i+1]<<24) |
24152415                      (ptr2[i+0]<<0) |
r4679r4680
24762476
24772477
24782478
2479static UINT32 cps3_dma_callback(UINT32 src, UINT32 dst, UINT32 data, int size)
2479static int cps3_dma_callback(UINT32 src, UINT32 dst, UINT32 data, int size)
24802480{
24812481   /*
24822482      on the actual CPS3 hardware the SH2 DMA bypasses the encryption.
r4679r4680
25352535
25362536static const sh2_cpu_core sh2_conf_cps3 = {
25372537   0, // master
2538   (void*)cps3_dma_callback
2538   cps3_dma_callback
25392539};
25402540
25412541static MACHINE_DRIVER_START( cps3 )
src/mame/drivers/glass.c
r4679r4680
6767GFXDECODE_END
6868
6969
70static ADDRESS_MAP_START( glass_readmem, ADDRESS_SPACE_PROGRAM, 16 )
71   AM_RANGE(0x000000, 0x07ffff) AM_READ(SMH_ROM)            /* ROM */
72   AM_RANGE(0x100000, 0x101fff) AM_READ(SMH_RAM)            /* Video RAM */
73   AM_RANGE(0x102000, 0x102fff) AM_READ(SMH_RAM)            /* Extra Video RAM */
74   AM_RANGE(0x200000, 0x2007ff) AM_READ(SMH_RAM)            /* Palette */
75   AM_RANGE(0x440000, 0x440fff) AM_READ(SMH_RAM)            /* Sprite RAM */
76   AM_RANGE(0x700000, 0x700001) AM_READ_PORT("DSW2")
77   AM_RANGE(0x700002, 0x700003) AM_READ_PORT("DSW1")
78   AM_RANGE(0x700004, 0x700005) AM_READ_PORT("P1")
79   AM_RANGE(0x700006, 0x700007) AM_READ_PORT("P2")
80   AM_RANGE(0x70000e, 0x70000f) AM_DEVREAD8("oki", okim6295_r, 0x00ff)/* OKI6295 status register */
81   AM_RANGE(0xfec000, 0xfeffff) AM_READ(SMH_RAM)            /* Work RAM (partially shared with DS5002FP) */
82ADDRESS_MAP_END
83
84
8570static WRITE16_HANDLER( OKIM6295_bankswitch_w )
8671{
8772   UINT8 *RAM = memory_region(space->machine, "oki");
r4679r4680
10792   }
10893}
10994
110static ADDRESS_MAP_START( glass_writemem, ADDRESS_SPACE_PROGRAM, 16 )
111   AM_RANGE(0x000000, 0x07ffff) AM_WRITE(SMH_ROM)                        /* ROM */
112   AM_RANGE(0x100000, 0x101fff) AM_WRITE(glass_vram_w) AM_BASE(&glass_videoram)         /* Video RAM */
113   AM_RANGE(0x102000, 0x102fff) AM_WRITE(SMH_RAM)                        /* Extra Video RAM */
114   AM_RANGE(0x108000, 0x108007) AM_WRITE(SMH_RAM) AM_BASE(&glass_vregs)            /* Video Registers */
115   AM_RANGE(0x108008, 0x108009) AM_WRITE(clr_int_w)                        /* CLR INT Video */
116   AM_RANGE(0x200000, 0x2007ff) AM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE(&paletteram16)/*  Palette */
117   AM_RANGE(0x440000, 0x440fff) AM_WRITE(SMH_RAM) AM_BASE(&glass_spriteram)         /* Sprite RAM */
118   AM_RANGE(0x700008, 0x700009) AM_WRITE(glass_blitter_w)                  /* serial blitter */
119   AM_RANGE(0x70000c, 0x70000d) AM_WRITE(OKIM6295_bankswitch_w)               /* OKI6295 bankswitch */
120   AM_RANGE(0x70000e, 0x70000f) AM_DEVWRITE8("oki", okim6295_w, 0x00ff)               /* OKI6295 data register */
121   AM_RANGE(0x70000a, 0x70004b) AM_WRITE(glass_coin_w)                     /* Coin Counters/Lockout */
122   AM_RANGE(0xfec000, 0xfeffff) AM_WRITE(SMH_RAM)                        /* Work RAM (partially shared with DS5002FP) */
95static ADDRESS_MAP_START( glass_map, ADDRESS_SPACE_PROGRAM, 16 )
96   AM_RANGE(0x000000, 0x07ffff) AM_ROM                                                      /* ROM */
97   AM_RANGE(0x100000, 0x101fff) AM_RAM_WRITE(glass_vram_w) AM_BASE(&glass_videoram)                  /* Video RAM */
98   AM_RANGE(0x102000, 0x102fff) AM_RAM                                                      /* Extra Video RAM */
99   AM_RANGE(0x108000, 0x108007) AM_WRITE(SMH_RAM) AM_BASE(&glass_vregs)                           /* Video Registers */
100   AM_RANGE(0x108008, 0x108009) AM_WRITE(clr_int_w)                                          /* CLR INT Video */
101   AM_RANGE(0x200000, 0x2007ff) AM_RAM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE(&paletteram16)   /* Palette */
102   AM_RANGE(0x440000, 0x440fff) AM_RAM AM_BASE(&glass_spriteram)                                 /* Sprite RAM */
103   AM_RANGE(0x700000, 0x700001) AM_READ_PORT("DSW2")
104   AM_RANGE(0x700002, 0x700003) AM_READ_PORT("DSW1")
105   AM_RANGE(0x700004, 0x700005) AM_READ_PORT("P1")
106   AM_RANGE(0x700006, 0x700007) AM_READ_PORT("P2")
107   AM_RANGE(0x700008, 0x700009) AM_WRITE(glass_blitter_w)                                       /* serial blitter */
108   AM_RANGE(0x70000c, 0x70000d) AM_WRITE(OKIM6295_bankswitch_w)                                 /* OKI6295 bankswitch */
109   AM_RANGE(0x70000e, 0x70000f) AM_DEVREADWRITE8("oki", okim6295_r, okim6295_w, 0x00ff)               /* OKI6295 status register */
110   AM_RANGE(0x70000a, 0x70004b) AM_WRITE(glass_coin_w)                                          /* Coin Counters/Lockout */
111   AM_RANGE(0xfec000, 0xfeffff) AM_RAM                                                      /* Work RAM (partially shared with DS5002FP) */
123112ADDRESS_MAP_END
124113
125114
r4679r4680
202191
203192   /* basic machine hardware */
204193   MDRV_CPU_ADD("maincpu", M68000,24000000/2)      /* 12 MHz (M680000 P12) */
205   MDRV_CPU_PROGRAM_MAP(glass_readmem,glass_writemem)
194   MDRV_CPU_PROGRAM_MAP(glass_map,0)
206195   MDRV_CPU_VBLANK_INT("screen", glass_interrupt)
207196
208197   MDRV_MACHINE_RESET(glass)
r4679r4680
229218   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
230219MACHINE_DRIVER_END
231220
232ROM_START( glass )
221ROM_START( glass ) /* Version 1.1 */
233222   ROM_REGION( 0x080000, "maincpu", 0 )   /* 68000 code */
234   ROM_LOAD16_BYTE( "1.c23",   0x000000, 0x040000, CRC(aeebd4ed) SHA1(04759dc146dff0fc74b78d70e79dfaebe68328f9) )
235   ROM_LOAD16_BYTE( "2.c22",   0x000001, 0x040000, CRC(165e2e01) SHA1(180a2e2b5151f2321d85ac23eff7fbc9f52023a5) )
223   ROM_LOAD16_BYTE( "1.c23", 0x000000, 0x040000, CRC(aeebd4ed) SHA1(04759dc146dff0fc74b78d70e79dfaebe68328f9) )
224   ROM_LOAD16_BYTE( "2.c22", 0x000001, 0x040000, CRC(165e2e01) SHA1(180a2e2b5151f2321d85ac23eff7fbc9f52023a5) )
236225
237226   ROM_REGION( 0x400000, "gfx1", ROMREGION_DISPOSE )   /* Graphics */
238227   /* 0x000000-0x3fffff filled in later in the DRIVER_INIT */
r4679r4680
245234   ROM_LOAD( "h9.bin", 0x000000, 0x100000, CRC(b9492557) SHA1(3f5c0d696d65e1cd492763dfa749c813dd56a9bf) )
246235
247236   ROM_REGION( 0x140000, "oki", 0 )   /* ADPCM samples - sound chip is OKIM6295 */
248   ROM_LOAD( "c1.bin",    0x000000, 0x100000, CRC(d9f075a2) SHA1(31a7a677861f39d512e9d1f51925c689e481159a) )
237   ROM_LOAD( "c1.bin", 0x000000, 0x100000, CRC(d9f075a2) SHA1(31a7a677861f39d512e9d1f51925c689e481159a) )
249238   /* 0x00000-0x2ffff is fixed, 0x30000-0x3ffff is bank switched from all the ROMs */
250   ROM_RELOAD(            0x040000, 0x100000 )
239   ROM_RELOAD(         0x040000, 0x100000 )
251240ROM_END
252241
253ROM_START( glass10 )
242ROM_START( glass10 ) /* Version 1.0 */
254243   ROM_REGION( 0x080000, "maincpu", 0 )   /* 68000 code */
255   ROM_LOAD16_BYTE( "c23.bin",   0x000000, 0x040000, CRC(688cdf33) SHA1(b59dcc3fc15f72037692b745927b110e97d8282e) )
256   ROM_LOAD16_BYTE( "c22.bin",   0x000001, 0x040000, CRC(ab17c992) SHA1(1509b5b4bbfb4e022e0ab6fbbc0ffc070adfa531) )
244   ROM_LOAD16_BYTE( "c23.bin", 0x000000, 0x040000, CRC(688cdf33) SHA1(b59dcc3fc15f72037692b745927b110e97d8282e) )
245   ROM_LOAD16_BYTE( "c22.bin", 0x000001, 0x040000, CRC(ab17c992) SHA1(1509b5b4bbfb4e022e0ab6fbbc0ffc070adfa531) )
257246
258247   ROM_REGION( 0x400000, "gfx1", ROMREGION_DISPOSE )   /* Graphics */
259248   /* 0x000000-0x3fffff filled in later in the DRIVER_INIT */
r4679r4680
266255   ROM_LOAD( "h9.bin", 0x000000, 0x100000, CRC(b9492557) SHA1(3f5c0d696d65e1cd492763dfa749c813dd56a9bf) )
267256
268257   ROM_REGION( 0x140000, "oki", 0 )   /* ADPCM samples - sound chip is OKIM6295 */
269   ROM_LOAD( "c1.bin",    0x000000, 0x100000, CRC(d9f075a2) SHA1(31a7a677861f39d512e9d1f51925c689e481159a) )
258   ROM_LOAD( "c1.bin", 0x000000, 0x100000, CRC(d9f075a2) SHA1(31a7a677861f39d512e9d1f51925c689e481159a) )
270259   /* 0x00000-0x2ffff is fixed, 0x30000-0x3ffff is bank switched from all the ROMs */
271   ROM_RELOAD(            0x040000, 0x100000 )
260   ROM_RELOAD(         0x040000, 0x100000 )
272261ROM_END
273262
274ROM_START( glass10a )
263ROM_START( glassbrk ) /* Title screen shows "GLASS" and under that "Break Edition" on a real PCB */
275264   ROM_REGION( 0x080000, "maincpu", 0 )   /* 68000 code */
276   ROM_LOAD16_BYTE( "gl.c23",   0x000000, 0x040000, CRC(c1393bea) SHA1(a5f877ba38305a7b49fa3c96b9344cbf71e8c9ef
277) )
278   ROM_LOAD16_BYTE( "gl.c22",   0x000001, 0x040000, CRC(0d6fa33e) SHA1(37e9258ef7e108d034c80abc8e5e5ab6dacf0a61) )
265   ROM_LOAD16_BYTE( "spl-c23.bin", 0x000000, 0x040000, CRC(c1393bea) SHA1(a5f877ba38305a7b49fa3c96b9344cbf71e8c9ef) )
266   ROM_LOAD16_BYTE( "spl-c22.bin", 0x000001, 0x040000, CRC(0d6fa33e) SHA1(37e9258ef7e108d034c80abc8e5e5ab6dacf0a61) )
279267
280268   ROM_REGION( 0x400000, "gfx1", ROMREGION_DISPOSE )   /* Graphics */
281269   /* 0x000000-0x3fffff filled in later in the DRIVER_INIT */
r4679r4680
288276   ROM_LOAD( "h9.bin", 0x000000, 0x100000, CRC(b9492557) SHA1(3f5c0d696d65e1cd492763dfa749c813dd56a9bf) )
289277
290278   ROM_REGION( 0x140000, "oki", 0 )   /* ADPCM samples - sound chip is OKIM6295 */
291   ROM_LOAD( "c1.bin",    0x000000, 0x100000, CRC(d9f075a2) SHA1(31a7a677861f39d512e9d1f51925c689e481159a) )
279   ROM_LOAD( "c1.bin", 0x000000, 0x100000, CRC(d9f075a2) SHA1(31a7a677861f39d512e9d1f51925c689e481159a) )
292280   /* 0x00000-0x2ffff is fixed, 0x30000-0x3ffff is bank switched from all the ROMs */
293   ROM_RELOAD(            0x040000, 0x100000 )
281   ROM_RELOAD(         0x040000, 0x100000 )
294282ROM_END
295283
296284/***************************************************************************
r4679r4680
337325   glass_ROM16_split_gfx(machine, "gfx2", "gfx1", 0x0200000, 0x0200000, 0x0200000, 0x0300000);
338326}
339327
340GAME( 1993, glass,    0,     glass, glass, glass, ROT0, "Gaelco", "Glass (Ver 1.1)",        GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING )
341GAME( 1993, glass10,  glass, glass, glass, glass, ROT0, "Gaelco", "Glass (Ver 1.0, set 1)", GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING )
342GAME( 1993, glass10a, glass, glass, glass, glass, ROT0, "Gaelco", "Glass (Ver 1.0, set 2)", GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING )
328GAME( 1993, glass,    0,     glass, glass, glass, ROT0, "Gaelco", "Glass (Ver 1.1)",                GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING )
329GAME( 1993, glass10,  glass, glass, glass, glass, ROT0, "Gaelco", "Glass (Ver 1.0)",                GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING )
330GAME( 1993, glassbrk, glass, glass, glass, glass, ROT0, "Gaelco", "Glass (Ver 1.0, Break Edition)", GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING )
src/mame/drivers/spiders.c
r4679r4680
238238                                        pia6821_get_irq_b(pia2) |
239239                   pia6821_get_irq_a(pia3) | pia6821_get_irq_b(pia3);
240240
241   cpu_set_input_line(device->machine->cpu[0], M6809_IRQ_LINE, combined_state ? ASSERT_LINE : CLEAR_LINE);
241   cputag_set_input_line(device->machine, "maincpu", M6809_IRQ_LINE, combined_state ? ASSERT_LINE : CLEAR_LINE);
242242}
243243
244244
245245static WRITE_LINE_DEVICE_HANDLER( main_cpu_firq )
246246{
247   cpu_set_input_line(device->machine->cpu[0], M6809_FIRQ_LINE, state ? ASSERT_LINE : CLEAR_LINE);
247   cputag_set_input_line(device->machine, "maincpu", M6809_FIRQ_LINE, state ? ASSERT_LINE : CLEAR_LINE);
248248}
249249
250250
251251static WRITE_LINE_DEVICE_HANDLER( audio_cpu_irq )
252252{
253   cpu_set_input_line(device->machine->cpu[1], M6800_IRQ_LINE, state ? ASSERT_LINE : CLEAR_LINE);
253   cputag_set_input_line(device->machine, "audiocpu", M6800_IRQ_LINE, state ? ASSERT_LINE : CLEAR_LINE);
254254}
255255
256256
src/mame/drivers/snesb.c
r4679r4680
581581      rom[i]=BITSWAP8(rom[i],5,0,6,1,7,4,3,2);
582582   }
583583
584   shared_ram=auto_malloc(0x100);
585   memory_install_readwrite8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x781000, 0x7810ff, 0, 0, sharedram_r, sharedram_w);
584   shared_ram=auto_alloc_array(machine, INT8, 0x100);
585   memory_install_readwrite8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x781000, 0x7810ff, 0, 0, sharedram_r, sharedram_w);
586586
587587   DRIVER_INIT_CALL(snes_hirom);
588588}
r4679r4680
624624   rom[0x7ffc]=0x54;
625625
626626   ffight2b_coins=0;
627   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x7eadce, 0x7eadce, 0, 0, ffight2b_coin_r);
627   memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x7eadce, 0x7eadce, 0, 0, ffight2b_coin_r);
628628
629629
630630   DRIVER_INIT_CALL(snes);
r4679r4680
686686    dst[0xfffd]=0x7a;
687687
688688      /*  protection checks */
689    memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x75bd37, 0x75bd37, 0, 0, sb2b_75bd37_r);
690     memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x6a6000, 0x6a6fff, 0, 0, sb2b_6a6xxx_r);
689    memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x75bd37, 0x75bd37, 0, 0, sb2b_75bd37_r);
690     memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x6a6000, 0x6a6fff, 0, 0, sb2b_6a6xxx_r);
691691
692692     /* extra inputs */
693      memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x770071, 0x770071, 0, 0, sb2b_770071_r);
694    memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x770079, 0x770079, 0, 0, sb2b_770079_r);
693      memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x770071, 0x770071, 0, 0, sb2b_770071_r);
694    memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x770079, 0x770079, 0, 0, sb2b_770079_r);
695695
696696    /* handler to read boot code */
697    memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x007000, 0x007fff, 0, 0, sb2b_7xxx_r);
697    memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x007000, 0x007fff, 0, 0, sb2b_7xxx_r);
698698
699699   DRIVER_INIT_CALL(snes_hirom);
700700}
src/mame/drivers/pcxt.c
r4679r4680
435435   }
436436   else//keyboard emulation
437437   {
438      //cpu_set_input_line(device->machine->cpu[0],1,PULSE_LINE);
438      //cputag_set_input_line(device->machine, "maincpu", 1, PULSE_LINE);
439439      return 0x00;//Keyboard is disconnected
440440      //return 0xaa;//Keyboard code
441441   }
r4679r4680
478478
479479static WRITE8_DEVICE_HANDLER( sys_reset_w )
480480{
481   cpu_set_input_line(device->machine->cpu[0],INPUT_LINE_RESET,PULSE_LINE);
481   cputag_set_input_line(device->machine, "maincpu", INPUT_LINE_RESET, PULSE_LINE);
482482}
483483
484484
r4679r4680
553553
554554static DMA8237_MEM_READ( pc_dma_read_byte )
555555{
556   const address_space *space = cpu_get_address_space(device->machine->cpu[0], ADDRESS_SPACE_PROGRAM);
556   const address_space *space = cputag_get_address_space(device->machine, "maincpu", ADDRESS_SPACE_PROGRAM);
557557   offs_t page_offset = (((offs_t) dma_offset[0][channel]) << 16)
558558      & 0xFF0000;
559559
r4679r4680
563563
564564static DMA8237_MEM_WRITE( pc_dma_write_byte )
565565{
566   const address_space *space = cpu_get_address_space(device->machine->cpu[0], ADDRESS_SPACE_PROGRAM);
566   const address_space *space = cputag_get_address_space(device->machine, "maincpu", ADDRESS_SPACE_PROGRAM);
567567   offs_t page_offset = (((offs_t) dma_offset[0][channel]) << 16)
568568      & 0xFF0000;
569569
r4679r4680
631631******************/
632632
633633static PIC8259_SET_INT_LINE( pic8259_1_set_int_line ) {
634   cpu_set_input_line(device->machine->cpu[0], 0, interrupt ? HOLD_LINE : CLEAR_LINE);
634   cputag_set_input_line(device->machine, "maincpu", 0, interrupt ? HOLD_LINE : CLEAR_LINE);
635635}
636636
637637static const struct pic8259_interface pic8259_1_config = {
r4679r4680
662662   AM_RANGE(0x00400, 0x007ff) AM_RAM AM_BASE(&work_ram)
663663   AM_RANGE(0x00800, 0x9ffff) AM_RAM //work RAM 640KB
664664   AM_RANGE(0xa0000, 0xbffff) AM_RAM_WRITE(vga_vram_w) AM_BASE(&vga_vram)//VGA RAM
665   AM_RANGE(0xc0000, 0xcffff) AM_READ(SMH_BANK1)
665   AM_RANGE(0xc0000, 0xcffff) AM_READ(SMH_BANK(1))
666666   AM_RANGE(0xf0000, 0xfffff) AM_ROM
667667ADDRESS_MAP_END
668668
r4679r4680
898898   bank = -1;
899899   lastvalue = -1;
900900   hv_blank = 0;
901   cpu_set_irq_callback(machine->cpu[0], irq_callback);
901   cpu_set_irq_callback(cputag_get_cpu(machine, "maincpu"), irq_callback);
902902   filetto_devices.pit8253 = devtag_get_device( machine, "pit8253" );
903903   filetto_devices.pic8259_1 = devtag_get_device( machine, "pic8259_1" );
904904   filetto_devices.pic8259_2 = devtag_get_device( machine, "pic8259_2" );
src/mame/drivers/mcatadv.c
r4679r4680
151151static WRITE16_HANDLER( mcat_soundlatch_w )
152152{
153153   soundlatch_w(space, 0, data);
154   cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_NMI, PULSE_LINE);
154   cputag_set_input_line(space->machine, "soundcpu", INPUT_LINE_NMI, PULSE_LINE);
155155}
156156
157157#if 0 // mcat only.. install read handler?
r4679r4680
174174}
175175
176176
177static ADDRESS_MAP_START( mcatadv_readmem, ADDRESS_SPACE_PROGRAM, 16 )
178   AM_RANGE(0x000000, 0x0fffff) AM_READ(SMH_ROM)
179   AM_RANGE(0x100000, 0x10ffff) AM_READ(SMH_RAM)
177static ADDRESS_MAP_START( mcatadv_map, ADDRESS_SPACE_PROGRAM, 16 )
178   AM_RANGE(0x000000, 0x0fffff) AM_ROM
179   AM_RANGE(0x100000, 0x10ffff) AM_RAM
180180
181   AM_RANGE(0x200000, 0x200005) AM_READ(SMH_RAM)
182   AM_RANGE(0x300000, 0x300005) AM_READ(SMH_RAM)
183
184181//  AM_RANGE(0x180018, 0x18001f) AM_READNOP // ?
185182
186   AM_RANGE(0x400000, 0x401fff) AM_READ(SMH_RAM) // Tilemap 0
187   AM_RANGE(0x500000, 0x501fff) AM_READ(SMH_RAM) // Tilemap 1
183   AM_RANGE(0x200000, 0x200005) AM_RAM AM_BASE(&mcatadv_scroll)
184   AM_RANGE(0x300000, 0x300005) AM_RAM AM_BASE(&mcatadv_scroll2)
188185
189   AM_RANGE(0x600000, 0x601fff) AM_READ(SMH_RAM)
190   AM_RANGE(0x602000, 0x602fff) AM_READ(SMH_RAM)
186   AM_RANGE(0x400000, 0x401fff) AM_RAM_WRITE(mcatadv_videoram1_w) AM_BASE(&mcatadv_videoram1) // Tilemap 0
187   AM_RANGE(0x500000, 0x501fff) AM_RAM_WRITE(mcatadv_videoram2_w) AM_BASE(&mcatadv_videoram2) // Tilemap 1
191188
192   AM_RANGE(0x700000, 0x707fff) AM_READ(SMH_RAM) // Sprites
193   AM_RANGE(0x708000, 0x70ffff) AM_READ(SMH_RAM) // Tests more than is needed?
189   AM_RANGE(0x600000, 0x601fff) AM_RAM_WRITE(paletteram16_xGGGGGRRRRRBBBBB_word_w) AM_BASE(&paletteram16)
190   AM_RANGE(0x602000, 0x602fff) AM_RAM // Bigger than needs to be?
194191
192   AM_RANGE(0x700000, 0x707fff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size) // Sprites, two halves for double buffering
193   AM_RANGE(0x708000, 0x70ffff) AM_RAM // Tests more than is needed?
194
195195   AM_RANGE(0x800000, 0x800001) AM_READ_PORT("P1")
196196   AM_RANGE(0x800002, 0x800003) AM_READ_PORT("P2")
197//  AM_RANGE(0x900000, 0x900001) AM_WRITE(mcat_coin_w) // Lockout / Counter MCAT Only
197198   AM_RANGE(0xa00000, 0xa00001) AM_READ_PORT("DSW1")
198199   AM_RANGE(0xa00002, 0xa00003) AM_READ_PORT("DSW2")
199200
200   AM_RANGE(0xb00000, 0xb0000f) AM_READ(SMH_RAM)
201   AM_RANGE(0xb00000, 0xb0000f) AM_RAM AM_BASE(&mcatadv_vidregs)
201202
203   AM_RANGE(0xb00018, 0xb00019) AM_WRITE(watchdog_reset16_w) // NOST Only
202204   AM_RANGE(0xb0001e, 0xb0001f) AM_READ(mcat_wd_r) // MCAT Only
203   AM_RANGE(0xc00000, 0xc00001) AM_READ(soundlatch2_word_r)
205   AM_RANGE(0xc00000, 0xc00001) AM_READWRITE(soundlatch2_word_r,mcat_soundlatch_w)
204206ADDRESS_MAP_END
205207
206static ADDRESS_MAP_START( mcatadv_writemem, ADDRESS_SPACE_PROGRAM, 16 )
207   AM_RANGE(0x000000, 0x0fffff) AM_WRITE(SMH_ROM)
208   AM_RANGE(0x100000, 0x10ffff) AM_WRITE(SMH_RAM)
209   AM_RANGE(0x200000, 0x200005) AM_WRITE(SMH_RAM) AM_BASE(&mcatadv_scroll)
210   AM_RANGE(0x300000, 0x300005) AM_WRITE(SMH_RAM) AM_BASE(&mcatadv_scroll2)
211
212   AM_RANGE(0x400000, 0x401fff) AM_WRITE(mcatadv_videoram1_w) AM_BASE(&mcatadv_videoram1) // Tilemap 0
213   AM_RANGE(0x500000, 0x501fff) AM_WRITE(mcatadv_videoram2_w) AM_BASE(&mcatadv_videoram2) // Tilemap 1
214
215   AM_RANGE(0x600000, 0x601fff) AM_WRITE(paletteram16_xGGGGGRRRRRBBBBB_word_w) AM_BASE(&paletteram16)
216   AM_RANGE(0x602000, 0x602fff) AM_WRITE(SMH_RAM) // Bigger than needs to be?
217
218   AM_RANGE(0x700000, 0x707fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size) // Sprites, two halves for double buffering
219   AM_RANGE(0x708000, 0x70ffff) AM_WRITE(SMH_RAM) // Tests more than is needed?
220
221//  AM_RANGE(0x900000, 0x900001) AM_WRITE(mcat_coin_w) // Lockout / Counter MCAT Only
222   AM_RANGE(0xb00000, 0xb0000f) AM_WRITE(SMH_RAM) AM_BASE(&mcatadv_vidregs)
223   AM_RANGE(0xb00018, 0xb00019) AM_WRITE(watchdog_reset16_w) // NOST Only
224   AM_RANGE(0xc00000, 0xc00001) AM_WRITE(mcat_soundlatch_w)
225ADDRESS_MAP_END
226
227208/*** Sound ***/
228209
229210static WRITE8_HANDLER ( mcatadv_sound_bw_w )
r4679r4680
234215}
235216
236217
237static ADDRESS_MAP_START( mcatadv_sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
238   AM_RANGE(0x0000, 0x3fff) AM_READ(SMH_ROM      )   // ROM
239   AM_RANGE(0x4000, 0xbfff) AM_READ(SMH_BANK1      )   // ROM
240   AM_RANGE(0xc000, 0xdfff) AM_READ(SMH_RAM      )   // RAM
241   AM_RANGE(0xe000, 0xe003) AM_DEVREAD("ym", ym2610_r)
242ADDRESS_MAP_END
243
244static ADDRESS_MAP_START( mcatadv_sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
245   AM_RANGE(0x0000, 0x3fff) AM_WRITE(SMH_ROM      )   // ROM
246   AM_RANGE(0x4000, 0xbfff) AM_WRITE(SMH_ROM      )   // ROM
247   AM_RANGE(0xc000, 0xdfff) AM_WRITE(SMH_RAM      )   // RAM
248   AM_RANGE(0xe000, 0xe003) AM_DEVWRITE("ym", ym2610_w)
218static ADDRESS_MAP_START( mcatadv_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
219   AM_RANGE(0x0000, 0x3fff) AM_ROM                  // ROM
220   AM_RANGE(0x4000, 0xbfff) AM_ROMBANK(1)            // ROM
221   AM_RANGE(0xc000, 0xdfff) AM_RAM                  // RAM
222   AM_RANGE(0xe000, 0xe003) AM_DEVREADWRITE("ym", ym2610_r,ym2610_w)
249223   AM_RANGE(0xf000, 0xf000) AM_WRITE(mcatadv_sound_bw_w)
250224ADDRESS_MAP_END
251225
r4679r4680
255229ADDRESS_MAP_END
256230
257231
258static ADDRESS_MAP_START( nost_sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
259   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM      )   // ROM
260   AM_RANGE(0x8000, 0xbfff) AM_READ(SMH_BANK1      )   // ROM
261   AM_RANGE(0xc000, 0xdfff) AM_READ(SMH_RAM      )   // RAM
232static ADDRESS_MAP_START( nost_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
233   AM_RANGE(0x0000, 0x7fff) AM_ROM                  // ROM
234   AM_RANGE(0x8000, 0xbfff) AM_ROMBANK(1)            // ROM
235   AM_RANGE(0xc000, 0xdfff) AM_RAM                  // RAM
262236ADDRESS_MAP_END
263237
264static ADDRESS_MAP_START( nost_sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
265   AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM      )   // ROM
266   AM_RANGE(0x8000, 0xbfff) AM_WRITE(SMH_ROM      )   // ROM
267   AM_RANGE(0xc000, 0xdfff) AM_WRITE(SMH_RAM      )   // RAM
268ADDRESS_MAP_END
269
270238static ADDRESS_MAP_START( nost_sound_io_map, ADDRESS_SPACE_IO, 8 )
271239   ADDRESS_MAP_GLOBAL_MASK(0xff)
272240   AM_RANGE(0x00, 0x03) AM_DEVWRITE("ym", ym2610_w)
r4679r4680
454422/* Stolen from Psikyo.c */
455423static void sound_irq( const device_config *device, int irq )
456424{
457   cpu_set_input_line(device->machine->cpu[1],0,irq ? ASSERT_LINE : CLEAR_LINE);
425   cputag_set_input_line(device->machine, "soundcpu", 0, irq ? ASSERT_LINE : CLEAR_LINE);
458426}
459427static const ym2610_interface mcatadv_ym2610_interface =
460428{
r4679r4680
466434
467435   /* basic machine hardware */
468436   MDRV_CPU_ADD("maincpu", M68000, XTAL_16MHz) /* verified on pcb */
469   MDRV_CPU_PROGRAM_MAP(mcatadv_readmem,mcatadv_writemem)
437   MDRV_CPU_PROGRAM_MAP(mcatadv_map,0)
470438   MDRV_CPU_VBLANK_INT("screen", irq1_line_hold)
471439
472440   MDRV_CPU_ADD("soundcpu", Z80, XTAL_16MHz/4) /* verified on pcb */
473   MDRV_CPU_PROGRAM_MAP(mcatadv_sound_readmem,mcatadv_sound_writemem)
441   MDRV_CPU_PROGRAM_MAP(mcatadv_sound_map,0)
474442   MDRV_CPU_IO_MAP(mcatadv_sound_io_map,0)
475443
476444   /* video hardware */
r4679r4680
497465   MDRV_SOUND_CONFIG(mcatadv_ym2610_interface)
498466   MDRV_SOUND_ROUTE(0, "lspeaker",  0.32)
499467   MDRV_SOUND_ROUTE(0, "rspeaker", 0.32)
500   MDRV_SOUND_ROUTE(1, "lspeaker",  1.0)
501   MDRV_SOUND_ROUTE(2, "rspeaker", 1.0)
468   MDRV_SOUND_ROUTE(1, "lspeaker",  0.5)
469   MDRV_SOUND_ROUTE(2, "rspeaker", 0.5)
502470MACHINE_DRIVER_END
503471
504472static MACHINE_DRIVER_START( nost )
505473   MDRV_IMPORT_FROM( mcatadv )
506474
507475   MDRV_CPU_MODIFY("soundcpu")
508   MDRV_CPU_PROGRAM_MAP(nost_sound_readmem,nost_sound_writemem)
476   MDRV_CPU_PROGRAM_MAP(nost_sound_map,0)
509477   MDRV_CPU_IO_MAP(nost_sound_io_map,0)
510478MACHINE_DRIVER_END
511479
r4679r4680
702670GAME( 1993, nost,     0,       nost,    nost,    mcatadv, ROT270, "Face",      "Nostradamus", GAME_NO_COCKTAIL )
703671GAME( 1993, nostj,    nost,    nost,    nost,    mcatadv, ROT270, "Face",      "Nostradamus (Japan)", GAME_NO_COCKTAIL )
704672GAME( 1993, nostk,    nost,    nost,    nost,    mcatadv, ROT270, "Face",      "Nostradamus (Korea)", GAME_NO_COCKTAIL )
705
src/mame/drivers/cinemat.c
r4679r4680
280280
281281static WRITE8_HANDLER( qb3_ram_bank_w )
282282{
283   memory_set_bank(space->machine, 1, cpu_get_reg(space->machine->cpu[0], CCPU_P) & 3);
283   memory_set_bank(space->machine, 1, cpu_get_reg(cputag_get_cpu(space->machine, "maincpu"), CCPU_P) & 3);
284284}
285285
286286
r4679r4680
14371437
14381438static DRIVER_INIT( speedfrk )
14391439{
1440   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x00, 0x03, 0, 0, speedfrk_wheel_r);
1441   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x04, 0x06, 0, 0, speedfrk_gear_r);
1440   memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_IO), 0x00, 0x03, 0, 0, speedfrk_wheel_r);
1441   memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_IO), 0x04, 0x06, 0, 0, speedfrk_gear_r);
14421442}
14431443
14441444
14451445static DRIVER_INIT( sundance )
14461446{
1447   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x00, 0x0f, 0, 0, sundance_inputs_r);
1447   memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_IO), 0x00, 0x0f, 0, 0, sundance_inputs_r);
14481448}
14491449
14501450
14511451static DRIVER_INIT( tailg )
14521452{
1453   memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x07, 0x07, 0, 0, mux_select_w);
1453   memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_IO), 0x07, 0x07, 0, 0, mux_select_w);
14541454}
14551455
14561456
14571457static DRIVER_INIT( boxingb )
14581458{
1459   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x0c, 0x0f, 0, 0, boxingb_dial_r);
1460   memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x07, 0x07, 0, 0, mux_select_w);
1459   memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_IO), 0x0c, 0x0f, 0, 0, boxingb_dial_r);
1460   memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_IO), 0x07, 0x07, 0, 0, mux_select_w);
14611461}
14621462
14631463
14641464static DRIVER_INIT( qb3 )
14651465{
1466   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x0f, 0x0f, 0, 0, qb3_frame_r);
1467   memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x00, 0x00, 0, 0, qb3_ram_bank_w);
1466   memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_IO), 0x0f, 0x0f, 0, 0, qb3_frame_r);
1467   memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_IO), 0x00, 0x00, 0, 0, qb3_ram_bank_w);
14681468
14691469   memory_configure_bank(machine, 1, 0, 4, rambase, 0x100*2);
14701470}
src/mame/drivers/toaplan2.c
r4679r4680
317317      This is important for games with common RAM; the RAM test will fail
318318      when leaving service mode if the sound CPU is not reset.
319319    */
320   device_set_info_fct(machine->cpu[0], CPUINFO_FCT_M68K_RESET_CALLBACK, (genf *)toaplan2_reset);
320   m68k_set_reset_callback(machine->cpu[0], toaplan2_reset);
321321}
322322
323323static MACHINE_RESET( ghox )
r4679r4680
394394   #if USE_V25
395395
396396   #else
397   memory_install_readwrite16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x28f002, 0x28fbff, 0, 0, SMH_BANK2, SMH_BANK2 );
397   memory_install_readwrite16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x28f002, 0x28fbff, 0, 0, (read16_space_func)SMH_BANK(2), (write16_space_func)SMH_BANK(2) );
398398   memory_set_bankptr(machine, 2, fixeight_sec_cpu_mem);
399399   #endif
400400
r4679r4680
921921         /* game keeping service mode. It writes/reads the settings to/from */
922922         /* these shared RAM locations. The secondary CPU reads/writes them */
923923         /* from/to nvram to store the settings (a 93C45 EEPROM) */
924         memory_install_readwrite16_handler(space, 0x28f002, 0x28fbff, 0, 0, SMH_BANK2, SMH_BANK2);
924         memory_install_readwrite16_handler(space, 0x28f002, 0x28fbff, 0, 0, (read16_space_func)SMH_BANK(2), (write16_space_func)SMH_BANK(2));
925925         memory_set_bankptr(space->machine, 2, fixeight_sec_cpu_mem);
926926         memory_install_read_port_handler(space, 0x28f004, 0x28f005, 0, 0, "DSWA");   /* Dip Switch A - Wrong !!! */
927927         memory_install_read_port_handler(space, 0x28f006, 0x28f007, 0, 0, "DSWB");   /* Dip Switch B - Wrong !!! */
r4679r4680
15581558   AM_RANGE(0x502000, 0x5021ff) AM_READWRITE(toaplan2_txvideoram16_offs_r, toaplan2_txvideoram16_offs_w) AM_BASE(&toaplan2_txvideoram16_offs) AM_SIZE(&toaplan2_tx_offs_vram_size)
15591559   AM_RANGE(0x503000, 0x5031ff) AM_READWRITE(toaplan2_txscrollram16_r, toaplan2_txscrollram16_w) AM_BASE(&toaplan2_txscrollram16) AM_SIZE(&toaplan2_tx_scroll_vram_size)
15601560   AM_RANGE(0x700000, 0x700001) AM_READ(video_count_r)
1561   AM_RANGE(0x800000, 0x87ffff) AM_READ(SMH_BANK1)
1561   AM_RANGE(0x800000, 0x87ffff) AM_READ(SMH_BANK(1))
15621562ADDRESS_MAP_END
15631563
15641564
src/mame/drivers/mjkjidai.c
r4679r4680
1414- Several imperfections with sprites rendering:
1515  - some sprites are misplaced by 1pixel vertically
1616  - during the tile distribution at the beginning of a match, there's something
17    wrong with the stacks moved around, they aremisaligned and something is
17    wrong with the stacks moved around, they are misaligned and something is
1818    missing.
1919
2020- unknown reads from port 01. Only the top two bits seem to be used.
r4679r4680
4848
4949static STREAM_UPDATE( mjkjidai_adpcm_callback )
5050{
51   struct mjkjidai_adpcm_state *state = param;
51   struct mjkjidai_adpcm_state *state = (struct mjkjidai_adpcm_state *)param;
5252   stream_sample_t *dest = outputs[0];
5353
5454   while (state->playing && samples > 0)
r4679r4680
171171
172172
173173
174static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 )
175   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
176   AM_RANGE(0x8000, 0xbfff) AM_READ(SMH_BANK1)
177   AM_RANGE(0xc000, 0xdfff) AM_READ(SMH_RAM)
178   AM_RANGE(0xe000, 0xf7ff) AM_READ(SMH_RAM)
174static ADDRESS_MAP_START( mjkjidai_map, ADDRESS_SPACE_PROGRAM, 8 )
175   AM_RANGE(0x0000, 0x7fff) AM_ROM
176   AM_RANGE(0x8000, 0xbfff) AM_ROMBANK(1)
177   AM_RANGE(0xc000, 0xcfff) AM_RAM
178   AM_RANGE(0xd000, 0xdfff) AM_RAM   AM_BASE(&nvram) AM_SIZE(&nvram_size)   // cleared and initialized on startup if bit 6 if port 00 is 0
179   AM_RANGE(0xe000, 0xe01f) AM_RAM AM_BASE(&spriteram)         // shared with tilemap ram
180   AM_RANGE(0xe800, 0xe81f) AM_RAM AM_BASE(&spriteram_2)      // shared with tilemap ram
181   AM_RANGE(0xf000, 0xf01f) AM_RAM AM_BASE(&spriteram_3)      // shared with tilemap ram
182   AM_RANGE(0xe000, 0xf7ff) AM_RAM_WRITE(mjkjidai_videoram_w) AM_BASE(&mjkjidai_videoram)
179183ADDRESS_MAP_END
180184
181static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 )
182   AM_RANGE(0x0000, 0xbfff) AM_WRITE(SMH_ROM)
183   AM_RANGE(0xc000, 0xcfff) AM_WRITE(SMH_RAM)
184   AM_RANGE(0xd000, 0xdfff) AM_WRITE(SMH_RAM) AM_BASE(&nvram) AM_SIZE(&nvram_size)   // cleared and initialized on startup if bit 6 if port 00 is 0
185   AM_RANGE(0xe000, 0xe01f) AM_WRITE(SMH_RAM) AM_BASE(&spriteram)   // shared with tilemap ram
186   AM_RANGE(0xe800, 0xe81f) AM_WRITE(SMH_RAM) AM_BASE(&spriteram_2)   // shared with tilemap ram
187   AM_RANGE(0xf000, 0xf01f) AM_WRITE(SMH_RAM) AM_BASE(&spriteram_3)   // shared with tilemap ram
188   AM_RANGE(0xe000, 0xf7ff) AM_WRITE(mjkjidai_videoram_w) AM_BASE(&mjkjidai_videoram)
189ADDRESS_MAP_END
190
191static ADDRESS_MAP_START( io_map, ADDRESS_SPACE_IO, 8 )
185static ADDRESS_MAP_START( mjkjidai_io_map, ADDRESS_SPACE_IO, 8 )
192186   ADDRESS_MAP_GLOBAL_MASK(0xff)
193187   AM_RANGE(0x00, 0x00) AM_READ(keyboard_r)
194188   AM_RANGE(0x01, 0x01) AM_READNOP   // ???
r4679r4680
359353
360354   /* basic machine hardware */
361355   MDRV_CPU_ADD("maincpu", Z80,10000000/2)   /* 5 MHz ??? */
362   MDRV_CPU_PROGRAM_MAP(readmem,writemem)
363   MDRV_CPU_IO_MAP(io_map,0)
356   MDRV_CPU_PROGRAM_MAP(mjkjidai_map,0)
357   MDRV_CPU_IO_MAP(mjkjidai_io_map,0)
364358   MDRV_CPU_VBLANK_INT("screen", nmi_line_pulse)
365359
366360   MDRV_NVRAM_HANDLER(mjkjidai)
src/mame/drivers/jchan.c
r4679r4680
325325      {
326326
327327         case 0:
328            cpu_set_input_line(device->machine->cpu[1], 1, HOLD_LINE);
328            cputag_set_input_line(device->machine, "sub", 1, HOLD_LINE);
329329            break;
330330
331331         case 220:
332            cpu_set_input_line(device->machine->cpu[1], 2, HOLD_LINE);
332            cputag_set_input_line(device->machine, "sub", 2, HOLD_LINE);
333333            break;
334334
335335         case 100:
336            cpu_set_input_line(device->machine->cpu[1], 3, HOLD_LINE);
336            cputag_set_input_line(device->machine, "sub", 3, HOLD_LINE);
337337            break;
338338
339339      }
r4679r4680
346346static VIDEO_START(jchan)
347347{
348348   /* so we can use suprnova.c */
349   jchan_sprite_ram32_1 = auto_malloc ( 0x4000 );
350   jchan_sprite_ram32_2 = auto_malloc ( 0x4000 );
349   jchan_sprite_ram32_1 = auto_alloc_array(machine, UINT32, 0x4000/4);
350   jchan_sprite_ram32_2 = auto_alloc_array(machine, UINT32, 0x4000/4);
351351
352352   spriteram_size = 0x4000;
353   jchan_sprite_regs32_1 = auto_malloc (0x40);
354   jchan_sprite_regs32_2 = auto_malloc (0x40);
353   jchan_sprite_regs32_1 = auto_alloc_array(machine, UINT32, 0x40/4);
354   jchan_sprite_regs32_2 = auto_alloc_array(machine, UINT32, 0x40/4);
355355
356   sprite_bitmap_1 = auto_bitmap_alloc(1024,1024,BITMAP_FORMAT_INDEXED16);
357   sprite_bitmap_2 = auto_bitmap_alloc(1024,1024,BITMAP_FORMAT_INDEXED16);
356   sprite_bitmap_1 = auto_bitmap_alloc(machine,1024,1024,BITMAP_FORMAT_INDEXED16);
357   sprite_bitmap_2 = auto_bitmap_alloc(machine,1024,1024,BITMAP_FORMAT_INDEXED16);
358358
359359   suprnova_alt_enable_sprites = 1;
360360
r4679r4680
451451***************************************************************************/
452452
453453/* communications - hacky! */
454static UINT16 *mainsub_shared_ram;
455
456454static WRITE16_HANDLER( main2sub_cmd_w )
457455{
458456   COMBINE_DATA(&mainsub_shared_ram[0x03ffe/2]);
459   cpu_set_input_line(space->machine->cpu[1], 4, HOLD_LINE);
457   cputag_set_input_line(space->machine, "sub", 4, HOLD_LINE);
460458}
461459
462460// is this called?
463461static WRITE16_HANDLER( sub2main_cmd_w )
464462{
465463   COMBINE_DATA(&mainsub_shared_ram[0x0000/2]);
466   cpu_set_input_line(space->machine->cpu[0], 3, HOLD_LINE);
464   cputag_set_input_line(space->machine, "maincpu", 3, HOLD_LINE);
467465}
468466
469467/* ram convert for suprnova (requires 32-bit stuff) */
r4679r4680
775773{
776774   DRIVER_INIT_CALL( decrypt_toybox_rom );
777775   // install these here, putting them in the memory map causes issues
778   memory_install_write16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x403ffe, 0x403fff, 0, 0, main2sub_cmd_w );
779   memory_install_write16_handler(cpu_get_address_space(machine->cpu[1], ADDRESS_SPACE_PROGRAM), 0x400000, 0x400001, 0, 0, sub2main_cmd_w );
776   memory_install_write16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x403ffe, 0x403fff, 0, 0, main2sub_cmd_w );
777   memory_install_write16_handler(cputag_get_address_space(machine, "sub", ADDRESS_SPACE_PROGRAM), 0x400000, 0x400001, 0, 0, sub2main_cmd_w );
780778
781779
782780   memset(jchan_mcu_com, 0, 4 * sizeof( UINT16 ) );
r4679r4680
786784/* game drivers */
787785GAME( 1995, jchan,     0,        jchan,    jchan,    jchan,    ROT0, "Kaneko", "Jackie Chan - The Kung-Fu Master", GAME_IMPERFECT_GRAPHICS )
788786GAME( 1995, jchan2,    0,        jchan,    jchan2,   jchan,    ROT0, "Kaneko", "Jackie Chan in Fists of Fire", GAME_IMPERFECT_GRAPHICS )
789
src/mame/drivers/mlanding.c
r4679r4680
6767static WRITE16_HANDLER(ml_subreset_w)
6868{
6969   //wrong
70   if(cpu_get_pc(space->cpu)==0x822)
71      cpu_set_input_line(space->machine->cpu[2], INPUT_LINE_RESET, PULSE_LINE);
70   if(cpu_get_pc(space->cpu) == 0x822)
71      cputag_set_input_line(space->machine, "sub", INPUT_LINE_RESET, PULSE_LINE);
7272}
7373
7474static WRITE8_DEVICE_HANDLER( sound_bankswitch_w )
r4679r4680
155155
156156static ADDRESS_MAP_START( mlanding_z80_mem, ADDRESS_SPACE_PROGRAM, 8 )
157157   AM_RANGE(0x0000, 0x3fff) AM_ROM
158   AM_RANGE(0x4000, 0x7fff) AM_READ(SMH_BANK1)
158   AM_RANGE(0x4000, 0x7fff) AM_READ(SMH_BANK(1))
159159   AM_RANGE(0x8000, 0x8fff) AM_RAM
160160   AM_RANGE(0x9000, 0x9001) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
161161   AM_RANGE(0x9002, 0x9100) AM_READ(SMH_RAM)
r4679r4680
314314
315315static void irq_handler(const device_config *device, int irq)
316316{
317   cpu_set_input_line(device->machine->cpu[1],0,irq ? ASSERT_LINE : CLEAR_LINE);
317   cputag_set_input_line(device->machine, "z80", 0, irq ? ASSERT_LINE : CLEAR_LINE);
318318}
319319
320320static GFXDECODE_START( mlanding )
src/mame/drivers/gaelco.c
r4679r4680
111111VIDEO_UPDATE( bigkarnk );
112112
113113
114static ADDRESS_MAP_START( bigkarnk_readmem, ADDRESS_SPACE_PROGRAM, 16 )
115   AM_RANGE(0x000000, 0x07ffff) AM_READ(SMH_ROM)         /* ROM */
116   AM_RANGE(0x100000, 0x101fff) AM_READ(SMH_RAM)         /* Video RAM */
117   AM_RANGE(0x102000, 0x103fff) AM_READ(SMH_RAM)         /* Screen RAM */
118   AM_RANGE(0x200000, 0x2007ff) AM_READ(SMH_RAM)         /* Palette */
119   AM_RANGE(0x440000, 0x440fff) AM_READ(SMH_RAM)         /* Sprite RAM */
120   AM_RANGE(0x700000, 0x700001) AM_READ_PORT("DSW1")
121   AM_RANGE(0x700002, 0x700003) AM_READ_PORT("DSW2")
122   AM_RANGE(0x700004, 0x700005) AM_READ_PORT("P1")
123   AM_RANGE(0x700006, 0x700007) AM_READ_PORT("P2")
124   AM_RANGE(0x700008, 0x700009) AM_READ_PORT("SERVICE")
125   AM_RANGE(0xff8000, 0xffffff) AM_READ(SMH_RAM)         /* Work RAM */
126ADDRESS_MAP_END
127
128114static WRITE16_HANDLER( bigkarnk_sound_command_w )
129115{
130   if (ACCESSING_BITS_0_7){
131      soundlatch_w(space,0,data & 0xff);
132      cpu_set_input_line(space->machine->cpu[1],M6809_FIRQ_LINE,HOLD_LINE);
116   if (ACCESSING_BITS_0_7)
117   {
118      soundlatch_w(space, 0, data & 0xff);
119      cputag_set_input_line(space->machine, "audiocpu", M6809_FIRQ_LINE, HOLD_LINE);
133120   }
134121}
135122
136123static WRITE16_HANDLER( bigkarnk_coin_w )
137124{
138   if (ACCESSING_BITS_0_7){
139      switch ((offset >> 3)){
125   if (ACCESSING_BITS_0_7)
126   {
127      switch ((offset >> 3))
128      {
140129         case 0x00:   /* Coin Lockouts */
141130         case 0x01:
142131            coin_lockout_w( (offset >> 3) & 0x01, ~data & 0x01);
r4679r4680
149138   }
150139}
151140
152static ADDRESS_MAP_START( bigkarnk_writemem, ADDRESS_SPACE_PROGRAM, 16 )
153   AM_RANGE(0x000000, 0x07ffff) AM_WRITE(SMH_ROM)                        /* ROM */
154   AM_RANGE(0x100000, 0x101fff) AM_WRITE(gaelco_vram_w) AM_BASE(&gaelco_videoram)      /* Video RAM */
155   AM_RANGE(0x102000, 0x103fff) AM_WRITE(SMH_RAM)                        /* Screen RAM */
156   AM_RANGE(0x108000, 0x108007) AM_WRITE(SMH_RAM) AM_BASE(&gaelco_vregs)            /* Video Registers */
157//  AM_RANGE(0x10800c, 0x10800d) AM_WRITE(watchdog_reset_w)                     /* INT 6 ACK/Watchdog timer */
158   AM_RANGE(0x200000, 0x2007ff) AM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE(&paletteram16)/* Palette */
159   AM_RANGE(0x440000, 0x440fff) AM_WRITE(SMH_RAM) AM_BASE(&gaelco_spriteram)         /* Sprite RAM */
160   AM_RANGE(0x70000e, 0x70000f) AM_WRITE(bigkarnk_sound_command_w)            /* Triggers a FIRQ on the sound CPU */
161   AM_RANGE(0x70000a, 0x70003b) AM_WRITE(bigkarnk_coin_w)                  /* Coin Counters + Coin Lockout */
162   AM_RANGE(0xff8000, 0xffffff) AM_WRITE(SMH_RAM)                        /* Work RAM */
163ADDRESS_MAP_END
164141
165
166static ADDRESS_MAP_START( bigkarnk_readmem_snd, ADDRESS_SPACE_PROGRAM, 8 )
167   AM_RANGE(0x0000, 0x07ff) AM_READ(SMH_RAM)            /* RAM */
168   AM_RANGE(0x0800, 0x0801) AM_DEVREAD("oki", okim6295_r)   /* OKI6295 */
169   AM_RANGE(0x0a00, 0x0a01) AM_DEVREAD("ym", ym3812_r)   /* YM3812 */
170   AM_RANGE(0x0b00, 0x0b00) AM_READ(soundlatch_r)         /* Sound latch */
171   AM_RANGE(0x0c00, 0xffff) AM_READ(SMH_ROM)            /* ROM */
142static ADDRESS_MAP_START( bigkarnk_map, ADDRESS_SPACE_PROGRAM, 16 )
143   AM_RANGE(0x000000, 0x07ffff) AM_ROM                                                      /* ROM */
144   AM_RANGE(0x100000, 0x101fff) AM_RAM_WRITE(gaelco_vram_w) AM_BASE(&gaelco_videoram)                  /* Video RAM */
145   AM_RANGE(0x102000, 0x103fff) AM_RAM                                                      /* Screen RAM */
146   AM_RANGE(0x108000, 0x108007) AM_WRITEONLY AM_BASE(&gaelco_vregs)                              /* Video Registers */
147//  AM_RANGE(0x10800c, 0x10800d) AM_WRITE(watchdog_reset_w)                                                 /* INT 6 ACK/Watchdog timer */
148   AM_RANGE(0x200000, 0x2007ff) AM_RAM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE(&paletteram16)   /* Palette */
149   AM_RANGE(0x440000, 0x440fff) AM_RAM AM_BASE(&gaelco_spriteram)                                 /* Sprite RAM */
150   AM_RANGE(0x700000, 0x700001) AM_READ_PORT("DSW1")
151   AM_RANGE(0x700002, 0x700003) AM_READ_PORT("DSW2")
152   AM_RANGE(0x700004, 0x700005) AM_READ_PORT("P1")
153   AM_RANGE(0x700006, 0x700007) AM_READ_PORT("P2")
154   AM_RANGE(0x700008, 0x700009) AM_READ_PORT("SERVICE")
155   AM_RANGE(0x70000e, 0x70000f) AM_WRITE(bigkarnk_sound_command_w)                                 /* Triggers a FIRQ on the sound CPU */
156   AM_RANGE(0x70000a, 0x70003b) AM_WRITE(bigkarnk_coin_w)                                       /* Coin Counters + Coin Lockout */
157   AM_RANGE(0xff8000, 0xffffff) AM_RAM                                                      /* Work RAM */
172158ADDRESS_MAP_END
173159
174static ADDRESS_MAP_START( bigkarnk_writemem_snd, ADDRESS_SPACE_PROGRAM, 8 )
175   AM_RANGE(0x0000, 0x07ff) AM_WRITE(SMH_RAM)            /* RAM */
176   AM_RANGE(0x0800, 0x0800) AM_DEVWRITE("oki", okim6295_w)      /* OKI6295 */
177//  AM_RANGE(0x0900, 0x0900) AM_WRITENOP             /* enable sound output? */
178   AM_RANGE(0x0a00, 0x0a01) AM_DEVWRITE("ym", ym3812_w)   /* YM3812 */
179   AM_RANGE(0x0c00, 0xffff) AM_WRITE(SMH_ROM)            /* ROM */
160static ADDRESS_MAP_START( bigkarnk_snd_map, ADDRESS_SPACE_PROGRAM, 8 )
161   AM_RANGE(0x0000, 0x07ff) AM_RAM                                 /* RAM */
162   AM_RANGE(0x0800, 0x0801) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w)   /* OKI6295 */
163//  AM_RANGE(0x0900, 0x0900) AM_WRITENOP                                    /* enable sound output? */
164   AM_RANGE(0x0a00, 0x0a01) AM_DEVREADWRITE("ym", ym3812_r, ym3812_w)      /* YM3812 */
165   AM_RANGE(0x0b00, 0x0b00) AM_READ(soundlatch_r)                     /* Sound latch */
166   AM_RANGE(0x0c00, 0xffff) AM_ROM                                 /* ROM */
180167ADDRESS_MAP_END
181168
182169static INPUT_PORTS_START( bigkarnk )
r4679r4680
224211
225212   /* basic machine hardware */
226213   MDRV_CPU_ADD("maincpu", M68000, 10000000)   /* MC68000P10, 10 MHz */
227   MDRV_CPU_PROGRAM_MAP(bigkarnk_readmem,bigkarnk_writemem)
214   MDRV_CPU_PROGRAM_MAP(bigkarnk_map,0)
228215   MDRV_CPU_VBLANK_INT("screen", irq6_line_hold)
229216
230217   MDRV_CPU_ADD("audiocpu", M6809, 8867000/4)   /* 68B09, 2.21675 MHz? */
231   MDRV_CPU_PROGRAM_MAP(bigkarnk_readmem_snd,bigkarnk_writemem_snd)
218   MDRV_CPU_PROGRAM_MAP(bigkarnk_snd_map,0)
232219
233220   MDRV_QUANTUM_TIME(HZ(600))
234221
r4679r4680
289276VIDEO_UPDATE( maniacsq );
290277
291278
292static ADDRESS_MAP_START( maniacsq_readmem, ADDRESS_SPACE_PROGRAM, 16 )
293   AM_RANGE(0x000000, 0x0fffff) AM_READ(SMH_ROM)         /* ROM */
294   AM_RANGE(0x100000, 0x101fff) AM_READ(SMH_RAM)         /* Video RAM */
295   AM_RANGE(0x102000, 0x103fff) AM_READ(SMH_RAM)         /* Screen RAM */
296   AM_RANGE(0x200000, 0x2007ff) AM_READ(SMH_RAM)         /* Palette */
297   AM_RANGE(0x440000, 0x440fff) AM_READ(SMH_RAM)         /* Sprite RAM */
298   AM_RANGE(0x700000, 0x700001) AM_READ_PORT("DSW2")
299   AM_RANGE(0x700002, 0x700003) AM_READ_PORT("DSW1")
300   AM_RANGE(0x700004, 0x700005) AM_READ_PORT("P1")
301   AM_RANGE(0x700006, 0x700007) AM_READ_PORT("P2")
302   AM_RANGE(0x70000e, 0x70000f) AM_DEVREAD8("oki", okim6295_r, 0x00ff)/* OKI6295 status register */
303   AM_RANGE(0xff0000, 0xffffff) AM_READ(SMH_RAM)         /* Work RAM */
304ADDRESS_MAP_END
305
306279static WRITE16_HANDLER( OKIM6295_bankswitch_w )
307280{
308281   UINT8 *RAM = memory_region(space->machine, "oki");
309282
310   if (ACCESSING_BITS_0_7){
283   if (ACCESSING_BITS_0_7)
284   {
311285      memcpy(&RAM[0x30000], &RAM[0x40000 + (data & 0x0f)*0x10000], 0x10000);
312286   }
313287}
314288
315static ADDRESS_MAP_START( maniacsq_writemem, ADDRESS_SPACE_PROGRAM, 16 )
316   AM_RANGE(0x000000, 0x0fffff) AM_WRITE(SMH_ROM)                        /* ROM */
317   AM_RANGE(0x100000, 0x101fff) AM_WRITE(gaelco_vram_w) AM_BASE(&gaelco_videoram)      /* Video RAM */
318   AM_RANGE(0x102000, 0x103fff) AM_WRITE(SMH_RAM)                        /* Screen RAM */
319   AM_RANGE(0x108000, 0x108007) AM_WRITE(SMH_RAM) AM_BASE(&gaelco_vregs)            /* Video Registers */
320//  AM_RANGE(0x10800c, 0x10800d) AM_WRITE(watchdog_reset_w)                     /* INT 6 ACK/Watchdog timer */
321   AM_RANGE(0x200000, 0x2007ff) AM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE(&paletteram16)/* Palette */
322   AM_RANGE(0x440000, 0x440fff) AM_WRITE(SMH_RAM) AM_BASE(&gaelco_spriteram)         /* Sprite RAM */
323   AM_RANGE(0x70000c, 0x70000d) AM_WRITE(OKIM6295_bankswitch_w)               /* OKI6295 bankswitch */
324   AM_RANGE(0x70000e, 0x70000f) AM_DEVWRITE8("oki", okim6295_w, 0x00ff)               /* OKI6295 data register */
325   AM_RANGE(0xff0000, 0xffffff) AM_WRITE(SMH_RAM)                        /* Work RAM */
289static ADDRESS_MAP_START( maniacsq_map, ADDRESS_SPACE_PROGRAM, 16 )
290   AM_RANGE(0x000000, 0x0fffff) AM_ROM                                                      /* ROM */
291   AM_RANGE(0x100000, 0x101fff) AM_RAM_WRITE(gaelco_vram_w) AM_BASE(&gaelco_videoram)                  /* Video RAM */
292   AM_RANGE(0x102000, 0x103fff) AM_RAM                                                      /* Screen RAM */
293   AM_RANGE(0x108000, 0x108007) AM_WRITE(SMH_RAM) AM_BASE(&gaelco_vregs)                           /* Video Registers */
294//  AM_RANGE(0x10800c, 0x10800d) AM_WRITE(watchdog_reset_w)                                                 /* INT 6 ACK/Watchdog timer */
295   AM_RANGE(0x200000, 0x2007ff) AM_RAM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE(&paletteram16)   /* Palette */
296   AM_RANGE(0x440000, 0x440fff) AM_RAM AM_BASE(&gaelco_spriteram)                                 /* Sprite RAM */
297   AM_RANGE(0x700000, 0x700001) AM_READ_PORT("DSW2")
298   AM_RANGE(0x700002, 0x700003) AM_READ_PORT("DSW1")
299   AM_RANGE(0x700004, 0x700005) AM_READ_PORT("P1")
300   AM_RANGE(0x700006, 0x700007) AM_READ_PORT("P2")
301   AM_RANGE(0x70000c, 0x70000d) AM_WRITE(OKIM6295_bankswitch_w)                                 /* OKI6295 bankswitch */
302   AM_RANGE(0x70000e, 0x70000f) AM_DEVREADWRITE8("oki", okim6295_r, okim6295_w, 0x00ff)               /* OKI6295 status register */
303   AM_RANGE(0xff0000, 0xffffff) AM_RAM                                                      /* Work RAM */
326304ADDRESS_MAP_END
327305
328306
r4679r4680
385363
386364   /* basic machine hardware */
387365   MDRV_CPU_ADD("maincpu", M68000,24000000/2)         /* 12 MHz */
388   MDRV_CPU_PROGRAM_MAP(maniacsq_readmem,maniacsq_writemem)
366   MDRV_CPU_PROGRAM_MAP(maniacsq_map,0)
389367   MDRV_CPU_VBLANK_INT("screen", irq6_line_hold)
390368
391369   /* video hardware */
r4679r4680
589567}
590568
591569
592static ADDRESS_MAP_START( squash_readmem, ADDRESS_SPACE_PROGRAM, 16 )
593   AM_RANGE(0x000000, 0x0fffff) AM_READ(SMH_ROM)         /* ROM */
594   AM_RANGE(0x100000, 0x101fff) AM_READ(SMH_RAM)         /* Video RAM */
595   AM_RANGE(0x102000, 0x103fff) AM_READ(SMH_RAM)         /* Screen RAM */
596   AM_RANGE(0x200000, 0x2007ff) AM_READ(SMH_RAM)         /* Palette */
597   AM_RANGE(0x440000, 0x440fff) AM_READ(SMH_RAM)         /* Sprite RAM */
570static ADDRESS_MAP_START( squash_map, ADDRESS_SPACE_PROGRAM, 16 )
571   AM_RANGE(0x000000, 0x0fffff) AM_ROM                                                      /* ROM */
572   AM_RANGE(0x100000, 0x101fff) AM_RAM_WRITE(gaelco_vram_encrypted_w) AM_BASE(&gaelco_videoram)         /* Video RAM */
573   AM_RANGE(0x102000, 0x103fff) AM_RAM_WRITE(gaelco_encrypted_w) AM_BASE(&gaelco_screen)                                                                /* Screen RAM */
574   AM_RANGE(0x108000, 0x108007) AM_WRITE(SMH_RAM) AM_BASE(&gaelco_vregs)                           /* Video Registers */
575//  AM_RANGE(0x10800c, 0x10800d) AM_WRITE(watchdog_reset_w)                                                 /* INT 6 ACK/Watchdog timer */
576   AM_RANGE(0x200000, 0x2007ff) AM_RAM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE(&paletteram16)   /* Palette */
577   AM_RANGE(0x440000, 0x440fff) AM_RAM AM_BASE(&gaelco_spriteram)                                 /* Sprite RAM */
598578   AM_RANGE(0x700000, 0x700001) AM_READ_PORT("DSW2")
599579   AM_RANGE(0x700002, 0x700003) AM_READ_PORT("DSW1")
600580   AM_RANGE(0x700004, 0x700005) AM_READ_PORT("P1")
601581   AM_RANGE(0x700006, 0x700007) AM_READ_PORT("P2")
602   AM_RANGE(0x70000e, 0x70000f) AM_DEVREAD8("oki", okim6295_r, 0x00ff)/* OKI6295 status register */
603   AM_RANGE(0xff0000, 0xffffff) AM_READ(SMH_RAM)         /* Work RAM */
582   AM_RANGE(0x70000c, 0x70000d) AM_WRITE(OKIM6295_bankswitch_w)                                 /* OKI6295 bankswitch */
583   AM_RANGE(0x70000e, 0x70000f) AM_DEVREADWRITE8("oki", okim6295_r, okim6295_w, 0x00ff)               /* OKI6295 status register */
584   AM_RANGE(0xff0000, 0xffffff) AM_RAM                                                      /* Work RAM */
604585ADDRESS_MAP_END
605586
606static ADDRESS_MAP_START( squash_writemem, ADDRESS_SPACE_PROGRAM, 16 )
607   AM_RANGE(0x000000, 0x0fffff) AM_WRITE(SMH_ROM)                        /* ROM */
608   AM_RANGE(0x100000, 0x101fff) AM_WRITE(gaelco_vram_encrypted_w) AM_BASE(&gaelco_videoram)      /* Video RAM */
609   AM_RANGE(0x102000, 0x103fff) AM_WRITE(gaelco_encrypted_w) AM_BASE(&gaelco_screen)                                                                /* Screen RAM */
610   AM_RANGE(0x108000, 0x108007) AM_WRITE(SMH_RAM) AM_BASE(&gaelco_vregs)            /* Video Registers */
611//  AM_RANGE(0x10800c, 0x10800d) AM_WRITE(watchdog_reset_w)                     /* INT 6 ACK/Watchdog timer */
612   AM_RANGE(0x200000, 0x2007ff) AM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE(&paletteram16)/* Palette */
613   AM_RANGE(0x440000, 0x440fff) AM_WRITE(SMH_RAM) AM_BASE(&gaelco_spriteram)         /* Sprite RAM */
614   AM_RANGE(0x70000c, 0x70000d) AM_WRITE(OKIM6295_bankswitch_w)               /* OKI6295 bankswitch */
615   AM_RANGE(0x70000e, 0x70000f) AM_DEVWRITE8("oki", okim6295_w, 0x00ff)               /* OKI6295 data register */
616   AM_RANGE(0xff0000, 0xffffff) AM_WRITE(SMH_RAM)                        /* Work RAM */
617ADDRESS_MAP_END
618
619587static MACHINE_DRIVER_START( squash )
620588
621589   /* basic machine hardware */
622590   MDRV_CPU_ADD("maincpu", M68000, 12000000)   /* MC68000P12, 12 MHz */
623   MDRV_CPU_PROGRAM_MAP(squash_readmem,squash_writemem)
591   MDRV_CPU_PROGRAM_MAP(squash_map,0)
624592   MDRV_CPU_VBLANK_INT("screen", irq6_line_hold)
625593
626594   MDRV_QUANTUM_TIME(HZ(600))
r4679r4680
754722
755723
756724
757static ADDRESS_MAP_START( thoop_writemem, ADDRESS_SPACE_PROGRAM, 16 )
758   AM_RANGE(0x000000, 0x0fffff) AM_WRITE(SMH_ROM)                        /* ROM */
759   AM_RANGE(0x100000, 0x101fff) AM_WRITE(thoop_vram_encrypted_w) AM_BASE(&gaelco_videoram)      /* Video RAM */
760   AM_RANGE(0x102000, 0x103fff) AM_WRITE(thoop_encrypted_w) AM_BASE(&gaelco_screen)                                                                /* Screen RAM */
761   AM_RANGE(0x108000, 0x108007) AM_WRITE(SMH_RAM) AM_BASE(&gaelco_vregs)            /* Video Registers */
762//  AM_RANGE(0x10800c, 0x10800d) AM_WRITE(watchdog_reset_w)                     /* INT 6 ACK/Watchdog timer */
763   AM_RANGE(0x200000, 0x2007ff) AM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE(&paletteram16)/* Palette */
764   AM_RANGE(0x440000, 0x440fff) AM_WRITE(SMH_RAM) AM_BASE(&gaelco_spriteram)         /* Sprite RAM */
765   AM_RANGE(0x70000c, 0x70000d) AM_WRITE(OKIM6295_bankswitch_w)               /* OKI6295 bankswitch */
766   AM_RANGE(0x70000e, 0x70000f) AM_DEVWRITE8("oki", okim6295_w, 0x00ff)               /* OKI6295 data register */
767   AM_RANGE(0xff0000, 0xffffff) AM_WRITE(SMH_RAM)                        /* Work RAM */
725static ADDRESS_MAP_START( thoop_map, ADDRESS_SPACE_PROGRAM, 16 )
726   AM_RANGE(0x000000, 0x0fffff) AM_ROM                                                         /* ROM */
727   AM_RANGE(0x100000, 0x101fff) AM_RAM_WRITE(thoop_vram_encrypted_w) AM_BASE(&gaelco_videoram)               /* Video RAM */
728   AM_RANGE(0x102000, 0x103fff) AM_RAM_WRITE(thoop_encrypted_w) AM_BASE(&gaelco_screen)                  /* Screen RAM */
729   AM_RANGE(0x108000, 0x108007) AM_WRITE(SMH_RAM) AM_BASE(&gaelco_vregs)                              /* Video Registers */
730//  AM_RANGE(0x10800c, 0x10800d) AM_WRITE(watchdog_reset_w)                                                     /* INT 6 ACK/Watchdog timer */
731   AM_RANGE(0x200000, 0x2007ff) AM_RAM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE(&paletteram16)      /* Palette */
732   AM_RANGE(0x440000, 0x440fff) AM_RAM AM_BASE(&gaelco_spriteram)                                    /* Sprite RAM */
733   AM_RANGE(0x700000, 0x700001) AM_READ_PORT("DSW2")
734   AM_RANGE(0x700002, 0x700003) AM_READ_PORT("DSW1")
735   AM_RANGE(0x700004, 0x700005) AM_READ_PORT("P1")
736   AM_RANGE(0x700006, 0x700007) AM_READ_PORT("P2")
737   AM_RANGE(0x70000c, 0x70000d) AM_WRITE(OKIM6295_bankswitch_w)                                    /* OKI6295 bankswitch */
738   AM_RANGE(0x70000e, 0x70000f) AM_DEVREADWRITE8("oki", okim6295_r, okim6295_w, 0x00ff)                  /* OKI6295 status register */
739   AM_RANGE(0xff0000, 0xffffff) AM_RAM                                                         /* Work RAM */
768740ADDRESS_MAP_END
769741
770742static MACHINE_DRIVER_START( thoop )
771743
772744   /* basic machine hardware */
773745   MDRV_CPU_ADD("maincpu", M68000, 12000000)   /* MC68000P12, 12 MHz */
774   MDRV_CPU_PROGRAM_MAP(squash_readmem,thoop_writemem)
746   MDRV_CPU_PROGRAM_MAP(thoop_map,0)
775747   MDRV_CPU_VBLANK_INT("screen", irq6_line_hold)
776748
777749   MDRV_QUANTUM_TIME(HZ(600))
src/mame/drivers/tankbust.c
r4679r4680
5656}
5757
5858//port B of ay8910#0
59static UINT32 timer1=0;
59static UINT32 timer1 = 0;
6060static READ8_DEVICE_HANDLER( tankbust_soundtimer_r )
6161{
6262   int ret;
r4679r4680
7070{
7171//logerror("sound_irq_line write = %2x (after CPUs synced) \n",param);
7272
73      if ((param&1) == 0)
74         cpu_set_input_line(machine->cpu[1], 0, HOLD_LINE);
73      if ((param & 1) == 0)
74         cputag_set_input_line(machine, "sub", 0, HOLD_LINE);
7575}
7676
7777
r4679r4680
8383
8484#if 0
8585   popmessage("e0: %x %x (%x cnt) %x %x %x %x",
86      e0xx_data[0],e0xx_data[1],
87      e0xx_data[2],e0xx_data[3],
88      e0xx_data[4],e0xx_data[5],
86      e0xx_data[0], e0xx_data[1],
87      e0xx_data[2], e0xx_data[3],
88      e0xx_data[4], e0xx_data[5],
8989      e0xx_data[6] );
9090#endif
9191
9292   switch (offset)
9393   {
9494   case 0:   /* 0xe000 interrupt enable */
95      interrupt_enable_w(space,0,data);
95      interrupt_enable_w(space, 0, data);
9696   break;
9797
9898   case 1:   /* 0xe001 (value 0 then 1) written right after the soundlatch_w */
r4679r4680
194194
195195static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 8 )
196196   AM_RANGE(0x0000, 0x5fff) AM_ROM
197   AM_RANGE(0x6000, 0x9fff) AM_READWRITE(SMH_BANK1, SMH_ROM)
198   AM_RANGE(0xa000, 0xbfff) AM_READWRITE(SMH_BANK2, SMH_ROM)
197   AM_RANGE(0x6000, 0x9fff) AM_READWRITE(SMH_BANK(1), SMH_ROM)
198   AM_RANGE(0xa000, 0xbfff) AM_READWRITE(SMH_BANK(2), SMH_ROM)
199199   AM_RANGE(0xc000, 0xc7ff) AM_READWRITE(tankbust_background_videoram_r, tankbust_background_videoram_w) AM_BASE(&videoram)
200200   AM_RANGE(0xc800, 0xcfff) AM_READWRITE(tankbust_background_colorram_r, tankbust_background_colorram_w) AM_BASE(&colorram)
201201   AM_RANGE(0xd000, 0xd7ff) AM_READWRITE(tankbust_txtram_r, tankbust_txtram_w) AM_BASE(&tankbust_txtram)
src/mame/drivers/wecleman.c
r4679r4680
376376
377377      // Bit 0 : SUBINT
378378      if ( (wecleman_irqctrl & 1) && (!(data & 1)) )   // 1->0 transition
379         cpu_set_input_line(space->machine->cpu[1],4,HOLD_LINE);
379         cputag_set_input_line(space->machine, "sub", 4, HOLD_LINE);
380380
381381      // Bit 1 : NSUBRST
382      if (data & 2)   cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_RESET, CLEAR_LINE  );
383      else                    cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_RESET, ASSERT_LINE );
382      if (data & 2)
383         cputag_set_input_line(space->machine, "sub", INPUT_LINE_RESET, CLEAR_LINE);
384      else
385         cputag_set_input_line(space->machine, "sub", INPUT_LINE_RESET, ASSERT_LINE);
384386
385387      // Bit 2 : SOUND-ON
386388      // Bit 3 : SOUNDRST
r4679r4680
655657{
656658   if (ACCESSING_BITS_0_7)
657659   {
658      soundlatch_w(space,0,data & 0xFF);
659      cpu_set_input_line(space->machine->cpu[2],0, HOLD_LINE);
660      soundlatch_w(space, 0, data & 0xFF);
661      cputag_set_input_line(space->machine, "audiocpu", 0, HOLD_LINE);
660662   }
661663}
662664
r4679r4680
715717{
716718   if (ACCESSING_BITS_0_7)
717719   {
718      soundlatch_w(space,0,data & 0xFF);
719      cpu_set_input_line(space->machine->cpu[2],M6809_IRQ_LINE, HOLD_LINE);
720      soundlatch_w(space, 0, data & 0xFF);
721      cputag_set_input_line(space->machine, "audiocpu", M6809_IRQ_LINE, HOLD_LINE);
720722   }
721723}
722724
r4679r4680
12591261
12601262static void bitswap(UINT8 *src,size_t len,int _14,int _13,int _12,int _11,int _10,int _f,int _e,int _d,int _c,int _b,int _a,int _9,int _8,int _7,int _6,int _5,int _4,int _3,int _2,int _1,int _0)
12611263{
1262   UINT8 *buffer = malloc_or_die(len);
1264   UINT8 *buffer = alloc_array_or_die(UINT8, len);
12631265   {
12641266      int i;
12651267
r4679r4680
13751377   int i;
13761378
13771379   base = memory_region(machine, "gfx1");   // sprites
1378   temp = malloc_or_die( bank_size );
1380   temp = alloc_array_or_die(UINT8, bank_size );
13791381
13801382   for( i = num16_banks; i >0; i-- ){
13811383      UINT8 *finish   = base + 2*bank_size*i;
src/mame/drivers/crbaloon.c
r4679r4680
163163   const device_config *sn = devtag_get_device(space->machine, "sn");
164164
165165   /* D0 - interrupt enable - also goes to PC3259 as /HTCTRL */
166   cpu_interrupt_enable(space->machine->cpu[0], (data & 0x01) ? TRUE : FALSE);
166   cpu_interrupt_enable(cputag_get_cpu(space->machine, "maincpu"), (data & 0x01) ? TRUE : FALSE);
167167   crbaloon_set_clear_collision_address((data & 0x01) ? TRUE : FALSE);
168168
169169   /* D1 - SOUND STOP */
r4679r4680
342342
343343static MACHINE_RESET( crballoon )
344344{
345   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO);
345   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_IO);
346346   const device_config *discrete = devtag_get_device(machine, "discrete");
347347
348348   pc3092_reset();
src/mame/drivers/seattle.c
r4679r4680
509509   galileo.timer[3].timer = timer_alloc(machine, galileo_timer_callback, NULL);
510510
511511   /* set the fastest DRC options, but strict verification */
512   mips3drc_set_options(machine->cpu[0], MIPS3DRC_FASTEST_OPTIONS + MIPS3DRC_STRICT_VERIFY);
512   mips3drc_set_options(cputag_get_cpu(machine, "maincpu"), MIPS3DRC_FASTEST_OPTIONS + MIPS3DRC_STRICT_VERIFY);
513513
514514   /* configure fast RAM regions for DRC */
515   mips3drc_add_fastram(machine->cpu[0], 0x00000000, 0x007fffff, FALSE, rambase);
516   mips3drc_add_fastram(machine->cpu[0], 0x1fc00000, 0x1fc7ffff, TRUE,  rombase);
515   mips3drc_add_fastram(cputag_get_cpu(machine, "maincpu"), 0x00000000, 0x007fffff, FALSE, rambase);
516   mips3drc_add_fastram(cputag_get_cpu(machine, "maincpu"), 0x1fc00000, 0x1fc7ffff, TRUE,  rombase);
517517
518518   /* register for save states */
519519   state_save_register_global_array(machine, galileo.reg);
r4679r4680
583583
584584static void ide_interrupt(const device_config *device, int state)
585585{
586   cpu_set_input_line(device->machine->cpu[0], IDE_IRQ_NUM, state);
586   cputag_set_input_line(device->machine, "maincpu", IDE_IRQ_NUM, state);
587587}
588588
589589
r4679r4680
601601   {
602602      UINT8 assert = ethernet_irq_state && (*interrupt_enable & (1 << ETHERNET_IRQ_SHIFT));
603603      if (ethernet_irq_num != 0)
604         cpu_set_input_line(machine->cpu[0], ethernet_irq_num, assert ? ASSERT_LINE : CLEAR_LINE);
604         cputag_set_input_line(machine, "maincpu", ethernet_irq_num, assert ? ASSERT_LINE : CLEAR_LINE);
605605   }
606606   else if (board_config == SEATTLE_WIDGET_CONFIG)
607607      update_widget_irq(machine);
r4679r4680
622622
623623static void ioasic_irq(running_machine *machine, int state)
624624{
625   cpu_set_input_line(machine->cpu[0], IOASIC_IRQ_NUM, state);
625   cputag_set_input_line(machine, "maincpu", IOASIC_IRQ_NUM, state);
626626}
627627
628628
r4679r4680
657657
658658   /* VBLANK: clear anything pending on the old IRQ */
659659   if (vblank_irq_num != 0)
660      cpu_set_input_line(space->machine->cpu[0], vblank_irq_num, CLEAR_LINE);
660      cputag_set_input_line(space->machine, "maincpu", vblank_irq_num, CLEAR_LINE);
661661
662662   /* VBLANK: compute the new IRQ vector */
663663   irq = (*interrupt_config >> (2*VBLANK_IRQ_SHIFT)) & 3;
r4679r4680
668668   {
669669      /* Widget: clear anything pending on the old IRQ */
670670      if (widget.irq_num != 0)
671         cpu_set_input_line(space->machine->cpu[0], widget.irq_num, CLEAR_LINE);
671         cputag_set_input_line(space->machine, "maincpu", widget.irq_num, CLEAR_LINE);
672672
673673      /* Widget: compute the new IRQ vector */
674674      irq = (*interrupt_config >> (2*WIDGET_IRQ_SHIFT)) & 3;
r4679r4680
680680   {
681681      /* Ethernet: clear anything pending on the old IRQ */
682682      if (ethernet_irq_num != 0)
683         cpu_set_input_line(space->machine->cpu[0], ethernet_irq_num, CLEAR_LINE);
683         cputag_set_input_line(space->machine, "maincpu", ethernet_irq_num, CLEAR_LINE);
684684
685685      /* Ethernet: compute the new IRQ vector */
686686      irq = (*interrupt_config >> (2*ETHERNET_IRQ_SHIFT)) & 3;
r4679r4680
725725   /* if the VBLANK has been latched, and the interrupt is enabled, assert */
726726   if (vblank_latch && (*interrupt_enable & (1 << VBLANK_IRQ_SHIFT)))
727727      state = ASSERT_LINE;
728   cpu_set_input_line(machine->cpu[0], vblank_irq_num, state);
728   cputag_set_input_line(machine, "maincpu", vblank_irq_num, state);
729729}
730730
731731
r4679r4680
886886   /* if any unmasked interrupts are live, we generate */
887887   if (galileo.reg[GREG_INT_STATE] & galileo.reg[GREG_INT_MASK])
888888      state = ASSERT_LINE;
889   cpu_set_input_line(machine->cpu[0], GALILEO_IRQ_NUM, state);
889   cputag_set_input_line(machine, "maincpu", GALILEO_IRQ_NUM, state);
890890
891891   if (LOG_GALILEO)
892892      logerror("Galileo IRQ %s\n", (state == ASSERT_LINE) ? "asserted" : "cleared");
r4679r4680
13331333      }
13341334      else
13351335      {
1336         if (LOG_DMA) logerror("%08X:Stalling CPU on voodoo\n", cpu_get_pc(device->machine->cpu[0]));
1337         cpu_spinuntil_trigger(device->machine->cpu[0], 45678);
1336         if (LOG_DMA) logerror("%08X:Stalling CPU on voodoo\n", cpu_get_pc(cputag_get_cpu(device->machine, "maincpu")));
1337         cpu_spinuntil_trigger(cputag_get_cpu(device->machine, "maincpu"), 45678);
13381338      }
13391339   }
13401340
r4679r4680
13471347      for (which = 0; which < 4; which++)
13481348         if (galileo.dma_stalled_on_voodoo[which])
13491349         {
1350            const address_space *space = cpu_get_address_space(device->machine->cpu[0], ADDRESS_SPACE_PROGRAM);
1350            const address_space *space = cputag_get_address_space(device->machine, "maincpu", ADDRESS_SPACE_PROGRAM);
13511351            if (LOG_DMA) logerror("Resuming DMA%d on voodoo\n", which);
13521352
13531353            /* mark this DMA as no longer stalled */
r4679r4680
15041504
15051505   /* update the IRQ state */
15061506   if (widget.irq_num != 0)
1507      cpu_set_input_line(machine->cpu[0], widget.irq_num, assert ? ASSERT_LINE : CLEAR_LINE);
1507      cputag_set_input_line(machine, "maincpu", widget.irq_num, assert ? ASSERT_LINE : CLEAR_LINE);
15081508}
15091509
15101510
r4679r4680
15241524         break;
15251525
15261526      case WREG_ANALOG:
1527         result = analog_port_r(cpu_get_address_space(device->machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0, mem_mask);
1527         result = analog_port_r(cputag_get_address_space(device->machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0, mem_mask);
15281528         break;
15291529
15301530      case WREG_ETHER_DATA:
r4679r4680
15551555         break;
15561556
15571557      case WREG_ANALOG:
1558         analog_port_w(cpu_get_address_space(device->machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0, data, mem_mask);
1558         analog_port_w(cputag_get_address_space(device->machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0, data, mem_mask);
15591559         break;
15601560
15611561      case WREG_ETHER_DATA:
r4679r4680
17201720{
17211721   /* note that blitz times out if we don't have this cycle stealing */
17221722   if (offset == 0x3f6/4)
1723      cpu_eat_cycles(device->machine->cpu[0], 100);
1723      cpu_eat_cycles(cputag_get_cpu(device->machine, "maincpu"), 100);
17241724   return ide_controller32_r(device, offset, mem_mask);
17251725}
17261726
r4679r4680
27772777   {
27782778      case PHOENIX_CONFIG:
27792779         /* original Phoenix board only has 4MB of RAM */
2780         memory_install_readwrite32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x00400000, 0x007fffff, 0, 0, SMH_UNMAP, SMH_UNMAP);
2780         memory_install_readwrite32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x00400000, 0x007fffff, 0, 0, (read32_space_func)SMH_UNMAP, (write32_space_func)SMH_UNMAP);
27812781         break;
27822782
27832783      case SEATTLE_WIDGET_CONFIG:
27842784         /* set up the widget board */
27852785         device = devtag_get_device(machine, "ethernet");
2786         memory_install_readwrite32_device_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), device, 0x16c00000, 0x16c0001f, 0, 0, widget_r, widget_w);
2786         memory_install_readwrite32_device_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), device, 0x16c00000, 0x16c0001f, 0, 0, widget_r, widget_w);
27872787         break;
27882788
27892789      case FLAGSTAFF_CONFIG:
27902790         /* set up the analog inputs */
2791         memory_install_readwrite32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x14000000, 0x14000003, 0, 0, analog_port_r, analog_port_w);
2791         memory_install_readwrite32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x14000000, 0x14000003, 0, 0, analog_port_r, analog_port_w);
27922792
27932793         /* set up the ethernet controller */
27942794         device = devtag_get_device(machine, "ethernet");
2795         memory_install_readwrite32_device_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), device, 0x16c00000, 0x16c0003f, 0, 0, ethernet_r, ethernet_w);
2795         memory_install_readwrite32_device_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), device, 0x16c00000, 0x16c0003f, 0, 0, ethernet_r, ethernet_w);
27962796         break;
27972797   }
27982798}
r4679r4680
28042804   init_common(machine, MIDWAY_IOASIC_STANDARD, 310/* others? */, 80, PHOENIX_CONFIG);
28052805
28062806   /* speedups */
2807   mips3drc_add_hotspot(machine->cpu[0], 0x8004413C, 0x0C0054B4, 250);      /* confirmed */
2808   mips3drc_add_hotspot(machine->cpu[0], 0x80094930, 0x00A2102B, 250);      /* confirmed */
2809   mips3drc_add_hotspot(machine->cpu[0], 0x80092984, 0x3C028011, 250);      /* confirmed */
2807   mips3drc_add_hotspot(cputag_get_cpu(machine, "maincpu"), 0x8004413C, 0x0C0054B4, 250);      /* confirmed */
2808   mips3drc_add_hotspot(cputag_get_cpu(machine, "maincpu"), 0x80094930, 0x00A2102B, 250);      /* confirmed */
2809   mips3drc_add_hotspot(cputag_get_cpu(machine, "maincpu"), 0x80092984, 0x3C028011, 250);      /* confirmed */
28102810}
28112811
28122812
r4679r4680
28162816   init_common(machine, MIDWAY_IOASIC_MACE, 319/* others? */, 80, SEATTLE_CONFIG);
28172817
28182818   /* speedups */
2819   mips3drc_add_hotspot(machine->cpu[0], 0x800108F8, 0x8C420000, 250);      /* confirmed */
2819   mips3drc_add_hotspot(cputag_get_cpu(machine, "maincpu"), 0x800108F8, 0x8C420000, 250);      /* confirmed */
28202820}
28212821
28222822
r4679r4680
28262826   init_common(machine, MIDWAY_IOASIC_STANDARD, 315/* no alternates */, 100, FLAGSTAFF_CONFIG);
28272827
28282828   /* speedups */
2829   mips3drc_add_hotspot(machine->cpu[0], 0x80059F34, 0x3C028012, 250);      /* confirmed */
2830   mips3drc_add_hotspot(machine->cpu[0], 0x800A5AF4, 0x8E300010, 250);      /* confirmed */
2831   mips3drc_add_hotspot(machine->cpu[0], 0x8004C260, 0x3C028012, 250);      /* confirmed */
2829   mips3drc_add_hotspot(cputag_get_cpu(machine, "maincpu"), 0x80059F34, 0x3C028012, 250);      /* confirmed */
2830   mips3drc_add_hotspot(cputag_get_cpu(machine, "maincpu"), 0x800A5AF4, 0x8E300010, 250);      /* confirmed */
2831   mips3drc_add_hotspot(cputag_get_cpu(machine, "maincpu"), 0x8004C260, 0x3C028012, 250);      /* confirmed */
28322832}
28332833
28342834
r4679r4680
28382838   init_common(machine, MIDWAY_IOASIC_SFRUSHRK, 331/* unknown */, 100, FLAGSTAFF_CONFIG);
28392839
28402840   /* speedups */
2841   mips3drc_add_hotspot(machine->cpu[0], 0x800343E8, 0x3C028012, 250);      /* confirmed */
2842   mips3drc_add_hotspot(machine->cpu[0], 0x8008F4F0, 0x3C028012, 250);      /* confirmed */
2843   mips3drc_add_hotspot(machine->cpu[0], 0x800A365C, 0x8E300014, 250);      /* confirmed */
2844   mips3drc_add_hotspot(machine->cpu[0], 0x80051DAC, 0x3C028012, 250);      /* confirmed */
2841   mips3drc_add_hotspot(cputag_get_cpu(machine, "maincpu"), 0x800343E8, 0x3C028012, 250);      /* confirmed */
2842   mips3drc_add_hotspot(cputag_get_cpu(machine, "maincpu"), 0x8008F4F0, 0x3C028012, 250);      /* confirmed */
2843   mips3drc_add_hotspot(cputag_get_cpu(machine, "maincpu"), 0x800A365C, 0x8E300014, 250);      /* confirmed */
2844   mips3drc_add_hotspot(cputag_get_cpu(machine, "maincpu"), 0x80051DAC, 0x3C028012, 250);      /* confirmed */
28452845}
28462846
28472847
r4679r4680
28522852   midway_ioasic_set_auto_ack(1);
28532853
28542854   /* speedups */
2855   mips3drc_add_hotspot(machine->cpu[0], 0x80032534, 0x02221024, 250);      /* confirmed */
2856   mips3drc_add_hotspot(machine->cpu[0], 0x800B1BE4, 0x8E110014, 250);      /* confirmed */
2855   mips3drc_add_hotspot(cputag_get_cpu(machine, "maincpu"), 0x80032534, 0x02221024, 250);      /* confirmed */
2856   mips3drc_add_hotspot(cputag_get_cpu(machine, "maincpu"), 0x800B1BE4, 0x8E110014, 250);      /* confirmed */
28572857}
28582858
28592859
r4679r4680
28632863   init_common(machine, MIDWAY_IOASIC_VAPORTRX, 324/* 334? unknown */, 100, SEATTLE_WIDGET_CONFIG);
28642864
28652865   /* speedups */
2866   mips3drc_add_hotspot(machine->cpu[0], 0x80049F14, 0x3C028020, 250);      /* confirmed */
2867   mips3drc_add_hotspot(machine->cpu[0], 0x8004859C, 0x3C028020, 250);      /* confirmed */
2868   mips3drc_add_hotspot(machine->cpu[0], 0x8005922C, 0x8E020014, 250);      /* confirmed */
2866   mips3drc_add_hotspot(cputag_get_cpu(machine, "maincpu"), 0x80049F14, 0x3C028020, 250);      /* confirmed */
2867   mips3drc_add_hotspot(cputag_get_cpu(machine, "maincpu"), 0x8004859C, 0x3C028020, 250);      /* confirmed */
2868   mips3drc_add_hotspot(cputag_get_cpu(machine, "maincpu"), 0x8005922C, 0x8E020014, 250);      /* confirmed */
28692869}
28702870
28712871
r4679r4680
28872887   rombase[0x934/4] += 4;
28882888
28892889   /* main CPU speedups */
2890   mips3drc_add_hotspot(machine->cpu[0], 0x80135510, 0x3C028024, 250);      /* confirmed */
2891   mips3drc_add_hotspot(machine->cpu[0], 0x800087DC, 0x8E820010, 250);      /* confirmed */
2890   mips3drc_add_hotspot(cputag_get_cpu(machine, "maincpu"), 0x80135510, 0x3C028024, 250);      /* confirmed */
2891   mips3drc_add_hotspot(cputag_get_cpu(machine, "maincpu"), 0x800087DC, 0x8E820010, 250);      /* confirmed */
28922892}
28932893
28942894
r4679r4680
28982898   init_common(machine, MIDWAY_IOASIC_BLITZ99, 481/* or 484 or 520 */, 80, SEATTLE_CONFIG);
28992899
29002900   /* speedups */
2901   mips3drc_add_hotspot(machine->cpu[0], 0x8014E41C, 0x3C038025, 250);      /* confirmed */
2902   mips3drc_add_hotspot(machine->cpu[0], 0x80011F10, 0x8E020018, 250);      /* confirmed */
2901   mips3drc_add_hotspot(cputag_get_cpu(machine, "maincpu"), 0x8014E41C, 0x3C038025, 250);      /* confirmed */
2902   mips3drc_add_hotspot(cputag_get_cpu(machine, "maincpu"), 0x80011F10, 0x8E020018, 250);      /* confirmed */
29032903}
29042904
29052905
r4679r4680
29092909   init_common(machine, MIDWAY_IOASIC_BLITZ99, 494/* or 498 */, 80, SEATTLE_CONFIG);
29102910
29112911   /* speedups */
2912   mips3drc_add_hotspot(machine->cpu[0], 0x8015773C, 0x3C038025, 250);      /* confirmed */
2913   mips3drc_add_hotspot(machine->cpu[0], 0x80012CA8, 0x8E020018, 250);      /* confirmed */
2912   mips3drc_add_hotspot(cputag_get_cpu(machine, "maincpu"), 0x8015773C, 0x3C038025, 250);      /* confirmed */
2913   mips3drc_add_hotspot(cputag_get_cpu(machine, "maincpu"), 0x80012CA8, 0x8E020018, 250);      /* confirmed */
29142914}
29152915
29162916
r4679r4680
29202920   init_common(machine, MIDWAY_IOASIC_CARNEVIL, 469/* 469 or 486 or 528 */, 80, SEATTLE_CONFIG);
29212921
29222922   /* set up the gun */
2923   memory_install_readwrite32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x16800000, 0x1680001f, 0, 0, carnevil_gun_r, carnevil_gun_w);
2923   memory_install_readwrite32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x16800000, 0x1680001f, 0, 0, carnevil_gun_r, carnevil_gun_w);
29242924
29252925   /* speedups */
2926   mips3drc_add_hotspot(machine->cpu[0], 0x8015176C, 0x3C03801A, 250);      /* confirmed */
2927   mips3drc_add_hotspot(machine->cpu[0], 0x80011FBC, 0x8E020018, 250);      /* confirmed */
2926   mips3drc_add_hotspot(cputag_get_cpu(machine, "maincpu"), 0x8015176C, 0x3C03801A, 250);      /* confirmed */
2927   mips3drc_add_hotspot(cputag_get_cpu(machine, "maincpu"), 0x80011FBC, 0x8E020018, 250);      /* confirmed */
29282928}
29292929
29302930
r4679r4680
29342934   init_common(machine, MIDWAY_IOASIC_HYPRDRIV, 469/* unknown */, 80, SEATTLE_WIDGET_CONFIG);
29352935
29362936   /* speedups */
2937   mips3drc_add_hotspot(machine->cpu[0], 0x801643BC, 0x3C03801B, 250);      /* confirmed */
2938   mips3drc_add_hotspot(machine->cpu[0], 0x80011FB8, 0x8E020018, 250);      /* confirmed */
2939   //mips3drc_add_hotspot(machine->cpu[0], 0x80136A80, 0x3C02801D, 250);      /* potential */
2937   mips3drc_add_hotspot(cputag_get_cpu(machine, "maincpu"), 0x801643BC, 0x3C03801B, 250);      /* confirmed */
2938   mips3drc_add_hotspot(cputag_get_cpu(machine, "maincpu"), 0x80011FB8, 0x8E020018, 250);      /* confirmed */
2939   //mips3drc_add_hotspot(cputag_get_cpu(machine, "maincpu"), 0x80136A80, 0x3C02801D, 250);      /* potential */
29402940}
29412941
29422942
src/mame/drivers/munchmo.c
r4679r4680
6262static WRITE8_HANDLER( mnchmobl_soundlatch_w )
6363{
6464   soundlatch_w( space, offset, data );
65   cpu_set_input_line(space->machine->cpu[1], 0, HOLD_LINE );
65   cputag_set_input_line(space->machine, "audiocpu", 0, HOLD_LINE );
6666}
6767
6868static WRITE8_HANDLER( sound_nmi_ack_w )
6969{
70   cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_NMI, CLEAR_LINE);
70   cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, CLEAR_LINE);
7171}
7272
7373
src/mame/drivers/funkybee.c
r4679r4680
9898   coin_counter_w(offset,data);
9999}
100100
101static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 )
102   AM_RANGE(0x0000, 0x4fff) AM_READ(SMH_ROM)
103   AM_RANGE(0x8000, 0x87ff) AM_READ(SMH_RAM)
104   AM_RANGE(0xa000, 0xdfff) AM_READ(SMH_RAM)
105   AM_RANGE(0xf000, 0xf000) AM_READNOP   /* IRQ Ack */
106   AM_RANGE(0xf800, 0xf800) AM_READ(funkybee_input_port_0_r)
107   AM_RANGE(0xf801, 0xf801) AM_READ_PORT("IN1")
108   AM_RANGE(0xf802, 0xf802) AM_READ_PORT("IN2")
109ADDRESS_MAP_END
110
111static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 )
112   AM_RANGE(0x0000, 0x4fff) AM_WRITE(SMH_ROM)
113   AM_RANGE(0x8000, 0x87ff) AM_WRITE(SMH_RAM)
114   AM_RANGE(0xa000, 0xbfff) AM_WRITE(funkybee_videoram_w) AM_BASE(&videoram)
115   AM_RANGE(0xc000, 0xdfff) AM_WRITE(funkybee_colorram_w) AM_BASE(&colorram)
101static ADDRESS_MAP_START( funkybee_map, ADDRESS_SPACE_PROGRAM, 8 )
102   AM_RANGE(0x0000, 0x4fff) AM_ROM
103   AM_RANGE(0x8000, 0x87ff) AM_RAM
104   AM_RANGE(0xa000, 0xbfff) AM_RAM_WRITE(funkybee_videoram_w) AM_BASE(&videoram)
105   AM_RANGE(0xc000, 0xdfff) AM_RAM_WRITE(funkybee_colorram_w) AM_BASE(&colorram)
116106   AM_RANGE(0xe000, 0xe000) AM_WRITE(funkybee_scroll_w)
117107   AM_RANGE(0xe800, 0xe800) AM_WRITE(funkybee_flipscreen_w)
118108   AM_RANGE(0xe802, 0xe803) AM_WRITE(funkybee_coin_counter_w)
119109   AM_RANGE(0xe805, 0xe805) AM_WRITE(funkybee_gfx_bank_w)
120   AM_RANGE(0xf800, 0xf800) AM_WRITE(watchdog_reset_w)
110   AM_RANGE(0xf000, 0xf000) AM_READNOP   /* IRQ Ack */
111   AM_RANGE(0xf800, 0xf800) AM_READWRITE(funkybee_input_port_0_r, watchdog_reset_w)
112   AM_RANGE(0xf801, 0xf801) AM_READ_PORT("IN1")
113   AM_RANGE(0xf802, 0xf802) AM_READ_PORT("IN2")
121114ADDRESS_MAP_END
122115
123116static ADDRESS_MAP_START( io_map, ADDRESS_SPACE_IO, 8 )
r4679r4680
299292
300293   /* basic machine hardware */
301294   MDRV_CPU_ADD("maincpu", Z80, 3072000)   /* 3.072 MHz */
302   MDRV_CPU_PROGRAM_MAP(readmem,writemem)
295   MDRV_CPU_PROGRAM_MAP(funkybee_map,0)
303296   MDRV_CPU_IO_MAP(io_map,0)
304297   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
305298
src/mame/drivers/galastrm.c
r4679r4680
6464
6565static TIMER_CALLBACK( galastrm_interrupt6 )
6666{
67   cpu_set_input_line(machine->cpu[0], 6, HOLD_LINE);
67   cputag_set_input_line(machine, "maincpu", 6, HOLD_LINE);
6868}
6969
7070
r4679r4680
176176             MEMORY STRUCTURES
177177***********************************************************/
178178
179static ADDRESS_MAP_START( galastrm_readmem, ADDRESS_SPACE_PROGRAM, 32 )
180   AM_RANGE(0x000000, 0x0fffff) AM_READ(SMH_ROM)
181   AM_RANGE(0x200000, 0x21ffff) AM_READ(SMH_RAM)   /* main CPUA ram */
182   AM_RANGE(0x300000, 0x303fff) AM_READ(SMH_RAM)   /* Sprite ram */
179static ADDRESS_MAP_START( galastrm_map, ADDRESS_SPACE_PROGRAM, 32 )
180   AM_RANGE(0x000000, 0x0fffff) AM_ROM
181   AM_RANGE(0x200000, 0x21ffff) AM_RAM AM_BASE(&galastrm_ram)                         /* main CPUA ram */
182   AM_RANGE(0x300000, 0x303fff) AM_RAM AM_BASE(&spriteram32) AM_SIZE(&spriteram_size)
183183   AM_RANGE(0x400000, 0x400003) AM_READ_PORT("IN0")
184184   AM_RANGE(0x400004, 0x400007) AM_READ_PORT("IN1")
185   AM_RANGE(0x500000, 0x500007) AM_READ(galastrm_adstick_ctrl_r)
186   AM_RANGE(0x600000, 0x6007ff) AM_READ(SMH_RAM)   /* Sound shared ram */
187   AM_RANGE(0x800000, 0x80ffff) AM_READ(TC0480SCP_long_r)
188   AM_RANGE(0x830000, 0x83002f) AM_READ(TC0480SCP_ctrl_long_r)
189   AM_RANGE(0xd00000, 0xd0ffff) AM_READ(TC0100SCN_long_r)   /* piv tilemaps */
190   AM_RANGE(0xd20000, 0xd2000f) AM_READ(TC0100SCN_ctrl_long_r)
191ADDRESS_MAP_END
192
193static ADDRESS_MAP_START( galastrm_writemem, ADDRESS_SPACE_PROGRAM, 32 )
194   AM_RANGE(0x000000, 0x1fffff) AM_WRITE(SMH_ROM)
195   AM_RANGE(0x200000, 0x21ffff) AM_WRITE(SMH_RAM) AM_BASE(&galastrm_ram)
196   AM_RANGE(0x300000, 0x303fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram32) AM_SIZE(&spriteram_size)
197   AM_RANGE(0x400000, 0x400007) AM_WRITE(galastrm_input_w)   /* eerom etc. */
185   AM_RANGE(0x400000, 0x400007) AM_WRITE(galastrm_input_w)                           /* eerom etc. */
198186   AM_RANGE(0x40fff0, 0x40fff3) AM_WRITENOP
199   AM_RANGE(0x500000, 0x500007) AM_WRITE(galastrm_adstick_ctrl_w)
200   AM_RANGE(0x600000, 0x6007ff) AM_WRITE(SMH_RAM) AM_BASE(&f3_shared_ram)
201   AM_RANGE(0x800000, 0x80ffff) AM_WRITE(TC0480SCP_long_w)
202   AM_RANGE(0x830000, 0x83002f) AM_WRITE(TC0480SCP_ctrl_long_w)
203   AM_RANGE(0x900000, 0x900003) AM_WRITE(galastrm_palette_w)   /* TC0110PCR */
204   AM_RANGE(0xb00000, 0xb00003) AM_WRITE(galastrm_tc0610_0_w)      /* TC0610 */
187   AM_RANGE(0x500000, 0x500007) AM_READWRITE(galastrm_adstick_ctrl_r, galastrm_adstick_ctrl_w)
188   AM_RANGE(0x600000, 0x6007ff) AM_RAM AM_BASE(&f3_shared_ram)                        /* Sound shared ram */
189   AM_RANGE(0x800000, 0x80ffff) AM_READWRITE(TC0480SCP_long_r, TC0480SCP_long_w)
190   AM_RANGE(0x830000, 0x83002f) AM_READWRITE(TC0480SCP_ctrl_long_r, TC0480SCP_ctrl_long_w)
191   AM_RANGE(0x900000, 0x900003) AM_WRITE(galastrm_palette_w)                        /* TC0110PCR */
192   AM_RANGE(0xb00000, 0xb00003) AM_WRITE(galastrm_tc0610_0_w)                        /* TC0610 */
205193   AM_RANGE(0xc00000, 0xc00003) AM_WRITE(galastrm_tc0610_1_w)
206   AM_RANGE(0xd00000, 0xd0ffff) AM_WRITE(TC0100SCN_long_w)   /* piv tilemaps */
207   AM_RANGE(0xd20000, 0xd2000f) AM_WRITE(TC0100SCN_ctrl_long_w)
194   AM_RANGE(0xd00000, 0xd0ffff) AM_READWRITE(TC0100SCN_long_r, TC0100SCN_long_w)         /* piv tilemaps */
195   AM_RANGE(0xd20000, 0xd2000f) AM_READWRITE(TC0100SCN_ctrl_long_r, TC0100SCN_ctrl_long_w)
208196ADDRESS_MAP_END
209197
210198/***********************************************************
r4679r4680
342330static MACHINE_DRIVER_START( galastrm )
343331   /* basic machine hardware */
344332   MDRV_CPU_ADD("maincpu", M68EC020, 16000000)   /* 16 MHz */
345   MDRV_CPU_PROGRAM_MAP(galastrm_readmem,galastrm_writemem)
333   MDRV_CPU_PROGRAM_MAP(galastrm_map,0)
346334   MDRV_CPU_VBLANK_INT("screen", galastrm_interrupt) /* VBL */
347335
348336   TAITO_F3_SOUND_SYSTEM_CPU(16000000)
src/mame/drivers/btoads.c
r4679r4680
6868{
6969   main_to_sound_data = param;
7070   main_to_sound_ready = 1;
71   cpu_triggerint(machine->cpu[1]);
71   cpu_triggerint(cputag_get_cpu(machine, "audiocpu"));
7272
7373   /* use a timer to make long transfers faster */
7474   timer_set(machine, ATTOTIME_IN_USEC(50), NULL, 0, 0);
r4679r4680
149149      devtag_reset(space->machine, "bsmt");
150150
151151   /* also clears interrupts */
152   cpu_set_input_line(space->machine->cpu[1], 0, CLEAR_LINE);
152   cputag_set_input_line(space->machine, "audiocpu", 0, CLEAR_LINE);
153153   sound_int_state = data;
154154}
155155
src/mame/drivers/tetrisp2.c
r4679r4680
10321032
10331033static TIMER_CALLBACK( rockn_timer_level4_callback )
10341034{
1035   cpu_set_input_line(machine->cpu[0], 4, HOLD_LINE);
1035   cputag_set_input_line(machine, "maincpu", 4, HOLD_LINE);
10361036}
10371037
10381038static TIMER_CALLBACK( rockn_timer_sub_level4_callback )
10391039{
1040   cpu_set_input_line(machine->cpu[1], 4, HOLD_LINE);
1040   cputag_set_input_line(machine, "sub", 4, HOLD_LINE);
10411041}
10421042
10431043
10441044static TIMER_CALLBACK( rockn_timer_level1_callback )
10451045{
1046   cpu_set_input_line(machine->cpu[0], 1, HOLD_LINE);
1046   cputag_set_input_line(machine, "maincpu", 1, HOLD_LINE);
10471047}
10481048
10491049static TIMER_CALLBACK( rockn_timer_sub_level1_callback )
10501050{
1051   cpu_set_input_line(machine->cpu[1], 1, HOLD_LINE);
1051   cputag_set_input_line(machine, "sub", 1, HOLD_LINE);
10521052}
10531053
10541054static void init_rockn_timer(running_machine *machine)
src/mame/drivers/lastduel.c
r4679r4680
4949
5050/******************************************************************************/
5151
52static ADDRESS_MAP_START( lastduel_readmem, ADDRESS_SPACE_PROGRAM, 16 )
53   AM_RANGE(0x000000, 0x05ffff) AM_READ(SMH_ROM)
54   AM_RANGE(0xfc0800, 0xfc0fff) AM_READ(SMH_RAM)
55   AM_RANGE(0xfc4000, 0xfc4001) AM_READ_PORT("P1_P2")
56   AM_RANGE(0xfc4002, 0xfc4003) AM_READ_PORT("SYSTEM")
52static ADDRESS_MAP_START( lastduel_map, ADDRESS_SPACE_PROGRAM, 16 )
53   AM_RANGE(0x000000, 0x05ffff) AM_ROM
54   AM_RANGE(0xfc0000, 0xfc0003) AM_WRITENOP /* Written rarely */
55   AM_RANGE(0xfc0800, 0xfc0fff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)
56   AM_RANGE(0xfc4000, 0xfc4001) AM_READ_PORT("P1_P2") AM_WRITE(lastduel_flip_w)
57   AM_RANGE(0xfc4002, 0xfc4003) AM_READ_PORT("SYSTEM") AM_WRITE(lastduel_sound_w)
5758   AM_RANGE(0xfc4004, 0xfc4005) AM_READ_PORT("DSW1")
5859   AM_RANGE(0xfc4006, 0xfc4007) AM_READ_PORT("DSW2")
59   AM_RANGE(0xfcc000, 0xfcdfff) AM_READ(SMH_RAM)
60   AM_RANGE(0xfd0000, 0xfd3fff) AM_READ(SMH_RAM)
61   AM_RANGE(0xfd4000, 0xfd7fff) AM_READ(SMH_RAM)
62   AM_RANGE(0xfd8000, 0xfd87ff) AM_READ(SMH_RAM)
63   AM_RANGE(0xfe0000, 0xffffff) AM_READ(SMH_RAM)
64ADDRESS_MAP_END
65
66static ADDRESS_MAP_START( lastduel_writemem, ADDRESS_SPACE_PROGRAM, 16 )
67   AM_RANGE(0x000000, 0x05ffff) AM_WRITE(SMH_ROM)
68   AM_RANGE(0xfc0000, 0xfc0003) AM_WRITENOP /* Written rarely */
69   AM_RANGE(0xfc0800, 0xfc0fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)
70   AM_RANGE(0xfc4000, 0xfc4001) AM_WRITE(lastduel_flip_w)
71   AM_RANGE(0xfc4002, 0xfc4003) AM_WRITE(lastduel_sound_w)
7260   AM_RANGE(0xfc8000, 0xfc800f) AM_WRITE(lastduel_scroll_w)
73   AM_RANGE(0xfcc000, 0xfcdfff) AM_WRITE(lastduel_vram_w) AM_BASE(&lastduel_vram)
74   AM_RANGE(0xfd0000, 0xfd3fff) AM_WRITE(lastduel_scroll1_w) AM_BASE(&lastduel_scroll1)
75   AM_RANGE(0xfd4000, 0xfd7fff) AM_WRITE(lastduel_scroll2_w) AM_BASE(&lastduel_scroll2)
76   AM_RANGE(0xfd8000, 0xfd87ff) AM_WRITE(lastduel_palette_word_w) AM_BASE(&paletteram16)
77   AM_RANGE(0xfe0000, 0xffffff) AM_WRITE(SMH_RAM)
61   AM_RANGE(0xfcc000, 0xfcdfff) AM_RAM_WRITE(lastduel_vram_w) AM_BASE(&lastduel_vram)
62   AM_RANGE(0xfd0000, 0xfd3fff) AM_RAM_WRITE(lastduel_scroll1_w) AM_BASE(&lastduel_scroll1)
63   AM_RANGE(0xfd4000, 0xfd7fff) AM_RAM_WRITE(lastduel_scroll2_w) AM_BASE(&lastduel_scroll2)
64   AM_RANGE(0xfd8000, 0xfd87ff) AM_RAM_WRITE(lastduel_palette_word_w) AM_BASE(&paletteram16)
65   AM_RANGE(0xfe0000, 0xffffff) AM_RAM
7866ADDRESS_MAP_END
7967
80static ADDRESS_MAP_START( madgear_readmem, ADDRESS_SPACE_PROGRAM, 16 )
81   AM_RANGE(0x000000, 0x07ffff) AM_READ(SMH_ROM)
82   AM_RANGE(0xfc1800, 0xfc1fff) AM_READ(SMH_RAM)
83   AM_RANGE(0xfc4000, 0xfc4001) AM_READ_PORT("DSW1")
84   AM_RANGE(0xfc4002, 0xfc4003) AM_READ_PORT("DSW2")
68static ADDRESS_MAP_START( madgear_map, ADDRESS_SPACE_PROGRAM, 16 )
69   AM_RANGE(0x000000, 0x07ffff) AM_ROM
70   AM_RANGE(0xfc1800, 0xfc1fff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)
71   AM_RANGE(0xfc4000, 0xfc4001) AM_READ_PORT("DSW1") AM_WRITE(lastduel_flip_w)
72   AM_RANGE(0xfc4002, 0xfc4003) AM_READ_PORT("DSW2") AM_WRITE(lastduel_sound_w)
8573   AM_RANGE(0xfc4004, 0xfc4005) AM_READ_PORT("P1_P2")
8674   AM_RANGE(0xfc4006, 0xfc4007) AM_READ_PORT("SYSTEM")
87   AM_RANGE(0xfc8000, 0xfc9fff) AM_READ(SMH_RAM)
88   AM_RANGE(0xfcc000, 0xfcc7ff) AM_READ(SMH_RAM)
89   AM_RANGE(0xfd4000, 0xfd7fff) AM_READ(SMH_RAM)
90   AM_RANGE(0xfd8000, 0xfdffff) AM_READ(SMH_RAM)
91   AM_RANGE(0xff0000, 0xffffff) AM_READ(SMH_RAM)
92ADDRESS_MAP_END
93
94static ADDRESS_MAP_START( madgear_writemem, ADDRESS_SPACE_PROGRAM, 16 )
95   AM_RANGE(0x000000, 0x07ffff) AM_WRITE(SMH_ROM)
96   AM_RANGE(0xfc1800, 0xfc1fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)
97   AM_RANGE(0xfc4000, 0xfc4001) AM_WRITE(lastduel_flip_w)
98   AM_RANGE(0xfc4002, 0xfc4003) AM_WRITE(lastduel_sound_w)
99   AM_RANGE(0xfc8000, 0xfc9fff) AM_WRITE(lastduel_vram_w) AM_BASE(&lastduel_vram)
100   AM_RANGE(0xfcc000, 0xfcc7ff) AM_WRITE(lastduel_palette_word_w) AM_BASE(&paletteram16)
75   AM_RANGE(0xfc8000, 0xfc9fff) AM_RAM_WRITE(lastduel_vram_w) AM_BASE(&lastduel_vram)
76   AM_RANGE(0xfcc000, 0xfcc7ff) AM_RAM_WRITE(lastduel_palette_word_w) AM_BASE(&paletteram16)
10177   AM_RANGE(0xfd0000, 0xfd000f) AM_WRITE(lastduel_scroll_w)
102   AM_RANGE(0xfd4000, 0xfd7fff) AM_WRITE(madgear_scroll1_w) AM_BASE(&lastduel_scroll1)
103   AM_RANGE(0xfd8000, 0xfdffff) AM_WRITE(madgear_scroll2_w) AM_BASE(&lastduel_scroll2)
104   AM_RANGE(0xff0000, 0xffffff) AM_WRITE(SMH_RAM)
78   AM_RANGE(0xfd4000, 0xfd7fff) AM_RAM_WRITE(madgear_scroll1_w) AM_BASE(&lastduel_scroll1)
79   AM_RANGE(0xfd8000, 0xfdffff) AM_RAM_WRITE(madgear_scroll2_w) AM_BASE(&lastduel_scroll2)
80   AM_RANGE(0xff0000, 0xffffff) AM_RAM
10581ADDRESS_MAP_END
10682
10783/******************************************************************************/
10884
109static ADDRESS_MAP_START( sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
110   AM_RANGE(0x0000, 0xdfff) AM_READ(SMH_ROM)
111   AM_RANGE(0xe000, 0xe7ff) AM_READ(SMH_RAM)
112   AM_RANGE(0xe800, 0xe801) AM_DEVREAD("ym1", ym2203_r)
113   AM_RANGE(0xf000, 0xf001) AM_DEVREAD("ym2", ym2203_r)
85static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 )
86   AM_RANGE(0x0000, 0xdfff) AM_ROM
87   AM_RANGE(0xe000, 0xe7ff) AM_RAM
88   AM_RANGE(0xe800, 0xe801) AM_DEVREADWRITE("ym1", ym2203_r,ym2203_w)
89   AM_RANGE(0xf000, 0xf001) AM_DEVREADWRITE("ym2", ym2203_r,ym2203_w)
11490   AM_RANGE(0xf800, 0xf800) AM_READ(soundlatch_r)
11591ADDRESS_MAP_END
11692
117static ADDRESS_MAP_START( sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
118   AM_RANGE(0x0000, 0xdfff) AM_WRITE(SMH_ROM)
119   AM_RANGE(0xe000, 0xe7ff) AM_WRITE(SMH_RAM)
120   AM_RANGE(0xe800, 0xe801) AM_DEVWRITE("ym1", ym2203_w)
121   AM_RANGE(0xf000, 0xf001) AM_DEVWRITE("ym2", ym2203_w)
122ADDRESS_MAP_END
123
12493static WRITE8_HANDLER( mg_bankswitch_w )
12594{
12695   int bankaddress;
12796   UINT8 *RAM = memory_region(space->machine, "audiocpu");
12897
12998   bankaddress = 0x10000 + (data & 0x01) * 0x4000;
130   memory_set_bankptr(space->machine, 3,&RAM[bankaddress]);
99   memory_set_bankptr(space->machine, 1,&RAM[bankaddress]);
131100}
132101
133static ADDRESS_MAP_START( mg_sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
134   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
135   AM_RANGE(0x8000, 0xcfff) AM_READ(SMH_BANK3)
136   AM_RANGE(0xd000, 0xd7ff) AM_READ(SMH_RAM)
137   AM_RANGE(0xf000, 0xf001) AM_DEVREAD("ym1", ym2203_r)
138   AM_RANGE(0xf002, 0xf003) AM_DEVREAD("ym2", ym2203_r)
139   AM_RANGE(0xf006, 0xf006) AM_READ(soundlatch_r)
140ADDRESS_MAP_END
141
142static ADDRESS_MAP_START( mg_sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
143   AM_RANGE(0x0000, 0xcfff) AM_WRITE(SMH_ROM)
144   AM_RANGE(0xd000, 0xd7ff) AM_WRITE(SMH_RAM)
145   AM_RANGE(0xf000, 0xf001) AM_DEVWRITE("ym1", ym2203_w)
146   AM_RANGE(0xf002, 0xf003) AM_DEVWRITE("ym2", ym2203_w)
102static ADDRESS_MAP_START( madgear_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
103   AM_RANGE(0x0000, 0x7fff) AM_ROM
104   AM_RANGE(0x8000, 0xcfff) AM_ROMBANK(1)
105   AM_RANGE(0xd000, 0xd7ff) AM_RAM
106   AM_RANGE(0xf000, 0xf001) AM_DEVREADWRITE("ym1", ym2203_r,ym2203_w)
107   AM_RANGE(0xf002, 0xf003) AM_DEVREADWRITE("ym2", ym2203_r,ym2203_w)
147108   AM_RANGE(0xf004, 0xf004) AM_DEVWRITE("oki", okim6295_w)
109   AM_RANGE(0xf006, 0xf006) AM_READ(soundlatch_r)
148110   AM_RANGE(0xf00a, 0xf00a) AM_WRITE(mg_bankswitch_w)
149111ADDRESS_MAP_END
150112
r4679r4680
232194/* handler called by the 2203 emulator when the internal timers cause an IRQ */
233195static void irqhandler(const device_config *device, int irq)
234196{
235   cpu_set_input_line(device->machine->cpu[1],0,irq ? ASSERT_LINE : CLEAR_LINE);
197   cputag_set_input_line(device->machine, "audiocpu", 0, irq ? ASSERT_LINE : CLEAR_LINE);
236198}
237199
238200static const ym2203_interface ym2203_config =
r4679r4680
265227
266228   /* basic machine hardware */
267229   MDRV_CPU_ADD("maincpu", M68000, 10000000) /* Could be 8 MHz */
268   MDRV_CPU_PROGRAM_MAP(lastduel_readmem,lastduel_writemem)
230   MDRV_CPU_PROGRAM_MAP(lastduel_map,0)
269231   MDRV_CPU_VBLANK_INT_HACK(lastduel_interrupt,3)   /* 1 for vbl, 2 for control reads?? */
270232
271233   MDRV_CPU_ADD("audiocpu", Z80, 3579545) /* Accurate */
272   MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem)
234   MDRV_CPU_PROGRAM_MAP(sound_map,0)
273235
274236   /* video hardware */
275237   MDRV_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK | VIDEO_BUFFERS_SPRITERAM)
r4679r4680
304266
305267   /* basic machine hardware */
306268   MDRV_CPU_ADD("maincpu", M68000, 10000000) /* Accurate */
307   MDRV_CPU_PROGRAM_MAP(madgear_readmem,madgear_writemem)
269   MDRV_CPU_PROGRAM_MAP(madgear_map,0)
308270   MDRV_CPU_VBLANK_INT_HACK(madgear_interrupt,3)   /* 1 for vbl, 2 for control reads?? */
309271
310272   MDRV_CPU_ADD("audiocpu", Z80, XTAL_3_579545MHz) /* verified on pcb */
311   MDRV_CPU_PROGRAM_MAP(mg_sound_readmem,mg_sound_writemem)
273   MDRV_CPU_PROGRAM_MAP(madgear_sound_map,0)
312274
313275   /* video hardware */
314276   MDRV_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK | VIDEO_BUFFERS_SPRITERAM)
src/mame/drivers/alpha68k.c
r4679r4680
356356   if (ACCESSING_BITS_0_7)
357357   {
358358      soundlatch_w(space, 0, data);
359      cpu_set_input_line(space->machine->cpu[1], 0, HOLD_LINE);
359      cputag_set_input_line(space->machine, "audiocpu", 0, HOLD_LINE);
360360   }
361361}
362362
r4679r4680
365365   if (ACCESSING_BITS_0_7)
366366   {
367367      soundlatch_w(space, 0, data);
368      cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_NMI, PULSE_LINE);
368      cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
369369   }
370370}
371371//ZT
r4679r4680
18881888
18891889static void YM3812_irq(const device_config *device, int param)
18901890{
1891   cpu_set_input_line(device->machine->cpu[1], 0, (param) ? HOLD_LINE : CLEAR_LINE);
1891   cputag_set_input_line(device->machine, "audiocpu", 0, (param) ? HOLD_LINE : CLEAR_LINE);
18921892}
18931893
18941894static const ym3812_interface ym3812_config =
r4679r4680
31333133
31343134static DRIVER_INIT( sstingry )
31353135{
3136   invert_controls=0;
3137   microcontroller_id=0x00ff;
3138   coin_id=0x22|(0x22<<8);
3136   invert_controls = 0;
3137   microcontroller_id = 0x00ff;
3138   coin_id = 0x22 | (0x22 << 8);
31393139}
31403140
31413141static DRIVER_INIT( kyros )
31423142{
3143   invert_controls=0;
3144   microcontroller_id=0x0012;
3145   coin_id=0x22|(0x22<<8);
3143   invert_controls = 0;
3144   microcontroller_id = 0x0012;
3145   coin_id = 0x22 | (0x22 << 8);
31463146
31473147   alpha68k_video_banking = kyros_video_banking;
31483148}
31493149
31503150static DRIVER_INIT( jongbou )
31513151{
3152   invert_controls=0;
3153   microcontroller_id=0x00ff;
3154   coin_id=0x23|(0x24<<8);
3152   invert_controls = 0;
3153   microcontroller_id = 0x00ff;
3154   coin_id = 0x23 | (0x24 << 8);
31553155
31563156   alpha68k_video_banking = jongbou_video_banking;
31573157
3158   memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x0c0000, 0x0c0001, 0, 0, jongbou_inputs_r);
3158   memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x0c0000, 0x0c0001, 0, 0, jongbou_inputs_r);
31593159}
31603160
31613161static DRIVER_INIT( paddlema )
31623162{
3163   microcontroller_id=0;
3164   coin_id=0;            // Not needed !
3163   microcontroller_id = 0;
3164   coin_id = 0;            // Not needed !
31653165}
31663166
31673167static DRIVER_INIT( timesold )
31683168{
3169   memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x40008, 0x40009, 0, 0, timesold_cycle_r);
3170   invert_controls=0;
3171   microcontroller_id=0;
3172   coin_id=0x22|(0x22<<8);
3169   memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x40008, 0x40009, 0, 0, timesold_cycle_r);
3170   invert_controls = 0;
3171   microcontroller_id = 0;
3172   coin_id = 0x22 | (0x22 << 8);
31733173}
31743174
31753175static DRIVER_INIT( timesol1 )
31763176{
3177   memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x40008, 0x40009, 0, 0, timesol1_cycle_r);
3178   invert_controls=1;
3179   microcontroller_id=0;
3180   coin_id=0x22|(0x22<<8);
3177   memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x40008, 0x40009, 0, 0, timesol1_cycle_r);
3178   invert_controls = 1;
3179   microcontroller_id = 0;
3180   coin_id = 0x22 | (0x22 << 8);
31813181}
31823182
31833183static DRIVER_INIT( btlfield )
31843184{
3185   memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x40008, 0x40009, 0, 0, btlfield_cycle_r);
3186   invert_controls=1;
3187   microcontroller_id=0;
3188   coin_id=0x22|(0x22<<8);
3185   memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x40008, 0x40009, 0, 0, btlfield_cycle_r);
3186   invert_controls = 1;
3187   microcontroller_id = 0;
3188   coin_id = 0x22 | (0x22 << 8);
31893189}
31903190
31913191static DRIVER_INIT( btlfildb )
31923192{
3193   invert_controls=1;
3194   microcontroller_id=0;
3195   coin_id=0x22|(0x22<<8); //not checked
3193   invert_controls = 1;
3194   microcontroller_id = 0;
3195   coin_id = 0x22 | (0x22 << 8); //not checked
31963196}
31973197
31983198static DRIVER_INIT( skysoldr )
31993199{
3200   memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x40008, 0x40009, 0, 0, skysoldr_cycle_r);
3201   memory_set_bankptr(machine, 8, (memory_region(machine, "user1"))+0x40000);
3202   invert_controls=0;
3203   microcontroller_id=0;
3204   coin_id=0x22|(0x22<<8);
3200   memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x40008, 0x40009, 0, 0, skysoldr_cycle_r);
3201   memory_set_bankptr(machine, 8, (memory_region(machine, "user1")) + 0x40000);
3202   invert_controls = 0;
3203   microcontroller_id = 0;
3204   coin_id = 0x22 | (0x22 << 8);
32053205}
32063206
32073207static DRIVER_INIT( goldmedl )
32083208{
3209   invert_controls=0;
3210   microcontroller_id=0x8803; //AT
3211   coin_id=0x23|(0x24<<8);
3209   invert_controls = 0;
3210   microcontroller_id = 0x8803; //AT
3211   coin_id = 0x23 | (0x24 << 8);
32123212}
32133213
32143214static DRIVER_INIT( goldmeda )
32153215{
32163216   memory_set_bankptr(machine, 8, memory_region(machine, "maincpu") + 0x20000);
3217   invert_controls=0;
3218   microcontroller_id=0x8803; //Guess - routine to handle coinage is the same as in 'goldmedl'
3219   coin_id=0x23|(0x24<<8);
3217   invert_controls = 0;
3218   microcontroller_id = 0x8803; //Guess - routine to handle coinage is the same as in 'goldmedl'
3219   coin_id = 0x23 | (0x24 << 8);
32203220}
32213221
32223222static DRIVER_INIT( skyadvnt )
32233223{
3224   memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x40008, 0x40009, 0, 0, skyadvnt_cycle_r);
3225   invert_controls=0;
3226   microcontroller_id=0x8814;
3227   coin_id=0x22|(0x22<<8);
3224   memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x40008, 0x40009, 0, 0, skyadvnt_cycle_r);
3225   invert_controls = 0;
3226   microcontroller_id = 0x8814;
3227   coin_id = 0x22 | (0x22 << 8);
32283228}
32293229
32303230static DRIVER_INIT( skyadvnu )
32313231{
3232   memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x40008, 0x40009, 0, 0, skyadvnt_cycle_r);
3233   invert_controls=0;
3234   microcontroller_id=0x8814;
3235   coin_id=0x23|(0x24<<8);
3232   memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x40008, 0x40009, 0, 0, skyadvnt_cycle_r);
3233   invert_controls = 0;
3234   microcontroller_id = 0x8814;
3235   coin_id = 0x23 | (0x24 << 8);
32363236}
32373237
32383238static DRIVER_INIT( gangwars )
32393239{
3240   memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x40206, 0x40207, 0, 0, gangwars_cycle_r);
3240   memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x40206, 0x40207, 0, 0, gangwars_cycle_r);
32413241   memory_set_bankptr(machine, 8, memory_region(machine, "user1"));
3242   invert_controls=0;
3243   microcontroller_id=0x8512;
3244   coin_id=0x23|(0x24<<8);
3242   invert_controls = 0;
3243   microcontroller_id = 0x8512;
3244   coin_id = 0x23 | (0x24 << 8);
32453245}
32463246
32473247static DRIVER_INIT( gangwarb )
32483248{
3249   memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x40206, 0x40207, 0, 0, gangwarb_cycle_r);
3249   memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x40206, 0x40207, 0, 0, gangwarb_cycle_r);
32503250   memory_set_bankptr(machine, 8, memory_region(machine, "user1"));
3251   invert_controls=0;
3252   microcontroller_id=0x8512;
3253   coin_id=0x23|(0x24<<8);
3251   invert_controls = 0;
3252   microcontroller_id = 0x8512;
3253   coin_id = 0x23 | (0x24 << 8);
32543254}
32553255
32563256static DRIVER_INIT( sbasebal )
r4679r4680
32713271   rom[0x2b6/2] = 0x4e71;
32723272#endif
32733273
3274   invert_controls=0;
3275   microcontroller_id=0x8512;   // Same as 'gangwars' ?
3276   coin_id=0x23|(0x24<<8);
3274   invert_controls = 0;
3275   microcontroller_id = 0x8512;   // Same as 'gangwars' ?
3276   coin_id = 0x23 | (0x24 << 8);
32773277}
32783278
32793279static DRIVER_INIT( tnexspce )
32803280{
3281   invert_controls=0;
3282   microcontroller_id=0x890a;
3283   coin_id=0;            // Not needed !
3281   invert_controls = 0;
3282   microcontroller_id = 0x890a;
3283   coin_id = 0;            // Not needed !
32843284}
32853285
32863286/******************************************************************************/
src/mame/drivers/boxer.c
r4679r4680
2727   int mask = param;
2828
2929   if (pot_latch & mask)
30      cpu_set_input_line(machine->cpu[0], INPUT_LINE_NMI, ASSERT_LINE);
30      cputag_set_input_line(machine, "maincpu", INPUT_LINE_NMI, ASSERT_LINE);
3131
3232   pot_state |= mask;
3333}
r4679r4680
3737{
3838   int scanline = param;
3939
40   cpu_set_input_line(machine->cpu[0], 0, ASSERT_LINE);
40   cputag_set_input_line(machine, "maincpu", 0, ASSERT_LINE);
4141
4242   if (scanline == 0)
4343   {
r4679r4680
149149
150150   pot_latch = data & 0x3f;
151151
152   cpu_set_input_line(space->machine->cpu[0], INPUT_LINE_NMI, CLEAR_LINE);
152   cputag_set_input_line(space->machine, "maincpu", INPUT_LINE_NMI, CLEAR_LINE);
153153}
154154
155155
156156static WRITE8_HANDLER( boxer_irq_reset_w )
157157{
158   cpu_set_input_line(space->machine->cpu[0], 0, CLEAR_LINE);
158   cputag_set_input_line(space->machine, "maincpu", 0, CLEAR_LINE);
159159}
160160
161161
src/mame/drivers/tmaster.c
r4679r4680
147147
148148static void duart_irq_handler(const device_config *device, UINT8 vector)
149149{
150   cpu_set_input_line_and_vector(device->machine->cpu[0], 4, HOLD_LINE, vector);
150   cputag_set_input_line_and_vector(device->machine, "maincpu", 4, HOLD_LINE, vector);
151151};
152152
153153static void duart_tx(const device_config *device, int channel, UINT8 data)
r4679r4680
408408   {
409409      case 0x0e:
410410         tmaster_draw(space->machine);
411         cpu_set_input_line(space->machine->cpu[0], 2, HOLD_LINE);
411         cputag_set_input_line(space->machine, "maincpu", 2, HOLD_LINE);
412412         break;
413413   }
414414}
r4679r4680
602602
603603static ADDRESS_MAP_START( galgames_map, ADDRESS_SPACE_PROGRAM, 16 )
604604
605   AM_RANGE( 0x000000, 0x03ffff ) AM_READWRITE(SMH_BANK1, SMH_BANK2)
605   AM_RANGE( 0x000000, 0x03ffff ) AM_READWRITE(SMH_BANK(1), SMH_BANK(2))
606606   AM_RANGE( 0x040000, 0x1fffff ) AM_ROM AM_REGION( "maincpu", 0 )
607   AM_RANGE( 0x200000, 0x23ffff ) AM_READWRITE(SMH_BANK3, SMH_BANK4)
607   AM_RANGE( 0x200000, 0x23ffff ) AM_READWRITE(SMH_BANK(3), SMH_BANK(4))
608608   AM_RANGE( 0x240000, 0x3fffff ) AM_ROM AM_REGION( "maincpu", 0 )
609609
610610   AM_RANGE( 0x400000, 0x400011 ) AM_WRITE( tmaster_blitter_w ) AM_BASE( &tmaster_regs )
r4679r4680
832832   memory_set_bank(machine, 2, 0);   // ram
833833   memory_set_bank(machine, 4, 0);   // ram
834834
835   device_reset(machine->cpu[0]);
835   device_reset(cputag_get_cpu(machine, "maincpu"));
836836}
837837
838838static MACHINE_DRIVER_START( galgames )
src/mame/drivers/roul.c
r4679r4680
139139static WRITE8_HANDLER( sound_latch_w )
140140{
141141    soundlatch_w(space, 0, data & 0xff);
142    cpu_set_input_line(space->machine->cpu[1], 0, HOLD_LINE);
142    cputag_set_input_line(space->machine, "soundcpu", 0, HOLD_LINE);
143143}
144144
145145static WRITE8_HANDLER( ball_w )
r4679r4680
180180
181181static VIDEO_START(roul)
182182{
183   videobuf = auto_malloc(VIDEOBUF_SIZE * sizeof(*videobuf));
184   memset(videobuf, 0, VIDEOBUF_SIZE * sizeof(*videobuf));
183   videobuf = auto_alloc_array_clear(machine, UINT8, VIDEOBUF_SIZE);
185184}
186185
187186static VIDEO_UPDATE(roul)
src/mame/drivers/tcl.c
r4679r4680
183183   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
184184   UINT8 *dest = memory_region(machine, "maincpu");
185185   int len = memory_region_length(machine, "maincpu");
186   UINT8 *src = malloc_or_die(len);
186   UINT8 *src = alloc_array_or_die(UINT8, len);
187187
188188   int i,idx=0;
189189   memcpy(src, dest, len);
src/mame/drivers/freekick.c
r4679r4680
178178 *
179179 *************************************/
180180
181static ADDRESS_MAP_START( pbillrd_readmem, ADDRESS_SPACE_PROGRAM, 8 )
182   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
183   AM_RANGE(0x8000, 0xbfff) AM_READ(SMH_BANK1)
184   AM_RANGE(0xc000, 0xdfff) AM_READ(SMH_RAM)
181static ADDRESS_MAP_START( pbillrd_map, ADDRESS_SPACE_PROGRAM, 8 )
182   AM_RANGE(0x0000, 0x7fff) AM_ROM
183   AM_RANGE(0x8000, 0xbfff) AM_ROMBANK(1)
184   AM_RANGE(0xc000, 0xcfff) AM_RAM
185   AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(freek_videoram_w) AM_BASE(&freek_videoram)
186   AM_RANGE(0xd800, 0xd8ff) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
187   AM_RANGE(0xd900, 0xdfff) AM_RAM
185188   AM_RANGE(0xe000, 0xe000) AM_READ_PORT("IN0")
186   AM_RANGE(0xe800, 0xe800) AM_READ_PORT("IN1")
187   AM_RANGE(0xf000, 0xf000) AM_READ_PORT("DSW1")
188   AM_RANGE(0xf800, 0xf800) AM_READ_PORT("DSW2")
189ADDRESS_MAP_END
190
191static ADDRESS_MAP_START( pbillrd_writemem, ADDRESS_SPACE_PROGRAM, 8 )
192   AM_RANGE(0x0000, 0xbfff) AM_WRITE(SMH_ROM)
193   AM_RANGE(0xc000, 0xcfff) AM_WRITE(SMH_RAM)
194   AM_RANGE(0xd000, 0xd7ff) AM_WRITE(freek_videoram_w) AM_BASE(&freek_videoram)
195   AM_RANGE(0xd800, 0xd8ff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
196   AM_RANGE(0xd900, 0xdfff) AM_WRITE(SMH_RAM)
197189   AM_RANGE(0xe000, 0xe001) AM_WRITE(flipscreen_w)
198190   AM_RANGE(0xe002, 0xe003) AM_WRITE(coin_w)
199191   AM_RANGE(0xe004, 0xe004) AM_WRITE(nmi_enable_w)
200   AM_RANGE(0xf000, 0xf000) AM_WRITE(pbillrd_bankswitch_w)
192   AM_RANGE(0xe800, 0xe800) AM_READ_PORT("IN1")
193   AM_RANGE(0xf000, 0xf000) AM_READ_PORT("DSW1") AM_WRITE(pbillrd_bankswitch_w)
194   AM_RANGE(0xf800, 0xf800) AM_READ_PORT("DSW2")
201195   AM_RANGE(0xfc00, 0xfc00) AM_DEVWRITE("sn1", sn76496_w)
202196   AM_RANGE(0xfc01, 0xfc01) AM_DEVWRITE("sn2", sn76496_w)
203197   AM_RANGE(0xfc02, 0xfc02) AM_DEVWRITE("sn3", sn76496_w)
204198   AM_RANGE(0xfc03, 0xfc03) AM_DEVWRITE("sn4", sn76496_w)
205199ADDRESS_MAP_END
206200
207static ADDRESS_MAP_START( freekckb_readmem, ADDRESS_SPACE_PROGRAM, 8 )
208   AM_RANGE(0x0000, 0xcfff) AM_READ(SMH_ROM)
209   AM_RANGE(0xd000, 0xdfff) AM_READ(SMH_RAM)
210   AM_RANGE(0xe000, 0xe7ff) AM_READ(SMH_RAM)   // tilemap
211   AM_RANGE(0xe800, 0xe8ff) AM_READ(SMH_RAM)   // sprites
212   AM_RANGE(0xec00, 0xec03) AM_DEVREAD("ppi8255_0", ppi8255_r)
213   AM_RANGE(0xf000, 0xf003) AM_DEVREAD("ppi8255_1", ppi8255_r)
214   AM_RANGE(0xf800, 0xf800) AM_READ_PORT("IN0")
201static ADDRESS_MAP_START( freekckb_map, ADDRESS_SPACE_PROGRAM, 8 )
202   AM_RANGE(0x0000, 0xcfff) AM_ROM
203   AM_RANGE(0xd000, 0xdfff) AM_RAM
204   AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(freek_videoram_w) AM_BASE(&freek_videoram)   // tilemap
205   AM_RANGE(0xe800, 0xe8ff) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size)      // sprites
206   AM_RANGE(0xec00, 0xec03) AM_DEVREADWRITE("ppi8255_0", ppi8255_r, ppi8255_w)
207   AM_RANGE(0xf000, 0xf003) AM_DEVREADWRITE("ppi8255_1", ppi8255_r, ppi8255_w)
208   AM_RANGE(0xf800, 0xf800) AM_READ_PORT("IN0") AM_WRITE(flipscreen_w)
215209   AM_RANGE(0xf801, 0xf801) AM_READ_PORT("IN1")
216210   AM_RANGE(0xf802, 0xf802) AM_READNOP   //MUST return bit 0 = 0, otherwise game resets
217211   AM_RANGE(0xf803, 0xf803) AM_READ(spinner_r)
218ADDRESS_MAP_END
219
220static ADDRESS_MAP_START( freekckb_writemem, ADDRESS_SPACE_PROGRAM, 8 )
221   AM_RANGE(0x0000, 0xcfff) AM_WRITE(SMH_ROM)
222   AM_RANGE(0xd000, 0xdfff) AM_WRITE(SMH_RAM)
223   AM_RANGE(0xe000, 0xe7ff) AM_WRITE(freek_videoram_w) AM_BASE(&freek_videoram)
224   AM_RANGE(0xe800, 0xe8ff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
225   AM_RANGE(0xec00, 0xec03) AM_DEVWRITE("ppi8255_0", ppi8255_w)
226   AM_RANGE(0xf000, 0xf003) AM_DEVWRITE("ppi8255_1", ppi8255_w)
227   AM_RANGE(0xf800, 0xf801) AM_WRITE(flipscreen_w)
228212   AM_RANGE(0xf802, 0xf803) AM_WRITE(coin_w)
229213   AM_RANGE(0xf804, 0xf804) AM_WRITE(nmi_enable_w)
230214   AM_RANGE(0xf806, 0xf806) AM_WRITE(spinner_select_w)
r4679r4680
234218   AM_RANGE(0xfc03, 0xfc03) AM_DEVWRITE("sn4", sn76496_w)
235219ADDRESS_MAP_END
236220
237static ADDRESS_MAP_START( gigas_readmem, ADDRESS_SPACE_PROGRAM, 8 )
238   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
239   AM_RANGE(0x8000, 0xbfff) AM_READ(SMH_ROM)
240   AM_RANGE(0xc000, 0xdfff) AM_READ(SMH_RAM)
241   AM_RANGE(0xe000, 0xe000) AM_READ_PORT("IN0")
242   AM_RANGE(0xe800, 0xe800) AM_READ_PORT("IN1")
243   AM_RANGE(0xf000, 0xf000) AM_READ_PORT("DSW1")
244   AM_RANGE(0xf800, 0xf800) AM_READ_PORT("DSW2")
245ADDRESS_MAP_END
246
247static ADDRESS_MAP_START( gigas_writemem, ADDRESS_SPACE_PROGRAM, 8 )
248   AM_RANGE(0x0000, 0xbfff) AM_WRITE(SMH_ROM)
249   AM_RANGE(0xc000, 0xcfff) AM_WRITE(SMH_RAM)
250   AM_RANGE(0xd000, 0xd7ff) AM_WRITE(freek_videoram_w) AM_BASE(&freek_videoram)
251   AM_RANGE(0xd800, 0xd8ff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
252   AM_RANGE(0xd900, 0xdfff) AM_WRITE(SMH_RAM)
253   AM_RANGE(0xe000, 0xe001) AM_WRITENOP// probably not flipscreen
221static ADDRESS_MAP_START( gigas_map, ADDRESS_SPACE_PROGRAM, 8 )
222   AM_RANGE(0x0000, 0x7fff) AM_ROM
223   AM_RANGE(0x8000, 0xbfff) AM_ROM
224   AM_RANGE(0xc000, 0xcfff) AM_RAM
225   AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(freek_videoram_w) AM_BASE(&freek_videoram)
226   AM_RANGE(0xd800, 0xd8ff) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
227   AM_RANGE(0xd900, 0xdfff) AM_RAM
228   AM_RANGE(0xe000, 0xe000) AM_READ_PORT("IN0") AM_WRITENOP // probably not flipscreen
254229   AM_RANGE(0xe002, 0xe003) AM_WRITE(coin_w)
255230   AM_RANGE(0xe004, 0xe004) AM_WRITE(nmi_enable_w)
256231   AM_RANGE(0xe005, 0xe005) AM_WRITENOP
257   AM_RANGE(0xf000, 0xf000) AM_WRITENOP //bankswitch ?
232   AM_RANGE(0xe800, 0xe800) AM_READ_PORT("IN1")
233   AM_RANGE(0xf000, 0xf000) AM_READ_PORT("DSW1") AM_WRITENOP //bankswitch ?
234   AM_RANGE(0xf800, 0xf800) AM_READ_PORT("DSW2")
258235   AM_RANGE(0xfc00, 0xfc00) AM_DEVWRITE("sn1", sn76496_w)
259236   AM_RANGE(0xfc01, 0xfc01) AM_DEVWRITE("sn2", sn76496_w)
260237   AM_RANGE(0xfc02, 0xfc02) AM_DEVWRITE("sn3", sn76496_w)
r4679r4680
290267
291268static INPUT_PORTS_START( pbillrd )
292269
270
293271   PORT_START("IN0")
294272   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 )
295273   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 )
r4679r4680
636614
637615static MACHINE_DRIVER_START( base )
638616   MDRV_CPU_ADD("maincpu",Z80, 18432000/6)   //confirmed
639   MDRV_CPU_PROGRAM_MAP(pbillrd_readmem,pbillrd_writemem)
617   MDRV_CPU_PROGRAM_MAP(pbillrd_map,0)
640618   MDRV_CPU_PERIODIC_INT(irq0_line_hold, 50*3) //??
641619   MDRV_CPU_VBLANK_INT("screen", freekick_irqgen)
642620
r4679r4680
682660   MDRV_IMPORT_FROM(base)
683661
684662   MDRV_CPU_MODIFY("maincpu")
685   MDRV_CPU_PROGRAM_MAP(freekckb_readmem,freekckb_writemem)
663   MDRV_CPU_PROGRAM_MAP(freekckb_map,0)
686664   MDRV_CPU_IO_MAP(freekckb_io_map,0)
687665
688666   MDRV_PPI8255_ADD( "ppi8255_0", ppi8255_intf[0] )
r4679r4680
695673   MDRV_IMPORT_FROM(base)
696674
697675   MDRV_CPU_MODIFY("maincpu")
698   MDRV_CPU_PROGRAM_MAP(gigas_readmem,gigas_writemem)
676   MDRV_CPU_PROGRAM_MAP(gigas_map,0)
699677   MDRV_CPU_IO_MAP(gigas_io_map,0)
700678
701679   MDRV_VIDEO_UPDATE(gigas)
r4679r4680
978956ROM_END
979957
980958
959
960ROM_START( gigas ) /* From an actual Sega board 834-6167 with mc-8123: 317-5002 */
961/* The MC-8123 is located on a small daughterboard which plugs into the z80 socket;
962 * the daughterboard also has an input for the spinner control the game uses,
963 * Also note that roms 7 and 8 are encrypted, and the load order may be swapped or
964 * otherwise wrong; It is also possible that the 7 and 8 labels were switched on
965 * the files submitted. 7 is at location 8p, 8 at location 8n according to pcb pics.
966 * An empty socket marked 27256 is at location 10n */
967   ROM_REGION( 2*0x10000, "maincpu", 0 )
968   ROM_LOAD( "7.8p",   0x10000, 0x4000, CRC(43653909) SHA1(30f6666ba5c0f016299f462c4c07c81ee4832808) ) /* 27256 */
969   ROM_CONTINUE(        0x00000, 0x4000)
970   ROM_LOAD( "8.8n",   0x04000, 0x4000, NO_DUMP CRC(ab54d286) SHA1(897256b6709e1a4da9daba92b6bde39ccfccd8c1) ) /* 27128, dumped as all 0x00s, bad eprom */
971
972   ROM_REGION( 0x2000, "user1", 0 ) /* MC8123 key */
973   ROM_LOAD( "317-5002.key", 0x0000, 0x2000, NO_DUMP )
974
975   ROM_REGION( 0xc000, "gfx1", ROMREGION_DISPOSE ) /* GFX */
976   ROM_LOAD( "4.3k", 0x00000, 0x04000, CRC(8ed78981) SHA1(1f2c0584fcc6d04b042638c7b9a7e21fc560ca3d) )
977   ROM_LOAD( "5.3h", 0x04000, 0x04000, CRC(0645ec2d) SHA1(ecf8b1ce98f845b5b32e7fc959cea7679a149d74) )
978   ROM_LOAD( "6.3g", 0x08000, 0x04000, CRC(99e9cb27) SHA1(d141d6caa077e3cd182eb64cf803613ac17e7d09) )
979
980   ROM_REGION( 0xc000, "gfx2", ROMREGION_DISPOSE ) /* GFX */
981   ROM_LOAD( "1.3p", 0x00000, 0x04000, CRC(d78fae6e) SHA1(a7bf3b213f2a3a51b964959bd45003351670575a) )
982   ROM_LOAD( "3.3l", 0x04000, 0x04000, CRC(37df4a4c) SHA1(ab996db636d89845474529ba2573307046fb96ee) )
983   ROM_LOAD( "2.3n", 0x08000, 0x04000, CRC(3a46e354) SHA1(ebd6a5db4c9cdfc6fabe6b412a704aaf03c32d7c) )
984
985   ROM_REGION( 0x0600, "proms", 0 ) /* not dumped yet; assumed to be the same */
986   /* fill in which locations for each prom when redumping; the chips have
987     * no labels, but are clearly located at 3a 3b 3c 3d 4a and 4d */
988   ROM_LOAD( "1.pr", 0x0000, 0x0100, CRC(a784e71f) SHA1(1741ce98d719bad6cc5ea42337ef897f2435bbab) )
989   ROM_LOAD( "6.pr", 0x0100, 0x0100, CRC(376df30c) SHA1(cc95920cd1c133da1becc7d92f4b187b56a90ec7) )
990   ROM_LOAD( "5.pr", 0x0200, 0x0100, CRC(4edff5bd) SHA1(305efc7ad7f86635489a655e214e216ac02b904d) )
991   ROM_LOAD( "4.pr", 0x0300, 0x0100, CRC(fe201a4e) SHA1(15f8ecfcf6c63ffbf9777bec9b203c319ba1b96c) )
992   ROM_LOAD( "2.pr", 0x0400, 0x0100, CRC(5796cc4a) SHA1(39576c4e48fd7ac52fc652a1ae0573db3d878878) )
993   ROM_LOAD( "3.pr", 0x0500, 0x0100, CRC(28b5ee4c) SHA1(e21b9c38f433dca1e8894619b1d9f0389a81b48a) )
994ROM_END
995
981996/*
982997Gigas (bootleg)
983998
r4679r4680
10531068 *
10541069 *************************************/
10551070
1056static DRIVER_INIT(gigas)
1071static DRIVER_INIT(gigasb)
10571072{
10581073   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
10591074   memory_set_decrypted_region(space, 0x0000, 0x7fff, memory_region(machine, "maincpu") + 0x10000);
r4679r4680
10651080   mc8123_decrypt_rom(machine, "maincpu", "user1", 1, 2);
10661081}
10671082
1083static DRIVER_INIT( gigas )
1084{
1085   /* uncomment this next line and remove the two lines below it once the key is dumped */
1086   //mc8123_decrypt_rom(machine, "maincpu", "user1", 1, 2);
1087   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
1088   memory_set_decrypted_region(space, 0x0000, 0x7fff, memory_region(machine, "maincpu") + 0x10000);
1089}
10681090
10691091
1092
1093
10701094/*************************************
10711095 *
10721096 *  Game driver(s)
10731097 *
10741098 *************************************/
1075
1076GAME( 1986, gigasb,   0,        gigas,    gigas,    gigas,    ROT270, "bootleg", "Gigas (bootleg)", GAME_NO_COCKTAIL )
1077GAME( 1986, oigas,    gigasb,   oigas,    gigas,    gigas,    ROT270, "bootleg", "Oigas (bootleg)", GAME_NO_COCKTAIL )
1078GAME( 1986, gigasm2b, 0,        gigas,    gigasm2,  gigas,    ROT270, "bootleg", "Gigas Mark II (bootleg)", GAME_NO_COCKTAIL )
1099/*    YEAR  NAME      PARENT    MACHINE   INPUT     INIT      ROT     COMPANY   FULLNAME        FLAGS  */
1100GAME( 1986, gigas,    0,        gigas,    gigas,    gigas,    ROT270, "Sega", "Gigas", GAME_NOT_WORKING )
1101GAME( 1986, gigasb,   gigas,    gigas,    gigas,    gigasb,   ROT270, "bootleg", "Gigas (bootleg)", GAME_NO_COCKTAIL )
1102GAME( 1986, oigas,    gigas ,   oigas,    gigas,    gigasb,   ROT270, "bootleg", "Oigas (bootleg)", GAME_NO_COCKTAIL )
1103GAME( 1986, gigasm2b, 0,        gigas,    gigasm2,  gigasb,   ROT270, "bootleg", "Gigas Mark II (bootleg)", GAME_NO_COCKTAIL )
10791104GAME( 1987, pbillrd,  0,        pbillrd,  pbillrd,  0,        ROT0,   "Nihon System", "Perfect Billiard", 0 )
10801105GAME( 1987, pbillrds, pbillrd,  pbillrd,  pbillrd,  pbillrds, ROT0,   "Nihon System", "Perfect Billiard (MC-8123, 317-0030)", 0 )
10811106GAME( 1987, freekick, 0,        freekckb, freekck,  0,        ROT270, "Nihon System (Sega license)", "Free Kick", GAME_NOT_WORKING )
src/mame/drivers/cischeat.c
r4679r4680
254254   if ( (offset >= 0x3600/2) && (offset <= 0x37ff/2) ) { palette_set_color(space->machine, 0xe00 + offset - 0x3600/2, MAKE_RGB(r,g,b) ); return;}
255255}
256256
257static ADDRESS_MAP_START( bigrun_readmem, ADDRESS_SPACE_PROGRAM, 16 )
258   AM_RANGE(0x000000, 0x07ffff) AM_READ(SMH_ROM         )   // ROM
259   AM_RANGE(0x100000, 0x13ffff) AM_READ(rom_1_r            )   // ROM
260   AM_RANGE(0x0f0000, 0x0fffff) AM_READ(SMH_RAM         )   // RAM
261   AM_RANGE(0x080000, 0x083fff) AM_READ(bigrun_vregs_r      )   // Vregs
262   AM_RANGE(0x084000, 0x087fff) AM_READ(SMH_RAM         )   // Linking with other units
257static ADDRESS_MAP_START( bigrun_map, ADDRESS_SPACE_PROGRAM, 16 )
258   AM_RANGE(0x000000, 0x07ffff) AM_ROM                                                   // ROM
259   AM_RANGE(0x080000, 0x083fff) AM_READWRITE(bigrun_vregs_r, bigrun_vregs_w) AM_BASE(&megasys1_vregs)   // Vregs
260   AM_RANGE(0x084000, 0x087fff) AM_WRITE(SMH_RAM)                                          // Linking with other units
261   AM_RANGE(0x088000, 0x08bfff) AM_READWRITE(sharedram2_r, sharedram2_w) AM_BASE(&sharedram2)         // Sharedram with sub CPU#2
262   AM_RANGE(0x08c000, 0x08ffff) AM_READWRITE(sharedram1_r, sharedram1_w) AM_BASE(&sharedram1)         // Sharedram with sub CPU#1
263263
264   /* this is the right order of sharedram's */
265   AM_RANGE(0x088000, 0x08bfff) AM_READ(sharedram2_r      )   // Sharedram with sub CPU#2
266   AM_RANGE(0x08c000, 0x08ffff) AM_READ(sharedram1_r      )   // Sharedram with sub CPU#1
267
268   AM_RANGE(0x090000, 0x093fff) AM_READ(SMH_RAM         )   // Scroll ram 0
269   AM_RANGE(0x094000, 0x097fff) AM_READ(SMH_RAM         )   // Scroll ram 1
270   AM_RANGE(0x098000, 0x09bfff) AM_READ(SMH_RAM         )   // Scroll ram 2
271
272   AM_RANGE(0x09c000, 0x09ffff) AM_READ(SMH_RAM         )   // Palettes
273ADDRESS_MAP_END
274
275static ADDRESS_MAP_START( bigrun_writemem, ADDRESS_SPACE_PROGRAM, 16 )
276   AM_RANGE(0x000000, 0x07ffff) AM_WRITE(SMH_ROM                     )   // ROM
277   AM_RANGE(0x100000, 0x13ffff) AM_WRITE(SMH_ROM                     )   // ROM
278   AM_RANGE(0x0f0000, 0x0fffff) AM_WRITE(SMH_RAM) AM_BASE(&megasys1_ram         )   // RAM
279   AM_RANGE(0x080000, 0x083fff) AM_WRITE(bigrun_vregs_w) AM_BASE(&megasys1_vregs   )   // Vregs
280   AM_RANGE(0x084000, 0x087fff) AM_WRITE(SMH_RAM                     )   // Linking with other units
281
282   AM_RANGE(0x088000, 0x08bfff) AM_WRITE(sharedram2_w) AM_BASE(&sharedram2         )   // Sharedram with sub CPU#2
283   AM_RANGE(0x08c000, 0x08ffff) AM_WRITE(sharedram1_w) AM_BASE(&sharedram1         )   // Sharedram with sub CPU#1
284
285264   /* Only writes to the first 0x40000 bytes affect the tilemaps:             */
286265   /* either these games support larger tilemaps or have more ram than needed */
287   AM_RANGE(0x090000, 0x093fff) AM_WRITE(megasys1_scrollram_0_w) AM_BASE(&megasys1_scrollram[0]   )   // Scroll ram 0
288   AM_RANGE(0x094000, 0x097fff) AM_WRITE(megasys1_scrollram_1_w) AM_BASE(&megasys1_scrollram[1]   )   // Scroll ram 1
289   AM_RANGE(0x098000, 0x09bfff) AM_WRITE(megasys1_scrollram_2_w) AM_BASE(&megasys1_scrollram[2]   )   // Scroll ram 2
266   AM_RANGE(0x090000, 0x093fff) AM_WRITE(megasys1_scrollram_0_w) AM_BASE(&megasys1_scrollram[0])      // Scroll ram 0
267   AM_RANGE(0x094000, 0x097fff) AM_WRITE(megasys1_scrollram_1_w) AM_BASE(&megasys1_scrollram[1])      // Scroll ram 1
268   AM_RANGE(0x098000, 0x09bfff) AM_WRITE(megasys1_scrollram_2_w) AM_BASE(&megasys1_scrollram[2])      // Scroll ram 2
290269
291   AM_RANGE(0x09c000, 0x09ffff) AM_WRITE(bigrun_paletteram16_w) AM_BASE(&paletteram16   )   // Palettes
270   AM_RANGE(0x09c000, 0x09ffff) AM_WRITE(bigrun_paletteram16_w) AM_BASE(&paletteram16   )            // Palettes
271   AM_RANGE(0x0f0000, 0x0fffff) AM_RAM AM_BASE(&megasys1_ram)                                 // RAM
272   AM_RANGE(0x100000, 0x13ffff) AM_READWRITE(rom_1_r, SMH_ROM)                                 // ROM
292273ADDRESS_MAP_END
293274
294275
r4679r4680
326307   if ( (offset >= 0x5000/2) && (offset <= 0x5fff/2) ) { palette_set_color(space->machine, 0xe00 + offset - 0x5000/2, MAKE_RGB(r,g,b) ); return;}
327308}
328309
329static ADDRESS_MAP_START( cischeat_readmem, ADDRESS_SPACE_PROGRAM, 16 )
330   AM_RANGE(0x000000, 0x07ffff) AM_READ(SMH_ROM         )   // ROM
331   AM_RANGE(0x100000, 0x17ffff) AM_READ(rom_1_r         )   // ROM
332   AM_RANGE(0x0f0000, 0x0fffff) AM_READ(SMH_RAM         )   // RAM
333   AM_RANGE(0x080000, 0x087fff) AM_READ(cischeat_vregs_r   )   // Vregs
334   AM_RANGE(0x088000, 0x088fff) AM_READ(SMH_RAM         )   // Linking with other units
310static ADDRESS_MAP_START( cischeat_map, ADDRESS_SPACE_PROGRAM, 16 )
311   AM_RANGE(0x000000, 0x07ffff) AM_ROM                                                    // ROM
312   AM_RANGE(0x080000, 0x087fff) AM_READWRITE(cischeat_vregs_r, cischeat_vregs_w)  AM_BASE(&megasys1_vregs)   // Vregs
313   AM_RANGE(0x088000, 0x088fff) AM_RAM                                                    // Linking with other units
335314
336315/*  Only the first 0x800 bytes are tested but:
337316    CPU #0 PC 0000278c: warning - write 68c0 to unmapped memory address 0009c7fe
r4679r4680
339318    No mem access error from the other CPU's, though.. */
340319
341320   /* this is the right order of sharedram's */
342   AM_RANGE(0x090000, 0x097fff) AM_READ(sharedram2_r      )   // Sharedram with sub CPU#2
343   AM_RANGE(0x098000, 0x09ffff) AM_READ(sharedram1_r      )   // Sharedram with sub CPU#1
321   AM_RANGE(0x090000, 0x097fff) AM_READWRITE(sharedram2_r, sharedram2_w) AM_BASE(&sharedram2)             // Sharedram with sub CPU#2
322   AM_RANGE(0x098000, 0x09ffff) AM_READWRITE(sharedram1_r, sharedram1_w) AM_BASE(&sharedram1)             // Sharedram with sub CPU#1
344323
345   AM_RANGE(0x0a0000, 0x0a7fff) AM_READ(SMH_RAM         )   // Scroll ram 0
346   AM_RANGE(0x0a8000, 0x0affff) AM_READ(SMH_RAM         )   // Scroll ram 1
347   AM_RANGE(0x0b0000, 0x0b7fff) AM_READ(SMH_RAM         )   // Scroll ram 2
348
349   AM_RANGE(0x0b8000, 0x0bffff) AM_READ(SMH_RAM         )   // Palettes
350ADDRESS_MAP_END
351
352static ADDRESS_MAP_START( cischeat_writemem, ADDRESS_SPACE_PROGRAM, 16 )
353   AM_RANGE(0x000000, 0x07ffff) AM_WRITE(SMH_ROM                     )   // ROM
354   AM_RANGE(0x100000, 0x17ffff) AM_WRITE(SMH_ROM                     )   // ROM
355   AM_RANGE(0x0f0000, 0x0fffff) AM_WRITE(SMH_RAM) AM_BASE(&megasys1_ram         )   // RAM
356   AM_RANGE(0x080000, 0x087fff) AM_WRITE(cischeat_vregs_w) AM_BASE(&megasys1_vregs   )   // Vregs
357   AM_RANGE(0x088000, 0x088fff) AM_WRITE(SMH_RAM                     )   // Linking with other units
358
359   AM_RANGE(0x090000, 0x097fff) AM_WRITE(sharedram2_w) AM_BASE(&sharedram2         )   // Sharedram with sub CPU#2
360   AM_RANGE(0x098000, 0x09ffff) AM_WRITE(sharedram1_w) AM_BASE(&sharedram1         )   // Sharedram with sub CPU#1
361
362324   /* Only writes to the first 0x40000 bytes affect the tilemaps:             */
363325   /* either these games support larger tilemaps or have more ram than needed */
364   AM_RANGE(0x0a0000, 0x0a7fff) AM_WRITE(megasys1_scrollram_0_w) AM_BASE(&megasys1_scrollram[0]   )   // Scroll ram 0
365   AM_RANGE(0x0a8000, 0x0affff) AM_WRITE(megasys1_scrollram_1_w) AM_BASE(&megasys1_scrollram[1]   )   // Scroll ram 1
366   AM_RANGE(0x0b0000, 0x0b7fff) AM_WRITE(megasys1_scrollram_2_w) AM_BASE(&megasys1_scrollram[2]   )   // Scroll ram 2
326   AM_RANGE(0x0a0000, 0x0a7fff) AM_RAM_WRITE(megasys1_scrollram_0_w) AM_BASE(&megasys1_scrollram[0])       // Scroll ram 0
327   AM_RANGE(0x0a8000, 0x0affff) AM_RAM_WRITE(megasys1_scrollram_1_w) AM_BASE(&megasys1_scrollram[1])       // Scroll ram 1
328   AM_RANGE(0x0b0000, 0x0b7fff) AM_RAM_WRITE(megasys1_scrollram_2_w) AM_BASE(&megasys1_scrollram[2])       // Scroll ram 2
367329
368   AM_RANGE(0x0b8000, 0x0bffff) AM_WRITE(cischeat_paletteram16_w) AM_BASE(&paletteram16   )   // Palettes
330   AM_RANGE(0x0b8000, 0x0bffff) AM_RAM_WRITE(cischeat_paletteram16_w) AM_BASE(&paletteram16)             // Palettes
331
332   AM_RANGE(0x0f0000, 0x0fffff) AM_RAM AM_BASE(&megasys1_ram)                                    // RAM
333   AM_RANGE(0x100000, 0x17ffff) AM_READWRITE(rom_1_r, SMH_ROM)                                    // ROM
369334ADDRESS_MAP_END
370335
371336
r4679r4680
402367    098800-099000
403368    0F8000-0F9000   */
404369
405static ADDRESS_MAP_START( f1gpstar_readmem, ADDRESS_SPACE_PROGRAM, 16 )
406   AM_RANGE(0x000000, 0x07ffff) AM_READ(SMH_ROM         )   // ROM
407   AM_RANGE(0x100000, 0x17ffff) AM_READ(rom_1_r         )   // ROM
408   AM_RANGE(0x0f0000, 0x0fffff) AM_READ(SMH_RAM         )   // RAM
409   AM_RANGE(0x080000, 0x087fff) AM_READ(f1gpstar_vregs_r   )   // Vregs
410   AM_RANGE(0x088000, 0x088fff) AM_READ(SMH_RAM         )   // Linking with other units
370static ADDRESS_MAP_START( f1gpstar_map, ADDRESS_SPACE_PROGRAM, 16 )
371   AM_RANGE(0x000000, 0x07ffff) AM_ROM                                                    // ROM
372   AM_RANGE(0x080000, 0x087fff) AM_READWRITE(f1gpstar_vregs_r, f1gpstar_vregs_w) AM_BASE(&megasys1_vregs)   // Vregs
373   AM_RANGE(0x088000, 0x088fff) AM_RAM                                                      // Linking with other units
411374
412   AM_RANGE(0x090000, 0x097fff) AM_READ(sharedram2_r      )   // Sharedram with sub CPU#2
413   AM_RANGE(0x098000, 0x09ffff) AM_READ(sharedram1_r      )   // Sharedram with sub CPU#1
375   AM_RANGE(0x090000, 0x097fff) AM_READWRITE(sharedram2_r, sharedram2_w) AM_BASE(&sharedram2)            // Sharedram with sub CPU#2
376   AM_RANGE(0x098000, 0x09ffff) AM_READWRITE(sharedram1_r, sharedram1_w) AM_BASE(&sharedram1)            // Sharedram with sub CPU#1
414377
415   AM_RANGE(0x0a0000, 0x0a7fff) AM_READ(SMH_RAM         )   // Scroll ram 0
416   AM_RANGE(0x0a8000, 0x0affff) AM_READ(SMH_RAM         )   // Scroll ram 1
417   AM_RANGE(0x0b0000, 0x0b7fff) AM_READ(SMH_RAM         )   // Scroll ram 2
418
419   AM_RANGE(0x0b8000, 0x0bffff) AM_READ(SMH_RAM         )   // Palettes
420ADDRESS_MAP_END
421
422static ADDRESS_MAP_START( f1gpstar_writemem, ADDRESS_SPACE_PROGRAM, 16 )
423   AM_RANGE(0x000000, 0x07ffff) AM_WRITE(SMH_ROM                     )
424   AM_RANGE(0x100000, 0x17ffff) AM_WRITE(SMH_ROM                     )
425   AM_RANGE(0x0f0000, 0x0fffff) AM_WRITE(SMH_RAM) AM_BASE(&megasys1_ram         )   // RAM
426   AM_RANGE(0x080000, 0x087fff) AM_WRITE(f1gpstar_vregs_w) AM_BASE(&megasys1_vregs   )   // Vregs
427   AM_RANGE(0x088000, 0x088fff) AM_WRITE(SMH_RAM                     )   // Linking with other units
428
429   AM_RANGE(0x090000, 0x097fff) AM_WRITE(sharedram2_w) AM_BASE(&sharedram2         )   // Sharedram with sub CPU#2
430   AM_RANGE(0x098000, 0x09ffff) AM_WRITE(sharedram1_w) AM_BASE(&sharedram1         )   // Sharedram with sub CPU#1
431
432378   /* Only writes to the first 0x40000 bytes affect the tilemaps:             */
433379   /* either these games support larger tilemaps or have more ram than needed */
434   AM_RANGE(0x0a0000, 0x0a7fff) AM_WRITE(megasys1_scrollram_0_w) AM_BASE(&megasys1_scrollram[0]   )   // Scroll ram 0
435   AM_RANGE(0x0a8000, 0x0affff) AM_WRITE(megasys1_scrollram_1_w) AM_BASE(&megasys1_scrollram[1]   )   // Scroll ram 1
436   AM_RANGE(0x0b0000, 0x0b7fff) AM_WRITE(megasys1_scrollram_2_w) AM_BASE(&megasys1_scrollram[2]   )   // Scroll ram 2
380   AM_RANGE(0x0a0000, 0x0a7fff) AM_RAM_WRITE(megasys1_scrollram_0_w) AM_BASE(&megasys1_scrollram[0])      // Scroll ram 0
381   AM_RANGE(0x0a8000, 0x0affff) AM_RAM_WRITE(megasys1_scrollram_1_w) AM_BASE(&megasys1_scrollram[1])      // Scroll ram 1
382   AM_RANGE(0x0b0000, 0x0b7fff) AM_RAM_WRITE(megasys1_scrollram_2_w) AM_BASE(&megasys1_scrollram[2])      // Scroll ram 2
437383
438   AM_RANGE(0x0b8000, 0x0bffff) AM_WRITE(f1gpstar_paletteram16_w) AM_BASE(&paletteram16   )   // Palettes
384   AM_RANGE(0x0b8000, 0x0bffff) AM_RAM_WRITE(f1gpstar_paletteram16_w) AM_BASE(&paletteram16)            // Palettes
385
386   AM_RANGE(0x0f0000, 0x0fffff) AM_RAM AM_BASE(&megasys1_ram)                                    // RAM
387   AM_RANGE(0x100000, 0x17ffff) AM_READWRITE(rom_1_r, SMH_ROM)                                    // ROM
439388ADDRESS_MAP_END
440389
441390
r4679r4680
444393**************************************************************************/
445394
446395// Same as f1gpstar, but vregs are slightly different:
447static ADDRESS_MAP_START( f1gpstr2_readmem, ADDRESS_SPACE_PROGRAM, 16 )
448   AM_RANGE(0x000000, 0x07ffff) AM_READ(SMH_ROM         )   // ROM
449   AM_RANGE(0x100000, 0x17ffff) AM_READ(rom_1_r         )   // ROM
450   AM_RANGE(0x0f0000, 0x0fffff) AM_READ(SMH_RAM         )   // RAM
451   AM_RANGE(0x080000, 0x087fff) AM_READ(f1gpstr2_vregs_r   )   // Vregs (slightly different from f1gpstar)
452   AM_RANGE(0x088000, 0x088fff) AM_READ(SMH_RAM         )   // Linking with other units
396static ADDRESS_MAP_START( f1gpstr2_map, ADDRESS_SPACE_PROGRAM, 16 )
397   AM_RANGE(0x000000, 0x07ffff) AM_ROM                                                      // ROM
398   AM_RANGE(0x080000, 0x087fff) AM_READWRITE(f1gpstr2_vregs_r, f1gpstr2_vregs_w) AM_BASE(&megasys1_vregs)   // Vregs (slightly different from f1gpstar)
399   AM_RANGE(0x088000, 0x088fff) AM_RAM                                                      // Linking with other units
453400
454   AM_RANGE(0x090000, 0x097fff) AM_READ(sharedram2_r      )   // Sharedram with sub CPU#2
455   AM_RANGE(0x098000, 0x09ffff) AM_READ(sharedram1_r      )   // Sharedram with sub CPU#1
401   AM_RANGE(0x090000, 0x097fff) AM_READWRITE(sharedram2_r, sharedram2_w) AM_BASE(&sharedram2)            // Sharedram with sub CPU#2
402   AM_RANGE(0x098000, 0x09ffff) AM_READWRITE(sharedram2_r, sharedram1_w) AM_BASE(&sharedram1)            // Sharedram with sub CPU#1
456403
457   AM_RANGE(0x0a0000, 0x0a7fff) AM_READ(SMH_RAM         )   // Scroll ram 0
458   AM_RANGE(0x0a8000, 0x0affff) AM_READ(SMH_RAM         )   // Scroll ram 1
459   AM_RANGE(0x0b0000, 0x0b7fff) AM_READ(SMH_RAM         )   // Scroll ram 2
460
461   AM_RANGE(0x0b8000, 0x0bffff) AM_READ(SMH_RAM         )   // Palettes
462ADDRESS_MAP_END
463
464static ADDRESS_MAP_START( f1gpstr2_writemem, ADDRESS_SPACE_PROGRAM, 16 )
465   AM_RANGE(0x000000, 0x07ffff) AM_WRITE(SMH_ROM                     )
466   AM_RANGE(0x100000, 0x17ffff) AM_WRITE(SMH_ROM                     )
467   AM_RANGE(0x0f0000, 0x0fffff) AM_WRITE(SMH_RAM) AM_BASE(&megasys1_ram         )   // RAM
468   AM_RANGE(0x080000, 0x087fff) AM_WRITE(f1gpstr2_vregs_w) AM_BASE(&megasys1_vregs   )   // Vregs  (slightly different from f1gpstar)
469   AM_RANGE(0x088000, 0x088fff) AM_WRITE(SMH_RAM                     )   // Linking with other units
470
471   AM_RANGE(0x090000, 0x097fff) AM_WRITE(sharedram2_w) AM_BASE(&sharedram2         )   // Sharedram with sub CPU#2
472   AM_RANGE(0x098000, 0x09ffff) AM_WRITE(sharedram1_w) AM_BASE(&sharedram1         )   // Sharedram with sub CPU#1
473
474404   /* Only writes to the first 0x40000 bytes affect the tilemaps:             */
475405   /* either these games support larger tilemaps or have more ram than needed */
476   AM_RANGE(0x0a0000, 0x0a7fff) AM_WRITE(megasys1_scrollram_0_w) AM_BASE(&megasys1_scrollram[0]   )   // Scroll ram 0
477   AM_RANGE(0x0a8000, 0x0affff) AM_WRITE(megasys1_scrollram_1_w) AM_BASE(&megasys1_scrollram[1]   )   // Scroll ram 1
478   AM_RANGE(0x0b0000, 0x0b7fff) AM_WRITE(megasys1_scrollram_2_w) AM_BASE(&megasys1_scrollram[2]   )   // Scroll ram 2
406   AM_RANGE(0x0a0000, 0x0a7fff) AM_RAM_WRITE(megasys1_scrollram_0_w) AM_BASE(&megasys1_scrollram[0])      // Scroll ram 0
407   AM_RANGE(0x0a8000, 0x0affff) AM_RAM_WRITE(megasys1_scrollram_1_w) AM_BASE(&megasys1_scrollram[1])      // Scroll ram 1
408   AM_RANGE(0x0b0000, 0x0b7fff) AM_RAM_WRITE(megasys1_scrollram_2_w) AM_BASE(&megasys1_scrollram[2])      // Scroll ram 2
479409
480   AM_RANGE(0x0b8000, 0x0bffff) AM_WRITE(f1gpstar_paletteram16_w) AM_BASE(&paletteram16   )   // Palettes
410   AM_RANGE(0x0b8000, 0x0bffff) AM_RAM_WRITE(f1gpstar_paletteram16_w) AM_BASE(&paletteram16)            // Palettes
411
412   AM_RANGE(0x0f0000, 0x0fffff) AM_RAM AM_BASE(&megasys1_ram)                                    // RAM
413   AM_RANGE(0x100000, 0x17ffff) AM_READWRITE(rom_1_r, SMH_ROM)                                    // ROM
481414ADDRESS_MAP_END
482415
483416
r4679r4680
584517   }
585518}
586519
587static ADDRESS_MAP_START( readmem_scudhamm, ADDRESS_SPACE_PROGRAM, 16 )
588   AM_RANGE(0x000000, 0x07ffff) AM_READ(SMH_ROM               )   // ROM
589   AM_RANGE(0x0f0000, 0x0fffff) AM_READ(SMH_RAM               )   // Work RAM + Spriteram
590   AM_RANGE(0x082000, 0x082fff) AM_READ(SMH_RAM               )   // Video Registers + RAM
591   AM_RANGE(0x0a0000, 0x0a3fff) AM_READ(SMH_RAM               )   // Scroll RAM 0
592   AM_RANGE(0x0b0000, 0x0b3fff) AM_READ(SMH_RAM               )   // Scroll RAM 2
593   AM_RANGE(0x0b8000, 0x0bffff) AM_READ(SMH_RAM               )   // Palette
594   AM_RANGE(0x100008, 0x100009) AM_READ_PORT("IN0")               // Buttons
595   AM_RANGE(0x100014, 0x100015) AM_DEVREAD8("oki1", okim6295_r, 0x00ff   )   // Sound
596   AM_RANGE(0x100018, 0x100019) AM_DEVREAD8("oki2", okim6295_r, 0x00ff   )   //
597   AM_RANGE(0x100040, 0x100041) AM_READ(scudhamm_analog_r         )   // A / D
598   AM_RANGE(0x100044, 0x100045) AM_READ(scudhamm_motor_pos_r      )   // Motor Position
599   AM_RANGE(0x100050, 0x100051) AM_READ(scudhamm_motor_status_r   )   // Motor Limit Switches
600   AM_RANGE(0x10005c, 0x10005d) AM_READ_PORT("IN2")               // 2 x DSW
520static ADDRESS_MAP_START( scudhamm_map, ADDRESS_SPACE_PROGRAM, 16 )
521   AM_RANGE(0x000000, 0x07ffff) AM_ROM                                                   // ROM
522   AM_RANGE(0x082000, 0x082fff) AM_RAM_WRITE(scudhamm_vregs_w) AM_BASE(&megasys1_vregs)            // Video Registers + RAM
523   AM_RANGE(0x0a0000, 0x0a3fff) AM_RAM_WRITE(megasys1_scrollram_0_w) AM_BASE(&megasys1_scrollram[0])   // Scroll RAM 0
524   AM_RANGE(0x0b0000, 0x0b3fff) AM_RAM_WRITE(megasys1_scrollram_2_w) AM_BASE(&megasys1_scrollram[2])   // Scroll RAM 2
525   AM_RANGE(0x0b8000, 0x0bffff) AM_RAM_WRITE(scudhamm_paletteram16_w) AM_BASE(&paletteram16)         // Palette
526   AM_RANGE(0x0f0000, 0x0fffff) AM_RAM AM_BASE(&megasys1_ram)                                 // Work RAM + Spriteram
527    AM_RANGE(0x100000, 0x100001) AM_WRITE(scudhamm_oki_bank_w)                                 // Sound
528   AM_RANGE(0x100008, 0x100009) AM_READ_PORT("IN0") AM_WRITE(scudhamm_leds_w)                     // Buttons
529   AM_RANGE(0x100014, 0x100015) AM_DEVREADWRITE8("oki1", okim6295_r, okim6295_w, 0x00ff)            // Sound
530   AM_RANGE(0x100018, 0x100019) AM_DEVREADWRITE8("oki2", okim6295_r, okim6295_w, 0x00ff)            //
531   AM_RANGE(0x10001c, 0x10001d) AM_WRITE(scudhamm_enable_w)                                 // ?
532   AM_RANGE(0x100040, 0x100041) AM_READ(scudhamm_analog_r) AM_WRITE(SMH_NOP)                     // A / D
533   AM_RANGE(0x100044, 0x100045) AM_READ(scudhamm_motor_pos_r      )                           // Motor Position
534   AM_RANGE(0x100050, 0x100051) AM_READWRITE(scudhamm_motor_status_r, scudhamm_motor_command_w)      // Motor Limit Switches
535   AM_RANGE(0x10005c, 0x10005d) AM_READ_PORT("IN2")                                       // 2 x DSW
601536ADDRESS_MAP_END
602537
603static ADDRESS_MAP_START( writemem_scudhamm, ADDRESS_SPACE_PROGRAM, 16 )
604    AM_RANGE(0x000000, 0x07ffff) AM_WRITE(SMH_ROM               )   // ROM
605   AM_RANGE(0x0f0000, 0x0fffff) AM_WRITE(SMH_RAM) AM_BASE(            &megasys1_ram         )   // Work RAM + Spriteram
606   AM_RANGE(0x082000, 0x082fff) AM_WRITE(scudhamm_vregs_w) AM_BASE(      &megasys1_vregs         )   // Video Registers + RAM
607   AM_RANGE(0x0a0000, 0x0a3fff) AM_WRITE(megasys1_scrollram_0_w) AM_BASE(   &megasys1_scrollram[0]   )   // Scroll RAM 0
608   AM_RANGE(0x0b0000, 0x0b3fff) AM_WRITE(megasys1_scrollram_2_w) AM_BASE(   &megasys1_scrollram[2]   )   // Scroll RAM 2
609   AM_RANGE(0x0b8000, 0x0bffff) AM_WRITE(scudhamm_paletteram16_w) AM_BASE(   &paletteram16         )   // Palette
610    AM_RANGE(0x100000, 0x100001) AM_WRITE(scudhamm_oki_bank_w      )   // Sound
611    AM_RANGE(0x100008, 0x100009) AM_WRITE(scudhamm_leds_w         )   // Leds
612   AM_RANGE(0x100014, 0x100015) AM_DEVWRITE8("oki1", okim6295_w, 0x00ff      )   // Sound
613   AM_RANGE(0x100018, 0x100019) AM_DEVWRITE8("oki2", okim6295_w, 0x00ff      )   //
614   AM_RANGE(0x10001c, 0x10001d) AM_WRITE(scudhamm_enable_w         )   // ?
615   AM_RANGE(0x100040, 0x100041) AM_WRITE(SMH_NOP               )   // ? 0 written before reading
616   AM_RANGE(0x100050, 0x100051) AM_WRITE(scudhamm_motor_command_w   )   // Move Motor
617ADDRESS_MAP_END
618538
619
620539/**************************************************************************
621540                            Arm Champs II
622541**************************************************************************/
r4679r4680
680599   }
681600}
682601
683static ADDRESS_MAP_START( readmem_armchmp2, ADDRESS_SPACE_PROGRAM, 16 )
684   AM_RANGE(0x000000, 0x07ffff) AM_READ(SMH_ROM               )   // ROM
685   AM_RANGE(0x0f0000, 0x0fffff) AM_READ(SMH_RAM               )   // Work RAM + Spriteram
686   AM_RANGE(0x082000, 0x082fff) AM_READ(SMH_RAM               )   // Video Registers + RAM
687   AM_RANGE(0x0a0000, 0x0a3fff) AM_READ(SMH_RAM               )   // Scroll RAM 0
688   AM_RANGE(0x0b0000, 0x0b3fff) AM_READ(SMH_RAM               )   // Scroll RAM 2
689   AM_RANGE(0x0b8000, 0x0bffff) AM_READ(SMH_RAM               )   // Palette
690   AM_RANGE(0x100000, 0x100001) AM_READ_PORT("IN2")               // DSW
691   AM_RANGE(0x100004, 0x100005) AM_READ_PORT("IN3")               // DSW
692   AM_RANGE(0x100008, 0x100009) AM_READ(armchmp2_buttons_r         )   // Buttons + Sensors
693   AM_RANGE(0x10000c, 0x10000d) AM_READ(armchmp2_analog_r         )   // A / D
694   AM_RANGE(0x100010, 0x100011) AM_READ(armchmp2_motor_status_r   )   // Motor Limit Switches?
695   AM_RANGE(0x100014, 0x100015) AM_DEVREAD8("oki1", okim6295_r, 0x00ff   )   // Sound
696   AM_RANGE(0x100018, 0x100019) AM_DEVREAD8("oki2", okim6295_r, 0x00ff   )   //
602static ADDRESS_MAP_START( armchmp2_map, ADDRESS_SPACE_PROGRAM, 16 )
603   AM_RANGE(0x000000, 0x07ffff) AM_ROM                                                 // ROM
604   AM_RANGE(0x082000, 0x082fff) AM_RAM_WRITE(scudhamm_vregs_w) AM_BASE(&megasys1_vregs)            // Video Registers + RAM
605   AM_RANGE(0x0a0000, 0x0a3fff) AM_RAM_WRITE(megasys1_scrollram_0_w) AM_BASE(&megasys1_scrollram[0])   // Scroll RAM 0
606   AM_RANGE(0x0b0000, 0x0b3fff) AM_RAM_WRITE(megasys1_scrollram_2_w) AM_BASE(&megasys1_scrollram[2])   // Scroll RAM 2
607   AM_RANGE(0x0b8000, 0x0bffff) AM_RAM_WRITE(scudhamm_paletteram16_w) AM_BASE(&paletteram16)         // Palette
608   AM_RANGE(0x0f0000, 0x0fffff) AM_RAM AM_BASE(&megasys1_ram)                                 // Work RAM + Spriteram
609   AM_RANGE(0x100000, 0x100001) AM_READ_PORT("IN2") AM_WRITE(scudhamm_oki_bank_w)                  // DSW + Sound
610   AM_RANGE(0x100004, 0x100005) AM_READ_PORT("IN3")                                       // DSW
611   AM_RANGE(0x100008, 0x100009) AM_READWRITE(armchmp2_buttons_r, armchmp2_leds_w)                  // Leds + Coin Counters + Buttons + Sensors
612   AM_RANGE(0x10000c, 0x10000d) AM_READ(armchmp2_analog_r) AM_WRITE(SMH_NOP)                     // A / D
613   AM_RANGE(0x100010, 0x100011) AM_READWRITE(armchmp2_motor_status_r, armchmp2_motor_command_w)      // Motor Limit Switches?
614   AM_RANGE(0x100014, 0x100015) AM_DEVREADWRITE8("oki1", okim6295_r, okim6295_w, 0x00ff   )         // Sound
615   AM_RANGE(0x100018, 0x100019) AM_DEVREADWRITE8("oki2", okim6295_r, okim6295_w, 0x00ff   )         //
697616ADDRESS_MAP_END
698617
699static ADDRESS_MAP_START( writemem_armchmp2, ADDRESS_SPACE_PROGRAM, 16 )
700    AM_RANGE(0x000000, 0x07ffff) AM_WRITE(SMH_ROM               )   // ROM
701   AM_RANGE(0x0f0000, 0x0fffff) AM_WRITE(SMH_RAM) AM_BASE(            &megasys1_ram         )   // Work RAM + Spriteram
702   AM_RANGE(0x082000, 0x082fff) AM_WRITE(scudhamm_vregs_w) AM_BASE(      &megasys1_vregs         )   // Video Registers + RAM
703   AM_RANGE(0x0a0000, 0x0a3fff) AM_WRITE(megasys1_scrollram_0_w) AM_BASE(   &megasys1_scrollram[0]   )   // Scroll RAM 0
704   AM_RANGE(0x0b0000, 0x0b3fff) AM_WRITE(megasys1_scrollram_2_w) AM_BASE(   &megasys1_scrollram[2]   )   // Scroll RAM 2
705   AM_RANGE(0x0b8000, 0x0bffff) AM_WRITE(scudhamm_paletteram16_w) AM_BASE(   &paletteram16         )   // Palette
706    AM_RANGE(0x100000, 0x100001) AM_WRITE(scudhamm_oki_bank_w      )   // Sound
707    AM_RANGE(0x100008, 0x100009) AM_WRITE(armchmp2_leds_w         )   // Leds + Coin Counters
708    AM_RANGE(0x10000c, 0x10000d) AM_WRITE(SMH_NOP               )   // ?
709   AM_RANGE(0x100010, 0x100011) AM_WRITE(armchmp2_motor_command_w   )   // Move Motor
710   AM_RANGE(0x100014, 0x100015) AM_DEVWRITE8("oki1", okim6295_w, 0x00ff      )   // Sound
711   AM_RANGE(0x100018, 0x100019) AM_DEVWRITE8("oki2", okim6295_w, 0x00ff      )   //
712ADDRESS_MAP_END
713618
714
715619/**************************************************************************
716620
717621
r4679r4680
724628                                Big Run
725629**************************************************************************/
726630
727static ADDRESS_MAP_START( bigrun_readmem2, ADDRESS_SPACE_PROGRAM, 16 )
728   AM_RANGE(0x000000, 0x03ffff) AM_READ(SMH_ROM      )   // ROM
729   AM_RANGE(0x0c0000, 0x0c3fff) AM_READ(SMH_RAM      )   // RAM
730   AM_RANGE(0x040000, 0x047fff) AM_READ(sharedram1_r   )   // Shared RAM (with Main CPU)
731   AM_RANGE(0x080000, 0x0807ff) AM_READ(SMH_RAM      )   // Road RAM
631static ADDRESS_MAP_START( bigrun_map2, ADDRESS_SPACE_PROGRAM, 16 )
632   AM_RANGE(0x000000, 0x03ffff) AM_ROM                            // ROM
633   AM_RANGE(0x040000, 0x047fff) AM_READWRITE(sharedram1_r, sharedram1_w)   // Shared RAM (with Main CPU)
634   AM_RANGE(0x080000, 0x0807ff) AM_RAM AM_BASE(&cischeat_roadram[0])      // Road RAM
635   AM_RANGE(0x0c0000, 0x0c3fff) AM_RAM                            // RAM
732636ADDRESS_MAP_END
733static ADDRESS_MAP_START( bigrun_writemem2, ADDRESS_SPACE_PROGRAM, 16 )
734   AM_RANGE(0x000000, 0x03ffff) AM_WRITE(SMH_ROM                     )   // ROM
735   AM_RANGE(0x0c0000, 0x0c3fff) AM_WRITE(SMH_RAM                     )   // RAM
736   /* 800 bytes tested: */
737   AM_RANGE(0x040000, 0x047fff) AM_WRITE(sharedram1_w                  )   // Shared RAM (with Main CPU)
738   AM_RANGE(0x080000, 0x0807ff) AM_WRITE(SMH_RAM) AM_BASE(&cischeat_roadram[0]   )   // Road RAM
739ADDRESS_MAP_END
740637
741
742static ADDRESS_MAP_START( bigrun_readmem3, ADDRESS_SPACE_PROGRAM, 16 )
743   AM_RANGE(0x000000, 0x03ffff) AM_READ(SMH_ROM      )   // ROM
744   AM_RANGE(0x0c0000, 0x0c3fff) AM_READ(SMH_RAM      )   // RAM
745   AM_RANGE(0x040000, 0x047fff) AM_READ(sharedram2_r   )   // Shared RAM (with Main CPU)
746   AM_RANGE(0x080000, 0x0807ff) AM_READ(SMH_RAM      )   // Road RAM
638static ADDRESS_MAP_START( bigrun_map3, ADDRESS_SPACE_PROGRAM, 16 )
639   AM_RANGE(0x000000, 0x03ffff) AM_ROM                              // ROM
640   AM_RANGE(0x040000, 0x047fff) AM_READWRITE(sharedram2_r, sharedram1_w)   // Shared RAM (with Main CPU)
641   AM_RANGE(0x080000, 0x0807ff) AM_RAM AM_BASE(&cischeat_roadram[1])      // Road RAM
642   AM_RANGE(0x0c0000, 0x0c3fff) AM_RAM                              // RAM
747643ADDRESS_MAP_END
748static ADDRESS_MAP_START( bigrun_writemem3, ADDRESS_SPACE_PROGRAM, 16 )
749   AM_RANGE(0x000000, 0x03ffff) AM_WRITE(SMH_ROM                     )   // ROM
750   AM_RANGE(0x0c0000, 0x0c3fff) AM_WRITE(SMH_RAM                     )   // RAM
751   AM_RANGE(0x040000, 0x047fff) AM_WRITE(sharedram2_w                  )   // Shared RAM (with Main CPU)
752   AM_RANGE(0x080000, 0x0807ff) AM_WRITE(SMH_RAM) AM_BASE(&cischeat_roadram[1]   )   // Road RAM
753ADDRESS_MAP_END
754644
755645
756646/**************************************************************************
757647                                Cisco Heat
758648**************************************************************************/
759649
760static ADDRESS_MAP_START( cischeat_readmem2, ADDRESS_SPACE_PROGRAM, 16 )
761   AM_RANGE(0x000000, 0x03ffff) AM_READ(SMH_ROM      )   // ROM
762   AM_RANGE(0x200000, 0x23ffff) AM_READ(rom_2_r      )   // ROM
763   AM_RANGE(0x0c0000, 0x0c3fff) AM_READ(SMH_RAM      )   // RAM
764   AM_RANGE(0x040000, 0x047fff) AM_READ(sharedram1_r   )   // Shared RAM (with Main CPU)
765   AM_RANGE(0x080000, 0x0807ff) AM_READ(SMH_RAM      )   // Road RAM
650static ADDRESS_MAP_START( cischeat_map2, ADDRESS_SPACE_PROGRAM, 16 )
651   AM_RANGE(0x000000, 0x03ffff) AM_ROM                              // ROM
652   AM_RANGE(0x040000, 0x047fff) AM_READWRITE(sharedram1_r, sharedram1_w)   // Shared RAM (with Main CPU)
653   AM_RANGE(0x080000, 0x0807ff) AM_RAM AM_BASE(&cischeat_roadram[0])      // Road RAM
654   AM_RANGE(0x0c0000, 0x0c3fff) AM_RAM                              // RAM
655   AM_RANGE(0x100000, 0x100001) AM_WRITE(SMH_NOP)                     // watchdog
656   AM_RANGE(0x200000, 0x23ffff) AM_READWRITE(rom_2_r, SMH_ROM)            // ROM
766657ADDRESS_MAP_END
767static ADDRESS_MAP_START( cischeat_writemem2, ADDRESS_SPACE_PROGRAM, 16 )
768   AM_RANGE(0x000000, 0x03ffff) AM_WRITE(SMH_ROM                     )   // ROM
769   AM_RANGE(0x200000, 0x23ffff) AM_WRITE(SMH_ROM                     )   // ROM
770   AM_RANGE(0x0c0000, 0x0c3fff) AM_WRITE(SMH_RAM                     )   // RAM
771   AM_RANGE(0x040000, 0x047fff) AM_WRITE(sharedram1_w                  )   // Shared RAM (with Main CPU)
772   AM_RANGE(0x080000, 0x0807ff) AM_WRITE(SMH_RAM) AM_BASE(&cischeat_roadram[0]   )   // Road RAM
773   AM_RANGE(0x100000, 0x100001) AM_WRITE(SMH_NOP                     )   // watchdog
774ADDRESS_MAP_END
775658
776static ADDRESS_MAP_START( cischeat_readmem3, ADDRESS_SPACE_PROGRAM, 16 )
777   AM_RANGE(0x000000, 0x03ffff) AM_READ(SMH_ROM      )   // ROM
778   AM_RANGE(0x200000, 0x23ffff) AM_READ(rom_3_r      )   // ROM
779   AM_RANGE(0x0c0000, 0x0c3fff) AM_READ(SMH_RAM      )   // RAM
780   AM_RANGE(0x040000, 0x047fff) AM_READ(sharedram2_r   )   // Shared RAM (with Main CPU)
781   AM_RANGE(0x080000, 0x0807ff) AM_READ(SMH_RAM      )   // Road RAM
659static ADDRESS_MAP_START( cischeat_map3, ADDRESS_SPACE_PROGRAM, 16 )
660   AM_RANGE(0x000000, 0x03ffff) AM_ROM                              // ROM
661   AM_RANGE(0x040000, 0x047fff) AM_READWRITE(sharedram2_r, sharedram2_w)   // Shared RAM (with Main CPU)
662   AM_RANGE(0x080000, 0x0807ff) AM_RAM AM_BASE(&cischeat_roadram[1])      // Road RAM
663   AM_RANGE(0x0c0000, 0x0c3fff) AM_RAM                              // RAM
664   AM_RANGE(0x100000, 0x100001) AM_WRITE(SMH_NOP)                     // watchdog
665   AM_RANGE(0x200000, 0x23ffff) AM_READWRITE(rom_3_r, SMH_ROM)            // ROM
782666ADDRESS_MAP_END
783static ADDRESS_MAP_START( cischeat_writemem3, ADDRESS_SPACE_PROGRAM, 16 )
784   AM_RANGE(0x000000, 0x03ffff) AM_WRITE(SMH_ROM                     )   // ROM
785   AM_RANGE(0x200000, 0x23ffff) AM_WRITE(SMH_ROM                     )   // ROM
786   AM_RANGE(0x0c0000, 0x0c3fff) AM_WRITE(SMH_RAM                     )   // RAM
787   AM_RANGE(0x040000, 0x047fff) AM_WRITE(sharedram2_w                  )   // Shared RAM (with Main CPU)
788   AM_RANGE(0x080000, 0x0807ff) AM_WRITE(SMH_RAM) AM_BASE(&cischeat_roadram[1]   )   // Road RAM
789   AM_RANGE(0x100000, 0x100001) AM_WRITE(SMH_NOP                     )   // watchdog
790ADDRESS_MAP_END
791667
792668
793669
r4679r4680
795671                            F1 GrandPrix Star
796672**************************************************************************/
797673
798static ADDRESS_MAP_START( f1gpstar_readmem2, ADDRESS_SPACE_PROGRAM, 16 )
799   AM_RANGE(0x000000, 0x03ffff) AM_READ(SMH_ROM      )   // ROM
800   AM_RANGE(0x180000, 0x183fff) AM_READ(SMH_RAM      )   // RAM
801   AM_RANGE(0x080000, 0x0807ff) AM_READ(sharedram1_r   )   // Shared RAM (with Main CPU)
802   AM_RANGE(0x100000, 0x1007ff) AM_READ(SMH_RAM      )   // Road RAM
674static ADDRESS_MAP_START( f1gpstar_map2, ADDRESS_SPACE_PROGRAM, 16 )
675   AM_RANGE(0x000000, 0x03ffff) AM_ROM                              // ROM
676   AM_RANGE(0x080000, 0x0807ff) AM_READWRITE(sharedram1_r, sharedram1_w)   // Shared RAM (with Main CPU)
677   AM_RANGE(0x100000, 0x1007ff) AM_RAM AM_BASE(&cischeat_roadram[0])      // Road RAM
678   AM_RANGE(0x180000, 0x183fff) AM_RAM                              // RAM
679   AM_RANGE(0x200000, 0x200001) AM_WRITE(SMH_NOP)                     // watchdog
803680ADDRESS_MAP_END
804static ADDRESS_MAP_START( f1gpstar_writemem2, ADDRESS_SPACE_PROGRAM, 16 )
805   AM_RANGE(0x000000, 0x03ffff) AM_WRITE(SMH_ROM                     )   // ROM
806   AM_RANGE(0x180000, 0x183fff) AM_WRITE(SMH_RAM                     )   // RAM
807   AM_RANGE(0x080000, 0x0807ff) AM_WRITE(sharedram1_w                  )   // Shared RAM (with Main CPU)
808   AM_RANGE(0x100000, 0x1007ff) AM_WRITE(SMH_RAM) AM_BASE(&cischeat_roadram[0]   )   // Road RAM
809   AM_RANGE(0x200000, 0x200001) AM_WRITE(SMH_NOP                     )   // watchdog
810ADDRESS_MAP_END
811681
812static ADDRESS_MAP_START( f1gpstar_readmem3, ADDRESS_SPACE_PROGRAM, 16 )
813   AM_RANGE(0x000000, 0x03ffff) AM_READ(SMH_ROM      )   // ROM
814   AM_RANGE(0x180000, 0x183fff) AM_READ(SMH_RAM      )   // RAM
815   AM_RANGE(0x080000, 0x0807ff) AM_READ(sharedram2_r   )   // Shared RAM (with Main CPU)
816   AM_RANGE(0x100000, 0x1007ff) AM_READ(SMH_RAM      )   // Road RAM
682static ADDRESS_MAP_START( f1gpstar_map3, ADDRESS_SPACE_PROGRAM, 16 )
683   AM_RANGE(0x000000, 0x03ffff) AM_ROM                              // ROM
684   AM_RANGE(0x080000, 0x0807ff) AM_READWRITE(sharedram2_r, sharedram2_w)   // Shared RAM (with Main CPU)
685   AM_RANGE(0x100000, 0x1007ff) AM_RAM AM_BASE(&cischeat_roadram[1])      // Road RAM
686   AM_RANGE(0x180000, 0x183fff) AM_RAM                              // RAM
687   AM_RANGE(0x200000, 0x200001) AM_WRITE(SMH_NOP)                     // watchdog
817688ADDRESS_MAP_END
818static ADDRESS_MAP_START( f1gpstar_writemem3, ADDRESS_SPACE_PROGRAM, 16 )
819   AM_RANGE(0x000000, 0x03ffff) AM_WRITE(SMH_ROM                     )   // ROM
820   AM_RANGE(0x180000, 0x183fff) AM_WRITE(SMH_RAM                     )   // RAM
821   AM_RANGE(0x080000, 0x0807ff) AM_WRITE(sharedram2_w                  )   // Shared RAM (with Main CPU)
822   AM_RANGE(0x100000, 0x1007ff) AM_WRITE(SMH_RAM) AM_BASE(&cischeat_roadram[1]   )   // Road RAM
823   AM_RANGE(0x200000, 0x200001) AM_WRITE(SMH_NOP                     )   // watchdog
824ADDRESS_MAP_END
825689
826690
827691/**************************************************************************
r4679r4680
848712   }
849713}
850714
851static ADDRESS_MAP_START( bigrun_sound_readmem, ADDRESS_SPACE_PROGRAM, 16 )
852   AM_RANGE(0x000000, 0x03ffff) AM_READ(SMH_ROM                  )   // ROM
853   AM_RANGE(0x0f0000, 0x0fffff) AM_READ(SMH_RAM                  )   // RAM
854   AM_RANGE(0x040000, 0x040001) AM_READ(soundlatch_word_r            )   // From Main CPU
855   AM_RANGE(0x080000, 0x080003) AM_DEVREAD8("ym", ym2151_r, 0x00ff )
856   AM_RANGE(0x0a0000, 0x0a0001) AM_DEVREAD8("oki1", okim6295_r, 0x00ff )
857   AM_RANGE(0x0c0000, 0x0c0001) AM_DEVREAD8("oki2", okim6295_r, 0x00ff )
715static ADDRESS_MAP_START( bigrun_sound_map, ADDRESS_SPACE_PROGRAM, 16 )
716   AM_RANGE(0x000000, 0x03ffff) AM_ROM                                       // ROM
717   AM_RANGE(0x040000, 0x040001) AM_READWRITE(soundlatch_word_r, bigrun_soundbank_w)   // From Main CPU
718   AM_RANGE(0x060000, 0x060001) AM_WRITE(soundlatch2_word_w)                     // To Main CPU
719   AM_RANGE(0x080000, 0x080003) AM_DEVREADWRITE8("ym", ym2151_r, ym2151_w, 0x00ff)
720   AM_RANGE(0x0a0000, 0x0a0001) AM_DEVREADWRITE8("oki1", okim6295_r, okim6295_w, 0x00ff)
721   AM_RANGE(0x0c0000, 0x0c0001) AM_DEVREADWRITE8("oki2", okim6295_r, okim6295_w, 0x00ff)
722   AM_RANGE(0x0f0000, 0x0fffff) AM_RAM                                       // RAM
858723ADDRESS_MAP_END
859724
860static ADDRESS_MAP_START( bigrun_sound_writemem, ADDRESS_SPACE_PROGRAM, 16 )
861   AM_RANGE(0x000000, 0x03ffff) AM_WRITE(SMH_ROM                  )   // ROM
862   AM_RANGE(0x0f0000, 0x0fffff) AM_WRITE(SMH_RAM                  )   // RAM
863   AM_RANGE(0x040000, 0x040001) AM_WRITE(bigrun_soundbank_w         )   // Sample Banking
864   AM_RANGE(0x060000, 0x060001) AM_WRITE(soundlatch2_word_w         )   // To Main CPU
865   AM_RANGE(0x080000, 0x080003) AM_DEVWRITE8("ym", ym2151_w, 0x00ff   )
866   AM_RANGE(0x0a0000, 0x0a0003) AM_DEVWRITE8("oki1", okim6295_w, 0x00ff   )
867   AM_RANGE(0x0c0000, 0x0c0003) AM_DEVWRITE8("oki2", okim6295_w, 0x00ff )
868ADDRESS_MAP_END
869725
870
871726/**************************************************************************
872727                                Cisco Heat
873728**************************************************************************/
r4679r4680
877732   if (ACCESSING_BITS_0_7)   okim6295_set_bank_base(device, 0x40000 * (data & 1) );
878733}
879734
880static ADDRESS_MAP_START( cischeat_sound_readmem, ADDRESS_SPACE_PROGRAM, 16 )
881   AM_RANGE(0x000000, 0x03ffff) AM_READ(SMH_ROM                  )   // ROM
882   AM_RANGE(0x0f0000, 0x0fffff) AM_READ(SMH_RAM                  )   // RAM
883   AM_RANGE(0x060004, 0x060005) AM_READ(soundlatch_word_r            )   // From Main CPU
884   AM_RANGE(0x080000, 0x080003) AM_DEVREAD8("ym", ym2151_r, 0x00ff )
885   AM_RANGE(0x0a0000, 0x0a0001) AM_DEVREAD8("oki1", okim6295_r, 0x00ff      )
886   AM_RANGE(0x0c0000, 0x0c0001) AM_DEVREAD8("oki2", okim6295_r, 0x00ff      )
735static ADDRESS_MAP_START( cischeat_sound_map, ADDRESS_SPACE_PROGRAM, 16 )
736   AM_RANGE(0x000000, 0x03ffff) AM_ROM                                       // ROM
737   AM_RANGE(0x040002, 0x040003) AM_DEVWRITE("oki1", cischeat_soundbank_w)            // Sample Banking
738   AM_RANGE(0x040004, 0x040005) AM_DEVWRITE("oki2", cischeat_soundbank_w)            // Sample Banking
739   AM_RANGE(0x060002, 0x060003) AM_WRITE(soundlatch2_word_w)                     // To Main CPU
740   AM_RANGE(0x060004, 0x060005) AM_READ(soundlatch_word_r)                        // From Main CPU
741   AM_RANGE(0x080000, 0x080003) AM_DEVREADWRITE8("ym", ym2151_r, ym2151_w, 0x00ff)
742   AM_RANGE(0x0a0000, 0x0a0003) AM_DEVREADWRITE8("oki1", okim6295_r, okim6295_w, 0x00ff)
743   AM_RANGE(0x0c0000, 0x0c0003) AM_DEVREADWRITE8("oki2", okim6295_r, okim6295_w, 0x00ff)
744   AM_RANGE(0x0f0000, 0x0fffff) AM_RAM                                       // RAM
887745ADDRESS_MAP_END
888746
889static ADDRESS_MAP_START( cischeat_sound_writemem, ADDRESS_SPACE_PROGRAM, 16 )
890   AM_RANGE(0x000000, 0x03ffff) AM_WRITE(SMH_ROM                  )   // ROM
891   AM_RANGE(0x0f0000, 0x0fffff) AM_WRITE(SMH_RAM                  )   // RAM
892   AM_RANGE(0x040002, 0x040003) AM_DEVWRITE("oki1", cischeat_soundbank_w      )   // Sample Banking
893   AM_RANGE(0x040004, 0x040005) AM_DEVWRITE("oki2", cischeat_soundbank_w      )   // Sample Banking
894   AM_RANGE(0x060002, 0x060003) AM_WRITE(soundlatch2_word_w         )   // To Main CPU
895   AM_RANGE(0x080000, 0x080003) AM_DEVWRITE8("ym", ym2151_w, 0x00ff )
896   AM_RANGE(0x0a0000, 0x0a0003) AM_DEVWRITE8("oki1", okim6295_w, 0x00ff         )
897   AM_RANGE(0x0c0000, 0x0c0003) AM_DEVWRITE8("oki2", okim6295_w, 0x00ff         )
898ADDRESS_MAP_END
899747
900
901748/**************************************************************************
902749                            F1 GrandPrix Star
903750**************************************************************************/
904751
905static ADDRESS_MAP_START( f1gpstar_sound_readmem, ADDRESS_SPACE_PROGRAM, 16 )
906   AM_RANGE(0x000000, 0x03ffff) AM_READ(SMH_ROM                  )   // ROM
907   AM_RANGE(0x0e0000, 0x0fffff) AM_READ(SMH_RAM                  )   // RAM              (cischeat: f0000-fffff)
908   AM_RANGE(0x060000, 0x060001) AM_READ(soundlatch_word_r            )   // From Main CPU    (cischeat: 60004)
909   AM_RANGE(0x080000, 0x080003) AM_DEVREAD8("ym", ym2151_r, 0x00ff )
910   AM_RANGE(0x0a0000, 0x0a0001) AM_DEVREAD8("oki1", okim6295_r, 0x00ff      )
911   AM_RANGE(0x0c0000, 0x0c0001) AM_DEVREAD8("oki2", okim6295_r, 0x00ff      )
752static ADDRESS_MAP_START( f1gpstar_sound_map, ADDRESS_SPACE_PROGRAM, 16 )
753   AM_RANGE(0x000000, 0x03ffff) AM_ROM                                       // ROM
754   AM_RANGE(0x040004, 0x040005) AM_DEVWRITE("oki1", cischeat_soundbank_w)            // Sample Banking   (cischeat: 40002)
755   AM_RANGE(0x040008, 0x040009) AM_DEVWRITE("oki2", cischeat_soundbank_w)            // Sample Banking   (cischeat: 40004)
756   AM_RANGE(0x060000, 0x060001) AM_READWRITE(soundlatch_word_r, soundlatch2_word_w)   // From Main CPU    (cischeat: 60004)
757   AM_RANGE(0x080000, 0x080003) AM_DEVREADWRITE8("ym", ym2151_r, ym2151_w, 0x00ff)
758   AM_RANGE(0x0a0000, 0x0a0003) AM_DEVREADWRITE8("oki1", okim6295_r, okim6295_w, 0x00ff)
759   AM_RANGE(0x0c0000, 0x0c0003) AM_DEVREADWRITE8("oki2", okim6295_r, okim6295_w, 0x00ff)
760   AM_RANGE(0x0e0000, 0x0fffff) AM_RAM                                       // RAM              (cischeat: f0000-fffff)
912761ADDRESS_MAP_END
913762
914static ADDRESS_MAP_START( f1gpstar_sound_writemem, ADDRESS_SPACE_PROGRAM, 16 )
915   AM_RANGE(0x000000, 0x03ffff) AM_WRITE(SMH_ROM                  )   // ROM
916   AM_RANGE(0x0e0000, 0x0fffff) AM_WRITE(SMH_RAM                  )   // RAM              (cischeat: f0000-fffff)
917   AM_RANGE(0x040004, 0x040005) AM_DEVWRITE("oki1", cischeat_soundbank_w      )   // Sample Banking   (cischeat: 40002)
918   AM_RANGE(0x040008, 0x040009) AM_DEVWRITE("oki2", cischeat_soundbank_w      )   // Sample Banking   (cischeat: 40004)
919   AM_RANGE(0x060000, 0x060001) AM_WRITE(soundlatch2_word_w         )   // To Main CPU      (cischeat: 60002)
920   AM_RANGE(0x080000, 0x080003) AM_DEVWRITE8("ym", ym2151_w, 0x00ff )
921   AM_RANGE(0x0a0000, 0x0a0003) AM_DEVWRITE8("oki1", okim6295_w, 0x00ff         )
922   AM_RANGE(0x0c0000, 0x0c0003) AM_DEVWRITE8("oki2", okim6295_w, 0x00ff         )
923ADDRESS_MAP_END
924763
925
926764/**************************************************************************
927765                            F1 GrandPrix Star II
928766**************************************************************************/
929767
930static ADDRESS_MAP_START( f1gpstr2_sound_readmem, ADDRESS_SPACE_PROGRAM, 16 )
931   AM_RANGE(0x000000, 0x03ffff) AM_READ(SMH_ROM                  )   // ROM
932   AM_RANGE(0x0e0000, 0x0fffff) AM_READ(SMH_RAM                  )   // RAM
933   AM_RANGE(0x060004, 0x060005) AM_READ(soundlatch_word_r            )   // From Main CPU    (f1gpstar: 60000)
934   AM_RANGE(0x080000, 0x080003) AM_DEVREAD8("ym", ym2151_r, 0x00ff )
935   AM_RANGE(0x0a0000, 0x0a0001) AM_DEVREAD8("oki1", okim6295_r, 0x00ff      )
936   AM_RANGE(0x0c0000, 0x0c0001) AM_DEVREAD8("oki2", okim6295_r, 0x00ff      )
768static ADDRESS_MAP_START( f1gpstr2_sound_map, ADDRESS_SPACE_PROGRAM, 16 )
769   AM_RANGE(0x000000, 0x03ffff) AM_ROM // ROM
770   AM_RANGE(0x040004, 0x040005) AM_DEVWRITE("oki1", cischeat_soundbank_w)               // Sample Banking
771   AM_RANGE(0x040008, 0x040009) AM_DEVWRITE("oki2", cischeat_soundbank_w)               // Sample Banking
772   AM_RANGE(0x04000e, 0x04000f) AM_WRITE(SMH_NOP)                                 // ? 0              (f1gpstar: no)
773   AM_RANGE(0x060004, 0x060005) AM_READWRITE(soundlatch_word_r, soundlatch2_word_w)      // From Main CPU    (f1gpstar: 60000)
774   AM_RANGE(0x080000, 0x080003) AM_DEVREADWRITE8("ym", ym2151_r, ym2151_w, 0x00ff)
775   AM_RANGE(0x0a0000, 0x0a0003) AM_DEVREADWRITE8("oki1", okim6295_r, okim6295_w, 0x00ff)
776   AM_RANGE(0x0c0000, 0x0c0003) AM_DEVREADWRITE8("oki2", okim6295_r, okim6295_w, 0x00ff)
777   AM_RANGE(0x0e0000, 0x0fffff) AM_RAM                                          // RAM
937778ADDRESS_MAP_END
938779
939static ADDRESS_MAP_START( f1gpstr2_sound_writemem, ADDRESS_SPACE_PROGRAM, 16 )
940   AM_RANGE(0x000000, 0x03ffff) AM_WRITE(SMH_ROM                  )   // ROM
941   AM_RANGE(0x0e0000, 0x0fffff) AM_WRITE(SMH_RAM                  )   // RAM
942   AM_RANGE(0x040004, 0x040005) AM_DEVWRITE("oki1", cischeat_soundbank_w)   // Sample Banking
943   AM_RANGE(0x040008, 0x040009) AM_DEVWRITE("oki2", cischeat_soundbank_w)   // Sample Banking
944   AM_RANGE(0x04000e, 0x04000f) AM_WRITE(SMH_NOP                  )   // ? 0              (f1gpstar: no)
945   AM_RANGE(0x060002, 0x060003) AM_WRITE(soundlatch2_word_w         )   // To Main CPU      (f1gpstar: 60000)
946   AM_RANGE(0x080000, 0x080003) AM_DEVWRITE8("ym", ym2151_w, 0x00ff )
947   AM_RANGE(0x0a0000, 0x0a0003) AM_DEVWRITE8("oki1", okim6295_w, 0x00ff         )
948   AM_RANGE(0x0c0000, 0x0c0003) AM_DEVWRITE8("oki2", okim6295_w, 0x00ff         )
949ADDRESS_MAP_END
950
951780/**************************************************************************
952781
953782
r4679r4680
959788static READ16_HANDLER ( f1gpstr2_io_r )   { return megasys1_vregs[offset + 0x1000/2]; }
960789static WRITE16_HANDLER( f1gpstr2_io_w )   { COMBINE_DATA(&megasys1_vregs[offset + 0x1000/2]); }
961790
962static ADDRESS_MAP_START( f1gpstr2_io_readmem, ADDRESS_SPACE_PROGRAM, 16 )
963   AM_RANGE(0x000000, 0x07ffff) AM_READ(SMH_ROM                  )   // ROM
964   AM_RANGE(0x180000, 0x183fff) AM_READ(SMH_RAM                  )   // RAM
965   AM_RANGE(0x080000, 0x080fff) AM_READ(f1gpstr2_io_r               )   //
791static ADDRESS_MAP_START( f1gpstr2_io_map, ADDRESS_SPACE_PROGRAM, 16 )
792   AM_RANGE(0x000000, 0x07ffff) AM_ROM                                 // ROM
793   AM_RANGE(0x080000, 0x080fff) AM_READWRITE(f1gpstr2_io_r, f1gpstr2_io_w)      //
794   AM_RANGE(0x100000, 0x100001) AM_WRITE(SMH_RAM) AM_BASE(&f1gpstr2_ioready)   //
795   AM_RANGE(0x180000, 0x183fff) AM_RAM                                 // RAM
796   AM_RANGE(0x200000, 0x200001) AM_WRITE(SMH_NOP)                        //
966797ADDRESS_MAP_END
967798
968static ADDRESS_MAP_START( f1gpstr2_io_writemem, ADDRESS_SPACE_PROGRAM, 16 )
969   AM_RANGE(0x000000, 0x07ffff) AM_WRITE(SMH_ROM                  )   // ROM
970   AM_RANGE(0x180000, 0x183fff) AM_WRITE(SMH_RAM                  )   // RAM
971   AM_RANGE(0x080000, 0x080fff) AM_WRITE(f1gpstr2_io_w               )   //
972   AM_RANGE(0x100000, 0x100001) AM_WRITE(SMH_RAM) AM_BASE(&f1gpstr2_ioready   )   //
973   AM_RANGE(0x200000, 0x200001) AM_WRITE(SMH_NOP                  )   //
974ADDRESS_MAP_END
975799
976
977800/***************************************************************************
978801
979802
r4679r4680
17551578
17561579   /* basic machine hardware */
17571580   MDRV_CPU_ADD("cpu1", M68000, 10000000)
1758   MDRV_CPU_PROGRAM_MAP(bigrun_readmem,bigrun_writemem)
1581   MDRV_CPU_PROGRAM_MAP(bigrun_map,0)
17591582   MDRV_CPU_VBLANK_INT_HACK(cischeat_interrupt,CISCHEAT_INTERRUPT_NUM)
17601583
17611584   MDRV_CPU_ADD("cpu2", M68000, 10000000)
1762   MDRV_CPU_PROGRAM_MAP(bigrun_readmem2,bigrun_writemem2)
1585   MDRV_CPU_PROGRAM_MAP(bigrun_map2,0)
17631586   MDRV_CPU_VBLANK_INT("screen", irq4_line_hold)
17641587
17651588   MDRV_CPU_ADD("cpu3", M68000, 10000000)
1766   MDRV_CPU_PROGRAM_MAP(bigrun_readmem3,bigrun_writemem3)
1589   MDRV_CPU_PROGRAM_MAP(bigrun_map3,0)
17671590   MDRV_CPU_VBLANK_INT("screen", irq4_line_hold)
17681591
17691592   MDRV_CPU_ADD("soundcpu", M68000, 6000000)
1770   MDRV_CPU_PROGRAM_MAP(bigrun_sound_readmem,bigrun_sound_writemem)
1593   MDRV_CPU_PROGRAM_MAP(bigrun_sound_map,0)
17711594   MDRV_CPU_VBLANK_INT_HACK(irq4_line_hold,CISCHEAT_SOUND_INTERRUPT_NUM)
17721595
17731596   MDRV_QUANTUM_TIME(HZ(1200))
r4679r4680
18101633   /* basic machine hardware */
18111634   MDRV_IMPORT_FROM(bigrun)
18121635   MDRV_CPU_MODIFY("cpu1")
1813   MDRV_CPU_PROGRAM_MAP(cischeat_readmem,cischeat_writemem)
1636   MDRV_CPU_PROGRAM_MAP(cischeat_map,0)
18141637
18151638   MDRV_CPU_MODIFY("cpu2")
1816   MDRV_CPU_PROGRAM_MAP(cischeat_readmem2,cischeat_writemem2)
1639   MDRV_CPU_PROGRAM_MAP(cischeat_map2,0)
18171640
18181641   MDRV_CPU_MODIFY("cpu3")
1819   MDRV_CPU_PROGRAM_MAP(cischeat_readmem3,cischeat_writemem3)
1642   MDRV_CPU_PROGRAM_MAP(cischeat_map3,0)
18201643
18211644   MDRV_CPU_MODIFY("soundcpu")
1822   MDRV_CPU_PROGRAM_MAP(cischeat_sound_readmem,cischeat_sound_writemem)
1645   MDRV_CPU_PROGRAM_MAP(cischeat_sound_map,0)
18231646
18241647   /* video hardware */
18251648   MDRV_SCREEN_MODIFY("screen")
r4679r4680
18381661   /* basic machine hardware */
18391662   MDRV_IMPORT_FROM(bigrun)
18401663   MDRV_CPU_REPLACE("cpu1", M68000, 12000000)
1841   MDRV_CPU_PROGRAM_MAP(f1gpstar_readmem,f1gpstar_writemem)
1664   MDRV_CPU_PROGRAM_MAP(f1gpstar_map,0)
18421665
18431666   MDRV_CPU_REPLACE("cpu2", M68000, 12000000)
1844   MDRV_CPU_PROGRAM_MAP(f1gpstar_readmem2,f1gpstar_writemem2)
1667   MDRV_CPU_PROGRAM_MAP(f1gpstar_map2,0)
18451668
18461669   MDRV_CPU_REPLACE("cpu3", M68000, 12000000)
1847   MDRV_CPU_PROGRAM_MAP(f1gpstar_readmem3,f1gpstar_writemem3)
1670   MDRV_CPU_PROGRAM_MAP(f1gpstar_map3,0)
18481671
18491672   MDRV_CPU_MODIFY("soundcpu")
1850   MDRV_CPU_PROGRAM_MAP(f1gpstar_sound_readmem,f1gpstar_sound_writemem)
1673   MDRV_CPU_PROGRAM_MAP(f1gpstar_sound_map,0)
18511674
18521675   /* video hardware */
18531676   MDRV_GFXDECODE(f1gpstar)
r4679r4680
18641687   MDRV_IMPORT_FROM(f1gpstar)
18651688
18661689   MDRV_CPU_MODIFY("cpu1")
1867   MDRV_CPU_PROGRAM_MAP(f1gpstr2_readmem,f1gpstr2_writemem)
1690   MDRV_CPU_PROGRAM_MAP(f1gpstr2_map,0)
18681691
18691692   MDRV_CPU_MODIFY("soundcpu")
1870   MDRV_CPU_PROGRAM_MAP(f1gpstr2_sound_readmem,f1gpstr2_sound_writemem)
1693   MDRV_CPU_PROGRAM_MAP(f1gpstr2_sound_map,0)
18711694
18721695   MDRV_CPU_ADD("cpu5", M68000, 12000000/* was 10000000 */)
1873   MDRV_CPU_PROGRAM_MAP(f1gpstr2_io_readmem,f1gpstr2_io_writemem)
1696   MDRV_CPU_PROGRAM_MAP(f1gpstr2_io_map,0)
18741697   MDRV_CPU_VBLANK_INT("screen", irq4_line_hold)
18751698MACHINE_DRIVER_END
18761699
r4679r4680
19011724
19021725   /* basic machine hardware */
19031726   MDRV_CPU_ADD("maincpu",M68000, 12000000)
1904   MDRV_CPU_PROGRAM_MAP(readmem_scudhamm,writemem_scudhamm)
1727   MDRV_CPU_PROGRAM_MAP(scudhamm_map,0)
19051728   MDRV_CPU_VBLANK_INT_HACK(interrupt_scudhamm,INTERRUPT_NUM_SCUDHAMM)
19061729
19071730   /* video hardware */
r4679r4680
19531776   /* basic machine hardware */
19541777   MDRV_IMPORT_FROM(scudhamm)
19551778   MDRV_CPU_MODIFY("maincpu")
1956   MDRV_CPU_PROGRAM_MAP(readmem_armchmp2,writemem_armchmp2)
1779   MDRV_CPU_PROGRAM_MAP(armchmp2_map,0)
19571780   MDRV_CPU_VBLANK_INT_HACK(interrupt_armchmp2,INTERRUPT_NUM_SCUDHAMM)
19581781
19591782MACHINE_DRIVER_END
r4679r4680
26972520
26982521static DRIVER_INIT( wildplt )
26992522{
2700   memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x080000, 0x087fff, 0, 0, wildplt_vregs_r );
2523   memory_install_read16_handler(cputag_get_address_space(machine, "cpu1", ADDRESS_SPACE_PROGRAM), 0x080000, 0x087fff, 0, 0, wildplt_vregs_r );
27012524
27022525   DRIVER_INIT_CALL(f1gpstar);
27032526}
src/mame/drivers/namcos22.c
r4679r4680
17721772      mRenderBufData[mRenderBufSize++] = data;
17731773      if( mRenderBufSize == MAX_RENDER_CMD_SEQ )
17741774      {
1775         namcos22_draw_direct_poly( mRenderBufData );
1775         namcos22_draw_direct_poly( space->machine, mRenderBufData );
17761776      }
17771777   }
17781778}
r4679r4680
20992099*/
21002100static TIMER_CALLBACK( start_subcpu )
21012101{
2102   cpu_set_input_line(machine->cpu[3], INPUT_LINE_RESET, CLEAR_LINE);
2102   cputag_set_input_line(machine, "mcu", INPUT_LINE_RESET, CLEAR_LINE);
21032103}
21042104
21052105static WRITE32_HANDLER( namcos22_system_controller_w )
r4679r4680
21362136      { /* SUBCPU enable for Super System 22 */
21372137         if (data)
21382138         {
2139            cpu_set_input_line(space->machine->cpu[3], INPUT_LINE_RESET, CLEAR_LINE);
2139            cputag_set_input_line(space->machine, "mcu", INPUT_LINE_RESET, CLEAR_LINE);
21402140         }
21412141         else
21422142         {
2143            cpu_set_input_line(space->machine->cpu[3],INPUT_LINE_RESET,ASSERT_LINE); /* M37710 MCU */
2143            cputag_set_input_line(space->machine, "mcu",INPUT_LINE_RESET,ASSERT_LINE); /* M37710 MCU */
21442144         }
21452145      }
21462146   }
r4679r4680
26012601            int i;
26022602            for (i = 0; i < 16; i++)
26032603            {
2604               generic_pulse_irq_line(space->machine->cpu[3], M37710_LINE_TIMERA3TICK);
2604               generic_pulse_irq_line(cputag_get_cpu(space->machine, "mcu"), M37710_LINE_TIMERA3TICK);
26052605            }
26062606         }
26072607
r4679r4680
50715071
50725072static void install_c74_speedup(running_machine *machine)
50735073{
5074   memory_install_readwrite16_handler(cpu_get_address_space(machine->cpu[3], ADDRESS_SPACE_PROGRAM), 0x80, 0x81, 0, 0, mcuc74_speedup_r, mcu_speedup_w);
5074   memory_install_readwrite16_handler(cputag_get_address_space(machine, "mcu", ADDRESS_SPACE_PROGRAM), 0x80, 0x81, 0, 0, mcuc74_speedup_r, mcu_speedup_w);
50755075}
50765076
50775077static void install_130_speedup(running_machine *machine)
50785078{
50795079   // install speedup cheat for 1.30 MCU BIOS
5080   memory_install_readwrite16_handler(cpu_get_address_space(machine->cpu[3], ADDRESS_SPACE_PROGRAM), 0x82, 0x83, 0, 0, mcu130_speedup_r, mcu_speedup_w);
5080   memory_install_readwrite16_handler(cputag_get_address_space(machine, "mcu", ADDRESS_SPACE_PROGRAM), 0x82, 0x83, 0, 0, mcu130_speedup_r, mcu_speedup_w);
50815081}
50825082
50835083static void install_141_speedup(running_machine *machine)
50845084{
50855085   // install speedup cheat for 1.41 MCU BIOS
5086   memory_install_readwrite16_handler(cpu_get_address_space(machine->cpu[3], ADDRESS_SPACE_PROGRAM), 0x82, 0x83, 0, 0, mcu141_speedup_r, mcu_speedup_w);
5086   memory_install_readwrite16_handler(cputag_get_address_space(machine, "mcu", ADDRESS_SPACE_PROGRAM), 0x82, 0x83, 0, 0, mcu141_speedup_r, mcu_speedup_w);
50875087}
50885088
5089static void namcos22_init( enum namcos22_gametype game_type )
5089static void namcos22_init( running_machine *machine, enum namcos22_gametype game_type )
50905090{
50915091   namcos22_gametype = game_type;
5092   mpPointRAM = auto_malloc(0x20000*sizeof(*mpPointRAM));
5092   mpPointRAM = auto_alloc_array(machine, UINT32, 0x20000);
50935093}
50945094
5095static void namcos22s_init( enum namcos22_gametype game_type )
5095static void namcos22s_init( running_machine *machine, enum namcos22_gametype game_type )
50965096{
5097   namcos22_init(game_type);
5098   mSpotRAM.RAM = auto_malloc(SPOTRAM_SIZE*2);
5097   namcos22_init(machine, game_type);
5098   mSpotRAM.RAM = auto_alloc_array(machine, UINT16, SPOTRAM_SIZE);
50995099}
51005100
51015101static DRIVER_INIT( alpiner )
51025102{
5103   namcos22s_init(NAMCOS22_ALPINE_RACER);
5103   namcos22s_init(machine, NAMCOS22_ALPINE_RACER);
51045104
5105   memory_install_read8_handler(cpu_get_address_space(machine->cpu[3], ADDRESS_SPACE_IO), M37710_ADC0_L, M37710_ADC7_H, 0, 0, alpineracer_mcu_adc_r);
5105   memory_install_read8_handler(cputag_get_address_space(machine, "mcu", ADDRESS_SPACE_IO), M37710_ADC0_L, M37710_ADC7_H, 0, 0, alpineracer_mcu_adc_r);
51065106
51075107   install_130_speedup(machine);
51085108}
51095109
51105110static DRIVER_INIT( alpiner2 )
51115111{
5112   namcos22s_init(NAMCOS22_ALPINE_RACER_2);
5112   namcos22s_init(machine, NAMCOS22_ALPINE_RACER_2);
51135113
5114   memory_install_read8_handler(cpu_get_address_space(machine->cpu[3], ADDRESS_SPACE_IO), M37710_ADC0_L, M37710_ADC7_H, 0, 0, alpineracer_mcu_adc_r);
5114   memory_install_read8_handler(cputag_get_address_space(machine, "mcu", ADDRESS_SPACE_IO), M37710_ADC0_L, M37710_ADC7_H, 0, 0, alpineracer_mcu_adc_r);
51155115
51165116   install_130_speedup(machine);
51175117}
51185118
51195119static DRIVER_INIT( alpinesa )
51205120{
5121   namcos22s_init(NAMCOS22_ALPINE_SURFER);
5121   namcos22s_init(machine, NAMCOS22_ALPINE_SURFER);
51225122
5123   memory_install_read8_handler(cpu_get_address_space(machine->cpu[3], ADDRESS_SPACE_IO), M37710_ADC0_L, M37710_ADC7_H, 0, 0, alpineracer_mcu_adc_r);
5123   memory_install_read8_handler(cputag_get_address_space(machine, "mcu", ADDRESS_SPACE_IO), M37710_ADC0_L, M37710_ADC7_H, 0, 0, alpineracer_mcu_adc_r);
51245124
51255125   install_141_speedup(machine);
51265126}
51275127
51285128static DRIVER_INIT( airco22 )
51295129{
5130   namcos22s_init(NAMCOS22_AIR_COMBAT22);
5130   namcos22s_init(machine, NAMCOS22_AIR_COMBAT22);
51315131
5132   memory_install_read8_handler(cpu_get_address_space(machine->cpu[3], ADDRESS_SPACE_IO), M37710_ADC0_L, M37710_ADC7_H, 0, 0, airco22_mcu_adc_r);
5132   memory_install_read8_handler(cputag_get_address_space(machine, "mcu", ADDRESS_SPACE_IO), M37710_ADC0_L, M37710_ADC7_H, 0, 0, airco22_mcu_adc_r);
51335133}
51345134
51355135static DRIVER_INIT( propcycl )
r4679r4680
51515151//   pROM[0x22296/4] &= 0xffff0000;
51525152//   pROM[0x22296/4] |= 0x00004e75;
51535153
5154   namcos22s_init(NAMCOS22_PROP_CYCLE);
5154   namcos22s_init(machine, NAMCOS22_PROP_CYCLE);
51555155
5156   memory_install_read8_handler(cpu_get_address_space(machine->cpu[3], ADDRESS_SPACE_IO), M37710_ADC0_L, M37710_ADC7_H, 0, 0, propcycle_mcu_adc_r);
5156   memory_install_read8_handler(cputag_get_address_space(machine, "mcu", ADDRESS_SPACE_IO), M37710_ADC0_L, M37710_ADC7_H, 0, 0, propcycle_mcu_adc_r);
51575157
51585158   install_141_speedup(machine);
51595159}
51605160
51615161static DRIVER_INIT( ridgeraj )
51625162{
5163   namcos22_init(NAMCOS22_RIDGE_RACER);
5163   namcos22_init(machine, NAMCOS22_RIDGE_RACER);
51645164
51655165   install_c74_speedup(machine);
51665166
r4679r4680
51705170
51715171static DRIVER_INIT( ridger2j )
51725172{
5173   namcos22_init(NAMCOS22_RIDGE_RACER2);
5173   namcos22_init(machine, NAMCOS22_RIDGE_RACER2);
51745174
51755175   install_c74_speedup(machine);
51765176
r4679r4680
51805180
51815181static DRIVER_INIT( acedrvr )
51825182{
5183   namcos22_init(NAMCOS22_ACE_DRIVER);
5183   namcos22_init(machine, NAMCOS22_ACE_DRIVER);
51845184
51855185   install_c74_speedup(machine);
51865186
r4679r4680
51905190
51915191static DRIVER_INIT( victlap )
51925192{
5193   namcos22_init(NAMCOS22_VICTORY_LAP);
5193   namcos22_init(machine, NAMCOS22_VICTORY_LAP);
51945194
51955195   install_c74_speedup(machine);
51965196
r4679r4680
52005200
52015201static DRIVER_INIT( raveracw )
52025202{
5203   namcos22_init(NAMCOS22_RAVE_RACER);
5203   namcos22_init(machine, NAMCOS22_RAVE_RACER);
52045204
52055205   install_c74_speedup(machine);
52065206
r4679r4680
52175217   pROM[0x18aec8/4] = 0x4e714e71;
52185218   pROM[0x18aefc/4] = 0x4e714e71;
52195219
5220   namcos22_init(NAMCOS22_CYBER_COMMANDO);
5220   namcos22_init(machine, NAMCOS22_CYBER_COMMANDO);
52215221
52225222   install_c74_speedup(machine);
52235223
r4679r4680
52325232   pROM[0x355C/4] &= 0x0000ffff;
52335233   pROM[0x355C/4] |= 0x4e710000;
52345234
5235   namcos22s_init(NAMCOS22_CYBER_CYCLES);
5235   namcos22s_init(machine, NAMCOS22_CYBER_CYCLES);
52365236
5237   memory_install_read8_handler(cpu_get_address_space(machine->cpu[3], ADDRESS_SPACE_IO), M37710_ADC0_L, M37710_ADC7_H, 0, 0, cybrcycc_mcu_adc_r);
5237   memory_install_read8_handler(cputag_get_address_space(machine, "mcu", ADDRESS_SPACE_IO), M37710_ADC0_L, M37710_ADC7_H, 0, 0, cybrcycc_mcu_adc_r);
52385238
52395239   install_130_speedup(machine);
52405240}
52415241
52425242static DRIVER_INIT( timecris )
52435243{
5244   namcos22s_init(NAMCOS22_TIME_CRISIS);
5244   namcos22s_init(machine, NAMCOS22_TIME_CRISIS);
52455245
52465246   // install_130_speedup(machine); // with speed up the SUBCPU START WAIT test fails
52475247}
src/mame/drivers/flyball.c
r4679r4680
3131   int potsense = param;
3232
3333   if (potsense & ~flyball_potmask)
34      generic_pulse_irq_line(machine->cpu[0], 0);
34      generic_pulse_irq_line(cputag_get_cpu(machine, "maincpu"), 0);
3535
3636   flyball_potsense |= potsense;
3737}
r4679r4680
7373
7474   for (i = 0; i < 0x1000; i++)
7575      rombase[i] = ROM[i ^ 0x1ff];
76   device_reset(machine->cpu[0]);
76   device_reset(cputag_get_cpu(machine, "maincpu"));
7777
7878   timer_set(machine, video_screen_get_time_until_pos(machine->primary_screen, 0, 0), NULL, 0, flyball_quarter_callback);
7979}
src/mame/drivers/redclash.c
r4679r4680
3838extern VIDEO_UPDATE( redclash );
3939extern VIDEO_EOF( redclash );
4040
41/*
42  This game doesn't have VBlank interrupts.
43  Interrupts are still used, but they are related to coin
44  slots. Left slot generates an IRQ, Right slot a NMI.
45*/
46static INTERRUPT_GEN( redclash_interrupt )
47{
48   if (input_port_read(device->machine, "FAKE") & 1)   /* Left Coin */
49      cpu_set_input_line(device,0,ASSERT_LINE);
50   else if (input_port_read(device->machine, "FAKE") & 2)   /* Right Coin */
51      cpu_set_input_line(device, INPUT_LINE_NMI, PULSE_LINE);
52}
5341
42
5443static WRITE8_HANDLER( irqack_w )
5544{
56   cpu_set_input_line(space->machine->cpu[0],0,CLEAR_LINE);
45   cputag_set_input_line(space->machine, "maincpu", 0, CLEAR_LINE);
5746}
5847
5948
60
61static ADDRESS_MAP_START( zero_readmem, ADDRESS_SPACE_PROGRAM, 8 )
62   AM_RANGE(0x0000, 0x2fff) AM_READ(SMH_ROM)
63   AM_RANGE(0x3000, 0x37ff) AM_READ(SMH_RAM)
49static ADDRESS_MAP_START( zerohour_map, ADDRESS_SPACE_PROGRAM, 8 )
50   AM_RANGE(0x0000, 0x2fff) AM_ROM
51   AM_RANGE(0x3000, 0x37ff) AM_RAM
52   AM_RANGE(0x3800, 0x3bff) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
53   AM_RANGE(0x4000, 0x43ff) AM_RAM_WRITE(redclash_videoram_w) AM_BASE(&videoram)
6454   AM_RANGE(0x4800, 0x4800) AM_READ_PORT("IN0")   /* IN0 */
6555   AM_RANGE(0x4801, 0x4801) AM_READ_PORT("IN1")   /* IN1 */
6656   AM_RANGE(0x4802, 0x4802) AM_READ_PORT("DSW1")   /* DSW0 */
6757   AM_RANGE(0x4803, 0x4803) AM_READ_PORT("DSW2")   /* DSW1 */
68   AM_RANGE(0x4000, 0x43ff) AM_READ(SMH_RAM)      /* video RAM */
69ADDRESS_MAP_END
70
71static ADDRESS_MAP_START( zero_writemem, ADDRESS_SPACE_PROGRAM, 8 )
72   AM_RANGE(0x0000, 0x2fff) AM_WRITE(SMH_ROM)
73   AM_RANGE(0x3000, 0x37ff) AM_WRITE(SMH_RAM)
74   AM_RANGE(0x3800, 0x3bff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
75   AM_RANGE(0x4000, 0x43ff) AM_WRITE(redclash_videoram_w) AM_BASE(&videoram)
7658   AM_RANGE(0x5000, 0x5007) AM_WRITENOP   /* to sound board */
7759   AM_RANGE(0x5800, 0x5800) AM_WRITE(redclash_star0_w)
7860   AM_RANGE(0x5801, 0x5804) AM_WRITENOP   /* to sound board */
r4679r4680
8365   AM_RANGE(0x7800, 0x7800) AM_WRITE(irqack_w)
8466ADDRESS_MAP_END
8567
86static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 )
87   AM_RANGE(0x0000, 0x2fff) AM_READ(SMH_ROM)
68static ADDRESS_MAP_START( redclash_map, ADDRESS_SPACE_PROGRAM, 8 )
69   AM_RANGE(0x0000, 0x2fff) AM_ROM
70//  AM_RANGE(0x3000, 0x3000) AM_WRITENOP
71//  AM_RANGE(0x3800, 0x3800) AM_WRITENOP
72   AM_RANGE(0x4000, 0x43ff) AM_RAM_WRITE(redclash_videoram_w) AM_BASE(&videoram)
8873   AM_RANGE(0x4800, 0x4800) AM_READ_PORT("IN0")   /* IN0 */
8974   AM_RANGE(0x4801, 0x4801) AM_READ_PORT("IN1")   /* IN1 */
9075   AM_RANGE(0x4802, 0x4802) AM_READ_PORT("DSW1")   /* DSW0 */
9176   AM_RANGE(0x4803, 0x4803) AM_READ_PORT("DSW2")   /* DSW1 */
92   AM_RANGE(0x4000, 0x43ff) AM_READ(SMH_RAM)      /* video RAM */
93   AM_RANGE(0x6000, 0x67ff) AM_READ(SMH_RAM)
94ADDRESS_MAP_END
95
96static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 )
97   AM_RANGE(0x0000, 0x2fff) AM_WRITE(SMH_ROM)
98//  AM_RANGE(0x3000, 0x3000) AM_WRITENOP
99//  AM_RANGE(0x3800, 0x3800) AM_WRITENOP
100   AM_RANGE(0x4000, 0x43ff) AM_WRITE(redclash_videoram_w) AM_BASE(&videoram)
10177   AM_RANGE(0x5000, 0x5007) AM_WRITENOP   /* to sound board */
10278   AM_RANGE(0x5800, 0x5800) AM_WRITE(redclash_star0_w)
10379   AM_RANGE(0x5801, 0x5801) AM_WRITE(redclash_gfxbank_w)
10480   AM_RANGE(0x5805, 0x5805) AM_WRITE(redclash_star1_w)
10581   AM_RANGE(0x5806, 0x5806) AM_WRITE(redclash_star2_w)
10682   AM_RANGE(0x5807, 0x5807) AM_WRITE(redclash_flipscreen_w)
107   AM_RANGE(0x6000, 0x67ff) AM_WRITE(SMH_RAM)
108   AM_RANGE(0x6800, 0x6bff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
83   AM_RANGE(0x6000, 0x67ff) AM_RAM
84   AM_RANGE(0x6800, 0x6bff) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
10985   AM_RANGE(0x7000, 0x7000) AM_WRITE(redclash_star_reset_w)
11086   AM_RANGE(0x7800, 0x7800) AM_WRITE(irqack_w)
11187ADDRESS_MAP_END
11288
89/*
90  This game doesn't have VBlank interrupts.
91  Interrupts are still used, but they are related to coin
92  slots. Left slot generates an IRQ, Right slot a NMI.
93*/
94static INPUT_CHANGED( left_coin_inserted )
95{
96   if(newval)
97      cputag_set_input_line(field->port->machine, "maincpu", 0, ASSERT_LINE);
98}
11399
100static INPUT_CHANGED( right_coin_inserted )
101{
102   if(newval)
103      cputag_set_input_line(field->port->machine, "maincpu", INPUT_LINE_NMI, PULSE_LINE);
104}
114105
115106static INPUT_PORTS_START( redclash )
116107   PORT_START("IN0")   /* IN0 */
r4679r4680
201192   /* handler to be notified of coin insertions. We use IMPULSE to */
202193   /* trigger exactly one interrupt, without having to check when the */
203194   /* user releases the key. */
204   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 ) PORT_IMPULSE(1)
205   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_COIN2 ) PORT_IMPULSE(1)
195   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 ) PORT_IMPULSE(1) PORT_CHANGED(left_coin_inserted, 0)
196   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_COIN2 ) PORT_IMPULSE(1) PORT_CHANGED(right_coin_inserted, 0)
206197INPUT_PORTS_END
207198
208199static INPUT_PORTS_START( zerohour )
r4679r4680
276267   /* handler to be notified of coin insertions. We use IMPULSE to */
277268   /* trigger exactly one interrupt, without having to check when the */
278269   /* user releases the key. */
279   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 ) PORT_IMPULSE(1)
280   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_COIN2 ) PORT_IMPULSE(1)
270   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 ) PORT_IMPULSE(1) PORT_CHANGED(left_coin_inserted, 0)
271   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_COIN2 ) PORT_IMPULSE(1) PORT_CHANGED(right_coin_inserted, 0)
281272INPUT_PORTS_END
282273
283274static const gfx_layout charlayout =
r4679r4680
350341
351342   /* basic machine hardware */
352343   MDRV_CPU_ADD("maincpu", Z80, 4000000)  /* 4 MHz */
353   MDRV_CPU_PROGRAM_MAP(zero_readmem,zero_writemem)
354   MDRV_CPU_VBLANK_INT("screen", redclash_interrupt)
344   MDRV_CPU_PROGRAM_MAP(zerohour_map,0)
355345
356346   /* video hardware */
357347   MDRV_SCREEN_ADD("screen", RASTER)
r4679r4680
377367
378368   /* basic machine hardware */
379369   MDRV_CPU_ADD("maincpu", Z80, 4000000)  /* 4 MHz */
380   MDRV_CPU_PROGRAM_MAP(readmem,writemem)
381   MDRV_CPU_VBLANK_INT("screen", redclash_interrupt)
370   MDRV_CPU_PROGRAM_MAP(redclash_map,0)
382371
383372   /* video hardware */
384373   MDRV_SCREEN_ADD("screen", RASTER)
src/mame/drivers/vicdual.c
r4679r4680
9797      coin_counter_w(0, 1);
9898      coin_counter_w(0, 0);
9999
100      cpu_set_input_line(field->port->machine->cpu[0], INPUT_LINE_RESET, PULSE_LINE);
100      cputag_set_input_line(field->port->machine, "maincpu", INPUT_LINE_RESET, PULSE_LINE);
101101
102102      /* simulate the coin switch being closed for a while */
103103      timer_set(field->port->machine, double_to_attotime(4 * attotime_to_double(video_screen_get_frame_period(field->port->machine->primary_screen))), NULL, 0, clear_coin_status);
r4679r4680
362362static WRITE8_HANDLER( safari_io_w )
363363{
364364   if (offset & 0x01)  assert_coin_status();
365   if (offset & 0x02) /* safari_audio_w(0, data) */;
365   if (offset & 0x02) { /* safari_audio_w(0, data) */ }
366366}
367367
368368
r4679r4680
567567{
568568   if (offset & 0x01)  assert_coin_status();
569569   if (offset & 0x02)  headon_audio_w(space, 0, data);
570   if (offset & 0x04) /* vicdual_palette_bank_w(0, data)  */;    /* not written to */
570   if (offset & 0x04) { /* vicdual_palette_bank_w(0, data)  */ }    /* not written to */
571571}
572572
573573
r4679r4680
759759   if (offset & 0x01)  assert_coin_status();
760760   if (offset & 0x02)  headon_audio_w(space, 0, data);
761761   if (offset & 0x04)  vicdual_palette_bank_w(space, 0, data);
762    if (offset & 0x08)  ;/* schematics show this as going into a shifer circuit, but never written to */
763    if (offset & 0x10)  ;/* schematics show this as going to an edge connector, but never written to */
762    if (offset & 0x08) { /* schematics show this as going into a shifer circuit, but never written to */ }
763    if (offset & 0x10) { /* schematics show this as going to an edge connector, but never written to */ }
764764   if (offset & 0x18)  logerror("********* Write to port %x\n", offset);
765765}
766766
r4679r4680
768768static WRITE8_HANDLER( digger_io_w )
769769{
770770   if (offset & 0x01)  assert_coin_status();
771   if (offset & 0x02) /* digger_audio_1_w(0, data) */;
771   if (offset & 0x02) { /* digger_audio_1_w(0, data) */ }
772772   if (offset & 0x04)
773773   {
774774      vicdual_palette_bank_w(space, 0, data & 0x03);
775      /* digger_audio_2_w(0, data & 0xfc) */;
775      /* digger_audio_2_w(0, data & 0xfc); */
776776   }
777777
778    if (offset & 0x08)  ;/* schematics show this as going into a shifer circuit, but never written to */
779    if (offset & 0x10)  ;/* schematics show this as going to an edge connector, but never written to */
778    if (offset & 0x08) { /* schematics show this as going into a shifer circuit, but never written to */ }
779    if (offset & 0x10) { /* schematics show this as going to an edge connector, but never written to */ }
780780   if (offset & 0x18)  logerror("********* Write to port %x\n", offset);
781781}
782782
r4679r4680
972972static WRITE8_HANDLER( invds_io_w )
973973{
974974   if (offset & 0x01)  invinco_audio_w(space, 0, data);
975   if (offset & 0x02) /* deepscan_audio_w(0, data) */;
975   if (offset & 0x02) { /* deepscan_audio_w(0, data) */ }
976976   if (offset & 0x08)  assert_coin_status();
977977   if (offset & 0x40)  vicdual_palette_bank_w(space, 0, data);
978978}
r4679r4680
981981static WRITE8_HANDLER( sspacaho_io_w )
982982{
983983   if (offset & 0x01)  invho2_audio_w(space, 0, data);
984   if (offset & 0x02) /* sspaceatt_audio_w(space, 0, data) */;
984   if (offset & 0x02) { /* sspaceatt_audio_w(space, 0, data) */ }
985985   if (offset & 0x08)  assert_coin_status();
986986   if (offset & 0x40)  vicdual_palette_bank_w(space, 0, data);
987987}
r4679r4680
989989
990990static WRITE8_HANDLER( tranqgun_io_w )
991991{
992   if (offset & 0x01) /* tranqgun_audio_w(space, 0, data) */;
992   if (offset & 0x01) { /* tranqgun_audio_w(space, 0, data) */ }
993993   if (offset & 0x02)  vicdual_palette_bank_w(space, 0, data);
994994   if (offset & 0x08)  assert_coin_status();
995995}
r4679r4680
997997
998998static WRITE8_HANDLER( spacetrk_io_w )
999999{
1000   if (offset & 0x01)  /* spacetrk_audio_w(space, 0, data) */;
1001   if (offset & 0x02)  /* spacetrk_audio_w(space, 0, data) */;
1000   if (offset & 0x01) { /* spacetrk_audio_w(space, 0, data) */ }
1001   if (offset & 0x02) { /* spacetrk_audio_w(space, 0, data) */ }
10021002   if (offset & 0x08)  assert_coin_status();
10031003   if (offset & 0x40)  vicdual_palette_bank_w(space, 0, data);
10041004}
r4679r4680
10151015
10161016static WRITE8_HANDLER( brdrline_io_w )
10171017{
1018   if (offset & 0x01) /* brdrline_audio_w(space, 0, data) */;
1018   if (offset & 0x01) { /* brdrline_audio_w(space, 0, data) */ }
10191019   if (offset & 0x02)  vicdual_palette_bank_w(space, 0, data);
10201020   if (offset & 0x08)  assert_coin_status();
10211021}
r4679r4680
10321032
10331033static WRITE8_HANDLER( heiankyo_io_w )
10341034{
1035   if (offset & 0x01) /* heiankyo_audio_1_w(0, data) */;
1035   if (offset & 0x01) { /* heiankyo_audio_1_w(0, data) */ }
10361036
10371037   if (offset & 0x02)
10381038   {
10391039      vicdual_palette_bank_w(space, 0, data & 0x03);
1040      /* heiankyo_audio_2_w(0, data & 0xfc) */;
1040      /* heiankyo_audio_2_w(0, data & 0xfc); */
10411041   }
10421042
10431043   if (offset & 0x08)  assert_coin_status();
r4679r4680
10461046
10471047static WRITE8_HANDLER( alphaho_io_w )
10481048{
1049   if (offset & 0x01)  /* headon_audio_w(0, data) */;
1050   if (offset & 0x02)  /* alphaf_audio_w(0, data) */;
1049   if (offset & 0x01) { /* headon_audio_w(0, data) */ }
1050   if (offset & 0x02) { /* alphaf_audio_w(0, data) */ }
10511051   if (offset & 0x08)  assert_coin_status();
10521052   if (offset & 0x40)  vicdual_palette_bank_w(space, 0, data);
10531053}
r4679r4680
19891989
19901990static WRITE8_HANDLER( samurai_io_w )
19911991{
1992   if (offset & 0x02) /* samurai_audio_w(0, data) */;
1992   if (offset & 0x02) { /* samurai_audio_w(0, data) */ }
19931993   if (offset & 0x08)  assert_coin_status();
19941994   if (offset & 0x40)  vicdual_palette_bank_w(space, 0, data);
19951995}
r4679r4680
21082108static WRITE8_HANDLER( nsub_io_w )
21092109{
21102110   if (offset & 0x01)  assert_coin_status();
2111   if (offset & 0x02) /* nsub_audio_w(0, data) */;
2111   if (offset & 0x02) { /* nsub_audio_w(0, data) */ }
21122112   if (offset & 0x04)  vicdual_palette_bank_w(space, 0, data);
21132113}
21142114
src/mame/drivers/xybots.c
r4679r4680
3333
3434static void update_interrupts(running_machine *machine)
3535{
36   cpu_set_input_line(machine->cpu[0], 1, atarigen_video_int_state ? ASSERT_LINE : CLEAR_LINE);
37   cpu_set_input_line(machine->cpu[0], 2, atarigen_sound_int_state ? ASSERT_LINE : CLEAR_LINE);
36   cputag_set_input_line(machine, "maincpu", 1, atarigen_video_int_state ? ASSERT_LINE : CLEAR_LINE);
37   cputag_set_input_line(machine, "maincpu", 2, atarigen_sound_int_state ? ASSERT_LINE : CLEAR_LINE);
3838}
3939
4040
r4679r4680
384384static DRIVER_INIT( xybots )
385385{
386386   atarigen_eeprom_default = NULL;
387   atarigen_slapstic_init(machine->cpu[0], 0x008000, 0, 107);
387   atarigen_slapstic_init(cputag_get_cpu(machine, "maincpu"), 0x008000, 0, 107);
388388   atarijsa_init(machine, "FFE200", 0x0100);
389389}
390390
src/mame/drivers/galaxold.c
r4679r4680
394394}
395395
396396
397static ADDRESS_MAP_START( galaxold_readmem, ADDRESS_SPACE_PROGRAM, 8 )
398   AM_RANGE(0x0000, 0x3fff) AM_READ(SMH_ROM)
399   AM_RANGE(0x4000, 0x47ff) AM_READ(SMH_RAM)
400   AM_RANGE(0x5000, 0x53ff) AM_READ(SMH_RAM)
397static ADDRESS_MAP_START( galaxold_map, ADDRESS_SPACE_PROGRAM, 8 )
398   AM_RANGE(0x0000, 0x3fff) AM_ROM
399   AM_RANGE(0x4000, 0x47ff) AM_RAM
400   AM_RANGE(0x5000, 0x53ff) AM_RAM_WRITE(galaxold_videoram_w) AM_BASE(&galaxold_videoram)
401401   AM_RANGE(0x5400, 0x57ff) AM_READ(galaxold_videoram_r)
402   AM_RANGE(0x5800, 0x58ff) AM_READ(SMH_RAM)
402   AM_RANGE(0x5800, 0x583f) AM_RAM_WRITE(galaxold_attributesram_w) AM_BASE(&galaxold_attributesram)
403   AM_RANGE(0x5840, 0x585f) AM_RAM AM_BASE(&galaxold_spriteram) AM_SIZE(&galaxold_spriteram_size)
404   AM_RANGE(0x5860, 0x587f) AM_RAM AM_BASE(&galaxold_bulletsram) AM_SIZE(&galaxold_bulletsram_size)
405   AM_RANGE(0x5880, 0x58ff) AM_RAM
403406   AM_RANGE(0x6000, 0x6000) AM_READ_PORT("IN0")
404   AM_RANGE(0x6800, 0x6800) AM_READ_PORT("IN1")
405   AM_RANGE(0x7000, 0x7000) AM_READ_PORT("IN2")
406   AM_RANGE(0x7800, 0x7fff) AM_READ(watchdog_reset_r)
407   AM_RANGE(0xfffc, 0xffff) AM_READ(SMH_RAM)
408ADDRESS_MAP_END
409
410static ADDRESS_MAP_START( galaxold_writemem, ADDRESS_SPACE_PROGRAM, 8 )
411   AM_RANGE(0x0000, 0x3fff) AM_WRITE(SMH_ROM)
412   AM_RANGE(0x4000, 0x47ff) AM_WRITE(SMH_RAM)
413   AM_RANGE(0x5000, 0x53ff) AM_WRITE(galaxold_videoram_w) AM_BASE(&galaxold_videoram)
414   AM_RANGE(0x5800, 0x583f) AM_WRITE(galaxold_attributesram_w) AM_BASE(&galaxold_attributesram)
415   AM_RANGE(0x5840, 0x585f) AM_WRITE(SMH_RAM) AM_BASE(&galaxold_spriteram) AM_SIZE(&galaxold_spriteram_size)
416   AM_RANGE(0x5860, 0x587f) AM_WRITE(SMH_RAM) AM_BASE(&galaxold_bulletsram) AM_SIZE(&galaxold_bulletsram_size)
417   AM_RANGE(0x5880, 0x58ff) AM_WRITE(SMH_RAM)
418407   AM_RANGE(0x6000, 0x6001) AM_WRITE(galaxold_leds_w)
419408   AM_RANGE(0x6002, 0x6002) AM_WRITE(galaxold_coin_lockout_w)
420409   AM_RANGE(0x6003, 0x6003) AM_WRITE(galaxold_coin_counter_w)
421410   AM_RANGE(0x6004, 0x6007) AM_WRITE(galaxian_lfo_freq_w)
411   AM_RANGE(0x6800, 0x6800) AM_READ_PORT("IN1")
422412   AM_RANGE(0x6800, 0x6802) AM_WRITE(galaxian_background_enable_w)
423413   AM_RANGE(0x6803, 0x6803) AM_WRITE(galaxian_noise_enable_w)
424414   AM_RANGE(0x6805, 0x6805) AM_WRITE(galaxian_shoot_enable_w)
425415   AM_RANGE(0x6806, 0x6807) AM_WRITE(galaxian_vol_w)
416   AM_RANGE(0x7000, 0x7000) AM_READ_PORT("IN2")
426417   AM_RANGE(0x7001, 0x7001) AM_WRITE(galaxold_nmi_enable_w)
427418   AM_RANGE(0x7004, 0x7004) AM_WRITE(galaxold_stars_enable_w)
428419   AM_RANGE(0x7006, 0x7006) AM_WRITE(galaxold_flip_screen_x_w)
429420   AM_RANGE(0x7007, 0x7007) AM_WRITE(galaxold_flip_screen_y_w)
421   AM_RANGE(0x7800, 0x7fff) AM_READ(watchdog_reset_r)
430422   AM_RANGE(0x7800, 0x7800) AM_WRITE(galaxian_pitch_w)
431   AM_RANGE(0xfffc, 0xffff) AM_WRITE(SMH_RAM)
423   AM_RANGE(0xfffc, 0xffff) AM_RAM
432424ADDRESS_MAP_END
433425
434426
435static ADDRESS_MAP_START( mooncrst_readmem, ADDRESS_SPACE_PROGRAM, 8 )
436   AM_RANGE(0x0000, 0x5fff) AM_READ(SMH_ROM)
437   AM_RANGE(0x8000, 0x87ff) AM_READ(SMH_RAM)
438   AM_RANGE(0x9000, 0x93ff) AM_READ(SMH_RAM)
427static ADDRESS_MAP_START( mooncrst_map, ADDRESS_SPACE_PROGRAM, 8 )
428   AM_RANGE(0x0000, 0x5fff) AM_ROM
429   AM_RANGE(0x8000, 0x87ff) AM_RAM
430   AM_RANGE(0x9000, 0x93ff) AM_WRITE(galaxold_videoram_w) AM_BASE(&galaxold_videoram)
439431   AM_RANGE(0x9400, 0x97ff) AM_READ(galaxold_videoram_r)
440   AM_RANGE(0x9800, 0x98ff) AM_READ(SMH_RAM)
432   AM_RANGE(0x9800, 0x983f) AM_RAM_WRITE(galaxold_attributesram_w) AM_BASE(&galaxold_attributesram)
433   AM_RANGE(0x9840, 0x985f) AM_RAM AM_BASE(&galaxold_spriteram) AM_SIZE(&galaxold_spriteram_size)
434   AM_RANGE(0x9860, 0x987f) AM_RAM AM_BASE(&galaxold_bulletsram) AM_SIZE(&galaxold_bulletsram_size)
435   AM_RANGE(0x9880, 0x98ff) AM_RAM
441436   AM_RANGE(0xa000, 0xa000) AM_READ_PORT("IN0")
442   AM_RANGE(0xa800, 0xa800) AM_READ_PORT("IN1")
443   AM_RANGE(0xb000, 0xb000) AM_READ_PORT("DSW0")
444   AM_RANGE(0xb800, 0xb800) AM_READ(watchdog_reset_r)
445ADDRESS_MAP_END
446
447static ADDRESS_MAP_START( mooncrst_writemem, ADDRESS_SPACE_PROGRAM, 8 )
448   AM_RANGE(0x0000, 0x5fff) AM_WRITE(SMH_ROM)
449   AM_RANGE(0x8000, 0x87ff) AM_WRITE(SMH_RAM)
450   AM_RANGE(0x9000, 0x93ff) AM_WRITE(galaxold_videoram_w) AM_BASE(&galaxold_videoram)
451   AM_RANGE(0x9800, 0x983f) AM_WRITE(galaxold_attributesram_w) AM_BASE(&galaxold_attributesram)
452   AM_RANGE(0x9840, 0x985f) AM_WRITE(SMH_RAM) AM_BASE(&galaxold_spriteram) AM_SIZE(&galaxold_spriteram_size)
453   AM_RANGE(0x9860, 0x987f) AM_WRITE(SMH_RAM) AM_BASE(&galaxold_bulletsram) AM_SIZE(&galaxold_bulletsram_size)
454   AM_RANGE(0x9880, 0x98ff) AM_WRITE(SMH_RAM)
455437   AM_RANGE(0xa003, 0xa003) AM_WRITE(galaxold_coin_counter_w)
456438   AM_RANGE(0xa004, 0xa007) AM_WRITE(galaxian_lfo_freq_w)
439   AM_RANGE(0xa800, 0xa800) AM_READ_PORT("IN1")
457440   AM_RANGE(0xa800, 0xa802) AM_WRITE(galaxian_background_enable_w)
458441   AM_RANGE(0xa803, 0xa803) AM_WRITE(galaxian_noise_enable_w)
459442   AM_RANGE(0xa805, 0xa805) AM_WRITE(galaxian_shoot_enable_w)
460443   AM_RANGE(0xa806, 0xa807) AM_WRITE(galaxian_vol_w)
461   AM_RANGE(0xb000, 0xb000) AM_WRITE(galaxold_nmi_enable_w)
444   AM_RANGE(0xb000, 0xb000) AM_READ_PORT("DSW0") AM_WRITE(galaxold_nmi_enable_w)
462445   AM_RANGE(0xb004, 0xb004) AM_WRITE(galaxold_stars_enable_w)
463446   AM_RANGE(0xb006, 0xb006) AM_WRITE(galaxold_flip_screen_x_w)
464447   AM_RANGE(0xb007, 0xb007) AM_WRITE(galaxold_flip_screen_y_w)
465   AM_RANGE(0xb800, 0xb800) AM_WRITE(galaxian_pitch_w)
448   AM_RANGE(0xb800, 0xb800) AM_READWRITE(watchdog_reset_r, galaxian_pitch_w)
466449ADDRESS_MAP_END
467450
468static ADDRESS_MAP_START( rockclim_readmem, ADDRESS_SPACE_PROGRAM, 8 )
469   AM_RANGE(0x0000, 0x3fff) AM_READ(SMH_ROM)
470   AM_RANGE(0x4000, 0x47ff) AM_READ(rockclim_videoram_r)
471   AM_RANGE(0x5000, 0x53ff) AM_READ(SMH_RAM)
472   AM_RANGE(0x6000, 0x7fff) AM_READ(SMH_ROM)
473   AM_RANGE(0x8000, 0x87ff) AM_READ(SMH_RAM)
451static ADDRESS_MAP_START( rockclim_map, ADDRESS_SPACE_PROGRAM, 8 )
452   AM_RANGE(0x0000, 0x3fff) AM_ROM
453   AM_RANGE(0x4000, 0x47ff) AM_READWRITE(rockclim_videoram_r, rockclim_videoram_w) AM_BASE(&rockclim_videoram)//4800 - 4803 = bg scroll ?
454   AM_RANGE(0x4800, 0x4803) AM_WRITE(rockclim_scroll_w)
455   AM_RANGE(0x5000, 0x53ff) AM_RAM //?
456   AM_RANGE(0x6000, 0x7fff) AM_ROM
457   AM_RANGE(0x8000, 0x87ff) AM_RAM
474458   AM_RANGE(0x8800, 0x8800) AM_READ_PORT("DSW1")
475   AM_RANGE(0x9000, 0x93ff) AM_READ(SMH_RAM)
459   AM_RANGE(0x9000, 0x93ff) AM_RAM_WRITE(galaxold_videoram_w) AM_BASE(&galaxold_videoram)
476460   AM_RANGE(0x9400, 0x97ff) AM_READ(galaxold_videoram_r)
477   AM_RANGE(0x9800, 0x98ff) AM_READ(SMH_RAM)
461   AM_RANGE(0x9800, 0x983f) AM_RAM_WRITE(galaxold_attributesram_w) AM_BASE(&galaxold_attributesram)
462   AM_RANGE(0x9840, 0x985f) AM_RAM AM_BASE(&galaxold_spriteram) AM_SIZE(&galaxold_spriteram_size)
463   AM_RANGE(0x9860, 0x987f) AM_RAM AM_BASE(&galaxold_bulletsram) AM_SIZE(&galaxold_bulletsram_size)
464   AM_RANGE(0x9880, 0x98ff) AM_RAM
478465   AM_RANGE(0xa000, 0xa000) AM_READ_PORT("IN0")
479   AM_RANGE(0xa800, 0xa800) AM_READ_PORT("IN1")
480   AM_RANGE(0xb000, 0xb000) AM_READ_PORT("DSW0")
481   AM_RANGE(0xb800, 0xb800) AM_READ(watchdog_reset_r)
482ADDRESS_MAP_END
483
484static ADDRESS_MAP_START( rockclim_writemem, ADDRESS_SPACE_PROGRAM, 8 )
485   AM_RANGE(0x0000, 0x3fff) AM_WRITE(SMH_ROM)
486   AM_RANGE(0x4000, 0x47ff) AM_WRITE(rockclim_videoram_w) AM_BASE(&rockclim_videoram)//4800 - 4803 = bg scroll ?
487   AM_RANGE(0x4800, 0x4803) AM_WRITE(rockclim_scroll_w)
488   AM_RANGE(0x5000, 0x53ff) AM_WRITE(SMH_RAM)//?
489   AM_RANGE(0x6000, 0x7fff) AM_WRITE(SMH_ROM)
490   AM_RANGE(0x8000, 0x87ff) AM_WRITE(SMH_RAM)
491   AM_RANGE(0x9000, 0x93ff) AM_WRITE(galaxold_videoram_w) AM_BASE(&galaxold_videoram)
492   AM_RANGE(0x9800, 0x983f) AM_WRITE(galaxold_attributesram_w) AM_BASE(&galaxold_attributesram)
493   AM_RANGE(0x9840, 0x985f) AM_WRITE(SMH_RAM) AM_BASE(&galaxold_spriteram) AM_SIZE(&galaxold_spriteram_size)
494   AM_RANGE(0x9860, 0x987f) AM_WRITE(SMH_RAM) AM_BASE(&galaxold_bulletsram) AM_SIZE(&galaxold_bulletsram_size)
495   AM_RANGE(0x9880, 0x98ff) AM_WRITE(SMH_RAM)
496466   AM_RANGE(0xa000, 0xa002) AM_WRITE(galaxold_gfxbank_w)// a002 - sprite bank
497467   AM_RANGE(0xa003, 0xa003) AM_WRITE(galaxold_coin_counter_w)
498468   AM_RANGE(0xa004, 0xa007) AM_WRITE(galaxian_lfo_freq_w)
469   AM_RANGE(0xa800, 0xa800) AM_READ_PORT("IN1")
499470   AM_RANGE(0xa800, 0xa802) AM_WRITE(galaxian_background_enable_w)
500471   AM_RANGE(0xa803, 0xa803) AM_WRITE(galaxian_noise_enable_w)
501472   AM_RANGE(0xa805, 0xa805) AM_WRITE(galaxian_shoot_enable_w)
502473   AM_RANGE(0xa806, 0xa807) AM_WRITE(galaxian_vol_w)
503   AM_RANGE(0xb000, 0xb000) AM_WRITE(galaxold_nmi_enable_w)
474   AM_RANGE(0xb000, 0xb000) AM_READ_PORT("DSW0") AM_WRITE(galaxold_nmi_enable_w)
504475   AM_RANGE(0xb006, 0xb006) AM_WRITE(galaxold_flip_screen_x_w)
505476   AM_RANGE(0xb007, 0xb007) AM_WRITE(galaxold_flip_screen_y_w)
506   AM_RANGE(0xb800, 0xb800) AM_WRITE(galaxian_pitch_w)
477   AM_RANGE(0xb800, 0xb800) AM_READWRITE(watchdog_reset_r, galaxian_pitch_w)
507478ADDRESS_MAP_END
508479
509
510static ADDRESS_MAP_START( scramblb_readmem, ADDRESS_SPACE_PROGRAM, 8 )
511   AM_RANGE(0x0000, 0x3fff) AM_READ(SMH_ROM)
512   AM_RANGE(0x4000, 0x4bff) AM_READ(SMH_RAM)
513   AM_RANGE(0x5000, 0x50ff) AM_READ(SMH_RAM)
480static ADDRESS_MAP_START( scramblb_map, ADDRESS_SPACE_PROGRAM, 8 )
481   AM_RANGE(0x0000, 0x3fff) AM_ROM
482   AM_RANGE(0x4000, 0x47ff) AM_RAM
483   AM_RANGE(0x4800, 0x4bff) AM_RAM_WRITE(galaxold_videoram_w) AM_BASE(&galaxold_videoram)
484   AM_RANGE(0x5000, 0x503f) AM_RAM_WRITE(galaxold_attributesram_w) AM_BASE(&galaxold_attributesram)
485   AM_RANGE(0x5040, 0x505f) AM_RAM AM_BASE(&galaxold_spriteram) AM_SIZE(&galaxold_spriteram_size)
486   AM_RANGE(0x5060, 0x507f) AM_RAM AM_BASE(&galaxold_bulletsram) AM_SIZE(&galaxold_bulletsram_size)
487   AM_RANGE(0x5080, 0x50ff) AM_RAM
514488   AM_RANGE(0x6000, 0x6000) AM_READ_PORT("IN0")
515   AM_RANGE(0x6800, 0x6800) AM_READ_PORT("IN1")
516   AM_RANGE(0x7000, 0x7000) AM_READ_PORT("IN2")
517   AM_RANGE(0x7800, 0x7800) AM_READ(watchdog_reset_r)
518   AM_RANGE(0x8102, 0x8102) AM_READ(scramblb_protection_1_r)
519   AM_RANGE(0x8202, 0x8202) AM_READ(scramblb_protection_2_r)
520ADDRESS_MAP_END
521
522static ADDRESS_MAP_START( scramblb_writemem, ADDRESS_SPACE_PROGRAM, 8 )
523   AM_RANGE(0x0000, 0x3fff) AM_WRITE(SMH_ROM)
524   AM_RANGE(0x4000, 0x47ff) AM_WRITE(SMH_RAM)
525   AM_RANGE(0x4800, 0x4bff) AM_WRITE(galaxold_videoram_w) AM_BASE(&galaxold_videoram)
526   AM_RANGE(0x5000, 0x503f) AM_WRITE(galaxold_attributesram_w) AM_BASE(&galaxold_attributesram)
527   AM_RANGE(0x5040, 0x505f) AM_WRITE(SMH_RAM) AM_BASE(&galaxold_spriteram) AM_SIZE(&galaxold_spriteram_size)
528   AM_RANGE(0x5060, 0x507f) AM_WRITE(SMH_RAM) AM_BASE(&galaxold_bulletsram) AM_SIZE(&galaxold_bulletsram_size)
529   AM_RANGE(0x5080, 0x50ff) AM_WRITE(SMH_RAM)
530489   AM_RANGE(0x6000, 0x6001) AM_WRITENOP  /* sound triggers */
531490   AM_RANGE(0x6003, 0x6003) AM_WRITE(galaxold_coin_counter_w)
532491   AM_RANGE(0x6004, 0x6007) AM_WRITE(galaxian_lfo_freq_w)
492   AM_RANGE(0x6800, 0x6800) AM_READ_PORT("IN1")
533493   AM_RANGE(0x6800, 0x6802) AM_WRITE(galaxian_background_enable_w)
534494   AM_RANGE(0x6803, 0x6803) AM_WRITE(galaxian_noise_enable_w)
535495   AM_RANGE(0x6805, 0x6805) AM_WRITE(galaxian_shoot_enable_w)
536496   AM_RANGE(0x6806, 0x6807) AM_WRITE(galaxian_vol_w)
497   AM_RANGE(0x7000, 0x7000) AM_READ_PORT("IN2")
537498   AM_RANGE(0x7001, 0x7001) AM_WRITE(galaxold_nmi_enable_w)
538499   AM_RANGE(0x7002, 0x7002) AM_WRITE(galaxold_coin_counter_w)
539500   AM_RANGE(0x7003, 0x7003) AM_WRITE(scrambold_background_enable_w)
540501   AM_RANGE(0x7004, 0x7004) AM_WRITE(galaxold_stars_enable_w)
541502   AM_RANGE(0x7006, 0x7006) AM_WRITE(galaxold_flip_screen_x_w)
542503   AM_RANGE(0x7007, 0x7007) AM_WRITE(galaxold_flip_screen_y_w)
543   AM_RANGE(0x7800, 0x7800) AM_WRITE(galaxian_pitch_w)
504   AM_RANGE(0x7800, 0x7800) AM_READWRITE(watchdog_reset_r, galaxian_pitch_w)
505   AM_RANGE(0x8102, 0x8102) AM_READ(scramblb_protection_1_r)
506   AM_RANGE(0x8202, 0x8202) AM_READ(scramblb_protection_2_r)
544507ADDRESS_MAP_END
545508
546509
r4679r4680
550513static READ8_HANDLER( scramb2_port1_r ) { return (input_port_read(space->machine, "IN1") >> offset) & 0x1; }
551514static READ8_HANDLER( scramb2_port2_r ) { return (input_port_read(space->machine, "IN2") >> offset) & 0x1; }
552515
553static ADDRESS_MAP_START( scramb2_readmem, ADDRESS_SPACE_PROGRAM, 8 )
554   AM_RANGE(0x0000, 0x3fff) AM_READ(SMH_ROM)
555   AM_RANGE(0x4000, 0x4bff) AM_READ(SMH_RAM)
556   AM_RANGE(0x5000, 0x50ff) AM_READ(SMH_RAM)
516static ADDRESS_MAP_START( scramb2_map, ADDRESS_SPACE_PROGRAM, 8 )
517   AM_RANGE(0x0000, 0x3fff) AM_ROM
518   AM_RANGE(0x4000, 0x47ff) AM_RAM
519   AM_RANGE(0x4800, 0x4bff) AM_RAM_WRITE(galaxold_videoram_w) AM_BASE(&galaxold_videoram)
520   AM_RANGE(0x4c00, 0x4fff) AM_WRITE(galaxold_videoram_w) // mirror
521   AM_RANGE(0x5000, 0x503f) AM_RAM_WRITE(galaxold_attributesram_w) AM_BASE(&galaxold_attributesram)
522   AM_RANGE(0x5040, 0x505f) AM_RAM AM_BASE(&galaxold_spriteram) AM_SIZE(&galaxold_spriteram_size)
523   AM_RANGE(0x5060, 0x507f) AM_RAM AM_BASE(&galaxold_bulletsram) AM_SIZE(&galaxold_bulletsram_size)
524   AM_RANGE(0x5080, 0x50ff) AM_RAM
557525   AM_RANGE(0x5800, 0x5fff) AM_READ(scramb2_protection_r) // must return 0x25
558526   AM_RANGE(0x6000, 0x6007) AM_READ(scramb2_port0_r) // reads from 8 addresses, 1 bit per address
559527   AM_RANGE(0x6800, 0x6807) AM_READ(scramb2_port1_r) // reads from 8 addresses, 1 bit per address
560   AM_RANGE(0x7000, 0x7007) AM_READ(watchdog_reset_r)
561   AM_RANGE(0x7800, 0x7807) AM_READ(scramb2_port2_r) // reads from 8 addresses, 1 bit per address
562ADDRESS_MAP_END
563
564static ADDRESS_MAP_START( scramb2_writemem, ADDRESS_SPACE_PROGRAM, 8 )
565   AM_RANGE(0x0000, 0x3fff) AM_WRITE(SMH_ROM)
566   AM_RANGE(0x4000, 0x47ff) AM_WRITE(SMH_RAM)
567   AM_RANGE(0x4800, 0x4bff) AM_WRITE(galaxold_videoram_w) AM_BASE(&galaxold_videoram)
568   AM_RANGE(0x4c00, 0x4fff) AM_WRITE(galaxold_videoram_w) // mirror
569   AM_RANGE(0x5000, 0x503f) AM_WRITE(galaxold_attributesram_w) AM_BASE(&galaxold_attributesram)
570   AM_RANGE(0x5040, 0x505f) AM_WRITE(SMH_RAM) AM_BASE(&galaxold_spriteram) AM_SIZE(&galaxold_spriteram_size)
571   AM_RANGE(0x5060, 0x507f) AM_WRITE(SMH_RAM) AM_BASE(&galaxold_bulletsram) AM_SIZE(&galaxold_bulletsram_size)
572   AM_RANGE(0x5080, 0x50ff) AM_WRITE(SMH_RAM)
573528   AM_RANGE(0x6801, 0x6801) AM_WRITE(galaxold_nmi_enable_w)
574529   AM_RANGE(0x6802, 0x6802) AM_WRITE(galaxold_coin_counter_w)
575530   AM_RANGE(0x6804, 0x6804) AM_WRITE(galaxold_stars_enable_w)
576531   AM_RANGE(0x6806, 0x6806) AM_WRITE(galaxold_flip_screen_x_w)
577532   AM_RANGE(0x6807, 0x6807) AM_WRITE(galaxold_flip_screen_y_w)
533   AM_RANGE(0x7000, 0x7007) AM_READ(watchdog_reset_r)
578534   AM_RANGE(0x7006, 0x7006) AM_WRITENOP
579535   AM_RANGE(0x7007, 0x7007) AM_WRITENOP
536   AM_RANGE(0x7800, 0x7807) AM_READ(scramb2_port2_r) // reads from 8 addresses, 1 bit per address
580537   AM_RANGE(0x7800, 0x7800) AM_WRITE(galaxian_pitch_w)
581538ADDRESS_MAP_END
582539
583540
584541
585static ADDRESS_MAP_START( _4in1_readmem, ADDRESS_SPACE_PROGRAM, 8 )
586   AM_RANGE(0x0000, 0x3fff) AM_READ(SMH_BANK1)   /* banked game code */
587   AM_RANGE(0x4000, 0x47ff) AM_READ(SMH_RAM)
588   AM_RANGE(0x5000, 0x53ff) AM_READ(SMH_RAM)
542static ADDRESS_MAP_START( _4in1_map, ADDRESS_SPACE_PROGRAM, 8 )
543   AM_RANGE(0x0000, 0x3fff) AM_ROMBANK(1)   /* banked game code */
544   AM_RANGE(0x4000, 0x47ff) AM_RAM
545   AM_RANGE(0x5000, 0x53ff) AM_RAM_WRITE(galaxold_videoram_w) AM_BASE(&galaxold_videoram)
589546   AM_RANGE(0x5400, 0x57ff) AM_READ(galaxold_videoram_r)
590   AM_RANGE(0x5800, 0x58ff) AM_READ(SMH_RAM)
547   AM_RANGE(0x5800, 0x583f) AM_RAM_WRITE(galaxold_attributesram_w) AM_BASE(&galaxold_attributesram)
548   AM_RANGE(0x5840, 0x585f) AM_RAM AM_BASE(&galaxold_spriteram) AM_SIZE(&galaxold_spriteram_size)
549   AM_RANGE(0x5860, 0x587f) AM_RAM AM_BASE(&galaxold_bulletsram) AM_SIZE(&galaxold_bulletsram_size)
550   AM_RANGE(0x5880, 0x58ff) AM_RAM
591551   AM_RANGE(0x6000, 0x6000) AM_READ_PORT("IN0")
592   AM_RANGE(0x6800, 0x6800) AM_READ_PORT("IN1")
593   AM_RANGE(0x7000, 0x7000) AM_READ_PORT("DSW0")
594   AM_RANGE(0x7800, 0x78ff) AM_READ(watchdog_reset_r)
595   AM_RANGE(0xc000, 0xdfff) AM_READ(SMH_ROM)   /* fixed menu code */
596ADDRESS_MAP_END
597
598static ADDRESS_MAP_START( _4in1_writemem, ADDRESS_SPACE_PROGRAM, 8 )
599   AM_RANGE(0x0000, 0x3fff) AM_WRITE(SMH_ROM)   /* banked game code */
600   AM_RANGE(0x4000, 0x47ff) AM_WRITE(SMH_RAM)
601   AM_RANGE(0x5000, 0x53ff) AM_WRITE(galaxold_videoram_w) AM_BASE(&galaxold_videoram)
602   AM_RANGE(0x5800, 0x583f) AM_WRITE(galaxold_attributesram_w) AM_BASE(&galaxold_attributesram)
603   AM_RANGE(0x5840, 0x585f) AM_WRITE(SMH_RAM) AM_BASE(&galaxold_spriteram) AM_SIZE(&galaxold_spriteram_size)
604   AM_RANGE(0x5860, 0x587f) AM_WRITE(SMH_RAM) AM_BASE(&galaxold_bulletsram) AM_SIZE(&galaxold_bulletsram_size)
605   AM_RANGE(0x5880, 0x58ff) AM_WRITE(SMH_RAM)
606552   AM_RANGE(0x6000, 0x6001) AM_WRITE(galaxold_leds_w)
607553//  AM_RANGE(0x6002, 0x6002) AM_WRITE(galaxold_coin_lockout_w)
608554   AM_RANGE(0x6003, 0x6003) AM_WRITE(galaxold_coin_counter_w)
609555   AM_RANGE(0x6004, 0x6007) AM_WRITE(galaxian_lfo_freq_w)
556   AM_RANGE(0x6800, 0x6800) AM_READ_PORT("IN1")
610557   AM_RANGE(0x6800, 0x6802) AM_WRITE(galaxian_background_enable_w)
611558//  AM_RANGE(0x6803, 0x6803) AM_WRITE(galaxian_noise_enable_w) /* not hooked up? */
612559   AM_RANGE(0x6805, 0x6805) AM_WRITE(galaxian_shoot_enable_w)
613560   AM_RANGE(0x6806, 0x6807) AM_WRITE(galaxian_vol_w)
561   AM_RANGE(0x7000, 0x7000) AM_READ_PORT("DSW0")
614562   AM_RANGE(0x7001, 0x7001) AM_WRITE(galaxold_nmi_enable_w)
615563   AM_RANGE(0x7004, 0x7004) AM_WRITE(galaxold_stars_enable_w)
616564   AM_RANGE(0x7006, 0x7006) AM_WRITE(galaxold_flip_screen_x_w)
617565   AM_RANGE(0x7007, 0x7007) AM_WRITE(galaxold_flip_screen_y_w)
618   AM_RANGE(0x7800, 0x7800) AM_WRITE(galaxian_pitch_w)
566   AM_RANGE(0x7800, 0x78ff) AM_READWRITE(watchdog_reset_r, galaxian_pitch_w)
619567   AM_RANGE(0x8000, 0x8000) AM_WRITE(_4in1_bank_w)
620   AM_RANGE(0xc000, 0xdfff) AM_WRITE(SMH_ROM) /* Fixed Menu Code */
568   AM_RANGE(0xc000, 0xdfff) AM_ROM      /* fixed menu code */
621569ADDRESS_MAP_END
622570
623571
624static ADDRESS_MAP_START( bagmanmc_readmem, ADDRESS_SPACE_PROGRAM, 8 )
625   AM_RANGE(0x0000, 0x5fff) AM_READ(SMH_ROM)
626   AM_RANGE(0x6000, 0x67ff) AM_READ(SMH_RAM)
627   AM_RANGE(0x9000, 0x93ff) AM_READ(SMH_RAM)
572static ADDRESS_MAP_START( bagmanmc_map, ADDRESS_SPACE_PROGRAM, 8 )
573   AM_RANGE(0x0000, 0x5fff) AM_ROM
574   AM_RANGE(0x6000, 0x67ff) AM_RAM
575   AM_RANGE(0x9000, 0x93ff) AM_RAM_WRITE(galaxold_videoram_w) AM_BASE(&galaxold_videoram)
628576   AM_RANGE(0x9400, 0x97ff) AM_READ(galaxold_videoram_r)
629   AM_RANGE(0x9800, 0x98ff) AM_READ(SMH_RAM)
577   AM_RANGE(0x9800, 0x983f) AM_RAM_WRITE(galaxold_attributesram_w) AM_BASE(&galaxold_attributesram)
578   AM_RANGE(0x9840, 0x985f) AM_RAM AM_BASE(&galaxold_spriteram) AM_SIZE(&galaxold_spriteram_size)
579   AM_RANGE(0x9860, 0x987f) AM_RAM AM_BASE(&galaxold_bulletsram) AM_SIZE(&galaxold_bulletsram_size)
580   AM_RANGE(0x9880, 0x98ff) AM_RAM
630581   AM_RANGE(0xa000, 0xa000) AM_READ_PORT("IN0")
631   AM_RANGE(0xa800, 0xa800) AM_READ_PORT("IN1")
632   AM_RANGE(0xb000, 0xb000) AM_READ_PORT("DSW")
633   AM_RANGE(0xb800, 0xb800) AM_READ(watchdog_reset_r)
634ADDRESS_MAP_END
635
636static ADDRESS_MAP_START( bagmanmc_writemem, ADDRESS_SPACE_PROGRAM, 8 )
637   AM_RANGE(0x0000, 0x5fff) AM_WRITE(SMH_ROM)
638   AM_RANGE(0x6000, 0x67ff) AM_WRITE(SMH_RAM)
639   AM_RANGE(0x9000, 0x93ff) AM_WRITE(galaxold_videoram_w) AM_BASE(&galaxold_videoram)
640   AM_RANGE(0x9800, 0x983f) AM_WRITE(galaxold_attributesram_w) AM_BASE(&galaxold_attributesram)
641   AM_RANGE(0x9840, 0x985f) AM_WRITE(SMH_RAM) AM_BASE(&galaxold_spriteram) AM_SIZE(&galaxold_spriteram_size)
642   AM_RANGE(0x9860, 0x987f) AM_WRITE(SMH_RAM) AM_BASE(&galaxold_bulletsram) AM_SIZE(&galaxold_bulletsram_size)
643   AM_RANGE(0x9880, 0x98ff) AM_WRITE(SMH_RAM)
644582   AM_RANGE(0xa003, 0xa003) AM_WRITE(galaxold_coin_counter_w)
583   AM_RANGE(0xa800, 0xa800) AM_READ_PORT("IN1")
645584   AM_RANGE(0xa803, 0xa803) AM_WRITE(galaxian_noise_enable_w)
585   AM_RANGE(0xb000, 0xb000) AM_READ_PORT("DSW")
646586   AM_RANGE(0xb001, 0xb001) AM_WRITE(galaxold_nmi_enable_w)
647587   AM_RANGE(0xb006, 0xb006) AM_WRITE(galaxold_flip_screen_x_w)
648588   AM_RANGE(0xb007, 0xb007) AM_WRITE(galaxold_flip_screen_y_w)
649   AM_RANGE(0xb800, 0xb800) AM_WRITE(galaxian_pitch_w)
589   AM_RANGE(0xb800, 0xb800) AM_READWRITE(watchdog_reset_r, galaxian_pitch_w)
650590ADDRESS_MAP_END
651591
652static ADDRESS_MAP_START( dkongjrm_readmem, ADDRESS_SPACE_PROGRAM, 8 )
653   AM_RANGE(0x0000, 0x5fff) AM_READ(SMH_ROM)
654   AM_RANGE(0x6000, 0x6fff) AM_READ(SMH_RAM)
655   AM_RANGE(0x7000, 0x7fff) AM_READ(SMH_ROM)
656   AM_RANGE(0x9000, 0x93ff) AM_READ(SMH_RAM)
657   AM_RANGE(0xa000, 0xa0ff) AM_READ_PORT("IN0")
658   AM_RANGE(0xa800, 0xa8ff) AM_READ_PORT("IN1")
659   AM_RANGE(0xb000, 0xb0ff) AM_READ_PORT("IN2")
660   AM_RANGE(0xb800, 0xb800) AM_READ(watchdog_reset_r)
661ADDRESS_MAP_END
662
663static ADDRESS_MAP_START( dkongjrm_writemem, ADDRESS_SPACE_PROGRAM, 8 )
664   AM_RANGE(0x0000, 0x5fff) AM_WRITE(SMH_ROM)
665   AM_RANGE(0x6000, 0x6fff) AM_WRITE(SMH_RAM)
666   AM_RANGE(0x7000, 0x7fff) AM_WRITE(SMH_ROM)
667   AM_RANGE(0x9000, 0x93ff) AM_WRITE(galaxold_videoram_w) AM_BASE(&galaxold_videoram)
592static ADDRESS_MAP_START( dkongjrm_map, ADDRESS_SPACE_PROGRAM, 8 )
593   AM_RANGE(0x0000, 0x5fff) AM_ROM
594   AM_RANGE(0x6000, 0x6fff) AM_RAM
595   AM_RANGE(0x7000, 0x7fff) AM_ROM
596   AM_RANGE(0x9000, 0x93ff) AM_RAM_WRITE(galaxold_videoram_w) AM_BASE(&galaxold_videoram)
668597   AM_RANGE(0x9800, 0x983f) AM_WRITE(galaxold_attributesram_w) AM_BASE(&galaxold_attributesram)
669598   AM_RANGE(0x9840, 0x987f) AM_WRITE(SMH_RAM) AM_BASE(&galaxold_spriteram) AM_SIZE(&galaxold_spriteram_size)
670599   AM_RANGE(0x98c0, 0x98ff) AM_WRITE(SMH_RAM) AM_BASE(&galaxold_spriteram2) AM_SIZE(&galaxold_spriteram2_size)
600   AM_RANGE(0xa000, 0xa0ff) AM_READ_PORT("IN0")
671601   AM_RANGE(0xa003, 0xa003) AM_WRITE(galaxold_coin_counter_w)
672602  //AM_RANGE(0xa004, 0xa007) AM_WRITE(galaxian_lfo_freq_w)
603   AM_RANGE(0xa800, 0xa8ff) AM_READ_PORT("IN1")
673604   AM_RANGE(0xa800, 0xa802) AM_WRITE(galaxian_background_enable_w)
674605   AM_RANGE(0xa803, 0xa803) AM_WRITE(galaxian_noise_enable_w)
675606  //AM_RANGE(0xa805, 0xa805) AM_WRITE(galaxian)
676607   AM_RANGE(0xa806, 0xa807) AM_WRITE(galaxian_vol_w)
608   AM_RANGE(0xb000, 0xb0ff) AM_READ_PORT("IN2")
677609   AM_RANGE(0xb000, 0xb000) AM_WRITE(galaxold_gfxbank_w)
678610   AM_RANGE(0xb001, 0xb001) AM_WRITE(galaxold_nmi_enable_w)
679611  //AM_RANGE(0xb004, 0xb004) AM_WRITE(galaxold_stars_enable_w)
680612   AM_RANGE(0xb006, 0xb006) AM_WRITE(galaxold_flip_screen_x_w)
681613   AM_RANGE(0xb007, 0xb007) AM_WRITE(galaxold_flip_screen_y_w)
682   AM_RANGE(0xb800, 0xb800) AM_WRITE(galaxian_pitch_w)
614   AM_RANGE(0xb800, 0xb800) AM_READWRITE(watchdog_reset_r, galaxian_pitch_w)
683615ADDRESS_MAP_END
684616
685617
686static ADDRESS_MAP_START( ozon1_readmem, ADDRESS_SPACE_PROGRAM, 8 )
687   AM_RANGE(0x0000, 0x2fff) AM_READ(SMH_ROM)
688   AM_RANGE(0x4000, 0x4200) AM_READ(SMH_RAM)
689   AM_RANGE(0x4300, 0x43ff) AM_READ(SMH_RAM)
690   AM_RANGE(0x4800, 0x4bff) AM_READ(galaxold_videoram_r)
691   AM_RANGE(0x5000, 0x503f) AM_READ(SMH_RAM)
692   AM_RANGE(0x5040, 0x505f) AM_READ(SMH_RAM)
693   AM_RANGE(0x8100, 0x8100) AM_READ_PORT("IN0")
694   AM_RANGE(0x8101, 0x8101) AM_READ_PORT("IN1")
695   AM_RANGE(0x8102, 0x8102) AM_READ_PORT("DSW")
696ADDRESS_MAP_END
697
698static ADDRESS_MAP_START( ozon1_writemem, ADDRESS_SPACE_PROGRAM, 8 )
699   AM_RANGE(0x0000, 0x2fff) AM_WRITE(SMH_ROM)
700   AM_RANGE(0x4000, 0x4200) AM_WRITE(SMH_RAM)
701   AM_RANGE(0x4300, 0x43ff) AM_WRITE(SMH_RAM)
702   AM_RANGE(0x4800, 0x4bff) AM_WRITE(galaxold_videoram_w) AM_BASE(&galaxold_videoram)
618static ADDRESS_MAP_START( ozon1_map, ADDRESS_SPACE_PROGRAM, 8 )
619   AM_RANGE(0x0000, 0x2fff) AM_ROM
620   AM_RANGE(0x4000, 0x4200) AM_RAM
621   AM_RANGE(0x4300, 0x43ff) AM_RAM
622   AM_RANGE(0x4800, 0x4bff) AM_READWRITE(galaxold_videoram_r, galaxold_videoram_w) AM_BASE(&galaxold_videoram)
703623   AM_RANGE(0x4c00, 0x4fff) AM_WRITE(galaxold_videoram_w)
704   AM_RANGE(0x5000, 0x503f) AM_WRITE(galaxold_attributesram_w) AM_BASE(&galaxold_attributesram)
705   AM_RANGE(0x5040, 0x505f) AM_WRITE(SMH_RAM) AM_BASE(&galaxold_spriteram) AM_SIZE(&galaxold_spriteram_size)
624   AM_RANGE(0x5000, 0x503f) AM_RAM_WRITE(galaxold_attributesram_w) AM_BASE(&galaxold_attributesram)
625   AM_RANGE(0x5040, 0x505f) AM_RAM_WRITE(SMH_RAM) AM_BASE(&galaxold_spriteram) AM_SIZE(&galaxold_spriteram_size)
706626   AM_RANGE(0x6801, 0x6801) AM_WRITENOP //continuosly 0 and 1
707627   AM_RANGE(0x6802, 0x6802) AM_WRITE(galaxold_coin_counter_w)
708628   AM_RANGE(0x6806, 0x6806) AM_WRITENOP //only one 0 at reset
709629   AM_RANGE(0x6807, 0x6807) AM_WRITENOP //only one 0 at reset
630   AM_RANGE(0x8100, 0x8100) AM_READ_PORT("IN0")
631   AM_RANGE(0x8101, 0x8101) AM_READ_PORT("IN1")
632   AM_RANGE(0x8102, 0x8102) AM_READ_PORT("DSW")
710633   AM_RANGE(0x8103, 0x8103) AM_WRITENOP //only one 9b at reset
711634ADDRESS_MAP_END
712635
r4679r4680
882805   AM_RANGE(S2650_SENSE_PORT, S2650_SENSE_PORT) AM_READ_PORT("SENSE")
883806ADDRESS_MAP_END
884807
885static ADDRESS_MAP_START( ckongg_readmem, ADDRESS_SPACE_PROGRAM, 8 )
886   AM_RANGE(0x0000, 0x5fff) AM_READ(SMH_ROM)
887   AM_RANGE(0x6000, 0x6fff) AM_READ(SMH_RAM)
888   AM_RANGE(0x9000, 0x93ff) AM_READ(galaxold_videoram_r)
889   AM_RANGE(0x9800, 0x98ff) AM_READ(SMH_RAM)
808static ADDRESS_MAP_START( ckongg_map, ADDRESS_SPACE_PROGRAM, 8 )
809   AM_RANGE(0x0000, 0x5fff) AM_ROM
810   AM_RANGE(0x6000, 0x6fff) AM_RAM
811   AM_RANGE(0x9000, 0x93ff) AM_READWRITE(galaxold_videoram_r, galaxold_videoram_w) AM_BASE(&galaxold_videoram)
812   AM_RANGE(0x9800, 0x983f) AM_RAM_WRITE(galaxold_attributesram_w) AM_BASE(&galaxold_attributesram)
813   AM_RANGE(0x9840, 0x985f) AM_RAM AM_BASE(&galaxold_spriteram) AM_SIZE(&galaxold_spriteram_size)
814   AM_RANGE(0x9860, 0x987f) AM_RAM AM_BASE(&galaxold_bulletsram) AM_SIZE(&galaxold_bulletsram_size)
815   AM_RANGE(0x9880, 0x98ff) AM_RAM
890816   AM_RANGE(0xc000, 0xc000) AM_READ_PORT("IN0")
891   AM_RANGE(0xc400, 0xc400) AM_READ_PORT("IN1")
892   AM_RANGE(0xc800, 0xc800) AM_READ_PORT("DSW0")
893   AM_RANGE(0xcc00, 0xcc00) AM_READ(watchdog_reset_r)
894ADDRESS_MAP_END
895
896static ADDRESS_MAP_START( ckongg_writemem, ADDRESS_SPACE_PROGRAM, 8 )
897   AM_RANGE(0x0000, 0x5fff) AM_WRITE(SMH_ROM)
898   AM_RANGE(0x6000, 0x6fff) AM_WRITE(SMH_RAM)
899   AM_RANGE(0x9000, 0x93ff) AM_WRITE(galaxold_videoram_w) AM_BASE(&galaxold_videoram)
900   AM_RANGE(0x9800, 0x983f) AM_WRITE(galaxold_attributesram_w) AM_BASE(&galaxold_attributesram)
901   AM_RANGE(0x9840, 0x985f) AM_WRITE(SMH_RAM) AM_BASE(&galaxold_spriteram) AM_SIZE(&galaxold_spriteram_size)
902   AM_RANGE(0x9860, 0x987f) AM_WRITE(SMH_RAM) AM_BASE(&galaxold_bulletsram) AM_SIZE(&galaxold_bulletsram_size)
903   AM_RANGE(0x9880, 0x98ff) AM_WRITE(SMH_RAM)
904817   AM_RANGE(0xc000, 0xc001) AM_WRITE(galaxold_leds_w)
905818   AM_RANGE(0xc002, 0xc002) AM_WRITE(galaxold_coin_lockout_w)
906819   AM_RANGE(0xc003, 0xc003) AM_WRITE(galaxold_coin_counter_w)
907820   AM_RANGE(0xc004, 0xc007) AM_WRITE(galaxian_lfo_freq_w)
821   AM_RANGE(0xc400, 0xc400) AM_READ_PORT("IN1")
908822   AM_RANGE(0xc400, 0xc402) AM_WRITE(galaxian_background_enable_w)
909823   AM_RANGE(0xc403, 0xc403) AM_WRITE(galaxian_noise_enable_w)
910824   AM_RANGE(0xc405, 0xc405) AM_WRITE(galaxian_shoot_enable_w)
911825   AM_RANGE(0xc406, 0xc407) AM_WRITE(galaxian_vol_w)
826   AM_RANGE(0xc800, 0xc800) AM_READ_PORT("DSW0")
912827   AM_RANGE(0xc801, 0xc801) AM_WRITE(galaxold_nmi_enable_w)
913828   AM_RANGE(0xc804, 0xc804) AM_WRITENOP // link cut
914829   AM_RANGE(0xc806, 0xc806) AM_WRITE(galaxold_flip_screen_x_w)
915830   AM_RANGE(0xc807, 0xc807) AM_WRITE(galaxold_flip_screen_y_w)
916   AM_RANGE(0xcc00, 0xcc00) AM_WRITE(galaxian_pitch_w)
831   AM_RANGE(0xcc00, 0xcc00) AM_READWRITE(watchdog_reset_r, galaxian_pitch_w)
917832ADDRESS_MAP_END
918833
919static ADDRESS_MAP_START( kkgalax_readmem, ADDRESS_SPACE_PROGRAM, 8 )
920   AM_RANGE(0x0000, 0x5fff) AM_READ(SMH_ROM)
921   AM_RANGE(0x6000, 0x6fff) AM_READ(SMH_RAM)
922   AM_RANGE(0x9000, 0x93ff) AM_READ(galaxold_videoram_r)
923   AM_RANGE(0x9800, 0x98ff) AM_READ(SMH_RAM)
834static ADDRESS_MAP_START( kkgalax_map, ADDRESS_SPACE_PROGRAM, 8 )
835   AM_RANGE(0x0000, 0x5fff) AM_ROM
836   AM_RANGE(0x6000, 0x6fff) AM_RAM
837   AM_RANGE(0x9000, 0x93ff) AM_READWRITE(galaxold_videoram_r, galaxold_videoram_w) AM_BASE(&galaxold_videoram)
838   AM_RANGE(0x9800, 0x983f) AM_RAM_WRITE(galaxold_attributesram_w) AM_BASE(&galaxold_attributesram)
839   AM_RANGE(0x9840, 0x985f) AM_RAM AM_BASE(&galaxold_spriteram) AM_SIZE(&galaxold_spriteram_size)
840   AM_RANGE(0x9860, 0x987f) AM_RAM AM_BASE(&galaxold_bulletsram) AM_SIZE(&galaxold_bulletsram_size)
841   AM_RANGE(0x9880, 0x98ff) AM_RAM
924842   AM_RANGE(0xa000, 0xa000) AM_READ_PORT("IN0")
925843   AM_RANGE(0xa800, 0xa800) AM_READ_PORT("IN1")
926844   AM_RANGE(0xb000, 0xb000) AM_READ_PORT("DSW0")
927//  AM_RANGE(0xcc00, 0xcc00) AM_READ(watchdog_reset_r)
928ADDRESS_MAP_END
929
930static ADDRESS_MAP_START( kkgalax_writemem, ADDRESS_SPACE_PROGRAM, 8 )
931   AM_RANGE(0x0000, 0x5fff) AM_WRITENOP
932   AM_RANGE(0x6000, 0x6fff) AM_WRITE(SMH_RAM)
933   AM_RANGE(0x9000, 0x93ff) AM_WRITE(galaxold_videoram_w) AM_BASE(&galaxold_videoram)
934   AM_RANGE(0x9800, 0x983f) AM_WRITE(galaxold_attributesram_w) AM_BASE(&galaxold_attributesram)
935   AM_RANGE(0x9840, 0x985f) AM_WRITE(SMH_RAM) AM_BASE(&galaxold_spriteram) AM_SIZE(&galaxold_spriteram_size)
936   AM_RANGE(0x9860, 0x987f) AM_WRITE(SMH_RAM) AM_BASE(&galaxold_bulletsram) AM_SIZE(&galaxold_bulletsram_size)
937   AM_RANGE(0x9880, 0x98ff) AM_WRITE(SMH_RAM)
845   AM_RANGE(0xb001, 0xb001) AM_WRITE(galaxold_nmi_enable_w)
938846//  AM_RANGE(0xc000, 0xc001) AM_WRITE(galaxold_leds_w)
939847//  AM_RANGE(0xc002, 0xc002) AM_WRITE(galaxold_coin_lockout_w)
940848//  AM_RANGE(0xc003, 0xc003) AM_WRITE(galaxold_coin_counter_w)
r4679r4680
943851//  AM_RANGE(0xc403, 0xc403) AM_WRITE(galaxian_noise_enable_w)
944852//  AM_RANGE(0xc405, 0xc405) AM_WRITE(galaxian)
945853//  AM_RANGE(0xc406, 0xc407) AM_WRITE(galaxian_vol_w)
946   AM_RANGE(0xb001, 0xb001) AM_WRITE(galaxold_nmi_enable_w)
947854//  AM_RANGE(0xc804, 0xc804) AM_WRITENOP // link cut
948855//  AM_RANGE(0xc806, 0xc806) AM_WRITE(galaxold_flip_screen_x_w)
949856//  AM_RANGE(0xc807, 0xc807) AM_WRITE(galaxold_flip_screen_y_w)
950//  AM_RANGE(0xcc00, 0xcc00) AM_WRITE(galaxian_pitch_w)
857//  AM_RANGE(0xcc00, 0xcc00) AM_READWRITE(watchdog_reset_r, galaxian_pitch_w)
951858ADDRESS_MAP_END
952859
953860static READ8_HANDLER( hexpoola_data_port_r )
r4679r4680
21962103
21972104   /* basic machine hardware */
21982105   MDRV_CPU_ADD("maincpu", Z80, PIXEL_CLOCK/2)   /* 3.072 MHz */
2199   MDRV_CPU_PROGRAM_MAP(galaxold_readmem,galaxold_writemem)
2106   MDRV_CPU_PROGRAM_MAP(galaxold_map,0)
22002107
22012108   MDRV_MACHINE_RESET(galaxold)
22022109
r4679r4680
22442151   /* basic machine hardware */
22452152   MDRV_IMPORT_FROM(galaxian)
22462153   MDRV_CPU_MODIFY("maincpu")
2247   MDRV_CPU_PROGRAM_MAP(mooncrst_readmem,mooncrst_writemem)
2154   MDRV_CPU_PROGRAM_MAP(mooncrst_map,0)
22482155
22492156   /* video hardware */
22502157   MDRV_VIDEO_START(mooncrst)
r4679r4680
22562163   /* basic machine hardware */
22572164   MDRV_IMPORT_FROM(galaxian)
22582165   MDRV_CPU_MODIFY("maincpu")
2259   MDRV_CPU_PROGRAM_MAP(scramblb_readmem,scramblb_writemem)
2166   MDRV_CPU_PROGRAM_MAP(scramblb_map,0)
22602167
22612168   /* video hardware */
22622169   MDRV_PALETTE_LENGTH(32+2+64+1)   /* 32 for the characters, 2 for the bullets, 64 for the stars, 1 for background */
r4679r4680
22702177   /* basic machine hardware */
22712178   MDRV_IMPORT_FROM(galaxian)
22722179   MDRV_CPU_MODIFY("maincpu")
2273   MDRV_CPU_PROGRAM_MAP(scramb2_readmem,scramb2_writemem)
2180   MDRV_CPU_PROGRAM_MAP(scramb2_map,0)
22742181
22752182   /* video hardware */
22762183   MDRV_PALETTE_LENGTH(32+2+64+1)   /* 32 for the characters, 2 for the bullets, 64 for the stars, 1 for background */
r4679r4680
22862193   /* basic machine hardware */
22872194   MDRV_IMPORT_FROM(galaxian)
22882195   MDRV_CPU_MODIFY("maincpu")
2289   MDRV_CPU_PROGRAM_MAP(_4in1_readmem,_4in1_writemem)
2196   MDRV_CPU_PROGRAM_MAP(_4in1_map,0)
22902197
22912198   /* video hardware */
22922199   MDRV_GFXDECODE(_4in1)
r4679r4680
23002207   /* basic machine hardware */
23012208   MDRV_IMPORT_FROM(galaxian)
23022209   MDRV_CPU_MODIFY("maincpu")
2303   MDRV_CPU_PROGRAM_MAP(bagmanmc_readmem,bagmanmc_writemem)
2210   MDRV_CPU_PROGRAM_MAP(bagmanmc_map,0)
23042211
23052212   MDRV_MACHINE_RESET( devilfsg )
23062213
r4679r4680
23162223   /* basic machine hardware */
23172224   MDRV_IMPORT_FROM(galaxian)
23182225   MDRV_CPU_MODIFY("maincpu")
2319   MDRV_CPU_PROGRAM_MAP(dkongjrm_readmem,dkongjrm_writemem)
2226   MDRV_CPU_PROGRAM_MAP(dkongjrm_map,0)
23202227
23212228   /* video hardware */
23222229   MDRV_VIDEO_START(dkongjrm)
r4679r4680
23262233   /* basic machine hardware */
23272234   MDRV_IMPORT_FROM(galaxian)
23282235   MDRV_CPU_MODIFY("maincpu")
2329   MDRV_CPU_PROGRAM_MAP(rockclim_readmem,rockclim_writemem)
2236   MDRV_CPU_PROGRAM_MAP(rockclim_map,0)
23302237   MDRV_GFXDECODE(rockclim)
23312238   /* video hardware */
23322239   MDRV_VIDEO_START(rockclim)
r4679r4680
23422249   /* basic machine hardware */
23432250   MDRV_IMPORT_FROM(galaxold_base)
23442251   MDRV_CPU_MODIFY("maincpu")
2345   MDRV_CPU_PROGRAM_MAP(ozon1_readmem,ozon1_writemem)
2252   MDRV_CPU_PROGRAM_MAP(ozon1_map,0)
23462253   MDRV_CPU_IO_MAP(ozon1_io_map,0)
23472254   MDRV_CPU_VBLANK_INT("screen", nmi_line_pulse)
23482255
r4679r4680
25002407   /* basic machine hardware */
25012408   MDRV_IMPORT_FROM(galaxian)
25022409   MDRV_CPU_MODIFY("maincpu")
2503   MDRV_CPU_PROGRAM_MAP(ckongg_readmem,ckongg_writemem)
2410   MDRV_CPU_PROGRAM_MAP(ckongg_map,0)
25042411
25052412   MDRV_GFXDECODE(gmgalax)
25062413
r4679r4680
25132420   /* basic machine hardware */
25142421   MDRV_IMPORT_FROM(galaxian)
25152422   MDRV_CPU_MODIFY("maincpu")
2516   MDRV_CPU_PROGRAM_MAP(kkgalax_readmem,kkgalax_writemem)
2423   MDRV_CPU_PROGRAM_MAP(kkgalax_map,0)
25172424
25182425   MDRV_GFXDECODE(gmgalax)
25192426
src/mame/drivers/centiped.c
r4679r4680
446446
447447   /* IRQ is clocked on the rising edge of 16V, equal to the previous 32V */
448448   if (scanline & 16)
449      cpu_set_input_line(timer->machine->cpu[0], 0, ((scanline - 1) & 32) ? ASSERT_LINE : CLEAR_LINE);
449      cputag_set_input_line(timer->machine, "maincpu", 0, ((scanline - 1) & 32) ? ASSERT_LINE : CLEAR_LINE);
450450
451451   /* do a partial update now to handle sprite multiplexing (Maze Invaders) */
452452   video_screen_update_partial(timer->machine->primary_screen, scanline);
r4679r4680
463463
464464static MACHINE_RESET( centiped )
465465{
466   cpu_set_input_line(machine->cpu[0], 0, CLEAR_LINE);
466   cputag_set_input_line(machine, "maincpu", 0, CLEAR_LINE);
467467   dsw_select = 0;
468468   control_select = 0;
469469}
r4679r4680
480480
481481static WRITE8_HANDLER( irq_ack_w )
482482{
483   cpu_set_input_line(space->machine->cpu[0], 0, CLEAR_LINE);
483   cputag_set_input_line(space->machine, "maincpu", 0, CLEAR_LINE);
484484}
485485
486486
r4679r4680
19761976
19771977static DRIVER_INIT( caterplr )
19781978{
1979   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
1979   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
19801980   const device_config *device = devtag_get_device(machine, "pokey");
19811981   memory_install_readwrite8_device_handler(space, device, 0x1000, 0x100f, 0, 0, caterplr_AY8910_r, caterplr_AY8910_w);
19821982   memory_install_read8_device_handler(space, device, 0x1780, 0x1780, 0, 0, caterplr_rand_r);
r4679r4680
19851985
19861986static DRIVER_INIT( magworm )
19871987{
1988   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
1988   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
19891989   const device_config *device = devtag_get_device(machine, "pokey");
19901990   memory_install_write8_device_handler(space, device, 0x1001, 0x1001, 0, 0, ay8910_address_w);
19911991   memory_install_readwrite8_device_handler(space, device, 0x1003, 0x1003, 0, 0, ay8910_r, ay8910_data_w);
src/mame/drivers/atarisy1.c
r4679r4680
211211
212212static void update_interrupts(running_machine *machine)
213213{
214   cpu_set_input_line(machine->cpu[0], 2, joystick_int && joystick_int_enable ? ASSERT_LINE : CLEAR_LINE);
215   cpu_set_input_line(machine->cpu[0], 3, atarigen_scanline_int_state ? ASSERT_LINE : CLEAR_LINE);
216   cpu_set_input_line(machine->cpu[0], 4, atarigen_video_int_state ? ASSERT_LINE : CLEAR_LINE);
217   cpu_set_input_line(machine->cpu[0], 6, atarigen_sound_int_state ? ASSERT_LINE : CLEAR_LINE);
214   cputag_set_input_line(machine, "maincpu", 2, joystick_int && joystick_int_enable ? ASSERT_LINE : CLEAR_LINE);
215   cputag_set_input_line(machine, "maincpu", 3, atarigen_scanline_int_state ? ASSERT_LINE : CLEAR_LINE);
216   cputag_set_input_line(machine, "maincpu", 4, atarigen_video_int_state ? ASSERT_LINE : CLEAR_LINE);
217   cputag_set_input_line(machine, "maincpu", 6, atarigen_sound_int_state ? ASSERT_LINE : CLEAR_LINE);
218218}
219219
220220
r4679r4680
224224   atarigen_eeprom_reset();
225225   atarigen_slapstic_reset();
226226   atarigen_interrupt_reset(update_interrupts);
227   atarigen_sound_io_reset(machine->cpu[1]);
227   atarigen_sound_io_reset(cputag_get_cpu(machine, "audiocpu"));
228228
229229   /* reset the joystick parameters */
230230   joystick_value = 0;
r4679r4680
23282328static DRIVER_INIT( marble )
23292329{
23302330   atarigen_eeprom_default = NULL;
2331   atarigen_slapstic_init(machine->cpu[0], 0x080000, 0, 103);
2331   atarigen_slapstic_init(cputag_get_cpu(machine, "maincpu"), 0x080000, 0, 103);
23322332
23332333   joystick_type = 0;   /* none */
23342334   trackball_type = 1;   /* rotated */
r4679r4680
23382338static DRIVER_INIT( peterpak )
23392339{
23402340   atarigen_eeprom_default = NULL;
2341   atarigen_slapstic_init(machine->cpu[0], 0x080000, 0, 107);
2341   atarigen_slapstic_init(cputag_get_cpu(machine, "maincpu"), 0x080000, 0, 107);
23422342
23432343   joystick_type = 1;   /* digital */
23442344   trackball_type = 0;   /* none */
r4679r4680
23482348static DRIVER_INIT( indytemp )
23492349{
23502350   atarigen_eeprom_default = NULL;
2351   atarigen_slapstic_init(machine->cpu[0], 0x080000, 0, 105);
2351   atarigen_slapstic_init(cputag_get_cpu(machine, "maincpu"), 0x080000, 0, 105);
23522352
23532353   joystick_type = 1;   /* digital */
23542354   trackball_type = 0;   /* none */
r4679r4680
23582358static DRIVER_INIT( roadrunn )
23592359{
23602360   atarigen_eeprom_default = NULL;
2361   atarigen_slapstic_init(machine->cpu[0], 0x080000, 0, 108);
2361   atarigen_slapstic_init(cputag_get_cpu(machine, "maincpu"), 0x080000, 0, 108);
23622362
23632363   joystick_type = 2;   /* analog */
23642364   trackball_type = 0;   /* none */
r4679r4680
23682368static DRIVER_INIT( roadb109 )
23692369{
23702370   atarigen_eeprom_default = NULL;
2371   atarigen_slapstic_init(machine->cpu[0], 0x080000, 0, 109);
2371   atarigen_slapstic_init(cputag_get_cpu(machine, "maincpu"), 0x080000, 0, 109);
23722372
23732373   joystick_type = 3;   /* pedal */
23742374   trackball_type = 2;   /* steering wheel */
r4679r4680
23782378static DRIVER_INIT( roadb110 )
23792379{
23802380   atarigen_eeprom_default = NULL;
2381   atarigen_slapstic_init(machine->cpu[0], 0x080000, 0, 110);
2381   atarigen_slapstic_init(cputag_get_cpu(machine, "maincpu"), 0x080000, 0, 110);
23822382
23832383   joystick_type = 3;   /* pedal */
23842384   trackball_type = 2;   /* steering wheel */
src/mame/drivers/wgp.c
r4679r4680
438438   /* bit 0 enables cpu B */
439439   /* however this fails when recovering from a save state
440440       if cpu B is disabled !! */
441   cpu_set_input_line(machine->cpu[2], INPUT_LINE_RESET, (cpua_ctrl &0x1) ? CLEAR_LINE : ASSERT_LINE);
441   cputag_set_input_line(machine, "sub", INPUT_LINE_RESET, (cpua_ctrl & 0x1) ? CLEAR_LINE : ASSERT_LINE);
442442
443443   /* bit 1 is "vibration" acc. to test mode */
444444}
r4679r4680
464464#ifdef UNUSED_FUNCTION
465465static TIMER_CALLBACK( wgp_interrupt4 )
466466{
467    cpu_set_input_line(machine->cpu[0],4,HOLD_LINE);
467    cputag_set_input_line(machine, "maincpu", 4, HOLD_LINE);
468468}
469469#endif
470470
471471static TIMER_CALLBACK( wgp_interrupt6 )
472472{
473   cpu_set_input_line(machine->cpu[0],6,HOLD_LINE);
473   cputag_set_input_line(machine, "maincpu", 6, HOLD_LINE);
474474}
475475
476476/* 68000 B */
477477
478478static TIMER_CALLBACK( wgp_cpub_interrupt6 )
479479{
480   cpu_set_input_line(machine->cpu[2],6,HOLD_LINE);   /* assumes Z80 sandwiched between the 68Ks */
480   cputag_set_input_line(machine, "sub", 6, HOLD_LINE);   /* assumes Z80 sandwiched between the 68Ks */
481481}
482482
483483
r4679r4680
688688/***************************************************************************/
689689
690690static ADDRESS_MAP_START( z80_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
691   AM_RANGE(0x4000, 0x7fff) AM_READ(SMH_BANK10)   /* Fallthrough */
691   AM_RANGE(0x4000, 0x7fff) AM_READ(SMH_BANK(10))   /* Fallthrough */
692692   AM_RANGE(0x0000, 0x7fff) AM_ROM
693693   AM_RANGE(0xc000, 0xdfff) AM_RAM
694694   AM_RANGE(0xe000, 0xe003) AM_DEVREADWRITE("ym", ym2610_r, ym2610_w)
r4679r4680
913913/* handler called by the YM2610 emulator when the internal timers cause an IRQ */
914914static void irqhandler(const device_config *device, int irq)   // assumes Z80 sandwiched between 68Ks
915915{
916   cpu_set_input_line(device->machine->cpu[1],0,irq ? ASSERT_LINE : CLEAR_LINE);
916   cputag_set_input_line(device->machine, "audiocpu", 0, irq ? ASSERT_LINE : CLEAR_LINE);
917917}
918918
919919static const ym2610_interface ym2610_config =
r4679r4680
12361236GAME( 1989, wgpjoy,   wgp,    wgp,    wgpjoy, wgp,    ROT0, "Taito Corporation", "World Grand Prix (joystick version) (Japan, set 1)", GAME_IMPERFECT_GRAPHICS | GAME_NOT_WORKING )
12371237GAME( 1989, wgpjoya,  wgp,    wgp,    wgpjoy, wgp,    ROT0, "Taito Corporation", "World Grand Prix (joystick version) (Japan, set 2)", GAME_IMPERFECT_GRAPHICS | GAME_NOT_WORKING )
12381238GAME( 1990, wgp2,     wgp,    wgp2,   wgp2,   wgp2,   ROT0, "Taito Corporation", "World Grand Prix 2 (Japan)", GAME_IMPERFECT_GRAPHICS | GAME_NOT_WORKING )
1239
src/mame/drivers/welltris.c
r4679r4680
349349   {
350350      pending_command = 1;
351351      soundlatch_w(space, 0, data & 0xff);
352      cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_NMI, PULSE_LINE);
352      cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
353353   }
354354}
355355
r4679r4680
391391static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 )
392392   AM_RANGE(0x0000, 0x77ff) AM_ROM
393393   AM_RANGE(0x7800, 0x7fff) AM_RAM
394   AM_RANGE(0x8000, 0xffff) AM_READ(SMH_BANK1)
394   AM_RANGE(0x8000, 0xffff) AM_READ(SMH_BANK(1))
395395ADDRESS_MAP_END
396396
397397static ADDRESS_MAP_START( sound_port_map, ADDRESS_SPACE_IO, 8 )
r4679r4680
688688
689689static void irqhandler(const device_config *device, int irq)
690690{
691   cpu_set_input_line(device->machine->cpu[1], 0, irq ? ASSERT_LINE : CLEAR_LINE);
691   cputag_set_input_line(device->machine, "audiocpu", 0, irq ? ASSERT_LINE : CLEAR_LINE);
692692}
693693
694694static const ym2610_interface ym2610_config =
src/mame/drivers/sprint8.c
r4679r4680
1919{
2020   if (collision_reset == 0)
2121   {
22      cpu_set_input_line(machine->cpu[0], 0, ASSERT_LINE);
22      cputag_set_input_line(machine, "maincpu", 0, ASSERT_LINE);
2323
2424      collision_index = n;
2525   }
r4679r4680
9999   collision_reset = !(data & 1);
100100
101101   if (collision_reset)
102      cpu_set_input_line(space->machine->cpu[0], 0, CLEAR_LINE);
102      cputag_set_input_line(space->machine, "maincpu", 0, CLEAR_LINE);
103103}
104104
105105
r4679r4680
113113static WRITE8_HANDLER( sprint8_motor_w ) {}
114114
115115
116static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 )
117   AM_RANGE(0x0000, 0x00ff) AM_READ(SMH_RAM)
116static ADDRESS_MAP_START( sprint8_map, ADDRESS_SPACE_PROGRAM, 8 )
117   AM_RANGE(0x0000, 0x00ff) AM_RAM
118   AM_RANGE(0x1800, 0x1bff) AM_RAM_WRITE(sprint8_video_ram_w) AM_BASE(&sprint8_video_ram)
118119   AM_RANGE(0x1c00, 0x1c00) AM_READ(sprint8_collision_r)
119120   AM_RANGE(0x1c01, 0x1c08) AM_READ(sprint8_input_r)
120121   AM_RANGE(0x1c09, 0x1c09) AM_READ_PORT("IN0")
121122   AM_RANGE(0x1c0a, 0x1c0a) AM_READ_PORT("IN1")
122123   AM_RANGE(0x1c0f, 0x1c0f) AM_READ_PORT("VBLANK")
123   AM_RANGE(0x2000, 0x3fff) AM_READ(SMH_ROM)
124   AM_RANGE(0xf800, 0xffff) AM_READ(SMH_ROM)
125ADDRESS_MAP_END
126
127
128static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 )
129   AM_RANGE(0x0000, 0x00ff) AM_WRITE(SMH_RAM)
130   AM_RANGE(0x1800, 0x1bff) AM_WRITE(sprint8_video_ram_w) AM_BASE(&sprint8_video_ram)
131   AM_RANGE(0x1c00, 0x1c0f) AM_WRITE(SMH_RAM) AM_BASE(&sprint8_pos_h_ram)
132   AM_RANGE(0x1c10, 0x1c1f) AM_WRITE(SMH_RAM) AM_BASE(&sprint8_pos_v_ram)
133   AM_RANGE(0x1c20, 0x1c2f) AM_WRITE(SMH_RAM) AM_BASE(&sprint8_pos_d_ram)
124   AM_RANGE(0x1c00, 0x1c0f) AM_WRITEONLY AM_BASE(&sprint8_pos_h_ram)
125   AM_RANGE(0x1c10, 0x1c1f) AM_WRITEONLY AM_BASE(&sprint8_pos_v_ram)
126   AM_RANGE(0x1c20, 0x1c2f) AM_WRITEONLY AM_BASE(&sprint8_pos_d_ram)
134127   AM_RANGE(0x1c30, 0x1c37) AM_WRITE(sprint8_lockout_w)
135128   AM_RANGE(0x1d00, 0x1d00) AM_WRITE(sprint8_int_reset_w)
136129   AM_RANGE(0x1d01, 0x1d01) AM_WRITE(sprint8_crash_w)
137130   AM_RANGE(0x1d02, 0x1d02) AM_WRITE(sprint8_explosion_w)
138131   AM_RANGE(0x1d03, 0x1d03) AM_WRITE(sprint8_bugle_w)
139132   AM_RANGE(0x1d04, 0x1d04) AM_WRITE(sprint8_bug_w)
140   AM_RANGE(0x1d05, 0x1d05) AM_WRITE(SMH_RAM) AM_BASE(&sprint8_team)
133   AM_RANGE(0x1d05, 0x1d05) AM_WRITEONLY AM_BASE(&sprint8_team)
141134   AM_RANGE(0x1d06, 0x1d06) AM_WRITE(sprint8_attract_w)
142135   AM_RANGE(0x1e00, 0x1e07) AM_WRITE(sprint8_motor_w)
143136   AM_RANGE(0x1f00, 0x1f00) AM_WRITENOP /* probably a watchdog, disabled in service mode */
144   AM_RANGE(0x2000, 0x3fff) AM_WRITE(SMH_ROM)
145   AM_RANGE(0xf800, 0xffff) AM_WRITE(SMH_ROM)
137   AM_RANGE(0x2000, 0x3fff) AM_ROM
138   AM_RANGE(0xf800, 0xffff) AM_ROM
146139ADDRESS_MAP_END
147140
148141
r4679r4680
467460
468461   /* basic machine hardware */
469462   MDRV_CPU_ADD("maincpu", M6800, 11055000 / 11) /* ? */
470   MDRV_CPU_PROGRAM_MAP(readmem, writemem)
463   MDRV_CPU_PROGRAM_MAP(sprint8_map, 0)
471464
472465   MDRV_MACHINE_RESET(sprint8)
473466
src/mame/drivers/pturn.c
r4679r4680
440440
441441static MACHINE_RESET( pturn )
442442{
443   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
443   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
444444   soundlatch_clear_w(space,0,0);
445445}
446446
r4679r4680
520520static DRIVER_INIT(pturn)
521521{
522522   /*
523    memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xc0dd, 0xc0dd, 0, 0, pturn_protection_r);
524    memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xc0db, 0xc0db, 0, 0, pturn_protection2_r);
523    memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xc0dd, 0xc0dd, 0, 0, pturn_protection_r);
524    memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xc0db, 0xc0db, 0, 0, pturn_protection2_r);
525525    */
526526}
527527
src/mame/drivers/gumbo.c
r4679r4680
5353VIDEO_START( gumbo );
5454VIDEO_UPDATE( gumbo );
5555
56static ADDRESS_MAP_START( gumbo_readmem, ADDRESS_SPACE_PROGRAM, 16 )
57   AM_RANGE(0x000000, 0x03ffff) AM_READ(SMH_ROM)
58   AM_RANGE(0x080000, 0x083fff) AM_READ(SMH_RAM)
59   AM_RANGE(0x1b0000, 0x1b03ff) AM_READ(SMH_RAM)
56static ADDRESS_MAP_START( gumbo_map, ADDRESS_SPACE_PROGRAM, 16 )
57   AM_RANGE(0x000000, 0x03ffff) AM_ROM
58   AM_RANGE(0x080000, 0x083fff) AM_RAM // main ram
59   AM_RANGE(0x1b0000, 0x1b03ff) AM_RAM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE(&paletteram16)
6060   AM_RANGE(0x1c0100, 0x1c0101) AM_READ_PORT("P1_P2")
6161   AM_RANGE(0x1c0200, 0x1c0201) AM_READ_PORT("DSW")
62   AM_RANGE(0x1c0300, 0x1c0301) AM_DEVREAD8("oki", okim6295_r, 0x00ff)
63   AM_RANGE(0x1e0000, 0x1e0fff) AM_READ(SMH_RAM)
64   AM_RANGE(0x1f0000, 0x1f3fff) AM_READ(SMH_RAM)
62   AM_RANGE(0x1c0300, 0x1c0301) AM_DEVREADWRITE8("oki", okim6295_r, okim6295_w, 0x00ff)
63   AM_RANGE(0x1e0000, 0x1e0fff) AM_RAM_WRITE(gumbo_bg_videoram_w) AM_BASE(&gumbo_bg_videoram) // bg tilemap
64   AM_RANGE(0x1f0000, 0x1f3fff) AM_RAM_WRITE(gumbo_fg_videoram_w) AM_BASE(&gumbo_fg_videoram) // fg tilemap
6565ADDRESS_MAP_END
6666
67static ADDRESS_MAP_START( gumbo_writemem, ADDRESS_SPACE_PROGRAM, 16 )
68   AM_RANGE(0x000000, 0x03ffff) AM_WRITE(SMH_ROM)
69   AM_RANGE(0x080000, 0x083fff) AM_WRITE(SMH_RAM) // main ram
70   AM_RANGE(0x1c0300, 0x1c0301) AM_DEVWRITE8("oki", okim6295_w, 0x00ff)
71   AM_RANGE(0x1b0000, 0x1b03ff) AM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE(&paletteram16)
72   AM_RANGE(0x1e0000, 0x1e0fff) AM_WRITE(gumbo_bg_videoram_w) AM_BASE(&gumbo_bg_videoram) // bg tilemap
73   AM_RANGE(0x1f0000, 0x1f3fff) AM_WRITE(gumbo_fg_videoram_w) AM_BASE(&gumbo_fg_videoram) // fg tilemap
74ADDRESS_MAP_END
75
7667/* Miss Puzzle has a different memory map */
7768
78static ADDRESS_MAP_START( mspuzzle_readmem, ADDRESS_SPACE_PROGRAM, 16 )
79   AM_RANGE(0x000000, 0x07ffff) AM_READ(SMH_ROM)
80   AM_RANGE(0x100000, 0x103fff) AM_READ(SMH_RAM)
81   AM_RANGE(0x1a0000, 0x1a03ff) AM_READ(SMH_RAM)
69static ADDRESS_MAP_START( mspuzzle_map, ADDRESS_SPACE_PROGRAM, 16 )
70   AM_RANGE(0x000000, 0x07ffff) AM_ROM
71   AM_RANGE(0x100000, 0x103fff) AM_RAM // main ram
72   AM_RANGE(0x190000, 0x197fff) AM_RAM_WRITE(gumbo_fg_videoram_w) AM_BASE(&gumbo_fg_videoram) // fg tilemap
73   AM_RANGE(0x1a0000, 0x1a03ff) AM_RAM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE(&paletteram16)
8274   AM_RANGE(0x1b0100, 0x1b0101) AM_READ_PORT("P1_P2")
8375   AM_RANGE(0x1b0200, 0x1b0201) AM_READ_PORT("DSW")
84   AM_RANGE(0x1b0300, 0x1b0301) AM_DEVREAD8("oki", okim6295_r, 0x00ff)
85   AM_RANGE(0x190000, 0x197fff) AM_READ(SMH_RAM)
86   AM_RANGE(0x1c0000, 0x1c1fff) AM_READ(SMH_RAM)
76   AM_RANGE(0x1b0300, 0x1b0301) AM_DEVREADWRITE8("oki", okim6295_r, okim6295_w, 0x00ff)
77   AM_RANGE(0x1c0000, 0x1c1fff) AM_RAM_WRITE(gumbo_bg_videoram_w) AM_BASE(&gumbo_bg_videoram) // bg tilemap
8778ADDRESS_MAP_END
8879
89static ADDRESS_MAP_START( mspuzzle_writemem, ADDRESS_SPACE_PROGRAM, 16 )
90   AM_RANGE(0x000000, 0x07ffff) AM_WRITE(SMH_ROM)
91   AM_RANGE(0x100000, 0x103fff) AM_WRITE(SMH_RAM) // main ram
92   AM_RANGE(0x1b0300, 0x1b0301) AM_DEVWRITE8("oki", okim6295_w, 0x00ff)
93   AM_RANGE(0x1a0000, 0x1a03ff) AM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE(&paletteram16)
94   AM_RANGE(0x190000, 0x197fff) AM_WRITE(gumbo_fg_videoram_w) AM_BASE(&gumbo_fg_videoram) // fg tilemap
95   AM_RANGE(0x1c0000, 0x1c1fff) AM_WRITE(gumbo_bg_videoram_w) AM_BASE(&gumbo_bg_videoram) // bg tilemap
96ADDRESS_MAP_END
97
98static ADDRESS_MAP_START( dblpoint_readmem, ADDRESS_SPACE_PROGRAM, 16 )
99   AM_RANGE(0x000000, 0x07ffff) AM_READ(SMH_ROM)
100   AM_RANGE(0x080000, 0x083fff) AM_READ(SMH_RAM)
80static ADDRESS_MAP_START( dblpoint_map, ADDRESS_SPACE_PROGRAM, 16 )
81   AM_RANGE(0x000000, 0x07ffff) AM_ROM
82   AM_RANGE(0x080000, 0x083fff) AM_RAM // main ram
83   AM_RANGE(0x1b0000, 0x1b03ff) AM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE(&paletteram16)
10184   AM_RANGE(0x1c0100, 0x1c0101) AM_READ_PORT("P1_P2")
10285   AM_RANGE(0x1c0200, 0x1c0201) AM_READ_PORT("DSW")
103   AM_RANGE(0x1c0300, 0x1c0301) AM_DEVREAD8("oki", okim6295_r, 0x00ff)
104   AM_RANGE(0x1e0000, 0x1e3fff) AM_READ(SMH_RAM)
105   AM_RANGE(0x1f0000, 0x1f0fff) AM_READ(SMH_RAM)
86   AM_RANGE(0x1c0300, 0x1c0301) AM_DEVREADWRITE8("oki", okim6295_r, okim6295_w, 0x00ff)
87   AM_RANGE(0x1e0000, 0x1e3fff) AM_RAM_WRITE(gumbo_fg_videoram_w) AM_BASE(&gumbo_fg_videoram) // fg tilemap
88   AM_RANGE(0x1f0000, 0x1f0fff) AM_RAM_WRITE(gumbo_bg_videoram_w) AM_BASE(&gumbo_bg_videoram) // bg tilemap
10689ADDRESS_MAP_END
10790
108static ADDRESS_MAP_START( dblpoint_writemem, ADDRESS_SPACE_PROGRAM, 16 )
109   AM_RANGE(0x000000, 0x07ffff) AM_WRITE(SMH_ROM)
110   AM_RANGE(0x080000, 0x083fff) AM_WRITE(SMH_RAM) // main ram
111   AM_RANGE(0x1c0300, 0x1c0301) AM_DEVWRITE8("oki", okim6295_w, 0x00ff)
112   AM_RANGE(0x1b0000, 0x1b03ff) AM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE(&paletteram16)
113   AM_RANGE(0x1e0000, 0x1e3fff) AM_WRITE(gumbo_fg_videoram_w) AM_BASE(&gumbo_fg_videoram) // fg tilemap
114   AM_RANGE(0x1f0000, 0x1f0fff) AM_WRITE(gumbo_bg_videoram_w) AM_BASE(&gumbo_bg_videoram) // bg tilemap
115ADDRESS_MAP_END
116
11791static INPUT_PORTS_START( gumbo )
11892   PORT_START("P1_P2")
11993   PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 )
r4679r4680
262236
263237static MACHINE_DRIVER_START( gumbo )
264238   MDRV_CPU_ADD("maincpu", M68000, 14318180 /2)    // or 10mhz? ?
265   MDRV_CPU_PROGRAM_MAP(gumbo_readmem,gumbo_writemem)
239   MDRV_CPU_PROGRAM_MAP(gumbo_map,0)
266240   MDRV_CPU_VBLANK_INT("screen", irq1_line_hold) // all the same
267241
268242   MDRV_GFXDECODE(gumbo)
r4679r4680
291265static MACHINE_DRIVER_START( mspuzzle )
292266   MDRV_IMPORT_FROM(gumbo)
293267   MDRV_CPU_MODIFY("maincpu")
294   MDRV_CPU_PROGRAM_MAP(mspuzzle_readmem,mspuzzle_writemem)
268   MDRV_CPU_PROGRAM_MAP(mspuzzle_map,0)
295269MACHINE_DRIVER_END
296270
297271static MACHINE_DRIVER_START( dblpoint )
298272   MDRV_IMPORT_FROM(gumbo)
299273   MDRV_CPU_MODIFY("maincpu")
300   MDRV_CPU_PROGRAM_MAP(dblpoint_readmem,dblpoint_writemem)
274   MDRV_CPU_PROGRAM_MAP(dblpoint_map,0)
301275MACHINE_DRIVER_END
302276
303277ROM_START( gumbo )
src/mame/drivers/getrivia.c
r4679r4680
138138
139139static WRITE8_DEVICE_HANDLER( sound_w )
140140{
141   const address_space *space = cpu_get_address_space(device->machine->cpu[0], ADDRESS_SPACE_PROGRAM);
141   const address_space *space = cputag_get_address_space(device->machine, "cpu", ADDRESS_SPACE_PROGRAM);
142142
143143   /* bit 3 - coin lockout, lamp10 in poker / lamp6 in trivia test modes */
144144   coin_lockout_global_w(~data & 0x08);
r4679r4680
179179
180180static WRITE8_DEVICE_HANDLER( nmi_w )
181181{
182   const address_space *space = cpu_get_address_space(device->machine->cpu[0], ADDRESS_SPACE_PROGRAM);
182   const address_space *space = cputag_get_address_space(device->machine, "cpu", ADDRESS_SPACE_PROGRAM);
183183
184184   /* bit 4 - play/raise button lamp, lamp 9 in selection test mode  */
185185   set_led_status(8,data & 0x10);
src/mame/drivers/scregg.c
r4679r4680
5151
5252#include "driver.h"
5353#include "cpu/m6502/m6502.h"
54#include "deprecat.h"
5554#include "sound/ay8910.h"
5655#include "includes/btime.h"
5756
5857
59static ADDRESS_MAP_START( dommy_readmem, ADDRESS_SPACE_PROGRAM, 8 )
60   AM_RANGE(0x0000, 0x07ff) AM_READ(SMH_RAM)
61   AM_RANGE(0x2000, 0x27ff) AM_READ(SMH_RAM)
62   AM_RANGE(0x2800, 0x2bff) AM_READ(btime_mirrorvideoram_r)
63   AM_RANGE(0x4000, 0x4000) AM_READ_PORT("DSW1")
64   AM_RANGE(0x4001, 0x4001) AM_READ_PORT("DSW2")
58static ADDRESS_MAP_START( dommy_map, ADDRESS_SPACE_PROGRAM, 8 )
59   AM_RANGE(0x0000, 0x07ff) AM_RAM
60   AM_RANGE(0x2000, 0x23ff) AM_RAM AM_BASE(&btime_videoram) AM_SIZE(&btime_videoram_size)
61   AM_RANGE(0x2400, 0x27ff) AM_RAM AM_BASE(&btime_colorram)
62   AM_RANGE(0x2800, 0x2bff) AM_READWRITE(btime_mirrorvideoram_r,btime_mirrorvideoram_w)
63   AM_RANGE(0x4000, 0x4000) AM_READ_PORT("DSW1") AM_WRITENOP
64   AM_RANGE(0x4001, 0x4001) AM_READ_PORT("DSW2") AM_WRITE(btime_video_control_w)
6565/*  AM_RANGE(0x4004, 0x4004)  */ /* this is read */
6666   AM_RANGE(0x4002, 0x4002) AM_READ_PORT("P1")
6767   AM_RANGE(0x4003, 0x4003) AM_READ_PORT("P2")
68   AM_RANGE(0xa000, 0xffff) AM_READ(SMH_ROM)
69ADDRESS_MAP_END
70
71static ADDRESS_MAP_START( dommy_writemem, ADDRESS_SPACE_PROGRAM, 8 )
72   AM_RANGE(0x0000, 0x07ff) AM_WRITE(SMH_RAM)
73   AM_RANGE(0x2000, 0x23ff) AM_WRITE(SMH_RAM) AM_BASE(&btime_videoram) AM_SIZE(&btime_videoram_size)
74   AM_RANGE(0x2400, 0x27ff) AM_WRITE(SMH_RAM) AM_BASE(&btime_colorram)
75   AM_RANGE(0x2800, 0x2bff) AM_WRITE(btime_mirrorvideoram_w)
76   AM_RANGE(0x4000, 0x4000) AM_WRITENOP
77   AM_RANGE(0x4001, 0x4001) AM_WRITE(btime_video_control_w)
7868   AM_RANGE(0x4004, 0x4005) AM_DEVWRITE("ay1", ay8910_address_data_w)
7969   AM_RANGE(0x4006, 0x4007) AM_DEVWRITE("ay2", ay8910_address_data_w)
80   AM_RANGE(0xa000, 0xffff) AM_WRITE(SMH_ROM)
70   AM_RANGE(0xa000, 0xffff) AM_ROM
8171ADDRESS_MAP_END
8272
83static ADDRESS_MAP_START( eggs_readmem, ADDRESS_SPACE_PROGRAM, 8 )
84   AM_RANGE(0x0000, 0x07ff) AM_READ(SMH_RAM)
85   AM_RANGE(0x1000, 0x17ff) AM_READ(SMH_RAM)
86   AM_RANGE(0x1800, 0x1bff) AM_READ(btime_mirrorvideoram_r)
87   AM_RANGE(0x1c00, 0x1fff) AM_READ(btime_mirrorcolorram_r)
88   AM_RANGE(0x2000, 0x2000) AM_READ_PORT("DSW1")
89   AM_RANGE(0x2001, 0x2001) AM_READ_PORT("DSW2")
73
74static ADDRESS_MAP_START( eggs_map, ADDRESS_SPACE_PROGRAM, 8 )
75   AM_RANGE(0x0000, 0x07ff) AM_RAM
76   AM_RANGE(0x1000, 0x13ff) AM_RAM AM_BASE(&btime_videoram) AM_SIZE(&btime_videoram_size)
77   AM_RANGE(0x1400, 0x17ff) AM_RAM AM_BASE(&btime_colorram)
78   AM_RANGE(0x1800, 0x1bff) AM_READWRITE(btime_mirrorvideoram_r,btime_mirrorvideoram_w)
79   AM_RANGE(0x1c00, 0x1fff) AM_READWRITE(btime_mirrorcolorram_r,btime_mirrorcolorram_w)
80   AM_RANGE(0x2000, 0x2000) AM_READ_PORT("DSW1") AM_WRITE(btime_video_control_w)
81   AM_RANGE(0x2001, 0x2001) AM_READ_PORT("DSW2") AM_WRITENOP
9082   AM_RANGE(0x2002, 0x2002) AM_READ_PORT("P1")
9183   AM_RANGE(0x2003, 0x2003) AM_READ_PORT("P2")
92   AM_RANGE(0x3000, 0x7fff) AM_READ(SMH_ROM)
93   AM_RANGE(0xf000, 0xffff) AM_READ(SMH_ROM)    /* reset/interrupt vectors */
94ADDRESS_MAP_END
95
96static ADDRESS_MAP_START( eggs_writemem, ADDRESS_SPACE_PROGRAM, 8 )
97   AM_RANGE(0x0000, 0x07ff) AM_WRITE(SMH_RAM)
98   AM_RANGE(0x1000, 0x13ff) AM_WRITE(SMH_RAM) AM_BASE(&btime_videoram) AM_SIZE(&btime_videoram_size)
99   AM_RANGE(0x1400, 0x17ff) AM_WRITE(SMH_RAM) AM_BASE(&btime_colorram)
100   AM_RANGE(0x1800, 0x1bff) AM_WRITE(btime_mirrorvideoram_w)
101   AM_RANGE(0x1c00, 0x1fff) AM_WRITE(btime_mirrorcolorram_w)
102   AM_RANGE(0x2000, 0x2000) AM_WRITE(btime_video_control_w)
103   AM_RANGE(0x2001, 0x2001) AM_WRITENOP
10484   AM_RANGE(0x2004, 0x2005) AM_DEVWRITE("ay1", ay8910_address_data_w)
10585   AM_RANGE(0x2006, 0x2007) AM_DEVWRITE("ay2", ay8910_address_data_w)
106   AM_RANGE(0x3000, 0x7fff) AM_WRITE(SMH_ROM)
86   AM_RANGE(0x3000, 0x7fff) AM_ROM
87   AM_RANGE(0xf000, 0xffff) AM_ROM    /* reset/interrupt vectors */
10788ADDRESS_MAP_END
10889
10990
110
11191static INPUT_PORTS_START( scregg )
11292   PORT_START("P1")
11393   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_4WAY
r4679r4680
224204
225205   /* basic machine hardware */
226206   MDRV_CPU_ADD("maincpu", M6502, 1500000)
227   MDRV_CPU_PROGRAM_MAP(dommy_readmem,dommy_writemem)
228   MDRV_CPU_VBLANK_INT_HACK(irq0_line_hold,16)
207   MDRV_CPU_PROGRAM_MAP(dommy_map,0)
208   MDRV_CPU_PERIODIC_INT(irq0_line_hold,16*60) //???
229209
230210   /* video hardware */
231211   MDRV_SCREEN_ADD("screen", RASTER)
r4679r4680
257237
258238   /* basic machine hardware */
259239   MDRV_CPU_ADD("maincpu", M6502, 1500000)
260   MDRV_CPU_PROGRAM_MAP(eggs_readmem,eggs_writemem)
261   MDRV_CPU_VBLANK_INT_HACK(irq0_line_hold,16)
240   MDRV_CPU_PROGRAM_MAP(eggs_map,0)
241   MDRV_CPU_PERIODIC_INT(irq0_line_hold,16*60) //???
262242
263243   /* video hardware */
264244   MDRV_SCREEN_ADD("screen", RASTER)
src/mame/drivers/dec0.c
r4679r4680
6464
6565static WRITE16_HANDLER( dec0_control_w )
6666{
67   switch (offset<<1)
67   switch (offset << 1)
6868   {
6969      case 0: /* Playfield & Sprite priority */
70         dec0_priority_w(space,0,data,mem_mask);
70         dec0_priority_w(space, 0, data, mem_mask);
7171         break;
7272
7373      case 2: /* DMA flag */
74         dec0_update_sprites_w(space,0,0,mem_mask);
74         dec0_update_sprites_w(space, 0, 0, mem_mask);
7575         break;
7676
7777      case 4: /* 6502 sound cpu */
7878         if (ACCESSING_BITS_0_7)
7979         {
80            soundlatch_w(space,0,data & 0xff);
81            cpu_set_input_line(space->machine->cpu[1],INPUT_LINE_NMI,PULSE_LINE);
80            soundlatch_w(space, 0, data & 0xff);
81            cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
8282         }
8383         break;
8484
r4679r4680
110110
111111static WRITE16_HANDLER( automat_control_w )
112112{
113   switch (offset<<1)
113   switch (offset << 1)
114114   {
115115      case 0xe: /* 6502 sound cpu */
116116         if (ACCESSING_BITS_0_7)
117117         {
118            soundlatch_w(space,0,data & 0xff);
119            cpu_set_input_line(space->machine->cpu[1], 0 ,HOLD_LINE);
118            soundlatch_w(space, 0, data & 0xff);
119            cputag_set_input_line(space->machine, "audiocpu", 0, HOLD_LINE);
120120         }
121121         break;
122122
123123      case 12: /* DMA flag */
124         dec0_update_sprites_w(space,0,0,mem_mask);
124         dec0_update_sprites_w(space, 0, 0, mem_mask);
125125         break;
126126#if 0
127127      case 8: /* Interrupt ack (VBL - IRQ 6) */
r4679r4680
143143
144144static WRITE16_HANDLER( slyspy_control_w )
145145{
146    switch (offset<<1) {
146    switch (offset << 1)
147   {
147148       case 0:
148149         if (ACCESSING_BITS_0_7)
149150         {
150            soundlatch_w(space,0,data & 0xff);
151            cpu_set_input_line(space->machine->cpu[1],INPUT_LINE_NMI,PULSE_LINE);
151            soundlatch_w(space, 0, data & 0xff);
152            cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
152153         }
153154         break;
154155      case 2:
155         dec0_priority_w(space,0,data,mem_mask);
156         dec0_priority_w(space, 0, data, mem_mask);
156157         break;
157158    }
158159}
r4679r4680
161162{
162163   if (ACCESSING_BITS_0_7)
163164   {
164      soundlatch_w(space,0,data & 0xff);
165      cpu_set_input_line(space->machine->cpu[1],INPUT_LINE_NMI,PULSE_LINE);
165      soundlatch_w(space, 0, data & 0xff);
166      cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
166167   }
167168}
168169
169170/******************************************************************************/
170171
171static ADDRESS_MAP_START( dec0_readmem, ADDRESS_SPACE_PROGRAM, 16 )
172   AM_RANGE(0x000000, 0x05ffff) AM_READ(SMH_ROM)
173   AM_RANGE(0x242800, 0x243fff) AM_READ(SMH_RAM) /* Robocop only */
174   AM_RANGE(0x244000, 0x245fff) AM_READ(SMH_RAM)
175   AM_RANGE(0x24a000, 0x24a7ff) AM_READ(SMH_RAM)
176   AM_RANGE(0x24c800, 0x24c87f) AM_READ(SMH_RAM)
177   AM_RANGE(0x24d000, 0x24d7ff) AM_READ(SMH_RAM)
178   AM_RANGE(0x300000, 0x30001f) AM_READ(dec0_rotary_r)
179   AM_RANGE(0x30c000, 0x30c00b) AM_READ(dec0_controls_r)
180   AM_RANGE(0x310000, 0x3107ff) AM_READ(SMH_RAM)
181   AM_RANGE(0x314000, 0x3147ff) AM_READ(SMH_RAM)
182   AM_RANGE(0xff8000, 0xffbfff) AM_READ(SMH_RAM) /* Main ram */
183   AM_RANGE(0xffc000, 0xffc7ff) AM_READ(SMH_RAM) /* Sprites */
184ADDRESS_MAP_END
185
186static ADDRESS_MAP_START( dec0_writemem, ADDRESS_SPACE_PROGRAM, 16 )
187   AM_RANGE(0x000000, 0x05ffff) AM_WRITE(SMH_ROM)
188   AM_RANGE(0x240000, 0x240007) AM_WRITE(dec0_pf1_control_0_w)   /* text layer */
172static ADDRESS_MAP_START( dec0_map, ADDRESS_SPACE_PROGRAM, 16 )
173   AM_RANGE(0x000000, 0x05ffff) AM_ROM
174   AM_RANGE(0x240000, 0x240007) AM_WRITE(dec0_pf1_control_0_w)                        /* text layer */
189175   AM_RANGE(0x240010, 0x240017) AM_WRITE(dec0_pf1_control_1_w)
190176    AM_RANGE(0x242000, 0x24207f) AM_WRITE(SMH_RAM) AM_BASE(&dec0_pf1_colscroll)
191177   AM_RANGE(0x242400, 0x2427ff) AM_WRITE(SMH_RAM) AM_BASE(&dec0_pf1_rowscroll)
192   AM_RANGE(0x242800, 0x243fff) AM_WRITE(SMH_RAM) /* Robocop only */
193   AM_RANGE(0x244000, 0x245fff) AM_WRITE(dec0_pf1_data_w) AM_BASE(&dec0_pf1_data)
194
195   AM_RANGE(0x246000, 0x246007) AM_WRITE(dec0_pf2_control_0_w)   /* first tile layer */
178   AM_RANGE(0x242800, 0x243fff) AM_RAM                                          /* Robocop only */
179   AM_RANGE(0x244000, 0x245fff) AM_RAM_WRITE(dec0_pf1_data_w) AM_BASE(&dec0_pf1_data)
180   AM_RANGE(0x246000, 0x246007) AM_WRITE(dec0_pf2_control_0_w)                        /* first tile layer */
196181   AM_RANGE(0x246010, 0x246017) AM_WRITE(dec0_pf2_control_1_w)
197182   AM_RANGE(0x248000, 0x24807f) AM_WRITE(SMH_RAM) AM_BASE(&dec0_pf2_colscroll)
198183   AM_RANGE(0x248400, 0x2487ff) AM_WRITE(SMH_RAM) AM_BASE(&dec0_pf2_rowscroll)
199   AM_RANGE(0x24a000, 0x24a7ff) AM_WRITE(dec0_pf2_data_w) AM_BASE(&dec0_pf2_data)
200
201   AM_RANGE(0x24c000, 0x24c007) AM_WRITE(dec0_pf3_control_0_w)   /* second tile layer */
184   AM_RANGE(0x24a000, 0x24a7ff) AM_RAM_WRITE(dec0_pf2_data_w) AM_BASE(&dec0_pf2_data)
185   AM_RANGE(0x24c000, 0x24c007) AM_WRITE(dec0_pf3_control_0_w)                        /* second tile layer */
202186   AM_RANGE(0x24c010, 0x24c017) AM_WRITE(dec0_pf3_control_1_w)
203   AM_RANGE(0x24c800, 0x24c87f) AM_WRITE(SMH_RAM) AM_BASE(&dec0_pf3_colscroll)
187   AM_RANGE(0x24c800, 0x24c87f) AM_RAM AM_BASE(&dec0_pf3_colscroll)
204188   AM_RANGE(0x24cc00, 0x24cfff) AM_WRITE(SMH_RAM) AM_BASE(&dec0_pf3_rowscroll)
205   AM_RANGE(0x24d000, 0x24d7ff) AM_WRITE(dec0_pf3_data_w) AM_BASE(&dec0_pf3_data)
206
207   AM_RANGE(0x30c010, 0x30c01f) AM_WRITE(dec0_control_w)   /* Priority, sound, etc. */
208   AM_RANGE(0x310000, 0x3107ff) AM_WRITE(dec0_paletteram_rg_w) AM_BASE(&paletteram16)   /* Red & Green bits */
209   AM_RANGE(0x314000, 0x3147ff) AM_WRITE(dec0_paletteram_b_w) AM_BASE(&paletteram16_2)   /* Blue bits */
210   AM_RANGE(0xff8000, 0xffbfff) AM_WRITE(SMH_RAM) AM_BASE(&dec0_ram)
211   AM_RANGE(0xffc000, 0xffc7ff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16)
189   AM_RANGE(0x24d000, 0x24d7ff) AM_RAM_WRITE(dec0_pf3_data_w) AM_BASE(&dec0_pf3_data)
190   AM_RANGE(0x300000, 0x30001f) AM_READ(dec0_rotary_r)
191   AM_RANGE(0x30c000, 0x30c00b) AM_READ(dec0_controls_r)
192   AM_RANGE(0x30c010, 0x30c01f) AM_WRITE(dec0_control_w)                           /* Priority, sound, etc. */
193   AM_RANGE(0x310000, 0x3107ff) AM_RAM_WRITE(dec0_paletteram_rg_w) AM_BASE(&paletteram16)
194   AM_RANGE(0x314000, 0x3147ff) AM_RAM_WRITE(dec0_paletteram_b_w) AM_BASE(&paletteram16_2)
195   AM_RANGE(0xff8000, 0xffbfff) AM_RAM AM_BASE(&dec0_ram)                            /* Main ram */
196   AM_RANGE(0xffc000, 0xffc7ff) AM_RAM AM_BASE(&spriteram16)                        /* Sprites */
212197ADDRESS_MAP_END
213198
214static ADDRESS_MAP_START( robocop_sub_readmem, ADDRESS_SPACE_PROGRAM, 8 )
215   AM_RANGE(0x000000, 0x00ffff) AM_READ(SMH_ROM)
216   AM_RANGE(0x1f0000, 0x1f1fff) AM_READ(SMH_RAM) /* Main ram */
217   AM_RANGE(0x1f2000, 0x1f3fff) AM_READ(SMH_RAM) /* Shared ram */
218ADDRESS_MAP_END
219
220static ADDRESS_MAP_START( robocop_sub_writemem, ADDRESS_SPACE_PROGRAM, 8 )
221   AM_RANGE(0x000000, 0x00ffff) AM_WRITE(SMH_ROM)
222   AM_RANGE(0x1f0000, 0x1f1fff) AM_WRITE(SMH_RAM) /* Main ram */
223   AM_RANGE(0x1f2000, 0x1f3fff) AM_WRITE(SMH_RAM) AM_BASE(&robocop_shared_ram) /* Shared ram */
199static ADDRESS_MAP_START( robocop_sub_map, ADDRESS_SPACE_PROGRAM, 8 )
200   AM_RANGE(0x000000, 0x00ffff) AM_ROM
201   AM_RANGE(0x1f0000, 0x1f1fff) AM_RAM                           /* Main ram */
202   AM_RANGE(0x1f2000, 0x1f3fff) AM_RAM AM_BASE(&robocop_shared_ram)   /* Shared ram */
224203   AM_RANGE(0x1ff400, 0x1ff403) AM_WRITE(h6280_irq_status_w)
225204ADDRESS_MAP_END
226205
227static ADDRESS_MAP_START( hippodrm_sub_readmem, ADDRESS_SPACE_PROGRAM, 8 )
228   AM_RANGE(0x000000, 0x00ffff) AM_READ(SMH_ROM)
229   AM_RANGE(0x180000, 0x1800ff) AM_READ(hippodrm_shared_r)
230   AM_RANGE(0x1a1000, 0x1a17ff) AM_READ(dec0_pf3_data_8bit_r)
231   AM_RANGE(0x1d0000, 0x1d00ff) AM_READ(hippodrm_prot_r)
232   AM_RANGE(0x1f0000, 0x1f1fff) AM_READ(SMH_BANK8) /* Main ram */
233   AM_RANGE(0x1ff402, 0x1ff403) AM_READ_PORT("VBLANK")
234ADDRESS_MAP_END
235
236static ADDRESS_MAP_START( hippodrm_sub_writemem, ADDRESS_SPACE_PROGRAM, 8 )
237   AM_RANGE(0x000000, 0x00ffff) AM_WRITE(SMH_ROM)
238   AM_RANGE(0x180000, 0x1800ff) AM_WRITE(hippodrm_shared_w)
206static ADDRESS_MAP_START( hippodrm_sub_map, ADDRESS_SPACE_PROGRAM, 8 )
207   AM_RANGE(0x000000, 0x00ffff) AM_ROM
208   AM_RANGE(0x180000, 0x1800ff) AM_READWRITE(hippodrm_shared_r, hippodrm_shared_w)
239209   AM_RANGE(0x1a0000, 0x1a001f) AM_WRITE(dec0_pf3_control_8bit_w)
240   AM_RANGE(0x1a1000, 0x1a17ff) AM_WRITE(dec0_pf3_data_8bit_w)
241   AM_RANGE(0x1d0000, 0x1d00ff) AM_WRITE(hippodrm_prot_w)
242   AM_RANGE(0x1f0000, 0x1f1fff) AM_WRITE(SMH_BANK8) /* Main ram */
210   AM_RANGE(0x1a1000, 0x1a17ff) AM_READWRITE(dec0_pf3_data_8bit_r, dec0_pf3_data_8bit_w)
211   AM_RANGE(0x1d0000, 0x1d00ff) AM_READWRITE(hippodrm_prot_r, hippodrm_prot_w)
212   AM_RANGE(0x1f0000, 0x1f1fff) AM_RAMBANK(8) /* Main ram */
243213   AM_RANGE(0x1ff400, 0x1ff403) AM_WRITE(h6280_irq_status_w)
214   AM_RANGE(0x1ff402, 0x1ff403) AM_READ_PORT("VBLANK")
244215ADDRESS_MAP_END
245216
246static ADDRESS_MAP_START( slyspy_readmem, ADDRESS_SPACE_PROGRAM, 16 )
247   AM_RANGE(0x000000, 0x05ffff) AM_READ(SMH_ROM)
248   AM_RANGE(0x244000, 0x244001) AM_READ(slyspy_state_r) /* protection */
249   AM_RANGE(0x304000, 0x307fff) AM_READ(SMH_RAM) /* Sly spy main ram */
250   AM_RANGE(0x308000, 0x3087ff) AM_READ(SMH_RAM) /* Sprites */
251   AM_RANGE(0x310000, 0x3107ff) AM_READ(SMH_RAM)
252   AM_RANGE(0x314008, 0x31400f) AM_READ(slyspy_controls_r)
253   AM_RANGE(0x31c000, 0x31c00f) AM_READ(slyspy_protection_r)
254ADDRESS_MAP_END
217static ADDRESS_MAP_START( slyspy_map, ADDRESS_SPACE_PROGRAM, 16 )
218   AM_RANGE(0x000000, 0x05ffff) AM_ROM
255219
256static ADDRESS_MAP_START( slyspy_writemem, ADDRESS_SPACE_PROGRAM, 16 )
257   AM_RANGE(0x000000, 0x05ffff) AM_WRITE(SMH_ROM)
258
259220   /* These locations aren't real!  They are just there so memory is allocated */
221   AM_RANGE(0x200000, 0x2007ff) AM_WRITENOP AM_BASE(&dec0_pf2_data)
222   AM_RANGE(0x202000, 0x203fff) AM_WRITENOP AM_BASE(&dec0_pf1_data)
260223   AM_RANGE(0x232000, 0x23207f) AM_WRITENOP AM_BASE(&dec0_pf2_colscroll)
261224   AM_RANGE(0x232400, 0x2327ff) AM_WRITENOP AM_BASE(&dec0_pf2_rowscroll)
262225   AM_RANGE(0x23c000, 0x23c07f) AM_WRITENOP AM_BASE(&dec0_pf1_colscroll)
263226   AM_RANGE(0x23c400, 0x23c7ff) AM_WRITENOP AM_BASE(&dec0_pf1_rowscroll)
264   AM_RANGE(0x200000, 0x2007ff) AM_WRITENOP AM_BASE(&dec0_pf2_data)
265   AM_RANGE(0x202000, 0x203fff) AM_WRITENOP AM_BASE(&dec0_pf1_data)
266227
267   AM_RANGE(0x244000, 0x244001) AM_WRITENOP /* Extra protection? */
228   AM_RANGE(0x244000, 0x244001) AM_READ(slyspy_state_r) AM_WRITENOP /* protection */
268229
269230   /* The location of p1 & pf2 can change between these according to protection */
270231   AM_RANGE(0x240000, 0x241fff) AM_WRITE(slyspy_240000_w)
271232   AM_RANGE(0x242000, 0x243fff) AM_WRITE(slyspy_242000_w)
272233   AM_RANGE(0x246000, 0x247fff) AM_WRITE(slyspy_246000_w)
273234   AM_RANGE(0x248000, 0x249fff) AM_WRITE(slyspy_248000_w)
235   AM_RANGE(0x24a000, 0x24a001) AM_WRITE(slyspy_state_w) /* Protection */
274236   AM_RANGE(0x24c000, 0x24dfff) AM_WRITE(slyspy_24c000_w)
275237   AM_RANGE(0x24e000, 0x24ffff) AM_WRITE(slyspy_24e000_w)
276238
277   AM_RANGE(0x24a000, 0x24a001) AM_WRITE(slyspy_state_w) /* Protection */
278
279239   /* Pf3 is unaffected by protection */
280240   AM_RANGE(0x300000, 0x300007) AM_WRITE(dec0_pf3_control_0_w)
281241   AM_RANGE(0x300010, 0x300017) AM_WRITE(dec0_pf3_control_1_w)
r4679r4680
283243   AM_RANGE(0x300c00, 0x300fff) AM_WRITE(SMH_RAM) AM_BASE(&dec0_pf3_rowscroll)
284244   AM_RANGE(0x301000, 0x3017ff) AM_WRITE(dec0_pf3_data_w) AM_BASE(&dec0_pf3_data)
285245
286   AM_RANGE(0x304000, 0x307fff) AM_WRITE(SMH_RAM) AM_BASE(&dec0_ram) /* Sly spy main ram */
287   AM_RANGE(0x308000, 0x3087ff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16)
288   AM_RANGE(0x310000, 0x3107ff) AM_WRITE(paletteram16_xxxxBBBBGGGGRRRR_word_w) AM_BASE(&paletteram16)
246   AM_RANGE(0x304000, 0x307fff) AM_RAM AM_BASE(&dec0_ram)    /* Sly spy main ram */
247   AM_RANGE(0x308000, 0x3087ff) AM_RAM AM_BASE(&spriteram16)   /* Sprites */
248   AM_RANGE(0x310000, 0x3107ff) AM_RAM_WRITE(paletteram16_xxxxBBBBGGGGRRRR_word_w) AM_BASE(&paletteram16)
289249   AM_RANGE(0x314000, 0x314003) AM_WRITE(slyspy_control_w)
290   AM_RANGE(0x31c000, 0x31c00f) AM_WRITENOP
250   AM_RANGE(0x314008, 0x31400f) AM_READ(slyspy_controls_r)
251   AM_RANGE(0x31c000, 0x31c00f) AM_READ(slyspy_protection_r) AM_WRITENOP
291252ADDRESS_MAP_END
292253
293static ADDRESS_MAP_START( midres_readmem, ADDRESS_SPACE_PROGRAM, 16 )
294   AM_RANGE(0x000000, 0x07ffff) AM_READ(SMH_ROM)
295   AM_RANGE(0x100000, 0x103fff) AM_READ(SMH_RAM)
296   AM_RANGE(0x120000, 0x1207ff) AM_READ(SMH_RAM)
297   AM_RANGE(0x180000, 0x18000f) AM_READ(midres_controls_r)
298   AM_RANGE(0x240000, 0x24007f) AM_READ(SMH_RAM)
299   AM_RANGE(0x240400, 0x2407ff) AM_READ(SMH_RAM)
300   AM_RANGE(0x2c0000, 0x2c007f) AM_READ(SMH_RAM)
301   AM_RANGE(0x2c0400, 0x2c07ff) AM_READ(SMH_RAM)
302   AM_RANGE(0x340000, 0x34007f) AM_READ(SMH_RAM)
303   AM_RANGE(0x340400, 0x3407ff) AM_READ(SMH_RAM)
304   AM_RANGE(0x320000, 0x321fff) AM_READ(SMH_RAM)
305ADDRESS_MAP_END
306
307static ADDRESS_MAP_START( midres_writemem, ADDRESS_SPACE_PROGRAM, 16 )
308   AM_RANGE(0x000000, 0x07ffff) AM_WRITE(SMH_ROM)
309   AM_RANGE(0x100000, 0x103fff) AM_WRITE(SMH_RAM) AM_BASE(&dec0_ram)
310   AM_RANGE(0x120000, 0x1207ff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16)
254static ADDRESS_MAP_START( midres_map, ADDRESS_SPACE_PROGRAM, 16 )
255   AM_RANGE(0x000000, 0x07ffff) AM_ROM
256   AM_RANGE(0x100000, 0x103fff) AM_RAM AM_BASE(&dec0_ram)
257   AM_RANGE(0x120000, 0x1207ff) AM_RAM AM_BASE(&spriteram16)
311258   AM_RANGE(0x140000, 0x1407ff) AM_WRITE(paletteram16_xxxxBBBBGGGGRRRR_word_w) AM_BASE(&paletteram16)
312259   AM_RANGE(0x160000, 0x160001) AM_WRITE(dec0_priority_w)
260   AM_RANGE(0x180000, 0x18000f) AM_READ(midres_controls_r)
313261   AM_RANGE(0x180008, 0x18000f) AM_WRITENOP /* ?? watchdog ?? */
314262   AM_RANGE(0x1a0000, 0x1a0001) AM_WRITE(midres_sound_w)
315263
r4679r4680
317265   AM_RANGE(0x200010, 0x200017) AM_WRITE(dec0_pf2_control_1_w)
318266   AM_RANGE(0x220000, 0x2207ff) AM_WRITE(dec0_pf2_data_w) AM_BASE(&dec0_pf2_data)
319267   AM_RANGE(0x220800, 0x220fff) AM_WRITE(dec0_pf2_data_w)   /* mirror address used in end sequence */
320   AM_RANGE(0x240000, 0x24007f) AM_WRITE(SMH_RAM) AM_BASE(&dec0_pf2_colscroll)
321   AM_RANGE(0x240400, 0x2407ff) AM_WRITE(SMH_RAM) AM_BASE(&dec0_pf2_rowscroll)
268   AM_RANGE(0x240000, 0x24007f) AM_RAM AM_BASE(&dec0_pf2_colscroll)
269   AM_RANGE(0x240400, 0x2407ff) AM_RAM AM_BASE(&dec0_pf2_rowscroll)
322270
323271   AM_RANGE(0x280000, 0x280007) AM_WRITE(dec0_pf3_control_0_w)
324272   AM_RANGE(0x280010, 0x280017) AM_WRITE(dec0_pf3_control_1_w)
325273   AM_RANGE(0x2a0000, 0x2a07ff) AM_WRITE(dec0_pf3_data_w) AM_BASE(&dec0_pf3_data)
326   AM_RANGE(0x2c0000, 0x2c007f) AM_WRITE(SMH_RAM) AM_BASE(&dec0_pf3_colscroll)
327   AM_RANGE(0x2c0400, 0x2c07ff) AM_WRITE(SMH_RAM) AM_BASE(&dec0_pf3_rowscroll)
274   AM_RANGE(0x2c0000, 0x2c007f) AM_RAM AM_BASE(&dec0_pf3_colscroll)
275   AM_RANGE(0x2c0400, 0x2c07ff) AM_RAM AM_BASE(&dec0_pf3_rowscroll)
328276
329277   AM_RANGE(0x300000, 0x300007) AM_WRITE(dec0_pf1_control_0_w)
330278   AM_RANGE(0x300010, 0x300017) AM_WRITE(dec0_pf1_control_1_w)
331279   AM_RANGE(0x320000, 0x321fff) AM_WRITE(dec0_pf1_data_w) AM_BASE(&dec0_pf1_data)
332   AM_RANGE(0x340000, 0x34007f) AM_WRITE(SMH_RAM) AM_BASE(&dec0_pf1_colscroll)
333   AM_RANGE(0x340400, 0x3407ff) AM_WRITE(SMH_RAM) AM_BASE(&dec0_pf1_rowscroll)
280   AM_RANGE(0x340000, 0x34007f) AM_RAM AM_BASE(&dec0_pf1_colscroll)
281   AM_RANGE(0x340400, 0x3407ff) AM_RAM AM_BASE(&dec0_pf1_rowscroll)
282
283   AM_RANGE(0x320000, 0x321fff) AM_RAM
334284ADDRESS_MAP_END
335285
336286/******************************************************************************/
337287
338static ADDRESS_MAP_START( dec0_s_readmem, ADDRESS_SPACE_PROGRAM, 8 )
339   AM_RANGE(0x0000, 0x05ff) AM_READ(SMH_RAM)
340   AM_RANGE(0x3000, 0x3000) AM_READ(soundlatch_r)
341   AM_RANGE(0x3800, 0x3800) AM_DEVREAD("oki", okim6295_r)
342   AM_RANGE(0x8000, 0xffff) AM_READ(SMH_ROM)
343ADDRESS_MAP_END
344
345static ADDRESS_MAP_START( dec0_s_writemem, ADDRESS_SPACE_PROGRAM, 8 )
346   AM_RANGE(0x0000, 0x05ff) AM_WRITE(SMH_RAM)
288static ADDRESS_MAP_START( dec0_s_map, ADDRESS_SPACE_PROGRAM, 8 )
289   AM_RANGE(0x0000, 0x05ff) AM_RAM
347290   AM_RANGE(0x0800, 0x0801) AM_DEVWRITE("ym1", ym2203_w)
348291   AM_RANGE(0x1000, 0x1001) AM_DEVWRITE("ym2", ym3812_w)
349   AM_RANGE(0x3800, 0x3800) AM_DEVWRITE("oki", okim6295_w)
350   AM_RANGE(0x8000, 0xffff) AM_WRITE(SMH_ROM)
292   AM_RANGE(0x3000, 0x3000) AM_READ(soundlatch_r)
293   AM_RANGE(0x3800, 0x3800) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w)
294   AM_RANGE(0x8000, 0xffff) AM_RAM
351295ADDRESS_MAP_END
352296
353297/* Physical memory map (21 bits) */
354static ADDRESS_MAP_START( slyspy_s_readmem, ADDRESS_SPACE_PROGRAM, 8 )
355   AM_RANGE(0x000000, 0x00ffff) AM_READ(SMH_ROM)
356   AM_RANGE(0x0a0000, 0x0a0001) AM_READNOP /* Protection counter */
357   AM_RANGE(0x0e0000, 0x0e0001) AM_DEVREAD("oki", okim6295_r)
358   AM_RANGE(0x0f0000, 0x0f0001) AM_READ(soundlatch_r)
359   AM_RANGE(0x1f0000, 0x1f1fff) AM_READ(SMH_BANK8)
360ADDRESS_MAP_END
361
362static ADDRESS_MAP_START( slyspy_s_writemem, ADDRESS_SPACE_PROGRAM, 8 )
363   AM_RANGE(0x000000, 0x00ffff) AM_WRITE(SMH_ROM)
298static ADDRESS_MAP_START( slyspy_s_map, ADDRESS_SPACE_PROGRAM, 8 )
299   AM_RANGE(0x000000, 0x00ffff) AM_ROM
364300   AM_RANGE(0x090000, 0x090001) AM_DEVWRITE("ym2", ym3812_w)
301   AM_RANGE(0x0a0000, 0x0a0001) AM_READNOP /* Protection counter */
365302   AM_RANGE(0x0b0000, 0x0b0001) AM_DEVWRITE("ym1", ym2203_w)
366   AM_RANGE(0x0e0000, 0x0e0001) AM_DEVWRITE("oki", okim6295_w)
367   AM_RANGE(0x1f0000, 0x1f1fff) AM_WRITE(SMH_BANK8) /* Main ram */
303   AM_RANGE(0x0e0000, 0x0e0001) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w)
304   AM_RANGE(0x0f0000, 0x0f0001) AM_READ(soundlatch_r)
305   AM_RANGE(0x1f0000, 0x1f1fff) AM_RAMBANK(8)
368306   AM_RANGE(0x1ff400, 0x1ff403) AM_WRITE(h6280_irq_status_w)
369307ADDRESS_MAP_END
370308
371static ADDRESS_MAP_START( midres_s_readmem, ADDRESS_SPACE_PROGRAM, 8 )
372   AM_RANGE(0x000000, 0x00ffff) AM_READ(SMH_ROM)
373   AM_RANGE(0x130000, 0x130001) AM_DEVREAD("oki", okim6295_r)
374   AM_RANGE(0x138000, 0x138001) AM_READ(soundlatch_r)
375   AM_RANGE(0x1f0000, 0x1f1fff) AM_READ(SMH_BANK8)
376ADDRESS_MAP_END
377
378static ADDRESS_MAP_START( midres_s_writemem, ADDRESS_SPACE_PROGRAM, 8 )
379   AM_RANGE(0x000000, 0x00ffff) AM_WRITE(SMH_ROM)
309static ADDRESS_MAP_START( midres_s_map, ADDRESS_SPACE_PROGRAM, 8 )
310   AM_RANGE(0x000000, 0x00ffff) AM_ROM
380311   AM_RANGE(0x108000, 0x108001) AM_DEVWRITE("ym2", ym3812_w)
381312   AM_RANGE(0x118000, 0x118001) AM_DEVWRITE("ym1", ym2203_w)
382   AM_RANGE(0x130000, 0x130001) AM_DEVWRITE("oki", okim6295_w)
383   AM_RANGE(0x1f0000, 0x1f1fff) AM_WRITE(SMH_BANK8) /* Main ram */
313   AM_RANGE(0x130000, 0x130001) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w)
314   AM_RANGE(0x138000, 0x138001) AM_READ(soundlatch_r)
315   AM_RANGE(0x1f0000, 0x1f1fff) AM_RAMBANK(8)
384316   AM_RANGE(0x1ff400, 0x1ff403) AM_WRITE(h6280_irq_status_w)
385317ADDRESS_MAP_END
386318
r4679r4680
412344   AM_RANGE(0xb08000, 0xb087ff) AM_RAM AM_BASE(&spriteram16) /* Sprites */
413345ADDRESS_MAP_END
414346
415static ADDRESS_MAP_START( automat_readmem, ADDRESS_SPACE_PROGRAM, 16 )
416   AM_RANGE(0x000000, 0x05ffff) AM_READ(SMH_ROM)
417   AM_RANGE(0x242800, 0x243fff) AM_READ(SMH_RAM) /* Robocop only */
418   AM_RANGE(0x244000, 0x245fff) AM_READ(SMH_RAM)
419   AM_RANGE(0x24a000, 0x24a7ff) AM_READ(SMH_RAM)
420   AM_RANGE(0x24c800, 0x24c87f) AM_READ(SMH_RAM)
421   AM_RANGE(0x24d000, 0x24d7ff) AM_READ(SMH_RAM)
422   AM_RANGE(0x300000, 0x30001f) AM_READ(dec0_rotary_r)
423   AM_RANGE(0x30c000, 0x30c00b) AM_READ(dec0_controls_r)
424   AM_RANGE(0x310000, 0x3107ff) AM_READ(SMH_RAM)
425   AM_RANGE(0x314000, 0x3147ff) AM_READ(SMH_RAM)
426   AM_RANGE(0xff8000, 0xffbfff) AM_READ(SMH_RAM) /* Main ram */
427   AM_RANGE(0xffc000, 0xffc7ff) AM_READ(SMH_RAM) /* Sprites */
428ADDRESS_MAP_END
347static ADDRESS_MAP_START( automat_map, ADDRESS_SPACE_PROGRAM, 16 )
348   AM_RANGE(0x000000, 0x05ffff) AM_ROM
429349
430static ADDRESS_MAP_START( automat_writemem, ADDRESS_SPACE_PROGRAM, 16 )
431   AM_RANGE(0x000000, 0x05ffff) AM_WRITE(SMH_ROM)
432   AM_RANGE(0x240000, 0x240007) AM_WRITE(dec0_pf1_control_0_w)   /* text layer */
350   AM_RANGE(0x240000, 0x240007) AM_WRITE(dec0_pf1_control_0_w)         /* text layer */
433351   AM_RANGE(0x240010, 0x240017) AM_WRITE(dec0_pf1_control_1_w)
434352   AM_RANGE(0x242000, 0x24207f) AM_WRITE(SMH_RAM) AM_BASE(&dec0_pf1_colscroll)
435353   AM_RANGE(0x242400, 0x2427ff) AM_WRITE(SMH_RAM) AM_BASE(&dec0_pf1_rowscroll)
436   AM_RANGE(0x242800, 0x243fff) AM_WRITE(SMH_RAM) /* Robocop only */
437   AM_RANGE(0x244000, 0x245fff) AM_WRITE(dec0_pf1_data_w) AM_BASE(&dec0_pf1_data)
438354
439   AM_RANGE(0x246000, 0x246007) AM_WRITE(dec0_pf2_control_0_w)   /* first tile layer */
355   AM_RANGE(0x242800, 0x243fff) AM_RAM                         /* Robocop only */
356   AM_RANGE(0x244000, 0x245fff) AM_RAM_WRITE(dec0_pf1_data_w) AM_BASE(&dec0_pf1_data)
357
358   AM_RANGE(0x246000, 0x246007) AM_WRITE(dec0_pf2_control_0_w)         /* first tile layer */
440359   AM_RANGE(0x246010, 0x246017) AM_WRITE(dec0_pf2_control_1_w)
441360   AM_RANGE(0x248000, 0x24807f) AM_WRITE(SMH_RAM) AM_BASE(&dec0_pf2_colscroll)
442361   AM_RANGE(0x248400, 0x2487ff) AM_WRITE(SMH_RAM) AM_BASE(&dec0_pf2_rowscroll)
443   AM_RANGE(0x24a000, 0x24a7ff) AM_WRITE(dec0_pf2_data_w) AM_BASE(&dec0_pf2_data)
444362
445   AM_RANGE(0x24c000, 0x24c007) AM_WRITE(dec0_pf3_control_0_w)   /* second tile layer */
363   AM_RANGE(0x24a000, 0x24a7ff) AM_RAM_WRITE(dec0_pf2_data_w) AM_BASE(&dec0_pf2_data)
364   AM_RANGE(0x24c000, 0x24c007) AM_WRITE(dec0_pf3_control_0_w)         /* second tile layer */
446365   AM_RANGE(0x24c010, 0x24c017) AM_WRITE(dec0_pf3_control_1_w)
447   AM_RANGE(0x24c800, 0x24c87f) AM_WRITE(SMH_RAM) AM_BASE(&dec0_pf3_colscroll)
366   AM_RANGE(0x24c800, 0x24c87f) AM_RAM AM_BASE(&dec0_pf3_colscroll)
448367   AM_RANGE(0x24cc00, 0x24cfff) AM_WRITE(SMH_RAM) AM_BASE(&dec0_pf3_rowscroll)
449   AM_RANGE(0x24d000, 0x24d7ff) AM_WRITE(dec0_pf3_data_w) AM_BASE(&dec0_pf3_data)
450
451   AM_RANGE(0x30c000, 0x30c01f) AM_WRITE(automat_control_w)   /* Priority, sound, etc. */
452   AM_RANGE(0x310000, 0x3107ff) AM_WRITE(paletteram16_xxxxBBBBGGGGRRRR_word_w) AM_BASE(&paletteram16)
453   AM_RANGE(0x400008, 0x400009) AM_WRITE(dec0_priority_w) // NEW
454   AM_RANGE(0xff8000, 0xffbfff) AM_WRITE(SMH_RAM) AM_BASE(&dec0_ram)
455   AM_RANGE(0xffc000, 0xffc7ff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16)
368   AM_RANGE(0x24d000, 0x24d7ff) AM_RAM_WRITE(dec0_pf3_data_w) AM_BASE(&dec0_pf3_data)
369   AM_RANGE(0x300000, 0x30001f) AM_READ(dec0_rotary_r)
370   AM_RANGE(0x30c000, 0x30c00b) AM_READ(dec0_controls_r)
371   AM_RANGE(0x30c000, 0x30c01f) AM_WRITE(automat_control_w)         /* Priority, sound, etc. */
372   AM_RANGE(0x310000, 0x3107ff) AM_RAM_WRITE(paletteram16_xxxxBBBBGGGGRRRR_word_w) AM_BASE(&paletteram16)
373   AM_RANGE(0x314000, 0x3147ff) AM_READ(SMH_RAM)
374   AM_RANGE(0x400008, 0x400009) AM_WRITE(dec0_priority_w)             // NEW
375   AM_RANGE(0xff8000, 0xffbfff) AM_RAM AM_BASE(&dec0_ram)             /* Main ram */
376   AM_RANGE(0xffc000, 0xffc7ff) AM_RAM AM_BASE(&spriteram16)          /* Sprites */
456377ADDRESS_MAP_END
457378
458
459379static WRITE8_HANDLER( automat_adpcm_w )
460380{
461381   automat_adpcm_byte = data;
462382}
463383
464static ADDRESS_MAP_START( automat_s_mem, ADDRESS_SPACE_PROGRAM, 8 )
384static ADDRESS_MAP_START( automat_s_map, ADDRESS_SPACE_PROGRAM, 8 )
465385   AM_RANGE(0xc000, 0xc7ff) AM_RAM
466386//  AM_RANGE(0xc800, 0xc800) AM_WRITE(ym2203_control_port_0_w)
467387//  AM_RANGE(0xc801, 0xc801) AM_WRITE(ym2203_write_port_0_w)
r4679r4680
1025945
1026946static void sound_irq(const device_config *device, int linestate)
1027947{
1028   cpu_set_input_line(device->machine->cpu[1],0,linestate); /* IRQ */
948   cputag_set_input_line(device->machine, "audiocpu", 0, linestate); /* IRQ */
1029949}
1030950
1031951static void sound_irq2(const device_config *device, int linestate)
1032952{
1033   cpu_set_input_line(device->machine->cpu[1],1,linestate); /* IRQ2 */
953   cputag_set_input_line(device->machine, "audiocpu", 1, linestate); /* IRQ2 */
1034954}
1035955
1036956static const ym3812_interface ym3812_config =
r4679r4680
1055975   else
1056976   {
1057977      msm5205_data_w(device, automat_adpcm_byte >> 4);
1058      cpu_set_input_line(device->machine->cpu[1], INPUT_LINE_NMI, PULSE_LINE);
978      cputag_set_input_line(device->machine, "maincpu", INPUT_LINE_NMI, PULSE_LINE);
1059979   }
1060980
1061981   automat_msm5205_vclk_toggle ^= 1;
r4679r4680
1072992
1073993   /* basic machine hardware */
1074994   MDRV_CPU_ADD("maincpu", M68000, 10000000)
1075   MDRV_CPU_PROGRAM_MAP(automat_readmem, automat_writemem)
995   MDRV_CPU_PROGRAM_MAP(automat_map,0)
1076996   MDRV_CPU_VBLANK_INT("screen", irq6_line_hold)/* VBL */
1077997
1078998   MDRV_CPU_ADD("audiocpu", Z80, 3000000)// ?
1079   MDRV_CPU_PROGRAM_MAP(automat_s_mem, 0)
999   MDRV_CPU_PROGRAM_MAP(automat_s_map,0)
10801000
10811001   /* video hardware */
10821002   MDRV_SCREEN_ADD("screen", RASTER)
r4679r4680
11161036
11171037   /* basic machine hardware */
11181038   MDRV_CPU_ADD("maincpu", M68000, 10000000)
1119   MDRV_CPU_PROGRAM_MAP(dec0_readmem,dec0_writemem)
1039   MDRV_CPU_PROGRAM_MAP(dec0_map,0)
11201040   MDRV_CPU_VBLANK_INT("screen", irq6_line_hold)/* VBL, level 5 interrupts from i8751 */
11211041
11221042   MDRV_CPU_ADD("audiocpu", M6502, 1500000)
1123   MDRV_CPU_PROGRAM_MAP(dec0_s_readmem,dec0_s_writemem)
1043   MDRV_CPU_PROGRAM_MAP(dec0_s_map,0)
11241044
11251045   /* video hardware */
11261046   MDRV_SCREEN_ADD("screen", RASTER)
r4679r4680
11581078
11591079   /* basic machine hardware */
11601080   MDRV_CPU_ADD("maincpu", M68000, 10000000)
1161   MDRV_CPU_PROGRAM_MAP(dec0_readmem,dec0_writemem)
1081   MDRV_CPU_PROGRAM_MAP(dec0_map,0)
11621082   MDRV_CPU_VBLANK_INT("screen", irq6_line_hold)/* VBL, level 5 interrupts from i8751 */
11631083
11641084   MDRV_CPU_ADD("audiocpu", M6502, 1500000)
1165   MDRV_CPU_PROGRAM_MAP(dec0_s_readmem,dec0_s_writemem)
1085   MDRV_CPU_PROGRAM_MAP(dec0_s_map,0)
11661086
11671087   /* video hardware */
11681088   MDRV_SCREEN_ADD("screen", RASTER)
r4679r4680
12001120
12011121   /* basic machine hardware */
12021122   MDRV_CPU_ADD("maincpu", M68000, 10000000)
1203   MDRV_CPU_PROGRAM_MAP(dec0_readmem,dec0_writemem)
1123   MDRV_CPU_PROGRAM_MAP(dec0_map,0)
12041124   MDRV_CPU_VBLANK_INT("screen", irq6_line_hold)/* VBL, level 5 interrupts from i8751 */
12051125
12061126   MDRV_CPU_ADD("audiocpu", M6502, 1500000)
1207   MDRV_CPU_PROGRAM_MAP(dec0_s_readmem,dec0_s_writemem)
1127   MDRV_CPU_PROGRAM_MAP(dec0_s_map,0)
12081128
12091129   /* video hardware */
12101130   MDRV_SCREEN_ADD("screen", RASTER)
r4679r4680
12421162
12431163   /* basic machine hardware */
12441164   MDRV_CPU_ADD("maincpu", M68000, 10000000)
1245   MDRV_CPU_PROGRAM_MAP(dec0_readmem,dec0_writemem)
1165   MDRV_CPU_PROGRAM_MAP(dec0_map,0)
12461166   MDRV_CPU_VBLANK_INT("screen", irq6_line_hold)/* VBL */
12471167
12481168   MDRV_CPU_ADD("audiocpu", M6502, 1500000)
1249   MDRV_CPU_PROGRAM_MAP(dec0_s_readmem,dec0_s_writemem)
1169   MDRV_CPU_PROGRAM_MAP(dec0_s_map,0)
12501170
12511171   MDRV_CPU_ADD("sub", H6280,21477200/16) /* 21.4772MHz clock */
1252   MDRV_CPU_PROGRAM_MAP(robocop_sub_readmem,robocop_sub_writemem)
1172   MDRV_CPU_PROGRAM_MAP(robocop_sub_map,0)
12531173
12541174   MDRV_QUANTUM_TIME(HZ(3000))   /* Interleave between HuC6280 & 68000 */
12551175
r4679r4680
12891209
12901210   /* basic machine hardware */
12911211   MDRV_CPU_ADD("maincpu", M68000, 10000000)
1292   MDRV_CPU_PROGRAM_MAP(dec0_readmem,dec0_writemem)
1212   MDRV_CPU_PROGRAM_MAP(dec0_map,0)
12931213   MDRV_CPU_VBLANK_INT("screen", irq6_line_hold)/* VBL */
12941214
12951215   MDRV_CPU_ADD("audiocpu", M6502, 1500000)
1296   MDRV_CPU_PROGRAM_MAP(dec0_s_readmem,dec0_s_writemem)
1216   MDRV_CPU_PROGRAM_MAP(dec0_s_map,0)
12971217
12981218   /* video hardware */
12991219   MDRV_SCREEN_ADD("screen", RASTER)
r4679r4680
13311251
13321252   /* basic machine hardware */
13331253   MDRV_CPU_ADD("maincpu", M68000, 10000000)
1334   MDRV_CPU_PROGRAM_MAP(dec0_readmem,dec0_writemem)
1254   MDRV_CPU_PROGRAM_MAP(dec0_map,0)
13351255   MDRV_CPU_VBLANK_INT("screen", irq6_line_hold)/* VBL */
13361256
13371257   MDRV_CPU_ADD("audiocpu", M6502, 1500000)
1338   MDRV_CPU_PROGRAM_MAP(dec0_s_readmem,dec0_s_writemem)
1258   MDRV_CPU_PROGRAM_MAP(dec0_s_map,0)
13391259
13401260   MDRV_CPU_ADD("sub", H6280,21477200/16) /* 21.4772MHz clock */
1341   MDRV_CPU_PROGRAM_MAP(hippodrm_sub_readmem,hippodrm_sub_writemem)
1261   MDRV_CPU_PROGRAM_MAP(hippodrm_sub_map,0)
13421262
13431263   MDRV_QUANTUM_TIME(HZ(300))   /* Interleave between H6280 & 68000 */
13441264
r4679r4680
13781298
13791299   /* basic machine hardware */
13801300   MDRV_CPU_ADD("maincpu", M68000, XTAL_20MHz/2) /* verified on pcb (20MHZ OSC) 68000P12 running at 10Mhz */
1381   MDRV_CPU_PROGRAM_MAP(slyspy_readmem,slyspy_writemem)
1301   MDRV_CPU_PROGRAM_MAP(slyspy_map,0)
13821302   MDRV_CPU_VBLANK_INT("screen", irq6_line_hold)/* VBL */
13831303
13841304   MDRV_CPU_ADD("audiocpu", H6280, XTAL_12MHz/2/3) /* verified on pcb (6Mhz is XIN on pin 10 of H6280, verified on pcb */
1385   MDRV_CPU_PROGRAM_MAP(slyspy_s_readmem,slyspy_s_writemem)
1305   MDRV_CPU_PROGRAM_MAP(slyspy_s_map,0)
13861306
13871307   /* video hardware */
13881308   MDRV_SCREEN_ADD("screen", RASTER)
r4679r4680
14251345
14261346   /* z80 */
14271347//  MDRV_CPU_ADD("audiocpu", H6280, XTAL_12MHz/2/3) /* verified on pcb (6Mhz is XIN on pin 10 of H6280, verified on pcb */
1428//  MDRV_CPU_PROGRAM_MAP(slyspy_s_readmem,slyspy_s_writemem)
1348//  MDRV_CPU_PROGRAM_MAP(slyspy_s_map,0)
14291349
14301350   /* video hardware */
14311351   MDRV_SCREEN_ADD("screen", RASTER)
r4679r4680
14631383
14641384   /* basic machine hardware */
14651385   MDRV_CPU_ADD("maincpu", M68000, XTAL_20MHz/2) /* verified on pcb (20MHZ OSC) 68000P12 running at 10Mhz */
1466   MDRV_CPU_PROGRAM_MAP(midres_readmem,midres_writemem)
1386   MDRV_CPU_PROGRAM_MAP(midres_map,0)
14671387   MDRV_CPU_VBLANK_INT("screen", irq6_line_hold)/* VBL */
14681388
14691389   MDRV_CPU_ADD("audiocpu", H6280, XTAL_24MHz/4/3) /* verified on pcb (6Mhz is XIN on pin 10 of H6280, verified on pcb */
1470   MDRV_CPU_PROGRAM_MAP(midres_s_readmem,midres_s_writemem)
1390   MDRV_CPU_PROGRAM_MAP(midres_s_map,0)
14711391
14721392   /* video hardware */
14731393   MDRV_SCREEN_ADD("screen", RASTER)
src/mame/drivers/ssv.c
r4679r4680
203203/* Update the IRQ state based on all possible causes */
204204static void update_irq_state(running_machine *machine)
205205{
206   cpu_set_input_line(machine->cpu[0], 0, (requested_int & irq_enable)? ASSERT_LINE : CLEAR_LINE);
206   cputag_set_input_line(machine, "maincpu", 0, (requested_int & irq_enable)? ASSERT_LINE : CLEAR_LINE);
207207}
208208
209209static IRQ_CALLBACK(ssv_irq_callback)
r4679r4680
339339static MACHINE_RESET( ssv )
340340{
341341   requested_int = 0;
342   cpu_set_irq_callback(machine->cpu[0], ssv_irq_callback);
342   cpu_set_irq_callback(cputag_get_cpu(machine, "maincpu"), ssv_irq_callback);
343343   memory_set_bankptr(machine, 1, memory_region(machine, "user1"));
344344}
345345
r4679r4680
397397   if(offset == 0x21 && dsp_ram[0x21]) {
398398      switch(dsp_ram[0x20]) {
399399      case 0x0001:
400         dsp_ram[0x11] = (UINT8)(128*atan2(dsp_ram[0] - dsp_ram[1], dsp_ram[2] - dsp_ram[3])/M_PI) ^ 0x80;
400         dsp_ram[0x11] = (UINT8)(128*atan2((double)(dsp_ram[0] - dsp_ram[1]), (double)(dsp_ram[2] - dsp_ram[3]))/M_PI) ^ 0x80;
401401         dsp_ram[0x21] = 0;
402402         break;
403403      default:
r4679r4680
422422static READ16_HANDLER( fake_r )   {   return ssv_scroll[offset];  }
423423#endif
424424
425#define SSV_READMEM( _ROM  )                                          \
426   AM_RANGE(0x000000, 0x00ffff) AM_READ(SMH_RAM            )   /*  RAM     */   \
427   AM_RANGE(0x100000, 0x13ffff) AM_READ(SMH_RAM            )   /*  Sprites */   \
428   AM_RANGE(0x140000, 0x15ffff) AM_READ(SMH_RAM            )   /*  Palette */   \
429   AM_RANGE(0x160000, 0x17ffff) AM_READ(SMH_RAM            )   /*          */   \
430   AM_RANGE(0x1c0000, 0x1c0001) AM_READ(ssv_vblank_r         )   /*  Vblank? */   \
431/**/AM_RANGE(0x1c0002, 0x1c007f) AM_READ(SMH_RAM            )   /*  Scroll  */   \
432   AM_RANGE(0x210002, 0x210003) AM_READ_PORT("DSW1")                        \
433   AM_RANGE(0x210004, 0x210005) AM_READ_PORT("DSW2")                        \
434   AM_RANGE(0x210008, 0x210009) AM_READ_PORT("P1")                           \
435   AM_RANGE(0x21000a, 0x21000b) AM_READ_PORT("P2")                           \
436   AM_RANGE(0x21000c, 0x21000d) AM_READ_PORT("SYSTEM")                        \
437   AM_RANGE(0x21000e, 0x21000f) AM_READ(SMH_NOP            )   /*          */   \
438   AM_RANGE(0x300000, 0x30007f) AM_DEVREAD8("ensoniq", es5506_r, 0x00ff   )   /*  Sound   */   \
439   AM_RANGE(0x482000, 0x482fff) AM_RAM_WRITE(dsp_w) AM_BASE(&dsp_ram)            \
440   AM_RANGE(_ROM, 0xffffff) AM_READ(SMH_BANK1               )   /*  ROM  */       \
425#define SSV_MAP( _ROM  )                                                                     \
426   AM_RANGE(0x000000, 0x00ffff) AM_RAM AM_BASE(&ssv_mainram)                              /*  RAM     */   \
427   AM_RANGE(0x100000, 0x13ffff) AM_RAM AM_BASE(&spriteram16)                              /*  Sprites */   \
428   AM_RANGE(0x140000, 0x15ffff) AM_RAM_WRITE(paletteram16_xrgb_swap_word_w) AM_BASE(&paletteram16)   /*  Palette */   \
429   AM_RANGE(0x160000, 0x17ffff) AM_RAM                                                /*          */   \
430   AM_RANGE(0x1c0000, 0x1c0001) AM_READ(ssv_vblank_r         )                           /*  Vblank? */   \
431/**/AM_RANGE(0x1c0002, 0x1c007f) AM_READ(SMH_RAM            )                           /*  Scroll  */   \
432   AM_RANGE(0x1c0000, 0x1c007f) AM_WRITE(ssv_scroll_w) AM_BASE(&ssv_scroll)                       /*  Scroll  */  \
433   AM_RANGE(0x210002, 0x210003) AM_READ_PORT("DSW1")                                                \
434   AM_RANGE(0x210004, 0x210005) AM_READ_PORT("DSW2")                                                \
435   AM_RANGE(0x210008, 0x210009) AM_READ_PORT("P1")                                                   \
436   AM_RANGE(0x21000a, 0x21000b) AM_READ_PORT("P2")                                                   \
437   AM_RANGE(0x21000c, 0x21000d) AM_READ_PORT("SYSTEM")                                                \
438   AM_RANGE(0x21000e, 0x21000f) AM_READWRITE(SMH_NOP, ssv_lockout_w)                        /*  Lockout */   \
439   AM_RANGE(0x210010, 0x210011) AM_WRITENOP                                                                    \
440   AM_RANGE(0x230000, 0x230071) AM_WRITE(SMH_RAM) AM_BASE(&ssv_irq_vectors)                       /*  IRQ Vec */    \
441   AM_RANGE(0x240000, 0x240071) AM_WRITE(ssv_irq_ack_w )                                          /*  IRQ Ack */   \
442   AM_RANGE(0x260000, 0x260001) AM_WRITE(ssv_irq_enable_w)                                        /*  IRQ En  */  \
443   AM_RANGE(0x300000, 0x30007f) AM_DEVREADWRITE8("ensoniq", es5506_r, es5506_w, 0x00ff)         /*  Sound   */   \
444   AM_RANGE(0x482000, 0x482fff) AM_RAM_WRITE(dsp_w) AM_BASE(&dsp_ram)                                    \
445   AM_RANGE(_ROM, 0xffffff) AM_ROMBANK(1)                                          /*  ROM     */   \
441446//AM_RANGE(0x990000, 0x99007f) AM_READ(fake_r)
442447
443#define SSV_WRITEMEM                                                                          \
444   AM_RANGE(0x000000, 0x00ffff) AM_WRITE(SMH_RAM) AM_BASE(&ssv_mainram)                    /* RAM */     \
445   AM_RANGE(0x100000, 0x13ffff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16)                    /* Sprites */ \
446   AM_RANGE(0x140000, 0x15ffff) AM_WRITE(paletteram16_xrgb_swap_word_w) AM_BASE(&paletteram16)             \
447   AM_RANGE(0x160000, 0x17ffff) AM_WRITE(SMH_RAM)                                                        \
448   AM_RANGE(0x1c0000, 0x1c007f) AM_WRITE(ssv_scroll_w) AM_BASE(&ssv_scroll )                 /*Scroll */   \
449   AM_RANGE(0x21000e, 0x21000f) AM_WRITE(ssv_lockout_w)                                      /*Lockout */  \
450   AM_RANGE(0x210010, 0x210011) AM_WRITENOP                                                        \
451   AM_RANGE(0x230000, 0x230071) AM_WRITE(SMH_RAM) AM_BASE(&ssv_irq_vectors)             /* IRQ Vectors */ \
452   AM_RANGE(0x240000, 0x240071) AM_WRITE(ssv_irq_ack_w )                                 /* IRQ Ack */     \
453   AM_RANGE(0x260000, 0x260001) AM_WRITE(ssv_irq_enable_w)                               /* IRQ Enable */  \
454   AM_RANGE(0x300000, 0x30007f) AM_DEVWRITE8("ensoniq", es5506_w, 0x00ff)         /* Sound */       \
455//AM_RANGE(0x990000, 0x99007f) AM_WRITE(ssv_scroll_w)
456448
457
458449static UINT16 *ssv_input_sel;
459450
460451/***************************************************************************
r4679r4680
466457   return mame_rand(space->machine) & 0xffff;
467458}
468459
469static ADDRESS_MAP_START( drifto94_readmem, ADDRESS_SPACE_PROGRAM, 16 )
470   AM_RANGE(0x480000, 0x480001) AM_READ(SMH_NOP            )   // ?
471   AM_RANGE(0x510000, 0x510001) AM_READ(drifto94_rand_r      )   // ??
472   AM_RANGE(0x520000, 0x520001) AM_READ(drifto94_rand_r      )   // ??
473   AM_RANGE(0x580000, 0x5807ff) AM_READ(SMH_RAM            )   // NVRAM
474   SSV_READMEM( 0xc00000 )
460static ADDRESS_MAP_START( drifto94_map, ADDRESS_SPACE_PROGRAM, 16 )
461//  AM_RANGE(0x210002, 0x210003) AM_WRITE(SMH_NOP)                                      // ? 1 at the start
462   AM_RANGE(0x400000, 0x47ffff) AM_WRITE(SMH_RAM)                              // ?
463   AM_RANGE(0x480000, 0x480001) AM_NOP                                       // ?
464   AM_RANGE(0x483000, 0x485fff) AM_WRITE(SMH_NOP)                              // ?
465   AM_RANGE(0x500000, 0x500001) AM_WRITE(SMH_NOP)                              // ??
466   AM_RANGE(0x510000, 0x510001) AM_READ(drifto94_rand_r      )                  // ??
467   AM_RANGE(0x520000, 0x520001) AM_READ(drifto94_rand_r      )                  // ??
468   AM_RANGE(0x580000, 0x5807ff) AM_RAM AM_BASE(&ssv_nvram) AM_SIZE(&ssv_nvram_size)   // NVRAM
469   SSV_MAP( 0xc00000 )
475470ADDRESS_MAP_END
476static ADDRESS_MAP_START( drifto94_writemem, ADDRESS_SPACE_PROGRAM, 16 )
477//  AM_RANGE(0x210002, 0x210003) AM_WRITE(SMH_NOP             )   // ? 1 at the start
478   AM_RANGE(0x400000, 0x47ffff) AM_WRITE(SMH_RAM            )   // ?
479   AM_RANGE(0x480000, 0x480001) AM_WRITE(SMH_NOP            )   // ?
480   AM_RANGE(0x483000, 0x485fff) AM_WRITE(SMH_NOP            )   // ?
481   AM_RANGE(0x500000, 0x500001) AM_WRITE(SMH_NOP            )   // ??
482   AM_RANGE(0x580000, 0x5807ff) AM_WRITE(SMH_RAM) AM_BASE(&ssv_nvram) AM_SIZE(&ssv_nvram_size   )   // NVRAM
483   SSV_WRITEMEM
484ADDRESS_MAP_END
485471
486472
487473/***************************************************************************
r4679r4680
610596   }
611597}
612598
613static ADDRESS_MAP_START( gdfs_readmem, ADDRESS_SPACE_PROGRAM, 16 )
599static ADDRESS_MAP_START( gdfs_map, ADDRESS_SPACE_PROGRAM, 16 )
600   AM_RANGE(0x400000, 0x41ffff) AM_RAM_WRITE(gdfs_tmapram_w) AM_BASE(&gdfs_tmapram)
601   AM_RANGE(0x420000, 0x43ffff) AM_RAM
602   AM_RANGE(0x440000, 0x44003f) AM_RAM AM_BASE(&gdfs_tmapscroll)
603   AM_RANGE(0x500000, 0x500001) AM_WRITE(gdfs_eeprom_w)
614604   AM_RANGE(0x540000, 0x540001) AM_READ(gdfs_eeprom_r)
615   AM_RANGE(0x600000, 0x600fff) AM_READ(SMH_RAM)
616   AM_RANGE(0x400000, 0x43ffff) AM_READ(SMH_RAM)
617   AM_RANGE(0x440000, 0x44003f) AM_READ(SMH_RAM)
618   AM_RANGE(0x800000, 0x87ffff) AM_READ(SMH_RAM)
619   AM_RANGE(0x8c0000, 0x8c00ff) AM_READ(gdfs_blitram_r)
620   AM_RANGE(0x900000, 0x9fffff) AM_READ(gdfs_gfxram_r)
621   SSV_READMEM( 0xc00000 )
605   AM_RANGE(0x600000, 0x600fff) AM_RAM
606   AM_RANGE(0x800000, 0x87ffff) AM_RAM AM_BASE(&spriteram16_2)
607   AM_RANGE(0x8c0000, 0x8c00ff) AM_READWRITE(gdfs_blitram_r, gdfs_blitram_w) AM_BASE(&gdfs_blitram)
608   AM_RANGE(0x900000, 0x9fffff) AM_READWRITE(gdfs_gfxram_r, gdfs_gfxram_w)
609   SSV_MAP( 0xc00000 )
622610ADDRESS_MAP_END
623611
624static ADDRESS_MAP_START( gdfs_writemem, ADDRESS_SPACE_PROGRAM, 16 )
625   AM_RANGE(0x400000, 0x41ffff) AM_WRITE(gdfs_tmapram_w) AM_BASE(&gdfs_tmapram)
626   AM_RANGE(0x420000, 0x43ffff) AM_WRITE(SMH_RAM)
627   AM_RANGE(0x440000, 0x44003f) AM_WRITE(SMH_RAM) AM_BASE(&gdfs_tmapscroll)
628   AM_RANGE(0x500000, 0x500001) AM_WRITE(gdfs_eeprom_w)
629   AM_RANGE(0x600000, 0x600fff) AM_WRITE(SMH_RAM)
630   AM_RANGE(0x800000, 0x87ffff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16_2)
631   AM_RANGE(0x8c0000, 0x8c00ff) AM_WRITE(gdfs_blitram_w) AM_BASE(&gdfs_blitram)
632   AM_RANGE(0x900000, 0x9fffff) AM_WRITE(gdfs_gfxram_w)
633   SSV_WRITEMEM
634ADDRESS_MAP_END
635612
636
637613/***************************************************************************
638614                                Hyper Reaction
639615***************************************************************************/
r4679r4680
657633   return 0xffff;
658634}
659635
660static ADDRESS_MAP_START( hypreact_readmem, ADDRESS_SPACE_PROGRAM, 16 )
661   AM_RANGE(0x210000, 0x210001) AM_READ(watchdog_reset16_r      )   // Watchdog
662//  AM_RANGE(0x280000, 0x280001) AM_READ(SMH_NOP                  )   // ? read at the start, value not used
663   AM_RANGE(0xc00000, 0xc00001) AM_READ(hypreact_input_r         )   // Inputs
664   AM_RANGE(0xc00006, 0xc00007) AM_READ(SMH_RAM               )   //
665   AM_RANGE(0xc00008, 0xc00009) AM_READ(SMH_NOP               )   //
666   SSV_READMEM( 0xf00000 )
636static ADDRESS_MAP_START( hypreact_map, ADDRESS_SPACE_PROGRAM, 16 )
637   AM_RANGE(0x210000, 0x210001) AM_READ(watchdog_reset16_r)         // Watchdog
638//  AM_RANGE(0x210002, 0x210003) AM_WRITE(SMH_NOP)                      // ? 5 at the start
639   AM_RANGE(0x21000e, 0x21000f) AM_WRITE(ssv_lockout_inv_w)         // Inverted lockout lines
640//  AM_RANGE(0x280000, 0x280001) AM_READ(SMH_NOP)                       // ? read at the start, value not used
641   AM_RANGE(0xc00000, 0xc00001) AM_READ(hypreact_input_r)            // Inputs
642   AM_RANGE(0xc00006, 0xc00007) AM_RAM AM_BASE(&ssv_input_sel)         //
643   AM_RANGE(0xc00008, 0xc00009) AM_NOP                           //
644   SSV_MAP( 0xf00000 )
667645ADDRESS_MAP_END
668static ADDRESS_MAP_START( hypreact_writemem, ADDRESS_SPACE_PROGRAM, 16 )
669//  AM_RANGE(0x210002, 0x210003) AM_WRITE(SMH_NOP                 )   // ? 5 at the start
670   AM_RANGE(0x21000e, 0x21000f) AM_WRITE(ssv_lockout_inv_w         )   // Inverted lockout lines
671   AM_RANGE(0xc00006, 0xc00007) AM_WRITE(SMH_RAM) AM_BASE(&ssv_input_sel   )   // Inputs
672   AM_RANGE(0xc00008, 0xc00009) AM_WRITE(SMH_NOP               )   //
673   SSV_WRITEMEM
674ADDRESS_MAP_END
675646
676647
677648/***************************************************************************
678649                                Hyper Reaction 2
679650***************************************************************************/
680651
681static ADDRESS_MAP_START( hypreac2_readmem, ADDRESS_SPACE_PROGRAM, 16 )
682   AM_RANGE(0x210000, 0x210001) AM_READ(watchdog_reset16_r      )   // Watchdog
683//  AM_RANGE(0x280000, 0x280001) AM_READ(SMH_NOP                  )   // ? read at the start, value not used
684   AM_RANGE(0x500000, 0x500001) AM_READ(hypreact_input_r         )   // Inputs
685   AM_RANGE(0x500002, 0x500003) AM_READ(hypreact_input_r         )   // (again?)
686//    0x540000, 0x540003  communication with another unit
687   SSV_READMEM( 0xe00000 )
652static ADDRESS_MAP_START( hypreac2_map, ADDRESS_SPACE_PROGRAM, 16 )
653   AM_RANGE(0x210000, 0x210001) AM_READ(watchdog_reset16_r)            // Watchdog
654//  AM_RANGE(0x210002, 0x210003) AM_WRITE(SMH_NOP)                          // ? 5 at the start
655   AM_RANGE(0x21000e, 0x21000f) AM_WRITE(ssv_lockout_inv_w)            // Inverted lockout lines
656//  AM_RANGE(0x280000, 0x280001) AM_READ(SMH_NOP)                           // ? read at the start, value not used
657   AM_RANGE(0x500000, 0x500001) AM_READ(hypreact_input_r)               // Inputs
658   AM_RANGE(0x500002, 0x500003) AM_READ(hypreact_input_r)               // (again?)
659   AM_RANGE(0x520000, 0x520001) AM_WRITE(SMH_RAM) AM_BASE(&ssv_input_sel)   // Inputs
660//  0x540000, 0x540003  communication with other units
661   SSV_MAP( 0xe00000 )
688662ADDRESS_MAP_END
689static ADDRESS_MAP_START( hypreac2_writemem, ADDRESS_SPACE_PROGRAM, 16 )
690//  AM_RANGE(0x210002, 0x210003) AM_WRITE(SMH_NOP                 )   // ? 5 at the start
691   AM_RANGE(0x21000e, 0x21000f) AM_WRITE(ssv_lockout_inv_w         )   // Inverted lockout lines
692   AM_RANGE(0x520000, 0x520001) AM_WRITE(SMH_RAM) AM_BASE(&ssv_input_sel   )   // Inputs
693//    0x540000, 0x540003  communication with other units
694   SSV_WRITEMEM
695ADDRESS_MAP_END
696663
697664
698665/***************************************************************************
r4679r4680
701668
702669static READ16_HANDLER( srmp4_input_r );
703670
704static ADDRESS_MAP_START( janjans1_readmem, ADDRESS_SPACE_PROGRAM, 16 )
705   AM_RANGE(0x210006, 0x210007) AM_READ(SMH_NOP               )
706   AM_RANGE(0x800002, 0x800003) AM_READ(srmp4_input_r            )   // Inputs
707   SSV_READMEM( 0xc00000 )
671static ADDRESS_MAP_START( janjans1_map, ADDRESS_SPACE_PROGRAM, 16 )
672   AM_RANGE(0x210000, 0x210001) AM_WRITE(SMH_NOP)                     // koikois2 but not janjans1
673//  AM_RANGE(0x210002, 0x210003) AM_WRITE(SMH_NOP)                          // ? 1 at the start
674   AM_RANGE(0x210006, 0x210007) AM_READ(SMH_NOP)
675   AM_RANGE(0x800000, 0x800001) AM_WRITE(SMH_RAM) AM_BASE(&ssv_input_sel)   // Inputs
676   AM_RANGE(0x800002, 0x800003) AM_READ(srmp4_input_r)                  // Inputs
677   SSV_MAP( 0xc00000 )
708678ADDRESS_MAP_END
709static ADDRESS_MAP_START( janjans1_writemem, ADDRESS_SPACE_PROGRAM, 16 )
710   AM_RANGE(0x210000, 0x210001) AM_WRITE(SMH_NOP               )   // koikois2 but not janjans1
711//  AM_RANGE(0x210002, 0x210003) AM_WRITE(SMH_NOP                 )   // ? 1 at the start
712   AM_RANGE(0x800000, 0x800001) AM_WRITE(SMH_RAM) AM_BASE(&ssv_input_sel   )   // Inputs
713   SSV_WRITEMEM
714ADDRESS_MAP_END
715679
716680
717681/***************************************************************************
718682                                Keith & Lucy
719683***************************************************************************/
720684
721static ADDRESS_MAP_START( keithlcy_readmem, ADDRESS_SPACE_PROGRAM, 16 )
722   AM_RANGE(0x21000e, 0x21000f) AM_READ(SMH_NOP         )   //
723   SSV_READMEM( 0xe00000 )
685static ADDRESS_MAP_START( keithlcy_map, ADDRESS_SPACE_PROGRAM, 16 )
686//  AM_RANGE(0x210002, 0x210003) AM_WRITE(SMH_NOP)  // ? 1 at the start
687   AM_RANGE(0x210010, 0x210011) AM_WRITE(SMH_NOP)   //
688   AM_RANGE(0x21000e, 0x21000f) AM_READ(SMH_NOP)   //
689   AM_RANGE(0x400000, 0x47ffff) AM_WRITE(SMH_RAM)   // ?
690   SSV_MAP( 0xe00000 )
724691ADDRESS_MAP_END
725static ADDRESS_MAP_START( keithlcy_writemem, ADDRESS_SPACE_PROGRAM, 16 )
726//  AM_RANGE(0x210002, 0x210003) AM_WRITE(SMH_NOP         )   // ? 1 at the start
727   AM_RANGE(0x210010, 0x210011) AM_WRITE(SMH_NOP         )   //
728   AM_RANGE(0x400000, 0x47ffff) AM_WRITE(SMH_RAM         )   // ?
729   SSV_WRITEMEM
730ADDRESS_MAP_END
731692
732693
733694/***************************************************************************
734695                                Meosis Magic
735696***************************************************************************/
736697
737static ADDRESS_MAP_START( meosism_readmem, ADDRESS_SPACE_PROGRAM, 16 )
738   AM_RANGE(0x210000, 0x210001) AM_READ(watchdog_reset16_r   )   // Watchdog
739//  AM_RANGE(0x280000, 0x280001) AM_READ(SMH_NOP              )   // ? read once, value not used
740   AM_RANGE(0x580000, 0x58ffff) AM_READ(SMH_RAM            )   // NVRAM
741   SSV_READMEM( 0xf00000 )
698static ADDRESS_MAP_START( meosism_map, ADDRESS_SPACE_PROGRAM, 16 )
699   AM_RANGE(0x210000, 0x210001) AM_READ(watchdog_reset16_r   )                     // Watchdog
700//  AM_RANGE(0x210002, 0x210003) AM_WRITE(SMH_NOP)                                      // ? 5 at the start
701//  AM_RANGE(0x280000, 0x280001) AM_READ(SMH_NOP)                                       // ? read once, value not used
702//  AM_RANGE(0x500004, 0x500005) AM_WRITE(SMH_NOP)                                      // ? 0,58,18
703   AM_RANGE(0x580000, 0x58ffff) AM_RAM AM_BASE(&ssv_nvram) AM_SIZE(&ssv_nvram_size)   // NVRAM
704   SSV_MAP( 0xf00000 )
742705ADDRESS_MAP_END
743static ADDRESS_MAP_START( meosism_writemem, ADDRESS_SPACE_PROGRAM, 16 )
744//  AM_RANGE(0x210002, 0x210003) AM_WRITE(SMH_NOP             )   // ? 5 at the start
745//  AM_RANGE(0x500004, 0x500005) AM_WRITE(SMH_NOP             )   // ? 0,58,18
746   AM_RANGE(0x580000, 0x58ffff) AM_WRITE(SMH_RAM) AM_BASE(&ssv_nvram) AM_SIZE(&ssv_nvram_size   )   // NVRAM
747   SSV_WRITEMEM
748ADDRESS_MAP_END
749706
750707/***************************************************************************
751708                                Monster Slider
r4679r4680
763720   COMBINE_DATA(&ssv_mainram[offset]);
764721}
765722
766static ADDRESS_MAP_START( mslider_readmem, ADDRESS_SPACE_PROGRAM, 16 )
767   AM_RANGE(0x010000, 0x01ffff) AM_READ(ssv_mainram_r ) // RAM Mirror
768   SSV_READMEM( 0xf00000 )
723static ADDRESS_MAP_START( mslider_map, ADDRESS_SPACE_PROGRAM, 16 )
724   AM_RANGE(0x010000, 0x01ffff) AM_READWRITE(ssv_mainram_r, ssv_mainram_w)   // RAM Mirror
725//  AM_RANGE(0x210002, 0x210003) AM_WRITE(SMH_NOP)                          // ? 1 at the start
726   AM_RANGE(0x400000, 0x47ffff) AM_WRITE(SMH_RAM)                     // ?
727//  AM_RANGE(0x500000, 0x500001) AM_WRITE(SMH_NOP)                          // ? ff at the start
728   SSV_MAP( 0xf00000 )
769729ADDRESS_MAP_END
770static ADDRESS_MAP_START( mslider_writemem, ADDRESS_SPACE_PROGRAM, 16 )
771   AM_RANGE(0x010000, 0x01ffff) AM_WRITE(ssv_mainram_w) // RAM Mirror
772//  AM_RANGE(0x210002, 0x210003) AM_WRITE(SMH_NOP         )   // ? 1 at the start
773   AM_RANGE(0x400000, 0x47ffff) AM_WRITE(SMH_RAM         )   // ?
774//  AM_RANGE(0x500000, 0x500001) AM_WRITE(SMH_NOP         )   // ? ff at the start
775   SSV_WRITEMEM
776ADDRESS_MAP_END
777730
778731
779732/***************************************************************************
780733                    Gourmet Battle Quiz Ryohrioh CooKing
781734***************************************************************************/
782735
783static ADDRESS_MAP_START( ryorioh_readmem, ADDRESS_SPACE_PROGRAM, 16 )
784   SSV_READMEM( 0xc00000 )
736static ADDRESS_MAP_START( ryorioh_map, ADDRESS_SPACE_PROGRAM, 16 )
737   AM_RANGE(0x210000, 0x210001) AM_WRITE(watchdog_reset16_w)   // Watchdog
738//  AM_RANGE(0x210002, 0x210003) AM_WRITE(SMH_NOP)              // ? 1 at the start
739   SSV_MAP( 0xc00000 )
785740ADDRESS_MAP_END
786static ADDRESS_MAP_START( ryorioh_writemem, ADDRESS_SPACE_PROGRAM, 16 )
787   AM_RANGE(0x210000, 0x210001) AM_WRITE(watchdog_reset16_w   )   // Watchdog
788//  AM_RANGE(0x210002, 0x210003) AM_WRITE(SMH_NOP             )   // ? 1 at the start
789   SSV_WRITEMEM
790ADDRESS_MAP_END
791741
792742
793743/***************************************************************************
r4679r4680
805755   return 0xffff;
806756}
807757
808static ADDRESS_MAP_START( srmp4_readmem, ADDRESS_SPACE_PROGRAM, 16 )
809   AM_RANGE(0x210000, 0x210001) AM_READ(watchdog_reset16_r      )   // Watchdog
810   AM_RANGE(0xc0000a, 0xc0000b) AM_READ(srmp4_input_r            )   // Inputs
811   SSV_READMEM( 0xf00000 )
758static ADDRESS_MAP_START( srmp4_map, ADDRESS_SPACE_PROGRAM, 16 )
759   AM_RANGE(0x210000, 0x210001) AM_READ(watchdog_reset16_r)            // Watchdog
760//  AM_RANGE(0x210002, 0x210003) AM_WRITE(SMH_NOP)                          // ? 1,5 at the start
761   AM_RANGE(0xc0000a, 0xc0000b) AM_READ(srmp4_input_r)                  // Inputs
762   AM_RANGE(0xc0000e, 0xc0000f) AM_WRITE(SMH_RAM) AM_BASE(&ssv_input_sel)   // Inputs
763   AM_RANGE(0xc00010, 0xc00011) AM_WRITE(SMH_NOP)                     //
764   SSV_MAP( 0xf00000 )
812765ADDRESS_MAP_END
813static ADDRESS_MAP_START( srmp4_writemem, ADDRESS_SPACE_PROGRAM, 16 )
814//  AM_RANGE(0x210002, 0x210003) AM_WRITE(SMH_NOP                 )   // ? 1,5 at the start
815   AM_RANGE(0xc0000e, 0xc0000f) AM_WRITE(SMH_RAM) AM_BASE(&ssv_input_sel   )   // Inputs
816   AM_RANGE(0xc00010, 0xc00011) AM_WRITE(SMH_NOP               )   //
817   SSV_WRITEMEM
818ADDRESS_MAP_END
819766
820767
821768/***************************************************************************
r4679r4680
855802   return 0xffff;
856803}
857804
858static ADDRESS_MAP_START( srmp7_readmem, ADDRESS_SPACE_PROGRAM, 16 )
859   AM_RANGE(0x010000, 0x050faf) AM_READ(SMH_RAM            )   // More RAM
860   AM_RANGE(0x210000, 0x210001) AM_READ(watchdog_reset16_r   )   // Watchdog
861   AM_RANGE(0x300076, 0x300077) AM_READ(srmp7_irqv_r         )   // Sound
862//    0x540000, 0x540003, related to lev 5 irq?
863   AM_RANGE(0x600000, 0x600001) AM_READ(srmp7_input_r         )   // Inputs
864   SSV_READMEM( 0xc00000 )
805static ADDRESS_MAP_START( srmp7_map, ADDRESS_SPACE_PROGRAM, 16 )
806   AM_RANGE(0x010000, 0x050faf) AM_RAM                              // More RAM
807   AM_RANGE(0x210000, 0x210001) AM_READ(watchdog_reset16_r)            // Watchdog
808//  AM_RANGE(0x210002, 0x210003) AM_WRITE(SMH_NOP)                          // ? 0,4 at the start
809   AM_RANGE(0x21000e, 0x21000f) AM_WRITE(ssv_lockout_inv_w)            // Coin Counters / Lockouts
810   AM_RANGE(0x300076, 0x300077) AM_READ(srmp7_irqv_r)                  // Sound
811//  0x540000, 0x540003, related to lev 5 irq?
812   AM_RANGE(0x580000, 0x580001) AM_WRITE(srmp7_sound_bank_w)            // Sound Bank
813   AM_RANGE(0x600000, 0x600001) AM_READ(srmp7_input_r)                  // Inputs
814   AM_RANGE(0x680000, 0x680001) AM_WRITE(SMH_RAM) AM_BASE(&ssv_input_sel)   // Inputs
815   SSV_MAP( 0xc00000 )
865816ADDRESS_MAP_END
866static ADDRESS_MAP_START( srmp7_writemem, ADDRESS_SPACE_PROGRAM, 16 )
867   AM_RANGE(0x010000, 0x050faf) AM_WRITE(SMH_RAM               )   // More RAM
868//  AM_RANGE(0x210002, 0x210003) AM_WRITE(SMH_NOP                 )   // ? 0,4 at the start
869   AM_RANGE(0x21000e, 0x21000f) AM_WRITE(ssv_lockout_inv_w         )   // Coin Counters / Lockouts
870//    0x540000, 0x540003, related to lev 5 irq?
871   AM_RANGE(0x580000, 0x580001) AM_WRITE(srmp7_sound_bank_w      )   // Sound Bank
872   AM_RANGE(0x680000, 0x680001) AM_WRITE(SMH_RAM) AM_BASE(&ssv_input_sel   )   // Inputs
873   SSV_WRITEMEM
874ADDRESS_MAP_END
875817
876818
877819/***************************************************************************
878820                                Survival Arts
879821***************************************************************************/
880822
881static ADDRESS_MAP_START( survarts_readmem, ADDRESS_SPACE_PROGRAM, 16 )
882   AM_RANGE(0x210000, 0x210001) AM_READ(watchdog_reset16_r   )   // Watchdog
883//  AM_RANGE(0x290000, 0x290001) AM_READ(SMH_NOP              ) // ?
884//  AM_RANGE(0x2a0000, 0x2a0001) AM_READ(SMH_NOP              ) // ?
823static ADDRESS_MAP_START( survarts_map, ADDRESS_SPACE_PROGRAM, 16 )
824   AM_RANGE(0x210000, 0x210001) AM_READ(watchdog_reset16_r)   // Watchdog
825//  AM_RANGE(0x210002, 0x210003) AM_WRITE(SMH_NOP)              // ? 0,4 at the start
826//  AM_RANGE(0x290000, 0x290001) AM_READ(SMH_NOP)               // ?
827//  AM_RANGE(0x2a0000, 0x2a0001) AM_READ(SMH_NOP)               // ?
885828
886   AM_RANGE(0x400000, 0x43ffff) AM_READ(SMH_RAM)            // dyna
829   AM_RANGE(0x400000, 0x43ffff) AM_RAM                     // dyna
887830
888831   AM_RANGE(0x500008, 0x500009) AM_READ_PORT("ADD_BUTTONS")   // Extra Buttons
889   SSV_READMEM( 0xf00000 )
832   SSV_MAP( 0xf00000 )
890833ADDRESS_MAP_END
891static ADDRESS_MAP_START( survarts_writemem, ADDRESS_SPACE_PROGRAM, 16 )
892//  AM_RANGE(0x210002, 0x210003) AM_WRITE(SMH_NOP             ) // ? 0,4 at the start
893   AM_RANGE(0x400000, 0x43ffff) AM_WRITE(SMH_RAM)            // dyna
894834
895   SSV_WRITEMEM
896ADDRESS_MAP_END
897835
898
899836/***************************************************************************
900837                            Pachinko Sexy Reaction
901838***************************************************************************/
r4679r4680
933870//  popmessage("%04X",data);   // 8 = motor on; 0 = motor off
934871}
935872
936static ADDRESS_MAP_START( sxyreact_readmem, ADDRESS_SPACE_PROGRAM, 16 )
937//  AM_RANGE(0x020000, 0x03ffff) AM_READ(ssv_mainram_r ) // sxyreac2 reads / writes here, why?
938   AM_RANGE(0x210000, 0x210001) AM_READ(watchdog_reset16_r   )   // Watchdog
939   AM_RANGE(0x500002, 0x500003) AM_READ(sxyreact_ballswitch_r   )   // ?
940   AM_RANGE(0x500004, 0x500005) AM_READ(sxyreact_dial_r      )   // Dial Value (serial)
941   AM_RANGE(0x580000, 0x58ffff) AM_READ(SMH_RAM            )   // NVRAM
942   SSV_READMEM( 0xe00000 )
873static ADDRESS_MAP_START( sxyreact_map, ADDRESS_SPACE_PROGRAM, 16 )
874//  AM_RANGE(0x020000, 0x03ffff) AM_READWRITE(ssv_mainram_r, ssv_mainram_w)             // sxyreac2 reads / writes here, why?
875   AM_RANGE(0x210000, 0x210001) AM_READ(watchdog_reset16_r)                     // Watchdog
876//  AM_RANGE(0x210002, 0x210003) AM_WRITE(SMH_NOP)                                      // ? 1 at the start
877   AM_RANGE(0x21000e, 0x21000f) AM_WRITE(ssv_lockout_inv_w)                     // Inverted lockout lines
878   AM_RANGE(0x500002, 0x500003) AM_READ(sxyreact_ballswitch_r)                     // ?
879   AM_RANGE(0x500004, 0x500005) AM_READWRITE(sxyreact_dial_r, sxyreact_motor_w)      // Dial Value (serial)
880   AM_RANGE(0x520000, 0x520001) AM_WRITE(sxyreact_dial_w)                        // Dial Value (advance 1 bit)
881   AM_RANGE(0x580000, 0x58ffff) AM_RAM AM_BASE(&ssv_nvram) AM_SIZE(&ssv_nvram_size)   // NVRAM
882   SSV_MAP( 0xe00000 )
943883ADDRESS_MAP_END
944static ADDRESS_MAP_START( sxyreact_writemem, ADDRESS_SPACE_PROGRAM, 16 )
945//  AM_RANGE(0x020000, 0x03ffff) AM_WRITE(ssv_mainram_w ) // sxyreac2 reads / writes here, why?
946//  AM_RANGE(0x210002, 0x210003) AM_WRITE(SMH_NOP             )   // ? 1 at the start
947   AM_RANGE(0x21000e, 0x21000f) AM_WRITE(ssv_lockout_inv_w      )   // Inverted lockout lines
948   AM_RANGE(0x520000, 0x520001) AM_WRITE(sxyreact_dial_w      )   // Dial Value (advance 1 bit)
949   AM_RANGE(0x520004, 0x520005) AM_WRITE(sxyreact_motor_w      )   // Dial Motor?
950   AM_RANGE(0x580000, 0x58ffff) AM_WRITE(SMH_RAM) AM_BASE(&ssv_nvram) AM_SIZE(&ssv_nvram_size   )   // NVRAM
951   SSV_WRITEMEM
952ADDRESS_MAP_END
953884
954885
955886/***************************************************************************
r4679r4680
958889
959890/* comes as either a standalone board or a standard SSV rom board (verified) */
960891
961static ADDRESS_MAP_START( twineag2_readmem, ADDRESS_SPACE_PROGRAM, 16 )
962   AM_RANGE(0x010000, 0x03ffff) AM_READ(SMH_RAM            )   // More RAM
963   AM_RANGE(0x210000, 0x210001) AM_READ(watchdog_reset16_r   )   // Watchdog (also value is cmp.b with mem 8)
964   SSV_READMEM( 0xe00000 )
892static ADDRESS_MAP_START( twineag2_map, ADDRESS_SPACE_PROGRAM, 16 )
893   AM_RANGE(0x010000, 0x03ffff) AM_RAM                     // More RAM
894   AM_RANGE(0x210000, 0x210001) AM_READ(watchdog_reset16_r)   // Watchdog (also value is cmp.b with mem 8)
895   SSV_MAP( 0xe00000 )
965896ADDRESS_MAP_END
966static ADDRESS_MAP_START( twineag2_writemem, ADDRESS_SPACE_PROGRAM, 16 )
967   AM_RANGE(0x010000, 0x03ffff) AM_WRITE(SMH_RAM            )   // More RAM
968   SSV_WRITEMEM
969ADDRESS_MAP_END
970897
971898
972899/***************************************************************************
r4679r4680
975902
976903/* standalone board based on SSV hardware */
977904
978static ADDRESS_MAP_START( ultrax_readmem, ADDRESS_SPACE_PROGRAM, 16 )
979   AM_RANGE(0x010000, 0x03ffff) AM_READ(SMH_RAM            )   // More RAM
980   AM_RANGE(0x210000, 0x210001) AM_READ(watchdog_reset16_r   )   // Watchdog (also value is cmp.b with memory address 8)
981   SSV_READMEM( 0xe00000 )
905static ADDRESS_MAP_START( ultrax_map, ADDRESS_SPACE_PROGRAM, 16 )
906   AM_RANGE(0x010000, 0x03ffff) AM_RAM                     // More RAM
907   AM_RANGE(0x210000, 0x210001) AM_READ(watchdog_reset16_r)   // Watchdog (also value is cmp.b with memory address 8)
908//  AM_RANGE(0x210002, 0x210003) AM_WRITE(SMH_NOP)              // ? 2,6 at the start
909   SSV_MAP( 0xe00000 )
982910ADDRESS_MAP_END
983static ADDRESS_MAP_START( ultrax_writemem, ADDRESS_SPACE_PROGRAM, 16 )
984   AM_RANGE(0x010000, 0x03ffff) AM_WRITE(SMH_RAM         )   // More RAM
985//  AM_RANGE(0x210002, 0x210003) AM_WRITE(SMH_NOP         )   // ? 2,6 at the start
986   SSV_WRITEMEM
987ADDRESS_MAP_END
988911
989912/***************************************************************************
990913            Joryuu Syougi Kyoushitsu
r4679r4680
1024947   timer_call_after_resynch(space->machine, NULL, 0, NULL);
1025948}
1026949
1027static ADDRESS_MAP_START( jsk_readmem, ADDRESS_SPACE_PROGRAM, 16 )
1028   AM_RANGE(0x050000, 0x05ffff) AM_READ(ssv_mainram_r ) // RAM Mirror?
1029   AM_RANGE(0x400000, 0x47ffff) AM_READ(SMH_RAM   )   // RAM?
1030   AM_RANGE(0x900000, 0x900007) AM_READ(latch16_r)
1031   SSV_READMEM( 0xf00000 )
950static ADDRESS_MAP_START( jsk_map, ADDRESS_SPACE_PROGRAM, 16 )
951   AM_RANGE(0x050000, 0x05ffff) AM_READWRITE(ssv_mainram_r, ssv_mainram_w)   // RAM Mirror?
952   AM_RANGE(0x210000, 0x210001) AM_WRITE(watchdog_reset16_w)            // Watchdog
953   AM_RANGE(0x400000, 0x47ffff) AM_RAM                              // RAM?
954   AM_RANGE(0x900000, 0x900007) AM_READWRITE(latch16_r, latch16_w)
955   SSV_MAP( 0xf00000 )
1032956ADDRESS_MAP_END
1033static ADDRESS_MAP_START( jsk_writemem, ADDRESS_SPACE_PROGRAM, 16 )
1034   AM_RANGE(0x050000, 0x05ffff) AM_WRITE(ssv_mainram_w ) // RAM Mirror?
1035   AM_RANGE(0x210000, 0x210001) AM_WRITE(watchdog_reset16_w   )   // Watchdog
1036   AM_RANGE(0x400000, 0x47ffff) AM_WRITE(SMH_RAM            )   // RAM?
1037   AM_RANGE(0x900000, 0x900007) AM_WRITE(latch16_w)
1038   SSV_WRITEMEM
1039ADDRESS_MAP_END
1040957
1041958
1042static ADDRESS_MAP_START( jsk_v810_mem,ADDRESS_SPACE_PROGRAM, 32 )
959static ADDRESS_MAP_START( jsk_v810_mem, ADDRESS_SPACE_PROGRAM, 32 )
1043960   AM_RANGE(0x00000000, 0x0001ffff) AM_RAM
1044961   AM_RANGE(0x80000000, 0x8001ffff) AM_RAM
1045962   AM_RANGE(0xc0000000, 0xc001ffff) AM_RAM
1046   AM_RANGE(0x40000000, 0x4000000f) AM_READ(latch32_r) AM_WRITE(latch32_w)
963   AM_RANGE(0x40000000, 0x4000000f) AM_READWRITE(latch32_r, latch32_w)
1047964   AM_RANGE(0xfff80000, 0xffffffff) AM_ROM AM_REGION("sub", 0)
1048965ADDRESS_MAP_END
1049966
r4679r4680
11081025}
11091026
11101027
1111static ADDRESS_MAP_START( eaglshot_readmem, ADDRESS_SPACE_PROGRAM, 16 )
1112   AM_RANGE(0x180000, 0x1bffff) AM_READ(eaglshot_gfxram_r      )
1113   AM_RANGE(0x210000, 0x210001) AM_READ(/*watchdog_reset16_r*/SMH_NOP      )   // Watchdog
1114   AM_RANGE(0xa00000, 0xbfffff) AM_READ(eaglshot_gfxrom_r      )
1115   AM_RANGE(0xc00000, 0xc007ff) AM_READ(SMH_RAM            )   // NVRAM
1116   AM_RANGE(0xd00000, 0xd00001) AM_READ(eaglshot_trackball_r   )
1117   SSV_READMEM( 0xf00000 )
1028static ADDRESS_MAP_START( eaglshot_map, ADDRESS_SPACE_PROGRAM, 16 )
1029   AM_RANGE(0x180000, 0x1bffff) AM_READWRITE(eaglshot_gfxram_r, eaglshot_gfxram_w)
1030   AM_RANGE(0x210000, 0x210001) AM_READ(/*watchdog_reset16_r*/SMH_NOP)               // Watchdog
1031//  AM_RANGE(0x210002, 0x210003) AM_WRITE(SMH_NOP)                                      // ? 0,4 at the start
1032   AM_RANGE(0x21000e, 0x21000f) AM_WRITE(ssv_lockout_inv_w)                     // Inverted lockout lines
1033   AM_RANGE(0x800000, 0x800001) AM_WRITE(eaglshot_gfxrom_w)
1034   AM_RANGE(0x900000, 0x900001) AM_WRITE(eaglshot_trackball_w)
1035   AM_RANGE(0xa00000, 0xbfffff) AM_READ(eaglshot_gfxrom_r)
1036   AM_RANGE(0xc00000, 0xc007ff) AM_RAM AM_BASE(&ssv_nvram) AM_SIZE(&ssv_nvram_size)   // NVRAM
1037   AM_RANGE(0xd00000, 0xd00001) AM_READ(eaglshot_trackball_r)
1038   SSV_MAP( 0xf00000 )
11181039ADDRESS_MAP_END
11191040
1120static ADDRESS_MAP_START( eaglshot_writemem, ADDRESS_SPACE_PROGRAM, 16 )
1121   AM_RANGE(0x180000, 0x1bffff) AM_WRITE(eaglshot_gfxram_w      )
1122//  AM_RANGE(0x210002, 0x210003) AM_WRITE(SMH_NOP             )   // ? 0,4 at the start
1123   AM_RANGE(0x21000e, 0x21000f) AM_WRITE(ssv_lockout_inv_w      )   // Inverted lockout lines
1124   AM_RANGE(0x800000, 0x800001) AM_WRITE(eaglshot_gfxrom_w      )
1125   AM_RANGE(0x900000, 0x900001) AM_WRITE(eaglshot_trackball_w   )
1126   AM_RANGE(0xc00000, 0xc007ff) AM_WRITE(SMH_RAM) AM_BASE(&ssv_nvram) AM_SIZE(&ssv_nvram_size   )   // NVRAM
1127   SSV_WRITEMEM
1128ADDRESS_MAP_END
11291041
11301042
1131
11321043/***************************************************************************
11331044
11341045
r4679r4680
28322743   /* basic machine hardware */
28332744   MDRV_IMPORT_FROM(ssv)
28342745   MDRV_CPU_MODIFY("maincpu")
2835   MDRV_CPU_PROGRAM_MAP(drifto94_readmem, drifto94_writemem)
2746   MDRV_CPU_PROGRAM_MAP(drifto94_map, 0)
28362747
28372748   MDRV_NVRAM_HANDLER(ssv)
28382749
r4679r4680
28472758   /* basic machine hardware */
28482759   MDRV_IMPORT_FROM(ssv)
28492760   MDRV_CPU_MODIFY("maincpu")
2850   MDRV_CPU_PROGRAM_MAP(gdfs_readmem, gdfs_writemem)
2761   MDRV_CPU_PROGRAM_MAP(gdfs_map, 0)
28512762   MDRV_CPU_VBLANK_INT_HACK(gdfs_interrupt,1+4)
28522763
28532764   MDRV_NVRAM_HANDLER(gdfs)
r4679r4680
28672778   /* basic machine hardware */
28682779   MDRV_IMPORT_FROM(ssv)
28692780   MDRV_CPU_MODIFY("maincpu")
2870   MDRV_CPU_PROGRAM_MAP(hypreact_readmem, hypreact_writemem)
2781   MDRV_CPU_PROGRAM_MAP(hypreact_map, 0)
28712782
28722783   /* video hardware */
28732784   MDRV_SCREEN_MODIFY("screen")
r4679r4680
28802791   /* basic machine hardware */
28812792   MDRV_IMPORT_FROM(ssv)
28822793   MDRV_CPU_MODIFY("maincpu")
2883   MDRV_CPU_PROGRAM_MAP(hypreac2_readmem, hypreac2_writemem)
2794   MDRV_CPU_PROGRAM_MAP(hypreac2_map, 0)
28842795
28852796   /* video hardware */
28862797   MDRV_SCREEN_MODIFY("screen")
r4679r4680
28932804   /* basic machine hardware */
28942805   MDRV_IMPORT_FROM(ssv)
28952806   MDRV_CPU_MODIFY("maincpu")
2896   MDRV_CPU_PROGRAM_MAP(janjans1_readmem, janjans1_writemem)
2807   MDRV_CPU_PROGRAM_MAP(janjans1_map, 0)
28972808
28982809   /* video hardware */
28992810   MDRV_SCREEN_MODIFY("screen")
r4679r4680
29062817   /* basic machine hardware */
29072818   MDRV_IMPORT_FROM(ssv)
29082819   MDRV_CPU_MODIFY("maincpu")
2909   MDRV_CPU_PROGRAM_MAP(keithlcy_readmem, keithlcy_writemem)
2820   MDRV_CPU_PROGRAM_MAP(keithlcy_map, 0)
29102821
29112822   /* video hardware */
29122823   MDRV_SCREEN_MODIFY("screen")
r4679r4680
29192830   /* basic machine hardware */
29202831   MDRV_IMPORT_FROM(ssv)
29212832   MDRV_CPU_MODIFY("maincpu")
2922   MDRV_CPU_PROGRAM_MAP(meosism_readmem, meosism_writemem)
2833   MDRV_CPU_PROGRAM_MAP(meosism_map, 0)
29232834
29242835   MDRV_NVRAM_HANDLER(ssv)
29252836
r4679r4680
29342845   /* basic machine hardware */
29352846   MDRV_IMPORT_FROM(ssv)
29362847   MDRV_CPU_MODIFY("maincpu")
2937   MDRV_CPU_PROGRAM_MAP(mslider_readmem, mslider_writemem)
2848   MDRV_CPU_PROGRAM_MAP(mslider_map, 0)
29382849
29392850   /* video hardware */
29402851   MDRV_SCREEN_MODIFY("screen")
r4679r4680
29472858   /* basic machine hardware */
29482859   MDRV_IMPORT_FROM(ssv)
29492860   MDRV_CPU_MODIFY("maincpu")
2950   MDRV_CPU_PROGRAM_MAP(ryorioh_readmem, ryorioh_writemem)
2861   MDRV_CPU_PROGRAM_MAP(ryorioh_map, 0)
29512862
29522863   /* video hardware */
29532864   MDRV_SCREEN_MODIFY("screen")
r4679r4680
29602871   /* basic machine hardware */
29612872   MDRV_IMPORT_FROM(ssv)
29622873   MDRV_CPU_MODIFY("maincpu")
2963   MDRV_CPU_PROGRAM_MAP(srmp4_readmem, srmp4_writemem)
2874   MDRV_CPU_PROGRAM_MAP(srmp4_map, 0)
29642875
29652876   /* video hardware */
29662877   MDRV_SCREEN_MODIFY("screen")
r4679r4680
29732884   /* basic machine hardware */
29742885   MDRV_IMPORT_FROM(ssv)
29752886   MDRV_CPU_MODIFY("maincpu")
2976   MDRV_CPU_PROGRAM_MAP(srmp7_readmem, srmp7_writemem)
2887   MDRV_CPU_PROGRAM_MAP(srmp7_map, 0)
29772888
29782889   /* video hardware */
29792890   MDRV_SCREEN_MODIFY("screen")
r4679r4680
29862897   /* basic machine hardware */
29872898   MDRV_IMPORT_FROM(ssv)
29882899   MDRV_CPU_MODIFY("maincpu")
2989   MDRV_CPU_PROGRAM_MAP(drifto94_readmem, drifto94_writemem)
2900   MDRV_CPU_PROGRAM_MAP(drifto94_map, 0)
29902901
29912902   MDRV_NVRAM_HANDLER(ssv)
29922903   /* video hardware */
r4679r4680
30002911   /* basic machine hardware */
30012912   MDRV_IMPORT_FROM(ssv)
30022913   MDRV_CPU_MODIFY("maincpu")
3003   MDRV_CPU_PROGRAM_MAP(survarts_readmem, survarts_writemem)
2914   MDRV_CPU_PROGRAM_MAP(survarts_map, 0)
30042915
30052916   /* video hardware */
30062917   MDRV_SCREEN_MODIFY("screen")
r4679r4680
30212932   /* basic machine hardware */
30222933   MDRV_IMPORT_FROM(ssv)
30232934   MDRV_CPU_MODIFY("maincpu")
3024   MDRV_CPU_PROGRAM_MAP(eaglshot_readmem, eaglshot_writemem)
2935   MDRV_CPU_PROGRAM_MAP(eaglshot_map, 0)
30252936
30262937   MDRV_NVRAM_HANDLER(ssv)
30272938
r4679r4680
30402951   /* basic machine hardware */
30412952   MDRV_IMPORT_FROM(ssv)
30422953   MDRV_CPU_MODIFY("maincpu")
3043   MDRV_CPU_PROGRAM_MAP(sxyreact_readmem, sxyreact_writemem)
2954   MDRV_CPU_PROGRAM_MAP(sxyreact_map, 0)
30442955
30452956   MDRV_NVRAM_HANDLER(ssv)
30462957
r4679r4680
30552966   /* basic machine hardware */
30562967   MDRV_IMPORT_FROM(ssv)
30572968   MDRV_CPU_MODIFY("maincpu")
3058   MDRV_CPU_PROGRAM_MAP(twineag2_readmem, twineag2_writemem)
2969   MDRV_CPU_PROGRAM_MAP(twineag2_map, 0)
30592970
30602971   /* video hardware */
30612972   MDRV_SCREEN_MODIFY("screen")
r4679r4680
30682979   /* basic machine hardware */
30692980   MDRV_IMPORT_FROM(ssv)
30702981   MDRV_CPU_MODIFY("maincpu")
3071   MDRV_CPU_PROGRAM_MAP(ultrax_readmem, ultrax_writemem)
2982   MDRV_CPU_PROGRAM_MAP(ultrax_map, 0)
30722983
30732984   /* video hardware */
30742985   MDRV_SCREEN_MODIFY("screen")
r4679r4680
30802991   /* basic machine hardware */
30812992   MDRV_IMPORT_FROM(ssv)
30822993   MDRV_CPU_MODIFY("maincpu")
3083   MDRV_CPU_PROGRAM_MAP(jsk_readmem, jsk_writemem)
2994   MDRV_CPU_PROGRAM_MAP(jsk_map, 0)
30842995
30852996   MDRV_CPU_ADD("sub", V810,25000000)
30862997   MDRV_CPU_PROGRAM_MAP(jsk_v810_mem, 0)
src/mame/drivers/taitoair.c
r4679r4680
248248
249249   dsp_HOLD_signal = (data & 4) ? CLEAR_LINE : ASSERT_LINE;
250250
251   cpu_set_input_line(space->machine->cpu[2], INPUT_LINE_RESET, (data & 1) ? CLEAR_LINE : ASSERT_LINE);
251   cputag_set_input_line(space->machine, "dsp", INPUT_LINE_RESET, (data & 1) ? CLEAR_LINE : ASSERT_LINE);
252252
253   logerror("68K:%06x writing %04x to TMS32025.  %s HOLD , %s RESET\n",cpu_get_previouspc(space->cpu),data,((data & 4) ? "Clear" : "Assert"),((data & 1) ? "Clear" : "Assert"));
253   logerror("68K:%06x writing %04x to TMS32025.  %s HOLD , %s RESET\n", cpu_get_previouspc(space->cpu), data, ((data & 4) ? "Clear" : "Assert"), ((data & 1) ? "Clear" : "Assert"));
254254}
255255
256256static READ16_HANDLER( lineram_r )
r4679r4680
582582/* Handler called by the YM2610 emulator when the internal timers cause an IRQ */
583583static void irqhandler(const device_config *device, int irq)
584584{
585   cpu_set_input_line(device->machine->cpu[1],0,irq ? ASSERT_LINE : CLEAR_LINE);
585   cputag_set_input_line(device->machine, "audiocpu", 0, irq ? ASSERT_LINE : CLEAR_LINE);
586586}
587587
588588static const ym2610_interface airsys_ym2610_interface =
src/mame/drivers/atarig42.c
r4679r4680
5252
5353static void update_interrupts(running_machine *machine)
5454{
55   cpu_set_input_line(machine->cpu[0], 4, atarigen_video_int_state ? ASSERT_LINE : CLEAR_LINE);
56   cpu_set_input_line(machine->cpu[0], 5, atarigen_sound_int_state ? ASSERT_LINE : CLEAR_LINE);
55   cputag_set_input_line(machine, "maincpu", 4, atarigen_video_int_state ? ASSERT_LINE : CLEAR_LINE);
56   cputag_set_input_line(machine, "maincpu", 5, atarigen_sound_int_state ? ASSERT_LINE : CLEAR_LINE);
5757}
5858
5959
r4679r4680
113113   if (ACCESSING_BITS_0_7)
114114   {
115115      /* bit 4 resets the sound CPU */
116      cpu_set_input_line(space->machine->cpu[2], INPUT_LINE_RESET, (data & 0x10) ? CLEAR_LINE : ASSERT_LINE);
116      cputag_set_input_line(space->machine, "jsa", INPUT_LINE_RESET, (data & 0x10) ? CLEAR_LINE : ASSERT_LINE);
117117      if (!(data & 0x10)) atarijsa_reset();
118118
119119      /* bit 5 is /XRESET, probably related to the ASIC */
r4679r4680
141141{
142142   if (address < 0x80000)
143143   {
144      direct->raw = direct->decrypted = (void *)sloop_base;
144      direct->raw = direct->decrypted = (UINT8 *)sloop_base;
145145      return (offs_t)-1;
146146   }
147147   return address;
r4679r4680
687687   atarig42_motion_object_base = 0x200;
688688   atarig42_motion_object_mask = 0x1ff;
689689
690   sloop_base = memory_install_readwrite16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x000000, 0x07ffff, 0, 0, roadriot_sloop_data_r, roadriot_sloop_data_w);
691   memory_set_direct_update_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), sloop_direct_handler);
690   sloop_base = memory_install_readwrite16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x000000, 0x07ffff, 0, 0, roadriot_sloop_data_r, roadriot_sloop_data_w);
691   memory_set_direct_update_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), sloop_direct_handler);
692692
693693   asic65_config(machine, ASIC65_ROMBASED);
694694/*
r4679r4680
740740   /* put an RTS there so we don't die */
741741   *(UINT16 *)&memory_region(machine, "maincpu")[0x80000] = 0x4E75;
742742
743   sloop_base = memory_install_readwrite16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x000000, 0x07ffff, 0, 0, guardians_sloop_data_r, guardians_sloop_data_w);
744   memory_set_direct_update_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), sloop_direct_handler);
743   sloop_base = memory_install_readwrite16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x000000, 0x07ffff, 0, 0, guardians_sloop_data_r, guardians_sloop_data_w);
744   memory_set_direct_update_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), sloop_direct_handler);
745745
746746   asic65_config(machine, ASIC65_GUARDIANS);
747747/*
src/mame/drivers/cop01.c
r4679r4680
7070static WRITE8_HANDLER( cop01_sound_command_w )
7171{
7272   soundlatch_w(space,offset,data);
73   cpu_set_input_line_and_vector(space->machine->cpu[1],0,HOLD_LINE,0xff);
73   cputag_set_input_line_and_vector(space->machine, "audiocpu", 0, HOLD_LINE, 0xff);
7474}
7575
7676static READ8_HANDLER( cop01_sound_command_r )
r4679r4680
101101}
102102
103103
104static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 )
105   AM_RANGE(0x0000, 0xbfff) AM_READ(SMH_ROM)
106   AM_RANGE(0xc000, 0xcfff) AM_READ(SMH_RAM)   /* c000-c7ff in cop01 */
107   AM_RANGE(0xd000, 0xdfff) AM_READ(SMH_RAM)
108ADDRESS_MAP_END
109
110static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 )
111   AM_RANGE(0x0000, 0xbfff) AM_WRITE(SMH_ROM)
112   AM_RANGE(0xc000, 0xcfff) AM_WRITE(SMH_RAM)   /* c000-c7ff in cop01 */
113   AM_RANGE(0xd000, 0xdfff) AM_WRITE(cop01_background_w) AM_BASE(&cop01_bgvideoram)
104static ADDRESS_MAP_START( cop01_map, ADDRESS_SPACE_PROGRAM, 8 )
105   AM_RANGE(0x0000, 0xbfff) AM_ROM
106   AM_RANGE(0xc000, 0xcfff) AM_RAM /* c000-c7ff in cop01 */
107   AM_RANGE(0xd000, 0xdfff) AM_RAM_WRITE(cop01_background_w) AM_BASE(&cop01_bgvideoram)
114108   AM_RANGE(0xe000, 0xe0ff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
115109   AM_RANGE(0xf000, 0xf3ff) AM_WRITE(cop01_foreground_w) AM_BASE(&cop01_fgvideoram)
116110ADDRESS_MAP_END
r4679r4680
139133   AM_RANGE(0x45, 0x45) AM_WRITE(watchdog_reset_w) /* ? */
140134ADDRESS_MAP_END
141135
142static ADDRESS_MAP_START( sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
143   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
136static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 )
137   AM_RANGE(0x0000, 0x7fff) AM_ROM
144138   AM_RANGE(0x8000, 0x8000) AM_READNOP   /* irq ack? */
145   AM_RANGE(0xc000, 0xc7ff) AM_READ(SMH_RAM)
139   AM_RANGE(0xc000, 0xc7ff) AM_RAM
146140ADDRESS_MAP_END
147141
148static ADDRESS_MAP_START( sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
149   AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM)
150   AM_RANGE(0xc000, 0xc7ff) AM_WRITE(SMH_RAM)
151ADDRESS_MAP_END
152
153142static ADDRESS_MAP_START( audio_io_map, ADDRESS_SPACE_IO, 8 )
154143   ADDRESS_MAP_GLOBAL_MASK(0xff)
155144   AM_RANGE(0x00, 0x01) AM_DEVWRITE("ay1", ay8910_address_data_w)
r4679r4680
401390
402391   /* basic machine hardware */
403392   MDRV_CPU_ADD("maincpu", Z80, 4000000)   /* ???? */
404   MDRV_CPU_PROGRAM_MAP(readmem,writemem)
393   MDRV_CPU_PROGRAM_MAP(cop01_map,0)
405394   MDRV_CPU_IO_MAP(io_map,0)
406395   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
407396
408397   MDRV_CPU_ADD("audiocpu", Z80, 3000000)   /* ???? */
409   MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem)
398   MDRV_CPU_PROGRAM_MAP(sound_map,0)
410399   MDRV_CPU_IO_MAP(audio_io_map,0)
411400
412401   /* video hardware */
r4679r4680
441430
442431   /* basic machine hardware */
443432   MDRV_CPU_ADD("maincpu", Z80, 4000000)   /* ???? */
444   MDRV_CPU_PROGRAM_MAP(readmem,writemem)
433   MDRV_CPU_PROGRAM_MAP(cop01_map,0)
445434   MDRV_CPU_IO_MAP(mightguy_io_map,0)
446435   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
447436
448437   MDRV_CPU_ADD("audiocpu", Z80, 3000000)   /* ???? */
449   MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem)
438   MDRV_CPU_PROGRAM_MAP(sound_map,0)
450439   MDRV_CPU_IO_MAP(mightguy_audio_io_map,0)
451440
452441   /* video hardware */
src/mame/drivers/vindictr.c
r4679r4680
3333
3434static void update_interrupts(running_machine *machine)
3535{
36   cpu_set_input_line(machine->cpu[0], 4, atarigen_scanline_int_state ? ASSERT_LINE : CLEAR_LINE);
37   cpu_set_input_line(machine->cpu[0], 6, atarigen_sound_int_state ? ASSERT_LINE : CLEAR_LINE);
36   cputag_set_input_line(machine, "maincpu", 4, atarigen_scanline_int_state ? ASSERT_LINE : CLEAR_LINE);
37   cputag_set_input_line(machine, "maincpu", 6, atarigen_sound_int_state ? ASSERT_LINE : CLEAR_LINE);
3838}
3939
4040
src/mame/drivers/hanaawas.c
r4679r4680
7878   mux = data;
7979}
8080
81static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 )
82   AM_RANGE(0x0000, 0x2fff) AM_READ(SMH_ROM)
83   AM_RANGE(0x4000, 0x4fff) AM_READ(SMH_ROM)
84   AM_RANGE(0x6000, 0x6fff) AM_READ(SMH_ROM)
85   AM_RANGE(0x8000, 0x8bff) AM_READ(SMH_RAM)
81static ADDRESS_MAP_START( hanaawas_map, ADDRESS_SPACE_PROGRAM, 8 )
82   AM_RANGE(0x0000, 0x2fff) AM_ROM
83   AM_RANGE(0x4000, 0x4fff) AM_ROM
84   AM_RANGE(0x6000, 0x6fff) AM_ROM
85   AM_RANGE(0x8000, 0x83ff) AM_RAM_WRITE(hanaawas_videoram_w) AM_BASE(&videoram)
86   AM_RANGE(0x8400, 0x87ff) AM_RAM_WRITE(hanaawas_colorram_w) AM_BASE(&colorram)
87   AM_RANGE(0x8800, 0x8bff) AM_RAM
8688ADDRESS_MAP_END
8789
88static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 )
89   AM_RANGE(0x0000, 0x2fff) AM_WRITE(SMH_ROM)
90   AM_RANGE(0x4000, 0x4fff) AM_WRITE(SMH_ROM)
91   AM_RANGE(0x6000, 0x6fff) AM_WRITE(SMH_ROM)
92   AM_RANGE(0x8000, 0x83ff) AM_WRITE(hanaawas_videoram_w) AM_BASE(&videoram)
93   AM_RANGE(0x8400, 0x87ff) AM_WRITE(hanaawas_colorram_w) AM_BASE(&colorram)
94   AM_RANGE(0x8800, 0x8bff) AM_WRITE(SMH_RAM)
95ADDRESS_MAP_END
9690
97
9891static ADDRESS_MAP_START( io_map, ADDRESS_SPACE_IO, 8 )
9992   ADDRESS_MAP_GLOBAL_MASK(0xff)
10093   AM_RANGE(0x00, 0x00) AM_READWRITE(hanaawas_input_port_0_r, hanaawas_inputs_mux_w)
r4679r4680
202195
203196   /* basic machine hardware */
204197   MDRV_CPU_ADD("maincpu", Z80,18432000/6)   /* 3.072 MHz ??? */
205   MDRV_CPU_PROGRAM_MAP(readmem,writemem)
198   MDRV_CPU_PROGRAM_MAP(hanaawas_map,0)
206199   MDRV_CPU_IO_MAP(io_map,0)
207200   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
208201
src/mame/drivers/mpu4drvr.c
r4679r4680
228228{
229229   ROC10937_reset(0);
230230
231/*  cpu_set_input_line(machine->cpu[1], INPUT_LINE_HALT, ASSERT_LINE); */
231/*  cputag_set_input_line(machine, "video", INPUT_LINE_HALT, ASSERT_LINE); */
232232   mpu4_stepper_reset();
233233
234234   lamp_strobe    = 0;
r4679r4680
269269
270270static void update_mpu68_interrupts(running_machine *machine)
271271{
272   cpu_set_input_line(machine->cpu[1], 1, m6840_irq_state ? ASSERT_LINE : CLEAR_LINE);
273   cpu_set_input_line(machine->cpu[1], 2, m6850_irq_state ? ASSERT_LINE : CLEAR_LINE);
274   cpu_set_input_line(machine->cpu[1], 3, scn2674_irq_state ? ASSERT_LINE : CLEAR_LINE);
272   cputag_set_input_line(machine, "video", 1, m6840_irq_state ? ASSERT_LINE : CLEAR_LINE);
273   cputag_set_input_line(machine, "video", 2, m6850_irq_state ? ASSERT_LINE : CLEAR_LINE);
274   cputag_set_input_line(machine, "video", 3, scn2674_irq_state ? ASSERT_LINE : CLEAR_LINE);
275275}
276276
277277/* Communications with 6809 board */
r4679r4680
305305static WRITE_LINE_DEVICE_HANDLER( m6809_acia_irq )
306306{
307307   m68k_acia_cts = state;
308   cpu_set_input_line(device->machine->cpu[0], M6809_IRQ_LINE, state?ASSERT_LINE:CLEAR_LINE);
308   cputag_set_input_line(device->machine, "maincpu", M6809_IRQ_LINE, state?ASSERT_LINE:CLEAR_LINE);
309309}
310310
311311static ACIA6850_INTERFACE( m6809_acia_if )
r4679r4680
10181018   /* if anything uses tile sizes other than 8x8 we can't really do it this way.. we'll have to draw tiles by hand.
10191019      maybe we will anyway, but for now we don't need to */
10201020
1021   mpu4_vid_vidram = auto_malloc (0x20000);
1021   mpu4_vid_vidram = auto_alloc_array(machine, UINT16, 0x20000/2);
10221022
10231023   memset(mpu4_vid_vidram,0,0x20000);
10241024
r4679r4680
16341634
16351635static MC6845_ON_VSYNC_CHANGED( dealem_vsync_changed )
16361636{
1637   cpu_set_input_line(device->machine->cpu[0], INPUT_LINE_NMI, vsync);
1637   cputag_set_input_line(device->machine, "maincpu", INPUT_LINE_NMI, vsync);
16381638}
16391639
16401640/*************************************
src/mame/drivers/aquarium.c
r4679r4680
9898//  popmessage("sound write %04x",data);
9999
100100   soundlatch_w(space,1,data&0xff);
101   cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_NMI, PULSE_LINE );
101   cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE );
102102}
103103
104104static WRITE8_HANDLER( aquarium_z80_bank_w )
r4679r4680
318318   }
319319
320320   /* reset the sound bank */
321   aquarium_z80_bank_w(cpu_get_address_space(machine->cpu[1], ADDRESS_SPACE_IO), 0, 0);
321   aquarium_z80_bank_w(cputag_get_address_space(machine, "audiocpu", ADDRESS_SPACE_IO), 0, 0);
322322}
323323
324324
r4679r4680
331331
332332static void irq_handler(const device_config *device, int irq)
333333{
334   cpu_set_input_line(device->machine->cpu[1], 0 , irq ? ASSERT_LINE : CLEAR_LINE );
334   cputag_set_input_line(device->machine, "audiocpu", 0 , irq ? ASSERT_LINE : CLEAR_LINE );
335335}
336336
337337static const ym2151_interface ym2151_config =
src/mame/drivers/metro.c
r4679r4680
155155/* Update the IRQ state based on all possible causes */
156156static void update_irq_state(running_machine *machine)
157157{
158   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
158   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
159159
160160   /*  Get the pending IRQs (only the enabled ones, e.g. where
161161        irq_enable is *0*)  */
r4679r4680
170170      int i = 0;
171171      for (i = 0; i < 8; i++)
172172         if (irq & (1 << i))
173            irq_level[metro_irq_levels[i]&7] = 1;
173            irq_level[metro_irq_levels[i] & 7] = 1;
174174      for (i = 0; i < 8; i++)
175         cpu_set_input_line(machine->cpu[0], i, irq_level[i] ? ASSERT_LINE : CLEAR_LINE);
175         cputag_set_input_line(machine, "maincpu", i, irq_level[i] ? ASSERT_LINE : CLEAR_LINE);
176176   }
177177   else
178178   {
r4679r4680
181181            source by peeking a register (metro_irq_cause_r) */
182182
183183      int state =   (irq ? ASSERT_LINE : CLEAR_LINE);
184      cpu_set_input_line(machine->cpu[0], irq_line, state);
184      cputag_set_input_line(machine, "maincpu", irq_line, state);
185185   }
186186}
187187
r4679r4680
190190static IRQ_CALLBACK(metro_irq_callback)
191191{
192192//  logerror("%s: irq callback returns %04X\n",cpuexec_describe_context(device->machine),metro_irq_vectors[int_level]);
193   return metro_irq_vectors[irqline]&0xff;
193   return metro_irq_vectors[irqline] & 0xff;
194194}
195195
196196static MACHINE_RESET( metro )
197197{
198198   if (irq_line == -1)
199      cpu_set_irq_callback(machine->cpu[0], metro_irq_callback);
199      cpu_set_irq_callback(cputag_get_cpu(machine, "maincpu"), metro_irq_callback);
200200}
201201
202202
r4679r4680
321321
322322static void ymf278b_interrupt(const device_config *device, int active)
323323{
324   cpu_set_input_line(device->machine->cpu[0], 2, active);
324   cputag_set_input_line(device->machine, "maincpu", 2, active);
325325}
326326
327327/***************************************************************************
r4679r4680
337337
338338static int metro_io_callback(const device_config *device, int ioline, int state)
339339{
340   const address_space *space = cpu_get_address_space(device->machine->cpu[0], ADDRESS_SPACE_PROGRAM);
340   const address_space *space = cputag_get_address_space(device->machine, "maincpu", ADDRESS_SPACE_PROGRAM);
341341
342342   UINT8 data = 0;
343343
r4679r4680
360360   if (ACCESSING_BITS_0_7)
361361   {
362362      soundlatch_w(space,0,data & 0xff);
363      cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_NMI, PULSE_LINE);
363      cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
364364      cpu_spinuntil_int(space->cpu);
365365      busy_sndcpu = 1;
366366   }
r4679r4680
512512
513513static void metro_sound_irq_handler(const device_config *device, int state)
514514{
515   cpu_set_input_line(device->machine->cpu[1], UPD7810_INTF2, state ? ASSERT_LINE : CLEAR_LINE);
515   cputag_set_input_line(device->machine, "audiocpu", UPD7810_INTF2, state ? ASSERT_LINE : CLEAR_LINE);
516516}
517517
518518static const ym2151_interface ym2151_config =
r4679r4680
808808*/
809809
810810
811static ADDRESS_MAP_START( metro_snd_readmem, ADDRESS_SPACE_PROGRAM, 8 )
812   AM_RANGE(0x0000, 0x3fff) AM_READ(SMH_ROM)   /* External ROM */
813   AM_RANGE(0x4000, 0x7fff) AM_READ(SMH_BANK1)   /* External ROM (Banked) */
814   AM_RANGE(0x8000, 0x87ff) AM_READ(SMH_RAM)   /* External RAM */
815   AM_RANGE(0xff00, 0xffff) AM_READ(SMH_RAM)   /* Internal RAM */
811static ADDRESS_MAP_START( metro_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
812   AM_RANGE(0x0000, 0x3fff) AM_ROM         /* External ROM */
813   AM_RANGE(0x4000, 0x7fff) AM_ROMBANK(1)   /* External ROM (Banked) */
814   AM_RANGE(0x8000, 0x87ff) AM_RAM         /* External RAM */
815   AM_RANGE(0xff00, 0xffff) AM_RAM         /* Internal RAM */
816816ADDRESS_MAP_END
817817
818static ADDRESS_MAP_START( metro_snd_writemem, ADDRESS_SPACE_PROGRAM, 8 )
819   AM_RANGE(0x0000, 0x3fff) AM_WRITE(SMH_ROM)   /* External ROM */
820   AM_RANGE(0x4000, 0x7fff) AM_WRITE(SMH_BANK1)   /* External ROM (Banked) */
821   AM_RANGE(0x8000, 0x87ff) AM_WRITE(SMH_RAM)   /* External RAM */
822   AM_RANGE(0xff00, 0xffff) AM_WRITE(SMH_RAM)   /* Internal RAM */
823ADDRESS_MAP_END
824
825static ADDRESS_MAP_START( metro_snd_readport, ADDRESS_SPACE_IO, 8 )
826   AM_RANGE(UPD7810_PORTA, UPD7810_PORTA) AM_READ(metro_porta_r)
827ADDRESS_MAP_END
828
829static ADDRESS_MAP_START( metro_snd_writeport, ADDRESS_SPACE_IO, 8 )
830   AM_RANGE(UPD7810_PORTA, UPD7810_PORTA) AM_WRITE(metro_porta_w)
818static ADDRESS_MAP_START( metro_sound_io_map, ADDRESS_SPACE_IO, 8 )
819   AM_RANGE(UPD7810_PORTA, UPD7810_PORTA) AM_READWRITE(metro_porta_r,metro_porta_w)
831820   AM_RANGE(UPD7810_PORTB, UPD7810_PORTB) AM_WRITE(metro_portb_w)
832821   AM_RANGE(UPD7810_PORTC, UPD7810_PORTC) AM_WRITE(metro_sound_rombank_w)
833822ADDRESS_MAP_END
834823
835824/*****************/
836825
837static ADDRESS_MAP_START( daitorid_snd_readmem, ADDRESS_SPACE_PROGRAM, 8 )
838   AM_RANGE(0x0000, 0x3fff) AM_READ(SMH_ROM)   /* External ROM */
839   AM_RANGE(0x4000, 0x7fff) AM_READ(SMH_BANK1)   /* External ROM (Banked) */
840   AM_RANGE(0x8000, 0x87ff) AM_READ(SMH_RAM)   /* External RAM */
841   AM_RANGE(0xff00, 0xffff) AM_READ(SMH_RAM)   /* Internal RAM */
842ADDRESS_MAP_END
843826
844static ADDRESS_MAP_START( daitorid_snd_writemem, ADDRESS_SPACE_PROGRAM, 8 )
845   AM_RANGE(0x0000, 0x3fff) AM_WRITE(SMH_ROM)   /* External ROM */
846   AM_RANGE(0x4000, 0x7fff) AM_WRITE(SMH_BANK1)   /* External ROM (Banked) */
847   AM_RANGE(0x8000, 0x87ff) AM_WRITE(SMH_RAM)   /* External RAM */
848   AM_RANGE(0xff00, 0xffff) AM_WRITE(SMH_RAM)   /* Internal RAM */
849ADDRESS_MAP_END
850
851static ADDRESS_MAP_START( daitorid_snd_readport, ADDRESS_SPACE_IO, 8 )
852   AM_RANGE(UPD7810_PORTA, UPD7810_PORTA) AM_READ(metro_porta_r)
853ADDRESS_MAP_END
854
855static ADDRESS_MAP_START( daitorid_snd_writeport, ADDRESS_SPACE_IO, 8 )
856   AM_RANGE(UPD7810_PORTA, UPD7810_PORTA) AM_WRITE(metro_porta_w)
827static ADDRESS_MAP_START( daitorid_sound_io_map, ADDRESS_SPACE_IO, 8 )
828   AM_RANGE(UPD7810_PORTA, UPD7810_PORTA) AM_READWRITE(metro_porta_r,metro_porta_w)
857829   AM_RANGE(UPD7810_PORTB, UPD7810_PORTB) AM_WRITE(daitorid_portb_w)
858830   AM_RANGE(UPD7810_PORTC, UPD7810_PORTC) AM_WRITE(daitorid_sound_rombank_w)
859831ADDRESS_MAP_END
r4679r4680
894866}
895867
896868
897static ADDRESS_MAP_START( balcube_readmem, ADDRESS_SPACE_PROGRAM, 16 )
898   AM_RANGE(0x000000, 0x07ffff) AM_READ(SMH_ROM            )   // ROM
899   AM_RANGE(0xf00000, 0xf0ffff) AM_READ(SMH_RAM            )   // RAM
900   AM_RANGE(0x300000, 0x300001) AM_DEVREAD8("ymf", ymf278b_r, 0x00ff)   // Sound
901   AM_RANGE(0x400000, 0x41ffff) AM_READ(balcube_dsw_r         )   // DSW x 3
902   AM_RANGE(0x600000, 0x61ffff) AM_READ(SMH_RAM            )   // Layer 0
903   AM_RANGE(0x620000, 0x63ffff) AM_READ(SMH_RAM            )   // Layer 1
904   AM_RANGE(0x640000, 0x65ffff) AM_READ(SMH_RAM            )   // Layer 2
905   AM_RANGE(0x660000, 0x66ffff) AM_READ(metro_bankedrom_r      )   // Banked ROM
906   AM_RANGE(0x670000, 0x673fff) AM_READ(SMH_RAM            )   // Palette
907   AM_RANGE(0x674000, 0x674fff) AM_READ(SMH_RAM            )   // Sprites
908   AM_RANGE(0x678000, 0x6787ff) AM_READ(SMH_RAM            )   // Tiles Set
909   AM_RANGE(0x6788a2, 0x6788a3) AM_READ(metro_irq_cause_r      )   // IRQ Cause
910   AM_RANGE(0x500000, 0x500001) AM_READ_PORT("IN0")            // Inputs
911   AM_RANGE(0x500002, 0x500003) AM_READ_PORT("IN1")            //
912   AM_RANGE(0x500006, 0x500007) AM_READ(SMH_NOP            )   //
869static ADDRESS_MAP_START( balcube_map, ADDRESS_SPACE_PROGRAM, 16 )
870   AM_RANGE(0x000000, 0x07ffff) AM_ROM                                       // ROM
871   AM_RANGE(0xf00000, 0xf0ffff) AM_RAM                                       // RAM
872   AM_RANGE(0x300000, 0x300001) AM_DEVREADWRITE8("ymf", ymf278b_r,ymf278b_w, 0x00ff)   // Sound
873   AM_RANGE(0x400000, 0x41ffff) AM_READ(balcube_dsw_r)                           // DSW x 3
874   AM_RANGE(0x500000, 0x500001) AM_READ_PORT("IN0")                           // Inputs
875   AM_RANGE(0x500002, 0x500003) AM_READ_PORT("IN1")                           //
876   AM_RANGE(0x500006, 0x500007) AM_READNOP                                    //
877   AM_RANGE(0x500002, 0x500009) AM_WRITE(metro_coin_lockout_4words_w)               // Coin Lockout
878   AM_RANGE(0x600000, 0x61ffff) AM_RAM_WRITE(metro_vram_0_w) AM_BASE(&metro_vram_0)   // Layer 0
879   AM_RANGE(0x620000, 0x63ffff) AM_RAM_WRITE(metro_vram_1_w) AM_BASE(&metro_vram_1)   // Layer 1
880   AM_RANGE(0x640000, 0x65ffff) AM_RAM_WRITE(metro_vram_2_w) AM_BASE(&metro_vram_2)   // Layer 2
881   AM_RANGE(0x660000, 0x66ffff) AM_READ(metro_bankedrom_r)                        // Banked ROM
882   AM_RANGE(0x670000, 0x673fff) AM_RAM_WRITE(paletteram16_GGGGGRRRRRBBBBBx_word_w) AM_BASE(&paletteram16)   // Palette
883   AM_RANGE(0x674000, 0x674fff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)   // Sprites
884   AM_RANGE(0x678000, 0x6787ff) AM_RAM AM_BASE(&metro_tiletable) AM_SIZE(&metro_tiletable_size)   // Tiles Set
885   AM_RANGE(0x678840, 0x67884d) AM_WRITE(metro_blitter_w) AM_BASE(&metro_blitter_regs)   // Tiles Blitter
886   AM_RANGE(0x678860, 0x67886b) AM_WRITE(metro_window_w) AM_BASE(&metro_window)      // Tilemap Window
887   AM_RANGE(0x678870, 0x67887b) AM_WRITEONLY AM_BASE(&metro_scroll)               // Scroll
888   AM_RANGE(0x678880, 0x678881) AM_WRITENOP                                 // ? increasing
889   AM_RANGE(0x678890, 0x678891) AM_WRITENOP                                 // ? increasing
890   AM_RANGE(0x6788a2, 0x6788a3) AM_READWRITE(metro_irq_cause_r,metro_irq_cause_w)      // IRQ Cause / IRQ Acknowledge
891   AM_RANGE(0x6788a4, 0x6788a5) AM_WRITEONLY AM_BASE(&metro_irq_enable)            // IRQ Enable
892   AM_RANGE(0x6788aa, 0x6788ab) AM_WRITEONLY AM_BASE(&metro_rombank)               // Rom Bank
893   AM_RANGE(0x6788ac, 0x6788ad) AM_WRITEONLY AM_BASE(&metro_screenctrl)            // Screen Control
894   AM_RANGE(0x679700, 0x679713) AM_WRITEONLY AM_BASE(&metro_videoregs)               // Video Registers
913895ADDRESS_MAP_END
914896
915static ADDRESS_MAP_START( balcube_writemem, ADDRESS_SPACE_PROGRAM, 16 )
916   AM_RANGE(0x000000, 0x07ffff) AM_WRITE(SMH_ROM                  )   // ROM
917   AM_RANGE(0xf00000, 0xf0ffff) AM_WRITE(SMH_RAM                  )   // RAM
918   AM_RANGE(0x300000, 0x30000b) AM_DEVWRITE8("ymf", ymf278b_w, 0x00ff)   // Sound
919   AM_RANGE(0x500002, 0x500009) AM_WRITE(metro_coin_lockout_4words_w   )   // Coin Lockout
920   AM_RANGE(0x670000, 0x673fff) AM_WRITE(paletteram16_GGGGGRRRRRBBBBBx_word_w  ) AM_BASE(&paletteram16   )   // Palette
921   AM_RANGE(0x674000, 0x674fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size            )   // Sprites
922   AM_RANGE(0x600000, 0x61ffff) AM_WRITE(metro_vram_0_w) AM_BASE(&metro_vram_0   )   // Layer 0
923   AM_RANGE(0x620000, 0x63ffff) AM_WRITE(metro_vram_1_w) AM_BASE(&metro_vram_1   )   // Layer 1
924   AM_RANGE(0x640000, 0x65ffff) AM_WRITE(metro_vram_2_w) AM_BASE(&metro_vram_2   )   // Layer 2
925   AM_RANGE(0x678000, 0x6787ff) AM_WRITE(SMH_RAM) AM_BASE(&metro_tiletable) AM_SIZE(&metro_tiletable_size      )   // Tiles Set
926   AM_RANGE(0x678840, 0x67884d) AM_WRITE(metro_blitter_w) AM_BASE(&metro_blitter_regs      )   // Tiles Blitter
927   AM_RANGE(0x678860, 0x67886b) AM_WRITE(metro_window_w) AM_BASE(&metro_window            )   // Tilemap Window
928   AM_RANGE(0x678870, 0x67887b) AM_WRITE(SMH_RAM) AM_BASE(&metro_scroll      )   // Scroll
929   AM_RANGE(0x678880, 0x678881) AM_WRITE(SMH_NOP                  )   // ? increasing
930   AM_RANGE(0x678890, 0x678891) AM_WRITE(SMH_NOP                  )   // ? increasing
931   AM_RANGE(0x6788a2, 0x6788a3) AM_WRITE(metro_irq_cause_w            )   // IRQ Acknowledge
932   AM_RANGE(0x6788a4, 0x6788a5) AM_WRITE(SMH_RAM) AM_BASE(&metro_irq_enable   )   // IRQ Enable
933   AM_RANGE(0x6788aa, 0x6788ab) AM_WRITE(SMH_RAM) AM_BASE(&metro_rombank      )   // Rom Bank
934   AM_RANGE(0x6788ac, 0x6788ad) AM_WRITE(SMH_RAM) AM_BASE(&metro_screenctrl   )   // Screen Control
935   AM_RANGE(0x679700, 0x679713) AM_WRITE(SMH_RAM) AM_BASE(&metro_videoregs   )   // Video Registers
936ADDRESS_MAP_END
937897
938898/***************************************************************************
939899                                    Daitoride (alt hardware)
940900***************************************************************************/
941901
942902
943static ADDRESS_MAP_START( daitoa_readmem, ADDRESS_SPACE_PROGRAM, 16 )
944   AM_RANGE(0x000000, 0x07ffff) AM_READ(SMH_ROM            )   // ROM
945   AM_RANGE(0xf00000, 0xf0ffff) AM_READ(SMH_RAM            )   // RAM
946   AM_RANGE(0x400000, 0x400001) AM_DEVREAD8("ymf", ymf278b_r, 0x00ff)   // Sound
947   AM_RANGE(0x300000, 0x31ffff) AM_READ(balcube_dsw_r         )   // DSW x 3
948   AM_RANGE(0x100000, 0x11ffff) AM_READ(SMH_RAM            )   // Layer 0
949   AM_RANGE(0x120000, 0x13ffff) AM_READ(SMH_RAM            )   // Layer 1
950   AM_RANGE(0x140000, 0x15ffff) AM_READ(SMH_RAM            )   // Layer 2
951   AM_RANGE(0x160000, 0x16ffff) AM_READ(metro_bankedrom_r      )   // Banked ROM
952   AM_RANGE(0x170000, 0x173fff) AM_READ(SMH_RAM            )   // Palette
953   AM_RANGE(0x174000, 0x174fff) AM_READ(SMH_RAM            )   // Sprites
954   AM_RANGE(0x178000, 0x1787ff) AM_READ(SMH_RAM            )   // Tiles Set
955   AM_RANGE(0x1788a2, 0x1788a3) AM_READ(metro_irq_cause_r      )   // IRQ Cause
956   AM_RANGE(0x200000, 0x200001) AM_READ_PORT("IN0")            // Inputs
957   AM_RANGE(0x200002, 0x200003) AM_READ_PORT("IN1")            //
958   AM_RANGE(0x200006, 0x200007) AM_READ(SMH_NOP            )   //
903static ADDRESS_MAP_START( daitoa_map, ADDRESS_SPACE_PROGRAM, 16 )
904   AM_RANGE(0x000000, 0x07ffff) AM_ROM                                       // ROM
905   AM_RANGE(0xf00000, 0xf0ffff) AM_RAM                                     // RAM
906   AM_RANGE(0x400000, 0x400001) AM_DEVREADWRITE8("ymf", ymf278b_r,ymf278b_w, 0x00ff)   // Sound
907   AM_RANGE(0x300000, 0x31ffff) AM_READ(balcube_dsw_r)                           // DSW x 3
908   AM_RANGE(0x100000, 0x11ffff) AM_RAM_WRITE(metro_vram_0_w) AM_BASE(&metro_vram_0   )   // Layer 0
909   AM_RANGE(0x120000, 0x13ffff) AM_RAM_WRITE(metro_vram_1_w) AM_BASE(&metro_vram_1   )   // Layer 1
910   AM_RANGE(0x140000, 0x15ffff) AM_RAM_WRITE(metro_vram_2_w) AM_BASE(&metro_vram_2   )   // Layer 2
911   AM_RANGE(0x160000, 0x16ffff) AM_READ(metro_bankedrom_r)                        // Banked ROM
912   AM_RANGE(0x170000, 0x173fff) AM_RAM_WRITE(paletteram16_GGGGGRRRRRBBBBBx_word_w) AM_BASE(&paletteram16)   // Palette
913   AM_RANGE(0x174000, 0x174fff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)   // Sprites
914   AM_RANGE(0x178000, 0x1787ff) AM_RAM AM_BASE(&metro_tiletable) AM_SIZE(&metro_tiletable_size)   // Tiles Set
915   AM_RANGE(0x178840, 0x17884d) AM_WRITE(metro_blitter_w) AM_BASE(&metro_blitter_regs)   // Tiles Blitter
916   AM_RANGE(0x178860, 0x17886b) AM_WRITE(metro_window_w) AM_BASE(&metro_window)      // Tilemap Window
917   AM_RANGE(0x178870, 0x17887b) AM_WRITEONLY AM_BASE(&metro_scroll)               // Scroll
918   AM_RANGE(0x178880, 0x178881) AM_WRITENOP                                 // ? increasing
919   AM_RANGE(0x178890, 0x178891) AM_WRITENOP                                 // ? increasing
920   AM_RANGE(0x1788a2, 0x1788a3) AM_READWRITE(metro_irq_cause_r,metro_irq_cause_w)      // IRQ Cause / IRQ Acknowledge
921   AM_RANGE(0x1788a4, 0x1788a5) AM_WRITEONLY AM_BASE(&metro_irq_enable)            // IRQ Enable
922   AM_RANGE(0x1788aa, 0x1788ab) AM_WRITEONLY AM_BASE(&metro_rombank)               // Rom Bank
923   AM_RANGE(0x1788ac, 0x1788ad) AM_WRITEONLY AM_BASE(&metro_screenctrl)            // Screen Control
924   AM_RANGE(0x179700, 0x179713) AM_WRITEONLY AM_BASE(&metro_videoregs)               // Video Registers
925   AM_RANGE(0x200000, 0x200001) AM_READ_PORT("IN0")                           // Inputs
926   AM_RANGE(0x200002, 0x200003) AM_READ_PORT("IN1")                           //
927   AM_RANGE(0x200006, 0x200007) AM_READNOP                                    //
928   AM_RANGE(0x200002, 0x200009) AM_WRITE(metro_coin_lockout_4words_w)               // Coin Lockout
959929ADDRESS_MAP_END
960930
961static ADDRESS_MAP_START( daitoa_writemem, ADDRESS_SPACE_PROGRAM, 16 )
962   AM_RANGE(0x000000, 0x07ffff) AM_WRITE(SMH_ROM                  )   // ROM
963   AM_RANGE(0xf00000, 0xf0ffff) AM_WRITE(SMH_RAM                  )   // RAM
964   AM_RANGE(0x400000, 0x40000b) AM_DEVWRITE8("ymf", ymf278b_w, 0x00ff)   // Sound
965   AM_RANGE(0x200002, 0x200009) AM_WRITE(metro_coin_lockout_4words_w   )   // Coin Lockout
966   AM_RANGE(0x170000, 0x173fff) AM_WRITE(paletteram16_GGGGGRRRRRBBBBBx_word_w  ) AM_BASE(&paletteram16   )   // Palette
967   AM_RANGE(0x174000, 0x174fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size            )   // Sprites
968   AM_RANGE(0x100000, 0x11ffff) AM_WRITE(metro_vram_0_w) AM_BASE(&metro_vram_0   )   // Layer 0
969   AM_RANGE(0x120000, 0x13ffff) AM_WRITE(metro_vram_1_w) AM_BASE(&metro_vram_1   )   // Layer 1
970   AM_RANGE(0x140000, 0x15ffff) AM_WRITE(metro_vram_2_w) AM_BASE(&metro_vram_2   )   // Layer 2
971   AM_RANGE(0x178000, 0x1787ff) AM_WRITE(SMH_RAM) AM_BASE(&metro_tiletable) AM_SIZE(&metro_tiletable_size      )   // Tiles Set
972   AM_RANGE(0x178840, 0x17884d) AM_WRITE(metro_blitter_w) AM_BASE(&metro_blitter_regs      )   // Tiles Blitter
973   AM_RANGE(0x178860, 0x17886b) AM_WRITE(metro_window_w) AM_BASE(&metro_window            )   // Tilemap Window
974   AM_RANGE(0x178870, 0x17887b) AM_WRITE(SMH_RAM) AM_BASE(&metro_scroll      )   // Scroll
975   AM_RANGE(0x178880, 0x178881) AM_WRITE(SMH_NOP                  )   // ? increasing
976   AM_RANGE(0x178890, 0x178891) AM_WRITE(SMH_NOP                  )   // ? increasing
977   AM_RANGE(0x1788a2, 0x1788a3) AM_WRITE(metro_irq_cause_w            )   // IRQ Acknowledge
978   AM_RANGE(0x1788a4, 0x1788a5) AM_WRITE(SMH_RAM) AM_BASE(&metro_irq_enable   )   // IRQ Enable
979   AM_RANGE(0x1788aa, 0x1788ab) AM_WRITE(SMH_RAM) AM_BASE(&metro_rombank      )   // Rom Bank
980   AM_RANGE(0x1788ac, 0x1788ad) AM_WRITE(SMH_RAM) AM_BASE(&metro_screenctrl   )   // Screen Control
981   AM_RANGE(0x179700, 0x179713) AM_WRITE(SMH_RAM) AM_BASE(&metro_videoregs   )   // Video Registers
982ADDRESS_MAP_END
983931
984
985932/***************************************************************************
986933                                Bang Bang Ball
987934***************************************************************************/
988935
989static ADDRESS_MAP_START( bangball_readmem, ADDRESS_SPACE_PROGRAM, 16 )
990   AM_RANGE(0x000000, 0x07ffff) AM_READ(SMH_ROM            )   // ROM
991   AM_RANGE(0xf00000, 0xf0ffff) AM_READ(SMH_RAM            )   // RAM
992   AM_RANGE(0xf10000, 0xf10fff) AM_READ(SMH_RAM            )   // RAM (bug in the ram test routine)
993   AM_RANGE(0xb00000, 0xb00001) AM_DEVREAD8("ymf", ymf278b_r, 0x00ff)   // Sound
994   AM_RANGE(0xc00000, 0xc1ffff) AM_READ(balcube_dsw_r         )   // DSW x 3
995   AM_RANGE(0xd00000, 0xd00001) AM_READ_PORT("IN0")            // Inputs
996   AM_RANGE(0xd00002, 0xd00003) AM_READ_PORT("IN1")            //
997   AM_RANGE(0xd00006, 0xd00007) AM_READ(SMH_NOP            )   //
998   AM_RANGE(0xe00000, 0xe1ffff) AM_READ(SMH_RAM            )   // Layer 0
999   AM_RANGE(0xe20000, 0xe3ffff) AM_READ(SMH_RAM            )   // Layer 1
1000   AM_RANGE(0xe40000, 0xe5ffff) AM_READ(SMH_RAM            )   // Layer 2
1001   AM_RANGE(0xe60000, 0xe6ffff) AM_READ(metro_bankedrom_r      )   // Banked ROM
1002   AM_RANGE(0xe70000, 0xe73fff) AM_READ(SMH_RAM            )   // Palette
1003   AM_RANGE(0xe74000, 0xe74fff) AM_READ(SMH_RAM            )   // Sprites
1004   AM_RANGE(0xe78000, 0xe787ff) AM_READ(SMH_RAM            )   // Tiles Set
1005   AM_RANGE(0xe788a2, 0xe788a3) AM_READ(metro_irq_cause_r      )   // IRQ Cause
936static ADDRESS_MAP_START( bangball_map, ADDRESS_SPACE_PROGRAM, 16 )
937   AM_RANGE(0x000000, 0x07ffff) AM_ROM                                       // ROM
938   AM_RANGE(0xf00000, 0xf0ffff) AM_RAM                                       // RAM
939   AM_RANGE(0xf10000, 0xf10fff) AM_RAM                                       // RAM (bug in the ram test routine)
940   AM_RANGE(0xb00000, 0xb00001) AM_DEVREADWRITE8("ymf", ymf278b_r,ymf278b_w, 0x00ff)   // Sound
941   AM_RANGE(0xc00000, 0xc1ffff) AM_READ(balcube_dsw_r)                           // DSW x 3
942   AM_RANGE(0xd00000, 0xd00001) AM_READ_PORT("IN0")                           // Inputs
943   AM_RANGE(0xd00002, 0xd00003) AM_READ_PORT("IN1")                           //
944   AM_RANGE(0xd00006, 0xd00007) AM_READNOP                                    //
945   AM_RANGE(0xd00002, 0xd00009) AM_WRITE(metro_coin_lockout_4words_w)               // Coin Lockout
946   AM_RANGE(0xe00000, 0xe1ffff) AM_RAM_WRITE(metro_vram_0_w) AM_BASE(&metro_vram_0)   // Layer 0
947   AM_RANGE(0xe20000, 0xe3ffff) AM_RAM_WRITE(metro_vram_1_w) AM_BASE(&metro_vram_1)   // Layer 1
948   AM_RANGE(0xe40000, 0xe5ffff) AM_RAM_WRITE(metro_vram_2_w) AM_BASE(&metro_vram_2)   // Layer 2
949   AM_RANGE(0xe60000, 0xe6ffff) AM_READ(metro_bankedrom_r)                        // Banked ROM
950   AM_RANGE(0xe70000, 0xe73fff) AM_RAM_WRITE(paletteram16_GGGGGRRRRRBBBBBx_word_w) AM_BASE(&paletteram16)   // Palette
951   AM_RANGE(0xe74000, 0xe74fff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)   // Sprites
952   AM_RANGE(0xe78000, 0xe787ff) AM_RAM AM_BASE(&metro_tiletable) AM_SIZE(&metro_tiletable_size)   // Tiles Set
953   AM_RANGE(0xe78840, 0xe7884d) AM_WRITE(metro_blitter_w) AM_BASE(&metro_blitter_regs)   // Tiles Blitter
954   AM_RANGE(0xe78860, 0xe7886b) AM_WRITE(metro_window_w) AM_BASE(&metro_window)      // Tilemap Window
955   AM_RANGE(0xe78870, 0xe7887b) AM_WRITEONLY AM_BASE(&metro_scroll)               // Scroll
956   AM_RANGE(0xe78880, 0xe78881) AM_WRITENOP                                 // ? increasing
957   AM_RANGE(0xe78890, 0xe78891) AM_WRITENOP                                  // ? increasing
958   AM_RANGE(0xe788a2, 0xe788a3) AM_READWRITE(metro_irq_cause_r,metro_irq_cause_w)      // IRQ Cause / IRQ Acknowledge
959   AM_RANGE(0xe788a4, 0xe788a5) AM_WRITEONLY AM_BASE(&metro_irq_enable)            // IRQ Enable
960   AM_RANGE(0xe788aa, 0xe788ab) AM_WRITEONLY AM_BASE(&metro_rombank)               // Rom Bank
961   AM_RANGE(0xe788ac, 0xe788ad) AM_WRITEONLY AM_BASE(&metro_screenctrl)            // Screen Control
962   AM_RANGE(0xe79700, 0xe79713) AM_WRITEONLY AM_BASE(&metro_videoregs)               // Video Registers
1006963ADDRESS_MAP_END
1007964
1008static ADDRESS_MAP_START( bangball_writemem, ADDRESS_SPACE_PROGRAM, 16 )
1009   AM_RANGE(0x000000, 0x07ffff) AM_WRITE(SMH_ROM                  )   // ROM
1010   AM_RANGE(0xf00000, 0xf0ffff) AM_WRITE(SMH_RAM                  )   // RAM
1011   AM_RANGE(0xf10000, 0xf10fff) AM_WRITE(SMH_RAM                  )   // RAM
1012   AM_RANGE(0xb00000, 0xb0000b) AM_DEVWRITE8("ymf", ymf278b_w, 0x00ff)   // Sound
1013   AM_RANGE(0xd00002, 0xd00009) AM_WRITE(metro_coin_lockout_4words_w   )   // Coin Lockout
1014   AM_RANGE(0xe00000, 0xe1ffff) AM_WRITE(metro_vram_0_w) AM_BASE(&metro_vram_0   )   // Layer 0
1015   AM_RANGE(0xe20000, 0xe3ffff) AM_WRITE(metro_vram_1_w) AM_BASE(&metro_vram_1   )   // Layer 1
1016   AM_RANGE(0xe40000, 0xe5ffff) AM_WRITE(metro_vram_2_w) AM_BASE(&metro_vram_2   )   // Layer 2
1017   AM_RANGE(0xe70000, 0xe73fff) AM_WRITE(paletteram16_GGGGGRRRRRBBBBBx_word_w  ) AM_BASE(&paletteram16   )   // Palette
1018   AM_RANGE(0xe74000, 0xe74fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size            )   // Sprites
1019   AM_RANGE(0xe78000, 0xe787ff) AM_WRITE(SMH_RAM) AM_BASE(&metro_tiletable) AM_SIZE(&metro_tiletable_size      )   // Tiles Set
1020   AM_RANGE(0xe78840, 0xe7884d) AM_WRITE(metro_blitter_w) AM_BASE(&metro_blitter_regs      )   // Tiles Blitter
1021   AM_RANGE(0xe78860, 0xe7886b) AM_WRITE(metro_window_w) AM_BASE(&metro_window            )   // Tilemap Window
1022   AM_RANGE(0xe78870, 0xe7887b) AM_WRITE(SMH_RAM) AM_BASE(&metro_scroll      )   // Scroll
1023   AM_RANGE(0xe78880, 0xe78881) AM_WRITE(SMH_NOP                  )   // ? increasing
1024   AM_RANGE(0xe78890, 0xe78891) AM_WRITE(SMH_NOP                  )   // ? increasing
1025   AM_RANGE(0xe788a2, 0xe788a3) AM_WRITE(metro_irq_cause_w            )   // IRQ Acknowledge
1026   AM_RANGE(0xe788a4, 0xe788a5) AM_WRITE(SMH_RAM) AM_BASE(&metro_irq_enable   )   // IRQ Enable
1027   AM_RANGE(0xe788aa, 0xe788ab) AM_WRITE(SMH_RAM) AM_BASE(&metro_rombank      )   // Rom Bank
1028   AM_RANGE(0xe788ac, 0xe788ad) AM_WRITE(SMH_RAM) AM_BASE(&metro_screenctrl   )   // Screen Control
1029   AM_RANGE(0xe79700, 0xe79713) AM_WRITE(SMH_RAM) AM_BASE(&metro_videoregs   )   // Video Registers
1030ADDRESS_MAP_END
1031965
1032966/***************************************************************************
1033967                                Battle Bubble
1034968***************************************************************************/
1035969
1036static ADDRESS_MAP_START( batlbubl_readmem, ADDRESS_SPACE_PROGRAM, 16 )
1037   AM_RANGE(0x000000, 0x0fffff) AM_READ(SMH_ROM            )   // ROM
1038   AM_RANGE(0x100000, 0x11ffff) AM_READ(SMH_RAM            )   // Layer 0
1039   AM_RANGE(0x120000, 0x13ffff) AM_READ(SMH_RAM            )   // Layer 1
1040   AM_RANGE(0x140000, 0x15ffff) AM_READ(SMH_RAM            )   // Layer 2
1041   AM_RANGE(0x160000, 0x16ffff) AM_READ(metro_bankedrom_r      )   // Banked ROM
1042   AM_RANGE(0x170000, 0x173fff) AM_READ(SMH_RAM            )   // Palette
1043   AM_RANGE(0x174000, 0x174fff) AM_READ(SMH_RAM            )   // Sprites
1044   AM_RANGE(0x178000, 0x1787ff) AM_READ(SMH_RAM            )   // Tiles Set
1045   AM_RANGE(0x1788a2, 0x1788a3) AM_READ(metro_irq_cause_r      )   // IRQ Cause
970static ADDRESS_MAP_START( batlbubl_map, ADDRESS_SPACE_PROGRAM, 16 )
971   AM_RANGE(0x000000, 0x0fffff) AM_ROM                                       // ROM
972   AM_RANGE(0x100000, 0x11ffff) AM_RAM_WRITE(metro_vram_0_w) AM_BASE(&metro_vram_0)   // Layer 0
973   AM_RANGE(0x120000, 0x13ffff) AM_RAM_WRITE(metro_vram_1_w) AM_BASE(&metro_vram_1)   // Layer 1
974   AM_RANGE(0x140000, 0x15ffff) AM_RAM_WRITE(metro_vram_2_w) AM_BASE(&metro_vram_2)   // Layer 2
975   AM_RANGE(0x160000, 0x16ffff) AM_READ(metro_bankedrom_r)                        // Banked ROM
976   AM_RANGE(0x170000, 0x173fff) AM_RAM_WRITE(paletteram16_GGGGGRRRRRBBBBBx_word_w) AM_BASE(&paletteram16)   // Palette
977   AM_RANGE(0x174000, 0x174fff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)   // Sprites
978   AM_RANGE(0x178000, 0x1787ff) AM_RAM AM_BASE(&metro_tiletable) AM_SIZE(&metro_tiletable_size)   // Tiles Set
979   AM_RANGE(0x178840, 0x17884d) AM_WRITE(metro_blitter_w) AM_BASE(&metro_blitter_regs)   // Tiles Blitter
980   AM_RANGE(0x178860, 0x17886b) AM_WRITE(metro_window_w) AM_BASE(&metro_window)      // Tilemap Window
981   AM_RANGE(0x178870, 0x17887b) AM_WRITEONLY AM_BASE(&metro_scroll)               // Scroll
982   AM_RANGE(0x178880, 0x178881) AM_WRITENOP                                 // ? increasing
983   AM_RANGE(0x178890, 0x178891) AM_WRITENOP                                 // ? increasing
984   AM_RANGE(0x1788a2, 0x1788a3) AM_READWRITE(metro_irq_cause_r,metro_irq_cause_w)      // IRQ Cause / IRQ Acknowledge
985   AM_RANGE(0x1788a4, 0x1788a5) AM_WRITEONLY AM_BASE(&metro_irq_enable)            // IRQ Enable
986   AM_RANGE(0x1788aa, 0x1788ab) AM_WRITEONLY AM_BASE(&metro_rombank)               // Rom Bank
987   AM_RANGE(0x1788ac, 0x1788ad) AM_WRITEONLY AM_BASE(&metro_screenctrl)            // Screen Control
988   AM_RANGE(0x179700, 0x179713) AM_WRITEONLY AM_BASE(&metro_videoregs)               // Video Registers
1046989   AM_RANGE(0x200000, 0x200001) AM_READ_PORT("IN1")
1047990   AM_RANGE(0x200002, 0x200003) AM_READ_PORT("DSW0")
1048991   AM_RANGE(0x200004, 0x200005) AM_READ_PORT("IN0")
1049992   AM_RANGE(0x200006, 0x200007) AM_READ_PORT("IN2")
1050   AM_RANGE(0x300000, 0x31ffff) AM_READ(balcube_dsw_r         )   // read but ignored?
1051   AM_RANGE(0x400000, 0x400001) AM_DEVREAD8("ymf", ymf278b_r, 0x00ff)   // Sound
1052   AM_RANGE(0xf00000, 0xf0ffff) AM_READ(SMH_RAM            )   // RAM
1053   AM_RANGE(0xf10000, 0xf10fff) AM_READ(SMH_RAM            )   // RAM (bug in the ram test routine)
993   AM_RANGE(0x200002, 0x200009) AM_WRITE(metro_coin_lockout_4words_w)               // Coin Lockout
994   AM_RANGE(0x300000, 0x31ffff) AM_READ(balcube_dsw_r)                           // read but ignored?
995   AM_RANGE(0x400000, 0x400001) AM_DEVREADWRITE8("ymf", ymf278b_r,ymf278b_w, 0x00ff)   // Sound
996   AM_RANGE(0xf00000, 0xf0ffff) AM_RAM                                       // RAM
997   AM_RANGE(0xf10000, 0xf10fff) AM_RAM                                       // RAM (bug in the ram test routine)
1054998ADDRESS_MAP_END
1055999
1056static ADDRESS_MAP_START( batlbubl_writemem, ADDRESS_SPACE_PROGRAM, 16 )
1057   AM_RANGE(0x000000, 0x0fffff) AM_WRITE(SMH_ROM                  )   // ROM
1058   AM_RANGE(0x100000, 0x11ffff) AM_WRITE(metro_vram_0_w) AM_BASE(&metro_vram_0   )   // Layer 0
1059   AM_RANGE(0x120000, 0x13ffff) AM_WRITE(metro_vram_1_w) AM_BASE(&metro_vram_1   )   // Layer 1
1060   AM_RANGE(0x140000, 0x15ffff) AM_WRITE(metro_vram_2_w) AM_BASE(&metro_vram_2   )   // Layer 2
1061   AM_RANGE(0x170000, 0x173fff) AM_WRITE(paletteram16_GGGGGRRRRRBBBBBx_word_w  ) AM_BASE(&paletteram16   )   // Palette
1062   AM_RANGE(0x174000, 0x174fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size            )   // Sprites
1063   AM_RANGE(0x178000, 0x1787ff) AM_WRITE(SMH_RAM) AM_BASE(&metro_tiletable) AM_SIZE(&metro_tiletable_size      )   // Tiles Set
1064   AM_RANGE(0x178840, 0x17884d) AM_WRITE(metro_blitter_w) AM_BASE(&metro_blitter_regs      )   // Tiles Blitter
1065   AM_RANGE(0x178860, 0x17886b) AM_WRITE(metro_window_w) AM_BASE(&metro_window            )   // Tilemap Window
1066   AM_RANGE(0x178870, 0x17887b) AM_WRITE(SMH_RAM) AM_BASE(&metro_scroll      )   // Scroll
1067   AM_RANGE(0x178880, 0x178881) AM_WRITE(SMH_NOP                  )   // ? increasing
1068   AM_RANGE(0x178890, 0x178891) AM_WRITE(SMH_NOP                  )   // ? increasing
1069   AM_RANGE(0x1788a2, 0x1788a3) AM_WRITE(metro_irq_cause_w            )   // IRQ Acknowledge
1070   AM_RANGE(0x1788a4, 0x1788a5) AM_WRITE(SMH_RAM) AM_BASE(&metro_irq_enable   )   // IRQ Enable
1071   AM_RANGE(0x1788aa, 0x1788ab) AM_WRITE(SMH_RAM) AM_BASE(&metro_rombank      )   // Rom Bank
1072   AM_RANGE(0x1788ac, 0x1788ad) AM_WRITE(SMH_RAM) AM_BASE(&metro_screenctrl   )   // Screen Control
1073   AM_RANGE(0x179700, 0x179713) AM_WRITE(SMH_RAM) AM_BASE(&metro_videoregs   )   // Video Registers
1074   AM_RANGE(0x200002, 0x200009) AM_WRITE(metro_coin_lockout_4words_w   )   // Coin Lockout
1075   AM_RANGE(0x400000, 0x40000b) AM_DEVWRITE8("ymf", ymf278b_w, 0x00ff)   // Sound
1076   AM_RANGE(0xf00000, 0xf0ffff) AM_WRITE(SMH_RAM                  )   // RAM
1077   AM_RANGE(0xf10000, 0xf10fff) AM_WRITE(SMH_RAM                  )   // RAM
1078ADDRESS_MAP_END
10791000
1080
10811001/***************************************************************************
10821002                                Dai Toride
10831003***************************************************************************/
10841004
1085static ADDRESS_MAP_START( daitorid_readmem, ADDRESS_SPACE_PROGRAM, 16 )
1086   AM_RANGE(0x000000, 0x03ffff) AM_READ(SMH_ROM            )   // ROM
1087   AM_RANGE(0x800000, 0x80ffff) AM_READ(SMH_RAM            )   // RAM
1088   AM_RANGE(0x400000, 0x41ffff) AM_READ(SMH_RAM            )   // Layer 0
1089   AM_RANGE(0x420000, 0x43ffff) AM_READ(SMH_RAM            )   // Layer 1
1090   AM_RANGE(0x440000, 0x45ffff) AM_READ(SMH_RAM            )   // Layer 2
1091   AM_RANGE(0x460000, 0x46ffff) AM_READ(metro_bankedrom_r      )   // Banked ROM
1092   AM_RANGE(0x470000, 0x473fff) AM_READ(SMH_RAM            )   // Palette
1093   AM_RANGE(0x474000, 0x474fff) AM_READ(SMH_RAM            )   // Sprites
1094   AM_RANGE(0x478000, 0x4787ff) AM_READ(SMH_RAM            )   // Tiles Set
1095   AM_RANGE(0x4788a2, 0x4788a3) AM_READ(metro_irq_cause_r      )   // IRQ Cause
1096   AM_RANGE(0xc00000, 0xc00001) AM_READ_PORT("IN0")
1005static ADDRESS_MAP_START( daitorid_map, ADDRESS_SPACE_PROGRAM, 16 )
1006   AM_RANGE(0x000000, 0x03ffff) AM_ROM                                       // ROM
1007   AM_RANGE(0x800000, 0x80ffff) AM_RAM                                       // RAM
1008   AM_RANGE(0x400000, 0x41ffff) AM_RAM_WRITE(metro_vram_0_w) AM_BASE(&metro_vram_0   )   // Layer 0
1009   AM_RANGE(0x420000, 0x43ffff) AM_RAM_WRITE(metro_vram_1_w) AM_BASE(&metro_vram_1   )   // Layer 1
1010   AM_RANGE(0x440000, 0x45ffff) AM_RAM_WRITE(metro_vram_2_w) AM_BASE(&metro_vram_2   )   // Layer 2
1011   AM_RANGE(0x460000, 0x46ffff) AM_READ(metro_bankedrom_r)                        // Banked ROM
1012   AM_RANGE(0x470000, 0x473fff) AM_RAM_WRITE(paletteram16_GGGGGRRRRRBBBBBx_word_w) AM_BASE(&paletteram16)   // Palette
1013   AM_RANGE(0x474000, 0x474fff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)   // Sprites
1014   AM_RANGE(0x478000, 0x4787ff) AM_RAM AM_BASE(&metro_tiletable) AM_SIZE(&metro_tiletable_size)   // Tiles Set
1015   AM_RANGE(0x478840, 0x47884d) AM_WRITE(metro_blitter_w) AM_BASE(&metro_blitter_regs)   // Tiles Blitter
1016   AM_RANGE(0x478860, 0x47886b) AM_WRITE(metro_window_w) AM_BASE(&metro_window)      // Tilemap Window
1017   AM_RANGE(0x478870, 0x47887b) AM_WRITEONLY AM_BASE(&metro_scroll)               // Scroll
1018   AM_RANGE(0x478880, 0x478881) AM_WRITENOP                                 // ? increasing
1019   AM_RANGE(0x478890, 0x478891) AM_WRITENOP                                 // ? increasing
1020   AM_RANGE(0x4788a2, 0x4788a3) AM_READWRITE(metro_irq_cause_r,metro_irq_cause_w)      // IRQ Cause / IRQ Acknowledge
1021   AM_RANGE(0x4788a4, 0x4788a5) AM_WRITEONLY AM_BASE(&metro_irq_enable)            // IRQ Enable
1022   AM_RANGE(0x4788a8, 0x4788a9) AM_WRITE(metro_soundlatch_w)                     // To Sound CPU
1023   AM_RANGE(0x4788aa, 0x4788ab) AM_WRITEONLY AM_BASE(&metro_rombank)               // Rom Bank
1024   AM_RANGE(0x4788ac, 0x4788ad) AM_WRITEONLY AM_BASE(&metro_screenctrl)            // Screen Control
1025   AM_RANGE(0x479700, 0x479713) AM_WRITEONLY AM_BASE(&metro_videoregs)               // Video Registers
1026   AM_RANGE(0xc00000, 0xc00001) AM_READ_PORT("IN0") AM_WRITE(metro_soundstatus_w)       // To Sound CPU
10971027   AM_RANGE(0xc00002, 0xc00003) AM_READ_PORT("IN1")
10981028   AM_RANGE(0xc00004, 0xc00005) AM_READ_PORT("DSW0")
10991029   AM_RANGE(0xc00006, 0xc00007) AM_READ_PORT("IN2")
1030   AM_RANGE(0xc00002, 0xc00009) AM_WRITE(metro_coin_lockout_4words_w)               // Coin Lockout
11001031ADDRESS_MAP_END
11011032
1102static ADDRESS_MAP_START( daitorid_writemem, ADDRESS_SPACE_PROGRAM, 16 )
1103   AM_RANGE(0x000000, 0x03ffff) AM_WRITE(SMH_ROM                  )   // ROM
1104   AM_RANGE(0x800000, 0x80ffff) AM_WRITE(SMH_RAM                  )   // RAM
1105   AM_RANGE(0x400000, 0x41ffff) AM_WRITE(metro_vram_0_w) AM_BASE(&metro_vram_0   )   // Layer 0
1106   AM_RANGE(0x420000, 0x43ffff) AM_WRITE(metro_vram_1_w) AM_BASE(&metro_vram_1   )   // Layer 1
1107   AM_RANGE(0x440000, 0x45ffff) AM_WRITE(metro_vram_2_w) AM_BASE(&metro_vram_2   )   // Layer 2
1108   AM_RANGE(0x470000, 0x473fff) AM_WRITE(paletteram16_GGGGGRRRRRBBBBBx_word_w  ) AM_BASE(&paletteram16   )   // Palette
1109   AM_RANGE(0x474000, 0x474fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size            )   // Sprites
1110   AM_RANGE(0x478000, 0x4787ff) AM_WRITE(SMH_RAM) AM_BASE(&metro_tiletable) AM_SIZE(&metro_tiletable_size   )   // Tiles Set
1111   AM_RANGE(0x478840, 0x47884d) AM_WRITE(metro_blitter_w) AM_BASE(&metro_blitter_regs   )   // Tiles Blitter
1112   AM_RANGE(0x478860, 0x47886b) AM_WRITE(metro_window_w) AM_BASE(&metro_window         )   // Tilemap Window
1113   AM_RANGE(0x478870, 0x47887b) AM_WRITE(SMH_RAM) AM_BASE(&metro_scroll      )   // Scroll
1114   AM_RANGE(0x478880, 0x478881) AM_WRITE(SMH_NOP                  )   // ? increasing
1115   AM_RANGE(0x478890, 0x478891) AM_WRITE(SMH_NOP                  )   // ? increasing
1116   AM_RANGE(0x4788a2, 0x4788a3) AM_WRITE(metro_irq_cause_w            )   // IRQ Acknowledge
1117   AM_RANGE(0x4788a4, 0x4788a5) AM_WRITE(SMH_RAM) AM_BASE(&metro_irq_enable   )   // IRQ Enable
1118   AM_RANGE(0x4788a8, 0x4788a9) AM_WRITE(metro_soundlatch_w         )   // To Sound CPU
1119   AM_RANGE(0x4788aa, 0x4788ab) AM_WRITE(SMH_RAM) AM_BASE(&metro_rombank      )   // Rom Bank
1120   AM_RANGE(0x4788ac, 0x4788ad) AM_WRITE(SMH_RAM) AM_BASE(&metro_screenctrl   )   // Screen Control
1121   AM_RANGE(0x479700, 0x479713) AM_WRITE(SMH_RAM) AM_BASE(&metro_videoregs   )   // Video Registers
1122   AM_RANGE(0xc00000, 0xc00001) AM_WRITE(metro_soundstatus_w         )   // To Sound CPU
1123   AM_RANGE(0xc00002, 0xc00009) AM_WRITE(metro_coin_lockout_4words_w   )   // Coin Lockout
1124ADDRESS_MAP_END
11251033
1126
11271034/***************************************************************************
11281035                                Dharma Doujou
11291036***************************************************************************/
11301037
1131static ADDRESS_MAP_START( dharma_readmem, ADDRESS_SPACE_PROGRAM, 16 )
1132   AM_RANGE(0x000000, 0x03ffff) AM_READ(SMH_ROM            )   // ROM
1133   AM_RANGE(0x400000, 0x40ffff) AM_READ(SMH_RAM            )   // RAM
1134   AM_RANGE(0x800000, 0x81ffff) AM_READ(SMH_RAM            )   // Layer 0
1135   AM_RANGE(0x820000, 0x83ffff) AM_READ(SMH_RAM            )   // Layer 1
1136   AM_RANGE(0x840000, 0x85ffff) AM_READ(SMH_RAM            )   // Layer 2
1137   AM_RANGE(0x860000, 0x86ffff) AM_READ(metro_bankedrom_r      )   // Banked ROM
1138   AM_RANGE(0x870000, 0x873fff) AM_READ(SMH_RAM            )   // Palette
1139   AM_RANGE(0x874000, 0x874fff) AM_READ(SMH_RAM            )   // Sprites
1140   AM_RANGE(0x878000, 0x8787ff) AM_READ(SMH_RAM            )   // Tiles Set
1141   AM_RANGE(0x8788a2, 0x8788a3) AM_READ(metro_irq_cause_r      )   // IRQ Cause
1142   AM_RANGE(0xc00000, 0xc00001) AM_READ_PORT("IN0")
1038static ADDRESS_MAP_START( dharma_map, ADDRESS_SPACE_PROGRAM, 16 )
1039   AM_RANGE(0x000000, 0x03ffff) AM_ROM                                       // ROM
1040   AM_RANGE(0x400000, 0x40ffff) AM_RAM                                       // RAM
1041   AM_RANGE(0x800000, 0x81ffff) AM_RAM_WRITE(metro_vram_0_w) AM_BASE(&metro_vram_0   )   // Layer 0
1042   AM_RANGE(0x820000, 0x83ffff) AM_RAM_WRITE(metro_vram_1_w) AM_BASE(&metro_vram_1   )   // Layer 1
1043   AM_RANGE(0x840000, 0x85ffff) AM_RAM_WRITE(metro_vram_2_w) AM_BASE(&metro_vram_2   )   // Layer 2
1044   AM_RANGE(0x860000, 0x86ffff) AM_READ(metro_bankedrom_r)                        // Banked ROM
1045   AM_RANGE(0x870000, 0x873fff) AM_RAM_WRITE(paletteram16_GGGGGRRRRRBBBBBx_word_w) AM_BASE(&paletteram16)   // Palette
1046   AM_RANGE(0x874000, 0x874fff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)   // Sprites
1047   AM_RANGE(0x878000, 0x8787ff) AM_RAM AM_BASE(&metro_tiletable) AM_SIZE(&metro_tiletable_size   )   // Tiles Set
1048   AM_RANGE(0x878840, 0x87884d) AM_WRITE(metro_blitter_w) AM_BASE(&metro_blitter_regs)   // Tiles Blitter
1049   AM_RANGE(0x878860, 0x87886b) AM_WRITE(metro_window_w) AM_BASE(&metro_window   )      // Tilemap Window
1050   AM_RANGE(0x878870, 0x87887b) AM_WRITE(SMH_RAM) AM_BASE(&metro_scroll)            // Scroll Regs
1051   AM_RANGE(0x878880, 0x878881) AM_WRITENOP                                 // ? increasing
1052   AM_RANGE(0x878890, 0x878891) AM_WRITENOP                                 // ? increasing
1053   AM_RANGE(0x8788a4, 0x8788a5) AM_WRITEONLY AM_BASE(&metro_irq_enable)            // IRQ Enable
1054   AM_RANGE(0x8788a8, 0x8788a9) AM_WRITE(metro_soundlatch_w)                     // To Sound CPU
1055   AM_RANGE(0x8788aa, 0x8788ab) AM_WRITEONLY AM_BASE(&metro_rombank)               // Rom Bank
1056   AM_RANGE(0x8788ac, 0x8788ad) AM_WRITEONLY AM_BASE(&metro_screenctrl)            // Screen Control
1057   AM_RANGE(0x8788a2, 0x8788a3) AM_READWRITE(metro_irq_cause_r,metro_irq_cause_w)      // IRQ Cause / IRQ Acknowledge
1058   AM_RANGE(0x879700, 0x879713) AM_WRITEONLY AM_BASE(&metro_videoregs)               // Video Registers
1059   AM_RANGE(0xc00000, 0xc00001) AM_READ_PORT("IN0") AM_WRITE(metro_soundstatus_w)      // To Sound CPU
11431060   AM_RANGE(0xc00002, 0xc00003) AM_READ_PORT("IN1")
11441061   AM_RANGE(0xc00004, 0xc00005) AM_READ_PORT("DSW0")
11451062   AM_RANGE(0xc00006, 0xc00007) AM_READ_PORT("IN2")
1063   AM_RANGE(0xc00002, 0xc00009) AM_WRITE(metro_coin_lockout_4words_w)               // Coin Lockout
11461064ADDRESS_MAP_END
11471065
1148static ADDRESS_MAP_START( dharma_writemem, ADDRESS_SPACE_PROGRAM, 16 )
1149   AM_RANGE(0x000000, 0x03ffff) AM_WRITE(SMH_ROM                  )   // ROM
1150   AM_RANGE(0x400000, 0x40ffff) AM_WRITE(SMH_RAM                  )   // RAM
1151   AM_RANGE(0x800000, 0x81ffff) AM_WRITE(metro_vram_0_w) AM_BASE(&metro_vram_0   )   // Layer 0
1152   AM_RANGE(0x820000, 0x83ffff) AM_WRITE(metro_vram_1_w) AM_BASE(&metro_vram_1   )   // Layer 1
1153   AM_RANGE(0x840000, 0x85ffff) AM_WRITE(metro_vram_2_w) AM_BASE(&metro_vram_2   )   // Layer 2
1154   AM_RANGE(0x870000, 0x873fff) AM_WRITE(paletteram16_GGGGGRRRRRBBBBBx_word_w  ) AM_BASE(&paletteram16   )   // Palette
1155   AM_RANGE(0x874000, 0x874fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size            )   // Sprites
1156   AM_RANGE(0x878000, 0x8787ff) AM_WRITE(SMH_RAM) AM_BASE(&metro_tiletable) AM_SIZE(&metro_tiletable_size   )   // Tiles Set
1157   AM_RANGE(0x878840, 0x87884d) AM_WRITE(metro_blitter_w) AM_BASE(&metro_blitter_regs   )   // Tiles Blitter
1158   AM_RANGE(0x878860, 0x87886b) AM_WRITE(metro_window_w) AM_BASE(&metro_window   )   // Tilemap Window
1159   AM_RANGE(0x878870, 0x87887b) AM_WRITE(SMH_RAM) AM_BASE(&metro_scroll      )   // Scroll Regs
1160   AM_RANGE(0x878880, 0x878881) AM_WRITE(SMH_NOP                  )   // ? increasing
1161   AM_RANGE(0x878890, 0x878891) AM_WRITE(SMH_NOP                  )   // ? increasing
1162   AM_RANGE(0x8788a2, 0x8788a3) AM_WRITE(metro_irq_cause_w            )   // IRQ Acknowledge
1163   AM_RANGE(0x8788a4, 0x8788a5) AM_WRITE(SMH_RAM) AM_BASE(&metro_irq_enable   )   // IRQ Enable
1164   AM_RANGE(0x8788a8, 0x8788a9) AM_WRITE(metro_soundlatch_w         )   // To Sound CPU
1165   AM_RANGE(0x8788aa, 0x8788ab) AM_WRITE(SMH_RAM) AM_BASE(&metro_rombank      )   // Rom Bank
1166   AM_RANGE(0x8788ac, 0x8788ad) AM_WRITE(SMH_RAM) AM_BASE(&metro_screenctrl   )   // Screen Control
1167   AM_RANGE(0x879700, 0x879713) AM_WRITE(SMH_RAM) AM_BASE(&metro_videoregs   )   // Video Registers
1168   AM_RANGE(0xc00000, 0xc00001) AM_WRITE(metro_soundstatus_w         )   // To Sound CPU
1169   AM_RANGE(0xc00002, 0xc00009) AM_WRITE(metro_coin_lockout_4words_w   )   // Coin Lockout
1170ADDRESS_MAP_END
11711066
1172
11731067/***************************************************************************
11741068                                Karate Tournament
11751069***************************************************************************/
r4679r4680
11941088KARATOUR_VRAM( 1 )
11951089KARATOUR_VRAM( 2 )
11961090
1197static ADDRESS_MAP_START( karatour_readmem, ADDRESS_SPACE_PROGRAM, 16 )
1198   AM_RANGE(0x000000, 0x07ffff) AM_READ(SMH_ROM            )   // ROM
1199   AM_RANGE(0xffc000, 0xffffff) AM_READ(SMH_RAM            )   // RAM
1200   AM_RANGE(0x400000, 0x400001) AM_READ(metro_soundstatus_r   )   // From Sound CPU
1201   AM_RANGE(0x400002, 0x400003) AM_READ_PORT("IN0")            // Inputs
1202   AM_RANGE(0x400004, 0x400005) AM_READ_PORT("IN1")            //
1203   AM_RANGE(0x400006, 0x400007) AM_READ_PORT("DSW0")            //
1204   AM_RANGE(0x40000a, 0x40000b) AM_READ_PORT("DSW1")            //
1205   AM_RANGE(0x40000c, 0x40000d) AM_READ_PORT("IN2")            //
1206   AM_RANGE(0x860000, 0x86ffff) AM_READ(metro_bankedrom_r      )   // Banked ROM
1207   AM_RANGE(0x870000, 0x873fff) AM_READ(SMH_RAM            )   // Palette
1208   AM_RANGE(0x874000, 0x874fff) AM_READ(SMH_RAM            )   // Sprites
1209   AM_RANGE(0x875000, 0x875fff) AM_READ(karatour_vram_0_r      )   // Layer 0 (Part of)
1210   AM_RANGE(0x876000, 0x876fff) AM_READ(karatour_vram_1_r      )   // Layer 1 (Part of)
1211   AM_RANGE(0x877000, 0x877fff) AM_READ(karatour_vram_2_r      )   // Layer 2 (Part of)
1212   AM_RANGE(0x878000, 0x8787ff) AM_READ(SMH_RAM            )   // Tiles Set
1213   AM_RANGE(0x8788a2, 0x8788a3) AM_READ(metro_irq_cause_r      )   // IRQ Cause
1091static ADDRESS_MAP_START( karatour_map, ADDRESS_SPACE_PROGRAM, 16 )
1092   AM_RANGE(0x000000, 0x07ffff) AM_ROM                                       // ROM
1093   AM_RANGE(0xffc000, 0xffffff) AM_RAM                                       // RAM
1094   AM_RANGE(0x400000, 0x400001) AM_READWRITE(metro_soundstatus_r,metro_soundstatus_w)   // From Sound CPU
1095   AM_RANGE(0x400002, 0x400003) AM_READ_PORT("IN0")                           // Inputs
1096   AM_RANGE(0x400002, 0x400003) AM_WRITE(metro_coin_lockout_1word_w)               // Coin Lockout
1097   AM_RANGE(0x400004, 0x400005) AM_READ_PORT("IN1")                           //
1098   AM_RANGE(0x400006, 0x400007) AM_READ_PORT("DSW0")                           //
1099   AM_RANGE(0x40000a, 0x40000b) AM_READ_PORT("DSW1")                           //
1100   AM_RANGE(0x40000c, 0x40000d) AM_READ_PORT("IN2")                           //
1101   AM_RANGE(0x860000, 0x86ffff) AM_READ(metro_bankedrom_r)                        // Banked ROM
1102   AM_RANGE(0x870000, 0x873fff) AM_RAM_WRITE(paletteram16_GGGGGRRRRRBBBBBx_word_w) AM_BASE(&paletteram16)   // Palette
1103   AM_RANGE(0x874000, 0x874fff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)   // Sprites
1104   AM_RANGE(0x875000, 0x875fff) AM_READWRITE(karatour_vram_0_r,karatour_vram_0_w)      // Layer 0 (Part of)
1105   AM_RANGE(0x876000, 0x876fff) AM_READWRITE(karatour_vram_1_r,karatour_vram_1_w)      // Layer 1 (Part of)
1106   AM_RANGE(0x877000, 0x877fff) AM_READWRITE(karatour_vram_2_r,karatour_vram_2_w)      // Layer 2 (Part of)
1107   AM_RANGE(0x878000, 0x8787ff) AM_RAM AM_BASE(&metro_tiletable) AM_SIZE(&metro_tiletable_size)   // Tiles Set
1108   AM_RANGE(0x878800, 0x878813) AM_WRITEONLY AM_BASE(&metro_videoregs)               // Video Registers
1109   AM_RANGE(0x878840, 0x87884d) AM_WRITE(metro_blitter_w) AM_BASE(&metro_blitter_regs)   // Tiles Blitter
1110   AM_RANGE(0x878860, 0x87886b) AM_WRITE(metro_window_w) AM_BASE(&metro_window)      // Tilemap Window
1111   AM_RANGE(0x878870, 0x87887b) AM_WRITEONLY AM_BASE(&metro_scroll)               // Scroll
1112   AM_RANGE(0x878880, 0x878881) AM_WRITENOP                                 // ? increasing
1113   AM_RANGE(0x878890, 0x878891) AM_WRITENOP                                 // ? increasing
1114   AM_RANGE(0x8788a2, 0x8788a3) AM_READWRITE(metro_irq_cause_r,metro_irq_cause_w)      // IRQ Cause / IRQ Acknowledge
1115   AM_RANGE(0x8788a4, 0x8788a5) AM_WRITEONLY AM_BASE(&metro_irq_enable)            // IRQ Enable
1116   AM_RANGE(0x8788a8, 0x8788a9) AM_WRITE(metro_soundlatch_w)                     // To Sound CPU
1117   AM_RANGE(0x8788aa, 0x8788ab) AM_WRITEONLY AM_BASE(&metro_rombank)               // Rom Bank
1118   AM_RANGE(0x8788ac, 0x8788ad) AM_WRITEONLY AM_BASE(&metro_screenctrl)            // Screen Control
12141119ADDRESS_MAP_END
12151120
1216static ADDRESS_MAP_START( karatour_writemem, ADDRESS_SPACE_PROGRAM, 16 )
1217   AM_RANGE(0x000000, 0x07ffff) AM_WRITE(SMH_ROM                  )   // ROM
1218   AM_RANGE(0xffc000, 0xffffff) AM_WRITE(SMH_RAM                  )   // RAM
1219   AM_RANGE(0x400000, 0x400001) AM_WRITE(metro_soundstatus_w         )   // To Sound CPU
1220   AM_RANGE(0x400002, 0x400003) AM_WRITE(metro_coin_lockout_1word_w   )   // Coin Lockout
1221   AM_RANGE(0x870000, 0x873fff) AM_WRITE(paletteram16_GGGGGRRRRRBBBBBx_word_w  ) AM_BASE(&paletteram16   )   // Palette
1222   AM_RANGE(0x874000, 0x874fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size            )   // Sprites
1223   AM_RANGE(0x875000, 0x875fff) AM_WRITE(karatour_vram_0_w            )   // Layer 0 (Part of)
1224   AM_RANGE(0x876000, 0x876fff) AM_WRITE(karatour_vram_1_w            )   // Layer 1 (Part of)
1225   AM_RANGE(0x877000, 0x877fff) AM_WRITE(karatour_vram_2_w            )   // Layer 2 (Part of)
1226   AM_RANGE(0x878000, 0x8787ff) AM_WRITE(SMH_RAM) AM_BASE(&metro_tiletable) AM_SIZE(&metro_tiletable_size   )   // Tiles Set
1227   AM_RANGE(0x878800, 0x878813) AM_WRITE(SMH_RAM) AM_BASE(&metro_videoregs   )   // Video Registers
1228   AM_RANGE(0x878840, 0x87884d) AM_WRITE(metro_blitter_w) AM_BASE(&metro_blitter_regs   )   // Tiles Blitter
1229   AM_RANGE(0x878860, 0x87886b) AM_WRITE(metro_window_w) AM_BASE(&metro_window   )   // Tilemap Window
1230   AM_RANGE(0x878870, 0x87887b) AM_WRITE(SMH_RAM) AM_BASE(&metro_scroll      )   // Scroll
1231   AM_RANGE(0x878880, 0x878881) AM_WRITE(SMH_NOP                  )   // ? increasing
1232   AM_RANGE(0x878890, 0x878891) AM_WRITE(SMH_NOP                  )   // ? increasing
1233   AM_RANGE(0x8788a2, 0x8788a3) AM_WRITE(metro_irq_cause_w            )   // IRQ Acknowledge
1234   AM_RANGE(0x8788a4, 0x8788a5) AM_WRITE(SMH_RAM) AM_BASE(&metro_irq_enable   )   // IRQ Enable
1235   AM_RANGE(0x8788a8, 0x8788a9) AM_WRITE(metro_soundlatch_w         )   // To Sound CPU
1236   AM_RANGE(0x8788aa, 0x8788ab) AM_WRITE(SMH_RAM) AM_BASE(&metro_rombank      )   // Rom Bank
1237   AM_RANGE(0x8788ac, 0x8788ad) AM_WRITE(SMH_RAM) AM_BASE(&metro_screenctrl   )   // Screen Control
1238ADDRESS_MAP_END
12391121
1240
12411122/***************************************************************************
12421123                                Sankokushi
12431124***************************************************************************/
12441125
12451126/* same limited tilemap access as karatour */
12461127
1247static ADDRESS_MAP_START( kokushi_readmem, ADDRESS_SPACE_PROGRAM, 16 )
1248   AM_RANGE(0x000000, 0x07ffff) AM_READ(SMH_ROM            )   // ROM
1249   AM_RANGE(0x7fc000, 0x7fffff) AM_READ(SMH_RAM            )   // RAM
1250   AM_RANGE(0x860000, 0x86ffff) AM_READ(metro_bankedrom_r      )   // Banked ROM
1251   AM_RANGE(0x870000, 0x873fff) AM_READ(SMH_RAM            )   // Palette
1252   AM_RANGE(0x874000, 0x874fff) AM_READ(SMH_RAM            )   // Sprites
1253   AM_RANGE(0x875000, 0x875fff) AM_READ(karatour_vram_0_r      )   // Layer 0 (Part of)
1254   AM_RANGE(0x876000, 0x876fff) AM_READ(karatour_vram_1_r      )   // Layer 1 (Part of)
1255   AM_RANGE(0x877000, 0x877fff) AM_READ(karatour_vram_2_r      )   // Layer 2 (Part of)
1256   AM_RANGE(0x878000, 0x8787ff) AM_READ(SMH_RAM            )   // Tiles Set
1257   AM_RANGE(0x8788a2, 0x8788a3) AM_READ(metro_irq_cause_r      )   // IRQ Cause
1258   AM_RANGE(0xc00000, 0xc00001) AM_READ_PORT("IN0")            // From Sound CPU
1259   AM_RANGE(0xc00002, 0xc00003) AM_READ_PORT("IN1")            // Inputs
1128static ADDRESS_MAP_START( kokushi_map, ADDRESS_SPACE_PROGRAM, 16 )
1129   AM_RANGE(0x000000, 0x07ffff) AM_ROM                                       // ROM
1130   AM_RANGE(0x7fc000, 0x7fffff) AM_RAM                                       // RAM
1131   AM_RANGE(0x860000, 0x86ffff) AM_READ(metro_bankedrom_r)                        // Banked ROM
1132   AM_RANGE(0x870000, 0x873fff) AM_RAM_WRITE(paletteram16_GGGGGRRRRRBBBBBx_word_w) AM_BASE(&paletteram16)   // Palette
1133   AM_RANGE(0x874000, 0x874fff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)   // Sprites
1134   AM_RANGE(0x875000, 0x875fff) AM_READWRITE(karatour_vram_0_r,karatour_vram_0_w)      // Layer 0 (Part of)
1135   AM_RANGE(0x876000, 0x876fff) AM_READWRITE(karatour_vram_1_r,karatour_vram_1_w)      // Layer 1 (Part of)
1136   AM_RANGE(0x877000, 0x877fff) AM_READWRITE(karatour_vram_2_r,karatour_vram_2_w)      // Layer 2 (Part of)
1137   AM_RANGE(0x878000, 0x8787ff) AM_RAM AM_BASE(&metro_tiletable) AM_SIZE(&metro_tiletable_size)   // Tiles Set
1138   AM_RANGE(0x878840, 0x87884d) AM_WRITE(metro_blitter_w) AM_BASE(&metro_blitter_regs)   // Tiles Blitter
1139   AM_RANGE(0x878860, 0x87886b) AM_WRITE(metro_window_w) AM_BASE(&metro_window)      // Tilemap Window
1140   AM_RANGE(0x878870, 0x87887b) AM_WRITEONLY AM_BASE(&metro_scroll)               // Scroll Regs - WRONG
1141//  AM_RANGE(0x878880, 0x878881) AM_WRITENOP                                            // ? increasing
1142   AM_RANGE(0x878890, 0x878891) AM_WRITENOP                                 // ? increasing
1143   AM_RANGE(0x8788a2, 0x8788a3) AM_READWRITE(metro_irq_cause_r,metro_irq_cause_w)      // IRQ Cause /  IRQ Acknowledge
1144   AM_RANGE(0x8788a4, 0x8788a5) AM_WRITEONLY AM_BASE(&metro_irq_enable)            // IRQ Enable
1145   AM_RANGE(0x8788a8, 0x8788a9) AM_WRITE(metro_soundlatch_w)                     // To Sound CPU
1146   AM_RANGE(0x8788aa, 0x8788ab) AM_WRITEONLY AM_BASE(&metro_rombank)               // Rom Bank
1147   AM_RANGE(0x8788ac, 0x8788ad) AM_WRITEONLY AM_BASE(&metro_screenctrl)            // Screen Control
1148   AM_RANGE(0x879700, 0x879713) AM_WRITEONLY AM_BASE(&metro_videoregs)               // Video Registers
1149   AM_RANGE(0xc00000, 0xc00001) AM_READ_PORT("IN0") AM_WRITE(metro_soundstatus_w)      // To Sound CPU
1150   AM_RANGE(0xc00002, 0xc00003) AM_READ_PORT("IN1")                           // Inputs
12601151   AM_RANGE(0xc00004, 0xc00005) AM_READ_PORT("DSW0")
1152   AM_RANGE(0xc00002, 0xc00009) AM_WRITE(metro_coin_lockout_4words_w   )            // Coin Lockout
12611153ADDRESS_MAP_END
12621154
1263static ADDRESS_MAP_START( kokushi_writemem, ADDRESS_SPACE_PROGRAM, 16 )
1264   AM_RANGE(0x000000, 0x07ffff) AM_WRITE(SMH_ROM                  )   // ROM
1265   AM_RANGE(0x7fc000, 0x7fffff) AM_WRITE(SMH_RAM                  )   // RAM
1266   AM_RANGE(0x870000, 0x873fff) AM_WRITE(paletteram16_GGGGGRRRRRBBBBBx_word_w  ) AM_BASE(&paletteram16   )   // Palette
1267   AM_RANGE(0x874000, 0x874fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size            )   // Sprites
1268   AM_RANGE(0x875000, 0x875fff) AM_WRITE(karatour_vram_0_w            )   // Layer 0 (Part of)
1269   AM_RANGE(0x876000, 0x876fff) AM_WRITE(karatour_vram_1_w            )   // Layer 1 (Part of)
1270   AM_RANGE(0x877000, 0x877fff) AM_WRITE(karatour_vram_2_w            )   // Layer 2 (Part of)
1271   AM_RANGE(0x878000, 0x8787ff) AM_WRITE(SMH_RAM) AM_BASE(&metro_tiletable) AM_SIZE(&metro_tiletable_size   )   // Tiles Set
1272   AM_RANGE(0x878840, 0x87884d) AM_WRITE(metro_blitter_w) AM_BASE(&metro_blitter_regs   )   // Tiles Blitter
1273   AM_RANGE(0x878860, 0x87886b) AM_WRITE(metro_window_w) AM_BASE(&metro_window   )   // Tilemap Window
1274   AM_RANGE(0x878870, 0x87887b) AM_WRITE(SMH_RAM) AM_BASE(&metro_scroll      )   // Scroll Regs - WRONG
1275//  AM_RANGE(0x878880, 0x878881) AM_WRITE(SMH_NOP                     )   // ? increasing
1276   AM_RANGE(0x878890, 0x878891) AM_WRITE(SMH_NOP                  )   // ? increasing
1277   AM_RANGE(0x8788a2, 0x8788a3) AM_WRITE(metro_irq_cause_w            )   // IRQ Acknowledge
1278   AM_RANGE(0x8788a4, 0x8788a5) AM_WRITE(SMH_RAM) AM_BASE(&metro_irq_enable   )   // IRQ Enable
1279   AM_RANGE(0x8788a8, 0x8788a9) AM_WRITE(metro_soundlatch_w         )   // To Sound CPU
1280   AM_RANGE(0x8788aa, 0x8788ab) AM_WRITE(SMH_RAM) AM_BASE(&metro_rombank      )   // Rom Bank
1281   AM_RANGE(0x8788ac, 0x8788ad) AM_WRITE(SMH_RAM) AM_BASE(&metro_screenctrl   )   // Screen Control
1282   AM_RANGE(0x879700, 0x879713) AM_WRITE(SMH_RAM) AM_BASE(&metro_videoregs   )   // Video Registers
1283   AM_RANGE(0xc00000, 0xc00001) AM_WRITE(metro_soundstatus_w         )   // To Sound CPU
1284   AM_RANGE(0xc00002, 0xc00009) AM_WRITE(metro_coin_lockout_4words_w   )   // Coin Lockout
1285ADDRESS_MAP_END
12861155
1287
1288
12891156/***************************************************************************
12901157                                Last Fortress
12911158***************************************************************************/
12921159
1293static ADDRESS_MAP_START( lastfort_readmem, ADDRESS_SPACE_PROGRAM, 16 )
1294   AM_RANGE(0x000000, 0x03ffff) AM_READ(SMH_ROM            )   // ROM
1295   AM_RANGE(0x400000, 0x40ffff) AM_READ(SMH_RAM            )   // RAM
1296   AM_RANGE(0x800000, 0x81ffff) AM_READ(SMH_RAM            )   // Layer 0
1297   AM_RANGE(0x820000, 0x83ffff) AM_READ(SMH_RAM            )   // Layer 1
1298   AM_RANGE(0x840000, 0x85ffff) AM_READ(SMH_RAM            )   // Layer 2
1299   AM_RANGE(0x860000, 0x86ffff) AM_READ(metro_bankedrom_r      )   // Banked ROM
1300   AM_RANGE(0x870000, 0x873fff) AM_READ(SMH_RAM            )   // Palette
1301   AM_RANGE(0x874000, 0x874fff) AM_READ(SMH_RAM            )   // Sprites
1302   AM_RANGE(0x878000, 0x8787ff) AM_READ(SMH_RAM            )   // Tiles Set
1303   AM_RANGE(0x8788a2, 0x8788a3) AM_READ(metro_irq_cause_r      )   // IRQ Cause
1304   AM_RANGE(0xc00000, 0xc00001) AM_READ(metro_soundstatus_r   )   // From Sound CPU
1305   AM_RANGE(0xc00002, 0xc00003) AM_READ(SMH_NOP            )   //
1306   AM_RANGE(0xc00004, 0xc00005) AM_READ_PORT("IN0")            // Inputs
1307   AM_RANGE(0xc00006, 0xc00007) AM_READ_PORT("IN1")            //
1308   AM_RANGE(0xc00008, 0xc00009) AM_READ_PORT("IN2")            //
1309   AM_RANGE(0xc0000a, 0xc0000b) AM_READ_PORT("DSW0")            //
1310   AM_RANGE(0xc0000c, 0xc0000d) AM_READ_PORT("DSW1")            //
1311   AM_RANGE(0xc0000e, 0xc0000f) AM_READ_PORT("IN3")            //
1160static ADDRESS_MAP_START( lastfort_map, ADDRESS_SPACE_PROGRAM, 16 )
1161   AM_RANGE(0x000000, 0x03ffff) AM_ROM                                       // ROM
1162   AM_RANGE(0x400000, 0x40ffff) AM_RAM                                       // RAM
1163   AM_RANGE(0x800000, 0x81ffff) AM_RAM_WRITE(metro_vram_0_w) AM_BASE(&metro_vram_0)   // Layer 0
1164   AM_RANGE(0x820000, 0x83ffff) AM_RAM_WRITE(metro_vram_1_w) AM_BASE(&metro_vram_1)   // Layer 1
1165   AM_RANGE(0x840000, 0x85ffff) AM_RAM_WRITE(metro_vram_2_w) AM_BASE(&metro_vram_2)   // Layer 2
1166   AM_RANGE(0x860000, 0x86ffff) AM_READ(metro_bankedrom_r)                        // Banked ROM
1167   AM_RANGE(0x870000, 0x873fff) AM_RAM_WRITE(paletteram16_GGGGGRRRRRBBBBBx_word_w) AM_BASE(&paletteram16)   // Palette
1168   AM_RANGE(0x874000, 0x874fff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)   // Sprites
1169   AM_RANGE(0x878000, 0x8787ff) AM_RAM AM_BASE(&metro_tiletable) AM_SIZE(&metro_tiletable_size)   // Tiles Set
1170   AM_RANGE(0x878800, 0x878813) AM_WRITEONLY AM_BASE(&metro_videoregs)               // Video Registers
1171   AM_RANGE(0x878840, 0x87884d) AM_WRITE(metro_blitter_w) AM_BASE(&metro_blitter_regs)   // Tiles Blitter
1172   AM_RANGE(0x878860, 0x87886b) AM_WRITE(metro_window_w) AM_BASE(&metro_window)      // Tilemap Window
1173   AM_RANGE(0x878870, 0x87887b) AM_WRITEONLY AM_BASE(&metro_scroll)               // Scroll
1174   AM_RANGE(0x878880, 0x878881) AM_WRITENOP                                 // ? increasing
1175   AM_RANGE(0x878890, 0x878891) AM_WRITENOP                                 // ? increasing
1176   AM_RANGE(0x8788a2, 0x8788a3) AM_READWRITE(metro_irq_cause_r,metro_irq_cause_w)      // IRQ Cause / IRQ Acknowledge
1177   AM_RANGE(0x8788a4, 0x8788a5) AM_WRITEONLY AM_BASE(&metro_irq_enable)            // IRQ Enable
1178   AM_RANGE(0x8788a8, 0x8788a9) AM_WRITE(metro_soundlatch_w)                     // To Sound CPU
1179   AM_RANGE(0x8788aa, 0x8788ab) AM_WRITEONLY AM_BASE(&metro_rombank)               // Rom Bank
1180   AM_RANGE(0x8788ac, 0x8788ad) AM_WRITEONLY AM_BASE(&metro_screenctrl)            // Screen Control
1181   AM_RANGE(0xc00000, 0xc00001) AM_READWRITE(metro_soundstatus_r,metro_soundstatus_w)   // From / To Sound CPU
1182   AM_RANGE(0xc00002, 0xc00003) AM_WRITE(metro_coin_lockout_1word_w)               // Coin Lockout
1183   AM_RANGE(0xc00004, 0xc00005) AM_READ_PORT("IN0")                           // Inputs
1184   AM_RANGE(0xc00006, 0xc00007) AM_READ_PORT("IN1")                           //
1185   AM_RANGE(0xc00008, 0xc00009) AM_READ_PORT("IN2")                           //
1186   AM_RANGE(0xc0000a, 0xc0000b) AM_READ_PORT("DSW0")                           //
1187   AM_RANGE(0xc0000c, 0xc0000d) AM_READ_PORT("DSW1")                           //
1188   AM_RANGE(0xc0000e, 0xc0000f) AM_READ_PORT("IN3")                           //
13121189ADDRESS_MAP_END
13131190
1314static ADDRESS_MAP_START( lastfort_writemem, ADDRESS_SPACE_PROGRAM, 16 )
1315   AM_RANGE(0x000000, 0x03ffff) AM_WRITE(SMH_ROM                  )   // ROM
1316   AM_RANGE(0x400000, 0x40ffff) AM_WRITE(SMH_RAM                  )   // RAM
1317   AM_RANGE(0x800000, 0x81ffff) AM_WRITE(metro_vram_0_w) AM_BASE(&metro_vram_0   )   // Layer 0
1318   AM_RANGE(0x820000, 0x83ffff) AM_WRITE(metro_vram_1_w) AM_BASE(&metro_vram_1   )   // Layer 1
1319   AM_RANGE(0x840000, 0x85ffff) AM_WRITE(metro_vram_2_w) AM_BASE(&metro_vram_2   )   // Layer 2
1320   AM_RANGE(0x870000, 0x873fff) AM_WRITE(paletteram16_GGGGGRRRRRBBBBBx_word_w  ) AM_BASE(&paletteram16   )   // Palette
1321   AM_RANGE(0x874000, 0x874fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size            )   // Sprites
1322   AM_RANGE(0x878000, 0x8787ff) AM_WRITE(SMH_RAM) AM_BASE(&metro_tiletable) AM_SIZE(&metro_tiletable_size   )   // Tiles Set
1323   AM_RANGE(0x878800, 0x878813) AM_WRITE(SMH_RAM) AM_BASE(&metro_videoregs   )   // Video Registers
1324   AM_RANGE(0x878840, 0x87884d) AM_WRITE(metro_blitter_w) AM_BASE(&metro_blitter_regs   )   // Tiles Blitter
1325   AM_RANGE(0x878860, 0x87886b) AM_WRITE(metro_window_w) AM_BASE(&metro_window   )   // Tilemap Window
1326   AM_RANGE(0x878870, 0x87887b) AM_WRITE(SMH_RAM) AM_BASE(&metro_scroll      )   // Scroll
1327   AM_RANGE(0x878880, 0x878881) AM_WRITE(SMH_NOP                  )   // ? increasing
1328   AM_RANGE(0x878890, 0x878891) AM_WRITE(SMH_NOP                  )   // ? increasing
1329   AM_RANGE(0x8788a2, 0x8788a3) AM_WRITE(metro_irq_cause_w            )   // IRQ Acknowledge
1330   AM_RANGE(0x8788a4, 0x8788a5) AM_WRITE(SMH_RAM) AM_BASE(&metro_irq_enable   )   // IRQ Enable
1331   AM_RANGE(0x8788a8, 0x8788a9) AM_WRITE(metro_soundlatch_w         )   // To Sound CPU
1332   AM_RANGE(0x8788aa, 0x8788ab) AM_WRITE(SMH_RAM) AM_BASE(&metro_rombank      )   // Rom Bank
1333   AM_RANGE(0x8788ac, 0x8788ad) AM_WRITE(SMH_RAM) AM_BASE(&metro_screenctrl   )   // Screen Control
1334   AM_RANGE(0xc00000, 0xc00001) AM_WRITE(metro_soundstatus_w         )   // To Sound CPU
1335   AM_RANGE(0xc00002, 0xc00003) AM_WRITE(metro_coin_lockout_1word_w   )   // Coin Lockout
1336ADDRESS_MAP_END
1337
13381191/* the German version is halfway between lastfort and ladykill (karatour) memory maps */
13391192
13401193/* todo: clean up input reads etc. */
1341static ADDRESS_MAP_START( lastforg_readmem, ADDRESS_SPACE_PROGRAM, 16 )
1342   AM_RANGE(0x000000, 0x03ffff) AM_READ(SMH_ROM            )   // ROM
1343   AM_RANGE(0x400000, 0x400001) AM_READ(metro_soundstatus_r   )   // From Sound CPU
1344   AM_RANGE(0x400002, 0x400003) AM_READ_PORT("IN0")            // Inputs
1345   AM_RANGE(0x400004, 0x400005) AM_READ_PORT("IN1")            //
1346   AM_RANGE(0x400006, 0x400007) AM_READ_PORT("DSW0")            //
1347   AM_RANGE(0x40000a, 0x40000b) AM_READ_PORT("DSW1")            //
1348   AM_RANGE(0x40000c, 0x40000d) AM_READ_PORT("IN2")            //
1349   AM_RANGE(0x880000, 0x89ffff) AM_READ(SMH_RAM            )   // Layer 0
1350   AM_RANGE(0x8a0000, 0x8bffff) AM_READ(SMH_RAM            )   // Layer 1
1351   AM_RANGE(0x8c0000, 0x8dffff) AM_READ(SMH_RAM            )   // Layer 2
1352   AM_RANGE(0x8e0000, 0x8effff) AM_READ(metro_bankedrom_r      )   // Banked ROM
1353   AM_RANGE(0x8f0000, 0x8f3fff) AM_READ(SMH_RAM            )   // Palette
1354   AM_RANGE(0x8f4000, 0x8f4fff) AM_READ(SMH_RAM            )   // Sprites
1355   AM_RANGE(0x8f8000, 0x8f87ff) AM_READ(SMH_RAM            )   // Tiles Set
1356   AM_RANGE(0x8f88a2, 0x8f88a3) AM_READ(metro_irq_cause_r      )   // IRQ Cause
1357   AM_RANGE(0xc00000, 0xc0ffff) AM_READ(SMH_RAM            )   // RAM
1194static ADDRESS_MAP_START( lastforg_map, ADDRESS_SPACE_PROGRAM, 16 )
1195   AM_RANGE(0x000000, 0x03ffff) AM_ROM                                       // ROM
1196   AM_RANGE(0x400000, 0x400001) AM_READWRITE(metro_soundstatus_r,metro_soundstatus_w)   // From / To Sound CPU
1197   AM_RANGE(0x400002, 0x400003) AM_READ_PORT("IN0")                           // Inputs
1198   AM_RANGE(0x400002, 0x400003) AM_WRITE(metro_coin_lockout_1word_w)               // Coin Lockout
1199   AM_RANGE(0x400004, 0x400005) AM_READ_PORT("IN1")                           //
1200   AM_RANGE(0x400006, 0x400007) AM_READ_PORT("DSW0")                           //
1201   AM_RANGE(0x40000a, 0x40000b) AM_READ_PORT("DSW1")                           //
1202   AM_RANGE(0x40000c, 0x40000d) AM_READ_PORT("IN2")                           //
1203   AM_RANGE(0x880000, 0x89ffff) AM_RAM_WRITE(metro_vram_0_w) AM_BASE(&metro_vram_0)   // Layer 0
1204   AM_RANGE(0x8a0000, 0x8bffff) AM_RAM_WRITE(metro_vram_1_w) AM_BASE(&metro_vram_1)   // Layer 1
1205   AM_RANGE(0x8c0000, 0x8dffff) AM_RAM_WRITE(metro_vram_2_w) AM_BASE(&metro_vram_2)   // Layer 2
1206   AM_RANGE(0x8e0000, 0x8effff) AM_READ(metro_bankedrom_r)                        // Banked ROM
1207   AM_RANGE(0x8f0000, 0x8f3fff) AM_RAM_WRITE(paletteram16_GGGGGRRRRRBBBBBx_word_w) AM_BASE(&paletteram16)   // Palette
1208   AM_RANGE(0x8f4000, 0x8f4fff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)   // Sprites
1209   AM_RANGE(0x8f8000, 0x8f87ff) AM_RAM AM_BASE(&metro_tiletable) AM_SIZE(&metro_tiletable_size)   // Tiles Set
1210   AM_RANGE(0x8f8800, 0x8f8813) AM_WRITEONLY AM_BASE(&metro_videoregs)               // Video Registers
1211   AM_RANGE(0x8f8840, 0x8f884d) AM_WRITE(metro_blitter_w) AM_BASE(&metro_blitter_regs)   // Tiles Blitter
1212   AM_RANGE(0x8f8860, 0x8f886b) AM_WRITE(metro_window_w) AM_BASE(&metro_window)      // Tilemap Window
1213   AM_RANGE(0x8f8870, 0x8f887b) AM_WRITEONLY AM_BASE(&metro_scroll)               // Scroll
1214   AM_RANGE(0x8f8880, 0x8f8881) AM_WRITENOP                                 // ? increasing
1215   AM_RANGE(0x8f8890, 0x8f8891) AM_WRITENOP                                 // ? increasing
1216   AM_RANGE(0x8f88a2, 0x8f88a3) AM_READWRITE(metro_irq_cause_r,metro_irq_cause_w)      // IRQ Cause / IRQ Acknowledge
1217   AM_RANGE(0x8f88a4, 0x8f88a5) AM_WRITEONLY AM_BASE(&metro_irq_enable)            // IRQ Enable
1218   AM_RANGE(0x8f88a8, 0x8f88a9) AM_WRITE(metro_soundlatch_w)                     // To Sound CPU
1219   AM_RANGE(0x8f88aa, 0x8f88ab) AM_WRITEONLY AM_BASE(&metro_rombank)               // Rom Bank
1220   AM_RANGE(0x8f88ac, 0x8f88ad) AM_WRITEONLY AM_BASE(&metro_screenctrl)            // Screen Control
1221   AM_RANGE(0xc00000, 0xc0ffff) AM_RAM                                     // RAM
13581222ADDRESS_MAP_END
13591223
1360static ADDRESS_MAP_START( lastforg_writemem, ADDRESS_SPACE_PROGRAM, 16 )
1361   AM_RANGE(0x000000, 0x03ffff) AM_WRITE(SMH_ROM                  )   // ROM
1362   AM_RANGE(0x400000, 0x400001) AM_WRITE(metro_soundstatus_w         )   // To Sound CPU
1363   AM_RANGE(0x400002, 0x400003) AM_WRITE(metro_coin_lockout_1word_w   )   // Coin Lockout
1364   AM_RANGE(0x880000, 0x89ffff) AM_WRITE(metro_vram_0_w) AM_BASE(&metro_vram_0   )   // Layer 0
1365   AM_RANGE(0x8a0000, 0x8bffff) AM_WRITE(metro_vram_1_w) AM_BASE(&metro_vram_1   )   // Layer 1
1366   AM_RANGE(0x8c0000, 0x8dffff) AM_WRITE(metro_vram_2_w) AM_BASE(&metro_vram_2   )   // Layer 2
1367   AM_RANGE(0x8f0000, 0x8f3fff) AM_WRITE(paletteram16_GGGGGRRRRRBBBBBx_word_w  ) AM_BASE(&paletteram16   )   // Palette
1368   AM_RANGE(0x8f4000, 0x8f4fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size            )   // Sprites
1369   AM_RANGE(0x8f8000, 0x8f87ff) AM_WRITE(SMH_RAM) AM_BASE(&metro_tiletable) AM_SIZE(&metro_tiletable_size   )   // Tiles Set
1370   AM_RANGE(0x8f8800, 0x8f8813) AM_WRITE(SMH_RAM) AM_BASE(&metro_videoregs   )   // Video Registers
1371   AM_RANGE(0x8f8840, 0x8f884d) AM_WRITE(metro_blitter_w) AM_BASE(&metro_blitter_regs   )   // Tiles Blitter
1372   AM_RANGE(0x8f8860, 0x8f886b) AM_WRITE(metro_window_w) AM_BASE(&metro_window   )   // Tilemap Window
1373   AM_RANGE(0x8f8870, 0x8f887b) AM_WRITE(SMH_RAM) AM_BASE(&metro_scroll      )   // Scroll
1374   AM_RANGE(0x8f8880, 0x8f8881) AM_WRITE(SMH_NOP                  )   // ? increasing
1375   AM_RANGE(0x8f8890, 0x8f8891) AM_WRITE(SMH_NOP                  )   // ? increasing
1376   AM_RANGE(0x8f88a2, 0x8f88a3) AM_WRITE(metro_irq_cause_w            )   // IRQ Acknowledge
1377   AM_RANGE(0x8f88a4, 0x8f88a5) AM_WRITE(SMH_RAM) AM_BASE(&metro_irq_enable   )   // IRQ Enable
1378   AM_RANGE(0x8f88a8, 0x8f88a9) AM_WRITE(metro_soundlatch_w         )   // To Sound CPU
1379   AM_RANGE(0x8f88aa, 0x8f88ab) AM_WRITE(SMH_RAM) AM_BASE(&metro_rombank      )   // Rom Bank
1380   AM_RANGE(0x8f88ac, 0x8f88ad) AM_WRITE(SMH_RAM) AM_BASE(&metro_screenctrl   )   // Screen Control
1381   AM_RANGE(0xc00000, 0xc0ffff) AM_WRITE(SMH_RAM                  )   // RAM
1382ADDRESS_MAP_END
13831224
1384
13851225/***************************************************************************
13861226                                Mahjong Gakuensai
13871227***************************************************************************/
r4679r4680
14461286   }
14471287}
14481288
1449static ADDRESS_MAP_START( gakusai_readmem, ADDRESS_SPACE_PROGRAM, 16 )
1450   AM_RANGE(0x000000, 0x07ffff) AM_READ(SMH_ROM               )   // ROM
1451   AM_RANGE(0xff0000, 0xffffff) AM_READ(SMH_RAM               )   // RAM
1452   AM_RANGE(0x200000, 0x21ffff) AM_READ(SMH_RAM               )   // Layer 0
1453   AM_RANGE(0x220000, 0x23ffff) AM_READ(SMH_RAM               )   // Layer 1
1454   AM_RANGE(0x240000, 0x25ffff) AM_READ(SMH_RAM               )   // Layer 2
1455   AM_RANGE(0x260000, 0x26ffff) AM_READ(metro_bankedrom_r         )   // Banked ROM
1456   AM_RANGE(0x270000, 0x273fff) AM_READ(SMH_RAM               )   // Palette
1457   AM_RANGE(0x274000, 0x274fff) AM_READ(SMH_RAM               )   // Sprites
1458   AM_RANGE(0x278000, 0x2787ff) AM_READ(SMH_RAM               )   // Tiles Set
1459   AM_RANGE(0x278832, 0x278833) AM_READ(metro_irq_cause_r         )   // IRQ Cause
1460   AM_RANGE(0x278880, 0x278881) AM_READ(gakusai_input_r         )   // Inputs
1461   AM_RANGE(0x278882, 0x278883) AM_READ_PORT("IN0")               //
1462   AM_RANGE(0x27880e, 0x27880f) AM_READ(SMH_RAM               )   // Screen Control
1463   AM_RANGE(0x700000, 0x700001) AM_DEVREAD8("oki", okim6295_r, 0x00ff   )   // Sound
1464   AM_RANGE(0xc00000, 0xc00001) AM_READ(gakusai_eeprom_r         )   // EEPROM
1465ADDRESS_MAP_END
1466
1467static ADDRESS_MAP_START( gakusai_writemem, ADDRESS_SPACE_PROGRAM, 16 )
1468   AM_RANGE(0x000000, 0x07ffff) AM_WRITE(SMH_ROM                  )   // ROM
1469   AM_RANGE(0xff0000, 0xffffff) AM_WRITE(SMH_RAM                  )   // RAM
1470   AM_RANGE(0x200000, 0x21ffff) AM_WRITE(metro_vram_0_w) AM_BASE(&metro_vram_0   )   // Layer 0
1471   AM_RANGE(0x220000, 0x23ffff) AM_WRITE(metro_vram_1_w) AM_BASE(&metro_vram_1   )   // Layer 1
1472   AM_RANGE(0x240000, 0x25ffff) AM_WRITE(metro_vram_2_w) AM_BASE(&metro_vram_2   )   // Layer 2
1473   AM_RANGE(0x270000, 0x273fff) AM_WRITE(paletteram16_GGGGGRRRRRBBBBBx_word_w  ) AM_BASE(&paletteram16   )   // Palette
1474   AM_RANGE(0x274000, 0x274fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size            )   // Sprites
1475   AM_RANGE(0x278000, 0x2787ff) AM_WRITE(SMH_RAM) AM_BASE(&metro_tiletable) AM_SIZE(&metro_tiletable_size   )   // Tiles Set
1476   AM_RANGE(0x27880e, 0x27880f) AM_WRITE(SMH_RAM) AM_BASE(&metro_screenctrl   )   // Screen Control
1477   AM_RANGE(0x278810, 0x27881f) AM_WRITE(SMH_RAM) AM_BASE(&metro_irq_levels   )   // IRQ Levels
1478   AM_RANGE(0x278820, 0x27882f) AM_WRITE(SMH_RAM) AM_BASE(&metro_irq_vectors   )   // IRQ Vectors
1479   AM_RANGE(0x278830, 0x278831) AM_WRITE(SMH_RAM) AM_BASE(&metro_irq_enable   )   // IRQ Enable
1480   AM_RANGE(0x278832, 0x278833) AM_WRITE(metro_irq_cause_w            )   // IRQ Acknowledge
1481   AM_RANGE(0x278836, 0x278837) AM_WRITE(watchdog_reset16_w         )   // Watchdog
1482   AM_RANGE(0x278840, 0x27884d) AM_WRITE(metro_blitter_w) AM_BASE(&metro_blitter_regs   )   // Tiles Blitter
1483   AM_RANGE(0x278860, 0x27886b) AM_WRITE(metro_window_w) AM_BASE(&metro_window   )   // Tilemap Window
1484   AM_RANGE(0x278850, 0x27885b) AM_WRITE(SMH_RAM) AM_BASE(&metro_scroll      )   // Scroll Regs
1485   AM_RANGE(0x278870, 0x278871) AM_WRITE(SMH_RAM) AM_BASE(&metro_rombank      )   // Rom Bank
1486   AM_RANGE(0x278888, 0x278889) AM_WRITE(SMH_RAM) AM_BASE(&gakusai_input_sel   )   // Inputs
1487   AM_RANGE(0x279700, 0x279713) AM_WRITE(SMH_RAM) AM_BASE(&metro_videoregs   )   // Video Registers
1488   AM_RANGE(0x400000, 0x400001) AM_WRITE(SMH_NOP                  )   // ? 5
1489   AM_RANGE(0x500000, 0x500001) AM_DEVWRITE("oki", gakusai_oki_bank_lo_w         )   // Sound
1289static ADDRESS_MAP_START( gakusai_map, ADDRESS_SPACE_PROGRAM, 16 )
1290   AM_RANGE(0x000000, 0x07ffff) AM_ROM                                       // ROM
1291   AM_RANGE(0xff0000, 0xffffff) AM_RAM                                       // RAM
1292   AM_RANGE(0x200000, 0x21ffff) AM_RAM_WRITE(metro_vram_0_w) AM_BASE(&metro_vram_0)   // Layer 0
1293   AM_RANGE(0x220000, 0x23ffff) AM_RAM_WRITE(metro_vram_1_w) AM_BASE(&metro_vram_1)   // Layer 1
1294   AM_RANGE(0x240000, 0x25ffff) AM_RAM_WRITE(metro_vram_2_w) AM_BASE(&metro_vram_2)   // Layer 2
1295   AM_RANGE(0x260000, 0x26ffff) AM_READ(metro_bankedrom_r)                        // Banked ROM
1296   AM_RANGE(0x270000, 0x273fff) AM_RAM_WRITE(paletteram16_GGGGGRRRRRBBBBBx_word_w) AM_BASE(&paletteram16)   // Palette
1297   AM_RANGE(0x274000, 0x274fff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)   // Sprites
1298   AM_RANGE(0x278000, 0x2787ff) AM_RAM AM_BASE(&metro_tiletable) AM_SIZE(&metro_tiletable_size)   // Tiles Set
1299   AM_RANGE(0x27880e, 0x27880f) AM_RAM AM_BASE(&metro_screenctrl)                  // Screen Control
1300   AM_RANGE(0x278810, 0x27881f) AM_WRITEONLY AM_BASE(&metro_irq_levels)            // IRQ Levels
1301   AM_RANGE(0x278820, 0x27882f) AM_WRITEONLY AM_BASE(&metro_irq_vectors)            // IRQ Vectors
1302   AM_RANGE(0x278830, 0x278831) AM_WRITEONLY AM_BASE(&metro_irq_enable)            // IRQ Enable
1303   AM_RANGE(0x278832, 0x278833) AM_READWRITE(metro_irq_cause_r,metro_irq_cause_w)      // IRQ Cause / IRQ Acknowledge
1304   AM_RANGE(0x278880, 0x278881) AM_READ(gakusai_input_r)                        // Inputs
1305   AM_RANGE(0x278882, 0x278883) AM_READ_PORT("IN0")                           //
1306   AM_RANGE(0x278836, 0x278837) AM_WRITE(watchdog_reset16_w)                     // Watchdog
1307   AM_RANGE(0x278840, 0x27884d) AM_WRITE(metro_blitter_w) AM_BASE(&metro_blitter_regs)   // Tiles Blitter
1308   AM_RANGE(0x278860, 0x27886b) AM_WRITE(metro_window_w) AM_BASE(&metro_window)      // Tilemap Window
1309   AM_RANGE(0x278850, 0x27885b) AM_WRITEONLY AM_BASE(&metro_scroll)               // Scroll Regs
1310   AM_RANGE(0x278870, 0x278871) AM_WRITEONLY AM_BASE(&metro_rombank)               // Rom Bank
1311   AM_RANGE(0x278888, 0x278889) AM_WRITEONLY AM_BASE(&gakusai_input_sel)            // Inputs
1312   AM_RANGE(0x279700, 0x279713) AM_WRITEONLY AM_BASE(&metro_videoregs)               // Video Registers
1313   AM_RANGE(0x400000, 0x400001) AM_WRITENOP                                 // ? 5
1314   AM_RANGE(0x500000, 0x500001) AM_DEVWRITE("oki", gakusai_oki_bank_lo_w)            // Sound
14901315   AM_RANGE(0x600000, 0x600003) AM_DEVWRITE8("ym", ym2413_w, 0x00ff)
1491   AM_RANGE(0x700000, 0x700001) AM_DEVWRITE8("oki", okim6295_w, 0x00ff       )
1492   AM_RANGE(0xc00000, 0xc00001) AM_WRITE(gakusai_eeprom_w            )   // EEPROM
1493   AM_RANGE(0xd00000, 0xd00001) AM_DEVWRITE("oki", gakusai_oki_bank_hi_w         )
1316   AM_RANGE(0x700000, 0x700001) AM_DEVREADWRITE8("oki", okim6295_r,okim6295_w, 0x00ff)   // Sound
1317   AM_RANGE(0xc00000, 0xc00001) AM_READWRITE(gakusai_eeprom_r,gakusai_eeprom_w)      // EEPROM
1318   AM_RANGE(0xd00000, 0xd00001) AM_DEVWRITE("oki", gakusai_oki_bank_hi_w)
14941319ADDRESS_MAP_END
14951320
14961321
r4679r4680
14981323                                Mahjong Gakuensai 2
14991324***************************************************************************/
15001325
1501static ADDRESS_MAP_START( gakusai2_readmem, ADDRESS_SPACE_PROGRAM, 16 )
1502   AM_RANGE(0x000000, 0x07ffff) AM_READ(SMH_ROM               )   // ROM
1503   AM_RANGE(0xff0000, 0xffffff) AM_READ(SMH_RAM               )   // RAM
1504   AM_RANGE(0x600000, 0x61ffff) AM_READ(SMH_RAM               )   // Layer 0
1505   AM_RANGE(0x620000, 0x63ffff) AM_READ(SMH_RAM               )   // Layer 1
1506   AM_RANGE(0x640000, 0x65ffff) AM_READ(SMH_RAM               )   // Layer 2
1507   AM_RANGE(0x660000, 0x66ffff) AM_READ(metro_bankedrom_r         )   // Banked ROM
1508   AM_RANGE(0x670000, 0x673fff) AM_READ(SMH_RAM               )   // Palette
1509   AM_RANGE(0x674000, 0x674fff) AM_READ(SMH_RAM               )   // Sprites
1510   AM_RANGE(0x675000, 0x675fff) AM_READ(SMH_RAM               )   // Sprites?
1511   AM_RANGE(0x678000, 0x6787ff) AM_READ(SMH_RAM               )   // Tiles Set
1512   AM_RANGE(0x678832, 0x678833) AM_READ(metro_irq_cause_r         )   // IRQ Cause
1513   AM_RANGE(0x678880, 0x678881) AM_READ(gakusai_input_r         )   // Inputs
1514   AM_RANGE(0x678882, 0x678883) AM_READ_PORT("IN0")               //
1515   AM_RANGE(0x67880e, 0x67880f) AM_READ(SMH_RAM               )   // Screen Control
1516   AM_RANGE(0xb00000, 0xb00001) AM_DEVREAD8("oki", okim6295_r, 0x00ff   )   // Sound
1517   AM_RANGE(0xe00000, 0xe00001) AM_READ(gakusai_eeprom_r         )   // EEPROM
1518ADDRESS_MAP_END
1519
1520static ADDRESS_MAP_START( gakusai2_writemem, ADDRESS_SPACE_PROGRAM, 16 )
1521   AM_RANGE(0x000000, 0x07ffff) AM_WRITE(SMH_ROM                  )   // ROM
1522   AM_RANGE(0xff0000, 0xffffff) AM_WRITE(SMH_RAM                  )   // RAM
1523   AM_RANGE(0x600000, 0x61ffff) AM_WRITE(metro_vram_0_w) AM_BASE(&metro_vram_0   )   // Layer 0
1524   AM_RANGE(0x620000, 0x63ffff) AM_WRITE(metro_vram_1_w) AM_BASE(&metro_vram_1   )   // Layer 1
1525   AM_RANGE(0x640000, 0x65ffff) AM_WRITE(metro_vram_2_w) AM_BASE(&metro_vram_2   )   // Layer 2
1526   AM_RANGE(0x670000, 0x673fff) AM_WRITE(paletteram16_GGGGGRRRRRBBBBBx_word_w  ) AM_BASE(&paletteram16   )   // Palette
1527   AM_RANGE(0x674000, 0x674fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size            )   // Sprites
1528   AM_RANGE(0x675000, 0x675fff) AM_WRITE(SMH_RAM                  )   // Sprites?
1529   AM_RANGE(0x678000, 0x6787ff) AM_WRITE(SMH_RAM) AM_BASE(&metro_tiletable) AM_SIZE(&metro_tiletable_size   )   // Tiles Set
1530   AM_RANGE(0x67880e, 0x67880f) AM_WRITE(SMH_RAM) AM_BASE(&metro_screenctrl   )   // Screen Control
1531   AM_RANGE(0x678810, 0x67881f) AM_WRITE(SMH_RAM) AM_BASE(&metro_irq_levels   )   // IRQ Levels
1532   AM_RANGE(0x678820, 0x67882f) AM_WRITE(SMH_RAM) AM_BASE(&metro_irq_vectors   )   // IRQ Vectors
1533   AM_RANGE(0x678830, 0x678831) AM_WRITE(SMH_RAM) AM_BASE(&metro_irq_enable   )   // IRQ Enable
1534   AM_RANGE(0x678832, 0x678833) AM_WRITE(metro_irq_cause_w            )   // IRQ Acknowledge
1535   AM_RANGE(0x678836, 0x678837) AM_WRITE(watchdog_reset16_w         )   // Watchdog
1536   AM_RANGE(0x678840, 0x67884d) AM_WRITE(metro_blitter_w) AM_BASE(&metro_blitter_regs   )   // Tiles Blitter
1537   AM_RANGE(0x678860, 0x67886b) AM_WRITE(metro_window_w) AM_BASE(&metro_window   )   // Tilemap Window
1538   AM_RANGE(0x678850, 0x67885b) AM_WRITE(SMH_RAM) AM_BASE(&metro_scroll      )   // Scroll Regs
1539   AM_RANGE(0x678870, 0x678871) AM_WRITE(SMH_RAM) AM_BASE(&metro_rombank      )   // Rom Bank
1540   AM_RANGE(0x678888, 0x678889) AM_WRITE(SMH_RAM) AM_BASE(&gakusai_input_sel   )   // Inputs
1541   AM_RANGE(0x679700, 0x679713) AM_WRITE(SMH_RAM) AM_BASE(&metro_videoregs   )   // Video Registers
1542   AM_RANGE(0x800000, 0x800001) AM_WRITE(SMH_NOP                  )   // ? 5
1543   AM_RANGE(0x900000, 0x900001) AM_DEVWRITE("oki", gakusai_oki_bank_lo_w         )   // Sound
1544   AM_RANGE(0xa00000, 0xa00001) AM_DEVWRITE("oki", gakusai_oki_bank_hi_w         )
1545   AM_RANGE(0xb00000, 0xb00001) AM_DEVWRITE8("oki", okim6295_w, 0x00ff       )
1326static ADDRESS_MAP_START( gakusai2_map, ADDRESS_SPACE_PROGRAM, 16 )
1327   AM_RANGE(0x000000, 0x07ffff) AM_ROM                                       // ROM
1328   AM_RANGE(0xff0000, 0xffffff) AM_RAM                                       // RAM
1329   AM_RANGE(0x600000, 0x61ffff) AM_RAM_WRITE(metro_vram_0_w) AM_BASE(&metro_vram_0)   // Layer 0
1330   AM_RANGE(0x620000, 0x63ffff) AM_RAM_WRITE(metro_vram_1_w) AM_BASE(&metro_vram_1)   // Layer 1
1331   AM_RANGE(0x640000, 0x65ffff) AM_RAM_WRITE(metro_vram_2_w) AM_BASE(&metro_vram_2)   // Layer 2
1332   AM_RANGE(0x660000, 0x66ffff) AM_READ(metro_bankedrom_r)                        // Banked ROM
1333   AM_RANGE(0x670000, 0x673fff) AM_RAM_WRITE(paletteram16_GGGGGRRRRRBBBBBx_word_w) AM_BASE(&paletteram16)   // Palette
1334   AM_RANGE(0x674000, 0x674fff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)   // Sprites
1335   AM_RANGE(0x675000, 0x675fff) AM_RAM                                       // Sprites?
1336   AM_RANGE(0x678000, 0x6787ff) AM_RAM AM_BASE(&metro_tiletable) AM_SIZE(&metro_tiletable_size)   // Tiles Set
1337   AM_RANGE(0x67880e, 0x67880f) AM_RAM AM_BASE(&metro_screenctrl)                  // Screen Control
1338   AM_RANGE(0x678810, 0x67881f) AM_WRITEONLY AM_BASE(&metro_irq_levels)            // IRQ Levels
1339   AM_RANGE(0x678820, 0x67882f) AM_WRITEONLY AM_BASE(&metro_irq_vectors)            // IRQ Vectors
1340   AM_RANGE(0x678830, 0x678831) AM_WRITEONLY AM_BASE(&metro_irq_enable)            // IRQ Enable
1341   AM_RANGE(0x678832, 0x678833) AM_READWRITE(metro_irq_cause_r,metro_irq_cause_w)      // IRQ Cause / IRQ Acknowledge
1342   AM_RANGE(0x678836, 0x678837) AM_WRITE(watchdog_reset16_w)                     // Watchdog
1343   AM_RANGE(0x678840, 0x67884d) AM_WRITE(metro_blitter_w) AM_BASE(&metro_blitter_regs)   // Tiles Blitter
1344   AM_RANGE(0x678860, 0x67886b) AM_WRITE(metro_window_w) AM_BASE(&metro_window)      // Tilemap Window
1345   AM_RANGE(0x678880, 0x678881) AM_READ(gakusai_input_r)                        // Inputs
1346   AM_RANGE(0x678882, 0x678883) AM_READ_PORT("IN0")                           //
1347   AM_RANGE(0x678850, 0x67885b) AM_WRITEONLY AM_BASE(&metro_scroll)               // Scroll Regs
1348   AM_RANGE(0x678870, 0x678871) AM_WRITEONLY AM_BASE(&metro_rombank)               // Rom Bank
1349   AM_RANGE(0x678888, 0x678889) AM_WRITEONLY AM_BASE(&gakusai_input_sel)            // Inputs
1350   AM_RANGE(0x679700, 0x679713) AM_WRITEONLY AM_BASE(&metro_videoregs)               // Video Registers
1351   AM_RANGE(0x800000, 0x800001) AM_WRITENOP                                 // ? 5
1352   AM_RANGE(0x900000, 0x900001) AM_DEVWRITE("oki", gakusai_oki_bank_lo_w)            // Sound bank
1353   AM_RANGE(0xa00000, 0xa00001) AM_DEVWRITE("oki", gakusai_oki_bank_hi_w)
1354   AM_RANGE(0xb00000, 0xb00001) AM_DEVREADWRITE8("oki", okim6295_r,okim6295_w, 0x00ff)   // Sound
15461355   AM_RANGE(0xc00000, 0xc00003) AM_DEVWRITE8("ym", ym2413_w, 0x00ff)
1547   AM_RANGE(0xe00000, 0xe00001) AM_WRITE(gakusai_eeprom_w            )   // EEPROM
1356   AM_RANGE(0xe00000, 0xe00001) AM_READWRITE(gakusai_eeprom_r,gakusai_eeprom_w)      // EEPROM
15481357ADDRESS_MAP_END
15491358
15501359
r4679r4680
15831392   }
15841393}
15851394
1586static ADDRESS_MAP_START( dokyusp_readmem, ADDRESS_SPACE_PROGRAM, 16 )
1587   AM_RANGE(0x000000, 0x03ffff) AM_READ(SMH_ROM               )   // ROM
1588   AM_RANGE(0xff0000, 0xffffff) AM_READ(SMH_RAM               )   // RAM
1589   AM_RANGE(0x200000, 0x21ffff) AM_READ(SMH_RAM               )   // Layer 0
1590   AM_RANGE(0x220000, 0x23ffff) AM_READ(SMH_RAM               )   // Layer 1
1591   AM_RANGE(0x240000, 0x25ffff) AM_READ(SMH_RAM               )   // Layer 2
1592   AM_RANGE(0x260000, 0x26ffff) AM_READ(metro_bankedrom_r         )   // Banked ROM
1593   AM_RANGE(0x270000, 0x273fff) AM_READ(SMH_RAM               )   // Palette
1594   AM_RANGE(0x274000, 0x274fff) AM_READ(SMH_RAM               )   // Sprites
1595   AM_RANGE(0x278000, 0x2787ff) AM_READ(SMH_RAM               )   // Tiles Set
1596   AM_RANGE(0x278832, 0x278833) AM_READ(metro_irq_cause_r         )   // IRQ Cause
1597   AM_RANGE(0x278880, 0x278881) AM_READ(gakusai_input_r         )   // Inputs
1598   AM_RANGE(0x278882, 0x278883) AM_READ_PORT("IN0")               //
1599   AM_RANGE(0x27880e, 0x27880f) AM_READ(SMH_RAM               )   // Screen Control
1600   AM_RANGE(0x700000, 0x700001) AM_DEVREAD8("oki", okim6295_r, 0x00ff   )   // Sound
1601   AM_RANGE(0xd00000, 0xd00001) AM_READ(dokyusp_eeprom_r         )   // EEPROM
1602ADDRESS_MAP_END
1603
1604static ADDRESS_MAP_START( dokyusp_writemem, ADDRESS_SPACE_PROGRAM, 16 )
1605   AM_RANGE(0x000000, 0x03ffff) AM_WRITE(SMH_ROM                  )   // ROM
1606   AM_RANGE(0xff0000, 0xffffff) AM_WRITE(SMH_RAM                  )   // RAM
1607   AM_RANGE(0x200000, 0x21ffff) AM_WRITE(metro_vram_0_w) AM_BASE(&metro_vram_0   )   // Layer 0
1608   AM_RANGE(0x220000, 0x23ffff) AM_WRITE(metro_vram_1_w) AM_BASE(&metro_vram_1   )   // Layer 1
1609   AM_RANGE(0x240000, 0x25ffff) AM_WRITE(metro_vram_2_w) AM_BASE(&metro_vram_2   )   // Layer 2
1610   AM_RANGE(0x270000, 0x273fff) AM_WRITE(paletteram16_GGGGGRRRRRBBBBBx_word_w  ) AM_BASE(&paletteram16   )   // Palette
1611   AM_RANGE(0x274000, 0x274fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size            )   // Sprites
1612   AM_RANGE(0x278000, 0x2787ff) AM_WRITE(SMH_RAM) AM_BASE(&metro_tiletable) AM_SIZE(&metro_tiletable_size   )   // Tiles Set
1613   AM_RANGE(0x27880e, 0x27880f) AM_WRITE(SMH_RAM) AM_BASE(&metro_screenctrl   )   // Screen Control
1614   AM_RANGE(0x278810, 0x27881f) AM_WRITE(SMH_RAM) AM_BASE(&metro_irq_levels   )   // IRQ Levels
1615   AM_RANGE(0x278820, 0x27882f) AM_WRITE(SMH_RAM) AM_BASE(&metro_irq_vectors   )   // IRQ Vectors
1616   AM_RANGE(0x278830, 0x278831) AM_WRITE(SMH_RAM) AM_BASE(&metro_irq_enable   )   // IRQ Enable
1617   AM_RANGE(0x278832, 0x278833) AM_WRITE(metro_irq_cause_w            )   // IRQ Acknowledge
1618   AM_RANGE(0x278836, 0x278837) AM_WRITE(watchdog_reset16_w         )   // Watchdog
1619   AM_RANGE(0x278840, 0x27884d) AM_WRITE(metro_blitter_w) AM_BASE(&metro_blitter_regs   )   // Tiles Blitter
1620   AM_RANGE(0x278860, 0x27886b) AM_WRITE(metro_window_w) AM_BASE(&metro_window   )   // Tilemap Window
1621   AM_RANGE(0x278850, 0x27885b) AM_WRITE(SMH_RAM) AM_BASE(&metro_scroll      )   // Scroll Regs
1622   AM_RANGE(0x278870, 0x278871) AM_WRITE(SMH_RAM) AM_BASE(&metro_rombank      )   // Rom Bank
1623   AM_RANGE(0x278888, 0x278889) AM_WRITE(SMH_RAM) AM_BASE(&gakusai_input_sel   )   // Inputs
1624   AM_RANGE(0x279700, 0x279713) AM_WRITE(SMH_RAM) AM_BASE(&metro_videoregs   )   // Video Registers
1625   AM_RANGE(0x400000, 0x400001) AM_WRITE(SMH_NOP                  )   // ? 5
1626   AM_RANGE(0x500000, 0x500001) AM_DEVWRITE("oki", gakusai_oki_bank_lo_w         )   // Sound
1395static ADDRESS_MAP_START( dokyusp_map, ADDRESS_SPACE_PROGRAM, 16 )
1396   AM_RANGE(0x000000, 0x03ffff) AM_ROM                                       // ROM
1397   AM_RANGE(0xff0000, 0xffffff) AM_RAM                                       // RAM
1398   AM_RANGE(0x200000, 0x21ffff) AM_RAM_WRITE(metro_vram_0_w) AM_BASE(&metro_vram_0)   // Layer 0
1399   AM_RANGE(0x220000, 0x23ffff) AM_RAM_WRITE(metro_vram_1_w) AM_BASE(&metro_vram_1)   // Layer 1
1400   AM_RANGE(0x240000, 0x25ffff) AM_RAM_WRITE(metro_vram_2_w) AM_BASE(&metro_vram_2)   // Layer 2
1401   AM_RANGE(0x260000, 0x26ffff) AM_READ(metro_bankedrom_r)                        // Banked ROM
1402   AM_RANGE(0x270000, 0x273fff) AM_RAM_WRITE(paletteram16_GGGGGRRRRRBBBBBx_word_w) AM_BASE(&paletteram16)   // Palette
1403   AM_RANGE(0x274000, 0x274fff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)   // Sprites
1404   AM_RANGE(0x278000, 0x2787ff) AM_RAM AM_BASE(&metro_tiletable) AM_SIZE(&metro_tiletable_size)   // Tiles Set
1405   AM_RANGE(0x278810, 0x27881f) AM_WRITEONLY AM_BASE(&metro_irq_levels)            // IRQ Levels
1406   AM_RANGE(0x278820, 0x27882f) AM_WRITEONLY AM_BASE(&metro_irq_vectors)            // IRQ Vectors
1407   AM_RANGE(0x278830, 0x278831) AM_WRITEONLY AM_BASE(&metro_irq_enable)            // IRQ Enable
1408   AM_RANGE(0x278832, 0x278833) AM_READWRITE(metro_irq_cause_r,metro_irq_cause_w)      // IRQ Cause / IRQ Acknowledge
1409   AM_RANGE(0x278836, 0x278837) AM_WRITE(watchdog_reset16_w)                     // Watchdog
1410   AM_RANGE(0x278840, 0x27884d) AM_WRITE(metro_blitter_w) AM_BASE(&metro_blitter_regs)   // Tiles Blitter
1411   AM_RANGE(0x278860, 0x27886b) AM_WRITE(metro_window_w) AM_BASE(&metro_window)      // Tilemap Window
1412   AM_RANGE(0x278850, 0x27885b) AM_WRITEONLY AM_BASE(&metro_scroll)               // Scroll Regs
1413   AM_RANGE(0x278870, 0x278871) AM_WRITEONLY AM_BASE(&metro_rombank)               // Rom Bank
1414   AM_RANGE(0x278880, 0x278881) AM_READ(gakusai_input_r)                        // Inputs
1415   AM_RANGE(0x278882, 0x278883) AM_READ_PORT("IN0")                           //
1416   AM_RANGE(0x278888, 0x278889) AM_WRITEONLY AM_BASE(&gakusai_input_sel)            // Inputs
1417   AM_RANGE(0x27880e, 0x27880f) AM_RAM AM_BASE(&metro_screenctrl)                  // Screen Control
1418   AM_RANGE(0x279700, 0x279713) AM_WRITEONLY AM_BASE(&metro_videoregs)               // Video Registers
1419   AM_RANGE(0x400000, 0x400001) AM_WRITENOP                                 // ? 5
1420   AM_RANGE(0x500000, 0x500001) AM_DEVWRITE("oki", gakusai_oki_bank_lo_w)            // Sound
16271421   AM_RANGE(0x600000, 0x600003) AM_DEVWRITE8("ym", ym2413_w, 0x00ff)
1628   AM_RANGE(0x700000, 0x700001) AM_DEVWRITE8("oki", okim6295_w, 0x00ff)
1629   AM_RANGE(0xc00000, 0xc00001) AM_WRITE(dokyusp_eeprom_reset_w      )   // EEPROM
1630   AM_RANGE(0xd00000, 0xd00001) AM_WRITE(dokyusp_eeprom_bit_w         )   // EEPROM
1422   AM_RANGE(0x700000, 0x700001) AM_DEVREADWRITE8("oki", okim6295_r,okim6295_w, 0x00ff)   // Sound
1423   AM_RANGE(0xc00000, 0xc00001) AM_WRITE(dokyusp_eeprom_reset_w)                  // EEPROM
1424   AM_RANGE(0xd00000, 0xd00001) AM_READWRITE(dokyusp_eeprom_r,dokyusp_eeprom_bit_w)   // EEPROM
16311425ADDRESS_MAP_END
16321426
16331427
r4679r4680
16351429                            Mahjong Doukyuusei
16361430***************************************************************************/
16371431
1638static ADDRESS_MAP_START( dokyusei_readmem, ADDRESS_SPACE_PROGRAM, 16 )
1639   AM_RANGE(0x000000, 0x03ffff) AM_READ(SMH_ROM               )   // ROM
1640   AM_RANGE(0xff0000, 0xffffff) AM_READ(SMH_RAM               )   // RAM
1641   AM_RANGE(0x400000, 0x41ffff) AM_READ(SMH_RAM               )   // Layer 0
1642   AM_RANGE(0x420000, 0x43ffff) AM_READ(SMH_RAM               )   // Layer 1
1643   AM_RANGE(0x440000, 0x45ffff) AM_READ(SMH_RAM               )   // Layer 2
1644   AM_RANGE(0x460000, 0x46ffff) AM_READ(metro_bankedrom_r         )   // Banked ROM
1645   AM_RANGE(0x470000, 0x473fff) AM_READ(SMH_RAM               )   // Palette
1646   AM_RANGE(0x474000, 0x474fff) AM_READ(SMH_RAM               )   // Sprites
1647   AM_RANGE(0x478000, 0x4787ff) AM_READ(SMH_RAM               )   // Tiles Set
1648//  AM_RANGE(0x478832, 0x478833) AM_READ(metro_irq_cause_r          )   // IRQ Cause
1649   AM_RANGE(0x478880, 0x478881) AM_READ(gakusai_input_r         )   // Inputs
1650   AM_RANGE(0x478882, 0x478883) AM_READ_PORT("IN0")               //
1651   AM_RANGE(0x478884, 0x478885) AM_READ_PORT("DSW0")               // 2 x DSW
1652   AM_RANGE(0x478886, 0x478887) AM_READ_PORT("DSW1")               //
1653   AM_RANGE(0xd00000, 0xd00001) AM_DEVREAD8("oki", okim6295_r, 0x00ff   )   // Sound
1432static ADDRESS_MAP_START( dokyusei_map, ADDRESS_SPACE_PROGRAM, 16 )
1433   AM_RANGE(0x000000, 0x03ffff) AM_ROM                                       // ROM
1434   AM_RANGE(0xff0000, 0xffffff) AM_RAM                                       // RAM
1435   AM_RANGE(0x400000, 0x41ffff) AM_RAM_WRITE(metro_vram_0_w) AM_BASE(&metro_vram_0)   // Layer 0
1436   AM_RANGE(0x420000, 0x43ffff) AM_RAM_WRITE(metro_vram_1_w) AM_BASE(&metro_vram_1)   // Layer 1
1437   AM_RANGE(0x440000, 0x45ffff) AM_RAM_WRITE(metro_vram_2_w) AM_BASE(&metro_vram_2)   // Layer 2
1438   AM_RANGE(0x460000, 0x46ffff) AM_READ(metro_bankedrom_r)                        // Banked ROM
1439   AM_RANGE(0x460000, 0x46ffff) AM_WRITENOP                                 // DSW Selection
1440   AM_RANGE(0x470000, 0x473fff) AM_RAM_WRITE(paletteram16_GGGGGRRRRRBBBBBx_word_w) AM_BASE(&paletteram16)   // Palette
1441   AM_RANGE(0x474000, 0x474fff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)   // Sprites
1442   AM_RANGE(0x478000, 0x4787ff) AM_RAM AM_BASE(&metro_tiletable) AM_SIZE(&metro_tiletable_size)   // Tiles Set
1443   AM_RANGE(0x47880e, 0x47880f) AM_WRITEONLY AM_BASE(&metro_screenctrl)            // Screen Control
1444   AM_RANGE(0x478810, 0x47881f) AM_WRITEONLY AM_BASE(&metro_irq_levels)            // IRQ Levels
1445   AM_RANGE(0x478820, 0x47882f) AM_WRITEONLY AM_BASE(&metro_irq_vectors)            // IRQ Vectors
1446   AM_RANGE(0x478830, 0x478831) AM_WRITEONLY AM_BASE(&metro_irq_enable)            // IRQ Enable
1447//  AM_RANGE(0x478832, 0x478833) AM_READ(metro_irq_cause_r)                             // IRQ Cause
1448   AM_RANGE(0x478832, 0x478833) AM_WRITE(metro_irq_cause_w)                     // IRQ Acknowledge
1449   AM_RANGE(0x478836, 0x478837) AM_WRITENOP                                 // ? watchdog ?
1450   AM_RANGE(0x478840, 0x47884d) AM_WRITE(metro_blitter_w) AM_BASE(&metro_blitter_regs)   // Tiles Blitter
1451   AM_RANGE(0x478850, 0x47885b) AM_WRITEONLY AM_BASE(&metro_scroll)               // Scroll Regs
1452   AM_RANGE(0x478860, 0x47886b) AM_WRITE(metro_window_w) AM_BASE(&metro_window)      // Tilemap Window
1453   AM_RANGE(0x478870, 0x478871) AM_WRITEONLY AM_BASE(&metro_rombank)               // Rom Bank
1454   AM_RANGE(0x479700, 0x479713) AM_WRITEONLY AM_BASE(&metro_videoregs)               // Video Registers
1455   AM_RANGE(0x478888, 0x478889) AM_WRITEONLY AM_BASE(&gakusai_input_sel)            // Inputs
1456   AM_RANGE(0x478880, 0x478881) AM_READ(gakusai_input_r)                        // Inputs
1457   AM_RANGE(0x478882, 0x478883) AM_READ_PORT("IN0")                           //
1458   AM_RANGE(0x478884, 0x478885) AM_READ_PORT("DSW0")                           // 2 x DSW
1459   AM_RANGE(0x478886, 0x478887) AM_READ_PORT("DSW1")                           //
1460   AM_RANGE(0x800000, 0x800001) AM_DEVWRITE("oki", gakusai_oki_bank_hi_w)            // Samples Bank?
1461   AM_RANGE(0x900000, 0x900001) AM_WRITENOP                                 // ? 4
1462   AM_RANGE(0xa00000, 0xa00001) AM_DEVWRITE("oki", gakusai_oki_bank_lo_w)            // Samples Bank
1463   AM_RANGE(0xc00000, 0xc00003) AM_DEVWRITE8("ym", ym2413_w, 0x00ff)               //
1464   AM_RANGE(0xd00000, 0xd00001) AM_DEVREADWRITE8("oki", okim6295_r,okim6295_w, 0x00ff)   // Sound
16541465ADDRESS_MAP_END
16551466
1656static ADDRESS_MAP_START( dokyusei_writemem, ADDRESS_SPACE_PROGRAM, 16 )
1657   AM_RANGE(0x000000, 0x03ffff) AM_WRITE(SMH_ROM                  )   // ROM
1658   AM_RANGE(0xff0000, 0xffffff) AM_WRITE(SMH_RAM                  )   // RAM
1659   AM_RANGE(0x400000, 0x41ffff) AM_WRITE(metro_vram_0_w) AM_BASE(&metro_vram_0   )   // Layer 0
1660   AM_RANGE(0x420000, 0x43ffff) AM_WRITE(metro_vram_1_w) AM_BASE(&metro_vram_1   )   // Layer 1
1661   AM_RANGE(0x440000, 0x45ffff) AM_WRITE(metro_vram_2_w) AM_BASE(&metro_vram_2   )   // Layer 2
1662   AM_RANGE(0x460000, 0x46ffff) AM_WRITE(SMH_NOP                  )   // DSW Selection
1663   AM_RANGE(0x470000, 0x473fff) AM_WRITE(paletteram16_GGGGGRRRRRBBBBBx_word_w  ) AM_BASE(&paletteram16   )   // Palette
1664   AM_RANGE(0x474000, 0x474fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size            )   // Sprites
1665   AM_RANGE(0x478000, 0x4787ff) AM_WRITE(SMH_RAM) AM_BASE(&metro_tiletable) AM_SIZE(&metro_tiletable_size   )   // Tiles Set
1666   AM_RANGE(0x47880e, 0x47880f) AM_WRITE(SMH_RAM) AM_BASE(&metro_screenctrl   )   // Screen Control
1667   AM_RANGE(0x478810, 0x47881f) AM_WRITE(SMH_RAM) AM_BASE(&metro_irq_levels   )   // IRQ Levels
1668   AM_RANGE(0x478820, 0x47882f) AM_WRITE(SMH_RAM) AM_BASE(&metro_irq_vectors   )   // IRQ Vectors
1669   AM_RANGE(0x478830, 0x478831) AM_WRITE(SMH_RAM) AM_BASE(&metro_irq_enable   )   // IRQ Enable
1670   AM_RANGE(0x478832, 0x478833) AM_WRITE(metro_irq_cause_w            )   // IRQ Acknowledge
1671   AM_RANGE(0x478836, 0x478837) AM_WRITE(SMH_NOP                  )   // ? watchdog ?
1672   AM_RANGE(0x478840, 0x47884d) AM_WRITE(metro_blitter_w) AM_BASE(&metro_blitter_regs   )   // Tiles Blitter
1673   AM_RANGE(0x478860, 0x47886b) AM_WRITE(metro_window_w) AM_BASE(&metro_window   )   // Tilemap Window
1674   AM_RANGE(0x478850, 0x47885b) AM_WRITE(SMH_RAM) AM_BASE(&metro_scroll      )   // Scroll Regs
1675   AM_RANGE(0x478870, 0x478871) AM_WRITE(SMH_RAM) AM_BASE(&metro_rombank      )   // Rom Bank
1676   AM_RANGE(0x479700, 0x479713) AM_WRITE(SMH_RAM) AM_BASE(&metro_videoregs   )   // Video Registers
1677   AM_RANGE(0x478888, 0x478889) AM_WRITE(SMH_RAM) AM_BASE(&gakusai_input_sel   )   // Inputs
1678   AM_RANGE(0x800000, 0x800001) AM_DEVWRITE("oki", gakusai_oki_bank_hi_w         )   // Samples Bank?
1679   AM_RANGE(0x900000, 0x900001) AM_WRITE(SMH_NOP                  )   // ? 4
1680   AM_RANGE(0xa00000, 0xa00001) AM_DEVWRITE("oki", gakusai_oki_bank_lo_w         )   // Samples Bank
1681   AM_RANGE(0xc00000, 0xc00003) AM_DEVWRITE8("ym", ym2413_w, 0x00ff)   //
1682   AM_RANGE(0xd00000, 0xd00001) AM_DEVWRITE8("oki", okim6295_w, 0x00ff         )   //
1683ADDRESS_MAP_END
16841467
1685
16861468/***************************************************************************
16871469                                Pang Pom's
16881470***************************************************************************/
16891471
1690static ADDRESS_MAP_START( pangpoms_readmem, ADDRESS_SPACE_PROGRAM, 16 )
1691   AM_RANGE(0x000000, 0x03ffff) AM_READ(SMH_ROM            )   // ROM
1692   AM_RANGE(0xc00000, 0xc0ffff) AM_READ(SMH_RAM            )   // RAM
1693   AM_RANGE(0x400000, 0x41ffff) AM_READ(SMH_RAM            )   // Layer 0
1694   AM_RANGE(0x420000, 0x43ffff) AM_READ(SMH_RAM            )   // Layer 1
1695   AM_RANGE(0x440000, 0x45ffff) AM_READ(SMH_RAM            )   // Layer 2
1696   AM_RANGE(0x460000, 0x46ffff) AM_READ(metro_bankedrom_r      )   // Banked ROM
1697   AM_RANGE(0x470000, 0x473fff) AM_READ(SMH_RAM            )   // Palette
1698   AM_RANGE(0x474000, 0x474fff) AM_READ(SMH_RAM            )   // Sprites
1699   AM_RANGE(0x478000, 0x4787ff) AM_READ(SMH_RAM            )   // Tiles Set
1700   AM_RANGE(0x4788a2, 0x4788a3) AM_READ(metro_irq_cause_r      )   // IRQ Cause
1701   AM_RANGE(0x800000, 0x800001) AM_READ(metro_soundstatus_r   )   // From Sound CPU
1702   AM_RANGE(0x800002, 0x800003) AM_READ(SMH_NOP            )   //
1703   AM_RANGE(0x800004, 0x800005) AM_READ_PORT("IN0")            // Inputs
1704   AM_RANGE(0x800006, 0x800007) AM_READ_PORT("IN1")            //
1705   AM_RANGE(0x800008, 0x800009) AM_READ_PORT("IN2")            //
1706   AM_RANGE(0x80000a, 0x80000b) AM_READ_PORT("DSW0")            //
1707   AM_RANGE(0x80000c, 0x80000d) AM_READ_PORT("DSW1")            //
1708   AM_RANGE(0x80000e, 0x80000f) AM_READ_PORT("IN3")            //
1472static ADDRESS_MAP_START( pangpoms_map, ADDRESS_SPACE_PROGRAM, 16 )
1473   AM_RANGE(0x000000, 0x03ffff) AM_ROM                                       // ROM
1474   AM_RANGE(0xc00000, 0xc0ffff) AM_RAM                                       // RAM
1475   AM_RANGE(0x400000, 0x41ffff) AM_RAM_WRITE(metro_vram_0_w) AM_BASE(&metro_vram_0)   // Layer 0
1476   AM_RANGE(0x420000, 0x43ffff) AM_RAM_WRITE(metro_vram_1_w) AM_BASE(&metro_vram_1)   // Layer 1
1477   AM_RANGE(0x440000, 0x45ffff) AM_RAM_WRITE(metro_vram_2_w) AM_BASE(&metro_vram_2)   // Layer 2
1478   AM_RANGE(0x460000, 0x46ffff) AM_READ(metro_bankedrom_r)                        // Banked ROM
1479   AM_RANGE(0x470000, 0x473fff) AM_RAM_WRITE(paletteram16_GGGGGRRRRRBBBBBx_word_w) AM_BASE(&paletteram16)   // Palette
1480   AM_RANGE(0x474000, 0x474fff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)   // Sprites
1481   AM_RANGE(0x478000, 0x4787ff) AM_RAM AM_BASE(&metro_tiletable) AM_SIZE(&metro_tiletable_size)   // Tiles Set
1482   AM_RANGE(0x478800, 0x478813) AM_RAM AM_BASE(&metro_videoregs)                  // Video Registers
1483   AM_RANGE(0x478840, 0x47884d) AM_WRITE(metro_blitter_w) AM_BASE(&metro_blitter_regs)   // Tiles Blitter
1484   AM_RANGE(0x478860, 0x47886b) AM_WRITE(metro_window_w) AM_BASE(&metro_window)      // Tilemap Window
1485   AM_RANGE(0x478870, 0x47887b) AM_WRITEONLY AM_BASE(&metro_scroll)               // Scroll Regs
1486   AM_RANGE(0x478880, 0x478881) AM_WRITENOP                                    // ? increasing
1487   AM_RANGE(0x478890, 0x478891) AM_WRITENOP                                 // ? increasing
1488   AM_RANGE(0x4788a2, 0x4788a3) AM_READWRITE(metro_irq_cause_r,metro_irq_cause_w)      // IRQ Cause / IRQ Acknowledge
1489   AM_RANGE(0x4788a4, 0x4788a5) AM_WRITEONLY AM_BASE(&metro_irq_enable)            // IRQ Enable
1490   AM_RANGE(0x4788a8, 0x4788a9) AM_WRITE(metro_soundlatch_w)                     // To Sound CPU
1491   AM_RANGE(0x4788aa, 0x4788ab) AM_WRITEONLY AM_BASE(&metro_rombank)               // Rom Bank
1492   AM_RANGE(0x4788ac, 0x4788ad) AM_WRITEONLY AM_BASE(&metro_screenctrl)            // Screen Control
1493   AM_RANGE(0x800000, 0x800001) AM_READWRITE(metro_soundstatus_r,metro_soundstatus_w)   // From / To Sound CPU
1494   AM_RANGE(0x800002, 0x800003) AM_READNOP   AM_WRITE(metro_coin_lockout_1word_w)      // Coin Lockout
1495   AM_RANGE(0x800004, 0x800005) AM_READ_PORT("IN0")                           // Inputs
1496   AM_RANGE(0x800006, 0x800007) AM_READ_PORT("IN1")                           //
1497   AM_RANGE(0x800008, 0x800009) AM_READ_PORT("IN2")                           //
1498   AM_RANGE(0x80000a, 0x80000b) AM_READ_PORT("DSW0")                           //
1499   AM_RANGE(0x80000c, 0x80000d) AM_READ_PORT("DSW1")                           //
1500   AM_RANGE(0x80000e, 0x80000f) AM_READ_PORT("IN3")                           //
17091501ADDRESS_MAP_END
17101502
1711static ADDRESS_MAP_START( pangpoms_writemem, ADDRESS_SPACE_PROGRAM, 16 )
1712   AM_RANGE(0x000000, 0x03ffff) AM_WRITE(SMH_ROM                  )   // ROM
1713   AM_RANGE(0xc00000, 0xc0ffff) AM_WRITE(SMH_RAM                  )   // RAM
1714   AM_RANGE(0x400000, 0x41ffff) AM_WRITE(metro_vram_0_w) AM_BASE(&metro_vram_0   )   // Layer 0
1715   AM_RANGE(0x420000, 0x43ffff) AM_WRITE(metro_vram_1_w) AM_BASE(&metro_vram_1   )   // Layer 1
1716   AM_RANGE(0x440000, 0x45ffff) AM_WRITE(metro_vram_2_w) AM_BASE(&metro_vram_2   )   // Layer 2
1717   AM_RANGE(0x470000, 0x473fff) AM_WRITE(paletteram16_GGGGGRRRRRBBBBBx_word_w  ) AM_BASE(&paletteram16   )   // Palette
1718   AM_RANGE(0x474000, 0x474fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size            )   // Sprites
1719   AM_RANGE(0x478000, 0x4787ff) AM_WRITE(SMH_RAM) AM_BASE(&metro_tiletable) AM_SIZE(&metro_tiletable_size   )   // Tiles Set
1720   AM_RANGE(0x478800, 0x478813) AM_WRITE(SMH_RAM) AM_BASE(&metro_videoregs   )   // Video Registers
1721   AM_RANGE(0x478840, 0x47884d) AM_WRITE(metro_blitter_w) AM_BASE(&metro_blitter_regs   )   // Tiles Blitter
1722   AM_RANGE(0x478860, 0x47886b) AM_WRITE(metro_window_w) AM_BASE(&metro_window   )   // Tilemap Window
1723   AM_RANGE(0x478870, 0x47887b) AM_WRITE(SMH_RAM) AM_BASE(&metro_scroll      )   // Scroll Regs
1724   AM_RANGE(0x478880, 0x478881) AM_WRITE(SMH_NOP                  )   // ? increasing
1725   AM_RANGE(0x478890, 0x478891) AM_WRITE(SMH_NOP                  )   // ? increasing
1726   AM_RANGE(0x4788a2, 0x4788a3) AM_WRITE(metro_irq_cause_w            )   // IRQ Acknowledge
1727   AM_RANGE(0x4788a4, 0x4788a5) AM_WRITE(SMH_RAM) AM_BASE(&metro_irq_enable   )   // IRQ Enable
1728   AM_RANGE(0x4788a8, 0x4788a9) AM_WRITE(metro_soundlatch_w         )   // To Sound CPU
1729   AM_RANGE(0x4788aa, 0x4788ab) AM_WRITE(SMH_RAM) AM_BASE(&metro_rombank      )   // Rom Bank
1730   AM_RANGE(0x4788ac, 0x4788ad) AM_WRITE(SMH_RAM) AM_BASE(&metro_screenctrl   )   // Screen Control
1731   AM_RANGE(0x800000, 0x800001) AM_WRITE(metro_soundstatus_w         )   // To Sound CPU
1732   AM_RANGE(0x800002, 0x800003) AM_WRITE(metro_coin_lockout_1word_w   )   // Coin Lockout
1733ADDRESS_MAP_END
17341503
1735
17361504/***************************************************************************
17371505                                Poitto!
17381506***************************************************************************/
17391507
1740static ADDRESS_MAP_START( poitto_readmem, ADDRESS_SPACE_PROGRAM, 16 )
1741   AM_RANGE(0x000000, 0x03ffff) AM_READ(SMH_ROM            )   // ROM
1742   AM_RANGE(0x400000, 0x40ffff) AM_READ(SMH_RAM            )   // RAM
1743   AM_RANGE(0xc00000, 0xc1ffff) AM_READ(SMH_RAM            )   // Layer 0
1744   AM_RANGE(0xc20000, 0xc3ffff) AM_READ(SMH_RAM            )   // Layer 1
1745   AM_RANGE(0xc40000, 0xc5ffff) AM_READ(SMH_RAM            )   // Layer 2
1746   AM_RANGE(0xc60000, 0xc6ffff) AM_READ(metro_bankedrom_r      )   // Banked ROM
1747   AM_RANGE(0xc70000, 0xc73fff) AM_READ(SMH_RAM            )   // Palette
1748   AM_RANGE(0xc74000, 0xc74fff) AM_READ(SMH_RAM            )   // Sprites
1749   AM_RANGE(0xc78000, 0xc787ff) AM_READ(SMH_RAM            )   // Tiles Set
1750   AM_RANGE(0xc788a2, 0xc788a3) AM_READ(metro_irq_cause_r      )   // IRQ Cause
1751   AM_RANGE(0x800000, 0x800001) AM_READ_PORT("IN0")
1508static ADDRESS_MAP_START( poitto_map, ADDRESS_SPACE_PROGRAM, 16 )
1509   AM_RANGE(0x000000, 0x03ffff) AM_ROM                                       // ROM
1510   AM_RANGE(0x400000, 0x40ffff) AM_RAM                                       // RAM
1511   AM_RANGE(0xc00000, 0xc1ffff) AM_RAM_WRITE(metro_vram_0_w) AM_BASE(&metro_vram_0)   // Layer 0
1512   AM_RANGE(0xc20000, 0xc3ffff) AM_RAM_WRITE(metro_vram_1_w) AM_BASE(&metro_vram_1)   // Layer 1
1513   AM_RANGE(0xc40000, 0xc5ffff) AM_RAM_WRITE(metro_vram_2_w) AM_BASE(&metro_vram_2)   // Layer 2
1514   AM_RANGE(0xc60000, 0xc6ffff) AM_READ(metro_bankedrom_r)                        // Banked ROM
1515   AM_RANGE(0xc70000, 0xc73fff) AM_RAM_WRITE(paletteram16_GGGGGRRRRRBBBBBx_word_w) AM_BASE(&paletteram16)   // Palette
1516   AM_RANGE(0xc74000, 0xc74fff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)   // Sprites
1517   AM_RANGE(0xc78000, 0xc787ff) AM_RAM AM_BASE(&metro_tiletable) AM_SIZE(&metro_tiletable_size)   // Tiles Set
1518   AM_RANGE(0xc78800, 0xc78813) AM_WRITEONLY AM_BASE(&metro_videoregs)               // Video Registers
1519   AM_RANGE(0xc78840, 0xc7884d) AM_WRITE(metro_blitter_w) AM_BASE(&metro_blitter_regs)   // Tiles Blitter
1520   AM_RANGE(0xc78860, 0xc7886b) AM_WRITE(metro_window_w) AM_BASE(&metro_window)      // Tilemap Window
1521   AM_RANGE(0xc78870, 0xc7887b) AM_WRITEONLY AM_BASE(&metro_scroll)               // Scroll Regs
1522   AM_RANGE(0xc78880, 0xc78881) AM_WRITENOP                                 // ? increasing
1523   AM_RANGE(0xc78890, 0xc78891) AM_WRITENOP                                 // ? increasing
1524   AM_RANGE(0xc788a2, 0xc788a3) AM_READWRITE(metro_irq_cause_r,metro_irq_cause_w)      // IRQ Cause / IRQ Acknowledge
1525   AM_RANGE(0xc788a4, 0xc788a5) AM_WRITEONLY AM_BASE(&metro_irq_enable)            // IRQ Enable
1526   AM_RANGE(0xc788a8, 0xc788a9) AM_WRITE(metro_soundlatch_w)                     // To Sound CPU
1527   AM_RANGE(0xc788aa, 0xc788ab) AM_WRITEONLY AM_BASE(&metro_rombank)               // Rom Bank
1528   AM_RANGE(0xc788ac, 0xc788ad) AM_WRITEONLY AM_BASE(&metro_screenctrl)            // Screen Control
1529   AM_RANGE(0x800000, 0x800001) AM_READ_PORT("IN0") AM_WRITE(metro_soundstatus_w)      // To Sound CPU
17521530   AM_RANGE(0x800002, 0x800003) AM_READ_PORT("IN1")
17531531   AM_RANGE(0x800004, 0x800005) AM_READ_PORT("DSW0")
17541532   AM_RANGE(0x800006, 0x800007) AM_READ_PORT("IN2")
1533   AM_RANGE(0x800002, 0x800009) AM_WRITE(metro_coin_lockout_4words_w)               // Coin Lockout
17551534ADDRESS_MAP_END
17561535
1757static ADDRESS_MAP_START( poitto_writemem, ADDRESS_SPACE_PROGRAM, 16 )
1758   AM_RANGE(0x000000, 0x03ffff) AM_WRITE(SMH_ROM                  )   // ROM
1759   AM_RANGE(0x400000, 0x40ffff) AM_WRITE(SMH_RAM                  )   // RAM
1760   AM_RANGE(0xc00000, 0xc1ffff) AM_WRITE(metro_vram_0_w) AM_BASE(&metro_vram_0   )   // Layer 0
1761   AM_RANGE(0xc20000, 0xc3ffff) AM_WRITE(metro_vram_1_w) AM_BASE(&metro_vram_1   )   // Layer 1
1762   AM_RANGE(0xc40000, 0xc5ffff) AM_WRITE(metro_vram_2_w) AM_BASE(&metro_vram_2   )   // Layer 2
1763   AM_RANGE(0xc70000, 0xc73fff) AM_WRITE(paletteram16_GGGGGRRRRRBBBBBx_word_w  ) AM_BASE(&paletteram16   )   // Palette
1764   AM_RANGE(0xc74000, 0xc74fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size            )   // Sprites
1765   AM_RANGE(0xc78000, 0xc787ff) AM_WRITE(SMH_RAM) AM_BASE(&metro_tiletable) AM_SIZE(&metro_tiletable_size   )   // Tiles Set
1766   AM_RANGE(0xc78800, 0xc78813) AM_WRITE(SMH_RAM) AM_BASE(&metro_videoregs   )   // Video Registers
1767   AM_RANGE(0xc78840, 0xc7884d) AM_WRITE(metro_blitter_w) AM_BASE(&metro_blitter_regs   )   // Tiles Blitter
1768   AM_RANGE(0xc78860, 0xc7886b) AM_WRITE(metro_window_w) AM_BASE(&metro_window   )   // Tilemap Window
1769   AM_RANGE(0xc78870, 0xc7887b) AM_WRITE(SMH_RAM) AM_BASE(&metro_scroll      )   // Scroll Regs
1770   AM_RANGE(0xc78880, 0xc78881) AM_WRITE(SMH_NOP                  )   // ? increasing
1771   AM_RANGE(0xc78890, 0xc78891) AM_WRITE(SMH_NOP                  )   // ? increasing
1772   AM_RANGE(0xc788a2, 0xc788a3) AM_WRITE(metro_irq_cause_w            )   // IRQ Acknowledge
1773   AM_RANGE(0xc788a4, 0xc788a5) AM_WRITE(SMH_RAM) AM_BASE(&metro_irq_enable   )   // IRQ Enable
1774   AM_RANGE(0xc788a8, 0xc788a9) AM_WRITE(metro_soundlatch_w         )   // To Sound CPU
1775   AM_RANGE(0xc788aa, 0xc788ab) AM_WRITE(SMH_RAM) AM_BASE(&metro_rombank      )   // Rom Bank
1776   AM_RANGE(0xc788ac, 0xc788ad) AM_WRITE(SMH_RAM) AM_BASE(&metro_screenctrl   )   // Screen Control
1777   AM_RANGE(0x800000, 0x800001) AM_WRITE(metro_soundstatus_w         )   // To Sound CPU
1778   AM_RANGE(0x800002, 0x800009) AM_WRITE(metro_coin_lockout_4words_w   )   // Coin Lockout
1779ADDRESS_MAP_END
17801536
1781
17821537/***************************************************************************
17831538                                Sky Alert
17841539***************************************************************************/
17851540
1786static ADDRESS_MAP_START( skyalert_readmem, ADDRESS_SPACE_PROGRAM, 16 )
1787   AM_RANGE(0x000000, 0x03ffff) AM_READ(SMH_ROM            )   // ROM
1788   AM_RANGE(0xc00000, 0xc0ffff) AM_READ(SMH_RAM            )   // RAM
1789   AM_RANGE(0x800000, 0x81ffff) AM_READ(SMH_RAM            )   // Layer 0
1790   AM_RANGE(0x820000, 0x83ffff) AM_READ(SMH_RAM            )   // Layer 1
1791   AM_RANGE(0x840000, 0x85ffff) AM_READ(SMH_RAM            )   // Layer 2
1792   AM_RANGE(0x860000, 0x86ffff) AM_READ(metro_bankedrom_r      )   // Banked ROM
1793   AM_RANGE(0x870000, 0x873fff) AM_READ(SMH_RAM            )   // Palette
1794   AM_RANGE(0x874000, 0x874fff) AM_READ(SMH_RAM            )   // Sprites
1795   AM_RANGE(0x878000, 0x8787ff) AM_READ(SMH_RAM            )   // Tiles Set
1796   AM_RANGE(0x8788a2, 0x8788a3) AM_READ(metro_irq_cause_r      )   // IRQ Cause
1797   AM_RANGE(0x400000, 0x400001) AM_READ(metro_soundstatus_r   )   // From Sound CPU
1798   AM_RANGE(0x400002, 0x400003) AM_READ(SMH_NOP            )   //
1799   AM_RANGE(0x400004, 0x400005) AM_READ_PORT("IN0")            // Inputs
1800   AM_RANGE(0x400006, 0x400007) AM_READ_PORT("IN1")            //
1801   AM_RANGE(0x400008, 0x400009) AM_READ_PORT("IN2")            //
1802   AM_RANGE(0x40000a, 0x40000b) AM_READ_PORT("DSW0")            //
1803   AM_RANGE(0x40000c, 0x40000d) AM_READ_PORT("DSW1")            //
1804   AM_RANGE(0x40000e, 0x40000f) AM_READ_PORT("IN3")            //
1541static ADDRESS_MAP_START( skyalert_map, ADDRESS_SPACE_PROGRAM, 16 )
1542   AM_RANGE(0x000000, 0x03ffff) AM_ROM                                       // ROM
1543   AM_RANGE(0xc00000, 0xc0ffff) AM_RAM                                       // RAM
1544   AM_RANGE(0x800000, 0x81ffff) AM_RAM_WRITE(metro_vram_0_w) AM_BASE(&metro_vram_0)   // Layer 0
1545   AM_RANGE(0x820000, 0x83ffff) AM_RAM_WRITE(metro_vram_1_w) AM_BASE(&metro_vram_1)   // Layer 1
1546   AM_RANGE(0x840000, 0x85ffff) AM_RAM_WRITE(metro_vram_2_w) AM_BASE(&metro_vram_2)   // Layer 2
1547   AM_RANGE(0x860000, 0x86ffff) AM_READ(metro_bankedrom_r)                        // Banked ROM
1548   AM_RANGE(0x870000, 0x873fff) AM_RAM_WRITE(paletteram16_GGGGGRRRRRBBBBBx_word_w) AM_BASE(&paletteram16)   // Palette
1549   AM_RANGE(0x874000, 0x874fff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)   // Sprites
1550   AM_RANGE(0x878000, 0x8787ff) AM_RAM AM_BASE(&metro_tiletable) AM_SIZE(&metro_tiletable_size)   // Tiles Set
1551   AM_RANGE(0x878800, 0x878813) AM_WRITEONLY AM_BASE(&metro_videoregs)               // Video Registers
1552   AM_RANGE(0x878840, 0x87884d) AM_WRITE(metro_blitter_w) AM_BASE(&metro_blitter_regs)   // Tiles Blitter
1553   AM_RANGE(0x878860, 0x87886b) AM_WRITE(metro_window_w) AM_BASE(&metro_window   )      // Tilemap Window
1554   AM_RANGE(0x878870, 0x87887b) AM_WRITEONLY AM_BASE(&metro_scroll)               // Scroll
1555   AM_RANGE(0x878880, 0x878881) AM_WRITENOP                                 // ? increasing
1556   AM_RANGE(0x878890, 0x878891) AM_WRITENOP                                 // ? increasing
1557   AM_RANGE(0x8788a2, 0x8788a3) AM_READWRITE(metro_irq_cause_r,metro_irq_cause_w)      // IRQ Cause / IRQ Acknowledge
1558   AM_RANGE(0x8788a4, 0x8788a5) AM_WRITEONLY AM_BASE(&metro_irq_enable)            // IRQ Enable
1559   AM_RANGE(0x8788a8, 0x8788a9) AM_WRITE(metro_soundlatch_w)                     // To Sound CPU
1560   AM_RANGE(0x8788aa, 0x8788ab) AM_WRITEONLY AM_BASE(&metro_rombank)               // Rom Bank
1561   AM_RANGE(0x8788ac, 0x8788ad) AM_WRITEONLY AM_BASE(&metro_screenctrl)            // Screen Control
1562   AM_RANGE(0x400000, 0x400001) AM_READWRITE(metro_soundstatus_r,metro_soundstatus_w)   // From / To Sound CPU
1563   AM_RANGE(0x400002, 0x400003) AM_READNOP   AM_WRITE(metro_coin_lockout_1word_w)      // Coin Lockout
1564   AM_RANGE(0x400004, 0x400005) AM_READ_PORT("IN0")                           // Inputs
1565   AM_RANGE(0x400006, 0x400007) AM_READ_PORT("IN1")                           //
1566   AM_RANGE(0x400008, 0x400009) AM_READ_PORT("IN2")                           //
1567   AM_RANGE(0x40000a, 0x40000b) AM_READ_PORT("DSW0")                           //
1568   AM_RANGE(0x40000c, 0x40000d) AM_READ_PORT("DSW1")                           //
1569   AM_RANGE(0x40000e, 0x40000f) AM_READ_PORT("IN3")                           //
18051570ADDRESS_MAP_END
18061571
1807static ADDRESS_MAP_START( skyalert_writemem, ADDRESS_SPACE_PROGRAM, 16 )
1808   AM_RANGE(0x000000, 0x03ffff) AM_WRITE(SMH_ROM                  )   // ROM
1809   AM_RANGE(0xc00000, 0xc0ffff) AM_WRITE(SMH_RAM                  )   // RAM
1810   AM_RANGE(0x800000, 0x81ffff) AM_WRITE(metro_vram_0_w) AM_BASE(&metro_vram_0   )   // Layer 0
1811   AM_RANGE(0x820000, 0x83ffff) AM_WRITE(metro_vram_1_w) AM_BASE(&metro_vram_1   )   // Layer 1
1812   AM_RANGE(0x840000, 0x85ffff) AM_WRITE(metro_vram_2_w) AM_BASE(&metro_vram_2   )   // Layer 2
1813   AM_RANGE(0x870000, 0x873fff) AM_WRITE(paletteram16_GGGGGRRRRRBBBBBx_word_w  ) AM_BASE(&paletteram16   )   // Palette
1814   AM_RANGE(0x874000, 0x874fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size            )   // Sprites
1815   AM_RANGE(0x878000, 0x8787ff) AM_WRITE(SMH_RAM) AM_BASE(&metro_tiletable) AM_SIZE(&metro_tiletable_size   )   // Tiles Set
1816   AM_RANGE(0x878800, 0x878813) AM_WRITE(SMH_RAM) AM_BASE(&metro_videoregs   )   // Video Registers
1817   AM_RANGE(0x878840, 0x87884d) AM_WRITE(metro_blitter_w) AM_BASE(&metro_blitter_regs   )   // Tiles Blitter
1818   AM_RANGE(0x878860, 0x87886b) AM_WRITE(metro_window_w) AM_BASE(&metro_window   )   // Tilemap Window
1819   AM_RANGE(0x878870, 0x87887b) AM_WRITE(SMH_RAM) AM_BASE(&metro_scroll      )   // Scroll
1820   AM_RANGE(0x878880, 0x878881) AM_WRITE(SMH_NOP                  )   // ? increasing
1821   AM_RANGE(0x878890, 0x878891) AM_WRITE(SMH_NOP                  )   // ? increasing
1822   AM_RANGE(0x8788a2, 0x8788a3) AM_WRITE(metro_irq_cause_w            )   // IRQ Acknowledge
1823   AM_RANGE(0x8788a4, 0x8788a5) AM_WRITE(SMH_RAM) AM_BASE(&metro_irq_enable   )   // IRQ Enable
1824   AM_RANGE(0x8788a8, 0x8788a9) AM_WRITE(metro_soundlatch_w         )   // To Sound CPU
1825   AM_RANGE(0x8788aa, 0x8788ab) AM_WRITE(SMH_RAM) AM_BASE(&metro_rombank      )   // Rom Bank
1826   AM_RANGE(0x8788ac, 0x8788ad) AM_WRITE(SMH_RAM) AM_BASE(&metro_screenctrl   )   // Screen Control
1827   AM_RANGE(0x400000, 0x400001) AM_WRITE(metro_soundstatus_w         )   // To Sound CPU
1828   AM_RANGE(0x400002, 0x400003) AM_WRITE(metro_coin_lockout_1word_w   )   // Coin Lockout
1829ADDRESS_MAP_END
18301572
1831
18321573/***************************************************************************
18331574                                Pururun
18341575***************************************************************************/
18351576
1836static ADDRESS_MAP_START( pururun_readmem, ADDRESS_SPACE_PROGRAM, 16 )
1837   AM_RANGE(0x000000, 0x07ffff) AM_READ(SMH_ROM            )   // ROM
1838   AM_RANGE(0x800000, 0x80ffff) AM_READ(SMH_RAM            )   // RAM
1839   AM_RANGE(0xc00000, 0xc1ffff) AM_READ(SMH_RAM            )   // Layer 0
1840   AM_RANGE(0xc20000, 0xc3ffff) AM_READ(SMH_RAM            )   // Layer 1
1841   AM_RANGE(0xc40000, 0xc5ffff) AM_READ(SMH_RAM            )   // Layer 2
1842   AM_RANGE(0xc60000, 0xc6ffff) AM_READ(metro_bankedrom_r      )   // Banked ROM
1843   AM_RANGE(0xc70000, 0xc73fff) AM_READ(SMH_RAM            )   // Palette
1844   AM_RANGE(0xc74000, 0xc74fff) AM_READ(SMH_RAM            )   // Sprites
1845   AM_RANGE(0xc78000, 0xc787ff) AM_READ(SMH_RAM            )   // Tiles Set
1846   AM_RANGE(0xc788a2, 0xc788a3) AM_READ(metro_irq_cause_r      )   // IRQ Cause
1847   AM_RANGE(0x400000, 0x400001) AM_READ_PORT("IN0")
1577static ADDRESS_MAP_START( pururun_map, ADDRESS_SPACE_PROGRAM, 16 )
1578   AM_RANGE(0x000000, 0x07ffff) AM_ROM                                       // ROM
1579   AM_RANGE(0x800000, 0x80ffff) AM_RAM                                       // RAM
1580   AM_RANGE(0xc00000, 0xc1ffff) AM_RAM_WRITE(metro_vram_0_w) AM_BASE(&metro_vram_0)   // Layer 0
1581   AM_RANGE(0xc20000, 0xc3ffff) AM_RAM_WRITE(metro_vram_1_w) AM_BASE(&metro_vram_1)   // Layer 1
1582   AM_RANGE(0xc40000, 0xc5ffff) AM_RAM_WRITE(metro_vram_2_w) AM_BASE(&metro_vram_2)   // Layer 2
1583   AM_RANGE(0xc60000, 0xc6ffff) AM_READ(metro_bankedrom_r)                        // Banked ROM
1584   AM_RANGE(0xc70000, 0xc73fff) AM_RAM_WRITE(paletteram16_GGGGGRRRRRBBBBBx_word_w) AM_BASE(&paletteram16)   // Palette
1585   AM_RANGE(0xc74000, 0xc74fff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)   // Sprites
1586   AM_RANGE(0xc78000, 0xc787ff) AM_RAM AM_BASE(&metro_tiletable) AM_SIZE(&metro_tiletable_size)   // Tiles Set
1587   AM_RANGE(0xc78840, 0xc7884d) AM_WRITE(metro_blitter_w) AM_BASE(&metro_blitter_regs)   // Tiles Blitter
1588   AM_RANGE(0xc78860, 0xc7886b) AM_WRITE(metro_window_w) AM_BASE(&metro_window)      // Tilemap Window
1589   AM_RANGE(0xc78870, 0xc7887b) AM_WRITE(SMH_RAM) AM_BASE(&metro_scroll)            // Scroll Regs
1590   AM_RANGE(0xc78880, 0xc78881) AM_WRITENOP                                 // ? increasing
1591   AM_RANGE(0xc78890, 0xc78891) AM_WRITENOP                                 // ? increasing
1592   AM_RANGE(0xc788a2, 0xc788a3) AM_READWRITE(metro_irq_cause_r,metro_irq_cause_w)      // IRQ Cause / IRQ Acknowledge
1593   AM_RANGE(0xc788a4, 0xc788a5) AM_WRITEONLY AM_BASE(&metro_irq_enable)            // IRQ Enable
1594   AM_RANGE(0xc788a8, 0xc788a9) AM_WRITE(metro_soundlatch_w)                     // To Sound CPU
1595   AM_RANGE(0xc788aa, 0xc788ab) AM_WRITEONLY AM_BASE(&metro_rombank)               // Rom Bank
1596   AM_RANGE(0xc788ac, 0xc788ad) AM_WRITEONLY AM_BASE(&metro_screenctrl)            // Screen Control
1597   AM_RANGE(0xc79700, 0xc79713) AM_WRITEONLY AM_BASE(&metro_videoregs)               // Video Registers
1598   AM_RANGE(0x400000, 0x400001) AM_READ_PORT("IN0") AM_WRITE(metro_soundstatus_w)      // To Sound CPU
18481599   AM_RANGE(0x400002, 0x400003) AM_READ_PORT("IN1")
18491600   AM_RANGE(0x400004, 0x400005) AM_READ_PORT("DSW0")
18501601   AM_RANGE(0x400006, 0x400007) AM_READ_PORT("IN2")
1602   AM_RANGE(0x400002, 0x400009) AM_WRITE(metro_coin_lockout_4words_w)               // Coin Lockout
18511603ADDRESS_MAP_END
18521604
1853static ADDRESS_MAP_START( pururun_writemem, ADDRESS_SPACE_PROGRAM, 16 )
1854   AM_RANGE(0x000000, 0x07ffff) AM_WRITE(SMH_ROM                  )   // ROM
1855   AM_RANGE(0x800000, 0x80ffff) AM_WRITE(SMH_RAM                  )   // RAM
1856   AM_RANGE(0xc00000, 0xc1ffff) AM_WRITE(metro_vram_0_w) AM_BASE(&metro_vram_0   )   // Layer 0
1857   AM_RANGE(0xc20000, 0xc3ffff) AM_WRITE(metro_vram_1_w) AM_BASE(&metro_vram_1   )   // Layer 1
1858   AM_RANGE(0xc40000, 0xc5ffff) AM_WRITE(metro_vram_2_w) AM_BASE(&metro_vram_2   )   // Layer 2
1859   AM_RANGE(0xc70000, 0xc73fff) AM_WRITE(paletteram16_GGGGGRRRRRBBBBBx_word_w  ) AM_BASE(&paletteram16   )   // Palette
1860   AM_RANGE(0xc74000, 0xc74fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size            )   // Sprites
1861   AM_RANGE(0xc78000, 0xc787ff) AM_WRITE(SMH_RAM) AM_BASE(&metro_tiletable) AM_SIZE(&metro_tiletable_size   )   // Tiles Set
1862   AM_RANGE(0xc78840, 0xc7884d) AM_WRITE(metro_blitter_w) AM_BASE(&metro_blitter_regs   )   // Tiles Blitter
1863   AM_RANGE(0xc78860, 0xc7886b) AM_WRITE(metro_window_w) AM_BASE(&metro_window   )   // Tilemap Window
1864   AM_RANGE(0xc78870, 0xc7887b) AM_WRITE(SMH_RAM) AM_BASE(&metro_scroll      )   // Scroll Regs
1865   AM_RANGE(0xc78880, 0xc78881) AM_WRITE(SMH_NOP                  )   // ? increasing
1866   AM_RANGE(0xc78890, 0xc78891) AM_WRITE(SMH_NOP                  )   // ? increasing
1867   AM_RANGE(0xc788a2, 0xc788a3) AM_WRITE(metro_irq_cause_w            )   // IRQ Acknowledge
1868   AM_RANGE(0xc788a4, 0xc788a5) AM_WRITE(SMH_RAM) AM_BASE(&metro_irq_enable   )   // IRQ Enable
1869   AM_RANGE(0xc788a8, 0xc788a9) AM_WRITE(metro_soundlatch_w         )   // To Sound CPU
1870   AM_RANGE(0xc788aa, 0xc788ab) AM_WRITE(SMH_RAM) AM_BASE(&metro_rombank      )   // Rom Bank
1871   AM_RANGE(0xc788ac, 0xc788ad) AM_WRITE(SMH_RAM) AM_BASE(&metro_screenctrl   )   // Screen Control
1872   AM_RANGE(0xc79700, 0xc79713) AM_WRITE(SMH_RAM) AM_BASE(&metro_videoregs   )   // Video Registers
1873   AM_RANGE(0x400000, 0x400001) AM_WRITE(metro_soundstatus_w         )   // To Sound CPU
1874   AM_RANGE(0x400002, 0x400009) AM_WRITE(metro_coin_lockout_4words_w   )   // Coin Lockout
1875ADDRESS_MAP_END
18761605
1877
18781606/***************************************************************************
18791607                            Toride II Adauchi Gaiden
18801608***************************************************************************/
18811609
1882static ADDRESS_MAP_START( toride2g_readmem, ADDRESS_SPACE_PROGRAM, 16 )
1883   AM_RANGE(0x000000, 0x07ffff) AM_READ(SMH_ROM            )   // ROM
1884   AM_RANGE(0x400000, 0x4cffff) AM_READ(SMH_RAM            )   // RAM (4xc000-4xffff mirrored?)
1885   AM_RANGE(0xc00000, 0xc1ffff) AM_READ(SMH_RAM            )   // Layer 0
1886   AM_RANGE(0xc20000, 0xc3ffff) AM_READ(SMH_RAM            )   // Layer 1
1887   AM_RANGE(0xc40000, 0xc5ffff) AM_READ(SMH_RAM            )   // Layer 2
1888   AM_RANGE(0xc60000, 0xc6ffff) AM_READ(metro_bankedrom_r      )   // Banked ROM
1889   AM_RANGE(0xc70000, 0xc73fff) AM_READ(SMH_RAM            )   // Palette
1890   AM_RANGE(0xc74000, 0xc74fff) AM_READ(SMH_RAM            )   // Sprites
1891   AM_RANGE(0xc78000, 0xc787ff) AM_READ(SMH_RAM            )   // Tiles Set
1892   AM_RANGE(0xc788a2, 0xc788a3) AM_READ(metro_irq_cause_r      )   // IRQ Cause
1893   AM_RANGE(0x800000, 0x800001) AM_READ_PORT("IN0")
1610static ADDRESS_MAP_START( toride2g_map, ADDRESS_SPACE_PROGRAM, 16 )
1611   AM_RANGE(0x000000, 0x07ffff) AM_ROM                                       // ROM
1612   AM_RANGE(0x400000, 0x4cffff) AM_RAM                                       // RAM (4xc000-4xffff mirrored?)
1613   AM_RANGE(0xc00000, 0xc1ffff) AM_RAM_WRITE(metro_vram_0_w) AM_BASE(&metro_vram_0)   // Layer 0
1614   AM_RANGE(0xc20000, 0xc3ffff) AM_RAM_WRITE(metro_vram_1_w) AM_BASE(&metro_vram_1)   // Layer 1
1615   AM_RANGE(0xc40000, 0xc5ffff) AM_RAM_WRITE(metro_vram_2_w) AM_BASE(&metro_vram_2)   // Layer 2
1616   AM_RANGE(0xc60000, 0xc6ffff) AM_READ(metro_bankedrom_r)                        // Banked ROM
1617   AM_RANGE(0xc70000, 0xc73fff) AM_RAM_WRITE(paletteram16_GGGGGRRRRRBBBBBx_word_w) AM_BASE(&paletteram16)   // Palette
1618   AM_RANGE(0xc74000, 0xc74fff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)   // Sprites
1619   AM_RANGE(0xc78000, 0xc787ff) AM_RAM AM_BASE(&metro_tiletable) AM_SIZE(&metro_tiletable_size)   // Tiles Set
1620   AM_RANGE(0xc78840, 0xc7884d) AM_WRITE(metro_blitter_w) AM_BASE(&metro_blitter_regs)   // Tiles Blitter
1621   AM_RANGE(0xc78860, 0xc7886b) AM_WRITE(metro_window_w) AM_BASE(&metro_window)      // Tilemap Window
1622   AM_RANGE(0xc78870, 0xc7887b) AM_WRITEONLY AM_BASE(&metro_scroll)               // Scroll Regs
1623   AM_RANGE(0xc78880, 0xc78881) AM_WRITENOP                                 // ? increasing
1624   AM_RANGE(0xc78890, 0xc78891) AM_WRITENOP                                 // ? increasing
1625   AM_RANGE(0xc788a2, 0xc788a3) AM_READWRITE(metro_irq_cause_r,metro_irq_cause_w)      // IRQ Cause / IRQ Acknowledge
1626   AM_RANGE(0xc788a4, 0xc788a5) AM_WRITEONLY AM_BASE(&metro_irq_enable)            // IRQ Enable
1627   AM_RANGE(0xc788a8, 0xc788a9) AM_WRITE(metro_soundlatch_w)                     // To Sound CPU
1628   AM_RANGE(0xc788aa, 0xc788ab) AM_WRITEONLY AM_BASE(&metro_rombank)               // Rom Bank
1629   AM_RANGE(0xc788ac, 0xc788ad) AM_WRITEONLY AM_BASE(&metro_screenctrl)            // Screen Control
1630   AM_RANGE(0xc79700, 0xc79713) AM_WRITEONLY AM_BASE(&metro_videoregs)               // Video Registers
1631
1632   AM_RANGE(0x800000, 0x800001) AM_READ_PORT("IN0") AM_WRITE(metro_soundstatus_w)      // To Sound CPU
18941633   AM_RANGE(0x800002, 0x800003) AM_READ_PORT("IN1")
18951634   AM_RANGE(0x800004, 0x800005) AM_READ_PORT("DSW0")
18961635   AM_RANGE(0x800006, 0x800007) AM_READ_PORT("IN2")
1897ADDRESS_MAP_END
1636   AM_RANGE(0x800002, 0x800009) AM_WRITE(metro_coin_lockout_4words_w)               // Coin Lockout
18981637
1899static ADDRESS_MAP_START( toride2g_writemem, ADDRESS_SPACE_PROGRAM, 16 )
1900   AM_RANGE(0x000000, 0x07ffff) AM_WRITE(SMH_ROM                  )   // ROM
1901   AM_RANGE(0x400000, 0x4cffff) AM_WRITE(SMH_RAM                  )   // RAM (4xc000-4xffff mirrored?)
1902   AM_RANGE(0xc00000, 0xc1ffff) AM_WRITE(metro_vram_0_w) AM_BASE(&metro_vram_0   )   // Layer 0
1903   AM_RANGE(0xc20000, 0xc3ffff) AM_WRITE(metro_vram_1_w) AM_BASE(&metro_vram_1   )   // Layer 1
1904   AM_RANGE(0xc40000, 0xc5ffff) AM_WRITE(metro_vram_2_w) AM_BASE(&metro_vram_2   )   // Layer 2
1905   AM_RANGE(0xc70000, 0xc73fff) AM_WRITE(paletteram16_GGGGGRRRRRBBBBBx_word_w  ) AM_BASE(&paletteram16   )   // Palette
1906   AM_RANGE(0xc74000, 0xc74fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size            )   // Sprites
1907   AM_RANGE(0xc78000, 0xc787ff) AM_WRITE(SMH_RAM) AM_BASE(&metro_tiletable) AM_SIZE(&metro_tiletable_size   )   // Tiles Set
1908   AM_RANGE(0xc78840, 0xc7884d) AM_WRITE(metro_blitter_w) AM_BASE(&metro_blitter_regs   )   // Tiles Blitter
1909   AM_RANGE(0xc78860, 0xc7886b) AM_WRITE(metro_window_w) AM_BASE(&metro_window   )   // Tilemap Window
1910   AM_RANGE(0xc78870, 0xc7887b) AM_WRITE(SMH_RAM) AM_BASE(&metro_scroll      )   // Scroll Regs
1911   AM_RANGE(0xc78880, 0xc78881) AM_WRITE(SMH_NOP                  )   // ? increasing
1912   AM_RANGE(0xc78890, 0xc78891) AM_WRITE(SMH_NOP                  )   // ? increasing
1913   AM_RANGE(0xc788a2, 0xc788a3) AM_WRITE(metro_irq_cause_w            )   // IRQ Acknowledge
1914   AM_RANGE(0xc788a4, 0xc788a5) AM_WRITE(SMH_RAM) AM_BASE(&metro_irq_enable   )   // IRQ Enable
1915   AM_RANGE(0xc788a8, 0xc788a9) AM_WRITE(metro_soundlatch_w         )   // To Sound CPU
1916   AM_RANGE(0xc788aa, 0xc788ab) AM_WRITE(SMH_RAM) AM_BASE(&metro_rombank      )   // Rom Bank
1917   AM_RANGE(0xc788ac, 0xc788ad) AM_WRITE(SMH_RAM) AM_BASE(&metro_screenctrl   )   // Screen Control
1918   AM_RANGE(0xc79700, 0xc79713) AM_WRITE(SMH_RAM) AM_BASE(&metro_videoregs   )   // Video Registers
1919   AM_RANGE(0x800000, 0x800001) AM_WRITE(metro_soundstatus_w         )   // To Sound CPU
1920   AM_RANGE(0x800002, 0x800009) AM_WRITE(metro_coin_lockout_4words_w   )   // Coin Lockout
19211638ADDRESS_MAP_END
19221639
19231640
r4679r4680
19271644
19281645static WRITE16_HANDLER( blzntrnd_sound_w )
19291646{
1930   soundlatch_w(space, offset, data>>8);
1931   cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_NMI, PULSE_LINE);
1647   soundlatch_w(space, offset, data >> 8);
1648   cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
19321649}
19331650
19341651static WRITE8_HANDLER( blzntrnd_sh_bankswitch_w )
r4679r4680
19421659
19431660static void blzntrnd_irqhandler(const device_config *device, int irq)
19441661{
1945   cpu_set_input_line(device->machine->cpu[1], 0, irq ? ASSERT_LINE : CLEAR_LINE);
1662   cputag_set_input_line(device->machine, "audiocpu", 0, irq ? ASSERT_LINE : CLEAR_LINE);
19461663}
19471664
19481665static const ym2610_interface blzntrnd_ym2610_interface =
r4679r4680
19501667   blzntrnd_irqhandler
19511668};
19521669
1953static ADDRESS_MAP_START( blzntrnd_sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
1954   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
1955   AM_RANGE(0x8000, 0xbfff) AM_READ(SMH_BANK1)
1956   AM_RANGE(0xe000, 0xffff) AM_READ(SMH_RAM)
1670static ADDRESS_MAP_START( blzntrnd_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
1671   AM_RANGE(0x0000, 0x7fff) AM_ROM
1672   AM_RANGE(0x8000, 0xbfff) AM_ROMBANK(1)
1673   AM_RANGE(0xe000, 0xffff) AM_RAM
19571674ADDRESS_MAP_END
19581675
1959static ADDRESS_MAP_START( blzntrnd_sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
1960   AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM)
1961   AM_RANGE(0x8000, 0xbfff) AM_WRITE(SMH_ROM)
1962   AM_RANGE(0xe000, 0xffff) AM_WRITE(SMH_RAM)
1963ADDRESS_MAP_END
1964
1965static ADDRESS_MAP_START( blzntrnd_sound_readport, ADDRESS_SPACE_IO, 8 )
1676static ADDRESS_MAP_START( blzntrnd_sound_io_map, ADDRESS_SPACE_IO, 8 )
19661677   ADDRESS_MAP_GLOBAL_MASK(0xff)
1967   AM_RANGE(0x40, 0x40) AM_READ(soundlatch_r)
1968   AM_RANGE(0x80, 0x83) AM_DEVREAD("ym", ym2610_r)
1969ADDRESS_MAP_END
1970
1971static ADDRESS_MAP_START( blzntrnd_sound_writeport, ADDRESS_SPACE_IO, 8 )
1972   ADDRESS_MAP_GLOBAL_MASK(0xff)
19731678   AM_RANGE(0x00, 0x00) AM_WRITE(blzntrnd_sh_bankswitch_w)
1974   AM_RANGE(0x40, 0x40) AM_WRITENOP
1975   AM_RANGE(0x80, 0x83) AM_DEVWRITE("ym", ym2610_w)
1679   AM_RANGE(0x40, 0x40) AM_READ(soundlatch_r) AM_WRITENOP
1680   AM_RANGE(0x80, 0x83) AM_DEVREADWRITE("ym", ym2610_r,ym2610_w)
19761681ADDRESS_MAP_END
19771682
1978static ADDRESS_MAP_START( blzntrnd_readmem, ADDRESS_SPACE_PROGRAM, 16 )
1979   AM_RANGE(0x000000, 0x1fffff) AM_READ(SMH_ROM            )   // ROM
1980   AM_RANGE(0xff0000, 0xffffff) AM_READ(SMH_RAM            )   // RAM
1981//  AM_RANGE(0x300000, 0x300001) AM_READ(SMH_NOP              )   // Sound
1982   AM_RANGE(0x200000, 0x21ffff) AM_READ(SMH_RAM            )   // Layer 0
1983   AM_RANGE(0x220000, 0x23ffff) AM_READ(SMH_RAM            )   // Layer 1
1984   AM_RANGE(0x240000, 0x25ffff) AM_READ(SMH_RAM            )   // Layer 2
1985   AM_RANGE(0x260000, 0x26ffff) AM_READ(metro_bankedrom_r      )   // Banked ROM
1986   AM_RANGE(0x270000, 0x273fff) AM_READ(SMH_RAM            )   // Palette
1987   AM_RANGE(0x274000, 0x274fff) AM_READ(SMH_RAM            )   // Sprites
1988   AM_RANGE(0x278000, 0x2787ff) AM_READ(SMH_RAM            )   // Tiles Set
1989   AM_RANGE(0x2788a2, 0x2788a3) AM_READ(metro_irq_cause_r      )   // IRQ Cause
1990   AM_RANGE(0xe00000, 0xe00001) AM_READ_PORT("DSW0")            // Inputs
1991   AM_RANGE(0xe00002, 0xe00003) AM_READ_PORT("DSW1")            //
1992   AM_RANGE(0xe00004, 0xe00005) AM_READ_PORT("IN0")            //
1993   AM_RANGE(0xe00006, 0xe00007) AM_READ_PORT("IN1")            //
1994   AM_RANGE(0xe00008, 0xe00009) AM_READ_PORT("IN2")            //
1995   AM_RANGE(0x400000, 0x43ffff) AM_READ(SMH_RAM            )   // 053936
1996ADDRESS_MAP_END
1683static ADDRESS_MAP_START( blzntrnd_map, ADDRESS_SPACE_PROGRAM, 16 )
1684   AM_RANGE(0x000000, 0x1fffff) AM_ROM                                       // ROM
1685   AM_RANGE(0xff0000, 0xffffff) AM_RAM                                     // RAM
1686//  AM_RANGE(0x300000, 0x300001) AM_READNOP                                             // Sound
1687   AM_RANGE(0x200000, 0x21ffff) AM_RAM_WRITE(metro_vram_0_w) AM_BASE(&metro_vram_0)   // Layer 0
1688   AM_RANGE(0x220000, 0x23ffff) AM_RAM_WRITE(metro_vram_1_w) AM_BASE(&metro_vram_1)   // Layer 1
1689   AM_RANGE(0x240000, 0x25ffff) AM_RAM_WRITE(metro_vram_2_w) AM_BASE(&metro_vram_2)   // Layer 2
1690   AM_RANGE(0x260000, 0x26ffff) AM_READ(metro_bankedrom_r)                        // Banked ROM
1691   AM_RANGE(0x260000, 0x26ffff) AM_WRITENOP                                 // ??????
1692   AM_RANGE(0x270000, 0x273fff) AM_RAM_WRITE(paletteram16_GGGGGRRRRRBBBBBx_word_w) AM_BASE(&paletteram16)   // Palette
1693   AM_RANGE(0x274000, 0x274fff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)   // Sprites
1694   AM_RANGE(0x278000, 0x2787ff) AM_RAM AM_BASE(&metro_tiletable) AM_SIZE(&metro_tiletable_size)   // Tiles Set
1695   AM_RANGE(0x278860, 0x27886b) AM_WRITE(metro_window_w) AM_BASE(&metro_window)      // Tilemap Window
1696   AM_RANGE(0x278870, 0x27887b) AM_WRITEONLY AM_BASE(&metro_scroll)               // Scroll
1697   AM_RANGE(0x278890, 0x278891) AM_WRITENOP                                 // ? increasing
1698   AM_RANGE(0x2788a2, 0x2788a3) AM_READWRITE(metro_irq_cause_r,metro_irq_cause_w)      // IRQ Cause / IRQ Acknowledge
1699   AM_RANGE(0x2788a4, 0x2788a5) AM_WRITEONLY AM_BASE(&metro_irq_enable)            // IRQ Enable
1700   AM_RANGE(0x2788aa, 0x2788ab) AM_WRITEONLY AM_BASE(&metro_rombank)               // Rom Bank
1701   AM_RANGE(0x2788ac, 0x2788ad) AM_WRITEONLY AM_BASE(&metro_screenctrl)            // Screen Control
1702   AM_RANGE(0x279700, 0x279713) AM_WRITEONLY AM_BASE(&metro_videoregs)               // Video Registers
19971703
1998static ADDRESS_MAP_START( blzntrnd_writemem, ADDRESS_SPACE_PROGRAM, 16 )
1999   AM_RANGE(0x000000, 0x1fffff) AM_WRITE(SMH_ROM                  )   // ROM
2000   AM_RANGE(0x200000, 0x21ffff) AM_WRITE(metro_vram_0_w) AM_BASE(&metro_vram_0   )   // Layer 0
2001   AM_RANGE(0x220000, 0x23ffff) AM_WRITE(metro_vram_1_w) AM_BASE(&metro_vram_1   )   // Layer 1
2002   AM_RANGE(0x240000, 0x25ffff) AM_WRITE(metro_vram_2_w) AM_BASE(&metro_vram_2   )   // Layer 2
2003   AM_RANGE(0x260000, 0x26ffff) AM_WRITE(SMH_NOP            )   // ??????
2004   AM_RANGE(0x270000, 0x273fff) AM_WRITE(paletteram16_GGGGGRRRRRBBBBBx_word_w  ) AM_BASE(&paletteram16   )   // Palette
2005   AM_RANGE(0x274000, 0x274fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size            )   // Sprites
2006   AM_RANGE(0x278000, 0x2787ff) AM_WRITE(SMH_RAM) AM_BASE(&metro_tiletable) AM_SIZE(&metro_tiletable_size      )   // Tiles Set
2007   AM_RANGE(0x278860, 0x27886b) AM_WRITE(metro_window_w) AM_BASE(&metro_window            )   // Tilemap Window
2008   AM_RANGE(0x278870, 0x27887b) AM_WRITE(SMH_RAM) AM_BASE(&metro_scroll      )   // Scroll
2009   AM_RANGE(0x278890, 0x278891) AM_WRITE(SMH_NOP                  )   // ? increasing
2010   AM_RANGE(0x2788a2, 0x2788a3) AM_WRITE(metro_irq_cause_w            )   // IRQ Acknowledge
2011   AM_RANGE(0x2788a4, 0x2788a5) AM_WRITE(SMH_RAM) AM_BASE(&metro_irq_enable   )   // IRQ Enable
2012   AM_RANGE(0x2788aa, 0x2788ab) AM_WRITE(SMH_RAM) AM_BASE(&metro_rombank      )   // Rom Bank
2013   AM_RANGE(0x2788ac, 0x2788ad) AM_WRITE(SMH_RAM) AM_BASE(&metro_screenctrl   )   // Screen Control
2014   AM_RANGE(0x279700, 0x279713) AM_WRITE(SMH_RAM) AM_BASE(&metro_videoregs   )   // Video Registers
2015   AM_RANGE(0x400000, 0x43ffff) AM_WRITE(metro_K053936_w) AM_BASE(&metro_K053936_ram   )   // 053936
2016   AM_RANGE(0x500000, 0x500fff) AM_WRITE(SMH_RAM) AM_BASE(&K053936_0_linectrl)   // 053936 line control
2017   AM_RANGE(0x600000, 0x60001f) AM_WRITE(SMH_RAM) AM_BASE(&K053936_0_ctrl   )   // 053936 control
2018   AM_RANGE(0xe00000, 0xe00001) AM_WRITENOP
2019   AM_RANGE(0xe00002, 0xe00003) AM_WRITE(blzntrnd_sound_w)
2020   AM_RANGE(0xff0000, 0xffffff) AM_WRITE(SMH_RAM                  )   // RAM
1704   AM_RANGE(0x400000, 0x43ffff) AM_RAM_WRITE(metro_K053936_w) AM_BASE(&metro_K053936_ram)   // 053936
1705   AM_RANGE(0x500000, 0x500fff) AM_WRITEONLY AM_BASE(&K053936_0_linectrl)            // 053936 line control
1706   AM_RANGE(0x600000, 0x60001f) AM_WRITEONLY AM_BASE(&K053936_0_ctrl)               // 053936 control
1707
1708   AM_RANGE(0xe00000, 0xe00001) AM_READ_PORT("DSW0") AM_WRITENOP                  // Inputs
1709   AM_RANGE(0xe00002, 0xe00003) AM_READ_PORT("DSW1") AM_WRITE(blzntrnd_sound_w)      //
1710   AM_RANGE(0xe00004, 0xe00005) AM_READ_PORT("IN0")                           //
1711   AM_RANGE(0xe00006, 0xe00007) AM_READ_PORT("IN1")                           //
1712   AM_RANGE(0xe00008, 0xe00009) AM_READ_PORT("IN2")                           //
20211713ADDRESS_MAP_END
20221714
20231715
r4679r4680
20311723      okim6295_set_bank_base(devtag_get_device(device->machine, "oki"), ((data >> 3) & 0x07) * 0x40000);
20321724}
20331725
2034static ADDRESS_MAP_START( mouja_readmem, ADDRESS_SPACE_PROGRAM, 16 )
2035   AM_RANGE(0x000000, 0x07ffff) AM_READ(SMH_ROM            )   // ROM
2036   AM_RANGE(0xf00000, 0xf0ffff) AM_READ(SMH_RAM            )   // RAM
2037   AM_RANGE(0x400000, 0x41ffff) AM_READ(SMH_RAM            )   // Layer 0
2038   AM_RANGE(0x420000, 0x43ffff) AM_READ(SMH_RAM            )   // Layer 1
2039   AM_RANGE(0x440000, 0x45ffff) AM_READ(SMH_RAM            )   // Layer 2
2040   AM_RANGE(0x470000, 0x473fff) AM_READ(SMH_RAM            )   // Palette
2041   AM_RANGE(0x474000, 0x474fff) AM_READ(SMH_RAM            )   // Sprites
2042   AM_RANGE(0x478000, 0x4787ff) AM_READ(SMH_RAM            )   // Tiles Set
2043   AM_RANGE(0x478832, 0x478833) AM_READ(metro_irq_cause_r      )   // IRQ Cause
2044   AM_RANGE(0x478880, 0x478881) AM_READ_PORT("IN0")            // Inputs
2045   AM_RANGE(0x478882, 0x478883) AM_READ_PORT("IN1")            //
2046   AM_RANGE(0x478884, 0x478885) AM_READ_PORT("DSW0")            //
2047   AM_RANGE(0x478886, 0x478887) AM_READ_PORT("IN2")            //
2048   AM_RANGE(0xd00000, 0xd00001) AM_DEVREAD8("oki", okim6295_r, 0x00ff)
2049#if 0
2050   AM_RANGE(0x460000, 0x46ffff) AM_READ(metro_bankedrom_r      )   // Banked ROM
2051#endif
2052ADDRESS_MAP_END
2053
2054static ADDRESS_MAP_START( mouja_writemem, ADDRESS_SPACE_PROGRAM, 16 )
2055   AM_RANGE(0x000000, 0x07ffff) AM_WRITE(SMH_ROM                  )   // ROM
2056   AM_RANGE(0xf00000, 0xf0ffff) AM_WRITE(SMH_RAM                  )   // RAM
2057   AM_RANGE(0x400000, 0x41ffff) AM_WRITE(metro_vram_0_w) AM_BASE(&metro_vram_0   )   // Layer 0
2058   AM_RANGE(0x420000, 0x43ffff) AM_WRITE(metro_vram_1_w) AM_BASE(&metro_vram_1   )   // Layer 1
2059   AM_RANGE(0x440000, 0x45ffff) AM_WRITE(metro_vram_2_w) AM_BASE(&metro_vram_2   )   // Layer 2
2060   AM_RANGE(0x470000, 0x473fff) AM_WRITE(paletteram16_GGGGGRRRRRBBBBBx_word_w  ) AM_BASE(&paletteram16   )   // Palette
2061   AM_RANGE(0x474000, 0x474fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size            )   // Sprites
2062   AM_RANGE(0x478000, 0x4787ff) AM_WRITE(SMH_RAM) AM_BASE(&metro_tiletable) AM_SIZE(&metro_tiletable_size   )   // Tiles Set
2063   AM_RANGE(0x47880e, 0x47880f) AM_WRITE(SMH_RAM) AM_BASE(&metro_screenctrl   )   // Screen Control
2064   AM_RANGE(0x478810, 0x47881f) AM_WRITE(SMH_RAM) AM_BASE(&metro_irq_levels   )   // IRQ Levels
2065   AM_RANGE(0x478820, 0x47882f) AM_WRITE(SMH_RAM) AM_BASE(&metro_irq_vectors   )   // IRQ Vectors
2066   AM_RANGE(0x478830, 0x478831) AM_WRITE(SMH_RAM) AM_BASE(&metro_irq_enable   )   // IRQ Enable
2067   AM_RANGE(0x478832, 0x478833) AM_WRITE(metro_irq_cause_w            )   // IRQ Acknowledge
2068   AM_RANGE(0x478834, 0x478835) AM_WRITE(mouja_irq_timer_ctrl_w      )   // IRQ set timer count
2069   AM_RANGE(0x478836, 0x478837) AM_WRITE(watchdog_reset16_w         )   // Watchdog
2070   AM_RANGE(0x478860, 0x47886b) AM_WRITE(metro_window_w) AM_BASE(&metro_window   )   // Tilemap Window
2071   AM_RANGE(0x478850, 0x47885b) AM_WRITE(SMH_RAM) AM_BASE(&metro_scroll      )   // Scroll Regs
2072   AM_RANGE(0x478888, 0x478889) AM_WRITENOP                        // ??
2073   AM_RANGE(0x479700, 0x479713) AM_WRITE(SMH_RAM) AM_BASE(&metro_videoregs   )   // Video Registers
2074   AM_RANGE(0xc00000, 0xc00003) AM_DEVWRITE8("ym", ym2413_w, 0x00ff)
1726static ADDRESS_MAP_START( mouja_map, ADDRESS_SPACE_PROGRAM, 16 )
1727   AM_RANGE(0x000000, 0x07ffff) AM_ROM                                       // ROM
1728   AM_RANGE(0xf00000, 0xf0ffff) AM_RAM                                       // RAM
1729   AM_RANGE(0x400000, 0x41ffff) AM_RAM_WRITE(metro_vram_0_w) AM_BASE(&metro_vram_0   )   // Layer 0
1730   AM_RANGE(0x420000, 0x43ffff) AM_RAM_WRITE(metro_vram_1_w) AM_BASE(&metro_vram_1   )   // Layer 1
1731   AM_RANGE(0x440000, 0x45ffff) AM_RAM_WRITE(metro_vram_2_w) AM_BASE(&metro_vram_2   )   // Layer 2
1732   AM_RANGE(0x470000, 0x473fff) AM_RAM_WRITE(paletteram16_GGGGGRRRRRBBBBBx_word_w) AM_BASE(&paletteram16)   // Palette
1733   AM_RANGE(0x474000, 0x474fff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)   // Sprites
1734   AM_RANGE(0x478000, 0x4787ff) AM_RAM AM_BASE(&metro_tiletable) AM_SIZE(&metro_tiletable_size)   // Tiles Set
1735   AM_RANGE(0x47880e, 0x47880f) AM_WRITEONLY AM_BASE(&metro_screenctrl)            // Screen Control
1736   AM_RANGE(0x478810, 0x47881f) AM_WRITEONLY AM_BASE(&metro_irq_levels)            // IRQ Levels
1737   AM_RANGE(0x478820, 0x47882f) AM_WRITEONLY AM_BASE(&metro_irq_vectors)            // IRQ Vectors
1738   AM_RANGE(0x478830, 0x478831) AM_WRITEONLY AM_BASE(&metro_irq_enable)            // IRQ Enable
1739   AM_RANGE(0x478832, 0x478833) AM_READWRITE(metro_irq_cause_r,metro_irq_cause_w)      // IRQ Cause / IRQ Acknowledge
1740   AM_RANGE(0x478834, 0x478835) AM_WRITE(mouja_irq_timer_ctrl_w)                  // IRQ set timer count
1741   AM_RANGE(0x478836, 0x478837) AM_WRITE(watchdog_reset16_w)                     // Watchdog
1742   AM_RANGE(0x478850, 0x47885b) AM_WRITEONLY AM_BASE(&metro_scroll)               // Scroll Regs
1743   AM_RANGE(0x478860, 0x47886b) AM_WRITE(metro_window_w) AM_BASE(&metro_window)      // Tilemap Window
1744   AM_RANGE(0x478880, 0x478881) AM_READ_PORT("IN0")                           // Inputs
1745   AM_RANGE(0x478882, 0x478883) AM_READ_PORT("IN1")                           //
1746   AM_RANGE(0x478884, 0x478885) AM_READ_PORT("DSW0")                           //
1747   AM_RANGE(0x478886, 0x478887) AM_READ_PORT("IN2")                           //
1748   AM_RANGE(0x478888, 0x478889) AM_WRITENOP                                 // ??
1749   AM_RANGE(0x479700, 0x479713) AM_WRITEONLY AM_BASE(&metro_videoregs)               // Video Registers
20751750   AM_RANGE(0x800000, 0x800001) AM_DEVWRITE("oki", mouja_sound_rombank_w)
2076   AM_RANGE(0xd00000, 0xd00001) AM_DEVWRITE8("oki", okim6295_w, 0xff00)
1751   AM_RANGE(0xc00000, 0xc00003) AM_DEVWRITE8("ym", ym2413_w, 0x00ff)
1752   AM_RANGE(0xd00000, 0xd00001) AM_DEVREADWRITE8("oki", okim6295_r,okim6295_w, 0x00ff)
20771753#if 0
2078   AM_RANGE(0x478840, 0x47884d) AM_WRITE(metro_blitter_w) AM_BASE(&metro_blitter_regs   )   // Tiles Blitter
2079   AM_RANGE(0x47883a, 0x47883b) AM_WRITE(SMH_RAM) AM_BASE(&metro_rombank      )   // Rom Bank
2080   AM_RANGE(0x800002, 0x800009) AM_WRITE(metro_coin_lockout_4words_w   )   // Coin Lockout
1754   AM_RANGE(0x460000, 0x46ffff) AM_READ(metro_bankedrom_r)                        // Banked ROM
1755   AM_RANGE(0x478840, 0x47884d) AM_WRITE(metro_blitter_w) AM_BASE(&metro_blitter_regs)   // Tiles Blitter
1756   AM_RANGE(0x47883a, 0x47883b) AM_WRITEONLY AM_BASE(&metro_rombank)               // Rom Bank
1757   AM_RANGE(0x800002, 0x800009) AM_WRITE(metro_coin_lockout_4words_w)               // Coin Lockout
20811758#endif
20821759ADDRESS_MAP_END
20831760
r4679r4680
21091786   AM_RANGE( 0x760000, 0x76ffff ) AM_READ( metro_bankedrom_r )   // Banked ROM
21101787
21111788//  AM_RANGE( 0x772000, 0x773fff ) AM_RAM
2112   AM_RANGE( 0x770000, 0x773fff ) AM_READWRITE( SMH_RAM, paletteram16_GGGGGRRRRRBBBBBx_word_w   ) AM_BASE( &paletteram16 )   // Palette
1789   AM_RANGE( 0x770000, 0x773fff ) AM_RAM_WRITE( paletteram16_GGGGGRRRRRBBBBBx_word_w   ) AM_BASE( &paletteram16 )   // Palette
21131790
21141791   AM_RANGE( 0x775000, 0x777fff ) AM_RAM
21151792
2116   AM_RANGE( 0x778000, 0x7787ff ) AM_READWRITE( SMH_RAM, SMH_RAM )   AM_BASE(&metro_tiletable) AM_SIZE(&metro_tiletable_size      )   // Tiles Set
2117   AM_RANGE( 0x778800, 0x778813 ) AM_WRITE( SMH_RAM )      AM_BASE( &metro_videoregs )   // Video Registers
1793   AM_RANGE( 0x778000, 0x7787ff ) AM_RAM   AM_BASE(&metro_tiletable) AM_SIZE(&metro_tiletable_size      )   // Tiles Set
1794   AM_RANGE( 0x778800, 0x778813 ) AM_WRITEONLY      AM_BASE( &metro_videoregs )   // Video Registers
21181795   AM_RANGE( 0x778840, 0x77884f ) AM_WRITE( metro_blitter_w )   AM_BASE( &metro_blitter_regs )   // Tiles Blitter
21191796   AM_RANGE( 0x778860, 0x77886b ) AM_WRITE( metro_window_w )   AM_BASE( &metro_window )   // Tilemap Window
2120   AM_RANGE( 0x778870, 0x77887b ) AM_WRITE( SMH_RAM )      AM_BASE( &metro_scroll )   // Scroll
2121   AM_RANGE( 0x778890, 0x778891 ) AM_WRITE( SMH_NOP )   // ? increasing
1797   AM_RANGE( 0x778870, 0x77887b ) AM_WRITEONLY      AM_BASE( &metro_scroll )   // Scroll
1798   AM_RANGE( 0x778890, 0x778891 ) AM_WRITENOP    // ? increasing
21221799   AM_RANGE( 0x7788a2, 0x7788a3 ) AM_WRITE( metro_irq_cause_w )   // IRQ Cause
21231800   AM_RANGE( 0x7788a4, 0x7788a5 ) AM_WRITE( puzzlet_irq_enable_w ) AM_BASE( &metro_irq_enable )   // IRQ Enable
21241801
2125   AM_RANGE( 0x7788aa, 0x7788ab ) AM_WRITE( SMH_RAM )      AM_BASE( &metro_rombank   )      // Rom Bank
2126   AM_RANGE( 0x7788ac, 0x7788ad ) AM_WRITE( SMH_RAM )      AM_BASE( &metro_screenctrl )   // Screen Control
1802   AM_RANGE( 0x7788aa, 0x7788ab ) AM_WRITEONLY      AM_BASE( &metro_rombank   )      // Rom Bank
1803   AM_RANGE( 0x7788ac, 0x7788ad ) AM_WRITEONLY      AM_BASE( &metro_screenctrl )   // Screen Control
21271804
21281805   AM_RANGE( 0x7f2000, 0x7f3fff ) AM_RAM
21291806
r4679r4680
21411818}
21421819
21431820static ADDRESS_MAP_START( puzzlet_io_map, ADDRESS_SPACE_IO, 8 )
2144   AM_RANGE( H8_PORT_7,      H8_PORT_7   )   AM_READ_PORT("IN2")
1821   AM_RANGE( H8_PORT_7,   H8_PORT_7   )   AM_READ_PORT("IN2")
21451822   AM_RANGE( H8_SERIAL_1,   H8_SERIAL_1   )   AM_READ_PORT("IN0")      // coin
2146   AM_RANGE( H8_PORT_B,      H8_PORT_B   )   AM_READ_PORT("DSW0") AM_WRITE( puzzlet_portb_w )
1823   AM_RANGE( H8_PORT_B,   H8_PORT_B   )   AM_READ_PORT("DSW0") AM_WRITE( puzzlet_portb_w )
21471824ADDRESS_MAP_END
21481825
21491826
r4679r4680
37543431
37553432   /* basic machine hardware */
37563433   MDRV_CPU_ADD("maincpu", M68000, 16000000)
3757   MDRV_CPU_PROGRAM_MAP(balcube_readmem,balcube_writemem)
3434   MDRV_CPU_PROGRAM_MAP(balcube_map,0)
37583435   MDRV_CPU_VBLANK_INT_HACK(metro_interrupt,10)   /* ? */
37593436
37603437   MDRV_MACHINE_RESET(metro)
r4679r4680
37873464
37883465   /* basic machine hardware */
37893466   MDRV_CPU_ADD("maincpu", M68000, 16000000)
3790   MDRV_CPU_PROGRAM_MAP(daitoa_readmem,daitoa_writemem)
3467   MDRV_CPU_PROGRAM_MAP(daitoa_map,0)
37913468   MDRV_CPU_VBLANK_INT_HACK(metro_interrupt,10)   /* ? */
37923469
37933470   MDRV_MACHINE_RESET(metro)
r4679r4680
38193496
38203497   /* basic machine hardware */
38213498   MDRV_CPU_ADD("maincpu", M68000, 16000000)
3822   MDRV_CPU_PROGRAM_MAP(bangball_readmem,bangball_writemem)
3499   MDRV_CPU_PROGRAM_MAP(bangball_map,0)
38233500   MDRV_CPU_VBLANK_INT("screen", bangball_interrupt)
38243501
38253502   MDRV_MACHINE_RESET(metro)
r4679r4680
38523529
38533530   /* basic machine hardware */
38543531   MDRV_CPU_ADD("maincpu", M68000, 16000000)
3855   MDRV_CPU_PROGRAM_MAP(batlbubl_readmem,batlbubl_writemem)
3532   MDRV_CPU_PROGRAM_MAP(batlbubl_map,0)
38563533   MDRV_CPU_VBLANK_INT("screen", bangball_interrupt)
38573534
38583535   MDRV_MACHINE_RESET(metro)
r4679r4680
38843561
38853562   /* basic machine hardware */
38863563   MDRV_CPU_ADD("maincpu", M68000, 16000000)
3887   MDRV_CPU_PROGRAM_MAP(daitorid_readmem,daitorid_writemem)
3564   MDRV_CPU_PROGRAM_MAP(daitorid_map,0)
38883565   MDRV_CPU_VBLANK_INT_HACK(metro_interrupt,10)   /* ? */
38893566
38903567   MDRV_CPU_ADD("audiocpu", UPD7810, 12000000)
38913568   MDRV_CPU_CONFIG(metro_cpu_config)
3892   MDRV_CPU_PROGRAM_MAP(daitorid_snd_readmem,daitorid_snd_writemem)
3893   MDRV_CPU_IO_MAP(daitorid_snd_readport,daitorid_snd_writeport)
3569   MDRV_CPU_PROGRAM_MAP(metro_sound_map,0)
3570   MDRV_CPU_IO_MAP(daitorid_sound_io_map,0)
38943571
38953572   MDRV_MACHINE_RESET(metro)
38963573
r4679r4680
39273604
39283605   /* basic machine hardware */
39293606   MDRV_CPU_ADD("maincpu", M68000, 12000000)
3930   MDRV_CPU_PROGRAM_MAP(dharma_readmem,dharma_writemem)
3607   MDRV_CPU_PROGRAM_MAP(dharma_map,0)
39313608   MDRV_CPU_VBLANK_INT_HACK(metro_interrupt,10)   /* ? */
39323609
39333610   MDRV_CPU_ADD("audiocpu", UPD7810, 12000000)
39343611   MDRV_CPU_CONFIG(metro_cpu_config)
3935   MDRV_CPU_PROGRAM_MAP(metro_snd_readmem,metro_snd_writemem)
3936   MDRV_CPU_IO_MAP(metro_snd_readport,metro_snd_writeport)
3612   MDRV_CPU_PROGRAM_MAP(metro_sound_map,0)
3613   MDRV_CPU_IO_MAP(metro_sound_io_map,0)
39373614
39383615   MDRV_MACHINE_RESET(metro)
39393616
r4679r4680
39693646
39703647   /* basic machine hardware */
39713648   MDRV_CPU_ADD("maincpu", M68000, 12000000)
3972   MDRV_CPU_PROGRAM_MAP(karatour_readmem,karatour_writemem)
3649   MDRV_CPU_PROGRAM_MAP(karatour_map,0)
39733650   MDRV_CPU_VBLANK_INT_HACK(karatour_interrupt,10)   /* ? */
39743651
39753652   MDRV_CPU_ADD("audiocpu", UPD7810, 12000000)
39763653   MDRV_CPU_CONFIG(metro_cpu_config)
3977   MDRV_CPU_PROGRAM_MAP(metro_snd_readmem,metro_snd_writemem)
3978   MDRV_CPU_IO_MAP(metro_snd_readport,metro_snd_writeport)
3654   MDRV_CPU_PROGRAM_MAP(metro_sound_map,0)
3655   MDRV_CPU_IO_MAP(metro_sound_io_map,0)
39793656
39803657   MDRV_MACHINE_RESET(metro)
39813658
r4679r4680
40113688
40123689   /* basic machine hardware */
40133690   MDRV_CPU_ADD("maincpu", M68000, 12000000)
4014   MDRV_CPU_PROGRAM_MAP(kokushi_readmem,kokushi_writemem)
3691   MDRV_CPU_PROGRAM_MAP(kokushi_map,0)
40153692   MDRV_CPU_VBLANK_INT_HACK(karatour_interrupt,10)   /* ? */
40163693
40173694   MDRV_CPU_ADD("audiocpu", UPD7810, 12000000)
40183695   MDRV_CPU_CONFIG(metro_cpu_config)
4019   MDRV_CPU_PROGRAM_MAP(metro_snd_readmem,metro_snd_writemem)
4020   MDRV_CPU_IO_MAP(metro_snd_readport,metro_snd_writeport)
3696   MDRV_CPU_PROGRAM_MAP(metro_sound_map,0)
3697   MDRV_CPU_IO_MAP(metro_sound_io_map,0)
40213698
40223699   MDRV_MACHINE_RESET(metro)
40233700
r4679r4680
40533730
40543731   /* basic machine hardware */
40553732   MDRV_CPU_ADD("maincpu", M68000, 12000000)
4056   MDRV_CPU_PROGRAM_MAP(lastfort_readmem,lastfort_writemem)
3733   MDRV_CPU_PROGRAM_MAP(lastfort_map,0)
40573734   MDRV_CPU_VBLANK_INT_HACK(metro_interrupt,10)   /* ? */
40583735
40593736   MDRV_CPU_ADD("audiocpu", UPD7810, 12000000)
40603737   MDRV_CPU_CONFIG(metro_cpu_config)
4061   MDRV_CPU_PROGRAM_MAP(metro_snd_readmem,metro_snd_writemem)
4062   MDRV_CPU_IO_MAP(metro_snd_readport,metro_snd_writeport)
3738   MDRV_CPU_PROGRAM_MAP(metro_sound_map,0)
3739   MDRV_CPU_IO_MAP(metro_sound_io_map,0)
40633740
40643741   MDRV_MACHINE_RESET(metro)
40653742
r4679r4680
40943771
40953772   /* basic machine hardware */
40963773   MDRV_CPU_ADD("maincpu", M68000, 12000000)
4097   MDRV_CPU_PROGRAM_MAP(lastforg_readmem,lastforg_writemem)
3774   MDRV_CPU_PROGRAM_MAP(lastforg_map,0)
40983775   MDRV_CPU_VBLANK_INT_HACK(karatour_interrupt,10)   /* ? */
40993776
41003777   MDRV_CPU_ADD("audiocpu", UPD7810, 12000000)
41013778   MDRV_CPU_CONFIG(metro_cpu_config)
4102   MDRV_CPU_PROGRAM_MAP(metro_snd_readmem,metro_snd_writemem)
4103   MDRV_CPU_IO_MAP(metro_snd_readport,metro_snd_writeport)
3779   MDRV_CPU_PROGRAM_MAP(metro_sound_map,0)
3780   MDRV_CPU_IO_MAP(metro_sound_io_map,0)
41043781
41053782   MDRV_MACHINE_RESET(metro)
41063783
r4679r4680
41353812
41363813   /* basic machine hardware */
41373814   MDRV_CPU_ADD("maincpu", M68000, 16000000)
4138   MDRV_CPU_PROGRAM_MAP(dokyusei_readmem,dokyusei_writemem)
3815   MDRV_CPU_PROGRAM_MAP(dokyusei_map,0)
41393816   MDRV_CPU_VBLANK_INT_HACK(dokyusei_interrupt,2)   /* ? */
41403817
41413818   MDRV_MACHINE_RESET(metro)
r4679r4680
41853862
41863863   /* basic machine hardware */
41873864   MDRV_CPU_ADD("maincpu", M68000, 16000000)
4188   MDRV_CPU_PROGRAM_MAP(dokyusp_readmem,dokyusp_writemem)
3865   MDRV_CPU_PROGRAM_MAP(dokyusp_map,0)
41893866   MDRV_CPU_VBLANK_INT("screen", gakusai_interrupt)
41903867
41913868   MDRV_MACHINE_RESET(metro)
r4679r4680
42233900
42243901   /* basic machine hardware */
42253902   MDRV_CPU_ADD("maincpu", M68000, 16000000)
4226   MDRV_CPU_PROGRAM_MAP(gakusai_readmem,gakusai_writemem)
3903   MDRV_CPU_PROGRAM_MAP(gakusai_map,0)
42273904   MDRV_CPU_VBLANK_INT("screen", gakusai_interrupt)
42283905
42293906   MDRV_MACHINE_RESET(metro)
r4679r4680
42613938
42623939   /* basic machine hardware */
42633940   MDRV_CPU_ADD("maincpu", M68000, 16000000)
4264   MDRV_CPU_PROGRAM_MAP(gakusai2_readmem,gakusai2_writemem)
3941   MDRV_CPU_PROGRAM_MAP(gakusai2_map,0)
42653942   MDRV_CPU_VBLANK_INT("screen", gakusai_interrupt)
42663943
42673944   MDRV_MACHINE_RESET(metro)
r4679r4680
42993976
43003977   /* basic machine hardware */
43013978   MDRV_CPU_ADD("maincpu", M68000, 12000000)
4302   MDRV_CPU_PROGRAM_MAP(pangpoms_readmem,pangpoms_writemem)
3979   MDRV_CPU_PROGRAM_MAP(pangpoms_map,0)
43033980   MDRV_CPU_VBLANK_INT_HACK(metro_interrupt,10)   /* ? */
43043981
43053982   MDRV_CPU_ADD("audiocpu", UPD7810, 12000000)
43063983   MDRV_CPU_CONFIG(metro_cpu_config)
4307   MDRV_CPU_PROGRAM_MAP(metro_snd_readmem,metro_snd_writemem)
4308   MDRV_CPU_IO_MAP(metro_snd_readport,metro_snd_writeport)
3984   MDRV_CPU_PROGRAM_MAP(metro_sound_map,0)
3985   MDRV_CPU_IO_MAP(metro_sound_io_map,0)
43093986
43103987   MDRV_MACHINE_RESET(metro)
43113988
r4679r4680
43414018
43424019   /* basic machine hardware */
43434020   MDRV_CPU_ADD("maincpu", M68000, 12000000)
4344   MDRV_CPU_PROGRAM_MAP(poitto_readmem,poitto_writemem)
4021   MDRV_CPU_PROGRAM_MAP(poitto_map,0)
43454022   MDRV_CPU_VBLANK_INT_HACK(metro_interrupt,10)   /* ? */
43464023
43474024   MDRV_CPU_ADD("audiocpu", UPD7810, 12000000)
43484025   MDRV_CPU_CONFIG(metro_cpu_config)
4349   MDRV_CPU_PROGRAM_MAP(metro_snd_readmem,metro_snd_writemem)
4350   MDRV_CPU_IO_MAP(metro_snd_readport,metro_snd_writeport)
4026   MDRV_CPU_PROGRAM_MAP(metro_sound_map,0)
4027   MDRV_CPU_IO_MAP(metro_sound_io_map,0)
43514028
43524029   MDRV_MACHINE_RESET(metro)
43534030
r4679r4680
43834060
43844061   /* basic machine hardware */
43854062   MDRV_CPU_ADD("maincpu", M68000, 12000000)
4386   MDRV_CPU_PROGRAM_MAP(pururun_readmem,pururun_writemem)
4063   MDRV_CPU_PROGRAM_MAP(pururun_map,0)
43874064   MDRV_CPU_VBLANK_INT_HACK(metro_interrupt,10)   /* ? */
43884065
43894066   MDRV_CPU_ADD("audiocpu", UPD7810, 12000000)
43904067   MDRV_CPU_CONFIG(metro_cpu_config)
4391   MDRV_CPU_PROGRAM_MAP(daitorid_snd_readmem,daitorid_snd_writemem)
4392   MDRV_CPU_IO_MAP(daitorid_snd_readport,daitorid_snd_writeport)
4068   MDRV_CPU_PROGRAM_MAP(metro_sound_map,0)
4069   MDRV_CPU_IO_MAP(daitorid_sound_io_map,0)
43934070
43944071   MDRV_MACHINE_RESET(metro)
43954072
r4679r4680
44264103
44274104   /* basic machine hardware */
44284105   MDRV_CPU_ADD("maincpu", M68000, 12000000)
4429   MDRV_CPU_PROGRAM_MAP(skyalert_readmem,skyalert_writemem)
4106   MDRV_CPU_PROGRAM_MAP(skyalert_map,0)
44304107   MDRV_CPU_VBLANK_INT_HACK(metro_interrupt,10)   /* ? */
44314108
44324109   MDRV_CPU_ADD("audiocpu", UPD7810, 12000000)
44334110   MDRV_CPU_CONFIG(metro_cpu_config)
4434   MDRV_CPU_PROGRAM_MAP(metro_snd_readmem,metro_snd_writemem)
4435   MDRV_CPU_IO_MAP(metro_snd_readport,metro_snd_writeport)
4111   MDRV_CPU_PROGRAM_MAP(metro_sound_map,0)
4112   MDRV_CPU_IO_MAP(metro_sound_io_map,0)
44364113
44374114   MDRV_MACHINE_RESET(metro)
44384115
r4679r4680
44684145
44694146   /* basic machine hardware */
44704147   MDRV_CPU_ADD("maincpu", M68000, 12000000)
4471   MDRV_CPU_PROGRAM_MAP(toride2g_readmem,toride2g_writemem)
4148   MDRV_CPU_PROGRAM_MAP(toride2g_map,0)
44724149   MDRV_CPU_VBLANK_INT_HACK(metro_interrupt,10)   /* ? */
44734150
44744151   MDRV_CPU_ADD("audiocpu", UPD7810, 12000000)
44754152   MDRV_CPU_CONFIG(metro_cpu_config)
4476   MDRV_CPU_PROGRAM_MAP(metro_snd_readmem,metro_snd_writemem)
4477   MDRV_CPU_IO_MAP(metro_snd_readport,metro_snd_writeport)
4153   MDRV_CPU_PROGRAM_MAP(metro_sound_map,0)
4154   MDRV_CPU_IO_MAP(metro_sound_io_map,0)
44784155
44794156   MDRV_MACHINE_RESET(metro)
44804157
r4679r4680
45104187
45114188   /* basic machine hardware */
45124189   MDRV_CPU_ADD("maincpu", M68000, 12000000)   /* ??? */
4513   MDRV_CPU_PROGRAM_MAP(mouja_readmem,mouja_writemem)
4190   MDRV_CPU_PROGRAM_MAP(mouja_map,0)
45144191   MDRV_CPU_VBLANK_INT("screen", mouja_interrupt)
45154192
45164193   MDRV_MACHINE_RESET(metro)
r4679r4680
45464223
45474224   /* basic machine hardware */
45484225   MDRV_CPU_ADD("maincpu", M68000, 16000000)
4549   MDRV_CPU_PROGRAM_MAP(blzntrnd_readmem,blzntrnd_writemem)
4226   MDRV_CPU_PROGRAM_MAP(blzntrnd_map,0)
45504227   MDRV_CPU_VBLANK_INT_HACK(karatour_interrupt,10)   /* ? */
45514228
45524229   MDRV_CPU_ADD("audiocpu", Z80, 8000000)
4553   MDRV_CPU_PROGRAM_MAP(blzntrnd_sound_readmem, blzntrnd_sound_writemem)
4554   MDRV_CPU_IO_MAP(blzntrnd_sound_readport, blzntrnd_sound_writeport)
4230   MDRV_CPU_PROGRAM_MAP(blzntrnd_sound_map, 0)
4231   MDRV_CPU_IO_MAP(blzntrnd_sound_io_map, 0)
45554232
45564233   MDRV_MACHINE_RESET(metro)
45574234
r4679r4680
45854262
45864263   /* basic machine hardware */
45874264   MDRV_CPU_ADD("maincpu", M68000, 16000000)
4588   MDRV_CPU_PROGRAM_MAP(blzntrnd_readmem,blzntrnd_writemem)
4265   MDRV_CPU_PROGRAM_MAP(blzntrnd_map,0)
45894266   MDRV_CPU_VBLANK_INT_HACK(karatour_interrupt,10)   /* ? */
45904267
45914268   MDRV_CPU_ADD("audiocpu", Z80, 8000000)
4592   MDRV_CPU_PROGRAM_MAP(blzntrnd_sound_readmem, blzntrnd_sound_writemem)
4593   MDRV_CPU_IO_MAP(blzntrnd_sound_readport, blzntrnd_sound_writeport)
4269   MDRV_CPU_PROGRAM_MAP(blzntrnd_sound_map, 0)
4270   MDRV_CPU_IO_MAP(blzntrnd_sound_io_map, 0)
45944271
45954272   MDRV_MACHINE_RESET(metro)
45964273
r4679r4680
46464323
46474324      default:
46484325         // timer
4649         cpu_set_input_line(device->machine->cpu[0], H8_METRO_TIMER_HACK, HOLD_LINE);
4326         cputag_set_input_line(device->machine, "maincpu", H8_METRO_TIMER_HACK, HOLD_LINE);
46504327         break;
46514328   }
46524329}
r4679r4680
46544331
46554332   /* basic machine hardware */
46564333   MDRV_CPU_ADD("maincpu", H83007, XTAL_20MHz)   // H8/3007 - Hitachi HD6413007F20 CPU. Clock 20MHz
4657
46584334   MDRV_CPU_PROGRAM_MAP(puzzlet_map,0)
46594335   MDRV_CPU_IO_MAP(puzzlet_io_map,0)
46604336   MDRV_CPU_VBLANK_INT_HACK(puzzlet_interrupt, 5)
r4679r4680
47184394
47194395static DRIVER_INIT( metro )
47204396{
4721   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
4397   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
47224398
47234399   metro_common();
47244400
r4679r4680
47304406
47314407static DRIVER_INIT( karatour )
47324408{
4733   UINT16 *RAM = (UINT16 *)auto_malloc(0x20000*3);
4409   UINT16 *RAM = auto_alloc_array(machine, UINT16, 0x20000*3/2);
47344410int i;
47354411   metro_vram_0 = RAM + (0x20000/2) * 0;
47364412   metro_vram_1 = RAM + (0x20000/2) * 1;
r4679r4680
47434419
47444420static DRIVER_INIT( daitorid )
47454421{
4746   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
4422   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
47474423
47484424   metro_common();
47494425
src/mame/drivers/angelkds.c
r4679r4680
538538
539539static void irqhandler(const device_config *device, int irq)
540540{
541   cpu_set_input_line(device->machine->cpu[1],0,irq ? ASSERT_LINE : CLEAR_LINE);
541   cputag_set_input_line(device->machine, "sub", 0, irq ? ASSERT_LINE : CLEAR_LINE);
542542}
543543
544544static const ym2203_interface ym2203_config =
src/mame/drivers/jrpacman.c
r4679r4680
106106
107107static WRITE8_HANDLER( jrpacman_interrupt_vector_w )
108108{
109   cpu_set_input_line_vector(space->machine->cpu[0], 0, data);
110   cpu_set_input_line(space->machine->cpu[0], 0, CLEAR_LINE);
109   cpu_set_input_line_vector(cputag_get_cpu(space->machine, "maincpu"), 0, data);
110   cputag_set_input_line(space->machine, "maincpu", 0, CLEAR_LINE);
111111}
112112
113113
src/mame/drivers/hshavoc.c
r4679r4680
3737#include "driver.h"
3838#include "cpu/z80/z80.h"
3939#include "cpu/m68000/m68000.h"
40#include "sound/2612intf.h"
41#include "sound/sn76496.h"
42
4043#include "genesis.h"
4144
4245#define MASTER_CLOCK      53693100
r4679r4680
9497   PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
9598INPUT_PORTS_END
9699
97static ADDRESS_MAP_START( topshoot_readmem, ADDRESS_SPACE_PROGRAM, 16 )
98   AM_RANGE(0x000000, 0x0fffff) AM_READ(SMH_ROM)               /* Cartridge Program Rom */
99   AM_RANGE(0x202000, 0x2023ff) AM_READ(SMH_RAM)
100   AM_RANGE(0xa00000, 0xa0ffff) AM_READ(genesis_68k_to_z80_r)
101   AM_RANGE(0xc00000, 0xc0001f) AM_READ(genesis_vdp_r)            /* VDP Access */
102   AM_RANGE(0xe00000, 0xe1ffff) AM_READ(SMH_BANK3)
103   AM_RANGE(0xfe0000, 0xfeffff) AM_READ(SMH_BANK4)
104   AM_RANGE(0xff0000, 0xffffff) AM_READ(SMH_RAM)               /* Main Ram */
105ADDRESS_MAP_END
106
107
108static ADDRESS_MAP_START( topshoot_writemem, ADDRESS_SPACE_PROGRAM, 16 )
109   AM_RANGE(0x000000, 0x0fffff) AM_WRITE(SMH_ROM)               /* Cartridge Program Rom */
110//  AM_RANGE(0x200000, 0x20007f) AM_WRITE(SMH_RAM)
111   AM_RANGE(0x200000, 0x2023ff) AM_WRITE(SMH_RAM) // tested
112   AM_RANGE(0xa10000, 0xa1001f) AM_WRITE(genesis_io_w) AM_BASE(&genesis_io_ram)            /* Genesis Input */
100static ADDRESS_MAP_START( topshoot_map, ADDRESS_SPACE_PROGRAM, 16 )
101   AM_RANGE(0x000000, 0x0fffff) AM_ROM                                          /* Cartridge Program Rom */
102   AM_RANGE(0x200000, 0x201fff) AM_WRITENOP // tested
103   AM_RANGE(0x202000, 0x2023ff) AM_RAM // tested
104   AM_RANGE(0xa00000, 0xa0ffff) AM_READWRITE(genesis_68k_to_z80_r, genesis_68k_to_z80_w)
105   AM_RANGE(0xa10000, 0xa1001f) AM_WRITE(genesis_io_w) AM_BASE(&genesis_io_ram)         /* Genesis Input */
113106   AM_RANGE(0xa11000, 0xa11203) AM_WRITE(genesis_ctrl_w)
114   AM_RANGE(0xa00000, 0xa0ffff) AM_WRITE(genesis_68k_to_z80_w)
115   AM_RANGE(0xc00000, 0xc0001f) AM_WRITE(genesis_vdp_w)            /* VDP Access */
116   AM_RANGE(0xfe0000, 0xfeffff) AM_WRITE(SMH_BANK4)
117   AM_RANGE(0xff0000, 0xffffff) AM_WRITE(SMH_RAM) AM_BASE(&genesis_68k_ram)/* Main Ram */
107   AM_RANGE(0xc00000, 0xc0001f) AM_READWRITE(genesis_vdp_r, genesis_vdp_w)               /* VDP Access */
108   AM_RANGE(0xe00000, 0xe1ffff) AM_ROMBANK(3)
109   AM_RANGE(0xfe0000, 0xfeffff) AM_RAMBANK(4)
110   AM_RANGE(0xff0000, 0xffffff) AM_RAM AM_BASE(&genesis_68k_ram)                     /* Main Ram */
118111ADDRESS_MAP_END
119112
120static ADDRESS_MAP_START( genesis_z80_readmem, ADDRESS_SPACE_PROGRAM, 8 )
121    AM_RANGE(0x0000, 0x1fff) AM_READ(SMH_BANK1)
122    AM_RANGE(0x2000, 0x3fff) AM_READ(SMH_BANK2) /* mirror */
123   AM_RANGE(0x4000, 0x7fff) AM_READ(genesis_z80_r)
124   AM_RANGE(0x8000, 0xffff) AM_READ(genesis_z80_bank_r)
125ADDRESS_MAP_END
126113
127static ADDRESS_MAP_START( genesis_z80_writemem, ADDRESS_SPACE_PROGRAM, 8 )
128   AM_RANGE(0x0000, 0x1fff) AM_WRITE(SMH_BANK1) AM_BASE(&genesis_z80_ram)
129    AM_RANGE(0x2000, 0x3fff) AM_WRITE(SMH_BANK2) /* mirror */
130   AM_RANGE(0x4000, 0x7fff) AM_WRITE(genesis_z80_w)
114static ADDRESS_MAP_START( genesis_z80_map, ADDRESS_SPACE_PROGRAM, 8 )
115    AM_RANGE(0x0000, 0x1fff) AM_RAMBANK(1) AM_BASE(&genesis_z80_ram)
116    AM_RANGE(0x2000, 0x3fff) AM_RAMBANK(2) /* mirror */
117   AM_RANGE(0x4000, 0x7fff) AM_READWRITE(genesis_z80_r, genesis_z80_w)
118   AM_RANGE(0x8000, 0xffff) AM_READ(genesis_z80_bank_r)
131119 // AM_RANGE(0x8000, 0xffff) AM_WRITE(genesis_z80_bank_w)
132120ADDRESS_MAP_END
133121
r4679r4680
137125   MDRV_CPU_ADD("maincpu", M68000, MASTER_CLOCK / 7)
138126   MDRV_CPU_VBLANK_INT("screen", genesis_vblank_interrupt)
139127
140   MDRV_CPU_ADD("soundcpu", Z80, MASTER_CLOCK / 15)
141   MDRV_CPU_PROGRAM_MAP(genesis_z80_readmem, genesis_z80_writemem)
128   MDRV_CPU_ADD("genesis_snd_z80", Z80, MASTER_CLOCK / 15)
129   MDRV_CPU_PROGRAM_MAP(genesis_z80_map,0)
142130   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold) /* from vdp at scanline 0xe0 */
143131
144132   MDRV_QUANTUM_TIME(HZ(6000))
r4679r4680
173161   /* basic machine hardware */
174162   MDRV_IMPORT_FROM( genesis_base )
175163   MDRV_CPU_MODIFY("maincpu")
176   MDRV_CPU_PROGRAM_MAP(topshoot_readmem,topshoot_writemem)
164   MDRV_CPU_PROGRAM_MAP(topshoot_map,0)
177165
178166   /* sound hardware */
179167   MDRV_SOUND_ADD("sn", SN76496, MASTER_CLOCK/15)
r4679r4680
208196static DRIVER_INIT(genesis)
209197{
210198   /* hack -- fix vdp emulation instead */
211   memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xC00004, 0xC00005, 0, 0, vdp_fake_r);
199   memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xC00004, 0xC00005, 0, 0, vdp_fake_r);
212200
213201   memory_set_bankptr(machine, 3, memory_region(machine, "maincpu") );
214202   memory_set_bankptr(machine, 4, genesis_68k_ram );
src/mame/drivers/circusc.c
r4679r4680
104104
105105static WRITE8_HANDLER( circusc_sh_irqtrigger_w )
106106{
107   cpu_set_input_line_and_vector(space->machine->cpu[1],0,HOLD_LINE,0xff);
107   cputag_set_input_line_and_vector(space->machine, "audiocpu", 0, HOLD_LINE, 0xff);
108108}
109109
110110static WRITE8_HANDLER( circusc_coin_counter_w )
r4679r4680
154154
155155
156156
157static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 )
158   AM_RANGE(0x1000, 0x1000) AM_MIRROR(0x03fc) AM_READ_PORT("SYSTEM")
159   AM_RANGE(0x1001, 0x1001) AM_MIRROR(0x03fc) AM_READ_PORT("P1")
160   AM_RANGE(0x1002, 0x1002) AM_MIRROR(0x03fc) AM_READ_PORT("P2")
161   AM_RANGE(0x1003, 0x1003) AM_MIRROR(0x03fc) AM_READNOP              /* unpopulated DIPSW 3*/
162   AM_RANGE(0x1400, 0x1400) AM_MIRROR(0x03ff) AM_READ_PORT("DSW1")
163   AM_RANGE(0x1800, 0x1800) AM_MIRROR(0x03ff) AM_READ_PORT("DSW2")
164   AM_RANGE(0x2000, 0x2fff) AM_READ(SMH_RAM)
165   AM_RANGE(0x3000, 0x33ff) AM_READ(SMH_RAM) /* colorram */
166   AM_RANGE(0x3400, 0x37ff) AM_READ(SMH_RAM) /* videoram */
167   AM_RANGE(0x3800, 0x38ff) AM_READ(SMH_RAM) /* spriteram2 */
168   AM_RANGE(0x3900, 0x39ff) AM_READ(SMH_RAM) /* spriteram */
169   AM_RANGE(0x3a00, 0x3fff) AM_READ(SMH_RAM)
170   AM_RANGE(0x6000, 0xffff) AM_READ(SMH_ROM)
171ADDRESS_MAP_END
172
173static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 )
157static ADDRESS_MAP_START( circusc_map, ADDRESS_SPACE_PROGRAM, 8 )
174158   AM_RANGE(0x0000, 0x0000) AM_MIRROR(0x03f8) AM_WRITE(circusc_flipscreen_w)      /* FLIP */
175159   AM_RANGE(0x0001, 0x0001) AM_MIRROR(0x03f8) AM_WRITE(interrupt_enable_w)         /* INTST */
176160//  AM_RANGE(0x0002, 0x0002) AM_MIRROR(0x03f8) AM_WRITENOP                          /* MUT - not used /*
r4679r4680
179163   AM_RANGE(0x0400, 0x0400) AM_MIRROR(0x03ff) AM_WRITE(watchdog_reset_w)         /* WDOG */
180164   AM_RANGE(0x0800, 0x0800) AM_MIRROR(0x03ff) AM_WRITE(soundlatch_w)            /* SOUND DATA */
181165   AM_RANGE(0x0c00, 0x0c00) AM_MIRROR(0x03ff) AM_WRITE(circusc_sh_irqtrigger_w)   /* SOUND-ON causes interrupt on audio CPU */
166   AM_RANGE(0x1000, 0x1000) AM_MIRROR(0x03fc) AM_READ_PORT("SYSTEM")
167   AM_RANGE(0x1001, 0x1001) AM_MIRROR(0x03fc) AM_READ_PORT("P1")
168   AM_RANGE(0x1002, 0x1002) AM_MIRROR(0x03fc) AM_READ_PORT("P2")
169   AM_RANGE(0x1003, 0x1003) AM_MIRROR(0x03fc) AM_READNOP              /* unpopulated DIPSW 3*/
170   AM_RANGE(0x1400, 0x1400) AM_MIRROR(0x03ff) AM_READ_PORT("DSW1")
171   AM_RANGE(0x1800, 0x1800) AM_MIRROR(0x03ff) AM_READ_PORT("DSW2")
182172   AM_RANGE(0x1c00, 0x1c00) AM_MIRROR(0x03ff) AM_WRITE(SMH_RAM) AM_BASE(&circusc_scroll) /* VGAP */
183   AM_RANGE(0x2000, 0x2fff) AM_WRITE(SMH_RAM)
184   AM_RANGE(0x3000, 0x33ff) AM_WRITE(circusc_colorram_w) AM_BASE(&circusc_colorram)
185   AM_RANGE(0x3400, 0x37ff) AM_WRITE(circusc_videoram_w) AM_BASE(&circusc_videoram)
186   AM_RANGE(0x3800, 0x38ff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram_2)
187   AM_RANGE(0x3900, 0x39ff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
188   AM_RANGE(0x3a00, 0x3fff) AM_WRITE(SMH_RAM)
189   AM_RANGE(0x6000, 0xffff) AM_WRITE(SMH_ROM)
173   AM_RANGE(0x2000, 0x2fff) AM_RAM
174   AM_RANGE(0x3000, 0x33ff) AM_RAM_WRITE(circusc_colorram_w) AM_BASE(&circusc_colorram) /* colorram */
175   AM_RANGE(0x3400, 0x37ff) AM_RAM_WRITE(circusc_videoram_w) AM_BASE(&circusc_videoram) /* videoram */
176   AM_RANGE(0x3800, 0x38ff) AM_RAM AM_BASE(&spriteram_2) /* spriteram2 */
177   AM_RANGE(0x3900, 0x39ff) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size) /* spriteram */
178   AM_RANGE(0x3a00, 0x3fff) AM_RAM
179   AM_RANGE(0x6000, 0xffff) AM_ROM
190180ADDRESS_MAP_END
191181
192static ADDRESS_MAP_START( sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
193   AM_RANGE(0x0000, 0x3fff) AM_READ(SMH_ROM)
194   AM_RANGE(0x4000, 0x43ff) AM_MIRROR(0x1c00) AM_READ(SMH_RAM)
182static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 )
183   AM_RANGE(0x0000, 0x3fff) AM_ROM
184   AM_RANGE(0x4000, 0x43ff) AM_MIRROR(0x1c00) AM_RAM
195185   AM_RANGE(0x6000, 0x6000) AM_MIRROR(0x1fff) AM_READ(soundlatch_r)      /* CS0 */
196186   AM_RANGE(0x8000, 0x8000) AM_MIRROR(0x1fff) AM_READ(circusc_sh_timer_r)   /* CS1 */
197ADDRESS_MAP_END
198
199static ADDRESS_MAP_START( sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
200   AM_RANGE(0x0000, 0x3fff) AM_WRITE(SMH_ROM)
201   AM_RANGE(0x4000, 0x43ff) AM_MIRROR(0x1c00) AM_WRITE(SMH_RAM)
202187   AM_RANGE(0xa000, 0xa07f) AM_MIRROR(0x1f80) AM_WRITE(circusc_sound_w)   /* CS2 - CS6 */
203188ADDRESS_MAP_END
204189
r4679r4680
359344
360345   /* basic machine hardware */
361346   MDRV_CPU_ADD("maincpu", M6809, 2048000)        /* 2 MHz */
362   MDRV_CPU_PROGRAM_MAP(readmem,writemem)
347   MDRV_CPU_PROGRAM_MAP(circusc_map,0)
363348   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
364349   MDRV_WATCHDOG_VBLANK_INIT(8)
365350
366351   MDRV_CPU_ADD("audiocpu", Z80,14318180/4)     /* Z80 Clock is derived from a 14.31818 MHz crystal */
367   MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem)
352   MDRV_CPU_PROGRAM_MAP(sound_map,0)
368353
369354   MDRV_MACHINE_START(circusc)
370355   MDRV_MACHINE_RESET(circusc)
src/mame/drivers/laserbas.c
r4679r4680
2525
2626static VIDEO_START(laserbas)
2727{
28   vram1=auto_malloc(0x8000);
29   vram2=auto_malloc(0x8000);
28   vram1=auto_alloc_array(machine, UINT8, 0x8000);
29   vram2=auto_alloc_array(machine, UINT8, 0x8000);
3030}
3131
3232static VIDEO_UPDATE(laserbas)
src/mame/drivers/nightgal.c
r4679r4680
3636
3737static VIDEO_START( nightgal )
3838{
39   blit_buffer = auto_malloc(256*256);
39   blit_buffer = auto_alloc_array(machine, UINT8, 256*256);
4040}
4141
4242static VIDEO_UPDATE( nightgal )
r4679r4680
193193            }
194194         }
195195         //printf("%02x %02x %02x %02x %02x %02x %02x\n",true_blit[0],true_blit[1],true_blit[2],true_blit[3],true_blit[4],true_blit[5],true_blit[6]);
196         //cpu_set_input_line(space->machine->cpu[0], INPUT_LINE_NMI, PULSE_LINE );
196         //cputag_set_input_line(space->machine, "maincpu", INPUT_LINE_NMI, PULSE_LINE );
197197      }
198198   }
199199}
r4679r4680
270270
271271static WRITE8_HANDLER( nsc_latch_w )
272272{
273   cpu_set_input_line(space->machine->cpu[1], 0, HOLD_LINE );
273   cputag_set_input_line(space->machine, "sub", 0, HOLD_LINE );
274274}
275275
276276static READ8_HANDLER( nsc_latch_r )
src/mame/drivers/maygayv1.c
r4679r4680
636636
637637   // Active low
638638   if (!(vsync_latch_preset))
639      cpu_set_input_line(space->machine->cpu[0], 3, CLEAR_LINE);
639      cputag_set_input_line(space->machine, "maincpu", 3, CLEAR_LINE);
640640}
641641
642642static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 16 )
r4679r4680
702702            return 0;
703703      }
704704
705      case 3: upd7759_busy_r(0) ? 0 : 0x08;
705      case 3: return upd7759_busy_r(0) ? 0 : 0x08;
706706   }
707707   return 0;
708708}
r4679r4680
895895
896896static void duart_irq_handler(const device_config *device, UINT8 vector)
897897{
898   cpu_set_input_line_and_vector(device->machine->cpu[0], 5, ASSERT_LINE, vector);
899//  cpu_set_input_line(device->machine->cpu[0], 5, state ? ASSERT_LINE : CLEAR_LINE);
898   cputag_set_input_line_and_vector(device->machine, "maincpu", 5, ASSERT_LINE, vector);
899//  cputag_set_input_line(device->machine, "maincpu", 5, state ? ASSERT_LINE : CLEAR_LINE);
900900};
901901
902902static int d68681_val;
r4679r4680
906906   if (channel == 0)
907907   {
908908      d68681_val = data;
909      cpu_set_input_line(device->machine->cpu[1], MCS51_RX_LINE, ASSERT_LINE);  // ?
909      cputag_set_input_line(device->machine, "soundcpu", MCS51_RX_LINE, ASSERT_LINE);  // ?
910910   }
911911
912912};
r4679r4680
962962
963963static MACHINE_START( maygayv1 )
964964{
965   i82716.dram = auto_malloc(0x80000);   // ???
966   i82716.line_buf = auto_malloc(512);
965   i82716.dram = auto_alloc_array(machine, UINT16, 0x80000/2);   // ???
966   i82716.line_buf = auto_alloc_array(machine, UINT8, 512);
967967
968968   state_save_register_global_pointer(machine, i82716.dram, 0x40000);
969969
970970//  duart_68681_init(DUART_CLOCK, duart_irq_handler, duart_tx);
971971
972   i8051_set_serial_tx_callback(machine->cpu[1], data_from_i8031);
973   i8051_set_serial_rx_callback(machine->cpu[1], data_to_i8031);
972   i8051_set_serial_tx_callback(cputag_get_cpu(machine, "soundcpu"), data_from_i8031);
973   i8051_set_serial_rx_callback(cputag_get_cpu(machine, "soundcpu"), data_to_i8031);
974974}
975975
976976static MACHINE_RESET( maygayv1 )
r4679r4680
985985static INTERRUPT_GEN( vsync_interrupt )
986986{
987987   if (vsync_latch_preset)
988      cpu_set_input_line(device->machine->cpu[0], 3, ASSERT_LINE);
988      cputag_set_input_line(device->machine, "maincpu", 3, ASSERT_LINE);
989989}
990990
991991
src/mame/drivers/mikie.c
r4679r4680
5151   if (last == 0 && data == 1)
5252   {
5353      // setting bit 0 low then high triggers IRQ on the sound CPU
54      cpu_set_input_line_and_vector(space->machine->cpu[1], 0, HOLD_LINE, 0xff);
54      cputag_set_input_line_and_vector(space->machine, "audiocpu", 0, HOLD_LINE, 0xff);
5555   }
5656
5757   last = data;
src/mame/drivers/kingpin.c
r4679r4680
127127
128128static void vdp_interrupt (running_machine *machine, int state)
129129{
130   cpu_set_input_line(machine->cpu[0],0, HOLD_LINE);
130   cputag_set_input_line(machine, "maincpu", 0, HOLD_LINE);
131131}
132132
133133static const TMS9928a_interface tms9928a_interface =
src/mame/drivers/midvunit.c
r4679r4680
7474   dcs_reset_w(0);
7575
7676   memcpy(ram_base, memory_region(machine, "user1"), 0x20000*4);
77   device_reset(machine->cpu[0]);
77   device_reset(cputag_get_cpu(machine, "maincpu"));
7878
7979   timer[0] = timer_alloc(machine, NULL, NULL);
8080   timer[1] = timer_alloc(machine, NULL, NULL);
r4679r4680
8787   dcs_reset_w(0);
8888
8989   memcpy(ram_base, memory_region(machine, "user1"), 0x20000*4);
90   device_reset(machine->cpu[0]);
90   device_reset(cputag_get_cpu(machine, "maincpu"));
9191
9292   timer[0] = timer_alloc(machine, NULL, NULL);
9393   timer[1] = timer_alloc(machine, NULL, NULL);
r4679r4680
135135{
136136   if (!(control_data & 0x40))
137137   {
138      cpu_set_input_line(space->machine->cpu[0], 3, CLEAR_LINE);
138      cputag_set_input_line(space->machine, "maincpu", 3, CLEAR_LINE);
139139      return adc_data << adc_shift;
140140   }
141141   else
r4679r4680
146146
147147static TIMER_CALLBACK( adc_ready )
148148{
149   cpu_set_input_line(machine->cpu[0], 3, ASSERT_LINE);
149   cputag_set_input_line(machine, "maincpu", 3, ASSERT_LINE);
150150}
151151
152152
r4679r4680
292292
293293      /* bit 0x200 selects internal clocking, which is 1/2 the main CPU clock rate */
294294      if (data & 0x200)
295         timer_rate = (double)(cpu_get_clock(space->machine->cpu[0]) * 0.5);
295         timer_rate = (double)(cputag_get_clock(space->machine, "maincpu") * 0.5);
296296      else
297297         timer_rate = 10000000.;
298298   }
r4679r4680
13291329ROM_END
13301330
13311331
1332ROM_START( crusnw17 ) /* Version 1.7, Fri Jan 24 1997 - 16:23:59 */
1333   ROM_REGION16_LE( 0x1000000, "dcs", ROMREGION_ERASEFF )   /* sound data */
1334   ROM_LOAD16_BYTE( "cwld.u2",  0x000000, 0x80000, CRC(7a233c89) SHA1(ecfad4bc48a69cd3399e3b3266c81574082e0169) )
1335   ROM_LOAD16_BYTE( "cwld.u3",  0x200000, 0x80000, CRC(be9a5ff0) SHA1(98d69dbfa6aa8462cdd46772e991ee418b79c653) )
1336   ROM_LOAD16_BYTE( "cwld.u4",  0x400000, 0x80000, CRC(69f02d84) SHA1(0fb4ff750de78505f241ae6cd18fccf3ddf4223f) )
1337   ROM_LOAD16_BYTE( "cwld.u5",  0x600000, 0x80000, CRC(9d0b9071) SHA1(05edf9073399a942a9d0b969274a7ebf4ca677da) )
1338   ROM_LOAD16_BYTE( "cwld.u6",  0x800000, 0x80000, CRC(df28f492) SHA1(c61f3870f59458b7bb5efbf93d697e3fa44a7830) )
1339   ROM_LOAD16_BYTE( "cwld.u7",  0xa00000, 0x80000, CRC(0128913e) SHA1(c11bc115877310c17f9b57f72b29d19b0ad71afa) )
1340   ROM_LOAD16_BYTE( "cwld.u8",  0xc00000, 0x80000, CRC(5127c08e) SHA1(4f0eae73817270fa156829100b66f0ff88fa422c) )
1341   ROM_LOAD16_BYTE( "cwld.u9",  0xe00000, 0x80000, CRC(84cdc781) SHA1(62287aa72903698d1890908adde53c39f8bd200c) )
1342
1343   ROM_REGION32_LE( 0x1000000, "user1", 0 )
1344   ROM_LOAD32_BYTE( "crusnw17.u10", 0x0000000, 0x100000, CRC(afca0f15) SHA1(52ed51e31ba7f8ac1a71a7bdb64733b6e95b0669) )
1345   ROM_LOAD32_BYTE( "crusnw17.u11", 0x0000001, 0x100000, CRC(6610af52) SHA1(c6ab7f369bd0b05e0ce28c7829b870f5b6ddf12f) )
1346   ROM_LOAD32_BYTE( "crusnw17.u12", 0x0000002, 0x100000, CRC(ef0107b1) SHA1(350017ab56c220516dda53c8323eaf82d7dee8dd) )
1347   ROM_LOAD32_BYTE( "crusnw17.u13", 0x0000003, 0x100000, CRC(c1d68aa0) SHA1(07d5ec75d921935474a9de738b1b7e9cb0748483) )
1348   ROM_LOAD32_BYTE( "cwld.u14",     0x0400000, 0x100000, CRC(ee815091) SHA1(fb8a99bae07f42966f76a3bb073d7d8280d8efcb) )
1349   ROM_LOAD32_BYTE( "cwld.u15",     0x0400001, 0x100000, CRC(e2da7bf1) SHA1(9d9a80055ee62476f47c95e30ec9a989d5d0e25b) )
1350   ROM_LOAD32_BYTE( "cwld.u16",     0x0400002, 0x100000, CRC(05a7ad2f) SHA1(4bdfde671379ecefa3f8ceb6fc06e8df5d70fc22) )
1351   ROM_LOAD32_BYTE( "cwld.u17",     0x0400003, 0x100000, CRC(d6278c0c) SHA1(3e152d755d69903718a84d4154e442a31026f3d8) )
1352   ROM_LOAD32_BYTE( "cwld.u18",     0x0800000, 0x100000, CRC(e2dc2733) SHA1(c277643548c03d831a3b091f1a311accac9d106b) )
1353   ROM_LOAD32_BYTE( "cwld.u19",     0x0800001, 0x100000, CRC(5223a070) SHA1(90ce48b2308fa9e7cb636c4732b20b8e177aa9b1) )
1354   ROM_LOAD32_BYTE( "cwld.u20",     0x0800002, 0x100000, CRC(db535625) SHA1(599ccd6bcfb155eb68ac131de4af524510ab35b7) )
1355   ROM_LOAD32_BYTE( "cwld.u21",     0x0800003, 0x100000, CRC(92a080e8) SHA1(e5e0faf820b5870a81f121b6ad4c37a9081724e4) )
1356   ROM_LOAD32_BYTE( "cwld.u22",     0x0c00000, 0x100000, CRC(77c56318) SHA1(52344038942c83f3ce82f3169a345ceb86e43dcb) )
1357   ROM_LOAD32_BYTE( "cwld.u23",     0x0c00001, 0x100000, CRC(6b920fc7) SHA1(993da81181f24075e1aead7c4b374f36dd86a9c3) )
1358   ROM_LOAD32_BYTE( "cwld.u24",     0x0c00002, 0x100000, CRC(83485401) SHA1(58407818a82a7a3657530dcda7e373e678b58ab2) )
1359   ROM_LOAD32_BYTE( "cwld.u25",     0x0c00003, 0x100000, CRC(0dad97a9) SHA1(cdb0c02da35243b118e37ff1519aa6ee1a79d06d) )
1360ROM_END
1361
1362
13321363ROM_START( crusnw13 ) /* Version 1.3, Mon Nov 25 1996 - 23:22:45 */
13331364   ROM_REGION16_LE( 0x1000000, "dcs", ROMREGION_ERASEFF )   /* sound data */
13341365   ROM_LOAD16_BYTE( "cwld.u2",  0x000000, 0x80000, CRC(7a233c89) SHA1(ecfad4bc48a69cd3399e3b3266c81574082e0169) )
r4679r4680
15301561   adc_shift = 24;
15311562
15321563   /* speedups */
1533   generic_speedup = memory_install_read32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), speedup, speedup + 1, 0, 0, generic_speedup_r);
1564   generic_speedup = memory_install_read32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), speedup, speedup + 1, 0, 0, generic_speedup_r);
15341565}
15351566static DRIVER_INIT( crusnusa ) { init_crusnusa_common(machine, 0xc93e); }
15361567static DRIVER_INIT( crusnu40 ) { init_crusnusa_common(machine, 0xc957); }
r4679r4680
15431574   adc_shift = 16;
15441575
15451576   /* control register is different */
1546   memory_install_write32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x994000, 0x994000, 0, 0, crusnwld_control_w);
1577   memory_install_write32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x994000, 0x994000, 0, 0, crusnwld_control_w);
15471578
15481579   /* valid values are 450 or 460 */
15491580   midway_serial_pic_init(machine, 450);
1550   memory_install_read32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x991030, 0x991030, 0, 0, offroadc_serial_status_r);
1551   memory_install_read32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x996000, 0x996000, 0, 0, offroadc_serial_data_r);
1552   memory_install_write32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x996000, 0x996000, 0, 0, offroadc_serial_data_w);
1581   memory_install_read32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x991030, 0x991030, 0, 0, offroadc_serial_status_r);
1582   memory_install_read32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x996000, 0x996000, 0, 0, offroadc_serial_data_r);
1583   memory_install_write32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x996000, 0x996000, 0, 0, offroadc_serial_data_w);
15531584
15541585   /* install strange protection device */
1555   memory_install_read32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x9d0000, 0x9d1fff, 0, 0, bit_data_r);
1556   memory_install_write32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x9d0000, 0x9d0000, 0, 0, bit_reset_w);
1586   memory_install_read32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x9d0000, 0x9d1fff, 0, 0, bit_data_r);
1587   memory_install_write32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x9d0000, 0x9d0000, 0, 0, bit_reset_w);
15571588
15581589   /* speedups */
15591590   if (speedup)
1560      generic_speedup = memory_install_read32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), speedup, speedup + 1, 0, 0, generic_speedup_r);
1591      generic_speedup = memory_install_read32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), speedup, speedup + 1, 0, 0, generic_speedup_r);
15611592}
15621593static DRIVER_INIT( crusnwld ) { init_crusnwld_common(machine, 0xd4c0); }
15631594#if 0
r4679r4680
15711602   adc_shift = 16;
15721603
15731604   /* control register is different */
1574   memory_install_write32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x994000, 0x994000, 0, 0, crusnwld_control_w);
1605   memory_install_write32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x994000, 0x994000, 0, 0, crusnwld_control_w);
15751606
15761607   /* valid values are 230 or 234 */
15771608   midway_serial_pic2_init(machine, 230, 94);
1578   memory_install_read32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x991030, 0x991030, 0, 0, offroadc_serial_status_r);
1579   memory_install_readwrite32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x996000, 0x996000, 0, 0, offroadc_serial_data_r, offroadc_serial_data_w);
1609   memory_install_read32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x991030, 0x991030, 0, 0, offroadc_serial_status_r);
1610   memory_install_readwrite32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x996000, 0x996000, 0, 0, offroadc_serial_data_r, offroadc_serial_data_w);
15801611
15811612   /* speedups */
1582   generic_speedup = memory_install_read32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x195aa, 0x195aa, 0, 0, generic_speedup_r);
1613   generic_speedup = memory_install_read32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x195aa, 0x195aa, 0, 0, generic_speedup_r);
15831614}
15841615
15851616
r4679r4680
16041635   midway_serial_pic2_set_default_nvram(default_nvram);
16051636
16061637   /* speedups */
1607   generic_speedup = memory_install_read32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x2f4c, 0x2f4c, 0, 0, generic_speedup_r);
1638   generic_speedup = memory_install_read32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x2f4c, 0x2f4c, 0, 0, generic_speedup_r);
16081639}
16091640
16101641
r4679r4680
16211652GAME( 1996, crusnwld, 0,        midvunit, crusnwld, crusnwld, ROT0, "Midway", "Cruis'n World (rev L2.4)", GAME_SUPPORTS_SAVE )
16221653GAME( 1996, crusnw23, crusnwld, midvunit, crusnwld, crusnwld, ROT0, "Midway", "Cruis'n World (rev L2.3)", GAME_SUPPORTS_SAVE )
16231654GAME( 1996, crusnw20, crusnwld, midvunit, crusnwld, crusnwld, ROT0, "Midway", "Cruis'n World (rev L2.0)", GAME_SUPPORTS_SAVE )
1655GAME( 1996, crusnw17, crusnwld, midvunit, crusnwld, crusnwld, ROT0, "Midway", "Cruis'n World (rev L1.7)", GAME_SUPPORTS_SAVE )
16241656GAME( 1996, crusnw13, crusnwld, midvunit, crusnwld, crusnwld, ROT0, "Midway", "Cruis'n World (rev L1.3)", GAME_SUPPORTS_SAVE )
16251657GAME( 1997, offroadc, 0,        midvunit, offroadc, offroadc, ROT0, "Midway", "Off Road Challenge (v1.40)", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE )
16261658GAME( 1997, offrodc3, offroadc, midvunit, offroadc, offroadc, ROT0, "Midway", "Off Road Challenge (v1.30)", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE )
src/mame/drivers/usgames.c
r4679r4680
2525
2626#include "driver.h"
2727#include "cpu/m6809/m6809.h"
28#include "deprecat.h"
2928#include "video/mc6845.h"
3029#include "sound/ay8910.h"
3130
r4679r4680
8382   AM_RANGE(0x2400, 0x2401) AM_DEVWRITE("ay", ay8910_address_data_w)
8483   AM_RANGE(0x2800, 0x2fff) AM_RAM_WRITE(usgames_charram_w) AM_BASE(&usgames_charram)
8584   AM_RANGE(0x3000, 0x3fff) AM_RAM_WRITE(usgames_videoram_w) AM_BASE(&usgames_videoram)
86   AM_RANGE(0x4000, 0x7fff) AM_READWRITE(SMH_BANK1, SMH_ROM)
85   AM_RANGE(0x4000, 0x7fff) AM_READWRITE(SMH_BANK(1), SMH_ROM)
8786   AM_RANGE(0x8000, 0xffff) AM_ROM
8887ADDRESS_MAP_END
8988
r4679r4680
102101   AM_RANGE(0x2470, 0x2470) AM_READ_PORT("UNK2")
103102   AM_RANGE(0x2800, 0x2fff) AM_RAM_WRITE(usgames_charram_w) AM_BASE(&usgames_charram)
104103   AM_RANGE(0x3000, 0x3fff) AM_RAM_WRITE(usgames_videoram_w) AM_BASE(&usgames_videoram)
105   AM_RANGE(0x4000, 0x7fff) AM_READWRITE(SMH_BANK1, SMH_ROM)
104   AM_RANGE(0x4000, 0x7fff) AM_READWRITE(SMH_BANK(1), SMH_ROM)
106105   AM_RANGE(0x8000, 0xffff) AM_ROM
107106ADDRESS_MAP_END
108107
r4679r4680
241240   /* basic machine hardware */
242241   MDRV_CPU_ADD("maincpu", M6809, 2000000) /* ?? */
243242   MDRV_CPU_PROGRAM_MAP(usgames_map,0)
244   MDRV_CPU_VBLANK_INT_HACK(irq0_line_hold,5) /* ?? */
243   MDRV_CPU_PERIODIC_INT(irq0_line_hold,5*60) /* ?? */
245244
246245   MDRV_NVRAM_HANDLER(generic_0fill)
247246
src/mame/drivers/opwolf.c
r4679r4680
201201***********************************************************/
202202
203203
204static ADDRESS_MAP_START( opwolf_readmem, ADDRESS_SPACE_PROGRAM, 16 )
205   AM_RANGE(0x000000, 0x03ffff) AM_READ(SMH_ROM)
204static ADDRESS_MAP_START( opwolf_map, ADDRESS_SPACE_PROGRAM, 16 )
205   AM_RANGE(0x000000, 0x03ffff) AM_ROM
206206   AM_RANGE(0x0f0000, 0x0f07ff) AM_MIRROR(0xf000) AM_READ(opwolf_cchip_data_r)
207207   AM_RANGE(0x0f0802, 0x0f0803) AM_MIRROR(0xf000) AM_READ(opwolf_cchip_status_r)
208   AM_RANGE(0x100000, 0x107fff) AM_READ(SMH_RAM)   /* RAM */
209   AM_RANGE(0x200000, 0x200fff) AM_READ(SMH_RAM)
210   AM_RANGE(0x380000, 0x380003) AM_READ(opwolf_dsw_r)   /* dip switches */
211   AM_RANGE(0x3a0000, 0x3a0003) AM_READ(opwolf_lightgun_r)   /* lightgun, read at $11e0/6 */
212   AM_RANGE(0x3e0000, 0x3e0001) AM_READNOP
213   AM_RANGE(0x3e0002, 0x3e0003) AM_READ8(taitosound_comm_r, 0xff00)
214   AM_RANGE(0xc00000, 0xc0ffff) AM_READ(PC080SN_word_0_r)
215   AM_RANGE(0xd00000, 0xd03fff) AM_READ(PC090OJ_word_0_r)   /* sprite ram */
216ADDRESS_MAP_END
217
218static ADDRESS_MAP_START( opwolf_writemem, ADDRESS_SPACE_PROGRAM, 16 )
219   AM_RANGE(0x000000, 0x03ffff) AM_WRITE(SMH_ROM)
220208   AM_RANGE(0x0ff000, 0x0ff7ff) AM_WRITE(opwolf_cchip_data_w)
221209   AM_RANGE(0x0ff802, 0x0ff803) AM_WRITE(opwolf_cchip_status_w)
222210   AM_RANGE(0x0ffc00, 0x0ffc01) AM_WRITE(opwolf_cchip_bank_w)
223   AM_RANGE(0x100000, 0x107fff) AM_WRITE(SMH_RAM)
224   AM_RANGE(0x200000, 0x200fff) AM_WRITE(paletteram16_xxxxRRRRGGGGBBBB_word_w) AM_BASE(&paletteram16)
211   AM_RANGE(0x100000, 0x107fff) AM_RAM
212   AM_RANGE(0x200000, 0x200fff) AM_RAM_WRITE(paletteram16_xxxxRRRRGGGGBBBB_word_w) AM_BASE(&paletteram16)
213   AM_RANGE(0x380000, 0x380003) AM_READ(opwolf_dsw_r)         /* dip switches */
225214   AM_RANGE(0x380000, 0x380003) AM_WRITE(rainbow_spritectrl_w)   // usually 0x4, changes when you fire
226   AM_RANGE(0x3c0000, 0x3c0001) AM_WRITENOP   /* watchdog ?? */
227   AM_RANGE(0x3e0000, 0x3e0001) AM_WRITE8(taitosound_port_w, 0xff00)
228   AM_RANGE(0x3e0002, 0x3e0003) AM_WRITE8(taitosound_comm_w, 0xff00)
229   AM_RANGE(0xc00000, 0xc0ffff) AM_WRITE(PC080SN_word_0_w)
230   AM_RANGE(0xc10000, 0xc1ffff) AM_WRITE(SMH_RAM)   /* error in init code (?) */
215   AM_RANGE(0x3a0000, 0x3a0003) AM_READ(opwolf_lightgun_r)      /* lightgun, read at $11e0/6 */
216   AM_RANGE(0x3c0000, 0x3c0001) AM_WRITENOP               /* watchdog ?? */
217   AM_RANGE(0x3e0000, 0x3e0001) AM_READNOP AM_WRITE8(taitosound_port_w, 0xff00)
218   AM_RANGE(0x3e0002, 0x3e0003) AM_READWRITE8(taitosound_comm_r,taitosound_comm_w, 0xff00)
219   AM_RANGE(0xc00000, 0xc0ffff) AM_READWRITE(PC080SN_word_0_r,PC080SN_word_0_w)
220   AM_RANGE(0xc10000, 0xc1ffff) AM_WRITEONLY               /* error in init code (?) */
231221   AM_RANGE(0xc20000, 0xc20003) AM_WRITE(PC080SN_yscroll_word_0_w)
232222   AM_RANGE(0xc40000, 0xc40003) AM_WRITE(PC080SN_xscroll_word_0_w)
233223   AM_RANGE(0xc50000, 0xc50003) AM_WRITE(PC080SN_ctrl_word_0_w)
234   AM_RANGE(0xd00000, 0xd03fff) AM_WRITE(PC090OJ_word_0_w)   /* sprite ram */
224   AM_RANGE(0xd00000, 0xd03fff) AM_READWRITE(PC090OJ_word_0_r,PC090OJ_word_0_w)   /* sprite ram */
235225ADDRESS_MAP_END
236226
237227
238static ADDRESS_MAP_START( opwolfb_readmem, ADDRESS_SPACE_PROGRAM, 16 )
239   AM_RANGE(0x000000, 0x03ffff) AM_READ(SMH_ROM)
240   AM_RANGE(0x0f0008, 0x0f000b) AM_READ(opwolf_in_r)   /* coins and buttons */
241   AM_RANGE(0x0ff000, 0x0fffff) AM_READ(cchip_r)
242   AM_RANGE(0x100000, 0x107fff) AM_READ(SMH_RAM)   /* RAM */
243   AM_RANGE(0x200000, 0x200fff) AM_READ(SMH_RAM)
244   AM_RANGE(0x380000, 0x380003) AM_READ(opwolf_dsw_r)   /* dip switches */
245   AM_RANGE(0x3a0000, 0x3a0003) AM_READ(opwolf_lightgun_r)   /* lightgun, read at $11e0/6 */
246   AM_RANGE(0x3e0000, 0x3e0001) AM_READNOP
247   AM_RANGE(0x3e0002, 0x3e0003) AM_READ8(taitosound_comm_r, 0xff00)
248   AM_RANGE(0xc00000, 0xc0ffff) AM_READ(PC080SN_word_0_r)
249   AM_RANGE(0xd00000, 0xd03fff) AM_READ(PC090OJ_word_0_r)   /* sprite ram */
250ADDRESS_MAP_END
251
252static ADDRESS_MAP_START( opwolfb_writemem, ADDRESS_SPACE_PROGRAM, 16 )
253   AM_RANGE(0x000000, 0x03ffff) AM_WRITE(SMH_ROM)
254   AM_RANGE(0x0ff000, 0x0fffff) AM_WRITE(cchip_w)
255   AM_RANGE(0x100000, 0x107fff) AM_WRITE(SMH_RAM)
256   AM_RANGE(0x200000, 0x200fff) AM_WRITE(paletteram16_xxxxRRRRGGGGBBBB_word_w) AM_BASE(&paletteram16)
228static ADDRESS_MAP_START( opwolfb_map, ADDRESS_SPACE_PROGRAM, 16 )
229   AM_RANGE(0x000000, 0x03ffff) AM_ROM
230   AM_RANGE(0x0f0008, 0x0f000b) AM_READ(opwolf_in_r)         /* coins and buttons */
231   AM_RANGE(0x0ff000, 0x0fffff) AM_READWRITE(cchip_r,cchip_w)
232   AM_RANGE(0x100000, 0x107fff) AM_RAM
233   AM_RANGE(0x200000, 0x200fff) AM_RAM_WRITE(paletteram16_xxxxRRRRGGGGBBBB_word_w) AM_BASE(&paletteram16)
234   AM_RANGE(0x380000, 0x380003) AM_READ(opwolf_dsw_r)         /* dip switches */
257235   AM_RANGE(0x380000, 0x380003) AM_WRITE(rainbow_spritectrl_w)   // usually 0x4, changes when you fire
258   AM_RANGE(0x3c0000, 0x3c0001) AM_WRITENOP   /* watchdog ?? */
259   AM_RANGE(0x3e0000, 0x3e0001) AM_WRITE8(taitosound_port_w, 0xff00)
260   AM_RANGE(0x3e0002, 0x3e0003) AM_WRITE8(taitosound_comm_w, 0xff00)
261   AM_RANGE(0xc00000, 0xc0ffff) AM_WRITE(PC080SN_word_0_w)
262   AM_RANGE(0xc10000, 0xc1ffff) AM_WRITE(SMH_RAM)   /* error in init code (?) */
236   AM_RANGE(0x3a0000, 0x3a0003) AM_READ(opwolf_lightgun_r)      /* lightgun, read at $11e0/6 */
237   AM_RANGE(0x3c0000, 0x3c0001) AM_WRITENOP               /* watchdog ?? */
238   AM_RANGE(0x3e0000, 0x3e0001) AM_READNOP AM_WRITE8(taitosound_port_w, 0xff00)
239   AM_RANGE(0x3e0002, 0x3e0003) AM_READWRITE8(taitosound_comm_r,taitosound_comm_w, 0xff00)
240   AM_RANGE(0xc00000, 0xc0ffff) AM_READWRITE(PC080SN_word_0_r,PC080SN_word_0_w)
241   AM_RANGE(0xc10000, 0xc1ffff) AM_WRITEONLY               /* error in init code (?) */
263242   AM_RANGE(0xc20000, 0xc20003) AM_WRITE(PC080SN_yscroll_word_0_w)
264243   AM_RANGE(0xc40000, 0xc40003) AM_WRITE(PC080SN_xscroll_word_0_w)
265244   AM_RANGE(0xc50000, 0xc50003) AM_WRITE(PC080SN_ctrl_word_0_w)
266   AM_RANGE(0xd00000, 0xd03fff) AM_WRITE(PC090OJ_word_0_w)   /* sprite ram */
245   AM_RANGE(0xd00000, 0xd03fff) AM_READWRITE(PC090OJ_word_0_r,PC090OJ_word_0_w)   /* sprite ram */
267246ADDRESS_MAP_END
268247
248
269249/***************************************************************************
270250    This extra Z80 substitutes for the c-chip in the bootleg
271251 */
272252
273static ADDRESS_MAP_START( sub_z80_readmem, ADDRESS_SPACE_PROGRAM, 8 )
274   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
253static ADDRESS_MAP_START( opwolfb_sub_z80_map, ADDRESS_SPACE_PROGRAM, 8 )
254   AM_RANGE(0x0000, 0x7fff) AM_ROM
275255   AM_RANGE(0x8800, 0x8800) AM_READ(z80_input1_r)   /* read at PC=$637: poked to $c004 */
256   AM_RANGE(0x9000, 0x9000) AM_WRITENOP         /* unknown write, 0 then 1 each interrupt */
276257   AM_RANGE(0x9800, 0x9800) AM_READ(z80_input2_r)   /* read at PC=$631: poked to $c005 */
277   AM_RANGE(0xc000, 0xc7ff) AM_READ(SMH_RAM)
278ADDRESS_MAP_END
279
280static ADDRESS_MAP_START( sub_z80_writemem, ADDRESS_SPACE_PROGRAM, 8 )
281   AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM)
282   AM_RANGE(0x9000, 0x9000) AM_WRITENOP   /* unknown write, 0 then 1 each interrupt */
283258   AM_RANGE(0xa000, 0xa000) AM_WRITENOP   /* IRQ acknowledge (unimplemented) */
284   AM_RANGE(0xc000, 0xc7ff) AM_WRITE(SMH_RAM) AM_BASE(&cchip_ram)
259   AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_BASE(&cchip_ram)
285260ADDRESS_MAP_END
286261
262
287263/***************************************************************************/
288264
289static ADDRESS_MAP_START( z80_readmem, ADDRESS_SPACE_PROGRAM, 8 )
290   AM_RANGE(0x0000, 0x3fff) AM_READ(SMH_ROM)
291   AM_RANGE(0x4000, 0x7fff) AM_READ(SMH_BANK10)
292   AM_RANGE(0x8000, 0x8fff) AM_READ(SMH_RAM)
293   AM_RANGE(0x9000, 0x9001) AM_DEVREAD("ym", ym2151_r)
294   AM_RANGE(0x9002, 0x9100) AM_READ(SMH_RAM)
295   AM_RANGE(0xa001, 0xa001) AM_READ(taitosound_slave_comm_r)
296ADDRESS_MAP_END
297265
298
299266//static UINT8 adpcm_d[0x08];
300267//0 - start ROM offset LSB
301268//1 - start ROM offset MSB
r4679r4680
398365//  logerror("CPU #1         e00%i-data=%2x   pc=%4x\n",offset,data,cpu_get_pc(space->cpu) );
399366}
400367
401
402static ADDRESS_MAP_START( z80_writemem, ADDRESS_SPACE_PROGRAM, 8 )
403   AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM)
404   AM_RANGE(0x8000, 0x8fff) AM_WRITE(SMH_RAM)
405   AM_RANGE(0x9000, 0x9001) AM_DEVWRITE("ym", ym2151_w)
368static ADDRESS_MAP_START( opwolf_sound_z80_map, ADDRESS_SPACE_PROGRAM, 8 )
369   AM_RANGE(0x0000, 0x3fff) AM_ROM
370   AM_RANGE(0x4000, 0x7fff) AM_ROMBANK(10)
371   AM_RANGE(0x8000, 0x8fff) AM_RAM
372   AM_RANGE(0x9000, 0x9001) AM_DEVREADWRITE("ym", ym2151_r,ym2151_w)
373   AM_RANGE(0x9002, 0x9100) AM_READNOP
406374   AM_RANGE(0xa000, 0xa000) AM_WRITE(taitosound_slave_port_w)
407   AM_RANGE(0xa001, 0xa001) AM_WRITE(taitosound_slave_comm_w)
375   AM_RANGE(0xa001, 0xa001) AM_READWRITE(taitosound_slave_comm_r,taitosound_slave_comm_w)
408376   AM_RANGE(0xb000, 0xb006) AM_DEVWRITE("msm1", opwolf_adpcm_b_w)
409377   AM_RANGE(0xc000, 0xc006) AM_DEVWRITE("msm2", opwolf_adpcm_c_w)
410378   AM_RANGE(0xd000, 0xd000) AM_WRITE(opwolf_adpcm_d_w)
411379   AM_RANGE(0xe000, 0xe000) AM_WRITE(opwolf_adpcm_e_w)
412380ADDRESS_MAP_END
413381
414
415382/***********************************************************
416383             INPUT PORTS, DIPs
417384***********************************************************/
r4679r4680
552519
553520static void irq_handler(const device_config *device, int irq)
554521{
555   cpu_set_input_line(device->machine->cpu[1],0,irq ? ASSERT_LINE : CLEAR_LINE);
522   cputag_set_input_line(device->machine, "audiocpu", 0, irq ? ASSERT_LINE : CLEAR_LINE);
556523}
557524
558525
r4679r4680
579546
580547   /* basic machine hardware */
581548   MDRV_CPU_ADD("maincpu", M68000, CPU_CLOCK )   /* 8 MHz */
582   MDRV_CPU_PROGRAM_MAP(opwolf_readmem,opwolf_writemem)
549   MDRV_CPU_PROGRAM_MAP(opwolf_map,0)
583550   MDRV_CPU_VBLANK_INT("screen", irq5_line_hold)
584551
585552   MDRV_CPU_ADD("audiocpu", Z80, SOUND_CPU_CLOCK )   /* 4 MHz */
586   MDRV_CPU_PROGRAM_MAP(z80_readmem,z80_writemem)
553   MDRV_CPU_PROGRAM_MAP(opwolf_sound_z80_map,0)
587554
588555   MDRV_QUANTUM_TIME(HZ(600))   /* 10 CPU slices per frame - enough for the sound CPU to read all commands */
589556
r4679r4680
628595
629596   /* basic machine hardware */
630597   MDRV_CPU_ADD("maincpu", M68000, CPU_CLOCK )   /* 8 MHz ??? */
631   MDRV_CPU_PROGRAM_MAP(opwolfb_readmem,opwolfb_writemem)
598   MDRV_CPU_PROGRAM_MAP(opwolfb_map,0)
632599   MDRV_CPU_VBLANK_INT("screen", irq5_line_hold)
633600
634601   MDRV_CPU_ADD("audiocpu", Z80, SOUND_CPU_CLOCK )   /* 4 MHz ??? */
635   MDRV_CPU_PROGRAM_MAP(z80_readmem,z80_writemem)
602   MDRV_CPU_PROGRAM_MAP(opwolf_sound_z80_map,0)
636603
637604   MDRV_CPU_ADD("sub", Z80, SOUND_CPU_CLOCK )   /* 4 MHz ??? */
638   MDRV_CPU_PROGRAM_MAP(sub_z80_readmem,sub_z80_writemem)
605   MDRV_CPU_PROGRAM_MAP(opwolfb_sub_z80_map,0)
639606   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
640607
641608   MDRV_QUANTUM_TIME(HZ(600))   /* 10 CPU slices per frame - enough for the sound CPU to read all commands */
src/mame/drivers/surpratk.c
r4679r4680
165165
166166static void irqhandler(const device_config *device, int linestate)
167167{
168   cpu_set_input_line(device->machine->cpu[0],KONAMI_FIRQ_LINE,linestate);
168   cputag_set_input_line(device->machine, "maincpu", KONAMI_FIRQ_LINE, linestate);
169169}
170170
171171static const ym2151_interface ym2151_config =
r4679r4680
280280
281281static MACHINE_RESET( surpratk )
282282{
283   konami_configure_set_lines(machine->cpu[0], surpratk_banking);
283   konami_configure_set_lines(cputag_get_cpu(machine, "maincpu"), surpratk_banking);
284284
285285   paletteram = &memory_region(machine, "maincpu")[0x48000];
286286}
src/mame/drivers/suna16.c
r4679r4680
358358
359359static MACHINE_RESET(uballoon)
360360{
361   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
361   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
362362   uballoon_pcm_1_bankswitch_w(space, 0, 0);
363363}
364364
r4679r4680
922922
923923static void bestbest_ym3526_irqhandler(const device_config *device, int state)
924924{
925   cpu_set_input_line(device->machine->cpu[1], INPUT_LINE_IRQ0, state);
925   cputag_set_input_line(device->machine, "audiocpu", INPUT_LINE_IRQ0, state);
926926}
927927
928928static const ym3526_interface bestbest_ym3526_interface =
src/mame/drivers/zaccaria.c
r4679r4680
103103}
104104
105105
106static WRITE_LINE_DEVICE_HANDLER( zaccaria_irq0a ) { cpu_set_input_line(device->machine->cpu[1], INPUT_LINE_NMI, state ? ASSERT_LINE : CLEAR_LINE); }
107static WRITE_LINE_DEVICE_HANDLER( zaccaria_irq0b ) { cpu_set_input_line(device->machine->cpu[1],0,state ? ASSERT_LINE : CLEAR_LINE); }
106static WRITE_LINE_DEVICE_HANDLER( zaccaria_irq0a ) { cputag_set_input_line(device->machine, "audiocpu", INPUT_LINE_NMI, state ? ASSERT_LINE : CLEAR_LINE); }
107static WRITE_LINE_DEVICE_HANDLER( zaccaria_irq0b ) { cputag_set_input_line(device->machine, "audiocpu", 0, state ? ASSERT_LINE : CLEAR_LINE); }
108108
109109static int active_8910, port0a, acs;
110110
r4679r4680
259259
260260static WRITE8_HANDLER( sound_command_w )
261261{
262   soundlatch_w(space,0,data);
263   cpu_set_input_line(space->machine->cpu[2],0,(data & 0x80) ? CLEAR_LINE : ASSERT_LINE);
262   soundlatch_w(space, 0, data);
263   cputag_set_input_line(space->machine, "audio2", 0, (data & 0x80) ? CLEAR_LINE : ASSERT_LINE);
264264}
265265
266266static WRITE8_HANDLER( sound1_command_w )
267267{
268268   const device_config *pia0 = devtag_get_device(space->machine, "pia0");
269   pia6821_ca1_w(pia0,0,data & 0x80);
270   soundlatch2_w(space,0,data);
269   pia6821_ca1_w(pia0, 0, data & 0x80);
270   soundlatch2_w(space, 0, data);
271271}
272272
273273static WRITE8_DEVICE_HANDLER( mc1408_data_w )
274274{
275   dac_data_w(device,data);
275   dac_data_w(device, data);
276276}
277277
278278
src/mame/drivers/shadfrce.c
r4679r4680
221221{
222222   if (ACCESSING_BITS_8_15)
223223   {
224      soundlatch_w(space,1,data >> 8);
225      cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_NMI, PULSE_LINE );
224      soundlatch_w(space, 1, data >> 8);
225      cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE );
226226   }
227227   else
228228   {
r4679r4680
230230      double brt = (data & 0xff) / 255.0;
231231
232232      for (i = 0; i < 0x4000; i++)
233         palette_set_pen_contrast(space->machine,i,brt);
233         palette_set_pen_contrast(space->machine, i, brt);
234234   }
235235}
236236
237237static WRITE16_HANDLER( shadfrce_irq_ack_w )
238238{
239   cpu_set_input_line(space->machine->cpu[0], offset ^ 3, CLEAR_LINE);
239   cputag_set_input_line(space->machine, "maincpu", offset ^ 3, CLEAR_LINE);
240240}
241241
242242static WRITE16_HANDLER( shadfrce_irq_w )
r4679r4680
289289         raster_scanline = (raster_scanline + 1) % 240;
290290         if (raster_scanline > 0)
291291            video_screen_update_partial(timer->machine->primary_screen, raster_scanline - 1);
292         cpu_set_input_line(timer->machine->cpu[0], 1, ASSERT_LINE);
292         cputag_set_input_line(timer->machine, "maincpu", 1, ASSERT_LINE);
293293      }
294294   }
295295
r4679r4680
300300      {
301301         if (scanline > 0)
302302            video_screen_update_partial(timer->machine->primary_screen, scanline - 1);
303         cpu_set_input_line(timer->machine->cpu[0], 2, ASSERT_LINE);
303         cputag_set_input_line(timer->machine, "maincpu", 2, ASSERT_LINE);
304304      }
305305   }
306306
r4679r4680
310310      if (scanline == 248)
311311      {
312312         video_screen_update_partial(timer->machine->primary_screen, scanline - 1);
313         cpu_set_input_line(timer->machine->cpu[0], 3, ASSERT_LINE);
313         cputag_set_input_line(timer->machine, "maincpu", 3, ASSERT_LINE);
314314      }
315315   }
316316}
r4679r4680
503503
504504static void irq_handler(const device_config *device, int irq)
505505{
506   cpu_set_input_line(device->machine->cpu[1], 0, irq ? ASSERT_LINE : CLEAR_LINE );
506   cputag_set_input_line(device->machine, "audiocpu", 0, irq ? ASSERT_LINE : CLEAR_LINE );
507507}
508508
509509static const ym2151_interface ym2151_config =
src/mame/drivers/yumefuda.c
r4679r4680
224224
225225static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 8 )
226226   AM_RANGE(0x0000, 0x7fff) AM_ROM
227   AM_RANGE(0x8000, 0x9fff) AM_READWRITE(SMH_BANK1, SMH_ROM)
227   AM_RANGE(0x8000, 0x9fff) AM_READWRITE(SMH_BANK(1), SMH_ROM)
228228   AM_RANGE(0xa7fc, 0xa7fc) AM_WRITE(prot_lock_w)
229229   AM_RANGE(0xa7ff, 0xa7ff) AM_WRITE(eeprom_w)
230230   AM_RANGE(0xaf80, 0xafff) AM_READWRITE(custom_ram_r, custom_ram_w) AM_BASE(&cus_ram)
src/mame/drivers/jongkyo.c
r4679r4680
195195static ADDRESS_MAP_START( jongkyo_memmap, ADDRESS_SPACE_PROGRAM, 8 )
196196   AM_RANGE(0x0000, 0x3fff) AM_READ(SMH_ROM) AM_WRITE(videoram2_w) // wrong, this doesn't seem to be video ram on write..
197197   AM_RANGE(0x4000, 0x6bff) AM_READ(SMH_ROM) // fixed rom
198   AM_RANGE(0x6c00, 0x6fff) AM_READ(SMH_BANK1)   // banked (8 banks)
198   AM_RANGE(0x6c00, 0x6fff) AM_READ(SMH_BANK(1))   // banked (8 banks)
199199   AM_RANGE(0x7000, 0x77ff) AM_RAM
200200   AM_RANGE(0x8000, 0xffff) AM_RAM AM_BASE(&videoram)
201201ADDRESS_MAP_END
r4679r4680
476476   /* then do the standard Sega decryption */
477477   jongkyo_decode(machine, "maincpu");
478478
479   videoram2 = auto_malloc(0x4000);
479   videoram2 = auto_alloc_array(machine, UINT8, 0x4000);
480480   state_save_register_global_pointer(machine, videoram2, 0x4000);
481481
482482}
src/mame/drivers/firebeat.c
r4679r4680
140140
141141static VIDEO_START(firebeat)
142142{
143   gcu[0].vram = auto_malloc(0x2000000);
144   gcu[1].vram = auto_malloc(0x2000000);
143   gcu[0].vram = auto_alloc_array(machine, UINT32, 0x2000000/4);
144   gcu[1].vram = auto_alloc_array(machine, UINT32, 0x2000000/4);
145145   memset(gcu[0].vram, 0, 0x2000000);
146146   memset(gcu[1].vram, 0, 0x2000000);
147147}
r4679r4680
589589         /* IRQ clear/enable; ppd writes bit off then on in response to interrupt */
590590         /* it enables bits 0x41, but 0x01 seems to be the one it cares about */
591591         if (ACCESSING_BITS_16_31 && (data & 0x0001) == 0)
592            cpu_set_input_line(machine->cpu[0], INPUT_LINE_IRQ0, CLEAR_LINE);
592            cputag_set_input_line(machine, "maincpu", INPUT_LINE_IRQ0, CLEAR_LINE);
593593         break;
594594
595595      case 0x30:
r4679r4680
857857
858858static void atapi_cause_irq(running_machine *machine)
859859{
860   cpu_set_input_line(machine->cpu[0], INPUT_LINE_IRQ4, ASSERT_LINE);
860   cputag_set_input_line(machine, "maincpu", INPUT_LINE_IRQ4, ASSERT_LINE);
861861}
862862
863863static void atapi_clear_irq(running_machine *machine)
864864{
865   cpu_set_input_line(machine->cpu[0], INPUT_LINE_IRQ4, CLEAR_LINE);
865   cputag_set_input_line(machine, "maincpu", INPUT_LINE_IRQ4, CLEAR_LINE);
866866}
867867
868868static void atapi_exit(running_machine* machine)
r4679r4680
12771277static void comm_uart_irq_callback(running_machine *machine, int channel, int value)
12781278{
12791279   // TODO
1280   //cpu_set_input_line(machine->cpu[0], INPUT_LINE_IRQ2, ASSERT_LINE);
1280   //cputag_set_input_line(machine, "maincpu", INPUT_LINE_IRQ2, ASSERT_LINE);
12811281}
12821282
12831283/*****************************************************************************/
r4679r4680
14011401      if ((extend_board_irq_enable & 0x02) == 0 && value != CLEAR_LINE)
14021402      {
14031403         extend_board_irq_active |= 0x02;
1404         cpu_set_input_line(machine->cpu[0], INPUT_LINE_IRQ1, ASSERT_LINE);
1404         cputag_set_input_line(machine, "maincpu", INPUT_LINE_IRQ1, ASSERT_LINE);
14051405      }
14061406      else
1407         cpu_set_input_line(machine->cpu[0], INPUT_LINE_IRQ1, CLEAR_LINE);
1407         cputag_set_input_line(machine, "maincpu", INPUT_LINE_IRQ1, CLEAR_LINE);
14081408   }
14091409   else
14101410   {
14111411      if ((extend_board_irq_enable & 0x01) == 0 && value != CLEAR_LINE)
14121412      {
14131413         extend_board_irq_active |= 0x01;
1414         cpu_set_input_line(machine->cpu[0], INPUT_LINE_IRQ1, ASSERT_LINE);
1414         cputag_set_input_line(machine, "maincpu", INPUT_LINE_IRQ1, ASSERT_LINE);
14151415      }
14161416      else
1417         cpu_set_input_line(machine->cpu[0], INPUT_LINE_IRQ1, CLEAR_LINE);
1417         cputag_set_input_line(machine, "maincpu", INPUT_LINE_IRQ1, CLEAR_LINE);
14181418   }
14191419}
14201420
r4679r4680
17331733static MACHINE_START( firebeat )
17341734{
17351735   /* set conservative DRC options */
1736   ppcdrc_set_options(machine->cpu[0], PPCDRC_COMPATIBLE_OPTIONS);
1736   ppcdrc_set_options(cputag_get_cpu(machine, "maincpu"), PPCDRC_COMPATIBLE_OPTIONS);
17371737
17381738   /* configure fast RAM regions for DRC */
1739   ppcdrc_add_fastram(machine->cpu[0], 0x00000000, 0x01ffffff, FALSE, work_ram);
1739   ppcdrc_add_fastram(cputag_get_cpu(machine, "maincpu"), 0x00000000, 0x01ffffff, FALSE, work_ram);
17401740}
17411741
17421742static ADDRESS_MAP_START( firebeat_map, ADDRESS_SPACE_PROGRAM, 32 )
r4679r4680
22162216{
22172217   int r = ibutton_w(data);
22182218   if (r >= 0)
2219      ppc4xx_spu_receive_byte(device->machine->cpu[0], r);
2219      ppc4xx_spu_receive_byte(cputag_get_cpu(device->machine, "maincpu"), r);
22202220}
22212221
22222222/*****************************************************************************/
r4679r4680
22272227   if(!out2) out1 = lamp_output2_w;
22282228   if(!out3) out1 = lamp_output3_w;
22292229
2230   memory_install_write32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x7d000804, 0x7d000807, 0, 0, out1);
2231   memory_install_write32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x7d000320, 0x7d000323, 0, 0, out2);
2232   memory_install_write32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x7d000324, 0x7d000327, 0, 0, out3);
2230   memory_install_write32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x7d000804, 0x7d000807, 0, 0, out1);
2231   memory_install_write32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x7d000320, 0x7d000323, 0, 0, out2);
2232   memory_install_write32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x7d000324, 0x7d000327, 0, 0, out3);
22332233}
22342234
22352235static void init_firebeat(running_machine *machine)
r4679r4680
22512251
22522252   cur_cab_data = cab_data;
22532253
2254   ppc4xx_spu_set_tx_handler(machine->cpu[0], security_w);
2254   ppc4xx_spu_set_tx_handler(cputag_get_cpu(machine, "maincpu"), security_w);
22552255
22562256   set_ibutton(rom);
22572257
src/mame/drivers/tagteam.c
r4679r4680
4646
4747static WRITE8_HANDLER( sound_command_w )
4848{
49   soundlatch_w(space,offset,data);
50   cpu_set_input_line(space->machine->cpu[1],M6502_IRQ_LINE,HOLD_LINE);
49   soundlatch_w(space, offset, data);
50   cputag_set_input_line(space->machine, "audiocpu", M6502_IRQ_LINE, HOLD_LINE);
5151}
5252
5353
src/mame/drivers/eolith.c
r4679r4680
10331033
10341034static DRIVER_INIT( hidctch3 )
10351035{
1036   memory_install_write32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xfc200000, 0xfc200003, 0, 0, SMH_NOP); // this generates pens vibration
1036   memory_install_write32_handler(cputag_get_address_space(machine, "cpu", ADDRESS_SPACE_PROGRAM), 0xfc200000, 0xfc200003, 0, 0, (write32_space_func)SMH_NOP); // this generates pens vibration
10371037
10381038   // It is not clear why the first reads are needed too
10391039
1040   memory_install_read32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xfce00000, 0xfce00003, 0, 0, hidctch3_pen1_r);
1041   memory_install_read32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xfce80000, 0xfce80003, 0, 0, hidctch3_pen1_r);
1040   memory_install_read32_handler(cputag_get_address_space(machine, "cpu", ADDRESS_SPACE_PROGRAM), 0xfce00000, 0xfce00003, 0, 0, hidctch3_pen1_r);
1041   memory_install_read32_handler(cputag_get_address_space(machine, "cpu", ADDRESS_SPACE_PROGRAM), 0xfce80000, 0xfce80003, 0, 0, hidctch3_pen1_r);
10421042
1043   memory_install_read32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xfcf00000, 0xfcf00003, 0, 0, hidctch3_pen2_r);
1044   memory_install_read32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xfcf80000, 0xfcf80003, 0, 0, hidctch3_pen2_r);
1043   memory_install_read32_handler(cputag_get_address_space(machine, "cpu", ADDRESS_SPACE_PROGRAM), 0xfcf00000, 0xfcf00003, 0, 0, hidctch3_pen2_r);
1044   memory_install_read32_handler(cputag_get_address_space(machine, "cpu", ADDRESS_SPACE_PROGRAM), 0xfcf80000, 0xfcf80003, 0, 0, hidctch3_pen2_r);
10451045
10461046   init_eolith_speedup(machine);
10471047}
src/mame/drivers/bigevglf.c
r4679r4680
117117
118118static TIMER_CALLBACK( nmi_callback )
119119{
120   if (sound_nmi_enable) cpu_set_input_line(machine->cpu[2],INPUT_LINE_NMI,PULSE_LINE);
120   if (sound_nmi_enable) cputag_set_input_line(machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
121121   else pending_nmi = 1;
122122   sound_state &= ~1;
123123}
124124static WRITE8_HANDLER( sound_command_w )   /* write to port 20 clears bit 0 in status */
125125{
126126   for_sound = data;
127   timer_call_after_resynch(space->machine, NULL, data,nmi_callback);
127   timer_call_after_resynch(space->machine, NULL, data, nmi_callback);
128128}
129129
130130static READ8_HANDLER( sound_command_r )   /* read from D800 sets bit 0 in status */
r4679r4680
143143   sound_nmi_enable = 1;
144144   if (pending_nmi)
145145   {
146      cpu_set_input_line(space->machine->cpu[2],INPUT_LINE_NMI,PULSE_LINE);
146      cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
147147      pending_nmi = 0;
148148   }
149149}
src/mame/drivers/namcos23.c
r4679r4680
3838
3939    - Serial number data is at offset 0x201 in the BIOS.  Until the games are running
4040      and displaying it I'm not going to meddle with it though.
41
4142*/
4243
4344/*
r4679r4680
5253*Final Furlong    Namco, 1997    System 22.5/Gorgon
5354Gunmen Wars       Namco, 1998    System 23 [not dumped, but have]
5455Motocross Go!     Namco, 1997    System 23
55*Panic Park       Namco, 1998    System 23
56Panic Park        Namco, 1998    System 23
5657Rapid River       Namco, 1997    System 22.5/Gorgon
5758Time Crisis II    Namco, 1997    System 23
5859*Underground King Namco, 1998    System 23
r4679r4680
10161017      if (data)
10171018      {
10181019         logerror("S23: booting H8/3002\n");
1019         cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_RESET, CLEAR_LINE);
1020         cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_RESET, CLEAR_LINE);
10201021      }
10211022      else
10221023      {
10231024         logerror("S23: stopping H8/3002\n");
1024         cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_RESET, ASSERT_LINE);
1025         cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_RESET, ASSERT_LINE);
10251026      }
10261027   }
10271028}
r4679r4680
10771078   return shared16[BYTE_XOR_BE(offset)];
10781079}
10791080
1080#if 1
10811081static WRITE16_HANDLER(cause_sync_w)
10821082{
10831083   UINT16 *shared16 = (UINT16 *)namcos23_shared_ram;
10841084
10851085   shared16[BYTE_XOR_BE(0x4052/2)] = 0;
10861086}
1087#endif
10881087
10891088/* H8/3002 MCU stuff */
10901089static ADDRESS_MAP_START( s23h8rwmap, ADDRESS_SPACE_PROGRAM, 16 )
r4679r4680
12141213   s23_setstate ^= 1;
12151214}
12161215
1216static UINT8 maintoio[16], mi_rd, mi_wr;
1217static UINT8 iotomain[16], im_rd, im_wr;
1218
1219static READ8_HANDLER( s23_mcu_iob_r )
1220{
1221   UINT8 ret = iotomain[im_rd];
1222
1223   im_rd++;
1224   im_rd &= 0xf;
1225
1226   if (im_rd == im_wr)
1227   {
1228      cputag_set_input_line(space->machine, "audiocpu", H8_SCI_0_RX, CLEAR_LINE);
1229   }
1230
1231   return ret;
1232}
1233
1234static WRITE8_HANDLER( s23_mcu_iob_w )
1235{
1236   maintoio[mi_wr++] = data;
1237   mi_wr &= 0xf;
1238
1239   cputag_set_input_line(space->machine, "ioboard", H8_SCI_0_RX, ASSERT_LINE);
1240}
1241
12171242static INPUT_PORTS_START( ss23 )
12181243   PORT_START("H8PORT")
12191244INPUT_PORTS_END
r4679r4680
12231248   AM_RANGE(H8_PORT_8, H8_PORT_8) AM_READ( s23_mcu_p8_r ) AM_WRITENOP
12241249   AM_RANGE(H8_PORT_A, H8_PORT_A) AM_READWRITE( s23_mcu_pa_r, s23_mcu_pa_w )
12251250   AM_RANGE(H8_PORT_B, H8_PORT_B) AM_READWRITE( s23_mcu_portB_r, s23_mcu_portB_w )
1226   AM_RANGE(H8_SERIAL_1, H8_SERIAL_1) AM_READ( s23_mcu_rtc_r ) AM_WRITE( s23_mcu_settings_w )
1251   AM_RANGE(H8_SERIAL_0, H8_SERIAL_0) AM_READWRITE( s23_mcu_iob_r, s23_mcu_iob_w )
1252   AM_RANGE(H8_SERIAL_1, H8_SERIAL_1) AM_READWRITE( s23_mcu_rtc_r, s23_mcu_settings_w )
12271253   AM_RANGE(H8_ADC_0_H, H8_ADC_0_L) AM_NOP
12281254   AM_RANGE(H8_ADC_1_H, H8_ADC_1_L) AM_NOP
12291255   AM_RANGE(H8_ADC_2_H, H8_ADC_2_L) AM_NOP
12301256   AM_RANGE(H8_ADC_3_H, H8_ADC_3_L) AM_NOP
12311257ADDRESS_MAP_END
12321258
1259// version without serial hookup to I/O board for games where the PIC isn't dumped
1260static ADDRESS_MAP_START( s23h8ionoiobmap, ADDRESS_SPACE_IO, 8 )
1261   AM_RANGE(H8_PORT_7, H8_PORT_7) AM_READ_PORT( "H8PORT" )
1262   AM_RANGE(H8_PORT_8, H8_PORT_8) AM_READ( s23_mcu_p8_r ) AM_WRITENOP
1263   AM_RANGE(H8_PORT_A, H8_PORT_A) AM_READWRITE( s23_mcu_pa_r, s23_mcu_pa_w )
1264   AM_RANGE(H8_PORT_B, H8_PORT_B) AM_READWRITE( s23_mcu_portB_r, s23_mcu_portB_w )
1265   AM_RANGE(H8_SERIAL_1, H8_SERIAL_1) AM_READWRITE( s23_mcu_rtc_r, s23_mcu_settings_w )
1266   AM_RANGE(H8_ADC_0_H, H8_ADC_0_L) AM_NOP
1267   AM_RANGE(H8_ADC_1_H, H8_ADC_1_L) AM_NOP
1268   AM_RANGE(H8_ADC_2_H, H8_ADC_2_L) AM_NOP
1269   AM_RANGE(H8_ADC_3_H, H8_ADC_3_L) AM_NOP
1270ADDRESS_MAP_END
12331271
1272
1273static READ8_HANDLER( s23_iob_mcu_r )
1274{
1275   UINT8 ret = maintoio[mi_rd];
1276
1277   mi_rd++;
1278   mi_rd &= 0xf;
1279
1280   if (mi_rd == mi_wr)
1281   {
1282      cputag_set_input_line(space->machine, "ioboard", H8_SCI_0_RX, CLEAR_LINE);
1283   }
1284
1285   return ret;
1286}
1287
1288static WRITE8_HANDLER( s23_iob_mcu_w )
1289{
1290   iotomain[im_wr++] = data;
1291   im_wr &= 0xf;
1292
1293   cputag_set_input_line(space->machine, "audiocpu", H8_SCI_0_RX, ASSERT_LINE);
1294}
1295
12341296/* H8/3334 (Namco C78) I/O board MCU */
12351297static ADDRESS_MAP_START( s23iobrdmap, ADDRESS_SPACE_PROGRAM, 8 )
12361298   AM_RANGE(0x0000, 0x0fff) AM_READ(SMH_ROM)
r4679r4680
12381300ADDRESS_MAP_END
12391301
12401302static ADDRESS_MAP_START( s23iobrdiomap, ADDRESS_SPACE_IO, 8 )
1303   AM_RANGE(H8_SERIAL_0, H8_SERIAL_0) AM_READWRITE( s23_iob_mcu_r, s23_iob_mcu_w )
12411304ADDRESS_MAP_END
12421305
12431306static DRIVER_INIT(ss23)
12441307{
1308   mi_rd = mi_wr = im_rd = im_wr = 0;
12451309}
12461310
12471311static const gfx_layout namcos23_cg_layout =
r4679r4680
13031367
13041368   MDRV_CPU_ADD("audiocpu", H83002, 14745600 )
13051369   MDRV_CPU_PROGRAM_MAP( s23h8rwmap, 0 )
1306   MDRV_CPU_IO_MAP( s23h8iomap, 0 )
1370   MDRV_CPU_IO_MAP( s23h8ionoiobmap, 0 )
13071371   MDRV_CPU_VBLANK_INT("screen", irq1_line_pulse)
13081372
13091373   MDRV_QUANTUM_TIME(HZ(60000))
r4679r4680
13471411   MDRV_CPU_ADD("ioboard", H83334, 14745600 )
13481412   MDRV_CPU_PROGRAM_MAP( s23iobrdmap, 0 )
13491413   MDRV_CPU_IO_MAP( s23iobrdiomap, 0 )
1350   MDRV_CPU_VBLANK_INT("screen", irq1_line_pulse)
13511414
1352
13531415   MDRV_QUANTUM_TIME(HZ(60000))
13541416
13551417   MDRV_SCREEN_ADD("screen", RASTER)
r4679r4680
13861448
13871449   MDRV_CPU_ADD("audiocpu", H83002, 14745600 )
13881450   MDRV_CPU_PROGRAM_MAP( s23h8rwmap, 0 )
1389   MDRV_CPU_IO_MAP( s23h8iomap, 0 )
1451   MDRV_CPU_IO_MAP( s23h8ionoiobmap, 0 )
13901452   MDRV_CPU_VBLANK_INT("screen", irq1_line_pulse)
13911453
13921454   MDRV_QUANTUM_TIME(HZ(60000))
r4679r4680
17231785        ROM_LOAD( "ffs1waveh.2a", 0x800000, 0x800000, CRC(178e8bd3) SHA1(8ab1a97003914f70b09e96c5924f3a839fe634c7) )
17241786ROM_END
17251787
1788ROM_START( panicprk )
1789   ROM_REGION32_BE( 0x400000, "user1", 0 ) /* 4 megs for main R4650 code */
1790        ROM_LOAD16_BYTE( "pnp2ver-a.ic2", 0x000000, 0x200000, CRC(cd528597) SHA1(cf390e78228eb10d5f50ff7e7e37063a2d87f469) )
1791        ROM_LOAD16_BYTE( "pnp2ver-a.ic1", 0x000001, 0x200000, CRC(80fea853) SHA1(b18003bde060ebb3c892a6d7fa4abf868cadc777) )
1792
1793   ROM_REGION( 0x80000, "audiocpu", 0 )   /* Hitachi H8/3002 MCU code */
1794        ROM_LOAD16_WORD_SWAP( "pnp2ver-a.ic3", 0x000000, 0x080000, CRC(fe4bc6f4) SHA1(2114dc4bc63d589e6c3b26a73dbc60924f3b1765) )
1795
1796   ROM_REGION( 0x2000000, "sprite", 0 )   /* sprite? tilemap? tiles */
1797        ROM_LOAD16_BYTE( "pnp1mtal.2h",  0x000000, 0x800000, CRC(6490faaa) SHA1(03443746009b434e5d4074ea6314910418907360) )
1798        ROM_LOAD16_BYTE( "pnp1mtah.2j",  0x000001, 0x800000, CRC(37addddd) SHA1(3032989653304417df80606bc3fde6e9425d8cbb) )
1799
1800   ROM_REGION( 0x4000000, "textile", 0 )   /* texture tiles */
1801        ROM_LOAD( "pnp1cguu.5f",  0x000000, 0x800000, CRC(cd64f57f) SHA1(8780270298e0823db1acbbf79396788df0c3c19c) )
1802        ROM_LOAD( "pnp1cgum.4j",  0x800000, 0x800000, CRC(206217ca) SHA1(9c095bba7764f3405c3fab10513b9b78981ec44d) )
1803        ROM_LOAD( "pnp1cgll.4m",  0x1000000, 0x800000, CRC(d03932cf) SHA1(49240e44923cc6e815e9457b6290fd18466658af) )
1804        ROM_LOAD( "pnp1cglm.5k",  0x180000, 0x800000, CRC(abf4ccf2) SHA1(3848e26d0ba6c872bbc6d5e0eb23a9d4b34152d5) )
1805        ROM_LOAD( "pnp1cguu.4f",  0x2000000, 0x800000, CRC(cd64f57f) SHA1(8780270298e0823db1acbbf79396788df0c3c19c) )
1806        ROM_LOAD( "pnp1cgum.5j",  0x2800000, 0x800000, CRC(206217ca) SHA1(9c095bba7764f3405c3fab10513b9b78981ec44d) )
1807        ROM_LOAD( "pnp1cgll.5m",  0x3000000, 0x800000, CRC(d03932cf) SHA1(49240e44923cc6e815e9457b6290fd18466658af) )
1808        ROM_LOAD( "pnp1cglm.4k",  0x3800000, 0x800000, CRC(abf4ccf2) SHA1(3848e26d0ba6c872bbc6d5e0eb23a9d4b34152d5) )
1809
1810   ROM_REGION( 0x800000, "textilemap", 0 )   /* texture tilemap */
1811        ROM_LOAD( "pnp1ccrl.7f",  0x000000, 0x200000, CRC(b7bc43c2) SHA1(f4b470540194486ca6822f438fc1d4700cfb2ab1) )
1812        ROM_LOAD( "pnp1ccrh.7e",  0x200000, 0x200000, CRC(caaf1b73) SHA1(b436992817ab4e4dad05e7429eb102d4fb57fa6a) )
1813        ROM_LOAD( "pnp1ccrl.7m",  0x400000, 0x200000, CRC(b7bc43c2) SHA1(f4b470540194486ca6822f438fc1d4700cfb2ab1) )
1814        ROM_LOAD( "pnp1ccrh.7k",  0x600000, 0x200000, CRC(caaf1b73) SHA1(b436992817ab4e4dad05e7429eb102d4fb57fa6a) )
1815
1816   ROM_REGION32_LE( 0x2000000, "pointrom", 0 )   /* 3D model data */
1817        ROM_LOAD32_WORD( "pnp1pt0l.7c",  0x000000, 0x400000, CRC(26af5fa1) SHA1(12fcf98c2a59643e0fdfdd7186f9f16baf54a9cf) )
1818        ROM_LOAD32_WORD( "pnp1pt0h.7a",  0x000002, 0x400000, CRC(43fc2246) SHA1(301d321cd4a01ebd7ccfa6f295d6c3daf0a19efe) )
1819        ROM_LOAD32_WORD( "pnp1pt1l.5c",  0x800000, 0x400000, CRC(15c6f236) SHA1(e8c393359a91cdce6e9110a48c0a80708f8fc132) )
1820        ROM_LOAD32_WORD( "pnp1pt1h.5a",  0x800002, 0x400000, CRC(1ff470c0) SHA1(ca8fad90743589744939d681b0ce94f368337b3f) )
1821
1822   ROM_REGION( 0x1000000, "c352", 0 ) /* C352 PCM samples */
1823        ROM_LOAD( "pnp1wavel.2c", 0x000000, 0x800000, CRC(35c6a9bd) SHA1(4b56fdc37525c15e57d93091e6609d6a6905fc5c) )
1824        ROM_LOAD( "pnp1waveh.2a", 0x800000, 0x800000, CRC(6fa1826a) SHA1(20a5af49e65ae2bc57c016b5cd9bafa5a5220d35) )
1825ROM_END
1826
1827
17261828/* Games */
17271829GAME( 1997, rapidrvr, 0,      gorgon, ss23, ss23, ROT0, "Namco", "Rapid River (RD3 Ver. C)", GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION | GAME_IMPERFECT_SOUND )
17281830GAME( 1997, motoxgo,  0,         s23, ss23, ss23, ROT0, "Namco", "Motocross Go! (MG3 Ver. A)", GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION | GAME_IMPERFECT_SOUND )
17291831GAME( 1997, timecrs2, 0,         s23, ss23, ss23, ROT0, "Namco", "Time Crisis 2 (TSS3 Ver. B)", GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION | GAME_IMPERFECT_SOUND )
17301832GAME( 1997, timcrs2b, timecrs2,  s23, ss23, ss23, ROT0, "Namco", "Time Crisis 2 (TSS2 Ver. B)", GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION | GAME_IMPERFECT_SOUND )
1833GAME( 1998, panicprk, 0,        ss23, ss23, ss23, ROT0, "Namco", "Panic Park (PNP2 Ver. A)", GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION | GAME_IMPERFECT_SOUND )
17311834GAME( 1999, 500gp,    0,        ss23, ss23, ss23, ROT0, "Namco", "500GP", GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION | GAME_IMPERFECT_SOUND )
17321835GAME( 1999, finfurl2, 0,        ss23, ss23, ss23, ROT0, "Namco", "Final Furlong 2 (World)", GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION | GAME_IMPERFECT_SOUND )
17331836GAME( 1999, finfrl2j, finfurl2, ss23, ss23, ss23, ROT0, "Namco", "Final Furlong 2 (Japan)", GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION | GAME_IMPERFECT_SOUND )
src/mame/drivers/inufuku.c
r4679r4680
9999
100100      pending_command = 1;
101101      soundlatch_w(space, 0, data & 0xff);
102      cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_NMI, PULSE_LINE);
102      cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
103103   }
104104}
105105
r4679r4680
129129
130130static DRIVER_INIT( inufuku )
131131{
132   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
132   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
133133   pending_command = 1;
134134   inufuku_soundrombank_w(space, 0, 0);
135135}
r4679r4680
219219static ADDRESS_MAP_START( inufuku_readmem_sound, ADDRESS_SPACE_PROGRAM, 8 )
220220   AM_RANGE(0x0000, 0x77ff) AM_READ(SMH_ROM)
221221   AM_RANGE(0x7800, 0x7fff) AM_READ(SMH_RAM)
222   AM_RANGE(0x8000, 0xffff) AM_READ(SMH_BANK1)
222   AM_RANGE(0x8000, 0xffff) AM_READ(SMH_BANK(1))
223223ADDRESS_MAP_END
224224
225225static ADDRESS_MAP_START( inufuku_writemem_sound, ADDRESS_SPACE_PROGRAM, 8 )
r4679r4680
351351
352352static void irqhandler(const device_config *device, int irq)
353353{
354   cpu_set_input_line(device->machine->cpu[1], 0, irq ? ASSERT_LINE : CLEAR_LINE);
354   cputag_set_input_line(device->machine, "audiocpu", 0, irq ? ASSERT_LINE : CLEAR_LINE);
355355}
356356
357357static const ym2610_interface ym2610_config =
src/mame/drivers/commando.c
r4679r4680
506506{
507507   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
508508   UINT8 *rom = memory_region(machine, "maincpu");
509   UINT8 *decrypt = auto_malloc(0xc000);
509   UINT8 *decrypt = auto_alloc_array(machine, UINT8, 0xc000);
510510   int A;
511511
512512   memory_set_decrypted_region(space, 0x0000, 0xbfff, decrypt);
r4679r4680
526526{
527527   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
528528   UINT8 *rom = memory_region(machine, "maincpu");
529   UINT8 *decrypt = auto_malloc(0xc000);
529   UINT8 *decrypt = auto_alloc_array(machine, UINT8, 0xc000);
530530   int A;
531531
532532   memory_set_decrypted_region(space, 0x0000, 0xbfff, decrypt);
src/mame/drivers/atarisy2.c
r4679r4680
185185static void update_interrupts(running_machine *machine)
186186{
187187   if (atarigen_video_int_state)
188      cpu_set_input_line(machine->cpu[0], 3, ASSERT_LINE);
188      cputag_set_input_line(machine, "maincpu", 3, ASSERT_LINE);
189189   else
190      cpu_set_input_line(machine->cpu[0], 3, CLEAR_LINE);
190      cputag_set_input_line(machine, "maincpu", 3, CLEAR_LINE);
191191
192192   if (atarigen_scanline_int_state)
193      cpu_set_input_line(machine->cpu[0], 2, ASSERT_LINE);
193      cputag_set_input_line(machine, "maincpu", 2, ASSERT_LINE);
194194   else
195      cpu_set_input_line(machine->cpu[0], 2, CLEAR_LINE);
195      cputag_set_input_line(machine, "maincpu", 2, CLEAR_LINE);
196196
197197   if (p2portwr_state)
198      cpu_set_input_line(machine->cpu[0], 1, ASSERT_LINE);
198      cputag_set_input_line(machine, "maincpu", 1, ASSERT_LINE);
199199   else
200      cpu_set_input_line(machine->cpu[0], 1, CLEAR_LINE);
200      cputag_set_input_line(machine, "maincpu", 1, CLEAR_LINE);
201201
202202   if (p2portrd_state)
203      cpu_set_input_line(machine->cpu[0], 0, ASSERT_LINE);
203      cputag_set_input_line(machine, "maincpu", 0, ASSERT_LINE);
204204   else
205      cpu_set_input_line(machine->cpu[0], 0, CLEAR_LINE);
205      cputag_set_input_line(machine, "maincpu", 0, CLEAR_LINE);
206206}
207207
208208
r4679r4680
220220      /* generate the 32V interrupt (IRQ 2) */
221221      if ((scanline % 64) == 0)
222222         if (interrupt_enable & 4)
223            atarigen_scanline_int_gen(screen->machine->cpu[0]);
223            atarigen_scanline_int_gen(cputag_get_cpu(screen->machine, "maincpu"));
224224   }
225225}
226226
r4679r4680
262262   atarigen_eeprom_reset();
263263   slapstic_reset();
264264   atarigen_interrupt_reset(update_interrupts);
265   atarigen_sound_io_reset(machine->cpu[1]);
265   atarigen_sound_io_reset(cputag_get_cpu(machine, "soundcpu"));
266266   atarigen_scanline_timer_reset(machine->primary_screen, scanline_update, 64);
267   memory_set_direct_update_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), atarisy2_direct_handler);
267   memory_set_direct_update_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), atarisy2_direct_handler);
268268
269269   tms5220_data_strobe = 1;
270270
r4679r4680
302302{
303303   /* reset sound CPU */
304304   if (ACCESSING_BITS_0_7)
305      cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_RESET, (data & 1) ? ASSERT_LINE : CLEAR_LINE);
305      cputag_set_input_line(space->machine, "soundcpu", INPUT_LINE_RESET, (data & 1) ? ASSERT_LINE : CLEAR_LINE);
306306}
307307
308308
r4679r4680
361361
362362static STATE_POSTLOAD( bankselect_postload )
363363{
364   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
364   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
365365
366366   bankselect_w(space, 0, bankselect[0], 0xffff);
367367   bankselect_w(space, 1, bankselect[1], 0xffff);
r4679r4680
457457            /* if the joystick is centered, leave the rest of this alone */
458458            angle = last_angle;
459459            if (analogx < -32 || analogx > 32 || analogy < -32 || analogy > 32)
460               angle = atan2(analogx, analogy) * 360 / (2 * M_PI);
460               angle = atan2((double)analogx, (double)analogy) * 360 / (2 * M_PI);
461461
462462            /* detect when we pass the 0 point in either direction */
463463            if (last_angle < -90 && angle > 90)
r4679r4680
630630      return;
631631
632632   /* a large number of signals are reset when this happens */
633   atarigen_sound_io_reset(space->machine->cpu[1]);
633   atarigen_sound_io_reset(cputag_get_cpu(space->machine, "soundcpu"));
634634   devtag_reset(space->machine, "ym");
635635   mixer_w(space, 0, 0);
636636   tms5220_data = 0;
src/mame/drivers/mjsister.c
r4679r4680
151151
152152/****************************************************************************/
153153
154static ADDRESS_MAP_START( mjsister_readmem, ADDRESS_SPACE_PROGRAM, 8 )
155   AM_RANGE(0x0000, 0x77ff) AM_READ(SMH_ROM)
156   AM_RANGE(0x7800, 0x7fff) AM_READ(SMH_RAM)
157   AM_RANGE(0x8000, 0xffff) AM_READ(SMH_BANK1)
154static ADDRESS_MAP_START( mjsister_map, ADDRESS_SPACE_PROGRAM, 8 )
155   AM_RANGE(0x0000, 0x77ff) AM_ROM
156   AM_RANGE(0x7800, 0x7fff) AM_RAM
157   AM_RANGE(0x8000, 0xffff) AM_ROMBANK(1) AM_WRITE(mjsister_videoram_w)
158158ADDRESS_MAP_END
159159
160static ADDRESS_MAP_START( mjsister_writemem, ADDRESS_SPACE_PROGRAM, 8 )
161   AM_RANGE(0x0000, 0x77ff) AM_WRITE(SMH_ROM)
162   AM_RANGE(0x7800, 0x7fff) AM_WRITE(SMH_RAM)
163   AM_RANGE(0x8000, 0xffff) AM_WRITE(mjsister_videoram_w)
164ADDRESS_MAP_END
165
166160static ADDRESS_MAP_START( mjsister_io_map, ADDRESS_SPACE_IO, 8 )
167161   ADDRESS_MAP_GLOBAL_MASK(0xff)
168162   AM_RANGE(0x00, 0x01) AM_WRITENOP /* HD46505? */
r4679r4680
179173   AM_RANGE(0x35, 0x35) AM_WRITE(mjsister_dac_adr_e_w)
180174ADDRESS_MAP_END
181175
176
182177/****************************************************************************/
183178
184179static INPUT_PORTS_START( mjsister )
r4679r4680
309304
310305   /* basic machine hardware */
311306   MDRV_CPU_ADD("maincpu", Z80, MCLK/2) /* 6.000 MHz */
312   MDRV_CPU_PROGRAM_MAP(mjsister_readmem,mjsister_writemem)
307   MDRV_CPU_PROGRAM_MAP(mjsister_map,0)
313308   MDRV_CPU_IO_MAP(mjsister_io_map,0)
314309   MDRV_CPU_VBLANK_INT_HACK(irq0_line_hold,2)
315310
src/mame/drivers/ninjakd2.c
r4679r4680
199199static WRITE8_HANDLER( ninjakd2_soundreset_w )
200200{
201201   // bit 4 resets sound CPU
202   cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_RESET, (data & 0x10) ? ASSERT_LINE : CLEAR_LINE);
202   cputag_set_input_line(space->machine, "soundcpu", INPUT_LINE_RESET, (data & 0x10) ? ASSERT_LINE : CLEAR_LINE);
203203
204204   // bit 7 flips screen
205205   flip_screen_set(space->machine, data & 0x80);
r4679r4680
214214   running_machine *machine = device->machine;
215215   const UINT8* const rom = memory_region(machine, "pcm");
216216   const int length = memory_region_length(machine, "pcm");
217   INT16* const sampledata = auto_malloc(length * sizeof(sampledata[0]));
217   INT16* sampledata = auto_alloc_array(machine, INT16, length);
218218
219219   int i;
220220
r4679r4680
905905
906906static void irqhandler(const device_config *device, int irq)
907907{
908   cpu_set_input_line(device->machine->cpu[1], 0, irq ? ASSERT_LINE : CLEAR_LINE);
908   cputag_set_input_line(device->machine, "soundcpu", 0, irq ? ASSERT_LINE : CLEAR_LINE);
909909}
910910
911911static const ym2203_interface ym2203_config =
r4679r4680
997997   MDRV_SOUND_REMOVE("pcm")
998998MACHINE_DRIVER_END
999999
1000static MACHINE_DRIVER_START( arkarea )
1001
1002   /* basic machine hardware */
1003   MDRV_IMPORT_FROM(ninjakd2)
1004
1005   MDRV_CPU_MODIFY("maincpu")
1006   MDRV_CPU_PROGRAM_MAP(mnight_main_cpu,0)
1007
1008   /* video hardware */
1009   MDRV_VIDEO_START(arkarea)
1010
1011   /* sound hardware */
1012   MDRV_SOUND_REMOVE("pcm")
1013MACHINE_DRIVER_END
1014
10001015static MACHINE_DRIVER_START( robokid )
10011016
10021017   /* basic machine hardware */
r4679r4680
14051420/******************************************************************************
14061421
14071422Gfx ROMs in the older games have an unusual layout, where a high address bit
1408(which is no the top bit) separates parts of the same tile. To make it possible
1423(which is not the top bit) separates parts of the same tile. To make it possible
14091424to decode graphics without resorting to ROM_CONTINUE trickery, this function
14101425makes an address line rotation, bringing bit "bit" to bit 0 and shifting left
14111426by one place all the intervening bits.
r4679r4680
14181433
14191434   UINT8* const src = memory_region(machine, region);
14201435
1421   UINT8* const temp = malloc_or_die(length);
1436   UINT8* const temp = alloc_array_or_die(UINT8, length);
14221437
14231438   const int mask = (1 << (bit + 1)) - 1;
14241439
r4679r4680
14841499GAME( 1987, ninjak2b, ninjakd2, ninjakd2, rdaction, bootleg,  ROT0,   "UPL", "Ninja-Kid II / NinjaKun Ashura no Shou (set 3, bootleg?)", 0 )
14851500GAME( 1987, rdaction, ninjakd2, ninjakd2, rdaction, ninjakd2, ROT0,   "UPL (World Games license)", "Rad Action / NinjaKun Ashura no Shou", 0 )
14861501GAME( 1987, mnight,   0,        mnight,   mnight,   mnight,   ROT0,   "UPL (Kawakus license)", "Mutant Night", GAME_IMPERFECT_GRAPHICS )
1487GAME( 1987, arkarea,  0,        mnight,   arkarea,  mnight,   ROT0,   "UPL", "Ark Area", GAME_IMPERFECT_GRAPHICS )
1488GAME( 1988, robokid,  0,        robokid,  robokid,  0,        ROT0,   "UPL", "Atomic Robo-kid", GAME_IMPERFECT_GRAPHICS )
1489GAME( 1988, robokidj, robokid,  robokid,  robokidj, 0,        ROT0,   "UPL", "Atomic Robo-kid (Japan, set 1)", GAME_IMPERFECT_GRAPHICS )
1490GAME( 1988, robokdj2, robokid,  robokid,  robokidj, 0,        ROT0,   "UPL", "Atomic Robo-kid (Japan, set 2)", GAME_IMPERFECT_GRAPHICS )
1491GAME( 1989, omegaf,   0,        omegaf,   omegaf,   0,        ROT270, "UPL", "Omega Fighter", GAME_IMPERFECT_GRAPHICS )
1492GAME( 1989, omegafs,  omegaf,   omegaf,   omegaf,   0,        ROT270, "UPL", "Omega Fighter Special", GAME_IMPERFECT_GRAPHICS )
1502GAME( 1987, arkarea,  0,        arkarea,  arkarea,  mnight,   ROT0,   "UPL", "Ark Area", 0 )
1503GAME( 1988, robokid,  0,        robokid,  robokid,  0,        ROT0,   "UPL", "Atomic Robo-kid", 0 )
1504GAME( 1988, robokidj, robokid,  robokid,  robokidj, 0,        ROT0,   "UPL", "Atomic Robo-kid (Japan, set 1)", 0 )
1505GAME( 1988, robokdj2, robokid,  robokid,  robokidj, 0,        ROT0,   "UPL", "Atomic Robo-kid (Japan, set 2)", 0 )
1506GAME( 1989, omegaf,   0,        omegaf,   omegaf,   0,        ROT270, "UPL", "Omega Fighter", 0 )
1507GAME( 1989, omegafs,  omegaf,   omegaf,   omegaf,   0,        ROT270, "UPL", "Omega Fighter Special", 0 )
src/mame/drivers/yunsung8.c
r4679r4680
5555
5656static MACHINE_RESET( yunsung8 )
5757{
58   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
59   UINT8* yunsung8_videoram = auto_malloc(0x4000);
58   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
59   UINT8* yunsung8_videoram = auto_alloc_array(machine, UINT8, 0x4000);
6060
6161   yunsung8_videoram_0 = yunsung8_videoram + 0x0000;   // Ram is banked
6262   yunsung8_videoram_1 = yunsung8_videoram + 0x2000;
63   yunsung8_videobank_w(space,0,0);
63   yunsung8_videobank_w(space, 0, 0);
6464}
6565
6666
r4679r4680
9999
100100static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 8 )
101101   AM_RANGE(0x0001, 0x0001) AM_WRITE(yunsung8_bankswitch_w   )   // ROM Bank (again?)
102   AM_RANGE(0x8000, 0xbfff) AM_READ(SMH_BANK1            )   // Banked ROM
102   AM_RANGE(0x8000, 0xbfff) AM_READ(SMH_BANK(1)            )   // Banked ROM
103103   AM_RANGE(0x0000, 0xbfff) AM_ROM
104104   AM_RANGE(0xc000, 0xdfff) AM_READWRITE(yunsung8_videoram_r, yunsung8_videoram_w   )   // Video RAM (Banked)
105105   AM_RANGE(0xe000, 0xffff) AM_RAM
r4679r4680
155155
156156static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 )
157157   AM_RANGE(0x0000, 0x7fff) AM_ROM
158   AM_RANGE(0x8000, 0xbfff) AM_READWRITE(SMH_BANK2,SMH_ROM      )   // Banked ROM
158   AM_RANGE(0x8000, 0xbfff) AM_READWRITE(SMH_BANK(2),SMH_ROM      )   // Banked ROM
159159   AM_RANGE(0xe000, 0xe000) AM_DEVWRITE("msm", yunsung8_sound_bankswitch_w   )   // ROM Bank
160160   AM_RANGE(0xe400, 0xe400) AM_WRITE(yunsung8_adpcm_w            )
161161   AM_RANGE(0xec00, 0xec01) AM_DEVWRITE("ym", ym3812_w      )
r4679r4680
486486
487487static void yunsung8_adpcm_int(const device_config *device)
488488{
489   static int toggle=0;
489   static int toggle = 0;
490490
491   msm5205_data_w (device,adpcm>>4);
492   adpcm<<=4;
491   msm5205_data_w(device, adpcm >> 4);
492   adpcm <<= 4;
493493
494494   toggle ^= 1;
495495   if (toggle)
496      cpu_set_input_line(device->machine->cpu[1], INPUT_LINE_NMI, PULSE_LINE);
496      cputag_set_input_line(device->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
497497}
498498
499499static const msm5205_interface yunsung8_msm5205_interface =
src/mame/drivers/spacefb.c
r4679r4680
128128   /* compute vector and set the interrupt line */
129129   int vpos = video_screen_get_vpos(machine->primary_screen);
130130   UINT8 vector = 0xc7 | ((vpos & 0x40) >> 2) | ((~vpos & 0x40) >> 3);
131   cpu_set_input_line_and_vector(machine->cpu[0], 0, HOLD_LINE, vector);
131   cputag_set_input_line_and_vector(machine, "maincpu", 0, HOLD_LINE, vector);
132132
133133   /* set up for next interrupt */
134134   if (vpos == SPACEFB_INT_TRIGGER_COUNT_1)
r4679r4680
174174
175175static MACHINE_RESET( spacefb )
176176{
177   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO);
177   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_IO);
178178   /* the 3 output ports are cleared on reset */
179179   spacefb_port_0_w(space, 0, 0);
180180   spacefb_port_1_w(space, 0, 0);
src/mame/drivers/warpwarp.c
r4679r4680
290290         break;
291291      case 6:
292292         warpwarp_ball_on = data & 1;
293         cpu_interrupt_enable(space->machine->cpu[0],data & 1);
293         cpu_interrupt_enable(cputag_get_cpu(space->machine, "maincpu"), data & 1);
294294         if (~data & 1)
295            cpu_set_input_line(space->machine->cpu[0], 0, CLEAR_LINE);
295            cputag_set_input_line(space->machine, "maincpu", 0, CLEAR_LINE);
296296         break;
297297      case 7:
298298         flip_screen_set(space->machine, data & 1);
src/mame/drivers/cubocd32.c
r4679r4680
6464      /* swap the write handlers between ROM and bank 1 based on the bit */
6565      if ((data & 1) == 0)
6666         /* overlay disabled, map RAM on 0x000000 */
67         memory_install_write32_handler(space, 0x000000, 0x1fffff, 0, 0, SMH_BANK1);
67         memory_install_write32_handler(space, 0x000000, 0x1fffff, 0, 0, (write32_space_func)SMH_BANK(1));
6868      else
6969         /* overlay enabled, map Amiga system ROM on 0x000000 */
70         memory_install_write32_handler(space, 0x000000, 0x1fffff, 0, 0, SMH_UNMAP);
70         memory_install_write32_handler(space, 0x000000, 0x1fffff, 0, 0, (write32_space_func)SMH_UNMAP);
7171   }
7272}
7373
src/mame/drivers/wheelfir.c
r4679r4680
574574{
575575   timer_call_after_resynch(machine, NULL, 0, 0);
576576
577   if (scanline_counter!=(total_scanlines-1))
577   if (scanline_counter != (total_scanlines - 1))
578578   {
579579      scanline_counter++;
580      cpu_set_input_line(machine->cpu[0], 5, HOLD_LINE); // raster IRQ, changes scroll values for road
580      cputag_set_input_line(machine, "maincpu", 5, HOLD_LINE); // raster IRQ, changes scroll values for road
581581      timer_adjust_oneshot(scanline_timer, attotime_div(ATTOTIME_IN_HZ(60), total_scanlines), 0);
582582
583      if (scanline_counter<256)
583      if (scanline_counter < 256)
584584      {
585585         render_background_to_render_buffer(scanline_counter);
586586      }
587587
588      if (scanline_counter==256)
588      if (scanline_counter == 256)
589589      {
590         cpu_set_input_line(machine->cpu[0], 3, HOLD_LINE); // vblank IRQ?
590         cputag_set_input_line(machine, "maincpu", 3, HOLD_LINE); // vblank IRQ?
591591         toggle_bit = 0x8000; // must toggle..
592592      }
593593
594      if (scanline_counter==0)
594      if (scanline_counter == 0)
595595      {
596596         toggle_bit = 0x0000; // must toggle..
597597      }
src/mame/drivers/cbuster.c
r4679r4680
3939
4040static WRITE16_HANDLER( twocrude_control_w )
4141{
42   switch (offset<<1) {
42   switch (offset << 1)
43   {
4344   case 0: /* DMA flag */
44      buffer_spriteram16_w(space,0,0,0xffff);
45      buffer_spriteram16_w(space, 0, 0, 0xffff);
4546      return;
4647
4748   case 6: /* IRQ ack */
4849      return;
4950
5051    case 2: /* Sound CPU write */
51      soundlatch_w(space,0,data & 0xff);
52      cpu_set_input_line(space->machine->cpu[1],0,HOLD_LINE);
52      soundlatch_w(space, 0, data & 0xff);
53      cputag_set_input_line(space->machine, "audiocpu", 0, HOLD_LINE);
5354       return;
5455
5556   case 4: /* Protection, maybe this is a PAL on the board?
r4679r4680
6970            protection?!
7071
7172        */
72      if ((data&0xffff)==0x9a00) prot=0;
73      if ((data&0xffff)==0xaa) prot=0x74;
74      if ((data&0xffff)==0x0200) prot=0x63<<8;
75      if ((data&0xffff)==0x9a) prot=0xe;
76      if ((data&0xffff)==0x55) prot=0x1e;
77      if ((data&0xffff)==0x0e) {prot=0x0e;twocrude_pri_w(0);} /* start */
78      if ((data&0xffff)==0x00) {prot=0x0e;twocrude_pri_w(0);} /* level 0 */
79      if ((data&0xffff)==0xf1) {prot=0x36;twocrude_pri_w(1);} /* level 1 */
80      if ((data&0xffff)==0x80) {prot=0x2e;twocrude_pri_w(1);} /* level 2 */
81      if ((data&0xffff)==0x40) {prot=0x1e;twocrude_pri_w(1);} /* level 3 */
82      if ((data&0xffff)==0xc0) {prot=0x3e;twocrude_pri_w(0);} /* level 4 */
83      if ((data&0xffff)==0xff) {prot=0x76;twocrude_pri_w(1);} /* level 5 */
73      if ((data & 0xffff) == 0x9a00) prot = 0;
74      if ((data & 0xffff) == 0xaa)   prot = 0x74;
75      if ((data & 0xffff) == 0x0200) prot = 0x63 << 8;
76      if ((data & 0xffff) == 0x9a)   prot = 0xe;
77      if ((data & 0xffff) == 0x55)   prot = 0x1e;
78      if ((data & 0xffff) == 0x0e)  {prot = 0x0e; twocrude_pri_w(0);} /* start */
79      if ((data & 0xffff) == 0x00)  {prot = 0x0e; twocrude_pri_w(0);} /* level 0 */
80      if ((data & 0xffff) == 0xf1)  {prot = 0x36; twocrude_pri_w(1);} /* level 1 */
81      if ((data & 0xffff) == 0x80)  {prot = 0x2e; twocrude_pri_w(1);} /* level 2 */
82      if ((data & 0xffff) == 0x40)  {prot = 0x1e; twocrude_pri_w(1);} /* level 3 */
83      if ((data & 0xffff) == 0xc0)  {prot = 0x3e; twocrude_pri_w(0);} /* level 4 */
84      if ((data & 0xffff) == 0xff)  {prot = 0x76; twocrude_pri_w(1);} /* level 5 */
8485
8586      break;
8687   }
87   logerror("Warning %04x- %02x written to control %02x\n",cpu_get_pc(space->cpu),data,offset);
88   logerror("Warning %04x- %02x written to control %02x\n", cpu_get_pc(space->cpu), data, offset);
8889}
8990
9091static READ16_HANDLER( twocrude_control_r )
r4679r4680
110111
111112/******************************************************************************/
112113
113static ADDRESS_MAP_START( twocrude_readmem, ADDRESS_SPACE_PROGRAM, 16 )
114   AM_RANGE(0x000000, 0x07ffff) AM_READ(SMH_ROM)
115   AM_RANGE(0x080000, 0x083fff) AM_READ(SMH_RAM)
114static ADDRESS_MAP_START( twocrude_map, ADDRESS_SPACE_PROGRAM, 16 )
115   AM_RANGE(0x000000, 0x07ffff) AM_ROM
116   AM_RANGE(0x080000, 0x083fff) AM_RAM AM_BASE(&twocrude_ram)
116117
117   AM_RANGE(0x0a0000, 0x0a1fff) AM_READ(SMH_RAM)
118   AM_RANGE(0x0a2000, 0x0a2fff) AM_READ(SMH_RAM)
119   AM_RANGE(0x0a4000, 0x0a47ff) AM_READ(SMH_RAM)
120   AM_RANGE(0x0a6000, 0x0a67ff) AM_READ(SMH_RAM)
118   AM_RANGE(0x0a0000, 0x0a1fff) AM_RAM_WRITE(deco16_pf1_data_w) AM_BASE(&deco16_pf1_data)
119   AM_RANGE(0x0a2000, 0x0a2fff) AM_RAM_WRITE(deco16_pf2_data_w) AM_BASE(&deco16_pf2_data)
120   AM_RANGE(0x0a4000, 0x0a47ff) AM_RAM AM_BASE(&deco16_pf1_rowscroll)
121   AM_RANGE(0x0a6000, 0x0a67ff) AM_RAM AM_BASE(&deco16_pf2_rowscroll)
121122
122   AM_RANGE(0x0a8000, 0x0a8fff) AM_READ(SMH_RAM)
123   AM_RANGE(0x0aa000, 0x0aafff) AM_READ(SMH_RAM)
124   AM_RANGE(0x0ac000, 0x0ac7ff) AM_READ(SMH_RAM)
125   AM_RANGE(0x0ae000, 0x0ae7ff) AM_READ(SMH_RAM)
123   AM_RANGE(0x0a8000, 0x0a8fff) AM_RAM_WRITE(deco16_pf3_data_w) AM_BASE(&deco16_pf3_data)
124   AM_RANGE(0x0aa000, 0x0aafff) AM_RAM_WRITE(deco16_pf4_data_w) AM_BASE(&deco16_pf4_data)
125   AM_RANGE(0x0ac000, 0x0ac7ff) AM_RAM AM_BASE(&deco16_pf3_rowscroll)
126   AM_RANGE(0x0ae000, 0x0ae7ff) AM_RAM AM_BASE(&deco16_pf4_rowscroll)
126127
127   AM_RANGE(0x0b0000, 0x0b07ff) AM_READ(SMH_RAM)
128   AM_RANGE(0x0b8000, 0x0b8fff) AM_READ(SMH_RAM)
129   AM_RANGE(0x0b9000, 0x0b9fff) AM_READ(SMH_RAM)
130   AM_RANGE(0x0bc000, 0x0bc00f) AM_READ(twocrude_control_r)
131ADDRESS_MAP_END
132
133static ADDRESS_MAP_START( twocrude_writemem, ADDRESS_SPACE_PROGRAM, 16 )
134   AM_RANGE(0x000000, 0x07ffff) AM_WRITE(SMH_ROM)
135   AM_RANGE(0x080000, 0x083fff) AM_WRITE(SMH_RAM) AM_BASE(&twocrude_ram)
136
137   AM_RANGE(0x0a0000, 0x0a1fff) AM_WRITE(deco16_pf1_data_w) AM_BASE(&deco16_pf1_data)
138   AM_RANGE(0x0a2000, 0x0a2fff) AM_WRITE(deco16_pf2_data_w) AM_BASE(&deco16_pf2_data)
139   AM_RANGE(0x0a4000, 0x0a47ff) AM_WRITE(SMH_RAM) AM_BASE(&deco16_pf1_rowscroll)
140   AM_RANGE(0x0a6000, 0x0a67ff) AM_WRITE(SMH_RAM) AM_BASE(&deco16_pf2_rowscroll)
141
142   AM_RANGE(0x0a8000, 0x0a8fff) AM_WRITE(deco16_pf3_data_w) AM_BASE(&deco16_pf3_data)
143   AM_RANGE(0x0aa000, 0x0aafff) AM_WRITE(deco16_pf4_data_w) AM_BASE(&deco16_pf4_data)
144   AM_RANGE(0x0ac000, 0x0ac7ff) AM_WRITE(SMH_RAM) AM_BASE(&deco16_pf3_rowscroll)
145   AM_RANGE(0x0ae000, 0x0ae7ff) AM_WRITE(SMH_RAM) AM_BASE(&deco16_pf4_rowscroll)
146
147   AM_RANGE(0x0b0000, 0x0b07ff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)
128   AM_RANGE(0x0b0000, 0x0b07ff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)
148129   AM_RANGE(0x0b4000, 0x0b4001) AM_WRITENOP
149
150130   AM_RANGE(0x0b5000, 0x0b500f) AM_WRITE(SMH_RAM) AM_BASE(&deco16_pf12_control)
151131   AM_RANGE(0x0b6000, 0x0b600f) AM_WRITE(SMH_RAM) AM_BASE(&deco16_pf34_control)
152
153   AM_RANGE(0x0b8000, 0x0b8fff) AM_WRITE(twocrude_palette_24bit_rg_w) AM_BASE(&paletteram16)
154   AM_RANGE(0x0b9000, 0x0b9fff) AM_WRITE(twocrude_palette_24bit_b_w) AM_BASE(&paletteram16_2)
155   AM_RANGE(0x0bc000, 0x0bc00f) AM_WRITE(twocrude_control_w)
132   AM_RANGE(0x0b8000, 0x0b8fff) AM_RAM_WRITE(twocrude_palette_24bit_rg_w) AM_BASE(&paletteram16)
133   AM_RANGE(0x0b9000, 0x0b9fff) AM_RAM_WRITE(twocrude_palette_24bit_b_w) AM_BASE(&paletteram16_2)
134   AM_RANGE(0x0bc000, 0x0bc00f) AM_READWRITE(twocrude_control_r, twocrude_control_w)
156135ADDRESS_MAP_END
157136
158137/******************************************************************************/
159138
160static ADDRESS_MAP_START( sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
161   AM_RANGE(0x000000, 0x00ffff) AM_READ(SMH_ROM)
162   AM_RANGE(0x100000, 0x100001) AM_DEVREAD("ym1", ym2203_r)
163   AM_RANGE(0x110000, 0x110001) AM_DEVREAD("ym2", ym2151_r)
164   AM_RANGE(0x120000, 0x120001) AM_DEVREAD("oki1", okim6295_r)
165   AM_RANGE(0x130000, 0x130001) AM_DEVREAD("oki2", okim6295_r)
139static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 )
140   AM_RANGE(0x000000, 0x00ffff) AM_ROM
141   AM_RANGE(0x100000, 0x100001) AM_DEVREADWRITE("ym1", ym2203_r, ym2203_w)
142   AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE("ym2", ym2151_r, ym2151_w)
143   AM_RANGE(0x120000, 0x120001) AM_DEVREADWRITE("oki1", okim6295_r, okim6295_w)
144   AM_RANGE(0x130000, 0x130001) AM_DEVREADWRITE("oki2", okim6295_r, okim6295_w)
166145   AM_RANGE(0x140000, 0x140001) AM_READ(soundlatch_r)
167   AM_RANGE(0x1f0000, 0x1f1fff) AM_READ(SMH_BANK8)
168ADDRESS_MAP_END
169
170static ADDRESS_MAP_START( sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
171   AM_RANGE(0x000000, 0x00ffff) AM_WRITE(SMH_ROM)
172   AM_RANGE(0x100000, 0x100001) AM_DEVWRITE("ym1", ym2203_w)
173   AM_RANGE(0x110000, 0x110001) AM_DEVWRITE("ym2", ym2151_w)
174   AM_RANGE(0x120000, 0x120001) AM_DEVWRITE("oki1", okim6295_w)
175   AM_RANGE(0x130000, 0x130001) AM_DEVWRITE("oki2", okim6295_w)
176   AM_RANGE(0x1f0000, 0x1f1fff) AM_WRITE(SMH_BANK8)
146   AM_RANGE(0x1f0000, 0x1f1fff) AM_RAMBANK(8)
177147   AM_RANGE(0x1fec00, 0x1fec01) AM_WRITE(h6280_timer_w)
178148   AM_RANGE(0x1ff400, 0x1ff403) AM_WRITE(h6280_irq_status_w)
179149ADDRESS_MAP_END
r4679r4680
303273
304274static void sound_irq(const device_config *device, int state)
305275{
306   cpu_set_input_line(device->machine->cpu[1],1,state); /* IRQ 2 */
276   cputag_set_input_line(device->machine, "audiocpu", 1, state); /* IRQ 2 */
307277}
308278
309279static const ym2151_interface ym2151_config =
r4679r4680
315285
316286   /* basic machine hardware */
317287   MDRV_CPU_ADD("maincpu", M68000, 12000000) /* Custom chip 59 */
318   MDRV_CPU_PROGRAM_MAP(twocrude_readmem,twocrude_writemem)
288   MDRV_CPU_PROGRAM_MAP(twocrude_map,0)
319289   MDRV_CPU_VBLANK_INT("screen", irq4_line_hold)/* VBL */
320290
321291   MDRV_CPU_ADD("audiocpu", H6280,32220000/4) /* Custom chip 45, Audio section crystal is 32.220 MHz */
322   MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem)
292   MDRV_CPU_PROGRAM_MAP(sound_map,0)
323293
324294   /* video hardware */
325295   MDRV_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM)
src/mame/drivers/dunhuang.c
r4679r4680
103103   tilemap_set_transparent_pen(tmap,   0);
104104   tilemap_set_transparent_pen(tmap2,  0);
105105
106   dunhuang_videoram = (UINT16*)auto_malloc(sizeof(UINT16) * 0x40 * 0x20);
107   dunhuang_colorram = (UINT8*) auto_malloc(sizeof(UINT8)  * 0x40 * 0x20);
106   dunhuang_videoram = auto_alloc_array(machine, UINT16, 0x40 * 0x20);
107   dunhuang_colorram = auto_alloc_array(machine, UINT8, 0x40 * 0x20);
108108
109   dunhuang_videoram2 = (UINT16*)auto_malloc(sizeof(UINT16) * 0x40 * 0x8);
110   dunhuang_colorram2 = (UINT8*) auto_malloc(sizeof(UINT8)  * 0x40 * 0x8);
109   dunhuang_videoram2 = auto_alloc_array(machine, UINT16, 0x40 * 0x8);
110   dunhuang_colorram2 = auto_alloc_array(machine, UINT8, 0x40 * 0x8);
111111
112   dunhuang_paldata  = (UINT8*)auto_malloc(sizeof(UINT8) * 3 * 256);
112   dunhuang_paldata  = auto_alloc_array(machine, UINT8, 3 * 256);
113113}
114114
115115static VIDEO_UPDATE( dunhuang )
r4679r4680
334334static ADDRESS_MAP_START( dunhuang_map, ADDRESS_SPACE_PROGRAM, 8 )
335335   AM_RANGE( 0x0000, 0x5fff ) AM_ROM
336336   AM_RANGE( 0x6000, 0x7fff ) AM_RAM
337   AM_RANGE( 0x8000, 0xffff ) AM_READ( SMH_BANK1 )
337   AM_RANGE( 0x8000, 0xffff ) AM_READ( SMH_BANK(1) )
338338ADDRESS_MAP_END
339339
340340// Inputs
src/mame/drivers/gng.c
r4679r4680
6666   memory_configure_bank(machine, 1,4,1,&rombase[0x4000],0x2000);
6767}
6868
69static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 )
70   AM_RANGE(0x0000, 0x2fff) AM_READ(SMH_RAM)
69static ADDRESS_MAP_START( gng_map, ADDRESS_SPACE_PROGRAM, 8 )
70   AM_RANGE(0x0000, 0x1dff) AM_RAM
71   AM_RANGE(0x1e00, 0x1fff) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
72   AM_RANGE(0x2000, 0x27ff) AM_RAM_WRITE(gng_fgvideoram_w) AM_BASE(&gng_fgvideoram)
73   AM_RANGE(0x2800, 0x2fff) AM_RAM_WRITE(gng_bgvideoram_w) AM_BASE(&gng_bgvideoram)
7174   AM_RANGE(0x3000, 0x3000) AM_READ_PORT("SYSTEM")
7275   AM_RANGE(0x3001, 0x3001) AM_READ_PORT("P1")
7376   AM_RANGE(0x3002, 0x3002) AM_READ_PORT("P2")
7477   AM_RANGE(0x3003, 0x3003) AM_READ_PORT("DSW1")
7578   AM_RANGE(0x3004, 0x3004) AM_READ_PORT("DSW2")
76   AM_RANGE(0x3c00, 0x3c00) AM_READNOP   /* watchdog? */
77   AM_RANGE(0x4000, 0x5fff) AM_READ(SMH_BANK1)
78   AM_RANGE(0x6000, 0xffff) AM_READ(SMH_ROM)
79ADDRESS_MAP_END
80
81static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 )
82   AM_RANGE(0x0000, 0x1dff) AM_WRITE(SMH_RAM)
83   AM_RANGE(0x1e00, 0x1fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
84   AM_RANGE(0x2000, 0x27ff) AM_WRITE(gng_fgvideoram_w) AM_BASE(&gng_fgvideoram)
85   AM_RANGE(0x2800, 0x2fff) AM_WRITE(gng_bgvideoram_w) AM_BASE(&gng_bgvideoram)
8679   AM_RANGE(0x3800, 0x38ff) AM_WRITE(paletteram_RRRRGGGGBBBBxxxx_split2_w) AM_BASE(&paletteram_2)
8780   AM_RANGE(0x3900, 0x39ff) AM_WRITE(paletteram_RRRRGGGGBBBBxxxx_split1_w) AM_BASE(&paletteram)
8881   AM_RANGE(0x3a00, 0x3a00) AM_WRITE(soundlatch_w)
8982   AM_RANGE(0x3b08, 0x3b09) AM_WRITE(gng_bgscrollx_w)
9083   AM_RANGE(0x3b0a, 0x3b0b) AM_WRITE(gng_bgscrolly_w)
91   AM_RANGE(0x3c00, 0x3c00) AM_WRITENOP  /* watchdog? */
84   AM_RANGE(0x3c00, 0x3c00) AM_NOP /* watchdog? */
9285   AM_RANGE(0x3d00, 0x3d00) AM_WRITE(gng_flipscreen_w)
9386//  { 0x3d01, 0x3d01, reset sound cpu?
9487   AM_RANGE(0x3d02, 0x3d03) AM_WRITE(gng_coin_counter_w)
9588   AM_RANGE(0x3e00, 0x3e00) AM_WRITE(gng_bankswitch_w)
96   AM_RANGE(0x4000, 0xffff) AM_WRITE(SMH_ROM)
89   AM_RANGE(0x4000, 0x5fff) AM_ROMBANK(1)
90   AM_RANGE(0x6000, 0xffff) AM_ROM
9791ADDRESS_MAP_END
9892
9993
10094
101static ADDRESS_MAP_START( sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
102   AM_RANGE(0xc000, 0xc7ff) AM_READ(SMH_RAM)
95static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 )
96   AM_RANGE(0x0000, 0x7fff) AM_ROM
97   AM_RANGE(0xc000, 0xc7ff) AM_RAM
10398   AM_RANGE(0xc800, 0xc800) AM_READ(soundlatch_r)
104   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
105ADDRESS_MAP_END
106
107static ADDRESS_MAP_START( sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
108   AM_RANGE(0xc000, 0xc7ff) AM_WRITE(SMH_RAM)
10999   AM_RANGE(0xe000, 0xe001) AM_DEVWRITE("ym1", ym2203_w)
110100   AM_RANGE(0xe002, 0xe003) AM_DEVWRITE("ym2", ym2203_w)
111   AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM)
112101ADDRESS_MAP_END
113102
114103
r4679r4680
343332
344333   /* basic machine hardware */
345334   MDRV_CPU_ADD("maincpu", M6809, 1500000)         /* 1.5 MHz ? */
346   MDRV_CPU_PROGRAM_MAP(readmem,writemem)
335   MDRV_CPU_PROGRAM_MAP(gng_map,0)
347336   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
348337
349338   MDRV_CPU_ADD("audiocpu", Z80, 3000000)
350   MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem)
339   MDRV_CPU_PROGRAM_MAP(sound_map,0)
351340   MDRV_CPU_VBLANK_INT_HACK(irq0_line_hold,4)
352341
353342   MDRV_MACHINE_START(gng)
r4679r4680
702691
703692static DRIVER_INIT( diamond )
704693{
705   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x6000, 0x6000, 0, 0, diamond_hack_r);
694   memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x6000, 0x6000, 0, 0, diamond_hack_r);
706695}
707696
708697
r4679r4680
716705GAME( 1985, makaimuc, gng, gng, makaimur, 0,      ROT0, "Capcom", "Makai-Mura (Japan Revision C)", GAME_SUPPORTS_SAVE )
717706GAME( 1985, makaimug, gng, gng, makaimur, 0,      ROT0, "Capcom", "Makai-Mura (Japan Revision G)", GAME_SUPPORTS_SAVE )
718707GAME( 1989, diamond,  0,   gng, diamond,  diamond, ROT0, "KH Video", "Diamond Run", GAME_SUPPORTS_SAVE )
719
src/mame/drivers/onetwo.c
r4679r4680
6262static WRITE8_HANDLER( onetwo_fgram_w )
6363{
6464   fgram[offset] = data;
65   tilemap_mark_tile_dirty(fg_tilemap, offset/2);
65   tilemap_mark_tile_dirty(fg_tilemap, offset / 2);
6666}
6767
6868static WRITE8_HANDLER( onetwo_cpubank_w )
6969{
7070   UINT8 *RAM = memory_region(space->machine, "maincpu") + 0x10000;
7171
72   memory_set_bankptr(space->machine, 1,&RAM[data * 0x4000]);
72   memory_set_bankptr(space->machine, 1, &RAM[data * 0x4000]);
7373}
7474
7575static WRITE8_HANDLER( onetwo_coin_counters_w )
r4679r4680
8282static WRITE8_HANDLER( onetwo_soundlatch_w )
8383{
8484   soundlatch_w(space, 0, data);
85   cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_NMI, PULSE_LINE);
85   cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
8686}
8787
8888static void setColor(running_machine *machine, int offset)
8989{
90      int r,g,b;
91      r=paletteram[offset]&0x1f;
92      g=paletteram_2[offset]&0x1f;
93      b=((paletteram[offset]&0x60)>>2)|((paletteram_2[offset]&0xe0)>>5);
94      palette_set_color_rgb(machine,offset,pal5bit(r),pal5bit(g),pal5bit(b));
90      int r, g, b;
91      r = paletteram[offset] & 0x1f;
92      g = paletteram_2[offset] & 0x1f;
93      b = ((paletteram[offset] & 0x60) >> 2) | ((paletteram_2[offset] & 0xe0) >> 5);
94      palette_set_color_rgb(machine, offset, pal5bit(r), pal5bit(g), pal5bit(b));
9595}
9696
9797static WRITE8_HANDLER(palette1_w)
9898{
99   paletteram[offset]=data;
99   paletteram[offset] = data;
100100   setColor(space->machine, offset);
101101}
102102
103103static WRITE8_HANDLER(palette2_w)
104104{
105   paletteram_2[offset]=data;
105   paletteram_2[offset] = data;
106106   setColor(space->machine, offset);
107107}
108108
r4679r4680
257257
258258static VIDEO_START( onetwo )
259259{
260   fg_tilemap = tilemap_create(machine, get_fg_tile_info,tilemap_scan_rows,8,8,64,32);
260   fg_tilemap = tilemap_create(machine, get_fg_tile_info, tilemap_scan_rows, 8, 8, 64, 32);
261261}
262262
263263static VIDEO_UPDATE( onetwo )
264264{
265   tilemap_draw(bitmap,cliprect,fg_tilemap,0,0);
265   tilemap_draw(bitmap, cliprect, fg_tilemap, 0, 0);
266266   return 0;
267267}
268268
269269static void irqhandler(const device_config *device, int linestate)
270270{
271   cpu_set_input_line(device->machine->cpu[1],0,linestate);
271   cputag_set_input_line(device->machine, "audiocpu", 0, linestate);
272272}
273273
274274static const ym3812_interface ym3812_config =
src/mame/drivers/ojankohs.c
r4679r4680
4141PALETTE_INIT( ojankoy );
4242VIDEO_START( ojankohs );
4343VIDEO_START( ojankoy );
44READ8_HANDLER( ojankohs_palette_r );
4544WRITE8_HANDLER( ojankohs_palette_w );
4645WRITE8_HANDLER( ccasino_palette_w );
47READ8_HANDLER( ojankohs_videoram_r );
4846WRITE8_HANDLER( ojankohs_videoram_w );
49READ8_HANDLER( ojankohs_colorram_r );
5047WRITE8_HANDLER( ojankohs_colorram_w );
5148WRITE8_HANDLER( ojankohs_gfxreg_w );
5249WRITE8_HANDLER( ojankohs_flipscreen_w );
r4679r4680
120117
121118   /* generate an NMI if we're out of data */
122119   if (!ojankohs_vclk_left)
123      cpu_set_input_line(device->machine->cpu[0], INPUT_LINE_NMI, PULSE_LINE);
120      cputag_set_input_line(device->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
124121}
125122
126123static WRITE8_HANDLER( ojankoc_ctrl_w )
r4679r4680
223220}
224221
225222
226static ADDRESS_MAP_START( readmem_ojankohs, ADDRESS_SPACE_PROGRAM, 8 )
227   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
228   AM_RANGE(0x8000, 0x8fff) AM_READ(ojankohs_videoram_r)
229   AM_RANGE(0x9000, 0x9fff) AM_READ(ojankohs_colorram_r)
230   AM_RANGE(0xa000, 0xb7ff) AM_READ(SMH_RAM)
231   AM_RANGE(0xb800, 0xbfff) AM_READ(ojankohs_palette_r)
232   AM_RANGE(0xc000, 0xffff) AM_READ(SMH_BANK1)
223static ADDRESS_MAP_START( ojankohs_map, ADDRESS_SPACE_PROGRAM, 8 )
224   AM_RANGE(0x0000, 0x7fff) AM_ROM
225   AM_RANGE(0x8000, 0x8fff) AM_RAM_WRITE(ojankohs_videoram_w)
226   AM_RANGE(0x9000, 0x9fff) AM_RAM_WRITE(ojankohs_colorram_w)
227   AM_RANGE(0xa000, 0xb7ff) AM_RAM AM_BASE(&generic_nvram) AM_SIZE(&generic_nvram_size)
228   AM_RANGE(0xb800, 0xbfff) AM_RAM_WRITE(ojankohs_palette_w)
229   AM_RANGE(0xc000, 0xffff) AM_ROMBANK(1)
233230ADDRESS_MAP_END
234231
235static ADDRESS_MAP_START( writemem_ojankohs, ADDRESS_SPACE_PROGRAM, 8 )
236   AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM)
237   AM_RANGE(0x8000, 0x8fff) AM_WRITE(ojankohs_videoram_w)
238   AM_RANGE(0x9000, 0x9fff) AM_WRITE(ojankohs_colorram_w)
239   AM_RANGE(0xa000, 0xb7ff) AM_WRITE(SMH_RAM) AM_BASE(&generic_nvram) AM_SIZE(&generic_nvram_size)
240   AM_RANGE(0xb800, 0xbfff) AM_WRITE(ojankohs_palette_w)
241   AM_RANGE(0xc000, 0xffff) AM_WRITE(SMH_ROM)
242ADDRESS_MAP_END
243232
244static ADDRESS_MAP_START( readmem_ojankoy, ADDRESS_SPACE_PROGRAM, 8 )
245   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
246   AM_RANGE(0x8000, 0x9fff) AM_READ(ojankohs_videoram_r)
247   AM_RANGE(0xa000, 0xafff) AM_READ(ojankohs_colorram_r)
248   AM_RANGE(0xb000, 0xbfff) AM_READ(SMH_RAM)
249   AM_RANGE(0xc000, 0xffff) AM_READ(SMH_BANK1)
233static ADDRESS_MAP_START( ojankoy_map, ADDRESS_SPACE_PROGRAM, 8 )
234   AM_RANGE(0x0000, 0x7fff) AM_ROM
235   AM_RANGE(0x8000, 0x9fff) AM_RAM_WRITE(ojankohs_videoram_w)
236   AM_RANGE(0xa000, 0xafff) AM_RAM_WRITE(ojankohs_colorram_w)
237   AM_RANGE(0xb000, 0xbfff) AM_RAM AM_BASE(&generic_nvram) AM_SIZE(&generic_nvram_size)
238   AM_RANGE(0xc000, 0xffff) AM_ROMBANK(1)
250239ADDRESS_MAP_END
251240
252static ADDRESS_MAP_START( writemem_ojankoy, ADDRESS_SPACE_PROGRAM, 8 )
253   AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM)
254   AM_RANGE(0x8000, 0x9fff) AM_WRITE(ojankohs_videoram_w)
255   AM_RANGE(0xa000, 0xafff) AM_WRITE(ojankohs_colorram_w)
256   AM_RANGE(0xb000, 0xbfff) AM_WRITE(SMH_RAM) AM_BASE(&generic_nvram) AM_SIZE(&generic_nvram_size)
257   AM_RANGE(0xc000, 0xffff) AM_WRITE(SMH_ROM)
258ADDRESS_MAP_END
259241
260static ADDRESS_MAP_START( readmem_ojankoc, ADDRESS_SPACE_PROGRAM, 8 )
261   AM_RANGE(0x0000, 0x77ff) AM_READ(SMH_ROM)
262   AM_RANGE(0x7800, 0x7fff) AM_READ(SMH_RAM)
263   AM_RANGE(0x8000, 0xffff) AM_READ(SMH_BANK1)
242static ADDRESS_MAP_START( ojankoc_map, ADDRESS_SPACE_PROGRAM, 8 )
243   AM_RANGE(0x0000, 0x77ff) AM_ROM
244   AM_RANGE(0x7800, 0x7fff) AM_RAM AM_BASE(&generic_nvram) AM_SIZE(&generic_nvram_size)
245   AM_RANGE(0x8000, 0xffff) AM_ROMBANK(1) AM_WRITE(ojankoc_videoram_w)
264246ADDRESS_MAP_END
265247
266static ADDRESS_MAP_START( writemem_ojankoc, ADDRESS_SPACE_PROGRAM, 8 )
267   AM_RANGE(0x0000, 0x77ff) AM_WRITE(SMH_ROM)
268   AM_RANGE(0x7800, 0x7fff) AM_WRITE(SMH_RAM) AM_BASE(&generic_nvram) AM_SIZE(&generic_nvram_size)
269   AM_RANGE(0x8000, 0xffff) AM_WRITE(ojankoc_videoram_w)
270ADDRESS_MAP_END
271248
272
273249static ADDRESS_MAP_START( ojankohs_io_map, ADDRESS_SPACE_IO, 8 )
274250   ADDRESS_MAP_GLOBAL_MASK(0xff)
275251   AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0") AM_WRITE(ojankohs_portselect_w)
r4679r4680
843819
844820   /* basic machine hardware */
845821   MDRV_CPU_ADD("maincpu", Z80,12000000/2)      /* 6.00 MHz ? */
846   MDRV_CPU_PROGRAM_MAP(readmem_ojankohs,writemem_ojankohs)
822   MDRV_CPU_PROGRAM_MAP(ojankohs_map,0)
847823   MDRV_CPU_IO_MAP(ojankohs_io_map,0)
848824   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
849825
r4679r4680
880856
881857   /* basic machine hardware */
882858   MDRV_CPU_ADD("maincpu", Z80,12000000/2)      /* 6.00 MHz ? */
883   MDRV_CPU_PROGRAM_MAP(readmem_ojankoy,writemem_ojankoy)
859   MDRV_CPU_PROGRAM_MAP(ojankoy_map,0)
884860   MDRV_CPU_IO_MAP(ojankoy_io_map,0)
885861   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
886862
r4679r4680
918894
919895   /* basic machine hardware */
920896   MDRV_CPU_ADD("maincpu", Z80,12000000/2)      /* 6.00 MHz ? */
921   MDRV_CPU_PROGRAM_MAP(readmem_ojankoy,writemem_ojankoy)
897   MDRV_CPU_PROGRAM_MAP(ojankoy_map,0)
922898   MDRV_CPU_IO_MAP(ccasino_io_map,0)
923899   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
924900
r4679r4680
955931
956932   /* basic machine hardware */
957933   MDRV_CPU_ADD("maincpu", Z80,8000000/2)         /* 4.00 MHz */
958   MDRV_CPU_PROGRAM_MAP(readmem_ojankoc,writemem_ojankoc)
934   MDRV_CPU_PROGRAM_MAP(ojankoc_map,0)
959935   MDRV_CPU_IO_MAP(ojankoc_io_map,0)
960936   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
961937
src/mame/drivers/nbmj8891.c
r4679r4680
332332}
333333
334334
335static ADDRESS_MAP_START( readmem_gionbana, ADDRESS_SPACE_PROGRAM, 8 )
336   AM_RANGE(0x0000, 0xefff) AM_READ(SMH_ROM)
337   AM_RANGE(0xf000, 0xf00f) AM_READ(nbmj8891_clut_r)
338   AM_RANGE(0xf400, 0xf5ff) AM_READ(nbmj8891_palette_type1_r)
339   AM_RANGE(0xf800, 0xffff) AM_READ(SMH_RAM)
335static ADDRESS_MAP_START( gionbana_map, ADDRESS_SPACE_PROGRAM, 8 )
336   AM_RANGE(0x0000, 0xefff) AM_ROM
337   AM_RANGE(0xf000, 0xf00f) AM_READWRITE(nbmj8891_clut_r,nbmj8891_clut_w)
338   AM_RANGE(0xf400, 0xf5ff) AM_READWRITE(nbmj8891_palette_type1_r,nbmj8891_palette_type1_w)
339   AM_RANGE(0xf800, 0xffff) AM_RAM AM_BASE(&nb1413m3_nvram) AM_SIZE(&nb1413m3_nvram_size)
340340ADDRESS_MAP_END
341341
342static ADDRESS_MAP_START( writemem_gionbana, ADDRESS_SPACE_PROGRAM, 8 )
343   AM_RANGE(0x0000, 0xefff) AM_WRITE(SMH_ROM)
344   AM_RANGE(0xf000, 0xf00f) AM_WRITE(nbmj8891_clut_w)
345   AM_RANGE(0xf400, 0xf5ff) AM_WRITE(nbmj8891_palette_type1_w)
346   AM_RANGE(0xf800, 0xffff) AM_WRITE(SMH_RAM) AM_BASE(&nb1413m3_nvram) AM_SIZE(&nb1413m3_nvram_size)
342static ADDRESS_MAP_START( mgion_map, ADDRESS_SPACE_PROGRAM, 8 )
343   AM_RANGE(0x0000, 0xefff) AM_ROM
344   AM_RANGE(0xf000, 0xf1ff) AM_READWRITE(nbmj8891_palette_type1_r,nbmj8891_palette_type1_w)
345   AM_RANGE(0xf400, 0xf40f) AM_READWRITE(nbmj8891_clut_r,nbmj8891_clut_w)
346   AM_RANGE(0xf800, 0xffff) AM_RAM AM_BASE(&nb1413m3_nvram) AM_SIZE(&nb1413m3_nvram_size)
347347ADDRESS_MAP_END
348348
349static ADDRESS_MAP_START( writemem_mgion, ADDRESS_SPACE_PROGRAM, 8 )
350   AM_RANGE(0x0000, 0xefff) AM_WRITE(SMH_ROM)
351   AM_RANGE(0xf000, 0xf1ff) AM_WRITE(nbmj8891_palette_type1_w)
352   AM_RANGE(0xf400, 0xf40f) AM_WRITE(nbmj8891_clut_w)
353   AM_RANGE(0xf800, 0xffff) AM_WRITE(SMH_RAM) AM_BASE(&nb1413m3_nvram) AM_SIZE(&nb1413m3_nvram_size)
349static ADDRESS_MAP_START( omotesnd_map, ADDRESS_SPACE_PROGRAM, 8 )
350   AM_RANGE(0x0000, 0xefff) AM_ROM
351   AM_RANGE(0xf400, 0xf5ff) AM_READWRITE(nbmj8891_palette_type1_r,nbmj8891_palette_type1_w)
352   AM_RANGE(0xf800, 0xffff) AM_RAM AM_BASE(&nb1413m3_nvram) AM_SIZE(&nb1413m3_nvram_size)
354353ADDRESS_MAP_END
355354
356static ADDRESS_MAP_START( readmem_omotesnd, ADDRESS_SPACE_PROGRAM, 8 )
357   AM_RANGE(0x0000, 0xefff) AM_READ(SMH_ROM)
358   AM_RANGE(0xf400, 0xf5ff) AM_READ(nbmj8891_palette_type1_r)
359   AM_RANGE(0xf800, 0xffff) AM_READ(SMH_RAM)
355static ADDRESS_MAP_START( hanamomo_map, ADDRESS_SPACE_PROGRAM, 8 )
356   AM_RANGE(0x0000, 0xefff) AM_ROM
357   AM_RANGE(0xf000, 0xf1ff) AM_READWRITE(nbmj8891_palette_type1_r,nbmj8891_palette_type1_w)
358   AM_RANGE(0xf400, 0xf40f) AM_READWRITE(nbmj8891_clut_r,nbmj8891_clut_w)
359   AM_RANGE(0xf800, 0xffff) AM_RAM
360360ADDRESS_MAP_END
361361
362static ADDRESS_MAP_START( writemem_omotesnd, ADDRESS_SPACE_PROGRAM, 8 )
363   AM_RANGE(0x0000, 0xefff) AM_WRITE(SMH_ROM)
364   AM_RANGE(0xf400, 0xf5ff) AM_WRITE(nbmj8891_palette_type1_w)
365   AM_RANGE(0xf800, 0xffff) AM_WRITE(SMH_RAM) AM_BASE(&nb1413m3_nvram) AM_SIZE(&nb1413m3_nvram_size)
362static ADDRESS_MAP_START( scandalm_map, ADDRESS_SPACE_PROGRAM, 8 )
363   AM_RANGE(0x0000, 0xefff) AM_ROM
364   AM_RANGE(0xf400, 0xf5ff) AM_READWRITE(nbmj8891_palette_type1_r,nbmj8891_palette_type1_w)
365   AM_RANGE(0xf800, 0xffff) AM_RAM AM_BASE(&nb1413m3_nvram) AM_SIZE(&nb1413m3_nvram_size)
366366ADDRESS_MAP_END
367367
368static ADDRESS_MAP_START( readmem_hanamomo, ADDRESS_SPACE_PROGRAM, 8 )
369   AM_RANGE(0x0000, 0xefff) AM_READ(SMH_ROM)
370   AM_RANGE(0xf000, 0xf1ff) AM_READ(nbmj8891_palette_type1_r)
371   AM_RANGE(0xf400, 0xf40f) AM_READ(nbmj8891_clut_r)
372   AM_RANGE(0xf800, 0xffff) AM_READ(SMH_RAM)
368static ADDRESS_MAP_START( club90s_map, ADDRESS_SPACE_PROGRAM, 8 )
369   AM_RANGE(0x0000, 0xefff) AM_ROM
370   AM_RANGE(0xf000, 0xf7ff) AM_RAM
371   AM_RANGE(0xf800, 0xf80f) AM_READWRITE(nbmj8891_clut_r,nbmj8891_clut_w)
372   AM_RANGE(0xfc00, 0xfdff) AM_READWRITE(nbmj8891_palette_type1_r,nbmj8891_palette_type1_w)
373373ADDRESS_MAP_END
374374
375static ADDRESS_MAP_START( writemem_hanamomo, ADDRESS_SPACE_PROGRAM, 8 )
376   AM_RANGE(0x0000, 0xefff) AM_WRITE(SMH_ROM)
377   AM_RANGE(0xf000, 0xf1ff) AM_WRITE(nbmj8891_palette_type1_w)
378   AM_RANGE(0xf400, 0xf40f) AM_WRITE(nbmj8891_clut_w)
379   AM_RANGE(0xf800, 0xffff) AM_WRITE(SMH_RAM)
375static ADDRESS_MAP_START( lovehous_map, ADDRESS_SPACE_PROGRAM, 8 )
376   AM_RANGE(0x0000, 0xefff) AM_ROM
377   AM_RANGE(0xf000, 0xf00f) AM_READWRITE(nbmj8891_clut_r,nbmj8891_clut_w)
378   AM_RANGE(0xf400, 0xf5ff) AM_READWRITE(nbmj8891_palette_type2_r,nbmj8891_palette_type2_w)
379   AM_RANGE(0xf800, 0xffff) AM_RAM AM_BASE(&nb1413m3_nvram) AM_SIZE(&nb1413m3_nvram_size)
380380ADDRESS_MAP_END
381381
382static ADDRESS_MAP_START( readmem_scandalm, ADDRESS_SPACE_PROGRAM, 8 )
383   AM_RANGE(0x0000, 0xefff) AM_READ(SMH_ROM)
384   AM_RANGE(0xf400, 0xf5ff) AM_READ(nbmj8891_palette_type1_r)
385   AM_RANGE(0xf800, 0xffff) AM_READ(SMH_RAM)
382static ADDRESS_MAP_START( maiko_map, ADDRESS_SPACE_PROGRAM, 8 )
383   AM_RANGE(0x0000, 0xefff) AM_ROM
384   AM_RANGE(0xf000, 0xf1ff) AM_READWRITE(nbmj8891_palette_type2_r,nbmj8891_palette_type2_w)
385   AM_RANGE(0xf400, 0xf40f) AM_READWRITE(nbmj8891_clut_r,nbmj8891_clut_w)
386   AM_RANGE(0xf800, 0xffff) AM_RAM
386387ADDRESS_MAP_END
387388
388static ADDRESS_MAP_START( writemem_scandalm, ADDRESS_SPACE_PROGRAM, 8 )
389   AM_RANGE(0x0000, 0xefff) AM_WRITE(SMH_ROM)
390   AM_RANGE(0xf400, 0xf5ff) AM_WRITE(nbmj8891_palette_type1_w)
391   AM_RANGE(0xf800, 0xffff) AM_WRITE(SMH_RAM) AM_BASE(&nb1413m3_nvram) AM_SIZE(&nb1413m3_nvram_size)
392ADDRESS_MAP_END
393
394static ADDRESS_MAP_START( readmem_club90s, ADDRESS_SPACE_PROGRAM, 8 )
395   AM_RANGE(0x0000, 0xefff) AM_READ(SMH_ROM)
396   AM_RANGE(0xf000, 0xf7ff) AM_READ(SMH_RAM)
397   AM_RANGE(0xf800, 0xf80f) AM_READ(nbmj8891_clut_r)
398   AM_RANGE(0xfc00, 0xfdff) AM_READ(nbmj8891_palette_type1_r)
399ADDRESS_MAP_END
400
401static ADDRESS_MAP_START( writemem_club90s, ADDRESS_SPACE_PROGRAM, 8 )
402   AM_RANGE(0x0000, 0xefff) AM_WRITE(SMH_ROM)
403   AM_RANGE(0xf000, 0xf7ff) AM_WRITE(SMH_RAM)
404   AM_RANGE(0xf800, 0xf80f) AM_WRITE(nbmj8891_clut_w)
405   AM_RANGE(0xfc00, 0xfdff) AM_WRITE(nbmj8891_palette_type1_w)
406ADDRESS_MAP_END
407
408static ADDRESS_MAP_START( readmem_lovehous, ADDRESS_SPACE_PROGRAM, 8 )
409   AM_RANGE(0x0000, 0xefff) AM_READ(SMH_ROM)
410   AM_RANGE(0xf000, 0xf00f) AM_READ(nbmj8891_clut_r)
411   AM_RANGE(0xf400, 0xf5ff) AM_READ(nbmj8891_palette_type2_r)
412   AM_RANGE(0xf800, 0xffff) AM_READ(SMH_RAM)
413ADDRESS_MAP_END
414
415static ADDRESS_MAP_START( writemem_lovehous, ADDRESS_SPACE_PROGRAM, 8 )
416   AM_RANGE(0x0000, 0xefff) AM_WRITE(SMH_ROM)
417   AM_RANGE(0xf000, 0xf00f) AM_WRITE(nbmj8891_clut_w)
418   AM_RANGE(0xf400, 0xf5ff) AM_WRITE(nbmj8891_palette_type2_w)
419   AM_RANGE(0xf800, 0xffff) AM_WRITE(SMH_RAM) AM_BASE(&nb1413m3_nvram) AM_SIZE(&nb1413m3_nvram_size)
420ADDRESS_MAP_END
421
422static ADDRESS_MAP_START( readmem_maiko, ADDRESS_SPACE_PROGRAM, 8 )
423   AM_RANGE(0x0000, 0xefff) AM_READ(SMH_ROM)
424   AM_RANGE(0xf000, 0xf1ff) AM_READ(nbmj8891_palette_type2_r)
425   AM_RANGE(0xf400, 0xf40f) AM_READ(nbmj8891_clut_r)
426   AM_RANGE(0xf800, 0xffff) AM_READ(SMH_RAM)
427ADDRESS_MAP_END
428
429static ADDRESS_MAP_START( writemem_maiko, ADDRESS_SPACE_PROGRAM, 8 )
430   AM_RANGE(0x0000, 0xefff) AM_WRITE(SMH_ROM)
431   AM_RANGE(0xf000, 0xf1ff) AM_WRITE(nbmj8891_palette_type2_w)
432   AM_RANGE(0xf400, 0xf40f) AM_WRITE(nbmj8891_clut_w)
433   AM_RANGE(0xf800, 0xffff) AM_WRITE(SMH_RAM)
434ADDRESS_MAP_END
435
436static ADDRESS_MAP_START( hnxmasev_mem, ADDRESS_SPACE_PROGRAM, 8 )
389static ADDRESS_MAP_START( hnxmasev_map, ADDRESS_SPACE_PROGRAM, 8 )
437390   AM_RANGE(0x0000, 0xefff) AM_ROM
438391   AM_RANGE(0xf200, 0xf3ff) AM_READWRITE(nbmj8891_palette_type2_r,nbmj8891_palette_type2_w)
439392   AM_RANGE(0xf700, 0xf70f) AM_READWRITE(nbmj8891_clut_r,nbmj8891_clut_w)
440393   AM_RANGE(0xf800, 0xffff) AM_RAM
441394ADDRESS_MAP_END
442395
443static ADDRESS_MAP_START( hnageman_mem, ADDRESS_SPACE_PROGRAM, 8 )
396static ADDRESS_MAP_START( hnageman_map, ADDRESS_SPACE_PROGRAM, 8 )
444397   AM_RANGE(0x0000, 0xefff) AM_ROM
445   AM_RANGE(0xf400, 0xf5ff) AM_READWRITE(nbmj8891_palette_type2_r,nbmj8891_palette_type2_w)
446398   AM_RANGE(0xf000, 0xf00f) AM_READWRITE(nbmj8891_clut_r,nbmj8891_clut_w)
399   AM_RANGE(0xf400, 0xf5ff) AM_READWRITE(nbmj8891_palette_type2_r,nbmj8891_palette_type2_w)
447400   AM_RANGE(0xf800, 0xffff) AM_RAM
448401ADDRESS_MAP_END
449402
450static ADDRESS_MAP_START( writemem_mmaiko, ADDRESS_SPACE_PROGRAM, 8 )
451   AM_RANGE(0x0000, 0xefff) AM_WRITE(SMH_ROM)
452   AM_RANGE(0xf000, 0xf1ff) AM_WRITE(nbmj8891_palette_type2_w)
453   AM_RANGE(0xf400, 0xf40f) AM_WRITE(nbmj8891_clut_w)
454   AM_RANGE(0xf800, 0xffff) AM_WRITE(SMH_RAM) AM_BASE(&nb1413m3_nvram) AM_SIZE(&nb1413m3_nvram_size)
403static ADDRESS_MAP_START( mmaiko_map, ADDRESS_SPACE_PROGRAM, 8 )
404   AM_RANGE(0x0000, 0xefff) AM_ROM
405   AM_RANGE(0xf000, 0xf1ff) AM_READWRITE(nbmj8891_palette_type2_r,nbmj8891_palette_type2_w)
406   AM_RANGE(0xf400, 0xf40f) AM_READWRITE(nbmj8891_clut_r,nbmj8891_clut_w)
407   AM_RANGE(0xf800, 0xffff) AM_RAM AM_BASE(&nb1413m3_nvram) AM_SIZE(&nb1413m3_nvram_size)
455408ADDRESS_MAP_END
456409
457static ADDRESS_MAP_START( readmem_hanaoji, ADDRESS_SPACE_PROGRAM, 8 )
458   AM_RANGE(0x0000, 0xefff) AM_READ(SMH_ROM)
459   AM_RANGE(0xf200, 0xf3ff) AM_READ(nbmj8891_palette_type2_r)
460   AM_RANGE(0xf700, 0xf70f) AM_READ(nbmj8891_clut_r)
461   AM_RANGE(0xf800, 0xffff) AM_READ(SMH_RAM)
410static ADDRESS_MAP_START( hanaoji_map, ADDRESS_SPACE_PROGRAM, 8 )
411   AM_RANGE(0x0000, 0xefff) AM_ROM
412   AM_RANGE(0xf200, 0xf3ff) AM_READWRITE(nbmj8891_palette_type2_r,nbmj8891_palette_type2_w)
413   AM_RANGE(0xf700, 0xf70f) AM_READWRITE(nbmj8891_clut_r,nbmj8891_clut_w)
414   AM_RANGE(0xf800, 0xffff) AM_RAM AM_BASE(&nb1413m3_nvram) AM_SIZE(&nb1413m3_nvram_size)
462415ADDRESS_MAP_END
463416
464static ADDRESS_MAP_START( writemem_hanaoji, ADDRESS_SPACE_PROGRAM, 8 )
465   AM_RANGE(0x0000, 0xefff) AM_WRITE(SMH_ROM)
466   AM_RANGE(0xf200, 0xf3ff) AM_WRITE(nbmj8891_palette_type2_w)
467   AM_RANGE(0xf700, 0xf70f) AM_WRITE(nbmj8891_clut_w)
468   AM_RANGE(0xf800, 0xffff) AM_WRITE(SMH_RAM) AM_BASE(&nb1413m3_nvram) AM_SIZE(&nb1413m3_nvram_size)
469ADDRESS_MAP_END
470
471417static READ8_HANDLER( taiwanmb_unk_r )
472418{
473419   return 0x00;                                       // MCU or 1413M3 STATUS?
474420}
475421
476static ADDRESS_MAP_START( readmem_taiwanmb, ADDRESS_SPACE_PROGRAM, 8 )
477   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
478   AM_RANGE(0xec00, 0xedff) AM_READ(nbmj8891_palette_type3_r)
479   AM_RANGE(0xf800, 0xfeff) AM_READ(SMH_RAM)
480   AM_RANGE(0xff00, 0xff1f) AM_READNOP                  // ?
422static ADDRESS_MAP_START( taiwanmb_map, ADDRESS_SPACE_PROGRAM, 8 )
423   AM_RANGE(0x0000, 0x7fff) AM_ROM
424   AM_RANGE(0xec00, 0xedff) AM_READWRITE(nbmj8891_palette_type3_r,nbmj8891_palette_type3_w)
425   AM_RANGE(0xf800, 0xfeff) AM_RAM AM_BASE(&nb1413m3_nvram) AM_SIZE(&nb1413m3_nvram_size)
426   AM_RANGE(0xff00, 0xff1f) AM_NOP                           // ?
481427   AM_RANGE(0xff20, 0xff20) AM_READ(taiwanmb_unk_r)            // MCU or 1413M3 STATUS? (return != 0x00 then loop)
482   AM_RANGE(0xff21, 0xff2f) AM_READNOP                  // ?
483   AM_RANGE(0xff30, 0xffff) AM_READ(SMH_RAM)                  //
484ADDRESS_MAP_END
485
486static ADDRESS_MAP_START( writemem_taiwanmb, ADDRESS_SPACE_PROGRAM, 8 )
487   AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM)
488   AM_RANGE(0xec00, 0xedff) AM_WRITE(nbmj8891_palette_type3_w)
489   AM_RANGE(0xf800, 0xfeff) AM_WRITE(SMH_RAM) AM_BASE(&nb1413m3_nvram) AM_SIZE(&nb1413m3_nvram_size)
490   AM_RANGE(0xff00, 0xff1f) AM_WRITENOP                  // ?
491428   AM_RANGE(0xff20, 0xff20) AM_WRITE(nbmj8891_taiwanmb_mcu_w)      // MCU PARAMETER?
492   AM_RANGE(0xff21, 0xff21) AM_WRITENOP                  // blitter parameter set end (write 0x01 only)
429   AM_RANGE(0xff21, 0xff2f) AM_READNOP                        // ?
430   AM_RANGE(0xff21, 0xff21) AM_WRITENOP                     // blitter parameter set end (write 0x01 only)
493431   AM_RANGE(0xff22, 0xff27) AM_WRITE(nbmj8891_taiwanmb_blitter_w)   // blitter parameter
494432   AM_RANGE(0xff28, 0xff28) AM_WRITE(nbmj8891_romsel_w)         // gfx rombank select
495433   AM_RANGE(0xff29, 0xff29) AM_WRITE(nbmj8891_taiwanmb_gfxflag_w)   // screen flip flag?
496   AM_RANGE(0xff2a, 0xff2a) AM_WRITENOP                  // not used?
434   AM_RANGE(0xff2a, 0xff2a) AM_WRITENOP                     // not used?
497435   AM_RANGE(0xff2b, 0xff2b) AM_WRITE(nbmj8891_clutsel_w)         // color look up table select
498   AM_RANGE(0xff2c, 0xff2c) AM_WRITENOP                  // blitter parameter set start (write 0xff only)
499   AM_RANGE(0xff2d, 0xff2d) AM_WRITENOP                  // not used?
500   AM_RANGE(0xff2e, 0xff2e) AM_WRITENOP                  // not used?
501   AM_RANGE(0xff2f, 0xff2f) AM_WRITENOP                  // not used?
502   AM_RANGE(0xff30, 0xffff) AM_WRITE(SMH_RAM)                  // RAM?
436   AM_RANGE(0xff2c, 0xff2c) AM_WRITENOP                     // blitter parameter set start (write 0xff only)
437   AM_RANGE(0xff2d, 0xff2d) AM_WRITENOP                     // not used?
438   AM_RANGE(0xff2e, 0xff2e) AM_WRITENOP                     // not used?
439   AM_RANGE(0xff2f, 0xff2f) AM_WRITENOP                     // not used?
440   AM_RANGE(0xff30, 0xffff) AM_RAM                           // RAM?
503441ADDRESS_MAP_END
504442
505443
506static ADDRESS_MAP_START( readport_gionbana, ADDRESS_SPACE_IO, 8 )
444static ADDRESS_MAP_START( gionbana_io_map, ADDRESS_SPACE_IO, 8 )
507445   ADDRESS_MAP_GLOBAL_MASK(0xff)
508446   AM_RANGE(0x00, 0x7f) AM_READ(nb1413m3_sndrom_r)
509   AM_RANGE(0x90, 0x90) AM_READ(nb1413m3_inputport0_r)
510   AM_RANGE(0xa0, 0xa0) AM_READ(nb1413m3_inputport1_r)
511   AM_RANGE(0xb0, 0xb0) AM_READ(nb1413m3_inputport2_r)
512   AM_RANGE(0xc0, 0xc0) AM_READ(nb1413m3_inputport3_r)
513   AM_RANGE(0xf0, 0xf0) AM_READ(nb1413m3_dipsw1_r)
514   AM_RANGE(0xf1, 0xf1) AM_READ(nb1413m3_dipsw2_r)
515ADDRESS_MAP_END
516
517static ADDRESS_MAP_START( writeport_gionbana, ADDRESS_SPACE_IO, 8 )
518   ADDRESS_MAP_GLOBAL_MASK(0xff)
519447   AM_RANGE(0x00, 0x00) AM_WRITE(nb1413m3_nmi_clock_w)
520448   AM_RANGE(0x20, 0x27) AM_WRITE(nbmj8891_blitter_w)
521449   AM_RANGE(0x40, 0x40) AM_WRITE(nbmj8891_clutsel_w)
522450   AM_RANGE(0x60, 0x60) AM_WRITE(nbmj8891_romsel_w)
523451   AM_RANGE(0x70, 0x70) AM_WRITE(nbmj8891_scrolly_w)
524452   AM_RANGE(0x80, 0x81) AM_DEVWRITE("fm", ym3812_w)
525   AM_RANGE(0xa0, 0xa0) AM_WRITE(nb1413m3_inputportsel_w)
526   AM_RANGE(0xb0, 0xb0) AM_WRITE(nb1413m3_sndrombank1_w)
527//  AM_RANGE(0xc0, 0xc0) AM_WRITENOP
453   AM_RANGE(0x90, 0x90) AM_READ(nb1413m3_inputport0_r)
454   AM_RANGE(0xa0, 0xa0) AM_READWRITE(nb1413m3_inputport1_r,nb1413m3_inputportsel_w)
455   AM_RANGE(0xb0, 0xb0) AM_READWRITE(nb1413m3_inputport2_r,nb1413m3_sndrombank1_w)
456   AM_RANGE(0xc0, 0xc0) AM_READ(nb1413m3_inputport3_r) //AM_WRITENOP
528457   AM_RANGE(0xd0, 0xd0) AM_DEVWRITE("dac", DAC_WRITE)
529458   AM_RANGE(0xe0, 0xe0) AM_WRITE(nbmj8891_vramsel_w)
530   AM_RANGE(0xf0, 0xf0) AM_WRITE(nb1413m3_outcoin_w)
459   AM_RANGE(0xf0, 0xf0) AM_READWRITE(nb1413m3_dipsw1_r,nb1413m3_outcoin_w)
460   AM_RANGE(0xf1, 0xf1) AM_READ(nb1413m3_dipsw2_r)
531461ADDRESS_MAP_END
532462
533static ADDRESS_MAP_START( writeport_mgion, ADDRESS_SPACE_IO, 8 )
463static ADDRESS_MAP_START( mgion_io_map, ADDRESS_SPACE_IO, 8 )
534464   ADDRESS_MAP_GLOBAL_MASK(0xff)
465   AM_RANGE(0x00, 0x7f) AM_READ(nb1413m3_sndrom_r)
535466   AM_RANGE(0x00, 0x00) AM_WRITE(nb1413m3_nmi_clock_w)
536467   AM_RANGE(0x30, 0x37) AM_WRITE(nbmj8891_blitter_w)
537468   AM_RANGE(0x40, 0x40) AM_WRITE(nbmj8891_clutsel_w)
538469   AM_RANGE(0x60, 0x60) AM_WRITE(nbmj8891_romsel_w)
539470   AM_RANGE(0x70, 0x70) AM_WRITE(nbmj8891_scrolly_w)
540471   AM_RANGE(0x80, 0x81) AM_DEVWRITE("fm", ym3812_w)
541   AM_RANGE(0xa0, 0xa0) AM_WRITE(nb1413m3_inputportsel_w)
542   AM_RANGE(0xb0, 0xb0) AM_WRITE(nb1413m3_sndrombank1_w)
543//  AM_RANGE(0xc0, 0xc0) AM_WRITENOP
472   AM_RANGE(0x90, 0x90) AM_READ(nb1413m3_inputport0_r)
473   AM_RANGE(0xa0, 0xa0) AM_READWRITE(nb1413m3_inputport1_r,nb1413m3_inputportsel_w)
474   AM_RANGE(0xb0, 0xb0) AM_READWRITE(nb1413m3_inputport2_r,nb1413m3_sndrombank1_w)
475   AM_RANGE(0xc0, 0xc0) AM_READ(nb1413m3_inputport3_r) //AM_WRITENOP
544476   AM_RANGE(0xd0, 0xd0) AM_DEVWRITE("dac", DAC_WRITE)
545477   AM_RANGE(0xe0, 0xe0) AM_WRITE(nbmj8891_vramsel_w)
546   AM_RANGE(0xf0, 0xf0) AM_WRITE(nb1413m3_outcoin_w)
547ADDRESS_MAP_END
548
549static ADDRESS_MAP_START( readport_omotesnd, ADDRESS_SPACE_IO, 8 )
550   ADDRESS_MAP_GLOBAL_MASK(0xff)
551   AM_RANGE(0x00, 0x7f) AM_READ(nb1413m3_sndrom_r)
552   AM_RANGE(0x81, 0x81) AM_DEVREAD("fm", ay8910_r)
553   AM_RANGE(0x90, 0x90) AM_READ(nb1413m3_inputport0_r)
554   AM_RANGE(0xa0, 0xa0) AM_READ(nb1413m3_inputport1_r)
555   AM_RANGE(0xb0, 0xb0) AM_READ(nb1413m3_inputport2_r)
556   AM_RANGE(0xc0, 0xc0) AM_READ(nb1413m3_inputport3_r)
557   AM_RANGE(0xd0, 0xdf) AM_READ(nbmj8891_clut_r)
558   AM_RANGE(0xf0, 0xf0) AM_READ(nb1413m3_dipsw1_r)
478   AM_RANGE(0xf0, 0xf0) AM_READWRITE(nb1413m3_dipsw1_r,nb1413m3_outcoin_w)
559479   AM_RANGE(0xf1, 0xf1) AM_READ(nb1413m3_dipsw2_r)
560480ADDRESS_MAP_END
561481
562static ADDRESS_MAP_START( writeport_omotesnd, ADDRESS_SPACE_IO, 8 )
482static ADDRESS_MAP_START( omotesnd_io_map, ADDRESS_SPACE_IO, 8 )
563483   ADDRESS_MAP_GLOBAL_MASK(0xff)
484   AM_RANGE(0x00, 0x7f) AM_READ(nb1413m3_sndrom_r)
564485   AM_RANGE(0x00, 0x07) AM_WRITE(nbmj8891_blitter_w)
565486   AM_RANGE(0x30, 0x30) AM_WRITE(nbmj8891_vramsel_w)
566487   AM_RANGE(0x10, 0x10) AM_WRITE(nbmj8891_romsel_w)
r4679r4680
568489   AM_RANGE(0x40, 0x4f) AM_WRITE(nbmj8891_clut_w)
569490//  AM_RANGE(0x50, 0x50) AM_WRITE(nb1413m3_nmi_clock_w)
570491   AM_RANGE(0x70, 0x70) AM_WRITE(nbmj8891_scrolly_w)
492   AM_RANGE(0x81, 0x81) AM_DEVREAD("fm", ay8910_r)
571493   AM_RANGE(0x82, 0x83) AM_DEVWRITE("fm", ay8910_data_address_w)
572   AM_RANGE(0x90, 0x90) AM_WRITENOP
573   AM_RANGE(0xa0, 0xa0) AM_WRITE(nb1413m3_inputportsel_w)
574   AM_RANGE(0xb0, 0xb0) AM_WRITE(nb1413m3_sndrombank1_w)
575AM_RANGE(0xc0, 0xc0) AM_WRITENOP
494   AM_RANGE(0x90, 0x90) AM_READ(nb1413m3_inputport0_r) AM_WRITENOP
495   AM_RANGE(0xa0, 0xa0) AM_READWRITE(nb1413m3_inputport1_r,nb1413m3_inputportsel_w)
496   AM_RANGE(0xb0, 0xb0) AM_READWRITE(nb1413m3_inputport2_r,nb1413m3_sndrombank1_w)
497   AM_RANGE(0xc0, 0xc0) AM_READ(nb1413m3_inputport3_r) AM_WRITENOP
498   AM_RANGE(0xd0, 0xdf) AM_READ(nbmj8891_clut_r)
576499   AM_RANGE(0xd0, 0xd0) AM_DEVWRITE("dac", DAC_WRITE)
577   AM_RANGE(0xf0, 0xf0) AM_WRITE(nb1413m3_outcoin_w)
500   AM_RANGE(0xf0, 0xf0) AM_READWRITE(nb1413m3_dipsw1_r,nb1413m3_outcoin_w)
501   AM_RANGE(0xf1, 0xf1) AM_READ(nb1413m3_dipsw2_r)
578502ADDRESS_MAP_END
579503
580static ADDRESS_MAP_START( writeport_hanamomo, ADDRESS_SPACE_IO, 8 )
504static ADDRESS_MAP_START( hanamomo_io_map, ADDRESS_SPACE_IO, 8 )
581505   ADDRESS_MAP_GLOBAL_MASK(0xff)
506   AM_RANGE(0x00, 0x7f) AM_READ(nb1413m3_sndrom_r)
582507   AM_RANGE(0x00, 0x00) AM_WRITE(nb1413m3_nmi_clock_w)
583508   AM_RANGE(0x30, 0x37) AM_WRITE(nbmj8891_blitter_w)
584509   AM_RANGE(0x40, 0x40) AM_WRITE(nbmj8891_clutsel_w)
585510   AM_RANGE(0x60, 0x60) AM_WRITE(nbmj8891_romsel_w)
586511   AM_RANGE(0x70, 0x70) AM_WRITE(nbmj8891_scrolly_w)
587512   AM_RANGE(0x80, 0x81) AM_DEVWRITE("fm", ym3812_w)
588   AM_RANGE(0xa0, 0xa0) AM_WRITE(nb1413m3_inputportsel_w)
589   AM_RANGE(0xb0, 0xb0) AM_WRITE(nb1413m3_sndrombank1_w)
590//  AM_RANGE(0xc0, 0xc0) AM_WRITENOP
513   AM_RANGE(0x90, 0x90) AM_READ(nb1413m3_inputport0_r)
514   AM_RANGE(0xa0, 0xa0) AM_READWRITE(nb1413m3_inputport1_r,nb1413m3_inputportsel_w)
515   AM_RANGE(0xb0, 0xb0) AM_READWRITE(nb1413m3_inputport2_r,nb1413m3_sndrombank1_w)
516   AM_RANGE(0xc0, 0xc0) AM_READ(nb1413m3_inputport3_r) //AM_WRITENOP
591517   AM_RANGE(0xd0, 0xd0) AM_DEVWRITE("dac", DAC_WRITE)
592518//  AM_RANGE(0xe0, 0xe0) AM_WRITENOP
593//  AM_RANGE(0xf0, 0xf0) AM_WRITENOP
519   AM_RANGE(0xf0, 0xf0) AM_READ(nb1413m3_dipsw1_r) //AM_WRITENOP
520   AM_RANGE(0xf1, 0xf1) AM_READ(nb1413m3_dipsw2_r)
594521ADDRESS_MAP_END
595522
596static ADDRESS_MAP_START( writeport_msjiken, ADDRESS_SPACE_IO, 8 )
523static ADDRESS_MAP_START( msjiken_io_map, ADDRESS_SPACE_IO, 8 )
597524   ADDRESS_MAP_GLOBAL_MASK(0xff)
525   AM_RANGE(0x00, 0x7f) AM_READ(nb1413m3_sndrom_r)
598526   AM_RANGE(0x00, 0x00) AM_WRITE(nb1413m3_nmi_clock_w)
599527   AM_RANGE(0x40, 0x40) AM_WRITE(nbmj8891_clutsel_w)
600528   AM_RANGE(0x50, 0x57) AM_WRITE(nbmj8891_blitter_w)
601529   AM_RANGE(0x60, 0x60) AM_WRITE(nbmj8891_romsel_w)
602530   AM_RANGE(0x70, 0x70) AM_WRITE(nbmj8891_scrolly_w)
603531   AM_RANGE(0x80, 0x81) AM_DEVWRITE("fm", ym3812_w)
604   AM_RANGE(0xa0, 0xa0) AM_WRITE(nb1413m3_inputportsel_w)
605   AM_RANGE(0xb0, 0xb0) AM_WRITE(nb1413m3_sndrombank1_w)
606//  AM_RANGE(0xc0, 0xc0) AM_WRITENOP
532   AM_RANGE(0x90, 0x90) AM_READ(nb1413m3_inputport0_r)
533   AM_RANGE(0xa0, 0xa0) AM_READWRITE(nb1413m3_inputport1_r,nb1413m3_inputportsel_w)
534   AM_RANGE(0xb0, 0xb0) AM_READWRITE(nb1413m3_inputport2_r,nb1413m3_sndrombank1_w)
535   AM_RANGE(0xc0, 0xc0) AM_READ(nb1413m3_inputport3_r) //AM_WRITENOP
607536   AM_RANGE(0xd0, 0xd0) AM_DEVWRITE("dac", DAC_WRITE)
608537//  AM_RANGE(0xe0, 0xe0) AM_WRITENOP
609//  AM_RANGE(0xf0, 0xf0) AM_WRITENOP
538   AM_RANGE(0xf0, 0xf0) AM_READ(nb1413m3_dipsw1_r) //AM_WRITENOP
539   AM_RANGE(0xf1, 0xf1) AM_READ(nb1413m3_dipsw2_r)
610540ADDRESS_MAP_END
611541
612static ADDRESS_MAP_START( writeport_scandal, ADDRESS_SPACE_IO, 8 )
542static ADDRESS_MAP_START( scandal_io_map, ADDRESS_SPACE_IO, 8 )
613543   ADDRESS_MAP_GLOBAL_MASK(0xff)
544   AM_RANGE(0x00, 0x7f) AM_READ(nb1413m3_sndrom_r)
614545   AM_RANGE(0x40, 0x4f) AM_WRITE(nbmj8891_clut_w)
615546   AM_RANGE(0x00, 0x07) AM_WRITE(nbmj8891_blitter_w)
616547   AM_RANGE(0x10, 0x10) AM_WRITE(nbmj8891_romsel_w)
617548   AM_RANGE(0x20, 0x20) AM_WRITE(nbmj8891_clutsel_w)
618549   AM_RANGE(0x50, 0x50) AM_WRITE(nbmj8891_scrolly_w)
619550   AM_RANGE(0x80, 0x81) AM_DEVWRITE("fm", ym3812_w)
620   AM_RANGE(0xa0, 0xa0) AM_WRITE(nb1413m3_inputportsel_w)
621   AM_RANGE(0xb0, 0xb0) AM_WRITE(nb1413m3_sndrombank1_w)
622   AM_RANGE(0xc0, 0xc0) AM_WRITE(nb1413m3_nmi_clock_w)
551   AM_RANGE(0x90, 0x90) AM_READ(nb1413m3_inputport0_r)
552   AM_RANGE(0xa0, 0xa0) AM_READWRITE(nb1413m3_inputport1_r,nb1413m3_inputportsel_w)
553   AM_RANGE(0xb0, 0xb0) AM_READWRITE(nb1413m3_inputport2_r,nb1413m3_sndrombank1_w)
554   AM_RANGE(0xc0, 0xc0) AM_READWRITE(nb1413m3_inputport3_r,nb1413m3_nmi_clock_w)
623555   AM_RANGE(0xd0, 0xd0) AM_DEVWRITE("dac", DAC_WRITE)
624556//  AM_RANGE(0xe0, 0xe0) AM_WRITENOP
625//  AM_RANGE(0xf0, 0xf0) AM_WRITENOP
626ADDRESS_MAP_END
627
628static ADDRESS_MAP_START( readport_scandalm, ADDRESS_SPACE_IO, 8 )
629   ADDRESS_MAP_GLOBAL_MASK(0xff)
630   AM_RANGE(0x00, 0x7f) AM_READ(nb1413m3_sndrom_r)
631   AM_RANGE(0x81, 0x81) AM_DEVREAD("fm", ay8910_r)
632   AM_RANGE(0x90, 0x90) AM_READ(nb1413m3_inputport0_r)
633   AM_RANGE(0xa0, 0xa0) AM_READ(nb1413m3_inputport1_r)
634   AM_RANGE(0xb0, 0xb0) AM_READ(nb1413m3_inputport2_r)
635   AM_RANGE(0xc0, 0xc0) AM_READ(nb1413m3_inputport3_r)
636   AM_RANGE(0xf0, 0xf0) AM_READ(nb1413m3_dipsw1_r)
557   AM_RANGE(0xf0, 0xf0) AM_READ(nb1413m3_dipsw1_r) //AM_WRITENOP
637558   AM_RANGE(0xf1, 0xf1) AM_READ(nb1413m3_dipsw2_r)
638559ADDRESS_MAP_END
639560
640static ADDRESS_MAP_START( writeport_scandalm, ADDRESS_SPACE_IO, 8 )
561static ADDRESS_MAP_START( scandalm_io_map, ADDRESS_SPACE_IO, 8 )
641562   ADDRESS_MAP_GLOBAL_MASK(0xff)
642   AM_RANGE(0x40, 0x4f) AM_WRITE(nbmj8891_clut_w)
563   AM_RANGE(0x00, 0x7f) AM_READ(nb1413m3_sndrom_r)
643564   AM_RANGE(0x00, 0x07) AM_WRITE(nbmj8891_blitter_w)
644565   AM_RANGE(0x10, 0x10) AM_WRITE(nbmj8891_romsel_w)
645566   AM_RANGE(0x20, 0x20) AM_WRITE(nbmj8891_clutsel_w)
567   AM_RANGE(0x40, 0x4f) AM_WRITE(nbmj8891_clut_w)
646568   AM_RANGE(0x50, 0x50) AM_WRITE(nbmj8891_scrolly_w)
569   AM_RANGE(0x81, 0x81) AM_DEVREAD("fm", ay8910_r)
647570   AM_RANGE(0x82, 0x83) AM_DEVWRITE("fm", ay8910_data_address_w)
648   AM_RANGE(0xa0, 0xa0) AM_WRITE(nb1413m3_inputportsel_w)
649   AM_RANGE(0xb0, 0xb0) AM_WRITE(nb1413m3_sndrombank1_w)
650   AM_RANGE(0xc0, 0xc0) AM_WRITE(nb1413m3_nmi_clock_w)
571   AM_RANGE(0x90, 0x90) AM_READ(nb1413m3_inputport0_r)
572   AM_RANGE(0xa0, 0xa0) AM_READWRITE(nb1413m3_inputport1_r,nb1413m3_inputportsel_w)
573   AM_RANGE(0xb0, 0xb0) AM_READWRITE(nb1413m3_inputport2_r,nb1413m3_sndrombank1_w)
574   AM_RANGE(0xc0, 0xc0) AM_READWRITE(nb1413m3_inputport3_r,nb1413m3_nmi_clock_w)
651575   AM_RANGE(0xd0, 0xd0) AM_DEVWRITE("dac", DAC_WRITE)
652576//  AM_RANGE(0xe0, 0xe0) AM_WRITENOP
653   AM_RANGE(0xf0, 0xf0) AM_WRITE(nb1413m3_outcoin_w)
577   AM_RANGE(0xf0, 0xf0) AM_READWRITE(nb1413m3_dipsw1_r,nb1413m3_outcoin_w)
578   AM_RANGE(0xf1, 0xf1) AM_READ(nb1413m3_dipsw2_r)
654579ADDRESS_MAP_END
655580
656static ADDRESS_MAP_START( writeport_bananadr, ADDRESS_SPACE_IO, 8 )
581static ADDRESS_MAP_START( bananadr_io_map, ADDRESS_SPACE_IO, 8 )
657582   ADDRESS_MAP_GLOBAL_MASK(0xff)
658   AM_RANGE(0x40, 0x4f) AM_WRITE(nbmj8891_clut_w)
583   AM_RANGE(0x00, 0x7f) AM_READ(nb1413m3_sndrom_r)
659584   AM_RANGE(0x00, 0x07) AM_WRITE(nbmj8891_blitter_w)
660585   AM_RANGE(0x10, 0x10) AM_WRITE(nbmj8891_romsel_w)
661586   AM_RANGE(0x20, 0x20) AM_WRITE(nbmj8891_clutsel_w)
662587   AM_RANGE(0x30, 0x30) AM_WRITE(nbmj8891_vramsel_w)
588   AM_RANGE(0x40, 0x4f) AM_WRITE(nbmj8891_clut_w)
663589   AM_RANGE(0x50, 0x50) AM_WRITE(nbmj8891_scrolly_w)
664590   AM_RANGE(0x80, 0x81) AM_DEVWRITE("fm", ym3812_w)
665   AM_RANGE(0xa0, 0xa0) AM_WRITE(nb1413m3_inputportsel_w)
666   AM_RANGE(0xb0, 0xb0) AM_WRITE(nb1413m3_sndrombank1_w)
667   AM_RANGE(0xc0, 0xc0) AM_WRITE(nb1413m3_nmi_clock_w)
591   AM_RANGE(0x90, 0x90) AM_READ(nb1413m3_inputport0_r)
592   AM_RANGE(0xa0, 0xa0) AM_READWRITE(nb1413m3_inputport1_r,nb1413m3_inputportsel_w)
593   AM_RANGE(0xb0, 0xb0) AM_READWRITE(nb1413m3_inputport2_r,nb1413m3_sndrombank1_w)
594   AM_RANGE(0xc0, 0xc0) AM_READWRITE(nb1413m3_inputport3_r,nb1413m3_nmi_clock_w)
668595   AM_RANGE(0xd0, 0xd0) AM_DEVWRITE("dac", DAC_WRITE)
669596//  AM_RANGE(0xe0, 0xe0) AM_WRITENOP
670   AM_RANGE(0xf0, 0xf0) AM_WRITE(nb1413m3_outcoin_w)
671ADDRESS_MAP_END
672
673static ADDRESS_MAP_START( readport_lovehous, ADDRESS_SPACE_IO, 8 )
674   ADDRESS_MAP_GLOBAL_MASK(0xff)
675   AM_RANGE(0x00, 0x7f) AM_READ(nb1413m3_sndrom_r)
676   AM_RANGE(0x90, 0x90) AM_READ(nb1413m3_inputport0_r)
677   AM_RANGE(0xa0, 0xa0) AM_READ(nb1413m3_inputport1_r)
678   AM_RANGE(0xb0, 0xb0) AM_READ(nb1413m3_inputport2_r)
679   AM_RANGE(0xc0, 0xc0) AM_READ_PORT("PORT0-2")
680   AM_RANGE(0xf0, 0xf0) AM_READ(nb1413m3_dipsw1_r)
597   AM_RANGE(0xf0, 0xf0) AM_READWRITE(nb1413m3_dipsw1_r,nb1413m3_outcoin_w)
681598   AM_RANGE(0xf1, 0xf1) AM_READ(nb1413m3_dipsw2_r)
682599ADDRESS_MAP_END
683600
684static ADDRESS_MAP_START( writeport_lovehous, ADDRESS_SPACE_IO, 8 )
601static ADDRESS_MAP_START( lovehous_io_map, ADDRESS_SPACE_IO, 8 )
685602   ADDRESS_MAP_GLOBAL_MASK(0xff)
603   AM_RANGE(0x00, 0x7f) AM_READ(nb1413m3_sndrom_r)
686604   AM_RANGE(0x00, 0x00) AM_WRITE(nb1413m3_nmi_clock_w)
687605   AM_RANGE(0x40, 0x40) AM_WRITE(nbmj8891_clutsel_w)
688606   AM_RANGE(0x50, 0x57) AM_WRITE(nbmj8891_blitter_w)
689607   AM_RANGE(0x60, 0x60) AM_WRITE(nbmj8891_romsel_w)
690608   AM_RANGE(0x70, 0x70) AM_WRITE(nbmj8891_scrolly_w)
691609   AM_RANGE(0x80, 0x81) AM_DEVWRITE("fm", ym3812_w)
692//  AM_RANGE(0x90, 0x90) AM_WRITENOP
693   AM_RANGE(0xa0, 0xa0) AM_WRITE(nb1413m3_inputportsel_w)
694   AM_RANGE(0xb0, 0xb0) AM_WRITE(nb1413m3_sndrombank1_w)
610   AM_RANGE(0x90, 0x90) AM_READ(nb1413m3_inputport0_r) //AM_WRITENOP
611   AM_RANGE(0xa0, 0xa0) AM_READWRITE(nb1413m3_inputport1_r,nb1413m3_inputportsel_w)
612   AM_RANGE(0xb0, 0xb0) AM_READWRITE(nb1413m3_inputport2_r,nb1413m3_sndrombank1_w)
613   AM_RANGE(0xc0, 0xc0) AM_READ_PORT("PORT0-2")
695614   AM_RANGE(0xd0, 0xd0) AM_DEVWRITE("dac", DAC_WRITE)
696615   AM_RANGE(0xe0, 0xe0) AM_WRITE(nbmj8891_vramsel_w)
697   AM_RANGE(0xf0, 0xf0) AM_WRITE(nb1413m3_outcoin_w)
698ADDRESS_MAP_END
699
700static ADDRESS_MAP_START( readport_maiko, ADDRESS_SPACE_IO, 8 )
701   ADDRESS_MAP_GLOBAL_MASK(0xff)
702   AM_RANGE(0x00, 0x7f) AM_READ(nb1413m3_sndrom_r)
703   AM_RANGE(0x90, 0x90) AM_READ(nb1413m3_inputport0_r)
704   AM_RANGE(0xa0, 0xa0) AM_READ(nb1413m3_inputport1_r)
705   AM_RANGE(0xb0, 0xb0) AM_READ(nb1413m3_inputport2_r)
706   AM_RANGE(0xc0, 0xc0) AM_READ_PORT("PORT0-2")
707   AM_RANGE(0xf0, 0xf0) AM_READ(nb1413m3_dipsw1_r)
616   AM_RANGE(0xf0, 0xf0) AM_READWRITE(nb1413m3_dipsw1_r,nb1413m3_outcoin_w)
708617   AM_RANGE(0xf1, 0xf1) AM_READ(nb1413m3_dipsw2_r)
709618ADDRESS_MAP_END
710619
711static ADDRESS_MAP_START( writeport_maiko, ADDRESS_SPACE_IO, 8 )
620static ADDRESS_MAP_START( maiko_io_map, ADDRESS_SPACE_IO, 8 )
712621   ADDRESS_MAP_GLOBAL_MASK(0xff)
622   AM_RANGE(0x00, 0x7f) AM_READ(nb1413m3_sndrom_r)
713623   AM_RANGE(0x00, 0x00) AM_WRITE(nb1413m3_nmi_clock_w)
714624   AM_RANGE(0x40, 0x40) AM_WRITE(nbmj8891_clutsel_w)
715625   AM_RANGE(0x50, 0x57) AM_WRITE(nbmj8891_blitter_w)
716626   AM_RANGE(0x60, 0x60) AM_WRITE(nbmj8891_romsel_w)
717627   AM_RANGE(0x70, 0x70) AM_WRITE(nbmj8891_scrolly_w)
718628   AM_RANGE(0x80, 0x81) AM_DEVWRITE("fm", ym3812_w)
719   AM_RANGE(0xa0, 0xa0) AM_WRITE(nb1413m3_inputportsel_w)
720   AM_RANGE(0xb0, 0xb0) AM_WRITE(nb1413m3_sndrombank1_w)
721//  AM_RANGE(0xc0, 0xc0) AM_WRITENOP
629   AM_RANGE(0x90, 0x90) AM_READ(nb1413m3_inputport0_r)
630   AM_RANGE(0xa0, 0xa0) AM_READWRITE(nb1413m3_inputport1_r,nb1413m3_inputportsel_w)
631   AM_RANGE(0xb0, 0xb0) AM_READWRITE(nb1413m3_inputport2_r,nb1413m3_sndrombank1_w)
632   AM_RANGE(0xc0, 0xc0) AM_READ_PORT("PORT0-2") //AM_WRITENOP
722633   AM_RANGE(0xd0, 0xd0) AM_DEVWRITE("dac", DAC_WRITE)
723634   AM_RANGE(0xe0, 0xe0) AM_WRITE(nbmj8891_vramsel_w)
724   AM_RANGE(0xf0, 0xf0) AM_WRITE(nb1413m3_outcoin_w)
635   AM_RANGE(0xf0, 0xf0) AM_READWRITE(nb1413m3_dipsw1_r,nb1413m3_outcoin_w)
636   AM_RANGE(0xf1, 0xf1) AM_READ(nb1413m3_dipsw2_r)
725637ADDRESS_MAP_END
726638
727static ADDRESS_MAP_START( readport_taiwanmb, ADDRESS_SPACE_IO, 8 )
639static ADDRESS_MAP_START( taiwanmb_io_map, ADDRESS_SPACE_IO, 8 )
728640   ADDRESS_MAP_GLOBAL_MASK(0xff)
729641   AM_RANGE(0x00, 0x7f) AM_READ(nb1413m3_sndrom_r)
730642   AM_RANGE(0x81, 0x81) AM_DEVREAD("fm", ay8910_r)
731   AM_RANGE(0x90, 0x90) AM_READ(nb1413m3_inputport0_r)
732   AM_RANGE(0xa0, 0xa0) AM_READ(nb1413m3_inputport1_r)
733   AM_RANGE(0xb0, 0xb0) AM_READ(nb1413m3_inputport2_r)
643   AM_RANGE(0x82, 0x83) AM_DEVWRITE("fm", ay8910_data_address_w)
644   AM_RANGE(0x90, 0x90) AM_READ(nb1413m3_inputport0_r) //AM_WRITENOP   // ?
645   AM_RANGE(0xa0, 0xa0) AM_READWRITE(nb1413m3_inputport1_r,nb1413m3_inputportsel_w)
646   AM_RANGE(0xb0, 0xb0) AM_READWRITE(nb1413m3_inputport2_r,nb1413m3_sndrombank1_w)
647//  AM_RANGE(0xc0, 0xc0) AM_WRITENOP                    // ?
734648//  AM_RANGE(0xd0, 0xd0) AM_READ(ff_r)  // irq ack? watchdog?
735   AM_RANGE(0xe0, 0xe0) AM_READ(nb1413m3_dipsw3_h_r)
649   AM_RANGE(0xd0, 0xd0) AM_DEVWRITE("dac", DAC_WRITE)
650   AM_RANGE(0xe0, 0xe0) AM_READ(nb1413m3_dipsw3_h_r) AM_WRITE(nbmj8891_taiwanmb_gfxdraw_w)   // blitter draw start
736651   AM_RANGE(0xe1, 0xe1) AM_READ(nb1413m3_dipsw3_l_r)
737   AM_RANGE(0xf0, 0xf0) AM_READ(nb1413m3_dipsw2_r)
652   AM_RANGE(0xf0, 0xf0) AM_READWRITE(nb1413m3_dipsw2_r,nb1413m3_outcoin_w)
738653   AM_RANGE(0xf1, 0xf1) AM_READ(nb1413m3_dipsw1_r)
739654ADDRESS_MAP_END
740655
741static ADDRESS_MAP_START( writeport_taiwanmb, ADDRESS_SPACE_IO, 8 )
742   ADDRESS_MAP_GLOBAL_MASK(0xff)
743   AM_RANGE(0x82, 0x83) AM_DEVWRITE("fm", ay8910_data_address_w)
744//  AM_RANGE(0x90, 0x90) AM_WRITENOP                     // ?
745   AM_RANGE(0xa0, 0xa0) AM_WRITE(nb1413m3_inputportsel_w)
746   AM_RANGE(0xb0, 0xb0) AM_WRITE(nb1413m3_sndrombank1_w)
747//  AM_RANGE(0xc0, 0xc0) AM_WRITENOP                     // ?
748   AM_RANGE(0xd0, 0xd0) AM_DEVWRITE("dac", DAC_WRITE)
749   AM_RANGE(0xe0, 0xe0) AM_WRITE(nbmj8891_taiwanmb_gfxdraw_w)   // blitter draw start
750   AM_RANGE(0xf0, 0xf0) AM_WRITE(nb1413m3_outcoin_w)
751ADDRESS_MAP_END
752656
753
754657static INPUT_PORTS_START( hanamomo )
755658   PORT_START("DSWA")
756659   PORT_DIPNAME( 0x07, 0x07, DEF_STR( Difficulty ) )
r4679r4680
27102613
27112614   /* basic machine hardware */
27122615   MDRV_CPU_ADD("maincpu", Z80, 20000000/4)   /* 5.00 MHz ? */
2713   MDRV_CPU_PROGRAM_MAP(readmem_gionbana, writemem_gionbana)
2714   MDRV_CPU_IO_MAP(readport_gionbana, writeport_gionbana)
2616   MDRV_CPU_PROGRAM_MAP(gionbana_map, 0)
2617   MDRV_CPU_IO_MAP(gionbana_io_map, 0)
27152618//  MDRV_CPU_VBLANK_INT_HACK(nb1413m3_interrupt, 132)    // nmiclock = 60
27162619   MDRV_CPU_VBLANK_INT("screen", nb1413m3_interrupt)
27172620
r4679r4680
27462649   /* basic machine hardware */
27472650   MDRV_IMPORT_FROM(gionbana)
27482651   MDRV_CPU_MODIFY("maincpu")
2749   MDRV_CPU_PROGRAM_MAP(readmem_hanamomo,writemem_mgion)
2750   MDRV_CPU_IO_MAP(readport_gionbana,writeport_mgion)
2652   MDRV_CPU_PROGRAM_MAP(mgion_map,0)
2653   MDRV_CPU_IO_MAP(mgion_io_map,0)
27512654
27522655   MDRV_NVRAM_HANDLER(nb1413m3)
27532656MACHINE_DRIVER_END
r4679r4680
27582661   /* basic machine hardware */
27592662   MDRV_IMPORT_FROM(gionbana)
27602663   MDRV_CPU_MODIFY("maincpu")
2761   MDRV_CPU_PROGRAM_MAP(readmem_omotesnd,writemem_omotesnd)
2762   MDRV_CPU_IO_MAP(readport_omotesnd,writeport_omotesnd)
2664   MDRV_CPU_PROGRAM_MAP(omotesnd_map,0)
2665   MDRV_CPU_IO_MAP(omotesnd_io_map,0)
27632666
27642667   MDRV_NVRAM_HANDLER(nb1413m3)
27652668
r4679r4680
27762679   /* basic machine hardware */
27772680   MDRV_IMPORT_FROM(gionbana)
27782681   MDRV_CPU_MODIFY("maincpu")
2779   MDRV_CPU_IO_MAP(readport_gionbana, writeport_hanamomo)
2682   MDRV_CPU_IO_MAP(hanamomo_io_map, 0)
27802683//  MDRV_CPU_VBLANK_INT_HACK(nb1413m3_interrupt, 142)    // ?
27812684
27822685   MDRV_NVRAM_HANDLER(nb1413m3)
r4679r4680
27922695   /* basic machine hardware */
27932696   MDRV_IMPORT_FROM(gionbana)
27942697   MDRV_CPU_MODIFY("maincpu")
2795   MDRV_CPU_IO_MAP(readport_gionbana, writeport_hanamomo)
2698   MDRV_CPU_IO_MAP(hanamomo_io_map, 0)
27962699//  MDRV_CPU_VBLANK_INT_HACK(nb1413m3_interrupt, 128)
27972700
27982701   MDRV_NVRAM_HANDLER(nb1413m3)
r4679r4680
28082711   /* basic machine hardware */
28092712   MDRV_IMPORT_FROM(gionbana)
28102713   MDRV_CPU_MODIFY("maincpu")
2811   MDRV_CPU_PROGRAM_MAP(readmem_hanamomo, writemem_hanamomo)
2812   MDRV_CPU_IO_MAP(readport_gionbana, writeport_hanamomo)
2714   MDRV_CPU_PROGRAM_MAP(hanamomo_map, 0)
2715   MDRV_CPU_IO_MAP(hanamomo_io_map, 0)
28132716//  MDRV_CPU_VBLANK_INT_HACK(nb1413m3_interrupt, 128)
28142717
28152718   /* video hardware */
r4679r4680
28242727   /* basic machine hardware */
28252728   MDRV_IMPORT_FROM(hanamomo)
28262729   MDRV_CPU_MODIFY("maincpu")
2827   MDRV_CPU_PROGRAM_MAP(readmem_gionbana, writemem_gionbana)
2828   MDRV_CPU_IO_MAP(readport_gionbana, writeport_msjiken)
2730   MDRV_CPU_PROGRAM_MAP(gionbana_map, 0)
2731   MDRV_CPU_IO_MAP(msjiken_io_map, 0)
28292732//  MDRV_CPU_VBLANK_INT_HACK(nb1413m3_interrupt, 142)    // nmiclock = 70
28302733MACHINE_DRIVER_END
28312734
r4679r4680
28702773   /* basic machine hardware */
28712774   MDRV_IMPORT_FROM(gionbana)
28722775   MDRV_CPU_MODIFY("maincpu")
2873   MDRV_CPU_PROGRAM_MAP(readmem_club90s, writemem_club90s)
2776   MDRV_CPU_PROGRAM_MAP(club90s_map, 0)
28742777MACHINE_DRIVER_END
28752778
28762779
r4679r4680
28792782   /* basic machine hardware */
28802783   MDRV_IMPORT_FROM(mjnanpas)
28812784   MDRV_CPU_MODIFY("maincpu")
2882   MDRV_CPU_PROGRAM_MAP(readmem_maiko, writemem_maiko)
2883   MDRV_CPU_IO_MAP(readport_maiko, writeport_maiko)
2785   MDRV_CPU_PROGRAM_MAP(maiko_map, 0)
2786   MDRV_CPU_IO_MAP(maiko_io_map, 0)
28842787MACHINE_DRIVER_END
28852788
28862789
r4679r4680
28892792   /* basic machine hardware */
28902793   MDRV_IMPORT_FROM(maiko)
28912794   MDRV_CPU_MODIFY("maincpu")
2892   MDRV_CPU_PROGRAM_MAP(readmem_maiko, writemem_mmaiko)
2795   MDRV_CPU_PROGRAM_MAP(maiko_map, 0)
28932796
28942797   MDRV_NVRAM_HANDLER(nb1413m3)
28952798MACHINE_DRIVER_END
r4679r4680
29002803   /* basic machine hardware */
29012804   MDRV_IMPORT_FROM(mjnanpas)
29022805   MDRV_CPU_MODIFY("maincpu")
2903   MDRV_CPU_PROGRAM_MAP(readmem_lovehous, writemem_lovehous)
2904   MDRV_CPU_IO_MAP(readport_lovehous, writeport_lovehous)
2806   MDRV_CPU_PROGRAM_MAP(lovehous_map, 0)
2807   MDRV_CPU_IO_MAP(lovehous_io_map, 0)
29052808
29062809   MDRV_NVRAM_HANDLER(nb1413m3)
29072810MACHINE_DRIVER_END
r4679r4680
29122815   /* basic machine hardware */
29132816   MDRV_IMPORT_FROM(maiko)
29142817   MDRV_CPU_MODIFY("maincpu")
2915   MDRV_CPU_PROGRAM_MAP(readmem_hanaoji, writemem_hanaoji)
2818   MDRV_CPU_PROGRAM_MAP(hanaoji_map, 0)
29162819
29172820   MDRV_NVRAM_HANDLER(nb1413m3)
29182821MACHINE_DRIVER_END
r4679r4680
29222825   /* basic machine hardware */
29232826   MDRV_IMPORT_FROM(maiko)
29242827   MDRV_CPU_MODIFY("maincpu")
2925   MDRV_CPU_PROGRAM_MAP(hnxmasev_mem, 0)
2926   MDRV_CPU_IO_MAP(readport_maiko, writeport_maiko)
2828   MDRV_CPU_PROGRAM_MAP(hnxmasev_map, 0)
2829   MDRV_CPU_IO_MAP(maiko_io_map, 0)
29272830MACHINE_DRIVER_END
29282831
29292832static MACHINE_DRIVER_START( hnageman )
r4679r4680
29312834   /* basic machine hardware */
29322835   MDRV_IMPORT_FROM(maiko)
29332836   MDRV_CPU_MODIFY("maincpu")
2934   MDRV_CPU_PROGRAM_MAP(hnageman_mem, 0)
2935   MDRV_CPU_IO_MAP(readport_maiko, writeport_maiko)
2837   MDRV_CPU_PROGRAM_MAP(hnageman_map, 0)
2838   MDRV_CPU_IO_MAP(maiko_io_map, 0)
29362839MACHINE_DRIVER_END
29372840
29382841static MACHINE_DRIVER_START( scandal )
r4679r4680
29402843   /* basic machine hardware */
29412844   MDRV_IMPORT_FROM(hanamomo)
29422845   MDRV_CPU_MODIFY("maincpu")
2943   MDRV_CPU_PROGRAM_MAP(readmem_scandalm, writemem_scandalm)
2944   MDRV_CPU_IO_MAP(readport_gionbana, writeport_scandal)
2846   MDRV_CPU_PROGRAM_MAP(scandalm_map, 0)
2847   MDRV_CPU_IO_MAP(scandal_io_map, 0)
29452848MACHINE_DRIVER_END
29462849
29472850
r4679r4680
29502853   /* basic machine hardware */
29512854   MDRV_IMPORT_FROM(mjnanpas)
29522855   MDRV_CPU_MODIFY("maincpu")
2953   MDRV_CPU_PROGRAM_MAP(readmem_scandalm, writemem_scandalm)
2954   MDRV_CPU_IO_MAP(readport_gionbana, writeport_bananadr)
2856   MDRV_CPU_PROGRAM_MAP(scandalm_map, 0)
2857   MDRV_CPU_IO_MAP(bananadr_io_map, 0)
29552858
29562859   MDRV_NVRAM_HANDLER(nb1413m3)
29572860MACHINE_DRIVER_END
r4679r4680
29632866   /* basic machine hardware */
29642867   MDRV_IMPORT_FROM(gionbana)
29652868   MDRV_CPU_MODIFY("maincpu")
2966   MDRV_CPU_PROGRAM_MAP(readmem_scandalm, writemem_scandalm)
2967   MDRV_CPU_IO_MAP(readport_scandalm, writeport_scandalm)
2869   MDRV_CPU_PROGRAM_MAP(scandalm_map, 0)
2870   MDRV_CPU_IO_MAP(scandalm_io_map, 0)
29682871//  MDRV_CPU_VBLANK_INT_HACK(nb1413m3_interrupt, 128)
29692872
29702873   MDRV_NVRAM_HANDLER(nb1413m3)
r4679r4680
29862889   /* basic machine hardware */
29872890   MDRV_IMPORT_FROM(gionbana)
29882891   MDRV_CPU_MODIFY("maincpu")
2989   MDRV_CPU_PROGRAM_MAP(readmem_taiwanmb, writemem_taiwanmb)
2990   MDRV_CPU_IO_MAP(readport_taiwanmb, writeport_taiwanmb)
2892   MDRV_CPU_PROGRAM_MAP(taiwanmb_map, 0)
2893   MDRV_CPU_IO_MAP(taiwanmb_io_map, 0)
29912894//  MDRV_CPU_VBLANK_INT("screen", nb1413m3_interrupt)
29922895
29932896   MDRV_NVRAM_HANDLER(nb1413m3)
src/mame/drivers/wc90b.c
r4679r4680
142142
143143static WRITE8_HANDLER( wc90b_sound_command_w )
144144{
145   soundlatch_w(space,offset,data);
146   cpu_set_input_line(space->machine->cpu[2],0,HOLD_LINE);
145   soundlatch_w(space, offset, data);
146   cputag_set_input_line(space->machine, "audiocpu", 0, HOLD_LINE);
147147}
148148
149149static WRITE8_DEVICE_HANDLER( adpcm_control_w )
r4679r4680
351351/* handler called by the 2203 emulator when the internal timers cause an IRQ */
352352static void irqhandler(const device_config *device, int irq)
353353{
354   cpu_set_input_line(device->machine->cpu[2], INPUT_LINE_NMI, irq ? ASSERT_LINE : CLEAR_LINE);
354   cputag_set_input_line(device->machine, "audiocpu", INPUT_LINE_NMI, irq ? ASSERT_LINE : CLEAR_LINE);
355355}
356356
357357static const ym2203_interface ym2203_config =
r4679r4680
368368{
369369   static int toggle = 0;
370370
371   msm5205_data_w (device,msm5205next);
372   msm5205next>>=4;
371   msm5205_data_w(device, msm5205next);
372   msm5205next >>= 4;
373373
374374   toggle ^= 1;
375375   if(toggle)
376      cpu_set_input_line(device->machine->cpu[2], INPUT_LINE_NMI, PULSE_LINE);
377
376      cputag_set_input_line(device->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
378377}
379378
380379static const msm5205_interface msm5205_config =
src/mame/drivers/kncljoe.c
r4679r4680
4949   if ((data & 0x80) == 0)
5050      soundlatch_w(space, 0, data & 0x7f);
5151   else
52      cpu_set_input_line(space->machine->cpu[1], 0, ASSERT_LINE);
52      cputag_set_input_line(space->machine, "soundcpu", 0, ASSERT_LINE);
5353}
5454
5555
r4679r4680
104104
105105static WRITE8_HANDLER( sound_irq_ack_w )
106106{
107   cpu_set_input_line(space->machine->cpu[1], 0, CLEAR_LINE);
107   cputag_set_input_line(space->machine, "soundcpu", 0, CLEAR_LINE);
108108}
109109
110110static WRITE8_DEVICE_HANDLER(unused_w)
src/mame/drivers/holeland.c
r4679r4680
2727WRITE8_HANDLER( holeland_scroll_w );
2828
2929
30static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 )
31   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
32   AM_RANGE(0x8000, 0x87ff) AM_READ(SMH_RAM)
33   AM_RANGE(0xa000, 0xbfff) AM_READ(SMH_ROM)
34   AM_RANGE(0xf000, 0xf3ff) AM_READ(SMH_RAM)
35ADDRESS_MAP_END
36
37static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 )
38   AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM)
39   AM_RANGE(0x8000, 0x87ff) AM_WRITE(SMH_RAM)
40   AM_RANGE(0xa000, 0xbfff) AM_WRITE(SMH_ROM)
30static ADDRESS_MAP_START( holeland_map, ADDRESS_SPACE_PROGRAM, 8 )
31   AM_RANGE(0x0000, 0x7fff) AM_ROM
32   AM_RANGE(0x8000, 0x87ff) AM_RAM
33   AM_RANGE(0xa000, 0xbfff) AM_ROM
4134   AM_RANGE(0xc000, 0xc001) AM_WRITE(holeland_pal_offs_w)
4235   AM_RANGE(0xc006, 0xc007) AM_WRITE(holeland_flipscreen_w)
4336   AM_RANGE(0xe000, 0xe3ff) AM_WRITE(holeland_colorram_w) AM_BASE(&colorram)
4437   AM_RANGE(0xe400, 0xe7ff) AM_WRITE(holeland_videoram_w) AM_BASE(&videoram) AM_SIZE(&videoram_size)
45   AM_RANGE(0xf000, 0xf3ff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
38   AM_RANGE(0xf000, 0xf3ff) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
4639ADDRESS_MAP_END
4740
48static ADDRESS_MAP_START( crzrally_readmem, ADDRESS_SPACE_PROGRAM, 8 )
49   AM_RANGE(0x0000, 0xbfff) AM_READ(SMH_ROM)
50   AM_RANGE(0xc000, 0xc7ff) AM_READ(SMH_RAM)
51   AM_RANGE(0xe800, 0xebff) AM_READ(SMH_RAM)
52ADDRESS_MAP_END
53
54static ADDRESS_MAP_START( crzrally_writemem, ADDRESS_SPACE_PROGRAM, 8 )
55   AM_RANGE(0x0000, 0xbfff) AM_WRITE(SMH_ROM)
56   AM_RANGE(0xc000, 0xc7ff) AM_WRITE(SMH_RAM)
41static ADDRESS_MAP_START( crzrally_map, ADDRESS_SPACE_PROGRAM, 8 )
42   AM_RANGE(0x0000, 0xbfff) AM_ROM
43   AM_RANGE(0xc000, 0xc7ff) AM_RAM
5744   AM_RANGE(0xe000, 0xe3ff) AM_WRITE(holeland_colorram_w) AM_BASE(&colorram)
5845   AM_RANGE(0xe400, 0xe7ff) AM_WRITE(holeland_videoram_w) AM_BASE(&videoram) AM_SIZE(&videoram_size)
59   AM_RANGE(0xe800, 0xebff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
46   AM_RANGE(0xe800, 0xebff) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
6047   AM_RANGE(0xf000, 0xf000) AM_WRITE(holeland_scroll_w)
6148   AM_RANGE(0xf800, 0xf801) AM_WRITE(holeland_pal_offs_w)
6249ADDRESS_MAP_END
r4679r4680
300287
301288   /* basic machine hardware */
302289   MDRV_CPU_ADD("maincpu", Z80, 4000000)        /* 4 MHz ? */
303   MDRV_CPU_PROGRAM_MAP(readmem,writemem)
290   MDRV_CPU_PROGRAM_MAP(holeland_map,0)
304291   MDRV_CPU_IO_MAP(io_map,0)
305292   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
306293
r4679r4680
369356
370357   /* basic machine hardware */
371358   MDRV_CPU_ADD("maincpu", Z80, 20000000/4)        /* 5 MHz */
372   MDRV_CPU_PROGRAM_MAP(crzrally_readmem,crzrally_writemem)
359   MDRV_CPU_PROGRAM_MAP(crzrally_map,0)
373360   MDRV_CPU_IO_MAP(io_map,0)
374361   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
375362
src/mame/drivers/liberate.c
r4679r4680
1515*******************************************************************************/
1616
1717#include "driver.h"
18#include "deprecat.h"
1918#include "cpu/m6502/m6502.h"
2019#include "sound/ay8910.h"
2120
r4679r4680
7776   deco16_bank = data;
7877
7978   if (deco16_bank)
80      memory_install_read8_handler(cpu_get_address_space(space->machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x8000, 0x800f, 0, 0, deco16_io_r);
79      memory_install_read8_handler(cputag_get_address_space(space->machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x8000, 0x800f, 0, 0, deco16_io_r);
8180   else
82      memory_install_read8_handler(cpu_get_address_space(space->machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x8000, 0x800f, 0, 0, SMH_BANK1);
81      memory_install_read8_handler(cputag_get_address_space(space->machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x8000, 0x800f, 0, 0, (read8_space_func)SMH_BANK(1));
8382}
8483
8584/*************************************
r4679r4680
8887 *
8988 *************************************/
9089
91static ADDRESS_MAP_START( prosport_readmem, ADDRESS_SPACE_PROGRAM, 8 )
92   AM_RANGE(0x0200, 0x021f) AM_READ(SMH_RAM)
93   AM_RANGE(0x0000, 0x0fff) AM_READ(SMH_RAM)
94   AM_RANGE(0x1000, 0x2fff) AM_READ(SMH_RAM)
95   AM_RANGE(0x8000, 0x800f) AM_READ(SMH_BANK1)
96   AM_RANGE(0x4000, 0xffff) AM_READ(SMH_ROM)
97ADDRESS_MAP_END
98
99static ADDRESS_MAP_START( prosport_writemem, ADDRESS_SPACE_PROGRAM, 8 )
100   AM_RANGE(0x0200, 0x021f) AM_WRITE(prosport_paletteram_w) AM_BASE(&paletteram)
101   AM_RANGE(0x0000, 0x0fff) AM_WRITE(SMH_RAM)
102   AM_RANGE(0x1200, 0x1fff) AM_WRITE(SMH_RAM)
90static ADDRESS_MAP_START( prosport_map, ADDRESS_SPACE_PROGRAM, 8 )
91   AM_RANGE(0x0200, 0x021f) AM_RAM_WRITE(prosport_paletteram_w) AM_BASE(&paletteram)
92   AM_RANGE(0x0000, 0x0fff) AM_RAM
10393   AM_RANGE(0x3000, 0x37ff) AM_WRITE(liberate_videoram_w) AM_BASE(&videoram)
104   AM_RANGE(0x3800, 0x3fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram)
94   AM_RANGE(0x3800, 0x3fff) AM_WRITEONLY AM_BASE(&spriteram)
10595   AM_RANGE(0x8000, 0x800f) AM_WRITE(deco16_io_w)
106   AM_RANGE(0x4000, 0xffff) AM_WRITE(SMH_ROM)
96   AM_RANGE(0x8000, 0x800f) AM_ROMBANK(1)
97   AM_RANGE(0x4000, 0xffff) AM_ROM
10798ADDRESS_MAP_END
10899
109static ADDRESS_MAP_START( liberate_readmem, ADDRESS_SPACE_PROGRAM, 8 )
110   AM_RANGE(0x0000, 0x0fff) AM_READ(SMH_RAM)
111   AM_RANGE(0x1000, 0x3fff) AM_READ(SMH_ROM) /* Mirror of main rom */
100static ADDRESS_MAP_START( liberate_map, ADDRESS_SPACE_PROGRAM, 8 )
101   AM_RANGE(0x0000, 0x0fff) AM_RAM
102   AM_RANGE(0x1000, 0x3fff) AM_ROM /* Mirror of main rom */
112103   AM_RANGE(0x4000, 0x7fff) AM_READ(deco16_bank_r)
113   AM_RANGE(0x8000, 0x800f) AM_READ(SMH_BANK1)
114   AM_RANGE(0x6200, 0x67ff) AM_READ(SMH_RAM)
115   AM_RANGE(0x8000, 0xffff) AM_READ(SMH_ROM)
116ADDRESS_MAP_END
117
118static ADDRESS_MAP_START( liberate_writemem, ADDRESS_SPACE_PROGRAM, 8 )
119   AM_RANGE(0x0000, 0x0fff) AM_WRITE(SMH_RAM)
120   AM_RANGE(0x1000, 0x3fff) AM_WRITE(SMH_ROM) /* Mirror of main rom */
121104   AM_RANGE(0x4000, 0x47ff) AM_WRITE(liberate_videoram_w) AM_BASE(&videoram)
122   AM_RANGE(0x4800, 0x4fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram)
123   AM_RANGE(0x6200, 0x67ff) AM_WRITE(SMH_RAM) AM_BASE(&scratchram)
105   AM_RANGE(0x4800, 0x4fff) AM_WRITEONLY AM_BASE(&spriteram)
106   AM_RANGE(0x6200, 0x67ff) AM_RAM AM_BASE(&scratchram)
124107   AM_RANGE(0x8000, 0x800f) AM_WRITE(deco16_io_w)
125   AM_RANGE(0x8000, 0xffff) AM_WRITE(SMH_ROM)
108   AM_RANGE(0x8000, 0x800f) AM_ROMBANK(1)
109   AM_RANGE(0x8000, 0xffff) AM_ROM
126110ADDRESS_MAP_END
127111
128112static ADDRESS_MAP_START( deco16_io_map, ADDRESS_SPACE_IO, 8 )
129113   AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0") AM_WRITE(deco16_bank_w)
130114ADDRESS_MAP_END
131115
132static ADDRESS_MAP_START( liberatb_readmem, ADDRESS_SPACE_PROGRAM, 8 )
116static ADDRESS_MAP_START( liberatb_map, ADDRESS_SPACE_PROGRAM, 8 )
133117   AM_RANGE(0x00fe, 0x00fe) AM_READ_PORT("IN0")
134   AM_RANGE(0x0000, 0x0fff) AM_READ(SMH_RAM)
135   AM_RANGE(0x1000, 0x3fff) AM_READ(SMH_ROM) /* Mirror of main rom */
118   AM_RANGE(0x0000, 0x0fff) AM_RAM
119   AM_RANGE(0x1000, 0x3fff) AM_ROM /* Mirror of main rom */
136120   AM_RANGE(0x4000, 0x7fff) AM_READ(deco16_bank_r)
121   AM_RANGE(0x4000, 0x47ff) AM_WRITE(liberate_videoram_w) AM_BASE(&videoram)
122   AM_RANGE(0x4800, 0x4fff) AM_WRITEONLY AM_BASE(&spriteram)
123   AM_RANGE(0x6200, 0x67ff) AM_WRITEONLY AM_BASE(&scratchram)
124   AM_RANGE(0xf000, 0xf00f) AM_WRITE(deco16_io_w)
137125   AM_RANGE(0xf000, 0xf000) AM_READ_PORT("IN1")
138126   AM_RANGE(0xf001, 0xf001) AM_READ_PORT("IN2")
139127   AM_RANGE(0xf002, 0xf002) AM_READ_PORT("IN3")
140128   AM_RANGE(0xf003, 0xf003) AM_READ_PORT("DSW1")
141129   AM_RANGE(0xf004, 0xf004) AM_READ_PORT("DSW2")
142   AM_RANGE(0x8000, 0xffff) AM_READ(SMH_ROM)
130   AM_RANGE(0x8000, 0xffff) AM_ROM
143131ADDRESS_MAP_END
144132
145static ADDRESS_MAP_START( liberatb_writemem, ADDRESS_SPACE_PROGRAM, 8 )
146   AM_RANGE(0x0000, 0x0fff) AM_WRITE(SMH_RAM)
147   AM_RANGE(0x1000, 0x3fff) AM_WRITE(SMH_ROM) /* Mirror of main rom */
148   AM_RANGE(0x4000, 0x47ff) AM_WRITE(liberate_videoram_w) AM_BASE(&videoram)
149   AM_RANGE(0x4800, 0x4fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram)
150   AM_RANGE(0x6200, 0x67ff) AM_WRITE(SMH_RAM) AM_BASE(&scratchram)
151   AM_RANGE(0xf000, 0xf00f) AM_WRITE(deco16_io_w)
152   AM_RANGE(0x8000, 0xffff) AM_WRITE(SMH_ROM)
153ADDRESS_MAP_END
154
155133/*************************************
156134 *
157135 *  Sound CPU memory handlers
r4679r4680
159137 *************************************/
160138
161139#if 0
162static ADDRESS_MAP_START( prosoccr_sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
163   AM_RANGE(0x0000, 0x01ff) AM_READ(SMH_RAM)
164   AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_r)
165   AM_RANGE(0xe000, 0xffff) AM_READ(SMH_ROM)
166ADDRESS_MAP_END
167
168static ADDRESS_MAP_START( prosoccr_sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
169   AM_RANGE(0x0000, 0x01ff) AM_WRITE(SMH_RAM)
140static ADDRESS_MAP_START( prosoccr_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
141   AM_RANGE(0x0000, 0x01ff) AM_RAM
170142   AM_RANGE(0x2000, 0x2000) AM_DEVWRITE("ay1", ay8910_data_w)
171143   AM_RANGE(0x4000, 0x4000) AM_DEVWRITE("ay1", ay8910_address_w)
172144   AM_RANGE(0x6000, 0x6000) AM_DEVWRITE("ay2", ay8910_data_w)
173   AM_RANGE(0x8000, 0x8000) AM_DeVWRITE(SOUND, "ay2", ay8910_address_w)
174   AM_RANGE(0xe000, 0xffff) AM_WRITE(SMH_ROM)
145   AM_RANGE(0x8000, 0x8000) AM_DEVWRITE(SOUND, "ay2", ay8910_address_w)
146   AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_r)
147   AM_RANGE(0xe000, 0xffff) AM_ROM
175148ADDRESS_MAP_END
176149#endif
177150
178static ADDRESS_MAP_START( sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
179   AM_RANGE(0x0000, 0x01ff) AM_READ(SMH_RAM)
180   AM_RANGE(0xb000, 0xb000) AM_READ(soundlatch_r)
181   AM_RANGE(0xc000, 0xffff) AM_READ(SMH_ROM)
182ADDRESS_MAP_END
183
184static ADDRESS_MAP_START( sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
185   AM_RANGE(0x0000, 0x01ff) AM_WRITE(SMH_RAM)
151static ADDRESS_MAP_START( liberate_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
152   AM_RANGE(0x0000, 0x01ff) AM_RAM
186153   AM_RANGE(0x1000, 0x1000) AM_WRITENOP
187154   AM_RANGE(0x3000, 0x3000) AM_DEVWRITE("ay1", ay8910_data_w)
188155   AM_RANGE(0x4000, 0x4000) AM_DEVWRITE("ay1", ay8910_address_w)
189156   AM_RANGE(0x7000, 0x7000) AM_DEVWRITE("ay2", ay8910_data_w)
190157   AM_RANGE(0x8000, 0x8000) AM_DEVWRITE("ay2", ay8910_address_w)
191   AM_RANGE(0xc000, 0xffff) AM_WRITE(SMH_ROM)
158   AM_RANGE(0xb000, 0xb000) AM_READ(soundlatch_r)
159   AM_RANGE(0xc000, 0xffff) AM_ROM
192160ADDRESS_MAP_END
193161
194162/*************************************
r4679r4680
518486
519487   /* basic machine hardware */
520488   MDRV_CPU_ADD("maincpu",DECO16, 2000000)
521   MDRV_CPU_PROGRAM_MAP(liberate_readmem,liberate_writemem)
489   MDRV_CPU_PROGRAM_MAP(liberate_map,0)
522490   MDRV_CPU_IO_MAP(deco16_io_map,0)
523491   MDRV_CPU_VBLANK_INT("screen", deco16_interrupt)
524492
525493   MDRV_CPU_ADD("audiocpu",M6502, 1500000)
526   MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem)
527   MDRV_CPU_VBLANK_INT_HACK(nmi_line_pulse,16)
494   MDRV_CPU_PROGRAM_MAP(liberate_sound_map,0)
495   MDRV_CPU_PERIODIC_INT(nmi_line_pulse,16*60) /* ??? */
528496
529497   MDRV_QUANTUM_TIME(HZ(12000))
530498
r4679r4680
559527   /* basic machine hardware */
560528   MDRV_CPU_MODIFY("maincpu")
561529   MDRV_CPU_TYPE(M6502)
562   MDRV_CPU_PROGRAM_MAP(liberatb_readmem,liberatb_writemem)
530   MDRV_CPU_PROGRAM_MAP(liberatb_map,0)
563531   MDRV_CPU_IO_MAP(0,0)
564532   MDRV_CPU_VBLANK_INT("screen", deco16_interrupt)
565533MACHINE_DRIVER_END
r4679r4680
578546   /* basic machine hardware */
579547   MDRV_CPU_MODIFY("maincpu")
580548   MDRV_CPU_CLOCK(3000000)
581   MDRV_CPU_PROGRAM_MAP(liberate_readmem,liberate_writemem)
549   MDRV_CPU_PROGRAM_MAP(liberate_map,0)
582550   MDRV_CPU_IO_MAP(deco16_io_map,0)
583551
584552   MDRV_VIDEO_START(prosoccr)
r4679r4680
589557
590558   /* basic machine hardware */
591559   MDRV_CPU_ADD("maincpu", DECO16, 2000000)
592   MDRV_CPU_PROGRAM_MAP(prosport_readmem,prosport_writemem)
560   MDRV_CPU_PROGRAM_MAP(prosport_map,0)
593561   MDRV_CPU_IO_MAP(deco16_io_map,0)
594562
595563   MDRV_CPU_ADD("audiocpu", M6502, 1500000)
596   MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem)
597   MDRV_CPU_VBLANK_INT_HACK(nmi_line_pulse,16)
564   MDRV_CPU_PROGRAM_MAP(liberate_sound_map,0)
565   MDRV_CPU_PERIODIC_INT(nmi_line_pulse,16*60) /* ??? */
598566
599567   MDRV_QUANTUM_TIME(HZ(12000))
600568
r4679r4680
771739   ROM_LOAD( "bp15", 0, 32,  CRC(30d3acce) SHA1(be88d74250edc2920fc0f95cfdd93468ac9c640e) )
772740ROM_END
773741
742ROM_START( yellowcj )
743   ROM_REGION(0x10000, "maincpu", 0)
744   ROM_LOAD( "bp11.bin", 0xe000, 0x2000, CRC(63cdee83) SHA1(c4a5c3d7761336f4fc3fe83490b69812d70b2cde) )
745   ROM_RELOAD(            0x2000, 0x2000 )
746   ROM_LOAD( "bp10.bin", 0xc000, 0x2000, CRC(1024f2f1) SHA1(a3804df3c9ecfde9318ed121327ef095d7a9e1f0) )
747   ROM_RELOAD(            0x0000, 0x2000 )
748
749   ROM_REGION(0x10000, "audiocpu", 0)   /* 64K for CPU 2 */
750   ROM_LOAD( "bp09", 0x0e000, 0x2000, CRC(16b13676) SHA1(f3cad959cbcde243db3ebc77a3692302a44beb09) )
751
752   ROM_REGION(0xc000, "gfx1", ROMREGION_DISPOSE )
753   ROM_LOAD( "bp03.bin", 0x0000, 0x2000, CRC(6761d767) SHA1(f5180cc31d3b4103c78b74e5de311565581d6db7) )
754   ROM_LOAD( "bp04.bin", 0x2000, 0x2000, CRC(55517196) SHA1(f46899751e614aa35ec316caacb84e25193a56d6) )
755   ROM_LOAD( "bp05.rom", 0x4000, 0x2000, CRC(33658fd9) SHA1(16c1d211b8fb46467906cd2cd32bcc9eac464573) )
756   ROM_LOAD( "bp06.rom", 0x6000, 0x2000, CRC(fbc20f07) SHA1(7f7028638038f61dae6aca09d393adeea3ab1b2d) )
757   ROM_LOAD( "bp07.rom", 0x8000, 0x2000, CRC(061f9e54) SHA1(2e7b7c98892702513e53b8dd2a2a0dc152d52016) )
758   ROM_LOAD( "bp08.rom", 0xa000, 0x2000, CRC(2ace626d) SHA1(6f12eb2d6a01ac1285d15d15948124b85c6964b7) )
759
760   ROM_REGION(0x8000, "gfx2", ROMREGION_DISPOSE )
761   ROM_LOAD( "bp01.bin", 0x0000, 0x2000, CRC(8e92a253) SHA1(94063c5aae9ce36b47e51f55e7502d1b6c4334be) )
762   ROM_LOAD( "bp02.bin", 0x2000, 0x2000, CRC(47ada1bb) SHA1(cc0a38d0cc220382c36e6268f47db332bdbb07a2) )
763   ROM_LOAD( "bp00.bin", 0x4000, 0x2000, CRC(9ead0da1) SHA1(5e46527fa38d75efd266ca982c7cb6d88bb3ea49) )
764
765   ROM_REGION(0x4000, "user1", 0 )
766   ROM_LOAD( "bp12", 0x00000, 0x4000, CRC(8c8f5d35) SHA1(5b908d92786dae76aaf84de14f8847ee8ee350a1) )
767
768   ROM_REGION(32, "proms", 0 )
769   ROM_LOAD( "bp15", 0, 32,  CRC(30d3acce) SHA1(be88d74250edc2920fc0f95cfdd93468ac9c640e) )
770ROM_END
771
774772ROM_START( yellowcb )
775773   ROM_REGION(0x10000, "maincpu", 0)
776774   ROM_LOAD( "rom11.rom", 0xc000, 0x2000, CRC(af97d530) SHA1(b8b9bfcb2e9164daa115b91a533418a39c40c31d) )
r4679r4680
900898static void sound_cpu_decrypt(running_machine *machine)
901899{
902900   const address_space *space = cputag_get_address_space(machine, "audiocpu", ADDRESS_SPACE_PROGRAM);
903   UINT8 *decrypted = auto_malloc(0x4000);
901   UINT8 *decrypted = auto_alloc_array(machine, UINT8, 0x4000);
904902   UINT8 *rom = memory_region(machine, "audiocpu");
905903   int i;
906904
r4679r4680
927925{
928926   DRIVER_INIT_CALL(prosport);
929927
930   memory_install_read_port_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xa000, 0xa000, 0, 0, "IN0");
928   memory_install_read_port_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xa000, 0xa000, 0, 0, "IN0");
931929}
932930
933931static DRIVER_INIT( liberate )
934932{
935933   int A;
936934   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
937   UINT8 *decrypted = auto_malloc(0x10000);
935   UINT8 *decrypted = auto_alloc_array(machine, UINT8, 0x10000);
938936   UINT8 *ROM = memory_region(machine, "maincpu");
939937
940938   memory_set_decrypted_region(space, 0x0000, 0xffff, decrypted);
r4679r4680
962960GAME( 1983, boomrang, 0,        boomrang,  boomrang, prosport, ROT270, "Data East Corporation", "Boomer Rang'r / Genesis (set 1)", 0 )
963961GAME( 1983, boomrana, boomrang, boomrang,  boomrang, prosport, ROT270, "Data East Corporation", "Boomer Rang'r / Genesis (set 2)", 0 )
964962GAME( 1984, kamikcab, 0,        boomrang,  kamikcab, prosport, ROT270, "Data East Corporation", "Kamikaze Cabbie", 0 )
963GAME( 1984, yellowcj, kamikcab, boomrang,  yellowcb, yellowcb, ROT270, "Data East Corporation", "Yellow Cab (Japan)", 0 )
965964GAME( 1984, yellowcb, kamikcab, boomrang,  yellowcb, yellowcb, ROT270, "bootleg",               "Yellow Cab (bootleg)", 0 )
966965GAME( 1984, liberate, 0,        liberate,  liberate, liberate, ROT270, "Data East Corporation", "Liberation", 0 )
967966GAME( 1984, dualaslt, liberate, liberate,  dualaslt, liberate, ROT270, "Data East USA",         "Dual Assault", 0 )
968967GAME( 1984, liberatb, liberate, liberatb,  liberatb, prosport, ROT270, "bootleg",               "Liberation (bootleg)", 0 )
969
src/mame/drivers/spdodgeb.c
r4679r4680
5454
5555static WRITE8_HANDLER( sound_command_w )
5656{
57   soundlatch_w(space,offset,data);
58   cpu_set_input_line(space->machine->cpu[1],M6809_IRQ_LINE,HOLD_LINE);
57   soundlatch_w(space, offset, data);
58   cputag_set_input_line(space->machine, "audiocpu", M6809_IRQ_LINE, HOLD_LINE);
5959}
6060
6161static WRITE8_HANDLER( spd_adpcm_w )
r4679r4680
267267
268268
269269
270static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 )
271   AM_RANGE(0x0000, 0x0fff) AM_READ(SMH_RAM)
272   AM_RANGE(0x2000, 0x2fff) AM_READ(SMH_RAM)
273   AM_RANGE(0x3000, 0x3000) AM_READ(port_0_r)
274   AM_RANGE(0x3001, 0x3001) AM_READ_PORT("DSW")   /* DIPs */
275   AM_RANGE(0x3801, 0x3805) AM_READ(mcu63701_r)
276   AM_RANGE(0x4000, 0x7fff) AM_READ(SMH_BANK1)
277   AM_RANGE(0x8000, 0xffff) AM_READ(SMH_ROM)
278ADDRESS_MAP_END
279
280static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 )
281   AM_RANGE(0x0000, 0x0fff) AM_WRITE(SMH_RAM)
282   AM_RANGE(0x1000, 0x10ff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
283   AM_RANGE(0x2000, 0x2fff) AM_WRITE(spdodgeb_videoram_w) AM_BASE(&spdodgeb_videoram)
284//  AM_RANGE(0x3000, 0x3000) AM_WRITE(SMH_RAM)
285//  AM_RANGE(0x3001, 0x3001) AM_WRITE(SMH_RAM)
270static ADDRESS_MAP_START( spdodgeb_map, ADDRESS_SPACE_PROGRAM, 8 )
271   AM_RANGE(0x0000, 0x0fff) AM_RAM
272   AM_RANGE(0x1000, 0x10ff) AM_WRITEONLY AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
273   AM_RANGE(0x2000, 0x2fff) AM_RAM_WRITE(spdodgeb_videoram_w) AM_BASE(&spdodgeb_videoram)
274   AM_RANGE(0x3000, 0x3000) AM_READ(port_0_r) //AM_WRITENOP
275   AM_RANGE(0x3001, 0x3001) AM_READ_PORT("DSW") //AM_WRITENOP
286276   AM_RANGE(0x3002, 0x3002) AM_WRITE(sound_command_w)
287//  AM_RANGE(0x3003, 0x3003) AM_WRITE(SMH_RAM)
277//  AM_RANGE(0x3003, 0x3003) AM_WRITENOP
288278   AM_RANGE(0x3004, 0x3004) AM_WRITE(spdodgeb_scrollx_lo_w)
289//  AM_RANGE(0x3005, 0x3005) AM_WRITE(SMH_RAM)          /* mcu63701_output_w */
279//  AM_RANGE(0x3005, 0x3005) AM_WRITENOP         /* mcu63701_output_w */
290280   AM_RANGE(0x3006, 0x3006) AM_WRITE(spdodgeb_ctrl_w)   /* scroll hi, flip screen, bank switch, palette select */
291281   AM_RANGE(0x3800, 0x3800) AM_WRITE(mcu63701_w)
292   AM_RANGE(0x4000, 0xffff) AM_WRITE(SMH_ROM)
282   AM_RANGE(0x3801, 0x3805) AM_READ(mcu63701_r)
283   AM_RANGE(0x4000, 0x7fff) AM_ROMBANK(1)
284   AM_RANGE(0x8000, 0xffff) AM_ROM
293285ADDRESS_MAP_END
294286
295static ADDRESS_MAP_START( sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
296   AM_RANGE(0x0000, 0x0fff) AM_READ(SMH_RAM)
287static ADDRESS_MAP_START( spdodgeb_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
288   AM_RANGE(0x0000, 0x0fff) AM_RAM
297289   AM_RANGE(0x1000, 0x1000) AM_READ(soundlatch_r)
298   AM_RANGE(0x8000, 0xffff) AM_READ(SMH_ROM)
299ADDRESS_MAP_END
300
301static ADDRESS_MAP_START( sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
302   AM_RANGE(0x0000, 0x0fff) AM_WRITE(SMH_RAM)
303290   AM_RANGE(0x2800, 0x2801) AM_DEVWRITE("ym", ym3812_w)
304291   AM_RANGE(0x3800, 0x3807) AM_WRITE(spd_adpcm_w)
305   AM_RANGE(0x8000, 0xffff) AM_WRITE(SMH_ROM)
292   AM_RANGE(0x8000, 0xffff) AM_ROM
306293ADDRESS_MAP_END
307294
308295
r4679r4680
415402
416403static void irq_handler(const device_config *device, int irq)
417404{
418   cpu_set_input_line(device->machine->cpu[1],M6809_FIRQ_LINE,irq ? ASSERT_LINE : CLEAR_LINE);
405   cputag_set_input_line(device->machine, "audiocpu", M6809_FIRQ_LINE, irq ? ASSERT_LINE : CLEAR_LINE);
419406}
420407
421408static const ym3812_interface ym3812_config =
r4679r4680
448435
449436   /* basic machine hardware */
450437   MDRV_CPU_ADD("maincpu", M6502,12000000/6)   /* 2MHz ? */
451   MDRV_CPU_PROGRAM_MAP(readmem,writemem)
438   MDRV_CPU_PROGRAM_MAP(spdodgeb_map,0)
452439   MDRV_CPU_VBLANK_INT_HACK(spdodgeb_interrupt,33)   /* 1 IRQ every 8 visible scanlines, plus NMI for vblank */
453440
454441   MDRV_CPU_ADD("audiocpu", M6809,12000000/6)   /* 2MHz ? */
455   MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem)
442   MDRV_CPU_PROGRAM_MAP(spdodgeb_sound_map,0)
456443
457444   /* video hardware */
458445   MDRV_SCREEN_ADD("screen", RASTER)
src/mame/drivers/cvs.c
r4679r4680
102102
103103/*************************************
104104 *
105 *  Constants
106 *
107 *************************************/
108
109#define CVS_MAIN_CPU_INDEX      (0)
110#define CVS_DAC_CPU_INDEX      (1)
111
112
113
114/*************************************
115 *
116105 *  Global variables
117106 *
118107 *************************************/
r4679r4680
265254
266255static void cvs_dac_cpu_interrupt(running_machine *machine)
267256{
268   cpu_set_input_line_vector(machine->cpu[CVS_DAC_CPU_INDEX], 0, 0x03);
269   cpu_set_input_line(machine->cpu[CVS_DAC_CPU_INDEX], 0, HOLD_LINE);
257   cpu_set_input_line_vector(cputag_get_cpu(machine, "audiocpu"), 0, 0x03);
258   cputag_set_input_line(machine, "audiocpu", 0, HOLD_LINE);
270259}
271260
272261
r4679r4680
504493MACHINE_START( cvs )
505494{
506495   /* allocate memory */
507   cvs_color_ram = auto_malloc(0x400);
508   cvs_palette_ram = auto_malloc(0x10);
509   cvs_character_ram = auto_malloc(3 * 0x800);  /* only half is used, but
496   cvs_color_ram = auto_alloc_array(machine, UINT8, 0x400);
497   cvs_palette_ram = auto_alloc_array(machine, UINT8, 0x10);
498   cvs_character_ram = auto_alloc_array(machine, UINT8, 3 * 0x800);  /* only half is used, but
510499                                                    by allocating twice the amount,
511500                                                    we can use the same gfx_layout */
512501
src/mame/drivers/turbo.c
r4679r4680
189189
190190static MACHINE_RESET( buckrog )
191191{
192   turbo_state *state = machine->driver_data;
192   turbo_state *state = (turbo_state *)machine->driver_data;
193193   state->buckrog_command = 0x00;
194194}
195195
r4679r4680
212212static WRITE8_DEVICE_HANDLER( turbo_ppi0a_w )
213213{
214214   /* bit0-7 = 0PA0-7 */
215   turbo_state *state = device->machine->driver_data;
215   turbo_state *state = (turbo_state *)device->machine->driver_data;
216216   state->turbo_opa = data;
217217}
218218
r4679r4680
220220static WRITE8_DEVICE_HANDLER( turbo_ppi0b_w )
221221{
222222   /* bit0-7 = 0PB0-7 */
223   turbo_state *state = device->machine->driver_data;
223   turbo_state *state = (turbo_state *)device->machine->driver_data;
224224   state->turbo_opb = data;
225225}
226226
r4679r4680
228228static WRITE8_DEVICE_HANDLER( turbo_ppi0c_w )
229229{
230230   /* bit0-7 = 0PC0-7 */
231   turbo_state *state = device->machine->driver_data;
231   turbo_state *state = (turbo_state *)device->machine->driver_data;
232232   state->turbo_opc = data;
233233}
234234
r4679r4680
236236static WRITE8_DEVICE_HANDLER( turbo_ppi1a_w )
237237{
238238   /* bit0-7 = 1PA0-7 */
239   turbo_state *state = device->machine->driver_data;
239   turbo_state *state = (turbo_state *)device->machine->driver_data;
240240   state->turbo_ipa = data;
241241}
242242
r4679r4680
244244static WRITE8_DEVICE_HANDLER( turbo_ppi1b_w )
245245{
246246   /* bit0-7 = 1PB0-7 */
247   turbo_state *state = device->machine->driver_data;
247   turbo_state *state = (turbo_state *)device->machine->driver_data;
248248   state->turbo_ipb = data;
249249}
250250
r4679r4680
252252static WRITE8_DEVICE_HANDLER( turbo_ppi1c_w )
253253{
254254   /* bit0-7 = 1PC0-7 */
255   turbo_state *state = device->machine->driver_data;
255   turbo_state *state = (turbo_state *)device->machine->driver_data;
256256   state->turbo_ipc = data;
257257}
258258
r4679r4680
262262   /* bit 0-3 = PLA0-3 */
263263   /* bit 4-6 = COL0-2 */
264264   /* bit   7 = n/c */
265   turbo_state *state = device->machine->driver_data;
265   turbo_state *state = (turbo_state *)device->machine->driver_data;
266266   state->turbo_fbpla = data & 0x0f;
267267   state->turbo_fbcol = (data >> 4) & 0x07;
268268}
r4679r4680
322322{
323323   /* bit 0-3 = PLY0-3 */
324324   /* bit 4-7 = n/c */
325   turbo_state *state = device->machine->driver_data;
325   turbo_state *state = (turbo_state *)device->machine->driver_data;
326326   state->subroc3d_ply = data & 0x0f;
327327}
328328
r4679r4680
330330static WRITE8_DEVICE_HANDLER( subroc3d_ppi0c_w )
331331{
332332   /* bit 0-3 = COL0-3 */
333   turbo_state *state = device->machine->driver_data;
333   turbo_state *state = (turbo_state *)device->machine->driver_data;
334334   state->subroc3d_col = data & 0x0f;
335335}
336336
r4679r4680
342342   /* bit 2 = STLA (START LAMP) */
343343   /* bit 3 = NOUSE (n/c) */
344344   /* bit 4 = FLIP (not really flip, just offset) */
345   turbo_state *state = device->machine->driver_data;
345   turbo_state *state = (turbo_state *)device->machine->driver_data;
346346   coin_counter_w(0, data & 0x01);
347347   coin_counter_w(1, data & 0x02);
348348   set_led_status(0, data & 0x04);
r4679r4680
381381static WRITE8_DEVICE_HANDLER( buckrog_ppi0a_w )
382382{
383383   /* bit 0-7 = data to be read on the /IOREQ */
384   turbo_state *state = device->machine->driver_data;
384   turbo_state *state = (turbo_state *)device->machine->driver_data;
385385   state->buckrog_command = data;
386386}
387387
r4679r4680
390390{
391391   /* bit 0-5 = MOV0-5 */
392392   /* bit 6-7 = n/c */
393   turbo_state *state = device->machine->driver_data;
393   turbo_state *state = (turbo_state *)device->machine->driver_data;
394394   state->buckrog_mov = data & 0x3f;
395395}
396396
r4679r4680
401401   /* bit 3-5 = n/c */
402402   /* bit   6 = /IOREQ on the 2nd CPU */
403403   /* bit   7 = /INT on the 2nd CPU */
404   turbo_state *state = device->machine->driver_data;
404   turbo_state *state = (turbo_state *)device->machine->driver_data;
405405   state->buckrog_fchg = data & 0x07;
406   cpu_set_input_line(device->machine->cpu[1], 0, (data & 0x80) ? CLEAR_LINE : ASSERT_LINE);
406   cputag_set_input_line(device->machine, "sub", 0, (data & 0x80) ? CLEAR_LINE : ASSERT_LINE);
407407}
408408
409409
r4679r4680
415415   /* bit   5 = COM2 (COIN METER 2) */
416416   /* bit   6 = STLA (START LAMP) */
417417   /* bit   7 = NOUSE (BODY SONIC) */
418   turbo_state *state = device->machine->driver_data;
418   turbo_state *state = (turbo_state *)device->machine->driver_data;
419419   state->buckrog_obch = data & 0x07;
420420   coin_counter_w(0, data & 0x10);
421421   coin_counter_w(1, data & 0x20);
r4679r4680
479479
480480static READ8_HANDLER( turbo_8279_r )
481481{
482   turbo_state *state = space->machine->driver_data;
482   turbo_state *state = (turbo_state *)space->machine->driver_data;
483483   i8279_state *chip = &state->i8279;
484484   UINT8 result = 0xff;
485485   UINT8 addr;
r4679r4680
520520
521521static WRITE8_HANDLER( turbo_8279_w )
522522{
523   turbo_state *state = space->machine->driver_data;
523   turbo_state *state = (turbo_state *)space->machine->driver_data;
524524   i8279_state *chip = &state->i8279;
525525   UINT8 addr;
526526
r4679r4680
624624
625625static READ8_HANDLER( turbo_collision_r )
626626{
627   turbo_state *state = space->machine->driver_data;
627   turbo_state *state = (turbo_state *)space->machine->driver_data;
628628   video_screen_update_partial(space->machine->primary_screen, video_screen_get_vpos(space->machine->primary_screen));
629629   return input_port_read(space->machine, "DSW3") | (state->turbo_collision & 15);
630630}
r4679r4680
632632
633633static WRITE8_HANDLER( turbo_collision_clear_w )
634634{
635   turbo_state *state = space->machine->driver_data;
635   turbo_state *state = (turbo_state *)space->machine->driver_data;
636636   video_screen_update_partial(space->machine->primary_screen, video_screen_get_vpos(space->machine->primary_screen));
637637   state->turbo_collision = 0;
638638}
r4679r4680
640640
641641static READ8_DEVICE_HANDLER( turbo_analog_r )
642642{
643   turbo_state *state = device->machine->driver_data;
643   turbo_state *state = (turbo_state *)device->machine->driver_data;
644644   return input_port_read(device->machine, "DIAL") - state->turbo_last_analog;
645645}
646646
647647
648648static WRITE8_HANDLER( turbo_analog_reset_w )
649649{
650   turbo_state *state = space->machine->driver_data;
650   turbo_state *state = (turbo_state *)space->machine->driver_data;
651651   state->turbo_last_analog = input_port_read(space->machine, "DIAL");
652652}
653653
r4679r4680
679679static READ8_HANDLER( buckrog_cpu2_command_r )
680680{
681681   /* assert ACK */
682   turbo_state *state = space->machine->driver_data;
682   turbo_state *state = (turbo_state *)space->machine->driver_data;
683683   ppi8255_set_port_c(devtag_get_device(space->machine, "ppi8255_0"), 0x00);
684684   return state->buckrog_command;
685685}
src/mame/drivers/seta.c
r4679r4680
13301330   UINT16 max = uPD71054.max[no]&0xffff;
13311331
13321332   if( max != 0 ) {
1333      attotime period = attotime_mul(ATTOTIME_IN_HZ(cpu_get_clock(machine->cpu[0])), 16 * max);
1333      attotime period = attotime_mul(ATTOTIME_IN_HZ(cputag_get_clock(machine, "maincpu")), 16 * max);
13341334      timer_adjust_oneshot( uPD71054.timer[no], period, no );
13351335   } else {
13361336      timer_adjust_oneshot( uPD71054.timer[no], attotime_never, no);
r4679r4680
13461346------------------------------*/
13471347static TIMER_CALLBACK( uPD71054_timer_callback )
13481348{
1349   cpu_set_input_line(machine->cpu[0], 4, HOLD_LINE );
1349   cputag_set_input_line(machine, "maincpu", 4, HOLD_LINE );
13501350   uPD71054_update_timer( machine, NULL, param );
13511351}
13521352
r4679r4680
14291429
14301430static void utoukond_ym3438_interrupt(const device_config *device, int linestate)
14311431{
1432   cpu_set_input_line(device->machine->cpu[1], INPUT_LINE_NMI, linestate);
1432   cputag_set_input_line(device->machine, "audiocpu", INPUT_LINE_NMI, linestate);
14331433}
14341434
14351435static const ym3438_interface utoukond_ym3438_intf =
r4679r4680
14451445
14461446***************************************************************************/
14471447
1448/*
14491448
1450 Mirror RAM
1451
1452*/
1453static UINT16 *mirror_ram;
1454
1455static READ16_HANDLER( mirror_ram_r )
1456{
1457   return mirror_ram[offset];
1458}
1459
1460static WRITE16_HANDLER( mirror_ram_w )
1461{
1462   COMBINE_DATA(&mirror_ram[offset]);
1463//  logerror("PC %06X - Mirror RAM Written: %04X <- %04X\n", cpu_get_pc(space->cpu), offset*2, data);
1464}
1465
1466
1467
14681449/*
14691450
14701451 Shared RAM:
r4679r4680
15011482      case 0/2:   // bit 0: reset sub cpu?
15021483         if (ACCESSING_BITS_0_7)
15031484         {
1504            if ( !(old_data&1) && (data&1) )
1505               cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_RESET, PULSE_LINE);
1485            if ( !(old_data & 1) && (data & 1) )
1486               cputag_set_input_line(space->machine, "sub", INPUT_LINE_RESET, PULSE_LINE);
15061487            old_data = data;
15071488         }
15081489         break;
r4679r4680
15881569   writing to sharedram! */
15891570
15901571
1591static ADDRESS_MAP_START( tndrcade_readmem, ADDRESS_SPACE_PROGRAM, 16 )
1592   AM_RANGE(0x000000, 0x07ffff) AM_READ(SMH_ROM            )   // ROM
1593   AM_RANGE(0x380000, 0x3803ff) AM_READ(SMH_RAM            )   // Palette
1594/**/AM_RANGE(0x400000, 0x400001) AM_READ(SMH_RAM            )   // ? $4000
1595/**/AM_RANGE(0x600000, 0x600607) AM_READ(SMH_RAM            )   // Sprites Y
1596   AM_RANGE(0xa00000, 0xa00fff) AM_READ(sharedram_68000_r      )   // Shared RAM
1597   AM_RANGE(0xc00000, 0xc03fff) AM_READ(SMH_RAM            )   // Sprites Code + X + Attr
1598   AM_RANGE(0xe00000, 0xe03fff) AM_READ(SMH_RAM            )   // RAM (Mirrored?)
1599   AM_RANGE(0xffc000, 0xffffff) AM_READ(mirror_ram_r         )   // RAM (Mirrored?)
1572static ADDRESS_MAP_START( tndrcade_map, ADDRESS_SPACE_PROGRAM, 16 )
1573   AM_RANGE(0x000000, 0x07ffff) AM_ROM                        // ROM
1574   AM_RANGE(0x200000, 0x200001) AM_WRITENOP                  // ? 0
1575   AM_RANGE(0x280000, 0x280001) AM_WRITENOP                  // ? 0 / 1 (sub cpu related?)
1576   AM_RANGE(0x300000, 0x300001) AM_WRITENOP                  // ? 0 / 1
1577   AM_RANGE(0x380000, 0x3803ff) AM_RAM AM_BASE(&paletteram16) AM_SIZE(&seta_paletteram_size) // Palette
1578/**/AM_RANGE(0x400000, 0x400001) AM_WRITENOP                  // ? $4000
1579/**/AM_RANGE(0x600000, 0x600607) AM_RAM   AM_BASE(&spriteram16)      // Sprites Y
1580   AM_RANGE(0x800000, 0x800007) AM_WRITE(sub_ctrl_w)            // Sub CPU Control?
1581   AM_RANGE(0xa00000, 0xa00fff) AM_READWRITE(sharedram_68000_r,sharedram_68000_w)   // Shared RAM
1582   AM_RANGE(0xc00000, 0xc03fff) AM_RAM   AM_BASE(&spriteram16_2)      // Sprites Code + X + Attr
1583   AM_RANGE(0xe00000, 0xe03fff) AM_RAM AM_SHARE(1)               // RAM (Mirrored?)
1584   AM_RANGE(0xffc000, 0xffffff) AM_RAM AM_SHARE(1)               // RAM (Mirrored?)
16001585ADDRESS_MAP_END
16011586
1602static ADDRESS_MAP_START( tndrcade_writemem, ADDRESS_SPACE_PROGRAM, 16 )
1603   AM_RANGE(0x000000, 0x07ffff) AM_WRITE(SMH_ROM                  )   // ROM
1604   AM_RANGE(0x200000, 0x200001) AM_WRITE(SMH_NOP                  )   // ? 0
1605   AM_RANGE(0x280000, 0x280001) AM_WRITE(SMH_NOP                  )   // ? 0 / 1 (sub cpu related?)
1606   AM_RANGE(0x300000, 0x300001) AM_WRITE(SMH_NOP                  )   // ? 0 / 1
1607   AM_RANGE(0x380000, 0x3803ff) AM_WRITE(SMH_RAM) AM_BASE(&paletteram16   ) AM_SIZE(&seta_paletteram_size)   // Palette
1608   AM_RANGE(0x400000, 0x400001) AM_WRITE(SMH_RAM                  )   // ? $4000
1609   AM_RANGE(0x600000, 0x600607) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16      )   // Sprites Y
1610   AM_RANGE(0x800000, 0x800007) AM_WRITE(sub_ctrl_w               )   // Sub CPU Control?
1611   AM_RANGE(0xa00000, 0xa00fff) AM_WRITE(sharedram_68000_w            )   // Shared RAM
1612   AM_RANGE(0xc00000, 0xc03fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16_2      )   // Sprites Code + X + Attr
1613   AM_RANGE(0xe00000, 0xe03fff) AM_WRITE(SMH_RAM) AM_BASE(&mirror_ram      )   // RAM (Mirrored?)
1614   AM_RANGE(0xffc000, 0xffffff) AM_WRITE(mirror_ram_w               )   // RAM (Mirrored?)
1615ADDRESS_MAP_END
16161587
1617
16181588/***************************************************************************
16191589                Twin Eagle, DownTown, Arbalester, Meta Fox
16201590        (with slight variations, and Meta Fox protection hooked in)
16211591***************************************************************************/
16221592
1623static ADDRESS_MAP_START( downtown_readmem, ADDRESS_SPACE_PROGRAM, 16 )
1624   AM_RANGE(0x000000, 0x09ffff) AM_READ(SMH_ROM            )   // ROM
1625   AM_RANGE(0x100000, 0x103fff) AM_DEVREAD("x1", seta_sound_word_r      )   // Sound
1626   AM_RANGE(0x200000, 0x200001) AM_READ(SMH_NOP            )   // watchdog? (twineagl)
1627   AM_RANGE(0x600000, 0x600003) AM_READ(seta_dsw_r            )   // DSW
1628   AM_RANGE(0x700000, 0x7003ff) AM_READ(SMH_RAM            )   // Palette
1629   AM_RANGE(0x900000, 0x901fff) AM_READ(SMH_RAM            )   // VRAM
1630   AM_RANGE(0x902000, 0x903fff) AM_READ(SMH_RAM            )   // VRAM
1631   AM_RANGE(0xb00000, 0xb00fff) AM_READ(sharedram_68000_r      )   // Shared RAM
1632   AM_RANGE(0xd00000, 0xd003ff) AM_READ(SMH_RAM            )   // Sprites Y
1633   AM_RANGE(0xe00000, 0xe03fff) AM_READ(SMH_RAM            )   // Sprites Code + X + Attr
1634   AM_RANGE(0xf00000, 0xffffff) AM_READ(SMH_RAM            )   // RAM
1593static ADDRESS_MAP_START( downtown_map, ADDRESS_SPACE_PROGRAM, 16 )
1594   AM_RANGE(0x000000, 0x09ffff) AM_ROM                        // ROM
1595   AM_RANGE(0x100000, 0x103fff) AM_DEVREADWRITE("x1", seta_sound_word_r,seta_sound_word_w)   // Sound
1596   AM_RANGE(0x200000, 0x200001) AM_NOP                        // watchdog? (twineagl)
1597   AM_RANGE(0x300000, 0x300001) AM_WRITENOP                  // IRQ enable/acknowledge?
1598   AM_RANGE(0x400000, 0x400007) AM_WRITE(twineagl_tilebank_w)      // special tile banking to animate water in twineagl
1599   AM_RANGE(0x500000, 0x500001) AM_WRITENOP                  // ?
1600   AM_RANGE(0x600000, 0x600003) AM_READ(seta_dsw_r)            // DSW
1601   AM_RANGE(0x700000, 0x7003ff) AM_RAM AM_BASE(&paletteram16) AM_SIZE(&seta_paletteram_size)   // Palette
1602   AM_RANGE(0x800000, 0x800005) AM_WRITEONLY AM_BASE(&seta_vctrl_0)// VRAM Ctrl
1603   AM_RANGE(0x900000, 0x903fff) AM_RAM_WRITE(seta_vram_0_w) AM_BASE(&seta_vram_0)   // VRAM
1604   AM_RANGE(0xa00000, 0xa00007) AM_WRITE(sub_ctrl_w)            // Sub CPU Control?
1605   AM_RANGE(0xb00000, 0xb00fff) AM_READWRITE(sharedram_68000_r,sharedram_68000_w)   // Shared RAM
1606   AM_RANGE(0xc00000, 0xc00001) AM_WRITENOP                  // ? $4000
1607   AM_RANGE(0xd00000, 0xd00607) AM_RAM AM_BASE(&spriteram16)      // Sprites Y
1608   AM_RANGE(0xe00000, 0xe03fff) AM_RAM AM_BASE(&spriteram16_2)      // Sprites Code + X + Attr
1609   AM_RANGE(0xf00000, 0xffffff) AM_RAM                        // RAM
16351610ADDRESS_MAP_END
16361611
1637static ADDRESS_MAP_START( downtown_writemem, ADDRESS_SPACE_PROGRAM, 16 )
1638   AM_RANGE(0x000000, 0x09ffff) AM_WRITE(SMH_ROM                  )   // ROM
1639   AM_RANGE(0x100000, 0x103fff) AM_DEVWRITE("x1", seta_sound_word_w            )   // Sound
1640   AM_RANGE(0x200000, 0x200001) AM_WRITE(SMH_NOP                  )   // watchdog?
1641   AM_RANGE(0x300000, 0x300001) AM_WRITE(SMH_NOP                  )   // IRQ enable/acknowledge?
1642   AM_RANGE(0x400000, 0x400007) AM_WRITE(twineagl_tilebank_w         )   // special tile banking to animate water in twineagl
1643   AM_RANGE(0x500000, 0x500001) AM_WRITE(SMH_NOP                  )   // ?
1644   AM_RANGE(0x700000, 0x7003ff) AM_WRITE(SMH_RAM) AM_BASE(&paletteram16   ) AM_SIZE(&seta_paletteram_size)   // Palette
1645   AM_RANGE(0x800000, 0x800005) AM_WRITE(SMH_RAM) AM_BASE(&seta_vctrl_0      )   // VRAM Ctrl
1646   AM_RANGE(0x900000, 0x903fff) AM_WRITE(seta_vram_0_w) AM_BASE(&seta_vram_0   )   // VRAM
1647   AM_RANGE(0xa00000, 0xa00007) AM_WRITE(sub_ctrl_w               )   // Sub CPU Control?
1648   AM_RANGE(0xb00000, 0xb00fff) AM_WRITE(sharedram_68000_w            )   // Shared RAM
1649   AM_RANGE(0xc00000, 0xc00001) AM_WRITE(SMH_RAM                  )   // ? $4000
1650   AM_RANGE(0xd00000, 0xd00607) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16      )   // Sprites Y
1651   AM_RANGE(0xe00000, 0xe03fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16_2      )   // Sprites Code + X + Attr
1652   AM_RANGE(0xf00000, 0xffffff) AM_WRITE(SMH_RAM                  )   // RAM
1653ADDRESS_MAP_END
16541612
1655
16561613/***************************************************************************
16571614                                Caliber 50
16581615***************************************************************************/
r4679r4680
16841641{
16851642   if (ACCESSING_BITS_0_7)
16861643   {
1687      soundlatch_word_w(space,0,data,mem_mask);
1688      cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_NMI, PULSE_LINE);
1644      soundlatch_word_w(space, 0, data, mem_mask);
1645      cputag_set_input_line(space->machine, "sub", INPUT_LINE_NMI, PULSE_LINE);
16891646      cpu_spinuntil_time(space->cpu, ATTOTIME_IN_USEC(50));   // Allow the other cpu to reply
16901647   }
16911648}
16921649
1693static ADDRESS_MAP_START( calibr50_readmem, ADDRESS_SPACE_PROGRAM, 16 )
1694   AM_RANGE(0x000000, 0x09ffff) AM_READ(SMH_ROM            )   // ROM
1695   AM_RANGE(0xff0000, 0xffffff) AM_READ(SMH_RAM            )   // RAM
1696   AM_RANGE(0x100000, 0x100007) AM_READ(SMH_NOP            )   // ? (same as a00010-a00017?)
1697   AM_RANGE(0x200000, 0x200fff) AM_READ(SMH_RAM            )   // NVRAM
1698   AM_RANGE(0x300000, 0x300001) AM_READ(SMH_NOP            )   // ? (value's read but not used)
1699   AM_RANGE(0x400000, 0x400001) AM_READ(watchdog_reset16_r      )   // Watchdog
1700   AM_RANGE(0x600000, 0x600003) AM_READ(seta_dsw_r            )   // DSW
1701   AM_RANGE(0x700000, 0x7003ff) AM_READ(SMH_RAM            )   // Palette
1702   AM_RANGE(0x900000, 0x901fff) AM_READ(SMH_RAM            )   // VRAM
1703   AM_RANGE(0x902000, 0x903fff) AM_READ(SMH_RAM            )   // VRAM
1704   AM_RANGE(0x904000, 0x904fff) AM_READ(SMH_RAM            )   //
1705   AM_RANGE(0xa00000, 0xa00019) AM_READ(calibr50_ip_r         )   // Input Ports
1706/**/AM_RANGE(0xd00000, 0xd00607) AM_READ(SMH_RAM            )   // Sprites Y
1707   AM_RANGE(0xe00000, 0xe03fff) AM_READ(SMH_RAM            )   // Sprites Code + X + Attr
1708   AM_RANGE(0xb00000, 0xb00001) AM_READ(soundlatch2_word_r      )   // From Sub CPU
1709/**/AM_RANGE(0xc00000, 0xc00001) AM_READ(SMH_RAM            )   // ? $4000
1710ADDRESS_MAP_END
1650static ADDRESS_MAP_START( calibr50_map, ADDRESS_SPACE_PROGRAM, 16 )
1651   AM_RANGE(0x000000, 0x09ffff) AM_ROM                        // ROM
1652   AM_RANGE(0xff0000, 0xffffff) AM_RAM                        // RAM
1653   AM_RANGE(0x100000, 0x100007) AM_READNOP                     // ? (same as a00010-a00017?)
1654   AM_RANGE(0x200000, 0x200fff) AM_RAM                        // NVRAM
1655   AM_RANGE(0x300000, 0x300001) AM_READNOP                     // ? (value's read but not used)
1656   AM_RANGE(0x300000, 0x300001) AM_WRITENOP                  // ? (random value)
1657   AM_RANGE(0x400000, 0x400001) AM_READ(watchdog_reset16_r)      // Watchdog
1658   AM_RANGE(0x500000, 0x500001) AM_WRITENOP                  // ?
1659   AM_RANGE(0x600000, 0x600003) AM_READ(seta_dsw_r)            // DSW
1660   AM_RANGE(0x700000, 0x7003ff) AM_RAM AM_BASE(&paletteram16) AM_SIZE(&seta_paletteram_size)   // Palette
1661   AM_RANGE(0x800000, 0x800005) AM_WRITEONLY AM_BASE(&seta_vctrl_0)// VRAM Ctrl
1662   AM_RANGE(0x900000, 0x903fff) AM_RAM_WRITE(seta_vram_0_w) AM_BASE(&seta_vram_0)   // VRAM
17111663
1712static ADDRESS_MAP_START( calibr50_writemem, ADDRESS_SPACE_PROGRAM, 16 )
1713   AM_RANGE(0x000000, 0x09ffff) AM_WRITE(SMH_ROM                  )   // ROM
1714   AM_RANGE(0xff0000, 0xffffff) AM_WRITE(SMH_RAM                  )   // RAM
1715   AM_RANGE(0x200000, 0x200fff) AM_WRITE(SMH_RAM                  )   // NVRAM
1716   AM_RANGE(0x300000, 0x300001) AM_WRITE(SMH_NOP                  )   // ? (random value)
1717   AM_RANGE(0x500000, 0x500001) AM_WRITE(SMH_NOP                  )   // ?
1718   AM_RANGE(0x700000, 0x7003ff) AM_WRITE(SMH_RAM) AM_BASE(&paletteram16   ) AM_SIZE(&seta_paletteram_size)   // Palette
1719   AM_RANGE(0x800000, 0x800005) AM_WRITE(SMH_RAM) AM_BASE(&seta_vctrl_0      )   // VRAM Ctrl
1720   AM_RANGE(0x900000, 0x903fff) AM_WRITE(seta_vram_0_w) AM_BASE(&seta_vram_0   )   // VRAM
1721   AM_RANGE(0x904000, 0x904fff) AM_WRITE(SMH_RAM                  )   //
1722   AM_RANGE(0xd00000, 0xd00607) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16      )   // Sprites Y
1723   AM_RANGE(0xe00000, 0xe03fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16_2      )   // Sprites Code + X + Attr
1724   AM_RANGE(0xb00000, 0xb00001) AM_WRITE(calibr50_soundlatch_w         )   // To Sub CPU
1725   AM_RANGE(0xc00000, 0xc00001) AM_WRITE(SMH_RAM                  )   // ? $4000
1664   AM_RANGE(0x904000, 0x904fff) AM_RAM                        //
1665   AM_RANGE(0xa00000, 0xa00019) AM_READ(calibr50_ip_r)            // Input Ports
1666/**/AM_RANGE(0xd00000, 0xd00607) AM_RAM AM_BASE(&spriteram16)      // Sprites Y
1667   AM_RANGE(0xe00000, 0xe03fff) AM_RAM   AM_BASE(&spriteram16_2)      // Sprites Code + X + Attr
1668   AM_RANGE(0xb00000, 0xb00001) AM_READWRITE(soundlatch2_word_r,calibr50_soundlatch_w)   // From Sub CPU
1669/**/AM_RANGE(0xc00000, 0xc00001) AM_RAM                        // ? $4000
17261670ADDRESS_MAP_END
17271671
17281672
r4679r4680
17821726}
17831727
17841728
1785static ADDRESS_MAP_START( usclssic_readmem, ADDRESS_SPACE_PROGRAM, 16 )
1786   AM_RANGE(0x000000, 0x07ffff) AM_READ(SMH_ROM               )   // ROM
1787   AM_RANGE(0xff0000, 0xffffff) AM_READ(SMH_RAM               )   // RAM
1788   AM_RANGE(0x800000, 0x800607) AM_READ(SMH_RAM               )   // Sprites Y
1789/**/AM_RANGE(0x900000, 0x900001) AM_READ(SMH_RAM               )   // ?
1790   AM_RANGE(0xa00000, 0xa00005) AM_READ(SMH_RAM               )   // VRAM Ctrl
1791/**/AM_RANGE(0xb00000, 0xb003ff) AM_READ(SMH_RAM               )   // Palette
1792   AM_RANGE(0xb40000, 0xb40003) AM_READ(usclssic_trackball_x_r      )   // TrackBall X
1793   AM_RANGE(0xb40004, 0xb40007) AM_READ(usclssic_trackball_y_r      )   // TrackBall Y + Buttons
1729static ADDRESS_MAP_START( usclssic_map, ADDRESS_SPACE_PROGRAM, 16 )
1730   AM_RANGE(0x000000, 0x07ffff) AM_ROM                           // ROM
1731   AM_RANGE(0xff0000, 0xffffff) AM_RAM                           // RAM
1732   AM_RANGE(0x800000, 0x800607) AM_RAM    AM_BASE(&spriteram16)         // Sprites Y
1733/**/AM_RANGE(0x900000, 0x900001) AM_RAM                           // ? $4000
1734   AM_RANGE(0xa00000, 0xa00005) AM_RAM AM_BASE(&seta_vctrl_0)         // VRAM Ctrl
1735/**/AM_RANGE(0xb00000, 0xb003ff) AM_RAM AM_BASE(&paletteram16) AM_SIZE(&seta_paletteram_size)   // Palette
1736   AM_RANGE(0xb40000, 0xb40003) AM_READ(usclssic_trackball_x_r)      // TrackBall X
1737   AM_RANGE(0xb40000, 0xb40001) AM_WRITE(usclssic_lockout_w)         // Coin Lockout + Tiles Banking
1738   AM_RANGE(0xb40004, 0xb40007) AM_READ(usclssic_trackball_y_r)      // TrackBall Y + Buttons
1739   AM_RANGE(0xb4000a, 0xb4000b) AM_WRITENOP                     // ? (value's not important. In lev2&6)
17941740   AM_RANGE(0xb40010, 0xb40011) AM_READ_PORT("COINS")               // Coins
1795   AM_RANGE(0xb40018, 0xb4001f) AM_READ(usclssic_dsw_r            )   // 2 DSWs
1796   AM_RANGE(0xb80000, 0xb80001) AM_READ(SMH_NOP               )   // watchdog (value is discarded)?
1797   AM_RANGE(0xc00000, 0xc03fff) AM_READ(SMH_RAM               )   // Sprites Code + X + Attr
1798   AM_RANGE(0xd00000, 0xd01fff) AM_READ(SMH_RAM               )   // VRAM
1799   AM_RANGE(0xd02000, 0xd03fff) AM_READ(SMH_RAM               )   // VRAM
1800   AM_RANGE(0xd04000, 0xd04fff) AM_READ(SMH_RAM               )   //
1801   AM_RANGE(0xe00000, 0xe00fff) AM_READ(SMH_RAM               )   // NVRAM? (odd bytes)
1741   AM_RANGE(0xb40010, 0xb40011) AM_WRITE(calibr50_soundlatch_w)      // To Sub CPU
1742   AM_RANGE(0xb40018, 0xb4001f) AM_READ(usclssic_dsw_r)            // 2 DSWs
1743   AM_RANGE(0xb40018, 0xb40019) AM_WRITE(watchdog_reset16_w)         // Watchdog
1744   AM_RANGE(0xb80000, 0xb80001) AM_READNOP                        // Watchdog (value is discarded)?
1745   AM_RANGE(0xc00000, 0xc03fff) AM_RAM AM_BASE(&spriteram16_2)         // Sprites Code + X + Attr
1746   AM_RANGE(0xd00000, 0xd03fff) AM_RAM_WRITE(seta_vram_0_w) AM_BASE(&seta_vram_0)   // VRAM
1747   AM_RANGE(0xd04000, 0xd04fff) AM_RAM                           //
1748   AM_RANGE(0xe00000, 0xe00fff) AM_RAM                           // NVRAM? (odd bytes)
18021749ADDRESS_MAP_END
18031750
1804static ADDRESS_MAP_START( usclssic_writemem, ADDRESS_SPACE_PROGRAM, 16 )
1805   AM_RANGE(0x000000, 0x07ffff) AM_WRITE(SMH_ROM                  )   // ROM
1806   AM_RANGE(0xff0000, 0xffffff) AM_WRITE(SMH_RAM                  )   // RAM
1807   AM_RANGE(0x800000, 0x800607) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16      )   // Sprites Y
1808   AM_RANGE(0x900000, 0x900001) AM_WRITE(SMH_RAM                  )   // ? $4000
1809   AM_RANGE(0xa00000, 0xa00005) AM_WRITE(SMH_RAM) AM_BASE(&seta_vctrl_0      )   // VRAM Ctrl
1810   AM_RANGE(0xb00000, 0xb003ff) AM_WRITE(SMH_RAM) AM_BASE(&paletteram16   ) AM_SIZE(&seta_paletteram_size)   // Palette
1811   AM_RANGE(0xb40000, 0xb40001) AM_WRITE(usclssic_lockout_w         )   // Coin Lockout + Tiles Banking
1812   AM_RANGE(0xb40010, 0xb40011) AM_WRITE(calibr50_soundlatch_w         )   // To Sub CPU
1813   AM_RANGE(0xb40018, 0xb40019) AM_WRITE(watchdog_reset16_w         )   // Watchdog
1814   AM_RANGE(0xb4000a, 0xb4000b) AM_WRITE(SMH_NOP                  )   // ? (value's not important. In lev2&6)
1815   AM_RANGE(0xc00000, 0xc03fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16_2   )   // Sprites Code + X + Attr
1816   AM_RANGE(0xd00000, 0xd03fff) AM_WRITE(seta_vram_0_w) AM_BASE(&seta_vram_0   )   // VRAM
1817   AM_RANGE(0xd04000, 0xd04fff) AM_WRITE(SMH_RAM                  )   //
1818   AM_RANGE(0xe00000, 0xe00fff) AM_WRITE(SMH_RAM                  )   // NVRAM? (odd bytes)
1819ADDRESS_MAP_END
18201751
1821
1822
18231752/***************************************************************************
18241753                                Athena no Hatena?
18251754***************************************************************************/
18261755
1827static ADDRESS_MAP_START( atehate_readmem, ADDRESS_SPACE_PROGRAM, 16 )
1828   AM_RANGE(0x000000, 0x0fffff) AM_READ(SMH_ROM            )   // ROM
1829   AM_RANGE(0x900000, 0x9fffff) AM_READ(SMH_RAM            )   // RAM
1830   AM_RANGE(0x100000, 0x103fff) AM_DEVREAD("x1", seta_sound_word_r      )   // Sound
1831   AM_RANGE(0x600000, 0x600003) AM_READ(seta_dsw_r            )   // DSW
1832   AM_RANGE(0x700000, 0x7003ff) AM_READ(SMH_RAM            )   // Palette
1833   AM_RANGE(0xa00000, 0xa00607) AM_READ(SMH_RAM            )   // Sprites Y
1756static ADDRESS_MAP_START( atehate_map, ADDRESS_SPACE_PROGRAM, 16 )
1757   AM_RANGE(0x000000, 0x0fffff) AM_ROM                        // ROM
1758   AM_RANGE(0x900000, 0x9fffff) AM_RAM                        // RAM
1759   AM_RANGE(0x100000, 0x103fff) AM_DEVREADWRITE("x1", seta_sound_word_r,seta_sound_word_w)   // Sound
1760   AM_RANGE(0x200000, 0x200001) AM_WRITENOP                  // ? watchdog ?
1761   AM_RANGE(0x300000, 0x300001) AM_WRITENOP                  // ? 0 (irq ack lev 2?)
1762   AM_RANGE(0x500000, 0x500001) AM_WRITENOP                  // ? (end of lev 1: bit 4 goes 1,0,1)
1763   AM_RANGE(0x600000, 0x600003) AM_READ(seta_dsw_r)            // DSW
1764   AM_RANGE(0x700000, 0x7003ff) AM_RAM AM_BASE(&paletteram16) AM_SIZE(&seta_paletteram_size)   // Palette
1765   AM_RANGE(0xa00000, 0xa00607) AM_RAM   AM_BASE(&spriteram16)      // Sprites Y
18341766   AM_RANGE(0xb00000, 0xb00001) AM_READ_PORT("P1")               // P1
18351767   AM_RANGE(0xb00002, 0xb00003) AM_READ_PORT("P2")               // P2
18361768   AM_RANGE(0xb00004, 0xb00005) AM_READ_PORT("COINS")            // Coins
1837/**/AM_RANGE(0xc00000, 0xc00001) AM_READ(SMH_RAM            )   // ? 0x4000
1838   AM_RANGE(0xe00000, 0xe03fff) AM_READ(SMH_RAM            )   // Sprites Code + X + Attr
1769/**/AM_RANGE(0xc00000, 0xc00001) AM_RAM                        // ? 0x4000
1770   AM_RANGE(0xe00000, 0xe03fff) AM_RAM   AM_BASE(&spriteram16_2)      // Sprites Code + X + Attr
18391771ADDRESS_MAP_END
18401772
1841static ADDRESS_MAP_START( atehate_writemem, ADDRESS_SPACE_PROGRAM, 16 )
1842   AM_RANGE(0x000000, 0x0fffff) AM_WRITE(SMH_ROM               )   // ROM
1843   AM_RANGE(0x900000, 0x9fffff) AM_WRITE(SMH_RAM               )   // RAM
1844   AM_RANGE(0x100000, 0x103fff) AM_DEVWRITE("x1", seta_sound_word_w         )   // Sound
1845   AM_RANGE(0x200000, 0x200001) AM_WRITE(SMH_NOP               )   // ? watchdog ?
1846   AM_RANGE(0x300000, 0x300001) AM_WRITE(SMH_NOP               )   // ? 0 (irq ack lev 2?)
1847   AM_RANGE(0x500000, 0x500001) AM_WRITE(SMH_NOP               )   // ? (end of lev 1: bit 4 goes 1,0,1)
1848   AM_RANGE(0x700000, 0x7003ff) AM_WRITE(SMH_RAM) AM_BASE(&paletteram16   ) AM_SIZE(&seta_paletteram_size)   // Palette
1849   AM_RANGE(0xa00000, 0xa00607) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16   )   // Sprites Y
1850   AM_RANGE(0xc00000, 0xc00001) AM_WRITE(SMH_RAM               )   // ? 0x4000
1851   AM_RANGE(0xe00000, 0xe03fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16_2   )   // Sprites Code + X + Attr
1852ADDRESS_MAP_END
18531773
18541774/***************************************************************************
18551775                        Blandia
18561776***************************************************************************/
18571777
1858static ADDRESS_MAP_START( blandia_readmem, ADDRESS_SPACE_PROGRAM, 16 )
1859   AM_RANGE(0x000000, 0x1fffff) AM_READ(SMH_ROM            )   // ROM (up to 2MB)
1860   AM_RANGE(0x200000, 0x20ffff) AM_READ(SMH_RAM            )   // RAM (main ram for zingzip, wrofaero writes to 20f000-20ffff)
1861   AM_RANGE(0x210000, 0x21ffff) AM_READ(SMH_RAM            )   // RAM (gundhara)
1862   AM_RANGE(0x300000, 0x30ffff) AM_READ(SMH_RAM            )   // RAM (wrofaero only?)
1863   AM_RANGE(0x500000, 0x500005) AM_READ(SMH_RAM            )   // (gundhara)
1778static ADDRESS_MAP_START( blandia_map, ADDRESS_SPACE_PROGRAM, 16 )
1779   AM_RANGE(0x000000, 0x1fffff) AM_ROM                        // ROM (up to 2MB)
1780   AM_RANGE(0x200000, 0x20ffff) AM_RAM                        // RAM (main ram for zingzip, wrofaero writes to 20f000-20ffff)
1781   AM_RANGE(0x210000, 0x21ffff) AM_RAM                        // RAM (gundhara)
1782   AM_RANGE(0x300000, 0x30ffff) AM_RAM                        // RAM (wrofaero only?)
18641783   AM_RANGE(0x400000, 0x400001) AM_READ_PORT("P1")               // P1
18651784   AM_RANGE(0x400002, 0x400003) AM_READ_PORT("P2")               // P2
18661785   AM_RANGE(0x400004, 0x400005) AM_READ_PORT("COINS")            // Coins
1867   AM_RANGE(0x600000, 0x600003) AM_READ(seta_dsw_r            )   // DSW
1868   AM_RANGE(0x700000, 0x7003ff) AM_READ(SMH_RAM            )   // (rezon,jjsquawk)
1869   AM_RANGE(0x700400, 0x700fff) AM_READ(SMH_RAM            )   // Palette
1870   AM_RANGE(0x701000, 0x70ffff) AM_READ(SMH_RAM            )   //
1871/**/AM_RANGE(0x800000, 0x800607) AM_READ(SMH_RAM            )   // Sprites Y
1872   AM_RANGE(0x880000, 0x880001) AM_READ(SMH_RAM            )   // ? 0xc000
1873   AM_RANGE(0x900000, 0x903fff) AM_READ(SMH_RAM            )   // Sprites Code + X + Attr
1874/**/AM_RANGE(0xa00000, 0xa00005) AM_READ(SMH_RAM            )   // VRAM 0&1 Ctrl
1875/**/AM_RANGE(0xa80000, 0xa80005) AM_READ(SMH_RAM            )   // VRAM 2&3 Ctrl
1876   AM_RANGE(0xb00000, 0xb03fff) AM_READ(SMH_RAM            )   // VRAM 0&1
1877   AM_RANGE(0xb04000, 0xb0ffff) AM_READ(SMH_RAM            )   // (jjsquawk)
1878   AM_RANGE(0xb80000, 0xb83fff) AM_READ(SMH_RAM            )   // VRAM 2&3
1879   AM_RANGE(0xb84000, 0xb8ffff) AM_READ(SMH_RAM            )   // (jjsquawk)
1880   AM_RANGE(0xc00000, 0xc03fff) AM_DEVREAD("x1", seta_sound_word_r      )   // Sound
1786   AM_RANGE(0x500000, 0x500005) AM_RAM_WRITE(seta_vregs_w) AM_BASE(&seta_vregs)   // (gundhara) Coin Lockout + Video Registers
1787   AM_RANGE(0x600000, 0x600003) AM_READ(seta_dsw_r)            // DSW
1788   AM_RANGE(0x700000, 0x7003ff) AM_RAM                        // (rezon,jjsquawk)
1789   AM_RANGE(0x700400, 0x700fff) AM_RAM AM_BASE(&paletteram16) AM_SIZE(&seta_paletteram_size)   // Palette
1790   AM_RANGE(0x701000, 0x70ffff) AM_RAM                        //
1791/**/AM_RANGE(0x800000, 0x800607) AM_RAM AM_BASE(&spriteram16)      // Sprites Y
1792   AM_RANGE(0x880000, 0x880001) AM_RAM                        // ? 0xc000
1793   AM_RANGE(0x900000, 0x903fff) AM_RAM AM_BASE(&spriteram16_2)      // Sprites Code + X + Attr
1794/**/AM_RANGE(0xa00000, 0xa00005) AM_RAM AM_BASE(&seta_vctrl_0)      // VRAM 0&1 Ctrl
1795/**/AM_RANGE(0xa80000, 0xa80005) AM_RAM AM_BASE(&seta_vctrl_2)      // VRAM 2&3 Ctrl
1796   AM_RANGE(0xb00000, 0xb03fff) AM_RAM_WRITE(seta_vram_0_w) AM_BASE(&seta_vram_0)   // VRAM 0&1
1797   AM_RANGE(0xb04000, 0xb0ffff) AM_RAM                        // (jjsquawk)
1798   AM_RANGE(0xb80000, 0xb83fff) AM_RAM_WRITE(seta_vram_2_w) AM_BASE(&seta_vram_2)   // VRAM 2&3
1799   AM_RANGE(0xb84000, 0xb8ffff) AM_RAM                        // (jjsquawk)
1800   AM_RANGE(0xc00000, 0xc03fff) AM_DEVREADWRITE("x1", seta_sound_word_r,seta_sound_word_w)   // Sound
1801   AM_RANGE(0xd00000, 0xd00007) AM_WRITENOP                  // ?
1802   AM_RANGE(0xe00000, 0xe00001) AM_WRITENOP                  // ? VBlank IRQ Ack
1803   AM_RANGE(0xf00000, 0xf00001) AM_WRITENOP                  // ? Sound  IRQ Ack
18811804ADDRESS_MAP_END
18821805
1883static ADDRESS_MAP_START( blandia_writemem, ADDRESS_SPACE_PROGRAM, 16 )
1884   AM_RANGE(0x000000, 0x1fffff) AM_WRITE(SMH_ROM                  )   // ROM (up to 2MB)
1885   AM_RANGE(0x200000, 0x20ffff) AM_WRITE(SMH_RAM                  )   // RAM
1886   AM_RANGE(0x210000, 0x21ffff) AM_WRITE(SMH_RAM                  )   // RAM (gundhara)
1887   AM_RANGE(0x300000, 0x30ffff) AM_WRITE(SMH_RAM                  )   // RAM (wrofaero only?)
1888   AM_RANGE(0x500000, 0x500005) AM_WRITE(seta_vregs_w) AM_BASE(&seta_vregs      )   // Coin Lockout + Video Registers
1889   AM_RANGE(0x700000, 0x7003ff) AM_WRITE(SMH_RAM                  )   // (rezon,jjsquawk)
1890   AM_RANGE(0x700400, 0x700fff) AM_WRITE(SMH_RAM) AM_BASE(&paletteram16   ) AM_SIZE(&seta_paletteram_size)   // Palette
1891   AM_RANGE(0x701000, 0x70ffff) AM_WRITE(SMH_RAM                  )   //
1892   AM_RANGE(0x800000, 0x800607) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16      )   // Sprites Y
1893   AM_RANGE(0x880000, 0x880001) AM_WRITE(SMH_RAM                  )   // ? 0xc000
1894   AM_RANGE(0x900000, 0x903fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16_2      )   // Sprites Code + X + Attr
1895   AM_RANGE(0xa00000, 0xa00005) AM_WRITE(SMH_RAM) AM_BASE(&seta_vctrl_0      )   // VRAM 0&1 Ctrl
1896   AM_RANGE(0xa80000, 0xa80005) AM_WRITE(SMH_RAM) AM_BASE(&seta_vctrl_2      )   // VRAM 2&3 Ctrl
1897   AM_RANGE(0xb00000, 0xb03fff) AM_WRITE(seta_vram_0_w) AM_BASE(&seta_vram_0   )   // VRAM 0
1898   AM_RANGE(0xb04000, 0xb0ffff) AM_WRITE(SMH_RAM                  )   // (jjsquawk)
1899   AM_RANGE(0xb80000, 0xb83fff) AM_WRITE(seta_vram_2_w) AM_BASE(&seta_vram_2   )   // VRAM 2
1900   AM_RANGE(0xb84000, 0xb8ffff) AM_WRITE(SMH_RAM                  )   // (jjsquawk)
1901   AM_RANGE(0xc00000, 0xc03fff) AM_DEVWRITE("x1", seta_sound_word_w            )   // Sound
1902   AM_RANGE(0xd00000, 0xd00007) AM_WRITE(SMH_NOP                  )   // ?
1903   AM_RANGE(0xe00000, 0xe00001) AM_WRITE(SMH_NOP                  )   // ? VBlank IRQ Ack
1904   AM_RANGE(0xf00000, 0xf00001) AM_WRITE(SMH_NOP                  )   // ? Sound  IRQ Ack
1905ADDRESS_MAP_END
19061806
1907
19081807/***************************************************************************
19091808    Blandia (proto), Gundhara, J.J.Squawkers, Rezon, War of Aero, Zing Zing Zip
19101809                        (with slight variations)
19111810***************************************************************************/
19121811
1913static ADDRESS_MAP_START( blandiap_readmem, ADDRESS_SPACE_PROGRAM, 16 )
1914   AM_RANGE(0x000000, 0x1fffff) AM_READ(SMH_ROM            )   // ROM (up to 2MB)
1915   AM_RANGE(0x200000, 0x20ffff) AM_READ(SMH_RAM            )   // RAM (main ram for zingzip, wrofaero writes to 20f000-20ffff)
1916   AM_RANGE(0x210000, 0x21ffff) AM_READ(SMH_RAM            )   // RAM (gundhara)
1917   AM_RANGE(0x300000, 0x30ffff) AM_READ(SMH_RAM            )   // RAM (wrofaero only?)
1918   AM_RANGE(0x500000, 0x500005) AM_READ(SMH_RAM            )   // (gundhara)
1812static ADDRESS_MAP_START( blandiap_map, ADDRESS_SPACE_PROGRAM, 16 )
1813   AM_RANGE(0x000000, 0x1fffff) AM_ROM                        // ROM (up to 2MB)
1814   AM_RANGE(0x200000, 0x20ffff) AM_RAM                        // RAM (main ram for zingzip, wrofaero writes to 20f000-20ffff)
1815   AM_RANGE(0x210000, 0x21ffff) AM_RAM                        // RAM (gundhara)
1816   AM_RANGE(0x300000, 0x30ffff) AM_RAM                        // RAM (wrofaero only?)
19191817   AM_RANGE(0x400000, 0x400001) AM_READ_PORT("P1")               // P1
19201818   AM_RANGE(0x400002, 0x400003) AM_READ_PORT("P2")               // P2
19211819   AM_RANGE(0x400004, 0x400005) AM_READ_PORT("COINS")            // Coins
1922   AM_RANGE(0x600000, 0x600003) AM_READ(seta_dsw_r            )   // DSW
1923   AM_RANGE(0x700000, 0x7003ff) AM_READ(SMH_RAM            )   // (rezon,jjsquawk)
1924   AM_RANGE(0x700400, 0x700fff) AM_READ(SMH_RAM            )   // Palette
1925   AM_RANGE(0x701000, 0x70ffff) AM_READ(SMH_RAM            )   //
1926   AM_RANGE(0x800000, 0x803fff) AM_READ(SMH_RAM            )   // VRAM 0&1
1927   AM_RANGE(0x804000, 0x80ffff) AM_READ(SMH_RAM            )   // (jjsquawk)
1928   AM_RANGE(0x880000, 0x883fff) AM_READ(SMH_RAM            )   // VRAM 2&3
1929   AM_RANGE(0x884000, 0x88ffff) AM_READ(SMH_RAM            )   // (jjsquawk)
1930/**/AM_RANGE(0x900000, 0x900005) AM_READ(SMH_RAM            )   // VRAM 0&1 Ctrl
1931/**/AM_RANGE(0x980000, 0x980005) AM_READ(SMH_RAM            )   // VRAM 2&3 Ctrl
1932/**/AM_RANGE(0xa00000, 0xa00607) AM_READ(SMH_RAM            )   // Sprites Y
1933/**/AM_RANGE(0xa80000, 0xa80001) AM_READ(SMH_RAM            )   // ? 0x4000
1934   AM_RANGE(0xb00000, 0xb03fff) AM_READ(SMH_RAM            )   // Sprites Code + X + Attr
1935   AM_RANGE(0xc00000, 0xc03fff) AM_DEVREAD("x1", seta_sound_word_r      )   // Sound
1820   AM_RANGE(0x500000, 0x500005) AM_RAM_WRITE(seta_vregs_w) AM_BASE(&seta_vregs) // (gundhara) Coin Lockout + Video Registers
1821   AM_RANGE(0x600000, 0x600003) AM_READ(seta_dsw_r)            // DSW
1822   AM_RANGE(0x700000, 0x7003ff) AM_RAM                        // (rezon,jjsquawk)
1823   AM_RANGE(0x700400, 0x700fff) AM_RAM AM_BASE(&paletteram16) AM_SIZE(&seta_paletteram_size)   // Palette
1824   AM_RANGE(0x701000, 0x70ffff) AM_RAM                        //
1825   AM_RANGE(0x800000, 0x803fff) AM_RAM_WRITE(seta_vram_0_w) AM_BASE(&seta_vram_0)   // VRAM 0&1
1826   AM_RANGE(0x804000, 0x80ffff) AM_RAM                        // (jjsquawk)
1827   AM_RANGE(0x880000, 0x883fff) AM_RAM_WRITE(seta_vram_2_w) AM_BASE(&seta_vram_2)   // VRAM 2&3
1828   AM_RANGE(0x884000, 0x88ffff) AM_RAM                        // (jjsquawk)
1829/**/AM_RANGE(0x900000, 0x900005) AM_RAM AM_BASE(&seta_vctrl_0)      // VRAM 0&1 Ctrl
1830/**/AM_RANGE(0x980000, 0x980005) AM_RAM AM_BASE(&seta_vctrl_2)      // VRAM 2&3 Ctrl
1831/**/AM_RANGE(0xa00000, 0xa00607) AM_RAM AM_BASE(&spriteram16)      // Sprites Y
1832/**/AM_RANGE(0xa80000, 0xa80001) AM_RAM                        // ? 0x4000
1833   AM_RANGE(0xb00000, 0xb03fff) AM_RAM AM_BASE(&spriteram16_2)      // Sprites Code + X + Attr
1834   AM_RANGE(0xc00000, 0xc03fff) AM_DEVREADWRITE("x1", seta_sound_word_r,seta_sound_word_w)   // Sound
1835   AM_RANGE(0xd00000, 0xd00007) AM_WRITENOP                  // ?
1836   AM_RANGE(0xe00000, 0xe00001) AM_WRITENOP                  // ? VBlank IRQ Ack
1837   AM_RANGE(0xf00000, 0xf00001) AM_WRITENOP                  // ? Sound  IRQ Ack
19361838ADDRESS_MAP_END
19371839
1938static ADDRESS_MAP_START( blandiap_writemem, ADDRESS_SPACE_PROGRAM, 16 )
1939   AM_RANGE(0x000000, 0x1fffff) AM_WRITE(SMH_ROM                  )   // ROM (up to 2MB)
1940   AM_RANGE(0x200000, 0x20ffff) AM_WRITE(SMH_RAM                  )   // RAM
1941   AM_RANGE(0x210000, 0x21ffff) AM_WRITE(SMH_RAM                  )   // RAM (gundhara)
1942   AM_RANGE(0x300000, 0x30ffff) AM_WRITE(SMH_RAM                  )   // RAM (wrofaero only?)
1943   AM_RANGE(0x500000, 0x500005) AM_WRITE(seta_vregs_w) AM_BASE(&seta_vregs      )   // Coin Lockout + Video Registers
1944   AM_RANGE(0x700000, 0x7003ff) AM_WRITE(SMH_RAM                  )   // (rezon,jjsquawk)
1945   AM_RANGE(0x700400, 0x700fff) AM_WRITE(SMH_RAM) AM_BASE(&paletteram16   ) AM_SIZE(&seta_paletteram_size)   // Palette
1946   AM_RANGE(0x701000, 0x70ffff) AM_WRITE(SMH_RAM                  )   //
1947   AM_RANGE(0x800000, 0x803fff) AM_WRITE(seta_vram_0_w) AM_BASE(&seta_vram_0   )   // VRAM 0
1948   AM_RANGE(0x804000, 0x80ffff) AM_WRITE(SMH_RAM                  )   // (jjsquawk)
1949   AM_RANGE(0x880000, 0x883fff) AM_WRITE(seta_vram_2_w) AM_BASE(&seta_vram_2   )   // VRAM 2
1950   AM_RANGE(0x884000, 0x88ffff) AM_WRITE(SMH_RAM                  )   // (jjsquawk)
1951   AM_RANGE(0x900000, 0x900005) AM_WRITE(SMH_RAM) AM_BASE(&seta_vctrl_0      )   // VRAM 0&1 Ctrl
1952   AM_RANGE(0x980000, 0x980005) AM_WRITE(SMH_RAM) AM_BASE(&seta_vctrl_2      )   // VRAM 2&3 Ctrl
1953   AM_RANGE(0xa00000, 0xa00607) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16      )   // Sprites Y
1954   AM_RANGE(0xa80000, 0xa80001) AM_WRITE(SMH_RAM                  )   // ? 0x4000
1955   AM_RANGE(0xb00000, 0xb03fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16_2      )   // Sprites Code + X + Attr
1956   AM_RANGE(0xc00000, 0xc03fff) AM_DEVWRITE("x1", seta_sound_word_w            )   // Sound
1957   AM_RANGE(0xd00000, 0xd00007) AM_WRITE(SMH_NOP                  )   // ?
1958   AM_RANGE(0xe00000, 0xe00001) AM_WRITE(SMH_NOP                  )   // ? VBlank IRQ Ack
1959   AM_RANGE(0xf00000, 0xf00001) AM_WRITE(SMH_NOP                  )   // ? Sound  IRQ Ack
1960ADDRESS_MAP_END
19611840
1962
19631841/***************************************************************************
19641842    Blandia, Gundhara, J.J.Squawkers, Rezon, War of Aero, Zing Zing Zip
19651843                    and Zombie Raid (with slight variations)
r4679r4680
20081886   old_clock = data & 1;
20091887}
20101888
2011static ADDRESS_MAP_START( wrofaero_readmem, ADDRESS_SPACE_PROGRAM, 16 )
2012   AM_RANGE(0x000000, 0x1fffff) AM_READ(SMH_ROM            )   // ROM (up to 2MB)
2013   AM_RANGE(0x200000, 0x20ffff) AM_READ(SMH_RAM            )   // RAM (main ram for zingzip, wrofaero writes to 20f000-20ffff)
2014   AM_RANGE(0x210000, 0x21ffff) AM_READ(SMH_RAM            )   // RAM (gundhara)
2015   AM_RANGE(0x300000, 0x30ffff) AM_READ(SMH_RAM            )   // RAM (wrofaero only?)
2016   AM_RANGE(0x500000, 0x500005) AM_READ(SMH_RAM            )   // (gundhara)
1889static ADDRESS_MAP_START( wrofaero_map, ADDRESS_SPACE_PROGRAM, 16 )
1890   AM_RANGE(0x000000, 0x1fffff) AM_ROM                        // ROM (up to 2MB)
1891   AM_RANGE(0x200000, 0x20ffff) AM_RAM AM_BASE(&seta_workram)      // RAM (pointer for zombraid crosshair hack)
1892   AM_RANGE(0x210000, 0x21ffff) AM_RAM                        // RAM (gundhara)
1893   AM_RANGE(0x300000, 0x30ffff) AM_RAM                        // RAM (wrofaero only?)
20171894   AM_RANGE(0x400000, 0x400001) AM_READ_PORT("P1")               // P1
20181895   AM_RANGE(0x400002, 0x400003) AM_READ_PORT("P2")               // P2
20191896   AM_RANGE(0x400004, 0x400005) AM_READ_PORT("COINS")            // Coins
2020   AM_RANGE(0x600000, 0x600003) AM_READ(seta_dsw_r            )   // DSW
2021   AM_RANGE(0x700000, 0x7003ff) AM_READ(SMH_RAM            )   // (rezon,jjsquawk)
2022   AM_RANGE(0x700400, 0x700fff) AM_READ(SMH_RAM            )   // Palette
2023   AM_RANGE(0x701000, 0x70ffff) AM_READ(SMH_RAM            )   //
2024   AM_RANGE(0x800000, 0x803fff) AM_READ(SMH_RAM            )   // VRAM 0&1
2025   AM_RANGE(0x804000, 0x80ffff) AM_READ(SMH_RAM            )   // (jjsquawk)
2026   AM_RANGE(0x880000, 0x883fff) AM_READ(SMH_RAM            )   // VRAM 2&3
2027   AM_RANGE(0x884000, 0x88ffff) AM_READ(SMH_RAM            )   // (jjsquawk)
2028/**/AM_RANGE(0x900000, 0x900005) AM_READ(SMH_RAM            )   // VRAM 0&1 Ctrl
2029/**/AM_RANGE(0x980000, 0x980005) AM_READ(SMH_RAM            )   // VRAM 2&3 Ctrl
2030/**/AM_RANGE(0xa00000, 0xa00607) AM_READ(SMH_RAM            )   // Sprites Y
2031/**/AM_RANGE(0xa80000, 0xa80001) AM_READ(SMH_RAM            )   // ? 0x4000
2032   AM_RANGE(0xb00000, 0xb03fff) AM_READ(SMH_RAM            )   // Sprites Code + X + Attr
2033   AM_RANGE(0xc00000, 0xc03fff) AM_DEVREAD("x1", seta_sound_word_r      )   // Sound
2034ADDRESS_MAP_END
1897   AM_RANGE(0x500000, 0x500005) AM_RAM_WRITE(seta_vregs_w) AM_BASE(&seta_vregs)   // (gundhara) Coin Lockout + Video Registers
20351898
2036static ADDRESS_MAP_START( wrofaero_writemem, ADDRESS_SPACE_PROGRAM, 16 )
2037   AM_RANGE(0x000000, 0x1fffff) AM_WRITE(SMH_ROM                  )   // ROM (up to 2MB)
2038   AM_RANGE(0x200000, 0x20ffff) AM_WRITE(SMH_RAM) AM_BASE(&seta_workram      )   // RAM (pointer for zombraid crosshair hack)
2039   AM_RANGE(0x210000, 0x21ffff) AM_WRITE(SMH_RAM                  )   // RAM (gundhara)
2040   AM_RANGE(0x300000, 0x30ffff) AM_WRITE(SMH_RAM                  )   // RAM (wrofaero only?)
2041   AM_RANGE(0x500000, 0x500005) AM_WRITE(seta_vregs_w) AM_BASE(&seta_vregs      )   // Coin Lockout + Video Registers
2042   AM_RANGE(0x700000, 0x7003ff) AM_WRITE(SMH_RAM                  )   // (rezon,jjsquawk)
2043   AM_RANGE(0x700400, 0x700fff) AM_WRITE(SMH_RAM) AM_BASE(&paletteram16   ) AM_SIZE(&seta_paletteram_size)   // Palette
2044   AM_RANGE(0x701000, 0x70ffff) AM_WRITE(SMH_RAM                  )   //
2045   AM_RANGE(0x800000, 0x803fff) AM_WRITE(seta_vram_0_w) AM_BASE(&seta_vram_0   )   // VRAM 0
2046   AM_RANGE(0x804000, 0x80ffff) AM_WRITE(SMH_RAM                  )   // (jjsquawk)
2047   AM_RANGE(0x880000, 0x883fff) AM_WRITE(seta_vram_2_w) AM_BASE(&seta_vram_2   )   // VRAM 2
2048   AM_RANGE(0x884000, 0x88ffff) AM_WRITE(SMH_RAM                  )   // (jjsquawk)
2049   AM_RANGE(0x900000, 0x900005) AM_WRITE(SMH_RAM) AM_BASE(&seta_vctrl_0      )   // VRAM 0&1 Ctrl
2050   AM_RANGE(0x980000, 0x980005) AM_WRITE(SMH_RAM) AM_BASE(&seta_vctrl_2      )   // VRAM 2&3 Ctrl
2051   AM_RANGE(0xa00000, 0xa00607) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16      )   // Sprites Y
2052   AM_RANGE(0xa80000, 0xa80001) AM_WRITE(SMH_RAM                  )   // ? 0x4000
2053   AM_RANGE(0xb00000, 0xb03fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16_2      )   // Sprites Code + X + Attr
2054   AM_RANGE(0xc00000, 0xc03fff) AM_DEVWRITE("x1", seta_sound_word_w            )   // Sound
1899   AM_RANGE(0x600000, 0x600003) AM_READ(seta_dsw_r)            // DSW
1900   AM_RANGE(0x700000, 0x7003ff) AM_RAM                        // (rezon,jjsquawk)
1901   AM_RANGE(0x700400, 0x700fff) AM_RAM AM_BASE(&paletteram16) AM_SIZE(&seta_paletteram_size)   // Palette
1902   AM_RANGE(0x701000, 0x70ffff) AM_RAM                        //
1903   AM_RANGE(0x800000, 0x803fff) AM_RAM_WRITE(seta_vram_0_w) AM_BASE(&seta_vram_0)   // VRAM 0&1
1904   AM_RANGE(0x804000, 0x80ffff) AM_RAM                        // (jjsquawk)
1905   AM_RANGE(0x880000, 0x883fff) AM_RAM_WRITE(seta_vram_2_w) AM_BASE(&seta_vram_2)   // VRAM 2&3
1906   AM_RANGE(0x884000, 0x88ffff) AM_RAM                        // (jjsquawk)
1907/**/AM_RANGE(0x900000, 0x900005) AM_RAM AM_BASE(&seta_vctrl_0)      // VRAM 0&1 Ctrl
1908/**/AM_RANGE(0x980000, 0x980005) AM_RAM AM_BASE(&seta_vctrl_2)      // VRAM 2&3 Ctrl
1909/**/AM_RANGE(0xa00000, 0xa00607) AM_RAM AM_BASE(&spriteram16)      // Sprites Y
1910/**/AM_RANGE(0xa80000, 0xa80001) AM_RAM                        // ? 0x4000
1911   AM_RANGE(0xb00000, 0xb03fff) AM_RAM   AM_BASE(&spriteram16_2)      // Sprites Code + X + Attr
1912   AM_RANGE(0xc00000, 0xc03fff) AM_DEVREADWRITE("x1", seta_sound_word_r,seta_sound_word_w)   // Sound
20551913#if __uPD71054_TIMER
2056   AM_RANGE(0xd00000, 0xd00007) AM_WRITE(timer_regs_w               )   // ?
1914   AM_RANGE(0xd00000, 0xd00007) AM_WRITE(timer_regs_w)            // ?
20571915#else
2058   AM_RANGE(0xd00000, 0xd00007) AM_WRITE(SMH_NOP                  )   // ?
1916   AM_RANGE(0xd00000, 0xd00007) AM_WRITENOP                  // ?
20591917#endif
2060   AM_RANGE(0xe00000, 0xe00001) AM_WRITE(SMH_NOP                  )   // ? VBlank IRQ Ack
2061   AM_RANGE(0xf00000, 0xf00001) AM_WRITE(SMH_NOP                  )   // ? Sound  IRQ Ack
1918   AM_RANGE(0xe00000, 0xe00001) AM_WRITENOP                  // ? VBlank IRQ Ack
1919   AM_RANGE(0xf00000, 0xf00001) AM_WRITENOP                  // ? Sound  IRQ Ack
20621920ADDRESS_MAP_END
20631921
2064static ADDRESS_MAP_START( jjsquawb_writemem, ADDRESS_SPACE_PROGRAM, 16 )
2065   AM_RANGE(0x000000, 0x1fffff) AM_WRITE(SMH_ROM                  )   // ROM (up to 2MB)
2066   AM_RANGE(0x200000, 0x20ffff) AM_WRITE(SMH_RAM) AM_BASE(&seta_workram      )   // RAM (pointer for zombraid crosshair hack)
2067   AM_RANGE(0x210000, 0x21ffff) AM_WRITE(SMH_RAM                  )   // RAM (gundhara)
2068   AM_RANGE(0x300000, 0x30ffff) AM_WRITE(SMH_RAM                  )   // RAM (wrofaero only?)
2069   AM_RANGE(0x500000, 0x500005) AM_WRITE(seta_vregs_w) AM_BASE(&seta_vregs      )   // Coin Lockout + Video Registers
2070   AM_RANGE(0x700000, 0x70b3ff) AM_WRITE(SMH_RAM                  )   // RZ: (rezon,jjsquawk)
2071   AM_RANGE(0x70b400, 0x70bfff) AM_WRITE(SMH_RAM) AM_BASE(&paletteram16   ) AM_SIZE(&seta_paletteram_size)   // Palette
2072   AM_RANGE(0x70c000, 0x70ffff) AM_WRITE(SMH_RAM                  )   //
2073   AM_RANGE(0x800000, 0x803fff) AM_WRITE(seta_vram_0_w) AM_BASE(&seta_vram_0   )   // VRAM 0
2074   AM_RANGE(0x804000, 0x807fff) AM_WRITE(seta_vram_2_w) AM_BASE(&seta_vram_2   )   // VRAM 2
2075   AM_RANGE(0x884000, 0x88ffff) AM_WRITE(SMH_RAM                  )   // (jjsquawk)
2076   AM_RANGE(0x908000, 0x908005) AM_WRITE(SMH_RAM) AM_BASE(&seta_vctrl_0      )   // VRAM 0&1 Ctrl
2077   AM_RANGE(0x909000, 0x909005) AM_WRITE(SMH_RAM) AM_BASE(&seta_vctrl_2      )   // VRAM 2&3 Ctrl
2078   AM_RANGE(0xa0a000, 0xa0a607) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16      )   // RZ: Sprites Y
2079   AM_RANGE(0xa80000, 0xa80001) AM_WRITE(SMH_RAM                  )   // ? 0x4000
2080   AM_RANGE(0xb0c000, 0xb0ffff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16_2      )   // RZ: Sprites Code + X + Attr
2081   AM_RANGE(0xc00000, 0xc03fff) AM_DEVWRITE("x1", seta_sound_word_w            )   // Sound
1922static ADDRESS_MAP_START( jjsquawb_map, ADDRESS_SPACE_PROGRAM, 16 )
1923   AM_RANGE(0x000000, 0x1fffff) AM_ROM                        // ROM (up to 2MB)
1924   AM_RANGE(0x200000, 0x20ffff) AM_RAM AM_BASE(&seta_workram)      // RAM (pointer for zombraid crosshair hack)
1925   AM_RANGE(0x210000, 0x21ffff) AM_RAM                        // RAM (gundhara)
1926   AM_RANGE(0x300000, 0x30ffff) AM_RAM                        // RAM (wrofaero only?)
1927   AM_RANGE(0x400000, 0x400001) AM_READ_PORT("P1")               // P1
1928   AM_RANGE(0x400002, 0x400003) AM_READ_PORT("P2")               // P2
1929   AM_RANGE(0x400004, 0x400005) AM_READ_PORT("COINS")            // Coins
1930   AM_RANGE(0x500000, 0x500005) AM_RAM_WRITE(seta_vregs_w) AM_BASE(&seta_vregs)   // (gundhara) Coin Lockout + Video Registers
1931
1932   AM_RANGE(0x600000, 0x600003) AM_READ(seta_dsw_r)            // DSW
1933   AM_RANGE(0x700000, 0x70b3ff) AM_RAM                        // RZ: (rezon,jjsquawk)
1934   AM_RANGE(0x70b400, 0x70bfff) AM_RAM AM_BASE(&paletteram16   ) AM_SIZE(&seta_paletteram_size)   // Palette
1935   AM_RANGE(0x70c000, 0x70ffff) AM_RAM                        //
1936   AM_RANGE(0x800000, 0x803fff) AM_RAM_WRITE(seta_vram_0_w) AM_BASE(&seta_vram_0)   // VRAM 0
1937   AM_RANGE(0x804000, 0x807fff) AM_RAM_WRITE(seta_vram_2_w) AM_BASE(&seta_vram_2)   // VRAM 2
1938   AM_RANGE(0x884000, 0x88ffff) AM_RAM                        // (jjsquawk)
1939/**/AM_RANGE(0x900000, 0x900005) AM_RAM AM_BASE(&seta_vctrl_0)      // VRAM 0&1 Ctrl
1940/**/AM_RANGE(0x980000, 0x980005) AM_RAM AM_BASE(&seta_vctrl_2)      // VRAM 2&3 Ctrl
1941/**/AM_RANGE(0xa0a000, 0xa0a607) AM_RAM AM_BASE(&spriteram16)      // RZ: Sprites Y
1942/**/AM_RANGE(0xa80000, 0xa80001) AM_RAM                        // ? 0x4000
1943   AM_RANGE(0xb0c000, 0xb0ffff) AM_RAM AM_BASE(&spriteram16_2)      // RZ: Sprites Code + X + Attr
1944   AM_RANGE(0xc00000, 0xc03fff) AM_DEVREADWRITE("x1", seta_sound_word_r,seta_sound_word_w)   // Sound
20821945#if __uPD71054_TIMER
2083   AM_RANGE(0xd00000, 0xd00007) AM_WRITE(timer_regs_w               )   // ?
1946   AM_RANGE(0xd00000, 0xd00007) AM_WRITE(timer_regs_w)            // ?
20841947#else
2085   AM_RANGE(0xd00000, 0xd00007) AM_WRITE(SMH_NOP                  )   // ?
1948   AM_RANGE(0xd00000, 0xd00007) AM_WRITENOP                  // ?
20861949#endif
2087   AM_RANGE(0xe00000, 0xe00001) AM_WRITE(SMH_NOP                  )   // ? VBlank IRQ Ack
2088   AM_RANGE(0xf00000, 0xf00001) AM_WRITE(SMH_NOP                  )   // ? Sound  IRQ Ack
1950   AM_RANGE(0xe00000, 0xe00001) AM_WRITENOP                  // ? VBlank IRQ Ack
1951   AM_RANGE(0xf00000, 0xf00001) AM_WRITENOP                  // ? Sound  IRQ Ack
20891952ADDRESS_MAP_END
20901953
20911954/***************************************************************************
2092        orbs
1955        Orbs
20931956***************************************************************************/
20941957
2095static ADDRESS_MAP_START( orbs_readmem, ADDRESS_SPACE_PROGRAM, 16 )
2096   AM_RANGE(0x000000, 0x07ffff) AM_READ(SMH_ROM            )   // ROM
2097   AM_RANGE(0xf00000, 0xf0ffff) AM_READ(SMH_RAM            )   // RAM
2098   AM_RANGE(0x100000, 0x100001) AM_READ(SMH_NOP            )   // ?
2099   AM_RANGE(0x200000, 0x200001) AM_READ(SMH_NOP            )   // ?
2100   AM_RANGE(0x300000, 0x300003) AM_READ(seta_dsw_r            )   // DSW
1958static ADDRESS_MAP_START( orbs_map, ADDRESS_SPACE_PROGRAM, 16 )
1959   AM_RANGE(0x000000, 0x07ffff) AM_ROM                        // ROM
1960   AM_RANGE(0xf00000, 0xf0ffff) AM_RAM                        // RAM
1961   AM_RANGE(0x100000, 0x100001) AM_READNOP                     // ?
1962   AM_RANGE(0x200000, 0x200001) AM_READNOP                     // ?
1963   AM_RANGE(0x300000, 0x300003) AM_READ(seta_dsw_r)            // DSW
1964   AM_RANGE(0x400000, 0x400001) AM_WRITENOP                  // ?
21011965   AM_RANGE(0x500000, 0x500001) AM_READ_PORT("P1")               // P1
21021966   AM_RANGE(0x500002, 0x500003) AM_READ_PORT("P2")               // P2
21031967   AM_RANGE(0x500004, 0x500005) AM_READ_PORT("COINS")            // Coins
21041968   //AM_RANGE(0x600000, 0x60000f) AM_READ(krzybowl_input_r     )   // P1
2105   AM_RANGE(0x8000f0, 0x8000f1) AM_READ(SMH_RAM            )   // NVRAM
2106   AM_RANGE(0x800100, 0x8001ff) AM_READ(SMH_RAM            )   // NVRAM
2107   AM_RANGE(0xa00000, 0xa03fff) AM_DEVREAD("x1", seta_sound_word_r      )   // Sound
2108   AM_RANGE(0xb00000, 0xb003ff) AM_READ(SMH_RAM            )   // Palette
2109   AM_RANGE(0xc00000, 0xc03fff) AM_READ(SMH_RAM            )   // Sprites Code + X + Attr
2110/**/AM_RANGE(0xd00000, 0xd00001) AM_READ(SMH_RAM            )   // ? 0x4000
2111/**/AM_RANGE(0xe00000, 0xe00607) AM_READ(SMH_RAM            )   // Sprites Y
1969   AM_RANGE(0x8000f0, 0x8000f1) AM_RAM                        // NVRAM
1970   AM_RANGE(0x800100, 0x8001ff) AM_RAM                        // NVRAM
1971   AM_RANGE(0xa00000, 0xa03fff) AM_DEVREADWRITE("x1", seta_sound_word_r,seta_sound_word_w)   // Sound
1972   AM_RANGE(0xb00000, 0xb003ff) AM_RAM AM_BASE(&paletteram16) AM_SIZE(&seta_paletteram_size)   // Palette
1973   AM_RANGE(0xc00000, 0xc03fff) AM_RAM AM_BASE(&spriteram16_2)      // Sprites Code + X + Attr
1974/**/AM_RANGE(0xd00000, 0xd00001) AM_RAM                        // ? 0x4000
1975/**/AM_RANGE(0xe00000, 0xe00607) AM_RAM AM_BASE(&spriteram16)      // Sprites Y
21121976ADDRESS_MAP_END
21131977
2114static ADDRESS_MAP_START( orbs_writemem, ADDRESS_SPACE_PROGRAM, 16 )
2115   AM_RANGE(0x000000, 0x07ffff) AM_WRITE(SMH_ROM               )   // ROM
2116   AM_RANGE(0xf00000, 0xf0ffff) AM_WRITE(SMH_RAM               )   // RAM
2117   AM_RANGE(0x400000, 0x400001) AM_WRITE(SMH_NOP               )   // ?
2118   AM_RANGE(0x8000f0, 0x8000f1) AM_WRITE(SMH_RAM               )   // NVRAM
2119   AM_RANGE(0x800100, 0x8001ff) AM_WRITE(SMH_RAM               )   // NVRAM
2120   AM_RANGE(0xa00000, 0xa03fff) AM_DEVWRITE("x1", seta_sound_word_w         )   // Sound
2121   AM_RANGE(0xb00000, 0xb003ff) AM_WRITE(SMH_RAM) AM_BASE(&paletteram16   ) AM_SIZE(&seta_paletteram_size)   // Palette
2122   AM_RANGE(0xc00000, 0xc03fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16_2   )   // Sprites Code + X + Attr
2123   AM_RANGE(0xd00000, 0xd00001) AM_WRITE(SMH_RAM               )   // ? 0x4000
2124   AM_RANGE(0xe00000, 0xe00607) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16   )   // Sprites Y
2125ADDRESS_MAP_END
2126
2127
21281978/***************************************************************************
21291979                                Block Carnival
21301980***************************************************************************/
21311981
21321982/* similar to krzybowl */
2133static ADDRESS_MAP_START( blockcar_readmem, ADDRESS_SPACE_PROGRAM, 16 )
2134   AM_RANGE(0x000000, 0x03ffff) AM_READ(SMH_ROM            )   // ROM
2135   AM_RANGE(0xf00000, 0xf03fff) AM_READ(SMH_RAM            )   // RAM
2136   AM_RANGE(0xf04000, 0xf041ff) AM_READ(SMH_RAM            )   // Backup RAM?
2137   AM_RANGE(0xf05000, 0xf050ff) AM_READ(SMH_RAM            )   // Backup RAM?
2138   AM_RANGE(0x300000, 0x300003) AM_READ(seta_dsw_r            )   // DSW
1983static ADDRESS_MAP_START( blockcar_map, ADDRESS_SPACE_PROGRAM, 16 )
1984   AM_RANGE(0x000000, 0x03ffff) AM_ROM                        // ROM
1985   AM_RANGE(0xf00000, 0xf03fff) AM_RAM                        // RAM
1986   AM_RANGE(0xf04000, 0xf041ff) AM_RAM                        // Backup RAM?
1987   AM_RANGE(0xf05000, 0xf050ff) AM_RAM                        // Backup RAM?
1988   AM_RANGE(0x100000, 0x100001) AM_WRITENOP                  // ? 1 (start of interrupts, main loop: watchdog?)
1989   AM_RANGE(0x200000, 0x200001) AM_WRITENOP                  // ? 0/1 (IRQ acknowledge?)
1990   AM_RANGE(0x300000, 0x300003) AM_READ(seta_dsw_r)            // DSW
1991   AM_RANGE(0x400000, 0x400001) AM_RAM_WRITE(seta_vregs_w) AM_BASE(&seta_vregs)   // Coin Lockout + Sound Enable (bit 4?)
21391992   AM_RANGE(0x500000, 0x500001) AM_READ_PORT("P1")               // P1
21401993   AM_RANGE(0x500002, 0x500003) AM_READ_PORT("P2")               // P2
21411994   AM_RANGE(0x500004, 0x500005) AM_READ_PORT("COINS")            // Coins
2142   AM_RANGE(0xa00000, 0xa03fff) AM_DEVREAD("x1", seta_sound_word_r      )   // Sound
2143   AM_RANGE(0xb00000, 0xb003ff) AM_READ(SMH_RAM            )   // Palette
2144   AM_RANGE(0xc00000, 0xc03fff) AM_READ(SMH_RAM            )   // Sprites Code + X + Attr
2145/**/AM_RANGE(0xd00000, 0xd00001) AM_READ(SMH_RAM            )   // ? 0x4000
2146/**/AM_RANGE(0xe00000, 0xe00607) AM_READ(SMH_RAM            )   // Sprites Y
1995   AM_RANGE(0xa00000, 0xa03fff) AM_DEVREADWRITE("x1", seta_sound_word_r,seta_sound_word_w)   // Sound
1996   AM_RANGE(0xb00000, 0xb003ff) AM_RAM AM_BASE(&paletteram16) AM_SIZE(&seta_paletteram_size)   // Palette
1997   AM_RANGE(0xc00000, 0xc03fff) AM_RAM AM_BASE(&spriteram16_2)   // Sprites Code + X + Attr
1998/**/AM_RANGE(0xd00000, 0xd00001) AM_RAM   // ? 0x4000
1999/**/AM_RANGE(0xe00000, 0xe00607) AM_RAM AM_BASE(&spriteram16)   // Sprites Y
21472000ADDRESS_MAP_END
21482001
2149static ADDRESS_MAP_START( blockcar_writemem, ADDRESS_SPACE_PROGRAM, 16 )
2150   AM_RANGE(0x000000, 0x03ffff) AM_WRITE(SMH_ROM               )   // ROM
2151   AM_RANGE(0xf00000, 0xf03fff) AM_WRITE(SMH_RAM               )   // RAM
2152   AM_RANGE(0xf04000, 0xf041ff) AM_WRITE(SMH_RAM               )   // Backup RAM?
2153   AM_RANGE(0xf05000, 0xf050ff) AM_WRITE(SMH_RAM               )   // Backup RAM?
2154   AM_RANGE(0x100000, 0x100001) AM_WRITE(SMH_NOP               )   // ? 1 (start of interrupts, main loop: watchdog?)
2155   AM_RANGE(0x200000, 0x200001) AM_WRITE(SMH_NOP               )   // ? 0/1 (IRQ acknowledge?)
2156   AM_RANGE(0x400000, 0x400001) AM_WRITE(seta_vregs_w) AM_BASE(&seta_vregs   )   // Coin Lockout + Sound Enable (bit 4?)
2157   AM_RANGE(0xa00000, 0xa03fff) AM_DEVWRITE("x1", seta_sound_word_w         )   // Sound
2158   AM_RANGE(0xb00000, 0xb003ff) AM_WRITE(SMH_RAM) AM_BASE(&paletteram16   ) AM_SIZE(&seta_paletteram_size)   // Palette
2159   AM_RANGE(0xc00000, 0xc03fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16_2   )   // Sprites Code + X + Attr
2160   AM_RANGE(0xd00000, 0xd00001) AM_WRITE(SMH_RAM               )   // ? 0x4000
2161   AM_RANGE(0xe00000, 0xe00607) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16   )   // Sprites Y
2162ADDRESS_MAP_END
21632002
2164
2165
21662003/***************************************************************************
21672004                                Daioh
21682005***************************************************************************/
21692006
2170static ADDRESS_MAP_START( daioh_readmem, ADDRESS_SPACE_PROGRAM, 16 )
2171   AM_RANGE(0x000000, 0x0fffff) AM_READ(SMH_ROM            )   // ROM
2172   AM_RANGE(0x100000, 0x10ffff) AM_READ(SMH_RAM            )   // RAM
2007static ADDRESS_MAP_START( daioh_map, ADDRESS_SPACE_PROGRAM, 16 )
2008   AM_RANGE(0x000000, 0x0fffff) AM_ROM                        // ROM
2009   AM_RANGE(0x100000, 0x10ffff) AM_RAM                        // RAM
21732010   AM_RANGE(0x400000, 0x400001) AM_READ_PORT("P1")               // P1
21742011   AM_RANGE(0x400002, 0x400003) AM_READ_PORT("P2")               // P2
21752012   AM_RANGE(0x400004, 0x400005) AM_READ_PORT("COINS")            // Coins
2013   AM_RANGE(0x500000, 0x500005) AM_RAM_WRITE(seta_vregs_w) AM_BASE(&seta_vregs)   // Coin Lockout + Video Registers
21762014   AM_RANGE(0x500006, 0x500007) AM_READ_PORT("EXTRA")            // Buttons 4,5,6
21772015   AM_RANGE(0x600000, 0x600003) AM_READ(seta_dsw_r            )   // DSW
2178   AM_RANGE(0x700000, 0x7003ff) AM_READ(SMH_RAM            )
2179   AM_RANGE(0x700400, 0x700fff) AM_READ(SMH_RAM            )  // Palette
2180   AM_RANGE(0x701000, 0x70ffff) AM_READ(SMH_RAM            )
2181   AM_RANGE(0x800000, 0x803fff) AM_READ(SMH_RAM            )   // VRAM 0&1
2182   AM_RANGE(0x804000, 0x80ffff) AM_READ(SMH_RAM            )   //
2183   AM_RANGE(0x880000, 0x883fff) AM_READ(SMH_RAM            )   // VRAM 2&3
2184   AM_RANGE(0x884000, 0x88ffff) AM_READ(SMH_RAM            )   //
2185   AM_RANGE(0x900000, 0x900005) AM_READ(SMH_RAM            )   // VRAM 0&1 Ctrl
2186   AM_RANGE(0x980000, 0x980005) AM_READ(SMH_RAM            )   // VRAM 2&3 Ctrl
2187   AM_RANGE(0xa00000, 0xa00607) AM_READ(SMH_RAM            )   // Sprites Y
2188   AM_RANGE(0xa80000, 0xa80001) AM_READ(SMH_RAM            )   // ? 0x4000
2189   AM_RANGE(0xb00000, 0xb03fff) AM_READ(SMH_RAM            )   // Sprites Code + X + Attr
2190   AM_RANGE(0xb04000, 0xb13fff) AM_READ(SMH_RAM            )   //
2191   AM_RANGE(0xc00000, 0xc03fff) AM_DEVREAD("x1", seta_sound_word_r      )   // Sound
2016   AM_RANGE(0x700000, 0x7003ff) AM_RAM
2017   AM_RANGE(0x700400, 0x700fff) AM_RAM AM_BASE(&paletteram16) AM_SIZE(&seta_paletteram_size)   // Palette
2018   AM_RANGE(0x701000, 0x70ffff) AM_RAM                        //
2019   AM_RANGE(0x800000, 0x803fff) AM_RAM_WRITE(seta_vram_0_w) AM_BASE(&seta_vram_0   )   // VRAM 0&1
2020   AM_RANGE(0x804000, 0x80ffff) AM_RAM                        //
2021   AM_RANGE(0x880000, 0x883fff) AM_RAM_WRITE(seta_vram_2_w) AM_BASE(&seta_vram_2   )   // VRAM 2&3
2022   AM_RANGE(0x884000, 0x88ffff) AM_RAM                        //
2023   AM_RANGE(0x900000, 0x900005) AM_RAM AM_BASE(&seta_vctrl_0)      // VRAM 0&1 Ctrl
2024   AM_RANGE(0x980000, 0x980005) AM_RAM AM_BASE(&seta_vctrl_2)      // VRAM 2&3 Ctrl
2025   AM_RANGE(0xa00000, 0xa00607) AM_RAM AM_BASE(&spriteram16      )   // Sprites Y
2026   AM_RANGE(0xa80000, 0xa80001) AM_RAM   // ? 0x4000
2027   AM_RANGE(0xb00000, 0xb03fff) AM_RAM AM_BASE(&spriteram16_2      )   // Sprites Code + X + Attr
2028   AM_RANGE(0xb04000, 0xb13fff) AM_RAM
2029   AM_RANGE(0xc00000, 0xc03fff) AM_DEVREADWRITE("x1", seta_sound_word_r,seta_sound_word_w)   // Sound
2030   AM_RANGE(0xe00000, 0xe00001) AM_WRITENOP   //
21922031ADDRESS_MAP_END
21932032
2194static ADDRESS_MAP_START( daioh_writemem, ADDRESS_SPACE_PROGRAM, 16 )
2195   AM_RANGE(0x000000, 0x0fffff) AM_WRITE(SMH_ROM                  )   // ROM
2196   AM_RANGE(0x100000, 0x10ffff) AM_WRITE(SMH_RAM                  )   // RAM
2197   AM_RANGE(0x500000, 0x500005) AM_WRITE(seta_vregs_w) AM_BASE(&seta_vregs      )   // Coin Lockout + Video Registers
2198   AM_RANGE(0x700000, 0x7003ff) AM_WRITE(SMH_RAM                  )
2199   AM_RANGE(0x700400, 0x700fff) AM_WRITE(SMH_RAM) AM_BASE(&paletteram16   ) AM_SIZE(&seta_paletteram_size)   // Palette
2200   AM_RANGE(0x701000, 0x70ffff) AM_WRITE(SMH_RAM                  )   //
2201   AM_RANGE(0x800000, 0x803fff) AM_WRITE(seta_vram_0_w) AM_BASE(&seta_vram_0   )   // VRAM 0
2202   AM_RANGE(0x804000, 0x80ffff) AM_WRITE(SMH_RAM                  )   //
2203   AM_RANGE(0x880000, 0x883fff) AM_WRITE(seta_vram_2_w) AM_BASE(&seta_vram_2   )   // VRAM 2
2204   AM_RANGE(0x884000, 0x88ffff) AM_WRITE(SMH_RAM                  )   //
2205   AM_RANGE(0x900000, 0x900005) AM_WRITE(SMH_RAM) AM_BASE(&seta_vctrl_0      )   // VRAM 0&1 Ctrl
2206   AM_RANGE(0x980000, 0x980005) AM_WRITE(SMH_RAM) AM_BASE(&seta_vctrl_2      )   // VRAM 2&3 Ctrl
2207   AM_RANGE(0xa00000, 0xa00607) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16      )   // Sprites Y
2208   AM_RANGE(0xa80000, 0xa80001) AM_WRITE(SMH_RAM                  )   // ? 0x4000
2209   AM_RANGE(0xb00000, 0xb03fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16_2      )   // Sprites Code + X + Attr
2210   AM_RANGE(0xb04000, 0xb13fff) AM_WRITE(SMH_RAM                  )   //
2211   AM_RANGE(0xc00000, 0xc03fff) AM_DEVWRITE("x1", seta_sound_word_w            )   // Sound
2212   AM_RANGE(0xe00000, 0xe00001) AM_WRITE(SMH_NOP                  )   //
2213ADDRESS_MAP_END
22142033
2215
22162034/***************************************************************************
22172035        Dragon Unit, Quiz Kokology, Quiz Kokology 2, Strike Gunner
22182036***************************************************************************/
22192037
2220static ADDRESS_MAP_START( drgnunit_readmem, ADDRESS_SPACE_PROGRAM, 16 )
2221   AM_RANGE(0x000000, 0x0bffff) AM_READ(SMH_ROM            )   // ROM
2222   AM_RANGE(0xf00000, 0xf0ffff) AM_READ(SMH_RAM            )   // RAM (qzkklogy)
2223   AM_RANGE(0xffc000, 0xffffff) AM_READ(SMH_RAM            )   // RAM (drgnunit,stg)
2224   AM_RANGE(0x100000, 0x103fff) AM_DEVREAD("x1", seta_sound_word_r      )   // Sound
2225   AM_RANGE(0x600000, 0x600003) AM_READ(seta_dsw_r            )   // DSW
2226   AM_RANGE(0x700000, 0x7003ff) AM_READ(SMH_RAM            )   // Palette
2227   AM_RANGE(0x900000, 0x901fff) AM_READ(SMH_RAM            )   // VRAM
2228   AM_RANGE(0x902000, 0x903fff) AM_READ(SMH_RAM            )   // VRAM
2038static ADDRESS_MAP_START( drgnunit_map, ADDRESS_SPACE_PROGRAM, 16 )
2039   AM_RANGE(0x000000, 0x0bffff) AM_ROM                        // ROM
2040   AM_RANGE(0xf00000, 0xf0ffff) AM_RAM                        // RAM (qzkklogy)
2041   AM_RANGE(0xffc000, 0xffffff) AM_RAM                        // RAM (drgnunit,stg)
2042   AM_RANGE(0x100000, 0x103fff) AM_DEVREADWRITE("x1", seta_sound_word_r,seta_sound_word_w)   // Sound
2043   AM_RANGE(0x200000, 0x200001) AM_WRITENOP                  // Watchdog
2044   AM_RANGE(0x300000, 0x300001) AM_WRITENOP                  // ? IRQ Ack
2045   AM_RANGE(0x500000, 0x500001) AM_RAM_WRITE(seta_vregs_w) AM_BASE(&seta_vregs)   // Coin Lockout + Video Registers
2046   AM_RANGE(0x600000, 0x600003) AM_READ(seta_dsw_r)            // DSW
2047   AM_RANGE(0x700000, 0x7003ff) AM_RAM AM_BASE(&paletteram16) AM_SIZE(&seta_paletteram_size)   // Palette
2048   AM_RANGE(0x800000, 0x800005) AM_RAM AM_BASE(&seta_vctrl_0)      // VRAM Ctrl
2049   AM_RANGE(0x900000, 0x903fff) AM_RAM_WRITE(seta_vram_0_w) AM_BASE(&seta_vram_0   )   // VRAM
2050   AM_RANGE(0x904000, 0x90ffff) AM_WRITENOP                  // unused (qzkklogy)
22292051   AM_RANGE(0xb00000, 0xb00001) AM_READ_PORT("P1")               // P1
22302052   AM_RANGE(0xb00002, 0xb00003) AM_READ_PORT("P2")               // P2
22312053   AM_RANGE(0xb00004, 0xb00005) AM_READ_PORT("COINS")            // Coins
2232   AM_RANGE(0xb00006, 0xb00007) AM_READ(SMH_NOP            )   // unused (qzkklogy)
2233/**/AM_RANGE(0xc00000, 0xc00001) AM_READ(SMH_RAM            )   // ? $4000
2234/**/AM_RANGE(0xd00000, 0xd00607) AM_READ(SMH_RAM            )   // Sprites Y
2235   AM_RANGE(0xe00000, 0xe03fff) AM_READ(SMH_RAM            )   // Sprites Code + X + Attr
2054   AM_RANGE(0xb00006, 0xb00007) AM_READNOP                     // unused (qzkklogy)
2055/**/AM_RANGE(0xc00000, 0xc00001) AM_RAM                        // ? $4000
2056/**/AM_RANGE(0xd00000, 0xd00607) AM_RAM AM_BASE(&spriteram16)      // Sprites Y
2057   AM_RANGE(0xe00000, 0xe03fff) AM_RAM AM_BASE(&spriteram16_2)      // Sprites Code + X + Attr
22362058ADDRESS_MAP_END
22372059
2238static ADDRESS_MAP_START( drgnunit_writemem, ADDRESS_SPACE_PROGRAM, 16 )
2239   AM_RANGE(0x000000, 0x0bffff) AM_WRITE(SMH_ROM                  )   // ROM
2240   AM_RANGE(0xf00000, 0xf0ffff) AM_WRITE(SMH_RAM                  )   // RAM (qzkklogy)
2241   AM_RANGE(0xffc000, 0xffffff) AM_WRITE(SMH_RAM                  )   // RAM (drgnunit,stg)
2242   AM_RANGE(0x100000, 0x103fff) AM_DEVWRITE("x1", seta_sound_word_w            )   // Sound
2243   AM_RANGE(0x200000, 0x200001) AM_WRITE(SMH_NOP                  )   // Watchdog
2244   AM_RANGE(0x300000, 0x300001) AM_WRITE(SMH_NOP                  )   // ? IRQ Ack
2245   AM_RANGE(0x500000, 0x500001) AM_WRITE(seta_vregs_w) AM_BASE(&seta_vregs      )   // Coin Lockout + Video Registers
2246   AM_RANGE(0x700000, 0x7003ff) AM_WRITE(SMH_RAM) AM_BASE(&paletteram16   ) AM_SIZE(&seta_paletteram_size)   // Palette
2247   AM_RANGE(0x800000, 0x800005) AM_WRITE(SMH_RAM) AM_BASE(&seta_vctrl_0      )   // VRAM Ctrl
2248   AM_RANGE(0x900000, 0x903fff) AM_WRITE(seta_vram_0_w) AM_BASE(&seta_vram_0   )   // VRAM
2249   AM_RANGE(0x904000, 0x90ffff) AM_WRITE(SMH_NOP                  )   // unused (qzkklogy)
2250   AM_RANGE(0xc00000, 0xc00001) AM_WRITE(SMH_RAM                  )   // ? $4000
2251   AM_RANGE(0xd00000, 0xd00607) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16      )   // Sprites Y
2252   AM_RANGE(0xe00000, 0xe03fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16_2      )   // Sprites Code + X + Attr
2253ADDRESS_MAP_END
22542060
2255
22562061/***************************************************************************
22572062                        Extreme Downhill / Sokonuke
22582063***************************************************************************/
22592064
2260static ADDRESS_MAP_START( extdwnhl_readmem, ADDRESS_SPACE_PROGRAM, 16 )
2261   AM_RANGE(0x000000, 0x0fffff) AM_READ(SMH_ROM            )   // ROM
2262   AM_RANGE(0x200000, 0x20ffff) AM_READ(SMH_RAM            )   // RAM
2263   AM_RANGE(0x210000, 0x21ffff) AM_READ(SMH_RAM            )   // RAM
2264   AM_RANGE(0x220000, 0x23ffff) AM_READ(SMH_RAM            )   // RAM (sokonuke)
2065static ADDRESS_MAP_START( extdwnhl_map, ADDRESS_SPACE_PROGRAM, 16 )
2066   AM_RANGE(0x000000, 0x0fffff) AM_ROM                        // ROM
2067   AM_RANGE(0x200000, 0x20ffff) AM_RAM                        // RAM
2068   AM_RANGE(0x210000, 0x21ffff) AM_RAM                        // RAM
2069   AM_RANGE(0x220000, 0x23ffff) AM_RAM                        // RAM (sokonuke)
22652070   AM_RANGE(0x400000, 0x400001) AM_READ_PORT("P1")               // P1
22662071   AM_RANGE(0x400002, 0x400003) AM_READ_PORT("P2")               // P2
22672072   AM_RANGE(0x400004, 0x400005) AM_READ_PORT("COINS")            // Coins
2268   AM_RANGE(0x400008, 0x40000b) AM_READ(seta_dsw_r            )   // DSW
2269   AM_RANGE(0x40000c, 0x40000d) AM_READ(watchdog_reset16_r      )   // Watchdog (extdwnhl, MUST RETURN $FFFF)
2270   AM_RANGE(0x500004, 0x500007) AM_READ(SMH_NOP            )   // IRQ Ack  (extdwnhl)
2271   AM_RANGE(0x600400, 0x600fff) AM_READ(SMH_RAM            )   // Palette
2272   AM_RANGE(0x601000, 0x610bff) AM_READ(SMH_RAM            )   //
2273   AM_RANGE(0x800000, 0x803fff) AM_READ(SMH_RAM            )   // VRAM 0&1
2274   AM_RANGE(0x804000, 0x80ffff) AM_READ(SMH_RAM            )   //
2275   AM_RANGE(0x880000, 0x883fff) AM_READ(SMH_RAM            )   // VRAM 2&3
2276   AM_RANGE(0x884000, 0x88ffff) AM_READ(SMH_RAM            )   //
2277/**/AM_RANGE(0x900000, 0x900005) AM_READ(SMH_RAM            )   // VRAM 0&1 Ctrl
2278/**/AM_RANGE(0x980000, 0x980005) AM_READ(SMH_RAM            )   // VRAM 2&3 Ctrl
2279/**/AM_RANGE(0xa00000, 0xa00607) AM_READ(SMH_RAM            )   // Sprites Y
2280/**/AM_RANGE(0xa80000, 0xa80001) AM_READ(SMH_RAM            )   // ? 0x4000
2281   AM_RANGE(0xb00000, 0xb03fff) AM_READ(SMH_RAM            )   // Sprites Code + X + Attr
2282   AM_RANGE(0xb04000, 0xb13fff) AM_READ(SMH_RAM            )   //
2283   AM_RANGE(0xe00000, 0xe03fff) AM_DEVREAD("x1", seta_sound_word_r      )   // Sound
2073   AM_RANGE(0x400008, 0x40000b) AM_READ(seta_dsw_r)            // DSW
2074   AM_RANGE(0x40000c, 0x40000d) AM_READWRITE(watchdog_reset16_r,watchdog_reset16_w)   // Watchdog (extdwnhl (R) & sokonuke (W) MUST RETURN $FFFF)
2075   AM_RANGE(0x500000, 0x500003) AM_RAM_WRITE(seta_vregs_w) AM_BASE(&seta_vregs)   // Coin Lockout + Video Registers
2076   AM_RANGE(0x500004, 0x500007) AM_NOP                        // IRQ Ack  (extdwnhl (R) & sokonuke (W))
2077   AM_RANGE(0x600400, 0x600fff) AM_RAM AM_BASE(&paletteram16) AM_SIZE(&seta_paletteram_size)   // Palette
2078   AM_RANGE(0x601000, 0x610bff) AM_RAM                        //
2079   AM_RANGE(0x800000, 0x803fff) AM_RAM_WRITE(seta_vram_0_w) AM_BASE(&seta_vram_0)   // VRAM 0&1
2080   AM_RANGE(0x804000, 0x80ffff) AM_RAM                        //
2081   AM_RANGE(0x880000, 0x883fff) AM_RAM_WRITE(seta_vram_2_w) AM_BASE(&seta_vram_2)   // VRAM 2&3
2082   AM_RANGE(0x884000, 0x88ffff) AM_RAM                        //
2083/**/AM_RANGE(0x900000, 0x900005) AM_RAM AM_BASE(&seta_vctrl_0)      // VRAM 0&1 Ctrl
2084/**/AM_RANGE(0x980000, 0x980005) AM_RAM AM_BASE(&seta_vctrl_2)      // VRAM 2&3 Ctrl
2085/**/AM_RANGE(0xa00000, 0xa00607) AM_RAM AM_BASE(&spriteram16)      // Sprites Y
2086/**/AM_RANGE(0xa80000, 0xa80001) AM_RAM                        // ? 0x4000
2087   AM_RANGE(0xb00000, 0xb03fff) AM_RAM AM_BASE(&spriteram16_2)      // Sprites Code + X + Attr
2088   AM_RANGE(0xb04000, 0xb13fff) AM_RAM                        //
2089   AM_RANGE(0xe00000, 0xe03fff) AM_DEVREADWRITE("x1", seta_sound_word_r,seta_sound_word_w)   // Sound
22842090ADDRESS_MAP_END
22852091
2286static ADDRESS_MAP_START( extdwnhl_writemem, ADDRESS_SPACE_PROGRAM, 16 )
2287   AM_RANGE(0x000000, 0x0fffff) AM_WRITE(SMH_ROM                  )   // ROM
2288   AM_RANGE(0x200000, 0x20ffff) AM_WRITE(SMH_RAM                  )   // RAM
2289   AM_RANGE(0x210000, 0x21ffff) AM_WRITE(SMH_RAM                  )   // RAM
2290   AM_RANGE(0x220000, 0x23ffff) AM_WRITE(SMH_RAM                  )   // RAM (sokonuke)
2291   AM_RANGE(0x40000c, 0x40000d) AM_WRITE(watchdog_reset16_w         )   // Watchdog (sokonuke)
2292   AM_RANGE(0x500000, 0x500003) AM_WRITE(seta_vregs_w) AM_BASE(&seta_vregs      )   // Coin Lockout + Video Registers
2293   AM_RANGE(0x500004, 0x500007) AM_WRITE(SMH_NOP                  )   // IRQ Ack (sokonuke)
2294   AM_RANGE(0x600400, 0x600fff) AM_WRITE(SMH_RAM) AM_BASE(&paletteram16   ) AM_SIZE(&seta_paletteram_size)   // Palette
2295   AM_RANGE(0x601000, 0x610bff) AM_WRITE(SMH_RAM                  )   //
2296   AM_RANGE(0x800000, 0x803fff) AM_WRITE(seta_vram_0_w) AM_BASE(&seta_vram_0   )   // VRAM 0
2297   AM_RANGE(0x804000, 0x80ffff) AM_WRITE(SMH_RAM                  )   //
2298   AM_RANGE(0x880000, 0x883fff) AM_WRITE(seta_vram_2_w) AM_BASE(&seta_vram_2   )   // VRAM 2
2299   AM_RANGE(0x884000, 0x88ffff) AM_WRITE(SMH_RAM                  )   //
2300   AM_RANGE(0x900000, 0x900005) AM_WRITE(SMH_RAM) AM_BASE(&seta_vctrl_0      )   // VRAM 0&1 Ctrl
2301   AM_RANGE(0x980000, 0x980005) AM_WRITE(SMH_RAM) AM_BASE(&seta_vctrl_2      )   // VRAM 2&3 Ctrl
2302   AM_RANGE(0xa00000, 0xa00607) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16      )   // Sprites Y
2303   AM_RANGE(0xa80000, 0xa80001) AM_WRITE(SMH_RAM                  )   // ? 0x4000
2304   AM_RANGE(0xb00000, 0xb03fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16_2      )   // Sprites Code + X + Attr
2305   AM_RANGE(0xb04000, 0xb13fff) AM_WRITE(SMH_RAM                  )   //
2306   AM_RANGE(0xe00000, 0xe03fff) AM_DEVWRITE("x1", seta_sound_word_w            )   // Sound
2307ADDRESS_MAP_END
23082092
23092093/***************************************************************************
23102094        (Kamen) Masked Riders Club Battle Race / Mad Shark
23112095***************************************************************************/
23122096
2313static ADDRESS_MAP_START( kamenrid_readmem, ADDRESS_SPACE_PROGRAM, 16 )
2314   AM_RANGE(0x000000, 0x07ffff) AM_READ(SMH_ROM            )   // ROM
2315   AM_RANGE(0x200000, 0x20ffff) AM_READ(SMH_RAM            )   // ROM
2097static ADDRESS_MAP_START( kamenrid_map, ADDRESS_SPACE_PROGRAM, 16 )
2098   AM_RANGE(0x000000, 0x07ffff) AM_ROM                        // ROM
2099   AM_RANGE(0x200000, 0x20ffff) AM_RAM                        // RAM
23162100   AM_RANGE(0x500000, 0x500001) AM_READ_PORT("P1")               // P1
23172101   AM_RANGE(0x500002, 0x500003) AM_READ_PORT("P2")               // P2
2318   AM_RANGE(0x500004, 0x500007) AM_READ(seta_dsw_r            )   // DSW
2102   AM_RANGE(0x500004, 0x500007) AM_READ(seta_dsw_r)            // DSW
23192103   AM_RANGE(0x500008, 0x500009) AM_READ_PORT("COINS")            // Coins
2320   AM_RANGE(0x50000c, 0x50000d) AM_READ(watchdog_reset16_r      )   // xx Watchdog?
2321   AM_RANGE(0x700000, 0x7003ff) AM_READ(SMH_RAM            )   // Palette
2322   AM_RANGE(0x700400, 0x700fff) AM_READ(SMH_RAM            )   // Palette
2323   AM_RANGE(0x701000, 0x703fff) AM_READ(SMH_RAM            )   // Palette
2324   AM_RANGE(0x800000, 0x801fff) AM_READ(SMH_RAM            )   // VRAM 0
2325   AM_RANGE(0x802000, 0x803fff) AM_READ(SMH_RAM            )   // VRAM 1
2326   AM_RANGE(0x804000, 0x807fff) AM_READ(SMH_RAM            )   // tested
2327   AM_RANGE(0x880000, 0x881fff) AM_READ(SMH_RAM            )   // VRAM 2
2328   AM_RANGE(0x882000, 0x883fff) AM_READ(SMH_RAM            )   // VRAM 3
2329   AM_RANGE(0x884000, 0x887fff) AM_READ(SMH_RAM            )   // tested
2330   AM_RANGE(0xa00000, 0xa00607) AM_READ(SMH_RAM             )   // Sprites Y
2331   AM_RANGE(0xb00000, 0xb03fff) AM_READ(SMH_RAM            )   // Sprites Code + X + Attr
2332   AM_RANGE(0xb04000, 0xb07fff) AM_READ(SMH_RAM            )   // tested
2333   AM_RANGE(0xd00000, 0xd03fff) AM_DEVREAD("x1", seta_sound_word_r      )   // Sound
2334ADDRESS_MAP_END
2335
2336static ADDRESS_MAP_START( kamenrid_writemem, ADDRESS_SPACE_PROGRAM, 16 )
2337   AM_RANGE(0x000000, 0x07ffff) AM_WRITE(SMH_ROM                  )   // ROM
2338   AM_RANGE(0x200000, 0x20ffff) AM_WRITE(SMH_RAM                  )   // ROM
2339   AM_RANGE(0x50000c, 0x50000d) AM_WRITE(watchdog_reset16_w         )   // Watchdog (sokonuke)
2340   AM_RANGE(0x600000, 0x600005) AM_WRITE(seta_vregs_w) AM_BASE(&seta_vregs      )   // ? Coin Lockout + Video Registers
2341   AM_RANGE(0x600006, 0x600007) AM_WRITE(SMH_NOP                  )   // ?
2342   AM_RANGE(0x700000, 0x7003ff) AM_WRITE(SMH_RAM                  )   // Palette RAM (tested)
2343   AM_RANGE(0x700400, 0x700fff) AM_WRITE(SMH_RAM) AM_BASE(&paletteram16   ) AM_SIZE(&seta_paletteram_size)   // Palette
2344   AM_RANGE(0x701000, 0x703fff) AM_WRITE(SMH_RAM   )   // Palette
2345   AM_RANGE(0x800000, 0x803fff) AM_WRITE(seta_vram_0_w) AM_BASE(&seta_vram_0   )   // VRAM 0
2346   AM_RANGE(0x804000, 0x807fff) AM_WRITE(SMH_RAM   )   // tested
2347   AM_RANGE(0x880000, 0x883fff) AM_WRITE(seta_vram_2_w) AM_BASE(&seta_vram_2   )   // VRAM 2
2348   AM_RANGE(0x884000, 0x887fff) AM_WRITE(SMH_RAM   )   // tested
2349   AM_RANGE(0x900000, 0x900005) AM_WRITE(SMH_RAM) AM_BASE(&seta_vctrl_0      )   // VRAM 0&1 Ctrl
2350   AM_RANGE(0x980000, 0x980005) AM_WRITE(SMH_RAM) AM_BASE(&seta_vctrl_2      )   // VRAM 2&3 Ctrl
2351   AM_RANGE(0xa00000, 0xa00607) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16      )   // Sprites Y
2352   AM_RANGE(0xa80000, 0xa80001) AM_WRITE(SMH_RAM                  )   // ? $4000
2353   AM_RANGE(0xb00000, 0xb03fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16_2   )   // Sprites Code + X + Attr
2354   AM_RANGE(0xb04000, 0xb07fff) AM_WRITE(SMH_RAM)   // tested
2104   AM_RANGE(0x50000c, 0x50000d) AM_READWRITE(watchdog_reset16_r,watchdog_reset16_w)   // xx Watchdog? (sokonuke)
2105   AM_RANGE(0x600000, 0x600005) AM_RAM_WRITE(seta_vregs_w) AM_BASE(&seta_vregs)   // ? Coin Lockout + Video Registers
2106   AM_RANGE(0x600006, 0x600007) AM_WRITENOP                  // ?
2107   AM_RANGE(0x700000, 0x7003ff) AM_RAM                        // Palette RAM (tested)
2108   AM_RANGE(0x700400, 0x700fff) AM_RAM AM_BASE(&paletteram16) AM_SIZE(&seta_paletteram_size)   // Palette
2109   AM_RANGE(0x701000, 0x703fff) AM_RAM                      // Palette
2110   AM_RANGE(0x800000, 0x803fff) AM_RAM_WRITE(seta_vram_0_w) AM_BASE(&seta_vram_0   )   // VRAM 0&1
2111   AM_RANGE(0x804000, 0x807fff) AM_RAM   // tested
2112   AM_RANGE(0x880000, 0x883fff) AM_RAM_WRITE(seta_vram_2_w) AM_BASE(&seta_vram_2   )   // VRAM 2&3
2113   AM_RANGE(0x884000, 0x887fff) AM_RAM   // tested
2114   AM_RANGE(0x900000, 0x900005) AM_RAM AM_BASE(&seta_vctrl_0)      // VRAM 0&1 Ctrl
2115   AM_RANGE(0x980000, 0x980005) AM_RAM AM_BASE(&seta_vctrl_2)      // VRAM 2&3 Ctrl
2116   AM_RANGE(0xa00000, 0xa00607) AM_RAM AM_BASE(&spriteram16)      // Sprites Y
2117   AM_RANGE(0xa80000, 0xa80001) AM_RAM                        // ? $4000
2118   AM_RANGE(0xb00000, 0xb03fff) AM_RAM AM_BASE(&spriteram16_2)      // Sprites Code + X + Attr
2119   AM_RANGE(0xb04000, 0xb07fff) AM_RAM                        // tested
23552120#if __uPD71054_TIMER
2356   AM_RANGE(0xc00000, 0xc00007) AM_WRITE(timer_regs_w               )   // ?
2121   AM_RANGE(0xc00000, 0xc00007) AM_WRITE(timer_regs_w)            // ?
23572122#else
2358   AM_RANGE(0xc00000, 0xc00007) AM_WRITE(SMH_NOP                  )   // ?
2123   AM_RANGE(0xc00000, 0xc00007) AM_WRITENOP                  // ?
23592124#endif
2360   AM_RANGE(0xd00000, 0xd03fff) AM_DEVWRITE("x1", seta_sound_word_w            )   // Sound
2125   AM_RANGE(0xd00000, 0xd03fff) AM_DEVREADWRITE("x1", seta_sound_word_r,seta_sound_word_w)   // Sound
23612126ADDRESS_MAP_END
23622127
2363/* almast identical to kamenrid */
2364static ADDRESS_MAP_START( madshark_readmem, ADDRESS_SPACE_PROGRAM, 16 )
2365   AM_RANGE(0x000000, 0x0fffff) AM_READ(SMH_ROM            )   // ROM
2366   AM_RANGE(0x200000, 0x20ffff) AM_READ(SMH_RAM            )   // ROM
2128/* almost identical to kamenrid */
2129static ADDRESS_MAP_START( madshark_map, ADDRESS_SPACE_PROGRAM, 16 )
2130   AM_RANGE(0x000000, 0x0fffff) AM_ROM                        // ROM
2131   AM_RANGE(0x200000, 0x20ffff) AM_RAM                        // RAM
23672132   AM_RANGE(0x500000, 0x500001) AM_READ_PORT("P1")               // P1
23682133   AM_RANGE(0x500002, 0x500003) AM_READ_PORT("P2")               // P2
23692134   AM_RANGE(0x500004, 0x500005) AM_READ_PORT("COINS")            // Coins
2370   AM_RANGE(0x500008, 0x50000b) AM_READ(seta_dsw_r            )   // DSW
2371   AM_RANGE(0x700400, 0x700fff) AM_READ(SMH_RAM            )   // Palette
2372   AM_RANGE(0x800000, 0x801fff) AM_READ(SMH_RAM            )   // VRAM 0
2373   AM_RANGE(0x802000, 0x803fff) AM_READ(SMH_RAM            )   // VRAM 1
2374   AM_RANGE(0x880000, 0x881fff) AM_READ(SMH_RAM            )   // VRAM 2
2375   AM_RANGE(0x882000, 0x883fff) AM_READ(SMH_RAM            )   // VRAM 3
2376   AM_RANGE(0xa00000, 0xa00607) AM_READ(SMH_RAM             )   // Sprites Y
2377   AM_RANGE(0xb00000, 0xb03fff) AM_READ(SMH_RAM            )   // Sprites Code + X + Attr
2378   AM_RANGE(0xd00000, 0xd03fff) AM_DEVREAD("x1", seta_sound_word_r      )   // Sound
2379ADDRESS_MAP_END
2135   AM_RANGE(0x500008, 0x50000b) AM_READ(seta_dsw_r)            // DSW
2136   AM_RANGE(0x50000c, 0x50000d) AM_WRITE(watchdog_reset16_w)      // Watchdog
2137   AM_RANGE(0x600000, 0x600005) AM_RAM_WRITE(seta_vregs_w) AM_BASE(&seta_vregs)   // ? Coin Lockout + Video Registers
2138   AM_RANGE(0x600006, 0x600007) AM_WRITENOP                  // ?
2139   AM_RANGE(0x700400, 0x700fff) AM_RAM AM_BASE(&paletteram16) AM_SIZE(&seta_paletteram_size)   // Palette
2140   AM_RANGE(0x800000, 0x803fff) AM_RAM_WRITE(seta_vram_0_w) AM_BASE(&seta_vram_0)   // VRAM 0&1
2141   AM_RANGE(0x880000, 0x883fff) AM_RAM_WRITE(seta_vram_2_w) AM_BASE(&seta_vram_2)   // VRAM 2&3
2142   AM_RANGE(0x900000, 0x900005) AM_RAM AM_BASE(&seta_vctrl_0)      // VRAM 0&1 Ctrl
2143   AM_RANGE(0x980000, 0x980005) AM_RAM AM_BASE(&seta_vctrl_2)      // VRAM 2&3 Ctrl
23802144
2381static ADDRESS_MAP_START( madshark_writemem, ADDRESS_SPACE_PROGRAM, 16 )
2382   AM_RANGE(0x000000, 0x0fffff) AM_WRITE(SMH_ROM                  )   // ROM
2383   AM_RANGE(0x200000, 0x20ffff) AM_WRITE(SMH_RAM                  )   // ROM
2384   AM_RANGE(0x50000c, 0x50000d) AM_WRITE(watchdog_reset16_w         )   // Watchdog
2385   AM_RANGE(0x600000, 0x600005) AM_WRITE(seta_vregs_w) AM_BASE(&seta_vregs      )   // ? Coin Lockout + Video Registers
2386   AM_RANGE(0x600006, 0x600007) AM_WRITE(SMH_NOP                  )   // ?
2387   AM_RANGE(0x700400, 0x700fff) AM_WRITE(SMH_RAM) AM_BASE(&paletteram16   ) AM_SIZE(&seta_paletteram_size)   // Palette
2388   AM_RANGE(0x800000, 0x803fff) AM_WRITE(seta_vram_0_w) AM_BASE(&seta_vram_0   )   // VRAM 0
2389   AM_RANGE(0x880000, 0x883fff) AM_WRITE(seta_vram_2_w) AM_BASE(&seta_vram_2   )   // VRAM 2
2390   AM_RANGE(0x900000, 0x900005) AM_WRITE(SMH_RAM) AM_BASE(&seta_vctrl_0      )   // VRAM 0&1 Ctrl
2391   AM_RANGE(0x980000, 0x980005) AM_WRITE(SMH_RAM) AM_BASE(&seta_vctrl_2      )   // VRAM 2&3 Ctrl
2392   AM_RANGE(0xa00000, 0xa00607) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16      )   // Sprites Y
2393   AM_RANGE(0xa80000, 0xa80001) AM_WRITE(SMH_RAM                  )   // ? $4000
2394   AM_RANGE(0xb00000, 0xb03fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16_2   )   // Sprites Code + X + Attr
2145   AM_RANGE(0xa00000, 0xa00607) AM_RAM   AM_BASE(&spriteram16)      // Sprites Y
2146   AM_RANGE(0xa80000, 0xa80001) AM_RAM                        // ? $4000
2147   AM_RANGE(0xb00000, 0xb03fff) AM_RAM   AM_BASE(&spriteram16_2)      // Sprites Code + X + Attr
23952148#if __uPD71054_TIMER
2396   AM_RANGE(0xc00000, 0xc00007) AM_WRITE(timer_regs_w               )   // ?
2149   AM_RANGE(0xc00000, 0xc00007) AM_WRITE(timer_regs_w)            // ?
23972150#else
2398   AM_RANGE(0xc00000, 0xc00007) AM_WRITE(SMH_NOP                  )   // ?
2151   AM_RANGE(0xc00000, 0xc00007) AM_WRITENOP                  // ?
23992152#endif
2400   AM_RANGE(0xd00000, 0xd03fff) AM_DEVWRITE("x1", seta_sound_word_w            )   // Sound
2153   AM_RANGE(0xd00000, 0xd03fff) AM_DEVREADWRITE("x1", seta_sound_word_r,seta_sound_word_w)   // Sound
24012154ADDRESS_MAP_END
24022155
24032156
2404
24052157/***************************************************************************
24062158                                Krazy Bowl
24072159***************************************************************************/
r4679r4680
24302182   }
24312183}
24322184
2433static ADDRESS_MAP_START( krzybowl_readmem, ADDRESS_SPACE_PROGRAM, 16 )
2434   AM_RANGE(0x000000, 0x07ffff) AM_READ(SMH_ROM            )   // ROM
2435   AM_RANGE(0xf00000, 0xf0ffff) AM_READ(SMH_RAM            )   // RAM
2436   AM_RANGE(0x100000, 0x100001) AM_READ(SMH_NOP            )   // ?
2437   AM_RANGE(0x200000, 0x200001) AM_READ(SMH_NOP            )   // ?
2438   AM_RANGE(0x300000, 0x300003) AM_READ(seta_dsw_r            )   // DSW
2185static ADDRESS_MAP_START( krzybowl_map, ADDRESS_SPACE_PROGRAM, 16 )
2186   AM_RANGE(0x000000, 0x07ffff) AM_ROM                      // ROM
2187   AM_RANGE(0xf00000, 0xf0ffff) AM_RAM                        // RAM
2188   AM_RANGE(0x100000, 0x100001) AM_READNOP                     // ?
2189   AM_RANGE(0x200000, 0x200001) AM_READNOP                     // ?
2190   AM_RANGE(0x300000, 0x300003) AM_READ(seta_dsw_r)            // DSW
2191   AM_RANGE(0x400000, 0x400001) AM_WRITENOP                  // ?
24392192   AM_RANGE(0x500000, 0x500001) AM_READ_PORT("P1")               // P1
24402193   AM_RANGE(0x500002, 0x500003) AM_READ_PORT("P2")               // P2
24412194   AM_RANGE(0x500004, 0x500005) AM_READ_PORT("COINS")            // Coins
2442   AM_RANGE(0x600000, 0x60000f) AM_READ(krzybowl_input_r      )   // P1
2443   AM_RANGE(0x8000f0, 0x8000f1) AM_READ(SMH_RAM            )   // NVRAM
2444   AM_RANGE(0x800100, 0x8001ff) AM_READ(SMH_RAM            )   // NVRAM
2445   AM_RANGE(0xa00000, 0xa03fff) AM_DEVREAD("x1", seta_sound_word_r      )   // Sound
2446   AM_RANGE(0xb00000, 0xb003ff) AM_READ(SMH_RAM            )   // Palette
2447   AM_RANGE(0xc00000, 0xc03fff) AM_READ(SMH_RAM            )   // Sprites Code + X + Attr
2448/**/AM_RANGE(0xd00000, 0xd00001) AM_READ(SMH_RAM            )   // ? 0x4000
2449/**/AM_RANGE(0xe00000, 0xe00607) AM_READ(SMH_RAM            )   // Sprites Y
2195   AM_RANGE(0x600000, 0x60000f) AM_READ(krzybowl_input_r)         // P1
2196   AM_RANGE(0x8000f0, 0x8000f1) AM_RAM                        // NVRAM
2197   AM_RANGE(0x800100, 0x8001ff) AM_RAM                        // NVRAM
2198   AM_RANGE(0xa00000, 0xa03fff) AM_DEVREADWRITE("x1", seta_sound_word_r,seta_sound_word_w)   // Sound
2199   AM_RANGE(0xb00000, 0xb003ff) AM_RAM AM_BASE(&paletteram16) AM_SIZE(&seta_paletteram_size)   // Palette
2200   AM_RANGE(0xc00000, 0xc03fff) AM_RAM AM_BASE(&spriteram16_2)      // Sprites Code + X + Attr
2201/**/AM_RANGE(0xd00000, 0xd00001) AM_RAM                        // ? 0x4000
2202/**/AM_RANGE(0xe00000, 0xe00607) AM_RAM AM_BASE(&spriteram16)      // Sprites Y
24502203ADDRESS_MAP_END
24512204
2452static ADDRESS_MAP_START( krzybowl_writemem, ADDRESS_SPACE_PROGRAM, 16 )
2453   AM_RANGE(0x000000, 0x07ffff) AM_WRITE(SMH_ROM               )   // ROM
2454   AM_RANGE(0xf00000, 0xf0ffff) AM_WRITE(SMH_RAM               )   // RAM
2455   AM_RANGE(0x400000, 0x400001) AM_WRITE(SMH_NOP               )   // ?
2456   AM_RANGE(0x8000f0, 0x8000f1) AM_WRITE(SMH_RAM               )   // NVRAM
2457   AM_RANGE(0x800100, 0x8001ff) AM_WRITE(SMH_RAM               )   // NVRAM
2458   AM_RANGE(0xa00000, 0xa03fff) AM_DEVWRITE("x1", seta_sound_word_w         )   // Sound
2459   AM_RANGE(0xb00000, 0xb003ff) AM_WRITE(SMH_RAM) AM_BASE(&paletteram16   ) AM_SIZE(&seta_paletteram_size)   // Palette
2460   AM_RANGE(0xc00000, 0xc03fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16_2   )   // Sprites Code + X + Attr
2461   AM_RANGE(0xd00000, 0xd00001) AM_WRITE(SMH_RAM               )   // ? 0x4000
2462   AM_RANGE(0xe00000, 0xe00607) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16   )   // Sprites Y
2463ADDRESS_MAP_END
24642205
2465
24662206/***************************************************************************
24672207                            Mobile Suit Gundam
24682208***************************************************************************/
r4679r4680
24802220
24812221/* Mirror RAM is necessary or startup, to clear Work RAM after the test */
24822222
2483static ADDRESS_MAP_START( msgundam_readmem, ADDRESS_SPACE_PROGRAM, 16 )
2484   AM_RANGE(0x000000, 0x07ffff) AM_READ(SMH_ROM            )   // ROM
2485   AM_RANGE(0x100000, 0x1fffff) AM_READ(SMH_ROM            )   // ROM
2486   AM_RANGE(0x200000, 0x20ffff) AM_READ(SMH_RAM            )   // RAM
2223static ADDRESS_MAP_START( msgundam_map, ADDRESS_SPACE_PROGRAM, 16 )
2224   AM_RANGE(0x000000, 0x07ffff) AM_ROM                        // ROM
2225   AM_RANGE(0x100000, 0x1fffff) AM_ROM                        // ROM
2226   AM_RANGE(0x200000, 0x20ffff) AM_RAM AM_MIRROR(0x70000)         // RAM
24872227   AM_RANGE(0x400000, 0x400001) AM_READ_PORT("P1")               // P1
24882228   AM_RANGE(0x400002, 0x400003) AM_READ_PORT("P2")               // P2
24892229   AM_RANGE(0x400004, 0x400005) AM_READ_PORT("COINS")            // Coins
2490   AM_RANGE(0x600000, 0x600003) AM_READ(seta_dsw_r            )   // DSW
2491   AM_RANGE(0x700400, 0x700fff) AM_READ(SMH_RAM            )   // Palette
2492   AM_RANGE(0x800000, 0x800607) AM_READ(SMH_RAM            )   // Sprites Y
2493   AM_RANGE(0x900000, 0x903fff) AM_READ(SMH_RAM            )   // Sprites Code + X + Attr
2494   AM_RANGE(0xa00000, 0xa03fff) AM_READ(SMH_RAM            )   // VRAM 0&1
2495   AM_RANGE(0xa80000, 0xa83fff) AM_READ(SMH_RAM            )   // VRAM 2&3
2496   AM_RANGE(0xb00000, 0xb00005) AM_READ(SMH_RAM            )   // VRAM 0&1 Ctrl
2497   AM_RANGE(0xb80000, 0xb80005) AM_READ(SMH_RAM            )   // VRAM 1&2 Ctrl
2498   AM_RANGE(0xc00000, 0xc03fff) AM_DEVREAD("x1", seta_sound_word_r      )   // Sound
2499ADDRESS_MAP_END
2500
2501static ADDRESS_MAP_START( msgundam_writemem, ADDRESS_SPACE_PROGRAM, 16 )
2502   AM_RANGE(0x000000, 0x07ffff) AM_WRITE(SMH_ROM                  )   // ROM
2503   AM_RANGE(0x100000, 0x1fffff) AM_WRITE(SMH_ROM                  )   // ROM
2504   AM_RANGE(0x200000, 0x20ffff) AM_WRITE(SMH_RAM) AM_BASE(&mirror_ram      )   // RAM
2505   AM_RANGE(0x210000, 0x21ffff) AM_WRITE(mirror_ram_w               )   // Mirrored RAM
2506   AM_RANGE(0x220000, 0x22ffff) AM_WRITE(mirror_ram_w               )
2507   AM_RANGE(0x230000, 0x23ffff) AM_WRITE(mirror_ram_w               )
2508   AM_RANGE(0x240000, 0x24ffff) AM_WRITE(mirror_ram_w               )
2509   AM_RANGE(0x400000, 0x400001) AM_WRITE(SMH_NOP                  )   // Lev 2 IRQ Ack
2510   AM_RANGE(0x400004, 0x400005) AM_WRITE(SMH_NOP                  )   // Lev 4 IRQ Ack
2511   AM_RANGE(0x500000, 0x500005) AM_WRITE(msgundam_vregs_w) AM_BASE(&seta_vregs      )   // Coin Lockout + Video Registers
2512   AM_RANGE(0x700400, 0x700fff) AM_WRITE(SMH_RAM) AM_BASE(&paletteram16   ) AM_SIZE(&seta_paletteram_size)   // Palette
2513   AM_RANGE(0x800000, 0x800607) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16      )   // Sprites Y
2514   AM_RANGE(0x880000, 0x880001) AM_WRITE(SMH_RAM                  )   // ? 0x4000
2515   AM_RANGE(0x900000, 0x903fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16_2   )   // Sprites Code + X + Attr
2516   AM_RANGE(0xa00000, 0xa03fff) AM_WRITE(seta_vram_0_w) AM_BASE(&seta_vram_0   )   // VRAM 0
2517   AM_RANGE(0xa80000, 0xa83fff) AM_WRITE(seta_vram_2_w) AM_BASE(&seta_vram_2   )   // VRAM 2
2518   AM_RANGE(0xb00000, 0xb00005) AM_WRITE(SMH_RAM) AM_BASE(&seta_vctrl_0      )   // VRAM 0&1 Ctrl
2519   AM_RANGE(0xb80000, 0xb80005) AM_WRITE(SMH_RAM) AM_BASE(&seta_vctrl_2      )   // VRAM 2&3 Ctrl
2520   AM_RANGE(0xc00000, 0xc03fff) AM_DEVWRITE("x1", seta_sound_word_w            )   // Sound
2230   AM_RANGE(0x400000, 0x400001) AM_WRITENOP                  // Lev 2 IRQ Ack
2231   AM_RANGE(0x400004, 0x400005) AM_WRITENOP                  // Lev 4 IRQ Ack
2232   AM_RANGE(0x500000, 0x500005) AM_RAM_WRITE(msgundam_vregs_w) AM_BASE(&seta_vregs)   // Coin Lockout + Video Registers
2233   AM_RANGE(0x600000, 0x600003) AM_READ(seta_dsw_r)            // DSW
2234   AM_RANGE(0x700400, 0x700fff) AM_RAM AM_BASE(&paletteram16) AM_SIZE(&seta_paletteram_size)   // Palette
2235   AM_RANGE(0x800000, 0x800607) AM_RAM AM_BASE(&spriteram16)      // Sprites Y
2236   AM_RANGE(0x880000, 0x880001) AM_RAM                        // ? 0x4000
2237   AM_RANGE(0x900000, 0x903fff) AM_RAM AM_BASE(&spriteram16_2)      // Sprites Code + X + Attr
2238   AM_RANGE(0xa00000, 0xa03fff) AM_RAM_WRITE(seta_vram_0_w) AM_BASE(&seta_vram_0)   // VRAM 0&1
2239   AM_RANGE(0xa80000, 0xa83fff) AM_RAM_WRITE(seta_vram_2_w) AM_BASE(&seta_vram_2)   // VRAM 2&3
2240   AM_RANGE(0xb00000, 0xb00005) AM_RAM AM_BASE(&seta_vctrl_0)      // VRAM 0&1 Ctrl
2241   AM_RANGE(0xb80000, 0xb80005) AM_RAM AM_BASE(&seta_vctrl_2)      // VRAM 2&3 Ctrl
2242   AM_RANGE(0xc00000, 0xc03fff) AM_DEVREADWRITE("x1", seta_sound_word_r,seta_sound_word_w)   // Sound
25212243#if __uPD71054_TIMER
2522   AM_RANGE(0xd00000, 0xd00007) AM_WRITE(timer_regs_w               )   // ?
2244   AM_RANGE(0xd00000, 0xd00007) AM_WRITE(timer_regs_w)   // ?
25232245#else
2524   AM_RANGE(0xd00000, 0xd00007) AM_WRITE(SMH_NOP                  )   // ?
2246   AM_RANGE(0xd00000, 0xd00007) AM_WRITENOP   // ?
25252247#endif
25262248ADDRESS_MAP_END
25272249
25282250
2529
2530
25312251/***************************************************************************
25322252                                Oishii Puzzle
25332253***************************************************************************/
25342254
25352255/* similar to wrofaero */
2536
2537static ADDRESS_MAP_START( oisipuzl_readmem, ADDRESS_SPACE_PROGRAM, 16 )
2538   AM_RANGE(0x000000, 0x07ffff) AM_READ(SMH_ROM            )   // ROM
2539   AM_RANGE(0x100000, 0x17ffff) AM_READ(SMH_ROM            )   // ROM
2540   AM_RANGE(0x200000, 0x20ffff) AM_READ(SMH_RAM            )   // RAM
2541   AM_RANGE(0x300000, 0x300003) AM_READ(seta_dsw_r            )   // DSW
2256static ADDRESS_MAP_START( oisipuzl_map, ADDRESS_SPACE_PROGRAM, 16 )
2257   AM_RANGE(0x000000, 0x07ffff) AM_ROM                        // ROM
2258   AM_RANGE(0x100000, 0x17ffff) AM_ROM                        // ROM
2259   AM_RANGE(0x200000, 0x20ffff) AM_RAM                        // RAM
2260   AM_RANGE(0x300000, 0x300003) AM_READ(seta_dsw_r)            // DSW
25422261   AM_RANGE(0x400000, 0x400001) AM_READ_PORT("P1")               // P1
25432262   AM_RANGE(0x400002, 0x400003) AM_READ_PORT("P2")               // P2
25442263   AM_RANGE(0x400004, 0x400005) AM_READ_PORT("COINS")            // Coins
2545   AM_RANGE(0x700000, 0x703fff) AM_DEVREAD("x1", seta_sound_word_r      )   // Sound
2546   AM_RANGE(0x800000, 0x803fff) AM_READ(SMH_RAM            )   // VRAM 0&1
2547   AM_RANGE(0x880000, 0x883fff) AM_READ(SMH_RAM            )   // VRAM 2&3
2548/**/AM_RANGE(0x900000, 0x900005) AM_READ(SMH_RAM            )   // VRAM 0&1 Ctrl
2549/**/AM_RANGE(0x980000, 0x980005) AM_READ(SMH_RAM            )   // VRAM 2&3 Ctrl
2550/**/AM_RANGE(0xa00000, 0xa00607) AM_READ(SMH_RAM            )   // Sprites Y
2551/**/AM_RANGE(0xa80000, 0xa80001) AM_READ(SMH_RAM            )   // ? 0x4000
2552   AM_RANGE(0xb00000, 0xb03fff) AM_READ(SMH_RAM            )   // Sprites Code + X + Attr
2553   AM_RANGE(0xc00400, 0xc00fff) AM_READ(SMH_RAM            )   // Palette
2264   AM_RANGE(0x400000, 0x400001) AM_WRITENOP                  // ? IRQ Ack
2265   AM_RANGE(0x500000, 0x500005) AM_RAM_WRITE(seta_vregs_w) AM_BASE(&seta_vregs)   // Coin Lockout + Video Registers
2266   AM_RANGE(0x700000, 0x703fff) AM_DEVREADWRITE("x1", seta_sound_word_r,seta_sound_word_w)   // Sound
2267   AM_RANGE(0x800000, 0x803fff) AM_RAM_WRITE(seta_vram_0_w) AM_BASE(&seta_vram_0)   // VRAM 0&1
2268   AM_RANGE(0x880000, 0x883fff) AM_RAM_WRITE(seta_vram_2_w) AM_BASE(&seta_vram_2)   // VRAM 2&3
2269/**/AM_RANGE(0x900000, 0x900005) AM_RAM AM_BASE(&seta_vctrl_0)      // VRAM 0&1 Ctrl
2270/**/AM_RANGE(0x980000, 0x980005) AM_RAM AM_BASE(&seta_vctrl_2)      // VRAM 2&3 Ctrl
2271/**/AM_RANGE(0xa00000, 0xa00607) AM_RAM AM_BASE(&spriteram16)      // Sprites Y
2272/**/AM_RANGE(0xa80000, 0xa80001) AM_RAM                      // ? 0x4000
2273   AM_RANGE(0xb00000, 0xb03fff) AM_RAM AM_BASE(&spriteram16_2)      // Sprites Code + X + Attr
2274   AM_RANGE(0xc00400, 0xc00fff) AM_RAM AM_BASE(&paletteram16) AM_SIZE(&seta_paletteram_size)   // Palette
25542275ADDRESS_MAP_END
25552276
2556static ADDRESS_MAP_START( oisipuzl_writemem, ADDRESS_SPACE_PROGRAM, 16 )
2557   AM_RANGE(0x000000, 0x07ffff) AM_WRITE(SMH_ROM                  )   // ROM
2558   AM_RANGE(0x100000, 0x17ffff) AM_WRITE(SMH_ROM                  )   // ROM
2559   AM_RANGE(0x200000, 0x20ffff) AM_WRITE(SMH_RAM                  )   // RAM
2560   AM_RANGE(0x400000, 0x400001) AM_WRITE(SMH_NOP                  )   // ? IRQ Ack
2561   AM_RANGE(0x500000, 0x500005) AM_WRITE(seta_vregs_w) AM_BASE(&seta_vregs      )   // Coin Lockout + Video Registers
2562   AM_RANGE(0x700000, 0x703fff) AM_DEVWRITE("x1", seta_sound_word_w            )   // Sound
2563   AM_RANGE(0x800000, 0x803fff) AM_WRITE(seta_vram_0_w) AM_BASE(&seta_vram_0   )   // VRAM 0
2564   AM_RANGE(0x880000, 0x883fff) AM_WRITE(seta_vram_2_w) AM_BASE(&seta_vram_2   )   // VRAM 2
2565   AM_RANGE(0x900000, 0x900005) AM_WRITE(SMH_RAM) AM_BASE(&seta_vctrl_0      )   // VRAM 0&1 Ctrl
2566   AM_RANGE(0x980000, 0x980005) AM_WRITE(SMH_RAM) AM_BASE(&seta_vctrl_2      )   // VRAM 2&3 Ctrl
2567   AM_RANGE(0xa00000, 0xa00607) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16      )   // Sprites Y
2568   AM_RANGE(0xa80000, 0xa80001) AM_WRITE(SMH_RAM                  )   // ? 0x4000
2569   AM_RANGE(0xb00000, 0xb03fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16_2      )   // Sprites Code + X + Attr
2570   AM_RANGE(0xc00400, 0xc00fff) AM_WRITE(SMH_RAM) AM_BASE(&paletteram16   ) AM_SIZE(&seta_paletteram_size)   // Palette
2571ADDRESS_MAP_END
25722277
25732278/***************************************************************************
25742279                                Triple Fun
25752280***************************************************************************/
25762281
2577/* the same as oisipuzl with the sound system replaced */
2282/* Same as oisipuzl but with the sound system replaced */
25782283
2579static ADDRESS_MAP_START( triplfun_readmem, ADDRESS_SPACE_PROGRAM, 16 )
2580   AM_RANGE(0x000000, 0x07ffff) AM_READ(SMH_ROM            )   // ROM
2581   AM_RANGE(0x100000, 0x17ffff) AM_READ(SMH_ROM            )   // ROM
2582   AM_RANGE(0x200000, 0x20ffff) AM_READ(SMH_RAM            )   // RAM
2583   AM_RANGE(0x300000, 0x300003) AM_READ(seta_dsw_r            )   // DSW
2284static ADDRESS_MAP_START( triplfun_map, ADDRESS_SPACE_PROGRAM, 16 )
2285   AM_RANGE(0x000000, 0x07ffff) AM_ROM                        // ROM
2286   AM_RANGE(0x100000, 0x17ffff) AM_ROM                        // ROM
2287   AM_RANGE(0x200000, 0x20ffff) AM_RAM                        // RAM
2288   AM_RANGE(0x300000, 0x300003) AM_READ(seta_dsw_r)            // DSW
25842289   AM_RANGE(0x400000, 0x400001) AM_READ_PORT("P1")               // P1
25852290   AM_RANGE(0x400002, 0x400003) AM_READ_PORT("P2")               // P2
25862291   AM_RANGE(0x400004, 0x400005) AM_READ_PORT("COINS")            // Coins
2587   AM_RANGE(0x500006, 0x500007) AM_DEVREAD8("oki", okim6295_r, 0x00ff) // tfun sound
2588   AM_RANGE(0x700000, 0x703fff) AM_READ(SMH_RAM            )   // old sound
2589   AM_RANGE(0x800000, 0x803fff) AM_READ(SMH_RAM            )   // VRAM 0&1
2590   AM_RANGE(0x880000, 0x883fff) AM_READ(SMH_RAM            )   // VRAM 2&3
2591/**/AM_RANGE(0x900000, 0x900005) AM_READ(SMH_RAM            )   // VRAM 0&1 Ctrl
2592/**/AM_RANGE(0x980000, 0x980005) AM_READ(SMH_RAM            )   // VRAM 2&3 Ctrl
2593/**/AM_RANGE(0xa00000, 0xa00607) AM_READ(SMH_RAM            )   // Sprites Y
2594/**/AM_RANGE(0xa80000, 0xa80001) AM_READ(SMH_RAM            )   // ? 0x4000
2595   AM_RANGE(0xb00000, 0xb03fff) AM_READ(SMH_RAM            )   // Sprites Code + X + Attr
2596   AM_RANGE(0xc00400, 0xc00fff) AM_READ(SMH_RAM            )   // Palette
2292   AM_RANGE(0x400000, 0x400001) AM_WRITENOP                  // ? IRQ Ack
2293   AM_RANGE(0x500000, 0x500005) AM_RAM_WRITE(seta_vregs_w) AM_BASE(&seta_vregs)   // Coin Lockout + Video Registers
2294   AM_RANGE(0x500006, 0x500007) AM_DEVREADWRITE8("oki", okim6295_r,okim6295_w, 0x00ff) // tfun sound
2295   AM_RANGE(0x800000, 0x803fff) AM_RAM_WRITE(seta_vram_0_w) AM_BASE(&seta_vram_0)   // VRAM 0&1
2296   AM_RANGE(0x880000, 0x883fff) AM_RAM_WRITE(seta_vram_2_w) AM_BASE(&seta_vram_2)   // VRAM 2&3
2297/**/AM_RANGE(0x900000, 0x900005) AM_RAM AM_BASE(&seta_vctrl_0)      // VRAM 0&1 Ctrl
2298/**/AM_RANGE(0x980000, 0x980005) AM_RAM AM_BASE(&seta_vctrl_2)      // VRAM 2&3 Ctrl
2299/**/AM_RANGE(0xa00000, 0xa00607) AM_RAM AM_BASE(&spriteram16)      // Sprites Y
2300/**/AM_RANGE(0xa80000, 0xa80001) AM_RAM                      // ? 0x4000
2301   AM_RANGE(0xb00000, 0xb03fff) AM_RAM AM_BASE(&spriteram16_2)      // Sprites Code + X + Attr
2302   AM_RANGE(0xc00400, 0xc00fff) AM_RAM AM_BASE(&paletteram16) AM_SIZE(&seta_paletteram_size)   // Palette
25972303ADDRESS_MAP_END
25982304
2599static ADDRESS_MAP_START( triplfun_writemem, ADDRESS_SPACE_PROGRAM, 16 )
2600   AM_RANGE(0x000000, 0x07ffff) AM_WRITE(SMH_ROM                  )   // ROM
2601   AM_RANGE(0x100000, 0x17ffff) AM_WRITE(SMH_ROM                  )   // ROM
2602   AM_RANGE(0x200000, 0x20ffff) AM_WRITE(SMH_RAM                  )   // RAM
2603   AM_RANGE(0x400000, 0x400001) AM_WRITE(SMH_NOP                  )   // ? IRQ Ack
2604   AM_RANGE(0x500000, 0x500005) AM_WRITE(seta_vregs_w) AM_BASE(&seta_vregs      )   // Coin Lockout + Video Registers
2605   AM_RANGE(0x500006, 0x500007) AM_DEVWRITE8("oki", okim6295_w, 0x00ff)  // tfun sound
2606   AM_RANGE(0x700000, 0x703fff) AM_WRITE(SMH_RAM                  )   // old sound
2607   AM_RANGE(0x800000, 0x803fff) AM_WRITE(seta_vram_0_w) AM_BASE(&seta_vram_0   )   // VRAM 0
2608   AM_RANGE(0x880000, 0x883fff) AM_WRITE(seta_vram_2_w) AM_BASE(&seta_vram_2   )   // VRAM 2
2609   AM_RANGE(0x900000, 0x900005) AM_WRITE(SMH_RAM) AM_BASE(&seta_vctrl_0      )   // VRAM 0&1 Ctrl
2610   AM_RANGE(0x980000, 0x980005) AM_WRITE(SMH_RAM) AM_BASE(&seta_vctrl_2      )   // VRAM 2&3 Ctrl
2611   AM_RANGE(0xa00000, 0xa00607) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16      )   // Sprites Y
2612   AM_RANGE(0xa80000, 0xa80001) AM_WRITE(SMH_RAM                  )   // ? 0x4000
2613   AM_RANGE(0xb00000, 0xb03fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16_2      )   // Sprites Code + X + Attr
2614   AM_RANGE(0xc00400, 0xc00fff) AM_WRITE(SMH_RAM) AM_BASE(&paletteram16   ) AM_SIZE(&seta_paletteram_size)   // Palette
2615ADDRESS_MAP_END
26162305
26172306/***************************************************************************
26182307                            Pro Mahjong Kiwame
r4679r4680
26532342   }
26542343}
26552344
2656static ADDRESS_MAP_START( kiwame_readmem, ADDRESS_SPACE_PROGRAM, 16 )
2657   AM_RANGE(0x000000, 0x07ffff) AM_READ(SMH_ROM            )   // ROM
2658   AM_RANGE(0x200000, 0x20ffff) AM_READ(SMH_RAM            )   // RAM
2659   AM_RANGE(0xfffc00, 0xffffff) AM_READ(kiwame_nvram_r         )   // NVRAM + Regs ?
2660   AM_RANGE(0x800000, 0x803fff) AM_READ(SMH_RAM            )   // Sprites Code + X + Attr
2661/**/AM_RANGE(0x900000, 0x900001) AM_READ(SMH_RAM            )   // ? 0x4000
2662/**/AM_RANGE(0xa00000, 0xa00607) AM_READ(SMH_RAM            )   // Sprites Y
2663   AM_RANGE(0xb00000, 0xb003ff) AM_READ(SMH_RAM            )   // Palette
2664   AM_RANGE(0xc00000, 0xc03fff) AM_DEVREAD("x1", seta_sound_word_r      )   // Sound
2665   AM_RANGE(0xd00000, 0xd00009) AM_READ(kiwame_input_r         )
2666   AM_RANGE(0xe00000, 0xe00003) AM_READ(seta_dsw_r            )   // DSW
2345static ADDRESS_MAP_START( kiwame_map, ADDRESS_SPACE_PROGRAM, 16 )
2346   AM_RANGE(0x000000, 0x07ffff) AM_ROM                        // ROM
2347   AM_RANGE(0x200000, 0x20ffff) AM_RAM                        // RAM
2348   AM_RANGE(0xfffc00, 0xffffff) AM_READWRITE(kiwame_nvram_r,kiwame_nvram_w) AM_BASE(&kiwame_nvram)   // NVRAM + Regs ?
2349   AM_RANGE(0x800000, 0x803fff) AM_RAM AM_BASE(&spriteram16_2)      // Sprites Code + X + Attr
2350/**/AM_RANGE(0x900000, 0x900001) AM_RAM                        // ? 0x4000
2351/**/AM_RANGE(0xa00000, 0xa00607) AM_RAM AM_BASE(&spriteram16)      // Sprites Y
2352   AM_RANGE(0xb00000, 0xb003ff) AM_RAM AM_BASE(&paletteram16) AM_SIZE(&seta_paletteram_size)   // Palette
2353   AM_RANGE(0xc00000, 0xc03fff) AM_DEVREADWRITE("x1", seta_sound_word_r,seta_sound_word_w)   // Sound
2354   AM_RANGE(0xd00000, 0xd00009) AM_READ(kiwame_input_r)         // mahjong panel
2355   AM_RANGE(0xe00000, 0xe00003) AM_READ(seta_dsw_r)            // DSW
26672356ADDRESS_MAP_END
26682357
2669static ADDRESS_MAP_START( kiwame_writemem, ADDRESS_SPACE_PROGRAM, 16 )
2670   AM_RANGE(0x000000, 0x07ffff) AM_WRITE(SMH_ROM                  )   // ROM
2671   AM_RANGE(0x200000, 0x20ffff) AM_WRITE(SMH_RAM                  )   // RAM
2672   AM_RANGE(0xfffc00, 0xffffff) AM_WRITE(kiwame_nvram_w) AM_BASE(&kiwame_nvram   )   // NVRAM + Regs ?
2673   AM_RANGE(0x800000, 0x803fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16_2      )   // Sprites Code + X + Attr
2674   AM_RANGE(0x900000, 0x900001) AM_WRITE(SMH_RAM                  )   // ? 0x4000
2675   AM_RANGE(0xa00000, 0xa00607) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16      )   // Sprites Y
2676   AM_RANGE(0xb00000, 0xb003ff) AM_WRITE(SMH_RAM) AM_BASE(&paletteram16   ) AM_SIZE(&seta_paletteram_size)   // Palette
2677   AM_RANGE(0xc00000, 0xc03fff) AM_DEVWRITE("x1", seta_sound_word_w            )   // Sound
2678ADDRESS_MAP_END
26792358
2680
26812359/***************************************************************************
26822360                        Thunder & Lightning / Wit's
26832361***************************************************************************/
r4679r4680
26942372
26952373/* Similar to downtown etc. */
26962374
2697static ADDRESS_MAP_START( thunderl_readmem, ADDRESS_SPACE_PROGRAM, 16 )
2698   AM_RANGE(0x000000, 0x00ffff) AM_READ(SMH_ROM            )   // ROM
2699   AM_RANGE(0xffc000, 0xffffff) AM_READ(SMH_RAM            )   // RAM
2700   AM_RANGE(0x100000, 0x103fff) AM_DEVREAD("x1", seta_sound_word_r      )   // Sound
2701   AM_RANGE(0x600000, 0x600003) AM_READ(seta_dsw_r            )   // DSW
2702   AM_RANGE(0x700000, 0x7003ff) AM_READ(SMH_RAM            )   // Palette
2375static ADDRESS_MAP_START( thunderl_map, ADDRESS_SPACE_PROGRAM, 16 )
2376   AM_RANGE(0x000000, 0x00ffff) AM_ROM                        // ROM
2377   AM_RANGE(0xffc000, 0xffffff) AM_RAM                        // RAM
2378   AM_RANGE(0x100000, 0x103fff) AM_DEVREADWRITE("x1", seta_sound_word_r,seta_sound_word_w)   // Sound
2379   AM_RANGE(0x200000, 0x200001) AM_WRITENOP                  // ?
2380   AM_RANGE(0x300000, 0x300001) AM_WRITENOP                  // ?
2381   AM_RANGE(0x400000, 0x40ffff) AM_WRITE(thunderl_protection_w)   // Protection (not in wits)
2382   AM_RANGE(0x500000, 0x500001) AM_RAM_WRITE(seta_vregs_w) AM_BASE(&seta_vregs   )   // Coin Lockout
2383   AM_RANGE(0x600000, 0x600003) AM_READ(seta_dsw_r)            // DSW
2384   AM_RANGE(0x700000, 0x7003ff) AM_RAM AM_BASE(&paletteram16) AM_SIZE(&seta_paletteram_size)   // Palette
27032385   AM_RANGE(0xb00000, 0xb00001) AM_READ_PORT("P1")               // P1
27042386   AM_RANGE(0xb00002, 0xb00003) AM_READ_PORT("P2")               // P2
27052387   AM_RANGE(0xb00004, 0xb00005) AM_READ_PORT("COINS")            // Coins
27062388   AM_RANGE(0xb0000c, 0xb0000d) AM_READ(thunderl_protection_r   )   // Protection (not in wits)
27072389   AM_RANGE(0xb00008, 0xb00009) AM_READ_PORT("P3")               // P3 (wits)
27082390   AM_RANGE(0xb0000a, 0xb0000b) AM_READ_PORT("P4")               // P4 (wits)
2709/**/AM_RANGE(0xc00000, 0xc00001) AM_READ(SMH_RAM            )   // ? 0x4000
2710/**/AM_RANGE(0xd00000, 0xd00607) AM_READ(SMH_RAM            )   // Sprites Y
2711   AM_RANGE(0xe00000, 0xe03fff) AM_READ(SMH_RAM            )   // Sprites Code + X + Attr
2712   AM_RANGE(0xe04000, 0xe07fff) AM_READ(SMH_RAM            )   // (wits)
2391/**/AM_RANGE(0xc00000, 0xc00001) AM_RAM                        // ? 0x4000
2392/**/AM_RANGE(0xd00000, 0xd00607) AM_RAM AM_BASE(&spriteram16)      // Sprites Y
2393   AM_RANGE(0xe00000, 0xe03fff) AM_RAM AM_BASE(&spriteram16_2)      // Sprites Code + X + Attr
2394   AM_RANGE(0xe04000, 0xe07fff) AM_RAM                        // (wits)
27132395ADDRESS_MAP_END
27142396
2715static ADDRESS_MAP_START( thunderl_writemem, ADDRESS_SPACE_PROGRAM, 16 )
2716   AM_RANGE(0x000000, 0x00ffff) AM_WRITE(SMH_ROM               )   // ROM
2717   AM_RANGE(0xffc000, 0xffffff) AM_WRITE(SMH_RAM               )   // RAM
2718   AM_RANGE(0x100000, 0x103fff) AM_DEVWRITE("x1", seta_sound_word_w         )   // Sound
2719   AM_RANGE(0x200000, 0x200001) AM_WRITE(SMH_NOP               )   // ?
2720   AM_RANGE(0x300000, 0x300001) AM_WRITE(SMH_NOP               )   // ?
2721   AM_RANGE(0x400000, 0x40ffff) AM_WRITE(thunderl_protection_w      )   // Protection (not in wits)
2722   AM_RANGE(0x500000, 0x500001) AM_WRITE(seta_vregs_w) AM_BASE(&seta_vregs   )   // Coin Lockout
2723   AM_RANGE(0x700000, 0x7003ff) AM_WRITE(SMH_RAM) AM_BASE(&paletteram16   ) AM_SIZE(&seta_paletteram_size)   // Palette
2724   AM_RANGE(0xc00000, 0xc00001) AM_WRITE(SMH_RAM               )   // ? 0x4000
2725   AM_RANGE(0xd00000, 0xd00607) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16   )   // Sprites Y
2726   AM_RANGE(0xe00000, 0xe03fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16_2   )   // Sprites Code + X + Attr
2727   AM_RANGE(0xe04000, 0xe07fff) AM_WRITE(SMH_RAM               )   // (wits)
2728ADDRESS_MAP_END
27292397
27302398/***************************************************************************
27312399                    Wiggie Waggie
r4679r4680
27412409static WRITE16_HANDLER( wiggie_soundlatch_w )
27422410{
27432411   wiggie_soundlatch = data >> 8;
2744   cpu_set_input_line(space->machine->cpu[1],0, HOLD_LINE);
2412   cputag_set_input_line(space->machine, "audiocpu", 0, HOLD_LINE);
27452413}
27462414
27472415
2748static ADDRESS_MAP_START( wiggie_readmem, ADDRESS_SPACE_PROGRAM, 16 )
2749   AM_RANGE(0x000000, 0x00ffff) AM_READ(SMH_ROM            )   // ROM
2750   AM_RANGE(0xffc000, 0xffffff) AM_READ(SMH_RAM            )   // RAM
2751   AM_RANGE(0x600000, 0x600003) AM_READ(seta_dsw_r            )   // DSW
2752   AM_RANGE(0x700000, 0x7003ff) AM_READ(SMH_RAM            )   // Palette
2416static ADDRESS_MAP_START( wiggie_map, ADDRESS_SPACE_PROGRAM, 16 )
2417   AM_RANGE(0x000000, 0x01ffff) AM_ROM                        // ROM
2418   AM_RANGE(0xffc000, 0xffffff) AM_RAM                        // RAM
2419   AM_RANGE(0x200000, 0x200001) AM_WRITENOP                  // ?
2420   AM_RANGE(0x300000, 0x300001) AM_WRITENOP                  // ?
2421   AM_RANGE(0x400000, 0x40ffff) AM_WRITE(thunderl_protection_w)   // Protection (not in wits)
2422   AM_RANGE(0x500000, 0x500001) AM_RAM_WRITE(seta_vregs_w) AM_BASE(&seta_vregs)   // Coin Lockout
2423   AM_RANGE(0x600000, 0x600003) AM_READ(seta_dsw_r)            // DSW
2424   AM_RANGE(0x700000, 0x7003ff) AM_RAM AM_BASE(&paletteram16) AM_SIZE(&seta_paletteram_size)   // Palette
27532425   AM_RANGE(0xb00000, 0xb00001) AM_READ_PORT("P1")               // P1
27542426   AM_RANGE(0xb00002, 0xb00003) AM_READ_PORT("P2")               // P2
27552427   AM_RANGE(0xb00004, 0xb00005) AM_READ_PORT("COINS")            // Coins
2756   AM_RANGE(0xb0000c, 0xb0000d) AM_READ(thunderl_protection_r   )   // Protection (not in wits)
2428   AM_RANGE(0xb0000c, 0xb0000d) AM_READ(thunderl_protection_r)      // Protection (not in wits)
27572429   AM_RANGE(0xb00008, 0xb00009) AM_READ_PORT("P3")               // P3 (wits)
27582430   AM_RANGE(0xb0000a, 0xb0000b) AM_READ_PORT("P4")               // P4 (wits)
2759/**/AM_RANGE(0xc00000, 0xc00001) AM_READ(SMH_RAM            )   // ? 0x4000
2760/**/AM_RANGE(0xd00000, 0xd00607) AM_READ(SMH_RAM            )   // Sprites Y
2761   AM_RANGE(0xe00000, 0xe03fff) AM_READ(SMH_RAM            )   // Sprites Code + X + Attr
2762   AM_RANGE(0xe04000, 0xe07fff) AM_READ(SMH_RAM            )   // (wits)
2431/**/AM_RANGE(0xc00000, 0xc00001) AM_RAM                        // ? 0x4000
2432/**/AM_RANGE(0xd00000, 0xd00607) AM_RAM AM_BASE(&spriteram16)      // Sprites Y
2433   AM_RANGE(0xe00000, 0xe03fff) AM_RAM AM_BASE(&spriteram16_2)      // Sprites Code + X + Attr
2434   AM_RANGE(0xe04000, 0xe07fff) AM_RAM   // (wits)
27632435ADDRESS_MAP_END
27642436
2765static ADDRESS_MAP_START( wiggie_writemem, ADDRESS_SPACE_PROGRAM, 16 )
2766   AM_RANGE(0x000000, 0x00ffff) AM_WRITE(SMH_ROM               )   // ROM
2767   AM_RANGE(0xffc000, 0xffffff) AM_WRITE(SMH_RAM               )   // RAM
2768   AM_RANGE(0x200000, 0x200001) AM_WRITE(SMH_NOP               )   // ?
2769   AM_RANGE(0x300000, 0x300001) AM_WRITE(SMH_NOP               )   // ?
2770   AM_RANGE(0x400000, 0x40ffff) AM_WRITE(thunderl_protection_w      )   // Protection (not in wits)
2771   AM_RANGE(0x500000, 0x500001) AM_WRITE(seta_vregs_w) AM_BASE(&seta_vregs   )   // Coin Lockout
2772   AM_RANGE(0x700000, 0x7003ff) AM_WRITE(SMH_RAM) AM_BASE(&paletteram16   ) AM_SIZE(&seta_paletteram_size)   // Palette
2773   AM_RANGE(0xc00000, 0xc00001) AM_WRITE(SMH_RAM               )   // ? 0x4000
2774   AM_RANGE(0xd00000, 0xd00607) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16   )   // Sprites Y
2775   AM_RANGE(0xe00000, 0xe03fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16_2   )   // Sprites Code + X + Attr
2776   AM_RANGE(0xe04000, 0xe07fff) AM_WRITE(SMH_RAM               )   // (wits)
2777ADDRESS_MAP_END
2778
2779static ADDRESS_MAP_START( wiggie_sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
2780   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
2781   AM_RANGE(0x8000, 0x87ff) AM_READ(SMH_RAM)
2782   AM_RANGE(0x9800, 0x9800) AM_DEVREAD("oki", okim6295_r)
2437static ADDRESS_MAP_START( wiggie_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
2438   AM_RANGE(0x0000, 0x7fff) AM_ROM
2439   AM_RANGE(0x8000, 0x87ff) AM_RAM
2440   AM_RANGE(0x9800, 0x9800) AM_DEVREADWRITE("oki", okim6295_r,okim6295_w)
27832441   AM_RANGE(0xa000, 0xa000) AM_READ(wiggie_soundlatch_r)
27842442ADDRESS_MAP_END
27852443
2786static ADDRESS_MAP_START( wiggie_sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
2787   AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM)
2788   AM_RANGE(0x8000, 0x87ff) AM_WRITE(SMH_RAM)
2789   AM_RANGE(0x9800, 0x9800) AM_DEVWRITE("oki", okim6295_w)
2790ADDRESS_MAP_END
27912444
27922445/***************************************************************************
27932446                    Ultraman Club / SD Gundam Neo Battling
27942447***************************************************************************/
27952448
2796static ADDRESS_MAP_START( umanclub_readmem, ADDRESS_SPACE_PROGRAM, 16 )
2797   AM_RANGE(0x000000, 0x03ffff) AM_READ(SMH_ROM            )   // ROM
2798   AM_RANGE(0x200000, 0x20ffff) AM_READ(SMH_RAM            )   // RAM
2799   AM_RANGE(0x300000, 0x3003ff) AM_READ(SMH_RAM            )   // Palette
2800   AM_RANGE(0x300400, 0x300fff) AM_READ(SMH_RAM            )   //
2449static ADDRESS_MAP_START( umanclub_map, ADDRESS_SPACE_PROGRAM, 16 )
2450   AM_RANGE(0x000000, 0x03ffff) AM_ROM                        // ROM
2451   AM_RANGE(0x200000, 0x20ffff) AM_RAM                        // RAM
2452   AM_RANGE(0x300000, 0x3003ff) AM_RAM AM_BASE(&paletteram16) AM_SIZE(&seta_paletteram_size)   // Palette
2453   AM_RANGE(0x300400, 0x300fff) AM_RAM                        //
28012454   AM_RANGE(0x400000, 0x400001) AM_READ_PORT("P1")               // P1
28022455   AM_RANGE(0x400002, 0x400003) AM_READ_PORT("P2")               // P2
28032456   AM_RANGE(0x400004, 0x400005) AM_READ_PORT("COINS")            // Coins
2804   AM_RANGE(0x600000, 0x600003) AM_READ(seta_dsw_r            )   // DSW
2805   AM_RANGE(0xa00000, 0xa00607) AM_READ(SMH_RAM            )   // Sprites Y
2806/**/AM_RANGE(0xa80000, 0xa80001) AM_READ(SMH_RAM            )   // ? 0x4000
2807   AM_RANGE(0xb00000, 0xb03fff) AM_READ(SMH_RAM            )   // Sprites Code + X + Attr
2808   AM_RANGE(0xc00000, 0xc03fff) AM_DEVREAD("x1", seta_sound_word_r      )   // Sound
2457   AM_RANGE(0x400000, 0x400001) AM_WRITENOP                  // ? (end of lev 2)
2458   AM_RANGE(0x400004, 0x400005) AM_WRITENOP                  // ? (end of lev 2)
2459   AM_RANGE(0x500000, 0x500001) AM_RAM_WRITE(seta_vregs_w) AM_BASE(&seta_vregs   )   // Coin Lockout + Video Registers
2460   AM_RANGE(0x600000, 0x600003) AM_READ(seta_dsw_r)            // DSW
2461   AM_RANGE(0xa00000, 0xa00607) AM_RAM AM_BASE(&spriteram16)      // Sprites Y
2462/**/AM_RANGE(0xa80000, 0xa80001) AM_RAM                        // ? 0x4000
2463   AM_RANGE(0xb00000, 0xb03fff) AM_RAM AM_BASE(&spriteram16_2)      // Sprites Code + X + Attr
2464   AM_RANGE(0xc00000, 0xc03fff) AM_DEVREADWRITE("x1", seta_sound_word_r,seta_sound_word_w)   // Sound
28092465ADDRESS_MAP_END
28102466
2811static ADDRESS_MAP_START( umanclub_writemem, ADDRESS_SPACE_PROGRAM, 16 )
2812   AM_RANGE(0x000000, 0x03ffff) AM_WRITE(SMH_ROM               )   // ROM
2813   AM_RANGE(0x200000, 0x20ffff) AM_WRITE(SMH_RAM               )   // RAM
2814   AM_RANGE(0x300000, 0x3003ff) AM_WRITE(SMH_RAM) AM_BASE(&paletteram16   ) AM_SIZE(&seta_paletteram_size)   // Palette
2815   AM_RANGE(0x300400, 0x300fff) AM_WRITE(SMH_RAM               )   //
2816   AM_RANGE(0x400000, 0x400001) AM_WRITE(SMH_NOP               )   // ? (end of lev 2)
2817   AM_RANGE(0x400004, 0x400005) AM_WRITE(SMH_NOP               )   // ? (end of lev 2)
2818   AM_RANGE(0x500000, 0x500001) AM_WRITE(seta_vregs_w) AM_BASE(&seta_vregs   )   // Coin Lockout + Video Registers
2819   AM_RANGE(0xa00000, 0xa00607) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16   )   // Sprites Y
2820   AM_RANGE(0xa80000, 0xa80001) AM_WRITE(SMH_RAM               )   // ? 0x4000
2821   AM_RANGE(0xb00000, 0xb03fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16_2   )   // Sprites Code + X + Attr
2822   AM_RANGE(0xc00000, 0xc03fff) AM_DEVWRITE("x1", seta_sound_word_w         )   // Sound
2823ADDRESS_MAP_END
28242467
28252468/***************************************************************************
28262469                            Ultra Toukond Densetsu
r4679r4680
28302473{
28312474   if (ACCESSING_BITS_0_7)
28322475   {
2833      cpu_set_input_line(space->machine->cpu[1],0,HOLD_LINE);
2834      soundlatch_w(space,0,data & 0xff);
2476      cputag_set_input_line(space->machine, "audiocpu", 0, HOLD_LINE);
2477      soundlatch_w(space, 0, data & 0xff);
28352478   }
28362479}
28372480
2838static ADDRESS_MAP_START( utoukond_readmem, ADDRESS_SPACE_PROGRAM, 16 )
2839   AM_RANGE(0x000000, 0x0fffff) AM_READ(SMH_ROM            )   // ROM
2840   AM_RANGE(0x200000, 0x20ffff) AM_READ(SMH_RAM            )   // ROM
2481static ADDRESS_MAP_START( utoukond_map, ADDRESS_SPACE_PROGRAM, 16 )
2482   AM_RANGE(0x000000, 0x0fffff) AM_ROM                        // ROM
2483   AM_RANGE(0x200000, 0x20ffff) AM_RAM                        // RAM
28412484   AM_RANGE(0x400000, 0x400001) AM_READ_PORT("P1")               // P1
28422485   AM_RANGE(0x400002, 0x400003) AM_READ_PORT("P2")               // P2
28432486   AM_RANGE(0x400004, 0x400005) AM_READ_PORT("COINS")            // Coins
2844   AM_RANGE(0x600000, 0x600003) AM_READ(seta_dsw_r            )   // DSW
2845   AM_RANGE(0x700400, 0x700fff) AM_READ(SMH_RAM            )   // Palette
2846   AM_RANGE(0x800000, 0x801fff) AM_READ(SMH_RAM            )   // VRAM 0
2847   AM_RANGE(0x802000, 0x803fff) AM_READ(SMH_RAM            )   // VRAM 1
2848   AM_RANGE(0x880000, 0x881fff) AM_READ(SMH_RAM            )   // VRAM 2
2849   AM_RANGE(0x882000, 0x883fff) AM_READ(SMH_RAM            )   // VRAM 3
2850   AM_RANGE(0xa00000, 0xa00607) AM_READ(SMH_RAM             )   // Sprites Y
2851   AM_RANGE(0xb00000, 0xb03fff) AM_READ(SMH_RAM            )   // Sprites Code + X + Attr
2487   AM_RANGE(0x500000, 0x500005) AM_RAM_WRITE(seta_vregs_w) AM_BASE(&seta_vregs)   // ? Coin Lockout + Video Registers
2488   AM_RANGE(0x600000, 0x600003) AM_READ(seta_dsw_r)            // DSW
2489   AM_RANGE(0x700400, 0x700fff) AM_RAM   AM_BASE(&paletteram16) AM_SIZE(&seta_paletteram_size)   // Palette
2490   AM_RANGE(0x800000, 0x803fff) AM_RAM_WRITE(seta_vram_0_w) AM_BASE(&seta_vram_0)   // VRAM 0&1
2491   AM_RANGE(0x880000, 0x883fff) AM_RAM_WRITE(seta_vram_2_w) AM_BASE(&seta_vram_2)   // VRAM 2&3
2492   AM_RANGE(0x900000, 0x900005) AM_WRITEONLY AM_BASE(&seta_vctrl_0)// VRAM 0&1 Ctrl
2493   AM_RANGE(0x980000, 0x980005) AM_WRITEONLY AM_BASE(&seta_vctrl_2)// VRAM 2&3 Ctrl
2494   AM_RANGE(0xa00000, 0xa00607) AM_RAM AM_BASE(&spriteram16)      // Sprites Y
2495   AM_RANGE(0xb00000, 0xb03fff) AM_RAM AM_BASE(&spriteram16_2)      // Sprites Code + X + Attr
2496   AM_RANGE(0xc00000, 0xc00001) AM_WRITE(utoukond_soundlatch_w)   // To Sound CPU (cause an IRQ)
2497   AM_RANGE(0xe00000, 0xe00001) AM_WRITENOP                  // ? ack
28522498ADDRESS_MAP_END
28532499
2854static ADDRESS_MAP_START( utoukond_writemem, ADDRESS_SPACE_PROGRAM, 16 )
2855   AM_RANGE(0x000000, 0x0fffff) AM_WRITE(SMH_ROM                  )   // ROM
2856   AM_RANGE(0x200000, 0x20ffff) AM_WRITE(SMH_RAM                  )   // ROM
2857   AM_RANGE(0x500000, 0x500005) AM_WRITE(seta_vregs_w) AM_BASE(&seta_vregs      )   // ? Coin Lockout + Video Registers
2858   AM_RANGE(0x700400, 0x700fff) AM_WRITE(SMH_RAM) AM_BASE(&paletteram16   ) AM_SIZE(&seta_paletteram_size)   // Palette
2859   AM_RANGE(0x800000, 0x803fff) AM_WRITE(seta_vram_0_w) AM_BASE(&seta_vram_0   )   // VRAM 0
2860   AM_RANGE(0x880000, 0x883fff) AM_WRITE(seta_vram_2_w) AM_BASE(&seta_vram_2   )   // VRAM 2
2861   AM_RANGE(0x900000, 0x900005) AM_WRITE(SMH_RAM) AM_BASE(&seta_vctrl_0      )   // VRAM 0&1 Ctrl
2862   AM_RANGE(0x980000, 0x980005) AM_WRITE(SMH_RAM) AM_BASE(&seta_vctrl_2      )   // VRAM 2&3 Ctrl
2863   AM_RANGE(0xa00000, 0xa00607) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16      )   // Sprites Y
2864   AM_RANGE(0xb00000, 0xb03fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16_2   )   // Sprites Code + X + Attr
2865   AM_RANGE(0xc00000, 0xc00001) AM_WRITE(utoukond_soundlatch_w         )   // To Sound CPU (cause an IRQ)
2866   AM_RANGE(0xe00000, 0xe00001) AM_WRITE(SMH_NOP                  )   // ? ack
2867ADDRESS_MAP_END
2868
28692500/***************************************************************************
2870
2871
2872                                Sub / Sound CPU
2873
2874
2501                                Pairs Love
28752502***************************************************************************/
28762503
2877static WRITE8_HANDLER( sub_bankswitch_w )
2878{
2879   UINT8 *rom = memory_region(space->machine, "sub");
2880   int bank = data >> 4;
2881
2882   memory_set_bankptr(space->machine, 1, &rom[bank * 0x4000 + 0xc000]);
2883}
2884
2885static WRITE8_HANDLER( sub_bankswitch_lockout_w )
2886{
2887   sub_bankswitch_w(space,offset,data);
2888   seta_coin_lockout_w(space->machine, data);
2889}
2890
2891
2892/***************************************************************************
2893                                Thundercade
2894***************************************************************************/
2895
2896static READ8_HANDLER( ff_r )   {return 0xff;}
2897
2898static ADDRESS_MAP_START( tndrcade_sub_readmem, ADDRESS_SPACE_PROGRAM, 8 )
2899   AM_RANGE(0x0000, 0x01ff) AM_READ(SMH_RAM            )   // RAM
2900   AM_RANGE(0x0800, 0x0800) AM_READ(ff_r               )   // ? (bits 0/1/2/3: 1 -> do test 0-ff/100-1e0/5001-57ff/banked rom)
2901//  AM_RANGE(0x0800, 0x0800) AM_READ(soundlatch_r           )   //
2902//  AM_RANGE(0x0801, 0x0801) AM_READ(soundlatch2_r          )   //
2903   AM_RANGE(0x1000, 0x1000) AM_READ_PORT("P1")               // P1
2904   AM_RANGE(0x1001, 0x1001) AM_READ_PORT("P2")               // P2
2905   AM_RANGE(0x1002, 0x1002) AM_READ_PORT("COINS")            // Coins
2906   AM_RANGE(0x2000, 0x2001) AM_DEVREAD("ym1", ym2203_r )
2907   AM_RANGE(0x5000, 0x57ff) AM_READ(SMH_RAM            )   // Shared RAM
2908   AM_RANGE(0x6000, 0x7fff) AM_READ(SMH_ROM            )   // ROM
2909   AM_RANGE(0x8000, 0xbfff) AM_READ(SMH_BANK1            )   // Banked ROM
2910   AM_RANGE(0xc000, 0xffff) AM_READ(SMH_ROM            )   // ROM
2911ADDRESS_MAP_END
2912
2913static ADDRESS_MAP_START( tndrcade_sub_writemem, ADDRESS_SPACE_PROGRAM, 8 )
2914   AM_RANGE(0x0000, 0x01ff) AM_WRITE(SMH_RAM               )   // RAM
2915   AM_RANGE(0x1000, 0x1000) AM_WRITE(sub_bankswitch_lockout_w   )   // ROM Bank + Coin Lockout
2916   AM_RANGE(0x2000, 0x2001) AM_DEVWRITE("ym1", ym2203_w   )
2917   AM_RANGE(0x3000, 0x3001) AM_DEVWRITE("ym2", ym3812_w   )
2918   AM_RANGE(0x5000, 0x57ff) AM_WRITE(SMH_RAM) AM_BASE(&sharedram      )   // Shared RAM
2919   AM_RANGE(0x6000, 0xffff) AM_WRITE(SMH_ROM               )   // ROM
2920ADDRESS_MAP_END
2921
2922/***************************************************************************
2923                                Twin Eagle
2924***************************************************************************/
2925
2926static ADDRESS_MAP_START( twineagl_sub_readmem, ADDRESS_SPACE_PROGRAM, 8 )
2927   AM_RANGE(0x0000, 0x01ff) AM_READ(SMH_RAM         )   // RAM
2928   AM_RANGE(0x0800, 0x0800) AM_READ(soundlatch_r      )   //
2929   AM_RANGE(0x0801, 0x0801) AM_READ(soundlatch2_r      )   //
2930   AM_RANGE(0x1000, 0x1000) AM_READ_PORT("P1")            // P1
2931   AM_RANGE(0x1001, 0x1001) AM_READ_PORT("P2")            // P2
2932   AM_RANGE(0x1002, 0x1002) AM_READ_PORT("COINS")         // Coins
2933   AM_RANGE(0x5000, 0x57ff) AM_READ(SMH_RAM         )   // Shared RAM
2934   AM_RANGE(0x7000, 0x7fff) AM_READ(SMH_ROM         )   // ROM
2935   AM_RANGE(0x8000, 0xbfff) AM_READ(SMH_BANK1         )   // Banked ROM
2936   AM_RANGE(0xc000, 0xffff) AM_READ(SMH_ROM         )   // ROM
2937ADDRESS_MAP_END
2938
2939static ADDRESS_MAP_START( twineagl_sub_writemem, ADDRESS_SPACE_PROGRAM, 8 )
2940   AM_RANGE(0x0000, 0x01ff) AM_WRITE(SMH_RAM            )   // RAM
2941   AM_RANGE(0x1000, 0x1000) AM_WRITE(sub_bankswitch_lockout_w   )   // ROM Bank + Coin Lockout
2942   AM_RANGE(0x5000, 0x57ff) AM_WRITE(SMH_RAM) AM_BASE(&sharedram   )   // Shared RAM
2943   AM_RANGE(0x7000, 0x7fff) AM_WRITE(SMH_ROM            )   // ROM
2944   AM_RANGE(0x8000, 0xbfff) AM_WRITE(SMH_ROM            )   // ROM
2945   AM_RANGE(0xc000, 0xffff) AM_WRITE(SMH_ROM            )   // ROM
2946ADDRESS_MAP_END
2947
2948/***************************************************************************
2949                                DownTown
2950***************************************************************************/
2951
2952static READ8_HANDLER( downtown_ip_r )
2953{
2954   int dir1 = input_port_read(space->machine, "ROT1");   // analog port
2955   int dir2 = input_port_read(space->machine, "ROT2");   // analog port
2956
2957   dir1 = (~ (0x800 >> dir1)) & 0xfff;
2958   dir2 = (~ (0x800 >> dir2)) & 0xfff;
2959
2960   switch (offset)
2961   {
2962      case 0:   return (input_port_read(space->machine, "COINS") & 0xf0) + (dir1 >> 8);   // upper 4 bits of p1 rotation + coins
2963      case 1:   return (dir1 & 0xff);               // lower 8 bits of p1 rotation
2964      case 2:   return input_port_read(space->machine, "P1");   // p1
2965      case 3:   return 0xff;                     // ?
2966      case 4:   return (dir2 >> 8);                  // upper 4 bits of p2 rotation + ?
2967      case 5:   return (dir2 & 0xff);               // lower 8 bits of p2 rotation
2968      case 6:   return input_port_read(space->machine, "P2");   // p2
2969      case 7:   return 0xff;                     // ?
2970   }
2971
2972   return 0;
2973}
2974
2975static ADDRESS_MAP_START( downtown_sub_readmem, ADDRESS_SPACE_PROGRAM, 8 )
2976   AM_RANGE(0x0000, 0x01ff) AM_READ(SMH_RAM         )   // RAM
2977   AM_RANGE(0x0800, 0x0800) AM_READ(soundlatch_r      )   //
2978   AM_RANGE(0x0801, 0x0801) AM_READ(soundlatch2_r      )   //
2979   AM_RANGE(0x1000, 0x1007) AM_READ(downtown_ip_r      )   // Input Ports
2980   AM_RANGE(0x5000, 0x57ff) AM_READ(SMH_RAM         )   // Shared RAM
2981   AM_RANGE(0x7000, 0x7fff) AM_READ(SMH_ROM         )   // ROM
2982   AM_RANGE(0x8000, 0xbfff) AM_READ(SMH_BANK1         )   // Banked ROM
2983   AM_RANGE(0xc000, 0xffff) AM_READ(SMH_ROM         )   // ROM
2984ADDRESS_MAP_END
2985
2986static ADDRESS_MAP_START( downtown_sub_writemem, ADDRESS_SPACE_PROGRAM, 8 )
2987   AM_RANGE(0x0000, 0x01ff) AM_WRITE(SMH_RAM            )   // RAM
2988   AM_RANGE(0x1000, 0x1000) AM_WRITE(sub_bankswitch_lockout_w      )   // ROM Bank + Coin Lockout
2989   AM_RANGE(0x5000, 0x57ff) AM_WRITE(SMH_RAM) AM_BASE(&sharedram   )   // Shared RAM
2990   AM_RANGE(0x7000, 0xffff) AM_WRITE(SMH_ROM            )   // ROM
2991ADDRESS_MAP_END
2992
2993/***************************************************************************
2994                        Caliber 50 / U.S. Classic
2995***************************************************************************/
2996
2997static MACHINE_RESET(calibr50)
2998{
2999   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
3000   sub_bankswitch_w(space, 0, 0);
3001}
3002
3003static WRITE8_HANDLER( calibr50_soundlatch2_w )
3004{
3005   soundlatch2_w(space,0,data);
3006   cpu_spinuntil_time(space->cpu, ATTOTIME_IN_USEC(50));   // Allow the other cpu to reply
3007}
3008
3009static ADDRESS_MAP_START( calibr50_sub_readmem, ADDRESS_SPACE_PROGRAM, 8 )
3010   AM_RANGE(0x0000, 0x1fff) AM_DEVREAD("x1", seta_sound_r      )   // Sound
3011   AM_RANGE(0x4000, 0x4000) AM_READ(soundlatch_r      )   // From Main CPU
3012   AM_RANGE(0x8000, 0xbfff) AM_READ(SMH_BANK1         )   // Banked ROM
3013   AM_RANGE(0xc000, 0xffff) AM_READ(SMH_ROM         )   // ROM
3014ADDRESS_MAP_END
3015
3016static ADDRESS_MAP_START( calibr50_sub_writemem, ADDRESS_SPACE_PROGRAM, 8 )
3017   AM_RANGE(0x0000, 0x1fff) AM_DEVWRITE("x1", seta_sound_w            )   // Sound
3018   AM_RANGE(0x4000, 0x4000) AM_WRITE(sub_bankswitch_w         )   // Bankswitching
3019   AM_RANGE(0x8000, 0xbfff) AM_WRITE(SMH_ROM               )   // Banked ROM
3020   AM_RANGE(0xc000, 0xc000) AM_WRITE(calibr50_soundlatch2_w   )   // To Main CPU
3021   AM_RANGE(0xc000, 0xffff) AM_WRITE(SMH_ROM               )   // ROM
3022ADDRESS_MAP_END
3023
3024/***************************************************************************
3025                                Meta Fox
3026***************************************************************************/
3027
3028static ADDRESS_MAP_START( metafox_sub_readmem, ADDRESS_SPACE_PROGRAM, 8 )
3029   AM_RANGE(0x0000, 0x01ff) AM_READ(SMH_RAM         )   // RAM
3030   AM_RANGE(0x0800, 0x0800) AM_READ(soundlatch_r      )   //
3031   AM_RANGE(0x0801, 0x0801) AM_READ(soundlatch2_r      )   //
3032   AM_RANGE(0x1000, 0x1000) AM_READ_PORT("COINS")         // Coins
3033   AM_RANGE(0x1002, 0x1002) AM_READ_PORT("P1")            // P1
3034//  AM_RANGE(0x1004, 0x1004) AM_READ(SMH_NOP            )   // ?
3035   AM_RANGE(0x1006, 0x1006) AM_READ_PORT("P2")            // P2
3036   AM_RANGE(0x5000, 0x57ff) AM_READ(SMH_RAM         )   // Shared RAM
3037   AM_RANGE(0x7000, 0x7fff) AM_READ(SMH_ROM         )   // ROM
3038   AM_RANGE(0x8000, 0xbfff) AM_READ(SMH_BANK1         )   // Banked ROM
3039   AM_RANGE(0xc000, 0xffff) AM_READ(SMH_ROM         )   // ROM
3040ADDRESS_MAP_END
3041
3042static ADDRESS_MAP_START( metafox_sub_writemem, ADDRESS_SPACE_PROGRAM, 8 )
3043   AM_RANGE(0x0000, 0x01ff) AM_WRITE(SMH_RAM            )   // RAM
3044   AM_RANGE(0x1000, 0x1000) AM_WRITE(sub_bankswitch_lockout_w      )   // ROM Bank + Coin Lockout
3045   AM_RANGE(0x5000, 0x57ff) AM_WRITE(SMH_RAM) AM_BASE(&sharedram   )   // Shared RAM
3046   AM_RANGE(0x7000, 0x7fff) AM_WRITE(SMH_ROM            )   // ROM
3047   AM_RANGE(0x8000, 0xbfff) AM_WRITE(SMH_ROM            )   // ROM
3048   AM_RANGE(0xc000, 0xffff) AM_WRITE(SMH_ROM            )   // ROM
3049ADDRESS_MAP_END
3050
3051
3052/***************************************************************************
3053                            Ultra Toukon Densetsu
3054***************************************************************************/
3055
3056static ADDRESS_MAP_START( utoukond_sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
3057   AM_RANGE(0x0000, 0xdfff) AM_READ(SMH_ROM)
3058   AM_RANGE(0xe000, 0xefff) AM_READ(SMH_RAM)
3059   AM_RANGE(0xf000, 0xffff) AM_DEVREAD("x1", seta_sound_r)
3060ADDRESS_MAP_END
3061static ADDRESS_MAP_START( utoukond_sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
3062   AM_RANGE(0x0000, 0xdfff) AM_WRITE(SMH_ROM)
3063   AM_RANGE(0xe000, 0xefff) AM_WRITE(SMH_RAM)
3064   AM_RANGE(0xf000, 0xffff) AM_DEVWRITE("x1", seta_sound_w)
3065ADDRESS_MAP_END
3066
3067static ADDRESS_MAP_START( utoukond_sound_io_map, ADDRESS_SPACE_IO, 8 )
3068   ADDRESS_MAP_GLOBAL_MASK(0xff)
3069   AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ym", ym3438_r, ym3438_w)
3070   AM_RANGE(0x80, 0x80) AM_WRITENOP //?
3071   AM_RANGE(0xc0, 0xc0) AM_READ(soundlatch_r)
3072ADDRESS_MAP_END
3073
30742504static UINT16 pairslove_protram[0x200];
30752505static UINT16 pairslove_protram_old[0x200];
30762506
r4679r4680
30902520   pairslove_protram[offset]=data;
30912521}
30922522
3093/***************************************************************************
3094                                Pairs Love
3095***************************************************************************/
3096
3097static ADDRESS_MAP_START( pairlove_readmem, ADDRESS_SPACE_PROGRAM, 16 )
3098   AM_RANGE(0x000000, 0x03ffff) AM_READ(SMH_ROM            )   // ROM
3099   AM_RANGE(0x300000, 0x300003) AM_READ(seta_dsw_r            )   // DSW
2523static ADDRESS_MAP_START( pairlove_map, ADDRESS_SPACE_PROGRAM, 16 )
2524   AM_RANGE(0x000000, 0x03ffff) AM_ROM                        // ROM
2525   AM_RANGE(0x100000, 0x100001) AM_WRITENOP                  // ? 1 (start of interrupts, main loop: watchdog?)
2526   AM_RANGE(0x200000, 0x200001) AM_WRITENOP                  // ? 0/1 (IRQ acknowledge?)
2527   AM_RANGE(0x300000, 0x300003) AM_READ(seta_dsw_r)            // DSW
2528   AM_RANGE(0x400000, 0x400001) AM_RAM_WRITE(seta_vregs_w) AM_BASE(&seta_vregs)   // Coin Lockout + Sound Enable (bit 4?)
31002529   AM_RANGE(0x500000, 0x500001) AM_READ_PORT("P1")               // P1
31012530   AM_RANGE(0x500002, 0x500003) AM_READ_PORT("P2")               // P2
31022531   AM_RANGE(0x500004, 0x500005) AM_READ_PORT("COINS")            // Coins
3103   AM_RANGE(0x900000, 0x9001ff) AM_READ(pairlove_prot_r)
3104   AM_RANGE(0xa00000, 0xa03fff) AM_DEVREAD("x1", seta_sound_word_r      )   // Sound
3105   AM_RANGE(0xb00000, 0xb00fff) AM_READ(SMH_RAM            )   // Palette
3106   AM_RANGE(0xc00000, 0xc03fff) AM_READ(SMH_RAM            )   // Sprites Code + X + Attr
3107   AM_RANGE(0xd00000, 0xd00001) AM_READ(SMH_RAM            )   // ? 0x4000
3108   AM_RANGE(0xe00000, 0xe00607) AM_READ(SMH_RAM            )   // Sprites Y
3109   AM_RANGE(0xf00000, 0xf0ffff) AM_READ(SMH_RAM            )   // RAM
2532   AM_RANGE(0x900000, 0x9001ff) AM_READWRITE(pairlove_prot_r,pairlove_prot_w)
2533   AM_RANGE(0xa00000, 0xa03fff) AM_DEVREADWRITE("x1", seta_sound_word_r,seta_sound_word_w)   // Sound
2534   AM_RANGE(0xb00000, 0xb00fff) AM_RAM AM_BASE(&paletteram16) AM_SIZE(&seta_paletteram_size)   // Palette
2535   AM_RANGE(0xc00000, 0xc03fff) AM_RAM AM_BASE(&spriteram16_2)      // Sprites Code + X + Attr
2536   AM_RANGE(0xd00000, 0xd00001) AM_RAM                        // ? 0x4000
2537   AM_RANGE(0xe00000, 0xe00607) AM_RAM AM_BASE(&spriteram16)      // Sprites Y
2538   AM_RANGE(0xf00000, 0xf0ffff) AM_RAM                        // RAM
31102539ADDRESS_MAP_END
31112540
3112static ADDRESS_MAP_START( pairlove_writemem, ADDRESS_SPACE_PROGRAM, 16 )
3113   AM_RANGE(0x000000, 0x03ffff) AM_WRITE(SMH_ROM               )   // ROM
3114   AM_RANGE(0x100000, 0x100001) AM_WRITE(SMH_NOP               )   // ? 1 (start of interrupts, main loop: watchdog?)
3115   AM_RANGE(0x200000, 0x200001) AM_WRITE(SMH_NOP               )   // ? 0/1 (IRQ acknowledge?)
3116   AM_RANGE(0x400000, 0x400001) AM_WRITE(seta_vregs_w) AM_BASE(&seta_vregs   )   // Coin Lockout + Sound Enable (bit 4?)
3117   AM_RANGE(0x900000, 0x9001ff) AM_WRITE(pairlove_prot_w)
3118   AM_RANGE(0xa00000, 0xa03fff) AM_DEVWRITE("x1", seta_sound_word_w         )   // Sound
3119   AM_RANGE(0xb00000, 0xb00fff) AM_WRITE(SMH_RAM) AM_BASE(&paletteram16   ) AM_SIZE(&seta_paletteram_size)   // Palette
3120   AM_RANGE(0xc00000, 0xc03fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16_2   )   // Sprites Code + X + Attr
3121   AM_RANGE(0xd00000, 0xd00001) AM_WRITE(SMH_RAM               )   // ? 0x4000
3122   AM_RANGE(0xe00000, 0xe00607) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16   )   // Sprites Y
3123   AM_RANGE(0xf00000, 0xf0ffff) AM_WRITE(SMH_RAM               )   // RAM
3124ADDRESS_MAP_END
31252541
3126
31272542/***************************************************************************
31282543                            Crazy Fight
31292544***************************************************************************/
r4679r4680
31502565   AM_RANGE(0xb00000, 0xb03fff) AM_RAM AM_BASE(&spriteram16_2)   // Sprites Code + X + Attr
31512566ADDRESS_MAP_END
31522567
2568
31532569/***************************************************************************
31542570                             International Toote
31552571***************************************************************************/
r4679r4680
32202636/***************************************************************************
32212637
32222638
2639                                Sub / Sound CPU
2640
2641
2642***************************************************************************/
2643
2644static WRITE8_HANDLER( sub_bankswitch_w )
2645{
2646   UINT8 *rom = memory_region(space->machine, "sub");
2647   int bank = data >> 4;
2648
2649   memory_set_bankptr(space->machine, 1, &rom[bank * 0x4000 + 0xc000]);
2650}
2651
2652static WRITE8_HANDLER( sub_bankswitch_lockout_w )
2653{
2654   sub_bankswitch_w(space,offset,data);
2655   seta_coin_lockout_w(space->machine, data);
2656}
2657
2658
2659/***************************************************************************
2660                                Thundercade
2661***************************************************************************/
2662
2663static READ8_HANDLER( ff_r )   {return 0xff;}
2664
2665static ADDRESS_MAP_START( tndrcade_sub_map, ADDRESS_SPACE_PROGRAM, 8 )
2666   AM_RANGE(0x0000, 0x01ff) AM_RAM                      // RAM
2667   AM_RANGE(0x0800, 0x0800) AM_READ(ff_r)                  // ? (bits 0/1/2/3: 1 -> do test 0-ff/100-1e0/5001-57ff/banked rom)
2668//  AM_RANGE(0x0800, 0x0800) AM_READ(soundlatch_r)              //
2669//  AM_RANGE(0x0801, 0x0801) AM_READ(soundlatch2_r)             //
2670   AM_RANGE(0x1000, 0x1000) AM_READ_PORT("P1")               // P1
2671   AM_RANGE(0x1000, 0x1000) AM_WRITE(sub_bankswitch_lockout_w)   // ROM Bank + Coin Lockout
2672   AM_RANGE(0x1001, 0x1001) AM_READ_PORT("P2")               // P2
2673   AM_RANGE(0x1002, 0x1002) AM_READ_PORT("COINS")            // Coins
2674   AM_RANGE(0x2000, 0x2001) AM_DEVREADWRITE("ym1", ym2203_r,ym2203_w)
2675   AM_RANGE(0x3000, 0x3001) AM_DEVWRITE("ym2", ym3812_w)
2676   AM_RANGE(0x5000, 0x57ff) AM_RAM    AM_BASE(&sharedram)      // Shared RAM
2677   AM_RANGE(0x6000, 0x7fff) AM_ROM                        // ROM
2678   AM_RANGE(0x8000, 0xbfff) AM_ROMBANK(1)                  // Banked ROM
2679   AM_RANGE(0xc000, 0xffff) AM_ROM                        // ROM
2680ADDRESS_MAP_END
2681
2682
2683/***************************************************************************
2684                                Twin Eagle
2685***************************************************************************/
2686
2687static ADDRESS_MAP_START( twineagl_sub_map, ADDRESS_SPACE_PROGRAM, 8 )
2688   AM_RANGE(0x0000, 0x01ff) AM_RAM                     // RAM
2689   AM_RANGE(0x0800, 0x0800) AM_READ(soundlatch_r)         //
2690   AM_RANGE(0x0801, 0x0801) AM_READ(soundlatch2_r)         //
2691   AM_RANGE(0x1000, 0x1000) AM_READ_PORT("P1")            // P1
2692   AM_RANGE(0x1000, 0x1000) AM_WRITE(sub_bankswitch_lockout_w)   // ROM Bank + Coin Lockout
2693   AM_RANGE(0x1001, 0x1001) AM_READ_PORT("P2")            // P2
2694   AM_RANGE(0x1002, 0x1002) AM_READ_PORT("COINS")         // Coins
2695   AM_RANGE(0x5000, 0x57ff) AM_RAM AM_BASE(&sharedram)      // Shared RAM
2696   AM_RANGE(0x7000, 0x7fff) AM_ROM                     // ROM
2697   AM_RANGE(0x8000, 0xbfff) AM_ROMBANK(1)               // Banked ROM
2698   AM_RANGE(0xc000, 0xffff) AM_ROM                     // ROM
2699ADDRESS_MAP_END
2700
2701
2702/***************************************************************************
2703                                DownTown
2704***************************************************************************/
2705
2706static READ8_HANDLER( downtown_ip_r )
2707{
2708   int dir1 = input_port_read(space->machine, "ROT1");   // analog port
2709   int dir2 = input_port_read(space->machine, "ROT2");   // analog port
2710
2711   dir1 = (~ (0x800 >> dir1)) & 0xfff;
2712   dir2 = (~ (0x800 >> dir2)) & 0xfff;
2713
2714   switch (offset)
2715   {
2716      case 0:   return (input_port_read(space->machine, "COINS") & 0xf0) + (dir1 >> 8);   // upper 4 bits of p1 rotation + coins
2717      case 1:   return (dir1 & 0xff);               // lower 8 bits of p1 rotation
2718      case 2:   return input_port_read(space->machine, "P1");   // p1
2719      case 3:   return 0xff;                     // ?
2720      case 4:   return (dir2 >> 8);                  // upper 4 bits of p2 rotation + ?
2721      case 5:   return (dir2 & 0xff);               // lower 8 bits of p2 rotation
2722      case 6:   return input_port_read(space->machine, "P2");   // p2
2723      case 7:   return 0xff;                     // ?
2724   }
2725
2726   return 0;
2727}
2728
2729static ADDRESS_MAP_START( downtown_sub_map, ADDRESS_SPACE_PROGRAM, 8 )
2730   AM_RANGE(0x0000, 0x01ff) AM_RAM                     // RAM
2731   AM_RANGE(0x0800, 0x0800) AM_READ(soundlatch_r)         //
2732   AM_RANGE(0x0801, 0x0801) AM_READ(soundlatch2_r)         //
2733   AM_RANGE(0x1000, 0x1007) AM_READ(downtown_ip_r)         // Input Ports
2734   AM_RANGE(0x1000, 0x1000) AM_WRITE(sub_bankswitch_lockout_w)   // ROM Bank + Coin Lockout
2735   AM_RANGE(0x5000, 0x57ff) AM_RAM AM_BASE(&sharedram)      // Shared RAM
2736   AM_RANGE(0x7000, 0x7fff) AM_ROM                     // ROM
2737   AM_RANGE(0x8000, 0xbfff) AM_ROMBANK(1)               // Banked ROM
2738   AM_RANGE(0xc000, 0xffff) AM_ROM                     // ROM
2739ADDRESS_MAP_END
2740
2741
2742/***************************************************************************
2743                        Caliber 50 / U.S. Classic
2744***************************************************************************/
2745
2746static MACHINE_RESET(calibr50)
2747{
2748   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
2749   sub_bankswitch_w(space, 0, 0);
2750}
2751
2752static WRITE8_HANDLER( calibr50_soundlatch2_w )
2753{
2754   soundlatch2_w(space,0,data);
2755   cpu_spinuntil_time(space->cpu, ATTOTIME_IN_USEC(50));   // Allow the other cpu to reply
2756}
2757
2758static ADDRESS_MAP_START( calibr50_sub_map, ADDRESS_SPACE_PROGRAM, 8 )
2759   AM_RANGE(0x0000, 0x1fff) AM_DEVREADWRITE("x1", seta_sound_r,seta_sound_w)   // Sound
2760   AM_RANGE(0x4000, 0x4000) AM_READ(soundlatch_r)            // From Main CPU
2761   AM_RANGE(0x4000, 0x4000) AM_WRITE(sub_bankswitch_w)         // Bankswitching
2762   AM_RANGE(0x8000, 0xbfff) AM_ROMBANK(1)                  // Banked ROM
2763   AM_RANGE(0xc000, 0xffff) AM_ROM                        // ROM
2764   AM_RANGE(0xc000, 0xc000) AM_WRITE(calibr50_soundlatch2_w)   // To Main CPU
2765ADDRESS_MAP_END
2766
2767
2768/***************************************************************************
2769                                Meta Fox
2770***************************************************************************/
2771
2772static ADDRESS_MAP_START( metafox_sub_map, ADDRESS_SPACE_PROGRAM, 8 )
2773   AM_RANGE(0x0000, 0x01ff) AM_RAM                     // RAM
2774   AM_RANGE(0x0800, 0x0800) AM_READ(soundlatch_r)         //
2775   AM_RANGE(0x0801, 0x0801) AM_READ(soundlatch2_r)         //
2776   AM_RANGE(0x1000, 0x1000) AM_READ_PORT("COINS")         // Coins
2777   AM_RANGE(0x1000, 0x1000) AM_WRITE(sub_bankswitch_lockout_w)   // ROM Bank + Coin Lockout
2778   AM_RANGE(0x1002, 0x1002) AM_READ_PORT("P1")            // P1
2779//  AM_RANGE(0x1004, 0x1004) AM_READNOP                     // ?
2780   AM_RANGE(0x1006, 0x1006) AM_READ_PORT("P2")            // P2
2781   AM_RANGE(0x5000, 0x57ff) AM_RAM AM_BASE(&sharedram)      // Shared RAM
2782   AM_RANGE(0x7000, 0x7fff) AM_ROM                     // ROM
2783   AM_RANGE(0x8000, 0xbfff) AM_ROMBANK(1)               // Banked ROM
2784   AM_RANGE(0xc000, 0xffff) AM_ROM                     // ROM
2785ADDRESS_MAP_END
2786
2787
2788/***************************************************************************
2789                            Ultra Toukon Densetsu
2790***************************************************************************/
2791
2792static ADDRESS_MAP_START( utoukond_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
2793   AM_RANGE(0x0000, 0xdfff) AM_ROM
2794   AM_RANGE(0xe000, 0xefff) AM_RAM
2795   AM_RANGE(0xf000, 0xffff) AM_DEVREADWRITE("x1", seta_sound_r,seta_sound_w)
2796ADDRESS_MAP_END
2797
2798static ADDRESS_MAP_START( utoukond_sound_io_map, ADDRESS_SPACE_IO, 8 )
2799   ADDRESS_MAP_GLOBAL_MASK(0xff)
2800   AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ym", ym3438_r, ym3438_w)
2801   AM_RANGE(0x80, 0x80) AM_WRITENOP //?
2802   AM_RANGE(0xc0, 0xc0) AM_READ(soundlatch_r)
2803ADDRESS_MAP_END
2804
2805
2806/***************************************************************************
2807
2808
32232809                                Input Ports
32242810
32252811
r4679r4680
67646350
67656351   /* basic machine hardware */
67666352   MDRV_CPU_ADD("maincpu", M68000, 16000000/2)   /* 8 MHz */
6767   MDRV_CPU_PROGRAM_MAP(tndrcade_readmem,tndrcade_writemem)
6353   MDRV_CPU_PROGRAM_MAP(tndrcade_map,0)
67686354   MDRV_CPU_VBLANK_INT("screen", irq2_line_hold)
67696355
67706356   MDRV_CPU_ADD("sub", M65C02, 16000000/8)   /* 2 MHz */
6771   MDRV_CPU_PROGRAM_MAP(tndrcade_sub_readmem,tndrcade_sub_writemem)
6357   MDRV_CPU_PROGRAM_MAP(tndrcade_sub_map,0)
67726358   MDRV_CPU_VBLANK_INT_HACK(tndrcade_sub_interrupt,TNDRCADE_SUB_INTERRUPTS_NUM)
67736359
67746360   /* video hardware */
r4679r4680
67996385MACHINE_DRIVER_END
68006386
68016387
6802
68036388/***************************************************************************
68046389                                Twin Eagle
68056390***************************************************************************/
r4679r4680
68146399
68156400   /* basic machine hardware */
68166401   MDRV_CPU_ADD("maincpu", M68000, 16000000/2)   /* 8 MHz */
6817   MDRV_CPU_PROGRAM_MAP(downtown_readmem,downtown_writemem)
6402   MDRV_CPU_PROGRAM_MAP(downtown_map,0)
68186403   MDRV_CPU_VBLANK_INT("screen", irq3_line_hold)
68196404
68206405   MDRV_CPU_ADD("sub", M65C02, 16000000/8)   /* 2 MHz */
6821   MDRV_CPU_PROGRAM_MAP(twineagl_sub_readmem,twineagl_sub_writemem)
6406   MDRV_CPU_PROGRAM_MAP(twineagl_sub_map,0)
68226407   MDRV_CPU_VBLANK_INT_HACK(seta_sub_interrupt,SETA_SUB_INTERRUPTS_NUM)
68236408
68246409   /* video hardware */
r4679r4680
68456430MACHINE_DRIVER_END
68466431
68476432
6848
68496433/***************************************************************************
68506434                                DownTown
68516435***************************************************************************/
r4679r4680
68566440
68576441   /* basic machine hardware */
68586442   MDRV_CPU_ADD("maincpu", M68000, XTAL_16MHz/2) /* verified on pcb */
6859   MDRV_CPU_PROGRAM_MAP(downtown_readmem,downtown_writemem)
6443   MDRV_CPU_PROGRAM_MAP(downtown_map,0)
68606444   MDRV_CPU_VBLANK_INT_HACK(seta_interrupt_1_and_2,SETA_INTERRUPTS_NUM)
68616445
68626446   MDRV_CPU_ADD("sub", M65C02, XTAL_16MHz/8) /* verified on pcb */
6863   MDRV_CPU_PROGRAM_MAP(downtown_sub_readmem,downtown_sub_writemem)
6447   MDRV_CPU_PROGRAM_MAP(downtown_sub_map,0)
68646448   MDRV_CPU_VBLANK_INT_HACK(seta_sub_interrupt,SETA_SUB_INTERRUPTS_NUM)
68656449
68666450   /* video hardware */
r4679r4680
68876471MACHINE_DRIVER_END
68886472
68896473
6890
68916474/***************************************************************************
68926475                                U.S. Classic
68936476***************************************************************************/
r4679r4680
69166499
69176500   /* basic machine hardware */
69186501   MDRV_CPU_ADD("maincpu", M68000, 16000000/2)   /* 8 MHz */
6919   MDRV_CPU_PROGRAM_MAP(usclssic_readmem,usclssic_writemem)
6502   MDRV_CPU_PROGRAM_MAP(usclssic_map,0)
69206503   MDRV_CPU_VBLANK_INT_HACK(calibr50_interrupt,calibr50_INTERRUPTS_NUM)
69216504
69226505   MDRV_CPU_ADD("sub", M65C02, 16000000/8)   /* 2 MHz */
6923   MDRV_CPU_PROGRAM_MAP(calibr50_sub_readmem,calibr50_sub_writemem)
6506   MDRV_CPU_PROGRAM_MAP(calibr50_sub_map,0)
69246507   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)   /* NMI caused by main cpu when writing to the sound latch */
69256508
69266509   MDRV_MACHINE_RESET(calibr50)
r4679r4680
69636546
69646547   /* basic machine hardware */
69656548   MDRV_CPU_ADD("maincpu", M68000, 16000000/2)   /* 8 MHz */
6966   MDRV_CPU_PROGRAM_MAP(calibr50_readmem,calibr50_writemem)
6549   MDRV_CPU_PROGRAM_MAP(calibr50_map,0)
69676550   MDRV_CPU_VBLANK_INT_HACK(calibr50_interrupt,calibr50_INTERRUPTS_NUM)
69686551
69696552   MDRV_CPU_ADD("sub", M65C02, 16000000/8)   /* 2 MHz */
6970   MDRV_CPU_PROGRAM_MAP(calibr50_sub_readmem,calibr50_sub_writemem)
6553   MDRV_CPU_PROGRAM_MAP(calibr50_sub_map,0)
69716554   MDRV_CPU_VBLANK_INT_HACK(irq0_line_hold,4)   /* IRQ: 4/frame
69726555                               NMI: when the 68k writes the sound latch */
69736556
r4679r4680
70076590
70086591   /* basic machine hardware */
70096592   MDRV_CPU_ADD("maincpu", M68000, 16000000/2)   /* 8 MHz */
7010   MDRV_CPU_PROGRAM_MAP(downtown_readmem,downtown_writemem)
6593   MDRV_CPU_PROGRAM_MAP(downtown_map,0)
70116594   MDRV_CPU_VBLANK_INT("screen", irq3_line_hold)
70126595
70136596   MDRV_CPU_ADD("sub", M65C02, 16000000/8)   /* 2 MHz */
7014   MDRV_CPU_PROGRAM_MAP(metafox_sub_readmem,metafox_sub_writemem)
6597   MDRV_CPU_PROGRAM_MAP(metafox_sub_map,0)
70156598   MDRV_CPU_VBLANK_INT_HACK(seta_sub_interrupt,SETA_SUB_INTERRUPTS_NUM)
70166599
70176600   /* video hardware */
r4679r4680
70386621MACHINE_DRIVER_END
70396622
70406623
7041
7042
7043
7044
70456624/***************************************************************************
70466625                                Athena no Hatena?
70476626***************************************************************************/
r4679r4680
70506629
70516630   /* basic machine hardware */
70526631   MDRV_CPU_ADD("maincpu", M68000, 16000000)   /* 16 MHz */
7053   MDRV_CPU_PROGRAM_MAP(atehate_readmem,atehate_writemem)
6632   MDRV_CPU_PROGRAM_MAP(atehate_map,0)
70546633   MDRV_CPU_VBLANK_INT_HACK(seta_interrupt_1_and_2,SETA_INTERRUPTS_NUM)
70556634
70566635   /* video hardware */
r4679r4680
70916670
70926671   /* basic machine hardware */
70936672   MDRV_CPU_ADD("maincpu", M68000, 16000000)   /* 16 MHz */
7094   MDRV_CPU_PROGRAM_MAP(blandia_readmem,blandia_writemem)
7095
6673   MDRV_CPU_PROGRAM_MAP(blandia_map,0)
70966674   MDRV_CPU_VBLANK_INT_HACK(seta_interrupt_2_and_4,SETA_INTERRUPTS_NUM)
70976675
70986676   /* video hardware */
r4679r4680
71246702
71256703   /* basic machine hardware */
71266704   MDRV_CPU_ADD("maincpu", M68000, 16000000)   /* 16 MHz */
7127   MDRV_CPU_PROGRAM_MAP(blandiap_readmem,blandiap_writemem)
6705   MDRV_CPU_PROGRAM_MAP(blandiap_map,0)
71286706   MDRV_CPU_VBLANK_INT_HACK(seta_interrupt_2_and_4,SETA_INTERRUPTS_NUM)
71296707
71306708   /* video hardware */
r4679r4680
71616739
71626740   /* basic machine hardware */
71636741   MDRV_CPU_ADD("maincpu", M68000, 16000000/2)   /* 8 MHz */
7164   MDRV_CPU_PROGRAM_MAP(blockcar_readmem,blockcar_writemem)
6742   MDRV_CPU_PROGRAM_MAP(blockcar_map,0)
71656743   MDRV_CPU_VBLANK_INT("screen", irq3_line_hold)
71666744
71676745   /* video hardware */
r4679r4680
71966774
71976775   /* basic machine hardware */
71986776   MDRV_CPU_ADD("maincpu", M68000, 16000000)   /* 16 MHz */
7199   MDRV_CPU_PROGRAM_MAP(daioh_readmem,daioh_writemem)
6777   MDRV_CPU_PROGRAM_MAP(daioh_map,0)
72006778   MDRV_CPU_VBLANK_INT_HACK(seta_interrupt_1_and_2,SETA_INTERRUPTS_NUM)
72016779
72026780   /* video hardware */
r4679r4680
72366814
72376815   /* basic machine hardware */
72386816   MDRV_CPU_ADD("maincpu", M68000, 16000000/2)   /* 8 MHz */
7239   MDRV_CPU_PROGRAM_MAP(drgnunit_readmem,drgnunit_writemem)
6817   MDRV_CPU_PROGRAM_MAP(drgnunit_map,0)
72406818   MDRV_CPU_VBLANK_INT_HACK(seta_interrupt_1_and_2,SETA_INTERRUPTS_NUM)
72416819
72426820   /* video hardware */
r4679r4680
72706848
72716849   /* basic machine hardware */
72726850   MDRV_CPU_ADD("maincpu", M68000, 16000000)   /* 16 MHz */
7273   MDRV_CPU_PROGRAM_MAP(drgnunit_readmem,drgnunit_writemem)
6851   MDRV_CPU_PROGRAM_MAP(drgnunit_map,0)
72746852   MDRV_CPU_VBLANK_INT_HACK(seta_interrupt_1_and_2,SETA_INTERRUPTS_NUM)
72756853
72766854   /* video hardware */
r4679r4680
73066884
73076885   /* basic machine hardware */
73086886   MDRV_CPU_ADD("maincpu", M68000, 16000000)   /* 16 MHz */
7309   MDRV_CPU_PROGRAM_MAP(wrofaero_readmem,wrofaero_writemem)
6887   MDRV_CPU_PROGRAM_MAP(wrofaero_map,0)
73106888   MDRV_CPU_VBLANK_INT_HACK(seta_interrupt_1_and_2,SETA_INTERRUPTS_NUM)
73116889
73126890   /* video hardware */
r4679r4680
73466924
73476925   /* basic machine hardware */
73486926   MDRV_CPU_ADD("maincpu", M68000, 16000000)   /* 16 MHz */
7349   MDRV_CPU_PROGRAM_MAP(extdwnhl_readmem,extdwnhl_writemem)
6927   MDRV_CPU_PROGRAM_MAP(extdwnhl_map,0)
73506928   MDRV_CPU_VBLANK_INT_HACK(seta_interrupt_1_and_2,SETA_INTERRUPTS_NUM)
73516929
73526930   /* video hardware */
r4679r4680
73986976
73996977   /* basic machine hardware */
74006978   MDRV_CPU_ADD("maincpu", M68000, 16000000)   /* 16 MHz */
7401   MDRV_CPU_PROGRAM_MAP(wrofaero_readmem,wrofaero_writemem)
6979   MDRV_CPU_PROGRAM_MAP(wrofaero_map,0)
74026980#if   __uPD71054_TIMER
74036981//  MDRV_CPU_VBLANK_INT("screen", wrofaero_interrupt)
74046982   MDRV_CPU_VBLANK_INT_HACK(seta_interrupt_1_and_2,SETA_INTERRUPTS_NUM)
r4679r4680
74477025
74487026   /* basic machine hardware */
74497027   MDRV_CPU_ADD("maincpu", M68000, 16000000)   /* 16 MHz */
7450   MDRV_CPU_PROGRAM_MAP(wrofaero_readmem,wrofaero_writemem)
7028   MDRV_CPU_PROGRAM_MAP(wrofaero_map,0)
74517029   MDRV_CPU_VBLANK_INT_HACK(seta_interrupt_1_and_2,SETA_INTERRUPTS_NUM)
74527030
74537031   /* video hardware */
r4679r4680
74787056
74797057   /* basic machine hardware */
74807058   MDRV_CPU_ADD("maincpu", M68000, 16000000)   /* 16 MHz */
7481   MDRV_CPU_PROGRAM_MAP(wrofaero_readmem,jjsquawb_writemem)
7059   MDRV_CPU_PROGRAM_MAP(jjsquawb_map,0)
74827060   MDRV_CPU_VBLANK_INT_HACK(seta_interrupt_1_and_2,SETA_INTERRUPTS_NUM)
74837061
74847062   /* video hardware */
r4679r4680
75147092
75157093   /* basic machine hardware */
75167094   MDRV_CPU_ADD("maincpu", M68000, 16000000)   /* 16 MHz */
7517   MDRV_CPU_PROGRAM_MAP(kamenrid_readmem,kamenrid_writemem)
7095   MDRV_CPU_PROGRAM_MAP(kamenrid_map,0)
75187096   MDRV_CPU_VBLANK_INT("screen", wrofaero_interrupt)
75197097
75207098#if   __uPD71054_TIMER
r4679r4680
75547132
75557133   /* basic machine hardware */
75567134   MDRV_CPU_ADD("maincpu", M68000, 14318180/2)   /* 7.143 MHz */
7557   MDRV_CPU_PROGRAM_MAP(orbs_readmem,orbs_writemem)
7135   MDRV_CPU_PROGRAM_MAP(orbs_map,0)
75587136   MDRV_CPU_VBLANK_INT_HACK(seta_interrupt_1_and_2,SETA_INTERRUPTS_NUM)
75597137
75607138   /* video hardware */
r4679r4680
75897167
75907168   /* basic machine hardware */
75917169   MDRV_CPU_ADD("maincpu", M68000, 16000000)   /* 16 MHz */
7592   MDRV_CPU_PROGRAM_MAP(krzybowl_readmem,krzybowl_writemem)
7170   MDRV_CPU_PROGRAM_MAP(krzybowl_map,0)
75937171   MDRV_CPU_VBLANK_INT_HACK(seta_interrupt_1_and_2,SETA_INTERRUPTS_NUM)
75947172
75957173   /* video hardware */
r4679r4680
76257203
76267204   /* basic machine hardware */
76277205   MDRV_CPU_ADD("maincpu", M68000, 16000000)   /* 16 MHz */
7628   MDRV_CPU_PROGRAM_MAP(madshark_readmem,madshark_writemem)
7206   MDRV_CPU_PROGRAM_MAP(madshark_map,0)
76297207   MDRV_CPU_VBLANK_INT("screen", wrofaero_interrupt)
76307208
76317209#if   __uPD71054_TIMER
r4679r4680
76677245
76687246   /* basic machine hardware */
76697247   MDRV_CPU_ADD("maincpu", M68000, 16000000)   /* 16 MHz */
7670   MDRV_CPU_PROGRAM_MAP(msgundam_readmem,msgundam_writemem)
7248   MDRV_CPU_PROGRAM_MAP(msgundam_map,0)
76717249#if   __uPD71054_TIMER
76727250   MDRV_CPU_VBLANK_INT("screen", wrofaero_interrupt)
76737251#else
r4679r4680
77127290
77137291   /* basic machine hardware */
77147292   MDRV_CPU_ADD("maincpu", M68000, 16000000)   /* 16 MHz */
7715   MDRV_CPU_PROGRAM_MAP(oisipuzl_readmem,oisipuzl_writemem)
7293   MDRV_CPU_PROGRAM_MAP(oisipuzl_map,0)
77167294   MDRV_CPU_VBLANK_INT_HACK(seta_interrupt_1_and_2,SETA_INTERRUPTS_NUM)
77177295
77187296   /* video hardware */
r4679r4680
77487326
77497327   /* basic machine hardware */
77507328   MDRV_CPU_ADD("maincpu", M68000, 16000000)   /* 16 MHz */
7751   MDRV_CPU_PROGRAM_MAP(triplfun_readmem,triplfun_writemem)
7329   MDRV_CPU_PROGRAM_MAP(triplfun_map,0)
77527330   MDRV_CPU_VBLANK_INT("screen", irq3_line_hold)
77537331
77547332   /* video hardware */
r4679r4680
77827360
77837361   /* basic machine hardware */
77847362   MDRV_CPU_ADD("maincpu", M68000, 16000000)   /* 16 MHz */
7785   MDRV_CPU_PROGRAM_MAP(kiwame_readmem,kiwame_writemem)
7363   MDRV_CPU_PROGRAM_MAP(kiwame_map,0)
77867364   MDRV_CPU_VBLANK_INT("screen", irq1_line_hold)/* lev 1-7 are the same. WARNING:
77877365                                   the interrupt table is written to. */
77887366
r4679r4680
78217399
78227400   /* basic machine hardware */
78237401   MDRV_CPU_ADD("maincpu", M68000, 16000000)   /* 16 MHz */
7824   MDRV_CPU_PROGRAM_MAP(wrofaero_readmem,wrofaero_writemem)
7402   MDRV_CPU_PROGRAM_MAP(wrofaero_map,0)
78257403   MDRV_CPU_VBLANK_INT_HACK(seta_interrupt_1_and_2,SETA_INTERRUPTS_NUM)
78267404
78277405   /* video hardware */
r4679r4680
78597437
78607438   /* basic machine hardware */
78617439   MDRV_CPU_ADD("maincpu", M68000, 16000000/2)   /* 8 MHz */
7862   MDRV_CPU_PROGRAM_MAP(thunderl_readmem,thunderl_writemem)
7440   MDRV_CPU_PROGRAM_MAP(thunderl_map,0)
78637441   MDRV_CPU_VBLANK_INT("screen", irq2_line_hold)
78647442
78657443   /* video hardware */
r4679r4680
78907468
78917469   /* basic machine hardware */
78927470   MDRV_CPU_ADD("maincpu", M68000, 16000000/2)   /* 8 MHz */
7893   MDRV_CPU_PROGRAM_MAP(wiggie_readmem,wiggie_writemem)
7471   MDRV_CPU_PROGRAM_MAP(wiggie_map,0)
78947472   MDRV_CPU_VBLANK_INT("screen", irq2_line_hold)
78957473
78967474   MDRV_CPU_ADD("audiocpu", Z80, 16000000/4)   /* 4 MHz */
7897   MDRV_CPU_PROGRAM_MAP(wiggie_sound_readmem,wiggie_sound_writemem)
7475   MDRV_CPU_PROGRAM_MAP(wiggie_sound_map,0)
78987476
78997477   /* video hardware */
79007478   MDRV_SCREEN_ADD("screen", RASTER)
r4679r4680
79237501
79247502   /* basic machine hardware */
79257503   MDRV_CPU_ADD("maincpu", M68000, 16000000/2)   /* 8 MHz */
7926   MDRV_CPU_PROGRAM_MAP(thunderl_readmem,thunderl_writemem)
7504   MDRV_CPU_PROGRAM_MAP(thunderl_map,0)
79277505   MDRV_CPU_VBLANK_INT("screen", irq2_line_hold)
79287506
79297507   /* video hardware */
r4679r4680
79507528MACHINE_DRIVER_END
79517529
79527530
7953
79547531/***************************************************************************
79557532                    Ultraman Club / SD Gundam Neo Battling
79567533***************************************************************************/
r4679r4680
79597536
79607537   /* basic machine hardware */
79617538   MDRV_CPU_ADD("maincpu", M68000, 16000000)   /* 16 MHz */
7962   MDRV_CPU_PROGRAM_MAP(umanclub_readmem,umanclub_writemem)
7539   MDRV_CPU_PROGRAM_MAP(umanclub_map,0)
79637540   MDRV_CPU_VBLANK_INT("screen", irq3_line_hold)
79647541
79657542   /* video hardware */
r4679r4680
79947571
79957572   /* basic machine hardware */
79967573   MDRV_CPU_ADD("maincpu", M68000, 16000000)   /* 16 MHz */
7997   MDRV_CPU_PROGRAM_MAP(utoukond_readmem,utoukond_writemem)
7574   MDRV_CPU_PROGRAM_MAP(utoukond_map,0)
79987575   MDRV_CPU_VBLANK_INT_HACK(seta_interrupt_1_and_2,SETA_INTERRUPTS_NUM)
79997576
80007577   MDRV_CPU_ADD("audiocpu", Z80, 16000000/4)   /* 4 MHz */
8001   MDRV_CPU_PROGRAM_MAP(utoukond_sound_readmem,utoukond_sound_writemem)
7578   MDRV_CPU_PROGRAM_MAP(utoukond_sound_map,0)
80027579   MDRV_CPU_IO_MAP(utoukond_sound_io_map,0)
80037580
80047581   /* video hardware */
r4679r4680
80387615
80397616   /* basic machine hardware */
80407617   MDRV_CPU_ADD("maincpu", M68000, 16000000)   /* 16 MHz */
8041   MDRV_CPU_PROGRAM_MAP(wrofaero_readmem,wrofaero_writemem)
7618   MDRV_CPU_PROGRAM_MAP(wrofaero_map,0)
80427619#if   __uPD71054_TIMER
80437620   MDRV_CPU_VBLANK_INT("screen", wrofaero_interrupt)
80447621#else
r4679r4680
80887665
80897666   /* basic machine hardware */
80907667   MDRV_CPU_ADD("maincpu", M68000, 16000000)   /* 16 MHz */
8091   MDRV_CPU_PROGRAM_MAP(wrofaero_readmem,wrofaero_writemem)
7668   MDRV_CPU_PROGRAM_MAP(wrofaero_map,0)
80927669   MDRV_CPU_VBLANK_INT("screen", irq3_line_hold)
80937670
80947671   /* video hardware */
r4679r4680
81237700
81247701   /* basic machine hardware */
81257702   MDRV_CPU_ADD("maincpu", M68000, 16000000/2)   /* 8 MHz */
8126   MDRV_CPU_PROGRAM_MAP(pairlove_readmem,pairlove_writemem)
7703   MDRV_CPU_PROGRAM_MAP(pairlove_map,0)
81277704   MDRV_CPU_VBLANK_INT_HACK(seta_interrupt_1_and_2,SETA_INTERRUPTS_NUM)
81287705
81297706   /* video hardware */
r4679r4680
94779054static DRIVER_INIT( twineagl )
94789055{
94799056   /* debug? */
9480   memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x800000, 0x8000ff, 0, 0, twineagl_debug_r);
9057   memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x800000, 0x8000ff, 0, 0, twineagl_debug_r);
94819058
94829059   /* This allows 2 simultaneous players and the use of the "Copyright" Dip Switch. */
9483   memory_install_readwrite16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x200100, 0x20010f, 0, 0, twineagl_200100_r, twineagl_200100_w);
9060   memory_install_readwrite16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x200100, 0x20010f, 0, 0, twineagl_200100_r, twineagl_200100_w);
94849061}
94859062
94869063
r4679r4680
95109087
95119088static DRIVER_INIT( downtown )
95129089{
9513   memory_install_readwrite16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x200000, 0x2001ff, 0, 0, downtown_protection_r, downtown_protection_w);
9090   memory_install_readwrite16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x200000, 0x2001ff, 0, 0, downtown_protection_r, downtown_protection_w);
95149091}
95159092
95169093
r4679r4680
95309107
95319108static DRIVER_INIT( arbalest )
95329109{
9533   memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x80000, 0x8000f, 0, 0, arbalest_debug_r);
9110   memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x80000, 0x8000f, 0, 0, arbalest_debug_r);
95349111}
95359112
95369113
r4679r4680
95399116   UINT16 *RAM = (UINT16 *) memory_region(machine, "maincpu");
95409117
95419118   /* This game uses the 21c000-21ffff area for protection? */
9542//  memory_install_readwrite16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x21c000, 0x21ffff, 0, 0, SMH_NOP, SMH_NOP);
9119//  memory_install_readwrite16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x21c000, 0x21ffff, 0, 0, (read16_space_func)SMH_NOP, (write16_space_func)SMH_NOP);
95439120
95449121   RAM[0x8ab1c/2] = 0x4e71;   // patch protection test: "cp error"
95459122   RAM[0x8ab1e/2] = 0x4e71;
r4679r4680
95579134   int rpos;
95589135
95599136   rom_size = 0x80000;
9560   buf = malloc_or_die(rom_size);
9137   buf = alloc_array_or_die(UINT8, rom_size);
95619138
95629139   rom = memory_region(machine, "gfx2") + 0x40000;
95639140
r4679r4680
95839160
95849161static DRIVER_INIT( eightfrc )
95859162{
9586   memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x500004, 0x500005, 0, 0, SMH_NOP);   // watchdog??
9163   memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x500004, 0x500005, 0, 0, (read16_space_func)SMH_NOP);   // watchdog??
95879164}
95889165
95899166
95909167static DRIVER_INIT( zombraid )
95919168{
9592   memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xf00002, 0xf00003, 0, 0, zombraid_gun_r);
9593   memory_install_write16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xf00000, 0xf00001, 0, 0, zombraid_gun_w);
9169   memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xf00002, 0xf00003, 0, 0, zombraid_gun_r);
9170   memory_install_write16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xf00000, 0xf00001, 0, 0, zombraid_gun_w);
95949171}
95959172
95969173
r4679r4680
96089185
96099186static DRIVER_INIT( rezon )
96109187{
9611   memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x500006, 0x500007, 0, 0, SMH_NOP);   // irq ack?
9188   memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x500006, 0x500007, 0, 0, (read16_space_func)SMH_NOP);   // irq ack?
96129189}
96139190
96149191static DRIVER_INIT(wiggie)
r4679r4680
96409217   }
96419218
96429219   /* X1_010 is not used. */
9643   memory_install_readwrite16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x100000, 0x103fff, 0, 0, SMH_NOP, SMH_NOP);
9220   memory_install_readwrite16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x100000, 0x103fff, 0, 0, (read16_space_func)SMH_NOP, (write16_space_func)SMH_NOP);
96449221
9645   memory_install_write16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xB00008, 0xB00009, 0, 0, wiggie_soundlatch_w);
9222   memory_install_write16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xB00008, 0xB00009, 0, 0, wiggie_soundlatch_w);
96469223
96479224}
96489225
r4679r4680
96539230   RAM[0x1078/2] = 0x4e71;
96549231
96559232   // fixed priorities?
9656   seta_vregs = (UINT16*)auto_malloc(sizeof(UINT16)*3);
9233   seta_vregs = auto_alloc_array(machine, UINT16, 3);
96579234   seta_vregs[0] = seta_vregs[1] = seta_vregs[2] = 0;
96589235
96599236   DRIVER_INIT_CALL(blandia);
src/mame/drivers/laserbat.c
r4679r4680
508508
509509   bg_tilemap = tilemap_create(machine, get_tile_info,tilemap_scan_rows,8,8,32,32);
510510
511   videoram = (UINT8 *)auto_malloc(0x400);
512   colorram = (UINT8 *)auto_malloc(0x400);
511   videoram = auto_alloc_array(machine, UINT8, 0x400);
512   colorram = auto_alloc_array(machine, UINT8, 0x400);
513513
514514   /* configure the S2636 chips */
515   s2636_0 = s2636_config(s2636_0_ram, screen_height, screen_width, 0, -19);
516   s2636_1 = s2636_config(s2636_1_ram, screen_height, screen_width, 0, -19);
517   s2636_2 = s2636_config(s2636_2_ram, screen_height, screen_width, 0, -19);
515   s2636_0 = s2636_config(machine, s2636_0_ram, screen_height, screen_width, 0, -19);
516   s2636_1 = s2636_config(machine, s2636_1_ram, screen_height, screen_width, 0, -19);
517   s2636_2 = s2636_config(machine, s2636_2_ram, screen_height, screen_width, 0, -19);
518518}
519519
520520static VIDEO_UPDATE( laserbat )
r4679r4680
595595
596596/* Cat'N Mouse sound ***********************************/
597597
598static WRITE_LINE_DEVICE_HANDLER( zaccaria_irq0a ) { cpu_set_input_line(device->machine->cpu[1], INPUT_LINE_NMI, state ? ASSERT_LINE : CLEAR_LINE); }
599static WRITE_LINE_DEVICE_HANDLER( zaccaria_irq0b ) { cpu_set_input_line(device->machine->cpu[1],0,state ? ASSERT_LINE : CLEAR_LINE); }
598static WRITE_LINE_DEVICE_HANDLER( zaccaria_irq0a ) { cputag_set_input_line(device->machine, "audiocpu", INPUT_LINE_NMI, state ? ASSERT_LINE : CLEAR_LINE); }
599static WRITE_LINE_DEVICE_HANDLER( zaccaria_irq0b ) { cputag_set_input_line(device->machine, "audiocpu", 0, state ? ASSERT_LINE : CLEAR_LINE); }
600600
601601static int active_8910,port0a;
602602
src/mame/drivers/trvquest.c
r4679r4680
4242
4343static READ8_HANDLER( trvquest_question_r )
4444{
45   gameplan_state *state = space->machine->driver_data;
45   gameplan_state *state = (gameplan_state *)space->machine->driver_data;
4646
4747   return memory_region(space->machine, "questions")[*state->trvquest_question * 0x2000 + offset];
4848}
r4679r4680
148148
149149static TIMER_CALLBACK( via_irq_delayed )
150150{
151   cpu_set_input_line(machine->cpu[0], 0, param);
151   cputag_set_input_line(machine, "maincpu", 0, param);
152152}
153153
154154static void via_irq(const device_config *device, int state)
src/mame/drivers/ssf2md.c
r4679r4680
1818
1919static DRIVER_INIT( ssf2ghw )
2020{
21   memory_install_write16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xA130F0, 0xA130FF, 0, 0, SMH_NOP); // custom banking is disabled (!)
22   memory_install_readwrite16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x400000, 0x5fffff, 0, 0, SMH_BANK5, SMH_UNMAP);
21   memory_install_write16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xA130F0, 0xA130FF, 0, 0, (write16_space_func)SMH_NOP); // custom banking is disabled (!)
22   memory_install_readwrite16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x400000, 0x5fffff, 0, 0, (read16_space_func)SMH_BANK(5), (write16_space_func)SMH_UNMAP);
2323
24   memory_set_bankptr(machine,  5, memory_region( machine, "maincpu" )+0x400000 );
24   memory_set_bankptr(machine,  5, memory_region( machine, "maincpu" ) + 0x400000 );
2525
26   memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x770070, 0x770075, 0, 0, ssf2ghw_dsw_r );
26   memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x770070, 0x770075, 0, 0, ssf2ghw_dsw_r );
2727
2828   DRIVER_INIT_CALL(megadrij);
2929
src/mame/drivers/tnzs.c
r4679r4680
664664            size++;
665665         }
666666      }
667      sampledata[i] = auto_malloc(size * sizeof(sampledata[0]));
667      sampledata[i] = auto_alloc_array(machine, INT16, size);
668668      samplesize[i] = size;
669669
670670      if (start < 0x100) start = size = 0;
r4679r4680
810810
811811static WRITE8_HANDLER( tnzsb_sound_command_w )
812812{
813   soundlatch_w(space,offset,data);
814   cpu_set_input_line_and_vector(space->machine->cpu[2],0,HOLD_LINE,0xff);
813   soundlatch_w(space, offset, data);
814   cputag_set_input_line_and_vector(space->machine, "audiocpu", 0, HOLD_LINE, 0xff);
815815}
816816
817817static ADDRESS_MAP_START( tnzsb_cpu1_map, ADDRESS_SPACE_PROGRAM, 8 )
r4679r4680
890890
891891static ADDRESS_MAP_START( jpopnics_main_map, ADDRESS_SPACE_PROGRAM, 8 )
892892   AM_RANGE(0x0000, 0x7fff) AM_ROM
893   AM_RANGE(0x8000, 0xbfff) AM_READWRITE(SMH_BANK1, SMH_ROM)
893   AM_RANGE(0x8000, 0xbfff) AM_READWRITE(SMH_BANK(1), SMH_ROM)
894894   AM_RANGE(0xc000, 0xdfff) AM_RAM AM_BASE(&tnzs_objram)
895895   AM_RANGE(0xe000, 0xefff) AM_RAM AM_SHARE(1) /* WORK RAM (shared by the 2 z80's) */
896896   AM_RANGE(0xf000, 0xf1ff) AM_RAM AM_BASE(&tnzs_vdcram)    /* VDC RAM */
r4679r4680
911911
912912static ADDRESS_MAP_START( jpopnics_sub_map, ADDRESS_SPACE_PROGRAM, 8 )
913913   AM_RANGE(0x0000, 0x7fff) AM_ROM
914   AM_RANGE(0x8000, 0x9fff) AM_READWRITE(SMH_BANK2, SMH_ROM)
914   AM_RANGE(0x8000, 0x9fff) AM_READWRITE(SMH_BANK(2), SMH_ROM)
915915
916916   AM_RANGE(0xa000, 0xa000) AM_WRITE(jpopnics_subbankswitch_w)
917917   AM_RANGE(0xb000, 0xb001) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
r4679r4680
15601560/* handler called by the 2203 emulator when the internal timers cause an IRQ */
15611561static void irqhandler(const device_config *device, int irq)
15621562{
1563   cpu_set_input_line(device->machine->cpu[2], INPUT_LINE_NMI, irq ? ASSERT_LINE : CLEAR_LINE);
1563   cputag_set_input_line(device->machine, "audiocpu", INPUT_LINE_NMI, irq ? ASSERT_LINE : CLEAR_LINE);
15641564}
15651565
15661566static const ym2203_interface kageki_ym2203_interface =
src/mame/drivers/tp84.c
r4679r4680
130130
131131static WRITE8_HANDLER( tp84_sh_irqtrigger_w )
132132{
133   cpu_set_input_line_and_vector(space->machine->cpu[2],0,HOLD_LINE,0xff);
133   cputag_set_input_line_and_vector(space->machine, "audiocpu",0,HOLD_LINE,0xff);
134134}
135135
136136
src/mame/drivers/rohga.c
r4679r4680
127127
128128/**********************************************************************************/
129129
130static ADDRESS_MAP_START( rohga_readmem, ADDRESS_SPACE_PROGRAM, 16 )
131   AM_RANGE(0x000000, 0x1fffff) AM_READ(SMH_ROM)
132   AM_RANGE(0x280000, 0x2807ff) AM_MIRROR(0x800) AM_READ(deco16_104_rohga_prot_r) /* Protection device */
133   AM_RANGE(0x2c0000, 0x2c0001) AM_READ_PORT("DSW3")
134   AM_RANGE(0x321100, 0x321101) AM_READNOP /* Irq ack?  Value not used */
135   AM_RANGE(0x3c0000, 0x3c1fff) AM_READ(SMH_RAM)
136   AM_RANGE(0x3c2000, 0x3c2fff) AM_READ(SMH_RAM)
137   AM_RANGE(0x3c4000, 0x3c4fff) AM_READ(SMH_RAM)
138   AM_RANGE(0x3c6000, 0x3c6fff) AM_READ(SMH_RAM)
139   AM_RANGE(0x3c8000, 0x3c8fff) AM_MIRROR(0x1000) AM_READ(SMH_RAM)
140   AM_RANGE(0x3ca000, 0x3cafff) AM_MIRROR(0x1000) AM_READ(SMH_RAM)
141   AM_RANGE(0x3cc000, 0x3ccfff) AM_MIRROR(0x1000) AM_READ(SMH_RAM)
142   AM_RANGE(0x3ce000, 0x3cefff) AM_MIRROR(0x1000) AM_READ(SMH_RAM)
143   AM_RANGE(0x3d0000, 0x3d0fff) AM_READ(SMH_RAM)
144   AM_RANGE(0x3e0000, 0x3e1fff) AM_READ(SMH_RAM)
145   AM_RANGE(0x3f0000, 0x3f3fff) AM_READ(SMH_RAM)
146ADDRESS_MAP_END
130static ADDRESS_MAP_START( rohga_map, ADDRESS_SPACE_PROGRAM, 16 )
131   AM_RANGE(0x000000, 0x1fffff) AM_ROM
147132
148static ADDRESS_MAP_START( rohga_writemem, ADDRESS_SPACE_PROGRAM, 16 )
149   AM_RANGE(0x000000, 0x1fffff) AM_WRITE(SMH_ROM)
150   AM_RANGE(0x200000, 0x20000f) AM_WRITE(SMH_RAM) AM_BASE(&deco16_pf12_control)
151   AM_RANGE(0x240000, 0x24000f) AM_WRITE(SMH_RAM) AM_BASE(&deco16_pf34_control)
152   AM_RANGE(0x280000, 0x2807ff) AM_MIRROR(0x800) AM_WRITE(deco16_104_rohga_prot_w) AM_BASE(&deco16_prot_ram) /* Protection writes */
133   AM_RANGE(0x200000, 0x20000f) AM_WRITEONLY AM_BASE(&deco16_pf12_control)
134   AM_RANGE(0x240000, 0x24000f) AM_WRITEONLY AM_BASE(&deco16_pf34_control)
153135
136   AM_RANGE(0x280000, 0x2807ff) AM_MIRROR(0x800) AM_READWRITE(deco16_104_rohga_prot_r,deco16_104_rohga_prot_w)  AM_BASE(&deco16_prot_ram) /* Protection device */
137
138   AM_RANGE(0x2c0000, 0x2c0001) AM_READ_PORT("DSW3")
139
154140   AM_RANGE(0x300000, 0x300001) AM_WRITE(rohga_buffer_spriteram16_w) /* write 1 for sprite dma */
155141   AM_RANGE(0x310000, 0x310009) AM_WRITENOP /* Palette control? */
156142   AM_RANGE(0x31000a, 0x31000b) AM_WRITE(deco16_palette_dma_w) /* Write 1111 for dma?  (Or any value?) */
157143   AM_RANGE(0x320000, 0x320001) AM_WRITENOP /* ? */
158144   AM_RANGE(0x322000, 0x322001) AM_WRITE(deco16_priority_w)
145   AM_RANGE(0x321100, 0x321101) AM_READNOP /* Irq ack?  Value not used */
159146
160   AM_RANGE(0x3c0000, 0x3c1fff) AM_WRITE(deco16_pf1_data_w) AM_BASE(&deco16_pf1_data)
161   AM_RANGE(0x3c2000, 0x3c2fff) AM_WRITE(deco16_pf2_data_w) AM_BASE(&deco16_pf2_data)
162   AM_RANGE(0x3c4000, 0x3c4fff) AM_WRITE(deco16_pf3_data_w) AM_BASE(&deco16_pf3_data)
163   AM_RANGE(0x3c6000, 0x3c6fff) AM_WRITE(deco16_pf4_data_w) AM_BASE(&deco16_pf4_data)
164   AM_RANGE(0x3c8000, 0x3c8fff) AM_MIRROR(0x1000) AM_WRITE(SMH_RAM) AM_BASE(&deco16_pf1_rowscroll)
165   AM_RANGE(0x3ca000, 0x3cafff) AM_MIRROR(0x1000) AM_WRITE(SMH_RAM) AM_BASE(&deco16_pf2_rowscroll)
166   AM_RANGE(0x3cc000, 0x3ccfff) AM_MIRROR(0x1000) AM_WRITE(SMH_RAM) AM_BASE(&deco16_pf3_rowscroll)
167   AM_RANGE(0x3ce000, 0x3cefff) AM_MIRROR(0x1000) AM_WRITE(SMH_RAM) AM_BASE(&deco16_pf4_rowscroll)
168   AM_RANGE(0x3d0000, 0x3d07ff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)
169   AM_RANGE(0x3e0000, 0x3e1fff) AM_WRITE(deco16_buffered_palette_w) AM_BASE(&paletteram16)
170   AM_RANGE(0x3f0000, 0x3f3fff) AM_WRITE(SMH_RAM) /* Main ram */
171ADDRESS_MAP_END
147   AM_RANGE(0x3c0000, 0x3c1fff) AM_RAM_WRITE(deco16_pf1_data_w) AM_BASE(&deco16_pf1_data)
148   AM_RANGE(0x3c2000, 0x3c2fff) AM_RAM_WRITE(deco16_pf2_data_w) AM_BASE(&deco16_pf2_data)
149   AM_RANGE(0x3c4000, 0x3c4fff) AM_RAM_WRITE(deco16_pf3_data_w) AM_BASE(&deco16_pf3_data)
150   AM_RANGE(0x3c6000, 0x3c6fff) AM_RAM_WRITE(deco16_pf4_data_w) AM_BASE(&deco16_pf4_data)
172151
173static ADDRESS_MAP_START( wizdfire_readmem, ADDRESS_SPACE_PROGRAM, 16 )
174   AM_RANGE(0x000000, 0x1fffff) AM_READ(SMH_ROM)
175   AM_RANGE(0x200000, 0x200fff) AM_READ(SMH_RAM)
176   AM_RANGE(0x202000, 0x202fff) AM_READ(SMH_RAM)
177   AM_RANGE(0x208000, 0x208fff) AM_READ(SMH_RAM)
178   AM_RANGE(0x20a000, 0x20afff) AM_READ(SMH_RAM)
179   AM_RANGE(0x20c000, 0x20cfff) AM_READ(SMH_RAM)
180   AM_RANGE(0x20e000, 0x20efff) AM_READ(SMH_RAM)
181   AM_RANGE(0x340000, 0x3407ff) AM_READ(SMH_RAM)
182   AM_RANGE(0x360000, 0x3607ff) AM_READ(SMH_RAM)
183   AM_RANGE(0x380000, 0x381fff) AM_READ(SMH_RAM)
184   AM_RANGE(0xfdc000, 0xfe3fff) AM_READ(SMH_RAM)
185   AM_RANGE(0xfe4000, 0xfe47ff) AM_READ(deco16_104_prot_r) /* Protection device */
186   AM_RANGE(0xfe5000, 0xfeffff) AM_READ(SMH_RAM)
152   AM_RANGE(0x3c8000, 0x3c8fff) AM_MIRROR(0x1000) AM_RAM AM_BASE(&deco16_pf1_rowscroll)
153   AM_RANGE(0x3ca000, 0x3cafff) AM_MIRROR(0x1000) AM_RAM AM_BASE(&deco16_pf2_rowscroll)
154   AM_RANGE(0x3cc000, 0x3ccfff) AM_MIRROR(0x1000) AM_RAM AM_BASE(&deco16_pf3_rowscroll)
155   AM_RANGE(0x3ce000, 0x3cefff) AM_MIRROR(0x1000) AM_RAM AM_BASE(&deco16_pf4_rowscroll)
156
157   AM_RANGE(0x3d0000, 0x3d07ff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)
158   AM_RANGE(0x3e0000, 0x3e1fff) AM_RAM_WRITE(deco16_buffered_palette_w) AM_BASE(&paletteram16)
159   AM_RANGE(0x3f0000, 0x3f3fff) AM_RAM /* Main ram */
187160ADDRESS_MAP_END
188161
189static ADDRESS_MAP_START( wizdfire_writemem, ADDRESS_SPACE_PROGRAM, 16 )
190   AM_RANGE(0x000000, 0x1fffff) AM_WRITE(SMH_ROM)
162static ADDRESS_MAP_START( wizdfire_map, ADDRESS_SPACE_PROGRAM, 16 )
163   AM_RANGE(0x000000, 0x1fffff) AM_ROM
191164
192   AM_RANGE(0x200000, 0x200fff) AM_WRITE(deco16_pf1_data_w) AM_BASE(&deco16_pf1_data)
193   AM_RANGE(0x202000, 0x202fff) AM_WRITE(deco16_pf2_data_w) AM_BASE(&deco16_pf2_data)
194   AM_RANGE(0x208000, 0x208fff) AM_WRITE(deco16_pf3_data_w) AM_BASE(&deco16_pf3_data)
195   AM_RANGE(0x20a000, 0x20afff) AM_WRITE(deco16_pf4_data_w) AM_BASE(&deco16_pf4_data)
165   AM_RANGE(0x200000, 0x200fff) AM_RAM_WRITE(deco16_pf1_data_w) AM_BASE(&deco16_pf1_data)
166   AM_RANGE(0x202000, 0x202fff) AM_RAM_WRITE(deco16_pf2_data_w) AM_BASE(&deco16_pf2_data)
167   AM_RANGE(0x208000, 0x208fff) AM_RAM_WRITE(deco16_pf3_data_w) AM_BASE(&deco16_pf3_data)
168   AM_RANGE(0x20a000, 0x20afff) AM_RAM_WRITE(deco16_pf4_data_w) AM_BASE(&deco16_pf4_data)
196169
197   AM_RANGE(0x20b000, 0x20b3ff) AM_WRITE(SMH_RAM) /* ? Always 0 written */
198   AM_RANGE(0x20c000, 0x20c7ff) AM_WRITE(SMH_RAM) AM_BASE(&deco16_pf3_rowscroll)
199   AM_RANGE(0x20e000, 0x20e7ff) AM_WRITE(SMH_RAM) AM_BASE(&deco16_pf4_rowscroll)
170   AM_RANGE(0x20b000, 0x20b3ff) AM_WRITEONLY /* ? Always 0 written */
171   AM_RANGE(0x20c000, 0x20c7ff) AM_RAM AM_BASE(&deco16_pf3_rowscroll)
172   AM_RANGE(0x20e000, 0x20e7ff) AM_RAM AM_BASE(&deco16_pf4_rowscroll)
200173
201   AM_RANGE(0x300000, 0x30000f) AM_WRITE(SMH_RAM) AM_BASE(&deco16_pf12_control)
202   AM_RANGE(0x310000, 0x31000f) AM_WRITE(SMH_RAM) AM_BASE(&deco16_pf34_control)
174   AM_RANGE(0x300000, 0x30000f) AM_WRITEONLY AM_BASE(&deco16_pf12_control)
175   AM_RANGE(0x310000, 0x31000f) AM_WRITEONLY AM_BASE(&deco16_pf34_control)
203176
204177   AM_RANGE(0x320000, 0x320001) AM_WRITE(deco16_priority_w) /* Priority */
205178   AM_RANGE(0x320002, 0x320003) AM_WRITENOP /* ? */
206179   AM_RANGE(0x320004, 0x320005) AM_WRITENOP /* VBL IRQ ack */
207180
208   AM_RANGE(0x340000, 0x3407ff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)
181   AM_RANGE(0x340000, 0x3407ff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)
209182   AM_RANGE(0x350000, 0x350001) AM_WRITE(buffer_spriteram16_w) /* Triggers DMA for spriteram */
210   AM_RANGE(0x360000, 0x3607ff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16_2) AM_SIZE(&spriteram_2_size)
183   AM_RANGE(0x360000, 0x3607ff) AM_RAM AM_BASE(&spriteram16_2) AM_SIZE(&spriteram_2_size)
211184   AM_RANGE(0x370000, 0x370001) AM_WRITE(buffer_spriteram16_2_w) /* Triggers DMA for spriteram */
212185
213   AM_RANGE(0x380000, 0x381fff) AM_WRITE(deco16_buffered_palette_w) AM_BASE(&paletteram16)
186   AM_RANGE(0x380000, 0x381fff) AM_RAM_WRITE(deco16_buffered_palette_w) AM_BASE(&paletteram16)
214187   AM_RANGE(0x390008, 0x390009) AM_WRITE(deco16_palette_dma_w)
215188
216   AM_RANGE(0xfe4000, 0xfe47ff) AM_WRITE(deco16_104_prot_w) AM_BASE(&deco16_prot_ram) /* Protection writes */
217   AM_RANGE(0xfdc000, 0xfeffff) AM_WRITE(SMH_RAM) /* Main ram */
189   AM_RANGE(0xfe4000, 0xfe47ff) AM_READWRITE(deco16_104_prot_r,deco16_104_prot_w) AM_BASE(&deco16_prot_ram) /* Protection device */
190   AM_RANGE(0xfdc000, 0xffffff) AM_RAM
218191ADDRESS_MAP_END
219192
220static ADDRESS_MAP_START( nitrobal_readmem, ADDRESS_SPACE_PROGRAM, 16 )
221   AM_RANGE(0x000000, 0x1fffff) AM_READ(SMH_ROM)
193static ADDRESS_MAP_START( nitrobal_map, ADDRESS_SPACE_PROGRAM, 16 )
194   AM_RANGE(0x000000, 0x1fffff) AM_ROM
222195
223   AM_RANGE(0x200000, 0x200fff) AM_READ(SMH_RAM)
224   AM_RANGE(0x202000, 0x202fff) AM_READ(SMH_RAM)
225   AM_RANGE(0x204000, 0x2047ff) AM_READ(SMH_RAM)
226   AM_RANGE(0x206000, 0x2067ff) AM_READ(SMH_RAM)
227   AM_RANGE(0x208000, 0x208fff) AM_READ(SMH_RAM)
228   AM_RANGE(0x20a000, 0x20afff) AM_READ(SMH_RAM)
229   AM_RANGE(0x20c000, 0x20c7ff) AM_READ(SMH_RAM)
230   AM_RANGE(0x20e000, 0x20e7ff) AM_READ(SMH_RAM)
196   AM_RANGE(0x200000, 0x200fff) AM_MIRROR(0x1000) AM_RAM_WRITE(deco16_pf1_data_w) AM_BASE(&deco16_pf1_data)
197   AM_RANGE(0x202000, 0x2027ff) AM_MIRROR(0x800) AM_RAM_WRITE(deco16_pf2_data_w) AM_BASE(&deco16_pf2_data)
198   AM_RANGE(0x208000, 0x2087ff) AM_MIRROR(0x800) AM_RAM_WRITE(deco16_pf3_data_w) AM_BASE(&deco16_pf3_data)
199   AM_RANGE(0x20a000, 0x20a7ff) AM_MIRROR(0x800) AM_RAM_WRITE(deco16_pf4_data_w) AM_BASE(&deco16_pf4_data)
231200
232   AM_RANGE(0x300000, 0x30000f) AM_READ(SMH_RAM)
233   AM_RANGE(0x310000, 0x31000f) AM_READ(SMH_RAM)
234   AM_RANGE(0x320000, 0x320001) AM_READ_PORT("DSW3")
201   AM_RANGE(0x204000, 0x2047ff) AM_RAM AM_BASE(&deco16_pf1_rowscroll)
202   AM_RANGE(0x206000, 0x2067ff) AM_RAM AM_BASE(&deco16_pf2_rowscroll)
203   AM_RANGE(0x20c000, 0x20c7ff) AM_RAM AM_BASE(&deco16_pf3_rowscroll)
204   AM_RANGE(0x20e000, 0x20e7ff) AM_RAM AM_BASE(&deco16_pf4_rowscroll)
235205
236   AM_RANGE(0x340000, 0x3407ff) AM_READ(SMH_RAM)
237   AM_RANGE(0x360000, 0x3607ff) AM_READ(SMH_RAM)
238   AM_RANGE(0x380000, 0x381fff) AM_READ(SMH_RAM)
206   AM_RANGE(0x300000, 0x30000f) AM_WRITEONLY AM_BASE(&deco16_pf12_control)
207   AM_RANGE(0x310000, 0x31000f) AM_WRITEONLY AM_BASE(&deco16_pf34_control)
239208
240   AM_RANGE(0xfec000, 0xff3fff) AM_READ(SMH_RAM)
241   AM_RANGE(0xff4000, 0xff47ff) AM_READ(deco16_146_nitroball_prot_r) /* Protection device */
242   AM_RANGE(0xff8000, 0xffffff) AM_READ(SMH_RAM)
243ADDRESS_MAP_END
244
245static ADDRESS_MAP_START( nitrobal_writemem, ADDRESS_SPACE_PROGRAM, 16 )
246   AM_RANGE(0x000000, 0x1fffff) AM_WRITE(SMH_ROM)
247
248   AM_RANGE(0x200000, 0x200fff) AM_MIRROR(0x1000) AM_WRITE(deco16_pf1_data_w) AM_BASE(&deco16_pf1_data)
249   AM_RANGE(0x202000, 0x2027ff) AM_MIRROR(0x800) AM_WRITE(deco16_pf2_data_w) AM_BASE(&deco16_pf2_data)
250   AM_RANGE(0x208000, 0x2087ff) AM_MIRROR(0x800) AM_WRITE(deco16_pf3_data_w) AM_BASE(&deco16_pf3_data)
251   AM_RANGE(0x20a000, 0x20a7ff) AM_MIRROR(0x800) AM_WRITE(deco16_pf4_data_w) AM_BASE(&deco16_pf4_data)
252
253   AM_RANGE(0x204000, 0x2047ff) AM_WRITE(SMH_RAM) AM_BASE(&deco16_pf1_rowscroll)
254   AM_RANGE(0x206000, 0x2067ff) AM_WRITE(SMH_RAM) AM_BASE(&deco16_pf2_rowscroll)
255   AM_RANGE(0x20c000, 0x20c7ff) AM_WRITE(SMH_RAM) AM_BASE(&deco16_pf3_rowscroll)
256   AM_RANGE(0x20e000, 0x20e7ff) AM_WRITE(SMH_RAM) AM_BASE(&deco16_pf4_rowscroll)
257
258   AM_RANGE(0x300000, 0x30000f) AM_WRITE(SMH_RAM) AM_BASE(&deco16_pf12_control)
259   AM_RANGE(0x310000, 0x31000f) AM_WRITE(SMH_RAM) AM_BASE(&deco16_pf34_control)
260
261   AM_RANGE(0x320000, 0x320001) AM_WRITE(deco16_priority_w) /* Priority */
209   AM_RANGE(0x320000, 0x320001) AM_READ_PORT("DSW3") AM_WRITE(deco16_priority_w) /* Priority */
262210   AM_RANGE(0x320002, 0x320003) AM_WRITENOP /* ? */
263211   AM_RANGE(0x320004, 0x320005) AM_WRITENOP /* VBL IRQ ack */
264212
265   AM_RANGE(0x340000, 0x3407ff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)
213   AM_RANGE(0x340000, 0x3407ff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)
266214   AM_RANGE(0x350000, 0x350001) AM_WRITE(buffer_spriteram16_w) /* Triggers DMA for spriteram */
267   AM_RANGE(0x360000, 0x3607ff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16_2) AM_SIZE(&spriteram_2_size)
215   AM_RANGE(0x360000, 0x3607ff) AM_RAM AM_BASE(&spriteram16_2) AM_SIZE(&spriteram_2_size)
268216   AM_RANGE(0x370000, 0x370001) AM_WRITE(buffer_spriteram16_2_w) /* Triggers DMA for spriteram */
269217
270   AM_RANGE(0x380000, 0x381fff) AM_WRITE(deco16_buffered_palette_w) AM_BASE(&paletteram16)
218   AM_RANGE(0x380000, 0x381fff) AM_RAM_WRITE(deco16_buffered_palette_w) AM_BASE(&paletteram16)
271219   AM_RANGE(0x390008, 0x390009) AM_WRITE(deco16_palette_dma_w)
272220
273   AM_RANGE(0xfec000, 0xff3fff) AM_WRITE(SMH_RAM)
274   AM_RANGE(0xff4000, 0xff47ff) AM_MIRROR(0x800) AM_WRITE(deco16_146_nitroball_prot_w) AM_BASE(&deco16_prot_ram) /* Protection writes */
275   AM_RANGE(0xff8000, 0xffffff) AM_WRITE(SMH_RAM) /* Main ram */
221   AM_RANGE(0xfec000, 0xffffff) AM_RAM
222   AM_RANGE(0xff4000, 0xff47ff) AM_MIRROR(0x800) AM_READWRITE(deco16_146_nitroball_prot_r,deco16_146_nitroball_prot_w) AM_BASE(&deco16_prot_ram) /* Protection device */
276223ADDRESS_MAP_END
277224
278static ADDRESS_MAP_START( schmeisr_readmem, ADDRESS_SPACE_PROGRAM, 16 )
279   AM_RANGE(0x000000, 0x0fffff) AM_READ(SMH_ROM)
280   AM_RANGE(0x280000, 0x2807ff) AM_READ(deco16_104_rohga_prot_r) /* Protection device */
225static ADDRESS_MAP_START( schmeisr_map, ADDRESS_SPACE_PROGRAM, 16 )
226   AM_RANGE(0x000000, 0x0fffff) AM_ROM
227   AM_RANGE(0x200000, 0x20000f) AM_WRITEONLY AM_BASE(&deco16_pf12_control)
228   AM_RANGE(0x240000, 0x24000f) AM_WRITEONLY AM_BASE(&deco16_pf34_control)
229   AM_RANGE(0x280000, 0x2807ff) AM_MIRROR(0x800) AM_READWRITE(deco16_104_rohga_prot_r,deco16_104_rohga_prot_w) AM_BASE(&deco16_prot_ram) /* Protection device */
230
281231   AM_RANGE(0x2c0000, 0x2c0001) AM_READ_PORT("DSW3")
282   AM_RANGE(0x300000, 0x300001) AM_READ_PORT("DSW3")
232   AM_RANGE(0x300000, 0x300001) AM_READ_PORT("DSW3")  AM_WRITE(rohga_buffer_spriteram16_w) /* write 1 for sprite dma */
283233   AM_RANGE(0x310002, 0x310003) AM_READ_PORT("IN1")
284   AM_RANGE(0x321100, 0x321101) AM_READNOP /* Irq ack?  Value not used */
285   AM_RANGE(0x3c0000, 0x3c1fff) AM_READ(SMH_RAM)
286   AM_RANGE(0x3c2000, 0x3c2fff) AM_READ(SMH_RAM)
287   AM_RANGE(0x3c4000, 0x3c4fff) AM_READ(SMH_RAM)
288   AM_RANGE(0x3c6000, 0x3c6fff) AM_READ(SMH_RAM)
289   AM_RANGE(0x3c8000, 0x3c8fff) AM_MIRROR(0x1000) AM_READ(SMH_RAM)
290   AM_RANGE(0x3ca000, 0x3cafff) AM_MIRROR(0x1000) AM_READ(SMH_RAM)
291   AM_RANGE(0x3cc000, 0x3ccfff) AM_MIRROR(0x1000) AM_READ(SMH_RAM)
292   AM_RANGE(0x3ce000, 0x3cefff) AM_MIRROR(0x1000) AM_READ(SMH_RAM)
293   AM_RANGE(0x3d0000, 0x3d07ff) AM_READ(SMH_RAM)
294   AM_RANGE(0x3e0000, 0x3e1fff) AM_MIRROR(0x2000) AM_READ(SMH_RAM)
295   AM_RANGE(0xff0000, 0xff7fff) AM_READ(SMH_RAM)
296ADDRESS_MAP_END
297
298static ADDRESS_MAP_START( schmeisr_writemem, ADDRESS_SPACE_PROGRAM, 16 )
299   AM_RANGE(0x000000, 0x1fffff) AM_WRITE(SMH_ROM)
300   AM_RANGE(0x200000, 0x20000f) AM_WRITE(SMH_RAM) AM_BASE(&deco16_pf12_control)
301   AM_RANGE(0x240000, 0x24000f) AM_WRITE(SMH_RAM) AM_BASE(&deco16_pf34_control)
302   AM_RANGE(0x280000, 0x2807ff) AM_MIRROR(0x800) AM_WRITE(deco16_104_rohga_prot_w) AM_BASE(&deco16_prot_ram) /* Protection writes */
303
304   AM_RANGE(0x300000, 0x300001) AM_WRITE(rohga_buffer_spriteram16_w) /* write 1 for sprite dma */
305234   AM_RANGE(0x310000, 0x310009) AM_WRITENOP /* Palette control? */
306235   AM_RANGE(0x31000a, 0x31000b) AM_WRITE(deco16_palette_dma_w) /* Write 1111 for dma?  (Or any value?) */
307236   AM_RANGE(0x320000, 0x320001) AM_WRITENOP /* ? */
308237   AM_RANGE(0x322000, 0x322001) AM_WRITE(deco16_priority_w)
238   AM_RANGE(0x321100, 0x321101) AM_READNOP /* Irq ack?  Value not used */
309239
310   AM_RANGE(0x3c0000, 0x3c1fff) AM_WRITE(deco16_pf1_data_w) AM_BASE(&deco16_pf1_data)
311   AM_RANGE(0x3c2000, 0x3c2fff) AM_WRITE(deco16_pf2_data_w) AM_BASE(&deco16_pf2_data)
312   AM_RANGE(0x3c4000, 0x3c4fff) AM_WRITE(deco16_pf3_data_w) AM_BASE(&deco16_pf3_data)
313   AM_RANGE(0x3c6000, 0x3c6fff) AM_WRITE(deco16_pf4_data_w) AM_BASE(&deco16_pf4_data)
314   AM_RANGE(0x3c8000, 0x3c8fff) AM_MIRROR(0x1000) AM_WRITE(SMH_RAM) AM_BASE(&deco16_pf1_rowscroll)
315   AM_RANGE(0x3ca000, 0x3cafff) AM_MIRROR(0x1000) AM_WRITE(SMH_RAM) AM_BASE(&deco16_pf2_rowscroll)
316   AM_RANGE(0x3cc000, 0x3ccfff) AM_MIRROR(0x1000) AM_WRITE(SMH_RAM) AM_BASE(&deco16_pf3_rowscroll)
317   AM_RANGE(0x3ce000, 0x3cefff) AM_MIRROR(0x1000) AM_WRITE(SMH_RAM) AM_BASE(&deco16_pf4_rowscroll)
318   AM_RANGE(0x3d0000, 0x3d07ff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)
319   AM_RANGE(0x3e0000, 0x3e1fff) AM_MIRROR(0x2000) AM_WRITE(deco16_buffered_palette_w) AM_BASE(&paletteram16)
320   AM_RANGE(0xff0000, 0xff7fff) AM_WRITE(SMH_RAM) /* Main ram */
240   AM_RANGE(0x3c0000, 0x3c1fff) AM_RAM_WRITE(deco16_pf1_data_w) AM_BASE(&deco16_pf1_data)
241   AM_RANGE(0x3c2000, 0x3c2fff) AM_RAM_WRITE(deco16_pf2_data_w) AM_BASE(&deco16_pf2_data)
242   AM_RANGE(0x3c4000, 0x3c4fff) AM_RAM_WRITE(deco16_pf3_data_w) AM_BASE(&deco16_pf3_data)
243   AM_RANGE(0x3c6000, 0x3c6fff) AM_RAM_WRITE(deco16_pf4_data_w) AM_BASE(&deco16_pf4_data)
244   AM_RANGE(0x3c8000, 0x3c8fff) AM_MIRROR(0x1000) AM_RAM AM_BASE(&deco16_pf1_rowscroll)
245   AM_RANGE(0x3ca000, 0x3cafff) AM_MIRROR(0x1000) AM_RAM AM_BASE(&deco16_pf2_rowscroll)
246   AM_RANGE(0x3cc000, 0x3ccfff) AM_MIRROR(0x1000) AM_RAM AM_BASE(&deco16_pf3_rowscroll)
247   AM_RANGE(0x3ce000, 0x3cefff) AM_MIRROR(0x1000) AM_RAM AM_BASE(&deco16_pf4_rowscroll)
248
249   AM_RANGE(0x3d0000, 0x3d07ff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)
250   AM_RANGE(0x3e0000, 0x3e1fff) AM_MIRROR(0x2000) AM_RAM_WRITE(deco16_buffered_palette_w) AM_BASE(&paletteram16)
251   AM_RANGE(0xff0000, 0xff7fff) AM_RAM /* Main ram */
321252ADDRESS_MAP_END
322253
254
323255/******************************************************************************/
324256
325static ADDRESS_MAP_START( sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
326   AM_RANGE(0x000000, 0x00ffff) AM_READ(SMH_ROM)
327   AM_RANGE(0x100000, 0x100001) AM_READNOP
328   AM_RANGE(0x110000, 0x110001) AM_DEVREAD("ym", ym2151_r)
329   AM_RANGE(0x120000, 0x120001) AM_DEVREAD("oki1", okim6295_r)
330   AM_RANGE(0x130000, 0x130001) AM_DEVREAD("oki2", okim6295_r)
257static ADDRESS_MAP_START( rohga_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
258   AM_RANGE(0x000000, 0x00ffff) AM_ROM
259   AM_RANGE(0x100000, 0x100001) AM_NOP
260   AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE("ym", ym2151_r,ym2151_w)
261   AM_RANGE(0x120000, 0x120001) AM_DEVREADWRITE("oki1", okim6295_r,okim6295_w)
262   AM_RANGE(0x130000, 0x130001) AM_DEVREADWRITE("oki2", okim6295_r,okim6295_w)
331263   AM_RANGE(0x140000, 0x140001) AM_READ(soundlatch_r)
332   AM_RANGE(0x1f0000, 0x1f1fff) AM_READ(SMH_BANK8)
333ADDRESS_MAP_END
334
335static ADDRESS_MAP_START( sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
336   AM_RANGE(0x000000, 0x00ffff) AM_WRITE(SMH_ROM)
337   AM_RANGE(0x100000, 0x100001) AM_WRITENOP
338   AM_RANGE(0x110000, 0x110001) AM_DEVWRITE("ym", ym2151_w)
339   AM_RANGE(0x120000, 0x120001) AM_DEVWRITE("oki1", okim6295_w)
340   AM_RANGE(0x130000, 0x130001) AM_DEVWRITE("oki2", okim6295_w)
341   AM_RANGE(0x1f0000, 0x1f1fff) AM_WRITE(SMH_BANK8)
264   AM_RANGE(0x1f0000, 0x1f1fff) AM_RAMBANK(8)
342265   AM_RANGE(0x1fec00, 0x1fec01) AM_WRITE(h6280_timer_w)
343266   AM_RANGE(0x1ff400, 0x1ff403) AM_WRITE(h6280_irq_status_w)
344267ADDRESS_MAP_END
345268
269
346270/**********************************************************************************/
347271
348272static INPUT_PORTS_START( rohga )
r4679r4680
791715
792716static void sound_irq(const device_config *device, int state)
793717{
794   cpu_set_input_line(device->machine->cpu[1],1,state); /* IRQ 2 */
718   cputag_set_input_line(device->machine, "audiocpu", 1, state); /* IRQ 2 */
795719}
796720
797721static WRITE8_DEVICE_HANDLER( sound_bankswitch_w )
r4679r4680
812736
813737   /* basic machine hardware */
814738   MDRV_CPU_ADD("maincpu", M68000, 14000000)
815   MDRV_CPU_PROGRAM_MAP(rohga_readmem,rohga_writemem)
739   MDRV_CPU_PROGRAM_MAP(rohga_map,0)
816740   MDRV_CPU_VBLANK_INT("screen", irq6_line_hold)
817741
818742   MDRV_CPU_ADD("audiocpu", H6280,32220000/4/3) /* verified on pcb (8.050Mhz is XIN on pin 10 of H6280 */
819   MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem)
743   MDRV_CPU_PROGRAM_MAP(rohga_sound_map,0)
820744
821745   /* video hardware */
822746   MDRV_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM)
r4679r4680
857781
858782   /* basic machine hardware */
859783   MDRV_CPU_ADD("maincpu", M68000, 14000000)
860   MDRV_CPU_PROGRAM_MAP(wizdfire_readmem,wizdfire_writemem)
784   MDRV_CPU_PROGRAM_MAP(wizdfire_map,0)
861785   MDRV_CPU_VBLANK_INT("screen", irq6_line_hold)
862786
863787   MDRV_CPU_ADD("audiocpu", H6280,32220000/4/3) /* verified on pcb (8.050Mhz is XIN on pin 10 of H6280 */
864   MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem)
788   MDRV_CPU_PROGRAM_MAP(rohga_sound_map,0)
865789
866790   /* video hardware */
867791   MDRV_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM )
r4679r4680
902826
903827   /* basic machine hardware */
904828   MDRV_CPU_ADD("maincpu", M68000, 14000000)
905   MDRV_CPU_PROGRAM_MAP(nitrobal_readmem,nitrobal_writemem)
829   MDRV_CPU_PROGRAM_MAP(nitrobal_map,0)
906830   MDRV_CPU_VBLANK_INT("screen", irq6_line_hold)
907831
908832   MDRV_CPU_ADD("audiocpu", H6280,32220000/4/3) /* verified on pcb (8.050Mhz is XIN on pin 10 of H6280 */
909   MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem)
833   MDRV_CPU_PROGRAM_MAP(rohga_sound_map,0)
910834
911835   /* video hardware */
912836   MDRV_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM )
r4679r4680
947871
948872   /* basic machine hardware */
949873   MDRV_CPU_ADD("maincpu", M68000, 14000000)
950   MDRV_CPU_PROGRAM_MAP(schmeisr_readmem,schmeisr_writemem)
874   MDRV_CPU_PROGRAM_MAP(schmeisr_map,0)
951875   MDRV_CPU_VBLANK_INT("screen", irq6_line_hold)
952876
953877   MDRV_CPU_ADD("audiocpu", H6280,32220000/4/3) /* verified on pcb (8.050Mhz is XIN on pin 10 of H6280 */
954   MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem)
878   MDRV_CPU_PROGRAM_MAP(rohga_sound_map,0)
955879
956880   /* video hardware */
957881   MDRV_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM)
src/mame/drivers/vball.c
r4679r4680
125125   /* IRQ fires every on every 8th scanline */
126126   if (!(vcount_old & 8) && (vcount & 8))
127127   {
128      cpu_set_input_line(timer->machine->cpu[0], M6502_IRQ_LINE, ASSERT_LINE);
128      cputag_set_input_line(timer->machine, "maincpu", M6502_IRQ_LINE, ASSERT_LINE);
129129   }
130130
131131   /* NMI fires on scanline 248 (VBL) and is latched */
132132   if (vcount == 0xf8)
133133   {
134      cpu_set_input_line(timer->machine->cpu[0], INPUT_LINE_NMI, ASSERT_LINE);
134      cputag_set_input_line(timer->machine, "maincpu", INPUT_LINE_NMI, ASSERT_LINE);
135135   }
136136
137137   /* Save the scroll x register value */
138138   if (scanline < 256)
139139   {
140      vb_scrollx[255 - scanline] = (vb_scrollx_hi + vb_scrollx_lo+4);
140      vb_scrollx[255 - scanline] = (vb_scrollx_hi + vb_scrollx_lo + 4);
141141   }
142142}
143143
144144static WRITE8_HANDLER( vball_irq_ack_w )
145145{
146146   if (offset == 0)
147      cpu_set_input_line(space->machine->cpu[0], INPUT_LINE_NMI, CLEAR_LINE);
147      cputag_set_input_line(space->machine, "maincpu", INPUT_LINE_NMI, CLEAR_LINE);
148148
149149   else
150      cpu_set_input_line(space->machine->cpu[0], M6502_IRQ_LINE, CLEAR_LINE);
150      cputag_set_input_line(space->machine, "maincpu", M6502_IRQ_LINE, CLEAR_LINE);
151151}
152152
153153
r4679r4680
163163static WRITE8_HANDLER( vb_bankswitch_w )
164164{
165165   UINT8 *RAM = memory_region(space->machine, "maincpu");
166   memory_set_bankptr(space->machine, 1,&RAM[ 0x10000 + ( 0x4000 * ( data & 1 ) ) ] );
166   memory_set_bankptr(space->machine, 1, &RAM[0x10000 + (0x4000 * (data & 1))]);
167167
168   if (vball_gfxset != ((data  & 0x20) ^ 0x20)) {
168   if (vball_gfxset != ((data  & 0x20) ^ 0x20))
169   {
169170      vball_gfxset = (data  & 0x20) ^ 0x20;
170171         vb_mark_all_dirty();
171172   }
172   vb_scrolly_hi = (data & 0x40)<<2;
173   vb_scrolly_hi = (data & 0x40) << 2;
173174}
174175
175176/* The sound system comes all but verbatim from Double Dragon */
176static WRITE8_HANDLER( cpu_sound_command_w ) {
177   soundlatch_w( space, offset, data );
178   cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_NMI, PULSE_LINE );
177static WRITE8_HANDLER( cpu_sound_command_w )
178{
179   soundlatch_w(space, offset, data);
180   cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
179181}
180182
181183
r4679r4680
192194{
193195   flip_screen_set(space->machine, ~data&1);
194196   vb_scrollx_hi = (data & 0x02) << 7;
195   vb_bgprombank_w(space->machine, (data >> 2)&0x07);
196   vb_spprombank_w(space->machine, (data >> 5)&0x07);
197   //logerror("%04x: vb_scrollx_hi = %d\n",cpu_get_previouspc(space->cpu), vb_scrollx_hi);
197   vb_bgprombank_w(space->machine, (data >> 2) & 0x07);
198   vb_spprombank_w(space->machine, (data >> 5) & 0x07);
199   //logerror("%04x: vb_scrollx_hi = %d\n", cpu_get_previouspc(space->cpu), vb_scrollx_hi);
198200}
199201
200202static WRITE8_HANDLER(vb_scrollx_lo_w)
201203{
202204   vb_scrollx_lo = data;
203   //logerror("%04x: vb_scrollx_lo =%d\n",cpu_get_previouspc(space->cpu), vb_scrollx_lo);
205   //logerror("%04x: vb_scrollx_lo =%d\n", cpu_get_previouspc(space->cpu), vb_scrollx_lo);
204206}
205207
206208
r4679r4680
405407
406408static void vball_irq_handler(const device_config *device, int irq)
407409{
408   cpu_set_input_line(device->machine->cpu[1], 0 , irq ? ASSERT_LINE : CLEAR_LINE );
410   cputag_set_input_line(device->machine, "audiocpu", 0 , irq ? ASSERT_LINE : CLEAR_LINE);
409411}
410412
411413static const ym2151_interface ym2151_config =
src/mame/drivers/higemaru.c
r4679r4680
3434}
3535
3636
37static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 )
38   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
37static ADDRESS_MAP_START( higemaru_map, ADDRESS_SPACE_PROGRAM, 8 )
38   AM_RANGE(0x0000, 0x7fff) AM_ROM
3939   AM_RANGE(0xc000, 0xc000) AM_READ_PORT("P1")
4040   AM_RANGE(0xc001, 0xc001) AM_READ_PORT("P2")
4141   AM_RANGE(0xc002, 0xc002) AM_READ_PORT("SYSTEM")
4242   AM_RANGE(0xc003, 0xc003) AM_READ_PORT("DSW1")
4343   AM_RANGE(0xc004, 0xc004) AM_READ_PORT("DSW2")
44   AM_RANGE(0xd000, 0xd7ff) AM_READ(SMH_RAM)
45   AM_RANGE(0xe000, 0xefff) AM_READ(SMH_RAM)
46ADDRESS_MAP_END
47
48static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 )
49   AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM)
5044   AM_RANGE(0xc800, 0xc800) AM_WRITE(higemaru_c800_w)
5145   AM_RANGE(0xc801, 0xc802) AM_DEVWRITE("ay1", ay8910_address_data_w)
5246   AM_RANGE(0xc803, 0xc804) AM_DEVWRITE("ay2", ay8910_address_data_w)
53   AM_RANGE(0xd000, 0xd3ff) AM_WRITE(higemaru_videoram_w) AM_BASE(&videoram)
54   AM_RANGE(0xd400, 0xd7ff) AM_WRITE(higemaru_colorram_w) AM_BASE(&colorram)
55   AM_RANGE(0xd880, 0xd9ff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
56   AM_RANGE(0xe000, 0xefff) AM_WRITE(SMH_RAM)
47   AM_RANGE(0xd000, 0xd3ff) AM_RAM_WRITE(higemaru_videoram_w) AM_BASE(&videoram)
48   AM_RANGE(0xd400, 0xd7ff) AM_RAM_WRITE(higemaru_colorram_w) AM_BASE(&colorram)
49   AM_RANGE(0xd880, 0xd9ff) AM_RAM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
50   AM_RANGE(0xe000, 0xefff) AM_RAM
5751ADDRESS_MAP_END
5852
5953
r4679r4680
173167
174168   /* basic machine hardware */
175169   MDRV_CPU_ADD("maincpu", Z80, XTAL_12MHz/3)   /* 4 MHz? Sharp LH0080A Z80A-CPU-D */
176   MDRV_CPU_PROGRAM_MAP(readmem,writemem)
170   MDRV_CPU_PROGRAM_MAP(higemaru_map,0)
177171   MDRV_CPU_VBLANK_INT_HACK(higemaru_interrupt,2)
178172
179173   /* video hardware */
src/mame/drivers/plygonet.c
r4679r4680
581581
582582static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 )
583583   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
584   AM_RANGE(0x8000, 0xbfff) AM_READ(SMH_BANK2)
584   AM_RANGE(0x8000, 0xbfff) AM_READ(SMH_BANK(2))
585585   AM_RANGE(0x0000, 0xbfff) AM_WRITENOP
586586   AM_RANGE(0xc000, 0xdfff) AM_RAM
587587   AM_RANGE(0xe000, 0xe22f) AM_DEVREADWRITE("konami1", k054539_r, k054539_w)
r4679r4680
709709   reset_sound_region(machine);
710710
711711   /* Allocate space for the dsp56k banking */
712   dsp56k_bank00_ram    = auto_malloc(2 * 8 * dsp56k_bank00_size        * sizeof(UINT16));      /* 2 bank sets, 8 potential banks each */
713   dsp56k_bank01_ram    = auto_malloc(2 * 8 * dsp56k_bank01_size        * sizeof(UINT16));
714   dsp56k_bank02_ram    = auto_malloc(2 * 8 * dsp56k_bank02_size        * sizeof(UINT16));
715   dsp56k_shared_ram_16 = auto_malloc(2 * 8 * dsp56k_shared_ram_16_size * sizeof(UINT16));
716   dsp56k_bank04_ram    = auto_malloc(2 * 8 * dsp56k_bank04_size        * sizeof(UINT16));
712   dsp56k_bank00_ram    = auto_alloc_array_clear(machine, UINT16, 2 * 8 * dsp56k_bank00_size);      /* 2 bank sets, 8 potential banks each */
713   dsp56k_bank01_ram    = auto_alloc_array_clear(machine, UINT16, 2 * 8 * dsp56k_bank01_size);
714   dsp56k_bank02_ram    = auto_alloc_array_clear(machine, UINT16, 2 * 8 * dsp56k_bank02_size);
715   dsp56k_shared_ram_16 = auto_alloc_array_clear(machine, UINT16, 2 * 8 * dsp56k_shared_ram_16_size);
716   dsp56k_bank04_ram    = auto_alloc_array_clear(machine, UINT16, 2 * 8 * dsp56k_bank04_size);
717717
718   /* Clear the newly-allocated memory */
719   memset(dsp56k_bank00_ram,    0, 2 * 8 * dsp56k_bank00_size        * sizeof(UINT16));
720   memset(dsp56k_bank01_ram,    0, 2 * 8 * dsp56k_bank01_size        * sizeof(UINT16));
721   memset(dsp56k_bank02_ram,    0, 2 * 8 * dsp56k_bank02_size        * sizeof(UINT16));
722   memset(dsp56k_shared_ram_16, 0, 2 * 8 * dsp56k_shared_ram_16_size * sizeof(UINT16));
723   memset(dsp56k_bank04_ram,    0, 2 * 8 * dsp56k_bank04_size        * sizeof(UINT16));
724
725718   /* The dsp56k occasionally executes out of mapped memory */
726   dsp56k_update_handler = memory_set_direct_update_handler(cpu_get_address_space(machine->cpu[1], ADDRESS_SPACE_PROGRAM), plygonet_dsp56k_direct_handler);
719   dsp56k_update_handler = memory_set_direct_update_handler(cputag_get_address_space(machine, "dsp", ADDRESS_SPACE_PROGRAM), plygonet_dsp56k_direct_handler);
727720}
728721
729722ROM_START( plygonet )
src/mame/drivers/batman.c
r4679r4680
4343
4444static void update_interrupts(running_machine *machine)
4545{
46   cpu_set_input_line(machine->cpu[0], 4, atarigen_scanline_int_state ? ASSERT_LINE : CLEAR_LINE);
47   cpu_set_input_line(machine->cpu[0], 6, atarigen_sound_int_state ? ASSERT_LINE : CLEAR_LINE);
46   cputag_set_input_line(machine, "maincpu", 4, atarigen_scanline_int_state ? ASSERT_LINE : CLEAR_LINE);
47   cputag_set_input_line(machine, "maincpu", 6, atarigen_sound_int_state ? ASSERT_LINE : CLEAR_LINE);
4848}
4949
5050
r4679r4680
103103
104104   /* bit 4 is connected to the /RESET pin on the 6502 */
105105   if (latch_data & 0x0010)
106      cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_RESET, CLEAR_LINE);
106      cputag_set_input_line(space->machine, "jsa", INPUT_LINE_RESET, CLEAR_LINE);
107107   else
108      cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_RESET, ASSERT_LINE);
108      cputag_set_input_line(space->machine, "jsa", INPUT_LINE_RESET, ASSERT_LINE);
109109
110110   /* alpha bank is selected by the upper 4 bits */
111111   if ((oldword ^ latch_data) & 0x7000)
src/mame/drivers/naomi.c
r4679r4680
687687         UINT8 *dat;
688688         UINT8* jvseeprom_default = NULL;
689689
690         dat = eeprom_get_data_pointer(&length, &size);
690         dat = (UINT8 *)eeprom_get_data_pointer(&length, &size);
691691         memset(dat, 0, length * size);
692692
693693         // mainboard eeprom?
r4679r4680
858858   AM_RANGE(0x08000000, 0x0bffffff) AM_NOP // 'Unassigned'
859859
860860   /* Area 3 */
861   AM_RANGE(0x0c000000, 0x0cffffff) AM_RAM AM_BASE(&naomi_ram64) AM_SHARE(4)
862   AM_RANGE(0x0d000000, 0x0dffffff) AM_RAM AM_SHARE(5)// extra ram on Naomi (mirror on DC)
863   AM_RANGE(0x0e000000, 0x0effffff) AM_RAM AM_SHARE(4)// mirror
864   AM_RANGE(0x0f000000, 0x0fffffff) AM_RAM AM_SHARE(5)// mirror
861   AM_RANGE(0x0c000000, 0x0dffffff) AM_RAM AM_BASE(&naomi_ram64) AM_SHARE(4)
862   AM_RANGE(0x0e000000, 0x0fffffff) AM_RAM AM_SHARE(4)// mirror
865863
866   AM_RANGE(0x8c000000, 0x8cffffff) AM_RAM AM_SHARE(4) // RAM access through cache
867   AM_RANGE(0x8d000000, 0x8dffffff) AM_RAM AM_SHARE(5) // RAM access through cache
864   AM_RANGE(0x8c000000, 0x8dffffff) AM_RAM AM_SHARE(4) // RAM access through cache
868865
869866   /* Area 4 */
870867   AM_RANGE(0x10000000, 0x107fffff) AM_WRITE( ta_fifo_poly_w )
r4679r4680
892889
893890
894891/*
892 * Atomiswave address map, identical to Dreamcast
893 */
894
895static ADDRESS_MAP_START( aw_map, ADDRESS_SPACE_PROGRAM, 64 )
896   /* Area 0 */
897   AM_RANGE(0x00000000, 0x001fffff) AM_ROM AM_SHARE(3) AM_REGION("maincpu", 0) // BIOS
898   AM_RANGE(0xa0000000, 0xa01fffff) AM_ROM AM_SHARE(3)  // non cachable access to  0x00000000 - 0x001fffff
899
900   AM_RANGE(0x00200000, 0x00207fff) AM_RAM                                             // bios uses it (battery backed ram ?)
901   AM_RANGE(0x005f6800, 0x005f69ff) AM_READWRITE( dc_sysctrl_r, dc_sysctrl_w )
902   AM_RANGE(0x005f6c00, 0x005f6cff) AM_READWRITE( dc_maple_r, dc_maple_w )
903   AM_RANGE(0x005f7000, 0x005f70ff) AM_DEVREADWRITE("rom_board", naomibd_r, naomibd_w)
904   AM_RANGE(0x005f7400, 0x005f74ff) AM_READWRITE( dc_g1_ctrl_r, dc_g1_ctrl_w )
905   AM_RANGE(0x005f7800, 0x005f78ff) AM_READWRITE( dc_g2_ctrl_r, dc_g2_ctrl_w )
906   AM_RANGE(0x005f7c00, 0x005f7cff) AM_READWRITE( pvr_ctrl_r, pvr_ctrl_w )
907   AM_RANGE(0x005f8000, 0x005f9fff) AM_READWRITE( pvr_ta_r, pvr_ta_w )
908   AM_RANGE(0x00600000, 0x006007ff) AM_READWRITE( dc_modem_r, dc_modem_w )
909   AM_RANGE(0x00700000, 0x00707fff) AM_DEVREADWRITE( "aica", dc_aica_reg_r, dc_aica_reg_w )
910   AM_RANGE(0x00710000, 0x0071000f) AM_READWRITE( dc_rtc_r, dc_rtc_w )
911   AM_RANGE(0x00800000, 0x00ffffff) AM_READWRITE( naomi_arm_r, naomi_arm_w )           // sound RAM (8 MB)
912
913
914   AM_RANGE(0x0103ff00, 0x0103ffff) AM_READWRITE( naomi_unknown1_r, naomi_unknown1_w ) // bios uses it, actual start and end addresses not known
915
916   /* Area 1 */
917   AM_RANGE(0x04000000, 0x04ffffff) AM_RAM   AM_SHARE(2) AM_BASE( &dc_texture_ram )      // texture memory 64 bit access
918   AM_RANGE(0x05000000, 0x05ffffff) AM_RAM AM_SHARE(2)                                 // mirror of texture RAM 32 bit access
919
920   /* Area 2*/
921   AM_RANGE(0x08000000, 0x0bffffff) AM_NOP // 'Unassigned'
922
923   /* Area 3 */
924   AM_RANGE(0x0c000000, 0x0cffffff) AM_RAM AM_BASE(&naomi_ram64) AM_SHARE(4)
925   AM_RANGE(0x0d000000, 0x0dffffff) AM_RAM AM_SHARE(4)// extra ram on Naomi (mirror on DC)
926   AM_RANGE(0x0e000000, 0x0effffff) AM_RAM AM_SHARE(4)// mirror
927   AM_RANGE(0x0f000000, 0x0fffffff) AM_RAM AM_SHARE(4)// mirror
928
929   AM_RANGE(0x8c000000, 0x8cffffff) AM_RAM AM_SHARE(4) // RAM access through cache
930   AM_RANGE(0x8d000000, 0x8dffffff) AM_RAM AM_SHARE(4) // RAM access through cache
931
932   /* Area 4 */
933   AM_RANGE(0x10000000, 0x107fffff) AM_WRITE( ta_fifo_poly_w )
934   AM_RANGE(0x10800000, 0x10ffffff) AM_WRITE( ta_fifo_yuv_w )
935   AM_RANGE(0x11000000, 0x11ffffff) AM_RAM AM_SHARE(2)
936   /*       0x12000000 -0x13ffffff Mirror area of  0x10000000 -0x11ffffff */
937   AM_RANGE(0x12000000, 0x127fffff) AM_WRITE( ta_fifo_poly_w )
938   AM_RANGE(0x12800000, 0x12ffffff) AM_WRITE( ta_fifo_yuv_w )
939   AM_RANGE(0x13000000, 0x13ffffff) AM_RAM AM_SHARE(2)
940
941   /* Area 5 */
942   //AM_RANGE(0x14000000, 0x17ffffff) AM_NOP // MPX Ext.
943
944   /* Area 6 */
945   //AM_RANGE(0x18000000, 0x1bffffff) AM_NOP // Unassigned
946
947   /* Area 7 */
948   //AM_RANGE(0x1c000000, 0x1fffffff) AM_NOP // SH4 Internal
949ADDRESS_MAP_END
950
951/*
895952 * Aica
896953 */
897954static void aica_irq(const device_config *device, int irq)
898955{
899   cpu_set_input_line(device->machine->cpu[1], ARM7_FIRQ_LINE, irq ? ASSERT_LINE : CLEAR_LINE);
956   cputag_set_input_line(device->machine, "soundcpu", ARM7_FIRQ_LINE, irq ? ASSERT_LINE : CLEAR_LINE);
900957}
901958
902959
r4679r4680
9561013   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_COIN2 ) PORT_CHANGED(dc_coin_slots_callback, &dc_coin_counts[1])
9571014INPUT_PORTS_END
9581015
1016/* JVS mahjong panel */
1017static INPUT_PORTS_START( naomi_mp )
1018   PORT_START("IN0")
1019   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_NAME("Service")
1020   PORT_SERVICE_NO_TOGGLE( 0x01, IP_ACTIVE_LOW )
1021   PORT_START("IN1")
1022   PORT_DIPNAME( 0x01, 0x00, "SYSA" )
1023   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
1024   PORT_DIPSETTING(    0x01, DEF_STR( On ) )
1025   PORT_DIPNAME( 0x02, 0x00, DEF_STR( Unknown ) )
1026   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
1027   PORT_DIPSETTING(    0x02, DEF_STR( On ) )
1028   PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) )
1029   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
1030   PORT_DIPSETTING(    0x04, DEF_STR( On ) )
1031   PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) )
1032   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
1033   PORT_DIPSETTING(    0x08, DEF_STR( On ) )
1034   PORT_DIPNAME( 0x10, 0x00, DEF_STR( Unknown ) )
1035   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
1036   PORT_DIPSETTING(    0x10, DEF_STR( On ) )
1037   PORT_DIPNAME( 0x20, 0x00, DEF_STR( Unknown ) )
1038   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
1039   PORT_DIPSETTING(    0x20, DEF_STR( On ) )
1040   PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) )
1041   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
1042   PORT_DIPSETTING(    0x40, DEF_STR( On ) )
1043   PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unknown ) )
1044   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
1045   PORT_DIPSETTING(    0x80, DEF_STR( On ) )
1046   PORT_START("IN2")
1047   PORT_DIPNAME( 0x01, 0x00, "SYSB" )
1048   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
1049   PORT_DIPSETTING(    0x01, DEF_STR( On ) )
1050   PORT_DIPNAME( 0x02, 0x00, DEF_STR( Unknown ) )
1051   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
1052   PORT_DIPSETTING(    0x02, DEF_STR( On ) )
1053   PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) )
1054   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
1055   PORT_DIPSETTING(    0x04, DEF_STR( On ) )
1056   PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) )
1057   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
1058   PORT_DIPSETTING(    0x08, DEF_STR( On ) )
1059   PORT_DIPNAME( 0x10, 0x00, DEF_STR( Unknown ) )
1060   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
1061   PORT_DIPSETTING(    0x10, DEF_STR( On ) )
1062   PORT_DIPNAME( 0x20, 0x00, DEF_STR( Unknown ) )
1063   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
1064   PORT_DIPSETTING(    0x20, DEF_STR( On ) )
1065   PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) )
1066   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
1067   PORT_DIPSETTING(    0x40, DEF_STR( On ) )
1068   PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unknown ) )
1069   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
1070   PORT_DIPSETTING(    0x80, DEF_STR( On ) )
1071   PORT_START("IN3")
1072   PORT_DIPNAME( 0x01, 0x00, "SYSC" )
1073   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
1074   PORT_DIPSETTING(    0x01, DEF_STR( On ) )
1075   PORT_DIPNAME( 0x02, 0x00, DEF_STR( Unknown ) )
1076   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
1077   PORT_DIPSETTING(    0x02, DEF_STR( On ) )
1078   PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) )
1079   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
1080   PORT_DIPSETTING(    0x04, DEF_STR( On ) )
1081   PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) )
1082   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
1083   PORT_DIPSETTING(    0x08, DEF_STR( On ) )
1084   PORT_DIPNAME( 0x10, 0x00, DEF_STR( Unknown ) )
1085   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
1086   PORT_DIPSETTING(    0x10, DEF_STR( On ) )
1087   PORT_DIPNAME( 0x20, 0x00, DEF_STR( Unknown ) )
1088   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
1089   PORT_DIPSETTING(    0x20, DEF_STR( On ) )
1090   PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) )
1091   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
1092   PORT_DIPSETTING(    0x40, DEF_STR( On ) )
1093   PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unknown ) )
1094   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
1095   PORT_DIPSETTING(    0x80, DEF_STR( On ) )
1096   PORT_START("IN4")
1097   PORT_DIPNAME( 0x01, 0x00, "SYSD" )
1098   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
1099   PORT_DIPSETTING(    0x01, DEF_STR( On ) )
1100   PORT_DIPNAME( 0x02, 0x00, DEF_STR( Unknown ) )
1101   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
1102   PORT_DIPSETTING(    0x02, DEF_STR( On ) )
1103   PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) )
1104   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
1105   PORT_DIPSETTING(    0x04, DEF_STR( On ) )
1106   PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) )
1107   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
1108   PORT_DIPSETTING(    0x08, DEF_STR( On ) )
1109   PORT_DIPNAME( 0x10, 0x00, DEF_STR( Unknown ) )
1110   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
1111   PORT_DIPSETTING(    0x10, DEF_STR( On ) )
1112   PORT_DIPNAME( 0x20, 0x00, DEF_STR( Unknown ) )
1113   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
1114   PORT_DIPSETTING(    0x20, DEF_STR( On ) )
1115   PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) )
1116   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
1117   PORT_DIPSETTING(    0x40, DEF_STR( On ) )
1118   PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unknown ) )
1119   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
1120   PORT_DIPSETTING(    0x80, DEF_STR( On ) )
1121
1122   PORT_START("COINS")
1123   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 ) PORT_CHANGED(dc_coin_slots_callback, &dc_coin_counts[0])
1124   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_COIN2 ) PORT_CHANGED(dc_coin_slots_callback, &dc_coin_counts[1])
1125INPUT_PORTS_END
1126
9591127static MACHINE_RESET( naomi )
9601128{
9611129   MACHINE_RESET_CALL(dc);
r4679r4680
10201188   MDRV_NAOMI_DIMM_BOARD_ADD("rom_board", "gdrom", "user1", "picreturn")
10211189MACHINE_DRIVER_END
10221190
1191/*
1192 * Naomi 2
1193 */
1194
1195// ...
1196
1197/*
1198 * Naomi 2 GD-Rom
1199 */
1200
1201// ...
1202
1203/*
1204 * Atomiswave
1205 */
1206
1207static MACHINE_DRIVER_START( aw )
1208   MDRV_IMPORT_FROM(naomi)
1209   MDRV_CPU_MODIFY("maincpu")
1210   MDRV_CPU_PROGRAM_MAP(aw_map,0)
1211MACHINE_DRIVER_END
1212
10231213#define ROM_LOAD16_WORD_SWAP_BIOS(bios,name,offset,length,hash) \
10241214      ROMX_LOAD(name, offset, length, hash, ROM_GROUPWORD | ROM_BIOS(bios+1)) /* Note '+1' */
10251215
r4679r4680
12501440ROM_END
12511441
12521442
1253ROM_START( fotns )
1254   ROM_REGION( 0x200000, "maincpu", 0)
1255   AW_BIOS
1443/**********************************************
1444 *
1445 * Naomi Cart ROM defines
1446 *
1447 *********************************************/
12561448
1257   ROM_REGION( 0x8000000, "user1", ROMREGION_ERASE)
1258   ROM_LOAD("ax1901p01.ic18", 0x0000000, 0x0800000,  CRC(a06998b0) SHA1(d617691db5170f6db176e40fc732966d523fd8cf) )
1259   ROM_LOAD("ax1901m01.ic11", 0x1000000, 0x1000000,  CRC(ff5a1642) SHA1(49cefcce173f9a811fe9c0c07bee53aeba2bc3a8) )
1260   ROM_LOAD("ax1902m01.ic12", 0x2000000, 0x1000000,  CRC(d9aae8a9) SHA1(bf87034088be0847b6e297b7665e0ea4d8cba631) )
1261   ROM_LOAD("ax1903m01.ic13", 0x3000000, 0x1000000,  CRC(1711b23d) SHA1(ab628b2ec678839c75245e245297818ef1592d3b) )
1262   ROM_LOAD("ax1904m01.ic14", 0x4000000, 0x1000000,  CRC(443bfb26) SHA1(6f7751afa0ca55dd0679758b27bed92b31c1b050) )
1263   ROM_LOAD("ax1905m01.ic15", 0x5000000, 0x1000000,  CRC(eb1cada0) SHA1(459d21d622c72606f1d3095e8a25b6c4adccf8ab) )
1264   ROM_LOAD("ax1906m01.ic16", 0x6000000, 0x1000000,  CRC(fe6da168) SHA1(d4ab6443383469bb5a4337005de917627a2e21cc) )
1265   ROM_LOAD("ax1907m01.ic17", 0x7000000, 0x1000000,  CRC(9d3a0520) SHA1(78583fd171b34439f77a04a97ebe3c9d1bab61cc) )
1266ROM_END
12671449
1268ROM_START( demofist )
1269   ROM_REGION( 0x200000, "maincpu", 0)
1270   AW_BIOS
1271
1272   ROM_REGION( 0x8000000, "user1", ROMREGION_ERASE)
1273   ROM_LOAD("ax0601p01.ic18", 0x0000000, 0x0800000,  CRC(0efb38ad) SHA1(9400e37efe3e936474d74400ebdf28ad0869b67b) )
1274   /* incomplete, other rom names / sizes are.. ? */
1275ROM_END
1276
1277
1278
1279struct AtomiswaveKey
1280{
1281    int P0[16];
1282    int P1[16];
1283    int S0[32];
1284    int S1[16];
1285    int S2[16];
1286    int S3[8];
1287};
1288
1289static const struct AtomiswaveKey fotns_key = {
1290    {0,2,7,11,12,1,5,6,15,4,8,9,14,3,10,13},
1291    {12,8,3,7,0,15,1,11,6,10,4,14,9,5,13,2},
1292    {4,1,10,16,9,25,26,31,13,0,14,15,24,6,30,18,7,20,5,12,22,17,27,3,8,11,21,29,19,23,28,2},
1293    {3,2,11,14,10,13,12,0,7,6,8,15,5,1,4,9},
1294    {10,3,6,12,7,11,4,14,0,2,8,1,15,13,5,9},
1295    {7,1,6,5,4,2,0,3}
1296};
1297
1298static const struct AtomiswaveKey df_key = {
1299    {1,4,5,6,9,7,10,11,13,0,8,12,14,2,3,15},
1300    {12,0,3,8,7,6,15,11,1,4,14,10,9,5,13,2},
1301    {9,27,15,6,28,30,7,12,21,0,1,25,22,3,16,29,13,4,24,20,2,5,23,19,18,10,8,14,17,11,31,26},
1302    {5,13,4,0,8,12,14,7,2,11,3,10,6,1,15,9},
1303    {11,6,2,9,12,1,7,4,10,0,13,3,8,14,15,5},
1304    {1,6,4,3,5,2,7,0}
1305};
1306
1307
1308static UINT16 atomiswave_decrypt(UINT16 cipherText, int address, const struct AtomiswaveKey* key)
1309{
1310    int b0,b1,b2,b3;
1311    int aux;
1312
1313    aux = BITSWAP16(cipherText,
1314                    key->P0[15],key->P0[14],key->P0[13],key->P0[12],key->P0[11],key->P0[10],key->P0[9],key->P0[8],
1315                    key->P0[7],key->P0[6],key->P0[5],key->P0[4],key->P0[3],key->P0[2],key->P0[1],key->P0[0]);
1316    aux = aux ^ BITSWAP16(address/2,
1317                          key->P1[15],key->P1[14],key->P1[13],key->P1[12],key->P1[11],key->P1[10],key->P1[9],key->P1[8],
1318                          key->P1[7],key->P1[6],key->P1[5],key->P1[4],key->P1[3],key->P1[2],key->P1[1],key->P1[0]);
1319
1320    b0 = aux&0x1f;
1321    b1 = (aux>>5)&0xf;
1322    b2 = (aux>>9)&0xf;
1323    b3 = aux>>13;
1324
1325    b0 = key->S0[b0];
1326    b1 = key->S1[b1];
1327    b2 = key->S2[b2];
1328    b3 = key->S3[b3];
1329
1330    return (b3<<13)|(b2<<9)|(b1<<5)|b0;
1331}
1332
1333
1334static DRIVER_INIT(fotns)
1335{
1336     int i;
1337   UINT16 *src = (UINT16 *)(memory_region(machine, "user1"));
1338
1339   long rom_size = memory_region_length(machine, "user1");
1340
1341   for(i=0; i<rom_size/2; i++)
1342   {
1343      src[i] = atomiswave_decrypt(src[i], i*2, &fotns_key);
1344   }
1345
1346#if 0
1347   {
1348      FILE *fp;
1349      const char *gamename = machine->gamedrv->name;
1350      char filename[256];
1351      sprintf(filename, "%s.dump", gamename);
1352
1353      fp=fopen(filename, "w+b");
1354      if (fp)
1355      {
1356         fwrite(src, rom_size, 1, fp);
1357         fclose(fp);
1358      }
1359   }
1360#endif
1361}
1362
1363
1364
1365static DRIVER_INIT(demofist)
1366{
1367     int i;
1368   UINT16 *src = (UINT16 *)(memory_region(machine, "user1"));
1369
1370   long rom_size = memory_region_length(machine, "user1");
1371
1372   for(i=0; i<rom_size/2; i++)
1373   {
1374      src[i] = atomiswave_decrypt(src[i], i*2, &df_key);
1375   }
1376
1377#if 0
1378   {
1379      FILE *fp;
1380      const char *gamename = machine->gamedrv->name;
1381      char filename[256];
1382      sprintf(filename, "%s.dump", gamename);
1383
1384      fp=fopen(filename, "w+b");
1385      if (fp)
1386      {
1387         fwrite(src, rom_size, 1, fp);
1388         fclose(fp);
1389      }
1390   }
1391#endif
1392}
1393
1394
1395
13961450/* Info above each set is automatically generated from the IC22 rom and may not be accurate */
13971451
13981452/*
r4679r4680
19191973ROM_END
19201974
19211975/*
1976
19221977SYSTEMID: NAOMI
1978JAP: F355 CHALLENGE JAPAN
1979USA: F355 CHALLENGE USA
1980EXP: F355 CHALLENGE EXPORT
1981
1982*/
1983
1984ROM_START( f355 )
1985   ROM_REGION( 0x200000, "maincpu", 0)
1986   F355_BIOS
1987//  NAOMI_BIOS
1988
1989   ROM_REGION( 0xb000000, "user1", ROMREGION_ERASEFF)
1990   ROM_LOAD("epr-21902.ic22",0x0000000, 0x0400000, CRC(04e8acec) SHA1(82e20f99876b13b77c0393ef545316f9eeb2c29c) )
1991
1992   ROM_LOAD("mpr-21881.ic1", 0x0800000, 0x0800000, CRC(00bf0d58) SHA1(cf2c58168501c77318e946a4a4d4663993a7913c) )
1993   ROM_LOAD("mpr-21882.ic2", 0x1000000, 0x0800000, CRC(f87923cd) SHA1(71de4f550e507c9e967331c4a17349df064608ea) )
1994   ROM_LOAD("mpr-21883.ic3", 0x1800000, 0x0800000, CRC(8c8280b8) SHA1(1a7003f4111ed9715b9ef0b13b0e9ace6a6f5434) )
1995   ROM_LOAD("mpr-21884.ic4", 0x2000000, 0x0800000, CRC(7bfa2f9a) SHA1(5796291b14ab25f8fed8d4af43558c7294d49e27) )
1996   ROM_LOAD("mpr-21885.ic5", 0x2800000, 0x0800000, CRC(5a999e6c) SHA1(7a60fe7d2f234c5d9c02ba403422e3a3de5a86ba) )
1997   ROM_LOAD("mpr-21886.ic6", 0x3000000, 0x0800000, CRC(dee42cfb) SHA1(437257e035e1b9cfbc3a0c15b24ef1aac4f2fbcb) )
1998   ROM_LOAD("mpr-21887.ic7", 0x3800000, 0x0800000, CRC(fdcc0334) SHA1(3e3d2094a082f3f2dac5ffe5a7e26cf9e61a279b) )
1999   ROM_LOAD("mpr-21888.ic8", 0x4000000, 0x0800000, CRC(0c717590) SHA1(d304351b07145252816afc9dd82587a1731f665d) )
2000   ROM_LOAD("mpr-21889.ic9", 0x4800000, 0x0800000, CRC(e8935135) SHA1(609788d5adf976d5313b3fca02ebc2f3c5e2758b) )
2001   ROM_LOAD("mpr-21890.ic10",0x5000000, 0x0800000, CRC(aeb9d086) SHA1(22f7d2c09718bf3acb910b5950b0601adad859a2) )
2002   ROM_LOAD("mpr-21891.ic11",0x5800000, 0x0800000, CRC(16d07b04) SHA1(6f222e226e63e30a73649735349c1928c37e011b) )
2003   ROM_LOAD("mpr-21892.ic12",0x6000000, 0x0800000, CRC(2d91eed2) SHA1(f3cda9776c800ac11e13b6914d59edb11f3e116b) )
2004   ROM_LOAD("mpr-21893.ic13",0x6800000, 0x0800000, CRC(e55ef69b) SHA1(fa62f8034728751477effcfecff2bc4cdc982b28) )
2005   ROM_LOAD("mpr-21894.ic14",0x7000000, 0x0800000, CRC(f1acfaea) SHA1(2684f79c6b7595075df41d1f398f228b4aedab16) )
2006   ROM_LOAD("mpr-21895.ic15",0x7800000, 0x0800000, CRC(98368844) SHA1(331f87def4f82ceb1bf74b16709ef61dfcda1758) )
2007   ROM_LOAD("mpr-21896.ic16",0x8000000, 0x0800000, CRC(4bc2ab68) SHA1(3a6d6b7599ca0f2c63cdbc3f5916e548bf3697c7) )
2008   ROM_LOAD("mpr-21897.ic17",0x8800000, 0x0800000, CRC(4ef4448d) SHA1(475021aec754d4526aff77776c8d2abce2b23199) )
2009   ROM_LOAD("mpr-21898.ic18",0x9000000, 0x0800000, CRC(cacea996) SHA1(df2b7ce00d8d6171806f676966f5f45d7fb76431) )
2010   ROM_LOAD("mpr-21899.ic19",0x9800000, 0x0800000, CRC(14a4b87d) SHA1(33177dea88c6aec31e2c16c8d0d3f29c7ea772c5) )
2011   ROM_LOAD("mpr-21900.ic20",0xa000000, 0x0800000, CRC(81901130) SHA1(1573b5c4360e29ba1a4b4901af49d5399fa1e635) )
2012   ROM_LOAD("mpr-21901.ic21",0xa800000, 0x0800000, BAD_DUMP CRC(55dcbd6d) SHA1(9fec353f9e58016090e177f899a799e2e8fc7c9f) ) // returns bad in Naomi test mode
2013ROM_END
2014
2015/*
2016SYSTEMID: NAOMI
19232017JAP: GIANT GRAM
19242018USA: GIANT GRAM
19252019EXP: GIANT GRAM
r4679r4680
31663260/* 0044C */ GAME( 2001, csmasho,  csmash,   naomi,    naomi,    naomi, ROT0, "Sega",            "Cosmic Smash (JPN, USA, EXP, KOR, AUS) (original)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
31673261
31683262/* 841-xxxxx ("Licensed by Sega" games)*/
3169/* 0001C */ GAME( 1999, pstone,   naomi,    naomi,    naomi,    naomi, ROT0, "Capcom",          "Power Stone (JPN, USA, EUR, ASI, AUS)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
3170/* 0002C */ GAME( 1999, suchie3,  naomi,    naomi,    naomi,    naomi, ROT0, "Jaleco",          "Idol Janshi Suchie-Pai 3 (JPN)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
3171/* 0003C */ GAME( 1999, doa2,     naomi,    naomi,    naomi,    naomi, ROT0, "Tecmo",           "Dead or Alive 2 (JPN, USA, EXP, KOR, AUS)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
3172/* 0003C */ GAME( 2000, doa2m,    doa2,     naomi,    naomi,    naomi, ROT0, "Tecmo",           "Dead or Alive 2 Millennium (JPN, USA, EXP, KOR, AUS)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
3173/* 0004C */ GAME( 1999, shangril, naomi,    naomi,    naomi,    naomi, ROT0, "Marvelous Ent.",  "Dengen Tenshi Taisen Janshi Shangri-la (JPN, USA, EXP, KOR, AUS)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
3174/* 0005C */ GAME( 1999, spawn,    naomi,    naomi,    naomi,    naomi, ROT0, "Capcom",          "Spawn (JPN, USA, EUR, ASI, AUS)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
3175/* 0007C */ GAME( 2000, mvsc2,    naomi,    naomi,    naomi,    naomi, ROT0, "Capcom",          "Marvel vs. Capcom 2 (JPN, USA, EUR, ASI, AUS)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
3176/* 0008C */ GAME( 2000, pstone2,  naomi,    naomi,    naomi,    naomi, ROT0, "Capcom",          "Power Stone 2 (JPN, USA, EUR, ASI, AUS)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
3177/* 0012C */ GAME( 2000, cspike,   naomi,    naomi,    naomi,    naomi, ROT0, "Psikyo / Capcom", "Gun Spike (JPN) / Cannon Spike (USA, EXP, KOR, AUS)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
3178/* 0013C */ GAME( 2000, ggx,      naomi,    naomi,    naomi,    naomi, ROT0, "Arc System Works","Guilty Gear X (JPN)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
3179/* 0016  */ GAME( 2000, deathcox, naomi,    naomi,    naomi,    naomi, ROT0, "Ecole",           "Death Crimson OX (JPN, USA, EXP, KOR, AUS)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
3180/* xxxx  */ GAME( 2001, hmgeo,    naomi,    naomi,    naomi,    naomi, ROT0, "Capcom",          "Heavy Metal Geomatrix (JPN, USA, EUR, ASI, AUS)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
3263/* 0001C */ GAME( 1999, pstone,   naomi,    naomi,    naomi,    naomi,    ROT0, "Capcom",          "Power Stone (JPN, USA, EUR, ASI, AUS)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
3264/* 0002C */ GAME( 1999, suchie3,  naomi,    naomi,    naomi_mp, naomi_mp, ROT0, "Jaleco",          "Idol Janshi Suchie-Pai 3 (JPN)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
3265/* 0003C */ GAME( 1999, doa2,     naomi,    naomi,    naomi,    naomi,    ROT0, "Tecmo",           "Dead or Alive 2 (JPN, USA, EXP, KOR, AUS)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
3266/* 0003C */ GAME( 2000, doa2m,    doa2,     naomi,    naomi,    naomi,    ROT0, "Tecmo",           "Dead or Alive 2 Millennium (JPN, USA, EXP, KOR, AUS)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
3267/* 0004C */ GAME( 1999, shangril, naomi,    naomi,    naomi_mp, naomi_mp, ROT0, "Marvelous Ent.",  "Dengen Tenshi Taisen Janshi Shangri-la (JPN, USA, EXP, KOR, AUS)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
3268/* 0005C */ GAME( 1999, spawn,    naomi,    naomi,    naomi,    naomi,    ROT0, "Capcom",          "Spawn (JPN, USA, EUR, ASI, AUS)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
3269/* 0007C */ GAME( 2000, mvsc2,    naomi,    naomi,    naomi,    naomi,    ROT0, "Capcom",          "Marvel vs. Capcom 2 (JPN, USA, EUR, ASI, AUS)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
3270/* 0008C */ GAME( 2000, pstone2,  naomi,    naomi,    naomi,    naomi,    ROT0, "Capcom",          "Power Stone 2 (JPN, USA, EUR, ASI, AUS)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
3271/* 0012C */ GAME( 2000, cspike,   naomi,    naomi,    naomi,    naomi,    ROT0, "Psikyo / Capcom", "Gun Spike (JPN) / Cannon Spike (USA, EXP, KOR, AUS)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
3272/* 0013C */ GAME( 2000, ggx,      naomi,    naomi,    naomi,    naomi,    ROT0, "Arc System Works","Guilty Gear X (JPN)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
3273/* 0016  */ GAME( 2000, deathcox, naomi,    naomi,    naomi,    naomi,    ROT0, "Ecole",           "Death Crimson OX (JPN, USA, EXP, KOR, AUS)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
3274/* xxxx  */ GAME( 2001, hmgeo,    naomi,    naomi,    naomi,    naomi,    ROT0, "Capcom",          "Heavy Metal Geomatrix (JPN, USA, EUR, ASI, AUS)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
31813275
31823276/* Incomplete Dumps (just the program rom IC22) */
31833277/* 841-0011C */ GAME( 2000, capsnk,   naomi,    naomi,    naomi,    naomi, ROT0, "Capcom / SNK",    "Capcom Vs. SNK Millennium Fight 2000 (JPN, USA, EXP, KOR, AUS)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
r4679r4680
31883282
31893283/* Games with game specific bios sets */
31903284GAME( 1998, hod2bios, 0,        naomi,    naomi,    0,     ROT0, "Sega",            "Naomi House of the Dead 2 Bios", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING|GAME_IS_BIOS_ROOT )
3285/* HOTD2 isn't dumped */
31913286GAME( 1999, f355bios, 0,        naomi,    naomi,    0,     ROT0, "Sega",            "Naomi Ferrari F355 Challenge Bios", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING|GAME_IS_BIOS_ROOT )
3192/* HOTD2 & F355 aren't dumped */
3287GAME( 1999, f355,     f355bios, naomi,    naomi,    0,     ROT0, "Sega",            "Ferrari F355 Challenge", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
31933288
3289/**********************************************
3290 *
3291 * Naomi GD-ROM defines
3292 *
3293 *********************************************/
31943294
3195
31963295ROM_START( gundmgd )
31973296   NAOMIGD_BIOS
31983297
r4679r4680
40024101
40034102
40044103/* Naomi GD-Rom Sets */
4005GAME( 2001, naomigd,   0,        naomi,    naomi, naomi,   ROT0,   "Sega",             "Naomi GD-ROM Bios", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING|GAME_IS_BIOS_ROOT )
4104GAME( 2001, naomigd,   0,        naomi,    naomi,    naomi,   ROT0,   "Sega",                   "Naomi GD-ROM Bios", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING|GAME_IS_BIOS_ROOT )
40064105
40074106/* GDL-xxxx ("licensed by Sega" games) */
4008GAME( 2001, gundmgd,   naomigd,  naomigd,  naomi, naomi,   ROT0,   "Capcom",           "Mobile Suit Gundam: Federation VS Zeon (GDL-0001)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
4009GAME( 2001, sfz3ugd,   naomigd,  naomigd,  naomi, naomi,   ROT0,   "Capcom",           "Street Fighter Zero 3 Upper (GDL-0002)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
4107GAME( 2001, gundmgd,   naomigd,  naomigd,  naomi,    naomi,   ROT0,   "Capcom",                 "Mobile Suit Gundam: Federation VS Zeon (GDL-0001)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
4108GAME( 2001, sfz3ugd,   naomigd,  naomigd,  naomi,    naomi,   ROT0,   "Capcom",                 "Street Fighter Zero 3 Upper (GDL-0002)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
40104109//GDL-0003
4011GAME( 2001, cvsgd,     naomigd,  naomigd,  naomi, naomi,   ROT0,   "Capcom / SNK",     "Capcom vs SNK Millenium Fight 2000 Pro (GDL-0004)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
4110GAME( 2001, cvsgd,     naomigd,  naomigd,  naomi,    naomi,   ROT0,   "Capcom / SNK",           "Capcom vs SNK Millenium Fight 2000 Pro (GDL-0004)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
40124111//GDL-0005 Doki Doki Idol Star Seeker
4013GAME( 2001, gundmxgd,  naomigd,  naomigd,  naomi, naomi,   ROT0,   "Capcom",           "Mobile Suit Gundam: Federation VS Zeon DX  (GDL-0006)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
4112GAME( 2001, gundmxgd,  naomigd,  naomigd,  naomi,    naomi,   ROT0,   "Capcom",                 "Mobile Suit Gundam: Federation VS Zeon DX  (GDL-0006)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
40144113//GDL-0007 Capcom vs SNK 2
4015GAME( 2001, cvs2gd,    naomigd,  naomigd,  naomi, naomi,    ROT0,   "Capcom / SNK",     "Capcom vs SNK 2 Millionaire Fighting 2001 (Rev A) (GDL-0007A)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
4114GAME( 2001, cvs2gd,    naomigd,  naomigd,  naomi,    naomi,   ROT0,   "Capcom / SNK",           "Capcom vs SNK 2 Millionaire Fighting 2001 (Rev A) (GDL-0007A)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
40164115//GDL-0008 Capcom vs SNK 2 Mark Of The Millenium 2001 (Export)
40174116//GDL-0009
4018GAME( 2001, ikaruga,   naomigd,  naomigd,  naomi, naomi,   ROT270, "Treasure",         "Ikaruga (GDL-0010)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
4019GAME( 2002, ggxx,      naomigd,  naomigd,  naomi, ggxx,      ROT0,   "Arc System Works", "Guilty Gear XX (GDL-0011)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
4117GAME( 2001, ikaruga,   naomigd,  naomigd,  naomi,    naomi,   ROT270, "Treasure",               "Ikaruga (GDL-0010)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
4118GAME( 2002, ggxx,      naomigd,  naomigd,  naomi,    ggxx,    ROT0,   "Arc System Works",       "Guilty Gear XX (GDL-0011)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
40204119//GDL-0012 Cleopatra Fortune Plus
4021GAME( 2002, moeru,     naomigd,  naomigd,  naomi, naomi,   ROT0,   "Altron",         "Moeru Casinyo (GDL-0013)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
4120GAME( 2002, moeru,     naomigd,  naomigd,  naomi,    naomi,   ROT0,   "Altron",                 "Moeru Casinyo (GDL-0013)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
40224121//GDL-0014 Musapey's Choco Marker
4023GAME( 2002, chocomk,   naomigd,  naomigd,  naomi, naomi,   ROT0,   "Ecole Software",   "Musapey's Choco Marker (Rev A) (GDL-0014A)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
4122GAME( 2002, chocomk,   naomigd,  naomigd,  naomi,    naomi,   ROT0,   "Ecole Software",         "Musapey's Choco Marker (Rev A) (GDL-0014A)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
40244123//GDL-0015 Mazan
40254124//GDL-0016 Yonin Uchi Mahjong MJ
4026GAME( 2002, quizqgd,   naomigd,  naomigd,  naomi, naomi,   ROT270, "Amedio (Taito license)", "Quiz Keitai Q mode (GDL-0017)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
4125GAME( 2002, quizqgd,   naomigd,  naomigd,  naomi,    naomi,   ROT270, "Amedio (Taito license)", "Quiz Keitai Q mode (GDL-0017)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
40274126//GDL-0018 Azumanga Daioh Puzzle Bobble
40284127//GDL-0019 Guilty Gear XX #Reload
4029GAME( 2003, ggxxrl,    naomigd,  naomigd,  naomi, ggxxrl,    ROT0,   "Arc System Works", "Guilty Gear XX #Reload (Rev A) (GDL-0019A)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
4030GAME( 200?, tetkiwam,  naomigd,  naomigd,  naomi, naomi,   ROT0,   "Success",          "Tetris Kiwamemichi (GDL-0020)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
4031GAME( 2003, shikgam2,  naomigd,  naomigd,  naomi, naomi,   ROT270, "Alpha System",     "Shikigami No Shiro II / The Castle of Shikigami II (GDL-0021)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
4032GAME( 2003, usagui,    naomigd,  naomigd,  naomi, naomi,   ROT0,   "Warashi",          "Usagui - Yamashiro Mahjong Hen (GDL-0022)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
4128GAME( 2003, ggxxrl,    naomigd,  naomigd,  naomi,    ggxxrl,  ROT0,   "Arc System Works",       "Guilty Gear XX #Reload (Rev A) (GDL-0019A)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
4129GAME( 200?, tetkiwam,  naomigd,  naomigd,  naomi,    naomi,   ROT0,   "Success",                "Tetris Kiwamemichi (GDL-0020)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
4130GAME( 2003, shikgam2,  naomigd,  naomigd,  naomi,    naomi,   ROT270, "Alpha System",           "Shikigami No Shiro II / The Castle of Shikigami II (GDL-0021)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
4131GAME( 2003, usagui,    naomigd,  naomigd,  naomi_mp, naomi_mp,ROT0,   "Warashi / Taito / Mahjong Kobo", "Usagi - Yamashiro Mahjong Hen (GDL-0022)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
40334132//GDL-0023 Border Down
4034GAME( 2004, bdrdown,   naomigd,  naomigd,  naomi, naomi,   ROT0,   "G-Rev",            "Border Down (Rev A) (GDL-0023A)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
4035GAME( 2003, psyvar2,   naomigd,  naomigd,  naomi, naomi,   ROT270, "G-Rev",            "Psyvariar 2 - The Will To Fabricate (GDL-0024)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
4036GAME( 2004, cfield,    naomigd,  naomigd,  naomi, naomi,   ROT0,   "Able",             "Chaos Field (GDL-0025)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
4037GAME( 2004, trizeal,   naomigd,  naomigd,  naomi, naomi,   ROT270, "Taito",            "Trizeal (GDL-0026)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
4133GAME( 2004, bdrdown,   naomigd,  naomigd,  naomi,    naomi,   ROT0,   "G-Rev",                  "Border Down (Rev A) (GDL-0023A)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
4134GAME( 2003, psyvar2,   naomigd,  naomigd,  naomi,    naomi,   ROT270, "G-Rev",                  "Psyvariar 2 - The Will To Fabricate (GDL-0024)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
4135GAME( 2004, cfield,    naomigd,  naomigd,  naomi,    naomi,   ROT0,   "Able",                   "Chaos Field (GDL-0025)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
4136GAME( 2004, trizeal,   naomigd,  naomigd,  naomi,    naomi,   ROT270, "Taito",                  "Trizeal (GDL-0026)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
40384137//GDL-0027 Melty Blood Act Cadenza?
40394138//GDL-0028  Melty Blood Act Cadenza Ver A
40404139//GDL-0028A Melty Blood Act Cadenza Ver A (Rev A)
40414140//GDL-0028B Melty Blood Act Cadenza Ver A (Rev B)
4042GAME( 2005, meltybld,  naomigd,  naomigd,  naomi, naomi,   ROT0,   "Ecole Software",   "Melty Blood Act Cadenza Ver A (Rev C) (GDL-0028C)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
4141GAME( 2005, meltybld,  naomigd,  naomigd,  naomi,    naomi,   ROT0,   "Ecole Software",         "Melty Blood Act Cadenza Ver A (Rev C) (GDL-0028C)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
40434142//GDL-0029
4044GAME( 2005, senko,     naomigd,  naomigd,  naomi, naomi,   ROT0,   "G-Rev",            "Senko No Ronde NEW ver. (Rev A) (GDL-0030A)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
4045GAME( 2005, senkoo,    senko,    naomigd,  naomi, naomi,   ROT0,   "G-Rev",            "Senko No Ronde (GDL-0030)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
4143GAME( 2005, senko,     naomigd,  naomigd,  naomi,    naomi,   ROT0,   "G-Rev",                  "Senko No Ronde NEW ver. (Rev A) (GDL-0030A)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
4144GAME( 2005, senkoo,    senko,    naomigd,  naomi,    naomi,   ROT0,   "G-Rev",                  "Senko No Ronde (GDL-0030)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
40464145//GDL-0031 Super Shanghai 2005
4047GAME( 2005, ss2005,    naomigd,  naomigd,  naomi, naomi,   ROT0,   "Starfish",         "Super Shanghai 2005 (Rev A) (GDL-0031A)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
4048GAME( 2005, radirgy,   naomigd,  naomigd,  naomi, naomi,   ROT270, "Milestone",        "Radirgy (GDL-0032)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
4146GAME( 2005, ss2005,    naomigd,  naomigd,  naomi,    naomi,   ROT0,   "Starfish",               "Super Shanghai 2005 (Rev A) (GDL-0031A)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
4147GAME( 2005, radirgy,   naomigd,  naomigd,  naomi,    naomi,   ROT270, "Milestone",              "Radirgy (GDL-0032)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
40494148//GDL-0033 Guilty Gear XX Slash
4050GAME( 2005, ggxxsla,   naomigd,  naomigd,  naomi, ggxxsla,   ROT0,   "Arc System Works", "Guilty Gear XX Slash (Rev A) (GDL-0033A)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
4051GAME( 2006, kurucham,  naomigd,  naomigd,  naomi, naomi,   ROT0,   "Able",             "Kurukuru Chameleon (GDL-0034)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
4052GAME( 2005, undefeat,  naomigd,  naomigd,  naomi, naomi,   ROT270, "G-Rev",            "Under Defeat (GDL-0035)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
4149GAME( 2005, ggxxsla,   naomigd,  naomigd,  naomi,    ggxxsla, ROT0,   "Arc System Works",       "Guilty Gear XX Slash (Rev A) (GDL-0033A)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
4150GAME( 2006, kurucham,  naomigd,  naomigd,  naomi,    naomi,   ROT0,   "Able",                   "Kurukuru Chameleon (GDL-0034)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
4151GAME( 2005, undefeat,  naomigd,  naomigd,  naomi,    naomi,   ROT270, "G-Rev",                  "Under Defeat (GDL-0035)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
40534152//GDL-0036 Trigger Heart Exelica
4054GAME( 2005, trgheart,  naomigd,  naomigd,  naomi, naomi,   ROT270, "Warashi",          "Trigger Heart Exelica (Rev A) (GDL-0036A)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
4055GAME( 2005, jingystm,  naomigd,  naomigd,  naomi, naomi,   ROT0,   "Atrativa Japan",   "Jingi Storm - The Arcade (GDL-0037)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
4153GAME( 2005, trgheart,  naomigd,  naomigd,  naomi,    naomi,   ROT270, "Warashi",                "Trigger Heart Exelica (Rev A) (GDL-0036A)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
4154GAME( 2005, jingystm,  naomigd,  naomigd,  naomi,    naomi,   ROT0,   "Atrativa Japan",         "Jingi Storm - The Arcade (GDL-0037)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
40564155//GDL-0038 Senko No Ronde Special
4057GAME( 2006, meltyb,    naomigd,  naomigd,  naomi, naomi,   ROT0,   "Ecole Software",   "Melty Blood Act Cadenza Ver B (GDL-0039)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
4058GAME( 2006, meltyba,   meltyb,   naomigd,  naomi, naomi,   ROT0,   "Ecole Software",   "Melty Blood Act Cadenza Ver B (Rev A) (GDL-0039A)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
4059GAME( 2006, karous,    naomigd,  naomigd,  naomi, naomi,   ROT270, "Milestone",        "Karous (GDL-0040)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
4156GAME( 2006, meltyb,    naomigd,  naomigd,  naomi,    naomi,   ROT0,   "Ecole Software",         "Melty Blood Act Cadenza Ver B (GDL-0039)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
4157GAME( 2006, meltyba,   meltyb,   naomigd,  naomi,    naomi,   ROT0,   "Ecole Software",         "Melty Blood Act Cadenza Ver B (Rev A) (GDL-0039A)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
4158GAME( 2006, karous,    naomigd,  naomigd,  naomi,    naomi,   ROT270, "Milestone",              "Karous (GDL-0040)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
40604159//GDL-0041 Guilty Gear XX Accent Core
4061GAME( 2006, takoron,   naomigd,  naomigd,  naomi, naomi,   ROT0,   "Compile",          "Noukone Puzzle Takoron (GDL-0042)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
4160GAME( 2006, takoron,   naomigd,  naomigd,  naomi,    naomi,   ROT0,   "Compile",                "Noukone Puzzle Takoron (GDL-0042)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
40624161
40634162
40644163/* GDS-xxxx (Sega first party games) */
4065GAME( 2001, confmiss,  naomigd,  naomigd,  naomi, naomi,  ROT0, "Sega",          "Confidential Mission (GDS-0001)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
4164GAME( 2001, confmiss,  naomigd,  naomigd,  naomi,    naomi,  ROT0, "Sega",          "Confidential Mission (GDS-0001)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
40664165//GDS-0002 Shakatto Tambourine
4067GAME( 2000, sprtjam,   naomigd,  naomigd,  naomi, naomi,  ROT0, "Sega",          "Sports Jam (GDS-0003)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
4068GAME( 2000, slashout,  naomigd,  naomigd,  naomi, naomi,  ROT0, "Sega",          "Slashout (GDS-0004)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
4069GAME( 2001, spkrbtl,   naomigd,  naomigd,  naomi, naomi,  ROT0, "Sega",          "Spikers Battle (GDS-0005)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
4166GAME( 2000, sprtjam,   naomigd,  naomigd,  naomi,    naomi,  ROT0, "Sega",          "Sports Jam (GDS-0003)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
4167GAME( 2000, slashout,  naomigd,  naomigd,  naomi,    naomi,  ROT0, "Sega",          "Slashout (GDS-0004)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
4168GAME( 2001, spkrbtl,   naomigd,  naomigd,  naomi,    naomi,  ROT0, "Sega",          "Spikers Battle (GDS-0005)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
40704169//GDS-0006 Virtua Striker 3 (NAOMI 2)
40714170//GDS-0007 Shakatto Tambourine Motto Norinori Shinkyoku Tsuika
4072GAME( 2001, monkeyba,  naomigd,  naomigd,  naomi, naomi,  ROT0, "Sega",          "Monkey Ball (GDS-0008)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
4073GAME( 2001, dygolf,    naomigd,  naomigd,  naomi, naomi,  ROT0, "Sega",          "Virtua Golf / Dynamic Golf (GDS-0009)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
4074GAME( 2001, wsbbgd,    naomigd,  naomigd,  naomi, naomi,  ROT0, "Sega",          "World Series Baseball / Super Major League (GDS-0010)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
4075GAME( 2001, vtennisg,  naomigd,  naomigd,  naomi, naomi,  ROT0, "Sega",          "Virtua Tennis (GDS-0011)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
4171GAME( 2001, monkeyba,  naomigd,  naomigd,  naomi,    naomi,  ROT0, "Sega",          "Monkey Ball (GDS-0008)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
4172GAME( 2001, dygolf,    naomigd,  naomigd,  naomi,    naomi,  ROT0, "Sega",          "Virtua Golf / Dynamic Golf (GDS-0009)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
4173GAME( 2001, wsbbgd,    naomigd,  naomigd,  naomi,    naomi,  ROT0, "Sega",          "World Series Baseball / Super Major League (GDS-0010)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
4174GAME( 2001, vtennisg,  naomigd,  naomigd,  naomi,    naomi,  ROT0, "Sega",          "Virtua Tennis (GDS-0011)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
40764175//GDS-0012 Virtua Fighter 4 (NAOMI 2)
40774176//GDS-0013
40784177//GDS-0014 Beach Spikers (NAOMI 2)
40794178//GDS-0015 Virtua Tennis 2 / Power Smash 2
4080GAME( 2001, vtennis2,  naomigd,  naomigd,  naomi, naomi,  ROT0, "Sega",          "Virtua Tennis 2 (Rev A) (GDS-0015A)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
4179GAME( 2001, vtennis2,  naomigd,  naomigd,  naomi,    naomi,  ROT0, "Sega",          "Virtua Tennis 2 (Rev A) (GDS-0015A)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
40814180//GDS-0016 Shakatto Tambourine Cho Powerup Chu
4082GAME( 2001, keyboard,  naomigd,  naomigd,  naomi, naomi,  ROT0, "Sega",          "La Keyboardxyu (GDS-0017)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
4083GAME( 2001, lupinsho,  naomigd,  naomigd,  naomi, naomi,  ROT0, "Sega",          "Lupin The Third - The Shooting (GDS-0018)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
4084GAME( 2002, vathlete,  naomigd,  naomigd,  naomi, naomi,  ROT0, "Sega",          "Virtua Athletics / Virtua Athlete (GDS-0019)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
4181GAME( 2001, keyboard,  naomigd,  naomigd,  naomi,    naomi,  ROT0, "Sega",          "La Keyboardxyu (GDS-0017)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
4182GAME( 2001, lupinsho,  naomigd,  naomigd,  naomi,    naomi,  ROT0, "Sega",          "Lupin The Third - The Shooting (GDS-0018)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
4183GAME( 2002, vathlete,  naomigd,  naomigd,  naomi,    naomi,  ROT0, "Sega",          "Virtua Athletics / Virtua Athlete (GDS-0019)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
40854184//GDS-0020 Initial D Arcade Stage (Japan) (NAOMI 2)
40864185//GDS-0021 Lupin The Third - The Typing
4087GAME( 2002, luptype,   naomigd,  naomigd,  naomi, naomi,  ROT0, "Sega",          "Lupin The Third - The Typing (Rev A) (GDS-0021A)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
4088GAME( 2002, mok,       naomigd,  naomigd,  naomi, naomi,  ROT0, "Sega",          "The Maze of the Kings (GDS-0022)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
4186GAME( 2002, luptype,   naomigd,  naomigd,  naomi,    naomi,  ROT0, "Sega",          "Lupin The Third - The Typing (Rev A) (GDS-0021A)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
4187GAME( 2002, mok,       naomigd,  naomigd,  naomi,    naomi,  ROT0, "Sega",          "The Maze of the Kings (GDS-0022)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
40894188//GDS-0023 Naomi DIMM Firmware Updater
4090GAME( 2001, ngdup23a,  naomigd,  naomigd,  naomi, naomi,  ROT0, "Sega",          "Naomi DIMM Firmware Updater (GDS-0023A)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
4189GAME( 2001, ngdup23a,  naomigd,  naomigd,  naomi,    naomi,  ROT0, "Sega",          "Naomi DIMM Firmware Updater (GDS-0023A)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
40914190//GDS-0023B Naomi DIMM Firmware Updater
4092GAME( 2001, ngdup23c,  naomigd,  naomigd,  naomi, naomi,  ROT0, "Sega",          "Naomi DIMM Firmware Updater (GDS-0023C)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
4191GAME( 2001, ngdup23c,  naomigd,  naomigd,  naomi,    naomi,  ROT0, "Sega",          "Naomi DIMM Firmware Updater (GDS-0023C)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
40934192//GDS-0024 Virtua Fighter 4 Evolution (NAOMI 2)
40944193//GDS-0025 Initial D Arcade Stage (Export) (NAOMI 2)
40954194//GDS-0026 Initial D Arcade Stage Ver. 2 (Japan) (NAOMI 2)
r4679r4680
40974196//GDS-0028
40984197//GDS-0029
40994198//GDS-0030
4100GAME( 2003, puyofev,   naomigd,  naomigd,  naomi, naomi,  ROT0, "Sega",          "Puyo Puyo Fever (GDS-0031)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
4199GAME( 2003, puyofev,   naomigd,  naomigd,  naomi,    naomi,  ROT0, "Sega",          "Puyo Puyo Fever (GDS-0031)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
41014200//GDS-0032 Initial D Arcade Stage Ver. 3 (Japan)
41024201//GDS-0033 Initial D Arcade Stage Ver. 3 (Export)
41034202//GDS-0034
r4679r4680
41064205//GDS-0037? Puyo Puyo Fever (Export)
41074206
41084207
4109/* Naomi 2 & Naomi 2 GD-ROM */
4208/**********************************************
4209 *
4210 * Naomi 2 Cart defines
4211 *
4212 *********************************************/
41104213
41114214ROM_START( vstrik3c )
41124215   NAOMI2_BIOS
41134216
41144217   ROM_REGION( 0xb000000, "user1", ROMREGION_ERASEFF)
41154218   ROM_LOAD("epr-23663.ic22", 0x0000000, 0x0400000, CRC(7007fec7) SHA1(523168f0b218d0bd5c815d65bf0caba2c8468c9d) )
4219   /* TODO: proper rom names */
41164220   ROM_LOAD("ic.1", 0x0800000, 0x0800000, CRC(db8bf632) SHA1(cd0c5c385dc33778eb6477f48a33d31f8461b810) )
41174221   ROM_LOAD("ic.2", 0x1000000, 0x0800000, CRC(f5889f8b) SHA1(540aa6a9adf10d5426ac4962afdc300cc9c5c6ba) )
41184222   ROM_LOAD("ic.3", 0x1800000, 0x0800000, CRC(74e7ef35) SHA1(6b63910fa05f98b31689882d3f7f32ea84fb11e5) )
r4679r4680
41634267   ROM_LOAD("ic.20",0xa000000, 0x0800000, NO_DUMP )
41644268ROM_END
41654269
4270/**********************************************
4271 *
4272 * Naomi 2 GD-ROM defines
4273 *
4274 *********************************************/
4275
41664276ROM_START( vstrik3 )
41674277   NAOMI2_BIOS
41684278
r4679r4680
43944504/* Incomplete Dumps (just the program rom IC22) */
43954505GAME( 2001, wldrider, naomi2,  naomi,    naomi,    0,  ROT0,  "Sega",          "Wild Riders (JPN, USA, EXP, KOR, AUS)", GAME_UNEMULATED_PROTECTION|GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
43964506
4397// GDS-xxxx (first party games?)
4507/* GDS-xxxx (Sega first party games) */
43984508GAME( 2001, vstrik3, naomi2,  naomigd,    naomi,    0,  ROT0, "Sega",          "Virtua Striker 3 (GDS-0006)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
43994509GAME( 2001, vf4,     naomi2,  naomigd,    naomi,    0,  ROT0, "Sega",          "Virtua Fighter 4 (GDS-0012)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
44004510GAME( 2001, vf4b,    vf4,     naomigd,    naomi,    0,  ROT0, "Sega",          "Virtua Fighter 4 (Rev B) (GDS-0012B)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
r4679r4680
44104520GAME( 2004, vf4tunedd,vf4tuned,naomigd,   naomi,    0,  ROT0, "Sega",          "Virtua Fighter 4 Final Tuned (Rev D) (GDS-0036D)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
44114521GAME( 2004, vf4tuneda,vf4tuned,naomigd,   naomi,    0,  ROT0, "Sega",          "Virtua Fighter 4 Final Tuned (Rev A) (GDS-0036A)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
44124522
4523/**********************************************
4524 *
4525 * Atomiswave cart defines
4526 *
4527 *********************************************/
44134528
4529struct AtomiswaveKey
4530{
4531    int P0[16];
4532    int P1[16];
4533    int S0[32];
4534    int S1[16];
4535    int S2[16];
4536    int S3[8];
4537};
4538
4539static const struct AtomiswaveKey fotns_key = {
4540    {0,2,7,11,12,1,5,6,15,4,8,9,14,3,10,13},
4541    {12,8,3,7,0,15,1,11,6,10,4,14,9,5,13,2},
4542    {4,1,10,16,9,25,26,31,13,0,14,15,24,6,30,18,7,20,5,12,22,17,27,3,8,11,21,29,19,23,28,2},
4543    {3,2,11,14,10,13,12,0,7,6,8,15,5,1,4,9},
4544    {10,3,6,12,7,11,4,14,0,2,8,1,15,13,5,9},
4545    {7,1,6,5,4,2,0,3}
4546};
4547
4548static const struct AtomiswaveKey df_key = {
4549    {1,4,5,6,9,7,10,11,13,0,8,12,14,2,3,15},
4550    {12,0,3,8,7,6,15,11,1,4,14,10,9,5,13,2},
4551    {9,27,15,6,28,30,7,12,21,0,1,25,22,3,16,29,13,4,24,20,2,5,23,19,18,10,8,14,17,11,31,26},
4552    {5,13,4,0,8,12,14,7,2,11,3,10,6,1,15,9},
4553    {11,6,2,9,12,1,7,4,10,0,13,3,8,14,15,5},
4554    {1,6,4,3,5,2,7,0}
4555};
4556
4557
4558static UINT16 atomiswave_decrypt(UINT16 cipherText, int address, const struct AtomiswaveKey* key)
4559{
4560    int b0,b1,b2,b3;
4561    int aux;
4562
4563    aux = BITSWAP16(cipherText,
4564                    key->P0[15],key->P0[14],key->P0[13],key->P0[12],key->P0[11],key->P0[10],key->P0[9],key->P0[8],
4565                    key->P0[7],key->P0[6],key->P0[5],key->P0[4],key->P0[3],key->P0[2],key->P0[1],key->P0[0]);
4566    aux = aux ^ BITSWAP16(address/2,
4567                          key->P1[15],key->P1[14],key->P1[13],key->P1[12],key->P1[11],key->P1[10],key->P1[9],key->P1[8],
4568                          key->P1[7],key->P1[6],key->P1[5],key->P1[4],key->P1[3],key->P1[2],key->P1[1],key->P1[0]);
4569
4570    b0 = aux&0x1f;
4571    b1 = (aux>>5)&0xf;
4572    b2 = (aux>>9)&0xf;
4573    b3 = aux>>13;
4574
4575    b0 = key->S0[b0];
4576    b1 = key->S1[b1];
4577    b2 = key->S2[b2];
4578    b3 = key->S3[b3];
4579
4580    return (b3<<13)|(b2<<9)|(b1<<5)|b0;
4581}
4582
4583
4584static DRIVER_INIT(fotns)
4585{
4586     int i;
4587   UINT16 *src = (UINT16 *)(memory_region(machine, "user1"));
4588
4589   long rom_size = memory_region_length(machine, "user1");
4590
4591   for(i=0; i<rom_size/2; i++)
4592   {
4593      src[i] = atomiswave_decrypt(src[i], i*2, &fotns_key);
4594   }
4595
4596#if 0
4597   {
4598      FILE *fp;
4599      const char *gamename = machine->gamedrv->name;
4600      char filename[256];
4601      sprintf(filename, "%s.dump", gamename);
4602
4603      fp=fopen(filename, "w+b");
4604      if (fp)
4605      {
4606         fwrite(src, rom_size, 1, fp);
4607         fclose(fp);
4608      }
4609   }
4610#endif
4611}
4612
4613
4614
4615static DRIVER_INIT(demofist)
4616{
4617     int i;
4618   UINT16 *src = (UINT16 *)(memory_region(machine, "user1"));
4619
4620   long rom_size = memory_region_length(machine, "user1");
4621
4622   for(i=0; i<rom_size/2; i++)
4623   {
4624      src[i] = atomiswave_decrypt(src[i], i*2, &df_key);
4625   }
4626
4627#if 0
4628   {
4629      FILE *fp;
4630      const char *gamename = machine->gamedrv->name;
4631      char filename[256];
4632      sprintf(filename, "%s.dump", gamename);
4633
4634      fp=fopen(filename, "w+b");
4635      if (fp)
4636      {
4637         fwrite(src, rom_size, 1, fp);
4638         fclose(fp);
4639      }
4640   }
4641#endif
4642}
4643
4644ROM_START( fotns )
4645   ROM_REGION( 0x200000, "maincpu", 0)
4646   AW_BIOS
4647
4648   ROM_REGION( 0x8000000, "user1", ROMREGION_ERASE)
4649   ROM_LOAD("ax1901p01.ic18", 0x0000000, 0x0800000,  CRC(a06998b0) SHA1(d617691db5170f6db176e40fc732966d523fd8cf) )
4650   ROM_LOAD("ax1901m01.ic11", 0x1000000, 0x1000000,  CRC(ff5a1642) SHA1(49cefcce173f9a811fe9c0c07bee53aeba2bc3a8) )
4651   ROM_LOAD("ax1902m01.ic12", 0x2000000, 0x1000000,  CRC(d9aae8a9) SHA1(bf87034088be0847b6e297b7665e0ea4d8cba631) )
4652   ROM_LOAD("ax1903m01.ic13", 0x3000000, 0x1000000,  CRC(1711b23d) SHA1(ab628b2ec678839c75245e245297818ef1592d3b) )
4653   ROM_LOAD("ax1904m01.ic14", 0x4000000, 0x1000000,  CRC(443bfb26) SHA1(6f7751afa0ca55dd0679758b27bed92b31c1b050) )
4654   ROM_LOAD("ax1905m01.ic15", 0x5000000, 0x1000000,  CRC(eb1cada0) SHA1(459d21d622c72606f1d3095e8a25b6c4adccf8ab) )
4655   ROM_LOAD("ax1906m01.ic16", 0x6000000, 0x1000000,  CRC(fe6da168) SHA1(d4ab6443383469bb5a4337005de917627a2e21cc) )
4656   ROM_LOAD("ax1907m01.ic17", 0x7000000, 0x1000000,  CRC(9d3a0520) SHA1(78583fd171b34439f77a04a97ebe3c9d1bab61cc) )
4657ROM_END
4658
4659ROM_START( demofist )
4660   ROM_REGION( 0x200000, "maincpu", 0)
4661   AW_BIOS
4662
4663   ROM_REGION( 0x8000000, "user1", ROMREGION_ERASE)
4664   ROM_LOAD("ax0601p01.ic18", 0x0000000, 0x0800000,  CRC(0efb38ad) SHA1(9400e37efe3e936474d74400ebdf28ad0869b67b) )
4665   ROM_LOAD("ic11", 0x1000000, 0x1000000,  NO_DUMP )
4666   ROM_LOAD("ic12", 0x2000000, 0x1000000,  NO_DUMP )
4667   ROM_LOAD("ic13", 0x3000000, 0x1000000,  NO_DUMP )
4668   ROM_LOAD("ic14", 0x4000000, 0x1000000,  NO_DUMP )
4669   ROM_LOAD("ic15", 0x5000000, 0x1000000,  NO_DUMP )
4670   ROM_LOAD("ic16", 0x6000000, 0x1000000,  NO_DUMP )
4671   ROM_LOAD("ic17", 0x7000000, 0x1000000,  NO_DUMP )
4672ROM_END
4673
44144674/* Atomiswave */
4415GAME( 2001, awbios,   0,        naomi,    naomi,    0, ROT0, "Sammy",           "Atomiswave Bios", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING|GAME_IS_BIOS_ROOT )
4416GAME( 2005, fotns,    awbios,   naomi,    naomi,    fotns, ROT0, "Arc System Works",           "Fist Of The North Star", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
4675GAME( 2001, awbios,   0,        naomi,    naomi,    0,        ROT0, "Sammy",                           "Atomiswave Bios", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING|GAME_IS_BIOS_ROOT )
4676
4677GAME( 2005, fotns,    awbios,   naomi,    naomi,    fotns,    ROT0, "Arc System Works",                "Fist Of The North Star", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
44174678GAME( 2003, demofist, awbios,   naomi,    naomi,    demofist, ROT0, "Polygon Magic / Dimps",           "Demolish Fist", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING )
src/mame/drivers/nemesis.c
r4679r4680
16011601static void sound_irq(const device_config *device, int state)
16021602{
16031603/* Interrupts _are_ generated, I wonder where they go.. */
1604/*cpu_set_input_line(device->machine->cpu[1],0,HOLD_LINE);*/
1604/*cputag_set_input_line(device->machine, "audiocpu", 0, HOLD_LINE);*/
16051605}
16061606
16071607static const ym2151_interface ym2151_config =
src/mame/drivers/cheekyms.c
r4679r4680
2727{
2828   /* this starts a 556 one-shot timer (and triggers a sound effect) */
2929   if (newval)
30      cpu_set_input_line(field->port->machine->cpu[0], INPUT_LINE_NMI, PULSE_LINE);
30      cputag_set_input_line(field->port->machine, "maincpu", INPUT_LINE_NMI, PULSE_LINE);
3131}
3232
3333
src/mame/drivers/progolf.c
r4679r4680
267267   int A;
268268   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
269269   UINT8 *rom = memory_region(machine, "maincpu");
270   UINT8* decrypted = auto_malloc(0x10000);
270   UINT8* decrypted = auto_alloc_array(machine, UINT8, 0x10000);
271271
272272   memory_set_decrypted_region(space,0x0000,0xffff, decrypted);
273273
src/mame/drivers/magmax.c
r4679r4680
4949   if (ACCESSING_BITS_0_7)
5050   {
5151      sound_latch = (data & 0xff) << 1;
52      cpu_set_input_line(space->machine->cpu[1], 0, ASSERT_LINE);
52      cputag_set_input_line(space->machine, "audiocpu", 0, ASSERT_LINE);
5353   }
5454}
5555
5656static READ8_HANDLER( magmax_sound_irq_ack )
5757{
58   cpu_set_input_line(space->machine->cpu[1], 0, CLEAR_LINE);
58   cputag_set_input_line(space->machine, "audiocpu", 0, CLEAR_LINE);
5959   return 0;
6060}
6161
r4679r4680
210210
211211
212212
213static ADDRESS_MAP_START( magmax_readmem, ADDRESS_SPACE_PROGRAM, 16 )
214   AM_RANGE(0x000000, 0x013fff) AM_READ(SMH_ROM)
215   AM_RANGE(0x018000, 0x018fff) AM_READ(SMH_RAM)
216   AM_RANGE(0x020000, 0x0207ff) AM_READ(SMH_RAM)
217   AM_RANGE(0x028000, 0x0281ff) AM_READ(SMH_RAM)
213static ADDRESS_MAP_START( magmax_map, ADDRESS_SPACE_PROGRAM, 16 )
214   AM_RANGE(0x000000, 0x013fff) AM_ROM
215   AM_RANGE(0x018000, 0x018fff) AM_RAM
216   AM_RANGE(0x020000, 0x0207ff) AM_RAM AM_BASE(&videoram16) AM_SIZE(&videoram_size)
217   AM_RANGE(0x028000, 0x0281ff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)
218218   AM_RANGE(0x030000, 0x030001) AM_READ_PORT("P1")
219219   AM_RANGE(0x030002, 0x030003) AM_READ_PORT("P2")
220220   AM_RANGE(0x030004, 0x030005) AM_READ_PORT("SYSTEM")
221221   AM_RANGE(0x030006, 0x030007) AM_READ_PORT("DSW")
222ADDRESS_MAP_END
223
224static ADDRESS_MAP_START( magmax_writemem, ADDRESS_SPACE_PROGRAM, 16 )
225   AM_RANGE(0x000000, 0x013fff) AM_WRITE(SMH_ROM)
226   AM_RANGE(0x018000, 0x018fff) AM_WRITE(SMH_RAM)
227   AM_RANGE(0x020000, 0x0207ff) AM_WRITE(SMH_RAM) AM_BASE(&videoram16) AM_SIZE(&videoram_size)
228   AM_RANGE(0x028000, 0x0281ff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)
229222   AM_RANGE(0x030010, 0x030011) AM_WRITE(magmax_vreg_w) AM_BASE(&magmax_vreg)
230   AM_RANGE(0x030012, 0x030013) AM_WRITE(SMH_RAM) AM_BASE(&magmax_scroll_x)
231   AM_RANGE(0x030014, 0x030015) AM_WRITE(SMH_RAM) AM_BASE(&magmax_scroll_y)
223   AM_RANGE(0x030012, 0x030013) AM_WRITEONLY AM_BASE(&magmax_scroll_x)
224   AM_RANGE(0x030014, 0x030015) AM_WRITEONLY AM_BASE(&magmax_scroll_y)
232225   AM_RANGE(0x03001c, 0x03001d) AM_WRITE(magmax_sound_w)
233226   AM_RANGE(0x03001e, 0x03001f) AM_WRITENOP   /* IRQ ack */
234227ADDRESS_MAP_END
235228
236static ADDRESS_MAP_START( magmax_soundreadmem, ADDRESS_SPACE_PROGRAM, 8 )
237   AM_RANGE(0x0000, 0x3fff) AM_READ(SMH_ROM)
229static ADDRESS_MAP_START( magmax_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
230   AM_RANGE(0x0000, 0x3fff) AM_ROM
238231   AM_RANGE(0x4000, 0x4000) AM_READ(magmax_sound_irq_ack)
239   AM_RANGE(0x6000, 0x67ff) AM_READ(SMH_RAM)
232   AM_RANGE(0x6000, 0x67ff) AM_RAM
240233ADDRESS_MAP_END
241234
242static ADDRESS_MAP_START( magmax_soundwritemem, ADDRESS_SPACE_PROGRAM, 8 )
243   AM_RANGE(0x0000, 0x3fff) AM_WRITE(SMH_ROM)
244   AM_RANGE(0x6000, 0x67ff) AM_WRITE(SMH_RAM)
245ADDRESS_MAP_END
246
247235static ADDRESS_MAP_START( magmax_sound_io_map, ADDRESS_SPACE_IO, 8 )
248236   ADDRESS_MAP_GLOBAL_MASK(0xff)
249237   AM_RANGE(0x00, 0x01) AM_DEVWRITE("ay1", ay8910_address_data_w)
r4679r4680
371359
372360   /* basic machine hardware */
373361   MDRV_CPU_ADD("maincpu", M68000, XTAL_16MHz/2)   /* verified on pcb */
374   MDRV_CPU_PROGRAM_MAP(magmax_readmem,magmax_writemem)
362   MDRV_CPU_PROGRAM_MAP(magmax_map,0)
375363   MDRV_CPU_VBLANK_INT("screen", irq1_line_hold)
376364
377365   MDRV_CPU_ADD("audiocpu", Z80,XTAL_20MHz/8) /* verified on pcb */
378   MDRV_CPU_PROGRAM_MAP(magmax_soundreadmem,magmax_soundwritemem)
366   MDRV_CPU_PROGRAM_MAP(magmax_sound_map,0)
379367   MDRV_CPU_IO_MAP(magmax_sound_io_map,0)
380368
381369   MDRV_QUANTUM_TIME(HZ(600))
src/mame/drivers/asteroid.c
r4679r4680
269269   AM_RANGE(0x2000, 0x2000) AM_READ_PORT("IN0")
270270   AM_RANGE(0x2400, 0x2407) AM_READ(asteroid_IN1_r)   /* IN1 */
271271   AM_RANGE(0x2800, 0x2803) AM_READ(asteroid_DSW1_r)   /* DSW1 */
272   AM_RANGE(0x2c00, 0x2c00) AM_READ_PORT("PADDLE")
272   AM_RANGE(0x2c00, 0x2c00) AM_READ_PORT("THRUST")
273273   AM_RANGE(0x3000, 0x3000) AM_WRITE(avgdvg_go_w)
274274   AM_RANGE(0x3200, 0x3200) AM_WRITE(llander_led_w)
275275   AM_RANGE(0x3400, 0x3400) AM_WRITE(watchdog_reset_w)
r4679r4680
290290
291291static CUSTOM_INPUT( clock_r )
292292{
293   return (cpu_get_total_cycles(field->port->machine->cpu[0]) & 0x100) ? 1 : 0;
293   return (cputag_get_total_cycles(field->port->machine, "maincpu") & 0x100) ? 1 : 0;
294294}
295295
296296static INPUT_PORTS_START( asteroid )
r4679r4680
547547   /* The way the DAC/counter circuit always trys to self center at the voltage derived from the thrust control, */
548548   /* I don't think it ever expected to get to 0xff. We can not emulate the external DAC circuit exactly, */
549549   /* so changing the range to 0xfe seems to solve the problem. */
550   PORT_START("PADDLE")
551   PORT_BIT( 0xff, 0x00, IPT_PADDLE ) PORT_MINMAX(0,254) PORT_SENSITIVITY(100) PORT_KEYDELTA(10) PORT_CODE_DEC(KEYCODE_UP) PORT_CODE_DEC(JOYCODE_Y_UP_SWITCH) PORT_CODE_INC(KEYCODE_DOWN) PORT_CODE_INC(JOYCODE_Y_DOWN_SWITCH) PORT_REVERSE
550   /* The thrust control is basically a hand operated pedal. */
551   /* so IPT_PEDAL is used because it more accurately emulates the control then using IPT_PADDLE */
552   PORT_START("THRUST")
553   PORT_BIT( 0xff, 0x00, IPT_PEDAL ) PORT_MINMAX(0,254) PORT_SENSITIVITY(100) PORT_KEYDELTA(10)
552554INPUT_PORTS_END
553555
554556
r4679r4680
880882
881883static DRIVER_INIT( asteroib )
882884{
883   memory_install_read_port_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x2000, 0x2000, 0, 0, "IN0");
884   memory_install_read_port_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x2003, 0x2003, 0, 0, "HS");
885   memory_install_read_port_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x2000, 0x2000, 0, 0, "IN0");
886   memory_install_read_port_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x2003, 0x2003, 0, 0, "HS");
885887}
886888
887889
888890static DRIVER_INIT( asterock )
889891{
890   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x2000, 0x2007, 0, 0, asterock_IN0_r);
892   memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x2000, 0x2007, 0, 0, asterock_IN0_r);
891893}
892894
893895
src/mame/drivers/stv.c
r4679r4680
256256
257257/*A-Bus IRQ checks,where they could be located these?*/
258258#define ABUSIRQ(_irq_,_vector_) \
259   { cpu_set_input_line_and_vector(device->machine->cpu[0], _irq_, HOLD_LINE , _vector_); }
259   { cputag_set_input_line_and_vector(device->machine, "maincpu", _irq_, HOLD_LINE , _vector_); }
260260#if 0
261261if(stv_scu[42] & 1)//IRQ ACK
262262{
r4679r4680
525525      if(!(smpc_ram[0x77] & 0x10))
526526      {
527527         if(LOG_SMPC) logerror("SMPC: M68k on\n");
528         cpu_set_input_line(space->machine->cpu[2], INPUT_LINE_RESET, CLEAR_LINE);
528         cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_RESET, CLEAR_LINE);
529529         en_68k = 1;
530530      }
531531      else
532532      {
533533         if(LOG_SMPC) logerror("SMPC: M68k off\n");
534         cpu_set_input_line(space->machine->cpu[2], INPUT_LINE_RESET, ASSERT_LINE);
534         cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_RESET, ASSERT_LINE);
535535         en_68k = 0;
536536      }
537537      //if(LOG_SMPC) logerror("SMPC: ram [0x77] = %02x\n",smpc_ram[0x77]);
r4679r4680
560560      if(EXLE1 || EXLE2)
561561      {
562562         //if(LOG_SMPC) logerror ("Interrupt: PAD irq at scanline %04x, Vector 0x48 Level 0x08\n",scanline);
563         cpu_set_input_line_and_vector(space->machine->cpu[0], 8, (stv_irq.pad) ? HOLD_LINE : CLEAR_LINE, 0x48);
563         cputag_set_input_line_and_vector(space->machine, "maincpu", 8, (stv_irq.pad) ? HOLD_LINE : CLEAR_LINE, 0x48);
564564      }
565565   }
566566
r4679r4680
578578            smpc_ram[0x5f]=0x02;
579579            #if USE_SLAVE
580580            stv_enable_slave_sh2 = 1;
581            cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_RESET, CLEAR_LINE);
581            cputag_set_input_line(space->machine, "slave", INPUT_LINE_RESET, CLEAR_LINE);
582582            #endif
583583            break;
584584         case 0x03:
r4679r4680
586586            smpc_ram[0x5f]=0x03;
587587            stv_enable_slave_sh2 = 0;
588588            cpuexec_trigger(space->machine, 1000);
589            cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_RESET, ASSERT_LINE);
589            cputag_set_input_line(space->machine, "slave", INPUT_LINE_RESET, ASSERT_LINE);
590590            break;
591591         case 0x06:
592592            if(LOG_SMPC) logerror ("SMPC: Sound ON\n");
593593            /* wrong? */
594594            smpc_ram[0x5f]=0x06;
595            cpu_set_input_line(space->machine->cpu[2], INPUT_LINE_RESET, CLEAR_LINE);
595            cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_RESET, CLEAR_LINE);
596596            break;
597597         case 0x07:
598598            if(LOG_SMPC) logerror ("SMPC: Sound OFF\n");
r4679r4680
604604         case 0x0d:
605605            if(LOG_SMPC) logerror ("SMPC: System Reset\n");
606606            smpc_ram[0x5f]=0x0d;
607            cpu_set_input_line(space->machine->cpu[0], INPUT_LINE_RESET, PULSE_LINE);
607            cputag_set_input_line(space->machine, "maincpu", INPUT_LINE_RESET, PULSE_LINE);
608608            system_reset();
609609            break;
610610         case 0x0e:
611611            if(LOG_SMPC) logerror ("SMPC: Change Clock to 352\n");
612612            smpc_ram[0x5f]=0x0e;
613            cpu_set_clock(space->machine->cpu[0], MASTER_CLOCK_352/2);
614            cpu_set_clock(space->machine->cpu[1], MASTER_CLOCK_352/2);
615            cpu_set_clock(space->machine->cpu[2], MASTER_CLOCK_352/5);
616            cpu_set_input_line(space->machine->cpu[0], INPUT_LINE_NMI, PULSE_LINE); // ff said this causes nmi, should we set a timer then nmi?
613            cputag_set_clock(space->machine, "maincpu", MASTER_CLOCK_352/2);
614            cputag_set_clock(space->machine, "slave", MASTER_CLOCK_352/2);
615            cputag_set_clock(space->machine, "audiocpu", MASTER_CLOCK_352/5);
616            cputag_set_input_line(space->machine, "maincpu", INPUT_LINE_NMI, PULSE_LINE); // ff said this causes nmi, should we set a timer then nmi?
617617            break;
618618         case 0x0f:
619619            if(LOG_SMPC) logerror ("SMPC: Change Clock to 320\n");
620620            smpc_ram[0x5f]=0x0f;
621            cpu_set_clock(space->machine->cpu[0], MASTER_CLOCK_320/2);
622            cpu_set_clock(space->machine->cpu[1], MASTER_CLOCK_320/2);
623            cpu_set_clock(space->machine->cpu[2], MASTER_CLOCK_320/5);
624            cpu_set_input_line(space->machine->cpu[0], INPUT_LINE_NMI, PULSE_LINE); // ff said this causes nmi, should we set a timer then nmi?
621            cputag_set_clock(space->machine, "maincpu", MASTER_CLOCK_320/2);
622            cputag_set_clock(space->machine, "slave", MASTER_CLOCK_320/2);
623            cputag_set_clock(space->machine, "audiocpu", MASTER_CLOCK_320/5);
624            cputag_set_input_line(space->machine, "maincpu", INPUT_LINE_NMI, PULSE_LINE); // ff said this causes nmi, should we set a timer then nmi?
625625            break;
626626         /*"Interrupt Back"*/
627627         case 0x10:
r4679r4680
667667            /*System Manager(SMPC) irq*/
668668            {
669669               //if(LOG_SMPC) logerror ("Interrupt: System Manager (SMPC) at scanline %04x, Vector 0x47 Level 0x08\n",scanline);
670               cpu_set_input_line_and_vector(space->machine->cpu[0], 8, (stv_irq.smpc) ? HOLD_LINE : CLEAR_LINE, 0x47);
670               cputag_set_input_line_and_vector(space->machine, "maincpu", 8, (stv_irq.smpc) ? HOLD_LINE : CLEAR_LINE, 0x47);
671671            }
672672         break;
673673         /* RTC write*/
r4679r4680
691691            if(LOG_SMPC) logerror ("SMPC: NMI request\n");
692692            smpc_ram[0x5f]=0x18;
693693            /*NMI is unconditionally requested?*/
694            cpu_set_input_line(space->machine->cpu[0], INPUT_LINE_NMI, PULSE_LINE);
694            cputag_set_input_line(space->machine, "maincpu", INPUT_LINE_NMI, PULSE_LINE);
695695            break;
696696         case 0x19:
697697            if(LOG_SMPC) logerror ("SMPC: NMI Enable\n");
r4679r4680
11721172         /*Sound IRQ*/
11731173         if(/*(!(stv_scu[40] & 0x40)) &&*/ scsp_to_main_irq == 1)
11741174         {
1175            //cpu_set_input_line_and_vector(space->machine->cpu[0], 9, HOLD_LINE , 0x46);
1175            //cputag_set_input_line_and_vector(space->machine, "maincpu", 9, HOLD_LINE , 0x46);
11761176            logerror("SCSP: Main CPU interrupt\n");
11771177            #if 0
11781178            if((scu_dst_0 & 0x7ffffff) != 0x05a00000)
11791179            {
11801180               if(!(stv_scu[40] & 0x1000))
11811181               {
1182                  cpu_set_input_line_and_vector(space->machine->cpu[0], 3, HOLD_LINE, 0x4c);
1182                  cputag_set_input_line_and_vector(space->machine, "maincpu", 3, HOLD_LINE, 0x4c);
11831183                  logerror("SCU: Illegal DMA interrupt\n");
11841184               }
11851185            }
r4679r4680
12331233         /*Sound IRQ*/
12341234         if(/*(!(stv_scu[40] & 0x40)) &&*/ scsp_to_main_irq == 1)
12351235         {
1236            //cpu_set_input_line_and_vector(space->machine->cpu[0], 9, HOLD_LINE , 0x46);
1236            //cputag_set_input_line_and_vector(space->machine, "maincpu", 9, HOLD_LINE , 0x46);
12371237            logerror("SCSP: Main CPU interrupt\n");
12381238         }
12391239      }
r4679r4680
12831283         /*Sound IRQ*/
12841284         if(/*(!(stv_scu[40] & 0x40)) &&*/ scsp_to_main_irq == 1)
12851285         {
1286            //cpu_set_input_line_and_vector(space->machine->cpu[0], 9, HOLD_LINE , 0x46);
1286            //cputag_set_input_line_and_vector(space->machine, "maincpu", 9, HOLD_LINE , 0x46);
12871287            logerror("SCSP: Main CPU interrupt\n");
12881288         }
12891289      }
r4679r4680
14001400/*Lv 0 DMA end irq*/
14011401static TIMER_CALLBACK( dma_lv0_ended )
14021402{
1403   cpu_set_input_line_and_vector(machine->cpu[0], 5, (stv_irq.dma_end[0]) ? HOLD_LINE : CLEAR_LINE, 0x4b);
1403   cputag_set_input_line_and_vector(machine, "maincpu", 5, (stv_irq.dma_end[0]) ? HOLD_LINE : CLEAR_LINE, 0x4b);
14041404
14051405   D0MV_0;
14061406}
r4679r4680
14081408/*Lv 1 DMA end irq*/
14091409static TIMER_CALLBACK( dma_lv1_ended )
14101410{
1411   cpu_set_input_line_and_vector(machine->cpu[0], 6, (stv_irq.dma_end[1]) ? HOLD_LINE : CLEAR_LINE, 0x4a);
1411   cputag_set_input_line_and_vector(machine, "maincpu", 6, (stv_irq.dma_end[1]) ? HOLD_LINE : CLEAR_LINE, 0x4a);
14121412
14131413   D1MV_0;
14141414}
r4679r4680
14161416/*Lv 2 DMA end irq*/
14171417static TIMER_CALLBACK( dma_lv2_ended )
14181418{
1419   cpu_set_input_line_and_vector(machine->cpu[0], 6, (stv_irq.dma_end[2]) ? HOLD_LINE : CLEAR_LINE, 0x49);
1419   cputag_set_input_line_and_vector(machine, "maincpu", 6, (stv_irq.dma_end[2]) ? HOLD_LINE : CLEAR_LINE, 0x49);
14201420
14211421   D2MV_0;
14221422}
r4679r4680
19601960   logerror("cpu %s (PC=%08X) MINIT write = %08x\n", space->cpu->tag, cpu_get_pc(space->cpu),data);
19611961   cpuexec_boost_interleave(space->machine, minit_boost_timeslice, ATTOTIME_IN_USEC(minit_boost));
19621962   cpuexec_trigger(space->machine, 1000);
1963   sh2_set_frt_input(space->machine->cpu[1], PULSE_LINE);
1963   sh2_set_frt_input(cputag_get_cpu(space->machine, "slave"), PULSE_LINE);
19641964}
19651965
19661966static WRITE32_HANDLER( sinit_w )
19671967{
19681968   logerror("cpu %s (PC=%08X) SINIT write = %08x\n", space->cpu->tag, cpu_get_pc(space->cpu),data);
19691969   cpuexec_boost_interleave(space->machine, sinit_boost_timeslice, ATTOTIME_IN_USEC(sinit_boost));
1970   sh2_set_frt_input(space->machine->cpu[0], PULSE_LINE);
1970   sh2_set_frt_input(cputag_get_cpu(space->machine, "maincpu"), PULSE_LINE);
19711971}
19721972
19731973
r4679r4680
23092309   minit_boost_timeslice = attotime_zero;
23102310   sinit_boost_timeslice = attotime_zero;
23112311
2312   smpc_ram = auto_malloc (0x80);
2313   stv_scu = auto_malloc (0x100);
2314   scsp_regs = auto_malloc (0x1000);
2312   smpc_ram = auto_alloc_array(machine, UINT8, 0x80);
2313   stv_scu = auto_alloc_array(machine, UINT32, 0x100/4);
2314   scsp_regs = auto_alloc_array(machine, UINT16, 0x1000/2);
23152315
23162316   install_stvbios_speedups(machine);
23172317
23182318   // do strict overwrite verification - maruchan and rsgun crash after coinup without this.
23192319   // cottonbm needs strict PCREL
23202320   // todo: test what games need this and don't turn it on for them...
2321   sh2drc_set_options(machine->cpu[0], SH2DRC_STRICT_VERIFY|SH2DRC_STRICT_PCREL);
2322   sh2drc_set_options(machine->cpu[1], SH2DRC_STRICT_VERIFY|SH2DRC_STRICT_PCREL);
2321   sh2drc_set_options(cputag_get_cpu(machine, "maincpu"), SH2DRC_STRICT_VERIFY|SH2DRC_STRICT_PCREL);
2322   sh2drc_set_options(cputag_get_cpu(machine, "slave"), SH2DRC_STRICT_VERIFY|SH2DRC_STRICT_PCREL);
23232323
23242324   /* debug .. watch the command buffer rsgun, cottonbm etc. appear to use to communicate between cpus */
2325   memory_install_write32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x60ffc44, 0x60ffc47, 0, 0, w60ffc44_write );
2326   memory_install_write32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x60ffc48, 0x60ffc4b, 0, 0, w60ffc48_write );
2327   memory_install_write32_handler(cpu_get_address_space(machine->cpu[1], ADDRESS_SPACE_PROGRAM), 0x60ffc44, 0x60ffc47, 0, 0, w60ffc44_write );
2328   memory_install_write32_handler(cpu_get_address_space(machine->cpu[1], ADDRESS_SPACE_PROGRAM), 0x60ffc48, 0x60ffc4b, 0, 0, w60ffc48_write );
2325   memory_install_write32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x60ffc44, 0x60ffc47, 0, 0, w60ffc44_write );
2326   memory_install_write32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x60ffc48, 0x60ffc4b, 0, 0, w60ffc48_write );
2327   memory_install_write32_handler(cputag_get_address_space(machine, "slave", ADDRESS_SPACE_PROGRAM), 0x60ffc44, 0x60ffc47, 0, 0, w60ffc44_write );
2328   memory_install_write32_handler(cputag_get_address_space(machine, "slave", ADDRESS_SPACE_PROGRAM), 0x60ffc48, 0x60ffc4b, 0, 0, w60ffc48_write );
23292329
23302330     smpc_ram[0x23] = DectoBCD(systime.local_time.year /100);
23312331    smpc_ram[0x25] = DectoBCD(systime.local_time.year %100);
r4679r4680
24712471   if (irq > 0)
24722472   {
24732473      scsp_last_line = irq;
2474      cpu_set_input_line(device->machine->cpu[2], irq, ASSERT_LINE);
2474      cputag_set_input_line(device->machine, "audiocpu", irq, ASSERT_LINE);
24752475   }
24762476   else if (irq < 0)
24772477   {
2478      cpu_set_input_line(device->machine->cpu[2], -irq, CLEAR_LINE);
2478      cputag_set_input_line(device->machine, "audiocpu", -irq, CLEAR_LINE);
24792479   }
24802480   else
24812481   {
2482      cpu_set_input_line(device->machine->cpu[2], scsp_last_line, CLEAR_LINE);
2482      cputag_set_input_line(device->machine, "audiocpu", scsp_last_line, CLEAR_LINE);
24832483   }
24842484}
24852485
r4679r4680
25492549timer_0 = 0; \
25502550{ \
25512551   /*if(LOG_IRQ) logerror ("Interrupt: VBlank-OUT Vector 0x41 Level 0x0e\n");*/ \
2552   cpu_set_input_line_and_vector(machine->cpu[0], 0xe, (stv_irq.vblank_out) ? HOLD_LINE : CLEAR_LINE , 0x41); \
2552   cputag_set_input_line_and_vector(machine, "maincpu", 0xe, (stv_irq.vblank_out) ? HOLD_LINE : CLEAR_LINE , 0x41); \
25532553} \
25542554
25552555#define VBLANK_IN_IRQ \
25562556{ \
25572557   /*if(LOG_IRQ) logerror ("Interrupt: VBlank IN Vector 0x40 Level 0x0f\n");*/ \
2558   cpu_set_input_line_and_vector(device->machine->cpu[0], 0xf, (stv_irq.vblank_in) ? HOLD_LINE : CLEAR_LINE , 0x40); \
2558   cputag_set_input_line_and_vector(device->machine, "maincpu", 0xf, (stv_irq.vblank_in) ? HOLD_LINE : CLEAR_LINE , 0x40); \
25592559} \
25602560
25612561#define HBLANK_IN_IRQ \
25622562timer_1 = stv_scu[37] & 0x1ff; \
25632563{ \
25642564   /*if(LOG_IRQ) logerror ("Interrupt: HBlank-In at scanline %04x, Vector 0x42 Level 0x0d\n",scanline);*/ \
2565   cpu_set_input_line_and_vector(machine->cpu[0], 0xd, (stv_irq.hblank_in) ? HOLD_LINE : CLEAR_LINE, 0x42); \
2565   cputag_set_input_line_and_vector(machine, "maincpu", 0xd, (stv_irq.hblank_in) ? HOLD_LINE : CLEAR_LINE, 0x42); \
25662566} \
25672567
25682568#define TIMER_0_IRQ \
25692569if(timer_0 == (stv_scu[36] & 0x3ff)) \
25702570{ \
25712571   /*if(LOG_IRQ) logerror ("Interrupt: Timer 0 at scanline %04x, Vector 0x43 Level 0x0c\n",scanline);*/ \
2572   cpu_set_input_line_and_vector(machine->cpu[0], 0xc, (stv_irq.timer_0) ? HOLD_LINE : CLEAR_LINE, 0x43 ); \
2572   cputag_set_input_line_and_vector(machine, "maincpu", 0xc, (stv_irq.timer_0) ? HOLD_LINE : CLEAR_LINE, 0x43 ); \
25732573} \
25742574
25752575#define TIMER_1_IRQ   \
r4679r4680
25782578   if(!(stv_scu[38] & 0x80)) \
25792579   { \
25802580      /*if(LOG_IRQ) logerror ("Interrupt: Timer 1 at point %04x, Vector 0x44 Level 0x0b\n",point);*/ \
2581      cpu_set_input_line_and_vector(machine->cpu[0], 0xb, (stv_irq.timer_1) ? HOLD_LINE : CLEAR_LINE, 0x44 ); \
2581      cputag_set_input_line_and_vector(machine, "maincpu", 0xb, (stv_irq.timer_1) ? HOLD_LINE : CLEAR_LINE, 0x44 ); \
25822582   } \
25832583   else \
25842584   { \
25852585      if((timer_0) == (stv_scu[36] & 0x3ff)) \
25862586      { \
25872587         /*if(LOG_IRQ) logerror ("Interrupt: Timer 1 at point %04x, Vector 0x44 Level 0x0b\n",point);*/ \
2588         cpu_set_input_line_and_vector(machine->cpu[0], 0xb, (stv_irq.timer_1) ? HOLD_LINE : CLEAR_LINE, 0x44 ); \
2588         cputag_set_input_line_and_vector(machine, "maincpu", 0xb, (stv_irq.timer_1) ? HOLD_LINE : CLEAR_LINE, 0x44 ); \
25892589      } \
25902590   } \
25912591} \
25922592
25932593#define VDP1_IRQ \
25942594{ \
2595   cpu_set_input_line_and_vector(machine->cpu[0], 2, (stv_irq.vdp1_end) ? HOLD_LINE : CLEAR_LINE, 0x4d); \
2595   cputag_set_input_line_and_vector(machine, "maincpu", 2, (stv_irq.vdp1_end) ? HOLD_LINE : CLEAR_LINE, 0x4d); \
25962596} \
25972597
25982598static TIMER_CALLBACK( hblank_in_irq )
r4679r4680
26682668static MACHINE_RESET( stv )
26692669{
26702670   // don't let the slave cpu and the 68k go anywhere
2671   cpu_set_input_line(machine->cpu[1], INPUT_LINE_RESET, ASSERT_LINE);
2671   cputag_set_input_line(machine, "slave", INPUT_LINE_RESET, ASSERT_LINE);
26722672   stv_enable_slave_sh2 = 0;
2673   cpu_set_input_line(machine->cpu[2], INPUT_LINE_RESET, ASSERT_LINE);
2673   cputag_set_input_line(machine, "audiocpu", INPUT_LINE_RESET, ASSERT_LINE);
26742674
26752675   timer_0 = 0;
26762676   timer_1 = 0;
r4679r4680
26812681   port_sel = mux_data = 0;
26822682   port_i = -1;
26832683
2684   cpu_set_clock(machine->cpu[0], MASTER_CLOCK_320/2);
2685   cpu_set_clock(machine->cpu[1], MASTER_CLOCK_320/2);
2686   cpu_set_clock(machine->cpu[2], MASTER_CLOCK_320/5);
2684   cputag_set_clock(machine, "maincpu", MASTER_CLOCK_320/2);
2685   cputag_set_clock(machine, "slave", MASTER_CLOCK_320/2);
2686   cputag_set_clock(machine, "audiocpu", MASTER_CLOCK_320/5);
26872687
26882688   stvcd_reset(machine);
26892689
src/mame/drivers/megatech.c
r4679r4680
7979*/
8080#include "driver.h"
8181#include "cpu/z80/z80.h"
82#include "sound/sn76496.h"
83#include "rendlay.h"
84
85#include "segae.h"
8286#include "genesis.h"
83#include "rendlay.h"
8487#include "megadriv.h"
85#include "segae.h"
8688
8789/* Megatech BIOS specific */
8890static UINT32 bios_port_ctrl;
r4679r4680
273275   {
274276      case 0:
275277         logerror("bank w %02x %02x\n", offset, data);
276         memory_install_readwrite8_handler(space, 0x0000, 0xbfff, 0, 0, SMH_BANK5, SMH_UNMAP);
278         memory_install_readwrite8_handler(space, 0x0000, 0xbfff, 0, 0, (read8_space_func)SMH_BANK(5), (write8_space_func)SMH_UNMAP);
277279
278280         //printf("bank ram??\n");
279281         break;
r4679r4680
308310{
309311   /* INIT THE PORTS *********************************************************************************************/
310312
311   const address_space *io = cpu_get_address_space(machine->cpu[1], ADDRESS_SPACE_IO);
313   const address_space *io = cputag_get_address_space(machine, "genesis_snd_z80", ADDRESS_SPACE_IO);
312314   const device_config *sn = devtag_get_device(machine, "sn");
313315
314316   memory_install_readwrite8_handler(io, 0x0000, 0xffff, 0, 0, z80_unmapped_port_r, z80_unmapped_port_w);
r4679r4680
331333   /* INIT THE MEMMAP / BANKING *********************************************************************************/
332334
333335   /* catch any addresses that don't get mapped */
334   memory_install_readwrite8_handler(cpu_get_address_space(machine->cpu[1], ADDRESS_SPACE_PROGRAM), 0x0000, 0xffff, 0, 0, z80_unmapped_r, z80_unmapped_w);
336   memory_install_readwrite8_handler(cputag_get_address_space(machine, "genesis_snd_z80", ADDRESS_SPACE_PROGRAM), 0x0000, 0xffff, 0, 0, z80_unmapped_r, z80_unmapped_w);
335337
336338   /* fixed rom bank area */
337   sms_rom = auto_malloc(0x400000);
338   memory_install_readwrite8_handler(cpu_get_address_space(machine->cpu[1], ADDRESS_SPACE_PROGRAM), 0x0000, 0xbfff, 0, 0, SMH_BANK5, SMH_UNMAP);
339   sms_rom = auto_alloc_array(machine, UINT8, 0x400000);
340   memory_install_readwrite8_handler(cputag_get_address_space(machine, "genesis_snd_z80", ADDRESS_SPACE_PROGRAM), 0x0000, 0xbfff, 0, 0, (read8_space_func)SMH_BANK(5), (write8_space_func)SMH_UNMAP);
339341   memory_set_bankptr(machine,  5, sms_rom );
340342
341343   memcpy(sms_rom, memory_region(machine, "maincpu"), 0x400000);
342344
343345   /* main ram area */
344   sms_mainram = auto_malloc(0x2000); // 8kb of main ram
345   memory_install_readwrite8_handler(cpu_get_address_space(machine->cpu[1], ADDRESS_SPACE_PROGRAM), 0xc000, 0xdfff, 0, 0, SMH_BANK6, SMH_BANK6);
346   sms_mainram = auto_alloc_array(machine, UINT8, 0x2000); // 8kb of main ram
347   memory_install_readwrite8_handler(cputag_get_address_space(machine, "genesis_snd_z80", ADDRESS_SPACE_PROGRAM), 0xc000, 0xdfff, 0, 0, (read8_space_func)SMH_BANK(6), (write8_space_func)SMH_BANK(6));
346348   memory_set_bankptr(machine,  6, sms_mainram );
347   memory_install_readwrite8_handler(cpu_get_address_space(machine->cpu[1], ADDRESS_SPACE_PROGRAM), 0xe000, 0xffff, 0, 0, SMH_BANK7, SMH_BANK7);
349   memory_install_readwrite8_handler(cputag_get_address_space(machine, "genesis_snd_z80", ADDRESS_SPACE_PROGRAM), 0xe000, 0xffff, 0, 0, (read8_space_func)SMH_BANK(7), (write8_space_func)SMH_BANK(7));
348350   memory_set_bankptr(machine,  7, sms_mainram );
349351   memset(sms_mainram,0x00,0x2000);
350352
351   memory_install_write8_handler(cpu_get_address_space(machine->cpu[1], ADDRESS_SPACE_PROGRAM), 0xfffc, 0xffff, 0, 0, mt_sms_standard_rom_bank_w);
353   memory_install_write8_handler(cputag_get_address_space(machine, "genesis_snd_z80", ADDRESS_SPACE_PROGRAM), 0xfffc, 0xffff, 0, 0, mt_sms_standard_rom_bank_w);
352354
353355   megatech_set_genz80_as_sms_standard_ports(machine);
354356//  smsgg_backupram = NULL;
r4679r4680
363365
364366   printf("game 0 selected\n");
365367
366   cpu_set_input_line(machine->cpu[0], INPUT_LINE_RESET, ASSERT_LINE);
367   cpu_set_input_line(machine->cpu[1], INPUT_LINE_RESET, ASSERT_LINE);
368   cpu_set_input_line(machine->cpu[0], INPUT_LINE_HALT, ASSERT_LINE);
369   cpu_set_input_line(machine->cpu[1], INPUT_LINE_HALT, ASSERT_LINE);
368   cputag_set_input_line(machine, "maincpu", INPUT_LINE_RESET, ASSERT_LINE);
369   cputag_set_input_line(machine, "genesis_snd_z80", INPUT_LINE_RESET, ASSERT_LINE);
370   cputag_set_input_line(machine, "maincpu", INPUT_LINE_HALT, ASSERT_LINE);
371   cputag_set_input_line(machine, "genesis_snd_z80", INPUT_LINE_HALT, ASSERT_LINE);
370372   devtag_reset(machine, "ym");
371373
372374   sprintf(tempname, "game%d", gameno);
r4679r4680
392394         printf("SMS cart!!, CPU not running\n");
393395         current_game_is_sms = 1;
394396         megatech_set_genz80_as_sms_standard_map(machine);
395         cpu_set_input_line(machine->cpu[1], INPUT_LINE_HALT, CLEAR_LINE);
396         cpu_set_input_line(machine->cpu[1], INPUT_LINE_RESET, CLEAR_LINE);
397         cputag_set_input_line(machine, "genesis_snd_z80", INPUT_LINE_HALT, CLEAR_LINE);
398         cputag_set_input_line(machine, "genesis_snd_z80", INPUT_LINE_RESET, CLEAR_LINE);
397399
398400
399401      }
r4679r4680
402404         printf("Genesis Cart, CPU0 running\n");
403405         current_game_is_sms = 0;
404406         megatech_set_megadrive_z80_as_megadrive_z80(machine);
405         cpu_set_input_line(machine->cpu[0], INPUT_LINE_RESET, CLEAR_LINE);
406         cpu_set_input_line(machine->cpu[0], INPUT_LINE_HALT, CLEAR_LINE);
407         cputag_set_input_line(machine, "maincpu", INPUT_LINE_RESET, CLEAR_LINE);
408         cputag_set_input_line(machine, "maincpu", INPUT_LINE_HALT, CLEAR_LINE);
407409      }
408410      else
409411      {
r4679r4680
412414   }
413415   else
414416   {
415      cpu_set_input_line(machine->cpu[0], INPUT_LINE_HALT, ASSERT_LINE);
416      cpu_set_input_line(machine->cpu[1], INPUT_LINE_HALT, ASSERT_LINE);
417   //  cpu_set_input_line(machine->cpu[0], INPUT_LINE_RESET, ASSERT_LINE);
418   //  cpu_set_input_line(machine->cpu[1], INPUT_LINE_RESET, ASSERT_LINE);
417      cputag_set_input_line(machine, "maincpu", INPUT_LINE_HALT, ASSERT_LINE);
418      cputag_set_input_line(machine, "genesis_snd_z80", INPUT_LINE_HALT, ASSERT_LINE);
419   //  cputag_set_input_line(machine, "maincpu", INPUT_LINE_RESET, ASSERT_LINE);
420   //  cputag_set_input_line(machine, "genesis_snd_z80", INPUT_LINE_RESET, ASSERT_LINE);
419421
420422      /* no cart.. */
421423      memset(memory_region(machine, "mtbios")+0x8000, 0x00, 0x8000);
r4679r4680
574576
575577static DRIVER_INIT(mtnew)
576578{
577   megatech_banked_ram = auto_malloc(0x1000*8);
579   megatech_banked_ram = auto_alloc_array(machine, UINT8, 0x1000*8);
578580   DRIVER_INIT_CALL(megadriv);
579581   DRIVER_INIT_CALL(megatech_bios);
580582}
r4679r4680
12121214   MEGATECH_GAME26("game0", "inst0")
12131215ROM_END
12141216
1217/* Game 43 - Shadow Dancer */
1218
1219#define MEGATECH_GAME43(GAME_REGION, INSTRUCTION_REGION) \
1220   ROM_REGION16_BE( 0x300000, GAME_REGION, 0 ) \
1221   ROM_LOAD16_WORD_SWAP( "mpr-13571-s.ic1", 0x000000, 0x080000, CRC(56a29310) SHA1(55836177e4a1e2deb68408976b29d0282cf661a9) ) \
1222    MEGATECH_INSTRUCTION_REGION( INSTRUCTION_REGION, MEGATECH_GAME_IS_GEN ) \
1223   ROM_LOAD( "epr-12368-43.ic2", 0x000000, 0x08000, CRC(1116cbc7) SHA1(ba6dd21ceadeedf730b71b67acbd20d9067114f3) ) \
1224
1225ROM_START( mt_shado ) /* Bonanza Bros */
1226   MEGATECH_BIOS
1227   MEGATECH_GAME43("game0", "inst0")
1228ROM_END
1229
1230/* Game 51 - Streets of Rage */
1231
1232#define MEGATECH_GAME51(GAME_REGION, INSTRUCTION_REGION) \
1233   ROM_REGION16_BE( 0x300000, GAME_REGION, 0 ) \
1234   ROM_LOAD16_WORD_SWAP( "mpr-13571-s.ic1", 0x000000, 0x080000, CRC(db4ac746) SHA1(c7cc24e2329f279574513fa32bbf79f72f75aeea) ) \
1235    MEGATECH_INSTRUCTION_REGION( INSTRUCTION_REGION, MEGATECH_GAME_IS_GEN ) \
1236   ROM_LOAD( "epr-12368-51.ic2", 0x000000, 0x08000, CRC(49b7d6f4) SHA1(96e69851c92715e7daf35b184cf374147a8d2880) ) \
1237
1238ROM_START( mt_srage ) /* Bonanza Bros */
1239   MEGATECH_BIOS
1240   MEGATECH_GAME51("game0", "inst0")
1241ROM_END
1242
12151243/* Compilations of games to show the multi-cart support */
12161244
12171245ROM_START( mt_comp1 )
r4679r4680
12851313/* 40 */ GAME( 1990, mt_mwalk, megatech, megatech, megatech, mtnew, ROT0, "Sega",                  "Michael Jackson's Moonwalker (Mega-Tech)", GAME_NOT_WORKING )
12861314/* 41 */ GAME( 1990, mt_crack, megatech, megatech, megatech, mtnew, ROT0, "Sega",                  "Crack Down (Mega-Tech)", GAME_NOT_WORKING )
12871315/* 42 */ // unknown
1288/* 43 */ // unknown
1316/* 43 */ GAME( 1990, mt_shado, megatech, megatech, megatech, mtnew, ROT0, "Sega",                  "Shadow Dancer (Mega-Tech)", GAME_NOT_WORKING )
12891317/* 44 */ GAME( 1990, mt_arrow, megatech, megatech, megatech, mtnew, ROT0, "Sega",                  "Arrow Flash (Mega-Tech)", GAME_NOT_WORKING )
12901318/* 45 */ // unknown
12911319/* 46 */ // unknown
r4679r4680
12931321/* 48 */ GAME( 1991, mt_wwar,  megatech, megatech, megatech, mtnew, ROT0, "Sega",                  "Wrestle War (Mega-Tech)", GAME_NOT_WORKING ) /* Copyright 1989, 1991 Sega */
12941322/* 49 */ GAME( 1991, mt_bbros, megatech, megatech, megatech, mtnew, ROT0, "Sega",                  "Bonanza Bros. (Mega-Tech)", GAME_NOT_WORKING )
12951323/* 50 */ // unknown
1296/* 51 */ // unknown
1324/* 51 */ GAME( 1991, mt_srage, megatech, megatech, megatech, mtnew, ROT0, "Sega",                  "Streets of Rage (Mega-Tech)", GAME_NOT_WORKING )
12971325/* 52 */ GAME( 1991, mt_sonic, megatech, megatech, megatech, mtnew, ROT0, "Sega",                  "Sonic The Hedgehog (Mega-Tech, set 1)", GAME_NOT_WORKING )
12981326/*    */ GAME( 1991, mt_sonia, mt_sonic, megatech, megatech, mtnew, ROT0, "Sega",                  "Sonic The Hedgehog (Mega-Tech, set 2)", GAME_NOT_WORKING )
12991327/* 53 */ GAME( 1990, mt_fshrk, megatech, megatech, megatech, mtnew, ROT0, "Toaplan / Sega",        "Fire Shark (Mega-Tech)", GAME_NOT_WORKING )
src/mame/drivers/timelimt.c
r4679r4680
4949
5050static WRITE8_HANDLER( sound_reset_w )
5151{
52   if ( data & 1 )
53      cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_RESET, PULSE_LINE );
52   if (data & 1)
53      cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_RESET, PULSE_LINE);
5454}
5555
5656/***************************************************************************/
r4679r4680
361361
362362GAME( 1983, timelimt, 0, timelimt, timelimt, 0, ROT90, "Chuo Co. Ltd", "Time Limit", GAME_IMPERFECT_COLORS )
363363GAME( 1984, progress, 0, progress, progress, 0, ROT90, "Chuo Co. Ltd", "Progress", 0 )
364
src/mame/drivers/jackie.c
r4679r4680
256256
257257static WRITE8_HANDLER( igs_irqack_w )
258258{
259//  cpu_set_input_line(space->machine->cpu[0], 0, CLEAR_LINE);
259//  cputag_set_input_line(space->machine, "maincpu", 0, CLEAR_LINE);
260260   out[2] = data;
261261   show_out();
262262}
src/mame/drivers/warriorb.c
r4679r4680
249249
250250static ADDRESS_MAP_START( z80_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
251251   AM_RANGE(0x0000, 0x3fff) AM_ROM
252   AM_RANGE(0x4000, 0x7fff) AM_READWRITE(SMH_BANK10, SMH_ROM)
252   AM_RANGE(0x4000, 0x7fff) AM_READWRITE(SMH_BANK(10), SMH_ROM)
253253   AM_RANGE(0xc000, 0xdfff) AM_RAM
254254   AM_RANGE(0xe000, 0xe003) AM_DEVREADWRITE("ym", ym2610_r, ym2610_w)
255255   AM_RANGE(0xe200, 0xe200) AM_READWRITE(SMH_NOP, taitosound_slave_port_w)
r4679r4680
402402/* handler called by the YM2610 emulator when the internal timers cause an IRQ */
403403static void irqhandler(const device_config *device, int irq)
404404{
405   cpu_set_input_line(device->machine->cpu[1],0,irq ? ASSERT_LINE : CLEAR_LINE);
405   cputag_set_input_line(device->machine, "audiocpu", 0, irq ? ASSERT_LINE : CLEAR_LINE);
406406}
407407
408408static const ym2610_interface ym2610_config =
src/mame/drivers/igs_blit.c
r4679r4680
8787
8888   for (i = 0; i < 8; i++)
8989   {
90      layer[i] = auto_malloc(512 * 256);
90      layer[i] = auto_alloc_array(machine, UINT8, 512 * 256);
9191   }
9292
9393   chmplst2_pen_hi = 0;
r4679r4680
503503   int i,j;
504504   int rom_size = 0x80000;
505505   UINT16 *src = (UINT16 *) (memory_region(machine, "maincpu"));
506   UINT16 *result_data = malloc_or_die(rom_size);
506   UINT16 *result_data = alloc_array_or_die(UINT16, rom_size/2);
507507
508508    for (i=0; i<rom_size/2; i++)
509509   {
r4679r4680
625625   int i;
626626   unsigned rom_size = 0x200000;
627627   UINT8 *src = (UINT8 *) (memory_region(machine, "gfx1"));
628   UINT8 *result_data = malloc_or_die(rom_size);
628   UINT8 *result_data = alloc_array_or_die(UINT8, rom_size);
629629
630630   for (i=0; i<rom_size; i++)
631631       result_data[i] = src[BITSWAP24(i, 23,22,21,20, 19, 17,16,15, 13,12, 10,9,8,7,6,5,4, 2,1, 3, 11, 14, 18, 0)];
r4679r4680
640640   int i;
641641   unsigned rom_size = 0x400000;
642642   UINT8 *src = (UINT8 *) (memory_region(machine, "gfx1"));
643   UINT8 *result_data = malloc_or_die(rom_size);
643   UINT8 *result_data = alloc_array_or_die(UINT8, rom_size);
644644
645645    for (i=0; i<rom_size; i++)
646646       result_data[i] = src[BITSWAP24(i, 23,22,21,20,19,18,17,16,15, 12, 13, 14, 11,10,9,8,7,6,5,4,3,2,1,0)];
r4679r4680
24952495
24962496static void sound_irq(const device_config *device, int state)
24972497{
2498//   cpu_set_input_line(machine->cpu[0], 3, state);
2498//   cputag_set_input_line(machine, "maincpu", 3, state);
24992499}
25002500
25012501static const ics2115_interface vbowl_ics2115_interface = {
src/mame/drivers/goal92.c
r4679r4680
3333   if (ACCESSING_BITS_8_15)
3434   {
3535      soundlatch_w(space, 0, (data >> 8) & 0xff);
36      cpu_set_input_line(space->machine->cpu[1],0,HOLD_LINE);
36      cputag_set_input_line(space->machine, "audiocpu", 0, HOLD_LINE);
3737   }
3838}
3939
r4679r4680
5959   return 0;
6060}
6161
62static ADDRESS_MAP_START( goal92_readmem, ADDRESS_SPACE_PROGRAM, 16 )
63   AM_RANGE(0x000000, 0x0fffff) AM_READ(SMH_ROM)
64   AM_RANGE(0x100000, 0x13ffff) AM_READ(SMH_RAM)
65   AM_RANGE(0x180000, 0x18000f) AM_READ(goal92_inputs_r)
66   AM_RANGE(0x18001c, 0x18001d) AM_READ(goal92_fg_bank_r)
67ADDRESS_MAP_END
68
69static ADDRESS_MAP_START( goal92_writemem, ADDRESS_SPACE_PROGRAM, 16 )
70   AM_RANGE(0x000000, 0x0fffff) AM_WRITE(SMH_ROM)
71   AM_RANGE(0x100000, 0x1007ff) AM_WRITE(SMH_RAM)
72   AM_RANGE(0x100800, 0x100fff) AM_WRITE(goal92_background_w) AM_BASE(&goal92_back_data)
73   AM_RANGE(0x101000, 0x1017ff) AM_WRITE(goal92_foreground_w) AM_BASE(&goal92_fore_data)
74   AM_RANGE(0x101800, 0x101fff) AM_WRITE(SMH_RAM) // it has tiles for clouds, but they aren't used
75   AM_RANGE(0x102000, 0x102fff) AM_WRITE(goal92_text_w) AM_BASE(&goal92_textram)
76   AM_RANGE(0x103000, 0x103fff) AM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE(&paletteram16)
77   AM_RANGE(0x104000, 0x13ffff) AM_WRITE(SMH_RAM)
62static ADDRESS_MAP_START( goal92_map, ADDRESS_SPACE_PROGRAM, 16 )
63   AM_RANGE(0x000000, 0x0fffff) AM_ROM
64   AM_RANGE(0x100000, 0x1007ff) AM_RAM
65   AM_RANGE(0x100800, 0x100fff) AM_RAM_WRITE(goal92_background_w) AM_BASE(&goal92_back_data)
66   AM_RANGE(0x101000, 0x1017ff) AM_RAM_WRITE(goal92_foreground_w) AM_BASE(&goal92_fore_data)
67   AM_RANGE(0x101800, 0x101fff) AM_RAM // it has tiles for clouds, but they aren't used
68   AM_RANGE(0x102000, 0x102fff) AM_RAM_WRITE(goal92_text_w) AM_BASE(&goal92_textram)
69   AM_RANGE(0x103000, 0x103fff) AM_RAM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE(&paletteram16)
70   AM_RANGE(0x104000, 0x13ffff) AM_RAM
7871   AM_RANGE(0x140000, 0x1407ff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)
7972   AM_RANGE(0x140800, 0x140801) AM_WRITENOP
8073   AM_RANGE(0x140802, 0x140803) AM_WRITENOP
74   AM_RANGE(0x180000, 0x18000f) AM_READ(goal92_inputs_r)
8175   AM_RANGE(0x180008, 0x180009) AM_WRITE(goal92_sound_command_w)
8276   AM_RANGE(0x18000a, 0x18000b) AM_WRITENOP
8377   AM_RANGE(0x180010, 0x180017) AM_WRITE(SMH_RAM) AM_BASE(&goal92_scrollram16)
84   AM_RANGE(0x18001c, 0x18001d) AM_WRITE(goal92_fg_bank_w)
78   AM_RANGE(0x18001c, 0x18001d) AM_READWRITE(goal92_fg_bank_r, goal92_fg_bank_w)
8579ADDRESS_MAP_END
8680
8781/* Sound CPU */
r4679r4680
234228/* handler called by the 2203 emulator when the internal timers cause an IRQ */
235229static void irqhandler(const device_config *device, int irq)
236230{
237   cpu_set_input_line(device->machine->cpu[1], INPUT_LINE_NMI, irq ? ASSERT_LINE : CLEAR_LINE);
231   cputag_set_input_line(device->machine, "audiocpu", INPUT_LINE_NMI, irq ? ASSERT_LINE : CLEAR_LINE);
238232}
239233
240234static const ym2203_interface ym2203_config =
r4679r4680
256250
257251   toggle ^= 1;
258252   if(toggle)
259      cpu_set_input_line(device->machine->cpu[1], INPUT_LINE_NMI, PULSE_LINE);
253      cputag_set_input_line(device->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
260254}
261255
262256static const msm5205_interface msm5205_config =
r4679r4680
315309
316310   /* basic machine hardware */
317311   MDRV_CPU_ADD("maincpu", M68000,12000000)
318   MDRV_CPU_PROGRAM_MAP(goal92_readmem,goal92_writemem)
312   MDRV_CPU_PROGRAM_MAP(goal92_map,0)
319313   MDRV_CPU_VBLANK_INT("screen", irq6_line_hold) /* VBL */
320314
321315   MDRV_CPU_ADD("audiocpu", Z80, 2500000)
src/mame/drivers/bishi.c
r4679r4680
278278   PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_START2 )
279279INPUT_PORTS_END
280280
281
282/* The game will respond to the 'player 2' inputs from the normal
283   input define if mapped, however, the game will function in an abnormal way
284   as the game code isn't designed to handle it.  The 'player 3' inputs from
285   the above input define are the actual ones used for player 2 on this */
286static INPUT_PORTS_START( bishi2p )
287   /* Currently, this "IN0" is not read */
288   PORT_START("IN0")
289   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
290   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
291   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN3 )
292   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN4 )
293   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
294   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SERVICE2 )
295   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SERVICE3 )
296   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_SERVICE4 )
297
298   PORT_START("DSW")
299   PORT_DIPNAME( 0x0007, 0x0004, DEF_STR( Difficulty ) )
300   PORT_DIPSETTING(      0x0007, DEF_STR( Easiest ) )
301    PORT_DIPSETTING(      0x0006, DEF_STR( Very_Easy) )
302   PORT_DIPSETTING(      0x0005, DEF_STR( Easy ) )
303   PORT_DIPSETTING(      0x0004, DEF_STR( Medium ) )
304   PORT_DIPSETTING(      0x0003, "Medium Hard" )
305   PORT_DIPSETTING(      0x0002, DEF_STR( Hard ) )
306   PORT_DIPSETTING(      0x0001, DEF_STR( Very_Hard ) )
307   PORT_DIPSETTING(      0x0000, DEF_STR( Hardest ) )
308   PORT_DIPNAME( 0x0038, 0x0028, DEF_STR( Lives ) )
309   PORT_DIPSETTING(      0x0038, "1" )
310   PORT_DIPSETTING(      0x0030, "2" )
311   PORT_DIPSETTING(      0x0028, "3" )
312   PORT_DIPSETTING(      0x0020, "4" )
313   PORT_DIPSETTING(      0x0018, "5" )
314   PORT_DIPSETTING(      0x0010, "6" )
315   PORT_DIPSETTING(      0x0008, "7" )
316   PORT_DIPSETTING(      0x0000, "8" )
317   PORT_DIPNAME( 0x00c0, 0x00c0, DEF_STR( Demo_Sounds ) )
318   PORT_DIPSETTING(      0x00c0, "All The Time" )
319   PORT_DIPSETTING(      0x0080, "Loop At 2 Times" )
320   PORT_DIPSETTING(      0x0040, "Loop At 4 Times" )
321   PORT_DIPSETTING(      0x0000, "No Sounds" )
322   PORT_DIPNAME( 0x0f00, 0x0f00, DEF_STR( Coinage ) )
323   PORT_DIPSETTING(      0x0200, DEF_STR( 4C_1C ) )
324   PORT_DIPSETTING(      0x0500, DEF_STR( 3C_1C ) )
325   PORT_DIPSETTING(      0x0800, DEF_STR( 2C_1C ) )
326   PORT_DIPSETTING(      0x0400, DEF_STR( 3C_2C ) )
327   PORT_DIPSETTING(      0x0100, DEF_STR( 4C_3C ) )
328   PORT_DIPSETTING(      0x0f00, DEF_STR( 1C_1C ) )
329   PORT_DIPSETTING(      0x0000, DEF_STR( 4C_5C ) )
330   PORT_DIPSETTING(      0x0300, DEF_STR( 3C_4C ) )
331   PORT_DIPSETTING(      0x0700, DEF_STR( 2C_3C ) )
332   PORT_DIPSETTING(      0x0e00, DEF_STR( 1C_2C ) )
333   PORT_DIPSETTING(      0x0600, DEF_STR( 2C_5C ) )
334   PORT_DIPSETTING(      0x0d00, DEF_STR( 1C_3C ) )
335   PORT_DIPSETTING(      0x0c00, DEF_STR( 1C_4C ) )
336   PORT_DIPSETTING(      0x0b00, DEF_STR( 1C_5C ) )
337   PORT_DIPSETTING(      0x0a00, DEF_STR( 1C_6C ) )
338   PORT_DIPSETTING(      0x0900, DEF_STR( 1C_7C ) )
339   PORT_DIPNAME( 0x1000, 0x1000, DEF_STR( Free_Play ))
340   PORT_DIPSETTING(      0x1000, DEF_STR(No))
341   PORT_DIPSETTING(      0x0000, DEF_STR(Yes))
342   PORT_DIPNAME( 0x2000, 0x2000, "Slack Difficulty")
343   PORT_DIPSETTING(      0x2000, DEF_STR(Off))
344   PORT_DIPSETTING(      0x0000, DEF_STR(On))
345   PORT_DIPNAME( 0x4000, 0x0000, "Title Demo")
346   PORT_DIPSETTING(      0x4000, "At 1 Loop")
347   PORT_DIPSETTING(      0x0000, "At Every Gamedemo")
348   PORT_DIPNAME( 0x8000, 0x0000, "Gamedemo")
349   PORT_DIPSETTING(      0x8000, "4 Kinds")
350   PORT_DIPSETTING(      0x0000, "7 Kinds")
351
352   PORT_START("SYSTEM")
353   PORT_BIT( 0x00ff, IP_ACTIVE_LOW, IPT_UNUSED )
354   PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_UNKNOWN )
355   PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_UNKNOWN )
356   PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_UNKNOWN )
357   PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_COIN1 )
358   PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNKNOWN )
359   PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNKNOWN )
360   PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN )
361   PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
362
363   PORT_START("INPUTS")
364   PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
365   PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
366   PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2)
367   PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_START2 )
368   PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_UNKNOWN )
369   PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN )
370   PORT_SERVICE_NO_TOGGLE(0x0040, IP_ACTIVE_LOW)
371   PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_SERVICE1 )
372   PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
373   PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1)
374   PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1)
375   PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_START1 )
376   PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNUSED ) // 'p2' A
377   PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNUSED ) // 'p2' B
378   PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNUSED ) // 'p2' C
379   PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNUSED ) // 'p2' START
380INPUT_PORTS_END
381
382
281383static MACHINE_RESET( bishi )
282384{
283385}
r4679r4680
285387static void sound_irq_gen(const device_config *device, int state)
286388{
287389   if (state)
288      cpu_set_input_line(device->machine->cpu[0], M68K_IRQ_1, ASSERT_LINE);
390      cputag_set_input_line(device->machine, "maincpu", M68K_IRQ_1, ASSERT_LINE);
289391   else
290      cpu_set_input_line(device->machine->cpu[0], M68K_IRQ_1, CLEAR_LINE);
392      cputag_set_input_line(device->machine, "maincpu", M68K_IRQ_1, CLEAR_LINE);
291393}
292394
293395static const ymz280b_interface ymz280b_intf =
r4679r4680
396498ROM_END
397499
398500
399GAME( 1996, bishi,    0,      bishi, bishi, 0, ROT0, "Konami", "Bishi Bashi Championship Mini Game Senshuken (ver JAA)", GAME_IMPERFECT_GRAPHICS)
400GAME( 1998, sbishi,   0,      bishi, bishi, 0, ROT0, "Konami", "Super Bishi Bashi Championship (ver JAA)", GAME_IMPERFECT_GRAPHICS)
401GAME( 1998, sbishik,  sbishi, bishi, bishi, 0, ROT0, "Konami", "Super Bishi Bashi Championship (ver KAA)", GAME_IMPERFECT_GRAPHICS)
501GAME( 1996, bishi,    0,      bishi, bishi, 0, ROT0, "Konami", "Bishi Bashi Championship Mini Game Senshuken (ver JAA, 3 Players)", GAME_IMPERFECT_GRAPHICS)
502GAME( 1998, sbishi,   0,      bishi, bishi2p, 0, ROT0, "Konami", "Super Bishi Bashi Championship (ver JAA, 2 Players)", GAME_IMPERFECT_GRAPHICS)
503GAME( 1998, sbishik,  sbishi, bishi, bishi, 0, ROT0, "Konami", "Super Bishi Bashi Championship (ver KAA, 3 Players)", GAME_IMPERFECT_GRAPHICS)
src/mame/drivers/vamphalf.c
r4679r4680
16271627         cpu_eat_cycles(space->cpu, 50);
16281628   }
16291629
1630   return wram[(0x00906fc/2)+offset];
1630   return wram[(0x00906fc / 2)+offset];
16311631}
16321632
16331633static DRIVER_INIT( vamphalf )
16341634{
1635   memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x0004a840, 0x0004a843, 0, 0, vamphalf_speedup_r );
1635   memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x0004a840, 0x0004a843, 0, 0, vamphalf_speedup_r );
16361636
16371637   palshift = 0;
16381638   flip_bit = 0x80;
r4679r4680
16401640
16411641static DRIVER_INIT( vamphafk )
16421642{
1643   memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x0004a6d0, 0x0004a6d3, 0, 0, vamphafk_speedup_r );
1643   memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x0004a6d0, 0x0004a6d3, 0, 0, vamphafk_speedup_r );
16441644
16451645   palshift = 0;
16461646   flip_bit = 0x80;
r4679r4680
16481648
16491649static DRIVER_INIT( misncrft )
16501650{
1651   memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x00072eb4, 0x00072eb7, 0, 0, misncrft_speedup_r );
1651   memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x00072eb4, 0x00072eb7, 0, 0, misncrft_speedup_r );
16521652
16531653   palshift = 0;
16541654   flip_bit = 1;
r4679r4680
16561656
16571657static DRIVER_INIT( coolmini )
16581658{
1659   memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x000d2e80, 0x000d2e83, 0, 0, coolmini_speedup_r );
1659   memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x000d2e80, 0x000d2e83, 0, 0, coolmini_speedup_r );
16601660
16611661   palshift = 0;
16621662   flip_bit = 1;
r4679r4680
16641664
16651665static DRIVER_INIT( suplup )
16661666{
1667   memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x0011605c, 0x0011605f, 0, 0, suplup_speedup_r );
1667   memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x0011605c, 0x0011605f, 0, 0, suplup_speedup_r );
16681668
16691669   palshift = 8;
16701670   /* no flipscreen */
r4679r4680
16721672
16731673static DRIVER_INIT( luplup )
16741674{
1675   memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x00115e84, 0x00115e87, 0, 0, luplup_speedup_r );
1675   memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x00115e84, 0x00115e87, 0, 0, luplup_speedup_r );
16761676
16771677   palshift = 8;
16781678   /* no flipscreen */
r4679r4680
16801680
16811681static DRIVER_INIT( luplup29 )
16821682{
1683   memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x00113f08, 0x00113f0b, 0, 0, luplup29_speedup_r );
1683   memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x00113f08, 0x00113f0b, 0, 0, luplup29_speedup_r );
16841684
16851685   palshift = 8;
16861686   /* no flipscreen */
r4679r4680
16881688
16891689static DRIVER_INIT( puzlbang )
16901690{
1691   memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x00113ecc, 0x00113ecf, 0, 0, puzlbang_speedup_r );
1691   memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x00113ecc, 0x00113ecf, 0, 0, puzlbang_speedup_r );
16921692
16931693   palshift = 8;
16941694   /* no flipscreen */
r4679r4680
16961696
16971697static DRIVER_INIT( wyvernwg )
16981698{
1699   memory_install_read32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x00b56fc, 0x00b56ff, 0, 0, wyvernwg_speedup_r );
1699   memory_install_read32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x00b56fc, 0x00b56ff, 0, 0, wyvernwg_speedup_r );
17001700
17011701   palshift = 0;
17021702   flip_bit = 1;
r4679r4680
17071707
17081708static DRIVER_INIT( finalgdr )
17091709{
1710   finalgdr_backupram = auto_malloc(0x80*0x100);
1711   memory_install_read32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x005e874, 0x005e877, 0, 0, finalgdr_speedup_r );
1710   finalgdr_backupram = auto_alloc_array(machine, UINT8, 0x80*0x100);
1711   memory_install_read32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x005e874, 0x005e877, 0, 0, finalgdr_speedup_r );
17121712
17131713   palshift = 0;
17141714   flip_bit = 1; //?
r4679r4680
17191719
17201720static DRIVER_INIT( dquizgo2 )
17211721{
1722   memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x00cde70, 0x00cde73, 0, 0, dquizgo2_speedup_r );
1722   memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x00cde70, 0x00cde73, 0, 0, dquizgo2_speedup_r );
17231723
17241724   palshift = 0;
17251725   flip_bit = 1;
r4679r4680
17271727
17281728static DRIVER_INIT( aoh )
17291729{
1730   memory_install_read32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x028a09c, 0x028a09f, 0, 0, aoh_speedup_r );
1730   memory_install_read32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x028a09c, 0x028a09f, 0, 0, aoh_speedup_r );
17311731
17321732   palshift = 0;
17331733   /* no flipscreen */
r4679r4680
17351735
17361736static DRIVER_INIT( jmpbreak )
17371737{
1738   memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x00906fc, 0x00906ff, 0, 0, jmpbreak_speedup_r );
1739   memory_install_write16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xe0000000, 0xe0000003, 0, 0, jmpbreak_flipscreen_w );
1738   memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x00906fc, 0x00906ff, 0, 0, jmpbreak_speedup_r );
1739   memory_install_write16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xe0000000, 0xe0000003, 0, 0, jmpbreak_flipscreen_w );
17401740
17411741   palshift = 0;
17421742}
src/mame/drivers/mayumi.c
r4679r4680
1212
1313#define MCLK 10000000
1414
15extern UINT8 *mayumi_videoram;
16WRITE8_HANDLER( mayumi_videoram_w );
1517VIDEO_START( mayumi );
1618VIDEO_UPDATE( mayumi );
1719
18WRITE8_HANDLER( mayumi_videoram_w );
19READ8_HANDLER( mayumi_videoram_r );
20
2120static int int_enable;
2221static int input_sel;
2322
r4679r4680
4241
4342static MACHINE_RESET( mayumi )
4443{
45   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
46   bank_sel_w(space,0,0);
44   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
45   bank_sel_w(space, 0, 0);
4746}
4847
4948static WRITE8_HANDLER( input_sel_w )
r4679r4680
7574
7675/****************************************************************************/
7776
78static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 )
79   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
80   AM_RANGE(0x8000, 0xbfff) AM_READ(SMH_BANK1)
81   AM_RANGE(0xc000, 0xdfff) AM_READ(SMH_RAM)
82   AM_RANGE(0xe000, 0xf7ff) AM_READ(mayumi_videoram_r)
77static ADDRESS_MAP_START( mayumi_map, ADDRESS_SPACE_PROGRAM, 8 )
78   AM_RANGE(0x0000, 0x7fff) AM_ROM
79   AM_RANGE(0x8000, 0xbfff) AM_ROMBANK(1)
80   AM_RANGE(0xc000, 0xdfff) AM_RAM AM_BASE(&generic_nvram) AM_SIZE(&generic_nvram_size)
81   AM_RANGE(0xe000, 0xf7ff) AM_RAM_WRITE(mayumi_videoram_w) AM_BASE(&mayumi_videoram)
8382ADDRESS_MAP_END
8483
85static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 )
86   AM_RANGE(0x0000, 0xbfff) AM_WRITE(SMH_ROM)
87   AM_RANGE(0xc000, 0xdfff) AM_WRITE(SMH_RAM) AM_BASE(&generic_nvram) AM_SIZE(&generic_nvram_size)
88   AM_RANGE(0xe000, 0xf7ff) AM_WRITE(mayumi_videoram_w)
89ADDRESS_MAP_END
9084
91
92static ADDRESS_MAP_START( io_map, ADDRESS_SPACE_IO, 8 )
85static ADDRESS_MAP_START( mayumi_io_map, ADDRESS_SPACE_IO, 8 )
9386   ADDRESS_MAP_GLOBAL_MASK(0xff)
9487   AM_RANGE(0x30, 0x30) AM_READ_PORT("IN0") AM_WRITE(bank_sel_w)
9588   AM_RANGE(0xc0, 0xc0) AM_WRITE(input_sel_w)
r4679r4680
279272
280273   /* basic machine hardware */
281274   MDRV_CPU_ADD("maincpu", Z80, MCLK/2) /* 5.000 MHz ? */
282   MDRV_CPU_PROGRAM_MAP(readmem,writemem)
283   MDRV_CPU_IO_MAP(io_map,0)
275   MDRV_CPU_PROGRAM_MAP(mayumi_map,0)
276   MDRV_CPU_IO_MAP(mayumi_io_map,0)
284277   MDRV_CPU_VBLANK_INT("screen", mayumi_interrupt)
285278
286279   MDRV_MACHINE_RESET( mayumi )
r4679r4680
334327ROM_END
335328
336329GAME( 1988, mayumi, 0, mayumi, mayumi, 0, ROT0, "[Sanritsu] Victory L.L.C.",  "Kikiippatsu Mayumi-chan (Japan)", 0 )
337
src/mame/drivers/poolshrk.c
r4679r4680
9292
9393static READ8_HANDLER( poolshrk_irq_reset_r )
9494{
95   cpu_set_input_line(space->machine->cpu[0], 0, CLEAR_LINE);
95   cputag_set_input_line(space->machine, "maincpu", 0, CLEAR_LINE);
9696
9797   return 0;
9898}
src/mame/drivers/raiden.c
r4679r4680
228228
229229static VIDEO_EOF( raiden )
230230{
231   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
231   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
232232   buffer_spriteram16_w(space,0,0,0xffff); /* Could be a memory location instead */
233233}
234234
r4679r4680
474474
475475static DRIVER_INIT( raiden )
476476{
477   memory_install_read16_handler(cpu_get_address_space(machine->cpu[1], ADDRESS_SPACE_PROGRAM), 0x4008, 0x4009, 0, 0, sub_cpu_spin_r);
477   memory_install_read16_handler(cputag_get_address_space(machine, "sub", ADDRESS_SPACE_PROGRAM), 0x4008, 0x4009, 0, 0, sub_cpu_spin_r);
478478}
479479
480480static void memory_patcha(running_machine *machine)
481481{
482   memory_install_read16_handler(cpu_get_address_space(machine->cpu[1], ADDRESS_SPACE_PROGRAM), 0x4008, 0x4009, 0, 0, sub_cpu_spina_r);
482   memory_install_read16_handler(cputag_get_address_space(machine, "sub", ADDRESS_SPACE_PROGRAM), 0x4008, 0x4009, 0, 0, sub_cpu_spina_r);
483483}
484484
485485/* This is based on code by Niclas Karlsson Mate, who figured out the
src/mame/drivers/alg.c
r4679r4680
198198
199199static WRITE8_DEVICE_HANDLER( alg_cia_0_porta_w )
200200{
201   const address_space *space = cputag_get_address_space(device->machine, "maincpu", ADDRESS_SPACE_PROGRAM);
202
201203   /* switch banks as appropriate */
202204   memory_set_bank(device->machine, 1, data & 1);
203205
204206   /* swap the write handlers between ROM and bank 1 based on the bit */
205207   if ((data & 1) == 0)
206208      /* overlay disabled, map RAM on 0x000000 */
207      memory_install_write16_handler(cpu_get_address_space(device->machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x000000, 0x07ffff, 0, 0, SMH_BANK1);
209      memory_install_write16_handler(space, 0x000000, 0x07ffff, 0, 0, (write16_space_func)SMH_BANK(1));
208210
209211   else
210212      /* overlay enabled, map Amiga system ROM on 0x000000 */
211      memory_install_write16_handler(cpu_get_address_space(device->machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x000000, 0x07ffff, 0, 0, SMH_UNMAP);
213      memory_install_write16_handler(space, 0x000000, 0x07ffff, 0, 0, (write16_space_func)SMH_UNMAP);
212214}
213215
214216
r4679r4680
683685{
684686   UINT32 length = memory_region_length(machine, "user2");
685687   UINT8 *rom = memory_region(machine, "user2");
686   UINT8 *original = malloc_or_die(length);
688   UINT8 *original = alloc_array_or_die(UINT8, length);
687689   UINT32 srcaddr;
688690
689691   memcpy(original, rom, length);
r4679r4680
703705{
704706   UINT32 length = memory_region_length(machine, "user2");
705707   UINT8 *rom = memory_region(machine, "user2");
706   UINT8 *original = malloc_or_die(length);
708   UINT8 *original = alloc_array_or_die(UINT8, length);
707709   UINT32 srcaddr;
708710
709711   memcpy(original, rom, length);
r4679r4680
722724{
723725   UINT32 length = memory_region_length(machine, "user2");
724726   UINT8 *rom = memory_region(machine, "user2");
725   UINT8 *original = malloc_or_die(length);
727   UINT8 *original = alloc_array_or_die(UINT8, length);
726728   UINT32 srcaddr;
727729
728730   memcpy(original, rom, length);
r4679r4680
743745{
744746   /* NOT DONE TODO FIGURE OUT THE RIGHT ORDER!!!! */
745747   UINT8 *rom = memory_region(machine, "user2");
746   char *decrypted = auto_malloc(0x40000);
748   UINT8 *decrypted = auto_alloc_array(machine, UINT8, 0x40000);
747749   int i;
748750
749751   static const int shuffle[] =
src/mame/drivers/galaxia.c
r4679r4680
4141   int height = video_screen_get_height(machine->primary_screen);
4242
4343   /* configure the S2636 chips */
44   s2636_0 = s2636_config(galaxia_s2636_0_ram, height, width,  3, -27);
45   s2636_1 = s2636_config(galaxia_s2636_1_ram, height, width,  3, -27);
46   s2636_2 = s2636_config(galaxia_s2636_2_ram, height, width,  3, -27);
44   s2636_0 = s2636_config(machine, galaxia_s2636_0_ram, height, width,  3, -27);
45   s2636_1 = s2636_config(machine, galaxia_s2636_1_ram, height, width,  3, -27);
46   s2636_2 = s2636_config(machine, galaxia_s2636_2_ram, height, width,  3, -27);
4747}
4848
4949static VIDEO_UPDATE( galaxia )
r4679r4680
318318
319319static DRIVER_INIT(galaxia)
320320{
321   galaxia_color=auto_malloc(0x400);
321   galaxia_color=auto_alloc_array(machine, UINT8, 0x400);
322322}
323323
324324GAME( 1979, galaxia, 0, galaxia, galaxia, galaxia, ROT90, "Zaccaria", "Galaxia", GAME_NOT_WORKING|GAME_NO_SOUND )
src/mame/drivers/vegaeo.c
r4679r4680
130130
131131static VIDEO_START( vega )
132132{
133   vega_vram = auto_malloc(0x14000*2);
133   vega_vram = auto_alloc_array(machine, UINT32, 0x14000*2/4);
134134}
135135
136136static VIDEO_UPDATE( vega )
src/mame/drivers/fromanc2.c
r4679r4680
9797   soundlatch_w(space, offset, (data >> 8) & 0xff);   // 1P (LEFT)
9898   soundlatch2_w(space, offset, data & 0xff);         // 2P (RIGHT)
9999
100   cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_NMI, PULSE_LINE);
100   cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
101101   fromanc2_sndcpu_nmi_flag = 0;
102102}
103103
r4679r4680
194194{
195195   fromanc2_datalatch1 = data;
196196
197   cpu_set_input_line(space->machine->cpu[2], 0, HOLD_LINE);
197   cputag_set_input_line(space->machine, "sub", 0, HOLD_LINE);
198198   fromanc2_subcpu_int_flag = 0;
199199}
200200
201201static READ16_HANDLER( fromanc2_subcpu_r )
202202{
203   cpu_set_input_line(space->machine->cpu[2], INPUT_LINE_NMI, PULSE_LINE);
203   cputag_set_input_line(space->machine, "sub", INPUT_LINE_NMI, PULSE_LINE);
204204   fromanc2_subcpu_nmi_flag = 0;
205205
206206   return (fromanc2_datalatch_2h << 8) | fromanc2_datalatch_2l;
r4679r4680
259259//  MAIN Program (fromanc2, fromancr, fromanc4)
260260// ----------------------------------------------------------------------------
261261
262static ADDRESS_MAP_START( fromanc2_readmem_main, ADDRESS_SPACE_PROGRAM, 16 )
263   AM_RANGE(0x000000, 0x07ffff) AM_READ(SMH_ROM)            // MAIN ROM
262static ADDRESS_MAP_START( fromanc2_main_map, ADDRESS_SPACE_PROGRAM, 16 )
263   AM_RANGE(0x000000, 0x07ffff) AM_ROM                           // MAIN ROM
264264
265   AM_RANGE(0x802000, 0x802fff) AM_READNOP            // ???
265   AM_RANGE(0x802000, 0x802fff) AM_READNOP                        // ???
266   AM_RANGE(0x800000, 0x803fff) AM_WRITE(fromanc2_videoram_0_w)      // VRAM 0, 1 (1P)
267   AM_RANGE(0x880000, 0x883fff) AM_WRITE(fromanc2_videoram_1_w)      // VRAM 2, 3 (1P)
268   AM_RANGE(0x900000, 0x903fff) AM_WRITE(fromanc2_videoram_2_w)      // VRAM 0, 1 (2P)
269   AM_RANGE(0x980000, 0x983fff) AM_WRITE(fromanc2_videoram_3_w)      // VRAM 2, 3 (2P)
266270
267   AM_RANGE(0xa00000, 0xa00fff) AM_READ(fromanc2_paletteram_0_r)// PALETTE (1P)
268   AM_RANGE(0xa80000, 0xa80fff) AM_READ(fromanc2_paletteram_1_r)// PALETTE (2P)
271   AM_RANGE(0xa00000, 0xa00fff) AM_READWRITE(fromanc2_paletteram_0_r, fromanc2_paletteram_0_w)   // PALETTE (1P)
272   AM_RANGE(0xa80000, 0xa80fff) AM_READWRITE(fromanc2_paletteram_1_r, fromanc2_paletteram_1_w)   // PALETTE (2P)
269273
270   AM_RANGE(0xd01100, 0xd01101) AM_READ_PORT("SYSTEM")
271   AM_RANGE(0xd01300, 0xd01301) AM_READ(fromanc2_subcpu_r    )   // SUB CPU READ
272   AM_RANGE(0xd01800, 0xd01801) AM_READ(fromanc2_keymatrix_r)   // INPUT KEY MATRIX
274   AM_RANGE(0xd00000, 0xd00023) AM_WRITE(fromanc2_gfxreg_0_w)         // SCROLL REG (1P/2P)
275   AM_RANGE(0xd00100, 0xd00123) AM_WRITE(fromanc2_gfxreg_2_w)         // SCROLL REG (1P/2P)
276   AM_RANGE(0xd00200, 0xd00223) AM_WRITE(fromanc2_gfxreg_1_w)         // SCROLL REG (1P/2P)
277   AM_RANGE(0xd00300, 0xd00323) AM_WRITE(fromanc2_gfxreg_3_w)         // SCROLL REG (1P/2P)
273278
274   AM_RANGE(0xd80000, 0xd8ffff) AM_READ(SMH_RAM)            // WORK RAM
275ADDRESS_MAP_END
279   AM_RANGE(0xd00400, 0xd00413) AM_WRITENOP                     // ???
280   AM_RANGE(0xd00500, 0xd00513) AM_WRITENOP                     // ???
276281
277static ADDRESS_MAP_START( fromanc2_writemem_main, ADDRESS_SPACE_PROGRAM, 16 )
278   AM_RANGE(0x000000, 0x07ffff) AM_WRITE(SMH_ROM)            // MAIN ROM
279
280   AM_RANGE(0x800000, 0x803fff) AM_WRITE(fromanc2_videoram_0_w)   // VRAM 0, 1 (1P)
281   AM_RANGE(0x880000, 0x883fff) AM_WRITE(fromanc2_videoram_1_w)   // VRAM 2, 3 (1P)
282   AM_RANGE(0x900000, 0x903fff) AM_WRITE(fromanc2_videoram_2_w)   // VRAM 0, 1 (2P)
283   AM_RANGE(0x980000, 0x983fff) AM_WRITE(fromanc2_videoram_3_w)   // VRAM 2, 3 (2P)
284
285   AM_RANGE(0xa00000, 0xa00fff) AM_WRITE(fromanc2_paletteram_0_w)// PALETTE (1P)
286   AM_RANGE(0xa80000, 0xa80fff) AM_WRITE(fromanc2_paletteram_1_w)// PALETTE (2P)
287
288   AM_RANGE(0xd00000, 0xd00023) AM_WRITE(fromanc2_gfxreg_0_w)   // SCROLL REG (1P/2P)
289   AM_RANGE(0xd00100, 0xd00123) AM_WRITE(fromanc2_gfxreg_2_w)   // SCROLL REG (1P/2P)
290   AM_RANGE(0xd00200, 0xd00223) AM_WRITE(fromanc2_gfxreg_1_w)   // SCROLL REG (1P/2P)
291   AM_RANGE(0xd00300, 0xd00323) AM_WRITE(fromanc2_gfxreg_3_w)   // SCROLL REG (1P/2P)
292
293   AM_RANGE(0xd00400, 0xd00413) AM_WRITENOP            // ???
294   AM_RANGE(0xd00500, 0xd00513) AM_WRITENOP            // ???
295
296   AM_RANGE(0xd01000, 0xd01001) AM_WRITE(fromanc2_sndcmd_w)      // SOUND REQ (1P/2P)
297   AM_RANGE(0xd01200, 0xd01201) AM_WRITE(fromanc2_subcpu_w)      // SUB CPU WRITE
298   AM_RANGE(0xd01400, 0xd01401) AM_WRITE(fromanc2_gfxbank_0_w)   // GFXBANK (1P)
299   AM_RANGE(0xd01500, 0xd01501) AM_WRITE(fromanc2_gfxbank_1_w)   // GFXBANK (2P)
300   AM_RANGE(0xd01600, 0xd01601) AM_WRITE(fromanc2_eeprom_w)      // EEPROM DATA
301   AM_RANGE(0xd01a00, 0xd01a01) AM_WRITE(fromanc2_portselect_w)   // PORT SELECT (1P/2P)
302
303   AM_RANGE(0xd80000, 0xd8ffff) AM_WRITE(SMH_RAM)            // WORK RAM
304ADDRESS_MAP_END
305
306static ADDRESS_MAP_START( fromancr_readmem_main, ADDRESS_SPACE_PROGRAM, 16 )
307   AM_RANGE(0x000000, 0x07ffff) AM_READ(SMH_ROM)            // MAIN ROM
308
309   AM_RANGE(0xa00000, 0xa00fff) AM_READ(fromancr_paletteram_0_r)// PALETTE (1P)
310   AM_RANGE(0xa80000, 0xa80fff) AM_READ(fromancr_paletteram_1_r)// PALETTE (2P)
311
282   AM_RANGE(0xd01000, 0xd01001) AM_WRITE(fromanc2_sndcmd_w)         // SOUND REQ (1P/2P)
312283   AM_RANGE(0xd01100, 0xd01101) AM_READ_PORT("SYSTEM")
313   AM_RANGE(0xd01300, 0xd01301) AM_READ(fromanc2_subcpu_r)      // SUB CPU READ
314   AM_RANGE(0xd01800, 0xd01801) AM_READ(fromanc2_keymatrix_r)   // INPUT KEY MATRIX
284   AM_RANGE(0xd01200, 0xd01201) AM_WRITE(fromanc2_subcpu_w)         // SUB CPU WRITE
285   AM_RANGE(0xd01300, 0xd01301) AM_READ(fromanc2_subcpu_r    )         // SUB CPU READ
286   AM_RANGE(0xd01400, 0xd01401) AM_WRITE(fromanc2_gfxbank_0_w)         // GFXBANK (1P)
287   AM_RANGE(0xd01500, 0xd01501) AM_WRITE(fromanc2_gfxbank_1_w)         // GFXBANK (2P)
288   AM_RANGE(0xd01600, 0xd01601) AM_WRITE(fromanc2_eeprom_w)         // EEPROM DATA
289   AM_RANGE(0xd01800, 0xd01801) AM_READ(fromanc2_keymatrix_r)         // INPUT KEY MATRIX
290   AM_RANGE(0xd01a00, 0xd01a01) AM_WRITE(fromanc2_portselect_w)      // PORT SELECT (1P/2P)
315291
316   AM_RANGE(0xd80000, 0xd8ffff) AM_READ(SMH_RAM)            // WORK RAM
292   AM_RANGE(0xd80000, 0xd8ffff) AM_RAM                           // WORK RAM
317293ADDRESS_MAP_END
318294
319static ADDRESS_MAP_START( fromancr_writemem_main, ADDRESS_SPACE_PROGRAM, 16 )
320   AM_RANGE(0x000000, 0x07ffff) AM_WRITE(SMH_ROM)            // MAIN ROM
295static ADDRESS_MAP_START( fromancr_main_map, ADDRESS_SPACE_PROGRAM, 16 )
296   AM_RANGE(0x000000, 0x07ffff) AM_ROM                           // MAIN ROM
321297
322   AM_RANGE(0x800000, 0x803fff) AM_WRITE(fromancr_videoram_0_w)   // VRAM BG (1P/2P)
323   AM_RANGE(0x880000, 0x883fff) AM_WRITE(fromancr_videoram_1_w)   // VRAM FG (1P/2P)
324   AM_RANGE(0x900000, 0x903fff) AM_WRITE(fromancr_videoram_2_w)   // VRAM TEXT (1P/2P)
325   AM_RANGE(0x980000, 0x983fff) AM_WRITENOP            // VRAM Unused ?
298   AM_RANGE(0x800000, 0x803fff) AM_WRITE(fromancr_videoram_0_w)      // VRAM BG (1P/2P)
299   AM_RANGE(0x880000, 0x883fff) AM_WRITE(fromancr_videoram_1_w)      // VRAM FG (1P/2P)
300   AM_RANGE(0x900000, 0x903fff) AM_WRITE(fromancr_videoram_2_w)      // VRAM TEXT (1P/2P)
301   AM_RANGE(0x980000, 0x983fff) AM_WRITENOP                     // VRAM Unused ?
326302
327   AM_RANGE(0xa00000, 0xa00fff) AM_WRITE(fromancr_paletteram_0_w)// PALETTE (1P)
328   AM_RANGE(0xa80000, 0xa80fff) AM_WRITE(fromancr_paletteram_1_w)// PALETTE (2P)
303   AM_RANGE(0xa00000, 0xa00fff) AM_READWRITE(fromancr_paletteram_0_r, fromancr_paletteram_0_w)   // PALETTE (1P)
304   AM_RANGE(0xa80000, 0xa80fff) AM_READWRITE(fromancr_paletteram_1_r, fromancr_paletteram_0_w)   // PALETTE (2P)
329305
330   AM_RANGE(0xd00000, 0xd00023) AM_WRITE(fromancr_gfxreg_1_w)   // SCROLL REG (1P/2P)
331   AM_RANGE(0xd00100, 0xd00123) AM_WRITE(fromancr_gfxreg_0_w)   // SCROLL REG (1P/2P)
306   AM_RANGE(0xd00000, 0xd00023) AM_WRITE(fromancr_gfxreg_1_w)         // SCROLL REG (1P/2P)
307   AM_RANGE(0xd00200, 0xd002ff) AM_WRITENOP                     // ?
308   AM_RANGE(0xd00400, 0xd00413) AM_WRITENOP                     // ???
309   AM_RANGE(0xd00500, 0xd00513) AM_WRITENOP                     // ???
310   AM_RANGE(0xd01000, 0xd01001) AM_WRITE(fromanc2_sndcmd_w)         // SOUND REQ (1P/2P)
311   AM_RANGE(0xd00100, 0xd00123) AM_WRITE(fromancr_gfxreg_0_w)         // SCROLL REG (1P/2P)
312   AM_RANGE(0xd01100, 0xd01101) AM_READ_PORT("SYSTEM")
313   AM_RANGE(0xd01200, 0xd01201) AM_WRITE(fromanc2_subcpu_w)         // SUB CPU WRITE
314   AM_RANGE(0xd01300, 0xd01301) AM_READ(fromanc2_subcpu_r)            // SUB CPU READ
315   AM_RANGE(0xd01400, 0xd01401) AM_WRITENOP                     // COIN COUNTER ?
316   AM_RANGE(0xd01600, 0xd01601) AM_WRITE(fromancr_eeprom_w)         // EEPROM DATA, GFXBANK (1P/2P)
317   AM_RANGE(0xd01800, 0xd01801) AM_READ(fromanc2_keymatrix_r)         // INPUT KEY MATRIX
318   AM_RANGE(0xd01a00, 0xd01a01) AM_WRITE(fromanc2_portselect_w)      // PORT SELECT (1P/2P)
332319
333   AM_RANGE(0xd00200, 0xd002ff) AM_WRITENOP            // ?
334
335   AM_RANGE(0xd00400, 0xd00413) AM_WRITENOP            // ???
336   AM_RANGE(0xd00500, 0xd00513) AM_WRITENOP            // ???
337
338   AM_RANGE(0xd01000, 0xd01001) AM_WRITE(fromanc2_sndcmd_w)      // SOUND REQ (1P/2P)
339   AM_RANGE(0xd01200, 0xd01201) AM_WRITE(fromanc2_subcpu_w)      // SUB CPU WRITE
340   AM_RANGE(0xd01400, 0xd01401) AM_WRITENOP            // COIN COUNTER ?
341   AM_RANGE(0xd01600, 0xd01601) AM_WRITE(fromancr_eeprom_w)      // EEPROM DATA, GFXBANK (1P/2P)
342   AM_RANGE(0xd01a00, 0xd01a01) AM_WRITE(fromanc2_portselect_w)   // PORT SELECT (1P/2P)
343
344   AM_RANGE(0xd80000, 0xd8ffff) AM_WRITE(SMH_RAM)            // WORK RAM
320   AM_RANGE(0xd80000, 0xd8ffff) AM_RAM                           // WORK RAM
345321ADDRESS_MAP_END
346322
347static ADDRESS_MAP_START( fromanc4_readmem_main, ADDRESS_SPACE_PROGRAM, 16 )
348   AM_RANGE(0x000000, 0x07ffff) AM_READ(SMH_ROM)            // MAIN ROM
349   AM_RANGE(0x400000, 0x7fffff) AM_READ(SMH_ROM)            // DATA ROM
323static ADDRESS_MAP_START( fromanc4_main_map, ADDRESS_SPACE_PROGRAM, 16 )
324   AM_RANGE(0x000000, 0x07ffff) AM_ROM                        // MAIN ROM
325   AM_RANGE(0x400000, 0x7fffff) AM_ROM                        // DATA ROM
350326
351   AM_RANGE(0x800000, 0x81ffff) AM_READ(SMH_RAM)            // WORK RAM
327   AM_RANGE(0x800000, 0x81ffff) AM_RAM                        // WORK RAM
352328
353   AM_RANGE(0xdb0000, 0xdb0fff) AM_READ(fromanc4_paletteram_0_r)// PALETTE (1P)
354   AM_RANGE(0xdc0000, 0xdc0fff) AM_READ(fromanc4_paletteram_1_r)// PALETTE (2P)
355
356   AM_RANGE(0xd10000, 0xd10001) AM_READ(fromanc2_keymatrix_r)   // INPUT KEY MATRIX
357   AM_RANGE(0xd20000, 0xd20001) AM_READ_PORT("SYSTEM")
358
359   AM_RANGE(0xe5000c, 0xe5000d) AM_READNOP            // EXT-COMM PORT ?
360ADDRESS_MAP_END
361
362static ADDRESS_MAP_START( fromanc4_writemem_main, ADDRESS_SPACE_PROGRAM, 16 )
363   AM_RANGE(0x000000, 0x07ffff) AM_WRITE(SMH_ROM)            // MAIN ROM
364   AM_RANGE(0x400000, 0x7fffff) AM_WRITE(SMH_ROM)            // DATA ROM
365
366   AM_RANGE(0x800000, 0x81ffff) AM_WRITE(SMH_RAM)            // WORK RAM
367
368329   AM_RANGE(0xd00000, 0xd00001) AM_WRITE(fromanc2_portselect_w)   // PORT SELECT (1P/2P)
369330
370331   AM_RANGE(0xd10000, 0xd10001) AM_WRITENOP            // ?
r4679r4680
377338   AM_RANGE(0xd90000, 0xd9ffff) AM_WRITE(fromanc4_videoram_1_w)   // VRAM BG (1P/2P)
378339   AM_RANGE(0xda0000, 0xdaffff) AM_WRITE(fromanc4_videoram_2_w)   // VRAM TEXT (1P/2P)
379340
380   AM_RANGE(0xdb0000, 0xdb0fff) AM_WRITE(fromanc4_paletteram_0_w)// PALETTE (1P)
381   AM_RANGE(0xdc0000, 0xdc0fff) AM_WRITE(fromanc4_paletteram_1_w)// PALETTE (2P)
341   AM_RANGE(0xdb0000, 0xdb0fff) AM_READWRITE(fromanc4_paletteram_0_r, fromanc4_paletteram_0_w)   // PALETTE (1P)
342   AM_RANGE(0xdc0000, 0xdc0fff) AM_READWRITE(fromanc4_paletteram_1_r, fromanc4_paletteram_0_w)   // PALETTE (2P)
382343
344   AM_RANGE(0xd10000, 0xd10001) AM_READ(fromanc2_keymatrix_r)   // INPUT KEY MATRIX
345   AM_RANGE(0xd20000, 0xd20001) AM_READ_PORT("SYSTEM")
346
383347   AM_RANGE(0xe00000, 0xe0001d) AM_WRITE(fromanc4_gfxreg_0_w)   // SCROLL, GFXBANK (1P/2P)
384348   AM_RANGE(0xe10000, 0xe1001d) AM_WRITE(fromanc4_gfxreg_1_w)   // SCROLL, GFXBANK (1P/2P)
385349   AM_RANGE(0xe20000, 0xe2001d) AM_WRITE(fromanc4_gfxreg_2_w)   // SCROLL, GFXBANK (1P/2P)
r4679r4680
388352   AM_RANGE(0xe40000, 0xe40013) AM_WRITENOP            // ???
389353
390354   AM_RANGE(0xe50000, 0xe50009) AM_WRITENOP            // EXT-COMM PORT ?
355   AM_RANGE(0xe5000c, 0xe5000d) AM_READNOP            // EXT-COMM PORT ?
391356ADDRESS_MAP_END
392357
393358
r4679r4680
395360//  Z80 SUB Program (fromanc2, fromancr)
396361// ----------------------------------------------------------------------------
397362
398static ADDRESS_MAP_START( fromanc2_readmem_sub, ADDRESS_SPACE_PROGRAM, 8 )
399   AM_RANGE(0x0000, 0x3fff) AM_READ(SMH_ROM)               // ROM
400   AM_RANGE(0x4000, 0x7fff) AM_READ(SMH_BANK1)               // ROM(BANK)
401   AM_RANGE(0x8000, 0xbfff) AM_READ(SMH_RAM)               // RAM(WORK)
402   AM_RANGE(0xc000, 0xffff) AM_READ(SMH_BANK2)               // RAM(BANK)
363static ADDRESS_MAP_START( fromanc2_sub_map, ADDRESS_SPACE_PROGRAM, 8 )
364   AM_RANGE(0x0000, 0x3fff) AM_ROM                        // ROM
365   AM_RANGE(0x4000, 0x7fff) AM_RAMBANK(1)                  // ROM(BANK) (is this comment correct?  It was in the split address maps in a RAM configuration...
366   AM_RANGE(0x8000, 0xbfff) AM_RAM                        // RAM(WORK)
367   AM_RANGE(0xc000, 0xffff) AM_RAMBANK(2)                  // RAM(BANK)
403368ADDRESS_MAP_END
404369
405static ADDRESS_MAP_START( fromanc2_writemem_sub, ADDRESS_SPACE_PROGRAM, 8 )
406   AM_RANGE(0x0000, 0x3fff) AM_WRITE(SMH_ROM)               // ROM
407   AM_RANGE(0x4000, 0x7fff) AM_WRITE(SMH_BANK1)               // ROM(BANK)
408   AM_RANGE(0x8000, 0xbfff) AM_WRITE(SMH_RAM)               // RAM(WORK)
409   AM_RANGE(0xc000, 0xffff) AM_WRITE(SMH_BANK2)               // RAM(BANK)
410ADDRESS_MAP_END
411
412370static ADDRESS_MAP_START( fromanc2_sub_io_map, ADDRESS_SPACE_IO, 8 )
413371   ADDRESS_MAP_GLOBAL_MASK(0xff)
414372   AM_RANGE(0x00, 0x00) AM_WRITE(fromanc2_subcpu_rombank_w)
r4679r4680
422380//  Z80 Sound Program (fromanc2, fromancr, fromanc4)
423381// ----------------------------------------------------------------------------
424382
425static ADDRESS_MAP_START( fromanc2_readmem_sound, ADDRESS_SPACE_PROGRAM, 8 )
426   AM_RANGE(0x0000, 0xdfff) AM_READ(SMH_ROM)
427   AM_RANGE(0xe000, 0xffff) AM_READ(SMH_RAM)
383static ADDRESS_MAP_START( fromanc2_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
384   AM_RANGE(0x0000, 0xdfff) AM_ROM
385   AM_RANGE(0xe000, 0xffff) AM_RAM
428386ADDRESS_MAP_END
429387
430static ADDRESS_MAP_START( fromanc2_writemem_sound, ADDRESS_SPACE_PROGRAM, 8 )
431   AM_RANGE(0x0000, 0xdfff) AM_WRITE(SMH_ROM)
432   AM_RANGE(0xe000, 0xffff) AM_WRITE(SMH_RAM)
433ADDRESS_MAP_END
434
435388static ADDRESS_MAP_START( fromanc2_sound_io_map, ADDRESS_SPACE_IO, 8 )
436389   ADDRESS_MAP_GLOBAL_MASK(0xff)
437390   AM_RANGE(0x00, 0x00) AM_READWRITE(soundlatch_r, SMH_NOP)         // snd cmd (1P) / ?
r4679r4680
599552
600553static void irqhandler(const device_config *device, int irq)
601554{
602   cpu_set_input_line(device->machine->cpu[1], 0, irq ? ASSERT_LINE : CLEAR_LINE);
555   cputag_set_input_line(device->machine, "audiocpu", 0, irq ? ASSERT_LINE : CLEAR_LINE);
603556}
604557
605558static const ym2610_interface ym2610_config =
r4679r4680
616569
617570   /* basic machine hardware */
618571   MDRV_CPU_ADD("maincpu", M68000,32000000/2)      /* 16.00 MHz */
619   MDRV_CPU_PROGRAM_MAP(fromanc2_readmem_main,fromanc2_writemem_main)
572   MDRV_CPU_PROGRAM_MAP(fromanc2_main_map,0)
620573   MDRV_CPU_VBLANK_INT("lscreen", fromanc2_interrupt)
621574
622575   MDRV_CPU_ADD("audiocpu", Z80,32000000/4)      /* 8.00 MHz */
623   MDRV_CPU_PROGRAM_MAP(fromanc2_readmem_sound,fromanc2_writemem_sound)
576   MDRV_CPU_PROGRAM_MAP(fromanc2_sound_map,0)
624577   MDRV_CPU_IO_MAP(fromanc2_sound_io_map,0)
625578
626579   MDRV_CPU_ADD("sub", Z80,32000000/4)      /* 8.00 MHz */
627   MDRV_CPU_PROGRAM_MAP(fromanc2_readmem_sub,fromanc2_writemem_sub)
580   MDRV_CPU_PROGRAM_MAP(fromanc2_sub_map,0)
628581   MDRV_CPU_IO_MAP(fromanc2_sub_io_map,0)
629582
630583
r4679r4680
668621
669622   /* basic machine hardware */
670623   MDRV_CPU_ADD("maincpu", M68000,32000000/2)      /* 16.00 MHz */
671   MDRV_CPU_PROGRAM_MAP(fromancr_readmem_main,fromancr_writemem_main)
624   MDRV_CPU_PROGRAM_MAP(fromancr_main_map,0)
672625   MDRV_CPU_VBLANK_INT("lscreen", fromanc2_interrupt)
673626
674627   MDRV_CPU_ADD("audiocpu", Z80,32000000/4)      /* 8.00 MHz */
675   MDRV_CPU_PROGRAM_MAP(fromanc2_readmem_sound,fromanc2_writemem_sound)
628   MDRV_CPU_PROGRAM_MAP(fromanc2_sound_map,0)
676629   MDRV_CPU_IO_MAP(fromanc2_sound_io_map,0)
677630
678631   MDRV_CPU_ADD("sub", Z80,32000000/4)      /* 8.00 MHz */
679   MDRV_CPU_PROGRAM_MAP(fromanc2_readmem_sub,fromanc2_writemem_sub)
632   MDRV_CPU_PROGRAM_MAP(fromanc2_sub_map,0)
680633   MDRV_CPU_IO_MAP(fromanc2_sub_io_map,0)
681634
682635   MDRV_MACHINE_RESET(fromancr)
r4679r4680
719672
720673   /* basic machine hardware */
721674   MDRV_CPU_ADD("maincpu", M68000,32000000/2)      /* 16.00 MHz */
722   MDRV_CPU_PROGRAM_MAP(fromanc4_readmem_main,fromanc4_writemem_main)
675   MDRV_CPU_PROGRAM_MAP(fromanc4_main_map,0)
723676   MDRV_CPU_VBLANK_INT("lscreen", fromanc2_interrupt)
724677
725678   MDRV_CPU_ADD("audiocpu", Z80,32000000/4)      /* 8.00 MHz */
726   MDRV_CPU_PROGRAM_MAP(fromanc2_readmem_sound,fromanc2_writemem_sound)
679   MDRV_CPU_PROGRAM_MAP(fromanc2_sound_map,0)
727680   MDRV_CPU_IO_MAP(fromanc2_sound_io_map,0)
728681
729682   MDRV_MACHINE_RESET(fromanc4)
r4679r4680
872825GAME( 1995, fromanc2, 0, fromanc2, fromanc2, fromanc2, ROT0, "Video System Co.", "Taisen Idol-Mahjong Final Romance 2 (Japan)", 0 )
873826GAME( 1995, fromancr, 0, fromancr, fromanc2, fromancr, ROT0, "Video System Co.", "Taisen Mahjong FinalRomance R (Japan)", 0 )
874827GAME( 1998, fromanc4, 0, fromanc4, fromanc4, fromanc4, ROT0, "Video System Co.", "Taisen Mahjong FinalRomance 4 (Japan)", 0 )
875
src/mame/drivers/gridlee.c
r4679r4680
9797static UINT8 *rand17 = NULL;
9898
9999/* local prototypes */
100static void poly17_init(void);
100static void poly17_init(running_machine *machine);
101101
102102/* local timers */
103103static emu_timer *irq_off;
r4679r4680
113113
114114static TIMER_CALLBACK( irq_off_tick )
115115{
116   cpu_set_input_line(machine->cpu[0], M6809_IRQ_LINE, CLEAR_LINE);
116   cputag_set_input_line(machine, "maincpu", M6809_IRQ_LINE, CLEAR_LINE);
117117}
118118
119119
r4679r4680
126126        timer_adjust_oneshot(irq_timer, video_screen_get_time_until_pos(machine->primary_screen, param + 64, 0), param + 64);
127127
128128   /* IRQ starts on scanline 0, 64, 128, etc. */
129   cpu_set_input_line(machine->cpu[0], M6809_IRQ_LINE, ASSERT_LINE);
129   cputag_set_input_line(machine, "maincpu", M6809_IRQ_LINE, ASSERT_LINE);
130130
131131   /* it will turn off on the next HBLANK */
132132    timer_adjust_oneshot(irq_off, video_screen_get_time_until_pos(machine->primary_screen, param, BALSENTE_HBSTART), 0);
r4679r4680
135135
136136static TIMER_CALLBACK( firq_off_tick )
137137{
138   cpu_set_input_line(machine->cpu[0], M6809_FIRQ_LINE, CLEAR_LINE);
138   cputag_set_input_line(machine, "maincpu", M6809_FIRQ_LINE, CLEAR_LINE);
139139}
140140
141141
r4679r4680
145145    timer_adjust_oneshot(firq_timer, video_screen_get_time_until_pos(machine->primary_screen, FIRQ_SCANLINE, 0), 0);
146146
147147   /* IRQ starts on scanline FIRQ_SCANLINE? */
148   cpu_set_input_line(machine->cpu[0], M6809_FIRQ_LINE, ASSERT_LINE);
148   cputag_set_input_line(machine, "maincpu", M6809_FIRQ_LINE, ASSERT_LINE);
149149
150150   /* it will turn off on the next HBLANK */
151151    timer_adjust_oneshot(firq_off, video_screen_get_time_until_pos(machine->primary_screen, FIRQ_SCANLINE, BALSENTE_HBSTART), 0);
r4679r4680
154154static MACHINE_START( gridlee )
155155{
156156    /* create the polynomial tables */
157    poly17_init();
157    poly17_init(machine);
158158
159159    state_save_register_global_array(machine, last_analog_input);
160160    state_save_register_global_array(machine, last_analog_output);
r4679r4680
233233#define POLY17_SHR   10
234234#define POLY17_ADD   0x18000
235235
236static void poly17_init(void)
236static void poly17_init(running_machine *machine)
237237{
238238   UINT32 i, x = 0;
239239   UINT8 *p, *r;
240240
241241   /* allocate memory */
242   p = poly17 = auto_malloc(2 * (POLY17_SIZE + 1));
242   p = poly17 = auto_alloc_array(machine, UINT8, 2 * (POLY17_SIZE + 1));
243243   r = rand17 = poly17 + POLY17_SIZE + 1;
244244
245245   /* generate the polynomial */
r4679r4680
311311 *************************************/
312312
313313/* CPU 1 read addresses */
314static ADDRESS_MAP_START( readmem_cpu1, ADDRESS_SPACE_PROGRAM, 8 )
315   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_RAM)
316   AM_RANGE(0x9500, 0x9501) AM_READ(analog_port_r)
317   AM_RANGE(0x9502, 0x9502) AM_READ_PORT("IN0")
318   AM_RANGE(0x9503, 0x9503) AM_READ_PORT("IN1")
319   AM_RANGE(0x9600, 0x9600) AM_READ_PORT("DSW")
320   AM_RANGE(0x9700, 0x9700) AM_READ_PORT("IN2")
321   AM_RANGE(0x9820, 0x9820) AM_READ(random_num_r)
322   AM_RANGE(0x9c00, 0x9cff) AM_READ(SMH_RAM)
323   AM_RANGE(0xa000, 0xffff) AM_READ(SMH_ROM)
324ADDRESS_MAP_END
325
326
327static ADDRESS_MAP_START( writemem_cpu1, ADDRESS_SPACE_PROGRAM, 8 )
328   AM_RANGE(0x0000, 0x07ff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram)
329   AM_RANGE(0x0800, 0x7fff) AM_WRITE(gridlee_videoram_w) AM_BASE(&videoram) AM_SIZE(&videoram_size)
314static ADDRESS_MAP_START( cpu1_map, ADDRESS_SPACE_PROGRAM, 8 )
315   AM_RANGE(0x0000, 0x07ff) AM_RAM AM_BASE(&spriteram)
316   AM_RANGE(0x0800, 0x7fff) AM_RAM_WRITE(gridlee_videoram_w) AM_BASE(&videoram) AM_SIZE(&videoram_size)
330317   AM_RANGE(0x9000, 0x9000) AM_WRITE(led_0_w)
331318   AM_RANGE(0x9010, 0x9010) AM_WRITE(led_1_w)
332319   AM_RANGE(0x9020, 0x9020) AM_WRITE(gridlee_coin_counter_w)
r4679r4680
334321   AM_RANGE(0x9070, 0x9070) AM_WRITE(gridlee_cocktail_flip_w)
335322   AM_RANGE(0x9200, 0x9200) AM_WRITE(gridlee_palette_select_w)
336323   AM_RANGE(0x9380, 0x9380) AM_WRITE(watchdog_reset_w)
337   AM_RANGE(0x9700, 0x9700) AM_WRITENOP
324   AM_RANGE(0x9500, 0x9501) AM_READ(analog_port_r)
325   AM_RANGE(0x9502, 0x9502) AM_READ_PORT("IN0")
326   AM_RANGE(0x9503, 0x9503) AM_READ_PORT("IN1")
327   AM_RANGE(0x9600, 0x9600) AM_READ_PORT("DSW")
328   AM_RANGE(0x9700, 0x9700) AM_READ_PORT("IN2") AM_WRITENOP
329   AM_RANGE(0x9820, 0x9820) AM_READ(random_num_r)
338330   AM_RANGE(0x9828, 0x993f) AM_WRITE(gridlee_sound_w)
339   AM_RANGE(0x9c00, 0x9cff) AM_WRITE(SMH_RAM) AM_BASE(&generic_nvram) AM_SIZE(&generic_nvram_size)
340   AM_RANGE(0xa000, 0xffff) AM_WRITE(SMH_ROM)
331   AM_RANGE(0x9c00, 0x9cff) AM_RAM AM_BASE(&generic_nvram) AM_SIZE(&generic_nvram_size)
332   AM_RANGE(0xa000, 0xffff) AM_ROM
341333ADDRESS_MAP_END
342334
343335
r4679r4680
442434
443435   /* basic machine hardware */
444436   MDRV_CPU_ADD("maincpu", M6809, BALSENTE_CPU_CLOCK)
445   MDRV_CPU_PROGRAM_MAP(readmem_cpu1,writemem_cpu1)
437   MDRV_CPU_PROGRAM_MAP(cpu1_map,0)
446438
447439    MDRV_MACHINE_START(gridlee)
448440   MDRV_MACHINE_RESET(gridlee)
src/mame/drivers/rallyx.c
r4679r4680
214214
215215static WRITE8_HANDLER( rallyx_interrupt_vector_w )
216216{
217   cpu_set_input_line_vector(space->machine->cpu[0], 0, data);
218   cpu_set_input_line(space->machine->cpu[0], 0, CLEAR_LINE);
217   cpu_set_input_line_vector(cputag_get_cpu(space->machine, "maincpu"), 0, data);
218   cputag_set_input_line(space->machine, "maincpu", 0, CLEAR_LINE);
219219}
220220
221221
r4679r4680
243243         break;
244244
245245      case 0x01:   /* INT ON */
246         cpu_interrupt_enable(space->machine->cpu[0],bit);
246         cpu_interrupt_enable(cputag_get_cpu(space->machine, "maincpu"), bit);
247247         if (!bit)
248            cpu_set_input_line(space->machine->cpu[0], 0, CLEAR_LINE);
248            cputag_set_input_line(space->machine, "maincpu", 0, CLEAR_LINE);
249249         break;
250250
251251      case 0x02:   /* SOUND ON */
r4679r4680
287287         break;
288288
289289      case 0x01:   /* INTST */
290         cpu_interrupt_enable(space->machine->cpu[0],bit);
290         cpu_interrupt_enable(cputag_get_cpu(space->machine, "maincpu"), bit);
291291         break;
292292
293293      case 0x02:   /* MUT */
src/mame/drivers/trucocl.c
r4679r4680
5454
5555static TIMER_CALLBACK( dac_irq )
5656{
57   cpu_set_input_line(machine->cpu[0], INPUT_LINE_NMI, PULSE_LINE );
57   cputag_set_input_line(machine, "maincpu", INPUT_LINE_NMI, PULSE_LINE );
5858}
5959
6060static WRITE8_DEVICE_HANDLER( audio_dac_w)
src/mame/drivers/bnstars.c
r4679r4680
12661266   AM_RANGE(0xfec08000, 0xfec0ffff) AM_RAM_WRITE(ms32_bg0_ram_w) AM_BASE(&ms32_bg0_ram)
12671267
12681268   AM_RANGE(0xfee00000, 0xfee1ffff) AM_RAM
1269   AM_RANGE(0xffe00000, 0xffffffff) AM_READWRITE(SMH_BANK1, SMH_ROM)
1269   AM_RANGE(0xffe00000, 0xffffffff) AM_READWRITE(SMH_BANK(1), SMH_ROM)
12701270ADDRESS_MAP_END
12711271
12721272#if 0
r4679r4680
12901290static void irq_init(running_machine *machine)
12911291{
12921292   irqreq = 0;
1293   cpu_set_input_line(machine->cpu[0], 0, CLEAR_LINE);
1294   cpu_set_irq_callback(machine->cpu[0], irq_callback);
1293   cputag_set_input_line(machine, "maincpu", 0, CLEAR_LINE);
1294   cpu_set_irq_callback(cputag_get_cpu(machine, "maincpu"), irq_callback);
12951295}
12961296
12971297static void irq_raise(running_machine *machine, int level)
12981298{
12991299   irqreq |= (1<<level);
1300   cpu_set_input_line(machine->cpu[0], 0, ASSERT_LINE);
1300   cputag_set_input_line(machine, "maincpu", 0, ASSERT_LINE);
13011301}
13021302
13031303
src/mame/drivers/blockhl.c
r4679r4680
6262
6363static WRITE8_HANDLER( blockhl_sh_irqtrigger_w )
6464{
65   cpu_set_input_line_and_vector(space->machine->cpu[1], 0, HOLD_LINE, 0xff);
65   cputag_set_input_line_and_vector(space->machine, "audiocpu", 0, HOLD_LINE, 0xff);
6666}
6767
6868
r4679r4680
7979   AM_RANGE(0x0000, 0x3fff) AM_READWRITE(K052109_051960_r, K052109_051960_w)
8080   AM_RANGE(0x4000, 0x57ff) AM_RAM
8181   AM_RANGE(0x5800, 0x5fff) AM_READWRITE(bankedram_r, bankedram_w) AM_BASE(&ram)
82   AM_RANGE(0x6000, 0x7fff) AM_READWRITE(SMH_BANK1, SMH_ROM)
82   AM_RANGE(0x6000, 0x7fff) AM_READWRITE(SMH_BANK(1), SMH_ROM)
8383   AM_RANGE(0x8000, 0xffff) AM_ROM
8484ADDRESS_MAP_END
8585
r4679r4680
274274{
275275   UINT8 *RAM = memory_region(machine, "maincpu");
276276
277   konami_configure_set_lines(machine->cpu[0], blockhl_banking);
277   konami_configure_set_lines(cputag_get_cpu(machine, "maincpu"), blockhl_banking);
278278
279279   paletteram = &RAM[0x18000];
280280}
src/mame/drivers/gcpinbal.c
r4679r4680
4646
4747static TIMER_CALLBACK( gcpinbal_interrupt1 )
4848{
49   cpu_set_input_line(machine->cpu[0],1,HOLD_LINE);
49   cputag_set_input_line(machine, "maincpu", 1, HOLD_LINE);
5050}
5151
5252#ifdef UNUSED_FUNCTION
r4679r4680
5555   // IRQ3 is from the M6585
5656//  if (!ADPCM_playing(0))
5757   {
58      cpu_set_input_line(machine->cpu[0],3,HOLD_LINE);
58      cputag_set_input_line(machine, "maincpu", 3, HOLD_LINE);
5959   }
6060}
6161#endif
r4679r4680
205205                     MEMORY STRUCTURES
206206***********************************************************/
207207
208static ADDRESS_MAP_START( gcpinbal_readmem, ADDRESS_SPACE_PROGRAM, 16 )
209   AM_RANGE(0x000000, 0x1fffff) AM_READ(SMH_ROM)
210   AM_RANGE(0xc00000, 0xc03fff) AM_READ(gcpinbal_tilemaps_word_r)
211   AM_RANGE(0xc80000, 0xc80fff) AM_READ(SMH_RAM)   /* sprite ram */
212   AM_RANGE(0xd00000, 0xd00fff) AM_READ(SMH_RAM)
213   AM_RANGE(0xd80000, 0xd800ff) AM_READ(ioc_r)
214   AM_RANGE(0xff0000, 0xffffff) AM_READ(SMH_RAM)   /* RAM */
208static ADDRESS_MAP_START( gcpinbal_map, ADDRESS_SPACE_PROGRAM, 16 )
209   AM_RANGE(0x000000, 0x1fffff) AM_ROM
210   AM_RANGE(0xc00000, 0xc03fff) AM_READWRITE(gcpinbal_tilemaps_word_r, gcpinbal_tilemaps_word_w) AM_BASE(&gcpinbal_tilemapram)
211   AM_RANGE(0xc80000, 0xc80fff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)   /* sprite ram */
212   AM_RANGE(0xd00000, 0xd00fff) AM_RAM_WRITE(paletteram16_RRRRGGGGBBBBRGBx_word_w) AM_BASE(&paletteram16)
213   AM_RANGE(0xd80000, 0xd800ff) AM_READWRITE(ioc_r, ioc_w) AM_BASE(&gcpinbal_ioc_ram)
214   AM_RANGE(0xff0000, 0xffffff) AM_RAM   /* RAM */
215215ADDRESS_MAP_END
216216
217static ADDRESS_MAP_START( gcpinbal_writemem, ADDRESS_SPACE_PROGRAM, 16 )
218   AM_RANGE(0x000000, 0x1fffff) AM_WRITE(SMH_ROM)
219   AM_RANGE(0xc00000, 0xc03fff) AM_WRITE(gcpinbal_tilemaps_word_w) AM_BASE(&gcpinbal_tilemapram)
220   AM_RANGE(0xc80000, 0xc80fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)
221   AM_RANGE(0xd00000, 0xd00fff) AM_WRITE(paletteram16_RRRRGGGGBBBBRGBx_word_w) AM_BASE(&paletteram16)
222   AM_RANGE(0xd80000, 0xd800ff) AM_WRITE(ioc_w) AM_BASE(&gcpinbal_ioc_ram)
223   AM_RANGE(0xff0000, 0xffffff) AM_WRITE(SMH_RAM)
224ADDRESS_MAP_END
225217
226218
227
228219/***********************************************************
229220                   INPUT PORTS, DIPs
230221***********************************************************/
r4679r4680
379370
380371   /* basic machine hardware */
381372   MDRV_CPU_ADD("maincpu", M68000, 32000000/2)   /* 16 MHz ? */
382   MDRV_CPU_PROGRAM_MAP(gcpinbal_readmem,gcpinbal_writemem)
373   MDRV_CPU_PROGRAM_MAP(gcpinbal_map,0)
383374   MDRV_CPU_VBLANK_INT("screen", gcpinbal_interrupt)
384375
385376   /* video hardware */
src/mame/drivers/diverboy.c
r4679r4680
6363   if (ACCESSING_BITS_0_7)
6464   {
6565      soundlatch_w(space,0,data & 0xff);
66      cpu_set_input_line(space->machine->cpu[1],0,HOLD_LINE);
66      cputag_set_input_line(space->machine, "audiocpu", 0, HOLD_LINE);
6767   }
6868}
6969
r4679r4680
7777
7878
7979
80static ADDRESS_MAP_START( diverboy_readmem, ADDRESS_SPACE_PROGRAM, 16 )
81   AM_RANGE(0x000000, 0x03ffff) AM_READ(SMH_ROM)
82   AM_RANGE(0x040000, 0x04ffff) AM_READ(SMH_RAM)
83   AM_RANGE(0x080000, 0x083fff) AM_READ(SMH_RAM)
80static ADDRESS_MAP_START( diverboy_map, ADDRESS_SPACE_PROGRAM, 16 )
81   AM_RANGE(0x000000, 0x03ffff) AM_ROM
82   AM_RANGE(0x040000, 0x04ffff) AM_RAM
83   AM_RANGE(0x080000, 0x083fff) AM_RAM AM_BASE(&diverboy_spriteram) AM_SIZE(&diverboy_spriteram_size)
84   AM_RANGE(0x100000, 0x100001) AM_WRITE(soundcmd_w)
85   AM_RANGE(0x140000, 0x1407ff) AM_WRITE(paletteram16_xxxxBBBBGGGGRRRR_word_w) AM_BASE(&paletteram16)
8486   AM_RANGE(0x180000, 0x180001) AM_READ_PORT("P1_P2")
8587   AM_RANGE(0x180002, 0x180003) AM_READ_PORT("DSW")
8688   AM_RANGE(0x180008, 0x180009) AM_READ_PORT("COINS")
8789//  AM_RANGE(0x18000a, 0x18000b) AM_READNOP
88ADDRESS_MAP_END
89
90static ADDRESS_MAP_START( diverboy_writemem, ADDRESS_SPACE_PROGRAM, 16 )
91   AM_RANGE(0x000000, 0x03ffff) AM_WRITE(SMH_ROM)
92   AM_RANGE(0x040000, 0x04ffff) AM_WRITE(SMH_RAM) /* main ram */
93   AM_RANGE(0x080000, 0x083fff) AM_WRITE(SMH_RAM) AM_BASE(&diverboy_spriteram) AM_SIZE(&diverboy_spriteram_size)
94   AM_RANGE(0x100000, 0x100001) AM_WRITE(soundcmd_w)
95   AM_RANGE(0x140000, 0x1407ff) AM_WRITE(paletteram16_xxxxBBBBGGGGRRRR_word_w) AM_BASE(&paletteram16)
9690//  AM_RANGE(0x18000c, 0x18000d) AM_WRITENOP
9791   AM_RANGE(0x320000, 0x3207ff) AM_WRITE(SMH_RAM) /* ?? */
9892   AM_RANGE(0x322000, 0x3227ff) AM_WRITE(SMH_RAM) /* ?? */
r4679r4680
10094//  AM_RANGE(0x340002, 0x340003) AM_WRITENOP
10195ADDRESS_MAP_END
10296
103static ADDRESS_MAP_START( snd_readmem, ADDRESS_SPACE_PROGRAM, 8 )
104   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
105   AM_RANGE(0x8000, 0x87ff) AM_READ(SMH_RAM)
106   AM_RANGE(0x9800, 0x9800) AM_DEVREAD("oki", okim6295_r)
97static ADDRESS_MAP_START( snd_map, ADDRESS_SPACE_PROGRAM, 8 )
98   AM_RANGE(0x0000, 0x7fff) AM_ROM
99   AM_RANGE(0x8000, 0x87ff) AM_RAM
100   AM_RANGE(0x9000, 0x9000) AM_DEVWRITE("oki", okibank_w)
101   AM_RANGE(0x9800, 0x9800) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w)
107102   AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_r)
108103ADDRESS_MAP_END
109104
110static ADDRESS_MAP_START( snd_writemem, ADDRESS_SPACE_PROGRAM, 8 )
111   AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM)
112   AM_RANGE(0x8000, 0x87ff) AM_WRITE(SMH_RAM)
113   AM_RANGE(0x9000, 0x9000) AM_DEVWRITE("oki", okibank_w)
114   AM_RANGE(0x9800, 0x9800) AM_DEVWRITE("oki", okim6295_w)
115ADDRESS_MAP_END
116105
117106
118
119107static INPUT_PORTS_START( diverboy )
120108   PORT_START("P1_P2")   // 0x180000.w
121109   PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(1)   // unused ?
r4679r4680
195183
196184static MACHINE_DRIVER_START( diverboy )
197185   MDRV_CPU_ADD("maincpu", M68000, 12000000) /* guess */
198   MDRV_CPU_PROGRAM_MAP(diverboy_readmem,diverboy_writemem)
186   MDRV_CPU_PROGRAM_MAP(diverboy_map,0)
199187   MDRV_CPU_VBLANK_INT("screen", irq6_line_hold)
200188
201189   MDRV_CPU_ADD("audiocpu", Z80, 4000000)
202   MDRV_CPU_PROGRAM_MAP(snd_readmem,snd_writemem)
190   MDRV_CPU_PROGRAM_MAP(snd_map,0)
203191
204192   MDRV_GFXDECODE(diverboy)
205193
src/mame/drivers/arcadia.c
r4679r4680
7272
7373static WRITE16_HANDLER( arcadia_multibios_change_game )
7474{
75   memory_install_read16_handler(space, 0x800000, 0x97ffff, 0, 0, (data == 0) ? SMH_BANK2 : SMH_NOP);
75   memory_install_read16_handler(space, 0x800000, 0x97ffff, 0, 0, (read16_space_func)((data == 0) ? SMH_BANK(2) : SMH_NOP));
7676}
7777
7878
r4679r4680
100100   /* swap the write handlers between ROM and bank 1 based on the bit */
101101   if ((data & 1) == 0)
102102      /* overlay disabled, map RAM on 0x000000 */
103      memory_install_write16_handler(cpu_get_address_space(device->machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x000000, 0x07ffff, 0, 0, SMH_BANK1);
103      memory_install_write16_handler(cputag_get_address_space(device->machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x000000, 0x07ffff, 0, 0, (write16_space_func)SMH_BANK(1));
104104
105105   else
106106      /* overlay enabled, map Amiga system ROM on 0x000000 */
107      memory_install_write16_handler(cpu_get_address_space(device->machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x000000, 0x07ffff, 0, 0, SMH_UNMAP);
107      memory_install_write16_handler(cputag_get_address_space(device->machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x000000, 0x07ffff, 0, 0, (write16_space_func)SMH_UNMAP);
108108
109109   /* bit 2 = Power Led on Amiga */
110110   set_led_status(0, (data & 2) ? 0 : 1);
r4679r4680
156156
157157static INPUT_CHANGED( coin_changed_callback )
158158{
159   UINT8 *counter = param;
159   UINT8 *counter = (UINT8 *)param;
160160
161161   /* check for a 0 -> 1 transition */
162162   if (!oldval && newval && *counter < 3)
src/mame/drivers/segag80v.c
r4679r4680
183183{
184184   /* pressing the service switch sends an NMI */
185185   if (newval)
186      cpu_set_input_line(field->port->machine->cpu[0], INPUT_LINE_NMI, PULSE_LINE);
186      cputag_set_input_line(field->port->machine, "maincpu", INPUT_LINE_NMI, PULSE_LINE);
187187}
188188
189189
r4679r4680
13181318
13191319static DRIVER_INIT( elim2 )
13201320{
1321   const address_space *iospace = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO);
1321   const address_space *iospace = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_IO);
13221322
13231323   /* configure security */
13241324   sega_security(70);
r4679r4680
13321332
13331333static DRIVER_INIT( elim4 )
13341334{
1335   const address_space *iospace = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO);
1335   const address_space *iospace = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_IO);
13361336
13371337   /* configure security */
13381338   sega_security(76);
r4679r4680
13501350
13511351static DRIVER_INIT( spacfury )
13521352{
1353   const address_space *iospace = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO);
1353   const address_space *iospace = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_IO);
13541354
13551355   /* configure security */
13561356   sega_security(64);
r4679r4680
13661366
13671367static DRIVER_INIT( zektor )
13681368{
1369   const address_space *iospace = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO);
1369   const address_space *iospace = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_IO);
13701370   const device_config *ay = devtag_get_device(machine, "ay");
13711371
13721372   /* configure security */
r4679r4680
13881388
13891389static DRIVER_INIT( tacscan )
13901390{
1391   const address_space *pgmspace = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
1392   const address_space *iospace = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO);
1391   const address_space *pgmspace = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
1392   const address_space *iospace = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_IO);
13931393
13941394   /* configure security */
13951395   sega_security(76);
r4679r4680
14071407
14081408static DRIVER_INIT( startrek )
14091409{
1410   const address_space *pgmspace = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
1411   const address_space *iospace = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO);
1410   const address_space *pgmspace = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
1411   const address_space *iospace = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_IO);
14121412
14131413   /* configure security */
14141414   sega_security(64);
src/mame/drivers/carjmbre.c
r4679r4680
5353VIDEO_UPDATE( carjmbre );
5454
5555
56static ADDRESS_MAP_START( carjmbre_readmem, ADDRESS_SPACE_PROGRAM, 8 )
57   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
58   AM_RANGE(0x8000, 0x87ff) AM_READ(SMH_RAM)
56static ADDRESS_MAP_START( carjmbre_map, ADDRESS_SPACE_PROGRAM, 8 )
57   AM_RANGE(0x0000, 0x7fff) AM_ROM
58   AM_RANGE(0x8000, 0x87ff) AM_RAM
5959   AM_RANGE(0x8800, 0x8800) AM_READNOP         //?? possibly watchdog
60   AM_RANGE(0x9000, 0x97ff) AM_READ(SMH_RAM)
61   AM_RANGE(0xa000, 0xa000) AM_READ_PORT("P1")
62   AM_RANGE(0xa800, 0xa800) AM_READ_PORT("P2")
63   AM_RANGE(0xb800, 0xb800) AM_READ_PORT("DSW")
64ADDRESS_MAP_END
65
66static ADDRESS_MAP_START( carjmbre_writemem, ADDRESS_SPACE_PROGRAM, 8 )
67   AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM)
68   AM_RANGE(0x8000, 0x87ff) AM_WRITE(SMH_RAM)
6960   AM_RANGE(0x8803, 0x8803) AM_WRITE(interrupt_enable_w)
7061   AM_RANGE(0x8805, 0x8806) AM_WRITE(carjmbre_bgcolor_w)   //guess
7162   AM_RANGE(0x8807, 0x8807) AM_WRITE(carjmbre_flipscreen_w)
7263   AM_RANGE(0x8fc1, 0x8fc1) AM_WRITENOP         //overrun during initial screen clear
7364   AM_RANGE(0x8fe1, 0x8fe1) AM_WRITENOP         //overrun during initial screen clear
74   AM_RANGE(0x9000, 0x97ff) AM_WRITE(carjmbre_videoram_w) AM_BASE(&videoram)
65   AM_RANGE(0x9000, 0x97ff) AM_RAM_WRITE(carjmbre_videoram_w) AM_BASE(&videoram)
7566   AM_RANGE(0x9800, 0x985f) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
7667   AM_RANGE(0x9880, 0x98df) AM_WRITE(SMH_RAM)         //spriteram mirror
77   AM_RANGE(0xb800, 0xb800) AM_WRITE(soundlatch_w)
68   AM_RANGE(0xa000, 0xa000) AM_READ_PORT("P1")
69   AM_RANGE(0xa800, 0xa800) AM_READ_PORT("P2")
70   AM_RANGE(0xb800, 0xb800) AM_READ_PORT("DSW") AM_WRITE(soundlatch_w)
7871ADDRESS_MAP_END
7972
80static ADDRESS_MAP_START( carjmbre_sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
81   AM_RANGE(0x0000, 0x0fff) AM_READ(SMH_ROM)
73static ADDRESS_MAP_START( carjmbre_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
74   AM_RANGE(0x0000, 0x0fff) AM_ROM
8275   AM_RANGE(0x1000, 0x10ff) AM_READNOP         //look to be stray reads from 10/12/14/16/18xx
8376   AM_RANGE(0x1200, 0x12ff) AM_READNOP
8477   AM_RANGE(0x1400, 0x14ff) AM_READNOP
8578   AM_RANGE(0x1600, 0x16ff) AM_READNOP
8679   AM_RANGE(0x1800, 0x18ff) AM_READNOP
87   AM_RANGE(0x2000, 0x27ff) AM_READ(SMH_RAM)
80   AM_RANGE(0x2000, 0x27ff) AM_RAM
8881ADDRESS_MAP_END
8982
90static ADDRESS_MAP_START( carjmbre_sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
91   AM_RANGE(0x0000, 0x0fff) AM_WRITE(SMH_ROM)
92   AM_RANGE(0x2000, 0x27ff) AM_WRITE(SMH_RAM)
93ADDRESS_MAP_END
9483
95
9684static ADDRESS_MAP_START( carjmbre_sound_io_map, ADDRESS_SPACE_IO, 8 )
9785   ADDRESS_MAP_GLOBAL_MASK(0xff)
9886   AM_RANGE(0x00, 0x00) AM_READ(soundlatch_r)
r4679r4680
181169
182170   /* basic machine hardware */
183171   MDRV_CPU_ADD("maincpu", Z80,18432000/6)
184   MDRV_CPU_PROGRAM_MAP(carjmbre_readmem,carjmbre_writemem)
172   MDRV_CPU_PROGRAM_MAP(carjmbre_map,0)
185173   MDRV_CPU_VBLANK_INT("screen", nmi_line_pulse)
186174
187175   MDRV_CPU_ADD("audiocpu", Z80, 1500000)
188   MDRV_CPU_PROGRAM_MAP(carjmbre_sound_readmem,carjmbre_sound_writemem)
176   MDRV_CPU_PROGRAM_MAP(carjmbre_sound_map,0)
189177   MDRV_CPU_IO_MAP(carjmbre_sound_io_map,0)
190178   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
191179
src/mame/drivers/superchs.c
r4679r4680
9090
9191   if (ACCESSING_BITS_8_15)
9292   {
93      cpu_set_input_line(space->machine->cpu[2], INPUT_LINE_RESET, (data &0x200) ? CLEAR_LINE : ASSERT_LINE);
94      if (data&0x8000) cpu_set_input_line(space->machine->cpu[0],3,HOLD_LINE); /* Guess */
93      cputag_set_input_line(space->machine, "mcu", INPUT_LINE_RESET, (data &0x200) ? CLEAR_LINE : ASSERT_LINE);
94      if (data&0x8000) cputag_set_input_line(space->machine, "maincpu", 3, HOLD_LINE); /* Guess */
9595   }
9696
9797   if (ACCESSING_BITS_0_7)
r4679r4680
222222   /* This is guess work - the interrupts are in groups of 4, with each writing to a
223223        different byte in this long word before the RTE.  I assume all but the last
224224        (top) byte cause an IRQ with the final one being an ACK.  (Total guess but it works). */
225   if (mem_mask!=0xff000000)
226      cpu_set_input_line(space->machine->cpu[0],3,HOLD_LINE);
225   if (mem_mask != 0xff000000)
226      cputag_set_input_line(space->machine, "maincpu", 3, HOLD_LINE);
227227}
228228
229229/***********************************************************
r4679r4680
484484static DRIVER_INIT( superchs )
485485{
486486   /* Speedup handlers */
487   memory_install_read32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x100000, 0x100003, 0, 0, main_cycle_r);
488   memory_install_read16_handler(cpu_get_address_space(machine->cpu[2], ADDRESS_SPACE_PROGRAM), 0x80000a, 0x80000b, 0, 0, sub_cycle_r);
487   memory_install_read32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x100000, 0x100003, 0, 0, main_cycle_r);
488   memory_install_read16_handler(cputag_get_address_space(machine, "mcu", ADDRESS_SPACE_PROGRAM), 0x80000a, 0x80000b, 0, 0, sub_cycle_r);
489489}
490490
491491GAMEL( 1992, superchs, 0, superchs, superchs, superchs, ROT0, "Taito America Corporation", "Super Chase - Criminal Termination (US)", 0, layout_superchs )
src/mame/drivers/bottom9.c
r4679r4680
102102
103103static WRITE8_HANDLER( bottom9_sh_irqtrigger_w )
104104{
105   cpu_set_input_line_and_vector(space->machine->cpu[1],0,HOLD_LINE,0xff);
105   cputag_set_input_line_and_vector(space->machine, "audiocpu", 0, HOLD_LINE, 0xff);
106106}
107107
108108static int nmienable;
r4679r4680
147147   AM_RANGE(0x2000, 0x27ff) AM_READWRITE(bottom9_bankedram2_r, bottom9_bankedram2_w) AM_BASE(&paletteram)
148148   AM_RANGE(0x0000, 0x3fff) AM_READWRITE(K052109_051960_r, K052109_051960_w)
149149   AM_RANGE(0x4000, 0x5fff) AM_RAM
150   AM_RANGE(0x6000, 0x7fff) AM_READWRITE(SMH_BANK1, SMH_ROM)
150   AM_RANGE(0x6000, 0x7fff) AM_READWRITE(SMH_BANK(1), SMH_ROM)
151151   AM_RANGE(0x8000, 0xffff) AM_ROM
152152ADDRESS_MAP_END
153153
src/mame/drivers/flower.c
r4679r4680
7979
8080static WRITE8_HANDLER( flower_irq_ack )
8181{
82   cpu_set_input_line(space->machine->cpu[0], 0, CLEAR_LINE);
82   cputag_set_input_line(space->machine, "maincpu", 0, CLEAR_LINE);
8383}
8484
8585static WRITE8_HANDLER( sn_irq_enable_w )
8686{
8787   *sn_irq_enable = data;
8888
89   cpu_set_input_line(space->machine->cpu[2], 0, CLEAR_LINE);
89   cputag_set_input_line(space->machine, "audiocpu", 0, CLEAR_LINE);
9090}
9191
9292static INTERRUPT_GEN( sn_irq )
r4679r4680
9797
9898static WRITE8_HANDLER( sound_command_w )
9999{
100   soundlatch_w(space,0,data);
100   soundlatch_w(space, 0, data);
101101   if ((*sn_nmi_enable & 1) == 1)
102      cpu_set_input_line(space->machine->cpu[2], INPUT_LINE_NMI, PULSE_LINE);
102      cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
103103}
104104
105105static ADDRESS_MAP_START( flower_cpu1_2, ADDRESS_SPACE_PROGRAM, 8 )
src/mame/drivers/battlera.c
r4679r4680
4646
4747static WRITE8_HANDLER( battlera_sound_w )
4848{
49   if (offset==0) {
49   if (offset == 0)
50   {
5051      soundlatch_w(space,0,data);
51      cpu_set_input_line(space->machine->cpu[1], 0, HOLD_LINE);
52      cputag_set_input_line(space->machine, "audiocpu", 0, HOLD_LINE);
5253   }
5354}
5455
r4679r4680
6162
6263static READ8_HANDLER( control_data_r )
6364{
64   switch (control_port_select) {
65   switch (control_port_select)
66   {
6567      case 0xfe: return input_port_read(space->machine, "IN0"); /* Player 1 */
6668      case 0xfd: return input_port_read(space->machine, "IN1"); /* Player 2 */
6769      case 0xfb: return input_port_read(space->machine, "IN2"); /* Coins */
r4679r4680
100102   static int toggle;
101103
102104   msm5205_data_w(device,msm5205next >> 4);
103   msm5205next<<=4;
105   msm5205next <<= 4;
104106
105107   toggle = 1 - toggle;
106108   if (toggle)
107      cpu_set_input_line(device->machine->cpu[1], 1, HOLD_LINE);
109      cputag_set_input_line(device->machine, "audiocpu", 1, HOLD_LINE);
108110}
109111
110112static WRITE8_HANDLER( battlera_adpcm_data_w )
111113{
112   msm5205next=data;
114   msm5205next = data;
113115}
114116
115117static WRITE8_DEVICE_HANDLER( battlera_adpcm_reset_w )
116118{
117   msm5205_reset_w(device,0);
119   msm5205_reset_w(device, 0);
118120}
119121
120122static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 )
src/mame/drivers/xain.c
r4679r4680
208208   /* FIRQ (IMS) fires every on every 8th scanline (except 0) */
209209   if (!(vcount_old & 8) && (vcount & 8))
210210   {
211      cpu_set_input_line(timer->machine->cpu[0], M6809_FIRQ_LINE, ASSERT_LINE);
211      cputag_set_input_line(timer->machine, "maincpu", M6809_FIRQ_LINE, ASSERT_LINE);
212212   }
213213
214214   /* NMI fires on scanline 248 (VBL) and is latched */
215215   if (vcount == 0xf8)
216216   {
217      cpu_set_input_line(timer->machine->cpu[0], INPUT_LINE_NMI, ASSERT_LINE);
217      cputag_set_input_line(timer->machine, "maincpu", INPUT_LINE_NMI, ASSERT_LINE);
218218   }
219219
220220   /* VBLANK input bit is held high from scanlines 248-255 */
r4679r4680
242242static WRITE8_HANDLER( xain_sound_command_w )
243243{
244244   soundlatch_w(space,offset,data);
245   cpu_set_input_line(space->machine->cpu[2],M6809_IRQ_LINE,HOLD_LINE);
245   cputag_set_input_line(space->machine, "audiocpu", M6809_IRQ_LINE, HOLD_LINE);
246246}
247247
248248static WRITE8_HANDLER( xain_main_irq_w )
r4679r4680
250250   switch (offset)
251251   {
252252   case 0: /* 0x3a09 - NMI clear */
253      cpu_set_input_line(space->machine->cpu[0],INPUT_LINE_NMI,CLEAR_LINE);
253      cputag_set_input_line(space->machine, "maincpu", INPUT_LINE_NMI, CLEAR_LINE);
254254      break;
255255   case 1: /* 0x3a0a - FIRQ clear */
256      cpu_set_input_line(space->machine->cpu[0],M6809_FIRQ_LINE,CLEAR_LINE);
256      cputag_set_input_line(space->machine, "maincpu", M6809_FIRQ_LINE, CLEAR_LINE);
257257      break;
258258   case 2: /* 0x3a0b - IRQ clear */
259      cpu_set_input_line(space->machine->cpu[0],M6809_IRQ_LINE,CLEAR_LINE);
259      cputag_set_input_line(space->machine, "maincpu", M6809_IRQ_LINE, CLEAR_LINE);
260260      break;
261261   case 3: /* 0x3a0c - IRQB assert */
262      cpu_set_input_line(space->machine->cpu[1],M6809_IRQ_LINE,ASSERT_LINE);
262      cputag_set_input_line(space->machine, "sub", M6809_IRQ_LINE, ASSERT_LINE);
263263      break;
264264   }
265265}
266266
267267static WRITE8_HANDLER( xain_irqA_assert_w )
268268{
269   cpu_set_input_line(space->machine->cpu[0],M6809_IRQ_LINE,ASSERT_LINE);
269   cputag_set_input_line(space->machine, "maincpu", M6809_IRQ_LINE, ASSERT_LINE);
270270}
271271
272272static WRITE8_HANDLER( xain_irqB_clear_w )
273273{
274   cpu_set_input_line(space->machine->cpu[1],M6809_IRQ_LINE,CLEAR_LINE);
274   cputag_set_input_line(space->machine, "sub", M6809_IRQ_LINE, CLEAR_LINE);
275275}
276276
277277static READ8_HANDLER( xain_68705_r )
r4679r4680
454454/* handler called by the 2203 emulator when the internal timers cause an IRQ */
455455static void irqhandler(const device_config *device, int irq)
456456{
457   cpu_set_input_line(device->machine->cpu[2],M6809_FIRQ_LINE,irq ? ASSERT_LINE : CLEAR_LINE);
457   cputag_set_input_line(device->machine, "audiocpu", M6809_FIRQ_LINE, irq ? ASSERT_LINE : CLEAR_LINE);
458458}
459459
460460static const ym2203_interface ym2203_config =
src/mame/drivers/gundealr.c
r4679r4680
567567static DRIVER_INIT( yamyam )
568568{
569569   input_ports_hack = 1;
570   memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xe000, 0xe000, 0, 0, yamyam_protection_w);
570   memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xe000, 0xe000, 0, 0, yamyam_protection_w);
571571}
572572
573573
src/mame/drivers/namcos1.c
r4679r4680
353353
354354static WRITE8_HANDLER( namcos1_sub_firq_w )
355355{
356   cpu_set_input_line(space->machine->cpu[1], M6809_FIRQ_LINE, ASSERT_LINE);
356   cputag_set_input_line(space->machine, "sub", M6809_FIRQ_LINE, ASSERT_LINE);
357357}
358358
359359static WRITE8_HANDLER( irq_ack_w )
r4679r4680
635635
636636
637637static INPUT_PORTS_START( tankfrc4 )
638
639   /* How are the controls mapped?  Coins 3 & 4 are right as shown below.  Hit F2 for test screen, then "9" for the controls test screen */
640   /* Start buttons are not used by the game & manual shows P1 buttons 2 & 3 (plus unused JAMMA pins 25 & 26) are P3 UP, DOWN, LEFT & RIGHT */
641   /* Manual shows P2 buttons 2 & 3 (plus unused JAMMA pins c & d) are P4 UP, DOWN, LEFT & RIGHT.  J23 & J24 are P3 button1 & P4 button1 */
642
643638   PORT_INCLUDE( ns1 )
644639
645640   PORT_MODIFY( "CONTROL0" )
r4679r4680
649644   PORT_MODIFY( "CONTROL1" )
650645   PORT_BIT( 0x7f, IP_ACTIVE_LOW, IPT_UNUSED )
651646   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN4 )
647
648   PORT_START( "IN0" )
649   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1)
650   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1)
651   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1)
652   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(1)
653   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) // and start1
654   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNUSED )
655   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
656   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
657
658   PORT_START( "IN1" )
659   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2)
660   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2)
661   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(2)
662   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(2)
663   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) // and start2
664   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNUSED )
665   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
666   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
667
668   PORT_START( "IN2" )
669   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(3)
670   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(3)
671   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(3)
672   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(3)
673   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(3) // and start3
674   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNUSED )
675   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
676   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
677
678   PORT_START( "IN3" )
679   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(4)
680   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(4)
681   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(4)
682   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(4)
683   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(4) // and start4
684   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNUSED )
685   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
686   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
652687INPUT_PORTS_END
653688
654689
655690
691
692
656693static INPUT_PORTS_START( pacmania )
657694   PORT_INCLUDE( ns1 )
658695
r4679r4680
10201057
10211058static void namcos1_sound_interrupt( const device_config *device, int irq )
10221059{
1023   cpu_set_input_line(device->machine->cpu[2], M6809_FIRQ_LINE, irq ? ASSERT_LINE : CLEAR_LINE);
1060   cputag_set_input_line(device->machine, "audiocpu", M6809_FIRQ_LINE, irq ? ASSERT_LINE : CLEAR_LINE);
10241061}
10251062
10261063static const ym2151_interface ym2151_config =
r4679r4680
27072744GAME( 1990, soukobdx, boxyboy,  ns1,     boxyboy,  soukobdx, ROT0,   "Namco", "Souko Ban Deluxe (Japan)", 0 )
27082745GAME( 1990, puzlclub, 0,        ns1,     puzlclub, puzlclub, ROT90,  "Namco", "Puzzle Club (Japan prototype)", 0 )
27092746GAME( 1991, tankfrce, 0,        ns1,     ns1,      tankfrce, ROT0,   "Namco", "Tank Force (US, 2 Player)", 0 )
2710GAME( 1991, tankfrc4, tankfrce, ns1,     tankfrc4, tankfrc4, ROT0,   "Namco", "Tank Force (US, 4 Player)", GAME_NOT_WORKING ) /* No controls */
2747GAME( 1991, tankfrc4, tankfrce, ns1,     tankfrc4, tankfrc4, ROT0,   "Namco", "Tank Force (US, 4 Player)", 0 )
27112748GAME( 1991, tankfrcj, tankfrce, ns1,     ns1,      tankfrce, ROT0,   "Namco", "Tank Force (Japan)", 0 )
2712
src/mame/drivers/mainevt.c
r4679r4680
2323#include "driver.h"
2424#include "cpu/z80/z80.h"
2525#include "cpu/hd6309/hd6309.h"
26#include "deprecat.h"
2726#include "video/konamiic.h"
2827#include "cpu/m6809/m6809.h"
2928#include "sound/2151intf.h"
r4679r4680
9190
9291static WRITE8_HANDLER( mainevt_sh_irqtrigger_w )
9392{
94   cpu_set_input_line_and_vector(space->machine->cpu[1],0,HOLD_LINE,0xff);
93   cputag_set_input_line_and_vector(space->machine, "audiocpu", 0, HOLD_LINE, 0xff);
9594}
9695
9796static READ8_DEVICE_HANDLER( mainevt_sh_busy_r )
r4679r4680
141140}
142141
143142
144static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 )
143static ADDRESS_MAP_START( mainevt_map, ADDRESS_SPACE_PROGRAM, 8 )
144   AM_RANGE(0x1f80, 0x1f80) AM_WRITE(mainevt_bankswitch_w)
145   AM_RANGE(0x1f84, 0x1f84) AM_WRITE(soundlatch_w)            /* probably */
146   AM_RANGE(0x1f88, 0x1f88) AM_WRITE(mainevt_sh_irqtrigger_w)   /* probably */
147   AM_RANGE(0x1f8c, 0x1f8d) AM_WRITENOP   /* ??? */
148   AM_RANGE(0x1f90, 0x1f90) AM_WRITE(mainevt_coin_w)   /* coin counters + lamps */
149
145150   AM_RANGE(0x1f94, 0x1f94) AM_READ_PORT("SYSTEM")
146151   AM_RANGE(0x1f95, 0x1f95) AM_READ_PORT("P1")
147152   AM_RANGE(0x1f96, 0x1f96) AM_READ_PORT("P2")
r4679r4680
151156   AM_RANGE(0x1f9a, 0x1f9a) AM_READ_PORT("P4")
152157   AM_RANGE(0x1f9b, 0x1f9b) AM_READ_PORT("DSW2")
153158
154   AM_RANGE(0x0000, 0x3fff) AM_READ(K052109_051960_r)
155   AM_RANGE(0x4000, 0x5fff) AM_READ(SMH_RAM)
156   AM_RANGE(0x6000, 0x7fff) AM_READ(SMH_BANK1)
159   AM_RANGE(0x0000, 0x3fff) AM_READWRITE(K052109_051960_r,K052109_051960_w)
160
161   AM_RANGE(0x4000, 0x5dff) AM_RAM
162   AM_RANGE(0x5e00, 0x5fff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_be_w) AM_BASE(&paletteram)
163   AM_RANGE(0x6000, 0x7fff) AM_ROMBANK(1)
157164   AM_RANGE(0x8000, 0xffff) AM_READ(SMH_ROM)
158165ADDRESS_MAP_END
159166
160static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 )
167
168static ADDRESS_MAP_START( devstors_map, ADDRESS_SPACE_PROGRAM, 8 )
161169   AM_RANGE(0x1f80, 0x1f80) AM_WRITE(mainevt_bankswitch_w)
162170   AM_RANGE(0x1f84, 0x1f84) AM_WRITE(soundlatch_w)            /* probably */
163171   AM_RANGE(0x1f88, 0x1f88) AM_WRITE(mainevt_sh_irqtrigger_w)   /* probably */
164   AM_RANGE(0x1f8c, 0x1f8d) AM_WRITENOP   /* ??? */
165172   AM_RANGE(0x1f90, 0x1f90) AM_WRITE(mainevt_coin_w)   /* coin counters + lamps */
173   AM_RANGE(0x1fb2, 0x1fb2) AM_WRITE(dv_nmienable_w)
166174
167   AM_RANGE(0x0000, 0x3fff) AM_WRITE(K052109_051960_w)
168   AM_RANGE(0x4000, 0x5dff) AM_WRITE(SMH_RAM)
169   AM_RANGE(0x5e00, 0x5fff) AM_WRITE(paletteram_xBBBBBGGGGGRRRRR_be_w) AM_BASE(&paletteram)
170    AM_RANGE(0x6000, 0xffff) AM_WRITE(SMH_ROM)
171ADDRESS_MAP_END
172
173
174static ADDRESS_MAP_START( dv_readmem, ADDRESS_SPACE_PROGRAM, 8 )
175175   AM_RANGE(0x1f94, 0x1f94) AM_READ_PORT("SYSTEM")
176176   AM_RANGE(0x1f95, 0x1f95) AM_READ_PORT("P1")
177177   AM_RANGE(0x1f96, 0x1f96) AM_READ_PORT("P2")
178178   AM_RANGE(0x1f97, 0x1f97) AM_READ_PORT("DSW1")
179179   AM_RANGE(0x1f98, 0x1f98) AM_READ_PORT("DSW3")
180180   AM_RANGE(0x1f9b, 0x1f9b) AM_READ_PORT("DSW2")
181   AM_RANGE(0x1fa0, 0x1fbf) AM_READ(K051733_r)
181   AM_RANGE(0x1fa0, 0x1fbf) AM_READWRITE(K051733_r,K051733_w)
182182
183   AM_RANGE(0x0000, 0x3fff) AM_READ(K052109_051960_r)
184   AM_RANGE(0x4000, 0x5fff) AM_READ(SMH_RAM)
185   AM_RANGE(0x6000, 0x7fff) AM_READ(SMH_BANK1)
186   AM_RANGE(0x8000, 0xffff) AM_READ(SMH_ROM)
187ADDRESS_MAP_END
183   AM_RANGE(0x0000, 0x3fff) AM_READWRITE(K052109_051960_r,K052109_051960_w)
188184
189static ADDRESS_MAP_START( dv_writemem, ADDRESS_SPACE_PROGRAM, 8 )
190   AM_RANGE(0x1f80, 0x1f80) AM_WRITE(mainevt_bankswitch_w)
191   AM_RANGE(0x1f84, 0x1f84) AM_WRITE(soundlatch_w)            /* probably */
192   AM_RANGE(0x1f88, 0x1f88) AM_WRITE(mainevt_sh_irqtrigger_w)   /* probably */
193   AM_RANGE(0x1f90, 0x1f90) AM_WRITE(mainevt_coin_w)   /* coin counters + lamps */
194   AM_RANGE(0x1fb2, 0x1fb2) AM_WRITE(dv_nmienable_w)
195   AM_RANGE(0x1fa0, 0x1fbf) AM_WRITE(K051733_w)
196
197   AM_RANGE(0x0000, 0x3fff) AM_WRITE(K052109_051960_w)
198   AM_RANGE(0x4000, 0x5dff) AM_WRITE(SMH_RAM)
199   AM_RANGE(0x5e00, 0x5fff) AM_WRITE(paletteram_xBBBBBGGGGGRRRRR_be_w) AM_BASE(&paletteram)
200   AM_RANGE(0x6000, 0xffff) AM_WRITE(SMH_ROM)
185   AM_RANGE(0x4000, 0x5dff) AM_RAM
186   AM_RANGE(0x5e00, 0x5fff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_be_w) AM_BASE(&paletteram)
187   AM_RANGE(0x6000, 0x7fff) AM_ROMBANK(1)
188   AM_RANGE(0x8000, 0xffff) AM_ROM
201189ADDRESS_MAP_END
202190
203191
204static ADDRESS_MAP_START( sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
205   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
206   AM_RANGE(0x8000, 0x83ff) AM_READ(SMH_RAM)
192static ADDRESS_MAP_START( mainevt_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
193   AM_RANGE(0x0000, 0x7fff) AM_ROM
194   AM_RANGE(0x8000, 0x83ff) AM_RAM
195   AM_RANGE(0x9000, 0x9000) AM_DEVWRITE("upd", upd7759_port_w)
207196   AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_r)
208   AM_RANGE(0xb000, 0xb00d) AM_DEVREAD("konami", k007232_r)
197   AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE("konami", k007232_r,k007232_w)
209198   AM_RANGE(0xd000, 0xd000) AM_DEVREAD("upd", mainevt_sh_busy_r)
210ADDRESS_MAP_END
211
212static ADDRESS_MAP_START( sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
213   AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM)
214   AM_RANGE(0x8000, 0x83ff) AM_WRITE(SMH_RAM)
215   AM_RANGE(0xb000, 0xb00d) AM_DEVWRITE("konami", k007232_w)
216   AM_RANGE(0x9000, 0x9000) AM_DEVWRITE("upd", upd7759_port_w)
217199   AM_RANGE(0xe000, 0xe000) AM_WRITE(mainevt_sh_irqcontrol_w)
218200   AM_RANGE(0xf000, 0xf000) AM_WRITE(mainevt_sh_bankswitch_w)
219201ADDRESS_MAP_END
220202
221static ADDRESS_MAP_START( dv_sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
222   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
223   AM_RANGE(0x8000, 0x83ff) AM_READ(SMH_RAM)
203static ADDRESS_MAP_START( devstors_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
204   AM_RANGE(0x0000, 0x7fff) AM_ROM
205   AM_RANGE(0x8000, 0x83ff) AM_RAM
224206   AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_r)
225   AM_RANGE(0xb000, 0xb00d) AM_DEVREAD("konami", k007232_r)
226   AM_RANGE(0xc000, 0xc001) AM_DEVREAD("ym", ym2151_r)
227ADDRESS_MAP_END
228
229static ADDRESS_MAP_START( dv_sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
230   AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM)
231   AM_RANGE(0x8000, 0x83ff) AM_WRITE(SMH_RAM)
232   AM_RANGE(0xb000, 0xb00d) AM_DEVWRITE("konami", k007232_w)
233   AM_RANGE(0xc000, 0xc001) AM_DEVWRITE("ym", ym2151_w)
207   AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE("konami", k007232_r,k007232_w)
208   AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ym", ym2151_r,ym2151_w)
234209   AM_RANGE(0xe000, 0xe000) AM_WRITE(devstor_sh_irqcontrol_w)
235210   AM_RANGE(0xf000, 0xf000) AM_DEVWRITE("konami", dv_sh_bankswitch_w)
236211ADDRESS_MAP_END
237212
238213
239
240214/*****************************************************************************/
241215
242216static INPUT_PORTS_START( mainevt )
r4679r4680
423397
424398   /* basic machine hardware */
425399   MDRV_CPU_ADD("maincpu", HD6309, 3000000*4)   /* ?? */
426   MDRV_CPU_PROGRAM_MAP(readmem,writemem)
400   MDRV_CPU_PROGRAM_MAP(mainevt_map,0)
427401   MDRV_CPU_VBLANK_INT("screen", mainevt_interrupt)
428402
429403   MDRV_CPU_ADD("audiocpu", Z80, 3579545)   /* 3.579545 MHz */
430   MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem)
431   MDRV_CPU_VBLANK_INT_HACK(nmi_line_pulse,8)   /* ??? */
404   MDRV_CPU_PROGRAM_MAP(mainevt_sound_map,0)
405   MDRV_CPU_PERIODIC_INT(nmi_line_pulse,8*60)   /* ??? */
432406
433407   /* video hardware */
434408   MDRV_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS)
r4679r4680
462436
463437   /* basic machine hardware */
464438   MDRV_CPU_ADD("maincpu", HD6309, 3000000*4)   /* ?? */
465   MDRV_CPU_PROGRAM_MAP(dv_readmem,dv_writemem)
439   MDRV_CPU_PROGRAM_MAP(devstors_map,0)
466440   MDRV_CPU_VBLANK_INT("screen", dv_interrupt)
467441
468442   MDRV_CPU_ADD("audiocpu", Z80, 3579545)   /* 3.579545 MHz */
469   MDRV_CPU_PROGRAM_MAP(dv_sound_readmem,dv_sound_writemem)
470   MDRV_CPU_VBLANK_INT_HACK(irq0_line_hold,4)
443   MDRV_CPU_PROGRAM_MAP(devstors_sound_map,0)
444   MDRV_CPU_PERIODIC_INT(irq0_line_hold,4*60) /* ??? */
471445
472446   /* video hardware */
473447   MDRV_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS)
src/mame/drivers/m62.c
r4679r4680
170170}
171171
172172
173static ADDRESS_MAP_START( kungfum_readmem, ADDRESS_SPACE_PROGRAM, 8 )
174   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
175   AM_RANGE(0xd000, 0xefff) AM_READ(SMH_RAM)
176ADDRESS_MAP_END
177
178static ADDRESS_MAP_START( kungfum_writemem, ADDRESS_SPACE_PROGRAM, 8 )
179   AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM)
173static ADDRESS_MAP_START( kungfum_map, ADDRESS_SPACE_PROGRAM, 8 )
174   AM_RANGE(0x0000, 0x7fff) AM_ROM
180175   AM_RANGE(0xa000, 0xa000) AM_WRITE(m62_hscroll_low_w)
181176   AM_RANGE(0xb000, 0xb000) AM_WRITE(m62_hscroll_high_w)
182   AM_RANGE(0xc000, 0xc0ff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
177   AM_RANGE(0xc000, 0xc0ff) AM_WRITEONLY AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
183178   /* Kung Fu Master is the only game in this driver to have separated (but */
184179   /* contiguous) videoram and colorram. They are interleaved in all the others. */
185   AM_RANGE(0xd000, 0xdfff) AM_WRITE(kungfum_tileram_w) AM_BASE(&m62_tileram)
186   AM_RANGE(0xe000, 0xefff) AM_WRITE(SMH_RAM)
180   AM_RANGE(0xd000, 0xdfff) AM_RAM_WRITE(kungfum_tileram_w) AM_BASE(&m62_tileram)
181   AM_RANGE(0xe000, 0xefff) AM_RAM
187182ADDRESS_MAP_END
188183
189static ADDRESS_MAP_START( kungfum_readport, ADDRESS_SPACE_IO, 8 )
184static ADDRESS_MAP_START( kungfum_io_map, ADDRESS_SPACE_IO, 8 )
190185   ADDRESS_MAP_GLOBAL_MASK(0xff)
191   AM_RANGE(0x00, 0x00) AM_READ_PORT("SYSTEM")
192   AM_RANGE(0x01, 0x01) AM_READ_PORT("P1")
186   AM_RANGE(0x00, 0x00) AM_READ_PORT("SYSTEM") AM_WRITE(irem_sound_cmd_w)
187   AM_RANGE(0x01, 0x01) AM_READ_PORT("P1") AM_WRITE(m62_flipscreen_w)   /* + coin counters */
193188   AM_RANGE(0x02, 0x02) AM_READ_PORT("P2")
194189   AM_RANGE(0x03, 0x03) AM_READ_PORT("DSW1")
195190   AM_RANGE(0x04, 0x04) AM_READ_PORT("DSW2")
196191ADDRESS_MAP_END
197192
198static ADDRESS_MAP_START( kungfum_writeport, ADDRESS_SPACE_IO, 8 )
199   ADDRESS_MAP_GLOBAL_MASK(0xff)
200   AM_RANGE(0x00, 0x00) AM_WRITE(irem_sound_cmd_w)
201   AM_RANGE(0x01, 0x01) AM_WRITE(m62_flipscreen_w)   /* + coin counters */
193static ADDRESS_MAP_START( battroad_map, ADDRESS_SPACE_PROGRAM, 8 )
194   AM_RANGE(0x0000, 0x7fff) AM_ROM
195   AM_RANGE(0xa000, 0xbfff) AM_ROMBANK(1)
196   AM_RANGE(0xc000, 0xc0ff) AM_WRITEONLY AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
197   AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(m62_textram_w) AM_BASE(&m62_textram)
198   AM_RANGE(0xd000, 0xdfff) AM_RAM_WRITE(m62_tileram_w) AM_BASE(&m62_tileram)
199   AM_RANGE(0xe000, 0xefff) AM_RAM
202200ADDRESS_MAP_END
203201
204
205static ADDRESS_MAP_START( battroad_readmem, ADDRESS_SPACE_PROGRAM, 8 )
206   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
207   AM_RANGE(0xa000, 0xbfff) AM_READ(SMH_BANK1)
208   AM_RANGE(0xc800, 0xefff) AM_READ(SMH_RAM)
209ADDRESS_MAP_END
210
211static ADDRESS_MAP_START( battroad_writemem, ADDRESS_SPACE_PROGRAM, 8 )
212   AM_RANGE(0x0000, 0xbfff) AM_WRITE(SMH_ROM)
213   AM_RANGE(0xc000, 0xc0ff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
214   AM_RANGE(0xc800, 0xcfff) AM_WRITE(m62_textram_w) AM_BASE(&m62_textram)
215   AM_RANGE(0xd000, 0xdfff) AM_WRITE(m62_tileram_w) AM_BASE(&m62_tileram)
216   AM_RANGE(0xe000, 0xefff) AM_WRITE(SMH_RAM)
217ADDRESS_MAP_END
218
219static ADDRESS_MAP_START( battroad_writeport, ADDRESS_SPACE_IO, 8 )
202static ADDRESS_MAP_START( battroad_io_map, ADDRESS_SPACE_IO, 8 )
220203   ADDRESS_MAP_GLOBAL_MASK(0xff)
221   AM_RANGE(0x00, 0x00) AM_WRITE(irem_sound_cmd_w)
222   AM_RANGE(0x01, 0x01) AM_WRITE(m62_flipscreen_w)   /* + coin counters */
204   AM_RANGE(0x00, 0x00) AM_READ_PORT("SYSTEM") AM_WRITE(irem_sound_cmd_w)
205   AM_RANGE(0x01, 0x01) AM_READ_PORT("P1") AM_WRITE(m62_flipscreen_w)   /* + coin counters */
206   AM_RANGE(0x02, 0x02) AM_READ_PORT("P2")
207   AM_RANGE(0x03, 0x03) AM_READ_PORT("DSW1")
208   AM_RANGE(0x04, 0x04) AM_READ_PORT("DSW2")
223209   AM_RANGE(0x80, 0x80) AM_WRITE(m62_vscroll_low_w)
224210   AM_RANGE(0x81, 0x81) AM_WRITE(m62_hscroll_high_w)
225211   AM_RANGE(0x82, 0x82) AM_WRITE(m62_hscroll_low_w)
226212   AM_RANGE(0x83, 0x83) AM_WRITE(battroad_bankswitch_w)
227213ADDRESS_MAP_END
228214
229
230static ADDRESS_MAP_START( ldrun_readmem, ADDRESS_SPACE_PROGRAM, 8 )
231   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
232   AM_RANGE(0xd000, 0xefff) AM_READ(SMH_RAM)
215static ADDRESS_MAP_START( ldrun_map, ADDRESS_SPACE_PROGRAM, 8 )
216   AM_RANGE(0x0000, 0x7fff) AM_ROM
217   AM_RANGE(0xc000, 0xc0ff) AM_WRITEONLY AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
218   AM_RANGE(0xd000, 0xdfff) AM_RAM_WRITE(m62_tileram_w) AM_BASE(&m62_tileram)
219   AM_RANGE(0xe000, 0xefff) AM_RAM
233220ADDRESS_MAP_END
234221
235static ADDRESS_MAP_START( ldrun_writemem, ADDRESS_SPACE_PROGRAM, 8 )
236   AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM)
237   AM_RANGE(0xc000, 0xc0ff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
238   AM_RANGE(0xd000, 0xdfff) AM_WRITE(m62_tileram_w) AM_BASE(&m62_tileram)
239   AM_RANGE(0xe000, 0xefff) AM_WRITE(SMH_RAM)
222static ADDRESS_MAP_START( ldrun2_map, ADDRESS_SPACE_PROGRAM, 8 )
223   AM_RANGE(0x0000, 0x7fff) AM_ROM
224   AM_RANGE(0x8000, 0x9fff) AM_ROMBANK(1)
225   AM_RANGE(0xc000, 0xc0ff) AM_WRITEONLY AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
226   AM_RANGE(0xd000, 0xdfff) AM_RAM_WRITE(m62_tileram_w) AM_BASE(&m62_tileram)
227   AM_RANGE(0xe000, 0xefff) AM_RAM
240228ADDRESS_MAP_END
241229
242
243static ADDRESS_MAP_START( ldrun2_readmem, ADDRESS_SPACE_PROGRAM, 8 )
244   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
245   AM_RANGE(0x8000, 0x9fff) AM_READ(SMH_BANK1)
246   AM_RANGE(0xd000, 0xefff) AM_READ(SMH_RAM)
247ADDRESS_MAP_END
248
249static ADDRESS_MAP_START( ldrun2_writemem, ADDRESS_SPACE_PROGRAM, 8 )
250   AM_RANGE(0x0000, 0x9fff) AM_WRITE(SMH_ROM)
251   AM_RANGE(0xc000, 0xc0ff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
252   AM_RANGE(0xd000, 0xdfff) AM_WRITE(m62_tileram_w) AM_BASE(&m62_tileram)
253   AM_RANGE(0xe000, 0xefff) AM_WRITE(SMH_RAM)
254ADDRESS_MAP_END
255
256static ADDRESS_MAP_START( ldrun2_readport, ADDRESS_SPACE_IO, 8 )
230static ADDRESS_MAP_START( ldrun2_io_map, ADDRESS_SPACE_IO, 8 )
257231   ADDRESS_MAP_GLOBAL_MASK(0xff)
258   AM_RANGE(0x00, 0x00) AM_READ_PORT("SYSTEM")
259   AM_RANGE(0x01, 0x01) AM_READ_PORT("P1")
232   AM_RANGE(0x00, 0x00) AM_READ_PORT("SYSTEM") AM_WRITE(irem_sound_cmd_w)
233   AM_RANGE(0x01, 0x01) AM_READ_PORT("P1") AM_WRITE(m62_flipscreen_w)   /* + coin counters */
260234   AM_RANGE(0x02, 0x02) AM_READ_PORT("P2")
261235   AM_RANGE(0x03, 0x03) AM_READ_PORT("DSW1")
262236   AM_RANGE(0x04, 0x04) AM_READ_PORT("DSW2")
263237   AM_RANGE(0x80, 0x80) AM_READ(ldrun2_bankswitch_r)
264ADDRESS_MAP_END
265
266static ADDRESS_MAP_START( ldrun2_writeport, ADDRESS_SPACE_IO, 8 )
267   ADDRESS_MAP_GLOBAL_MASK(0xff)
268   AM_RANGE(0x00, 0x00) AM_WRITE(irem_sound_cmd_w)
269   AM_RANGE(0x01, 0x01) AM_WRITE(m62_flipscreen_w)   /* + coin counters */
270238   AM_RANGE(0x80, 0x81) AM_WRITE(ldrun2_bankswitch_w)
271239ADDRESS_MAP_END
272240
273
274static ADDRESS_MAP_START( ldrun3_readmem, ADDRESS_SPACE_PROGRAM, 8 )
275   AM_RANGE(0x0000, 0xbfff) AM_READ(SMH_ROM)
241static ADDRESS_MAP_START( ldrun3_map, ADDRESS_SPACE_PROGRAM, 8 )
242   AM_RANGE(0x0000, 0xbfff) AM_ROM
276243   AM_RANGE(0xc800, 0xc800) AM_READ(ldrun3_prot_5_r)
277244   AM_RANGE(0xcc00, 0xcc00) AM_READ(ldrun3_prot_7_r)
278245   AM_RANGE(0xcfff, 0xcfff) AM_READ(ldrun3_prot_7_r)
279   AM_RANGE(0xd000, 0xefff) AM_READ(SMH_RAM)
246   AM_RANGE(0xc000, 0xc0ff) AM_WRITEONLY AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
247   AM_RANGE(0xd000, 0xdfff) AM_RAM_WRITE(m62_tileram_w) AM_BASE(&m62_tileram)
248   AM_RANGE(0xd000, 0xefff) AM_RAM
280249ADDRESS_MAP_END
281250
282static ADDRESS_MAP_START( ldrun3_writemem, ADDRESS_SPACE_PROGRAM, 8 )
283   AM_RANGE(0x0000, 0xbfff) AM_WRITE(SMH_ROM)
284   AM_RANGE(0xc000, 0xc0ff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
285   AM_RANGE(0xd000, 0xdfff) AM_WRITE(m62_tileram_w) AM_BASE(&m62_tileram)
286   AM_RANGE(0xe000, 0xefff) AM_WRITE(SMH_RAM)
287ADDRESS_MAP_END
288
289static ADDRESS_MAP_START( ldrun3_writeport, ADDRESS_SPACE_IO, 8 )
251static ADDRESS_MAP_START( ldrun3_io_map, ADDRESS_SPACE_IO, 8 )
290252   ADDRESS_MAP_GLOBAL_MASK(0xff)
291   AM_RANGE(0x00, 0x00) AM_WRITE(irem_sound_cmd_w)
292   AM_RANGE(0x01, 0x01) AM_WRITE(m62_flipscreen_w)   /* + coin counters */
253   AM_RANGE(0x00, 0x00) AM_READ_PORT("SYSTEM") AM_WRITE(irem_sound_cmd_w)
254   AM_RANGE(0x01, 0x01) AM_READ_PORT("P1") AM_WRITE(m62_flipscreen_w)   /* + coin counters */
255   AM_RANGE(0x02, 0x02) AM_READ_PORT("P2")
256   AM_RANGE(0x03, 0x03) AM_READ_PORT("DSW1")
257   AM_RANGE(0x04, 0x04) AM_READ_PORT("DSW2")
293258   AM_RANGE(0x80, 0x80) AM_WRITE(m62_vscroll_low_w)
294259   AM_RANGE(0x81, 0x81) AM_WRITE(ldrun3_topbottom_mask_w)
295260ADDRESS_MAP_END
296261
297
298static ADDRESS_MAP_START( ldrun4_readmem, ADDRESS_SPACE_PROGRAM, 8 )
299   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
300   AM_RANGE(0x8000, 0xbfff) AM_READ(SMH_BANK1)
301   AM_RANGE(0xd000, 0xefff) AM_READ(SMH_RAM)
302ADDRESS_MAP_END
303
304static ADDRESS_MAP_START( ldrun4_writemem, ADDRESS_SPACE_PROGRAM, 8 )
305   AM_RANGE(0x0000, 0xbfff) AM_WRITE(SMH_ROM)
306   AM_RANGE(0xc000, 0xc0ff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
262static ADDRESS_MAP_START( ldrun4_map, ADDRESS_SPACE_PROGRAM, 8 )
263   AM_RANGE(0x0000, 0x7fff) AM_ROM
264   AM_RANGE(0x8000, 0xbfff) AM_ROMBANK(1)
265   AM_RANGE(0xc000, 0xc0ff) AM_WRITEONLY AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
307266   AM_RANGE(0xc800, 0xc800) AM_WRITE(ldrun4_bankswitch_w)
308   AM_RANGE(0xd000, 0xdfff) AM_WRITE(m62_tileram_w) AM_BASE(&m62_tileram)
309   AM_RANGE(0xe000, 0xefff) AM_WRITE(SMH_RAM)
267   AM_RANGE(0xd000, 0xdfff) AM_RAM_WRITE(m62_tileram_w) AM_BASE(&m62_tileram)
268   AM_RANGE(0xe000, 0xefff) AM_RAM
310269ADDRESS_MAP_END
311270
312static ADDRESS_MAP_START( ldrun4_writeport, ADDRESS_SPACE_IO, 8 )
271static ADDRESS_MAP_START( ldrun4_io_map, ADDRESS_SPACE_IO, 8 )
313272   ADDRESS_MAP_GLOBAL_MASK(0xff)
314   AM_RANGE(0x00, 0x00) AM_WRITE(irem_sound_cmd_w)
315   AM_RANGE(0x01, 0x01) AM_WRITE(m62_flipscreen_w)   /* + coin counters */
273   AM_RANGE(0x00, 0x00) AM_READ_PORT("SYSTEM") AM_WRITE(irem_sound_cmd_w)
274   AM_RANGE(0x01, 0x01) AM_READ_PORT("P1") AM_WRITE(m62_flipscreen_w)   /* + coin counters */
275   AM_RANGE(0x02, 0x02) AM_READ_PORT("P2")
276   AM_RANGE(0x03, 0x03) AM_READ_PORT("DSW1")
277   AM_RANGE(0x04, 0x04) AM_READ_PORT("DSW2")
316278   AM_RANGE(0x82, 0x82) AM_WRITE(m62_hscroll_high_w)
317279   AM_RANGE(0x83, 0x83) AM_WRITE(m62_hscroll_low_w)
318280ADDRESS_MAP_END
319281
320
321static ADDRESS_MAP_START( lotlot_readmem, ADDRESS_SPACE_PROGRAM, 8 )
322   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
323   AM_RANGE(0xa000, 0xafff) AM_READ(SMH_RAM)
324   AM_RANGE(0xd000, 0xefff) AM_READ(SMH_RAM)
282static ADDRESS_MAP_START( lotlot_map, ADDRESS_SPACE_PROGRAM, 8 )
283   AM_RANGE(0x0000, 0x7fff) AM_ROM
284   AM_RANGE(0xa000, 0xafff) AM_RAM_WRITE(m62_textram_w) AM_BASE(&m62_textram)
285   AM_RANGE(0xc000, 0xc0ff) AM_WRITEONLY AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
286   AM_RANGE(0xd000, 0xdfff) AM_RAM_WRITE(m62_tileram_w) AM_BASE(&m62_tileram)
287   AM_RANGE(0xe000, 0xefff) AM_RAM
325288ADDRESS_MAP_END
326289
327static ADDRESS_MAP_START( lotlot_writemem, ADDRESS_SPACE_PROGRAM, 8 )
328   AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM)
329   AM_RANGE(0xa000, 0xafff) AM_WRITE(m62_textram_w) AM_BASE(&m62_textram)
330   AM_RANGE(0xc000, 0xc0ff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
331   AM_RANGE(0xd000, 0xdfff) AM_WRITE(m62_tileram_w) AM_BASE(&m62_tileram)
332   AM_RANGE(0xe000, 0xefff) AM_WRITE(SMH_RAM)
290static ADDRESS_MAP_START( kidniki_map, ADDRESS_SPACE_PROGRAM, 8 )
291   AM_RANGE(0x0000, 0x7fff) AM_ROM
292   AM_RANGE(0x8000, 0x9fff) AM_ROMBANK(1)
293   AM_RANGE(0xa000, 0xafff) AM_RAM_WRITE(m62_tileram_w) AM_BASE(&m62_tileram)
294   AM_RANGE(0xc000, 0xc0ff) AM_WRITEONLY AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
295   AM_RANGE(0xd000, 0xdfff) AM_RAM_WRITE(m62_textram_w) AM_BASE(&m62_textram)
296   AM_RANGE(0xe000, 0xefff) AM_RAM
333297ADDRESS_MAP_END
334298
335
336static ADDRESS_MAP_START( kidniki_readmem, ADDRESS_SPACE_PROGRAM, 8 )
337   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
338   AM_RANGE(0x8000, 0x9fff) AM_READ(SMH_BANK1)
339   AM_RANGE(0xa000, 0xafff) AM_READ(SMH_RAM)
340   AM_RANGE(0xd000, 0xefff) AM_READ(SMH_RAM)
341ADDRESS_MAP_END
342
343static ADDRESS_MAP_START( kidniki_writemem, ADDRESS_SPACE_PROGRAM, 8 )
344   AM_RANGE(0x0000, 0x9fff) AM_WRITE(SMH_ROM)
345   AM_RANGE(0xa000, 0xafff) AM_WRITE(m62_tileram_w) AM_BASE(&m62_tileram)
346   AM_RANGE(0xc000, 0xc0ff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
347   AM_RANGE(0xd000, 0xdfff) AM_WRITE(m62_textram_w) AM_BASE(&m62_textram)
348   AM_RANGE(0xe000, 0xefff) AM_WRITE(SMH_RAM)
349ADDRESS_MAP_END
350
351static ADDRESS_MAP_START( kidniki_writeport, ADDRESS_SPACE_IO, 8 )
299static ADDRESS_MAP_START( kidniki_io_map, ADDRESS_SPACE_IO, 8 )
352300   ADDRESS_MAP_GLOBAL_MASK(0xff)
353   AM_RANGE(0x00, 0x00) AM_WRITE(irem_sound_cmd_w)
354   AM_RANGE(0x01, 0x01) AM_WRITE(m62_flipscreen_w)   /* + coin counters */
301   AM_RANGE(0x00, 0x00) AM_READ_PORT("SYSTEM") AM_WRITE(irem_sound_cmd_w)
302   AM_RANGE(0x01, 0x01) AM_READ_PORT("P1") AM_WRITE(m62_flipscreen_w)   /* + coin counters */
303   AM_RANGE(0x02, 0x02) AM_READ_PORT("P2")
304   AM_RANGE(0x03, 0x03) AM_READ_PORT("DSW1")
305   AM_RANGE(0x04, 0x04) AM_READ_PORT("DSW2")
355306   AM_RANGE(0x80, 0x80) AM_WRITE(m62_hscroll_low_w)
356307   AM_RANGE(0x81, 0x81) AM_WRITE(m62_hscroll_high_w)
357308   AM_RANGE(0x82, 0x82) AM_WRITE(kidniki_text_vscroll_low_w)
r4679r4680
360311   AM_RANGE(0x85, 0x85) AM_WRITE(kidniki_bankswitch_w)
361312ADDRESS_MAP_END
362313
363
364static ADDRESS_MAP_START( spelunkr_readmem, ADDRESS_SPACE_PROGRAM, 8 )
365   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
366   AM_RANGE(0x8000, 0x9fff) AM_READ(SMH_BANK1)
367   AM_RANGE(0xa000, 0xbfff) AM_READ(SMH_RAM)
368   AM_RANGE(0xc800, 0xcfff) AM_READ(SMH_RAM)
369   AM_RANGE(0xe000, 0xefff) AM_READ(SMH_RAM)
370ADDRESS_MAP_END
371
372static ADDRESS_MAP_START( spelunkr_writemem, ADDRESS_SPACE_PROGRAM, 8 )
373   AM_RANGE(0x0000, 0x9fff) AM_WRITE(SMH_ROM)
374   AM_RANGE(0xa000, 0xbfff) AM_WRITE(m62_tileram_w) AM_BASE(&m62_tileram)
375   AM_RANGE(0xc000, 0xc0ff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
376   AM_RANGE(0xc800, 0xcfff) AM_WRITE(m62_textram_w) AM_BASE(&m62_textram)
314static ADDRESS_MAP_START( spelunkr_map, ADDRESS_SPACE_PROGRAM, 8 )
315   AM_RANGE(0x0000, 0x7fff) AM_ROM
316   AM_RANGE(0x8000, 0x9fff) AM_ROMBANK(1)
317   AM_RANGE(0xa000, 0xbfff) AM_RAM_WRITE(m62_tileram_w) AM_BASE(&m62_tileram)
318   AM_RANGE(0xc000, 0xc0ff) AM_WRITEONLY AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
319   AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(m62_textram_w) AM_BASE(&m62_textram)
377320   AM_RANGE(0xd000, 0xd000) AM_WRITE(m62_vscroll_low_w)
378321   AM_RANGE(0xd001, 0xd001) AM_WRITE(m62_vscroll_high_w)
379322   AM_RANGE(0xd002, 0xd002) AM_WRITE(m62_hscroll_low_w)
380323   AM_RANGE(0xd003, 0xd003) AM_WRITE(m62_hscroll_high_w)
381324   AM_RANGE(0xd004, 0xd004) AM_WRITE(spelunkr_bankswitch_w)
382325   AM_RANGE(0xd005, 0xd005) AM_WRITE(spelunkr_palbank_w)
383   AM_RANGE(0xe000, 0xefff) AM_WRITE(SMH_RAM)
326   AM_RANGE(0xe000, 0xefff) AM_RAM
384327ADDRESS_MAP_END
385328
386
387static ADDRESS_MAP_START( spelunk2_readmem, ADDRESS_SPACE_PROGRAM, 8 )
388   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
389   AM_RANGE(0x8000, 0x8fff) AM_READ(SMH_BANK1)
390   AM_RANGE(0x9000, 0x9fff) AM_READ(SMH_BANK2)
391   AM_RANGE(0xa000, 0xbfff) AM_READ(SMH_RAM)
392   AM_RANGE(0xc800, 0xcfff) AM_READ(SMH_RAM)
393   AM_RANGE(0xe000, 0xefff) AM_READ(SMH_RAM)
394ADDRESS_MAP_END
395
396static ADDRESS_MAP_START( spelunk2_writemem, ADDRESS_SPACE_PROGRAM, 8 )
397   AM_RANGE(0x0000, 0x9fff) AM_WRITE(SMH_ROM)
398   AM_RANGE(0xa000, 0xbfff) AM_WRITE(m62_tileram_w) AM_BASE(&m62_tileram)
399   AM_RANGE(0xc000, 0xc0ff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
400   AM_RANGE(0xc800, 0xcfff) AM_WRITE(m62_textram_w) AM_BASE(&m62_textram)
329static ADDRESS_MAP_START( spelunk2_map, ADDRESS_SPACE_PROGRAM, 8 )
330   AM_RANGE(0x0000, 0x7fff) AM_ROM
331   AM_RANGE(0x8000, 0x8fff) AM_ROMBANK(1)
332   AM_RANGE(0x9000, 0x9fff) AM_ROMBANK(2)
333   AM_RANGE(0xa000, 0xbfff) AM_RAM_WRITE(m62_tileram_w) AM_BASE(&m62_tileram)
334   AM_RANGE(0xc000, 0xc0ff) AM_WRITEONLY AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
335   AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(m62_textram_w) AM_BASE(&m62_textram)
401336   AM_RANGE(0xd000, 0xd000) AM_WRITE(m62_vscroll_low_w)
402337   AM_RANGE(0xd001, 0xd001) AM_WRITE(m62_hscroll_low_w)
403338   AM_RANGE(0xd002, 0xd002) AM_WRITE(spelunk2_gfxport_w)
404339   AM_RANGE(0xd003, 0xd003) AM_WRITE(spelunk2_bankswitch_w)
405   AM_RANGE(0xe000, 0xefff) AM_WRITE(SMH_RAM)
340   AM_RANGE(0xe000, 0xefff) AM_RAM
406341ADDRESS_MAP_END
407342
408
409static ADDRESS_MAP_START( youjyudn_readmem, ADDRESS_SPACE_PROGRAM, 8 )
410   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
411   AM_RANGE(0x8000, 0xbfff) AM_READ(SMH_BANK1)
412   AM_RANGE(0xc800, 0xcfff) AM_READ(SMH_RAM)
413   AM_RANGE(0xd000, 0xd7ff) AM_READ(SMH_RAM)
414   AM_RANGE(0xe000, 0xefff) AM_READ(SMH_RAM)
343static ADDRESS_MAP_START( youjyudn_map, ADDRESS_SPACE_PROGRAM, 8 )
344   AM_RANGE(0x0000, 0x7fff) AM_ROM
345   AM_RANGE(0x8000, 0xbfff) AM_ROMBANK(1)
346   AM_RANGE(0xc000, 0xc0ff) AM_WRITEONLY AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
347   AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(m62_textram_w) AM_BASE(&m62_textram)
348   AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(m62_tileram_w) AM_BASE(&m62_tileram)
349   AM_RANGE(0xe000, 0xefff) AM_RAM
415350ADDRESS_MAP_END
416351
417static ADDRESS_MAP_START( youjyudn_writemem, ADDRESS_SPACE_PROGRAM, 8 )
418   AM_RANGE(0x0000, 0xbfff) AM_WRITE(SMH_ROM)
419   AM_RANGE(0xc000, 0xc0ff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
420   AM_RANGE(0xc800, 0xcfff) AM_WRITE(m62_textram_w) AM_BASE(&m62_textram)
421   AM_RANGE(0xd000, 0xd7ff) AM_WRITE(m62_tileram_w) AM_BASE(&m62_tileram)
422   AM_RANGE(0xe000, 0xefff) AM_WRITE(SMH_RAM)
423ADDRESS_MAP_END
424
425static ADDRESS_MAP_START( youjyudn_writeport, ADDRESS_SPACE_IO, 8 )
352static ADDRESS_MAP_START( youjyudn_io_map, ADDRESS_SPACE_IO, 8 )
426353   ADDRESS_MAP_GLOBAL_MASK(0xff)
427   AM_RANGE(0x00, 0x00) AM_WRITE(irem_sound_cmd_w)
428   AM_RANGE(0x01, 0x01) AM_WRITE(m62_flipscreen_w)   /* + coin counters */
354   AM_RANGE(0x00, 0x00) AM_READ_PORT("SYSTEM") AM_WRITE(irem_sound_cmd_w)
355   AM_RANGE(0x01, 0x01) AM_READ_PORT("P1") AM_WRITE(m62_flipscreen_w)   /* + coin counters */
356   AM_RANGE(0x02, 0x02) AM_READ_PORT("P2")
357   AM_RANGE(0x03, 0x03) AM_READ_PORT("DSW1")
358   AM_RANGE(0x04, 0x04) AM_READ_PORT("DSW2")
429359   AM_RANGE(0x80, 0x80) AM_WRITE(m62_hscroll_high_w)
430360   AM_RANGE(0x81, 0x81) AM_WRITE(m62_hscroll_low_w)
431361   AM_RANGE(0x83, 0x83) AM_WRITE(youjyudn_bankswitch_w)
432362ADDRESS_MAP_END
433363
434
435static ADDRESS_MAP_START( horizon_readmem, ADDRESS_SPACE_PROGRAM, 8 )
436   AM_RANGE(0x0000, 0xbfff) AM_READ(SMH_ROM)
437   AM_RANGE(0xc000, 0xc1ff) AM_READ(SMH_RAM)
438   AM_RANGE(0xc800, 0xc83f) AM_READ(SMH_RAM)
439   AM_RANGE(0xd000, 0xdfff) AM_READ(SMH_RAM)
440   AM_RANGE(0xe000, 0xefff) AM_READ(SMH_RAM)
364static ADDRESS_MAP_START( horizon_map, ADDRESS_SPACE_PROGRAM, 8 )
365   AM_RANGE(0x0000, 0xbfff) AM_ROM
366   AM_RANGE(0xc000, 0xc1ff) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
367   AM_RANGE(0xc800, 0xc83f) AM_RAM_WRITE(horizon_scrollram_w) AM_BASE(&horizon_scrollram)
368   AM_RANGE(0xd000, 0xdfff) AM_RAM_WRITE(m62_tileram_w) AM_BASE(&m62_tileram)
369   AM_RANGE(0xe000, 0xefff) AM_RAM
441370ADDRESS_MAP_END
442371
443static ADDRESS_MAP_START( horizon_writemem, ADDRESS_SPACE_PROGRAM, 8 )
444   AM_RANGE(0x0000, 0xbfff) AM_WRITE(SMH_ROM)
445   AM_RANGE(0xc000, 0xc1ff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
446   AM_RANGE(0xc800, 0xc83f) AM_WRITE(horizon_scrollram_w) AM_BASE(&horizon_scrollram)
447   AM_RANGE(0xd000, 0xdfff) AM_WRITE(m62_tileram_w) AM_BASE(&m62_tileram)
448   AM_RANGE(0xe000, 0xefff) AM_WRITE(SMH_RAM)
449ADDRESS_MAP_END
450372
451
452373static INPUT_PORTS_START( common )
453374   PORT_START("SYSTEM")
454375   /* Start 1 & 2 also restarts and freezes the game with stop mode on
r4679r4680
1013934
1014935   /* basic machine hardware */
1015936   MDRV_CPU_ADD("maincpu", Z80, 24000000/6)
1016   MDRV_CPU_PROGRAM_MAP(ldrun_readmem,ldrun_writemem)
1017   MDRV_CPU_IO_MAP(kungfum_readport,kungfum_writeport)
937   MDRV_CPU_PROGRAM_MAP(ldrun_map,0)
938   MDRV_CPU_IO_MAP(kungfum_io_map,0)
1018939   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
1019940
1020941   /* video hardware */
r4679r4680
1042963   /* basic machine hardware */
1043964   MDRV_IMPORT_FROM(ldrun)
1044965   MDRV_CPU_REPLACE("maincpu", Z80, 18432000/6)
1045   MDRV_CPU_PROGRAM_MAP(kungfum_readmem,kungfum_writemem)
1046   MDRV_CPU_IO_MAP(kungfum_readport,kungfum_writeport)
966   MDRV_CPU_PROGRAM_MAP(kungfum_map,0)
967   MDRV_CPU_IO_MAP(kungfum_io_map,0)
1047968
1048969   /* video hardware */
1049970   MDRV_SCREEN_MODIFY("screen")
r4679r4680
1059980   /* basic machine hardware */
1060981   MDRV_IMPORT_FROM(ldrun)
1061982   MDRV_CPU_REPLACE("maincpu", Z80, 18432000/6)
1062   MDRV_CPU_PROGRAM_MAP(battroad_readmem,battroad_writemem)
1063   MDRV_CPU_IO_MAP(kungfum_readport,battroad_writeport)
983   MDRV_CPU_PROGRAM_MAP(battroad_map,0)
984   MDRV_CPU_IO_MAP(battroad_io_map,0)
1064985
1065986   /* video hardware */
1066987   MDRV_SCREEN_MODIFY("screen")
r4679r4680
10791000   /* basic machine hardware */
10801001   MDRV_IMPORT_FROM(ldrun)
10811002   MDRV_CPU_MODIFY("maincpu")
1082   MDRV_CPU_PROGRAM_MAP(ldrun2_readmem,ldrun2_writemem)
1083   MDRV_CPU_IO_MAP(ldrun2_readport,ldrun2_writeport)
1003   MDRV_CPU_PROGRAM_MAP(ldrun2_map,0)
1004   MDRV_CPU_IO_MAP(ldrun2_io_map,0)
10841005
10851006   MDRV_VIDEO_START(ldrun2)
10861007   MDRV_VIDEO_UPDATE(ldrun)
r4679r4680
10921013   /* basic machine hardware */
10931014   MDRV_IMPORT_FROM(ldrun)
10941015   MDRV_CPU_MODIFY("maincpu")
1095   MDRV_CPU_PROGRAM_MAP(ldrun3_readmem,ldrun3_writemem)
1096   MDRV_CPU_IO_MAP(kungfum_readport,ldrun3_writeport)
1016   MDRV_CPU_PROGRAM_MAP(ldrun3_map,0)
1017   MDRV_CPU_IO_MAP(ldrun3_io_map,0)
10971018
10981019   /* video hardware */
10991020   MDRV_GFXDECODE(ldrun3)
r4679r4680
11071028   /* basic machine hardware */
11081029   MDRV_IMPORT_FROM(ldrun)
11091030   MDRV_CPU_MODIFY("maincpu")
1110   MDRV_CPU_PROGRAM_MAP(ldrun4_readmem,ldrun4_writemem)
1111   MDRV_CPU_IO_MAP(kungfum_readport,ldrun4_writeport)
1031   MDRV_CPU_PROGRAM_MAP(ldrun4_map,0)
1032   MDRV_CPU_IO_MAP(ldrun4_io_map,0)
11121033
11131034   /* video hardware */
11141035   MDRV_GFXDECODE(ldrun3)
r4679r4680
11221043   /* basic machine hardware */
11231044   MDRV_IMPORT_FROM(ldrun)
11241045   MDRV_CPU_MODIFY("maincpu")
1125   MDRV_CPU_PROGRAM_MAP(lotlot_readmem,lotlot_writemem)
1046   MDRV_CPU_PROGRAM_MAP(lotlot_map,0)
11261047
11271048   /* video hardware */
11281049   MDRV_GFXDECODE(lotlot)
r4679r4680
11391060   /* basic machine hardware */
11401061   MDRV_IMPORT_FROM(ldrun)
11411062   MDRV_CPU_MODIFY("maincpu")
1142   MDRV_CPU_PROGRAM_MAP(kidniki_readmem,kidniki_writemem)
1143   MDRV_CPU_IO_MAP(kungfum_readport,kidniki_writeport)
1063   MDRV_CPU_PROGRAM_MAP(kidniki_map,0)
1064   MDRV_CPU_IO_MAP(kidniki_io_map,0)
11441065
11451066   /* video hardware */
11461067   MDRV_GFXDECODE(kidniki)
r4679r4680
11551076   /* basic machine hardware */
11561077   MDRV_IMPORT_FROM(ldrun)
11571078   MDRV_CPU_MODIFY("maincpu")
1158   MDRV_CPU_PROGRAM_MAP(spelunkr_readmem,spelunkr_writemem)
1079   MDRV_CPU_PROGRAM_MAP(spelunkr_map,0)
11591080
11601081   /* video hardware */
11611082   MDRV_GFXDECODE(spelunkr)
r4679r4680
11701091   /* basic machine hardware */
11711092   MDRV_IMPORT_FROM(ldrun)
11721093   MDRV_CPU_MODIFY("maincpu")
1173   MDRV_CPU_PROGRAM_MAP(spelunk2_readmem,spelunk2_writemem)
1094   MDRV_CPU_PROGRAM_MAP(spelunk2_map,0)
11741095
11751096   /* video hardware */
11761097   MDRV_GFXDECODE(spelunk2)
r4679r4680
11871108   /* basic machine hardware */
11881109   MDRV_IMPORT_FROM(ldrun)
11891110   MDRV_CPU_REPLACE("maincpu", Z80, 18432000/6)
1190   MDRV_CPU_PROGRAM_MAP(youjyudn_readmem,youjyudn_writemem)
1191   MDRV_CPU_IO_MAP(kungfum_readport,youjyudn_writeport)
1111   MDRV_CPU_PROGRAM_MAP(youjyudn_map,0)
1112   MDRV_CPU_IO_MAP(youjyudn_io_map,0)
11921113
11931114   /* video hardware */
11941115   MDRV_SCREEN_MODIFY("screen")
r4679r4680
12051126   /* basic machine hardware */
12061127   MDRV_IMPORT_FROM(ldrun)
12071128   MDRV_CPU_MODIFY("maincpu")
1208   MDRV_CPU_PROGRAM_MAP(horizon_readmem,horizon_writemem)
1129   MDRV_CPU_PROGRAM_MAP(horizon_map,0)
12091130
12101131   /* video hardware */
12111132   MDRV_SCREEN_MODIFY("screen")
src/mame/drivers/astrocde.c
r4679r4680
427427   profpac_bank = data;
428428
429429   /* set the main banking */
430   memory_install_read8_handler(space, 0x4000, 0xbfff, 0, 0, SMH_BANK1);
430   memory_install_read8_handler(space, 0x4000, 0xbfff, 0, 0, (read8_space_func)SMH_BANK(1));
431431   memory_set_bankptr(space->machine, 1, memory_region(space->machine, "user1") + 0x8000 * bank);
432432
433433   /* bank 0 reads video RAM in the 4000-7FFF range */
r4679r4680
443443      /* if the bank is in range, map the appropriate bank */
444444      if (bank < 0x28)
445445      {
446         memory_install_read8_handler(space, 0x4000, 0x7fff, 0, 0, SMH_BANK2);
446         memory_install_read8_handler(space, 0x4000, 0x7fff, 0, 0, (read8_space_func)SMH_BANK(2));
447447         memory_set_bankptr(space->machine, 2, memory_region(space->machine, "user2") + 0x4000 * bank);
448448      }
449449      else
450         memory_install_read8_handler(space, 0x4000, 0x7fff, 0, 0, SMH_UNMAP);
450         memory_install_read8_handler(space, 0x4000, 0x7fff, 0, 0, (read8_space_func)SMH_UNMAP);
451451   }
452452}
453453
454454
455455static STATE_POSTLOAD( profbank_banksw_restore )
456456{
457   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO);
457   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_IO);
458458
459459   profpac_banksw_w(space, 0, profpac_bank);
460460}
r4679r4680
16761676static DRIVER_INIT( seawolf2 )
16771677{
16781678   astrocade_video_config = 0x00;
1679   memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x40, 0x40, 0, 0xff18, seawolf2_sound_1_w);
1680   memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x41, 0x41, 0, 0xff18, seawolf2_sound_2_w);
1681   memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x42, 0x43, 0, 0xff18, seawolf2_lamps_w);
1679   memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_IO), 0x40, 0x40, 0, 0xff18, seawolf2_sound_1_w);
1680   memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_IO), 0x41, 0x41, 0, 0xff18, seawolf2_sound_2_w);
1681   memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_IO), 0x42, 0x43, 0, 0xff18, seawolf2_lamps_w);
16821682}
16831683
16841684
16851685static DRIVER_INIT( ebases )
16861686{
16871687   astrocade_video_config = AC_SOUND_PRESENT;
1688   memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x20, 0x20, 0, 0xff07, ebases_coin_w);
1689   memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x28, 0x28, 0, 0xff07, ebases_trackball_select_w);
1688   memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_IO), 0x20, 0x20, 0, 0xff07, ebases_coin_w);
1689   memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_IO), 0x28, 0x28, 0, 0xff07, ebases_trackball_select_w);
16901690}
16911691
16921692
16931693static DRIVER_INIT( spacezap )
16941694{
16951695   astrocade_video_config = AC_SOUND_PRESENT;
1696   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x13, 0x13, 0x03ff, 0xff00, spacezap_io_r);
1696   memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_IO), 0x13, 0x13, 0x03ff, 0xff00, spacezap_io_r);
16971697}
16981698
16991699
17001700static DRIVER_INIT( wow )
17011701{
17021702   astrocade_video_config = AC_SOUND_PRESENT | AC_LIGHTPEN_INTS | AC_STARS;
1703   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x15, 0x15, 0x0fff, 0xff00, wow_io_r);
1704   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x17, 0x17, 0xffff, 0xff00, wow_speech_r);
1703   memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_IO), 0x15, 0x15, 0x0fff, 0xff00, wow_io_r);
1704   memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_IO), 0x17, 0x17, 0xffff, 0xff00, wow_speech_r);
17051705}
17061706
17071707
17081708static DRIVER_INIT( gorf )
17091709{
17101710   astrocade_video_config = AC_SOUND_PRESENT | AC_LIGHTPEN_INTS | AC_STARS;
1711   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x15, 0x15, 0x0fff, 0xff00, gorf_io_1_r);
1712   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x16, 0x16, 0x0fff, 0xff00, gorf_io_2_r);
1713   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x17, 0x17, 0xffff, 0xff00, gorf_speech_r);
1711   memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_IO), 0x15, 0x15, 0x0fff, 0xff00, gorf_io_1_r);
1712   memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_IO), 0x16, 0x16, 0x0fff, 0xff00, gorf_io_2_r);
1713   memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_IO), 0x17, 0x17, 0xffff, 0xff00, gorf_speech_r);
17141714}
17151715
17161716
17171717static DRIVER_INIT( robby )
17181718{
17191719   astrocade_video_config = AC_SOUND_PRESENT;
1720   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x15, 0x15, 0x0fff, 0xff00, robby_io_r);
1720   memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_IO), 0x15, 0x15, 0x0fff, 0xff00, robby_io_r);
17211721}
17221722
17231723
17241724static DRIVER_INIT( profpac )
17251725{
1726   const address_space *iospace = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO);
1726   const address_space *iospace = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_IO);
17271727
17281728   astrocade_video_config = AC_SOUND_PRESENT;
17291729   memory_install_read8_handler(iospace, 0x14, 0x14, 0x0fff, 0xff00, profpac_io_1_r);
r4679r4680
17371737
17381738static DRIVER_INIT( demndrgn )
17391739{
1740   const address_space *iospace = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO);
1740   const address_space *iospace = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_IO);
17411741
17421742   astrocade_video_config = 0x00;
17431743   memory_install_read8_handler(iospace, 0x14, 0x14, 0x1fff, 0xff00, demndrgn_io_r);
r4679r4680
17531753
17541754static DRIVER_INIT( tenpindx )
17551755{
1756   const address_space *iospace = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO);
1756   const address_space *iospace = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_IO);
17571757
17581758   astrocade_video_config = 0x00;
17591759   memory_install_read_port_handler(iospace, 0x60, 0x60, 0x0000, 0xff00, "P60");
src/mame/drivers/megazone.c
r4679r4680
7575
7676static WRITE8_HANDLER( megazone_i8039_irq_w )
7777{
78   cpu_set_input_line(space->machine->cpu[2], 0, ASSERT_LINE);
78   cputag_set_input_line(space->machine, "daccpu", 0, ASSERT_LINE);
7979}
8080
8181static WRITE8_HANDLER( i8039_irqen_and_status_w )
8282{
8383   if ((data & 0x80) == 0)
84      cpu_set_input_line(space->machine->cpu[2], 0, CLEAR_LINE);
84      cputag_set_input_line(space->machine, "daccpu", 0, CLEAR_LINE);
8585   i8039_status = (data & 0x70) >> 4;
8686}
8787
r4679r4680
9292
9393
9494
95static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 )
96   AM_RANGE(0x2000, 0x2fff) AM_READ(SMH_RAM)
97   AM_RANGE(0x3000, 0x33ff) AM_READ(SMH_RAM)
98   AM_RANGE(0x3800, 0x3fff) AM_RAM AM_SHARE(1)
99   AM_RANGE(0x4000, 0xffff) AM_READ(SMH_ROM)      /* 4000->5FFF is a debug rom */
100ADDRESS_MAP_END
101
102static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 )
95static ADDRESS_MAP_START( megazone_map, ADDRESS_SPACE_PROGRAM, 8 )
10396   AM_RANGE(0x0000, 0x0001) AM_WRITE(megazone_coin_counter_w) /* coin counter 2, coin counter 1 */
10497   AM_RANGE(0x0005, 0x0005) AM_WRITE(megazone_flipscreen_w)
10598   AM_RANGE(0x0007, 0x0007) AM_WRITE(interrupt_enable_w)
10699   AM_RANGE(0x0800, 0x0800) AM_WRITE(watchdog_reset_w)
107   AM_RANGE(0x1800, 0x1800) AM_WRITE(SMH_RAM) AM_BASE(&megazone_scrollx)
108   AM_RANGE(0x1000, 0x1000) AM_WRITE(SMH_RAM) AM_BASE(&megazone_scrolly)
109   AM_RANGE(0x2000, 0x23ff) AM_WRITE(SMH_RAM) AM_BASE(&videoram) AM_SIZE(&videoram_size)
110   AM_RANGE(0x2400, 0x27ff) AM_WRITE(SMH_RAM) AM_BASE(&megazone_videoram2) AM_SIZE(&megazone_videoram2_size)
111   AM_RANGE(0x2800, 0x2bff) AM_WRITE(SMH_RAM) AM_BASE(&colorram)
112   AM_RANGE(0x2c00, 0x2fff) AM_WRITE(SMH_RAM) AM_BASE(&megazone_colorram2)
113   AM_RANGE(0x3000, 0x33ff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
114   AM_RANGE(0x4000, 0xffff) AM_WRITE(SMH_ROM)
100   AM_RANGE(0x1000, 0x1000) AM_WRITEONLY AM_BASE(&megazone_scrolly)
101   AM_RANGE(0x1800, 0x1800) AM_WRITEONLY AM_BASE(&megazone_scrollx)
102   AM_RANGE(0x2000, 0x23ff) AM_RAM AM_BASE(&videoram) AM_SIZE(&videoram_size)
103   AM_RANGE(0x2400, 0x27ff) AM_RAM AM_BASE(&megazone_videoram2) AM_SIZE(&megazone_videoram2_size)
104   AM_RANGE(0x2800, 0x2bff) AM_RAM AM_BASE(&colorram)
105   AM_RANGE(0x2c00, 0x2fff) AM_RAM AM_BASE(&megazone_colorram2)
106   AM_RANGE(0x3000, 0x33ff) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
107   AM_RANGE(0x3800, 0x3fff) AM_RAM AM_SHARE(1)
108   AM_RANGE(0x4000, 0xffff) AM_ROM      /* 4000->5FFF is a debug rom */
115109ADDRESS_MAP_END
116110
117static ADDRESS_MAP_START( sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
118   AM_RANGE(0x0000, 0x1fff) AM_READ(SMH_ROM)
119   AM_RANGE(0x6000, 0x6000) AM_READ_PORT("IN0")  /* IO Coin */
120   AM_RANGE(0x6001, 0x6001) AM_READ_PORT("IN1")  /* P1 IO */
121   AM_RANGE(0x6002, 0x6002) AM_READ_PORT("IN2")  /* P2 IO */
111static ADDRESS_MAP_START( megazone_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
112   AM_RANGE(0x0000, 0x1fff) AM_ROM
113   AM_RANGE(0x2000, 0x2000) AM_WRITE(megazone_i8039_irq_w)   /* START line. Interrupts 8039 */
114   AM_RANGE(0x4000, 0x4000) AM_WRITE(soundlatch_w)         /* CODE  line. Command Interrupts 8039 */
115   AM_RANGE(0x6000, 0x6000) AM_READ_PORT("IN0")           /* IO Coin */
116   AM_RANGE(0x6001, 0x6001) AM_READ_PORT("IN1")           /* P1 IO */
117   AM_RANGE(0x6002, 0x6002) AM_READ_PORT("IN2")           /* P2 IO */
122118   AM_RANGE(0x8000, 0x8000) AM_READ_PORT("DSW1")
123119   AM_RANGE(0x8001, 0x8001) AM_READ_PORT("DSW2")
120   AM_RANGE(0xa000, 0xa000) AM_WRITENOP               /* INTMAIN - Interrupts main CPU (unused) */
121   AM_RANGE(0xc000, 0xc000) AM_WRITENOP               /* INT (Actually is NMI) enable/disable (unused)*/
122   AM_RANGE(0xc001, 0xc001) AM_WRITE(watchdog_reset_w)
124123   AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_SHARE(1)
125124ADDRESS_MAP_END
126125
127static ADDRESS_MAP_START( sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
128   AM_RANGE(0x0000, 0x1fff) AM_WRITE(SMH_ROM)
129   AM_RANGE(0x2000, 0x2000) AM_WRITE(megazone_i8039_irq_w)   /* START line. Interrupts 8039 */
130   AM_RANGE(0x4000, 0x4000) AM_WRITE(soundlatch_w)         /* CODE  line. Command Interrupts 8039 */
131   AM_RANGE(0xa000, 0xa000) AM_WRITE(SMH_RAM)            /* INTMAIN - Interrupts main CPU (unused) */
132   AM_RANGE(0xc000, 0xc000) AM_WRITE(SMH_RAM)            /* INT (Actually is NMI) enable/disable (unused)*/
133   AM_RANGE(0xc001, 0xc001) AM_WRITE(watchdog_reset_w)
134ADDRESS_MAP_END
135
136static ADDRESS_MAP_START( sound_io_map, ADDRESS_SPACE_IO, 8 )
126static ADDRESS_MAP_START( megazone_sound_io_map, ADDRESS_SPACE_IO, 8 )
137127   ADDRESS_MAP_GLOBAL_MASK(0xff)
138128   AM_RANGE(0x00, 0x00) AM_DEVWRITE("ay", ay8910_address_w)
139129   AM_RANGE(0x00, 0x02) AM_DEVREAD("ay", ay8910_r)
140130   AM_RANGE(0x02, 0x02) AM_DEVWRITE("ay", ay8910_data_w)
141131ADDRESS_MAP_END
142132
143static ADDRESS_MAP_START( i8039_readmem, ADDRESS_SPACE_PROGRAM, 8 )
144   AM_RANGE(0x0000, 0x0fff) AM_READ(SMH_ROM)
133static ADDRESS_MAP_START( megazone_i8039_map, ADDRESS_SPACE_PROGRAM, 8 )
134   AM_RANGE(0x0000, 0x0fff) AM_ROM
145135ADDRESS_MAP_END
146136
147static ADDRESS_MAP_START( i8039_writemem, ADDRESS_SPACE_PROGRAM, 8 )
148   AM_RANGE(0x0000, 0x0fff) AM_WRITE(SMH_ROM)
149ADDRESS_MAP_END
150
151static ADDRESS_MAP_START( i8039_io_map, ADDRESS_SPACE_IO, 8 )
137static ADDRESS_MAP_START( megazone_i8039_io_map, ADDRESS_SPACE_IO, 8 )
152138   AM_RANGE(0x00, 0xff) AM_READ(soundlatch_r)
153139   AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_DEVWRITE("dac", dac_w)
154140   AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_WRITE(i8039_irqen_and_status_w)
r4679r4680
256242
257243   /* basic machine hardware */
258244   MDRV_CPU_ADD("maincpu", M6809, 18432000/9)        /* 2 MHz */
259   MDRV_CPU_PROGRAM_MAP(readmem,writemem)
245   MDRV_CPU_PROGRAM_MAP(megazone_map,0)
260246   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
261247
262248   MDRV_CPU_ADD("audiocpu", Z80,18432000/6)     /* Z80 Clock is derived from the H1 signal */
263   MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem)
264   MDRV_CPU_IO_MAP(sound_io_map,0)
249   MDRV_CPU_PROGRAM_MAP(megazone_sound_map,0)
250   MDRV_CPU_IO_MAP(megazone_sound_io_map,0)
265251   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
266252
267253   MDRV_CPU_ADD("daccpu", I8039,14318000/2)   /* 1/2 14MHz crystal */
268   MDRV_CPU_PROGRAM_MAP(i8039_readmem,i8039_writemem)
269   MDRV_CPU_IO_MAP(i8039_io_map,0)
254   MDRV_CPU_PROGRAM_MAP(megazone_i8039_map,0)
255   MDRV_CPU_IO_MAP(megazone_i8039_io_map,0)
270256
271257   MDRV_QUANTUM_TIME(HZ(900))
272258
src/mame/drivers/deco156.c
r4679r4680
3434static VIDEO_START( wcvol95 )
3535{
3636   /* allocate the ram as 16-bit (we do it here because the CPU is 32-bit) */
37   deco16_pf1_data = auto_malloc(0x2000);
38   deco16_pf2_data = auto_malloc(0x2000);
39   deco16_pf1_rowscroll = auto_malloc(0x800);
40   deco16_pf2_rowscroll = auto_malloc(0x800);
41   deco16_pf12_control = auto_malloc(0x10);
42   paletteram16 =  auto_malloc(0x1000);
37   deco16_pf1_data = auto_alloc_array(machine, UINT16, 0x2000/2);
38   deco16_pf2_data = auto_alloc_array(machine, UINT16, 0x2000/2);
39   deco16_pf1_rowscroll = auto_alloc_array(machine, UINT16, 0x800/2);
40   deco16_pf2_rowscroll = auto_alloc_array(machine, UINT16, 0x800/2);
41   deco16_pf12_control = auto_alloc_array(machine, UINT16, 0x10/2);
42   paletteram16 =  auto_alloc_array(machine, UINT16, 0x1000/2);
4343
4444   /* and register the allocated ram so that save states still work */
4545   state_save_register_global_pointer(machine, deco16_pf1_data, 0x2000/2);
r4679r4680
640640{
641641   UINT8 *rom = memory_region(machine, tag);
642642   int length = memory_region_length(machine, tag);
643   UINT8 *buf1 = malloc_or_die(length);
643   UINT8 *buf1 = alloc_array_or_die(UINT8, length);
644644   UINT32 x;
645645
646646   for (x=0;x<length;x++)
src/mame/drivers/pass.c
r4679r4680
117117
118118/* end in video */
119119
120static WRITE16_HANDLER ( pass_soundwrite )
121{
122   soundlatch_w(space,0,data & 0xff);
123}
124
125120/* todo: check all memory regions actually readable / read from */
126static ADDRESS_MAP_START( pass_readmem, ADDRESS_SPACE_PROGRAM, 16 )
127   AM_RANGE(0x000000, 0x03ffff) AM_READ(SMH_ROM)
128   AM_RANGE(0x080000, 0x083fff) AM_READ(SMH_RAM)
129   AM_RANGE(0x200000, 0x200fff) AM_READ(SMH_RAM)
130   AM_RANGE(0x210000, 0x213fff) AM_READ(SMH_RAM)
131   AM_RANGE(0x220000, 0x2203ff) AM_READ(SMH_RAM)
121static ADDRESS_MAP_START( pass_map, ADDRESS_SPACE_PROGRAM, 16 )
122   AM_RANGE(0x000000, 0x03ffff) AM_ROM
123   AM_RANGE(0x080000, 0x083fff) AM_RAM
124   AM_RANGE(0x200000, 0x200fff) AM_RAM_WRITE(pass_bg_videoram_w) AM_BASE(&pass_bg_videoram) // Background
125   AM_RANGE(0x210000, 0x213fff) AM_RAM_WRITE(pass_fg_videoram_w) AM_BASE(&pass_fg_videoram) // Foreground
126   AM_RANGE(0x220000, 0x2203ff) AM_RAM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE(&paletteram16)
127   AM_RANGE(0x230000, 0x230001) AM_WRITE(soundlatch_word_w)
132128   AM_RANGE(0x230100, 0x230101) AM_READ_PORT("DSW")
133129   AM_RANGE(0x230200, 0x230201) AM_READ_PORT("INPUTS")
134130ADDRESS_MAP_END
135131
136static ADDRESS_MAP_START( pass_writemem, ADDRESS_SPACE_PROGRAM, 16 )
137   AM_RANGE(0x000000, 0x03ffff) AM_WRITE(SMH_ROM)
138   AM_RANGE(0x080000, 0x083fff) AM_WRITE(SMH_RAM)
139   AM_RANGE(0x200000, 0x200fff) AM_WRITE(pass_bg_videoram_w) AM_BASE(&pass_bg_videoram) // Background
140   AM_RANGE(0x210000, 0x213fff) AM_WRITE(pass_fg_videoram_w) AM_BASE(&pass_fg_videoram) // Foreground
141   AM_RANGE(0x220000, 0x2203ff) AM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE(&paletteram16)
142   AM_RANGE(0x230000, 0x230001) AM_WRITE(pass_soundwrite)
143ADDRESS_MAP_END
144
145132/* sound cpu */
146
147static ADDRESS_MAP_START( pass_sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
148   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
149   AM_RANGE(0xf800, 0xffff) AM_READ(SMH_RAM)
133static ADDRESS_MAP_START( pass_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
134   AM_RANGE(0x0000, 0x7fff) AM_ROM
135   AM_RANGE(0xf800, 0xffff) AM_RAM
150136ADDRESS_MAP_END
151137
152static ADDRESS_MAP_START( pass_sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
153   AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM)
154   AM_RANGE(0xf800, 0xffff) AM_WRITE(SMH_RAM)
155ADDRESS_MAP_END
156
157138static ADDRESS_MAP_START( pass_sound_io_map, ADDRESS_SPACE_IO, 8 )
158139   ADDRESS_MAP_GLOBAL_MASK(0xff)
159140   AM_RANGE(0x00, 0x00) AM_READ(soundlatch_r)
r4679r4680
260241GFXDECODE_END
261242
262243/* todo : is this correct? */
263
264
265
266244static MACHINE_DRIVER_START( pass )
267245   /* basic machine hardware */
268246   MDRV_CPU_ADD("maincpu", M68000, 14318180/2 )
269   MDRV_CPU_PROGRAM_MAP(pass_readmem,pass_writemem)
247   MDRV_CPU_PROGRAM_MAP(pass_map,0)
270248   MDRV_CPU_VBLANK_INT("screen", irq1_line_hold) /* all the same */
271249
272250   MDRV_CPU_ADD("audiocpu", Z80, 14318180/4 )
273   MDRV_CPU_PROGRAM_MAP(pass_sound_readmem,pass_sound_writemem)
251   MDRV_CPU_PROGRAM_MAP(pass_sound_map,0)
274252   MDRV_CPU_IO_MAP(pass_sound_io_map,0)
275   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
253   MDRV_CPU_PERIODIC_INT(irq0_line_hold,60) /* probably not accurate, unknown timing and generation (ym2203 sound chip?). */
276254
277255   /* video hardware */
278256   MDRV_SCREEN_ADD("screen", RASTER)
src/mame/drivers/toki.c
r4679r4680
6161
6262static WRITE16_HANDLER( tokib_soundcommand16_w )
6363{
64   soundlatch_w(space,0,data & 0xff);
65   cpu_set_input_line(space->machine->cpu[1], 0, HOLD_LINE);
64   soundlatch_w(space, 0, data & 0xff);
65   cputag_set_input_line(space->machine, "audiocpu", 0, HOLD_LINE);
6666}
6767
6868static READ16_HANDLER( pip16_r )
r4679r4680
7575
7676static void toki_adpcm_int (const device_config *device)
7777{
78   static int toggle=0;
78   static int toggle = 0;
7979
80   msm5205_data_w (device,msm5205next);
81   msm5205next>>=4;
80   msm5205_data_w (device, msm5205next);
81   msm5205next >>= 4;
8282
8383   toggle ^= 1;
8484   if (toggle)
85      cpu_set_input_line(device->machine->cpu[1], INPUT_LINE_NMI, PULSE_LINE);
85      cputag_set_input_line(device->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
8686}
8787
8888static WRITE8_DEVICE_HANDLER( toki_adpcm_control_w )
r4679r4680
148148
149149static ADDRESS_MAP_START( tokib_audio_map, ADDRESS_SPACE_PROGRAM, 8 )
150150   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
151   AM_RANGE(0x8000, 0xbfff) AM_READ(SMH_BANK1)
151   AM_RANGE(0x8000, 0xbfff) AM_READ(SMH_BANK(1))
152152   AM_RANGE(0x0000, 0xbfff) AM_WRITE(SMH_ROM)
153153   AM_RANGE(0xe000, 0xe000) AM_DEVWRITE("msm", toki_adpcm_control_w)   /* MSM5205 + ROM bank */
154154   AM_RANGE(0xe400, 0xe400) AM_WRITE(toki_adpcm_data_w)
r4679r4680
729729static DRIVER_INIT( toki )
730730{
731731   UINT8 *ROM = memory_region(machine, "oki");
732   UINT8 *buffer = malloc_or_die(0x20000);
732   UINT8 *buffer = alloc_array_or_die(UINT8, 0x20000);
733733   int i;
734734
735735   memcpy(buffer,ROM,0x20000);
r4679r4680
746746
747747static DRIVER_INIT( tokib )
748748{
749   UINT8 *temp = malloc_or_die(65536 * 2);
749   UINT8 *temp = alloc_array_or_die(UINT8, 65536 * 2);
750750   int i, offs, len;
751751   UINT8 *rom;
752752
r4679r4680
808808   /* Decrypt data for z80 program */
809809   {
810810      const address_space *space = cputag_get_address_space(machine, "audiocpu", ADDRESS_SPACE_PROGRAM);
811      UINT8 *decrypt = auto_malloc(0x20000);
811      UINT8 *decrypt = auto_alloc_array(machine, UINT8, 0x20000);
812812      UINT8 *rom = memory_region(machine, "audiocpu");
813813      int i;
814814
r4679r4680
825825
826826   {
827827      UINT8 *ROM = memory_region(machine, "oki");
828      UINT8 *buffer = malloc_or_die(0x20000);
828      UINT8 *buffer = alloc_array_or_die(UINT8, 0x20000);
829829      int i;
830830
831831      memcpy(buffer,ROM,0x20000);
src/mame/drivers/dwarfd.c
r4679r4680
784784   //      src[i] = src[i]&0xe0;
785785   }
786786
787   videobuf=auto_malloc(0x8000);
788   dwarfd_ram=auto_malloc(0x1000);
787   videobuf=auto_alloc_array(machine, UINT8, 0x8000);
788   dwarfd_ram=auto_alloc_array(machine, UINT8, 0x1000);
789789   memset(videobuf,0,0x8000);
790790   memset(dwarfd_ram,0,0x1000);
791791
src/mame/drivers/40love.c
r4679r4680
246246
247247static TIMER_CALLBACK( nmi_callback )
248248{
249   if (sound_nmi_enable) cpu_set_input_line(machine->cpu[1], INPUT_LINE_NMI, PULSE_LINE);
249   if (sound_nmi_enable) cputag_set_input_line(machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
250250   else pending_nmi = 1;
251251}
252252
r4679r4680
266266   sound_nmi_enable = 1;
267267   if (pending_nmi)
268268   {
269      cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_NMI, PULSE_LINE);
269      cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
270270      pending_nmi = 0;
271271   }
272272}
src/mame/drivers/junofrst.c
r4679r4680
141141   if (last == 0 && data == 1)
142142   {
143143      /* setting bit 0 low then high triggers IRQ on the sound CPU */
144      cpu_set_input_line_and_vector(space->machine->cpu[1],0,HOLD_LINE,0xff);
144      cputag_set_input_line_and_vector(space->machine, "audiocpu", 0, HOLD_LINE, 0xff);
145145   }
146146
147147   last = data;
r4679r4680
150150
151151static WRITE8_HANDLER( junofrst_i8039_irq_w )
152152{
153   cpu_set_input_line(space->machine->cpu[2], 0, ASSERT_LINE);
153   cputag_set_input_line(space->machine, "mcu", 0, ASSERT_LINE);
154154}
155155
156156
157157static WRITE8_HANDLER( i8039_irqen_and_status_w )
158158{
159159   if ((data & 0x80) == 0)
160      cpu_set_input_line(space->machine->cpu[2], 0, CLEAR_LINE);
160      cputag_set_input_line(space->machine, "mcu", 0, CLEAR_LINE);
161161   i8039_status = (data & 0x70) >> 4;
162162}
163163
r4679r4680
194194   AM_RANGE(0x8060, 0x8060) AM_WRITE(junofrst_bankselect_w)
195195   AM_RANGE(0x8070, 0x8073) AM_WRITE(junofrst_blitter_w)
196196   AM_RANGE(0x8100, 0x8fff) AM_RAM
197   AM_RANGE(0x9000, 0x9fff) AM_READ(SMH_BANK1)
197   AM_RANGE(0x9000, 0x9fff) AM_READ(SMH_BANK(1))
198198   AM_RANGE(0xa000, 0xffff) AM_ROM
199199ADDRESS_MAP_END
200200
src/mame/drivers/renegade.c
r4679r4680
139139
140140static STREAM_UPDATE( renegade_adpcm_callback )
141141{
142   struct renegade_adpcm_state *state = param;
142   struct renegade_adpcm_state *state = (struct renegade_adpcm_state *)param;
143143   stream_sample_t *dest = outputs[0];
144144
145145   while (state->playing && samples > 0)
r4679r4680
216216static WRITE8_HANDLER( sound_w )
217217{
218218   soundlatch_w(space, offset, data);
219   cpu_set_input_line(space->machine->cpu[1], M6809_IRQ_LINE, HOLD_LINE);
219   cputag_set_input_line(space->machine, "audiocpu", M6809_IRQ_LINE, HOLD_LINE);
220220}
221221
222222/********************************************************************************************/
r4679r4680
535535
536536/********************************************************************************************/
537537
538static ADDRESS_MAP_START( main_readmem, ADDRESS_SPACE_PROGRAM, 8 )
539   AM_RANGE(0x0000, 0x37ff) AM_READ(SMH_RAM)
540   AM_RANGE(0x3800, 0x3800) AM_READ_PORT("IN0")      /* Player#1 controls, P1,P2 start */
541   AM_RANGE(0x3801, 0x3801) AM_READ_PORT("IN1")      /* Player#2 controls, coin triggers */
542   AM_RANGE(0x3802, 0x3802) AM_READ_PORT("DSW2")   /* DIP2  various IO ports */
543   AM_RANGE(0x3803, 0x3803) AM_READ_PORT("DSW1")   /* DIP1 */
544   AM_RANGE(0x3804, 0x3804) AM_READ(mcu_r)
545   AM_RANGE(0x3805, 0x3805) AM_READ(mcu_reset_r)
546   AM_RANGE(0x4000, 0x7fff) AM_READ(SMH_BANK1)
547   AM_RANGE(0x8000, 0xffff) AM_READ(SMH_ROM)
548ADDRESS_MAP_END
549
550static ADDRESS_MAP_START( main_writemem, ADDRESS_SPACE_PROGRAM, 8 )
551   AM_RANGE(0x0000, 0x17ff) AM_WRITE(SMH_RAM)
552   AM_RANGE(0x1800, 0x1fff) AM_WRITE(renegade_videoram2_w) AM_BASE(&renegade_videoram2)
553   AM_RANGE(0x2000, 0x27ff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram)
554   AM_RANGE(0x2800, 0x2fff) AM_WRITE(renegade_videoram_w) AM_BASE(&videoram)
555   AM_RANGE(0x3000, 0x30ff) AM_WRITE(paletteram_xxxxBBBBGGGGRRRR_split1_w) AM_BASE(&paletteram)
556   AM_RANGE(0x3100, 0x31ff) AM_WRITE(paletteram_xxxxBBBBGGGGRRRR_split2_w) AM_BASE(&paletteram_2)
557   AM_RANGE(0x3800, 0x3800) AM_WRITE(renegade_scroll0_w)
558   AM_RANGE(0x3801, 0x3801) AM_WRITE(renegade_scroll1_w)
559   AM_RANGE(0x3802, 0x3802) AM_WRITE(sound_w)
560   AM_RANGE(0x3803, 0x3803) AM_WRITE(renegade_flipscreen_w)
561   AM_RANGE(0x3804, 0x3804) AM_WRITE(mcu_w)
562   AM_RANGE(0x3805, 0x3805) AM_WRITE(bankswitch_w)
538static ADDRESS_MAP_START( renegade_map, ADDRESS_SPACE_PROGRAM, 8 )
539   AM_RANGE(0x0000, 0x17ff) AM_RAM
540   AM_RANGE(0x1800, 0x1fff) AM_RAM_WRITE(renegade_videoram2_w) AM_BASE(&renegade_videoram2)
541   AM_RANGE(0x2000, 0x27ff) AM_RAM AM_BASE(&spriteram)
542   AM_RANGE(0x2800, 0x2fff) AM_RAM_WRITE(renegade_videoram_w) AM_BASE(&videoram)
543   AM_RANGE(0x3000, 0x30ff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_split1_w) AM_BASE(&paletteram)
544   AM_RANGE(0x3100, 0x31ff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_split2_w) AM_BASE(&paletteram_2)
545   AM_RANGE(0x3800, 0x3800) AM_READ_PORT("IN0") AM_WRITE(renegade_scroll0_w)      /* Player#1 controls, P1,P2 start */
546   AM_RANGE(0x3801, 0x3801) AM_READ_PORT("IN1") AM_WRITE(renegade_scroll1_w)      /* Player#2 controls, coin triggers */
547   AM_RANGE(0x3802, 0x3802) AM_READ_PORT("DSW2") AM_WRITE(sound_w)   /* DIP2  various IO ports */
548   AM_RANGE(0x3803, 0x3803) AM_READ_PORT("DSW1") AM_WRITE(renegade_flipscreen_w)   /* DIP1 */
549   AM_RANGE(0x3804, 0x3804) AM_READWRITE(mcu_r,mcu_w)
550   AM_RANGE(0x3805, 0x3805) AM_READWRITE(mcu_reset_r,bankswitch_w)
563551   AM_RANGE(0x3806, 0x3806) AM_WRITENOP // ?? watchdog
564552   AM_RANGE(0x3807, 0x3807) AM_WRITE(renegade_coin_counter_w)
565   AM_RANGE(0x4000, 0x7fff) AM_WRITE(SMH_ROM)
566   AM_RANGE(0x8000, 0xffff) AM_WRITE(SMH_ROM)
553   AM_RANGE(0x4000, 0x7fff) AM_ROMBANK(1)
554   AM_RANGE(0x8000, 0xffff) AM_ROM
567555ADDRESS_MAP_END
568556
569static ADDRESS_MAP_START( sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
570   AM_RANGE(0x0000, 0x0fff) AM_READ(SMH_RAM)
557static ADDRESS_MAP_START( renegade_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
558   AM_RANGE(0x0000, 0x0fff) AM_RAM
571559   AM_RANGE(0x1000, 0x1000) AM_READ(soundlatch_r)
572   AM_RANGE(0x2800, 0x2801) AM_DEVREAD("ym", ym3526_r)
573   AM_RANGE(0x8000, 0xffff) AM_READ(SMH_ROM)
574ADDRESS_MAP_END
575
576static ADDRESS_MAP_START( sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
577   AM_RANGE(0x0000, 0x0fff) AM_WRITE(SMH_RAM)
578560   AM_RANGE(0x1800, 0x1800) AM_WRITENOP // this gets written the same values as 0x2000
579561   AM_RANGE(0x2000, 0x2000) AM_WRITE(adpcm_play_w)
580   AM_RANGE(0x2800, 0x2801) AM_DEVWRITE("ym", ym3526_w)
562   AM_RANGE(0x2800, 0x2801) AM_DEVREADWRITE("ym", ym3526_r,ym3526_w)
581563   AM_RANGE(0x3000, 0x3000) AM_WRITENOP /* adpcm related? stereo pan? */
582   AM_RANGE(0x8000, 0xffff) AM_WRITE(SMH_ROM)
564   AM_RANGE(0x8000, 0xffff) AM_ROM
583565ADDRESS_MAP_END
584566
585567
r4679r4680
779761/* handler called by the 3526 emulator when the internal timers cause an IRQ */
780762static void irqhandler(const device_config *device, int linestate)
781763{
782   cpu_set_input_line(device->machine->cpu[1], M6809_FIRQ_LINE, linestate);
764   cputag_set_input_line(device->machine, "audiocpu", M6809_FIRQ_LINE, linestate);
783765}
784766
785767static const ym3526_interface ym3526_config =
r4679r4680
799781
800782   /* basic machine hardware */
801783   MDRV_CPU_ADD("maincpu", M6502, 12000000/8)   /* 1.5 MHz (measured) */
802   MDRV_CPU_PROGRAM_MAP(main_readmem,main_writemem)
784   MDRV_CPU_PROGRAM_MAP(renegade_map,0)
803785   MDRV_CPU_VBLANK_INT_HACK(renegade_interrupt,2)
804786
805787   MDRV_CPU_ADD("audiocpu", M6809, 12000000/8)
806   MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem)
788   MDRV_CPU_PROGRAM_MAP(renegade_sound_map,0)
807789                        /* IRQs are caused by the main CPU */
808790   MDRV_MACHINE_START(renegade)
809791   MDRV_MACHINE_RESET(renegade)
src/mame/drivers/sg1000a.c
r4679r4680
231231
232232static void vdp_interrupt(running_machine *machine, int state)
233233{
234   cpu_set_input_line(machine->cpu[0], INPUT_LINE_IRQ0, state);
234   cputag_set_input_line(machine, "maincpu", INPUT_LINE_IRQ0, state);
235235}
236236
237237static const TMS9928a_interface tms9928a_interface =
src/mame/drivers/galaga.c
r4679r4680
992992
993993
994994/* bootleg 4th CPU replacing the 5xXX chips */
995static ADDRESS_MAP_START( readmem4_galaga, ADDRESS_SPACE_PROGRAM, 8 )
995static ADDRESS_MAP_START( galaga_mem4, ADDRESS_SPACE_PROGRAM, 8 )
996996   AM_RANGE(0x0000, 0x0fff) AM_READWRITE(SMH_ROM, SMH_ROM)
997997   AM_RANGE(0x1000, 0x107f) AM_READWRITE(SMH_RAM, SMH_RAM)
998998ADDRESS_MAP_END
999999
1000static ADDRESS_MAP_START( readmem4_battles, ADDRESS_SPACE_PROGRAM, 8 )
1000static ADDRESS_MAP_START( battles_mem4, ADDRESS_SPACE_PROGRAM, 8 )
10011001   AM_RANGE(0x0000, 0x0fff) AM_READ(SMH_ROM)
10021002   AM_RANGE(0x4000, 0x4003) AM_READ(battles_input_port_r)
10031003   AM_RANGE(0x4001, 0x4001) AM_WRITE(battles_CPU4_coin_w)
r4679r4680
10071007   AM_RANGE(0x8000, 0x80ff) AM_READWRITE(SMH_RAM, SMH_RAM)
10081008ADDRESS_MAP_END
10091009
1010static ADDRESS_MAP_START( readmem4_dzigzag, ADDRESS_SPACE_PROGRAM, 8 )
1010static ADDRESS_MAP_START( dzigzag_mem4, ADDRESS_SPACE_PROGRAM, 8 )
10111011   AM_RANGE(0x0000, 0x0fff) AM_READWRITE(SMH_ROM, SMH_ROM)
10121012   AM_RANGE(0x1000, 0x107f) AM_READWRITE(SMH_RAM, SMH_RAM)
10131013   AM_RANGE(0x4000, 0x4007) AM_READ(SMH_RAM)   // dip switches? bits 0 & 1 used
r4679r4680
17501750   MDRV_CPU_REMOVE(CPUTAG_54XX)
17511751
17521752   MDRV_CPU_ADD("sub3", Z80, MASTER_CLOCK/6)   /* 3.072 MHz */
1753   MDRV_CPU_PROGRAM_MAP(readmem4_galaga,0)
1753   MDRV_CPU_PROGRAM_MAP(galaga_mem4,0)
17541754
17551755   /* sound hardware */
17561756   MDRV_SOUND_REMOVE("discrete")
r4679r4680
18241824   MDRV_CPU_REMOVE(CPUTAG_54XX)
18251825
18261826   MDRV_CPU_ADD("sub3", Z80, MASTER_CLOCK/6)   /* 3.072 MHz */
1827   MDRV_CPU_PROGRAM_MAP(readmem4_battles,0)
1827   MDRV_CPU_PROGRAM_MAP(battles_mem4,0)
18281828   MDRV_CPU_VBLANK_INT("screen", battles_interrupt_4)
18291829
18301830   MDRV_MACHINE_RESET(battles)
r4679r4680
18911891   MDRV_IMPORT_FROM(digdug)
18921892
18931893   MDRV_CPU_ADD("sub3", Z80, MASTER_CLOCK/6)   /* 3.072 MHz */
1894   MDRV_CPU_PROGRAM_MAP(readmem4_dzigzag,0)
1894   MDRV_CPU_PROGRAM_MAP(dzigzag_mem4,0)
18951895MACHINE_DRIVER_END
18961896
18971897
r4679r4680
29222922   ROM_LOAD( "xvi_1bpr.5n",  0x0100, 0x0100, CRC(77245b66) SHA1(0c4d0bee858b97632411c440bea6948a74759746) )   /* timing - not used */
29232923ROM_END
29242924
2925ROM_START( sxeviousj )
2926   ROM_REGION( 0x10000, "maincpu", 0 )   /* 64k for the first CPU */
2927   ROM_LOAD( "3p.bin",       0x0000, 0x1000, CRC(afbc3372) SHA1(9001856aad0f31b40443f21b7a895e4101684307) )
2928   ROM_LOAD( "3m.bin",       0x1000, 0x1000, CRC(1854a5ee) SHA1(2fb4034d9d757376df59378df539bf41d99ed43e) )
2929   ROM_LOAD( "cpu_2m.rom",   0x2000, 0x1000, CRC(294d5404) SHA1(ecc39fb2c0065a36f20541747089b4e30dfb99b1) )
2930   ROM_LOAD( "cpu_2l.rom",   0x3000, 0x1000, CRC(6a44bf92) SHA1(0ca726f7f9528789f2a718df55e59406a283cdfa) )
2931
2932   ROM_REGION( 0x10000, "sub", 0 )   /* 64k for the second CPU */
2933   ROM_LOAD( "cpu_3f.rom",   0x0000, 0x1000, CRC(d4bd3d81) SHA1(5831bb306bd650779207936bfd00f25864733abb) )
2934   ROM_LOAD( "cpu_3j.rom",   0x1000, 0x1000, CRC(af06be5f) SHA1(5a020822387ab8c69214db961180760fa9853e6e) )
2935
2936   ROM_REGION( 0x10000, "sub2", 0 )
2937   ROM_LOAD( "xvi_7.2c",     0x0000, 0x1000, CRC(dd35cf1c) SHA1(f8d1f8e019d8198308443c2e7e815d0d04b23d14) )
2938
2939   XEVIOUS_CUSTOMS
2940
2941   ROM_REGION( 0x1000, "gfx1", ROMREGION_DISPOSE )
2942   ROM_LOAD( "xvi_12.3b",    0x0000, 0x1000, CRC(088c8b26) SHA1(9c3b61dfca2f84673a78f7f66e363777a8f47a59) )   /* foreground characters */
2943
2944   ROM_REGION( 0x2000, "gfx2", ROMREGION_DISPOSE )
2945   ROM_LOAD( "xvi_13.3c",    0x0000, 0x1000, CRC(de60ba25) SHA1(32bc09be5ff8b52ee3a26e0ac3ebc2d4107badb7) )   /* bg pattern B0 */
2946   ROM_LOAD( "xvi_14.3d",    0x1000, 0x1000, CRC(535cdbbc) SHA1(fb9ffe5fc43e0213231267e98d605d43c15f61e8) )   /* bg pattern B1 */
2947
2948   ROM_REGION( 0xa000, "gfx3", ROMREGION_DISPOSE )
2949   ROM_LOAD( "xvi_15.4m",    0x0000, 0x2000, CRC(dc2c0ecb) SHA1(19ddbd9805f77f38c9a9a1bb30dba6c720b8609f) )   /* sprite set #1, planes 0/1 */
2950   ROM_LOAD( "xvi_17.4p",    0x2000, 0x2000, CRC(dfb587ce) SHA1(acff2bf5cde85a16cdc98a52cdea11f77fadf25a) )   /* sprite set #2, planes 0/1 */
2951   ROM_LOAD( "xvi_16.4n",    0x4000, 0x1000, CRC(605ca889) SHA1(3bf380ef76c03822a042ecc73b5edd4543c268ce) )   /* sprite set #3, planes 0/1 */
2952   ROM_LOAD( "xvi_18.4r",    0x5000, 0x2000, CRC(02417d19) SHA1(b5f830dd2cf25cf154308d2e640f0ecdcda5d8cd) )   /* sprite set #1, plane 2, set #2, plane 2 */
2953   /* 0x7000-0x8fff  will be unpacked from 0x5000-0x6fff */
2954   ROM_FILL(                 0x9000, 0x1000, 0x00 )   // empty space to decode sprite set #3 as 3 bits per pixel
2955
2956   ROM_REGION( 0x4000, "gfx4", 0 )   /* background tilemaps */
2957   ROM_LOAD( "xvi_9.2a",     0x0000, 0x1000, CRC(57ed9879) SHA1(3106d1aacff06cf78371bd19967141072b32b7d7) )
2958   ROM_LOAD( "xvi_10.2b",    0x1000, 0x2000, CRC(ae3ba9e5) SHA1(49064b25667ffcd81137cd5e800df4b78b182a46) )
2959   ROM_LOAD( "xvi_11.2c",    0x3000, 0x1000, CRC(31e244dd) SHA1(3f7eac12863697a98e1122111801606759e44b2a) )
2960
2961   ROM_REGION( 0x0b00, "proms", 0 )
2962   ROM_LOAD( "xvi_8bpr.6a",  0x0000, 0x0100, CRC(5cc2727f) SHA1(0dc1e63a47a4cb0ba75f6f1e0c15e408bb0ee2a1) ) /* palette red component */
2963   ROM_LOAD( "xvi_9bpr.6d",  0x0100, 0x0100, CRC(5c8796cc) SHA1(63015e3c0874afc6b1ca032f1ffb8f90562c77c8) ) /* palette green component */
2964   ROM_LOAD( "xvi10bpr.6e",  0x0200, 0x0100, CRC(3cb60975) SHA1(c94d5a5dd4d8a08d6d39c051a4a722581b903f45) ) /* palette blue component */
2965   ROM_LOAD( "xvi_7bpr.4h",  0x0300, 0x0200, CRC(22d98032) SHA1(ec6626828c79350417d08b98e9631ad35edd4a41) ) /* bg tiles lookup table low bits */
2966   ROM_LOAD( "xvi_6bpr.4f",  0x0500, 0x0200, CRC(3a7599f0) SHA1(a4bdf58c190ca16fc7b976c97f41087a61fdb8b8) ) /* bg tiles lookup table high bits */
2967   ROM_LOAD( "xvi_4bpr.3l",  0x0700, 0x0200, CRC(fd8b9d91) SHA1(87ddf0b9d723aabb422d6d416aa9ec6bc246bf34) ) /* sprite lookup table low bits */
2968   ROM_LOAD( "xvi_5bpr.3m",  0x0900, 0x0200, CRC(bf906d82) SHA1(776168a73d3b9f0ce05610acc8a623deae0a572b) ) /* sprite lookup table high bits */
2969
2970   ROM_REGION( 0x0200, "namco", 0 )   /* sound PROMs */
2971   ROM_LOAD( "xvi_2bpr.7n",  0x0000, 0x0100, CRC(550f06bc) SHA1(816a0fafa0b084ac11ae1af70a5186539376fc2a) )
2972   ROM_LOAD( "xvi_1bpr.5n",  0x0100, 0x0100, CRC(77245b66) SHA1(0c4d0bee858b97632411c440bea6948a74759746) )   /* timing - not used */
2973ROM_END
2974
29252975/**********************************************************************************************
29262976  Dig Dug & clones
29272977**********************************************************************************************/
r4679r4680
33453395GAME( 1982, xeviousb, xevious, xevious, xeviousb, xevious, ROT90, "Namco (Atari license)", "Xevious (Atari set 2)", GAME_SUPPORTS_SAVE )
33463396GAME( 1982, xeviousc, xevious, xevious, xeviousa, xevious, ROT90, "Namco (Atari license)", "Xevious (Atari set 3)", GAME_SUPPORTS_SAVE )
33473397GAME( 1984, sxevious, xevious, xevious, sxevious, xevious, ROT90, "Namco", "Super Xevious", GAME_SUPPORTS_SAVE )
3398GAME( 1984, sxeviousj,xevious, xevious, sxevious, xevious, ROT90, "Namco", "Super Xevious (Japan)", GAME_SUPPORTS_SAVE )
33483399
33493400GAME( 1982, digdug,   0,       digdug,  digdug,   0,       ROT90, "Namco", "Dig Dug (rev 2)", GAME_SUPPORTS_SAVE )
33503401GAME( 1982, digdugb,  digdug,  digdug,  digdug,   0,       ROT90, "Namco", "Dig Dug (rev 1)", GAME_SUPPORTS_SAVE )
src/mame/drivers/panicr.c
r4679r4680
439439
440440static DRIVER_INIT( panicr )
441441{
442   UINT8 *buf = malloc_or_die(0x80000);
442   UINT8 *buf = alloc_array_or_die(UINT8, 0x80000);
443443   UINT8 *rom;
444444   int size;
445445   int i;
src/mame/drivers/istellar.c
r4679r4680
102102   if (z80_2_nmi_enable)
103103   {
104104      logerror("Executing an NMI on CPU2\n");
105      cpu_set_input_line(space->machine->cpu[2], INPUT_LINE_NMI, PULSE_LINE);      /* Maybe this is a ASSERT_LINE, CLEAR_LINE combo? */
105      cputag_set_input_line(space->machine, "sub", INPUT_LINE_NMI, PULSE_LINE);      /* Maybe this is a ASSERT_LINE, CLEAR_LINE combo? */
106106      z80_2_nmi_enable = 0;
107107   }
108108}
r4679r4680
316316   cpu_set_input_line(device, 0, ASSERT_LINE);
317317
318318   /* Interrupt presumably comes from the LDP's status strobe */
319   cpu_set_input_line(device->machine->cpu[2], 0, ASSERT_LINE);
319   cputag_set_input_line(device->machine, "sub", 0, ASSERT_LINE);
320320}
321321
322322
src/mame/drivers/lasso.c
r4679r4680
3939static INPUT_CHANGED( coin_inserted )
4040{
4141   /* coin insertion causes an NMI */
42   cpu_set_input_line(field->port->machine->cpu[0], INPUT_LINE_NMI, newval ? CLEAR_LINE : ASSERT_LINE);
42   cputag_set_input_line(field->port->machine, "maincpu", INPUT_LINE_NMI, newval ? CLEAR_LINE : ASSERT_LINE);
4343}
4444
4545
r4679r4680
5151static WRITE8_HANDLER( sound_command_w )
5252{
5353   soundlatch_w(space,offset,data);
54   generic_pulse_irq_line(space->machine->cpu[1], 0);
54   generic_pulse_irq_line(cputag_get_cpu(space->machine, "audiocpu"), 0);
5555}
5656
5757static WRITE8_HANDLER( pinbo_sound_command_w )
5858{
5959   soundlatch_w(space,offset,data);
60   cpu_set_input_line(space->machine->cpu[1], 0, HOLD_LINE);
60   cputag_set_input_line(space->machine, "audiocpu", 0, HOLD_LINE);
6161}
6262
6363static READ8_HANDLER( sound_status_r )
src/mame/drivers/macs.c
r4679r4680
590590
591591static DRIVER_INIT(macs)
592592{
593   macs_ram1=auto_malloc(0x20000);
593   macs_ram1=auto_alloc_array(machine, UINT8, 0x20000);
594594   st0016_game=10|0x80;
595595}
596596
597597static DRIVER_INIT(kisekaeh)
598598{
599   macs_ram1=auto_malloc(0x20000);
599   macs_ram1=auto_alloc_array(machine, UINT8, 0x20000);
600600   st0016_game=11|0x180;
601601}
602602
603603static DRIVER_INIT(kisekaem)
604604{
605   macs_ram1=auto_malloc(0x20000);
605   macs_ram1=auto_alloc_array(machine, UINT8, 0x20000);
606606   st0016_game=10|0x180;
607607}
608608
src/mame/drivers/nbmj8688.c
r4679r4680
279279   nb1413m3_type = NB1413M3_BARLINE;
280280}
281281
282static ADDRESS_MAP_START( readmem_mjsikaku, ADDRESS_SPACE_PROGRAM, 8 )
283   AM_RANGE(0x0000, 0xf7ff) AM_READ(SMH_ROM)
284   AM_RANGE(0xf800, 0xffff) AM_READ(SMH_RAM)
282static ADDRESS_MAP_START( mjsikaku_map, ADDRESS_SPACE_PROGRAM, 8 )
283   AM_RANGE(0x0000, 0xf7ff) AM_ROM
284   AM_RANGE(0xf800, 0xffff) AM_RAM AM_BASE(&nb1413m3_nvram) AM_SIZE(&nb1413m3_nvram_size)
285285ADDRESS_MAP_END
286286
287static ADDRESS_MAP_START( writemem_mjsikaku, ADDRESS_SPACE_PROGRAM, 8 )
288   AM_RANGE(0x0000, 0xf7ff) AM_WRITE(SMH_ROM)
289   AM_RANGE(0xf800, 0xffff) AM_WRITE(SMH_RAM) AM_BASE(&nb1413m3_nvram) AM_SIZE(&nb1413m3_nvram_size)
287static ADDRESS_MAP_START( secolove_map, ADDRESS_SPACE_PROGRAM, 8 )
288   AM_RANGE(0x0000, 0xefff) AM_ROM
289   AM_RANGE(0xf000, 0xf7ff) AM_RAM AM_BASE(&nb1413m3_nvram) AM_SIZE(&nb1413m3_nvram_size)
290290ADDRESS_MAP_END
291291
292static ADDRESS_MAP_START( readmem_secolove, ADDRESS_SPACE_PROGRAM, 8 )
293   AM_RANGE(0x0000, 0xefff) AM_READ(SMH_ROM)
294   AM_RANGE(0xf000, 0xf7ff) AM_READ(SMH_RAM)
292static ADDRESS_MAP_START( ojousan_map, ADDRESS_SPACE_PROGRAM, 8 )
293   AM_RANGE(0x0000, 0x6fff) AM_ROM
294   AM_RANGE(0x7000, 0x7fff) AM_RAM AM_BASE(&nb1413m3_nvram) AM_SIZE(&nb1413m3_nvram_size)
295   AM_RANGE(0x8000, 0xffff) AM_ROM
295296ADDRESS_MAP_END
296297
297static ADDRESS_MAP_START( writemem_secolove, ADDRESS_SPACE_PROGRAM, 8 )
298   AM_RANGE(0x0000, 0xefff) AM_WRITE(SMH_ROM)
299   AM_RANGE(0xf000, 0xf7ff) AM_WRITE(SMH_RAM) AM_BASE(&nb1413m3_nvram) AM_SIZE(&nb1413m3_nvram_size)
300ADDRESS_MAP_END
301298
302static ADDRESS_MAP_START( readmem_ojousan, ADDRESS_SPACE_PROGRAM, 8 )
303   AM_RANGE(0x0000, 0x6fff) AM_READ(SMH_ROM)
304   AM_RANGE(0x7000, 0x7fff) AM_READ(SMH_RAM)
305   AM_RANGE(0x8000, 0xffff) AM_READ(SMH_ROM)
306ADDRESS_MAP_END
307
308static ADDRESS_MAP_START( writemem_ojousan, ADDRESS_SPACE_PROGRAM, 8 )
309   AM_RANGE(0x0000, 0x6fff) AM_WRITE(SMH_ROM)
310   AM_RANGE(0x7000, 0x7fff) AM_WRITE(SMH_RAM) AM_BASE(&nb1413m3_nvram) AM_SIZE(&nb1413m3_nvram_size)
311   AM_RANGE(0x8000, 0xffff) AM_WRITE(SMH_ROM)
312ADDRESS_MAP_END
313
314
315
316299static READ8_HANDLER( ff_r )
317300{
318301   /* possibly because of a bug, reads from port 0xd0 must return 0xff
r4679r4680
320303   return 0xff;
321304}
322305
323static ADDRESS_MAP_START( readport_secolove, ADDRESS_SPACE_IO, 8 )
306static ADDRESS_MAP_START( secolove_io_map, ADDRESS_SPACE_IO, 8 )
324307   ADDRESS_MAP_GLOBAL_MASK(0xff)
325308   AM_RANGE(0x00, 0x7f) AM_READ(nb1413m3_sndrom_r)
326   AM_RANGE(0x81, 0x81) AM_DEVREAD("psg", ay8910_r)
327   AM_RANGE(0x90, 0x90) AM_READ(nb1413m3_inputport0_r)
328   AM_RANGE(0xa0, 0xa0) AM_READ(nb1413m3_inputport1_r)
329   AM_RANGE(0xb0, 0xb0) AM_READ(nb1413m3_inputport2_r)
330   AM_RANGE(0xd0, 0xd0) AM_READ(ff_r)   // irq ack? watchdog?
331//  AM_RANGE(0xf0, 0xf0) AM_READ(nb1413m3_dipsw1_r)
332//  AM_RANGE(0xf1, 0xf1) AM_READ(nb1413m3_dipsw2_r)
333ADDRESS_MAP_END
334
335static ADDRESS_MAP_START( writeport_secolove, ADDRESS_SPACE_IO, 8 )
336   ADDRESS_MAP_GLOBAL_MASK(0xff)
337309   AM_RANGE(0x00, 0x00) AM_WRITE(nb1413m3_nmi_clock_w)
310   AM_RANGE(0x81, 0x81) AM_DEVREAD("psg", ay8910_r)
338311   AM_RANGE(0x82, 0x83) AM_DEVWRITE("psg", ay8910_data_address_w)
312   AM_RANGE(0x90, 0x90) AM_READ(nb1413m3_inputport0_r)
339313   AM_RANGE(0x90, 0x97) AM_WRITE(nbmj8688_blitter_w)
340   AM_RANGE(0xa0, 0xa0) AM_WRITE(nb1413m3_inputportsel_w)
341   AM_RANGE(0xb0, 0xb0) AM_WRITE(nb1413m3_sndrombank1_w)
314   AM_RANGE(0xa0, 0xa0) AM_READWRITE(nb1413m3_inputport1_r,nb1413m3_inputportsel_w)
315   AM_RANGE(0xb0, 0xb0) AM_READWRITE(nb1413m3_inputport2_r,nb1413m3_sndrombank1_w)
342316   AM_RANGE(0xc0, 0xcf) AM_WRITE(nbmj8688_clut_w)
317   AM_RANGE(0xd0, 0xd0) AM_READ(ff_r)   // irq ack? watchdog?
343318   AM_RANGE(0xd0, 0xd0) AM_DEVWRITE("dac", DAC_WRITE)
344319   AM_RANGE(0xe0, 0xe0) AM_WRITE(secolove_romsel_w)
320//  AM_RANGE(0xf0, 0xf0) AM_READ(nb1413m3_dipsw1_r)
321//  AM_RANGE(0xf1, 0xf1) AM_READ(nb1413m3_dipsw2_r)
345322   AM_RANGE(0xf0, 0xf0) AM_WRITE(mjsikaku_scrolly_w)
346323ADDRESS_MAP_END
347324
r4679r4680
351328   coin_counter_w(0,data & 0x02);
352329}
353330
354static ADDRESS_MAP_START( readport_barline, ADDRESS_SPACE_IO, 8 )
331static ADDRESS_MAP_START( barline_io_map, ADDRESS_SPACE_IO, 8 )
355332   ADDRESS_MAP_GLOBAL_MASK(0xff)
356333//  AM_RANGE(0x00, 0x7f) AM_READ(nb1413m3_sndrom_r)
357   AM_RANGE(0x80, 0x81) AM_DEVREAD("psg", ym3812_r)
358   AM_RANGE(0x90, 0x90) AM_READ(nb1413m3_inputport0_r)
359   AM_RANGE(0xa0, 0xa0) AM_READ(nb1413m3_inputport1_r)
360   AM_RANGE(0xb0, 0xb0) AM_READ(nb1413m3_inputport2_r)
361   AM_RANGE(0xd0, 0xd0) AM_READ(ff_r)   // irq ack? watchdog?
362    AM_RANGE(0xf0, 0xf0) AM_READ(nb1413m3_dipsw1_r)
363   AM_RANGE(0xf1, 0xf1) AM_READ(nb1413m3_dipsw2_r)
364ADDRESS_MAP_END
365
366static ADDRESS_MAP_START( writeport_barline, ADDRESS_SPACE_IO, 8 )
367   ADDRESS_MAP_GLOBAL_MASK(0xff)
368334   AM_RANGE(0x00, 0x00) AM_WRITE(nb1413m3_sndrombank1_w)
369335   AM_RANGE(0x70, 0x70) AM_WRITE(nb1413m3_nmi_clock_w)
370   AM_RANGE(0x80, 0x81) AM_DEVWRITE("psg", ym3812_w)
336   AM_RANGE(0x80, 0x81) AM_DEVREADWRITE("psg", ym3812_r,ym3812_w)
337   AM_RANGE(0x90, 0x90) AM_READ(nb1413m3_inputport0_r)
371338   AM_RANGE(0x90, 0x97) AM_WRITE(nbmj8688_blitter_w)
372   AM_RANGE(0xa0, 0xa0) AM_WRITE(nb1413m3_inputportsel_w)
373   AM_RANGE(0xb0, 0xb0) AM_WRITE(barline_output_w)
339   AM_RANGE(0xa0, 0xa0) AM_READWRITE(nb1413m3_inputport1_r,nb1413m3_inputportsel_w)
340   AM_RANGE(0xb0, 0xb0) AM_READWRITE(nb1413m3_inputport2_r,barline_output_w)
374341   AM_RANGE(0xc0, 0xcf) AM_WRITE(nbmj8688_clut_w)
342   AM_RANGE(0xd0, 0xd0) AM_READ(ff_r)   // irq ack? watchdog?
375343//  AM_RANGE(0xd0, 0xd0) AM_DEVWRITE("dac", DAC_WRITE) //not used
376344   AM_RANGE(0xe0, 0xe0) AM_WRITE(secolove_romsel_w)
377   AM_RANGE(0xf0, 0xf0) AM_WRITE(mjsikaku_scrolly_w)
345    AM_RANGE(0xf0, 0xf0) AM_READ(nb1413m3_dipsw1_r) AM_WRITE(mjsikaku_scrolly_w)
346   AM_RANGE(0xf1, 0xf1) AM_READ(nb1413m3_dipsw2_r)
378347ADDRESS_MAP_END
379348
380static ADDRESS_MAP_START( writeport_crystalg, ADDRESS_SPACE_IO, 8 )
349static ADDRESS_MAP_START( crystalg_io_map, ADDRESS_SPACE_IO, 8 )
381350   ADDRESS_MAP_GLOBAL_MASK(0xff)
351   AM_RANGE(0x00, 0x7f) AM_READ(nb1413m3_sndrom_r)
382352   AM_RANGE(0x00, 0x00) AM_WRITE(nb1413m3_nmi_clock_w)
353   AM_RANGE(0x81, 0x81) AM_DEVREAD("psg", ay8910_r)
383354   AM_RANGE(0x82, 0x83) AM_DEVWRITE("psg", ay8910_data_address_w)
355   AM_RANGE(0x90, 0x90) AM_READ(nb1413m3_inputport0_r)
384356   AM_RANGE(0x90, 0x97) AM_WRITE(nbmj8688_blitter_w)
385   AM_RANGE(0xa0, 0xa0) AM_WRITE(nb1413m3_inputportsel_w)
386   AM_RANGE(0xb0, 0xb0) AM_WRITE(nb1413m3_sndrombank1_w)
357   AM_RANGE(0xa0, 0xa0) AM_READWRITE(nb1413m3_inputport1_r,nb1413m3_inputportsel_w)
358   AM_RANGE(0xb0, 0xb0) AM_READWRITE(nb1413m3_inputport2_r,nb1413m3_sndrombank1_w)
387359   AM_RANGE(0xc0, 0xcf) AM_WRITE(nbmj8688_clut_w)
360   AM_RANGE(0xd0, 0xd0) AM_READ(ff_r)   // irq ack? watchdog?
388361   AM_RANGE(0xd0, 0xd0) AM_DEVWRITE("dac", DAC_WRITE)
389362   AM_RANGE(0xe0, 0xe0) AM_WRITE(crystalg_romsel_w)
363//  AM_RANGE(0xf0, 0xf0) AM_READ(nb1413m3_dipsw1_r)
390364//  AM_RANGE(0xf0, 0xf0) AM_WRITENOP
365//  AM_RANGE(0xf1, 0xf1) AM_READ(nb1413m3_dipsw2_r)
391366ADDRESS_MAP_END
392367
393368
394static ADDRESS_MAP_START( readport_otonano, ADDRESS_SPACE_IO, 8 )
369static ADDRESS_MAP_START( otonano_io_map, ADDRESS_SPACE_IO, 8 )
395370   ADDRESS_MAP_GLOBAL_MASK(0xff)
396371   AM_RANGE(0x00, 0x7f) AM_READ(nb1413m3_sndrom_r)
397   AM_RANGE(0x80, 0x81) AM_DEVREAD("psg", ym3812_r)
398   AM_RANGE(0x90, 0x90) AM_READ(nb1413m3_inputport0_r)
399   AM_RANGE(0xa0, 0xa0) AM_READ(nb1413m3_inputport1_r)
400   AM_RANGE(0xb0, 0xb0) AM_READ(nb1413m3_inputport2_r)
401   AM_RANGE(0xd0, 0xd0) AM_READ(ff_r)   // irq ack? watchdog?
402   AM_RANGE(0xf0, 0xf0) AM_READ(nb1413m3_dipsw1_r)
403   AM_RANGE(0xf1, 0xf1) AM_READ(nb1413m3_dipsw2_r)
404ADDRESS_MAP_END
405
406static ADDRESS_MAP_START( writeport_otonano, ADDRESS_SPACE_IO, 8 )
407   ADDRESS_MAP_GLOBAL_MASK(0xff)
408372   AM_RANGE(0x00, 0x00) AM_WRITE(nb1413m3_nmi_clock_w)
409373   AM_RANGE(0x20, 0x3f) AM_WRITE(nbmj8688_clut_w)
410374   AM_RANGE(0x50, 0x50) AM_WRITE(mjsikaku_romsel_w)
411375   AM_RANGE(0x70, 0x77) AM_WRITE(nbmj8688_blitter_w)
412   AM_RANGE(0x80, 0x81) AM_DEVWRITE("psg", ym3812_w)
413   AM_RANGE(0xa0, 0xa0) AM_WRITE(nb1413m3_inputportsel_w)
414   AM_RANGE(0xb0, 0xb0) AM_WRITE(nb1413m3_sndrombank1_w)
376   AM_RANGE(0x80, 0x81) AM_DEVREADWRITE("psg", ym3812_r,ym3812_w)
377   AM_RANGE(0x90, 0x90) AM_READ(nb1413m3_inputport0_r)
378   AM_RANGE(0xa0, 0xa0) AM_READWRITE(nb1413m3_inputport1_r,nb1413m3_inputportsel_w)
379   AM_RANGE(0xb0, 0xb0) AM_READWRITE(nb1413m3_inputport2_r,nb1413m3_sndrombank1_w)
380   AM_RANGE(0xd0, 0xd0) AM_READ(ff_r)   // irq ack? watchdog?
415381   AM_RANGE(0xd0, 0xd0) AM_DEVWRITE("dac", DAC_WRITE)
416382   AM_RANGE(0xe0, 0xe0) AM_WRITE(mjsikaku_gfxflag2_w)
417   AM_RANGE(0xf0, 0xf0) AM_WRITE(mjsikaku_scrolly_w)
383   AM_RANGE(0xf0, 0xf0) AM_READWRITE(nb1413m3_dipsw1_r,mjsikaku_scrolly_w)
384   AM_RANGE(0xf1, 0xf1) AM_READ(nb1413m3_dipsw2_r)
418385ADDRESS_MAP_END
419386
420387
421static ADDRESS_MAP_START( readport_kaguya, ADDRESS_SPACE_IO, 8 )
388static ADDRESS_MAP_START( kaguya_io_map, ADDRESS_SPACE_IO, 8 )
422389   ADDRESS_MAP_GLOBAL_MASK(0xff)
423390   AM_RANGE(0x00, 0x7f) AM_READ(nb1413m3_sndrom_r)
391   AM_RANGE(0x00, 0x00) AM_WRITE(nb1413m3_nmi_clock_w)
392   AM_RANGE(0x20, 0x3f) AM_WRITE(nbmj8688_clut_w)
393   AM_RANGE(0x50, 0x50) AM_WRITE(mjsikaku_romsel_w)
394   AM_RANGE(0x70, 0x77) AM_WRITE(nbmj8688_blitter_w)
424395   AM_RANGE(0x81, 0x81) AM_DEVREAD("psg", ay8910_r)
396   AM_RANGE(0x82, 0x83) AM_DEVWRITE("psg", ay8910_data_address_w)
425397   AM_RANGE(0x90, 0x90) AM_READ(nb1413m3_inputport0_r)
426   AM_RANGE(0xa0, 0xa0) AM_READ(nb1413m3_inputport1_r)
427   AM_RANGE(0xb0, 0xb0) AM_READ(nb1413m3_inputport2_r)
398   AM_RANGE(0xa0, 0xa0) AM_READWRITE(nb1413m3_inputport1_r,nb1413m3_inputportsel_w)
399   AM_RANGE(0xb0, 0xb0) AM_READWRITE(nb1413m3_inputport2_r,nb1413m3_sndrombank1_w)
428400   AM_RANGE(0xd0, 0xd0) AM_READ(ff_r)   // irq ack? watchdog?
429    AM_RANGE(0xf0, 0xf0) AM_READ(nb1413m3_dipsw1_r)
401   AM_RANGE(0xd0, 0xd0) AM_DEVWRITE("dac", DAC_WRITE)
402   AM_RANGE(0xe0, 0xe0) AM_WRITE(mjsikaku_gfxflag2_w)
403    AM_RANGE(0xf0, 0xf0) AM_READWRITE(nb1413m3_dipsw1_r,mjsikaku_scrolly_w)
430404   AM_RANGE(0xf1, 0xf1) AM_READ(nb1413m3_dipsw2_r)
431405ADDRESS_MAP_END
432406
433static ADDRESS_MAP_START( writeport_kaguya, ADDRESS_SPACE_IO, 8 )
407
408static ADDRESS_MAP_START( iemoto_io_map, ADDRESS_SPACE_IO, 8 )
434409   ADDRESS_MAP_GLOBAL_MASK(0xff)
410   AM_RANGE(0x00, 0x7f) AM_READ(nb1413m3_sndrom_r)
435411   AM_RANGE(0x00, 0x00) AM_WRITE(nb1413m3_nmi_clock_w)
412   AM_RANGE(0x10, 0x10) AM_WRITE(nb1413m3_sndrombank2_w)
436413   AM_RANGE(0x20, 0x3f) AM_WRITE(nbmj8688_clut_w)
437   AM_RANGE(0x50, 0x50) AM_WRITE(mjsikaku_romsel_w)
438   AM_RANGE(0x70, 0x77) AM_WRITE(nbmj8688_blitter_w)
414   AM_RANGE(0x40, 0x47) AM_WRITE(nbmj8688_blitter_w)
415   AM_RANGE(0x50, 0x50) AM_WRITE(seiha_romsel_w)
416   AM_RANGE(0x81, 0x81) AM_DEVREAD("psg", ay8910_r)
439417   AM_RANGE(0x82, 0x83) AM_DEVWRITE("psg", ay8910_data_address_w)
440   AM_RANGE(0xa0, 0xa0) AM_WRITE(nb1413m3_inputportsel_w)
441   AM_RANGE(0xb0, 0xb0) AM_WRITE(nb1413m3_sndrombank1_w)
418   AM_RANGE(0x90, 0x90) AM_READ(nb1413m3_inputport0_r)
419   AM_RANGE(0xa0, 0xa0) AM_READWRITE(nb1413m3_inputport1_r,nb1413m3_inputportsel_w)
420   AM_RANGE(0xb0, 0xb0) AM_READWRITE(nb1413m3_inputport2_r,nb1413m3_sndrombank1_w)
421   AM_RANGE(0xd0, 0xd0) AM_READ(ff_r)   // irq ack? watchdog?
442422   AM_RANGE(0xd0, 0xd0) AM_DEVWRITE("dac", DAC_WRITE)
443423   AM_RANGE(0xe0, 0xe0) AM_WRITE(mjsikaku_gfxflag2_w)
424//  AM_RANGE(0xf0, 0xf0) AM_READ(nb1413m3_dipsw1_r)
425//  AM_RANGE(0xf1, 0xf1) AM_READ(nb1413m3_dipsw2_r)
444426   AM_RANGE(0xf0, 0xf0) AM_WRITE(mjsikaku_scrolly_w)
445427ADDRESS_MAP_END
446428
447429
448static ADDRESS_MAP_START( writeport_iemoto, ADDRESS_SPACE_IO, 8 )
430static ADDRESS_MAP_START( seiha_io_map, ADDRESS_SPACE_IO, 8 )
449431   ADDRESS_MAP_GLOBAL_MASK(0xff)
432   AM_RANGE(0x00, 0x7f) AM_READ(nb1413m3_sndrom_r)
450433   AM_RANGE(0x00, 0x00) AM_WRITE(nb1413m3_nmi_clock_w)
451   AM_RANGE(0x20, 0x3f) AM_WRITE(nbmj8688_clut_w)
452434   AM_RANGE(0x10, 0x10) AM_WRITE(nb1413m3_sndrombank2_w)
453   AM_RANGE(0x40, 0x47) AM_WRITE(nbmj8688_blitter_w)
435   AM_RANGE(0x20, 0x3f) AM_WRITE(nbmj8688_clut_w)
454436   AM_RANGE(0x50, 0x50) AM_WRITE(seiha_romsel_w)
437   AM_RANGE(0x81, 0x81) AM_DEVREAD("psg", ay8910_r)
455438   AM_RANGE(0x82, 0x83) AM_DEVWRITE("psg", ay8910_data_address_w)
456   AM_RANGE(0xa0, 0xa0) AM_WRITE(nb1413m3_inputportsel_w)
457   AM_RANGE(0xb0, 0xb0) AM_WRITE(nb1413m3_sndrombank1_w)
439   AM_RANGE(0x90, 0x90) AM_READ(nb1413m3_inputport0_r)
440   AM_RANGE(0x90, 0x97) AM_WRITE(nbmj8688_blitter_w)
441   AM_RANGE(0xa0, 0xa0) AM_READWRITE(nb1413m3_inputport1_r,nb1413m3_inputportsel_w)
442   AM_RANGE(0xb0, 0xb0) AM_READWRITE(nb1413m3_inputport2_r,nb1413m3_sndrombank1_w)
443   AM_RANGE(0xd0, 0xd0) AM_READ(ff_r)   // irq ack? watchdog?
458444   AM_RANGE(0xd0, 0xd0) AM_DEVWRITE("dac", DAC_WRITE)
459445   AM_RANGE(0xe0, 0xe0) AM_WRITE(mjsikaku_gfxflag2_w)
446//  AM_RANGE(0xf0, 0xf0) AM_READ(nb1413m3_dipsw1_r)
447//  AM_RANGE(0xf1, 0xf1) AM_READ(nb1413m3_dipsw2_r)
460448   AM_RANGE(0xf0, 0xf0) AM_WRITE(mjsikaku_scrolly_w)
461449ADDRESS_MAP_END
462450
463
464static ADDRESS_MAP_START( writeport_seiha, ADDRESS_SPACE_IO, 8 )
451static ADDRESS_MAP_START( mjgaiden_io_map, ADDRESS_SPACE_IO, 8 )
465452   ADDRESS_MAP_GLOBAL_MASK(0xff)
453   AM_RANGE(0x00, 0x7f) AM_READ(nb1413m3_sndrom_r)
466454   AM_RANGE(0x00, 0x00) AM_WRITE(nb1413m3_nmi_clock_w)
467   AM_RANGE(0x10, 0x10) AM_WRITE(nb1413m3_sndrombank2_w)
468455   AM_RANGE(0x20, 0x3f) AM_WRITE(nbmj8688_clut_w)
469   AM_RANGE(0x50, 0x50) AM_WRITE(seiha_romsel_w)
456   AM_RANGE(0x50, 0x50) AM_WRITE(mjsikaku_romsel_w)
457   AM_RANGE(0x81, 0x81) AM_DEVREAD("psg", ay8910_r)
470458   AM_RANGE(0x82, 0x83) AM_DEVWRITE("psg", ay8910_data_address_w)
459   AM_RANGE(0x90, 0x90) AM_READ(nb1413m3_inputport0_r)
471460   AM_RANGE(0x90, 0x97) AM_WRITE(nbmj8688_blitter_w)
472   AM_RANGE(0xa0, 0xa0) AM_WRITE(nb1413m3_inputportsel_w)
473   AM_RANGE(0xb0, 0xb0) AM_WRITE(nb1413m3_sndrombank1_w)
461   AM_RANGE(0xa0, 0xa0) AM_READWRITE(nb1413m3_inputport1_r,nb1413m3_inputportsel_w)
462   AM_RANGE(0xb0, 0xb0) AM_READWRITE(nb1413m3_inputport2_r,nb1413m3_sndrombank1_w)
463   AM_RANGE(0xd0, 0xd0) AM_READ(ff_r)   // irq ack? watchdog?
474464   AM_RANGE(0xd0, 0xd0) AM_DEVWRITE("dac", DAC_WRITE)
475465   AM_RANGE(0xe0, 0xe0) AM_WRITE(mjsikaku_gfxflag2_w)
466//  AM_RANGE(0xf0, 0xf0) AM_READ(nb1413m3_dipsw1_r)
467//  AM_RANGE(0xf1, 0xf1) AM_READ(nb1413m3_dipsw2_r)
476468   AM_RANGE(0xf0, 0xf0) AM_WRITE(mjsikaku_scrolly_w)
477469ADDRESS_MAP_END
478470
479static ADDRESS_MAP_START( writeport_mjgaiden, ADDRESS_SPACE_IO, 8 )
480    ADDRESS_MAP_GLOBAL_MASK(0xff)
481    AM_RANGE(0x00, 0x00) AM_WRITE(nb1413m3_nmi_clock_w)
482    AM_RANGE(0x20, 0x3f) AM_WRITE(nbmj8688_clut_w)
483    AM_RANGE(0x50, 0x50) AM_WRITE(mjsikaku_romsel_w)
484    AM_RANGE(0x90, 0x97) AM_WRITE(nbmj8688_blitter_w)
485    AM_RANGE(0x82, 0x83) AM_DEVWRITE("psg", ay8910_data_address_w)
486    AM_RANGE(0xa0, 0xa0) AM_WRITE(nb1413m3_inputportsel_w)
487    AM_RANGE(0xb0, 0xb0) AM_WRITE(nb1413m3_sndrombank1_w)
488    AM_RANGE(0xd0, 0xd0) AM_DEVWRITE("dac", DAC_WRITE)
489    AM_RANGE(0xe0, 0xe0) AM_WRITE(mjsikaku_gfxflag2_w)
490    AM_RANGE(0xf0, 0xf0) AM_WRITE(mjsikaku_scrolly_w)
491ADDRESS_MAP_END
492
493static ADDRESS_MAP_START( writeport_p16bit_LCD, ADDRESS_SPACE_IO, 8 )
471static ADDRESS_MAP_START( p16bit_LCD_io_map, ADDRESS_SPACE_IO, 8 )
494472   ADDRESS_MAP_GLOBAL_MASK(0xff)
473   AM_RANGE(0x00, 0x7f) AM_READ(nb1413m3_sndrom_r)
495474   AM_RANGE(0x00, 0x00) AM_WRITE(nb1413m3_nmi_clock_w)
496475   AM_RANGE(0x42, 0x42) AM_WRITE(nbmj8688_HD61830B_0_data_w)
497476   AM_RANGE(0x43, 0x43) AM_WRITE(nbmj8688_HD61830B_0_instr_w)
r4679r4680
499478   AM_RANGE(0x45, 0x45) AM_WRITE(nbmj8688_HD61830B_1_instr_w)
500479   AM_RANGE(0x46, 0x46) AM_WRITE(nbmj8688_HD61830B_both_data_w)
501480   AM_RANGE(0x47, 0x47) AM_WRITE(nbmj8688_HD61830B_both_instr_w)
481   AM_RANGE(0x81, 0x81) AM_DEVREAD("psg", ay8910_r)
502482   AM_RANGE(0x82, 0x83) AM_DEVWRITE("psg", ay8910_data_address_w)
483   AM_RANGE(0x90, 0x90) AM_READ(nb1413m3_inputport0_r)
503484   AM_RANGE(0x90, 0x97) AM_WRITE(nbmj8688_blitter_w)
504   AM_RANGE(0xa0, 0xa0) AM_WRITE(nb1413m3_inputportsel_w)
505   AM_RANGE(0xb0, 0xb0) AM_WRITE(nb1413m3_sndrombank1_w)
485   AM_RANGE(0xa0, 0xa0) AM_READWRITE(nb1413m3_inputport1_r,nb1413m3_inputportsel_w)
486   AM_RANGE(0xb0, 0xb0) AM_READWRITE(nb1413m3_inputport2_r,nb1413m3_sndrombank1_w)
506487   AM_RANGE(0xc0, 0xcf) AM_WRITE(nbmj8688_clut_w)
488   AM_RANGE(0xd0, 0xd0) AM_READ(ff_r)   // irq ack? watchdog?
507489   AM_RANGE(0xd0, 0xd0) AM_DEVWRITE("dac", DAC_WRITE)
508490   AM_RANGE(0xe0, 0xe0) AM_WRITE(secolove_romsel_w)
491//  AM_RANGE(0xf0, 0xf0) AM_READ(nb1413m3_dipsw1_r)
492//  AM_RANGE(0xf1, 0xf1) AM_READ(nb1413m3_dipsw2_r)
509493   AM_RANGE(0xf0, 0xf0) AM_WRITE(mjsikaku_scrolly_w)
510494ADDRESS_MAP_END
511495
512496
513static ADDRESS_MAP_START( readport_mjsikaku, ADDRESS_SPACE_IO, 8 )
497static ADDRESS_MAP_START( mjsikaku_io_map, ADDRESS_SPACE_IO, 8 )
514498   ADDRESS_MAP_GLOBAL_MASK(0xff)
515499   AM_RANGE(0x00, 0x7f) AM_READ(nb1413m3_sndrom_r)
516   AM_RANGE(0x90, 0x90) AM_READ(nb1413m3_inputport0_r)
517   AM_RANGE(0xa0, 0xa0) AM_READ(nb1413m3_inputport1_r)
518   AM_RANGE(0xb0, 0xb0) AM_READ(nb1413m3_inputport2_r)
519   AM_RANGE(0xd0, 0xd0) AM_READ(ff_r)   // irq ack? watchdog?
520   AM_RANGE(0xf0, 0xf0) AM_READ(nb1413m3_dipsw1_r)
521   AM_RANGE(0xf1, 0xf1) AM_READ(nb1413m3_dipsw2_r)
522ADDRESS_MAP_END
523
524static ADDRESS_MAP_START( writeport_mjsikaku, ADDRESS_SPACE_IO, 8 )
525   ADDRESS_MAP_GLOBAL_MASK(0xff)
526500   AM_RANGE(0x00, 0x00) AM_WRITE(nb1413m3_nmi_clock_w)
527501   AM_RANGE(0x10, 0x10) AM_WRITE(nb1413m3_sndrombank2_w)
528502   AM_RANGE(0x20, 0x3f) AM_WRITE(nbmj8688_clut_w)
529503   AM_RANGE(0x50, 0x50) AM_WRITE(mjsikaku_romsel_w)
530504   AM_RANGE(0x60, 0x67) AM_WRITE(nbmj8688_blitter_w)
531   AM_RANGE(0x80, 0x81) AM_DEVWRITE("psg", ym3812_w)
532   AM_RANGE(0xa0, 0xa0) AM_WRITE(nb1413m3_inputportsel_w)
533   AM_RANGE(0xb0, 0xb0) AM_WRITE(nb1413m3_sndrombank1_w)
505   AM_RANGE(0x80, 0x81) AM_DEVREADWRITE("psg", ym3812_r, ym3812_w)
506   AM_RANGE(0x90, 0x90) AM_READ(nb1413m3_inputport0_r)
507   AM_RANGE(0xa0, 0xa0) AM_READWRITE(nb1413m3_inputport1_r,nb1413m3_inputportsel_w)
508   AM_RANGE(0xb0, 0xb0) AM_READWRITE(nb1413m3_inputport2_r,nb1413m3_sndrombank1_w)
509   AM_RANGE(0xd0, 0xd0) AM_READ(ff_r)   // irq ack? watchdog?
534510   AM_RANGE(0xd0, 0xd0) AM_DEVWRITE("dac", DAC_WRITE)
535511   AM_RANGE(0xe0, 0xe0) AM_WRITE(mjsikaku_gfxflag2_w)
512   AM_RANGE(0xf0, 0xf0) AM_READ(nb1413m3_dipsw1_r)
513   AM_RANGE(0xf1, 0xf1) AM_READ(nb1413m3_dipsw2_r)
536514   AM_RANGE(0xf0, 0xf0) AM_WRITE(mjsikaku_scrolly_w)
537515ADDRESS_MAP_END
538516
539517
540static ADDRESS_MAP_START( readport_mmsikaku, ADDRESS_SPACE_IO, 8 )
518static ADDRESS_MAP_START( mmsikaku_io_map, ADDRESS_SPACE_IO, 8 )
541519   ADDRESS_MAP_GLOBAL_MASK(0xff)
542520   AM_RANGE(0x00, 0x7f) AM_READ(nb1413m3_sndrom_r)
543   AM_RANGE(0x81, 0x81) AM_DEVREAD("psg", ay8910_r)
544   AM_RANGE(0x90, 0x90) AM_READ(nb1413m3_inputport0_r)
545   AM_RANGE(0xa0, 0xa0) AM_READ(nb1413m3_inputport1_r)
546   AM_RANGE(0xb0, 0xb0) AM_READ(nb1413m3_inputport2_r)
547   AM_RANGE(0xd0, 0xd0) AM_READ(ff_r)   // irq ack? watchdog?
548//  AM_RANGE(0xf0, 0xf0) AM_READ(nb1413m3_dipsw1_r)
549//  AM_RANGE(0xf1, 0xf1) AM_READ(nb1413m3_dipsw2_r)
550ADDRESS_MAP_END
551
552static ADDRESS_MAP_START( writeport_mmsikaku, ADDRESS_SPACE_IO, 8 )
553   ADDRESS_MAP_GLOBAL_MASK(0xff)
554521   AM_RANGE(0x00, 0x00) AM_WRITE(nb1413m3_nmi_clock_w)
555522   AM_RANGE(0x10, 0x10) AM_WRITE(nb1413m3_sndrombank2_w)
556523   AM_RANGE(0x20, 0x3f) AM_WRITE(nbmj8688_clut_w)
557   AM_RANGE(0x50, 0x50) AM_WRITE(mjsikaku_romsel_w)
558524   AM_RANGE(0x40, 0x47) AM_WRITE(nbmj8688_blitter_w)
525   AM_RANGE(0x50, 0x50) AM_WRITE(mjsikaku_romsel_w)
526   AM_RANGE(0x81, 0x81) AM_DEVREAD("psg", ay8910_r)
559527   AM_RANGE(0x82, 0x83) AM_DEVWRITE("psg", ay8910_data_address_w)
560   AM_RANGE(0xa0, 0xa0) AM_WRITE(nb1413m3_inputportsel_w)
561   AM_RANGE(0xb0, 0xb0) AM_WRITE(nb1413m3_sndrombank1_w)
528   AM_RANGE(0x90, 0x90) AM_READ(nb1413m3_inputport0_r)
529   AM_RANGE(0xa0, 0xa0) AM_READWRITE(nb1413m3_inputport1_r,nb1413m3_inputportsel_w)
530   AM_RANGE(0xb0, 0xb0) AM_READWRITE(nb1413m3_inputport2_r,nb1413m3_sndrombank1_w)
531   AM_RANGE(0xd0, 0xd0) AM_READ(ff_r)   // irq ack? watchdog?
562532   AM_RANGE(0xd0, 0xd0) AM_DEVWRITE("dac", DAC_WRITE)
563533   AM_RANGE(0xe0, 0xe0) AM_WRITE(mjsikaku_gfxflag2_w)
534//  AM_RANGE(0xf0, 0xf0) AM_READ(nb1413m3_dipsw1_r)
535//  AM_RANGE(0xf1, 0xf1) AM_READ(nb1413m3_dipsw2_r)
564536   AM_RANGE(0xf0, 0xf0) AM_WRITE(mjsikaku_scrolly_w)
565537ADDRESS_MAP_END
566538
567539
568
569540static INPUT_PORTS_START( mjsikaku )
570541   PORT_START("DSWA")
571542   PORT_DIPNAME( 0x07, 0x07, DEF_STR( Difficulty ) )
r4679r4680
30152986   /* basic machine hardware */
30162987   MDRV_IMPORT_FROM(NBMJDRV_256)
30172988   MDRV_CPU_MODIFY("maincpu")
3018   MDRV_CPU_PROGRAM_MAP(readmem_secolove, writemem_secolove)
3019   MDRV_CPU_IO_MAP(readport_secolove, writeport_crystalg)
2989   MDRV_CPU_PROGRAM_MAP(secolove_map, 0)
2990   MDRV_CPU_IO_MAP(crystalg_io_map, 0)
30202991//  MDRV_CPU_VBLANK_INT_HACK(nb1413m3_interrupt, 96) // nmiclock = 2f
30212992MACHINE_DRIVER_END
30222993
r4679r4680
30262997   /* basic machine hardware */
30272998   MDRV_IMPORT_FROM(NBMJDRV_256)
30282999   MDRV_CPU_MODIFY("maincpu")
3029   MDRV_CPU_PROGRAM_MAP(readmem_secolove, writemem_secolove)
3030   MDRV_CPU_IO_MAP(readport_secolove, writeport_secolove)
3000   MDRV_CPU_PROGRAM_MAP(secolove_map, 0)
3001   MDRV_CPU_IO_MAP(secolove_io_map, 0)
30313002//  MDRV_CPU_VBLANK_INT_HACK(nb1413m3_interrupt, 128)    // nmiclock = 60
30323003MACHINE_DRIVER_END
30333004
r4679r4680
30373008   /* basic machine hardware */
30383009   MDRV_IMPORT_FROM(NBMJDRV_4096)
30393010   MDRV_CPU_MODIFY("maincpu")
3040   MDRV_CPU_PROGRAM_MAP(readmem_secolove, writemem_secolove)
3041   MDRV_CPU_IO_MAP(readport_secolove, writeport_secolove)
3011   MDRV_CPU_PROGRAM_MAP(secolove_map, 0)
3012   MDRV_CPU_IO_MAP(secolove_io_map, 0)
30423013//  MDRV_CPU_VBLANK_INT_HACK(nb1413m3_interrupt, 128)    // nmiclock = 60
30433014
30443015   /* video hardware */
r4679r4680
30513022   /* basic machine hardware */
30523023   MDRV_IMPORT_FROM(mbmj_h12bit)
30533024   MDRV_CPU_MODIFY("maincpu")
3054   MDRV_CPU_IO_MAP(readport_barline, writeport_barline)
3025   MDRV_CPU_IO_MAP(barline_io_map, 0)
30553026//  MDRV_CPU_VBLANK_INT_HACK(nb1413m3_interrupt, 128)    // nmiclock = 60
30563027
30573028   MDRV_SOUND_REPLACE("psg", YM3812, 20000000/8)
r4679r4680
30653036   /* basic machine hardware */
30663037   MDRV_IMPORT_FROM(NBMJDRV_65536)
30673038   MDRV_CPU_MODIFY("maincpu")
3068   MDRV_CPU_PROGRAM_MAP(readmem_secolove, writemem_secolove)
3069   MDRV_CPU_IO_MAP(readport_secolove, writeport_secolove)
3039   MDRV_CPU_PROGRAM_MAP(secolove_map, 0)
3040   MDRV_CPU_IO_MAP(secolove_io_map, 0)
30703041//  MDRV_CPU_VBLANK_INT_HACK(nb1413m3_interrupt, 128)    // nmiclock = 60/40
30713042
30723043   /* video hardware */
r4679r4680
30793050   /* basic machine hardware */
30803051   MDRV_CPU_ADD("maincpu", Z80, 5000000)   /* 5.00 MHz */
30813052   MDRV_CPU_VBLANK_INT("screen", nb1413m3_interrupt)
3082   MDRV_CPU_PROGRAM_MAP(readmem_secolove, writemem_secolove)
3083   MDRV_CPU_IO_MAP(readport_secolove, writeport_p16bit_LCD)
3053   MDRV_CPU_PROGRAM_MAP(secolove_map, 0)
3054   MDRV_CPU_IO_MAP(secolove_io_map, 0)
3055   MDRV_CPU_IO_MAP(p16bit_LCD_io_map, 0)
30843056
30853057   MDRV_MACHINE_RESET(nb1413m3)
30863058   MDRV_NVRAM_HANDLER(nb1413m3)
r4679r4680
31313103   /* basic machine hardware */
31323104   MDRV_IMPORT_FROM(NBMJDRV_65536)
31333105   MDRV_CPU_MODIFY("maincpu")
3134   MDRV_CPU_PROGRAM_MAP(readmem_secolove, writemem_secolove)
3135   MDRV_CPU_IO_MAP(readport_secolove, writeport_seiha)
3106   MDRV_CPU_PROGRAM_MAP(secolove_map, 0)
3107   MDRV_CPU_IO_MAP(seiha_io_map, 0)
31363108//  MDRV_CPU_VBLANK_INT_HACK(nb1413m3_interrupt, 128)    // nmiclock = 60
31373109MACHINE_DRIVER_END
31383110
31393111static MACHINE_DRIVER_START( mjgaiden )
3140    /* basic machine hardware */
3141    MDRV_IMPORT_FROM(NBMJDRV_4096)
31423112
3143    MDRV_CPU_MODIFY("maincpu")
3144    MDRV_CPU_PROGRAM_MAP(readmem_ojousan, writemem_ojousan)
3145    MDRV_CPU_IO_MAP(readport_secolove, writeport_mjgaiden)
3113   /* basic machine hardware */
3114   MDRV_IMPORT_FROM(NBMJDRV_4096)
3115
3116   MDRV_CPU_MODIFY("maincpu")
3117   MDRV_CPU_PROGRAM_MAP(ojousan_map, 0)
3118   MDRV_CPU_IO_MAP(mjgaiden_io_map, 0)
31463119MACHINE_DRIVER_END
31473120
31483121static MACHINE_DRIVER_START( iemoto )
r4679r4680
31503123   /* basic machine hardware */
31513124   MDRV_IMPORT_FROM(NBMJDRV_65536)
31523125   MDRV_CPU_MODIFY("maincpu")
3153   MDRV_CPU_PROGRAM_MAP(readmem_secolove, writemem_secolove)
3154   MDRV_CPU_IO_MAP(readport_secolove, writeport_iemoto)
3126   MDRV_CPU_PROGRAM_MAP(secolove_map, 0)
3127   MDRV_CPU_IO_MAP(iemoto_io_map, 0)
31553128//  MDRV_CPU_VBLANK_INT_HACK(nb1413m3_interrupt, 128)    // nmiclock = 60
31563129MACHINE_DRIVER_END
31573130
r4679r4680
31613134   /* basic machine hardware */
31623135   MDRV_IMPORT_FROM(NBMJDRV_65536)
31633136   MDRV_CPU_MODIFY("maincpu")
3164   MDRV_CPU_PROGRAM_MAP(readmem_ojousan, writemem_ojousan)
3165   MDRV_CPU_IO_MAP(readport_secolove, writeport_iemoto)
3137   MDRV_CPU_PROGRAM_MAP(ojousan_map, 0)
3138   MDRV_CPU_IO_MAP(iemoto_io_map, 0)
31663139//  MDRV_CPU_VBLANK_INT_HACK(nb1413m3_interrupt, 128)    // nmiclock = 60
31673140MACHINE_DRIVER_END
31683141
r4679r4680
31713144   /* basic machine hardware */
31723145   MDRV_IMPORT_FROM(NBMJDRV_4096)
31733146   MDRV_CPU_MODIFY("maincpu")
3174   MDRV_CPU_PROGRAM_MAP(readmem_mjsikaku, writemem_mjsikaku)
3175   MDRV_CPU_IO_MAP(readport_kaguya, writeport_kaguya)
3147   MDRV_CPU_PROGRAM_MAP(mjsikaku_map, 0)
3148   MDRV_CPU_IO_MAP(kaguya_io_map, 0)
31763149//  MDRV_CPU_VBLANK_INT_HACK(nb1413m3_interrupt, 128)
31773150MACHINE_DRIVER_END
31783151
r4679r4680
31823155   /* basic machine hardware */
31833156   MDRV_IMPORT_FROM(NBMJDRV_4096)
31843157   MDRV_CPU_MODIFY("maincpu")
3185   MDRV_CPU_PROGRAM_MAP(readmem_mjsikaku, writemem_mjsikaku)
3186   MDRV_CPU_IO_MAP(readport_mjsikaku, writeport_mjsikaku)
3158   MDRV_CPU_PROGRAM_MAP(mjsikaku_map, 0)
3159   MDRV_CPU_IO_MAP(mjsikaku_io_map, 0)
31873160//  MDRV_CPU_VBLANK_INT_HACK(nb1413m3_interrupt, 144)    // nmiclock = 70
31883161
31893162   /* sound hardware */
r4679r4680
31973170   /* basic machine hardware */
31983171   MDRV_IMPORT_FROM(NBMJDRV_4096)
31993172   MDRV_CPU_MODIFY("maincpu")
3200   MDRV_CPU_PROGRAM_MAP(readmem_secolove, writemem_secolove)
3201   MDRV_CPU_IO_MAP(readport_mmsikaku, writeport_mmsikaku)
3173   MDRV_CPU_PROGRAM_MAP(secolove_map, 0)
3174   MDRV_CPU_IO_MAP(mmsikaku_io_map, 0)
32023175//  MDRV_CPU_VBLANK_INT_HACK(nb1413m3_interrupt, 128)
32033176MACHINE_DRIVER_END
32043177
r4679r4680
32083181   /* basic machine hardware */
32093182   MDRV_IMPORT_FROM(mjsikaku)
32103183   MDRV_CPU_MODIFY("maincpu")
3211   MDRV_CPU_IO_MAP(readport_otonano, writeport_otonano)
3184   MDRV_CPU_IO_MAP(otonano_io_map, 0)
32123185MACHINE_DRIVER_END
32133186
32143187
src/mame/drivers/sbowling.c
r4679r4680
104104
105105static VIDEO_START(sbowling)
106106{
107   tmpbitmap = auto_bitmap_alloc(32*8,32*8,video_screen_get_format(machine->primary_screen));
107   tmpbitmap = auto_bitmap_alloc(machine,32*8,32*8,video_screen_get_format(machine->primary_screen));
108108   sb_tilemap = tilemap_create(machine, get_sb_tile_info, tilemap_scan_rows, 8, 8, 32, 32);
109109}
110110
src/mame/drivers/psychic5.c
r4679r4680
664664
665665static void irqhandler(const device_config *device, int irq)
666666{
667   cpu_set_input_line(device->machine->cpu[1],0,irq ? ASSERT_LINE : CLEAR_LINE);
667   cputag_set_input_line(device->machine, "audiocpu", 0, irq ? ASSERT_LINE : CLEAR_LINE);
668668}
669669
670670static const ym2203_interface ym2203_config =
src/mame/drivers/taito_h.c
r4679r4680
162162/* Handler called by the YM2610 emulator when the internal timers cause an IRQ */
163163static void irqhandler(const device_config *device, int irq)
164164{
165   cpu_set_input_line(device->machine->cpu[1],0,irq ? ASSERT_LINE : CLEAR_LINE);
165   cputag_set_input_line(device->machine, "audiocpu", 0, irq ? ASSERT_LINE : CLEAR_LINE);
166166}
167167
168168static const ym2610_interface ym2610_config =
src/mame/drivers/othunder.c
r4679r4680
258258
259259static void update_irq(running_machine *machine)
260260{
261   cpu_set_input_line(machine->cpu[0], 6, ad_irq ? ASSERT_LINE : CLEAR_LINE);
262   cpu_set_input_line(machine->cpu[0], 5, vblank_irq ? ASSERT_LINE : CLEAR_LINE);
261   cputag_set_input_line(machine, "maincpu", 6, ad_irq ? ASSERT_LINE : CLEAR_LINE);
262   cputag_set_input_line(machine, "maincpu", 5, vblank_irq ? ASSERT_LINE : CLEAR_LINE);
263263}
264264
265265static WRITE16_HANDLER( irq_ack_w )
r4679r4680
673673/* handler called by the YM2610 emulator when the internal timers cause an IRQ */
674674static void irqhandler(const device_config *device, int irq)
675675{
676   cpu_set_input_line(device->machine->cpu[1],0,irq ? ASSERT_LINE : CLEAR_LINE);
676   cputag_set_input_line(device->machine, "audiocpu", 0, irq ? ASSERT_LINE : CLEAR_LINE);
677677}
678678
679679static const ym2610_interface ym2610_config =
src/mame/drivers/ginganin.c
r4679r4680
7575*/
7676
7777
78static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 16 )
79   AM_RANGE(0x000000, 0x01ffff) AM_READ(SMH_ROM)
80   AM_RANGE(0x020000, 0x023fff) AM_READ(SMH_RAM)
81   AM_RANGE(0x030000, 0x0307ff) AM_READ(SMH_RAM)
82   AM_RANGE(0x040000, 0x0407ff) AM_READ(SMH_RAM)
83   AM_RANGE(0x050000, 0x0507ff) AM_READ(SMH_RAM)
84   AM_RANGE(0x060000, 0x06000f) AM_READ(SMH_RAM)
85   AM_RANGE(0x068000, 0x06bfff) AM_READ(SMH_RAM)   /* bg lives in ROM */
78static ADDRESS_MAP_START( ginganin_map, ADDRESS_SPACE_PROGRAM, 16 )
79/* The ROM area: 10000-13fff is written with: 0000 0000 0000 0001, at startup only. Why? */
80   AM_RANGE(0x000000, 0x01ffff) AM_ROM
81   AM_RANGE(0x020000, 0x023fff) AM_RAM
82   AM_RANGE(0x030000, 0x0307ff) AM_RAM_WRITE(ginganin_txtram16_w) AM_BASE(&ginganin_txtram16)
83   AM_RANGE(0x040000, 0x0407ff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)
84   AM_RANGE(0x050000, 0x0507ff) AM_RAM_WRITE(paletteram16_RRRRGGGGBBBBxxxx_word_w) AM_BASE(&paletteram16)
85   AM_RANGE(0x060000, 0x06000f) AM_RAM_WRITE(ginganin_vregs16_w) AM_BASE(&ginganin_vregs16)
86   AM_RANGE(0x068000, 0x06bfff) AM_RAM_WRITE(ginganin_fgram16_w) AM_BASE(&ginganin_fgram16)
8687   AM_RANGE(0x070000, 0x070001) AM_READ_PORT("P1_P2")
8788   AM_RANGE(0x070002, 0x070003) AM_READ_PORT("DSW")
8889ADDRESS_MAP_END
8990
90static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 16 )
91/* The ROM area: 10000-13fff is written with: 0000 0000 0000 0001, at startup only. Why? */
92   AM_RANGE(0x020000, 0x023fff) AM_WRITE(SMH_RAM)
93   AM_RANGE(0x030000, 0x0307ff) AM_WRITE(ginganin_txtram16_w) AM_BASE(&ginganin_txtram16)
94   AM_RANGE(0x040000, 0x0407ff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)
95   AM_RANGE(0x050000, 0x0507ff) AM_WRITE(paletteram16_RRRRGGGGBBBBxxxx_word_w) AM_BASE(&paletteram16)
96   AM_RANGE(0x060000, 0x06000f) AM_WRITE(ginganin_vregs16_w) AM_BASE(&ginganin_vregs16)
97   AM_RANGE(0x068000, 0x06bfff) AM_WRITE(ginganin_fgram16_w) AM_BASE(&ginganin_fgram16)
98ADDRESS_MAP_END
9991
100
10192/*
10293**
10394**              Sound cpu data
r4679r4680
168159   MC6840_register1 = data;
169160}
170161
171static ADDRESS_MAP_START( sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
172   AM_RANGE(0x0000, 0x07ff) AM_READ(SMH_RAM)
173   AM_RANGE(0x1800, 0x1800) AM_READ(soundlatch_r)
174   AM_RANGE(0x4000, 0xffff) AM_READ(SMH_ROM)
175ADDRESS_MAP_END
176
177
178static ADDRESS_MAP_START( sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
179   AM_RANGE(0x0000, 0x07ff) AM_WRITE(SMH_RAM)
162static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 )
163   AM_RANGE(0x0000, 0x07ff) AM_RAM
180164   AM_RANGE(0x0800, 0x0800) AM_WRITE(MC6840_control_port_0_w)   /* Takahiro Nogi. 1999/09/27 */
181165   AM_RANGE(0x0801, 0x0801) AM_WRITE(MC6840_control_port_1_w)   /* Takahiro Nogi. 1999/09/27 */
182166   AM_RANGE(0x0802, 0x0802) AM_WRITE(MC6840_write_port_0_w)      /* Takahiro Nogi. 1999/09/27 */
183167   AM_RANGE(0x0803, 0x0803) AM_WRITE(MC6840_write_port_1_w)      /* Takahiro Nogi. 1999/09/27 */
168   AM_RANGE(0x1800, 0x1800) AM_READ(soundlatch_r)
184169   AM_RANGE(0x2000, 0x2001) AM_DEVWRITE("ym", y8950_w)
185170   AM_RANGE(0x2800, 0x2801) AM_DEVWRITE("ay", ay8910_address_data_w)
171   AM_RANGE(0x4000, 0xffff) AM_READ(SMH_ROM)
186172ADDRESS_MAP_END
187173
188174
r4679r4680
341327
342328   /* basic machine hardware */
343329   MDRV_CPU_ADD("maincpu", M68000, 6000000)   /* ? */
344   MDRV_CPU_PROGRAM_MAP(readmem,writemem)
330   MDRV_CPU_PROGRAM_MAP(ginganin_map,0)
345331   MDRV_CPU_VBLANK_INT("screen", irq1_line_hold) /* ? (vectors 1-7 cointain the same address) */
346332
347333   MDRV_CPU_ADD("audiocpu", M6809, 1000000)
348   MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem)
334   MDRV_CPU_PROGRAM_MAP(sound_map,0)
349335   MDRV_CPU_VBLANK_INT_HACK(ginganin_sound_interrupt,60)   /* Takahiro Nogi. 1999/09/27 (1 -> 60) */
350336
351337   /* video hardware */
src/mame/drivers/tail2nos.c
r4679r4680
4242   if (ACCESSING_BITS_0_7)
4343   {
4444      soundlatch_w(space,offset,data & 0xff);
45      cpu_set_input_line(space->machine->cpu[1],INPUT_LINE_NMI,PULSE_LINE);
45      cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
4646   }
4747}
4848
r4679r4680
7070
7171static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 16 )
7272   AM_RANGE(0x000000, 0x03ffff) AM_ROM
73   AM_RANGE(0x200000, 0x27ffff) AM_READWRITE(SMH_BANK1, SMH_ROM)   /* extra ROM */
74   AM_RANGE(0x2c0000, 0x2dffff) AM_READWRITE(SMH_BANK2, SMH_ROM)
73   AM_RANGE(0x200000, 0x27ffff) AM_READWRITE(SMH_BANK(1), SMH_ROM)   /* extra ROM */
74   AM_RANGE(0x2c0000, 0x2dffff) AM_READWRITE(SMH_BANK(2), SMH_ROM)
7575   AM_RANGE(0x400000, 0x41ffff) AM_READWRITE(tail2nos_zoomdata_r, tail2nos_zoomdata_w)
7676   AM_RANGE(0x500000, 0x500fff) AM_READWRITE(tail2nos_K051316_0_r, tail2nos_K051316_0_w)
7777   AM_RANGE(0x510000, 0x51001f) AM_WRITE(tail2nos_K051316_ctrl_0_w)
r4679r4680
8888static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 )
8989   AM_RANGE(0x0000, 0x77ff) AM_ROM
9090   AM_RANGE(0x7800, 0x7fff) AM_RAM
91   AM_RANGE(0x8000, 0xffff) AM_READWRITE(SMH_BANK3, SMH_ROM)
91   AM_RANGE(0x8000, 0xffff) AM_READWRITE(SMH_BANK(3), SMH_ROM)
9292ADDRESS_MAP_END
9393
9494static ADDRESS_MAP_START( sound_port_map, ADDRESS_SPACE_IO, 8 )
r4679r4680
215215
216216static void irqhandler(const device_config *device, int irq)
217217{
218   cpu_set_input_line(device->machine->cpu[1],0,irq ? ASSERT_LINE : CLEAR_LINE);
218   cputag_set_input_line(device->machine, "audiocpu", 0, irq ? ASSERT_LINE : CLEAR_LINE);
219219}
220220
221221static const ym2608_interface ym2608_config =
src/mame/drivers/mrjong.c
r4679r4680
5656extern VIDEO_UPDATE( mrjong );
5757
5858
59static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 )
60   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
61   AM_RANGE(0x8000, 0x87ff) AM_READ(SMH_RAM)
62   AM_RANGE(0xa000, 0xa7ff) AM_READ(SMH_RAM)
63   AM_RANGE(0xe000, 0xe3ff) AM_READ(SMH_RAM)
64   AM_RANGE(0xe400, 0xe7ff) AM_READ(SMH_RAM)
59static ADDRESS_MAP_START( mrjong_map, ADDRESS_SPACE_PROGRAM, 8 )
60   AM_RANGE(0x0000, 0x7fff) AM_ROM
61   AM_RANGE(0x8000, 0x87ff) AM_RAM
62   AM_RANGE(0xa000, 0xa7ff) AM_RAM
63   AM_RANGE(0xe000, 0xe3ff) AM_RAM_WRITE(mrjong_videoram_w) AM_BASE(&videoram)
64   AM_RANGE(0xe400, 0xe7ff) AM_RAM_WRITE(mrjong_colorram_w) AM_BASE(&colorram)
6565ADDRESS_MAP_END
6666
67static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 )
68   AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM)
69   AM_RANGE(0x8000, 0x87ff) AM_WRITE(SMH_RAM)
70   AM_RANGE(0xa000, 0xa7ff) AM_WRITE(SMH_RAM)
71   AM_RANGE(0xe000, 0xe3ff) AM_WRITE(mrjong_videoram_w) AM_BASE(&videoram)
72   AM_RANGE(0xe400, 0xe7ff) AM_WRITE(mrjong_colorram_w) AM_BASE(&colorram)
73   AM_RANGE(0xe000, 0xe03f) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)   /* here to initialize the pointer */
74ADDRESS_MAP_END
75
76
7767static WRITE8_HANDLER( io_0x00_w )
7868{
7969   mrjong_flipscreen_w(space, 0, ((data & 0x04) > 2));
r4679r4680
8575}
8676
8777
88static ADDRESS_MAP_START( io_map, ADDRESS_SPACE_IO, 8 )
78static ADDRESS_MAP_START( mrjong_io_map, ADDRESS_SPACE_IO, 8 )
8979   ADDRESS_MAP_GLOBAL_MASK(0xff)
9080   AM_RANGE(0x00, 0x00) AM_READ_PORT("P2") AM_WRITE(io_0x00_w)
9181   AM_RANGE(0x01, 0x01) AM_READ_PORT("P1") AM_DEVWRITE("sn1", sn76496_w)
r4679r4680
174164
175165   /* basic machine hardware */
176166   MDRV_CPU_ADD("maincpu", Z80,15468000/6)   /* 2.578 MHz?? */
177   MDRV_CPU_PROGRAM_MAP(readmem,writemem)
178   MDRV_CPU_IO_MAP(io_map,0)
167   MDRV_CPU_PROGRAM_MAP(mrjong_map,0)
168   MDRV_CPU_IO_MAP(mrjong_io_map,0)
179169   MDRV_CPU_VBLANK_INT("screen", nmi_line_pulse)
180170
181171   /* video hardware */
src/mame/drivers/meritm.c
r4679r4680
1010      Other: 2 Z80APIO (I/O and interrupt controllers)
1111             1 8255 (I/O)
1212
13  CRT 252: addon board for CRT 250, stores question roms
14
15  CRT 258: addon board for CRT 250, contains UART and Microtouch touch screen controller
16
1317  CRT 260 additional components:
1418  - Microtouch touch screen controller (SMT-3)
1519  - PC16550 UART (for communication with touch screen controller)
r4679r4680
3034  Pit Boss Superstar (c)1990
3135  *Pit Boss Superstar 30 (c)1993
3236  Pit Boss Megastar (c)1994
37  *Pit Boss Supertouch 30 (c)1993/4
3338
3439  CRT 260:
35  *Pit Boss Supertouch 30 (c)1994?
3640  *Megatouch Video (c)1994?
3741  *Megatouch II (c)1995
3842  Megatouch III (c)1995
r4679r4680
6973  - clean up V9938 interrupt implementation
7074  - finish inputs, dsw, outputs (lamps)
7175  - problem with registering touches on the bottom of the screen (currently hacked to work)
72  - megat5: has jmp $0000 in the initialization code causing infinite loop, is rom bad?
73  - megat4st doesn't boot, protection problem?
76  - megat5: has jmp $0000 in the initialization code causing infinite loop, rom U38 is dumped at half size / bad dump
77  - for pbst30 only roms were found, it appears that two roms with graphics data were missing, using pitbossm roms for now
7478 */
7579
7680#include "driver.h"
r4679r4680
569573   AM_RANGE(0xff, 0xff) AM_WRITE(meritm_crt250_bank_w)
570574ADDRESS_MAP_END
571575
576static ADDRESS_MAP_START( meritm_crt250_crt258_io_map, ADDRESS_SPACE_IO, 8 )
577   ADDRESS_MAP_GLOBAL_MASK(0xff)
578   AM_RANGE(0x10, 0x10) AM_READWRITE(v9938_0_vram_r, v9938_0_vram_w)
579   AM_RANGE(0x11, 0x11) AM_READWRITE(v9938_0_status_r, v9938_0_command_w)
580   AM_RANGE(0x12, 0x12) AM_WRITE(v9938_0_palette_w)
581   AM_RANGE(0x13, 0x13) AM_WRITE(v9938_0_register_w)
582   AM_RANGE(0x20, 0x20) AM_READWRITE(v9938_1_vram_r, v9938_1_vram_w)
583   AM_RANGE(0x21, 0x21) AM_READWRITE(v9938_1_status_r, v9938_1_command_w)
584   AM_RANGE(0x22, 0x22) AM_WRITE(v9938_1_palette_w)
585   AM_RANGE(0x23, 0x23) AM_WRITE(v9938_1_register_w)
586   AM_RANGE(0x30, 0x33) AM_DEVREADWRITE("ppi8255", ppi8255_r, ppi8255_w)
587   AM_RANGE(0x40, 0x43) AM_DEVREADWRITE("z80pio_0", z80pio_r, z80pio_w)
588   AM_RANGE(0x50, 0x53) AM_DEVREADWRITE("z80pio_1", z80pio_r, z80pio_w)
589   AM_RANGE(0x60, 0x67) AM_READWRITE(pc16552d_0_r,pc16552d_0_w)
590   AM_RANGE(0x80, 0x80) AM_DEVREAD("ay", ay8910_r)
591   AM_RANGE(0x80, 0x81) AM_DEVWRITE("ay", ay8910_address_data_w)
592   AM_RANGE(0xff, 0xff) AM_WRITE(meritm_crt250_bank_w)
593ADDRESS_MAP_END
594
572595static ADDRESS_MAP_START( meritm_map, ADDRESS_SPACE_PROGRAM, 8 )
573596   AM_RANGE(0x0000, 0x7fff) AM_ROMBANK(1)
574597   AM_RANGE(0x8000, 0xdfff) AM_ROMBANK(2)
r4679r4680
676699   PORT_DIPSETTING(    0x80, DEF_STR( On ) )
677700INPUT_PORTS_END
678701
702static INPUT_PORTS_START(pbst30)
703   PORT_INCLUDE(meritm_crt260)
704
705   PORT_MODIFY("DSW")
706   PORT_DIPNAME( 0x01, 0x00, DEF_STR( Unknown ) )
707   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
708   PORT_DIPSETTING(    0x01, DEF_STR( On ) ) // when on, touch screen coordinates are mirrored?
709   PORT_DIPNAME( 0x02, 0x02, "Enable casino games" )
710   PORT_DIPSETTING(    0x00, DEF_STR( No ) )
711   PORT_DIPSETTING(    0x02, DEF_STR( Yes ) )
712   PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) )
713   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
714   PORT_DIPSETTING(    0x04, DEF_STR( On ) )
715   PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) )
716   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
717   PORT_DIPSETTING(    0x08, DEF_STR( On ) )
718   PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) // off 1 coin 0.5 credit, on 1 coin 1 credit
719   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
720   PORT_DIPSETTING(    0x10, DEF_STR( On ) )
721   PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
722   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
723   PORT_DIPSETTING(    0x20, DEF_STR( On ) )
724   PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) )
725   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
726   PORT_DIPSETTING(    0x40, DEF_STR( On ) )
727   PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unknown ) )
728   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
729   PORT_DIPSETTING(    0x80, DEF_STR( On ) )
730INPUT_PORTS_END
731
679732/*************************************
680733 *
681734 *  8255
r4679r4680
755808static WRITE_LINE_DEVICE_HANDLER( meritm_audio_pio_interrupt )
756809{
757810   //logerror( "PIO(0) interrupt line: %d, V = %d, H = %d\n", state, video_screen_get_vpos(0), video_screen_get_hpos(0) );
758   cpu_set_input_line(device->machine->cpu[0], 0, state);
811   cputag_set_input_line(device->machine, "maincpu", 0, state);
759812}
760813
761814static WRITE_LINE_DEVICE_HANDLER( meritm_io_pio_interrupt  )
762815{
763816   //logerror( "PIO(1) interrupt line: %d, V = %d, H = %d\n", state, video_screen_get_vpos(0), video_screen_get_hpos(0) );
764   cpu_set_input_line(device->machine->cpu[0], 0, state);
817   cputag_set_input_line(device->machine, "maincpu", 0, state);
765818}
766819
767820
r4679r4680
846899   state_save_register_global(machine, questions_loword_address);
847900};
848901
902static MACHINE_START(meritm_crt250_crt252_crt258)
903{
904   MACHINE_START_CALL(meritm_crt250_questions);
905   pc16552d_init(machine, 0, UART_CLK, NULL, pc16650d_tx_callback);
906   microtouch_init(machine, meritm_microtouch_tx_callback, meritm_touch_coord_transform);
907}
908
849909static MACHINE_START(meritm_crt260)
850910{
851   meritm_ram = auto_malloc( 0x8000 );
911   meritm_ram = auto_alloc_array(machine, UINT8, 0x8000 );
852912   memset( meritm_ram, 0x8000, 0x00 );
853913   memory_configure_bank(machine, 1, 0, 128, memory_region(machine, "maincpu"), 0x8000);
854914   memory_configure_bank(machine, 2, 0, 128, memory_region(machine, "maincpu"), 0x8000);
r4679r4680
930990   MDRV_MACHINE_START(meritm_crt250_questions)
931991MACHINE_DRIVER_END
932992
993static MACHINE_DRIVER_START(meritm_crt250_crt252_crt258)
994   MDRV_IMPORT_FROM(meritm_crt250_questions)
995   MDRV_CPU_MODIFY("maincpu")
996   MDRV_CPU_IO_MAP(meritm_crt250_crt258_io_map,0)
997   MDRV_MACHINE_START(meritm_crt250_crt252_crt258)
998MACHINE_DRIVER_END
999
9331000static MACHINE_DRIVER_START(meritm_crt260)
9341001   MDRV_IMPORT_FROM(meritm_crt250)
9351002   MDRV_CPU_MODIFY("maincpu")
r4679r4680
10571124   ROM_LOAD( "1",  0x80000, 0x40000, CRC(590a1565) SHA1(b80ea967b6153847b2594e9c59bfe87559022b6c) )
10581125ROM_END
10591126
1127
1128ROM_START( pbst30 ) /* Dallas DS1204V security key at U1 labeled 9234-10 U1-RO1 C1994 MII */
1129   ROM_REGION( 0x80000, "maincpu", 0 )
1130   ROM_LOAD( "9234-10-01_u9-r0",  0x00000, 0x10000, CRC(96f39c9a) SHA1(df698e94a5204cf050ceadc5c257ca5f68171114) )
1131   ROM_LOAD( "5",  0x10000, 0x10000, BAD_DUMP CRC(853a1a99) SHA1(45e33442aa7e51c05c9ac8b8458937ee3ff4c21d) ) // taken from pitbossm
1132   ROM_LOAD( "9234-10-01_u11-r0",  0x20000, 0x10000, CRC(835fa041) SHA1(2ae754c5fcf50548eb214902409217d1643c6eaa) )
1133   ROM_LOAD( "7",  0x30000, 0x10000, BAD_DUMP CRC(b9fb4203) SHA1(84b514d9739d9c2ab1081cfc7cdedb41155ee038) ) // taken from pitbossm
1134   ROM_LOAD( "9234-10-01_u14-r0",  0x50000, 0x10000, CRC(9b0873a4) SHA1(7362c6220aa4bf1a9ab7c11cb8a51587a2a0a992) )
1135   ROM_LOAD( "9234-10-01_u15-r0",  0x60000, 0x10000, CRC(9fbd8582) SHA1(c0f68c8a7cdca34c8736cefc71767c421bcaba8a) )
1136
1137
1138   ROM_REGION( 0xc0000, "user1", 0 ) // extra data / extra banks?
1139   ROM_LOAD( "qs9234-01_u7-r0",  0x00000, 0x40000, CRC(c0534aaa) SHA1(4b3cbf03f29fd5b4b8fd423e73c0c8147692fa75) )
1140   ROM_LOAD( "qs9234-01_u6-r0",  0x40000, 0x40000, CRC(fe2cd934) SHA1(623011dc53ed6eefefa0725dba6fd1efee2077c1) )
1141   ROM_LOAD( "qs9234-01_u5-r0",  0x80000, 0x40000, CRC(293fe305) SHA1(8a551ae8fb4fa4bf329128be1bfd6f1c3ff5a366) )
1142ROM_END
1143
1144ROM_START( pbst30b ) /* Dallas DS1204V security key at U1 labeled 9234-01 U1-RO1 C1993 MII */
1145   ROM_REGION( 0x80000, "maincpu", 0 )
1146   ROM_LOAD( "9234-00-01_u9-r0a",  0x00000, 0x10000, CRC(5f058f95) SHA1(98382935340a076bdb1b20c7f16c25b6084599fe) )
1147   ROM_LOAD( "5",  0x10000, 0x10000, BAD_DUMP CRC(853a1a99) SHA1(45e33442aa7e51c05c9ac8b8458937ee3ff4c21d) ) // taken from pitbossm
1148   ROM_LOAD( "9234-00-01_u11-r0a",  0x20000, 0x10000, CRC(79125fb5) SHA1(6ca4f33c363cfb6f5c0f23b8fcc8cfcc076f68b1) )
1149   ROM_LOAD( "7",  0x30000, 0x10000, BAD_DUMP CRC(b9fb4203) SHA1(84b514d9739d9c2ab1081cfc7cdedb41155ee038) ) // taken from pitbossm
1150   ROM_LOAD( "9234-00-01_u14-r0a",  0x50000, 0x10000, CRC(e83f91d5) SHA1(1d64c943787b239763f44be412ee7f5ad13eb37d) )
1151   ROM_LOAD( "9234-00-01_u15-r0a",  0x60000, 0x10000, CRC(f10f0d39) SHA1(2b5d5a93adb5251e09160b10c067b6e70289f608) )
1152
1153
1154   ROM_REGION( 0xc0000, "user1", 0 ) // extra data / extra banks?
1155   ROM_LOAD( "qs9234-01_u7-r0",  0x00000, 0x40000, CRC(c0534aaa) SHA1(4b3cbf03f29fd5b4b8fd423e73c0c8147692fa75) )
1156   ROM_LOAD( "qs9234-01_u6-r0",  0x40000, 0x40000, CRC(fe2cd934) SHA1(623011dc53ed6eefefa0725dba6fd1efee2077c1) )
1157   ROM_LOAD( "qs9234-01_u5-r0",  0x80000, 0x40000, CRC(293fe305) SHA1(8a551ae8fb4fa4bf329128be1bfd6f1c3ff5a366) )
1158ROM_END
1159
1160
10601161/*
10611162    Mega Touch
10621163    by Merit Industries
r4679r4680
13671468   ROM_LOAD( "sc3981-0a.u51",  0x000, 0x117, CRC(4fc750d0) SHA1(d09ff7a8c66aeb5c49e9fec84bd1521e3f5d8d0a) )
13681469ROM_END
13691470
1471static DRIVER_INIT(pbst30)
1472{
1473   static const UINT8 pbst30b_ds1204_key[8] =
1474      { 0xf0, 0xaa, 0x0f, 0x0f, 0x55, 0x55, 0xff, 0xab };
1475
1476   static const UINT8 pbst30b_ds1204_nvram[16] =
1477      { 0x3e, 0x9a, 0x3c, 0x3f, 0x1d, 0x51, 0x72, 0xc9, 0x28, 0x2c, 0x1d, 0x2d, 0x0e, 0x56, 0x41, 0x00 };
1478
1479   ds1204_init(machine, pbst30b_ds1204_key, pbst30b_ds1204_nvram);
1480
1481};
1482
1483static DRIVER_INIT(pbst30b)
1484{
1485   static const UINT8 megat3_ds1204_key[8] =
1486      { 0xf0, 0xaa, 0x0f, 0x0f, 0x55, 0x55, 0xff, 0xab };
1487
1488   static const UINT8 megat3_ds1204_nvram[16] =
1489      { 0xa9, 0xdb, 0x41, 0xf8, 0xe4, 0x42, 0x20, 0x6e, 0xde, 0xaf, 0x4f, 0x046, 0x3d, 0x55, 0x44, 0x00 };
1490
1491   ds1204_init(machine, megat3_ds1204_key, megat3_ds1204_nvram);
1492
1493};
1494
13701495static DRIVER_INIT(megat3)
13711496{
13721497   static const UINT8 megat3_ds1204_key[8] =
r4679r4680
13891514
13901515   ds1204_init(machine, megat3_ds1204_key, megat3_ds1204_nvram);
13911516
1392   memory_install_readwrite8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xfff8, 0xffff, 0, 0, meritm_ds1644_r, meritm_ds1644_w );
1517   memory_install_readwrite8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xfff8, 0xffff, 0, 0, meritm_ds1644_r, meritm_ds1644_w );
13931518
13941519};
13951520
r4679r4680
14081533
14091534   ds1204_init(machine, 0, megat4te_ds1204_nvram);
14101535
1411   memory_install_readwrite8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xfff8, 0xffff, 0, 0, meritm_ds1644_r, meritm_ds1644_w );
1536   memory_install_readwrite8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xfff8, 0xffff, 0, 0, meritm_ds1644_r, meritm_ds1644_w );
14121537
14131538};
14141539
r4679r4680
14191544
14201545   ds1204_init(machine, 0, megat4te_ds1204_nvram);
14211546
1422   memory_install_readwrite8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xfff8, 0xffff, 0, 0, meritm_ds1644_r, meritm_ds1644_w );
1547   memory_install_readwrite8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xfff8, 0xffff, 0, 0, meritm_ds1644_r, meritm_ds1644_w );
14231548
14241549};
14251550
r4679r4680
14491574/* CRT 250 + question roms */
14501575GAME( 1994, pitbossm,  0,      meritm_crt250_questions, pitbossm, 0, ROT0, "Merit", "Pit Boss Megastar", GAME_IMPERFECT_GRAPHICS )
14511576
1577/* CRT 250 + CRT 252 + CRT 258 */
1578GAME( 1994, pbst30,    0,      meritm_crt250_crt252_crt258, pbst30, pbst30,  ROT0, "Merit", "Pit Boss Supertouch 30", GAME_IMPERFECT_GRAPHICS )
1579GAME( 1993, pbst30b,   0,      meritm_crt250_crt252_crt258, pbst30, pbst30b, ROT0, "Merit", "Pit Boss Supertouch 30 (set 2)", GAME_IMPERFECT_GRAPHICS )
1580
14521581/* CRT 260 */
14531582GAME( 1996, megat3,    0,      meritm_crt260, meritm_crt260, megat3,   ROT0, "Merit", "Megatouch III (9255-20-01 RON, Standard version)", GAME_IMPERFECT_GRAPHICS )
14541583GAME( 1995, megat3a,   megat3, meritm_crt260, meritm_crt260, megat3,   ROT0, "Merit", "Megatouch III (9255-20-01 ROF, Standard version)", GAME_IMPERFECT_GRAPHICS )
src/mame/drivers/slapshot.c
r4679r4680
182182
183183static TIMER_CALLBACK( slapshot_interrupt6 )
184184{
185   cpu_set_input_line(machine->cpu[0],6,HOLD_LINE);
185   cputag_set_input_line(machine, "maincpu", 6, HOLD_LINE);
186186}
187187
188188
189189static INTERRUPT_GEN( slapshot_interrupt )
190190{
191   timer_set(device->machine, cpu_clocks_to_attotime(device,200000-500), NULL, 0, slapshot_interrupt6);
192   cpu_set_input_line(device,5,HOLD_LINE);
191   timer_set(device->machine, cpu_clocks_to_attotime(device, 200000 - 500), NULL, 0, slapshot_interrupt6);
192   cpu_set_input_line(device, 5, HOLD_LINE);
193193}
194194
195195
r4679r4680
220220static WRITE16_HANDLER( opwolf3_adc_req_w )
221221{
222222   /* 4 writes a frame - one for each analogue port */
223   cpu_set_input_line(space->machine->cpu[0],3,HOLD_LINE);
223   cputag_set_input_line(space->machine, "maincpu", 3, HOLD_LINE);
224224}
225225
226226/*****************************************************
r4679r4680
309309   AM_RANGE(0xe00000, 0xe00007) AM_READWRITE(opwolf3_adc_r, opwolf3_adc_req_w)
310310ADDRESS_MAP_END
311311
312
312313/***************************************************************************/
313314
314static ADDRESS_MAP_START( z80_sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
315   AM_RANGE(0x0000, 0x3fff) AM_READ(SMH_ROM)
316   AM_RANGE(0x4000, 0x7fff) AM_READ(SMH_BANK10)
317   AM_RANGE(0xc000, 0xdfff) AM_READ(SMH_RAM)
318   AM_RANGE(0xe000, 0xe003) AM_DEVREAD("ym", ym2610_r)
319   AM_RANGE(0xe200, 0xe200) AM_READNOP
320   AM_RANGE(0xe201, 0xe201) AM_READ(taitosound_slave_comm_r)
321   AM_RANGE(0xea00, 0xea00) AM_READNOP
322ADDRESS_MAP_END
323
324static ADDRESS_MAP_START( z80_sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
325   AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM)
326   AM_RANGE(0xc000, 0xdfff) AM_WRITE(SMH_RAM)
327   AM_RANGE(0xe000, 0xe003) AM_DEVWRITE("ym", ym2610_w)
328   AM_RANGE(0xe200, 0xe200) AM_WRITE(taitosound_slave_port_w)
329   AM_RANGE(0xe201, 0xe201) AM_WRITE(taitosound_slave_comm_w)
315static ADDRESS_MAP_START( opwolf3_z80_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
316   AM_RANGE(0x0000, 0x3fff) AM_ROM
317   AM_RANGE(0x4000, 0x7fff) AM_ROMBANK(10)
318   AM_RANGE(0xc000, 0xdfff) AM_RAM
319   AM_RANGE(0xe000, 0xe003) AM_DEVREADWRITE("ym", ym2610_r,ym2610_w)
320   AM_RANGE(0xe200, 0xe200) AM_READNOP AM_WRITE(taitosound_slave_port_w)
321   AM_RANGE(0xe201, 0xe201) AM_READWRITE(taitosound_slave_comm_r,taitosound_slave_comm_w)
330322   AM_RANGE(0xe400, 0xe403) AM_WRITENOP /* pan */
323   AM_RANGE(0xea00, 0xea00) AM_READNOP
331324   AM_RANGE(0xee00, 0xee00) AM_WRITENOP /* ? */
332325   AM_RANGE(0xf000, 0xf000) AM_WRITENOP /* ? */
333326   AM_RANGE(0xf200, 0xf200) AM_WRITE(sound_bankswitch_w)
r4679r4680
508501/* handler called by the YM2610 emulator when the internal timers cause an IRQ */
509502static void irqhandler(const device_config *device, int irq)
510503{
511   cpu_set_input_line(device->machine->cpu[1],0,irq ? ASSERT_LINE : CLEAR_LINE);
504   cputag_set_input_line(device->machine, "audiocpu", 0, irq ? ASSERT_LINE : CLEAR_LINE);
512505}
513506
514507static const ym2610_interface ym2610_config =
r4679r4680
529522   MDRV_CPU_VBLANK_INT("screen", slapshot_interrupt)
530523
531524   MDRV_CPU_ADD("audiocpu", Z80,32000000/8)   /* 4 MHz */
532   MDRV_CPU_PROGRAM_MAP(z80_sound_readmem,z80_sound_writemem)
525   MDRV_CPU_PROGRAM_MAP(opwolf3_z80_sound_map,0)
533526
534527   MDRV_QUANTUM_TIME(HZ(600))
535528
r4679r4680
571564   MDRV_CPU_VBLANK_INT("screen", slapshot_interrupt)
572565
573566   MDRV_CPU_ADD("audiocpu", Z80,32000000/8)   /* 4 MHz */
574   MDRV_CPU_PROGRAM_MAP(z80_sound_readmem,z80_sound_writemem)
567   MDRV_CPU_PROGRAM_MAP(opwolf3_z80_sound_map,0)
575568
576569   MDRV_QUANTUM_TIME(HZ(600))
577570
src/mame/drivers/koftball.c
r4679r4680
271271#endif
272272static DRIVER_INIT(koftball)
273273{
274   colorram=auto_malloc(768);
274   colorram=auto_alloc_array(machine, UINT8, 768);
275275
276276#if NVRAM_HACK
277277   {
src/mame/drivers/ertictac.c
r4679r4680
3636
3737static WRITE32_HANDLER(video_fifo_w)
3838{
39   vidFIFO[data>>24]=data&0xffffff;
39   vidFIFO[data >> 24] = data & 0xffffff;
4040}
4141
4242static READ32_HANDLER(IOCR_r)
r4679r4680
5252
5353static READ32_HANDLER(IRQSTA_r)
5454{
55   return (IRQSTA&(~2))|0x80;
55   return (IRQSTA & (~2)) | 0x80;
5656}
5757
5858static READ32_HANDLER(IRQRQA_r)
5959{
60   return (IRQSTA&IRQMSKA)|0x80;
60   return (IRQSTA & IRQMSKA) | 0x80;
6161}
6262
6363static WRITE32_HANDLER(IRQRQA_w)
6464{
6565   if(ACCESSING_BITS_0_7)
66      IRQSTA&=~data;
66      IRQSTA &= ~data;
6767}
6868
6969static READ32_HANDLER(IRQMSKA_r)
r4679r4680
7474static WRITE32_HANDLER(IRQMSKA_w)
7575{
7676   if(ACCESSING_BITS_0_7)
77      IRQMSKA=(data&(~2))|0x80;
77      IRQMSKA = (data & (~2)) | 0x80;
7878}
7979
8080static READ32_HANDLER(IRQRQB_r)
8181{
82   return mame_rand(space->machine)&IRQMSKB; /* hack  0x20 - controls,  0x02 - ?sound? */
82   return mame_rand(space->machine) & IRQMSKB; /* hack  0x20 - controls,  0x02 - ?sound? */
8383}
8484
8585static READ32_HANDLER(IRQMSKB_r)
r4679r4680
9090static WRITE32_HANDLER(IRQMSKB_w)
9191{
9292   if(ACCESSING_BITS_0_7)
93      IRQMSKB=data;
93      IRQMSKB = data;
9494}
9595
9696static READ32_HANDLER(FIQMSK_r)
r4679r4680
101101static WRITE32_HANDLER(FIQMSK_w)
102102{
103103   if(ACCESSING_BITS_0_7)
104      FIQMSK=(data&(~0x2c))|0x80;
104      FIQMSK = (data & (~0x2c)) | 0x80;
105105}
106106
107107static READ32_HANDLER(T1low_r)
r4679r4680
112112static WRITE32_HANDLER(T1low_w)
113113{
114114   if(ACCESSING_BITS_0_7)
115      T1low=data;
115      T1low = data;
116116}
117117
118118static READ32_HANDLER(T1high_r)
r4679r4680
123123static WRITE32_HANDLER(T1high_w)
124124{
125125   if(ACCESSING_BITS_0_7)
126      T1high=data;
126      T1high = data;
127127}
128128
129129static void startTimer(running_machine *machine);
130130
131131static TIMER_CALLBACK( ertictacTimer )
132132{
133   IRQSTA|=0x40;
134   if(IRQMSKA&0x40)
133   IRQSTA |= 0x40;
134   if(IRQMSKA & 0x40)
135135   {
136      cpu_set_input_line(machine->cpu[0], ARM_IRQ_LINE, HOLD_LINE);
136      cputag_set_input_line(machine, "maincpu", ARM_IRQ_LINE, HOLD_LINE);
137137   }
138138   startTimer(machine);
139139}
140140
141141static void startTimer(running_machine *machine)
142142{
143   timer_set(machine, ATTOTIME_IN_USEC( ((T1low&0xff)|((T1high&0xff)<<8))>>4), NULL, 0, ertictacTimer);
143   timer_set(machine, ATTOTIME_IN_USEC(((T1low & 0xff) | ((T1high & 0xff) << 8)) >> 4), NULL, 0, ertictacTimer);
144144}
145145
146146static WRITE32_HANDLER(T1GO_w)
src/mame/drivers/xyonix.c
r4679r4680
3434
3535static WRITE8_HANDLER( xyonix_irqack_w )
3636{
37   cpu_set_input_line(space->machine->cpu[0], 0, CLEAR_LINE);
37   cputag_set_input_line(space->machine, "maincpu", 0, CLEAR_LINE);
3838}
3939
4040
src/mame/drivers/cninja.c
r4679r4680
6161static WRITE16_HANDLER( cninja_sound_w )
6262{
6363   soundlatch_w(space,0,data&0xff);
64   cpu_set_input_line(space->machine->cpu[1],0,HOLD_LINE);
64   cputag_set_input_line(space->machine, "audiocpu", 0, HOLD_LINE);
6565}
6666
6767static WRITE16_HANDLER( stoneage_sound_w )
6868{
6969   soundlatch_w(space,0,data&0xff);
70   cpu_set_input_line(space->machine->cpu[1],INPUT_LINE_NMI,PULSE_LINE);
70   cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
7171}
7272
7373static TIMER_CALLBACK( interrupt_gen )
r4679r4680
7575   int scanline = param;
7676
7777   /* Save state of scroll registers before the IRQ */
78   deco16_raster_display_list[deco16_raster_display_position++]=scanline;
79   deco16_raster_display_list[deco16_raster_display_position++]=deco16_pf12_control[1]&0xffff;
80   deco16_raster_display_list[deco16_raster_display_position++]=deco16_pf12_control[2]&0xffff;
81   deco16_raster_display_list[deco16_raster_display_position++]=deco16_pf12_control[3]&0xffff;
82   deco16_raster_display_list[deco16_raster_display_position++]=deco16_pf12_control[4]&0xffff;
83   deco16_raster_display_list[deco16_raster_display_position++]=deco16_pf34_control[1]&0xffff;
84   deco16_raster_display_list[deco16_raster_display_position++]=deco16_pf34_control[2]&0xffff;
85   deco16_raster_display_list[deco16_raster_display_position++]=deco16_pf34_control[3]&0xffff;
86   deco16_raster_display_list[deco16_raster_display_position++]=deco16_pf34_control[4]&0xffff;
78   deco16_raster_display_list[deco16_raster_display_position++] = scanline;
79   deco16_raster_display_list[deco16_raster_display_position++] = deco16_pf12_control[1] & 0xffff;
80   deco16_raster_display_list[deco16_raster_display_position++] = deco16_pf12_control[2] & 0xffff;
81   deco16_raster_display_list[deco16_raster_display_position++] = deco16_pf12_control[3] & 0xffff;
82   deco16_raster_display_list[deco16_raster_display_position++] = deco16_pf12_control[4] & 0xffff;
83   deco16_raster_display_list[deco16_raster_display_position++] = deco16_pf34_control[1] & 0xffff;
84   deco16_raster_display_list[deco16_raster_display_position++] = deco16_pf34_control[2] & 0xffff;
85   deco16_raster_display_list[deco16_raster_display_position++] = deco16_pf34_control[3] & 0xffff;
86   deco16_raster_display_list[deco16_raster_display_position++] = deco16_pf34_control[4] & 0xffff;
8787
88   cpu_set_input_line(machine->cpu[0], (cninja_irq_mask&0x10) ? 3 : 4, ASSERT_LINE);
89   timer_adjust_oneshot(raster_irq_timer,attotime_never,0);
88   cputag_set_input_line(machine, "maincpu", (cninja_irq_mask&0x10) ? 3 : 4, ASSERT_LINE);
89   timer_adjust_oneshot(raster_irq_timer, attotime_never, 0);
9090}
9191
9292static READ16_HANDLER( cninja_irq_r )
r4679r4680
9797      return cninja_scanline;
9898
9999   case 2: /* Raster IRQ ACK - value read is not used */
100      cpu_set_input_line(space->machine->cpu[0], 3, CLEAR_LINE);
101      cpu_set_input_line(space->machine->cpu[0], 4, CLEAR_LINE);
100      cputag_set_input_line(space->machine, "maincpu", 3, CLEAR_LINE);
101      cputag_set_input_line(space->machine, "maincpu", 4, CLEAR_LINE);
102102      return 0;
103103   }
104104
r4679r4680
153153
154154/**********************************************************************************/
155155
156static ADDRESS_MAP_START( cninja_readmem, ADDRESS_SPACE_PROGRAM, 16 )
157   AM_RANGE(0x000000, 0x0bffff) AM_READ(SMH_ROM)
158   AM_RANGE(0x144000, 0x144fff) AM_READ(SMH_RAM)
159   AM_RANGE(0x146000, 0x146fff) AM_READ(SMH_RAM)
160   AM_RANGE(0x14e000, 0x14e7ff) AM_READ(SMH_RAM)
161   AM_RANGE(0x154000, 0x154fff) AM_READ(SMH_RAM)
162   AM_RANGE(0x156000, 0x156fff) AM_READ(SMH_RAM)
163   AM_RANGE(0x15c000, 0x15c7ff) AM_READ(SMH_RAM)
164   AM_RANGE(0x15e000, 0x15e7ff) AM_READ(SMH_RAM)
165   AM_RANGE(0x184000, 0x187fff) AM_READ(SMH_RAM)
166   AM_RANGE(0x190000, 0x190007) AM_READ(cninja_irq_r)
167   AM_RANGE(0x19c000, 0x19dfff) AM_READ(SMH_RAM)
168   AM_RANGE(0x1a4000, 0x1a47ff) AM_READ(SMH_RAM) /* Sprites */
169   AM_RANGE(0x1bc000, 0x1bcfff) AM_READ(deco16_104_cninja_prot_r) /* Protection device */
170ADDRESS_MAP_END
156static ADDRESS_MAP_START( cninja_map, ADDRESS_SPACE_PROGRAM, 16 )
157   AM_RANGE(0x000000, 0x0bffff) AM_ROM
171158
172static ADDRESS_MAP_START( cninja_writemem, ADDRESS_SPACE_PROGRAM, 16 )
173   AM_RANGE(0x000000, 0x0bffff) AM_WRITE(SMH_ROM)
174
175159   AM_RANGE(0x140000, 0x14000f) AM_WRITE(SMH_RAM) AM_BASE(&deco16_pf12_control)
176   AM_RANGE(0x144000, 0x144fff) AM_WRITE(deco16_pf1_data_w) AM_BASE(&deco16_pf1_data)
177   AM_RANGE(0x146000, 0x146fff) AM_WRITE(deco16_pf2_data_w) AM_BASE(&deco16_pf2_data)
160   AM_RANGE(0x144000, 0x144fff) AM_RAM_WRITE(deco16_pf1_data_w) AM_BASE(&deco16_pf1_data)
161   AM_RANGE(0x146000, 0x146fff) AM_RAM_WRITE(deco16_pf2_data_w) AM_BASE(&deco16_pf2_data)
178162   AM_RANGE(0x14c000, 0x14c7ff) AM_WRITE(SMH_RAM) AM_BASE(&deco16_pf1_rowscroll)
179   AM_RANGE(0x14e000, 0x14e7ff) AM_WRITE(SMH_RAM) AM_BASE(&deco16_pf2_rowscroll)
163   AM_RANGE(0x14e000, 0x14e7ff) AM_RAM AM_BASE(&deco16_pf2_rowscroll)
180164
181165   AM_RANGE(0x150000, 0x15000f) AM_WRITE(SMH_RAM) AM_BASE(&deco16_pf34_control)
182   AM_RANGE(0x154000, 0x154fff) AM_WRITE(deco16_pf3_data_w) AM_BASE(&deco16_pf3_data)
183   AM_RANGE(0x156000, 0x156fff) AM_WRITE(deco16_pf4_data_w) AM_BASE(&deco16_pf4_data)
184   AM_RANGE(0x15c000, 0x15c7ff) AM_WRITE(SMH_RAM) AM_BASE(&deco16_pf3_rowscroll)
185   AM_RANGE(0x15e000, 0x15e7ff) AM_WRITE(SMH_RAM) AM_BASE(&deco16_pf4_rowscroll)
166   AM_RANGE(0x154000, 0x154fff) AM_RAM_WRITE(deco16_pf3_data_w) AM_BASE(&deco16_pf3_data)
167   AM_RANGE(0x156000, 0x156fff) AM_RAM_WRITE(deco16_pf4_data_w) AM_BASE(&deco16_pf4_data)
168   AM_RANGE(0x15c000, 0x15c7ff) AM_RAM AM_BASE(&deco16_pf3_rowscroll)
169   AM_RANGE(0x15e000, 0x15e7ff) AM_RAM AM_BASE(&deco16_pf4_rowscroll)
186170
187   AM_RANGE(0x184000, 0x187fff) AM_WRITE(SMH_RAM) AM_BASE(&cninja_ram) /* Main ram */
188   AM_RANGE(0x190000, 0x190007) AM_WRITE(cninja_irq_w)
189   AM_RANGE(0x19c000, 0x19dfff) AM_WRITE(deco16_nonbuffered_palette_w) AM_BASE(&paletteram16)
190   AM_RANGE(0x1a4000, 0x1a47ff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)
171   AM_RANGE(0x184000, 0x187fff) AM_RAM AM_BASE(&cninja_ram)
172   AM_RANGE(0x190000, 0x190007) AM_READWRITE(cninja_irq_r, cninja_irq_w)
173   AM_RANGE(0x19c000, 0x19dfff) AM_RAM_WRITE(deco16_nonbuffered_palette_w) AM_BASE(&paletteram16)
174
175   AM_RANGE(0x1a4000, 0x1a47ff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)             /* Sprites */
191176   AM_RANGE(0x1b4000, 0x1b4001) AM_WRITE(buffer_spriteram16_w) /* DMA flag */
192   AM_RANGE(0x1bc000, 0x1bc0ff) AM_WRITE(deco16_104_cninja_prot_w) AM_BASE(&deco16_prot_ram) /* Protection writes */
177   AM_RANGE(0x1bc000, 0x1bc0ff) AM_WRITE(deco16_104_cninja_prot_w) AM_BASE(&deco16_prot_ram)       /* Protection writes */
178   AM_RANGE(0x1bc000, 0x1bcfff) AM_READ(deco16_104_cninja_prot_r) AM_BASE(&deco16_prot_ram)       /* Protection device */
179
193180   AM_RANGE(0x308000, 0x308fff) AM_WRITENOP /* Bootleg only */
194181ADDRESS_MAP_END
195182
196static ADDRESS_MAP_START( edrandy_readmem, ADDRESS_SPACE_PROGRAM, 16 )
197   AM_RANGE(0x000000, 0x0fffff) AM_READ(SMH_ROM)
198   AM_RANGE(0x144000, 0x144fff) AM_READ(SMH_RAM)
199   AM_RANGE(0x144000, 0x144fff) AM_READ(SMH_RAM)
200   AM_RANGE(0x146000, 0x146fff) AM_READ(SMH_RAM)
201   AM_RANGE(0x14c000, 0x14c7ff) AM_READ(SMH_RAM)
202   AM_RANGE(0x14e000, 0x14e7ff) AM_READ(SMH_RAM)
203   AM_RANGE(0x154000, 0x154fff) AM_READ(SMH_RAM)
204   AM_RANGE(0x156000, 0x156fff) AM_READ(SMH_RAM)
205   AM_RANGE(0x15c000, 0x15c7ff) AM_READ(SMH_RAM)
206   AM_RANGE(0x15e000, 0x15e7ff) AM_READ(SMH_RAM)
207   AM_RANGE(0x188000, 0x189fff) AM_READ(SMH_RAM)
208   AM_RANGE(0x194000, 0x197fff) AM_READ(SMH_RAM)
209   AM_RANGE(0x198000, 0x1987ff) AM_READ(deco16_60_prot_r) /* Protection device */
210   AM_RANGE(0x1a4000, 0x1a4007) AM_READ(cninja_irq_r)
211   AM_RANGE(0x1bc000, 0x1bc7ff) AM_READ(SMH_RAM) /* Sprites */
212ADDRESS_MAP_END
183static ADDRESS_MAP_START( edrandy_map, ADDRESS_SPACE_PROGRAM, 16 )
184   AM_RANGE(0x000000, 0x0fffff) AM_ROM
213185
214static ADDRESS_MAP_START( edrandy_writemem, ADDRESS_SPACE_PROGRAM, 16 )
215   AM_RANGE(0x000000, 0x0fffff) AM_WRITE(SMH_ROM)
216
217186   AM_RANGE(0x140000, 0x14000f) AM_WRITE(SMH_RAM) AM_BASE(&deco16_pf12_control)
218   AM_RANGE(0x144000, 0x144fff) AM_WRITE(deco16_pf1_data_w) AM_BASE(&deco16_pf1_data)
219   AM_RANGE(0x146000, 0x146fff) AM_WRITE(deco16_pf2_data_w) AM_BASE(&deco16_pf2_data)
220   AM_RANGE(0x14c000, 0x14c7ff) AM_WRITE(SMH_RAM) AM_BASE(&deco16_pf1_rowscroll)
221   AM_RANGE(0x14e000, 0x14e7ff) AM_WRITE(SMH_RAM) AM_BASE(&deco16_pf2_rowscroll)
187   AM_RANGE(0x144000, 0x144fff) AM_RAM_WRITE(deco16_pf1_data_w) AM_BASE(&deco16_pf1_data)
188   AM_RANGE(0x146000, 0x146fff) AM_RAM_WRITE(deco16_pf2_data_w) AM_BASE(&deco16_pf2_data)
189   AM_RANGE(0x14c000, 0x14c7ff) AM_RAM AM_BASE(&deco16_pf1_rowscroll)
190   AM_RANGE(0x14e000, 0x14e7ff) AM_RAM AM_BASE(&deco16_pf2_rowscroll)
222191
223192   AM_RANGE(0x150000, 0x15000f) AM_WRITE(SMH_RAM) AM_BASE(&deco16_pf34_control)
224   AM_RANGE(0x154000, 0x154fff) AM_WRITE(deco16_pf3_data_w) AM_BASE(&deco16_pf3_data)
225   AM_RANGE(0x156000, 0x156fff) AM_WRITE(deco16_pf4_data_w) AM_BASE(&deco16_pf4_data)
226   AM_RANGE(0x15c000, 0x15c7ff) AM_WRITE(SMH_RAM) AM_BASE(&deco16_pf3_rowscroll)
227   AM_RANGE(0x15e000, 0x15e7ff) AM_WRITE(SMH_RAM) AM_BASE(&deco16_pf4_rowscroll)
193   AM_RANGE(0x154000, 0x154fff) AM_RAM_WRITE(deco16_pf3_data_w) AM_BASE(&deco16_pf3_data)
194   AM_RANGE(0x156000, 0x156fff) AM_RAM_WRITE(deco16_pf4_data_w) AM_BASE(&deco16_pf4_data)
195   AM_RANGE(0x15c000, 0x15c7ff) AM_RAM AM_BASE(&deco16_pf3_rowscroll)
196   AM_RANGE(0x15e000, 0x15e7ff) AM_RAM AM_BASE(&deco16_pf4_rowscroll)
228197
229   AM_RANGE(0x188000, 0x189fff) AM_WRITE(deco16_nonbuffered_palette_w) AM_BASE(&paletteram16)
230   AM_RANGE(0x194000, 0x197fff) AM_WRITE(SMH_RAM) AM_BASE(&cninja_ram) /* Main ram */
231   AM_RANGE(0x198000, 0x1987ff) AM_WRITE(deco16_60_prot_w) AM_BASE(&deco16_prot_ram) /* Protection writes */
198   AM_RANGE(0x188000, 0x189fff) AM_RAM_WRITE(deco16_nonbuffered_palette_w) AM_BASE(&paletteram16)
199   AM_RANGE(0x194000, 0x197fff) AM_RAM AM_BASE(&cninja_ram) /* Main ram */
200   AM_RANGE(0x198000, 0x1987ff) AM_READWRITE(deco16_60_prot_r, deco16_60_prot_w) AM_BASE(&deco16_prot_ram) /* Protection device */
232201   AM_RANGE(0x199550, 0x199551) AM_WRITENOP /* Looks like a bug in game code, a protection write is referenced off a5 instead of a6 and ends up here */
233202   AM_RANGE(0x199750, 0x199751) AM_WRITENOP /* Looks like a bug in game code, a protection write is referenced off a5 instead of a6 and ends up here */
234203
235   AM_RANGE(0x1a4000, 0x1a4007) AM_WRITE(cninja_irq_w)
204   AM_RANGE(0x1a4000, 0x1a4007) AM_READWRITE(cninja_irq_r, cninja_irq_w)
236205   AM_RANGE(0x1ac000, 0x1ac001) AM_WRITE(buffer_spriteram16_w) /* DMA flag */
237   AM_RANGE(0x1bc000, 0x1bc7ff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)
206   AM_RANGE(0x1bc000, 0x1bc7ff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size) /* Sprites */
238207   AM_RANGE(0x1bc800, 0x1bcfff) AM_WRITENOP /* Another bug in game code?  Sprite list can overrun.  Doesn't seem to mirror */
239208ADDRESS_MAP_END
240209
241static ADDRESS_MAP_START( robocop2_readmem, ADDRESS_SPACE_PROGRAM, 16 )
242   AM_RANGE(0x000000, 0x0fffff) AM_READ(SMH_ROM)
243   AM_RANGE(0x180000, 0x1807ff) AM_READ(SMH_RAM)
244   AM_RANGE(0x18c000, 0x18c7ff) AM_READ(robocop2_prot_r) /* Protection device */
245   AM_RANGE(0x1a8000, 0x1a9fff) AM_READ(SMH_RAM)
246   AM_RANGE(0x1b0000, 0x1b0007) AM_READ(cninja_irq_r)
247   AM_RANGE(0x1b8000, 0x1bbfff) AM_READ(SMH_RAM)
248   AM_RANGE(0x144000, 0x144fff) AM_READ(SMH_RAM)
249   AM_RANGE(0x146000, 0x146fff) AM_READ(SMH_RAM)
250   AM_RANGE(0x14c000, 0x14c7ff) AM_READ(SMH_RAM)
251   AM_RANGE(0x14e000, 0x14e7ff) AM_READ(SMH_RAM)
252   AM_RANGE(0x154000, 0x154fff) AM_READ(SMH_RAM)
253   AM_RANGE(0x156000, 0x156fff) AM_READ(SMH_RAM)
254   AM_RANGE(0x15c000, 0x15c7ff) AM_READ(SMH_RAM)
255   AM_RANGE(0x15e000, 0x15e7ff) AM_READ(SMH_RAM)
256   AM_RANGE(0x1f8000, 0x1f8001) AM_READ_PORT("DSW3") /* Dipswitch #3 */
257ADDRESS_MAP_END
210static ADDRESS_MAP_START( robocop2_map, ADDRESS_SPACE_PROGRAM, 16 )
211   AM_RANGE(0x000000, 0x0fffff) AM_ROM
258212
259static ADDRESS_MAP_START( robocop2_writemem, ADDRESS_SPACE_PROGRAM, 16 )
260   AM_RANGE(0x000000, 0x0fffff) AM_WRITE(SMH_ROM)
261213   AM_RANGE(0x140000, 0x14000f) AM_WRITE(SMH_RAM) AM_BASE(&deco16_pf12_control)
262   AM_RANGE(0x144000, 0x144fff) AM_WRITE(deco16_pf1_data_w) AM_BASE(&deco16_pf1_data)
263   AM_RANGE(0x146000, 0x146fff) AM_WRITE(deco16_pf2_data_w) AM_BASE(&deco16_pf2_data)
264   AM_RANGE(0x14c000, 0x14c7ff) AM_WRITE(SMH_RAM) AM_BASE(&deco16_pf1_rowscroll)
265   AM_RANGE(0x14e000, 0x14e7ff) AM_WRITE(SMH_RAM) AM_BASE(&deco16_pf2_rowscroll)
214   AM_RANGE(0x144000, 0x144fff) AM_RAM_WRITE(deco16_pf1_data_w) AM_BASE(&deco16_pf1_data)
215   AM_RANGE(0x146000, 0x146fff) AM_RAM_WRITE(deco16_pf2_data_w) AM_BASE(&deco16_pf2_data)
216   AM_RANGE(0x14c000, 0x14c7ff) AM_RAM AM_BASE(&deco16_pf1_rowscroll)
217   AM_RANGE(0x14e000, 0x14e7ff) AM_RAM AM_BASE(&deco16_pf2_rowscroll)
266218
267219   AM_RANGE(0x150000, 0x15000f) AM_WRITE(SMH_RAM) AM_BASE(&deco16_pf34_control)
268   AM_RANGE(0x154000, 0x154fff) AM_WRITE(deco16_pf3_data_w) AM_BASE(&deco16_pf3_data)
269   AM_RANGE(0x156000, 0x156fff) AM_WRITE(deco16_pf4_data_w) AM_BASE(&deco16_pf4_data)
270   AM_RANGE(0x15c000, 0x15c7ff) AM_WRITE(SMH_RAM) AM_BASE(&deco16_pf3_rowscroll)
271   AM_RANGE(0x15e000, 0x15e7ff) AM_WRITE(SMH_RAM) AM_BASE(&deco16_pf4_rowscroll)
220   AM_RANGE(0x154000, 0x154fff) AM_RAM_WRITE(deco16_pf3_data_w) AM_BASE(&deco16_pf3_data)
221   AM_RANGE(0x156000, 0x156fff) AM_RAM_WRITE(deco16_pf4_data_w) AM_BASE(&deco16_pf4_data)
222   AM_RANGE(0x15c000, 0x15c7ff) AM_RAM AM_BASE(&deco16_pf3_rowscroll)
223   AM_RANGE(0x15e000, 0x15e7ff) AM_RAM AM_BASE(&deco16_pf4_rowscroll)
272224
273   AM_RANGE(0x180000, 0x1807ff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)
274   AM_RANGE(0x18c064, 0x18c065) AM_WRITE(cninja_sound_w)
225   AM_RANGE(0x180000, 0x1807ff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)
275226//  AM_RANGE(0x18c000, 0x18c0ff) AM_WRITE(cninja_loopback_w) /* Protection writes */
227   AM_RANGE(0x18c000, 0x18c7ff) AM_READ(robocop2_prot_r) /* Protection device */
228   AM_RANGE(0x18c064, 0x18c065) AM_WRITE(cninja_sound_w)
276229   AM_RANGE(0x198000, 0x198001) AM_WRITE(buffer_spriteram16_w) /* DMA flag */
277   AM_RANGE(0x1a8000, 0x1a9fff) AM_WRITE(deco16_nonbuffered_palette_w) AM_BASE(&paletteram16)
278   AM_RANGE(0x1b0000, 0x1b0007) AM_WRITE(cninja_irq_w)
279   AM_RANGE(0x1b8000, 0x1bbfff) AM_WRITE(SMH_RAM) AM_BASE(&cninja_ram) /* Main ram */
230   AM_RANGE(0x1a8000, 0x1a9fff) AM_RAM_WRITE(deco16_nonbuffered_palette_w) AM_BASE(&paletteram16)
231   AM_RANGE(0x1b0000, 0x1b0007) AM_READWRITE(cninja_irq_r, cninja_irq_w)
232   AM_RANGE(0x1b8000, 0x1bbfff) AM_RAM AM_BASE(&cninja_ram) /* Main ram */
280233   AM_RANGE(0x1f0000, 0x1f0001) AM_WRITE(deco16_priority_w)
234   AM_RANGE(0x1f8000, 0x1f8001) AM_READ_PORT("DSW3") /* Dipswitch #3 */
281235ADDRESS_MAP_END
282236
283static ADDRESS_MAP_START( mutantf_readmem, ADDRESS_SPACE_PROGRAM, 16 )
284   AM_RANGE(0x000000, 0x07ffff) AM_READ(SMH_ROM)
285   AM_RANGE(0x100000, 0x103fff) AM_READ(SMH_RAM)
286   AM_RANGE(0x120000, 0x1207ff) AM_READ(SMH_RAM)
287   AM_RANGE(0x140000, 0x1407ff) AM_READ(SMH_RAM)
288   AM_RANGE(0x160000, 0x161fff) AM_READ(SMH_RAM)
289   AM_RANGE(0x1a0000, 0x1a07ff) AM_READ(deco16_66_prot_r) /* Protection device */
290   AM_RANGE(0x1c0000, 0x1c0001) AM_READ(deco16_71_r)
291
292   AM_RANGE(0x304000, 0x305fff) AM_READ(SMH_RAM)
293   AM_RANGE(0x306000, 0x307fff) AM_READ(SMH_RAM)
294   AM_RANGE(0x308000, 0x3087ff) AM_READ(SMH_RAM)
295   AM_RANGE(0x30a000, 0x30a7ff) AM_READ(SMH_RAM)
296   AM_RANGE(0x314000, 0x315fff) AM_READ(SMH_RAM)
297   AM_RANGE(0x316000, 0x317fff) AM_READ(SMH_RAM)
298   AM_RANGE(0x318000, 0x3187ff) AM_READ(SMH_RAM)
299   AM_RANGE(0x31a000, 0x31a7ff) AM_READ(SMH_RAM)
300   AM_RANGE(0xad00ac, 0xad00ff) AM_READNOP /* Reads from here seem to be a game code bug */
301ADDRESS_MAP_END
302
303static ADDRESS_MAP_START( mutantf_writemem, ADDRESS_SPACE_PROGRAM, 16 )
304   AM_RANGE(0x000000, 0x07ffff) AM_WRITE(SMH_ROM)
305   AM_RANGE(0x100000, 0x103fff) AM_WRITE(SMH_RAM) /* Main ram */
306   AM_RANGE(0x120000, 0x1207ff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)
307   AM_RANGE(0x140000, 0x1407ff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16_2) AM_SIZE(&spriteram_2_size)
308   AM_RANGE(0x160000, 0x161fff) AM_WRITE(deco16_nonbuffered_palette_w) AM_BASE(&paletteram16)
237static ADDRESS_MAP_START( mutantf_map, ADDRESS_SPACE_PROGRAM, 16 )
238   AM_RANGE(0x000000, 0x07ffff) AM_ROM
239   AM_RANGE(0x100000, 0x103fff) AM_RAM
240   AM_RANGE(0x120000, 0x1207ff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)
241   AM_RANGE(0x140000, 0x1407ff) AM_RAM AM_BASE(&spriteram16_2) AM_SIZE(&spriteram_2_size)
242   AM_RANGE(0x160000, 0x161fff) AM_RAM_WRITE(deco16_nonbuffered_palette_w) AM_BASE(&paletteram16)
309243   AM_RANGE(0x180000, 0x180001) AM_WRITE(deco16_priority_w)
310244   AM_RANGE(0x180002, 0x180003) AM_WRITENOP /* VBL irq ack */
311   AM_RANGE(0x1a0000, 0x1a07ff) AM_WRITE(deco16_66_prot_w) AM_BASE(&deco16_prot_ram) /* Protection writes */
312   AM_RANGE(0x1c0000, 0x1c0001) AM_WRITE(buffer_spriteram16_w)
245   AM_RANGE(0x1a0000, 0x1a07ff) AM_READWRITE(deco16_66_prot_r, deco16_66_prot_w) AM_BASE(&deco16_prot_ram) /* Protection device */
246   AM_RANGE(0x1c0000, 0x1c0001) AM_READWRITE(deco16_71_r, buffer_spriteram16_w)
313247   AM_RANGE(0x1e0000, 0x1e0001) AM_WRITE(buffer_spriteram16_2_w)
314248
315249   AM_RANGE(0x300000, 0x30000f) AM_WRITE(SMH_RAM) AM_BASE(&deco16_pf12_control)
316   AM_RANGE(0x304000, 0x305fff) AM_WRITE(deco16_pf1_data_w) AM_BASE(&deco16_pf1_data)
317   AM_RANGE(0x306000, 0x307fff) AM_WRITE(deco16_pf2_data_w) AM_BASE(&deco16_pf2_data)
318   AM_RANGE(0x308000, 0x3087ff) AM_WRITE(SMH_RAM) AM_BASE(&deco16_pf1_rowscroll)
319   AM_RANGE(0x30a000, 0x30a7ff) AM_WRITE(SMH_RAM) AM_BASE(&deco16_pf2_rowscroll)
250   AM_RANGE(0x304000, 0x305fff) AM_RAM_WRITE(deco16_pf1_data_w) AM_BASE(&deco16_pf1_data)
251   AM_RANGE(0x306000, 0x307fff) AM_RAM_WRITE(deco16_pf2_data_w) AM_BASE(&deco16_pf2_data)
252   AM_RANGE(0x308000, 0x3087ff) AM_RAM AM_BASE(&deco16_pf1_rowscroll)
253   AM_RANGE(0x30a000, 0x30a7ff) AM_RAM AM_BASE(&deco16_pf2_rowscroll)
320254
321255   AM_RANGE(0x310000, 0x31000f) AM_WRITE(SMH_RAM) AM_BASE(&deco16_pf34_control)
322   AM_RANGE(0x314000, 0x315fff) AM_WRITE(deco16_pf3_data_w) AM_BASE(&deco16_pf3_data)
323   AM_RANGE(0x316000, 0x317fff) AM_WRITE(deco16_pf4_data_w) AM_BASE(&deco16_pf4_data)
324   AM_RANGE(0x318000, 0x3187ff) AM_WRITE(SMH_RAM) AM_BASE(&deco16_pf3_rowscroll)
325   AM_RANGE(0x31a000, 0x31a7ff) AM_WRITE(SMH_RAM) AM_BASE(&deco16_pf4_rowscroll)
256   AM_RANGE(0x314000, 0x315fff) AM_RAM_WRITE(deco16_pf3_data_w) AM_BASE(&deco16_pf3_data)
257   AM_RANGE(0x316000, 0x317fff) AM_RAM_WRITE(deco16_pf4_data_w) AM_BASE(&deco16_pf4_data)
258   AM_RANGE(0x318000, 0x3187ff) AM_RAM AM_BASE(&deco16_pf3_rowscroll)
259   AM_RANGE(0x31a000, 0x31a7ff) AM_RAM AM_BASE(&deco16_pf4_rowscroll)
260
261   AM_RANGE(0xad00ac, 0xad00ff) AM_READNOP /* Reads from here seem to be a game code bug */
326262ADDRESS_MAP_END
327263
328264/******************************************************************************/
329265
330static ADDRESS_MAP_START( sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
331   AM_RANGE(0x000000, 0x00ffff) AM_READ(SMH_ROM)
332   AM_RANGE(0x100000, 0x100001) AM_DEVREAD("ym1", ym2203_r)
333   AM_RANGE(0x110000, 0x110001) AM_DEVREAD("ym2", ym2151_r)
334   AM_RANGE(0x120000, 0x120001) AM_DEVREAD("oki1", okim6295_r)
335   AM_RANGE(0x130000, 0x130001) AM_DEVREAD("oki2", okim6295_r)
266static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 )
267   AM_RANGE(0x000000, 0x00ffff) AM_ROM
268   AM_RANGE(0x100000, 0x100001) AM_DEVREADWRITE("ym1", ym2203_r, ym2203_w)
269   AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE("ym2", ym2151_r, ym2151_w)
270   AM_RANGE(0x120000, 0x120001) AM_DEVREADWRITE("oki1", okim6295_r, okim6295_w)
271   AM_RANGE(0x130000, 0x130001) AM_DEVREADWRITE("oki2", okim6295_r, okim6295_w)
336272   AM_RANGE(0x140000, 0x140001) AM_READ(soundlatch_r)
337   AM_RANGE(0x1f0000, 0x1f1fff) AM_READ(SMH_BANK8)
338ADDRESS_MAP_END
339
340static ADDRESS_MAP_START( sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
341   AM_RANGE(0x000000, 0x00ffff) AM_WRITE(SMH_ROM)
342   AM_RANGE(0x100000, 0x100001) AM_DEVWRITE("ym1", ym2203_w)
343   AM_RANGE(0x110000, 0x110001) AM_DEVWRITE("ym2", ym2151_w)
344   AM_RANGE(0x120000, 0x120001) AM_DEVWRITE("oki1", okim6295_w)
345   AM_RANGE(0x130000, 0x130001) AM_DEVWRITE("oki2", okim6295_w)
346   AM_RANGE(0x1f0000, 0x1f1fff) AM_WRITE(SMH_BANK8)
273   AM_RANGE(0x1f0000, 0x1f1fff) AM_RAMBANK(8)
347274   AM_RANGE(0x1fec00, 0x1fec01) AM_WRITE(h6280_timer_w)
348275   AM_RANGE(0x1ff400, 0x1ff403) AM_WRITE(h6280_irq_status_w)
349276ADDRESS_MAP_END
350277
351static ADDRESS_MAP_START( sound_readmem_mutantf, ADDRESS_SPACE_PROGRAM, 8 )
352   AM_RANGE(0x000000, 0x00ffff) AM_READ(SMH_ROM)
353   AM_RANGE(0x100000, 0x100001) AM_READNOP
354   AM_RANGE(0x110000, 0x110001) AM_DEVREAD("ym", ym2151_r)
355   AM_RANGE(0x120000, 0x120001) AM_DEVREAD("oki1", okim6295_r)
356   AM_RANGE(0x130000, 0x130001) AM_DEVREAD("oki2", okim6295_r)
278static ADDRESS_MAP_START( sound_map_mutantf, ADDRESS_SPACE_PROGRAM, 8 )
279   AM_RANGE(0x000000, 0x00ffff) AM_ROM
280   AM_RANGE(0x100000, 0x100001) AM_READNOP AM_WRITENOP
281   AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
282   AM_RANGE(0x120000, 0x120001) AM_DEVREADWRITE("oki1", okim6295_r, okim6295_w)
283   AM_RANGE(0x130000, 0x130001) AM_DEVREADWRITE("oki2", okim6295_r, okim6295_w)
357284   AM_RANGE(0x140000, 0x140001) AM_READ(soundlatch_r)
358   AM_RANGE(0x1f0000, 0x1f1fff) AM_READ(SMH_BANK8)
359ADDRESS_MAP_END
360
361static ADDRESS_MAP_START( sound_writemem_mutantf, ADDRESS_SPACE_PROGRAM, 8 )
362   AM_RANGE(0x000000, 0x00ffff) AM_WRITE(SMH_ROM)
363   AM_RANGE(0x100000, 0x100001) AM_WRITENOP
364   AM_RANGE(0x110000, 0x110001) AM_DEVWRITE("ym", ym2151_w)
365   AM_RANGE(0x120000, 0x120001) AM_DEVWRITE("oki1", okim6295_w)
366   AM_RANGE(0x130000, 0x130001) AM_DEVWRITE("oki2", okim6295_w)
367   AM_RANGE(0x1f0000, 0x1f1fff) AM_WRITE(SMH_BANK8)
285   AM_RANGE(0x1f0000, 0x1f1fff) AM_RAMBANK(8)
368286   AM_RANGE(0x1fec00, 0x1fec01) AM_WRITE(h6280_timer_w)
369287   AM_RANGE(0x1ff400, 0x1ff403) AM_WRITE(h6280_irq_status_w)
370288ADDRESS_MAP_END
371289
372static ADDRESS_MAP_START( stoneage_s_readmem, ADDRESS_SPACE_PROGRAM, 8 )
373   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
374   AM_RANGE(0x8000, 0x87ff) AM_READ(SMH_RAM)
375   AM_RANGE(0x8800, 0x8801) AM_DEVREAD("ym", ym2151_r)
290static ADDRESS_MAP_START( stoneage_s_map, ADDRESS_SPACE_PROGRAM, 8 )
291   AM_RANGE(0x0000, 0x7fff) AM_ROM
292   AM_RANGE(0x8000, 0x87ff) AM_RAM
293   AM_RANGE(0x8800, 0x8801) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
376294   AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_r)
377   AM_RANGE(0x9800, 0x9800) AM_DEVREAD("oki1", okim6295_r)
295   AM_RANGE(0x9800, 0x9800) AM_DEVREADWRITE("oki1", okim6295_r, okim6295_w)
378296ADDRESS_MAP_END
379297
380static ADDRESS_MAP_START( stoneage_s_writemem, ADDRESS_SPACE_PROGRAM, 8 )
381   AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM)
382   AM_RANGE(0x8000, 0x87ff) AM_WRITE(SMH_RAM)
383   AM_RANGE(0x8800, 0x8801) AM_DEVWRITE("ym", ym2151_w)
384   AM_RANGE(0x9800, 0x9800) AM_DEVWRITE("oki1", okim6295_w)
385ADDRESS_MAP_END
386
387298/***********************************************************
388299              Basic INPUT PORTS, DIPs
389300***********************************************************/
r4679r4680
750661
751662static void sound_irq(const device_config *device, int state)
752663{
753   cpu_set_input_line(device->machine->cpu[1],1,state); /* IRQ 2 */
664   cputag_set_input_line(device->machine, "audiocpu", 1, state); /* IRQ 2 */
754665}
755666
756667static void sound_irq2(const device_config *device, int state)
757668{
758   cpu_set_input_line(device->machine->cpu[1],0,state);
669   cputag_set_input_line(device->machine, "audiocpu", 0, state);
759670}
760671
761672static WRITE8_DEVICE_HANDLER( sound_bankswitch_w )
r4679r4680
781692
782693   /* basic machine hardware */
783694   MDRV_CPU_ADD("maincpu", M68000, 12000000)
784   MDRV_CPU_PROGRAM_MAP(cninja_readmem,cninja_writemem)
695   MDRV_CPU_PROGRAM_MAP(cninja_map,0)
785696   MDRV_CPU_VBLANK_INT("screen", irq5_line_hold)
786697
787698   MDRV_CPU_ADD("audiocpu", H6280,32220000/8)   /* Accurate */
788   MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem)
699   MDRV_CPU_PROGRAM_MAP(sound_map,0)
789700
790701   MDRV_MACHINE_RESET(cninja)
791702
r4679r4680
829740
830741   /* basic machine hardware */
831742   MDRV_CPU_ADD("maincpu", M68000, 12000000)
832   MDRV_CPU_PROGRAM_MAP(cninja_readmem,cninja_writemem)
743   MDRV_CPU_PROGRAM_MAP(cninja_map,0)
833744   MDRV_CPU_VBLANK_INT("screen", irq5_line_hold)
834745
835746   MDRV_CPU_ADD("audiocpu", Z80, 3579545)
836   MDRV_CPU_PROGRAM_MAP(stoneage_s_readmem,stoneage_s_writemem)
747   MDRV_CPU_PROGRAM_MAP(stoneage_s_map,0)
837748
838749   MDRV_MACHINE_RESET(cninja)
839750
r4679r4680
874785
875786   /* basic machine hardware */
876787   MDRV_CPU_ADD("maincpu", M68000, 12000000)
877   MDRV_CPU_PROGRAM_MAP(edrandy_readmem,edrandy_writemem)
788   MDRV_CPU_PROGRAM_MAP(edrandy_map,0)
878789   MDRV_CPU_VBLANK_INT("screen", irq5_line_hold)
879790
880791   MDRV_CPU_ADD("audiocpu", H6280,32220000/8)   /* Accurate */
881   MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem)
792   MDRV_CPU_PROGRAM_MAP(sound_map,0)
882793
883794   MDRV_MACHINE_RESET(cninja)
884795
r4679r4680
922833
923834   /* basic machine hardware */
924835   MDRV_CPU_ADD("maincpu", M68000, 14000000)
925   MDRV_CPU_PROGRAM_MAP(robocop2_readmem,robocop2_writemem)
836   MDRV_CPU_PROGRAM_MAP(robocop2_map,0)
926837   MDRV_CPU_VBLANK_INT("screen", irq5_line_hold)
927838
928839   MDRV_CPU_ADD("audiocpu", H6280,32220000/8)   /* Accurate */
929   MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem)
840   MDRV_CPU_PROGRAM_MAP(sound_map,0)
930841
931842   MDRV_MACHINE_RESET(cninja)
932843
r4679r4680
973884
974885   /* basic machine hardware */
975886   MDRV_CPU_ADD("maincpu", M68000, 14000000)
976   MDRV_CPU_PROGRAM_MAP(mutantf_readmem,mutantf_writemem)
887   MDRV_CPU_PROGRAM_MAP(mutantf_map,0)
977888   MDRV_CPU_VBLANK_INT("screen", irq6_line_hold)
978889
979890   MDRV_CPU_ADD("audiocpu", H6280,32220000/8)
980   MDRV_CPU_PROGRAM_MAP(sound_readmem_mutantf,sound_writemem_mutantf)
891   MDRV_CPU_PROGRAM_MAP(sound_map_mutantf,0)
981892
982893   /* video hardware */
983894   MDRV_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM )
r4679r4680
17701681
17711682static DRIVER_INIT( cninja )
17721683{
1773   memory_install_write16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1bc0a8, 0x1bc0a9, 0, 0, cninja_sound_w);
1684   memory_install_write16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1bc0a8, 0x1bc0a9, 0, 0, cninja_sound_w);
17741685   cninja_patch(machine);
17751686}
17761687
17771688static DRIVER_INIT( stoneage )
17781689{
1779   memory_install_write16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1bc0a8, 0x1bc0a9, 0, 0, stoneage_sound_w);
1690   memory_install_write16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1bc0a8, 0x1bc0a9, 0, 0, stoneage_sound_w);
17801691}
17811692
17821693static DRIVER_INIT( mutantf )
src/mame/drivers/pacland.c
r4679r4680
194194static WRITE8_HANDLER( pacland_subreset_w )
195195{
196196   int bit = !BIT(offset,11);
197   cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_RESET, bit ? CLEAR_LINE : ASSERT_LINE);
197   cputag_set_input_line(space->machine, "mcu", INPUT_LINE_RESET, bit ? CLEAR_LINE : ASSERT_LINE);
198198}
199199
200200static WRITE8_HANDLER( pacland_flipscreen_w )
r4679r4680
212212   int port = offset & 2;
213213   static const char *const portnames[] = { "DSWA", "DSWB", "IN0", "IN1" };
214214   int r = (input_port_read(space->machine, portnames[port]) << shift) & 0xf0;
215   r |= (input_port_read(space->machine, portnames[port+1]) >> (4-shift)) & 0x0f;
215   r |= (input_port_read(space->machine, portnames[port+1]) >> (4 - shift)) & 0x0f;
216216
217217   return r;
218218}
r4679r4680
220220static WRITE8_HANDLER( pacland_coin_w )
221221{
222222   coin_lockout_global_w(data & 1);
223   coin_counter_w(0,~data & 2);
224   coin_counter_w(1,~data & 4);
223   coin_counter_w(0, ~data & 2);
224   coin_counter_w(1, ~data & 4);
225225}
226226
227227static WRITE8_HANDLER( pacland_led_w )
228228{
229   set_led_status(0,data & 0x08);
230   set_led_status(1,data & 0x10);
229   set_led_status(0, data & 0x08);
230   set_led_status(1, data & 0x10);
231231}
232232
233233static WRITE8_HANDLER( pacland_irq_1_ctrl_w )
234234{
235   int bit = !BIT(offset,11);
236   cpu_interrupt_enable(space->machine->cpu[0],bit);
235   int bit = !BIT(offset, 11);
236   cpu_interrupt_enable(cputag_get_cpu(space->machine, "maincpu"), bit);
237237   if (!bit)
238      cpu_set_input_line(space->machine->cpu[0], 0, CLEAR_LINE);
238      cputag_set_input_line(space->machine, "maincpu", 0, CLEAR_LINE);
239239}
240240
241241static WRITE8_HANDLER( pacland_irq_2_ctrl_w )
242242{
243   int bit = !BIT(offset,13);
244   cpu_interrupt_enable(space->machine->cpu[1],bit);
243   int bit = !BIT(offset, 13);
244   cpu_interrupt_enable(cputag_get_cpu(space->machine, "mcu"), bit);
245245   if (!bit)
246      cpu_set_input_line(space->machine->cpu[1], 0, CLEAR_LINE);
246      cputag_set_input_line(space->machine, "mcu", 0, CLEAR_LINE);
247247}
248248
249249
r4679r4680
255255   AM_RANGE(0x3800, 0x3801) AM_WRITE(pacland_scroll0_w)
256256   AM_RANGE(0x3a00, 0x3a01) AM_WRITE(pacland_scroll1_w)
257257   AM_RANGE(0x3c00, 0x3c00) AM_WRITE(pacland_bankswitch_w)
258   AM_RANGE(0x4000, 0x5fff) AM_READ(SMH_BANK1)
258   AM_RANGE(0x4000, 0x5fff) AM_READ(SMH_BANK(1))
259259   AM_RANGE(0x6800, 0x6bff) AM_DEVREADWRITE("namco", namcos1_cus30_r, namcos1_cus30_w)      /* PSG device, shared RAM */
260260   AM_RANGE(0x7000, 0x7fff) AM_WRITE(pacland_irq_1_ctrl_w)
261261   AM_RANGE(0x7800, 0x7fff) AM_READ(watchdog_reset_r)
src/mame/drivers/psikyo4.c
r4679r4680
191191         UINT32 length, size;
192192         UINT8 *dat;
193193
194         dat = eeprom_get_data_pointer(&length, &size);
194         dat = (UINT8 *)eeprom_get_data_pointer(&length, &size);
195195         memset(dat, 0, length * size);
196196      }
197197   }
r4679r4680
391391      set_hotgmck_pcm_bank(space->machine, 1);
392392}
393393
394static ADDRESS_MAP_START( ps4_readmem, ADDRESS_SPACE_PROGRAM, 32 )
395   AM_RANGE(0x00000000, 0x000fffff) AM_READ(SMH_ROM)   // program ROM (1 meg)
396   AM_RANGE(0x02000000, 0x021fffff) AM_READ(SMH_BANK1) // data ROM
397   AM_RANGE(0x03000000, 0x030037ff) AM_READ(SMH_RAM)
398   AM_RANGE(0x03003fe0, 0x03003fe3) AM_READ(ps4_eeprom_r)
394static ADDRESS_MAP_START( ps4_map, ADDRESS_SPACE_PROGRAM, 32 )
395   AM_RANGE(0x00000000, 0x000fffff) AM_ROM      // program ROM (1 meg)
396   AM_RANGE(0x02000000, 0x021fffff) AM_ROMBANK(1) // data ROM
397   AM_RANGE(0x03000000, 0x030037ff) AM_RAM AM_BASE(&spriteram32) AM_SIZE(&spriteram_size)
398   AM_RANGE(0x03003fe0, 0x03003fe3) AM_READWRITE(ps4_eeprom_r,ps4_eeprom_w)
399399   AM_RANGE(0x03003fe4, 0x03003fe7) AM_READNOP // also writes to this address - might be vblank?
400//  AM_RANGE(0x03003fe8, 0x03003fef) AM_READ(SMH_RAM) // vid regs?
401   AM_RANGE(0x03004000, 0x03005fff) AM_READ(SMH_RAM)
400//  AM_RANGE(0x03003fe4, 0x03003fe7) AM_WRITENOP // might be vblank?
401   AM_RANGE(0x03003fe4, 0x03003fef) AM_RAM_WRITE(ps4_vidregs_w) AM_BASE(&psikyo4_vidregs) // vid regs?
402   AM_RANGE(0x03003ff0, 0x03003ff3) AM_WRITE(ps4_screen1_brt_w) // screen 1 brightness
403   AM_RANGE(0x03003ff4, 0x03003ff7) AM_WRITE(ps4_bgpen_1_dword_w) AM_BASE(&bgpen_1) // screen 1 clear colour
404   AM_RANGE(0x03003ff8, 0x03003ffb) AM_WRITE(ps4_screen2_brt_w) // screen 2 brightness
405   AM_RANGE(0x03003ffc, 0x03003fff) AM_WRITE(ps4_bgpen_2_dword_w) AM_BASE(&bgpen_2) // screen 2 clear colour
406   AM_RANGE(0x03004000, 0x03005fff) AM_RAM_WRITE(ps4_paletteram32_RRRRRRRRGGGGGGGGBBBBBBBBxxxxxxxx_dword_w) AM_BASE(&paletteram32) // palette
402407   AM_RANGE(0x05000000, 0x05000003) AM_DEVREAD8("ymf", ymf278b_r, 0xffffffff) // read YMF status
408   AM_RANGE(0x05000000, 0x05000007) AM_DEVWRITE8("ymf", ymf278b_w, 0xffffffff)
403409   AM_RANGE(0x05800000, 0x05800003) AM_READ_PORT("P1_P2")
404410   AM_RANGE(0x05800004, 0x05800007) AM_READ_PORT("P3_P4")
405   AM_RANGE(0x06000000, 0x060fffff) AM_READ(SMH_RAM)   // main RAM (1 meg)
411   AM_RANGE(0x05800008, 0x0580000b) AM_WRITEONLY AM_BASE(&ps4_io_select) // Used by Mahjong games to choose input (also maps normal loderndf inputs to offsets)
406412
413   AM_RANGE(0x06000000, 0x060fffff) AM_RAM   AM_BASE(&ps4_ram) // main RAM (1 meg)
414
407415#if ROMTEST
408416   AM_RANGE(0x05000004, 0x05000007) AM_READ(ps4_sample_r) // data for rom tests (Used to verify Sample rom)
409   AM_RANGE(0x03006000, 0x03007fff) AM_READ(SMH_BANK2) // data for rom tests (gfx), data is controlled by vidreg
417   AM_RANGE(0x03006000, 0x03007fff) AM_ROMBANK(2) // data for rom tests (gfx), data is controlled by vidreg
410418#endif
411419ADDRESS_MAP_END
412420
413static ADDRESS_MAP_START( ps4_writemem, ADDRESS_SPACE_PROGRAM, 32 )
414   AM_RANGE(0x00000000, 0x000fffff) AM_WRITE(SMH_ROM)   // program ROM (1 meg)
415   AM_RANGE(0x03000000, 0x030037ff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram32) AM_SIZE(&spriteram_size)
416   AM_RANGE(0x03003fe0, 0x03003fe3) AM_WRITE(ps4_eeprom_w)
417//  AM_RANGE(0x03003fe4, 0x03003fe7) AM_WRITENOP // might be vblank?
418   AM_RANGE(0x03003fe4, 0x03003fef) AM_WRITE(ps4_vidregs_w) AM_BASE(&psikyo4_vidregs) // vid regs?
419   AM_RANGE(0x03003ff0, 0x03003ff3) AM_WRITE(ps4_screen1_brt_w) // screen 1 brightness
420   AM_RANGE(0x03003ff4, 0x03003ff7) AM_WRITE(ps4_bgpen_1_dword_w) AM_BASE(&bgpen_1) // screen 1 clear colour
421   AM_RANGE(0x03003ff8, 0x03003ffb) AM_WRITE(ps4_screen2_brt_w) // screen 2 brightness
422   AM_RANGE(0x03003ffc, 0x03003fff) AM_WRITE(ps4_bgpen_2_dword_w) AM_BASE(&bgpen_2) // screen 2 clear colour
423   AM_RANGE(0x03004000, 0x03005fff) AM_WRITE(ps4_paletteram32_RRRRRRRRGGGGGGGGBBBBBBBBxxxxxxxx_dword_w) AM_BASE(&paletteram32) // palette
424   AM_RANGE(0x05000000, 0x05000007) AM_DEVWRITE8("ymf", ymf278b_w, 0xffffffff)
425   AM_RANGE(0x05800008, 0x0580000b) AM_WRITE(SMH_RAM) AM_BASE(&ps4_io_select) // Used by Mahjong games to choose input (also maps normal loderndf inputs to offsets)
426   AM_RANGE(0x06000000, 0x060fffff) AM_WRITE(SMH_RAM) AM_BASE(&ps4_ram)   // work RAM
427ADDRESS_MAP_END
428
429421static void irqhandler(const device_config *device, int linestate)
430422{
431423   if (linestate)
432      cpu_set_input_line(device->machine->cpu[0], 12, ASSERT_LINE);
424      cputag_set_input_line(device->machine, "maincpu", 12, ASSERT_LINE);
433425   else
434      cpu_set_input_line(device->machine->cpu[0], 12, CLEAR_LINE);
426      cputag_set_input_line(device->machine, "maincpu", 12, CLEAR_LINE);
435427}
436428
437429static const ymf278b_interface ymf278b_config =
r4679r4680
442434static MACHINE_DRIVER_START( ps4big )
443435   /* basic machine hardware */
444436   MDRV_CPU_ADD("maincpu", SH2, MASTER_CLOCK/2)
445   MDRV_CPU_PROGRAM_MAP(ps4_readmem,ps4_writemem)
437   MDRV_CPU_PROGRAM_MAP(ps4_map,0)
446438   MDRV_CPU_VBLANK_INT("lscreen", psikyosh_interrupt)
447439
448440   MDRV_NVRAM_HANDLER(93C56)
r4679r4680
10591051   set_hotgmck_pcm_bank(machine, 0);
10601052   set_hotgmck_pcm_bank(machine, 1);
10611053
1062   memory_install_write32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x5800008, 0x580000b, 0, 0, hotgmck_pcm_bank_w );
1054   memory_install_write32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x5800008, 0x580000b, 0, 0, hotgmck_pcm_bank_w );
10631055   state_save_register_postload(machine, hotgmck_pcm_bank_postload, (void *)0);
10641056   state_save_register_postload(machine, hotgmck_pcm_bank_postload, (void *)1);
10651057}
r4679r4680
10671059static DRIVER_INIT( hotgmck )
10681060{
10691061   UINT8 *RAM = memory_region(machine, "maincpu");
1070   memory_set_bankptr(machine, 1,&RAM[0x100000]);
1062   memory_set_bankptr(machine, 1, &RAM[0x100000]);
10711063   install_hotgmck_pcm_bank(machine);   // Banked PCM ROM
10721064}
10731065
10741066static DRIVER_INIT( loderndf )
10751067{
1076   memory_install_read32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x6000020, 0x6000023, 0, 0, loderndf_speedup_r );
1068   memory_install_read32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x6000020, 0x6000023, 0, 0, loderndf_speedup_r );
10771069}
10781070
10791071static DRIVER_INIT( loderdfa )
10801072{
1081   memory_install_read32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x6000020, 0x6000023, 0, 0, loderdfa_speedup_r );
1073   memory_install_read32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x6000020, 0x6000023, 0, 0, loderdfa_speedup_r );
10821074}
10831075
10841076static DRIVER_INIT( hotdebut )
10851077{
1086   memory_install_read32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x600001c, 0x600001f, 0, 0, hotdebut_speedup_r );
1078   memory_install_read32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x600001c, 0x600001f, 0, 0, hotdebut_speedup_r );
10871079}
10881080
10891081
src/mame/drivers/wardner.c
r4679r4680
141141      const address_space *mainspace;
142142      UINT8 *RAM = memory_region(space->machine, "maincpu");
143143
144      mainspace = cpu_get_address_space(space->machine->cpu[0], ADDRESS_SPACE_PROGRAM);
144      mainspace = cputag_get_address_space(space->machine, "maincpu", ADDRESS_SPACE_PROGRAM);
145145      wardner_membank = data;
146146
147147      if (data)
148148      {
149         memory_install_read8_handler(mainspace, 0x8000, 0xffff, 0, 0, SMH_BANK1);
149         memory_install_read8_handler(mainspace, 0x8000, 0xffff, 0, 0, (read8_space_func)SMH_BANK(1));
150150         switch (data)
151151         {
152152            case 2:  bankaddress = 0x10000; break;
r4679r4680
163163      else
164164      {
165165         memory_install_read8_handler(mainspace, 0x8000, 0x8fff, 0, 0, wardner_sprite_r);
166         memory_install_read8_handler(mainspace, 0xa000, 0xadff, 0, 0, SMH_BANK4);
167         memory_install_read8_handler(mainspace, 0xae00, 0xafff, 0, 0, SMH_BANK2);
168         memory_install_read8_handler(mainspace, 0xc000, 0xc7ff, 0, 0, SMH_BANK3);
166         memory_install_read8_handler(mainspace, 0xa000, 0xadff, 0, 0, (read8_space_func)SMH_BANK(4));
167         memory_install_read8_handler(mainspace, 0xae00, 0xafff, 0, 0, (read8_space_func)SMH_BANK(2));
168         memory_install_read8_handler(mainspace, 0xc000, 0xc7ff, 0, 0, (read8_space_func)SMH_BANK(3));
169169         memory_set_bankptr(space->machine, 1, &RAM[0x0000]);
170170         memory_set_bankptr(space->machine, 2, rambase_ae00);
171171         memory_set_bankptr(space->machine, 3, rambase_c000);
r4679r4680
176176
177177STATE_POSTLOAD( wardner_restore_bank )
178178{
179   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
179   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
180180
181181   wardner_ramrom_bank_sw(space,0,1);   /* Dummy value to ensure restoration */
182182   wardner_ramrom_bank_sw(space,0,wardner_membank);
r4679r4680
189189   AM_RANGE(0x0000, 0x6fff) AM_ROM
190190   AM_RANGE(0x7000, 0x7fff) AM_RAM
191191
192   AM_RANGE(0x8000, 0xffff) AM_READ(SMH_BANK1) /* Overlapped RAM/Banked ROM - See below */
192   AM_RANGE(0x8000, 0xffff) AM_READ(SMH_BANK(1)) /* Overlapped RAM/Banked ROM - See below */
193193
194194   AM_RANGE(0x8000, 0x8fff) AM_WRITE(wardner_sprite_w) AM_BASE((void *)&spriteram16) AM_SIZE(&spriteram_size)
195195   AM_RANGE(0x9000, 0x9fff) AM_ROM
r4679r4680
417417/* handler called by the 3812 emulator when the internal timers cause an IRQ */
418418static void irqhandler(const device_config *device, int linestate)
419419{
420   cpu_set_input_line(device->machine->cpu[1],0,linestate);
420   cputag_set_input_line(device->machine, "audiocpu", 0, linestate);
421421}
422422
423423static const ym3812_interface ym3812_config =
src/mame/drivers/rollrace.c
r4679r4680
11/***************************************************************************
22
3Fighting Roller (c) 1983 Kaneko
4
35Issues:
46-sound effects missing
7
58***************************************************************************/
69
710#include "driver.h"
r4679r4680
3437/*  logerror("d900: %02X\n",data);*/
3538}
3639
37static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 )
38   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
39   AM_RANGE(0x8000, 0x9fff) AM_READ(SMH_ROM) /* only rollace2 */
40   AM_RANGE(0xc000, 0xcfff) AM_READ(SMH_RAM)
41   AM_RANGE(0xd900, 0xd900) AM_READ(ra_fake_d800_r) /* protection ??*/
42   AM_RANGE(0xe000, 0xe3ff) AM_READ(SMH_RAM)
43   AM_RANGE(0xe400, 0xe47f) AM_READ(SMH_RAM)
44   AM_RANGE(0xec00, 0xec0f) AM_READNOP /* Analog sound effects ??*/
45   AM_RANGE(0xf000, 0xf0ff) AM_READ(SMH_RAM)
40static ADDRESS_MAP_START( rollrace_map, ADDRESS_SPACE_PROGRAM, 8 )
41   AM_RANGE(0x0000, 0x7fff) AM_ROM
42   AM_RANGE(0x8000, 0x9fff) AM_ROM          /* only rollace2 */
43   AM_RANGE(0xc000, 0xcfff) AM_RAM
44   AM_RANGE(0xd806, 0xd806) AM_READNOP /* looks like a watchdog, bit4 checked*/
45   AM_RANGE(0xd900, 0xd900) AM_READWRITE(ra_fake_d800_r,ra_fake_d800_w) /* protection ??*/
46   AM_RANGE(0xe000, 0xe3ff) AM_RAM AM_BASE(&videoram) AM_SIZE(&videoram_size)
47   AM_RANGE(0xe400, 0xe47f) AM_RAM AM_BASE(&colorram)
48   AM_RANGE(0xe800, 0xe800) AM_WRITE(soundlatch_w)
49   AM_RANGE(0xec00, 0xec0f) AM_NOP /* Analog sound effects ?? ec00 sound enable ?*/
50   AM_RANGE(0xf000, 0xf0ff) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
51   AM_RANGE(0xf400, 0xf400) AM_WRITE(rollrace_backgroundcolor_w)
4652   AM_RANGE(0xf800, 0xf800) AM_READ_PORT("P1")
47   AM_RANGE(0xf801, 0xf801) AM_READ_PORT("P2")
53   AM_RANGE(0xf801, 0xf801) AM_READ_PORT("P2") AM_WRITE(rollrace_bkgpen_w)
54   AM_RANGE(0xf802, 0xf802) AM_READ_PORT("SYSTEM") AM_WRITE(rollrace_backgroundpage_w)
55   AM_RANGE(0xf803, 0xf803) AM_WRITE(rollrace_flipy_w)
4856   AM_RANGE(0xf804, 0xf804) AM_READ_PORT("DSW1")
49   AM_RANGE(0xf802, 0xf802) AM_READ_PORT("SYSTEM")
5057   AM_RANGE(0xf805, 0xf805) AM_READ_PORT("DSW2")
51   AM_RANGE(0xd806, 0xd806) AM_READNOP /* looks like a watchdog, bit4 checked*/
52ADDRESS_MAP_END
53
54static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 )
55   AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM)
56   AM_RANGE(0x8000, 0x9fff) AM_WRITE(SMH_ROM)
57   AM_RANGE(0xc000, 0xcfff) AM_WRITE(SMH_RAM)
58   AM_RANGE(0xd900, 0xd900) AM_WRITE(ra_fake_d800_w) /* protection ?? */
59   AM_RANGE(0xe000, 0xe3ff) AM_WRITE(SMH_RAM) AM_BASE(&videoram) AM_SIZE(&videoram_size)
60   AM_RANGE(0xe400, 0xe47f) AM_WRITE(SMH_RAM) AM_BASE(&colorram)
61   AM_RANGE(0xe800, 0xe800) AM_WRITE(soundlatch_w)
62   AM_RANGE(0xec00, 0xec0f) AM_WRITENOP /* Analog sound effects ?? ec00 sound enable ?*/
63   AM_RANGE(0xf000, 0xf0ff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
6458   AM_RANGE(0xfc00, 0xfc00) AM_WRITE(rollrace_flipx_w)
6559   AM_RANGE(0xfc01, 0xfc01) AM_WRITE(interrupt_enable_w)
6660   AM_RANGE(0xfc02, 0xfc03) AM_WRITENOP /* coin counters */
6761   AM_RANGE(0xfc04, 0xfc05) AM_WRITE(rollrace_charbank_w)
6862   AM_RANGE(0xfc06, 0xfc06) AM_WRITE(rollrace_spritebank_w)
69   AM_RANGE(0xf400, 0xf400) AM_WRITE(rollrace_backgroundcolor_w)
70   AM_RANGE(0xf801, 0xf801) AM_WRITE(rollrace_bkgpen_w)
71   AM_RANGE(0xf802, 0xf802) AM_WRITE(rollrace_backgroundpage_w)
72   AM_RANGE(0xf803, 0xf803) AM_WRITE(rollrace_flipy_w)
7363ADDRESS_MAP_END
7464
75static ADDRESS_MAP_START( readmem_snd, ADDRESS_SPACE_PROGRAM, 8 )
76      AM_RANGE(0x0000, 0x0fff) AM_READ(SMH_ROM)
77      AM_RANGE(0x2000, 0x2fff) AM_READ(SMH_RAM)
78      AM_RANGE(0x3000, 0x3000) AM_READ(soundlatch_r)
79ADDRESS_MAP_END
8065
81static ADDRESS_MAP_START( writemem_snd, ADDRESS_SPACE_PROGRAM, 8 )
82      AM_RANGE(0x0000, 0x0fff) AM_WRITE(SMH_ROM)
83      AM_RANGE(0x2000, 0x2fff) AM_WRITE(SMH_RAM)
84      AM_RANGE(0x3000, 0x3000) AM_WRITE(interrupt_enable_w)
85      AM_RANGE(0x4000, 0x4001) AM_DEVWRITE("ay1", ay8910_address_data_w)
86      AM_RANGE(0x5000, 0x5001) AM_DEVWRITE("ay2", ay8910_address_data_w)
87      AM_RANGE(0x6000, 0x6001) AM_DEVWRITE("ay3", ay8910_address_data_w)
66static ADDRESS_MAP_START( rollrace_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
67   AM_RANGE(0x0000, 0x0fff) AM_ROM
68   AM_RANGE(0x2000, 0x2fff) AM_RAM
69   AM_RANGE(0x3000, 0x3000) AM_READWRITE(soundlatch_r,interrupt_enable_w)
70   AM_RANGE(0x4000, 0x4001) AM_DEVWRITE("ay1", ay8910_address_data_w)
71   AM_RANGE(0x5000, 0x5001) AM_DEVWRITE("ay2", ay8910_address_data_w)
72   AM_RANGE(0x6000, 0x6001) AM_DEVWRITE("ay3", ay8910_address_data_w)
8873ADDRESS_MAP_END
8974
9075
r4679r4680
180165static const gfx_layout charlayout =
181166{
182167   8,8,   /* 8*8 characters */
183      256,   /* 256 characters */
184      3,     /* 3 bits per pixel */
185      { 0,1024*8*8, 2*1024*8*8 }, /* the two bitplanes are separated */
168   256,   /* 256 characters */
169   3,     /* 3 bits per pixel */
170   { 0,1024*8*8, 2*1024*8*8 }, /* the two bitplanes are separated */
186171   { 0,1,2,3,4,5,6,7 },
187172   { 7*8, 6*8, 5*8, 4*8, 3*8, 2*8, 1*8, 0*8 },
188
189
190173   8*8   /* every char takes 8 consecutive bytes */
191174};
192175static const gfx_layout charlayout2 =
193176{
194177   8,8,   /* 8*8 characters */
195      1024,   /* 1024 characters */
196      3,     /* 3 bits per pixel */
197      { 0,1024*8*8, 2*1024*8*8 }, /* the two bitplanes are separated */
178   1024,   /* 1024 characters */
179   3,     /* 3 bits per pixel */
180   { 0,1024*8*8, 2*1024*8*8 }, /* the two bitplanes are separated */
198181   { 0, 1, 2, 3, 4, 5, 6, 7 },
199182   { 7*8, 6*8, 5*8, 4*8, 3*8, 2*8, 1*8, 0*8 },
200
201183//  { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
202
203184   8*8   /* every char takes 8 consecutive bytes */
204185};
205186
206187static const gfx_layout spritelayout =
207188{
208      32,32,  /* 32*32 sprites */
209      64,   /* 64 sprites */
189   32,32,  /* 32*32 sprites */
190   64,   /* 64 sprites */
210191   3,     /* 3 bits per pixel */
211      { 0x4000*8, 0x2000*8, 0 }, /* the three bitplanes are separated */
192   { 0x4000*8, 0x2000*8, 0 }, /* the three bitplanes are separated */
212193   { 0, 1, 2, 3, 4, 5, 6, 7,
213194       8*8+0, 8*8+1, 8*8+2, 8*8+3, 8*8+4, 8*8+5, 8*8+6, 8*8+7,16*8,16*8+1,16*8+2,16*8+3,16*8+4,16*8+5,16*8+6,16*8+7,24*8,24*8+1,24*8+2,24*8+3,24*8+4,24*8+5,24*8+6,24*8+7},
214195
215196   { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8,
216197        32*8, 33*8, 34*8, 35*8, 36*8, 37*8, 38*8, 39*8,
217198        64*8,65*8,66*8,67*8,68*8,69*8,70*8,71*8, 96*8,97*8,98*8,99*8,100*8,101*8,102*8,103*8 },
218
219      32*32    /* every sprite takes 128 consecutive bytes */
199   32*32    /* every sprite takes 128 consecutive bytes */
220200};
221201
222202static GFXDECODE_START( rollrace )
223      GFXDECODE_ENTRY( "gfx1", 0x0000, charlayout,   0,   32 ) /* foreground */
224      GFXDECODE_ENTRY( "gfx1", 0x0800, charlayout,   0,   32 )
225      GFXDECODE_ENTRY( "gfx1", 0x1000, charlayout,   0,   32 )
226      GFXDECODE_ENTRY( "gfx1", 0x1800, charlayout,   0,   32 )
227      GFXDECODE_ENTRY( "gfx2", 0x0000, charlayout2,   0,    32 ) /* for the road */
228      GFXDECODE_ENTRY( "gfx3", 0x0000, spritelayout,   0,    32 ) /* sprites */
229      GFXDECODE_ENTRY( "gfx4", 0x0000, spritelayout,   0,   32 )
230      GFXDECODE_ENTRY( "gfx5", 0x0000, spritelayout,   0,   32 )
231
203   GFXDECODE_ENTRY( "gfx1", 0x0000, charlayout,   0,   32 ) /* foreground */
204   GFXDECODE_ENTRY( "gfx1", 0x0800, charlayout,   0,   32 )
205   GFXDECODE_ENTRY( "gfx1", 0x1000, charlayout,   0,   32 )
206   GFXDECODE_ENTRY( "gfx1", 0x1800, charlayout,   0,   32 )
207   GFXDECODE_ENTRY( "gfx2", 0x0000, charlayout2,   0,    32 ) /* for the road */
208   GFXDECODE_ENTRY( "gfx3", 0x0000, spritelayout,   0,    32 ) /* sprites */
209   GFXDECODE_ENTRY( "gfx4", 0x0000, spritelayout,   0,   32 )
210   GFXDECODE_ENTRY( "gfx5", 0x0000, spritelayout,   0,   32 )
232211GFXDECODE_END
233212
234213static MACHINE_DRIVER_START( rollrace )
235214
236215   /* basic machine hardware */
237216   MDRV_CPU_ADD("maincpu", Z80,XTAL_24MHz/8) /* verified on pcb */
238   MDRV_CPU_PROGRAM_MAP(readmem,writemem)
217   MDRV_CPU_PROGRAM_MAP(rollrace_map,0)
239218   MDRV_CPU_VBLANK_INT("screen", nmi_line_pulse)
240219
241220   MDRV_CPU_ADD("audiocpu", Z80,XTAL_24MHz/16) /* verified on pcb */
242   MDRV_CPU_PROGRAM_MAP(readmem_snd,writemem_snd)
221   MDRV_CPU_PROGRAM_MAP(rollrace_sound_map,0)
243222   MDRV_CPU_VBLANK_INT_HACK(nmi_line_pulse,4)
244223
245224   /* video hardware */
r4679r4680
427406   ROM_LOAD( "8.6f", 0x0000, 0x1000, CRC(6ec3c545) SHA1(1a2477b9e1563734195b0743f5dbbb005e06022e) )
428407ROM_END
429408
409
430410GAME( 1983, fightrol, 0,        rollrace, rollrace, 0, ROT270, "[Kaneko] (Taito license)", "Fighting Roller", GAME_IMPERFECT_SOUND )
431411GAME( 1983, rollace,  fightrol, rollrace, rollrace, 0, ROT270, "[Kaneko] (Williams license)", "Roller Aces (set 1)", GAME_IMPERFECT_SOUND )
432412GAME( 1983, rollace2, fightrol, rollace2, rollrace, 0, ROT90,  "[Kaneko] (Williams license)", "Roller Aces (set 2)", GAME_IMPERFECT_SOUND )
src/mame/drivers/mirage.c
r4679r4680
33TODO:
44-eeprom emulation? Software settings all changes if you toggle the "flip screen" dip-switch
55-priorities.
6-sound banking is known to be imperfect.
67
78Notes:To enter into Test Mode you need to keep pressed the Mahjong A button at start-up.
89*/
r4679r4680
174175   }
175176}
176177
177static ADDRESS_MAP_START( mirage_readmem, ADDRESS_SPACE_PROGRAM, 16 )
178   AM_RANGE(0x000000, 0x07ffff) AM_READ(SMH_ROM)
179
180   AM_RANGE(0x100000, 0x101fff) AM_READ(SMH_RAM)
181   AM_RANGE(0x102000, 0x103fff) AM_READ(SMH_RAM)
182
183   AM_RANGE(0x110000, 0x110bff) AM_READ(SMH_RAM)
184   AM_RANGE(0x112000, 0x112bff) AM_READ(SMH_RAM)
185
186   AM_RANGE(0x120000, 0x1207ff) AM_READ(SMH_RAM)
187
188   AM_RANGE(0x130000, 0x1307ff) AM_READ(SMH_RAM)
189
190//  AM_RANGE(0x140006, 0x140007) AM_READ(random_readers)
191
192//  AM_RANGE(0x150006, 0x150007) AM_READNOP
193
194   AM_RANGE(0x16c006, 0x16c007) AM_READ(mirage_input_r)
195
196   AM_RANGE(0x16e002, 0x16e003) AM_READ_PORT("SYSTEM_IN")
197
198   AM_RANGE(0x170000, 0x173fff) AM_READ(SMH_RAM)
199ADDRESS_MAP_END
200
201static ADDRESS_MAP_START( mirage_writemem, ADDRESS_SPACE_PROGRAM, 16 )
202   AM_RANGE(0x000000, 0x07ffff) AM_WRITE(SMH_ROM)
203
178static ADDRESS_MAP_START( mirage_map, ADDRESS_SPACE_PROGRAM, 16 )
179   AM_RANGE(0x000000, 0x07ffff) AM_ROM
204180   /* tilemaps */
205   AM_RANGE(0x100000, 0x101fff) AM_WRITE(deco16_pf1_data_w) AM_BASE(&deco16_pf1_data) // 0x100000 - 0x101fff tested
206   AM_RANGE(0x102000, 0x103fff) AM_WRITE(deco16_pf2_data_w) AM_BASE(&deco16_pf2_data) // 0x102000 - 0x102fff tested
181   AM_RANGE(0x100000, 0x101fff) AM_RAM_WRITE(deco16_pf1_data_w) AM_BASE(&deco16_pf1_data) // 0x100000 - 0x101fff tested
182   AM_RANGE(0x102000, 0x103fff) AM_RAM_WRITE(deco16_pf2_data_w) AM_BASE(&deco16_pf2_data) // 0x102000 - 0x102fff tested
207183   /* linescroll */
208   AM_RANGE(0x110000, 0x110bff) AM_WRITE(SMH_RAM) AM_BASE(&deco16_pf1_rowscroll)
209   AM_RANGE(0x112000, 0x112bff) AM_WRITE(SMH_RAM) AM_BASE(&deco16_pf2_rowscroll)
210
211   AM_RANGE(0x120000, 0x1207ff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16)
212
213   AM_RANGE(0x130000, 0x1307ff) AM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE(&paletteram16)
214
184   AM_RANGE(0x110000, 0x110bff) AM_RAM AM_BASE(&deco16_pf1_rowscroll)
185   AM_RANGE(0x112000, 0x112bff) AM_RAM AM_BASE(&deco16_pf2_rowscroll)
186   AM_RANGE(0x120000, 0x1207ff) AM_RAM AM_BASE(&spriteram16)
187   AM_RANGE(0x130000, 0x1307ff) AM_RAM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE(&paletteram16)
215188   AM_RANGE(0x140000, 0x14000f) AM_DEVREADWRITE8("oki2", okim6295_r, okim6295_w, 0x00ff)
216189   AM_RANGE(0x150000, 0x15000f) AM_DEVREADWRITE8("oki1", okim6295_r, okim6295_w, 0x00ff)
217
190//  AM_RANGE(0x140006, 0x140007) AM_READ(random_readers)
191//  AM_RANGE(0x150006, 0x150007) AM_READNOP
218192   AM_RANGE(0x160000, 0x160001) AM_WRITENOP
219
220   AM_RANGE(0x168000, 0x16800f) AM_WRITE(SMH_RAM) AM_BASE(&deco16_pf12_control)
221
193   AM_RANGE(0x168000, 0x16800f) AM_WRITEONLY AM_BASE(&deco16_pf12_control)
222194   AM_RANGE(0x16a000, 0x16a001) AM_WRITENOP
223
224195   AM_RANGE(0x16c000, 0x16c001) AM_WRITE(okim1_rombank_w)
225196   AM_RANGE(0x16c002, 0x16c003) AM_WRITE(okim0_rombank_w)
226197   AM_RANGE(0x16c004, 0x16c005) AM_WRITE(mirage_mux_w)
227
198   AM_RANGE(0x16c006, 0x16c007) AM_READ(mirage_input_r)
228199   AM_RANGE(0x16e000, 0x16e001) AM_WRITENOP
229
230   AM_RANGE(0x170000, 0x173fff) AM_WRITE(SMH_RAM)
200   AM_RANGE(0x16e002, 0x16e003) AM_READ_PORT("SYSTEM_IN")
201   AM_RANGE(0x170000, 0x173fff) AM_RAM
231202ADDRESS_MAP_END
232203
233204
234
235205static INPUT_PORTS_START( mirage )
236206   PORT_START("SYSTEM_IN")
237207   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE1 )
r4679r4680
357327
358328   /* basic machine hardware */
359329   MDRV_CPU_ADD("maincpu", M68000, 28000000/2)
360   MDRV_CPU_PROGRAM_MAP(mirage_readmem,mirage_writemem)
330   MDRV_CPU_PROGRAM_MAP(mirage_map,0)
361331   MDRV_CPU_VBLANK_INT("screen", irq6_line_hold)
362332
363333   /* video hardware */
r4679r4680
413383   deco56_decrypt_gfx(machine, "gfx1");
414384}
415385
416GAME( 1994, mirage, 0,        mirage, mirage, mirage, ROT0, "Mitchell", "Mirage Youjuu Mahjongden (Japan)", GAME_IMPERFECT_GRAPHICS )
386GAME( 1994, mirage, 0,        mirage, mirage, mirage, ROT0, "Mitchell", "Mirage Youjuu Mahjongden (Japan)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
src/mame/drivers/ddrible.c
r4679r4680
125125}
126126
127127
128static ADDRESS_MAP_START( readmem_cpu0, ADDRESS_SPACE_PROGRAM, 8 )
129   AM_RANGE(0x1800, 0x187f) AM_READ(SMH_RAM)         /* palette */
130   AM_RANGE(0x2000, 0x3fff) AM_READ(SMH_RAM)         /* Video RAM 1 + Object RAM 1 */
131   AM_RANGE(0x4000, 0x5fff) AM_READ(SMH_RAM)         /* shared RAM with CPU #1 */
132   AM_RANGE(0x6000, 0x7fff) AM_READ(SMH_RAM)         /* Video RAM 2 + Object RAM 2 */
133   AM_RANGE(0x8000, 0x9fff) AM_READ(SMH_BANK1)         /* banked ROM */
134   AM_RANGE(0xa000, 0xffff) AM_READ(SMH_ROM)         /* ROM */
128static ADDRESS_MAP_START( cpu0_map, ADDRESS_SPACE_PROGRAM, 8 )
129   AM_RANGE(0x0000, 0x0004) AM_WRITE(K005885_0_w)                                    /* video registers (005885 #1) */
130   AM_RANGE(0x0800, 0x0804) AM_WRITE(K005885_1_w)                                    /* video registers (005885 #2) */
131   AM_RANGE(0x1800, 0x187f) AM_RAM AM_BASE(&paletteram)                              /* palette */
132   AM_RANGE(0x2000, 0x2fff) AM_RAM_WRITE(ddrible_fg_videoram_w) AM_BASE(&ddrible_fg_videoram)   /* Video RAM 1 */
133   AM_RANGE(0x3000, 0x3fff) AM_RAM AM_BASE(&ddrible_spriteram_1)                        /* Object RAM 1 */
134   AM_RANGE(0x4000, 0x5fff) AM_RAM AM_BASE(&ddrible_sharedram)                           /* shared RAM with CPU #1 */
135   AM_RANGE(0x6000, 0x6fff) AM_RAM_WRITE(ddrible_bg_videoram_w) AM_BASE(&ddrible_bg_videoram)   /* Video RAM 2 */
136   AM_RANGE(0x7000, 0x7fff) AM_RAM AM_BASE(&ddrible_spriteram_2)                        /* Object RAM 2 */
137   AM_RANGE(0x8000, 0x8000) AM_WRITE(ddrible_bankswitch_w)                              /* bankswitch control */
138   AM_RANGE(0x8000, 0x9fff) AM_ROMBANK(1)                                          /* banked ROM */
139   AM_RANGE(0x8000, 0xffff) AM_WRITE(SMH_ROM)                                       /* ROM */
140   AM_RANGE(0xa000, 0xffff) AM_ROM                                                /* ROM */
135141ADDRESS_MAP_END
136142
137
138static ADDRESS_MAP_START( writemem_cpu0, ADDRESS_SPACE_PROGRAM, 8 )
139   AM_RANGE(0x0000, 0x0004) AM_WRITE(K005885_0_w)                        /* video registers (005885 #1) */
140   AM_RANGE(0x0800, 0x0804) AM_WRITE(K005885_1_w)                        /* video registers (005885 #2) */
141   AM_RANGE(0x1800, 0x187f) AM_WRITE(SMH_RAM) AM_BASE(&paletteram)
142   AM_RANGE(0x2000, 0x2fff) AM_WRITE(ddrible_fg_videoram_w) AM_BASE(&ddrible_fg_videoram)/* Video RAM 1 */
143   AM_RANGE(0x3000, 0x3fff) AM_WRITE(SMH_RAM) AM_BASE(&ddrible_spriteram_1)            /* Object RAM 1 */
144   AM_RANGE(0x4000, 0x5fff) AM_WRITE(SMH_RAM) AM_BASE(&ddrible_sharedram)            /* shared RAM with CPU #1 */
145   AM_RANGE(0x6000, 0x6fff) AM_WRITE(ddrible_bg_videoram_w) AM_BASE(&ddrible_bg_videoram)/* Video RAM 2 */
146   AM_RANGE(0x7000, 0x7fff) AM_WRITE(SMH_RAM) AM_BASE(&ddrible_spriteram_2)            /* Object RAM 2 + Work RAM */
147   AM_RANGE(0x8000, 0x8000) AM_WRITE(ddrible_bankswitch_w)                  /* bankswitch control */
148   AM_RANGE(0x8000, 0xffff) AM_WRITE(SMH_ROM)                           /* ROM */
149ADDRESS_MAP_END
150
151static ADDRESS_MAP_START( readmem_cpu1, ADDRESS_SPACE_PROGRAM, 8 )
152   AM_RANGE(0x0000, 0x1fff) AM_READ(ddrible_sharedram_r)      /* shared RAM with CPU #0 */
153   AM_RANGE(0x2000, 0x27ff) AM_READ(ddrible_snd_sharedram_r)   /* shared RAM with CPU #2 */
143static ADDRESS_MAP_START( cpu1_map, ADDRESS_SPACE_PROGRAM, 8 )
144   AM_RANGE(0x0000, 0x1fff) AM_READWRITE(ddrible_sharedram_r, ddrible_sharedram_w)         /* shared RAM with CPU #0 */
145   AM_RANGE(0x2000, 0x27ff) AM_READWRITE(ddrible_snd_sharedram_r, ddrible_snd_sharedram_w)   /* shared RAM with CPU #2 */
154146   AM_RANGE(0x2800, 0x2800) AM_READ_PORT("DSW1")
155147   AM_RANGE(0x2801, 0x2801) AM_READ_PORT("P1")
156148   AM_RANGE(0x2802, 0x2802) AM_READ_PORT("P2")
157   AM_RANGE(0x2803, 0x2803) AM_READ_PORT("SYSTEM")            /* coinsw & start */
149   AM_RANGE(0x2803, 0x2803) AM_READ_PORT("SYSTEM")                                 /* coinsw & start */
158150   AM_RANGE(0x2c00, 0x2c00) AM_READ_PORT("DSW2")
159151   AM_RANGE(0x3000, 0x3000) AM_READ_PORT("DSW3")
160   AM_RANGE(0x8000, 0xffff) AM_READ(SMH_ROM)               /* ROM */
152   AM_RANGE(0x3400, 0x3400) AM_WRITE(ddrible_coin_counter_w)                        /* coin counters */
153   AM_RANGE(0x3c00, 0x3c00) AM_WRITE(watchdog_reset_w)                              /* watchdog reset */
154   AM_RANGE(0x8000, 0xffff) AM_ROM                                             /* ROM */
161155ADDRESS_MAP_END
162156
163static ADDRESS_MAP_START( writemem_cpu1, ADDRESS_SPACE_PROGRAM, 8 )
164   AM_RANGE(0x0000, 0x1fff) AM_WRITE(ddrible_sharedram_w)      /* shared RAM with CPU #0 */
165   AM_RANGE(0x2000, 0x27ff) AM_WRITE(ddrible_snd_sharedram_w)   /* shared RAM with CPU #2 */
166   AM_RANGE(0x3400, 0x3400) AM_WRITE(ddrible_coin_counter_w)      /* coin counters */
167   AM_RANGE(0x3c00, 0x3c00) AM_WRITE(watchdog_reset_w)         /* watchdog reset */
168   AM_RANGE(0x8000, 0xffff) AM_WRITE(SMH_ROM)               /* ROM */
157static ADDRESS_MAP_START( cpu2_map, ADDRESS_SPACE_PROGRAM, 8 )
158   AM_RANGE(0x0000, 0x07ff) AM_RAM AM_BASE(&ddrible_snd_sharedram)      /* shared RAM with CPU #1 */
159   AM_RANGE(0x1000, 0x1001) AM_DEVREADWRITE("ym", ym2203_r, ym2203_w)   /* YM2203 */
160   AM_RANGE(0x3000, 0x3000) AM_DEVWRITE("vlm", vlm5030_data_w)         /* Speech data */
161   AM_RANGE(0x8000, 0xffff) AM_ROM                              /* ROM */
169162ADDRESS_MAP_END
170163
171static ADDRESS_MAP_START( readmem_cpu2, ADDRESS_SPACE_PROGRAM, 8 )
172   AM_RANGE(0x0000, 0x07ff) AM_READ(SMH_RAM)               /* shared RAM with CPU #1 */
173   AM_RANGE(0x1000, 0x1001) AM_DEVREAD("ym", ym2203_r)      /* YM2203 */
174   AM_RANGE(0x8000, 0xffff) AM_READ(SMH_ROM)               /* ROM */
175ADDRESS_MAP_END
176
177static ADDRESS_MAP_START( writemem_cpu2, ADDRESS_SPACE_PROGRAM, 8 )
178   AM_RANGE(0x0000, 0x07ff) AM_WRITE(SMH_RAM) AM_BASE(&ddrible_snd_sharedram)   /* shared RAM with CPU #1 */
179   AM_RANGE(0x1000, 0x1001) AM_DEVWRITE("ym", ym2203_w)            /* YM2203 */
180   AM_RANGE(0x3000, 0x3000) AM_DEVWRITE("vlm", vlm5030_data_w)                  /* Speech data */
181   AM_RANGE(0x8000, 0xffff) AM_WRITE(SMH_ROM)                     /* ROM */
182ADDRESS_MAP_END
183
184164static INPUT_PORTS_START( ddribble )
185165   PORT_START("P1")
186166   KONAMI8_B132(1)
r4679r4680
283263
284264   /* basic machine hardware */
285265   MDRV_CPU_ADD("maincpu", M6809,   XTAL_18_432MHz/12)   /* verified on pcb */
286   MDRV_CPU_PROGRAM_MAP(readmem_cpu0,writemem_cpu0)
266   MDRV_CPU_PROGRAM_MAP(cpu0_map,0)
287267   MDRV_CPU_VBLANK_INT("screen", ddrible_interrupt_0)
288268
289269   MDRV_CPU_ADD("cpu1", M6809,   XTAL_18_432MHz/12)   /* verified on pcb */
290   MDRV_CPU_PROGRAM_MAP(readmem_cpu1,writemem_cpu1)
270   MDRV_CPU_PROGRAM_MAP(cpu1_map,0)
291271   MDRV_CPU_VBLANK_INT("screen", ddrible_interrupt_1)
292272
293273   MDRV_CPU_ADD("cpu2", M6809,   XTAL_18_432MHz/12)   /* verified on pcb */
294   MDRV_CPU_PROGRAM_MAP(readmem_cpu2,writemem_cpu2)
274   MDRV_CPU_PROGRAM_MAP(cpu2_map,0)
295275
296276   MDRV_QUANTUM_TIME(HZ(6000))   /* we need heavy synch */
297277
src/mame/drivers/missile.c
r4679r4680
405405
406406   /* assert the IRQ if not already asserted */
407407   irq_state = (~curv >> 5) & 1;
408   cpu_set_input_line(machine->cpu[0], 0, irq_state ? ASSERT_LINE : CLEAR_LINE);
408   cputag_set_input_line(machine, "maincpu", 0, irq_state ? ASSERT_LINE : CLEAR_LINE);
409409
410410   /* force an update while we're here */
411411   video_screen_update_partial(machine->primary_screen, v_to_scanline(curv));
r4679r4680
435435
436436   /* starting at scanline 224, the CPU runs at half speed */
437437   if (curv == 224)
438      cpu_set_clock(machine->cpu[0], MASTER_CLOCK/16);
438      cputag_set_clock(machine, "maincpu", MASTER_CLOCK/16);
439439   else
440      cpu_set_clock(machine->cpu[0], MASTER_CLOCK/8);
440      cputag_set_clock(machine, "maincpu", MASTER_CLOCK/8);
441441
442442   /* scanline for the next run */
443443   curv ^= 224;
r4679r4680
477477   flipscreen = 0;
478478
479479   /* set up an opcode base handler since we use mapped handlers for RAM */
480   memory_set_direct_update_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), missile_direct_handler);
480   memory_set_direct_update_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), missile_direct_handler);
481481
482482   /* create a timer to speed/slow the CPU */
483483   cpu_timer = timer_alloc(machine, adjust_cpu_speed, NULL);
r4679r4680
499499
500500static MACHINE_RESET( missile )
501501{
502   cpu_set_input_line(machine->cpu[0], 0, CLEAR_LINE);
502   cputag_set_input_line(machine, "maincpu", 0, CLEAR_LINE);
503503   irq_state = 0;
504504}
505505
r4679r4680
706706   {
707707      if (irq_state)
708708      {
709         cpu_set_input_line(space->machine->cpu[0], 0, CLEAR_LINE);
709         cputag_set_input_line(space->machine, "maincpu", 0, CLEAR_LINE);
710710         irq_state = 0;
711711      }
712712   }
src/mame/drivers/popper.c
r4679r4680
9797PALETTE_INIT( popper );
9898VIDEO_START( popper );
9999VIDEO_UPDATE( popper );
100static UINT8 *popper_sharedram;
101100
102static READ8_HANDLER( popper_sharedram_r )
103{
104   return popper_sharedram[offset];
105}
106101
107102//e000                  e001                  e002                  e003
108103//76543210              76543210              76543210              76543210
r4679r4680
151146
152147static READ8_HANDLER( popper_soundcpu_nmi_r )
153148{
154   cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_NMI, PULSE_LINE);
149   cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
155150   return 0;
156151}
157152
158static WRITE8_HANDLER( popper_sharedram_w )
159{
160   popper_sharedram[offset]=data;
161}
162
163static ADDRESS_MAP_START( popper_readmem, ADDRESS_SPACE_PROGRAM, 8 )
164   AM_RANGE(0x0000, 0x5fff) AM_READ(SMH_ROM)
165   AM_RANGE(0xc000, 0xd7ff) AM_READ(SMH_RAM)
166   AM_RANGE(0xd800, 0xdfff) AM_READ(SMH_RAM)               //shared with sound cpu
153static ADDRESS_MAP_START( popper_map, ADDRESS_SPACE_PROGRAM, 8 )
154   AM_RANGE(0x0000, 0x5fff) AM_ROM
155   AM_RANGE(0xc000, 0xc1bf) AM_RAM
156   AM_RANGE(0xc1c0, 0xc1ff) AM_RAM_WRITE(popper_ol_videoram_w) AM_BASE(&popper_ol_videoram)
157   AM_RANGE(0xc200, 0xc61f) AM_RAM_WRITE(popper_videoram_w) AM_BASE(&popper_videoram)
158   AM_RANGE(0xc620, 0xc9bf) AM_RAM
159   AM_RANGE(0xc9c0, 0xc9ff) AM_RAM_WRITE(popper_ol_attribram_w) AM_BASE(&popper_ol_attribram)
160   AM_RANGE(0xca00, 0xce1f) AM_RAM_WRITE(popper_attribram_w) AM_BASE(&popper_attribram)
161   AM_RANGE(0xce20, 0xcfff) AM_RAM
162   AM_RANGE(0xd000, 0xd7ff) AM_RAM AM_BASE(&popper_spriteram) AM_SIZE(&popper_spriteram_size)
163   AM_RANGE(0xd800, 0xdfff) AM_RAM AM_SHARE(1)
167164   AM_RANGE(0xe000, 0xe007) AM_READ(popper_input_ports_r)
168   AM_RANGE(0xe400, 0xe400) AM_READ(popper_soundcpu_nmi_r)
169   AM_RANGE(0xf800, 0xf800) AM_READNOP               //?? read once at startup
170   AM_RANGE(0xfc00, 0xfc00) AM_READNOP               //?? possibly watchdog
171   AM_RANGE(0xffff, 0xffff) AM_READNOP
172ADDRESS_MAP_END
173
174static ADDRESS_MAP_START( popper_writemem, ADDRESS_SPACE_PROGRAM, 8 )
175   AM_RANGE(0x0000, 0x5fff) AM_WRITE(SMH_ROM)
176   AM_RANGE(0xc000, 0xc1bf) AM_WRITE(SMH_RAM)
177   AM_RANGE(0xc1c0, 0xc1ff) AM_WRITE(popper_ol_videoram_w) AM_BASE(&popper_ol_videoram)
178   AM_RANGE(0xc200, 0xc61f) AM_WRITE(popper_videoram_w) AM_BASE(&popper_videoram)
179   AM_RANGE(0xc620, 0xc9bf) AM_WRITE(SMH_RAM)
180   AM_RANGE(0xc9c0, 0xc9ff) AM_WRITE(popper_ol_attribram_w) AM_BASE(&popper_ol_attribram)
181   AM_RANGE(0xca00, 0xce1f) AM_WRITE(popper_attribram_w) AM_BASE(&popper_attribram)
182   AM_RANGE(0xce20, 0xcfff) AM_WRITE(SMH_RAM)
183   AM_RANGE(0xd000, 0xd7ff) AM_WRITE(SMH_RAM) AM_BASE(&popper_spriteram) AM_SIZE(&popper_spriteram_size)
184   AM_RANGE(0xd800, 0xdfff) AM_WRITE(SMH_RAM) AM_BASE(&popper_sharedram)   //shared with sound cpu
185165   AM_RANGE(0xe000, 0xe000) AM_WRITE(interrupt_enable_w)
186166   AM_RANGE(0xe001, 0xe001) AM_WRITE(popper_flipscreen_w)
187167   AM_RANGE(0xe002, 0xe002) AM_WRITE(popper_e002_w)            //?? seems to be graphic related
188168   AM_RANGE(0xe003, 0xe003) AM_WRITE(popper_gfx_bank_w)
189169   AM_RANGE(0xe004, 0xe007) AM_WRITENOP               //?? range cleared once when the SP is set
170   AM_RANGE(0xe400, 0xe400) AM_READ(popper_soundcpu_nmi_r)
171   AM_RANGE(0xf800, 0xf800) AM_READNOP               //?? read once at startup
172   AM_RANGE(0xfc00, 0xfc00) AM_READNOP               //?? possibly watchdog
173   AM_RANGE(0xffff, 0xffff) AM_READNOP
190174ADDRESS_MAP_END
191175
192static ADDRESS_MAP_START( popper_sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
193   AM_RANGE(0x0000, 0x0fff) AM_READ(SMH_ROM)
176static ADDRESS_MAP_START( popper_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
177   AM_RANGE(0x0000, 0x0fff) AM_ROM
178   AM_RANGE(0x8000, 0x8001) AM_DEVWRITE("ay1", ay8910_address_data_w)
194179   AM_RANGE(0x8002, 0x8002) AM_READNOP               //?? all read once at startup and the
180   AM_RANGE(0x8002, 0x8002) AM_WRITENOP            //?? same writes as 0x8000 (mostly)
195181   AM_RANGE(0x8003, 0x8003) AM_READNOP               //?? result ignored, looks like part
182   AM_RANGE(0xa000, 0xa001) AM_DEVWRITE("ay2", ay8910_address_data_w)
196183   AM_RANGE(0xa002, 0xa002) AM_READNOP               //?? of AY8910 initialisation
197   AM_RANGE(0xd800, 0xdfff) AM_READ(popper_sharedram_r)
184   AM_RANGE(0xa002, 0xa002) AM_WRITENOP            //?? same writes as 0xa000
185   AM_RANGE(0xd800, 0xdfff) AM_RAM AM_SHARE(1)
198186ADDRESS_MAP_END
199187
200static ADDRESS_MAP_START( popper_sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
201   AM_RANGE(0x0000, 0x0fff) AM_WRITE(SMH_ROM)
202   AM_RANGE(0x8000, 0x8001) AM_DEVWRITE("ay1", ay8910_address_data_w)
203   AM_RANGE(0x8002, 0x8002) AM_WRITENOP               //?? same writes as 0x8000 (mostly)
204   AM_RANGE(0xa000, 0xa001) AM_DEVWRITE("ay2", ay8910_address_data_w)
205   AM_RANGE(0xa002, 0xa002) AM_WRITENOP               //?? same writes as 0xa000
206   AM_RANGE(0xd800, 0xdfff) AM_WRITE(popper_sharedram_w)
207ADDRESS_MAP_END
208
209188static INPUT_PORTS_START( popper )
210189   PORT_START("IN0")
211190   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 )
r4679r4680
310289
311290   /* basic machine hardware */
312291   MDRV_CPU_ADD("maincpu", Z80,18432000/6)
313   MDRV_CPU_PROGRAM_MAP(popper_readmem,popper_writemem)
292   MDRV_CPU_PROGRAM_MAP(popper_map,0)
314293   MDRV_CPU_VBLANK_INT("screen", nmi_line_pulse)
315294
316295   MDRV_CPU_ADD("audiocpu", Z80,18432000/12)
317   MDRV_CPU_PROGRAM_MAP(popper_sound_readmem,popper_sound_writemem)
296   MDRV_CPU_PROGRAM_MAP(popper_sound_map,0)
318297   MDRV_CPU_VBLANK_INT_HACK(irq0_line_hold,4)      //NMIs caused by the main CPU
319298
320299   MDRV_QUANTUM_TIME(HZ(1800))
src/mame/drivers/ladyfrog.c
r4679r4680
8787
8888static WRITE8_HANDLER( sound_cpu_reset_w )
8989{
90   cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_RESET, (data&1 )? ASSERT_LINE : CLEAR_LINE);
90   cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_RESET, (data & 1 ) ? ASSERT_LINE : CLEAR_LINE);
9191}
9292
9393static TIMER_CALLBACK( nmi_callback )
9494{
95   if (sound_nmi_enable) cpu_set_input_line(machine->cpu[1],INPUT_LINE_NMI,PULSE_LINE);
95   if (sound_nmi_enable) cputag_set_input_line(machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
9696   else pending_nmi = 1;
9797}
9898
9999static WRITE8_HANDLER( sound_command_w )
100100{
101   soundlatch_w(space,0,data);
102   timer_call_after_resynch(space->machine, NULL, data,nmi_callback);
101   soundlatch_w(space, 0, data);
102   timer_call_after_resynch(space->machine, NULL, data, nmi_callback);
103103}
104104
105105static WRITE8_HANDLER( nmi_disable_w )
r4679r4680
112112   sound_nmi_enable = 1;
113113   if (pending_nmi)
114114   {
115      cpu_set_input_line(space->machine->cpu[1],INPUT_LINE_NMI,PULSE_LINE);
115      cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
116116      pending_nmi = 0;
117117   }
118118}
r4679r4680
142142   return snd_flag | 0xfd;
143143}
144144
145static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 )
146   AM_RANGE(0x0000, 0xbfff) AM_READ(SMH_ROM)
147   AM_RANGE(0xc000, 0xc07f) AM_READ(SMH_RAM)
148   AM_RANGE(0xc080, 0xc87f) AM_READ(ladyfrog_videoram_r)
149   AM_RANGE(0xd400, 0xd400) AM_READ(from_snd_r)
145static ADDRESS_MAP_START( ladyfrog_map, ADDRESS_SPACE_PROGRAM, 8 )
146   AM_RANGE(0x0000, 0xbfff) AM_ROM
147   AM_RANGE(0xc000, 0xc07f) AM_RAM
148   AM_RANGE(0xc080, 0xc87f) AM_READ(ladyfrog_videoram_r) AM_WRITE(ladyfrog_videoram_w) AM_BASE(&videoram) AM_SIZE(&videoram_size)
149   AM_RANGE(0xd000, 0xd000) AM_WRITE(ladyfrog_gfxctrl2_w)
150   AM_RANGE(0xd400, 0xd400) AM_READ(from_snd_r) AM_WRITE(sound_command_w)
150151   AM_RANGE(0xd401, 0xd401) AM_READ(snd_flag_r)
152   AM_RANGE(0xd403, 0xd403) AM_WRITE(sound_cpu_reset_w)
151153   AM_RANGE(0xd800, 0xd800) AM_READ_PORT("DSW1")
152154   AM_RANGE(0xd801, 0xd801) AM_READ_PORT("DSW2")
153155   AM_RANGE(0xd804, 0xd804) AM_READ_PORT("INPUTS")
154156   AM_RANGE(0xd806, 0xd806) AM_READ_PORT("SYSTEM")
155   AM_RANGE(0xdc00, 0xdc9f) AM_READ(ladyfrog_spriteram_r)
156   AM_RANGE(0xdca0, 0xdcbf) AM_READ(ladyfrog_scrlram_r)
157   AM_RANGE(0xdcc0, 0xdcff) AM_READ(SMH_RAM)
158   AM_RANGE(0xdd00, 0xdeff) AM_READ(ladyfrog_palette_r)
157   AM_RANGE(0xdc00, 0xdc9f) AM_READ(ladyfrog_spriteram_r) AM_WRITE(ladyfrog_spriteram_w)
158   AM_RANGE(0xdca0, 0xdcbf) AM_READ(ladyfrog_scrlram_r)  AM_WRITE(ladyfrog_scrlram_w) AM_BASE(&ladyfrog_scrlram)
159   AM_RANGE(0xdcc0, 0xdcff) AM_RAM
160   AM_RANGE(0xdd00, 0xdeff) AM_READ(ladyfrog_palette_r)  AM_WRITE(ladyfrog_palette_w)
159161   AM_RANGE(0xd0d0, 0xd0d0) AM_READNOP /* code jumps to ASCII text "Alfa tecnology"  @ $b7 */
160   AM_RANGE(0xe000, 0xffff) AM_READ(SMH_RAM)
161ADDRESS_MAP_END
162
163
164static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 )
165   AM_RANGE(0x0000, 0xbfff) AM_WRITE(SMH_ROM)
166   AM_RANGE(0xc000, 0xc07f) AM_WRITE(SMH_RAM)
167   AM_RANGE(0xc080, 0xc87f) AM_WRITE(ladyfrog_videoram_w) AM_BASE(&videoram) AM_SIZE(&videoram_size)
168   AM_RANGE(0xd000, 0xd000) AM_WRITE(ladyfrog_gfxctrl2_w)
169   AM_RANGE(0xd400, 0xd400) AM_WRITE(sound_command_w)
170   AM_RANGE(0xd403, 0xd403) AM_WRITE(sound_cpu_reset_w)
171   AM_RANGE(0xdc00, 0xdc9f) AM_WRITE(ladyfrog_spriteram_w)
172   AM_RANGE(0xdca0, 0xdcbf) AM_WRITE(ladyfrog_scrlram_w) AM_BASE(&ladyfrog_scrlram)
173   AM_RANGE(0xdcc0, 0xdcff) AM_WRITE(SMH_RAM)
174   AM_RANGE(0xdd00, 0xdeff) AM_WRITE(ladyfrog_palette_w)
175162   AM_RANGE(0xdf03, 0xdf03) AM_WRITE(ladyfrog_gfxctrl_w)
176   AM_RANGE(0xe000, 0xffff) AM_WRITE(SMH_RAM)
163   AM_RANGE(0xe000, 0xffff) AM_RAM
177164ADDRESS_MAP_END
178165
179
180static ADDRESS_MAP_START( sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
181   AM_RANGE(0x0000, 0xbfff) AM_READ(SMH_ROM)
182   AM_RANGE(0xc000, 0xc7ff) AM_READ(SMH_RAM)
183   AM_RANGE(0xd000, 0xd000) AM_READ(soundlatch_r)
184   AM_RANGE(0xd200, 0xd200) AM_READNOP
185   AM_RANGE(0xe000, 0xefff) AM_READNOP
186ADDRESS_MAP_END
187
188static ADDRESS_MAP_START( sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
189   AM_RANGE(0x0000, 0xbfff) AM_WRITE(SMH_ROM)
190   AM_RANGE(0xc000, 0xc7ff) AM_WRITE(SMH_RAM)
166static ADDRESS_MAP_START( ladyfrog_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
167   AM_RANGE(0x0000, 0xbfff) AM_ROM
168   AM_RANGE(0xc000, 0xc7ff) AM_RAM
191169   AM_RANGE(0xc800, 0xc801) AM_WRITENOP
192170   AM_RANGE(0xc802, 0xc803) AM_DEVWRITE("ay", ay8910_address_data_w)
193171   AM_RANGE(0xc900, 0xc90d) AM_DEVWRITE("msm", msm5232_w)
194172   AM_RANGE(0xca00, 0xca00) AM_WRITENOP
195173   AM_RANGE(0xcb00, 0xcb00) AM_WRITENOP
196174   AM_RANGE(0xcc00, 0xcc00) AM_WRITENOP
197   AM_RANGE(0xd000, 0xd000) AM_WRITE(to_main_w)
198   AM_RANGE(0xd200, 0xd200) AM_WRITE(nmi_enable_w)
175   AM_RANGE(0xd000, 0xd000) AM_READ(soundlatch_r) AM_WRITE(to_main_w)
176   AM_RANGE(0xd200, 0xd200) AM_READNOP AM_WRITE(nmi_enable_w)
199177   AM_RANGE(0xd400, 0xd400) AM_WRITE(nmi_disable_w)
200178   AM_RANGE(0xd600, 0xd600) AM_WRITENOP
201   AM_RANGE(0xe000, 0xefff) AM_WRITENOP
179   AM_RANGE(0xe000, 0xefff) AM_NOP
202180ADDRESS_MAP_END
203181
204182
r4679r4680
281259
282260static MACHINE_DRIVER_START( ladyfrog )
283261   MDRV_CPU_ADD("maincpu", Z80,8000000/2)
284   MDRV_CPU_PROGRAM_MAP(readmem,writemem)
262   MDRV_CPU_PROGRAM_MAP(ladyfrog_map,0)
285263   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
286264
287265   MDRV_CPU_ADD("audiocpu", Z80,8000000/2)
288   MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem)
266   MDRV_CPU_PROGRAM_MAP(ladyfrog_sound_map,0)
289267   MDRV_CPU_VBLANK_INT_HACK(irq0_line_hold,2)
290268
291269   /* video hardware */
r4679r4680
339317   ROM_REGION( 0x10000, "audiocpu", 0 )
340318   ROM_LOAD( "1.115",   0x0000, 0x8000, CRC(b0932498) SHA1(13d90698f2682e64ff3597c9267ca9d33a6d62ba) ) /* NY Captor*/
341319
342   ROM_REGION( 0x60000, "gfx1", ROMREGION_DISPOSE |ROMREGION_INVERT )
320   ROM_REGION( 0x60000, "gfx1", ROMREGION_DISPOSE | ROMREGION_INVERT )
343321   ROM_LOAD( "3.32",   0x30000, 0x10000, CRC(8a27fc0a) SHA1(36e0365776e61ef830451e6351eca6b6c742086f) )
344322   ROM_LOAD( "4.33",   0x40000, 0x10000, CRC(e1a137d3) SHA1(add8140a9366a0d343b611ced10c804d3fb04c03) )
345323   ROM_LOAD( "5.34",   0x50000, 0x10000, CRC(7816925f) SHA1(037a69243b35e1739e5d7288e279d0d4289c61ed) )
src/mame/drivers/go2000.c
r4679r4680
3939
4040static WRITE16_HANDLER( sound_cmd_w )
4141{
42   soundlatch_w(space,offset,data & 0xff);
43   cpu_set_input_line(space->machine->cpu[1], 0, HOLD_LINE);
42   soundlatch_w(space, offset, data & 0xff);
43   cputag_set_input_line(space->machine, "soundcpu", 0, HOLD_LINE);
4444}
4545
4646static ADDRESS_MAP_START( go2000_map, ADDRESS_SPACE_PROGRAM, 16 )
r4679r4680
283283
284284static MACHINE_RESET(go2000)
285285{
286   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
286   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
287287   go2000_pcm_1_bankswitch_w(space, 0, 0);
288288}
289289
src/mame/drivers/djboy.c
r4679r4680
657657
658658static WRITE8_HANDLER( trigger_nmi_on_cpu0 )
659659{
660   cpu_set_input_line(space->machine->cpu[0], INPUT_LINE_NMI, PULSE_LINE);
660   cputag_set_input_line(space->machine, "maincpu", INPUT_LINE_NMI, PULSE_LINE);
661661}
662662
663663static WRITE8_HANDLER( cpu0_bankswitch_w )
r4679r4680
715715
716716static WRITE8_HANDLER( trigger_nmi_on_sound_cpu2 )
717717{
718   soundlatch_w(space,0,data);
719   cpu_set_input_line(space->machine->cpu[2], INPUT_LINE_NMI, PULSE_LINE);
718   soundlatch_w(space, 0, data);
719   cputag_set_input_line(space->machine, "cpu2", INPUT_LINE_NMI, PULSE_LINE);
720720} /* trigger_nmi_on_sound_cpu2 */
721721
722722static WRITE8_HANDLER( cpu2_bankswitch_w )
723723{
724724   UINT8 *RAM = memory_region(space->machine, "cpu2");
725725
726   if( data<3 )
726   if( data < 3 )
727727   {
728728      RAM = &RAM[0x04000 * data];
729729   }
730730   else
731731   {
732      RAM = &RAM[0x10000 + 0x4000*(data-3)];
732      RAM = &RAM[0x10000 + 0x4000 * (data - 3)];
733733   }
734   memory_set_bankptr(space->machine, 3,RAM);
734   memory_set_bankptr(space->machine, 3, RAM);
735735}
736736
737737/******************************************************************************/
738738
739739static ADDRESS_MAP_START( cpu0_am, ADDRESS_SPACE_PROGRAM, 8 )
740740   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
741   AM_RANGE(0x8000, 0xafff) AM_READ(SMH_BANK4)
741   AM_RANGE(0x8000, 0xafff) AM_READ(SMH_BANK(4))
742742   AM_RANGE(0xb000, 0xbfff) AM_READWRITE( pandora_spriteram_r, pandora_spriteram_w )
743   AM_RANGE(0xc000, 0xdfff) AM_READ(SMH_BANK1)
743   AM_RANGE(0xc000, 0xdfff) AM_READ(SMH_BANK(1))
744744   AM_RANGE(0xe000, 0xefff) AM_READ(SMH_RAM) AM_WRITE(SMH_RAM) AM_BASE(&sharedram)
745745   AM_RANGE(0xf000, 0xf7ff) AM_READ(SMH_RAM) AM_WRITE(SMH_RAM)
746746   AM_RANGE(0xf800, 0xffff) AM_READ(SMH_RAM) AM_WRITE(SMH_RAM)
r4679r4680
755755
756756static ADDRESS_MAP_START( cpu1_am, ADDRESS_SPACE_PROGRAM, 8 )
757757   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
758   AM_RANGE(0x8000, 0xbfff) AM_READ(SMH_BANK2)
758   AM_RANGE(0x8000, 0xbfff) AM_READ(SMH_BANK(2))
759759   AM_RANGE(0xc000, 0xcfff) AM_READ(SMH_RAM) AM_WRITE(djboy_videoram_w) AM_BASE(&videoram)
760760   AM_RANGE(0xd000, 0xd3ff) AM_READ(SMH_RAM) AM_WRITE(djboy_paletteram_w) AM_BASE(&paletteram)
761761   AM_RANGE(0xd400, 0xd8ff) AM_READ(SMH_RAM) AM_WRITE(SMH_RAM)
r4679r4680
778778
779779static ADDRESS_MAP_START( cpu2_am, ADDRESS_SPACE_PROGRAM, 8 )
780780   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
781   AM_RANGE(0x8000, 0xbfff) AM_READ(SMH_BANK3)
781   AM_RANGE(0x8000, 0xbfff) AM_READ(SMH_BANK(3))
782782   AM_RANGE(0xc000, 0xdfff) AM_READ(SMH_RAM) AM_WRITE(SMH_RAM)
783783ADDRESS_MAP_END
784784
r4679r4680
10521052GAME( 1989, djboy,  0,      djboy,   djboy, djboy,    ROT0, "Kaneko (American Sammy license)", "DJ Boy (set 1)", 0) // Sammy & Williams logos in FG ROM
10531053GAME( 1989, djboya, djboy,  djboy,   djboy, djboy,    ROT0, "Kaneko (American Sammy license)", "DJ Boy (set 2)", 0) // Sammy & Williams logos in FG ROM
10541054GAME( 1989, djboyj, djboy,  djboy,   djboy, djboyj,   ROT0, "Kaneko (Sega license)", "DJ Boy (Japan)", 0 ) // Sega logo in FG ROM
1055
src/mame/drivers/sidearms.c
r4679r4680
8585}
8686
8787
88static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 )
89   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
90   AM_RANGE(0x8000, 0xbfff) AM_READ(SMH_BANK1)
91   AM_RANGE(0xc800, 0xc800) AM_READ_PORT("SYSTEM")
92   AM_RANGE(0xc801, 0xc801) AM_READ_PORT("P1")
93   AM_RANGE(0xc802, 0xc802) AM_READ_PORT("P2")
88static ADDRESS_MAP_START( sidearms_map, ADDRESS_SPACE_PROGRAM, 8 )
89   AM_RANGE(0x0000, 0x7fff) AM_ROM
90   AM_RANGE(0x8000, 0xbfff) AM_ROMBANK(1)
91   AM_RANGE(0xc000, 0xc3ff) AM_RAM_WRITE(paletteram_xxxxBBBBRRRRGGGG_split1_w) AM_BASE(&paletteram)
92   AM_RANGE(0xc400, 0xc7ff) AM_RAM_WRITE(paletteram_xxxxBBBBRRRRGGGG_split2_w) AM_BASE(&paletteram_2)
93   AM_RANGE(0xc800, 0xc800) AM_READ_PORT("SYSTEM") AM_WRITE(soundlatch_w)
94   AM_RANGE(0xc801, 0xc801) AM_READ_PORT("P1") AM_WRITE(sidearms_bankswitch_w)
95   AM_RANGE(0xc802, 0xc802) AM_READ_PORT("P2") AM_WRITE(watchdog_reset_w)
9496   AM_RANGE(0xc803, 0xc803) AM_READ_PORT("DSW0")
95   AM_RANGE(0xc804, 0xc804) AM_READ_PORT("DSW1")
96   AM_RANGE(0xc805, 0xc805) AM_READ_PORT("DSW2")
97   AM_RANGE(0xd000, 0xffff) AM_READ(SMH_RAM)
98ADDRESS_MAP_END
99
100static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 )
101   AM_RANGE(0x0000, 0xbfff) AM_WRITE(SMH_ROM)
102   AM_RANGE(0xc000, 0xc3ff) AM_WRITE(paletteram_xxxxBBBBRRRRGGGG_split1_w) AM_BASE(&paletteram)
103   AM_RANGE(0xc400, 0xc7ff) AM_WRITE(paletteram_xxxxBBBBRRRRGGGG_split2_w) AM_BASE(&paletteram_2)
104   AM_RANGE(0xc800, 0xc800) AM_WRITE(soundlatch_w)
105   AM_RANGE(0xc801, 0xc801) AM_WRITE(sidearms_bankswitch_w)
106   AM_RANGE(0xc802, 0xc802) AM_WRITE(watchdog_reset_w)
107   AM_RANGE(0xc804, 0xc804) AM_WRITE(sidearms_c804_w)
108   AM_RANGE(0xc805, 0xc805) AM_WRITE(sidearms_star_scrollx_w)
97   AM_RANGE(0xc804, 0xc804) AM_READ_PORT("DSW1") AM_WRITE(sidearms_c804_w)
98   AM_RANGE(0xc805, 0xc805) AM_READ_PORT("DSW2") AM_WRITE(sidearms_star_scrollx_w)
10999   AM_RANGE(0xc806, 0xc806) AM_WRITE(sidearms_star_scrolly_w)
110   AM_RANGE(0xc808, 0xc809) AM_WRITE(SMH_RAM) AM_BASE(&sidearms_bg_scrollx)
111   AM_RANGE(0xc80a, 0xc80b) AM_WRITE(SMH_RAM) AM_BASE(&sidearms_bg_scrolly)
100   AM_RANGE(0xc808, 0xc809) AM_WRITEONLY AM_BASE(&sidearms_bg_scrollx)
101   AM_RANGE(0xc80a, 0xc80b) AM_WRITEONLY AM_BASE(&sidearms_bg_scrolly)
112102   AM_RANGE(0xc80c, 0xc80c) AM_WRITE(sidearms_gfxctrl_w)   /* background and sprite enable */
113   AM_RANGE(0xd000, 0xd7ff) AM_WRITE(sidearms_videoram_w) AM_BASE(&videoram)
114   AM_RANGE(0xd800, 0xdfff) AM_WRITE(sidearms_colorram_w) AM_BASE(&colorram)
115   AM_RANGE(0xe000, 0xefff) AM_WRITE(SMH_RAM)
116   AM_RANGE(0xf000, 0xffff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
103   AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(sidearms_videoram_w) AM_BASE(&videoram)
104   AM_RANGE(0xd800, 0xdfff) AM_RAM_WRITE(sidearms_colorram_w) AM_BASE(&colorram)
105   AM_RANGE(0xe000, 0xefff) AM_RAM
106   AM_RANGE(0xf000, 0xffff) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
117107ADDRESS_MAP_END
118108
119
120static ADDRESS_MAP_START( turtship_readmem, ADDRESS_SPACE_PROGRAM, 8 )
121   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
122   AM_RANGE(0x8000, 0xbfff) AM_READ(SMH_BANK1)
123   AM_RANGE(0xc000, 0xe7ff) AM_READ(SMH_RAM)
109static ADDRESS_MAP_START( turtship_map, ADDRESS_SPACE_PROGRAM, 8 )
110   AM_RANGE(0x0000, 0x7fff) AM_ROM
111   AM_RANGE(0x8000, 0xbfff) AM_ROMBANK(1)
112   AM_RANGE(0xc000, 0xcfff) AM_RAM
113   AM_RANGE(0xd000, 0xdfff) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
114   AM_RANGE(0xe000, 0xe3ff) AM_RAM_WRITE(paletteram_xxxxBBBBRRRRGGGG_split1_w) AM_BASE(&paletteram)
115   AM_RANGE(0xe400, 0xe7ff) AM_RAM_WRITE(paletteram_xxxxBBBBRRRRGGGG_split2_w) AM_BASE(&paletteram_2)
124116   AM_RANGE(0xe800, 0xe807) AM_READ(turtship_ports_r)
125   AM_RANGE(0xf000, 0xffff) AM_READ(SMH_RAM)
126ADDRESS_MAP_END
127
128static ADDRESS_MAP_START( turtship_writemem, ADDRESS_SPACE_PROGRAM, 8 )
129   AM_RANGE(0x0000, 0xbfff) AM_WRITE(SMH_ROM)
130   AM_RANGE(0xc000, 0xcfff) AM_WRITE(SMH_RAM)
131   AM_RANGE(0xd000, 0xdfff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
132   AM_RANGE(0xe000, 0xe3ff) AM_WRITE(paletteram_xxxxBBBBRRRRGGGG_split1_w) AM_BASE(&paletteram)
133   AM_RANGE(0xe400, 0xe7ff) AM_WRITE(paletteram_xxxxBBBBRRRRGGGG_split2_w) AM_BASE(&paletteram_2)
134117   AM_RANGE(0xe800, 0xe800) AM_WRITE(soundlatch_w)
135118   AM_RANGE(0xe801, 0xe801) AM_WRITE(sidearms_bankswitch_w)
136119   AM_RANGE(0xe802, 0xe802) AM_WRITE(watchdog_reset_w)
137120   AM_RANGE(0xe804, 0xe804) AM_WRITE(sidearms_c804_w)
138121   AM_RANGE(0xe805, 0xe805) AM_WRITE(sidearms_star_scrollx_w)
139122   AM_RANGE(0xe806, 0xe806) AM_WRITE(sidearms_star_scrolly_w)
140   AM_RANGE(0xe808, 0xe809) AM_WRITE(SMH_RAM) AM_BASE(&sidearms_bg_scrollx)
141   AM_RANGE(0xe80a, 0xe80b) AM_WRITE(SMH_RAM) AM_BASE(&sidearms_bg_scrolly)
123   AM_RANGE(0xe808, 0xe809) AM_WRITEONLY AM_BASE(&sidearms_bg_scrollx)
124   AM_RANGE(0xe80a, 0xe80b) AM_WRITEONLY AM_BASE(&sidearms_bg_scrolly)
142125   AM_RANGE(0xe80c, 0xe80c) AM_WRITE(sidearms_gfxctrl_w)   /* background and sprite enable */
143   AM_RANGE(0xf000, 0xf7ff) AM_WRITE(sidearms_videoram_w) AM_BASE(&videoram)
144   AM_RANGE(0xf800, 0xffff) AM_WRITE(sidearms_colorram_w) AM_BASE(&colorram)
126   AM_RANGE(0xf000, 0xf7ff) AM_RAM_WRITE(sidearms_videoram_w) AM_BASE(&videoram)
127   AM_RANGE(0xf800, 0xffff) AM_RAM_WRITE(sidearms_colorram_w) AM_BASE(&colorram)
145128ADDRESS_MAP_END
146129
147
148static ADDRESS_MAP_START( sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
149   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
150   AM_RANGE(0xc000, 0xc7ff) AM_READ(SMH_RAM)
130static ADDRESS_MAP_START( sidearms_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
131   AM_RANGE(0x0000, 0x7fff) AM_ROM
132   AM_RANGE(0xc000, 0xc7ff) AM_RAM
151133   AM_RANGE(0xd000, 0xd000) AM_READ(soundlatch_r)
152   AM_RANGE(0xf000, 0xf001) AM_DEVREAD("ym1", ym2203_r)
153   AM_RANGE(0xf002, 0xf003) AM_DEVREAD("ym2", ym2203_r)
134   AM_RANGE(0xf000, 0xf001) AM_DEVREADWRITE("ym1", ym2203_r,ym2203_w)
135   AM_RANGE(0xf002, 0xf003) AM_DEVREADWRITE("ym2", ym2203_r,ym2203_w)
154136ADDRESS_MAP_END
155137
156static ADDRESS_MAP_START( sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
157   AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM)
158   AM_RANGE(0xc000, 0xc7ff) AM_WRITE(SMH_RAM)
159   AM_RANGE(0xf000, 0xf001) AM_DEVWRITE("ym1", ym2203_w)
160   AM_RANGE(0xf002, 0xf003) AM_DEVWRITE("ym2", ym2203_w)
161ADDRESS_MAP_END
162
163138/* Whizz */
164139
165140static WRITE8_HANDLER( whizz_bankswitch_w )
r4679r4680
180155   memory_set_bankptr(space->machine, 1,&RAM[bankaddress]);
181156}
182157
183static ADDRESS_MAP_START( whizz_readmem, ADDRESS_SPACE_PROGRAM, 8 )
184   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
185   AM_RANGE(0x8000, 0xbfff) AM_READ(SMH_BANK1)
186   AM_RANGE(0xc800, 0xc800) AM_READ_PORT("DSW0")
187   AM_RANGE(0xc801, 0xc801) AM_READ_PORT("DSW1")
188   AM_RANGE(0xc802, 0xc802) AM_READ_PORT("DSW2")
189   AM_RANGE(0xc803, 0xc803) AM_READ_PORT("IN0")
190   AM_RANGE(0xc804, 0xc804) AM_READ_PORT("IN1")
191   AM_RANGE(0xc805, 0xc805) AM_READ_PORT("IN2")
158static ADDRESS_MAP_START( whizz_map, ADDRESS_SPACE_PROGRAM, 8 )
159   AM_RANGE(0x0000, 0x7fff) AM_ROM
160   AM_RANGE(0x8000, 0xbfff) AM_ROMBANK(1)
161   AM_RANGE(0xc000, 0xc3ff) AM_RAM_WRITE(paletteram_xxxxBBBBRRRRGGGG_split1_w) AM_BASE(&paletteram)
162   AM_RANGE(0xc400, 0xc7ff) AM_RAM_WRITE(paletteram_xxxxBBBBRRRRGGGG_split2_w) AM_BASE(&paletteram_2)
163   AM_RANGE(0xc800, 0xc800) AM_READ_PORT("DSW0") AM_WRITE(soundlatch_w)
164   AM_RANGE(0xc801, 0xc801) AM_READ_PORT("DSW1") AM_WRITE(whizz_bankswitch_w)
165   AM_RANGE(0xc802, 0xc802) AM_READ_PORT("DSW2") AM_WRITE(watchdog_reset_w)
166   AM_RANGE(0xc803, 0xc803) AM_READ_PORT("IN0") AM_WRITENOP
167   AM_RANGE(0xc804, 0xc804) AM_READ_PORT("IN1") AM_WRITE(sidearms_c804_w)
168   AM_RANGE(0xc805, 0xc805) AM_READ_PORT("IN2") AM_WRITENOP
192169   AM_RANGE(0xc806, 0xc806) AM_READ_PORT("IN3")
193170   AM_RANGE(0xc807, 0xc807) AM_READ_PORT("IN4")
194   AM_RANGE(0xd000, 0xffff) AM_READ(SMH_RAM)
195ADDRESS_MAP_END
196
197static ADDRESS_MAP_START( whizz_writemem, ADDRESS_SPACE_PROGRAM, 8 )
198   AM_RANGE(0x0000, 0xbfff) AM_WRITE(SMH_ROM)
199   AM_RANGE(0xc000, 0xc3ff) AM_WRITE(paletteram_xxxxBBBBRRRRGGGG_split1_w) AM_BASE(&paletteram)
200   AM_RANGE(0xc400, 0xc7ff) AM_WRITE(paletteram_xxxxBBBBRRRRGGGG_split2_w) AM_BASE(&paletteram_2)
201   AM_RANGE(0xc800, 0xc800) AM_WRITE(soundlatch_w)
202   AM_RANGE(0xc801, 0xc801) AM_WRITE(whizz_bankswitch_w)
203   AM_RANGE(0xc802, 0xc802) AM_WRITE(watchdog_reset_w)
204   AM_RANGE(0xc803, 0xc803) AM_WRITENOP /* ? */
205   AM_RANGE(0xc804, 0xc804) AM_WRITE(sidearms_c804_w)
206   AM_RANGE(0xc805, 0xc805) AM_WRITENOP /* ? */
171   AM_RANGE(0xc808, 0xc809) AM_WRITEONLY AM_BASE(&sidearms_bg_scrollx)
172   AM_RANGE(0xc80a, 0xc80b) AM_WRITEONLY AM_BASE(&sidearms_bg_scrolly)
207173   AM_RANGE(0xe805, 0xe805) AM_WRITE(sidearms_star_scrollx_w)
208174   AM_RANGE(0xe806, 0xe806) AM_WRITE(sidearms_star_scrolly_w)
209   AM_RANGE(0xc808, 0xc809) AM_WRITE(SMH_RAM) AM_BASE(&sidearms_bg_scrollx)
210   AM_RANGE(0xc80a, 0xc80b) AM_WRITE(SMH_RAM) AM_BASE(&sidearms_bg_scrolly)
211175   AM_RANGE(0xc80c, 0xc80c) AM_WRITE(sidearms_gfxctrl_w)
212   AM_RANGE(0xd000, 0xd7ff) AM_WRITE(sidearms_videoram_w) AM_BASE(&videoram)
213   AM_RANGE(0xd800, 0xdfff) AM_WRITE(sidearms_colorram_w) AM_BASE(&colorram)
214   AM_RANGE(0xe000, 0xefff) AM_WRITE(SMH_RAM)
215   AM_RANGE(0xf000, 0xffff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
176   AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(sidearms_videoram_w) AM_BASE(&videoram)
177   AM_RANGE(0xd800, 0xdfff) AM_RAM_WRITE(sidearms_colorram_w) AM_BASE(&colorram)
178   AM_RANGE(0xe000, 0xefff) AM_RAM
179   AM_RANGE(0xf000, 0xffff) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
216180ADDRESS_MAP_END
217181
218static ADDRESS_MAP_START( whizz_sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
219   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
220   AM_RANGE(0xf800, 0xffff) AM_READ(SMH_RAM)
182static ADDRESS_MAP_START( whizz_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
183   AM_RANGE(0x0000, 0x7fff) AM_ROM
184   AM_RANGE(0xf800, 0xffff) AM_RAM
221185ADDRESS_MAP_END
222186
223static ADDRESS_MAP_START( whizz_sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
224   AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM)
225   AM_RANGE(0xf800, 0xffff) AM_WRITE(SMH_RAM)
226ADDRESS_MAP_END
227
228187static ADDRESS_MAP_START( whizz_io_map, ADDRESS_SPACE_IO, 8 )
229188   ADDRESS_MAP_GLOBAL_MASK(0xff)
230189   AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
r4679r4680
691650/* handler called by the 2203 emulator when the internal timers cause an IRQ */
692651static void irqhandler(const device_config *device, int irq)
693652{
694   cpu_set_input_line(device->machine->cpu[1],0,irq ? ASSERT_LINE : CLEAR_LINE);
653   cputag_set_input_line(device->machine, "audiocpu", 0, irq ? ASSERT_LINE : CLEAR_LINE);
695654}
696655
697656static const ym2203_interface ym2203_config =
r4679r4680
713672
714673   /* basic machine hardware */
715674   MDRV_CPU_ADD("maincpu", Z80, 4000000) /* 4 MHz (?) */
716   MDRV_CPU_PROGRAM_MAP(readmem,writemem)
675   MDRV_CPU_PROGRAM_MAP(sidearms_map,0)
717676   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
718677
719678   MDRV_CPU_ADD("audiocpu", Z80, 4000000) /* 4 MHz (?) */
720   MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem)
679   MDRV_CPU_PROGRAM_MAP(sidearms_sound_map,0)
721680
722681   /* video hardware */
723682   MDRV_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM)
r4679r4680
758717
759718   /* basic machine hardware */
760719   MDRV_CPU_ADD("maincpu", Z80, 4000000) /* 4 MHz (?) */
761   MDRV_CPU_PROGRAM_MAP(turtship_readmem,turtship_writemem)
720   MDRV_CPU_PROGRAM_MAP(turtship_map,0)
762721   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
763722
764723   MDRV_CPU_ADD("audiocpu", Z80, 4000000) /* 4 MHz (?) */
765   MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem)
724   MDRV_CPU_PROGRAM_MAP(sidearms_sound_map,0)
766725
767726   /* video hardware */
768727   MDRV_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM)
r4679r4680
802761
803762   /* basic machine hardware */
804763   MDRV_CPU_ADD("maincpu", Z80, 4000000)        /* 4 MHz (?) */
805   MDRV_CPU_PROGRAM_MAP(whizz_readmem,whizz_writemem)
764   MDRV_CPU_PROGRAM_MAP(whizz_map,0)
806765   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
807766
808767   MDRV_CPU_ADD("audiocpu", Z80, 4000000)
809   MDRV_CPU_PROGRAM_MAP(whizz_sound_readmem,whizz_sound_writemem)
768   MDRV_CPU_PROGRAM_MAP(whizz_sound_map,0)
810769   MDRV_CPU_IO_MAP(whizz_io_map,0)
811770   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
812771
r4679r4680
12191178GAME( 1989, dygera,   dyger,    turtship, dyger,    dyger,    ROT270, "Philko", "Dyger (Korea set 2)", 0 )
12201179GAME( 1989, twinfalc, 0,        whizz,    whizz,    whizz,    ROT0,   "Philko (Poara Enterprises license)", "Twin Falcons", 0 )
12211180GAME( 1989, whizz,    twinfalc, whizz,    whizz,    whizz,    ROT0,   "Philko", "Whizz", 0 )
1222
1223
1224
src/mame/drivers/taito_x.c
r4679r4680
886886/* handler called by the YM2610 emulator when the internal timers cause an IRQ */
887887static void irqhandler(const device_config *device, int irq)
888888{
889   cpu_set_input_line(device->machine->cpu[1],0,irq ? ASSERT_LINE : CLEAR_LINE);
889   cputag_set_input_line(device->machine, "audiocpu", 0, irq ? ASSERT_LINE : CLEAR_LINE);
890890}
891891
892892static const ym2610_interface ym2610_config =
r4679r4680
13021302
13031303static DRIVER_INIT( kyustrkr )
13041304{
1305   memory_install_write16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x900000, 0x90000f, 0, 0, kyustrkr_input_w);
1305   memory_install_write16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x900000, 0x90000f, 0, 0, kyustrkr_input_w);
13061306}
13071307
13081308
src/mame/drivers/jack.c
r4679r4680
7272
7373static WRITE8_HANDLER( jack_sh_command_w )
7474{
75   soundlatch_w(space,0,data);
76   cpu_set_input_line(space->machine->cpu[1], 0, HOLD_LINE);
75   soundlatch_w(space, 0, data);
76   cputag_set_input_line(space->machine, "audiocpu", 0, HOLD_LINE);
7777}
7878
7979
r4679r4680
13361336   int A;
13371337   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
13381338   UINT8 *rom = memory_region(machine, "maincpu");
1339   UINT8 *decrypt = auto_malloc(0x4000);
1339   UINT8 *decrypt = auto_alloc_array(machine, UINT8, 0x4000);
13401340   int data;
13411341
13421342   memory_set_decrypted_region(space, 0x0000, 0x3fff, decrypt);
r4679r4680
14361436   }
14371437
14381438   // Set-up the weirdest questions read ever done
1439   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xc000, 0xcfff, 0, 0, striv_question_r);
1439   memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xc000, 0xcfff, 0, 0, striv_question_r);
14401440
14411441   // Nop out unused sprites writes
1442   memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xb000, 0xb0ff, 0, 0, SMH_NOP);
1442   memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xb000, 0xb0ff, 0, 0, (write8_space_func)SMH_NOP);
14431443
14441444   timer_rate = 128;
14451445}
src/mame/drivers/tumblep.c
r4679r4680
136136   AM_RANGE(0x120000, 0x120001) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w)
137137   AM_RANGE(0x130000, 0x130001) AM_NOP   /* This board only has 1 oki chip */
138138   AM_RANGE(0x140000, 0x140001) AM_READ(soundlatch_r)
139   AM_RANGE(0x1f0000, 0x1f1fff) AM_READWRITE(SMH_BANK8, SMH_BANK8)
139   AM_RANGE(0x1f0000, 0x1f1fff) AM_READWRITE(SMH_BANK(8), SMH_BANK(8))
140140   AM_RANGE(0x1fec00, 0x1fec01) AM_WRITE(h6280_timer_w)
141141   AM_RANGE(0x1ff400, 0x1ff403) AM_WRITE(h6280_irq_status_w)
142142ADDRESS_MAP_END
src/mame/drivers/dogfgt.c
r4679r4680
3232   /* bit 0 used but unknown */
3333
3434   if (data & 0x04)
35      cpu_set_input_line(space->machine->cpu[1],0,ASSERT_LINE);
35      cputag_set_input_line(space->machine, "sub", 0, ASSERT_LINE);
3636}
3737
3838static WRITE8_HANDLER( sub_irqack_w )
3939{
40   cpu_set_input_line(space->machine->cpu[1],0,CLEAR_LINE);
40   cputag_set_input_line(space->machine, "sub", 0, CLEAR_LINE);
4141}
4242
4343
r4679r4680
6666
6767
6868
69static ADDRESS_MAP_START( main_readmem, ADDRESS_SPACE_PROGRAM, 8 )
70   AM_RANGE(0x0000, 0x07ff) AM_READ(sharedram_r)
71   AM_RANGE(0x1800, 0x1800) AM_READ_PORT("P1")
72   AM_RANGE(0x1810, 0x1810) AM_READ_PORT("P2")
73   AM_RANGE(0x1820, 0x1820) AM_READ_PORT("DSW1")
74   AM_RANGE(0x1830, 0x1830) AM_READ_PORT("DSW2")
75   AM_RANGE(0x2000, 0x3fff) AM_READ(dogfgt_bitmapram_r)
76   AM_RANGE(0x8000, 0xffff) AM_READ(SMH_ROM)
77ADDRESS_MAP_END
78
79static ADDRESS_MAP_START( main_writemem, ADDRESS_SPACE_PROGRAM, 8 )
80   AM_RANGE(0x0000, 0x07ff) AM_WRITE(sharedram_w) AM_BASE(&sharedram)
69static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 8 )
70   AM_RANGE(0x0000, 0x07ff) AM_READWRITE(sharedram_r, sharedram_w) AM_BASE(&sharedram)
8171   AM_RANGE(0x0f80, 0x0fdf) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
8272   AM_RANGE(0x1000, 0x17ff) AM_WRITE(dogfgt_bgvideoram_w) AM_BASE(&dogfgt_bgvideoram)
73   AM_RANGE(0x1800, 0x1800) AM_READ_PORT("P1")
8374   AM_RANGE(0x1800, 0x1800) AM_WRITE(dogfgt_1800_w)   /* text color, flip screen & coin counters */
75   AM_RANGE(0x1810, 0x1810) AM_READ_PORT("P2")
8476   AM_RANGE(0x1810, 0x1810) AM_WRITE(subirqtrigger_w)
77   AM_RANGE(0x1820, 0x1820) AM_READ_PORT("DSW1")
8578   AM_RANGE(0x1820, 0x1823) AM_WRITE(dogfgt_scroll_w)
8679   AM_RANGE(0x1824, 0x1824) AM_WRITE(dogfgt_plane_select_w)
80   AM_RANGE(0x1830, 0x1830) AM_READ_PORT("DSW2")
8781   AM_RANGE(0x1830, 0x1830) AM_WRITE(dogfgt_soundlatch_w)
8882   AM_RANGE(0x1840, 0x1840) AM_WRITE(dogfgt_soundcontrol_w)
8983   AM_RANGE(0x1870, 0x187f) AM_WRITE(paletteram_BBGGGRRR_w) AM_BASE(&paletteram)
90   AM_RANGE(0x2000, 0x3fff) AM_WRITE(dogfgt_bitmapram_w)
91   AM_RANGE(0x8000, 0xffff) AM_WRITE(SMH_ROM)
84   AM_RANGE(0x2000, 0x3fff) AM_READWRITE(dogfgt_bitmapram_r, dogfgt_bitmapram_w)
85   AM_RANGE(0x8000, 0xffff) AM_ROM
9286ADDRESS_MAP_END
9387
94static ADDRESS_MAP_START( sub_readmem, ADDRESS_SPACE_PROGRAM, 8 )
95   AM_RANGE(0x0000, 0x07ff) AM_READ(SMH_RAM)
96   AM_RANGE(0x2000, 0x27ff) AM_READ(sharedram_r)
97   AM_RANGE(0x8000, 0xffff) AM_READ(SMH_ROM)
98ADDRESS_MAP_END
99
100static ADDRESS_MAP_START( sub_writemem, ADDRESS_SPACE_PROGRAM, 8 )
101   AM_RANGE(0x0000, 0x07ff) AM_WRITE(SMH_RAM)
102   AM_RANGE(0x2000, 0x27ff) AM_WRITE(sharedram_w)
88static ADDRESS_MAP_START( sub_map, ADDRESS_SPACE_PROGRAM, 8 )
89   AM_RANGE(0x0000, 0x07ff) AM_RAM
90   AM_RANGE(0x2000, 0x27ff) AM_READWRITE(sharedram_r, sharedram_w)
10391   AM_RANGE(0x4000, 0x4000) AM_WRITE(sub_irqack_w)
104   AM_RANGE(0x8000, 0xffff) AM_WRITE(SMH_ROM)
92   AM_RANGE(0x8000, 0xffff) AM_ROM
10593ADDRESS_MAP_END
10694
10795
r4679r4680
232220
233221   /* basic machine hardware */
234222   MDRV_CPU_ADD("maincpu", M6502, 1500000)   /* 1.5 MHz ???? */
235   MDRV_CPU_PROGRAM_MAP(main_readmem,main_writemem)
223   MDRV_CPU_PROGRAM_MAP(main_map,0)
236224   MDRV_CPU_VBLANK_INT_HACK(irq0_line_hold,16)   /* ? controls music tempo */
237225
238226   MDRV_CPU_ADD("sub", M6502, 1500000)   /* 1.5 MHz ???? */
239   MDRV_CPU_PROGRAM_MAP(sub_readmem,sub_writemem)
227   MDRV_CPU_PROGRAM_MAP(sub_map,0)
240228
241229   MDRV_QUANTUM_TIME(HZ(6000))
242230
src/mame/drivers/dietgo.c
r4679r4680
3232
3333
3434/* Physical memory map (21 bits) */
35static ADDRESS_MAP_START( sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
36   AM_RANGE(0x000000, 0x00ffff) AM_READ(SMH_ROM)
37   AM_RANGE(0x100000, 0x100001) AM_READNOP
38   AM_RANGE(0x110000, 0x110001) AM_DEVREAD("ym", ym2151_r)
39   AM_RANGE(0x120000, 0x120001) AM_DEVREAD("oki", okim6295_r)
40   AM_RANGE(0x130000, 0x130001) AM_READNOP /* This board only has 1 oki chip */
35static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 )
36   AM_RANGE(0x000000, 0x00ffff) AM_ROM
37   AM_RANGE(0x100000, 0x100001) AM_NOP      /* YM2203 - this board doesn't have one */
38   AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
39   AM_RANGE(0x120000, 0x120001) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w)
40   AM_RANGE(0x130000, 0x130001) AM_NOP      /* This board only has 1 oki chip */
4141   AM_RANGE(0x140000, 0x140001) AM_READ(soundlatch_r)
42   AM_RANGE(0x1f0000, 0x1f1fff) AM_READ(SMH_BANK8)
43ADDRESS_MAP_END
44
45static ADDRESS_MAP_START( sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
46   AM_RANGE(0x000000, 0x00ffff) AM_WRITE(SMH_ROM)
47   AM_RANGE(0x100000, 0x100001) AM_WRITENOP /* YM2203 - this board doesn't have one */
48   AM_RANGE(0x110000, 0x110001) AM_DEVWRITE("ym", ym2151_w)
49   AM_RANGE(0x120000, 0x120001) AM_DEVWRITE("oki", okim6295_w)
50   AM_RANGE(0x130000, 0x130001) AM_WRITENOP
51   AM_RANGE(0x1f0000, 0x1f1fff) AM_WRITE(SMH_BANK8)
42   AM_RANGE(0x1f0000, 0x1f1fff) AM_RAMBANK(8)
5243   AM_RANGE(0x1fec00, 0x1fec01) AM_WRITE(h6280_timer_w)
5344   AM_RANGE(0x1ff400, 0x1ff403) AM_WRITE(h6280_irq_status_w)
5445ADDRESS_MAP_END
r4679r4680
173164
174165static void sound_irq(const device_config *device, int state)
175166{
176   cpu_set_input_line(device->machine->cpu[1],1,state); /* IRQ 2 */
167   cputag_set_input_line(device->machine, "audiocpu", 1, state); /* IRQ 2 */
177168}
178169
179170static const ym2151_interface ym2151_config =
r4679r4680
188179   MDRV_CPU_VBLANK_INT("screen", irq6_line_hold)
189180
190181   MDRV_CPU_ADD("audiocpu", H6280, XTAL_32_22MHz/4/3)   /* Custom chip 45; XIN is 32.220MHZ/4, verified on pcb */
191   MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem)
182   MDRV_CPU_PROGRAM_MAP(sound_map,0)
192183
193184   /* video hardware */
194185   MDRV_SCREEN_ADD("screen", RASTER)
src/mame/drivers/taitosj.c
r4679r4680
181181static WRITE8_HANDLER( taitosj_soundcommand_w )
182182{
183183   soundlatch_w(space,offset,data);
184   if (!sndnmi_disable) cpu_set_input_line(space->machine->cpu[1],INPUT_LINE_NMI,PULSE_LINE);
184   if (!sndnmi_disable) cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
185185}
186186
187187static UINT8 input_port_4_f0;
r4679r4680
199199
200200static ADDRESS_MAP_START( taitosj_main_nomcu_map, ADDRESS_SPACE_PROGRAM, 8 )
201201   AM_RANGE(0x0000, 0x5fff) AM_ROM
202   AM_RANGE(0x6000, 0x7fff) AM_READWRITE(SMH_BANK1, SMH_ROM)
202   AM_RANGE(0x6000, 0x7fff) AM_READWRITE(SMH_BANK(1), SMH_ROM)
203203   AM_RANGE(0x8000, 0x87ff) AM_RAM
204204   AM_RANGE(0x8800, 0x8800) AM_MIRROR(0x07fe) AM_READWRITE(taitosj_fake_data_r, taitosj_fake_data_w)
205205   AM_RANGE(0x8801, 0x8801) AM_MIRROR(0x07fe) AM_READ(taitosj_fake_status_r)
r4679r4680
239239/* only difference is taitosj_fake_ replaced with taitosj_mcu_ */
240240static ADDRESS_MAP_START( taitosj_main_mcu_map, ADDRESS_SPACE_PROGRAM, 8 )
241241   AM_RANGE(0x0000, 0x5fff) AM_ROM
242   AM_RANGE(0x6000, 0x7fff) AM_READWRITE(SMH_BANK1, SMH_ROM)
242   AM_RANGE(0x6000, 0x7fff) AM_READWRITE(SMH_BANK(1), SMH_ROM)
243243   AM_RANGE(0x8000, 0x87ff) AM_RAM
244244   AM_RANGE(0x8800, 0x8800) AM_MIRROR(0x07fe) AM_READWRITE(taitosj_mcu_data_r, taitosj_mcu_data_w)
245245   AM_RANGE(0x8801, 0x8801) AM_MIRROR(0x07fe) AM_READ(taitosj_mcu_status_r)
r4679r4680
302302
303303static ADDRESS_MAP_START( kikstart_main_map, ADDRESS_SPACE_PROGRAM, 8 )
304304   AM_RANGE(0x0000, 0x5fff) AM_ROM
305   AM_RANGE(0x6000, 0x7fff) AM_READWRITE(SMH_BANK1, SMH_ROM)
305   AM_RANGE(0x6000, 0x7fff) AM_READWRITE(SMH_BANK(1), SMH_ROM)
306306   AM_RANGE(0x8000, 0x87ff) AM_RAM
307307   AM_RANGE(0x8800, 0x8800) AM_READWRITE(taitosj_mcu_data_r, taitosj_mcu_data_w)
308308   AM_RANGE(0x8801, 0x8801) AM_READ(taitosj_mcu_status_r)
r4679r4680
711711INPUT_PORTS_END
712712
713713static INPUT_PORTS_START( piratpet )
714   COMMON_IN0
714   PORT_INCLUDE( junglek )
715715
716   COMMON_IN1 //Button 2 skips levels when Debug mode is on
716   /* These 'skip' bits actually work no matter how you set the Debug Dip!          */
717   /* If cabinet is upright -> only 1 set of controls -> only P1 Skip Next Level    */
718   /* If cabinet is cocktal -> 2 sets of controls -> both Skip Next Level bits work */
719   PORT_MODIFY("IN0")
720   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_Q) PORT_NAME("P1 Skip Next Level")   // Button 2 skips levels when Debug dips is on
717721
718   COMMON_IN2
722   PORT_MODIFY("IN1")
723   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_W) PORT_NAME("P2 Skip Next Level")   // Button 2 skips levels when Debug dips is on
719724
720   COMMON_IN3(IP_ACTIVE_HIGH)
721
722   PORT_START("IN4")
723   PORT_BIT( 0x0f, IP_ACTIVE_LOW, IPT_UNKNOWN )
724   PORT_BIT( 0xf0, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM(input_port_4_f0_r, NULL)   // from sound CPU
725
726   PORT_START("DSW1")
727   PORT_DIPNAME( 0x03, 0x03, "Finish Bonus" )
728   PORT_DIPSETTING(    0x03, DEF_STR( None ) )
729   PORT_DIPSETTING(    0x02, "Timer x1" )
730   PORT_DIPSETTING(    0x01, "Timer x2" )
731   PORT_DIPSETTING(    0x00, "Timer x3" )
725   PORT_MODIFY("DSW1")
732726   PORT_DIPNAME( 0x04, 0x04, "Debug Mode" )
733727   PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
734728   PORT_DIPSETTING(    0x00, DEF_STR( On ) )
735   PORT_DIPNAME( 0x18, 0x18, DEF_STR( Lives ) )
736   PORT_DIPSETTING(    0x18, "3" )
737   PORT_DIPSETTING(    0x10, "4" )
738   PORT_DIPSETTING(    0x08, "5" )
739   PORT_DIPSETTING(    0x00, "6" )
740   PORT_SERVICE( 0x20, IP_ACTIVE_LOW )
741   PORT_DIPNAME( 0x40, 0x00, DEF_STR( Flip_Screen ) )
742   PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
743   PORT_DIPSETTING(    0x40, DEF_STR( On ) )
744   PORT_DIPNAME( 0x80, 0x00, DEF_STR( Cabinet ) )
745   PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
746   PORT_DIPSETTING(    0x80, DEF_STR( Cocktail ) )
747729
748   PORT_START("DSW2")      /* Coinage */
749   DSW2_PORT
750
751   PORT_START("DSW3")
730   PORT_MODIFY("DSW3")
752731   PORT_DIPNAME( 0x03, 0x03, DEF_STR( Bonus_Life ) )
753732   PORT_DIPSETTING(    0x02, "10000" )
754733   PORT_DIPSETTING(    0x01, "20000" )
r4679r4680
763742   PORT_DIPSETTING(    0x08, DEF_STR( Hard ) )
764743   PORT_DIPSETTING(    0x04, DEF_STR( Harder ) )
765744   PORT_DIPSETTING(    0x00, DEF_STR( Hardest ) )
766   PORT_DIPNAME( 0x20, 0x20, "Year Display" )
767   PORT_DIPSETTING(    0x00, DEF_STR( No ) )
768   PORT_DIPSETTING(    0x20, DEF_STR( Yes ) )
769745   PORT_DIPNAME( 0x40, 0x40, "Free Game (Cheat)")
770746   PORT_DIPSETTING(    0x40, DEF_STR( No ) )
771747   PORT_DIPSETTING(    0x00, DEF_STR( Yes ) )
772   PORT_DIPNAME( 0x80, 0x80, DEF_STR( Coinage ) )
773   PORT_DIPSETTING(    0x80, "A and B" )
774   PORT_DIPSETTING(    0x00, "A only" )
775748INPUT_PORTS_END
776749
777750static INPUT_PORTS_START( alpine )
r4679r4680
27312704   init_common(machine);
27322705
27332706   /* install protection handler */
2734   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xd48b, 0xd48b, 0, 0, spacecr_prot_r);
2707   memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xd48b, 0xd48b, 0, 0, spacecr_prot_r);
27352708}
27362709
27372710static DRIVER_INIT( alpine )
r4679r4680
27392712   init_common(machine);
27402713
27412714   /* install protection handlers */
2742   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xd40b, 0xd40b, 0, 0, alpine_port_2_r);
2743   memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xd50f, 0xd50f, 0, 0, alpine_protection_w);
2715   memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xd40b, 0xd40b, 0, 0, alpine_port_2_r);
2716   memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xd50f, 0xd50f, 0, 0, alpine_protection_w);
27442717}
27452718
27462719static DRIVER_INIT( alpinea )
r4679r4680
27482721   init_common(machine);
27492722
27502723   /* install protection handlers */
2751   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xd40b, 0xd40b, 0, 0, alpine_port_2_r);
2752   memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xd50e, 0xd50e, 0, 0, alpinea_bankswitch_w);
2724   memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xd40b, 0xd40b, 0, 0, alpine_port_2_r);
2725   memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xd50e, 0xd50e, 0, 0, alpinea_bankswitch_w);
27532726}
27542727
27552728static DRIVER_INIT( junglhbr )
r4679r4680
27572730   init_common(machine);
27582731
27592732   /* inverter on bits 0 and 1 */
2760   memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x9000, 0xbfff, 0, 0, junglhbr_characterram_w);
2733   memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x9000, 0xbfff, 0, 0, junglhbr_characterram_w);
27612734}
27622735
27632736GAME( 1981, spaceskr, 0,        nomcu,    spaceskr,   taitosj, ROT0,   "Taito Corporation", "Space Seeker", GAME_SUPPORTS_SAVE )
src/mame/drivers/vigilant.c
r4679r4680
7373
7474
7575static ADDRESS_MAP_START( vigilant_map, ADDRESS_SPACE_PROGRAM, 8 )
76   AM_RANGE(0x8000, 0xbfff) AM_READ(SMH_BANK1)      /* Fallthrough */
76   AM_RANGE(0x8000, 0xbfff) AM_READ(SMH_BANK(1))      /* Fallthrough */
7777   AM_RANGE(0x0000, 0x7fff) AM_ROM
7878   AM_RANGE(0xc020, 0xc0df) AM_RAM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
7979   AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(vigilant_paletteram_w) AM_BASE(&paletteram)
r4679r4680
9494ADDRESS_MAP_END
9595
9696static ADDRESS_MAP_START( kikcubic_map, ADDRESS_SPACE_PROGRAM, 8 )
97   AM_RANGE(0x8000, 0xbfff) AM_READ(SMH_BANK1)      /* Fallthrough */
97   AM_RANGE(0x8000, 0xbfff) AM_READ(SMH_BANK(1))      /* Fallthrough */
9898   AM_RANGE(0x0000, 0x7fff) AM_ROM
9999   AM_RANGE(0xc000, 0xc0ff) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
100100   AM_RANGE(0xc800, 0xcaff) AM_RAM_WRITE(vigilant_paletteram_w) AM_BASE(&paletteram)
src/mame/drivers/kingobox.c
r4679r4680
33King of Boxer - (c) 1985 Woodplace Inc.
44Ring King     - (c) 1985 Data East USA Inc. / Woodplace Inc.
55
6Preliminary driver by:
6Driver by:
77Ernesto Corvi
88ernesto@imagina.com
99
r4679r4680
4040extern VIDEO_START( ringking );
4141extern VIDEO_UPDATE( ringking );
4242
43static UINT8 *video_shared;
44static UINT8 *sprite_shared;
4543int kingofb_nmi_enable = 0;
4644
47static READ8_HANDLER( video_shared_r ) {
48   return video_shared[offset];
45static WRITE8_HANDLER( video_interrupt_w )
46{
47   cputag_set_input_line_and_vector(space->machine, "video", 0, HOLD_LINE, 0xff );
4948}
5049
51static WRITE8_HANDLER( video_shared_w ) {
52   video_shared[offset] = data;
50static WRITE8_HANDLER( sprite_interrupt_w )
51{
52   cputag_set_input_line_and_vector(space->machine, "sprite", 0, HOLD_LINE, 0xff );
5353}
5454
55static READ8_HANDLER( sprite_shared_r ) {
56   return sprite_shared[offset];
57}
58
59static WRITE8_HANDLER( sprite_shared_w ) {
60   sprite_shared[offset] = data;
61}
62
63static WRITE8_HANDLER( video_interrupt_w ) {
64   cpu_set_input_line_and_vector(space->machine->cpu[1], 0, HOLD_LINE, 0xff );
65}
66
67static WRITE8_HANDLER( sprite_interrupt_w ) {
68   cpu_set_input_line_and_vector(space->machine->cpu[2], 0, HOLD_LINE, 0xff );
69}
70
71static WRITE8_HANDLER( scroll_interrupt_w ) {
55static WRITE8_HANDLER( scroll_interrupt_w )
56{
7257   sprite_interrupt_w( space, offset, data );
7358   *kingofb_scroll_y = data;
7459}
7560
76static WRITE8_HANDLER( sound_command_w ) {
61static WRITE8_HANDLER( sound_command_w )
62{
7763   soundlatch_w( space, 0, data );
78   cpu_set_input_line_and_vector(space->machine->cpu[3], 0, HOLD_LINE, 0xff );
64   cputag_set_input_line_and_vector(space->machine, "audiocpu", 0, HOLD_LINE, 0xff );
7965}
8066
8167
82static ADDRESS_MAP_START( main_readmem, ADDRESS_SPACE_PROGRAM, 8 )
83    AM_RANGE(0x0000, 0xbfff) AM_READ(SMH_ROM)
84    AM_RANGE(0xc000, 0xc3ff) AM_READ(SMH_RAM) /* work ram */
85    AM_RANGE(0xe000, 0xe7ff) AM_READ(sprite_shared_r)
86    AM_RANGE(0xe800, 0xefff) AM_READ(video_shared_r)
87    AM_RANGE(0xf000, 0xf7ff) AM_READ(SMH_RAM) /* ???? */
88    AM_RANGE(0xfc00, 0xfc00) AM_READ_PORT("DSW1")
89    AM_RANGE(0xfc01, 0xfc01) AM_READ_PORT("DSW2")
90    AM_RANGE(0xfc02, 0xfc02) AM_READ_PORT("P1")
91    AM_RANGE(0xfc03, 0xfc03) AM_READ_PORT("P2")
92    AM_RANGE(0xfc04, 0xfc04) AM_READ_PORT("SYSTEM")
93    AM_RANGE(0xfc05, 0xfc05) AM_READ_PORT("EXTRA")
68static ADDRESS_MAP_START( kingobox_map, ADDRESS_SPACE_PROGRAM, 8 )
69   AM_RANGE(0x0000, 0xbfff) AM_ROM
70   AM_RANGE(0xc000, 0xc3ff) AM_RAM /* work ram */
71   AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_SHARE(2) /* shared with sprite cpu */
72   AM_RANGE(0xe800, 0xefff) AM_RAM AM_SHARE(1) /* shared with video cpu */
73   AM_RANGE(0xf000, 0xf7ff) AM_RAM /* ???? */
74   AM_RANGE(0xf800, 0xf800) AM_WRITE(kingofb_f800_w)   /* NMI enable, palette bank */
75   AM_RANGE(0xf801, 0xf801) AM_WRITENOP /* ???? */
76   AM_RANGE(0xf802, 0xf802) AM_WRITEONLY AM_BASE(&kingofb_scroll_y)
77   AM_RANGE(0xf803, 0xf803) AM_WRITE(scroll_interrupt_w)
78   AM_RANGE(0xf804, 0xf804) AM_WRITE(video_interrupt_w)
79   AM_RANGE(0xf807, 0xf807) AM_WRITE(sound_command_w) /* sound latch */
80   AM_RANGE(0xfc00, 0xfc00) AM_READ_PORT("DSW1")
81   AM_RANGE(0xfc01, 0xfc01) AM_READ_PORT("DSW2")
82   AM_RANGE(0xfc02, 0xfc02) AM_READ_PORT("P1")
83   AM_RANGE(0xfc03, 0xfc03) AM_READ_PORT("P2")
84   AM_RANGE(0xfc04, 0xfc04) AM_READ_PORT("SYSTEM")
85   AM_RANGE(0xfc05, 0xfc05) AM_READ_PORT("EXTRA")
9486ADDRESS_MAP_END
9587
96static ADDRESS_MAP_START( main_writemem, ADDRESS_SPACE_PROGRAM, 8 )
97    AM_RANGE(0x0000, 0xbfff) AM_WRITE(SMH_ROM)
98    AM_RANGE(0xc000, 0xc3ff) AM_WRITE(SMH_RAM) /* work ram */
99    AM_RANGE(0xe000, 0xe7ff) AM_WRITE(sprite_shared_w) /* shared with sprite cpu */
100    AM_RANGE(0xe800, 0xefff) AM_WRITE(video_shared_w) /* shared with video cpu */
101    AM_RANGE(0xf000, 0xf7ff) AM_WRITE(SMH_RAM) /* ???? */
102    AM_RANGE(0xf800, 0xf800) AM_WRITE(kingofb_f800_w)   /* NMI enable, palette bank */
103    AM_RANGE(0xf801, 0xf801) AM_WRITENOP /* ???? */
104    AM_RANGE(0xf802, 0xf802) AM_WRITE(SMH_RAM) AM_BASE(&kingofb_scroll_y)
105    AM_RANGE(0xf803, 0xf803) AM_WRITE(scroll_interrupt_w)
106    AM_RANGE(0xf804, 0xf804) AM_WRITE(video_interrupt_w)
107    AM_RANGE(0xf807, 0xf807) AM_WRITE(sound_command_w) /* sound latch */
88static ADDRESS_MAP_START( kingobox_video_map, ADDRESS_SPACE_PROGRAM, 8 )
89   AM_RANGE(0x0000, 0x3fff) AM_ROM
90   AM_RANGE(0x8000, 0x87ff) AM_RAM /* work ram */
91   AM_RANGE(0xa000, 0xa7ff) AM_RAM AM_SHARE(1) /* shared with main */
92   AM_RANGE(0xc000, 0xc0ff) AM_RAM_WRITE(kingofb_videoram_w) AM_BASE(&videoram) /* background vram */
93   AM_RANGE(0xc400, 0xc4ff) AM_RAM_WRITE(kingofb_colorram_w) AM_BASE(&colorram) /* background colorram */
94   AM_RANGE(0xc800, 0xcbff) AM_RAM_WRITE(kingofb_videoram2_w) AM_BASE(&kingofb_videoram2) /* foreground vram */
95   AM_RANGE(0xcc00, 0xcfff) AM_RAM_WRITE(kingofb_colorram2_w) AM_BASE(&kingofb_colorram2) /* foreground colorram */
10896ADDRESS_MAP_END
10997
110static ADDRESS_MAP_START( video_readmem, ADDRESS_SPACE_PROGRAM, 8 )
111    AM_RANGE(0x0000, 0x3fff) AM_READ(SMH_ROM)
112    AM_RANGE(0x8000, 0x87ff) AM_READ(SMH_RAM) /* work ram */
113    AM_RANGE(0xa000, 0xa7ff) AM_READ(video_shared_r) /* shared with main */
114    AM_RANGE(0xc000, 0xc0ff) AM_READ(SMH_RAM) /* background vram */
115    AM_RANGE(0xc400, 0xc4ff) AM_READ(SMH_RAM) /* background colorram */
116    AM_RANGE(0xc800, 0xcbff) AM_READ(SMH_RAM) /* foreground vram */
117    AM_RANGE(0xcc00, 0xcfff) AM_READ(SMH_RAM) /* foreground colorram */
98static ADDRESS_MAP_START( kingobox_sprite_map, ADDRESS_SPACE_PROGRAM, 8 )
99   AM_RANGE(0x0000, 0x1fff) AM_ROM
100   AM_RANGE(0x8000, 0x87ff) AM_RAM /* work ram */
101   AM_RANGE(0xa000, 0xa7ff) AM_RAM AM_SHARE(2) /* shared with main */
102   AM_RANGE(0xc000, 0xc3ff) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size) /* sprite ram */
103   AM_RANGE(0xc400, 0xc43f) AM_RAM  /* something related to scroll? */
118104ADDRESS_MAP_END
119105
120static ADDRESS_MAP_START( video_writemem, ADDRESS_SPACE_PROGRAM, 8 )
121    AM_RANGE(0x0000, 0x3fff) AM_WRITE(SMH_ROM)
122    AM_RANGE(0x8000, 0x87ff) AM_WRITE(SMH_RAM) /* work ram */
123    AM_RANGE(0xa000, 0xa7ff) AM_WRITE(video_shared_w) AM_BASE(&video_shared) /* shared with main */
124    AM_RANGE(0xc000, 0xc0ff) AM_WRITE(kingofb_videoram_w) AM_BASE(&videoram) /* background vram */
125    AM_RANGE(0xc400, 0xc4ff) AM_WRITE(kingofb_colorram_w) AM_BASE(&colorram) /* background colorram */
126    AM_RANGE(0xc800, 0xcbff) AM_WRITE(kingofb_videoram2_w) AM_BASE(&kingofb_videoram2) /* foreground vram */
127    AM_RANGE(0xcc00, 0xcfff) AM_WRITE(kingofb_colorram2_w) AM_BASE(&kingofb_colorram2) /* foreground colorram */
106static ADDRESS_MAP_START( kingobox_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
107   AM_RANGE(0x0000, 0xbfff) AM_ROM
108   AM_RANGE(0x8000, 0x8000) AM_WRITENOP /* ??? */
109    AM_RANGE(0xc000, 0xc3ff) AM_RAM /* work ram */
128110ADDRESS_MAP_END
129111
130static ADDRESS_MAP_START( sprite_readmem, ADDRESS_SPACE_PROGRAM, 8 )
131    AM_RANGE(0x0000, 0x1fff) AM_READ(SMH_ROM)
132    AM_RANGE(0x8000, 0x87ff) AM_READ(SMH_RAM) /* work ram */
133    AM_RANGE(0xa000, 0xa7ff) AM_READ(sprite_shared_r) /* shared with main */
134    AM_RANGE(0xc000, 0xc3ff) AM_READ(SMH_RAM) /* sprite ram */
135    AM_RANGE(0xc400, 0xc43f) AM_READ(SMH_RAM) /* something related to scroll? */
136ADDRESS_MAP_END
137
138static ADDRESS_MAP_START( sprite_writemem, ADDRESS_SPACE_PROGRAM, 8 )
139    AM_RANGE(0x0000, 0x1fff) AM_WRITE(SMH_ROM)
140    AM_RANGE(0x8000, 0x87ff) AM_WRITE(SMH_RAM) /* work ram */
141    AM_RANGE(0xa000, 0xa7ff) AM_WRITE(sprite_shared_w) AM_BASE(&sprite_shared) /* shared with main */
142    AM_RANGE(0xc000, 0xc3ff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size) /* sprite ram */
143    AM_RANGE(0xc400, 0xc43f) AM_WRITE(SMH_RAM)  /* something related to scroll? */
144ADDRESS_MAP_END
145
146static ADDRESS_MAP_START( sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
147    AM_RANGE(0x0000, 0xbfff) AM_READ(SMH_ROM)
148    AM_RANGE(0xc000, 0xc3ff) AM_READ(SMH_RAM) /* work ram */
149ADDRESS_MAP_END
150
151static ADDRESS_MAP_START( sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
152    AM_RANGE(0x8000, 0x8000) AM_WRITENOP /* ??? */
153    AM_RANGE(0x0000, 0xbfff) AM_WRITE(SMH_ROM)
154    AM_RANGE(0xc000, 0xc3ff) AM_WRITE(SMH_RAM) /* work ram */
155ADDRESS_MAP_END
156
157static ADDRESS_MAP_START( sound_io_map, ADDRESS_SPACE_IO, 8 )
112static ADDRESS_MAP_START( kingobox_sound_io_map, ADDRESS_SPACE_IO, 8 )
158113   ADDRESS_MAP_GLOBAL_MASK(0xff)
159114   AM_RANGE(0x00, 0x00) AM_DEVWRITE("dac", dac_w)
160115   AM_RANGE(0x08, 0x08) AM_DEVREADWRITE("ay", ay8910_r, ay8910_data_w)
r4679r4680
162117ADDRESS_MAP_END
163118
164119/* Ring King */
165static ADDRESS_MAP_START( rk_main_readmem, ADDRESS_SPACE_PROGRAM, 8 )
166    AM_RANGE(0x0000, 0xbfff) AM_READ(SMH_ROM)
167    AM_RANGE(0xc000, 0xc3ff) AM_READ(SMH_RAM) /* work ram */
168    AM_RANGE(0xc800, 0xcfff) AM_READ(sprite_shared_r)
169    AM_RANGE(0xd000, 0xd7ff) AM_READ(video_shared_r)
170    AM_RANGE(0xe000, 0xe000) AM_READ_PORT("DSW1")
171    AM_RANGE(0xe001, 0xe001) AM_READ_PORT("DSW2")
172    AM_RANGE(0xe002, 0xe002) AM_READ_PORT("P1")
173    AM_RANGE(0xe003, 0xe003) AM_READ_PORT("P2")
174    AM_RANGE(0xe004, 0xe004) AM_READ_PORT("SYSTEM")
175    AM_RANGE(0xe005, 0xe005) AM_READ_PORT("EXTRA")
176    AM_RANGE(0xf000, 0xf7ff) AM_READ(SMH_RAM) /* ???? */
120static ADDRESS_MAP_START( ringking_map, ADDRESS_SPACE_PROGRAM, 8 )
121   AM_RANGE(0x0000, 0xbfff) AM_ROM
122   AM_RANGE(0xc000, 0xc3ff) AM_RAM /* work ram */
123   AM_RANGE(0xc800, 0xcfff) AM_RAM AM_SHARE(2) /* shared with sprite cpu */
124   AM_RANGE(0xd000, 0xd7ff) AM_RAM AM_SHARE(1) /* shared with video cpu */
125   AM_RANGE(0xd800, 0xd800) AM_WRITE(kingofb_f800_w)
126   AM_RANGE(0xd801, 0xd801) AM_WRITE(sprite_interrupt_w)
127   AM_RANGE(0xd802, 0xd802) AM_WRITE(video_interrupt_w)
128   AM_RANGE(0xd803, 0xd803) AM_WRITE(sound_command_w)
129   AM_RANGE(0xe000, 0xe000) AM_READ_PORT("DSW1")
130   AM_RANGE(0xe001, 0xe001) AM_READ_PORT("DSW2")
131   AM_RANGE(0xe002, 0xe002) AM_READ_PORT("P1")
132   AM_RANGE(0xe003, 0xe003) AM_READ_PORT("P2")
133   AM_RANGE(0xe004, 0xe004) AM_READ_PORT("SYSTEM")
134   AM_RANGE(0xe005, 0xe005) AM_READ_PORT("EXTRA")
135   AM_RANGE(0xe800, 0xe800) AM_WRITEONLY AM_BASE(&kingofb_scroll_y)
136   AM_RANGE(0xf000, 0xf7ff) AM_RAM /* ???? */
177137ADDRESS_MAP_END
178138
179static ADDRESS_MAP_START( rk_main_writemem, ADDRESS_SPACE_PROGRAM, 8 )
180    AM_RANGE(0x0000, 0xbfff) AM_WRITE(SMH_ROM)
181    AM_RANGE(0xc000, 0xc3ff) AM_WRITE(SMH_RAM) /* work ram */
182    AM_RANGE(0xc800, 0xcfff) AM_WRITE(sprite_shared_w)
183    AM_RANGE(0xd000, 0xd7ff) AM_WRITE(video_shared_w)
184    AM_RANGE(0xd800, 0xd800) AM_WRITE(kingofb_f800_w)
185    AM_RANGE(0xd801, 0xd801) AM_WRITE(sprite_interrupt_w)
186    AM_RANGE(0xd802, 0xd802) AM_WRITE(video_interrupt_w)
187    AM_RANGE(0xd803, 0xd803) AM_WRITE(sound_command_w)
188    AM_RANGE(0xe800, 0xe800) AM_WRITE(SMH_RAM) AM_BASE(&kingofb_scroll_y)
189    AM_RANGE(0xf000, 0xf7ff) AM_WRITE(SMH_RAM) /* ???? */
139static ADDRESS_MAP_START( ringking_video_map, ADDRESS_SPACE_PROGRAM, 8 )
140   AM_RANGE(0x0000, 0x3fff) AM_ROM
141   AM_RANGE(0x8000, 0x87ff) AM_RAM /* work ram */
142   AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_SHARE(1) /* shared with main */
143   AM_RANGE(0xa800, 0xa8ff) AM_RAM_WRITE(kingofb_videoram_w) AM_BASE(&videoram) /* background vram */
144   AM_RANGE(0xac00, 0xacff) AM_RAM_WRITE(kingofb_colorram_w) AM_BASE(&colorram) /* background colorram */
145   AM_RANGE(0xa000, 0xa3ff) AM_RAM_WRITE(kingofb_videoram2_w) AM_BASE(&kingofb_videoram2) /* foreground vram */
146   AM_RANGE(0xa400, 0xa7ff) AM_RAM_WRITE(kingofb_colorram2_w) AM_BASE(&kingofb_colorram2) /* foreground colorram */
190147ADDRESS_MAP_END
191148
192static ADDRESS_MAP_START( rk_video_readmem, ADDRESS_SPACE_PROGRAM, 8 )
193    AM_RANGE(0x0000, 0x3fff) AM_READ(SMH_ROM)
194    AM_RANGE(0x8000, 0x87ff) AM_READ(SMH_RAM) /* work ram */
195    AM_RANGE(0xc000, 0xc7ff) AM_READ(video_shared_r) /* shared with main */
196    AM_RANGE(0xa800, 0xa8ff) AM_READ(SMH_RAM) /* background vram */
197    AM_RANGE(0xac00, 0xacff) AM_READ(SMH_RAM) /* background colorram */
198    AM_RANGE(0xa000, 0xa3ff) AM_READ(SMH_RAM) /* foreground vram */
199    AM_RANGE(0xa400, 0xa7ff) AM_READ(SMH_RAM) /* foreground colorram */
149static ADDRESS_MAP_START( ringking_sprite_map, ADDRESS_SPACE_PROGRAM, 8 )
150   AM_RANGE(0x0000, 0x1fff) AM_ROM
151   AM_RANGE(0x8000, 0x87ff) AM_RAM /* work ram */
152   AM_RANGE(0xc800, 0xcfff) AM_RAM AM_SHARE(2) /* shared with main */
153   AM_RANGE(0xa000, 0xa3ff) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size) /* sprite ram */
154   AM_RANGE(0xa400, 0xa43f) AM_RAM /* something related to scroll? */
200155ADDRESS_MAP_END
201156
202static ADDRESS_MAP_START( rk_video_writemem, ADDRESS_SPACE_PROGRAM, 8 )
203    AM_RANGE(0x0000, 0x3fff) AM_WRITE(SMH_ROM)
204    AM_RANGE(0x8000, 0x87ff) AM_WRITE(SMH_RAM) /* work ram */
205    AM_RANGE(0xc000, 0xc7ff) AM_WRITE(video_shared_w) AM_BASE(&video_shared) /* shared with main */
206    AM_RANGE(0xa800, 0xa8ff) AM_WRITE(kingofb_videoram_w) AM_BASE(&videoram) /* background vram */
207    AM_RANGE(0xac00, 0xacff) AM_WRITE(kingofb_colorram_w) AM_BASE(&colorram) /* background colorram */
208    AM_RANGE(0xa000, 0xa3ff) AM_WRITE(kingofb_videoram2_w) AM_BASE(&kingofb_videoram2) /* foreground vram */
209    AM_RANGE(0xa400, 0xa7ff) AM_WRITE(kingofb_colorram2_w) AM_BASE(&kingofb_colorram2) /* foreground colorram */
210ADDRESS_MAP_END
211
212static ADDRESS_MAP_START( rk_sprite_readmem, ADDRESS_SPACE_PROGRAM, 8 )
213    AM_RANGE(0x0000, 0x1fff) AM_READ(SMH_ROM)
214    AM_RANGE(0x8000, 0x87ff) AM_READ(SMH_RAM) /* work ram */
215    AM_RANGE(0xc800, 0xcfff) AM_READ(sprite_shared_r) /* shared with main */
216    AM_RANGE(0xa000, 0xa3ff) AM_READ(SMH_RAM) /* sprite ram */
217    AM_RANGE(0xa400, 0xa43f) AM_READ(SMH_RAM) /* something related to scroll? */
218ADDRESS_MAP_END
219
220static ADDRESS_MAP_START( rk_sprite_writemem, ADDRESS_SPACE_PROGRAM, 8 )
221    AM_RANGE(0x0000, 0x1fff) AM_WRITE(SMH_ROM)
222    AM_RANGE(0x8000, 0x87ff) AM_WRITE(SMH_RAM) /* work ram */
223    AM_RANGE(0xc800, 0xcfff) AM_WRITE(sprite_shared_w) AM_BASE(&sprite_shared) /* shared with main */
224    AM_RANGE(0xa000, 0xa3ff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size) /* sprite ram */
225    AM_RANGE(0xa400, 0xa43f) AM_WRITE(SMH_RAM)  /* something related to scroll? */
226ADDRESS_MAP_END
227
228static ADDRESS_MAP_START( rk_sound_io_map, ADDRESS_SPACE_IO, 8 )
157static ADDRESS_MAP_START( ringking_sound_io_map, ADDRESS_SPACE_IO, 8 )
229158   ADDRESS_MAP_GLOBAL_MASK(0xff)
230159   AM_RANGE(0x00, 0x00) AM_DEVWRITE("dac", dac_w)
231160   AM_RANGE(0x02, 0x02) AM_DEVREAD("ay", ay8910_r)
r4679r4680
534463   DEVCB_MEMORY_HANDLER("audiocpu", PROGRAM, soundlatch_r)
535464};
536465
537static INTERRUPT_GEN( kingofb_interrupt ) {
466static INTERRUPT_GEN( kingofb_interrupt )
467{
538468
539469   if ( kingofb_nmi_enable )
540470      cpu_set_input_line(device, INPUT_LINE_NMI, PULSE_LINE);
r4679r4680
544474
545475   /* basic machine hardware */
546476   MDRV_CPU_ADD("maincpu", Z80, 4000000)        /* 4.0 MHz */
547   MDRV_CPU_PROGRAM_MAP(main_readmem,main_writemem)
477   MDRV_CPU_PROGRAM_MAP(kingobox_map,0)
548478   MDRV_CPU_VBLANK_INT("screen", kingofb_interrupt)
549479
550480   MDRV_CPU_ADD("video", Z80, 4000000)        /* 4.0 MHz */
551   MDRV_CPU_PROGRAM_MAP(video_readmem,video_writemem)
481   MDRV_CPU_PROGRAM_MAP(kingobox_video_map,0)
552482   MDRV_CPU_VBLANK_INT("screen", kingofb_interrupt)
553483
554484   MDRV_CPU_ADD("sprite", Z80, 4000000)        /* 4.0 MHz */
555   MDRV_CPU_PROGRAM_MAP(sprite_readmem,sprite_writemem)
485   MDRV_CPU_PROGRAM_MAP(kingobox_sprite_map,0)
556486   MDRV_CPU_VBLANK_INT("screen", kingofb_interrupt)
557487
558488   MDRV_CPU_ADD("audiocpu", Z80, 4000000)        /* 4.0 MHz */
559   MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem)
560   MDRV_CPU_IO_MAP(sound_io_map,0)
489   MDRV_CPU_PROGRAM_MAP(kingobox_sound_map,0)
490   MDRV_CPU_IO_MAP(ringking_sound_io_map,0)
561491   MDRV_CPU_PERIODIC_INT(nmi_line_pulse, 6000)   /* Hz */
562492
563493   MDRV_QUANTUM_TIME(HZ(6000)) /* We really need heavy synching among the processors */
r4679r4680
594524
595525   /* basic machine hardware */
596526   MDRV_CPU_ADD("maincpu", Z80, 4000000)        /* 4.0 MHz */
597   MDRV_CPU_PROGRAM_MAP(rk_main_readmem,rk_main_writemem)
527   MDRV_CPU_PROGRAM_MAP(ringking_map,0)
598528   MDRV_CPU_VBLANK_INT("screen", kingofb_interrupt)
599529
600530   MDRV_CPU_ADD("video", Z80, 4000000)        /* 4.0 MHz */
601   MDRV_CPU_PROGRAM_MAP(rk_video_readmem,rk_video_writemem)
531   MDRV_CPU_PROGRAM_MAP(ringking_video_map,0)
602532   MDRV_CPU_VBLANK_INT("screen", kingofb_interrupt)
603533
604534   MDRV_CPU_ADD("sprite", Z80, 4000000)        /* 4.0 MHz */
605   MDRV_CPU_PROGRAM_MAP(rk_sprite_readmem,rk_sprite_writemem)
535   MDRV_CPU_PROGRAM_MAP(ringking_sprite_map,0)
606536   MDRV_CPU_VBLANK_INT("screen", kingofb_interrupt)
607537
608538   MDRV_CPU_ADD("audiocpu", Z80, 4000000)        /* 4.0 MHz */
609   MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem)
610   MDRV_CPU_IO_MAP(rk_sound_io_map,0)
539   MDRV_CPU_PROGRAM_MAP(kingobox_sound_map,0)
540   MDRV_CPU_IO_MAP(ringking_sound_io_map,0)
611541   MDRV_CPU_PERIODIC_INT(nmi_line_pulse, 6000)   /* Hz */
612542
613543   MDRV_QUANTUM_TIME(HZ(6000)) /* We really need heavy synching among the processors */
r4679r4680
889819GAME( 1985, ringkin2, kingofb, ringking, ringking, 0,        ROT90, "Data East USA", "Ring King (US set 2)", 0 )
890820GAME( 1985, ringkin3, kingofb, kingofb,  kingofb,  ringkin3, ROT90, "Data East USA", "Ring King (US set 3)", 0 )
891821GAME( 1985, ringkinw, kingofb, kingofb,  kingofb,  ringkinw, ROT90, "Woodplace", "Ring King (US, Woodplace license)", 0 )
892
src/mame/drivers/bfmsys85.c
r4679r4680
226226   for (i=0; i<8; i++)
227227   if ( changed & (1 << i) )   Mechmtr_update(i, cycles, data & (1 << i) );
228228
229   if ( data ) generic_pulse_irq_line(space->machine->cpu[0], M6809_FIRQ_LINE);
229   if ( data ) generic_pulse_irq_line(cputag_get_cpu(space->machine, "maincpu"), M6809_FIRQ_LINE);
230230}
231231///////////////////////////////////////////////////////////////////////////
232232
src/mame/drivers/galivan.c
r4679r4680
5454   UINT8 *RAM = memory_region(machine, "maincpu");
5555
5656   memory_set_bankptr(machine, 1,&RAM[0x10000]);
57   device_reset(machine->cpu[0]);
57   device_reset(cputag_get_cpu(machine, "maincpu"));
5858//  layers = 0x60;
5959}
6060
r4679r4680
102102
103103
104104
105static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 )
106   AM_RANGE(0x0000, 0xbfff) AM_READ(SMH_ROM)
107   AM_RANGE(0xc000, 0xdfff) AM_READ(SMH_BANK1)
108   AM_RANGE(0xe000, 0xffff) AM_READ(SMH_RAM)
109ADDRESS_MAP_END
105static ADDRESS_MAP_START( galivan_map, ADDRESS_SPACE_PROGRAM, 8 )
106   AM_RANGE(0x0000, 0xbfff) AM_ROM
110107
111static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 )
112   AM_RANGE(0x0000, 0xbfff) AM_WRITE(SMH_ROM)
108   // The next three entires need to be looked at.  It's ugly.
109   AM_RANGE(0xc000, 0xdfff) AM_READ(SMH_BANK(1))
113110   AM_RANGE(0xd800, 0xdbff) AM_WRITE(galivan_videoram_w) AM_BASE(&videoram) AM_SIZE(&videoram_size)
114111   AM_RANGE(0xdc00, 0xdfff) AM_WRITE(galivan_colorram_w) AM_BASE(&colorram)
115   AM_RANGE(0xe000, 0xe0ff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
116   AM_RANGE(0xe100, 0xffff) AM_WRITE(SMH_RAM)
112
113   AM_RANGE(0xe000, 0xe0ff) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
114   AM_RANGE(0xe100, 0xffff) AM_RAM
117115ADDRESS_MAP_END
118116
119static ADDRESS_MAP_START( ninjemak_writemem, ADDRESS_SPACE_PROGRAM, 8 )
120   AM_RANGE(0x0000, 0xbfff) AM_WRITE(SMH_ROM)
117static ADDRESS_MAP_START( ninjemak_map, ADDRESS_SPACE_PROGRAM, 8 )
118   AM_RANGE(0x0000, 0xbfff) AM_ROM
119
120   // The next three entires need to be looked at.  It's ugly.
121   AM_RANGE(0xc000, 0xdfff) AM_READ(SMH_BANK(1))
121122   AM_RANGE(0xd800, 0xd81f) AM_WRITE(ninjemak_videoreg_w)
122123   AM_RANGE(0xd800, 0xdbff) AM_WRITE(galivan_videoram_w) AM_BASE(&videoram) AM_SIZE(&videoram_size)
123124   AM_RANGE(0xdc00, 0xdfff) AM_WRITE(galivan_colorram_w) AM_BASE(&colorram)
124   AM_RANGE(0xe000, 0xe1ff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
125   AM_RANGE(0xe200, 0xffff) AM_WRITE(SMH_RAM)
125
126   AM_RANGE(0xe000, 0xe1ff) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
127   AM_RANGE(0xe200, 0xffff) AM_RAM
126128ADDRESS_MAP_END
127129
128130static ADDRESS_MAP_START( io_map, ADDRESS_SPACE_IO, 8 )
r4679r4680
153155//  AM_RANGE(0x87, 0x87) AM_WRITENOP         // ??
154156ADDRESS_MAP_END
155157
156static ADDRESS_MAP_START( sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
157   AM_RANGE(0x0000, 0xbfff) AM_READ(SMH_ROM)
158   AM_RANGE(0xc000, 0xc7ff) AM_READ(SMH_RAM)
158static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 )
159   AM_RANGE(0x0000, 0xbfff) AM_ROM
160   AM_RANGE(0xc000, 0xc7ff) AM_RAM
159161ADDRESS_MAP_END
160162
161static ADDRESS_MAP_START( sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
162   AM_RANGE(0x0000, 0xbfff) AM_WRITE(SMH_ROM)
163   AM_RANGE(0xc000, 0xc7ff) AM_WRITE(SMH_RAM)
164ADDRESS_MAP_END
165
166163static ADDRESS_MAP_START( sound_io_map, ADDRESS_SPACE_IO, 8 )
167164   ADDRESS_MAP_GLOBAL_MASK(0xff)
168165   AM_RANGE(0x00, 0x01) AM_DEVWRITE("ym", ym3526_w)
r4679r4680
441438
442439   /* basic machine hardware */
443440   MDRV_CPU_ADD("maincpu", Z80,12000000/2)      /* 6 MHz? */
444   MDRV_CPU_PROGRAM_MAP(readmem,writemem)
441   MDRV_CPU_PROGRAM_MAP(galivan_map,0)
445442   MDRV_CPU_IO_MAP(io_map,0)
446443   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
447444
448445   MDRV_CPU_ADD("audiocpu", Z80,8000000/2)      /* 4 MHz? */
449   MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem)
446   MDRV_CPU_PROGRAM_MAP(sound_map,0)
450447   MDRV_CPU_IO_MAP(sound_io_map,0)
451448   MDRV_CPU_PERIODIC_INT(irq0_line_hold, 7250)  /* timed interrupt, ?? Hz */
452449
r4679r4680
484481
485482   /* basic machine hardware */
486483   MDRV_CPU_ADD("maincpu", Z80,12000000/2)      /* 6 MHz? */
487   MDRV_CPU_PROGRAM_MAP(readmem,ninjemak_writemem)
484   MDRV_CPU_PROGRAM_MAP(ninjemak_map,0)
488485   MDRV_CPU_IO_MAP(ninjemak_io_map,0)
489486   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
490487
491488   MDRV_CPU_ADD("audiocpu", Z80,8000000/2)      /* 4 MHz? */
492   MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem)
489   MDRV_CPU_PROGRAM_MAP(sound_map,0)
493490   MDRV_CPU_IO_MAP(sound_io_map,0)
494491   MDRV_CPU_PERIODIC_INT(irq0_line_hold, 7250)   /* timed interrupt, ?? Hz */
495492
r4679r4680
987984
988985static DRIVER_INIT( youmab )
989986{
990   memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x82, 0x82, 0, 0, youmab_extra_bank_w); // banks rom at 0x8000? writes 0xff and 0x00 before executing code there
991   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x0000, 0x7fff, 0, 0, SMH_BANK3);
987   memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_IO), 0x82, 0x82, 0, 0, youmab_extra_bank_w); // banks rom at 0x8000? writes 0xff and 0x00 before executing code there
988   memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x0000, 0x7fff, 0, 0, (read8_space_func)SMH_BANK(3));
992989   memory_set_bankptr(machine,  3, memory_region(machine, "maincpu") );
993   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x8000, 0xbfff, 0, 0, SMH_BANK2);
990   memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x8000, 0xbfff, 0, 0, (read8_space_func)SMH_BANK(2));
994991   memory_set_bankptr(machine,  2, memory_region(machine, "user2") );
995992
996   memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x81, 0x81, 0, 0, youmab_81_w); // ?? often, alternating values
997   memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x84, 0x84, 0, 0, youmab_84_w); // ?? often, sequence..
993   memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_IO), 0x81, 0x81, 0, 0, youmab_81_w); // ?? often, alternating values
994   memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_IO), 0x84, 0x84, 0, 0, youmab_84_w); // ?? often, sequence..
998995
999   memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xd800, 0xd81f, 0, 0, SMH_NOP); // scrolling isn't here..
996   memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xd800, 0xd81f, 0, 0, (write8_space_func)SMH_NOP); // scrolling isn't here..
1000997
1001   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x8a, 0x8a, 0, 0, youmab_8a_r); // ???
998   memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_IO), 0x8a, 0x8a, 0, 0, youmab_8a_r); // ???
1002999
10031000}
10041001
src/mame/drivers/esripsys.c
r4679r4680
7878
7979static void ptm_irq(running_machine *machine, int state)
8080{
81   cpu_set_input_line(machine->cpu[ESRIPSYS_SOUND_CPU], M6809_FIRQ_LINE, state ? ASSERT_LINE : CLEAR_LINE);
81   cputag_set_input_line(machine, "sound_cpu", M6809_FIRQ_LINE, state ? ASSERT_LINE : CLEAR_LINE);
8282}
8383
8484static const ptm6840_interface ptm_intf =
r4679r4680
130130
131131static READ8_HANDLER( g_status_r )
132132{
133   int bank4 = BIT(get_rip_status(space->machine->cpu[ESRIPSYS_VIDEO_CPU]), 2);
133   int bank4 = BIT(get_rip_status(cputag_get_cpu(space->machine, "video_cpu")), 2);
134134   int vblank = video_screen_get_vblank(space->machine->primary_screen);
135135
136136   return (!vblank << 7) | (bank4 << 6) | (f_status & 0x2f);
r4679r4680
146146   bankaddress = 0x10000 + (data & 0x03) * 0x10000;
147147   memory_set_bankptr(space->machine, 1, &rom[bankaddress]);
148148
149   cpu_set_input_line(space->machine->cpu[ESRIPSYS_FRAME_CPU], M6809_FIRQ_LINE, data & 0x10 ? CLEAR_LINE : ASSERT_LINE);
150   cpu_set_input_line(space->machine->cpu[ESRIPSYS_FRAME_CPU], INPUT_LINE_NMI,  data & 0x80 ? CLEAR_LINE : ASSERT_LINE);
149   cputag_set_input_line(space->machine, "frame_cpu", M6809_FIRQ_LINE, data & 0x10 ? CLEAR_LINE : ASSERT_LINE);
150   cputag_set_input_line(space->machine, "frame_cpu", INPUT_LINE_NMI,  data & 0x80 ? CLEAR_LINE : ASSERT_LINE);
151151
152   cpu_set_input_line(space->machine->cpu[ESRIPSYS_VIDEO_CPU], INPUT_LINE_RESET, data & 0x40 ? CLEAR_LINE : ASSERT_LINE);
152   cputag_set_input_line(space->machine, "video_cpu", INPUT_LINE_RESET, data & 0x40 ? CLEAR_LINE : ASSERT_LINE);
153153
154154   /* /VBLANK IRQ acknowledge */
155155   if (!(data & 0x20))
156      cpu_set_input_line(space->machine->cpu[ESRIPSYS_GAME_CPU], M6809_IRQ_LINE, CLEAR_LINE);
156      cputag_set_input_line(space->machine, "game_cpu", M6809_IRQ_LINE, CLEAR_LINE);
157157}
158158
159159
r4679r4680
179179static READ8_HANDLER( f_status_r )
180180{
181181   int vblank = video_screen_get_vblank(space->machine->primary_screen);
182   UINT8 rip_status = get_rip_status(space->machine->cpu[ESRIPSYS_VIDEO_CPU]);
182   UINT8 rip_status = get_rip_status(cputag_get_cpu(space->machine, "video_cpu"));
183183
184184   rip_status = (rip_status & 0x18) | (BIT(rip_status, 6) << 1) |  BIT(rip_status, 7);
185185
r4679r4680
378378         }
379379         case 0x02:
380380         {
381            cpu_set_input_line(space->machine->cpu[ESRIPSYS_SOUND_CPU], INPUT_LINE_NMI, g_iodata & 4 ? CLEAR_LINE : ASSERT_LINE);
381            cputag_set_input_line(space->machine, "sound_cpu", INPUT_LINE_NMI, g_iodata & 4 ? CLEAR_LINE : ASSERT_LINE);
382382
383383            if (!(g_to_s_latch2 & 1) && (g_iodata & 1))
384384            {
r4679r4680
386386               u56a = 1;
387387
388388               /*...causing a sound CPU /IRQ */
389               cpu_set_input_line(space->machine->cpu[ESRIPSYS_SOUND_CPU], M6809_IRQ_LINE, ASSERT_LINE);
389               cputag_set_input_line(space->machine, "sound_cpu", M6809_IRQ_LINE, ASSERT_LINE);
390390            }
391391
392392            if (g_iodata & 2)
r4679r4680
439439   {
440440      io_firq_status |= 2;
441441      keypad_status |= 0x20;
442      cpu_set_input_line(field->port->machine->cpu[ESRIPSYS_GAME_CPU], M6809_FIRQ_LINE, HOLD_LINE);
442      cputag_set_input_line(field->port->machine, "game_cpu", M6809_FIRQ_LINE, HOLD_LINE);
443443   }
444444}
445445
r4679r4680
449449   {
450450      io_firq_status |= 2;
451451      coin_latch = input_port_read(field->port->machine, "COINS") << 2;
452      cpu_set_input_line(field->port->machine->cpu[ESRIPSYS_GAME_CPU], M6809_FIRQ_LINE, HOLD_LINE);
452      cputag_set_input_line(field->port->machine, "game_cpu", M6809_FIRQ_LINE, HOLD_LINE);
453453   }
454454}
455455
r4679r4680
530530   if (s_to_g_latch2 & 0x40)
531531   {
532532      u56a = 0;
533      cpu_set_input_line(space->machine->cpu[ESRIPSYS_SOUND_CPU], M6809_IRQ_LINE, CLEAR_LINE);
533      cputag_set_input_line(space->machine, "sound_cpu", M6809_IRQ_LINE, CLEAR_LINE);
534534   }
535535
536536   if (!(s_to_g_latch2 & 0x80) && (data & 0x80))
r4679r4680
676676{
677677   UINT8 *rom = memory_region(machine, "sound_data");
678678
679   fdt_a = auto_malloc(FDT_RAM_SIZE);
680   fdt_b = auto_malloc(FDT_RAM_SIZE);
681   cmos_ram = auto_malloc(CMOS_RAM_SIZE);
679   fdt_a = auto_alloc_array(machine, UINT8, FDT_RAM_SIZE);
680   fdt_b = auto_alloc_array(machine, UINT8, FDT_RAM_SIZE);
681   cmos_ram = auto_alloc_array(machine, UINT8, CMOS_RAM_SIZE);
682682
683683   ptm6840_config(machine, 0, &ptm_intf);
684684
src/mame/drivers/nbmj8991.c
r4679r4680
3030
3131#include "driver.h"
3232#include "cpu/z80/z80.h"
33#include "deprecat.h"
3433#include "nb1413m3.h"
3534#include "sound/ay8910.h"
3635#include "sound/3812intf.h"
r4679r4680
6766
6867static MACHINE_RESET( nbmj8991 )
6968{
70   if (machine->cpu[1] != NULL && cpu_get_type(machine->cpu[1]) == CPU_Z80)
69   if (cputag_get_cpu(machine, "audiocpu") != NULL && cpu_get_type(cputag_get_cpu(machine, "audiocpu")) == CPU_Z80)
7170   {
7271      memory_configure_bank(machine, 1, 0, 4, memory_region(machine, "audiocpu") + 0x8000, 0x8000);
7372      memory_set_bank(machine, 1, 0);
r4679r4680
189188}
190189
191190
192static ADDRESS_MAP_START( readmem_pstadium, ADDRESS_SPACE_PROGRAM, 8 )
193   AM_RANGE(0x0000, 0xefff) AM_READ(SMH_ROM)
194   AM_RANGE(0xf000, 0xf00f) AM_READ(nbmj8991_clut_r)
195   AM_RANGE(0xf200, 0xf3ff) AM_READ(SMH_RAM)
196   AM_RANGE(0xf800, 0xffff) AM_READ(SMH_RAM)
191static ADDRESS_MAP_START( pstadium_map, ADDRESS_SPACE_PROGRAM, 8 )
192   AM_RANGE(0x0000, 0xefff) AM_ROM
193   AM_RANGE(0xf000, 0xf00f) AM_READWRITE(nbmj8991_clut_r,nbmj8991_clut_w)
194   AM_RANGE(0xf200, 0xf3ff) AM_RAM_WRITE(nbmj8991_palette_type3_w) AM_BASE(&paletteram)
195   AM_RANGE(0xf800, 0xffff) AM_RAM AM_BASE(&nb1413m3_nvram) AM_SIZE(&nb1413m3_nvram_size)   // finalbny
197196ADDRESS_MAP_END
198197
199static ADDRESS_MAP_START( writemem_pstadium, ADDRESS_SPACE_PROGRAM, 8 )
200   AM_RANGE(0x0000, 0xefff) AM_WRITE(SMH_ROM)
201   AM_RANGE(0xf000, 0xf00f) AM_WRITE(nbmj8991_clut_w)
202   AM_RANGE(0xf200, 0xf3ff) AM_WRITE(nbmj8991_palette_type3_w) AM_BASE(&paletteram)
203   AM_RANGE(0xf800, 0xffff) AM_WRITE(SMH_RAM) AM_BASE(&nb1413m3_nvram) AM_SIZE(&nb1413m3_nvram_size)   // finalbny
198static ADDRESS_MAP_START( triplew1_map, ADDRESS_SPACE_PROGRAM, 8 )
199   AM_RANGE(0x0000, 0xefff) AM_ROM
200   AM_RANGE(0xf000, 0xf1ff) AM_RAM_WRITE(nbmj8991_palette_type3_w) AM_BASE(&paletteram)
201   AM_RANGE(0xf200, 0xf20f) AM_READWRITE(nbmj8991_clut_r,nbmj8991_clut_w)
202   AM_RANGE(0xf800, 0xffff) AM_RAM AM_BASE(&nb1413m3_nvram) AM_SIZE(&nb1413m3_nvram_size)   // mjgottub
204203ADDRESS_MAP_END
205204
206static ADDRESS_MAP_START( readmem_triplew1, ADDRESS_SPACE_PROGRAM, 8 )
207   AM_RANGE(0x0000, 0xefff) AM_READ(SMH_ROM)
208   AM_RANGE(0xf000, 0xf1ff) AM_READ(SMH_RAM)
209   AM_RANGE(0xf200, 0xf20f) AM_READ(nbmj8991_clut_r)
210   AM_RANGE(0xf800, 0xffff) AM_READ(SMH_RAM)
205static ADDRESS_MAP_START( triplew2_map, ADDRESS_SPACE_PROGRAM, 8 )
206   AM_RANGE(0x0000, 0xefff) AM_ROM
207   AM_RANGE(0xf000, 0xf1ff) AM_RAM_WRITE(nbmj8991_palette_type3_w) AM_BASE(&paletteram)
208   AM_RANGE(0xf400, 0xf40f) AM_READWRITE(nbmj8991_clut_r,nbmj8991_clut_w)
209   AM_RANGE(0xf800, 0xffff) AM_RAM
211210ADDRESS_MAP_END
212211
213static ADDRESS_MAP_START( writemem_triplew1, ADDRESS_SPACE_PROGRAM, 8 )
214   AM_RANGE(0x0000, 0xefff) AM_WRITE(SMH_ROM)
215   AM_RANGE(0xf000, 0xf1ff) AM_WRITE(nbmj8991_palette_type3_w) AM_BASE(&paletteram)
216   AM_RANGE(0xf200, 0xf20f) AM_WRITE(nbmj8991_clut_w)
217   AM_RANGE(0xf800, 0xffff) AM_WRITE(SMH_RAM) AM_BASE(&nb1413m3_nvram) AM_SIZE(&nb1413m3_nvram_size)   // mjgottub
212static ADDRESS_MAP_START( mjlstory_map, ADDRESS_SPACE_PROGRAM, 8 )
213   AM_RANGE(0x0000, 0xefff) AM_ROM
214   AM_RANGE(0xf200, 0xf3ff) AM_RAM_WRITE(nbmj8991_palette_type3_w) AM_BASE(&paletteram)
215   AM_RANGE(0xf700, 0xf70f) AM_READWRITE(nbmj8991_clut_r,nbmj8991_clut_w)
216   AM_RANGE(0xf800, 0xffff) AM_RAM
218217ADDRESS_MAP_END
219218
220static ADDRESS_MAP_START( readmem_triplew2, ADDRESS_SPACE_PROGRAM, 8 )
221   AM_RANGE(0x0000, 0xefff) AM_READ(SMH_ROM)
222   AM_RANGE(0xf000, 0xf1ff) AM_READ(SMH_RAM)
223   AM_RANGE(0xf400, 0xf40f) AM_READ(nbmj8991_clut_r)
224   AM_RANGE(0xf800, 0xffff) AM_READ(SMH_RAM)
219static ADDRESS_MAP_START( galkoku_map, ADDRESS_SPACE_PROGRAM, 8 )
220   AM_RANGE(0x0000, 0xefff) AM_ROM
221   AM_RANGE(0xf000, 0xf00f) AM_READWRITE(nbmj8991_clut_r,nbmj8991_clut_w)
222   AM_RANGE(0xf400, 0xf5ff) AM_RAM_WRITE(nbmj8991_palette_type1_w) AM_BASE(&paletteram)
223   AM_RANGE(0xf800, 0xffff) AM_RAM AM_BASE(&nb1413m3_nvram) AM_SIZE(&nb1413m3_nvram_size)   // hyouban
225224ADDRESS_MAP_END
226225
227static ADDRESS_MAP_START( writemem_triplew2, ADDRESS_SPACE_PROGRAM, 8 )
228   AM_RANGE(0x0000, 0xefff) AM_WRITE(SMH_ROM)
229   AM_RANGE(0xf000, 0xf1ff) AM_WRITE(nbmj8991_palette_type3_w) AM_BASE(&paletteram)
230   AM_RANGE(0xf400, 0xf40f) AM_WRITE(nbmj8991_clut_w)
231   AM_RANGE(0xf800, 0xffff) AM_WRITE(SMH_RAM)
226static ADDRESS_MAP_START( galkaika_map, ADDRESS_SPACE_PROGRAM, 8 )
227   AM_RANGE(0x0000, 0xefff) AM_ROM
228   AM_RANGE(0xf000, 0xf00f) AM_READWRITE(nbmj8991_clut_r,nbmj8991_clut_w)
229   AM_RANGE(0xf400, 0xf5ff) AM_RAM_WRITE(nbmj8991_palette_type2_w) AM_BASE(&paletteram)
230   AM_RANGE(0xf800, 0xffff) AM_RAM AM_BASE(&nb1413m3_nvram) AM_SIZE(&nb1413m3_nvram_size)   // tokimbsj
232231ADDRESS_MAP_END
233232
234static ADDRESS_MAP_START( readmem_mjlstory, ADDRESS_SPACE_PROGRAM, 8 )
235   AM_RANGE(0x0000, 0xefff) AM_READ(SMH_ROM)
236   AM_RANGE(0xf200, 0xf3ff) AM_READ(SMH_RAM)
237   AM_RANGE(0xf700, 0xf70f) AM_READ(nbmj8991_clut_r)
238   AM_RANGE(0xf800, 0xffff) AM_READ(SMH_RAM)
233static ADDRESS_MAP_START( tokyogal_map, ADDRESS_SPACE_PROGRAM, 8 )
234   AM_RANGE(0x0000, 0xefff) AM_ROM
235   AM_RANGE(0xf000, 0xf1ff) AM_RAM_WRITE(nbmj8991_palette_type2_w) AM_BASE(&paletteram)
236   AM_RANGE(0xf400, 0xf40f) AM_READWRITE(nbmj8991_clut_r,nbmj8991_clut_w)
237   AM_RANGE(0xf800, 0xffff) AM_RAM
239238ADDRESS_MAP_END
240239
241static ADDRESS_MAP_START( writemem_mjlstory, ADDRESS_SPACE_PROGRAM, 8 )
242   AM_RANGE(0x0000, 0xefff) AM_WRITE(SMH_ROM)
243   AM_RANGE(0xf200, 0xf3ff) AM_WRITE(nbmj8991_palette_type3_w) AM_BASE(&paletteram)
244   AM_RANGE(0xf700, 0xf70f) AM_WRITE(nbmj8991_clut_w)
245   AM_RANGE(0xf800, 0xffff) AM_WRITE(SMH_RAM)
240static ADDRESS_MAP_START( av2mj1bb_map, ADDRESS_SPACE_PROGRAM, 8 )
241   AM_RANGE(0x0000, 0xefff) AM_ROM
242   AM_RANGE(0xf000, 0xf1ff) AM_RAM_WRITE(nbmj8991_palette_type3_w) AM_BASE(&paletteram)
243   AM_RANGE(0xf500, 0xf50f) AM_READWRITE(nbmj8991_clut_r,nbmj8991_clut_w)
244   AM_RANGE(0xf800, 0xffff) AM_RAM
246245ADDRESS_MAP_END
247246
248static ADDRESS_MAP_START( readmem_galkoku, ADDRESS_SPACE_PROGRAM, 8 )
249   AM_RANGE(0x0000, 0xefff) AM_READ(SMH_ROM)
250   AM_RANGE(0xf000, 0xf00f) AM_READ(nbmj8991_clut_r)
251   AM_RANGE(0xf400, 0xf5ff) AM_READ(SMH_RAM)
252   AM_RANGE(0xf800, 0xffff) AM_READ(SMH_RAM)
247static ADDRESS_MAP_START( av2mj2rg_map, ADDRESS_SPACE_PROGRAM, 8 )
248   AM_RANGE(0x0000, 0xefff) AM_ROM
249   AM_RANGE(0xf000, 0xf00f) AM_READWRITE(nbmj8991_clut_r,nbmj8991_clut_w)
250   AM_RANGE(0xf200, 0xf3ff) AM_RAM_WRITE(nbmj8991_palette_type3_w) AM_BASE(&paletteram)
251   AM_RANGE(0xf800, 0xffff) AM_RAM
253252ADDRESS_MAP_END
254253
255static ADDRESS_MAP_START( writemem_galkoku, ADDRESS_SPACE_PROGRAM, 8 )
256   AM_RANGE(0x0000, 0xefff) AM_WRITE(SMH_ROM)
257   AM_RANGE(0xf000, 0xf00f) AM_WRITE(nbmj8991_clut_w)
258   AM_RANGE(0xf400, 0xf5ff) AM_WRITE(nbmj8991_palette_type1_w) AM_BASE(&paletteram)
259   AM_RANGE(0xf800, 0xffff) AM_WRITE(SMH_RAM) AM_BASE(&nb1413m3_nvram) AM_SIZE(&nb1413m3_nvram_size)   // hyouban
260ADDRESS_MAP_END
261
262static ADDRESS_MAP_START( readmem_galkaika, ADDRESS_SPACE_PROGRAM, 8 )
263   AM_RANGE(0x0000, 0xefff) AM_READ(SMH_ROM)
264   AM_RANGE(0xf000, 0xf00f) AM_READ(nbmj8991_clut_r)
265   AM_RANGE(0xf400, 0xf5ff) AM_READ(SMH_RAM)
266   AM_RANGE(0xf800, 0xffff) AM_READ(SMH_RAM)
267ADDRESS_MAP_END
268
269static ADDRESS_MAP_START( writemem_galkaika, ADDRESS_SPACE_PROGRAM, 8 )
270   AM_RANGE(0x0000, 0xefff) AM_WRITE(SMH_ROM)
271   AM_RANGE(0xf000, 0xf00f) AM_WRITE(nbmj8991_clut_w)
272   AM_RANGE(0xf400, 0xf5ff) AM_WRITE(nbmj8991_palette_type2_w) AM_BASE(&paletteram)
273   AM_RANGE(0xf800, 0xffff) AM_WRITE(SMH_RAM) AM_BASE(&nb1413m3_nvram) AM_SIZE(&nb1413m3_nvram_size)   // tokimbsj
274ADDRESS_MAP_END
275
276static ADDRESS_MAP_START( readmem_tokyogal, ADDRESS_SPACE_PROGRAM, 8 )
277   AM_RANGE(0x0000, 0xefff) AM_READ(SMH_ROM)
278   AM_RANGE(0xf000, 0xf1ff) AM_READ(SMH_RAM)
279   AM_RANGE(0xf400, 0xf40f) AM_READ(nbmj8991_clut_r)
280   AM_RANGE(0xf800, 0xffff) AM_READ(SMH_RAM)
281ADDRESS_MAP_END
282
283static ADDRESS_MAP_START( writemem_tokyogal, ADDRESS_SPACE_PROGRAM, 8 )
284   AM_RANGE(0x0000, 0xefff) AM_WRITE(SMH_ROM)
285   AM_RANGE(0xf000, 0xf1ff) AM_WRITE(nbmj8991_palette_type2_w) AM_BASE(&paletteram)
286   AM_RANGE(0xf400, 0xf40f) AM_WRITE(nbmj8991_clut_w)
287   AM_RANGE(0xf800, 0xffff) AM_WRITE(SMH_RAM)
288ADDRESS_MAP_END
289
290static ADDRESS_MAP_START( readmem_av2mj1bb, ADDRESS_SPACE_PROGRAM, 8 )
291   AM_RANGE(0x0000, 0xefff) AM_READ(SMH_ROM)
292   AM_RANGE(0xf000, 0xf1ff) AM_READ(SMH_RAM)
293   AM_RANGE(0xf500, 0xf50f) AM_READ(nbmj8991_clut_r)
294   AM_RANGE(0xf800, 0xffff) AM_READ(SMH_RAM)
295ADDRESS_MAP_END
296
297static ADDRESS_MAP_START( writemem_av2mj1bb, ADDRESS_SPACE_PROGRAM, 8 )
298   AM_RANGE(0x0000, 0xefff) AM_WRITE(SMH_ROM)
299   AM_RANGE(0xf000, 0xf1ff) AM_WRITE(nbmj8991_palette_type3_w) AM_BASE(&paletteram)
300   AM_RANGE(0xf500, 0xf50f) AM_WRITE(nbmj8991_clut_w)
301   AM_RANGE(0xf800, 0xffff) AM_WRITE(SMH_RAM)
302ADDRESS_MAP_END
303
304static ADDRESS_MAP_START( readmem_av2mj2rg, ADDRESS_SPACE_PROGRAM, 8 )
305   AM_RANGE(0x0000, 0xefff) AM_READ(SMH_ROM)
306   AM_RANGE(0xf000, 0xf00f) AM_READ(nbmj8991_clut_r)
307   AM_RANGE(0xf200, 0xf3ff) AM_READ(SMH_RAM)
308   AM_RANGE(0xf800, 0xffff) AM_READ(SMH_RAM)
309ADDRESS_MAP_END
310
311static ADDRESS_MAP_START( writemem_av2mj2rg, ADDRESS_SPACE_PROGRAM, 8 )
312   AM_RANGE(0x0000, 0xefff) AM_WRITE(SMH_ROM)
313   AM_RANGE(0xf000, 0xf00f) AM_WRITE(nbmj8991_clut_w)
314   AM_RANGE(0xf200, 0xf3ff) AM_WRITE(nbmj8991_palette_type3_w) AM_BASE(&paletteram)
315   AM_RANGE(0xf800, 0xffff) AM_WRITE(SMH_RAM)
316ADDRESS_MAP_END
317
318
319static ADDRESS_MAP_START( readport_galkoku, ADDRESS_SPACE_IO, 8 )
254static ADDRESS_MAP_START( galkoku_io_map, ADDRESS_SPACE_IO, 8 )
320255   ADDRESS_MAP_GLOBAL_MASK(0xff)
321   AM_RANGE(0x00, 0x7f) AM_READ(nb1413m3_sndrom_r)
322   AM_RANGE(0x90, 0x90) AM_READ(nb1413m3_inputport0_r)
323   AM_RANGE(0xa0, 0xa0) AM_READ(nb1413m3_inputport1_r)
324   AM_RANGE(0xb0, 0xb0) AM_READ(nb1413m3_inputport2_r)
325   AM_RANGE(0xc0, 0xc0) AM_READ(nb1413m3_inputport3_r)
326   AM_RANGE(0xf0, 0xf0) AM_READ(nb1413m3_dipsw1_r)
327   AM_RANGE(0xf1, 0xf1) AM_READ(nb1413m3_dipsw2_r)
328ADDRESS_MAP_END
329
330static ADDRESS_MAP_START( writeport_galkoku, ADDRESS_SPACE_IO, 8 )
331   ADDRESS_MAP_GLOBAL_MASK(0xff)
332   AM_RANGE(0x00, 0x7f) AM_WRITE(nbmj8991_blitter_w)
256   AM_RANGE(0x00, 0x7f) AM_READWRITE(nb1413m3_sndrom_r,nbmj8991_blitter_w)
333257   AM_RANGE(0x80, 0x81) AM_DEVWRITE("fm", ym3812_w)
334   AM_RANGE(0xa0, 0xa0) AM_WRITE(nb1413m3_inputportsel_w)
335   AM_RANGE(0xb0, 0xb0) AM_WRITE(nb1413m3_sndrombank1_w)
336   AM_RANGE(0xc0, 0xc0) AM_WRITE(nb1413m3_nmi_clock_w)
258   AM_RANGE(0x90, 0x90) AM_READ(nb1413m3_inputport0_r)
259   AM_RANGE(0xa0, 0xa0) AM_READWRITE(nb1413m3_inputport1_r,nb1413m3_inputportsel_w)
260   AM_RANGE(0xb0, 0xb0) AM_READWRITE(nb1413m3_inputport2_r,nb1413m3_sndrombank1_w)
261   AM_RANGE(0xc0, 0xc0) AM_READWRITE(nb1413m3_inputport3_r,nb1413m3_nmi_clock_w)
337262   AM_RANGE(0xd0, 0xd0) AM_DEVWRITE("dac", DAC_WRITE)
338263//  AM_RANGE(0xe0, 0xe0) AM_WRITENOP
339   AM_RANGE(0xf0, 0xf0) AM_WRITE(nb1413m3_outcoin_w)
340ADDRESS_MAP_END
341
342static ADDRESS_MAP_START( readport_hyouban, ADDRESS_SPACE_IO, 8 )
343   ADDRESS_MAP_GLOBAL_MASK(0xff)
344   AM_RANGE(0x00, 0x7f) AM_READ(nb1413m3_sndrom_r)
345   AM_RANGE(0x81, 0x81) AM_DEVREAD("fm", ay8910_r)
346   AM_RANGE(0x90, 0x90) AM_READ(nb1413m3_inputport0_r)
347   AM_RANGE(0xa0, 0xa0) AM_READ(nb1413m3_inputport1_r)
348   AM_RANGE(0xb0, 0xb0) AM_READ(nb1413m3_inputport2_r)
349   AM_RANGE(0xc0, 0xc0) AM_READ(nb1413m3_inputport3_r)
350   AM_RANGE(0xf0, 0xf0) AM_READ(nb1413m3_dipsw1_r)
264   AM_RANGE(0xf0, 0xf0) AM_READWRITE(nb1413m3_dipsw1_r,nb1413m3_outcoin_w)
351265   AM_RANGE(0xf1, 0xf1) AM_READ(nb1413m3_dipsw2_r)
352266ADDRESS_MAP_END
353267
354static ADDRESS_MAP_START( writeport_hyouban, ADDRESS_SPACE_IO, 8 )
268static ADDRESS_MAP_START( hyouban_io_map, ADDRESS_SPACE_IO, 8 )
355269   ADDRESS_MAP_GLOBAL_MASK(0xff)
356   AM_RANGE(0x00, 0x7f) AM_WRITE(nbmj8991_blitter_w)
270   AM_RANGE(0x00, 0x7f) AM_READWRITE(nb1413m3_sndrom_r,nbmj8991_blitter_w)
271   AM_RANGE(0x81, 0x81) AM_DEVREAD("fm", ay8910_r)
357272   AM_RANGE(0x82, 0x83) AM_DEVWRITE("fm", ay8910_data_address_w)
358   AM_RANGE(0xa0, 0xa0) AM_WRITE(nb1413m3_inputportsel_w)
359   AM_RANGE(0xb0, 0xb0) AM_WRITE(nb1413m3_sndrombank1_w)
360   AM_RANGE(0xc0, 0xc0) AM_WRITE(nb1413m3_nmi_clock_w)
273   AM_RANGE(0x90, 0x90) AM_READ(nb1413m3_inputport0_r)
274   AM_RANGE(0xa0, 0xa0) AM_READWRITE(nb1413m3_inputport1_r,nb1413m3_inputportsel_w)
275   AM_RANGE(0xb0, 0xb0) AM_READWRITE(nb1413m3_inputport2_r,nb1413m3_sndrombank1_w)
276   AM_RANGE(0xc0, 0xc0) AM_READWRITE(nb1413m3_inputport3_r,nb1413m3_nmi_clock_w)
361277   AM_RANGE(0xd0, 0xd0) AM_DEVWRITE("dac", DAC_WRITE)
362278//  AM_RANGE(0xe0, 0xe0) AM_WRITENOP
363   AM_RANGE(0xf0, 0xf0) AM_WRITE(nb1413m3_outcoin_w)
279   AM_RANGE(0xf0, 0xf0) AM_READWRITE(nb1413m3_dipsw1_r,nb1413m3_outcoin_w)
280   AM_RANGE(0xf1, 0xf1) AM_READ(nb1413m3_dipsw2_r)
364281ADDRESS_MAP_END
365282
366
367static ADDRESS_MAP_START( readport_pstadium, ADDRESS_SPACE_IO, 8 )
283static ADDRESS_MAP_START( pstadium_io_map, ADDRESS_SPACE_IO, 8 )
368284   ADDRESS_MAP_GLOBAL_MASK(0xff)
285   AM_RANGE(0x00, 0x7f) AM_WRITE(nbmj8991_blitter_w)
286   AM_RANGE(0x80, 0x80) AM_WRITE(nbmj8991_sound_w)
369287   AM_RANGE(0x90, 0x90) AM_READ(nb1413m3_inputport0_r)
370   AM_RANGE(0xa0, 0xa0) AM_READ(nb1413m3_inputport1_r)
371   AM_RANGE(0xb0, 0xb0) AM_READ(nb1413m3_inputport2_r)
288   AM_RANGE(0xa0, 0xa0) AM_READWRITE(nb1413m3_inputport1_r,nb1413m3_inputportsel_w)
289   AM_RANGE(0xb0, 0xb0) AM_READ(nb1413m3_inputport2_r) //AM_WRITENOP
372290   AM_RANGE(0xc0, 0xc0) AM_READ(nb1413m3_inputport3_r)
373   AM_RANGE(0xf0, 0xf0) AM_READ(nb1413m3_dipsw1_r)
291//  AM_RANGE(0xd0, 0xd0) AM_WRITENOP
292   AM_RANGE(0xf0, 0xf0) AM_READWRITE(nb1413m3_dipsw1_r,nb1413m3_outcoin_w)
374293   AM_RANGE(0xf8, 0xf8) AM_READ(nb1413m3_dipsw2_r)
375294ADDRESS_MAP_END
376295
377static ADDRESS_MAP_START( writeport_pstadium, ADDRESS_SPACE_IO, 8 )
296static ADDRESS_MAP_START( av2mj1bb_io_map, ADDRESS_SPACE_IO, 8 )
378297   ADDRESS_MAP_GLOBAL_MASK(0xff)
379298   AM_RANGE(0x00, 0x7f) AM_WRITE(nbmj8991_blitter_w)
380299   AM_RANGE(0x80, 0x80) AM_WRITE(nbmj8991_sound_w)
381   AM_RANGE(0xa0, 0xa0) AM_WRITE(nb1413m3_inputportsel_w)
382//  AM_RANGE(0xb0, 0xb0) AM_WRITENOP
300   AM_RANGE(0x90, 0x90) AM_READ(nb1413m3_inputport0_r)
301   AM_RANGE(0xa0, 0xa0) AM_READWRITE(nb1413m3_inputport1_r,nb1413m3_inputportsel_w)
302   AM_RANGE(0xb0, 0xb0) AM_READWRITE(nb1413m3_inputport2_r,nb1413m3_vcrctrl_w)
303   AM_RANGE(0xc0, 0xc0) AM_READ(nb1413m3_inputport3_r)
383304//  AM_RANGE(0xd0, 0xd0) AM_WRITENOP
384   AM_RANGE(0xf0, 0xf0) AM_WRITE(nb1413m3_outcoin_w)
385ADDRESS_MAP_END
386
387
388static ADDRESS_MAP_START( writeport_av2mj1bb, ADDRESS_SPACE_IO, 8 )
389   ADDRESS_MAP_GLOBAL_MASK(0xff)
390   AM_RANGE(0x00, 0x7f) AM_WRITE(nbmj8991_blitter_w)
391   AM_RANGE(0x80, 0x80) AM_WRITE(nbmj8991_sound_w)
392   AM_RANGE(0xa0, 0xa0) AM_WRITE(nb1413m3_inputportsel_w)
393   AM_RANGE(0xb0, 0xb0) AM_WRITE(nb1413m3_vcrctrl_w)
394//  AM_RANGE(0xd0, 0xd0) AM_WRITENOP
305   AM_RANGE(0xf0, 0xf0) AM_READ(nb1413m3_dipsw1_r)
395306//  AM_RANGE(0xf0, 0xf0) AM_WRITENOP
307   AM_RANGE(0xf8, 0xf8) AM_READ(nb1413m3_dipsw2_r)
396308ADDRESS_MAP_END
397309
398310
399
400static ADDRESS_MAP_START( sound_readmem_nbmj8991, ADDRESS_SPACE_PROGRAM, 8 )
401   AM_RANGE(0x0000, 0x77ff) AM_READ(SMH_ROM)
402   AM_RANGE(0x7800, 0x7fff) AM_READ(SMH_RAM)
403   AM_RANGE(0x8000, 0xffff) AM_READ(SMH_BANK1)
311static ADDRESS_MAP_START( nbmj8991_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
312   AM_RANGE(0x0000, 0x77ff) AM_ROM
313   AM_RANGE(0x7800, 0x7fff) AM_RAM
314   AM_RANGE(0x8000, 0xffff) AM_ROMBANK(1)
404315ADDRESS_MAP_END
405316
406static ADDRESS_MAP_START( sound_writemem_nbmj8991, ADDRESS_SPACE_PROGRAM, 8 )
407   AM_RANGE(0x0000, 0x77ff) AM_WRITE(SMH_ROM)
408   AM_RANGE(0x7800, 0x7fff) AM_WRITE(SMH_RAM)
409ADDRESS_MAP_END
410
411
412static ADDRESS_MAP_START( sound_readport_nbmj8991, ADDRESS_SPACE_IO, 8 )
317static ADDRESS_MAP_START( nbmj8991_sound_io_map, ADDRESS_SPACE_IO, 8 )
413318   ADDRESS_MAP_GLOBAL_MASK(0xff)
414   AM_RANGE(0x00, 0x00) AM_READ(nbmj8991_sound_r)
415ADDRESS_MAP_END
416
417static ADDRESS_MAP_START( sound_writeport_nbmj8991, ADDRESS_SPACE_IO, 8 )
418   ADDRESS_MAP_GLOBAL_MASK(0xff)
419   AM_RANGE(0x00, 0x00) AM_DEVWRITE("dac1", DAC_WRITE)
319   AM_RANGE(0x00, 0x00) AM_READ(nbmj8991_sound_r) AM_DEVWRITE("dac1", DAC_WRITE)
420320   AM_RANGE(0x02, 0x02) AM_DEVWRITE("dac2", DAC_WRITE)
421321   AM_RANGE(0x04, 0x04) AM_WRITE(nbmj8991_soundbank_w)
422322   AM_RANGE(0x06, 0x06) AM_WRITENOP
r4679r4680
15771477
15781478   /* basic machine hardware */
15791479   MDRV_CPU_ADD("maincpu", Z80, 25000000/5)      /* 5.00 MHz ? */
1580   MDRV_CPU_PROGRAM_MAP(readmem_galkoku, writemem_galkoku)
1581   MDRV_CPU_IO_MAP(readport_galkoku, writeport_galkoku)
1582//  MDRV_CPU_VBLANK_INT_HACK(nb1413m3_interrupt, 128)
1480   MDRV_CPU_PROGRAM_MAP(galkoku_map, 0)
1481   MDRV_CPU_IO_MAP(galkoku_io_map, 0)
15831482   MDRV_CPU_VBLANK_INT("screen", nb1413m3_interrupt)
15841483
15851484   MDRV_MACHINE_RESET(nbmj8991)
r4679r4680
16111510
16121511   /* basic machine hardware */
16131512   MDRV_CPU_ADD("maincpu", Z80, 6000000/2)   /* 3.00 MHz */
1614   MDRV_CPU_PROGRAM_MAP(readmem_pstadium, writemem_pstadium)
1615   MDRV_CPU_IO_MAP(readport_pstadium, writeport_pstadium)
1513   MDRV_CPU_PROGRAM_MAP(pstadium_map, 0)
1514   MDRV_CPU_IO_MAP(pstadium_io_map, 0)
16161515   MDRV_CPU_VBLANK_INT("screen", nb1413m3_interrupt)
16171516
16181517   MDRV_CPU_ADD("audiocpu", Z80, 4000000)               /* 4.00 MHz */
1619   MDRV_CPU_PROGRAM_MAP(sound_readmem_nbmj8991, sound_writemem_nbmj8991)
1620   MDRV_CPU_IO_MAP(sound_readport_nbmj8991, sound_writeport_nbmj8991)
1621   MDRV_CPU_VBLANK_INT_HACK(irq0_line_hold, 128)
1518   MDRV_CPU_PROGRAM_MAP(nbmj8991_sound_map, 0)
1519   MDRV_CPU_IO_MAP(nbmj8991_sound_io_map, 0)
1520   MDRV_CPU_PERIODIC_INT(irq0_line_hold, 128*60) // ?
16221521
16231522   MDRV_MACHINE_RESET(nbmj8991)
16241523
r4679r4680
16751574   /* basic machine hardware */
16761575   MDRV_IMPORT_FROM(nbmjdrv1)
16771576   MDRV_CPU_MODIFY("maincpu")
1678   MDRV_CPU_PROGRAM_MAP(readmem_galkaika, writemem_galkaika)
1577   MDRV_CPU_PROGRAM_MAP(galkaika_map, 0)
16791578MACHINE_DRIVER_END
16801579
16811580
r4679r4680
16841583   /* basic machine hardware */
16851584   MDRV_IMPORT_FROM(nbmjdrv1)
16861585   MDRV_CPU_MODIFY("maincpu")
1687   MDRV_CPU_PROGRAM_MAP(readmem_tokyogal, writemem_tokyogal)
1586   MDRV_CPU_PROGRAM_MAP(tokyogal_map, 0)
16881587MACHINE_DRIVER_END
16891588
16901589
r4679r4680
16931592   /* basic machine hardware */
16941593   MDRV_IMPORT_FROM(nbmjdrv1)
16951594   MDRV_CPU_MODIFY("maincpu")
1696   MDRV_CPU_PROGRAM_MAP(readmem_galkaika, writemem_galkaika)
1595   MDRV_CPU_PROGRAM_MAP(galkaika_map, 0)
16971596
16981597   MDRV_NVRAM_HANDLER(nb1413m3)
16991598MACHINE_DRIVER_END
r4679r4680
17181617   /* basic machine hardware */
17191618   MDRV_IMPORT_FROM(nbmjdrv3)
17201619   MDRV_CPU_MODIFY("maincpu")
1721   MDRV_CPU_IO_MAP(readport_hyouban, writeport_hyouban)
1620   MDRV_CPU_IO_MAP(hyouban_io_map, 0)
17221621
17231622   MDRV_NVRAM_HANDLER(nb1413m3)
17241623MACHINE_DRIVER_END
r4679r4680
17361635   /* basic machine hardware */
17371636   MDRV_IMPORT_FROM(nbmjdrv2)
17381637   MDRV_CPU_MODIFY("maincpu")
1739   MDRV_CPU_PROGRAM_MAP(readmem_triplew1, writemem_triplew1)
1638   MDRV_CPU_PROGRAM_MAP(triplew1_map, 0)
17401639MACHINE_DRIVER_END
17411640
17421641
r4679r4680
17451644   /* basic machine hardware */
17461645   MDRV_IMPORT_FROM(nbmjdrv2)
17471646   MDRV_CPU_MODIFY("maincpu")
1748   MDRV_CPU_PROGRAM_MAP(readmem_triplew2, writemem_triplew2)
1647   MDRV_CPU_PROGRAM_MAP(triplew2_map, 0)
17491648MACHINE_DRIVER_END
17501649
17511650
r4679r4680
17611660   /* basic machine hardware */
17621661   MDRV_IMPORT_FROM(nbmjdrv2)
17631662   MDRV_CPU_MODIFY("maincpu")
1764   MDRV_CPU_PROGRAM_MAP(readmem_mjlstory, writemem_mjlstory)
1663   MDRV_CPU_PROGRAM_MAP(mjlstory_map, 0)
17651664MACHINE_DRIVER_END
17661665
17671666
r4679r4680
17921691   /* basic machine hardware */
17931692   MDRV_IMPORT_FROM(nbmjdrv2)
17941693   MDRV_CPU_MODIFY("maincpu")
1795   MDRV_CPU_PROGRAM_MAP(readmem_triplew1, writemem_triplew1)
1694   MDRV_CPU_PROGRAM_MAP(triplew1_map, 0)
17961695
17971696   MDRV_NVRAM_HANDLER(nb1413m3)
17981697MACHINE_DRIVER_END
r4679r4680
18031702   /* basic machine hardware */
18041703   MDRV_IMPORT_FROM(nbmjdrv2)
18051704   MDRV_CPU_MODIFY("maincpu")
1806   MDRV_CPU_PROGRAM_MAP(readmem_av2mj1bb, writemem_av2mj1bb)
1807   MDRV_CPU_IO_MAP(readport_pstadium, writeport_av2mj1bb)
1705   MDRV_CPU_PROGRAM_MAP(av2mj1bb_map, 0)
1706   MDRV_CPU_IO_MAP(av2mj1bb_io_map, 0)
18081707MACHINE_DRIVER_END
18091708
18101709
r4679r4680
18131712   /* basic machine hardware */
18141713   MDRV_IMPORT_FROM(nbmjdrv2)
18151714   MDRV_CPU_MODIFY("maincpu")
1816   MDRV_CPU_PROGRAM_MAP(readmem_av2mj2rg, writemem_av2mj2rg)
1817   MDRV_CPU_IO_MAP(readport_pstadium, writeport_av2mj1bb)
1715   MDRV_CPU_PROGRAM_MAP(av2mj2rg_map, 0)
1716   MDRV_CPU_IO_MAP(av2mj1bb_io_map, 0)
18181717MACHINE_DRIVER_END
18191718
18201719
src/mame/drivers/blockout.c
r4679r4680
4141   if (ACCESSING_BITS_0_7)
4242   {
4343      soundlatch_w(space,offset,data & 0xff);
44      cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_NMI, PULSE_LINE);
44      cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
4545   }
4646}
4747
r4679r4680
171171/* handler called by the 2151 emulator when the internal timers cause an IRQ */
172172static void blockout_irq_handler(const device_config *device, int irq)
173173{
174   cpu_set_input_line_and_vector(device->machine->cpu[1],0,irq ? ASSERT_LINE : CLEAR_LINE,0xff);
174   cputag_set_input_line_and_vector(device->machine, "audiocpu", 0, irq ? ASSERT_LINE : CLEAR_LINE, 0xff);
175175}
176176
177177static const ym2151_interface ym2151_config =
src/mame/drivers/tsamurai.c
r4679r4680
6868static int nmi_enabled;
6969static int sound_command1, sound_command2, sound_command3;
7070
71static WRITE8_HANDLER( nmi_enable_w ){
71static WRITE8_HANDLER( nmi_enable_w )
72{
7273   nmi_enabled = data;
7374}
7475
75static INTERRUPT_GEN( samurai_interrupt ){
76static INTERRUPT_GEN( samurai_interrupt )
77{
7678   if (nmi_enabled) cpu_set_input_line(device, INPUT_LINE_NMI, PULSE_LINE);
7779}
7880
r4679r4680
104106static WRITE8_HANDLER( sound_command1_w )
105107{
106108   sound_command1 = data;
107   cpu_set_input_line(space->machine->cpu[1], 0, HOLD_LINE );
109   cputag_set_input_line(space->machine, "audiocpu", 0, HOLD_LINE );
108110}
109111
110112static WRITE8_HANDLER( sound_command2_w )
111113{
112114   sound_command2 = data;
113   cpu_set_input_line(space->machine->cpu[2], 0, HOLD_LINE );
115   cputag_set_input_line(space->machine, "audio2", 0, HOLD_LINE );
114116}
115117
116118static WRITE8_HANDLER( sound_command3_w )
117119{
118120   sound_command3 = data;
119   cpu_set_input_line(space->machine->cpu[3], 0, HOLD_LINE );
121   cputag_set_input_line(space->machine, "audio3", 0, HOLD_LINE );
120122}
121123
122124static WRITE8_HANDLER( flip_screen_w )
r4679r4680
220222   return sound_command1;
221223}
222224
223static READ8_HANDLER( sound_command2_r ){
225static READ8_HANDLER( sound_command2_r )
226{
224227   return sound_command2;
225228}
226229
227static READ8_HANDLER( sound_command3_r ){
230static READ8_HANDLER( sound_command3_r )
231{
228232   return sound_command3;
229233}
230234
r4679r4680
285289/*******************************************************************************/
286290
287291static int vsgongf_sound_nmi_enabled;
288static WRITE8_HANDLER( vsgongf_sound_nmi_enable_w ){
292static WRITE8_HANDLER( vsgongf_sound_nmi_enable_w )
293{
289294   vsgongf_sound_nmi_enabled = data;
290295}
291296
292static INTERRUPT_GEN( vsgongf_sound_interrupt ){
297static INTERRUPT_GEN( vsgongf_sound_interrupt )
298{
293299   if (vsgongf_sound_nmi_enabled) cpu_set_input_line(device, INPUT_LINE_NMI, PULSE_LINE);
294300}
295301
296302/* what are these, protection of some kind? */
297303
298static READ8_HANDLER( vsgongf_a006_r ){
304static READ8_HANDLER( vsgongf_a006_r )
305{
299306   /* sound CPU busy? */
300307   if (!strcmp(space->machine->gamedrv->name,"vsgongf"))  return 0x80;
301308   if (!strcmp(space->machine->gamedrv->name,"ringfgt"))  return 0x80;
r4679r4680
305312   return 0x00;
306313}
307314
308static READ8_HANDLER( vsgongf_a100_r ){
315static READ8_HANDLER( vsgongf_a100_r )
316{
309317   /* protection? */
310318   if (!strcmp(space->machine->gamedrv->name,"vsgongf"))  return 0xaa;
311319   if (!strcmp(space->machine->gamedrv->name,"ringfgt"))  return 0x63;
r4679r4680
315323   return 0x00;
316324}
317325
318static WRITE8_HANDLER( vsgongf_sound_command_w ){
319   soundlatch_w( space, offset, data );
320   cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_NMI, PULSE_LINE );
326static WRITE8_HANDLER( vsgongf_sound_command_w )
327{
328   soundlatch_w(space, offset, data);
329   cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
321330}
322331
323332static ADDRESS_MAP_START( vsgongf_map, ADDRESS_SPACE_PROGRAM, 8 )
src/mame/drivers/deshoros.c
r4679r4680
9292}
9393
9494static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 8 )
95   AM_RANGE(0x0000, 0x5fff) AM_READWRITE(SMH_BANK1, SMH_ROM)
95   AM_RANGE(0x0000, 0x5fff) AM_READWRITE(SMH_BANK(1), SMH_ROM)
9696   AM_RANGE(0x8000, 0x87ff) AM_RAM
9797   AM_RANGE(0x9000, 0x900f) AM_READWRITE(io_r,io_w) AM_BASE(&io_ram) //i/o area
9898   AM_RANGE(0xc000, 0xffff) AM_ROM
r4679r4680
146146/*Is it there an IRQ mask?*/
147147static INTERRUPT_GEN( deshoros_irq )
148148{
149   cpu_set_input_line(device->machine->cpu[0], M6809_IRQ_LINE, HOLD_LINE);
149   cputag_set_input_line(device->machine, "maincpu", M6809_IRQ_LINE, HOLD_LINE);
150150}
151151
152152static MACHINE_RESET( deshoros )
src/mame/drivers/igs_m027.c
r4679r4680
269269   int i;
270270   unsigned rom_size = 0x80000;
271271   UINT8 *src = (UINT8 *) (memory_region(machine, "gfx1"));
272   UINT8 *result_data = malloc_or_die(rom_size);
272   UINT8 *result_data = alloc_array_or_die(UINT8, rom_size);
273273
274274   for (i=0; i<rom_size; i++)
275275       result_data[i] = src[BITSWAP24(i, 23,22,21,20,19,18,17,16,15,14,13,12,11,8,7,6,10,9,5,4,3,2,1,0)];
src/mame/drivers/splash.c
r4679r4680
4242***************************************************************************/
4343
4444#include "driver.h"
45#include "deprecat.h"
4645#include "cpu/z80/z80.h"
4746#include "cpu/m68000/m68000.h"
4847#include "sound/2203intf.h"
r4679r4680
6261extern int splash_bitmap_type;
6362extern int splash_sprite_attr2_shift;
6463
65READ16_HANDLER( splash_vram_r );
6664WRITE16_HANDLER( splash_vram_w );
6765VIDEO_START( splash );
6866VIDEO_UPDATE( splash );
r4679r4680
7068
7169static WRITE16_HANDLER( splash_sh_irqtrigger_w )
7270{
73   if (ACCESSING_BITS_0_7){
74      soundlatch_w(space,0,data & 0xff);
75      cpu_set_input_line(space->machine->cpu[1],0,HOLD_LINE);
71   if (ACCESSING_BITS_0_7)
72   {
73      soundlatch_w(space, 0, data & 0xff);
74      cputag_set_input_line(space->machine, "audiocpu", 0, HOLD_LINE);
7675   }
7776}
7877
7978static WRITE16_HANDLER( roldf_sh_irqtrigger_w )
8079{
81   if (ACCESSING_BITS_0_7){
82      soundlatch_w(space,0,data & 0xff);
83      cpu_set_input_line(space->machine->cpu[1],0,HOLD_LINE);
80   if (ACCESSING_BITS_0_7)
81   {
82      soundlatch_w(space, 0, data & 0xff);
83      cputag_set_input_line(space->machine, "audiocpu", 0, HOLD_LINE);
8484   }
8585
8686   // give the z80 time to see it
8787   cpu_spinuntil_time(space->cpu, ATTOTIME_IN_USEC(40));
8888}
8989
90static ADDRESS_MAP_START( splash_readmem, ADDRESS_SPACE_PROGRAM, 16 )
91   AM_RANGE(0x000000, 0x3fffff) AM_READ(SMH_ROM)         /* ROM */
92   AM_RANGE(0x800000, 0x83ffff) AM_READ(SMH_RAM)         /* Pixel Layer */
93   AM_RANGE(0x840000, 0x840001) AM_READ_PORT("DSW1")
94   AM_RANGE(0x840002, 0x840003) AM_READ_PORT("DSW2")
95   AM_RANGE(0x840004, 0x840005) AM_READ_PORT("P1")
96   AM_RANGE(0x840006, 0x840007) AM_READ_PORT("P2")
97   AM_RANGE(0x880000, 0x8817ff) AM_READ(splash_vram_r)      /* Video RAM */
98   AM_RANGE(0x881800, 0x881803) AM_READ(SMH_RAM)         /* Scroll registers */
99   AM_RANGE(0x881804, 0x881fff) AM_READ(SMH_RAM)         /* Work RAM */
100   AM_RANGE(0x8c0000, 0x8c0fff) AM_READ(SMH_RAM)         /* Palette */
101   AM_RANGE(0x900000, 0x900fff) AM_READ(SMH_RAM)         /* Sprite RAM */
102   AM_RANGE(0xffc000, 0xffffff) AM_READ(SMH_RAM)         /* Work RAM */
103ADDRESS_MAP_END
104
10590static WRITE16_HANDLER( splash_coin_w )
10691{
107   if (ACCESSING_BITS_8_15){
108      switch ((offset >> 3)){
92   if (ACCESSING_BITS_8_15)
93   {
94      switch ((offset >> 3))
95      {
10996         case 0x00:   /* Coin Lockouts */
11097         case 0x01:
11198            coin_lockout_w( (offset >> 3) & 0x01, (data & 0x0400) >> 8);
r4679r4680
118105   }
119106}
120107
121static ADDRESS_MAP_START( splash_writemem, ADDRESS_SPACE_PROGRAM, 16 )
122   AM_RANGE(0x000000, 0x3fffff) AM_WRITE(SMH_ROM)                              /* ROM */
123   AM_RANGE(0x800000, 0x83ffff) AM_WRITE(SMH_RAM) AM_BASE(&splash_pixelram)         /* Pixel Layer */
124   AM_RANGE(0x84000e, 0x84000f) AM_WRITE(splash_sh_irqtrigger_w)                     /* Sound command */
125   AM_RANGE(0x84000a, 0x84003b) AM_WRITE(splash_coin_w)                           /* Coin Counters + Coin Lockout */
126   AM_RANGE(0x880000, 0x8817ff) AM_WRITE(splash_vram_w) AM_BASE(&splash_videoram)            /* Video RAM */
127   AM_RANGE(0x881800, 0x881803) AM_WRITE(SMH_RAM) AM_BASE(&splash_vregs)                  /* Scroll registers */
128   AM_RANGE(0x881804, 0x881fff) AM_WRITE(SMH_RAM)                              /* Work RAM */
129   AM_RANGE(0x8c0000, 0x8c0fff) AM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE(&paletteram16)/* Palette is xRRRRxGGGGxBBBBx */
130   AM_RANGE(0x900000, 0x900fff) AM_WRITE(SMH_RAM) AM_BASE(&splash_spriteram)               /* Sprite RAM */
131   AM_RANGE(0xffc000, 0xffffff) AM_WRITE(SMH_RAM)                              /* Work RAM */
108static ADDRESS_MAP_START( splash_map, ADDRESS_SPACE_PROGRAM, 16 )
109   AM_RANGE(0x000000, 0x3fffff) AM_ROM                                       /* ROM */
110   AM_RANGE(0x800000, 0x83ffff) AM_RAM AM_BASE(&splash_pixelram)                  /* Pixel Layer */
111   AM_RANGE(0x840000, 0x840001) AM_READ_PORT("DSW1")
112   AM_RANGE(0x840002, 0x840003) AM_READ_PORT("DSW2")
113   AM_RANGE(0x840004, 0x840005) AM_READ_PORT("P1")
114   AM_RANGE(0x840006, 0x840007) AM_READ_PORT("P2")
115   AM_RANGE(0x84000e, 0x84000f) AM_WRITE(splash_sh_irqtrigger_w)                  /* Sound command */
116   AM_RANGE(0x84000a, 0x84003b) AM_WRITE(splash_coin_w)                        /* Coin Counters + Coin Lockout */
117   AM_RANGE(0x880000, 0x8817ff) AM_RAM_WRITE(splash_vram_w) AM_BASE(&splash_videoram)   /* Video RAM */
118   AM_RANGE(0x881800, 0x881803) AM_RAM AM_BASE(&splash_vregs)                     /* Scroll registers */
119   AM_RANGE(0x881804, 0x881fff) AM_RAM                                       /* Work RAM */
120   AM_RANGE(0x8c0000, 0x8c0fff) AM_RAM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE(&paletteram16)/* Palette is xRRRRxGGGGxBBBBx */
121   AM_RANGE(0x900000, 0x900fff) AM_RAM AM_BASE(&splash_spriteram)                  /* Sprite RAM */
122   AM_RANGE(0xffc000, 0xffffff) AM_RAM                                       /* Work RAM */
132123ADDRESS_MAP_END
133124
134
135static ADDRESS_MAP_START( splash_readmem_sound, ADDRESS_SPACE_PROGRAM, 8 )
136   AM_RANGE(0x0000, 0xd7ff) AM_READ(SMH_ROM)               /* ROM */
137   AM_RANGE(0xe800, 0xe800) AM_READ(soundlatch_r)            /* Sound latch */
138   AM_RANGE(0xf000, 0xf001) AM_DEVREAD("ym", ym3812_r)   /* YM3812 */
139   AM_RANGE(0xf800, 0xffff) AM_READ(SMH_RAM)               /* RAM */
140ADDRESS_MAP_END
141
142static WRITE8_HANDLER( splash_adpcm_data_w ){
125static WRITE8_HANDLER( splash_adpcm_data_w )
126{
143127   adpcm_data = data;
144128}
145129
r4679r4680
149133   adpcm_data = (adpcm_data << 4) & 0xf0;
150134}
151135
152
153static ADDRESS_MAP_START( splash_writemem_sound, ADDRESS_SPACE_PROGRAM, 8 )
154   AM_RANGE(0x0000, 0xd7ff) AM_WRITE(SMH_ROM)               /* ROM */
155   AM_RANGE(0xd800, 0xd800) AM_WRITE(splash_adpcm_data_w)      /* ADPCM data for the MSM5205 chip */
156//  AM_RANGE(0xe000, 0xe000) AM_WRITENOP                 /* ??? */
157   AM_RANGE(0xf000, 0xf001) AM_DEVWRITE("ym", ym3812_w)   /* YM3812 */
158   AM_RANGE(0xf800, 0xffff) AM_WRITE(SMH_RAM)               /* RAM */
136static ADDRESS_MAP_START( splash_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
137   AM_RANGE(0x0000, 0xd7ff) AM_ROM                              /* ROM */
138   AM_RANGE(0xd800, 0xd800) AM_WRITE(splash_adpcm_data_w)            /* ADPCM data for the MSM5205 chip */
139//  AM_RANGE(0xe000, 0xe000) AM_WRITENOP                                /* ??? */
140   AM_RANGE(0xe800, 0xe800) AM_READ(soundlatch_r)                  /* Sound latch */
141   AM_RANGE(0xf000, 0xf001) AM_DEVREADWRITE("ym", ym3812_r,ym3812_w)   /* YM3812 */
142   AM_RANGE(0xf800, 0xffff) AM_RAM                              /* RAM */
159143ADDRESS_MAP_END
160144
161145/* Return of Lady Frog Maps */
r4679r4680
168152   return ret;
169153}
170154
171static ADDRESS_MAP_START( roldfrog_readmem, ADDRESS_SPACE_PROGRAM, 16 )
172   AM_RANGE(0x000000, 0x3fffff) AM_READ(SMH_ROM)         /* ROM */
173   AM_RANGE(0x400000, 0x407fff) AM_ROM   AM_BASE(&roldfrog_protdata)               /* Protection Data */
174   AM_RANGE(0x408000, 0x4087ff) AM_READ(SMH_RAM)         /* Extra Ram */
175   AM_RANGE(0x800000, 0x83ffff) AM_READ(SMH_RAM)         /* Pixel Layer */
155static ADDRESS_MAP_START( roldfrog_map, ADDRESS_SPACE_PROGRAM, 16 )
156   AM_RANGE(0x000000, 0x3fffff) AM_ROM                                       /* ROM */
157   AM_RANGE(0x400000, 0x407fff) AM_ROM   AM_BASE(&roldfrog_protdata)                  /* Protection Data */
158   AM_RANGE(0x408000, 0x4087ff) AM_RAM                                     /* Extra Ram */
159   AM_RANGE(0x800000, 0x83ffff) AM_RAM AM_BASE(&splash_pixelram)                  /* Pixel Layer */
176160   AM_RANGE(0x840000, 0x840001) AM_READ_PORT("DSW1")
177161   AM_RANGE(0x840002, 0x840003) AM_READ_PORT("DSW2")
178162   AM_RANGE(0x840004, 0x840005) AM_READ_PORT("P1")
179163   AM_RANGE(0x840006, 0x840007) AM_READ_PORT("P2")
180   AM_RANGE(0x880000, 0x8817ff) AM_READ(splash_vram_r)      /* Video RAM */
181   AM_RANGE(0x881800, 0x881803) AM_READ(SMH_RAM)         /* Scroll registers */
182   AM_RANGE(0x881804, 0x881fff) AM_READ(SMH_RAM)         /* Work RAM */
183   AM_RANGE(0x8c0000, 0x8c0fff) AM_READ(SMH_RAM)         /* Palette */
164   AM_RANGE(0x84000e, 0x84000f) AM_WRITE(roldf_sh_irqtrigger_w)                  /* Sound command */
165   AM_RANGE(0x84000a, 0x84003b) AM_WRITE(splash_coin_w)                        /* Coin Counters + Coin Lockout */
166   AM_RANGE(0x880000, 0x8817ff) AM_RAM_WRITE(splash_vram_w) AM_BASE(&splash_videoram)   /* Video RAM */
167   AM_RANGE(0x881800, 0x881803) AM_RAM AM_BASE(&splash_vregs)                     /* Scroll registers */
168   AM_RANGE(0x881804, 0x881fff) AM_RAM                                       /* Work RAM */
169   AM_RANGE(0x8c0000, 0x8c0fff) AM_RAM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE(&paletteram16)/* Palette is xRRRRxGGGGxBBBBx */
184170   AM_RANGE(0xa00000, 0xa00001) AM_READ(roldfrog_bombs_r)
185   AM_RANGE(0xd00000, 0xd00fff) AM_READ(SMH_RAM)         /* Sprite RAM */
186   AM_RANGE(0xffc000, 0xffffff) AM_READ(SMH_RAM)         /* Work RAM */
171   AM_RANGE(0xd00000, 0xd00fff) AM_RAM AM_BASE(&splash_spriteram)                  /* Sprite RAM */
172   AM_RANGE(0xe00000, 0xe00001) AM_WRITEONLY AM_BASE(&roldfrog_bitmap_mode)         /* Bitmap Mode? */
173   AM_RANGE(0xffc000, 0xffffff) AM_RAM                                       /* Work RAM */
187174ADDRESS_MAP_END
188175
189static ADDRESS_MAP_START( roldfrog_writemem, ADDRESS_SPACE_PROGRAM, 16 )
190   AM_RANGE(0x000000, 0x3fffff) AM_WRITE(SMH_ROM)                              /* ROM */
191   AM_RANGE(0x408000, 0x4087ff) AM_WRITE(SMH_RAM)                               /* Extra Ram */
192   AM_RANGE(0x800000, 0x83ffff) AM_WRITE(SMH_RAM) AM_BASE(&splash_pixelram)         /* Pixel Layer */
193   AM_RANGE(0x84000e, 0x84000f) AM_WRITE(roldf_sh_irqtrigger_w)                     /* Sound command */
194   AM_RANGE(0x84000a, 0x84003b) AM_WRITE(splash_coin_w)                           /* Coin Counters + Coin Lockout */
195   AM_RANGE(0x880000, 0x8817ff) AM_WRITE(splash_vram_w) AM_BASE(&splash_videoram)            /* Video RAM */
196   AM_RANGE(0x881800, 0x881803) AM_WRITE(SMH_RAM) AM_BASE(&splash_vregs)                  /* Scroll registers */
197   AM_RANGE(0x881804, 0x881fff) AM_WRITE(SMH_RAM)                              /* Work RAM */
198   AM_RANGE(0x8c0000, 0x8c0fff) AM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE(&paletteram16)/* Palette is xRRRRxGGGGxBBBBx */
199   AM_RANGE(0xd00000, 0xd00fff) AM_WRITE(SMH_RAM) AM_BASE(&splash_spriteram)               /* Sprite RAM */
200   AM_RANGE(0xe00000, 0xe00001) AM_WRITE(SMH_RAM) AM_BASE(&roldfrog_bitmap_mode)               /* Bitmap Mode? */
201   AM_RANGE(0xffc000, 0xffffff) AM_WRITE(SMH_RAM)                              /* Work RAM */
202ADDRESS_MAP_END
203176
204
205
206
207static ADDRESS_MAP_START( roldf_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
177static ADDRESS_MAP_START( roldfrog_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
208178   AM_RANGE(0x0000, 0x6fff) AM_ROM
209179   AM_RANGE(0x7000, 0x7fff) AM_RAM
210   AM_RANGE(0x8000, 0xffff) AM_REGION("audiocpu", 0x8000)   /* wrong, probably banked somehow */
180   AM_RANGE(0x8000, 0xffff) AM_ROM AM_REGION("audiocpu", 0x8000)   /* wrong, probably banked somehow */
211181ADDRESS_MAP_END
212182
213static ADDRESS_MAP_START( roldf_sound_io_map, ADDRESS_SPACE_IO, 8 )
183static ADDRESS_MAP_START( roldfrog_sound_io_map, ADDRESS_SPACE_IO, 8 )
214184   ADDRESS_MAP_GLOBAL_MASK(0xff)
215185   AM_RANGE(0x12, 0x13) AM_DEVWRITE("ym", ym2203_w)
216186   AM_RANGE(0x40, 0x40) AM_NOP   /* NMI ack */
217187   AM_RANGE(0x70, 0x70) AM_READ(soundlatch_r)
218188ADDRESS_MAP_END
219189
220static ADDRESS_MAP_START( funystrp_readmem, ADDRESS_SPACE_PROGRAM, 16 )
221   AM_RANGE(0x000000, 0x01ffff) AM_READ(SMH_ROM)         /* ROM */
222   AM_RANGE(0x100000, 0x100fff) AM_READ(SMH_ROM)         /* protection? RAM */
223   AM_RANGE(0x800000, 0x83ffff) AM_READ(SMH_RAM)         /* Pixel Layer */
190static ADDRESS_MAP_START( funystrp_map, ADDRESS_SPACE_PROGRAM, 16 )
191   AM_RANGE(0x000000, 0x01ffff) AM_ROM                                       /* ROM */
192   AM_RANGE(0x100000, 0x100fff) AM_RAM                                       /* protection? RAM */
193   AM_RANGE(0x800000, 0x83ffff) AM_RAM AM_BASE(&splash_pixelram)                  /* Pixel Layer */
194//  AM_RANGE(0x84000e, 0x84000f) AM_WRITE(splash_sh_irqtrigger_w)                       /* Sound command */
195   AM_RANGE(0x84000a, 0x84003b) AM_WRITE(splash_coin_w)                        /* Coin Counters + Coin Lockout */
224196   AM_RANGE(0x840000, 0x840001) AM_READ_PORT("DSW1")
225197   AM_RANGE(0x840002, 0x840003) AM_READ_PORT("DSW2")
226198   AM_RANGE(0x840004, 0x840005) AM_READ_PORT("P1")
227199   AM_RANGE(0x840006, 0x840007) AM_READ_PORT("P2")
228   AM_RANGE(0x880000, 0x8817ff) AM_READ(splash_vram_r)      /* Video RAM */
229   AM_RANGE(0x881800, 0x881803) AM_READ(SMH_RAM)         /* Scroll registers */
230   AM_RANGE(0x881804, 0x881fff) AM_READ(SMH_RAM)         /* Work RAM */
231   AM_RANGE(0x8c0000, 0x8c0fff) AM_READ(SMH_RAM)         /* Palette */
232   AM_RANGE(0xD00000, 0xD01fff) AM_READ(SMH_RAM)         /* Sprite RAM */
233   AM_RANGE(0xff0000, 0xffffff) AM_READ(SMH_RAM)         /* Work RAM */
200   AM_RANGE(0x880000, 0x8817ff) AM_RAM_WRITE(splash_vram_w) AM_BASE(&splash_videoram)   /* Video RAM */
201   AM_RANGE(0x881800, 0x881803) AM_RAM AM_BASE(&splash_vregs)                     /* Scroll registers */
202   AM_RANGE(0x881804, 0x881fff) AM_RAM                                       /* Work RAM */
203   AM_RANGE(0x8c0000, 0x8c0fff) AM_RAM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE(&paletteram16)/* Palette is xRRRRxGGGGxBBBBx */
204   AM_RANGE(0xd00000, 0xd01fff) AM_RAM AM_BASE(&splash_spriteram)                  /* Sprite RAM */
205   AM_RANGE(0xff0000, 0xffffff) AM_RAM                                       /* Work RAM */
234206ADDRESS_MAP_END
235207
236static ADDRESS_MAP_START( funystrp_writemem, ADDRESS_SPACE_PROGRAM, 16 )
237   AM_RANGE(0x000000, 0x01ffff) AM_WRITE(SMH_ROM)                              /* ROM */
238   AM_RANGE(0x100000, 0x100fff) AM_WRITE(SMH_RAM)                              /* protection? RAM */
239   AM_RANGE(0x800000, 0x83ffff) AM_WRITE(SMH_RAM) AM_BASE(&splash_pixelram)         /* Pixel Layer */
240//  AM_RANGE(0x84000e, 0x84000f) AM_WRITE(splash_sh_irqtrigger_w)                           /* Sound command */
241   AM_RANGE(0x84000a, 0x84003b) AM_WRITE(splash_coin_w)                           /* Coin Counters + Coin Lockout */
242   AM_RANGE(0x880000, 0x8817ff) AM_WRITE(splash_vram_w) AM_BASE(&splash_videoram)            /* Video RAM */
243   AM_RANGE(0x881800, 0x881803) AM_WRITE(SMH_RAM) AM_BASE(&splash_vregs)                  /* Scroll registers */
244   AM_RANGE(0x881804, 0x881fff) AM_WRITE(SMH_RAM)                              /* Work RAM */
245   AM_RANGE(0x8c0000, 0x8c0fff) AM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE(&paletteram16)/* Palette is xRRRRxGGGGxBBBBx */
246   AM_RANGE(0xd00000, 0xd01fff) AM_WRITE(SMH_RAM) AM_BASE(&splash_spriteram)               /* Sprite RAM */
247   AM_RANGE(0xff0000, 0xffffff) AM_WRITE(SMH_RAM)                              /* Work RAM */
248ADDRESS_MAP_END
249208
250209static INPUT_PORTS_START( splash )
251210   PORT_START("DSW1")
r4679r4680
436395
437396   /* basic machine hardware */
438397   MDRV_CPU_ADD("maincpu", M68000,24000000/2)         /* 12 MHz (24/2) */
439   MDRV_CPU_PROGRAM_MAP(splash_readmem,splash_writemem)
398   MDRV_CPU_PROGRAM_MAP(splash_map,0)
440399   MDRV_CPU_VBLANK_INT("screen", irq6_line_hold)
441400
442401   MDRV_CPU_ADD("audiocpu", Z80,30000000/8)
443   MDRV_CPU_PROGRAM_MAP(splash_readmem_sound,splash_writemem_sound)
444   MDRV_CPU_VBLANK_INT_HACK(nmi_line_pulse,64)   /* needed for the msm5205 to play the samples */
402   MDRV_CPU_PROGRAM_MAP(splash_sound_map,0)
403   MDRV_CPU_PERIODIC_INT(nmi_line_pulse,60*64)   /* needed for the msm5205 to play the samples */
445404
446405   /* video hardware */
447406   MDRV_SCREEN_ADD("screen", RASTER)
r4679r4680
449408   MDRV_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
450409   MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
451410   MDRV_SCREEN_SIZE(64*8, 64*8)
452   MDRV_SCREEN_VISIBLE_AREA(2*8, 49*8-1, 2*8, 32*8-1)
411   MDRV_SCREEN_VISIBLE_AREA(2*8, 48*8-1, 2*8, 32*8-1)
453412
454413   MDRV_GFXDECODE(splash)
455414   MDRV_PALETTE_LENGTH(2048)
r4679r4680
489448
490449   /* basic machine hardware */
491450   MDRV_CPU_ADD("maincpu", M68000,24000000/2)         /* 12 MHz - verified */
492   MDRV_CPU_PROGRAM_MAP(roldfrog_readmem,roldfrog_writemem)
451   MDRV_CPU_PROGRAM_MAP(roldfrog_map,0)
493452   MDRV_CPU_VBLANK_INT("screen", irq6_line_hold)
494453
495454   MDRV_CPU_ADD("audiocpu", Z80,3000000)         /* 3 MHz - verified */
496   MDRV_CPU_PROGRAM_MAP(roldf_sound_map,0)
497   MDRV_CPU_IO_MAP(roldf_sound_io_map,0)
498//  MDRV_CPU_VBLANK_INT_HACK(nmi_line_pulse,64)  /* needed for the msm5205 to play the samples */
455   MDRV_CPU_PROGRAM_MAP(roldfrog_sound_map,0)
456   MDRV_CPU_IO_MAP(roldfrog_sound_io_map,0)
457//  MDRV_CPU_PERIODIC_INT(nmi_line_pulse,60*64)  /* needed for the msm5205 to play the samples */
499458
500459   /* video hardware */
501460   MDRV_SCREEN_ADD("screen", RASTER)
r4679r4680
503462   MDRV_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
504463   MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
505464   MDRV_SCREEN_SIZE(64*8, 64*8)
506   MDRV_SCREEN_VISIBLE_AREA(2*8, 49*8-1, 2*8, 32*8-1)
465   MDRV_SCREEN_VISIBLE_AREA(2*8, 48*8-1, 2*8, 32*8-1)
507466//  MDRV_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 0*8, 64*8-1)
508467
509468   MDRV_GFXDECODE(splash)
r4679r4680
529488
530489   /* basic machine hardware */
531490   MDRV_CPU_ADD("maincpu", M68000,24000000/2)         /* 12 MHz (24/2) */
532   MDRV_CPU_PROGRAM_MAP(funystrp_readmem,funystrp_writemem)
491   MDRV_CPU_PROGRAM_MAP(funystrp_map,0)
533492   MDRV_CPU_VBLANK_INT("screen", irq6_line_hold)
534493
535494//  MDRV_CPU_ADD("audiocpu", Z80,30000000/8)
536//  MDRV_CPU_PROGRAM_MAP(splash_readmem_sound,splash_writemem_sound)
537//  MDRV_CPU_VBLANK_INT_HACK(nmi_line_pulse,64)  /* needed for the msm5205 to play the samples */
495//  MDRV_CPU_PROGRAM_MAP(funystrp_sound_map,0)
496//  MDRV_CPU_PERIODIC_INT(nmi_line_pulse,60*64)  /* needed for the msm5205 to play the samples */
538497
539498   /* video hardware */
540499   MDRV_SCREEN_ADD("screen", RASTER)
r4679r4680
542501   MDRV_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
543502   MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
544503   MDRV_SCREEN_SIZE(64*8, 64*8)
545   MDRV_SCREEN_VISIBLE_AREA(0*8, 47*8-1, 2*8, 32*8-1)
504   MDRV_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 2*8, 32*8-1)
546505
547506   MDRV_GFXDECODE(splash)
548507   MDRV_PALETTE_LENGTH(2048)
r4679r4680
858817   ROM_LOAD16_BYTE( "12.u87",  0x000000, 0x010000, CRC(4ac173f3) SHA1(c211bc8528d26d5a96fce4b0ebfddf2aa6a257ef) )
859818   ROM_LOAD16_BYTE( "13.u111", 0x000001, 0x010000, CRC(1358c60c) SHA1(7142aa6f94cfdfb1b70b37742201b2c213f85137) )
860819
861   ROM_REGION( 0x080000, "cpu1", 0 )   /* Z80 code + sound data */
820   ROM_REGION( 0x080000, "audiocpu", 0 )   /* Z80 code + sound data */
862821   ROM_LOAD( "11.u130", 0x000000, 0x040000, CRC(e969ea2b) SHA1(54d5bb59e9909a6b7e66764f91e2f98f8f8832c5) )
863822   ROM_LOAD( "10.u118", 0x040000, 0x040000, CRC(0894b936) SHA1(cd01eb86e403e20c56492185ecd9bb0f4f27867a) )
864823
src/mame/drivers/jalmah.c
r4679r4680
2727-kakumei/kakumei2:has weird text layer strings in test mode (like "#p control panel"),
2828 unsure if this one is somehow related to the above daireika bug, it's a BTANB or something else.
2929-Check if urashima has a "mode 3" for the layer 0 tilemap;
30-Complete the dip-switches for all the games;
3130-There could be timing issues caused by MCU simulation at $80004;
3231-Fix the sound banking, protection-related for the first version of the MCU
3332 (should be somewhere on the work ram/shared ram)
r4679r4680
4039-$f000e is bogus,maybe the program snippets can modify this value,or the MCU itself can
4140 do that,returning the contents of D0 register seems enough for now...
4241 Update: Improved it for the new mcu simulation,now it pulls all the values from 0x00 to
43 0x0f,it seems to be a MCU call snippet for the $f0000 work ram;
42 0x0f, it seems to be a MCU call snippet for the $f0000 work ram;
4443-$f030e is a mirror for $f000e in urashima.
4544-I need more space for MCU code...that's why I've used an extra jmp when entering
4645 into mcu code,so we can debug the first version freely without being teased about
4746 memory space.
4847 BTW,the real HW is using a sort of bankswitch or I'm missing something?
49-$f0020 is for the sound program,same for all games,for example mjzoomin hasn't any clear
48-$f0020 is for the sound program,same for all games, for example mjzoomin hasn't any clear
5049 write to $80040 area and the program jumps to $f0020 when there should be a sample.
5150
5251============================================================================================
r4679r4680
231230   sc3_tilemap_2 = tilemap_create(machine, get_sc3_tile_info,range2_8x8,8,8,128,64);
232231   sc3_tilemap_3 = tilemap_create(machine, get_sc3_tile_info,range3_8x8,8,8,64,128);
233232
234   jm_scrollram = auto_malloc(0x80);
235   jm_vregs = auto_malloc(0x40);
233   jm_scrollram = auto_alloc_array(machine, UINT16, 0x80/2);
234   jm_vregs = auto_alloc_array(machine, UINT16, 0x40/2);
236235
237236   tilemap_set_transparent_pen(sc0_tilemap_0,15);
238237   tilemap_set_transparent_pen(sc0_tilemap_1,15);
r4679r4680
259258   sc0_tilemap_0 = tilemap_create(machine, get_sc0_tile_info,range0_16x16,16,16,256,32);
260259   sc3_tilemap_0 = tilemap_create(machine, get_sc3_tile_info,range2_8x8,8,8,128,64);
261260
262   jm_scrollram = auto_malloc(0x80);
263   jm_vregs = auto_malloc(0x40);
261   jm_scrollram = auto_alloc_array(machine, UINT16, 0x80/2);
262   jm_vregs = auto_alloc_array(machine, UINT16, 0x40/2);
264263
265264   tilemap_set_transparent_pen(sc0_tilemap_0,15);
266265   tilemap_set_transparent_pen(sc3_tilemap_0,15);
r4679r4680
626625   if(data & 4)
627626   {
628627      UINT32 i;
629      for(i=0;i<0x200;i+=2)
630         memory_write_word(space,0x88200+i,memory_read_word(space,0x88400+i));
628      for(i = 0; i < 0x200; i += 2)
629         memory_write_word(space, 0x88200 + i, memory_read_word(space, 0x88400 + i));
631630   }
632631}
633632
634633/*same as $f00c0 sub-routine,but with additional work-around,to remove from here...*/
635static void daireika_palette_dma(running_machine *machine,UINT16 val)
634static void daireika_palette_dma(running_machine *machine, UINT16 val)
636635{
637   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
638   UINT32 index_1,index_2,src_addr,tmp_addr;
636   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
637   UINT32 index_1, index_2, src_addr, tmp_addr;
639638   /*a0=301c0+jm_shared_ram[0x540/2] & 0xf00 */
640639   /*a1=88000*/
641640   src_addr = 0x301c0 + (val * 0x40);
642641//  popmessage("%08x",src_addr);
643   for(index_1=0;index_1<0x200;index_1+=0x20)
642   for(index_1 = 0; index_1 < 0x200; index_1 += 0x20)
644643   {
645644      tmp_addr = src_addr;
646645      src_addr = memory_read_dword(space,src_addr);
647646
648      for(index_2=0;index_2<0x20;index_2+=2)
649         memory_write_word(space,0x88000+index_2+index_1,memory_read_word(space,src_addr+index_2));
647      for(index_2 = 0; index_2 < 0x20; index_2 += 2)
648         memory_write_word(space, 0x88000 + index_2 + index_1, memory_read_word(space, src_addr + index_2));
650649
651650      src_addr = tmp_addr + 4;
652651   }
r4679r4680
655654/*RAM-based protection handlings*/
656655static void daireika_mcu_run(running_machine *machine)
657656{
658   static UINT16 prg_prot,dma_old;
657   static UINT16 prg_prot, dma_old;
659658
660659   if(((jm_shared_ram[0x550/2] & 0xf00) == 0x700) && ((jm_shared_ram[0x540/2] & 0xf00) != dma_old))
661660   {
r4679r4680
922921   AM_RANGE(0x080010, 0x080011) AM_WRITE(jalmah_flip_screen_w)
923922   //       0x080012, 0x080013  MCU write related,same for each game
924923   //       0x080014, 0x080015  MCU write related,same for each game
925/**/AM_RANGE(0x080016, 0x080017) AM_READ(SMH_RAM) AM_WRITE(urashima_dma_w)
924/**/AM_RANGE(0x080016, 0x080017) AM_RAM_WRITE(urashima_dma_w)
926925   AM_RANGE(0x080018, 0x080019) AM_WRITE(jalmah_okibank_w)
927926   AM_RANGE(0x08001a, 0x08001b) AM_WRITE(jalmah_okirom_w)
928/**/AM_RANGE(0x08001c, 0x08001d) AM_READ(SMH_RAM) AM_WRITE(urashima_bank_w)
927/**/AM_RANGE(0x08001c, 0x08001d) AM_RAM_WRITE(urashima_bank_w)
929928   AM_RANGE(0x080040, 0x080041) AM_DEVREADWRITE8("oki", okim6295_r, okim6295_w, 0x00ff)
930929   //       0x084000, 0x084001  ?
931930   AM_RANGE(0x088000, 0x0887ff) AM_RAM_WRITE(paletteram16_RRRRGGGGBBBBRGBx_word_w) AM_BASE(&paletteram16) /* Palette RAM */
r4679r4680
23012300
23022301static DRIVER_INIT( urashima )
23032302{
2304   memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x80004, 0x80005, 0, 0, urashima_mcu_r );
2305   memory_install_write16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x80012, 0x80013, 0, 0, urashima_mcu_w );
2303   memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x80004, 0x80005, 0, 0, urashima_mcu_r );
2304   memory_install_write16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x80012, 0x80013, 0, 0, urashima_mcu_w );
23062305
23072306   mcu_prg = 0x12;
23082307}
23092308
23102309static DRIVER_INIT( daireika )
23112310{
2312   memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x80004, 0x80005, 0, 0, daireika_mcu_r );
2313   memory_install_write16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x80012, 0x80013, 0, 0, daireika_mcu_w );
2311   memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x80004, 0x80005, 0, 0, daireika_mcu_r );
2312   memory_install_write16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x80012, 0x80013, 0, 0, daireika_mcu_w );
23142313
23152314   mcu_prg = 0x11;
23162315}
23172316
23182317static DRIVER_INIT( mjzoomin )
23192318{
2320   memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x80004, 0x80005, 0, 0, mjzoomin_mcu_r );
2321   memory_install_write16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x80012, 0x80013, 0, 0, mjzoomin_mcu_w );
2319   memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x80004, 0x80005, 0, 0, mjzoomin_mcu_r );
2320   memory_install_write16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x80012, 0x80013, 0, 0, mjzoomin_mcu_w );
23222321
23232322   mcu_prg = 0x13;
23242323}
23252324
23262325static DRIVER_INIT( kakumei )
23272326{
2328   memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x80004, 0x80005, 0, 0, kakumei_mcu_r );
2327   memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x80004, 0x80005, 0, 0, kakumei_mcu_r );
23292328
23302329   mcu_prg = 0x21;
23312330}
23322331
23332332static DRIVER_INIT( kakumei2 )
23342333{
2335   memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x80004, 0x80005, 0, 0, kakumei_mcu_r );
2334   memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x80004, 0x80005, 0, 0, kakumei_mcu_r );
23362335
23372336   mcu_prg = 0x22;
23382337}
23392338
23402339static DRIVER_INIT( suchipi )
23412340{
2342   memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x80004, 0x80005, 0, 0, suchipi_mcu_r );
2341   memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x80004, 0x80005, 0, 0, suchipi_mcu_r );
2342
23432343   mcu_prg = 0x23;
23442344}
23452345
23462346/*First version of the MCU*/
2347GAME( 1989, urashima, 0, urashima,  urashima,   urashima, ROT0, "UPL",          "Otogizoushi Urashima Mahjong",         GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
2348GAME( 1989, daireika, 0, jalmah,    daireika,   daireika, ROT0, "Jaleco / NMK", "Mahjong Daireikai",                    GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
2349GAME( 1990, mjzoomin, 0, jalmah,    mjzoomin,   mjzoomin, ROT0, "Jaleco",       "Mahjong Channel Zoom In",              GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
2347GAME( 1989, urashima, 0, urashima,  urashima,   urashima, ROT0, "UPL",          "Otogizoushi Urashima Mahjong (Japan)",         GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
2348GAME( 1989, daireika, 0, jalmah,    daireika,   daireika, ROT0, "Jaleco / NMK", "Mahjong Daireikai (Japan)",                    GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
2349GAME( 1990, mjzoomin, 0, jalmah,    mjzoomin,   mjzoomin, ROT0, "Jaleco",       "Mahjong Channel Zoom In (Japan)",              GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
23502350/*Second version of the MCU*/
2351GAME( 1990, kakumei,  0, jalmah,    kakumei,    kakumei,  ROT0, "Jaleco",       "Mahjong Kakumei",                      GAME_IMPERFECT_GRAPHICS )
2352GAME( 1992, kakumei2, 0, jalmah,    kakumei2,   kakumei2, ROT0, "Jaleco",       "Mahjong Kakumei 2 - Princess League",  GAME_IMPERFECT_GRAPHICS )
2353GAME( 1993, suchipi,  0, jalmah,    suchipi,    suchipi,  ROT0, "Jaleco",       "Idol Janshi Suchie-Pai Special",       GAME_IMPERFECT_GRAPHICS )
2351GAME( 1990, kakumei,  0, jalmah,    kakumei,    kakumei,  ROT0, "Jaleco",       "Mahjong Kakumei (Japan)",                      GAME_IMPERFECT_GRAPHICS )
2352GAME( 1992, kakumei2, 0, jalmah,    kakumei2,   kakumei2, ROT0, "Jaleco",       "Mahjong Kakumei 2 - Princess League (Japan)",  GAME_IMPERFECT_GRAPHICS )
2353GAME( 1993, suchipi,  0, jalmah,    suchipi,    suchipi,  ROT0, "Jaleco",       "Idol Janshi Suchie-Pai Special (Japan)",       GAME_IMPERFECT_GRAPHICS )
src/mame/drivers/f1gp.c
r4679r4680
7373   if (ACCESSING_BITS_0_7)
7474   {
7575      pending_command = 1;
76      soundlatch_w(space,offset,data & 0xff);
77      cpu_set_input_line(space->machine->cpu[2], INPUT_LINE_NMI, PULSE_LINE);
76      soundlatch_w(space, offset, data & 0xff);
77      cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
7878   }
7979}
8080
r4679r4680
9090
9191
9292
93static ADDRESS_MAP_START( f1gp_readmem1, ADDRESS_SPACE_PROGRAM, 16 )
94   AM_RANGE(0x000000, 0x03ffff) AM_READ(SMH_ROM)
93static ADDRESS_MAP_START( f1gp_cpu1_map, ADDRESS_SPACE_PROGRAM, 16 )
94   AM_RANGE(0x000000, 0x03ffff) AM_ROM
9595   AM_RANGE(0x100000, 0x2fffff) AM_READ(extrarom_r)
9696   AM_RANGE(0xa00000, 0xbfffff) AM_READ(extrarom2_r)
97   AM_RANGE(0xc00000, 0xc3ffff) AM_READ(f1gp_zoomdata_r)
98   AM_RANGE(0xd00000, 0xd01fff) AM_READ(f1gp_rozvideoram_r)
99   AM_RANGE(0xd02000, 0xd03fff) AM_READ(f1gp_rozvideoram_r)   /* mirror */
100   AM_RANGE(0xd04000, 0xd05fff) AM_READ(f1gp_rozvideoram_r)   /* mirror */
101   AM_RANGE(0xd06000, 0xd07fff) AM_READ(f1gp_rozvideoram_r)   /* mirror */
102   AM_RANGE(0xe00000, 0xe03fff) AM_READ(SMH_RAM)
103   AM_RANGE(0xe04000, 0xe07fff) AM_READ(SMH_RAM)
104   AM_RANGE(0xf00000, 0xf003ff) AM_READ(SMH_RAM)
105   AM_RANGE(0xf10000, 0xf103ff) AM_READ(SMH_RAM)
106   AM_RANGE(0xff8000, 0xffbfff) AM_READ(SMH_RAM)
107   AM_RANGE(0xffc000, 0xffcfff) AM_READ(sharedram_r)
108   AM_RANGE(0xffd000, 0xffdfff) AM_READ(SMH_RAM)
109   AM_RANGE(0xffe000, 0xffefff) AM_READ(SMH_RAM)
97   AM_RANGE(0xc00000, 0xc3ffff) AM_READWRITE(f1gp_zoomdata_r, f1gp_zoomdata_w)
98   AM_RANGE(0xd00000, 0xd01fff) AM_READWRITE(f1gp_rozvideoram_r, f1gp_rozvideoram_w) AM_BASE(&f1gp_rozvideoram)
99   AM_RANGE(0xd02000, 0xd03fff) AM_READWRITE(f1gp_rozvideoram_r, f1gp_rozvideoram_w) AM_BASE(&f1gp_rozvideoram) /* mirror */
100   AM_RANGE(0xd04000, 0xd05fff) AM_READWRITE(f1gp_rozvideoram_r, f1gp_rozvideoram_w) AM_BASE(&f1gp_rozvideoram) /* mirror */
101   AM_RANGE(0xd06000, 0xd07fff) AM_READWRITE(f1gp_rozvideoram_r, f1gp_rozvideoram_w) AM_BASE(&f1gp_rozvideoram) /* mirror */
102   AM_RANGE(0xe00000, 0xe03fff) AM_RAM AM_BASE(&f1gp_spr1cgram) AM_SIZE(&f1gp_spr1cgram_size)            // SPR-1 CG RAM
103   AM_RANGE(0xe04000, 0xe07fff) AM_RAM AM_BASE(&f1gp_spr2cgram) AM_SIZE(&f1gp_spr2cgram_size)            // SPR-2 CG RAM
104   AM_RANGE(0xf00000, 0xf003ff) AM_RAM AM_BASE(&f1gp_spr1vram)                                    // SPR-1 VRAM
105   AM_RANGE(0xf10000, 0xf103ff) AM_RAM AM_BASE(&f1gp_spr2vram)                                    // SPR-2 VRAM
106   AM_RANGE(0xff8000, 0xffbfff) AM_RAM                                                      // WORK RAM-1
107   AM_RANGE(0xffc000, 0xffcfff) AM_READWRITE(sharedram_r, sharedram_w) AM_BASE(&sharedram)               // DUAL RAM
108   AM_RANGE(0xffd000, 0xffdfff) AM_RAM_WRITE(f1gp_fgvideoram_w) AM_BASE(&f1gp_fgvideoram)               // CHARACTER
109   AM_RANGE(0xffe000, 0xffefff) AM_RAM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE(&paletteram16)   // PALETTE
110110   AM_RANGE(0xfff000, 0xfff001) AM_READ_PORT("INPUTS")
111   AM_RANGE(0xfff000, 0xfff001) AM_WRITE(f1gp_gfxctrl_w)
111112//  AM_RANGE(0xfff002, 0xfff003)    analog wheel?
112113   AM_RANGE(0xfff004, 0xfff005) AM_READ_PORT("DSW1")
114   AM_RANGE(0xfff002, 0xfff005) AM_WRITE(f1gp_fgscroll_w)
113115   AM_RANGE(0xfff006, 0xfff007) AM_READ_PORT("DSW2")
114116   AM_RANGE(0xfff008, 0xfff009) AM_READ(command_pending_r)
115   AM_RANGE(0xfff050, 0xfff051) AM_READ_PORT("DSW3")
116ADDRESS_MAP_END
117
118static ADDRESS_MAP_START( f1gp_writemem1, ADDRESS_SPACE_PROGRAM, 16 )
119   AM_RANGE(0x000000, 0x03ffff) AM_WRITE(SMH_ROM)
120   AM_RANGE(0xc00000, 0xc3ffff) AM_WRITE(f1gp_zoomdata_w)
121   AM_RANGE(0xd00000, 0xd01fff) AM_WRITE(f1gp_rozvideoram_w) AM_BASE(&f1gp_rozvideoram)               // BACK VRAM
122   AM_RANGE(0xd02000, 0xd03fff) AM_WRITE(f1gp_rozvideoram_w)   /* mirror */
123   AM_RANGE(0xd04000, 0xd05fff) AM_WRITE(f1gp_rozvideoram_w)   /* mirror */
124   AM_RANGE(0xd06000, 0xd07fff) AM_WRITE(f1gp_rozvideoram_w)   /* mirror */
125   AM_RANGE(0xe00000, 0xe03fff) AM_WRITE(SMH_RAM) AM_BASE(&f1gp_spr1cgram) AM_SIZE(&f1gp_spr1cgram_size)      // SPR-1 CG RAM
126   AM_RANGE(0xe04000, 0xe07fff) AM_WRITE(SMH_RAM) AM_BASE(&f1gp_spr2cgram) AM_SIZE(&f1gp_spr2cgram_size)      // SPR-2 CG RAM
127   AM_RANGE(0xf00000, 0xf003ff) AM_WRITE(SMH_RAM) AM_BASE(&f1gp_spr1vram)                        // SPR-1 VRAM
128   AM_RANGE(0xf10000, 0xf103ff) AM_WRITE(SMH_RAM) AM_BASE(&f1gp_spr2vram)                        // SPR-2 VRAM
129   AM_RANGE(0xff8000, 0xffbfff) AM_WRITE(SMH_RAM)                                    // WORK RAM-1
130   AM_RANGE(0xffc000, 0xffcfff) AM_WRITE(sharedram_w) AM_BASE(&sharedram)                        // DUAL RAM
131   AM_RANGE(0xffd000, 0xffdfff) AM_WRITE(f1gp_fgvideoram_w) AM_BASE(&f1gp_fgvideoram)               // CHARACTER
132   AM_RANGE(0xffe000, 0xffefff) AM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE(&paletteram16)   // PALETTE
133   AM_RANGE(0xfff000, 0xfff001) AM_WRITE(f1gp_gfxctrl_w)
134   AM_RANGE(0xfff002, 0xfff005) AM_WRITE(f1gp_fgscroll_w)
135117   AM_RANGE(0xfff008, 0xfff009) AM_WRITE(sound_command_w)
136118   AM_RANGE(0xfff040, 0xfff05f) AM_WRITE(SMH_RAM) AM_BASE(&K053936_0_ctrl)
119   AM_RANGE(0xfff050, 0xfff051) AM_READ_PORT("DSW3")
137120ADDRESS_MAP_END
138121
139static ADDRESS_MAP_START( f1gp2_readmem1, ADDRESS_SPACE_PROGRAM, 16 )
140   AM_RANGE(0x000000, 0x03ffff) AM_READ(SMH_ROM)
122static ADDRESS_MAP_START( f1gp2_cpu1_map, ADDRESS_SPACE_PROGRAM, 16 )
123   AM_RANGE(0x000000, 0x03ffff) AM_ROM
141124   AM_RANGE(0x100000, 0x2fffff) AM_READ(extrarom_r)
142   AM_RANGE(0xa00000, 0xa07fff) AM_READ(SMH_RAM)
143   AM_RANGE(0xd00000, 0xd01fff) AM_READ(f1gp_rozvideoram_r)
144   AM_RANGE(0xe00000, 0xe00fff) AM_READ(SMH_RAM)
145   AM_RANGE(0xff8000, 0xffbfff) AM_READ(SMH_RAM)
146   AM_RANGE(0xffc000, 0xffcfff) AM_READ(sharedram_r)
147   AM_RANGE(0xffd000, 0xffdfff) AM_READ(SMH_RAM)
148   AM_RANGE(0xffe000, 0xffefff) AM_READ(SMH_RAM)
149   AM_RANGE(0xfff000, 0xfff001) AM_READ_PORT("INPUTS")
125   AM_RANGE(0xa00000, 0xa07fff) AM_RAM AM_BASE(&f1gp2_sprcgram)                                       // SPR-1 CG RAM + SPR-2 CG RAM
126   AM_RANGE(0xd00000, 0xd01fff) AM_READWRITE(f1gp_rozvideoram_r, f1gp_rozvideoram_w) AM_BASE(&f1gp_rozvideoram)   // BACK VRAM
127   AM_RANGE(0xe00000, 0xe00fff) AM_RAM AM_BASE(&f1gp2_spritelist)                                       // not checked + SPR-1 VRAM + SPR-2 VRAM
128   AM_RANGE(0xff8000, 0xffbfff) AM_RAM                                                            // WORK RAM-1
129   AM_RANGE(0xffc000, 0xffcfff) AM_READWRITE(sharedram_r, sharedram_w) AM_BASE(&sharedram)                     // DUAL RAM
130   AM_RANGE(0xffd000, 0xffdfff) AM_RAM_WRITE(f1gp_fgvideoram_w) AM_BASE(&f1gp_fgvideoram)                     // CHARACTER
131   AM_RANGE(0xffe000, 0xffefff) AM_RAM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE(&paletteram16)         // PALETTE
132   AM_RANGE(0xfff000, 0xfff001) AM_READ_PORT("INPUTS") AM_WRITE(f1gp2_gfxctrl_w)
150133//  AM_RANGE(0xfff002, 0xfff003)    analog wheel?
151134   AM_RANGE(0xfff004, 0xfff005) AM_READ_PORT("DSW1")
152135   AM_RANGE(0xfff006, 0xfff007) AM_READ_PORT("DSW2")
153   AM_RANGE(0xfff008, 0xfff009) AM_READ(command_pending_r)
136   AM_RANGE(0xfff008, 0xfff009) AM_READWRITE(command_pending_r, sound_command_w)
154137   AM_RANGE(0xfff00a, 0xfff00b) AM_READ_PORT("DSW3")
155ADDRESS_MAP_END
156
157static ADDRESS_MAP_START( f1gp2_writemem1, ADDRESS_SPACE_PROGRAM, 16 )
158   AM_RANGE(0x000000, 0x03ffff) AM_WRITE(SMH_ROM)
159   AM_RANGE(0xa00000, 0xa07fff) AM_WRITE(SMH_RAM) AM_BASE(&f1gp2_sprcgram)                        // SPR-1 CG RAM + SPR-2 CG RAM
160   AM_RANGE(0xd00000, 0xd01fff) AM_WRITE(f1gp_rozvideoram_w) AM_BASE(&f1gp_rozvideoram)               // BACK VRAM
161   AM_RANGE(0xe00000, 0xe00fff) AM_WRITE(SMH_RAM) AM_BASE(&f1gp2_spritelist)                     // not checked + SPR-1 VRAM + SPR-2 VRAM
162   AM_RANGE(0xff8000, 0xffbfff) AM_WRITE(SMH_RAM)                                    // WORK RAM-1
163   AM_RANGE(0xffc000, 0xffcfff) AM_WRITE(sharedram_w) AM_BASE(&sharedram)                        // DUAL RAM
164   AM_RANGE(0xffd000, 0xffdfff) AM_WRITE(f1gp_fgvideoram_w) AM_BASE(&f1gp_fgvideoram)               // CHARACTER
165   AM_RANGE(0xffe000, 0xffefff) AM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE(&paletteram16)   // PALETTE
166   AM_RANGE(0xfff000, 0xfff001) AM_WRITE(f1gp2_gfxctrl_w)
167   AM_RANGE(0xfff008, 0xfff009) AM_WRITE(sound_command_w)
168138   AM_RANGE(0xfff020, 0xfff02f) AM_WRITE(SMH_RAM) AM_BASE(&K053936_0_ctrl)
169139   AM_RANGE(0xfff044, 0xfff047) AM_WRITE(f1gp_fgscroll_w)
170140ADDRESS_MAP_END
171141
172static ADDRESS_MAP_START( readmem2, ADDRESS_SPACE_PROGRAM, 16 )
173   AM_RANGE(0x000000, 0x01ffff) AM_READ(SMH_ROM)
174   AM_RANGE(0xff8000, 0xffbfff) AM_READ(SMH_RAM)
175   AM_RANGE(0xffc000, 0xffcfff) AM_READ(sharedram_r)
142static ADDRESS_MAP_START( f1gp_cpu2_map, ADDRESS_SPACE_PROGRAM, 16 )
143   AM_RANGE(0x000000, 0x01ffff) AM_ROM
144   AM_RANGE(0xff8000, 0xffbfff) AM_RAM
145   AM_RANGE(0xffc000, 0xffcfff) AM_READWRITE(sharedram_r, sharedram_w)
176146ADDRESS_MAP_END
177147
178static ADDRESS_MAP_START( writemem2, ADDRESS_SPACE_PROGRAM, 16 )
179   AM_RANGE(0x000000, 0x01ffff) AM_WRITE(SMH_ROM)
180   AM_RANGE(0xff8000, 0xffbfff) AM_WRITE(SMH_RAM)
181   AM_RANGE(0xffc000, 0xffcfff) AM_WRITE(sharedram_w)
148static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 )
149   AM_RANGE(0x0000, 0x77ff) AM_ROM
150   AM_RANGE(0x7800, 0x7fff) AM_RAM
151   AM_RANGE(0x8000, 0xffff) AM_ROMBANK(1)
182152ADDRESS_MAP_END
183153
184static ADDRESS_MAP_START( sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
185   AM_RANGE(0x0000, 0x77ff) AM_READ(SMH_ROM)
186   AM_RANGE(0x7800, 0x7fff) AM_READ(SMH_RAM)
187   AM_RANGE(0x8000, 0xffff) AM_READ(SMH_BANK1)
188ADDRESS_MAP_END
189
190static ADDRESS_MAP_START( sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
191   AM_RANGE(0x0000, 0x77ff) AM_WRITE(SMH_ROM)
192   AM_RANGE(0x7800, 0x7fff) AM_WRITE(SMH_RAM)
193   AM_RANGE(0x8000, 0xffff) AM_WRITE(SMH_ROM)
194ADDRESS_MAP_END
195
196154static ADDRESS_MAP_START( sound_io_map, ADDRESS_SPACE_IO, 8 )
197155   ADDRESS_MAP_GLOBAL_MASK(0xff)
198156   AM_RANGE(0x00, 0x00) AM_WRITE(f1gp_sh_bankswitch_w)   // f1gp
r4679r4680
457415
458416static void irqhandler(const device_config *device, int irq)
459417{
460   cpu_set_input_line(device->machine->cpu[2],0,irq ? ASSERT_LINE : CLEAR_LINE);
418   cputag_set_input_line(device->machine, "audiocpu", 0, irq ? ASSERT_LINE : CLEAR_LINE);
461419}
462420
463421static const ym2610_interface ym2610_config =
r4679r4680
471429
472430   /* basic machine hardware */
473431   MDRV_CPU_ADD("maincpu",M68000,XTAL_20MHz/2)   /* verified on pcb */
474   MDRV_CPU_PROGRAM_MAP(f1gp_readmem1,f1gp_writemem1)
432   MDRV_CPU_PROGRAM_MAP(f1gp_cpu1_map,0)
475433   MDRV_CPU_VBLANK_INT("screen", irq1_line_hold)
476434
477435   MDRV_CPU_ADD("sub", M68000,XTAL_20MHz/2)   /* verified on pcb */
478   MDRV_CPU_PROGRAM_MAP(readmem2,writemem2)
436   MDRV_CPU_PROGRAM_MAP(f1gp_cpu2_map,0)
479437   MDRV_CPU_VBLANK_INT("screen", irq1_line_hold)
480438
481439   MDRV_CPU_ADD("audiocpu", Z80,XTAL_20MHz/4)   /* verified on pcb */
482   MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem)
440   MDRV_CPU_PROGRAM_MAP(sound_map,0)
483441   MDRV_CPU_IO_MAP(sound_io_map,0)
484442
485443   MDRV_QUANTUM_TIME(HZ(6000)) /* 100 CPU slices per frame */
r4679r4680
551509   /* basic machine hardware */
552510   MDRV_IMPORT_FROM(f1gp)
553511   MDRV_CPU_MODIFY("maincpu")
554   MDRV_CPU_PROGRAM_MAP(f1gp2_readmem1,f1gp2_writemem1)
512   MDRV_CPU_PROGRAM_MAP(f1gp2_cpu1_map,0)
555513
556514   /* video hardware */
557515   MDRV_GFXDECODE(f1gp2)
src/mame/drivers/namcos2.c
r4679r4680
575575*/
576576
577577#define NAMCOS2_68K_DEFAULT_CPU_BOARD_AM \
578   AM_RANGE(0x200000, 0x3fffff) AM_READ(namcos2_68k_data_rom_r)\
579   AM_RANGE(0x400000, 0x41ffff) AM_READ(namco_tilemapvideoram16_r) AM_WRITE(namco_tilemapvideoram16_w) \
580   AM_RANGE(0x420000, 0x42003f) AM_READ(namco_tilemapcontrol16_r) AM_WRITE(namco_tilemapcontrol16_w) \
581   AM_RANGE(0x440000, 0x44ffff) AM_READ(namcos2_68k_video_palette_r) AM_WRITE(namcos2_68k_video_palette_w) AM_BASE(&namcos2_68k_palette_ram) AM_SIZE(&namcos2_68k_palette_size) \
582   AM_RANGE(0x460000, 0x460fff) AM_READ(namcos2_68k_dpram_word_r) AM_WRITE(namcos2_68k_dpram_word_w) \
583   AM_RANGE(0x468000, 0x468fff) AM_READ(namcos2_68k_dpram_word_r) AM_WRITE(namcos2_68k_dpram_word_w) /* mirror */ \
584   AM_RANGE(0x480000, 0x483fff) AM_READ(namcos2_68k_serial_comms_ram_r) AM_WRITE(namcos2_68k_serial_comms_ram_w) AM_BASE(&namcos2_68k_serial_comms_ram) \
585   AM_RANGE(0x4a0000, 0x4a000f) AM_READ(namcos2_68k_serial_comms_ctrl_r) AM_WRITE(namcos2_68k_serial_comms_ctrl_w)
578   AM_RANGE(0x200000, 0x3fffff) AM_READ(namcos2_68k_data_rom_r) \
579   AM_RANGE(0x400000, 0x41ffff) AM_READWRITE(namco_tilemapvideoram16_r,namco_tilemapvideoram16_w) \
580   AM_RANGE(0x420000, 0x42003f) AM_READWRITE(namco_tilemapcontrol16_r,namco_tilemapcontrol16_w) \
581   AM_RANGE(0x440000, 0x44ffff) AM_READWRITE(namcos2_68k_video_palette_r,namcos2_68k_video_palette_w) AM_BASE(&namcos2_68k_palette_ram) AM_SIZE(&namcos2_68k_palette_size) \
582   AM_RANGE(0x460000, 0x460fff) AM_READWRITE(namcos2_68k_dpram_word_r,namcos2_68k_dpram_word_w) \
583   AM_RANGE(0x468000, 0x468fff) AM_READWRITE(namcos2_68k_dpram_word_r,namcos2_68k_dpram_word_w) /* mirror */ \
584   AM_RANGE(0x480000, 0x483fff) AM_READWRITE(namcos2_68k_serial_comms_ram_r,namcos2_68k_serial_comms_ram_w) AM_BASE(&namcos2_68k_serial_comms_ram) \
585   AM_RANGE(0x4a0000, 0x4a000f) AM_READWRITE(namcos2_68k_serial_comms_ctrl_r,namcos2_68k_serial_comms_ctrl_w)
586586
587587/*************************************************************/
588588
589static ADDRESS_MAP_START( common_default_am, ADDRESS_SPACE_PROGRAM, 16 )
590   NAMCOS2_68K_DEFAULT_CPU_BOARD_AM
591   AM_RANGE(0xc00000, 0xc03fff) AM_READ(namcos2_sprite_ram_r) AM_WRITE(namcos2_sprite_ram_w) AM_BASE(&namcos2_sprite_ram)
592   AM_RANGE(0xc40000, 0xc40001) AM_READ(namcos2_gfx_ctrl_r) AM_WRITE(namcos2_gfx_ctrl_w)
593   AM_RANGE(0xc80000, 0xc9ffff) AM_READ(namcos2_68k_roz_ram_r) AM_WRITE(namcos2_68k_roz_ram_w) AM_BASE(&namcos2_68k_roz_ram)
594   AM_RANGE(0xcc0000, 0xcc000f) AM_READ(namcos2_68k_roz_ctrl_r) AM_WRITE(namcos2_68k_roz_ctrl_w)
595   AM_RANGE(0xd00000, 0xd0000f) AM_READ(namcos2_68k_key_r) AM_WRITE(namcos2_68k_key_w)
589#define COMMON_DEFAULT_AM \
590   NAMCOS2_68K_DEFAULT_CPU_BOARD_AM \
591   AM_RANGE(0xc00000, 0xc03fff) AM_READWRITE(namcos2_sprite_ram_r,namcos2_sprite_ram_w) AM_BASE(&namcos2_sprite_ram) \
592   AM_RANGE(0xc40000, 0xc40001) AM_READWRITE(namcos2_gfx_ctrl_r,namcos2_gfx_ctrl_w) \
593   AM_RANGE(0xc80000, 0xc9ffff) AM_READWRITE(namcos2_68k_roz_ram_r,namcos2_68k_roz_ram_w) AM_BASE(&namcos2_68k_roz_ram) \
594   AM_RANGE(0xcc0000, 0xcc000f) AM_READWRITE(namcos2_68k_roz_ctrl_r,namcos2_68k_roz_ctrl_w) \
595   AM_RANGE(0xd00000, 0xd0000f) AM_READWRITE(namcos2_68k_key_r,namcos2_68k_key_w) \
596
597
598static ADDRESS_MAP_START( master_default_am, ADDRESS_SPACE_PROGRAM, 16 )
599   AM_RANGE(0x000000, 0x03ffff) AM_ROM
600   AM_RANGE(0x100000, 0x10ffff) AM_READWRITE(NAMCOS2_68K_MASTER_RAM_R,NAMCOS2_68K_MASTER_RAM_W)
601   AM_RANGE(0x180000, 0x183fff) AM_READWRITE(NAMCOS2_68K_eeprom_R,NAMCOS2_68K_eeprom_W)
602   AM_RANGE(0x1c0000, 0x1fffff) AM_READWRITE(namcos2_68k_master_C148_r,namcos2_68k_master_C148_w)
603   COMMON_DEFAULT_AM
596604ADDRESS_MAP_END
597605
598606static ADDRESS_MAP_START( slave_default_am, ADDRESS_SPACE_PROGRAM, 16 )
599   AM_RANGE(0x000000, 0x03ffff) AM_READ(SMH_ROM) AM_WRITE(SMH_ROM)
600   AM_RANGE(0x100000, 0x13ffff) AM_READ(NAMCOS2_68K_SLAVE_RAM_R) AM_WRITE(NAMCOS2_68K_SLAVE_RAM_W)
601   AM_RANGE(0x1c0000, 0x1fffff) AM_READ(namcos2_68k_slave_C148_r) AM_WRITE(namcos2_68k_slave_C148_w)
607   AM_RANGE(0x000000, 0x03ffff) AM_ROM
608   AM_RANGE(0x100000, 0x13ffff) AM_READWRITE(NAMCOS2_68K_SLAVE_RAM_R,NAMCOS2_68K_SLAVE_RAM_W)
609   AM_RANGE(0x1c0000, 0x1fffff) AM_READWRITE(namcos2_68k_slave_C148_r,namcos2_68k_slave_C148_w)
610   COMMON_DEFAULT_AM
602611ADDRESS_MAP_END
603612
604static ADDRESS_MAP_START( master_default_am, ADDRESS_SPACE_PROGRAM, 16 )
605   AM_RANGE(0x000000, 0x03ffff) AM_READ(SMH_ROM) AM_WRITE(SMH_ROM)
606   AM_RANGE(0x100000, 0x10ffff) AM_READ(NAMCOS2_68K_MASTER_RAM_R) AM_WRITE(NAMCOS2_68K_MASTER_RAM_W)
607   AM_RANGE(0x180000, 0x183fff) AM_READ(NAMCOS2_68K_eeprom_R) AM_WRITE(NAMCOS2_68K_eeprom_W)
608   AM_RANGE(0x1c0000, 0x1fffff) AM_READ(namcos2_68k_master_C148_r) AM_WRITE(namcos2_68k_master_C148_w)
609ADDRESS_MAP_END
610613
611614/*************************************************************/
612615
613static ADDRESS_MAP_START( common_finallap_am, ADDRESS_SPACE_PROGRAM, 16 )
614   AM_RANGE(0x300000, 0x33ffff) AM_READ(namcos2_flap_prot_r)
615   NAMCOS2_68K_DEFAULT_CPU_BOARD_AM
616   AM_RANGE(0x800000, 0x80ffff) AM_READ(namcos2_sprite_ram_r) AM_WRITE(namcos2_sprite_ram_w) AM_BASE(&namcos2_sprite_ram)
617   AM_RANGE(0x840000, 0x840001) AM_READ(namcos2_gfx_ctrl_r) AM_WRITE(namcos2_gfx_ctrl_w)
618   AM_RANGE(0x880000, 0x89ffff) AM_READ(namco_road16_r) AM_WRITE(namco_road16_w)
619   AM_RANGE(0x8c0000, 0x8c0001) AM_WRITENOP
620ADDRESS_MAP_END
616#define COMMON_FINALLAP_AM \
617   AM_RANGE(0x300000, 0x33ffff) AM_READ(namcos2_flap_prot_r) \
618   NAMCOS2_68K_DEFAULT_CPU_BOARD_AM \
619   AM_RANGE(0x800000, 0x80ffff) AM_READ(namcos2_sprite_ram_r) AM_WRITE(namcos2_sprite_ram_w) AM_BASE(&namcos2_sprite_ram) \
620   AM_RANGE(0x840000, 0x840001) AM_READ(namcos2_gfx_ctrl_r) AM_WRITE(namcos2_gfx_ctrl_w) \
621   AM_RANGE(0x880000, 0x89ffff) AM_READ(namco_road16_r) AM_WRITE(namco_road16_w) \
622   AM_RANGE(0x8c0000, 0x8c0001) AM_WRITENOP \
621623
624
622625static ADDRESS_MAP_START( master_finallap_am, ADDRESS_SPACE_PROGRAM, 16 )
623   AM_RANGE(0x000000, 0x03ffff) AM_READ(SMH_ROM) AM_WRITE(SMH_ROM)
624   AM_RANGE(0x100000, 0x10ffff) AM_READ(NAMCOS2_68K_MASTER_RAM_R) AM_WRITE(NAMCOS2_68K_MASTER_RAM_W)
625   AM_RANGE(0x180000, 0x183fff) AM_READ(NAMCOS2_68K_eeprom_R) AM_WRITE(NAMCOS2_68K_eeprom_W)
626   AM_RANGE(0x1c0000, 0x1fffff) AM_READ(namcos2_68k_master_C148_r) AM_WRITE(namcos2_68k_master_C148_w)
626   AM_RANGE(0x000000, 0x03ffff) AM_ROM
627   AM_RANGE(0x100000, 0x10ffff) AM_READWRITE(NAMCOS2_68K_MASTER_RAM_R,NAMCOS2_68K_MASTER_RAM_W)
628   AM_RANGE(0x180000, 0x183fff) AM_READWRITE(NAMCOS2_68K_eeprom_R,NAMCOS2_68K_eeprom_W)
629   AM_RANGE(0x1c0000, 0x1fffff) AM_READWRITE(namcos2_68k_master_C148_r,namcos2_68k_master_C148_w)
630   COMMON_FINALLAP_AM
627631ADDRESS_MAP_END
628632
629633static ADDRESS_MAP_START( slave_finallap_am, ADDRESS_SPACE_PROGRAM, 16 )
630   AM_RANGE(0x000000, 0x03ffff) AM_READ(SMH_ROM) AM_WRITE(SMH_ROM)
631   AM_RANGE(0x100000, 0x13ffff) AM_READ(NAMCOS2_68K_SLAVE_RAM_R) AM_WRITE(NAMCOS2_68K_SLAVE_RAM_W)
632   AM_RANGE(0x1c0000, 0x1fffff) AM_READ(namcos2_68k_slave_C148_r) AM_WRITE(namcos2_68k_slave_C148_w)
634   AM_RANGE(0x000000, 0x03ffff) AM_ROM
635   AM_RANGE(0x100000, 0x13ffff) AM_READWRITE(NAMCOS2_68K_SLAVE_RAM_R,NAMCOS2_68K_SLAVE_RAM_W)
636   AM_RANGE(0x1c0000, 0x1fffff) AM_READWRITE(namcos2_68k_slave_C148_r,namcos2_68k_slave_C148_w)
637   COMMON_FINALLAP_AM
633638ADDRESS_MAP_END
634639
635640/*************************************************************/
636641
637static ADDRESS_MAP_START( common_sgunner_am, ADDRESS_SPACE_PROGRAM, 16 )
638   NAMCOS2_68K_DEFAULT_CPU_BOARD_AM
639   AM_RANGE(0x800000, 0x8141ff) AM_READ(namco_obj16_r) AM_WRITE(namco_obj16_w)
640   AM_RANGE(0x818000, 0x818001) AM_WRITENOP
641   AM_RANGE(0xa00000, 0xa0000f) AM_READ(namcos2_68k_key_r) AM_WRITE(namcos2_68k_key_w)
642ADDRESS_MAP_END
642#define COMMON_SGUNNER_AM \
643   NAMCOS2_68K_DEFAULT_CPU_BOARD_AM \
644   AM_RANGE(0x800000, 0x8141ff) AM_READWRITE(namco_obj16_r,namco_obj16_w) \
645   AM_RANGE(0x818000, 0x818001) AM_WRITENOP \
646   AM_RANGE(0xa00000, 0xa0000f) AM_READWRITE(namcos2_68k_key_r,namcos2_68k_key_w) \
643647
648
644649static ADDRESS_MAP_START( master_sgunner_am, ADDRESS_SPACE_PROGRAM, 16 )
645   AM_RANGE(0x000000, 0x03ffff) AM_READ(SMH_ROM) AM_WRITE(SMH_ROM)
646   AM_RANGE(0x100000, 0x10ffff) AM_READ(NAMCOS2_68K_MASTER_RAM_R) AM_WRITE(NAMCOS2_68K_MASTER_RAM_W)
647   AM_RANGE(0x180000, 0x183fff) AM_READ(NAMCOS2_68K_eeprom_R) AM_WRITE(NAMCOS2_68K_eeprom_W)
648   AM_RANGE(0x1c0000, 0x1fffff) AM_READ(namcos2_68k_master_C148_r) AM_WRITE(namcos2_68k_master_C148_w)
650   AM_RANGE(0x000000, 0x03ffff) AM_ROM
651   AM_RANGE(0x100000, 0x10ffff) AM_READWRITE(NAMCOS2_68K_MASTER_RAM_R,NAMCOS2_68K_MASTER_RAM_W)
652   AM_RANGE(0x180000, 0x183fff) AM_READWRITE(NAMCOS2_68K_eeprom_R,NAMCOS2_68K_eeprom_W)
653   AM_RANGE(0x1c0000, 0x1fffff) AM_READWRITE(namcos2_68k_master_C148_r,namcos2_68k_master_C148_w)
654   COMMON_SGUNNER_AM
649655ADDRESS_MAP_END
650656
651657static ADDRESS_MAP_START( slave_sgunner_am, ADDRESS_SPACE_PROGRAM, 16 )
652   AM_RANGE(0x000000, 0x03ffff) AM_READ(SMH_ROM) AM_WRITE(SMH_ROM)
653   AM_RANGE(0x100000, 0x13ffff) AM_READ(NAMCOS2_68K_SLAVE_RAM_R) AM_WRITE(NAMCOS2_68K_SLAVE_RAM_W)
654   AM_RANGE(0x1c0000, 0x1fffff) AM_READ(namcos2_68k_slave_C148_r) AM_WRITE(namcos2_68k_slave_C148_w)
658   AM_RANGE(0x000000, 0x03ffff) AM_ROM
659   AM_RANGE(0x100000, 0x13ffff) AM_READWRITE(NAMCOS2_68K_SLAVE_RAM_R,NAMCOS2_68K_SLAVE_RAM_W)
660   AM_RANGE(0x1c0000, 0x1fffff) AM_READWRITE(namcos2_68k_slave_C148_r,namcos2_68k_slave_C148_w)
661   COMMON_SGUNNER_AM
655662ADDRESS_MAP_END
656663
657664/*************************************************************/
658665
659static ADDRESS_MAP_START( common_metlhawk_am, ADDRESS_SPACE_PROGRAM, 16 )
660   NAMCOS2_68K_DEFAULT_CPU_BOARD_AM
661   AM_RANGE(0xc00000, 0xc03fff) AM_READ(namcos2_sprite_ram_r) AM_WRITE(namcos2_sprite_ram_w) AM_BASE(&namcos2_sprite_ram)
662   AM_RANGE(0xc40000, 0xc4ffff) AM_READ(namco_rozvideoram16_r) AM_WRITE(namco_rozvideoram16_w)
663   AM_RANGE(0xd00000, 0xd0001f) AM_READ(namco_rozcontrol16_r) AM_WRITE(namco_rozcontrol16_w)
664   AM_RANGE(0xe00000, 0xe00001) AM_READ(namcos2_gfx_ctrl_r) AM_WRITE(namcos2_gfx_ctrl_w) /* ??? */
665ADDRESS_MAP_END
666#define COMMON_METLHAWK_AM \
667   NAMCOS2_68K_DEFAULT_CPU_BOARD_AM \
668   AM_RANGE(0xc00000, 0xc03fff) AM_READWRITE(namcos2_sprite_ram_r,namcos2_sprite_ram_w) AM_BASE(&namcos2_sprite_ram) \
669   AM_RANGE(0xc40000, 0xc4ffff) AM_READWRITE(namco_rozvideoram16_r,namco_rozvideoram16_w) \
670   AM_RANGE(0xd00000, 0xd0001f) AM_READWRITE(namco_rozcontrol16_r,namco_rozcontrol16_w) \
671   AM_RANGE(0xe00000, 0xe00001) AM_READWRITE(namcos2_gfx_ctrl_r,namcos2_gfx_ctrl_w) /* ??? */ \
666672
673
667674static ADDRESS_MAP_START( master_metlhawk_am, ADDRESS_SPACE_PROGRAM, 16 )
668   AM_RANGE(0x000000, 0x03ffff) AM_READ(SMH_ROM) AM_WRITE(SMH_ROM)
669   AM_RANGE(0x100000, 0x10ffff) AM_READ(NAMCOS2_68K_MASTER_RAM_R) AM_WRITE(NAMCOS2_68K_MASTER_RAM_W)
670   AM_RANGE(0x180000, 0x183fff) AM_READ(NAMCOS2_68K_eeprom_R) AM_WRITE(NAMCOS2_68K_eeprom_W)
671   AM_RANGE(0x1c0000, 0x1fffff) AM_READ(namcos2_68k_master_C148_r) AM_WRITE(namcos2_68k_master_C148_w)
675   AM_RANGE(0x000000, 0x03ffff) AM_ROM
676   AM_RANGE(0x100000, 0x10ffff) AM_READWRITE(NAMCOS2_68K_MASTER_RAM_R,NAMCOS2_68K_MASTER_RAM_W)
677   AM_RANGE(0x180000, 0x183fff) AM_READWRITE(NAMCOS2_68K_eeprom_R,NAMCOS2_68K_eeprom_W)
678   AM_RANGE(0x1c0000, 0x1fffff) AM_READWRITE(namcos2_68k_master_C148_r,namcos2_68k_master_C148_w)
679   COMMON_METLHAWK_AM
672680ADDRESS_MAP_END
673681
674682static ADDRESS_MAP_START( slave_metlhawk_am, ADDRESS_SPACE_PROGRAM, 16 )
675   AM_RANGE(0x000000, 0x03ffff) AM_READ(SMH_ROM) AM_WRITE(SMH_ROM)
676   AM_RANGE(0x100000, 0x13ffff) AM_READ(NAMCOS2_68K_SLAVE_RAM_R) AM_WRITE(NAMCOS2_68K_SLAVE_RAM_W)
677   AM_RANGE(0x1c0000, 0x1fffff) AM_READ(namcos2_68k_slave_C148_r) AM_WRITE(namcos2_68k_slave_C148_w)
683   AM_RANGE(0x000000, 0x03ffff) AM_ROM
684   AM_RANGE(0x100000, 0x13ffff) AM_READWRITE(NAMCOS2_68K_SLAVE_RAM_R,NAMCOS2_68K_SLAVE_RAM_W)
685   AM_RANGE(0x1c0000, 0x1fffff) AM_READWRITE(namcos2_68k_slave_C148_r,namcos2_68k_slave_C148_w)
686   COMMON_METLHAWK_AM
678687ADDRESS_MAP_END
679688
680689/*************************************************************/
681690
682static ADDRESS_MAP_START( common_luckywld_am, ADDRESS_SPACE_PROGRAM, 16 )
683   NAMCOS2_68K_DEFAULT_CPU_BOARD_AM
684   AM_RANGE(0x800000, 0x8141ff) AM_READ(namco_obj16_r) AM_WRITE(namco_obj16_w)
685   AM_RANGE(0x818000, 0x818001) AM_READ(SMH_RAM) AM_WRITENOP /* enable? */
686   AM_RANGE(0x81a000, 0x81a001) AM_WRITENOP /* enable? */
687   AM_RANGE(0x840000, 0x840001) AM_READ(SMH_RAM)
688   AM_RANGE(0x900000, 0x900007) AM_READ(namco_spritepos16_r) AM_WRITE(namco_spritepos16_w)
689   AM_RANGE(0xa00000, 0xa1ffff) AM_READ(namco_road16_r) AM_WRITE(namco_road16_w)
690   AM_RANGE(0xc00000, 0xc0ffff) AM_READ(namco_rozvideoram16_r) AM_WRITE(namco_rozvideoram16_w)
691   AM_RANGE(0xd00000, 0xd0001f) AM_READ(namco_rozcontrol16_r) AM_WRITE(namco_rozcontrol16_w)
692   AM_RANGE(0xf00000, 0xf00007) AM_READ(namcos2_68k_key_r) AM_WRITE(namcos2_68k_key_w)
693ADDRESS_MAP_END
691#define COMMON_LUCKYWLD_AM \
692   NAMCOS2_68K_DEFAULT_CPU_BOARD_AM \
693   AM_RANGE(0x800000, 0x8141ff) AM_READWRITE(namco_obj16_r,namco_obj16_w) \
694   AM_RANGE(0x818000, 0x818001) AM_NOP /* enable? */ \
695   AM_RANGE(0x81a000, 0x81a001) AM_WRITENOP /* enable? */ \
696   AM_RANGE(0x840000, 0x840001) AM_READNOP \
697   AM_RANGE(0x900000, 0x900007) AM_READWRITE(namco_spritepos16_r,namco_spritepos16_w) \
698   AM_RANGE(0xa00000, 0xa1ffff) AM_READWRITE(namco_road16_r,namco_road16_w) \
699   AM_RANGE(0xc00000, 0xc0ffff) AM_READWRITE(namco_rozvideoram16_r,namco_rozvideoram16_w) \
700   AM_RANGE(0xd00000, 0xd0001f) AM_READWRITE(namco_rozcontrol16_r,namco_rozcontrol16_w) \
701   AM_RANGE(0xf00000, 0xf00007) AM_READWRITE(namcos2_68k_key_r,namcos2_68k_key_w) \
694702
703
695704static ADDRESS_MAP_START( master_luckywld_am, ADDRESS_SPACE_PROGRAM, 16 )
696   AM_RANGE(0x000000, 0x03ffff) AM_READ(SMH_ROM) AM_WRITE(SMH_ROM)
697   AM_RANGE(0x100000, 0x10ffff) AM_READ(NAMCOS2_68K_MASTER_RAM_R) AM_WRITE(NAMCOS2_68K_MASTER_RAM_W)
698   AM_RANGE(0x180000, 0x183fff) AM_READ(NAMCOS2_68K_eeprom_R) AM_WRITE(NAMCOS2_68K_eeprom_W)
699   AM_RANGE(0x1c0000, 0x1fffff) AM_READ(namcos2_68k_master_C148_r) AM_WRITE(namcos2_68k_master_C148_w)
705   AM_RANGE(0x000000, 0x03ffff) AM_ROM
706   AM_RANGE(0x100000, 0x10ffff) AM_READWRITE(NAMCOS2_68K_MASTER_RAM_R,NAMCOS2_68K_MASTER_RAM_W)
707   AM_RANGE(0x180000, 0x183fff) AM_READWRITE(NAMCOS2_68K_eeprom_R,NAMCOS2_68K_eeprom_W)
708   AM_RANGE(0x1c0000, 0x1fffff) AM_READWRITE(namcos2_68k_master_C148_r,namcos2_68k_master_C148_w)
709   COMMON_LUCKYWLD_AM
700710ADDRESS_MAP_END
701711
702712static ADDRESS_MAP_START( slave_luckywld_am, ADDRESS_SPACE_PROGRAM, 16 )
703   AM_RANGE(0x000000, 0x03ffff) AM_READ(SMH_ROM) AM_WRITE(SMH_ROM)
704   AM_RANGE(0x100000, 0x13ffff) AM_READ(NAMCOS2_68K_SLAVE_RAM_R) AM_WRITE(NAMCOS2_68K_SLAVE_RAM_W)
705   AM_RANGE(0x1c0000, 0x1fffff) AM_READ(namcos2_68k_slave_C148_r) AM_WRITE(namcos2_68k_slave_C148_w)
713   AM_RANGE(0x000000, 0x03ffff) AM_ROM
714   AM_RANGE(0x100000, 0x13ffff) AM_READWRITE(NAMCOS2_68K_SLAVE_RAM_R,NAMCOS2_68K_SLAVE_RAM_W)
715   AM_RANGE(0x1c0000, 0x1fffff) AM_READWRITE(namcos2_68k_slave_C148_r,namcos2_68k_slave_C148_w)
716   COMMON_LUCKYWLD_AM
706717ADDRESS_MAP_END
707718
708719/*************************************************************/
709720/* 6809 SOUND CPU Memory declarations                        */
710721/*************************************************************/
711722
712static ADDRESS_MAP_START( readmem_sound, ADDRESS_SPACE_PROGRAM, 8 )
713   AM_RANGE(0x0000, 0x3fff) AM_READ(BANKED_SOUND_ROM_R) /* banked */
714   AM_RANGE(0x4000, 0x4001) AM_DEVREAD("ym", ym2151_r)
715   AM_RANGE(0x5000, 0x6fff) AM_DEVREAD("c140", c140_r)
716   AM_RANGE(0x7000, 0x77ff) AM_READ(namcos2_dpram_byte_r)
717   AM_RANGE(0x7800, 0x7fff) AM_READ(namcos2_dpram_byte_r) /* mirror */
718   AM_RANGE(0x8000, 0x9fff) AM_READ(SMH_RAM)
719   AM_RANGE(0xd000, 0xffff) AM_READ(SMH_ROM)
720ADDRESS_MAP_END
721
722static ADDRESS_MAP_START( writemem_sound, ADDRESS_SPACE_PROGRAM, 8 )
723   AM_RANGE(0x0000, 0x3fff) AM_WRITE(SMH_ROM)
724   AM_RANGE(0x4000, 0x4001) AM_DEVWRITE("ym", ym2151_w)
725   AM_RANGE(0x5000, 0x6fff) AM_DEVWRITE("c140", c140_w)
726   AM_RANGE(0x7000, 0x77ff) AM_WRITE(namcos2_dpram_byte_w) AM_BASE(&namcos2_dpram)
727   AM_RANGE(0x7800, 0x7fff) AM_WRITE(namcos2_dpram_byte_w)   /* mirror */
728   AM_RANGE(0x8000, 0x9fff) AM_WRITE(SMH_RAM)
723static ADDRESS_MAP_START( sound_default_am, ADDRESS_SPACE_PROGRAM, 8 )
724   AM_RANGE(0x0000, 0x3fff) AM_ROMBANK(6) /* banked */
725   AM_RANGE(0x4000, 0x4001) AM_DEVREADWRITE("ym", ym2151_r,ym2151_w)
726   AM_RANGE(0x5000, 0x6fff) AM_DEVREADWRITE("c140", c140_r,c140_w)
727   AM_RANGE(0x7000, 0x77ff) AM_READWRITE(namcos2_dpram_byte_r,namcos2_dpram_byte_w) AM_BASE(&namcos2_dpram)
728   AM_RANGE(0x7800, 0x7fff) AM_READWRITE(namcos2_dpram_byte_r,namcos2_dpram_byte_w) /* mirror */
729   AM_RANGE(0x8000, 0x9fff) AM_RAM
729730   AM_RANGE(0xa000, 0xbfff) AM_WRITENOP /* Amplifier enable on 1st write */
730731   AM_RANGE(0xc000, 0xc001) AM_WRITE(namcos2_sound_bankselect_w)
731732   AM_RANGE(0xd001, 0xd001) AM_WRITENOP /* Watchdog */
732733   AM_RANGE(0xe000, 0xe000) AM_WRITENOP
733   AM_RANGE(0xc000, 0xffff) AM_WRITE(SMH_ROM)
734   AM_RANGE(0xd000, 0xffff) AM_ROM
734735ADDRESS_MAP_END
735736
737
736738/*************************************************************/
737739/* 68705 IO CPU Memory declarations                          */
738740/*************************************************************/
739741
740static ADDRESS_MAP_START( readmem_mcu, ADDRESS_SPACE_PROGRAM, 8 )
742static ADDRESS_MAP_START( mcu_default_am, ADDRESS_SPACE_PROGRAM, 8 )
741743   /* input ports and dips are mapped here */
742744   AM_RANGE(0x0000, 0x0000) AM_READNOP /* Keep logging quiet */
743745   AM_RANGE(0x0001, 0x0001) AM_READ(namcos2_input_port_0_r)
744746   AM_RANGE(0x0002, 0x0002) AM_READ_PORT("MCUC")
745   AM_RANGE(0x0003, 0x0003) AM_READ(namcos2_mcu_port_d_r)
747   AM_RANGE(0x0003, 0x0003) AM_READWRITE(namcos2_mcu_port_d_r,namcos2_mcu_port_d_w)
746748   AM_RANGE(0x0007, 0x0007) AM_READ(namcos2_input_port_10_r)
747   AM_RANGE(0x0010, 0x0010) AM_READ(namcos2_mcu_analog_ctrl_r)
748   AM_RANGE(0x0011, 0x0011) AM_READ(namcos2_mcu_analog_port_r)
749   AM_RANGE(0x0008, 0x003f) AM_READ(SMH_RAM) /* Fill in register to stop logging */
750   AM_RANGE(0x0040, 0x01bf) AM_READ(SMH_RAM)
751   AM_RANGE(0x01c0, 0x1fff) AM_READ(SMH_ROM)
749   AM_RANGE(0x0010, 0x0010) AM_READWRITE(namcos2_mcu_analog_ctrl_r,namcos2_mcu_analog_ctrl_w)
750   AM_RANGE(0x0011, 0x0011) AM_READWRITE(namcos2_mcu_analog_port_r,namcos2_mcu_analog_port_w)
751   AM_RANGE(0x0000, 0x003f) AM_RAM /* Fill in register to stop logging */
752   AM_RANGE(0x0040, 0x01bf) AM_RAM
753   AM_RANGE(0x01c0, 0x1fff) AM_ROM
752754   AM_RANGE(0x2000, 0x2000) AM_READ_PORT("DSW")
753755   AM_RANGE(0x3000, 0x3000) AM_READ(namcos2_input_port_12_r)
754756   AM_RANGE(0x3001, 0x3001) AM_READ_PORT("MCUDI1")
755757   AM_RANGE(0x3002, 0x3002) AM_READ_PORT("MCUDI2")
756758   AM_RANGE(0x3003, 0x3003) AM_READ_PORT("MCUDI3")
757   AM_RANGE(0x5000, 0x57ff) AM_READ(namcos2_dpram_byte_r)
759   AM_RANGE(0x5000, 0x57ff) AM_READWRITE(namcos2_dpram_byte_r,namcos2_dpram_byte_w) AM_BASE(&namcos2_dpram)
758760   AM_RANGE(0x6000, 0x6fff) AM_READNOP /* watchdog */
759   AM_RANGE(0x8000, 0xffff) AM_READ(SMH_ROM)
761   AM_RANGE(0x8000, 0xffff) AM_ROM
760762ADDRESS_MAP_END
761763
762static ADDRESS_MAP_START( writemem_mcu, ADDRESS_SPACE_PROGRAM, 8 )
763   AM_RANGE(0x0003, 0x0003) AM_WRITE(namcos2_mcu_port_d_w)
764   AM_RANGE(0x0010, 0x0010) AM_WRITE(namcos2_mcu_analog_ctrl_w)
765   AM_RANGE(0x0011, 0x0011) AM_WRITE(namcos2_mcu_analog_port_w)
766   AM_RANGE(0x0000, 0x003f) AM_WRITE(SMH_RAM) /* Fill in register to stop logging */
767   AM_RANGE(0x0040, 0x01bf) AM_WRITE(SMH_RAM)
768   AM_RANGE(0x01c0, 0x1fff) AM_WRITE(SMH_ROM)
769   AM_RANGE(0x5000, 0x57ff) AM_WRITE(namcos2_dpram_byte_w) AM_BASE(&namcos2_dpram)
770   AM_RANGE(0x8000, 0xffff) AM_WRITE(SMH_ROM)
771ADDRESS_MAP_END
772764
773765/*************************************************************/
774766/*                                                           */
r4679r4680
15821574
15831575static MACHINE_DRIVER_START( default )
15841576   MDRV_CPU_ADD("maincpu", M68000, 12288000)
1585   MDRV_CPU_PROGRAM_MAP(master_default_am,common_default_am)
1577   MDRV_CPU_PROGRAM_MAP(master_default_am,0)
15861578   MDRV_CPU_VBLANK_INT("screen", namcos2_68k_master_vblank)
15871579
15881580   MDRV_CPU_ADD("slave", M68000, 12288000)
1589   MDRV_CPU_PROGRAM_MAP(slave_default_am,common_default_am)
1581   MDRV_CPU_PROGRAM_MAP(slave_default_am,0)
15901582   MDRV_CPU_VBLANK_INT("screen", namcos2_68k_slave_vblank)
15911583
15921584   MDRV_CPU_ADD("audiocpu", M6809,3072000) // Sound handling
1593   MDRV_CPU_PROGRAM_MAP(readmem_sound,writemem_sound)
1585   MDRV_CPU_PROGRAM_MAP(sound_default_am,0)
15941586   MDRV_CPU_VBLANK_INT_HACK(irq0_line_hold,2)
15951587   MDRV_CPU_PERIODIC_INT(irq1_line_hold, 120)
15961588
15971589   MDRV_CPU_ADD("mcu", HD63705,2048000) // I/O handling
1598   MDRV_CPU_PROGRAM_MAP(readmem_mcu,writemem_mcu)
1590   MDRV_CPU_PROGRAM_MAP(mcu_default_am,0)
15991591   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
16001592
16011593   MDRV_QUANTUM_TIME(HZ(6000)) /* CPU slices per frame */
r4679r4680
16561648
16571649static MACHINE_DRIVER_START( gollygho )
16581650   MDRV_CPU_ADD("maincpu", M68000, 12288000)
1659   MDRV_CPU_PROGRAM_MAP(master_default_am,common_default_am)
1651   MDRV_CPU_PROGRAM_MAP(master_default_am,0)
16601652   MDRV_CPU_VBLANK_INT("screen", namcos2_68k_master_vblank)
16611653
16621654   MDRV_CPU_ADD("slave", M68000, 12288000)
1663   MDRV_CPU_PROGRAM_MAP(slave_default_am,common_default_am)
1655   MDRV_CPU_PROGRAM_MAP(slave_default_am,0)
16641656   MDRV_CPU_VBLANK_INT("screen", namcos2_68k_slave_vblank)
16651657
16661658   MDRV_CPU_ADD("audiocpu", M6809,3072000) // Sound handling
1667   MDRV_CPU_PROGRAM_MAP(readmem_sound,writemem_sound)
1659   MDRV_CPU_PROGRAM_MAP(sound_default_am,0)
16681660   MDRV_CPU_VBLANK_INT_HACK(irq0_line_hold,2)
16691661   MDRV_CPU_PERIODIC_INT(irq1_line_hold, 120)
16701662
16711663   MDRV_CPU_ADD("mcu", HD63705,2048000) // I/O handling
1672   MDRV_CPU_PROGRAM_MAP(readmem_mcu,writemem_mcu)
1664   MDRV_CPU_PROGRAM_MAP(mcu_default_am,0)
16731665   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
16741666
16751667   MDRV_QUANTUM_TIME(HZ(6000)) /* CPU slices per frame */
r4679r4680
17061698
17071699static MACHINE_DRIVER_START( finallap )
17081700   MDRV_CPU_ADD("maincpu", M68000, 12288000)
1709   MDRV_CPU_PROGRAM_MAP(master_finallap_am,common_finallap_am)
1701   MDRV_CPU_PROGRAM_MAP(master_finallap_am,0)
17101702   MDRV_CPU_VBLANK_INT("screen", namcos2_68k_master_vblank)
17111703
17121704   MDRV_CPU_ADD("slave", M68000, 12288000)
1713   MDRV_CPU_PROGRAM_MAP(slave_finallap_am,common_finallap_am)
1705   MDRV_CPU_PROGRAM_MAP(slave_finallap_am,0)
17141706   MDRV_CPU_VBLANK_INT("screen", namcos2_68k_slave_vblank)
17151707
17161708   MDRV_CPU_ADD("audiocpu", M6809,3072000) // Sound handling
1717   MDRV_CPU_PROGRAM_MAP(readmem_sound,writemem_sound)
1709   MDRV_CPU_PROGRAM_MAP(sound_default_am,0)
17181710   MDRV_CPU_VBLANK_INT_HACK(irq0_line_hold,2)
17191711   MDRV_CPU_PERIODIC_INT(irq1_line_hold, 120)
17201712
17211713   MDRV_CPU_ADD("mcu", HD63705,2048000) // I/O handling
1722   MDRV_CPU_PROGRAM_MAP(readmem_mcu,writemem_mcu)
1714   MDRV_CPU_PROGRAM_MAP(mcu_default_am,0)
17231715   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
17241716
17251717   MDRV_QUANTUM_TIME(HZ(6000)) /* CPU slices per frame */
r4679r4680
17561748
17571749static MACHINE_DRIVER_START( sgunner )
17581750   MDRV_CPU_ADD("maincpu", M68000, 12288000)
1759   MDRV_CPU_PROGRAM_MAP(master_sgunner_am,common_sgunner_am)
1751   MDRV_CPU_PROGRAM_MAP(master_sgunner_am,0)
17601752   MDRV_CPU_VBLANK_INT("screen", namcos2_68k_master_vblank)
17611753
17621754   MDRV_CPU_ADD("slave", M68000, 12288000)
1763   MDRV_CPU_PROGRAM_MAP(slave_sgunner_am,common_sgunner_am)
1755   MDRV_CPU_PROGRAM_MAP(slave_sgunner_am,0)
17641756   MDRV_CPU_VBLANK_INT("screen", namcos2_68k_slave_vblank)
17651757
17661758   MDRV_CPU_ADD("audiocpu", M6809,3072000) // Sound handling
1767   MDRV_CPU_PROGRAM_MAP(readmem_sound,writemem_sound)
1759   MDRV_CPU_PROGRAM_MAP(sound_default_am,0)
17681760   MDRV_CPU_VBLANK_INT_HACK(irq0_line_hold,2)
17691761   MDRV_CPU_PERIODIC_INT(irq1_line_hold, 120)
17701762
17711763   MDRV_CPU_ADD("mcu", HD63705,2048000) // I/O handling
1772   MDRV_CPU_PROGRAM_MAP(readmem_mcu,writemem_mcu)
1764   MDRV_CPU_PROGRAM_MAP(mcu_default_am,0)
17731765   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
17741766
17751767   MDRV_QUANTUM_TIME(HZ(6000)) /* CPU slices per frame */
r4679r4680
18061798
18071799static MACHINE_DRIVER_START( luckywld )
18081800   MDRV_CPU_ADD("maincpu", M68000, 12288000)
1809   MDRV_CPU_PROGRAM_MAP(master_luckywld_am,common_luckywld_am)
1801   MDRV_CPU_PROGRAM_MAP(master_luckywld_am,0)
18101802   MDRV_CPU_VBLANK_INT("screen", namcos2_68k_master_vblank)
18111803
18121804   MDRV_CPU_ADD("slave", M68000, 12288000)
1813   MDRV_CPU_PROGRAM_MAP(slave_luckywld_am,common_luckywld_am)
1805   MDRV_CPU_PROGRAM_MAP(slave_luckywld_am,0)
18141806   MDRV_CPU_VBLANK_INT("screen", namcos2_68k_slave_vblank)
18151807
18161808   MDRV_CPU_ADD("audiocpu", M6809,3072000) /* Sound handling */
1817   MDRV_CPU_PROGRAM_MAP(readmem_sound,writemem_sound)
1809   MDRV_CPU_PROGRAM_MAP(sound_default_am,0)
18181810   MDRV_CPU_VBLANK_INT_HACK(irq0_line_hold,2)
18191811   MDRV_CPU_PERIODIC_INT(irq1_line_hold,120)
18201812
18211813   MDRV_CPU_ADD("mcu", HD63705,2048000) /* I/O handling */
1822   MDRV_CPU_PROGRAM_MAP(readmem_mcu,writemem_mcu)
1814   MDRV_CPU_PROGRAM_MAP(mcu_default_am,0)
18231815   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
18241816
18251817   MDRV_QUANTUM_TIME(HZ(6000)) /* CPU slices per frame */
r4679r4680
18561848
18571849static MACHINE_DRIVER_START( metlhawk )
18581850   MDRV_CPU_ADD("maincpu", M68000, 12288000)
1859   MDRV_CPU_PROGRAM_MAP(master_metlhawk_am,common_metlhawk_am)
1851   MDRV_CPU_PROGRAM_MAP(master_metlhawk_am,0)
18601852   MDRV_CPU_VBLANK_INT("screen", namcos2_68k_master_vblank)
18611853
18621854   MDRV_CPU_ADD("slave", M68000, 12288000)
1863   MDRV_CPU_PROGRAM_MAP(slave_metlhawk_am,common_metlhawk_am)
1855   MDRV_CPU_PROGRAM_MAP(slave_metlhawk_am,0)
18641856   MDRV_CPU_VBLANK_INT("screen", namcos2_68k_slave_vblank)
18651857
18661858   MDRV_CPU_ADD("audiocpu", M6809,3072000) /* Sound handling */
1867   MDRV_CPU_PROGRAM_MAP(readmem_sound,writemem_sound)
1859   MDRV_CPU_PROGRAM_MAP(sound_default_am,0)
18681860   MDRV_CPU_VBLANK_INT_HACK(irq0_line_hold,2)
18691861   MDRV_CPU_PERIODIC_INT(irq1_line_hold,120)
18701862
18711863   MDRV_CPU_ADD("mcu", HD63705,2048000) /* I/O handling */
1872   MDRV_CPU_PROGRAM_MAP(readmem_mcu,writemem_mcu)
1864   MDRV_CPU_PROGRAM_MAP(mcu_default_am,0)
18731865   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
18741866
18751867   MDRV_QUANTUM_TIME(HZ(6000)) /* CPU slices per frame */
r4679r4680
43994391   ROM_REGION( 0x400000, "gfx1", ROMREGION_DISPOSE ) /* Sprites */
44004392   ROM_LOAD( "bt1-obj0.bin",  0x000000, 0x80000, CRC(16b5dc04) SHA1(57cc4b7907442f922102fbd61e470c149f0379ac) )
44014393   ROM_LOAD( "bt1-obj1.bin",  0x080000, 0x80000, CRC(ae37a969) SHA1(524a8ef68a62f9168d356e6cd37a72a888ced202) )
4402   ROM_LOAD( "bt1-obj2.bin",  0x100000, 0x80000, NO_DUMP ) // missing?
4394   ROM_LOAD( "bt1-obj2.bin",  0x100000, 0x80000, CRC(75f74871) SHA1(75c47a2132e21a2d82000bca137929bffecc96ef) )
44034395   ROM_LOAD( "bt1-obj3.bin",  0x180000, 0x80000, CRC(7fb23c05) SHA1(da97c595a3338021c1bc46f9668e1ec6c7985cea) )
44044396
44054397   ROM_REGION( 0x200000, "gfx2", ROMREGION_DISPOSE ) /* Tiles */
r4679r4680
49034895GAME( 1991, sgunnr2j, sgunner2, sgunner,  sgunner,  sgunner2, ROT0,   "Namco", "Steel Gunner 2 (Japan)", 0 )
49044896GAME( 1991, cosmogng, 0,        default,  default,  cosmogng, ROT90,  "Namco", "Cosmo Gang the Video (US)", 0 )
49054897GAME( 1991, cosmognj, cosmogng, default,  default,  cosmogng, ROT90,  "Namco", "Cosmo Gang the Video (Japan)", 0 )
4906GAME( 1992, bubbletr, 0,        gollygho, bubbletr, bubbletr, ROT180, "Namco", "Bubble Trouble (Japan)",GAME_NOT_WORKING ) // incomplete dump
4898GAME( 1992, bubbletr, 0,        gollygho, bubbletr, bubbletr, ROT180, "Namco", "Bubble Trouble (Japan)",GAME_NOT_WORKING )
49074899GAMEL(1992, finalap3, 0,        finallap, finalap3, finalap3, ROT0,   "Namco", "Final Lap 3 (World)", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS, layout_finallap  )
49084900GAMEL(1992, finalp3j, finalap3, finallap, finalap3, finalap3, ROT0,   "Namco", "Final Lap 3 (Japan)", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS, layout_finallap  )
49094901GAME( 1992, luckywld, 0,        luckywld, luckywld, luckywld, ROT0,   "Namco", "Lucky & Wild", 0 )
src/mame/drivers/buster.c
r4679r4680
114114static DRIVER_INIT( buster )
115115{
116116   UINT8 *ROM = memory_region(machine, "maincpu");
117//  vram = auto_malloc(0x2000);
117//  vram = auto_alloc_array(machine, UINT8, 0x2000);
118118   memcpy(buster_rom, ROM, 0x4000);
119119}
120120
src/mame/drivers/m63.c
r4679r4680
323323
324324static WRITE8_HANDLER( snd_irq_w )
325325{
326   cpu_set_input_line(space->machine->cpu[1], 0, ASSERT_LINE);
326   cputag_set_input_line(space->machine, "soundcpu", 0, ASSERT_LINE);
327327   timer_call_after_resynch(space->machine, NULL, 0, NULL);
328328}
329329
r4679r4680
333333   const device_config *ay2 = devtag_get_device(space->machine, "ay2");
334334
335335   if ((p2 & 0xf0) == 0xe0)
336      ay8910_address_w(ay1,0,offset);
336      ay8910_address_w(ay1, 0, offset);
337337   else if ((p2 & 0xf0) == 0xa0)
338      ay8910_data_w(ay1,0,offset);
338      ay8910_data_w(ay1, 0, offset);
339339   else if (ay2 != NULL && (p1 & 0xe0) == 0x60)
340      ay8910_address_w(ay2,0,offset);
340      ay8910_address_w(ay2, 0, offset);
341341   else if (ay2 != NULL && (p1 & 0xe0) == 0x40)
342       ay8910_data_w(ay2,0,offset);
342       ay8910_data_w(ay2, 0, offset);
343343   else if ((p2 & 0xf0) == 0x70 )
344      sound_status=offset;
344      sound_status = offset;
345345}
346346
347347static WRITE8_HANDLER( p1_w )
r4679r4680
352352static WRITE8_HANDLER( p2_w )
353353{
354354   p2 = data;
355   if((p2&0xf0)==0x50)
355   if((p2 & 0xf0) == 0x50)
356356   {
357      cpu_set_input_line(space->machine->cpu[1], 0, CLEAR_LINE);
357      cputag_set_input_line(space->machine, "soundcpu", 0, CLEAR_LINE);
358358   }
359359}
360360
r4679r4680
375375
376376static READ8_HANDLER( snddata_r )
377377{
378   switch(p2&0xf0)
378   switch(p2 & 0xf0)
379379   {
380      case 0x60:   return soundlatch_r(space,0); ;
381      case 0x70:   return memory_region(space->machine, "user1")[((p1&0x1f)<<8)|offset];
380      case 0x60:   return soundlatch_r(space, 0); ;
381      case 0x70:   return memory_region(space->machine, "user1")[((p1 & 0x1f) << 8) | offset];
382382   }
383383   return 0xff;
384384}
r4679r4680
687687   MDRV_CPU_PROGRAM_MAP(fghtbskt_map,0)
688688   MDRV_CPU_VBLANK_INT("screen", nmi_line_pulse)
689689
690   MDRV_CPU_ADD("audiocpu", I8039,XTAL_12MHz/4)   /* ????? */
690   MDRV_CPU_ADD("soundcpu", I8039,XTAL_12MHz/4)   /* ????? */
691691   MDRV_CPU_PROGRAM_MAP(i8039_map,0)
692692   MDRV_CPU_IO_MAP(i8039_port_map,0)
693693   MDRV_CPU_PERIODIC_INT(snd_irq, 60/2)
r4679r4680
856856   ROM_LOAD( "fb10.6f",      0x8000, 0x2000, CRC(6b47efba) SHA1(cb55c7a9d5afe748c1c88f87dd1909e106932798) )
857857   ROM_LOAD( "fb09.7f",      0xa000, 0x2000, CRC(be69e087) SHA1(be95ecafa494cb0787ee18eb3ecea4ad545a6ae3) )
858858
859   ROM_REGION( 0x1000, "audiocpu", 0 )   /* 8039 */
859   ROM_REGION( 0x1000, "soundcpu", 0 )   /* 8039 */
860860   ROM_LOAD( "fb07.0b",      0x0000, 0x1000, CRC(50432dbd) SHA1(35a2218ed243bde47dbe06b5a11a65502ba734ea) )
861861
862862   ROM_REGION( 0x2000, "gfx1", ROMREGION_DISPOSE )
src/mame/drivers/tecmosys.c
r4679r4680
299299{
300300   if (ACCESSING_BITS_0_7)
301301   {
302      soundlatch_w(space,0x00,data & 0xff);
303      cpu_set_input_line(space->machine->cpu[1],INPUT_LINE_NMI,PULSE_LINE);
302      soundlatch_w(space, 0x00, data & 0xff);
303      cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
304304   }
305305}
306306
r4679r4680
559559
560560static VIDEO_START(deroon)
561561{
562   sprite_bitmap = auto_bitmap_alloc(320,240,BITMAP_FORMAT_INDEXED16);
562   sprite_bitmap = auto_bitmap_alloc(machine,320,240,BITMAP_FORMAT_INDEXED16);
563563   bitmap_fill(sprite_bitmap, NULL, 0x4000);
564564
565   tmp_tilemap_composebitmap = auto_bitmap_alloc(320,240,BITMAP_FORMAT_INDEXED16);
566   tmp_tilemap_renderbitmap = auto_bitmap_alloc(320,240,BITMAP_FORMAT_INDEXED16);
565   tmp_tilemap_composebitmap = auto_bitmap_alloc(machine,320,240,BITMAP_FORMAT_INDEXED16);
566   tmp_tilemap_renderbitmap = auto_bitmap_alloc(machine,320,240,BITMAP_FORMAT_INDEXED16);
567567
568568   bitmap_fill(tmp_tilemap_composebitmap, NULL, 0x0000);
569569   bitmap_fill(tmp_tilemap_renderbitmap, NULL, 0x0000);
r4679r4680
869869static void sound_irq(const device_config *device, int irq)
870870{
871871   /* IRQ */
872   cpu_set_input_line(device->machine->cpu[1],0,irq ? ASSERT_LINE : CLEAR_LINE);
872   cputag_set_input_line(device->machine, "audiocpu", 0, irq ? ASSERT_LINE : CLEAR_LINE);
873873}
874874
875875static const ymf262_interface tecmosys_ymf262_interface =
r4679r4680
11081108GAME( 1995, deroon,      0, deroon, deroon, deroon,     ROT0, "Tecmo", "Deroon DeroDero", 0 )
11091109GAME( 1996, tkdensho,    0, deroon, deroon, tkdensho,   ROT0, "Tecmo", "Touki Denshou -Angel Eyes- (VER. 960614)", 0 )
11101110GAME( 1996, tkdensha,    tkdensho, deroon, deroon, tkdensha,   ROT0, "Tecmo", "Touki Denshou -Angel Eyes- (VER. 960427)", 0 )
1111
src/mame/drivers/polyplay.c
r4679r4680
356356
357357static TIMER_CALLBACK( polyplay_timer_callback )
358358{
359   cpu_set_input_line_and_vector(machine->cpu[0], 0, HOLD_LINE, 0x4c);
359   cputag_set_input_line_and_vector(machine, "audiocpu", 0, HOLD_LINE, 0x4c);
360360}
361361
362362/* game driver */
src/mame/drivers/exzisus.c
r4679r4680
130130   exzisus_sharedram_ac[offset] = data;
131131}
132132
133// is it ok that cpub_reset refers to cpuc?
133134static WRITE8_HANDLER( exzisus_cpub_reset_w )
134135{
135   cpu_set_input_line(space->machine->cpu[3], INPUT_LINE_RESET, PULSE_LINE);
136   cputag_set_input_line(space->machine, "cpuc", INPUT_LINE_RESET, PULSE_LINE);
136137}
137138
138139#if 0
r4679r4680
157158
158159**************************************************************************/
159160
160static ADDRESS_MAP_START( cpua_readmem, ADDRESS_SPACE_PROGRAM, 8 )
161   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
162   AM_RANGE(0x8000, 0xbfff) AM_READ(SMH_BANK2)
163   AM_RANGE(0xc000, 0xc5ff) AM_READ(exzisus_objectram_1_r)
164   AM_RANGE(0xc600, 0xdfff) AM_READ(exzisus_videoram_1_r)
165   AM_RANGE(0xe000, 0xefff) AM_READ(exzisus_sharedram_ac_r)
166   AM_RANGE(0xf800, 0xffff) AM_READ(exzisus_sharedram_ab_r)
167ADDRESS_MAP_END
168
169static ADDRESS_MAP_START( cpua_writemem, ADDRESS_SPACE_PROGRAM, 8 )
170   AM_RANGE(0x0000, 0xbfff) AM_WRITE(SMH_ROM)
171   AM_RANGE(0xc000, 0xc5ff) AM_WRITE(exzisus_objectram_1_w) AM_BASE(&exzisus_objectram1) AM_SIZE(&exzisus_objectram_size1)
172   AM_RANGE(0xc600, 0xdfff) AM_WRITE(exzisus_videoram_1_w) AM_BASE(&exzisus_videoram1)
173   AM_RANGE(0xe000, 0xefff) AM_WRITE(exzisus_sharedram_ac_w) AM_BASE(&exzisus_sharedram_ac)
161static ADDRESS_MAP_START( cpua_map, ADDRESS_SPACE_PROGRAM, 8 )
162   AM_RANGE(0x0000, 0x7fff) AM_ROM
163   AM_RANGE(0x8000, 0xbfff) AM_ROMBANK(2)
164   AM_RANGE(0xc000, 0xc5ff) AM_READWRITE(exzisus_objectram_1_r, exzisus_objectram_1_w) AM_BASE(&exzisus_objectram1) AM_SIZE(&exzisus_objectram_size1)
165   AM_RANGE(0xc600, 0xdfff) AM_READWRITE(exzisus_videoram_1_r, exzisus_videoram_1_w) AM_BASE(&exzisus_videoram1)
166   AM_RANGE(0xe000, 0xefff) AM_READWRITE(exzisus_sharedram_ac_r, exzisus_sharedram_ac_w) AM_BASE(&exzisus_sharedram_ac)
174167   AM_RANGE(0xf400, 0xf400) AM_WRITE(exzisus_cpua_bankswitch_w)
175168   AM_RANGE(0xf404, 0xf404) AM_WRITE(exzisus_cpub_reset_w) // ??
176   AM_RANGE(0xf800, 0xffff) AM_WRITE(exzisus_sharedram_ab_w) AM_BASE(&exzisus_sharedram_ab)
169   AM_RANGE(0xf800, 0xffff) AM_READWRITE(exzisus_sharedram_ab_r, exzisus_sharedram_ab_w) AM_BASE(&exzisus_sharedram_ab)
177170ADDRESS_MAP_END
178171
179static ADDRESS_MAP_START( cpub_readmem, ADDRESS_SPACE_PROGRAM, 8 )
180   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
181   AM_RANGE(0x8000, 0xbfff) AM_READ(SMH_BANK1)
182   AM_RANGE(0xc000, 0xc5ff) AM_READ(exzisus_objectram_0_r)
183   AM_RANGE(0xc600, 0xdfff) AM_READ(exzisus_videoram_0_r)
184   AM_RANGE(0xe000, 0xefff) AM_READ(SMH_RAM)
185   AM_RANGE(0xf000, 0xf000) AM_READNOP
186   AM_RANGE(0xf001, 0xf001) AM_READ(taitosound_comm_r)
172static ADDRESS_MAP_START( cpub_map, ADDRESS_SPACE_PROGRAM, 8 )
173   AM_RANGE(0x0000, 0x7fff) AM_ROM
174   AM_RANGE(0x8000, 0xbfff) AM_ROMBANK(1)
175   AM_RANGE(0xc000, 0xc5ff) AM_READWRITE(exzisus_objectram_0_r, exzisus_objectram_0_w) AM_BASE(&exzisus_objectram0) AM_SIZE(&exzisus_objectram_size0)
176   AM_RANGE(0xc600, 0xdfff) AM_READWRITE(exzisus_videoram_0_r, exzisus_videoram_0_w) AM_BASE(&exzisus_videoram0)
177   AM_RANGE(0xe000, 0xefff) AM_RAM
178   AM_RANGE(0xf000, 0xf000) AM_READNOP AM_WRITE(taitosound_port_w)
179   AM_RANGE(0xf001, 0xf001) AM_READWRITE(taitosound_comm_r, taitosound_comm_w)
187180   AM_RANGE(0xf400, 0xf400) AM_READ_PORT("P1")
181   AM_RANGE(0xf400, 0xf400) AM_WRITE(exzisus_cpub_bankswitch_w)
188182   AM_RANGE(0xf401, 0xf401) AM_READ_PORT("P2")
189183   AM_RANGE(0xf402, 0xf402) AM_READ_PORT("SYSTEM")
184   AM_RANGE(0xf402, 0xf402) AM_WRITE(exzisus_coincounter_w)
190185   AM_RANGE(0xf404, 0xf404) AM_READ_PORT("DSWA")
186   AM_RANGE(0xf404, 0xf404) AM_WRITENOP // ??
191187   AM_RANGE(0xf405, 0xf405) AM_READ_PORT("DSWB")
192   AM_RANGE(0xf800, 0xffff) AM_READ(exzisus_sharedram_ab_r)
188   AM_RANGE(0xf800, 0xffff) AM_READWRITE(exzisus_sharedram_ab_r, exzisus_sharedram_ab_w)
193189ADDRESS_MAP_END
194190
195static ADDRESS_MAP_START( cpub_writemem, ADDRESS_SPACE_PROGRAM, 8 )
196   AM_RANGE(0x0000, 0xbfff) AM_WRITE(SMH_ROM)
197   AM_RANGE(0xc000, 0xc5ff) AM_WRITE(exzisus_objectram_0_w) AM_BASE(&exzisus_objectram0) AM_SIZE(&exzisus_objectram_size0)
198   AM_RANGE(0xc600, 0xdfff) AM_WRITE(exzisus_videoram_0_w) AM_BASE(&exzisus_videoram0)
199   AM_RANGE(0xe000, 0xefff) AM_WRITE(SMH_RAM)
200   AM_RANGE(0xf000, 0xf000) AM_WRITE(taitosound_port_w)
201   AM_RANGE(0xf001, 0xf001) AM_WRITE(taitosound_comm_w)
202   AM_RANGE(0xf400, 0xf400) AM_WRITE(exzisus_cpub_bankswitch_w)
203   AM_RANGE(0xf402, 0xf402) AM_WRITE(exzisus_coincounter_w)
204   AM_RANGE(0xf404, 0xf404) AM_WRITENOP // ??
205   AM_RANGE(0xf800, 0xffff) AM_WRITE(exzisus_sharedram_ab_w)
191static ADDRESS_MAP_START( cpuc_map, ADDRESS_SPACE_PROGRAM, 8 )
192   AM_RANGE(0x0000, 0x7fff) AM_ROM
193   AM_RANGE(0x8000, 0x85ff) AM_READWRITE(exzisus_objectram_1_r, exzisus_objectram_1_w)
194   AM_RANGE(0x8600, 0x9fff) AM_READWRITE(exzisus_videoram_1_r, exzisus_videoram_1_w)
195   AM_RANGE(0xa000, 0xafff) AM_READWRITE(exzisus_sharedram_ac_r, exzisus_sharedram_ac_w)
196   AM_RANGE(0xb000, 0xbfff) AM_RAM
206197ADDRESS_MAP_END
207198
208static ADDRESS_MAP_START( cpuc_readmem, ADDRESS_SPACE_PROGRAM, 8 )
209   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
210   AM_RANGE(0x8000, 0x85ff) AM_READ(exzisus_objectram_1_r)
211   AM_RANGE(0x8600, 0x9fff) AM_READ(exzisus_videoram_1_r)
212   AM_RANGE(0xa000, 0xafff) AM_READ(exzisus_sharedram_ac_r)
213   AM_RANGE(0xb000, 0xbfff) AM_READ(SMH_RAM)
199static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 )
200   AM_RANGE(0x0000, 0x7fff) AM_ROM
201   AM_RANGE(0x8000, 0x8fff) AM_RAM
202   AM_RANGE(0x9000, 0x9001) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
203   AM_RANGE(0xa000, 0xa000) AM_READNOP AM_WRITE(taitosound_slave_port_w)
204   AM_RANGE(0xa001, 0xa001) AM_READWRITE(taitosound_slave_comm_r, taitosound_slave_comm_w)
214205ADDRESS_MAP_END
215206
216static ADDRESS_MAP_START( cpuc_writemem, ADDRESS_SPACE_PROGRAM, 8 )
217   AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM)
218   AM_RANGE(0x8000, 0x85ff) AM_WRITE(exzisus_objectram_1_w)
219   AM_RANGE(0x8600, 0x9fff) AM_WRITE(exzisus_videoram_1_w)
220   AM_RANGE(0xa000, 0xafff) AM_WRITE(exzisus_sharedram_ac_w)
221   AM_RANGE(0xb000, 0xbfff) AM_WRITE(SMH_RAM)
222ADDRESS_MAP_END
223207
224static ADDRESS_MAP_START( sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
225   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
226   AM_RANGE(0x8000, 0x8fff) AM_READ(SMH_RAM)
227   AM_RANGE(0x9000, 0x9001) AM_DEVREAD("ym", ym2151_r)
228   AM_RANGE(0xa000, 0xa000) AM_READNOP
229   AM_RANGE(0xa001, 0xa001) AM_READ(taitosound_slave_comm_r)
230ADDRESS_MAP_END
231
232static ADDRESS_MAP_START( sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
233   AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM)
234   AM_RANGE(0x8000, 0x8fff) AM_WRITE(SMH_RAM)
235   AM_RANGE(0x9000, 0x9001) AM_DEVWRITE("ym", ym2151_w)
236   AM_RANGE(0xa000, 0xa000) AM_WRITE(taitosound_slave_port_w)
237   AM_RANGE(0xa001, 0xa001) AM_WRITE(taitosound_slave_comm_w)
238ADDRESS_MAP_END
239
240
241208/***************************************************************************
242209
243210  Input Port(s)
r4679r4680
311278
312279static void irqhandler(const device_config *device, int irq)
313280{
314   cpu_set_input_line(device->machine->cpu[1], 0, irq ? ASSERT_LINE : CLEAR_LINE);
281   cputag_set_input_line(device->machine, "audiocpu", 0, irq ? ASSERT_LINE : CLEAR_LINE);
315282}
316283
317284static const ym2151_interface ym2151_config =
r4679r4680
325292
326293   /* basic machine hardware */
327294   MDRV_CPU_ADD("maincpu", Z80, 6000000)         /* 6 MHz ??? */
328   MDRV_CPU_PROGRAM_MAP(cpua_readmem,cpua_writemem)
295   MDRV_CPU_PROGRAM_MAP(cpua_map,0)
329296   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
330297
331298   MDRV_CPU_ADD("audiocpu", Z80, 4000000)         /* 4 MHz ??? */
332   MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem)
299   MDRV_CPU_PROGRAM_MAP(sound_map,0)
333300
334301   MDRV_CPU_ADD("cpub", Z80, 6000000)         /* 6 MHz ??? */
335   MDRV_CPU_PROGRAM_MAP(cpub_readmem,cpub_writemem)
302   MDRV_CPU_PROGRAM_MAP(cpub_map,0)
336303   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
337304
338305   MDRV_CPU_ADD("cpuc", Z80, 6000000)         /* 6 MHz ??? */
339   MDRV_CPU_PROGRAM_MAP(cpuc_readmem,cpuc_writemem)
306   MDRV_CPU_PROGRAM_MAP(cpuc_map,0)
340307   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
341308
342309   MDRV_QUANTUM_TIME(HZ(600))   /* 10 CPU slices per frame - enough for the sound CPU to read all commands */
src/mame/drivers/exidy440.c
r4679r4680
266266{
267267   /* if we got a coin, set the IRQ on the main CPU */
268268   if (newval == 0)
269      cpu_set_input_line(field->port->machine->cpu[0], 0, ASSERT_LINE);
269      cputag_set_input_line(field->port->machine, "maincpu", 0, ASSERT_LINE);
270270}
271271
272272
r4679r4680
310310   if (showdown_bank_data[0] != NULL)
311311   {
312312      if (bank == 0 && exidy440_bank != 0)
313         memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x4000, 0x7fff, 0, 0, showdown_bank0_r);
313         memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x4000, 0x7fff, 0, 0, showdown_bank0_r);
314314      else if (bank != 0 && exidy440_bank == 0)
315         memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x4000, 0x7fff, 0, 0, SMH_BANK1);
315         memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x4000, 0x7fff, 0, 0, (read8_space_func)SMH_BANK(1));
316316   }
317317
318318   /* select the bank and update the bank pointer */
r4679r4680
344344static READ8_HANDLER( exidy440_input_port_3_r )
345345{
346346   /* I/O1 accesses clear the CIRQ flip/flop */
347   cpu_set_input_line(space->machine->cpu[0], 0, CLEAR_LINE);
347   cputag_set_input_line(space->machine, "maincpu", 0, CLEAR_LINE);
348348   return input_port_read(space->machine, "IN3");
349349}
350350
r4679r4680
369369   exidy440_sound_command_ack = 0;
370370
371371   /* cause an FIRQ on the sound CPU */
372   cpu_set_input_line(machine->cpu[1], 1, ASSERT_LINE);
372   cputag_set_input_line(machine, "audiocpu", 1, ASSERT_LINE);
373373}
374374
375375
r4679r4680
382382static WRITE8_HANDLER( exidy440_input_port_3_w )
383383{
384384   /* I/O1 accesses clear the CIRQ flip/flop */
385   cpu_set_input_line(space->machine->cpu[0], 0, CLEAR_LINE);
385   cputag_set_input_line(space->machine, "maincpu", 0, CLEAR_LINE);
386386}
387387
388388
r4679r4680
485485   AM_RANGE(0x2ea0, 0x2ebf) AM_READWRITE(sound_command_ack_r, SMH_NOP)
486486   AM_RANGE(0x2ec0, 0x2eff) AM_NOP
487487   AM_RANGE(0x3000, 0x3fff) AM_RAM
488   AM_RANGE(0x4000, 0x7fff) AM_READWRITE(SMH_BANK1, bankram_w)
488   AM_RANGE(0x4000, 0x7fff) AM_READWRITE(SMH_BANK(1), bankram_w)
489489   AM_RANGE(0x8000, 0xffff) AM_ROM
490490ADDRESS_MAP_END
491491
r4679r4680
19371937{
19381938   DRIVER_INIT_CALL(exidy440);
19391939
1940   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x2ec0, 0x2ec3, 0, 0, claypign_protection_r);
1940   memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x2ec0, 0x2ec3, 0, 0, claypign_protection_r);
19411941}
19421942
19431943
r4679r4680
19461946   DRIVER_INIT_CALL(exidy440);
19471947
19481948   /* extra input ports and scrolling */
1949   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x2ec5, 0x2ec5, 0, 0, topsecex_input_port_5_r);
1950   memory_install_read_port_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x2ec6, 0x2ec6, 0, 0, "AN0");
1951   memory_install_read_port_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x2ec7, 0x2ec7, 0, 0, "IN4");
1949   memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x2ec5, 0x2ec5, 0, 0, topsecex_input_port_5_r);
1950   memory_install_read_port_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x2ec6, 0x2ec6, 0, 0, "AN0");
1951   memory_install_read_port_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x2ec7, 0x2ec7, 0, 0, "IN4");
19521952
1953   topsecex_yscroll = memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x2ec1, 0x2ec1, 0, 0, topsecex_yscroll_w);
1953   topsecex_yscroll = memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x2ec1, 0x2ec1, 0, 0, topsecex_yscroll_w);
19541954}
19551955
19561956
src/mame/drivers/tx1.c
r4679r4680
7373/* Main CPU and Z80 synchronisation */
7474static WRITE16_HANDLER( z80_busreq_w )
7575{
76   cpu_set_input_line(space->machine->cpu[2], INPUT_LINE_HALT, (data & 1) ? CLEAR_LINE : ASSERT_LINE);
76   cputag_set_input_line(space->machine, "audio_cpu", INPUT_LINE_HALT, (data & 1) ? CLEAR_LINE : ASSERT_LINE);
7777}
7878
7979static WRITE16_HANDLER( resume_math_w )
8080{
81   cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_TEST, ASSERT_LINE);
81   cputag_set_input_line(space->machine, "math_cpu", INPUT_LINE_TEST, ASSERT_LINE);
8282}
8383
8484static WRITE16_HANDLER( halt_math_w )
8585{
86   cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_TEST, CLEAR_LINE);
86   cputag_set_input_line(space->machine, "math_cpu", INPUT_LINE_TEST, CLEAR_LINE);
8787}
8888
8989/* Z80 can trigger its own interrupts */
9090static WRITE8_HANDLER( z80_intreq_w )
9191{
92   cpu_set_input_line(space->machine->cpu[2], 0, HOLD_LINE);
92   cputag_set_input_line(space->machine, "audio_cpu", 0, HOLD_LINE);
9393}
9494
9595/* Periodic Z80 interrupt */
r4679r4680
100100
101101static READ16_HANDLER( z80_shared_r )
102102{
103   const address_space *cpu2space = cpu_get_address_space(space->machine->cpu[2], ADDRESS_SPACE_PROGRAM);
103   const address_space *cpu2space = cputag_get_address_space(space->machine, "audio_cpu", ADDRESS_SPACE_PROGRAM);
104104   return memory_read_byte(cpu2space, offset);
105105}
106106
107107static WRITE16_HANDLER( z80_shared_w )
108108{
109   const address_space *cpu2space = cpu_get_address_space(space->machine->cpu[2], ADDRESS_SPACE_PROGRAM);
109   const address_space *cpu2space = cputag_get_address_space(space->machine, "audio_cpu", ADDRESS_SPACE_PROGRAM);
110110   memory_write_byte(cpu2space, offset, data & 0xff);
111111}
112112
src/mame/drivers/thayers.c
r4679r4680
4545{
4646   if (!timer_int || !data_rdy_int || !ssi_data_request)
4747   {
48      cpu_set_input_line(machine->cpu[0], INPUT_LINE_IRQ0, HOLD_LINE);
48      cputag_set_input_line(machine, "maincpu", INPUT_LINE_IRQ0, HOLD_LINE);
4949   }
5050   else
5151   {
52      cpu_set_input_line(machine->cpu[0], INPUT_LINE_IRQ0, CLEAR_LINE);
52      cputag_set_input_line(machine, "maincpu", INPUT_LINE_IRQ0, CLEAR_LINE);
5353   }
5454}
5555
5656static TIMER_CALLBACK( intrq_tick )
5757{
58   cpu_set_input_line(machine->cpu[0], INPUT_LINE_IRQ0, CLEAR_LINE);
58   cputag_set_input_line(machine, "maincpu", INPUT_LINE_IRQ0, CLEAR_LINE);
5959}
6060
6161static WRITE8_HANDLER( intrq_w )
6262{
6363   // T = 1.1 * R30 * C53 = 1.1 * 750K * 0.01uF = 8.25 ms
6464
65   cpu_set_input_line(space->machine->cpu[0], INPUT_LINE_IRQ0, HOLD_LINE);
65   cputag_set_input_line(space->machine, "maincpu", INPUT_LINE_IRQ0, HOLD_LINE);
6666
6767   timer_set(space->machine, ATTOTIME_IN_USEC(8250), NULL, 0, intrq_tick);
6868}
r4679r4680
302302
303303   if (!BIT(data, 2) & cart_present)
304304   {
305      cpu_set_input_line(space->machine->cpu[0], INPUT_LINE_NMI, HOLD_LINE);
305      cputag_set_input_line(space->machine, "maincpu", INPUT_LINE_NMI, HOLD_LINE);
306306   }
307307}
308308
r4679r4680
345345      laserdisc_data_w(laserdisc, laserdisc_data);
346346   }
347347
348   switch (device_get_info_int(laserdisc, LDINFO_INT_TYPE))
348   switch (laserdisc_get_type(laserdisc))
349349   {
350   case LASERDISC_TYPE_PIONEER_PR7820:
351      pr7820_enter = BIT(data, 6) ? CLEAR_LINE : ASSERT_LINE;
350      case LASERDISC_TYPE_PIONEER_PR7820:
351         pr7820_enter = BIT(data, 6) ? CLEAR_LINE : ASSERT_LINE;
352352
353      laserdisc_line_w(laserdisc, LASERDISC_LINE_ENTER, pr7820_enter);
353         laserdisc_line_w(laserdisc, LASERDISC_LINE_ENTER, pr7820_enter);
354354
355      // BIT(data, 7) is INT/_EXT, but there is no such input line in laserdsc.h
356      break;
355         // BIT(data, 7) is INT/_EXT, but there is no such input line in laserdsc.h
356         break;
357357
358   case LASERDISC_TYPE_PIONEER_LDV1000:
359      laserdisc_line_w(laserdisc, LASERDISC_LINE_ENTER, BIT(data, 7) ? CLEAR_LINE : ASSERT_LINE);
360      break;
358      case LASERDISC_TYPE_PIONEER_LDV1000:
359         laserdisc_line_w(laserdisc, LASERDISC_LINE_ENTER, BIT(data, 7) ? CLEAR_LINE : ASSERT_LINE);
360         break;
361361   }
362362}
363363
r4679r4680
584584
585585static CUSTOM_INPUT( laserdisc_enter_r )
586586{
587   switch (device_get_info_int(laserdisc, LDINFO_INT_TYPE))
587   switch (laserdisc_get_type(laserdisc))
588588   {
589589      case LASERDISC_TYPE_PIONEER_PR7820:
590590         return pr7820_enter;
r4679r4680
598598
599599static CUSTOM_INPUT( laserdisc_ready_r )
600600{
601   switch (device_get_info_int(laserdisc, LDINFO_INT_TYPE))
601   switch (laserdisc_get_type(laserdisc))
602602   {
603603      case LASERDISC_TYPE_PIONEER_PR7820:
604604         return (laserdisc_line_r(laserdisc, LASERDISC_LINE_READY) == ASSERT_LINE) ? 0 : 1;
r4679r4680
741741   pr7820_enter = 0;
742742
743743   newtype = (input_port_read(machine, "DSWB") & 0x18) ? LASERDISC_TYPE_PIONEER_LDV1000 : LASERDISC_TYPE_PIONEER_PR7820;
744   device_set_info_int(laserdisc, LDINFO_INT_TYPE, newtype);
744   laserdisc_set_type(laserdisc, newtype);
745745}
746746
747747/* COP400 Interface */
src/mame/drivers/topshoot.c
r4679r4680
136136#include "driver.h"
137137#include "cpu/z80/z80.h"
138138#include "cpu/m68000/m68000.h"
139#include "sound/sn76496.h"
140#include "sound/2612intf.h"
141
139142#include "genesis.h"
140143
141144
r4679r4680
220223   MDRV_CPU_ADD("maincpu", M68000, MASTER_CLOCK / 7)
221224   MDRV_CPU_VBLANK_INT("screen", genesis_vblank_interrupt)
222225
223   MDRV_CPU_ADD("soundcpu", Z80, MASTER_CLOCK / 15)
226   MDRV_CPU_ADD("genesis_snd_z80", Z80, MASTER_CLOCK / 15)
224227   MDRV_CPU_PROGRAM_MAP(genesis_z80_map, 0)
225228   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold) /* from vdp at scanline 0xe0 */
226229
r4679r4680
282285static DRIVER_INIT(topshoot)
283286{
284287   /* hack -- fix vdp emulation instead */
285   memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xC00004, 0xC00005, 0, 0, vdp_fake_r);
288   memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xC00004, 0xC00005, 0, 0, vdp_fake_r);
286289
287290   memory_set_bankptr(machine, 3, memory_region(machine, "maincpu") );
288291   memory_set_bankptr(machine, 4, genesis_68k_ram );
src/mame/drivers/dassault.c
r4679r4680
173173
174174static WRITE16_HANDLER( dassault_sound_w )
175175{
176   soundlatch_w(space,0,data&0xff);
177   cpu_set_input_line(space->machine->cpu[2],0,HOLD_LINE); /* IRQ1 */
176   soundlatch_w(space, 0, data & 0xff);
177   cputag_set_input_line(space->machine, "audiocpu", 0, HOLD_LINE); /* IRQ1 */
178178}
179179
180180/* The CPU-CPU irq controller is overlaid onto the end of the shared memory */
181181static READ16_HANDLER( dassault_irq_r )
182182{
183183   switch (offset) {
184      case 0: cpu_set_input_line(space->machine->cpu[0], 5, CLEAR_LINE); break;
185      case 1: cpu_set_input_line(space->machine->cpu[1], 6, CLEAR_LINE); break;
184      case 0: cputag_set_input_line(space->machine, "maincpu", 5, CLEAR_LINE); break;
185      case 1: cputag_set_input_line(space->machine, "sub", 6, CLEAR_LINE); break;
186186   }
187187   return shared_ram[(0xffc/2)+offset]; /* The values probably don't matter */
188188}
189189
190190static WRITE16_HANDLER( dassault_irq_w )
191191{
192   switch (offset) {
193      case 0: cpu_set_input_line(space->machine->cpu[0], 5, ASSERT_LINE); break;
194      case 1: cpu_set_input_line(space->machine->cpu[1], 6, ASSERT_LINE); break;
192   switch (offset)
193   {
194      case 0: cputag_set_input_line(space->machine, "maincpu", 5, ASSERT_LINE); break;
195      case 1: cputag_set_input_line(space->machine, "sub", 6, ASSERT_LINE); break;
195196   }
196197
197   COMBINE_DATA(&shared_ram[(0xffc/2)+offset]); /* The values probably don't matter */
198   COMBINE_DATA(&shared_ram[(0xffc / 2) + offset]); /* The values probably don't matter */
198199}
199200
200201static WRITE16_HANDLER( shared_ram_w )
r4679r4680
209210
210211/**********************************************************************************/
211212
212static ADDRESS_MAP_START( dassault_readmem, ADDRESS_SPACE_PROGRAM, 16 )
213   AM_RANGE(0x000000, 0x07ffff) AM_READ(SMH_ROM)
214   AM_RANGE(0x100000, 0x103fff) AM_READ(SMH_RAM)
215   AM_RANGE(0x1c0000, 0x1c000f) AM_READ(dassault_control_r)
216   AM_RANGE(0x200000, 0x201fff) AM_READ(SMH_RAM)
217   AM_RANGE(0x202000, 0x203fff) AM_READ(SMH_RAM)
218   AM_RANGE(0x240000, 0x240fff) AM_READ(SMH_RAM)
219   AM_RANGE(0x242000, 0x242fff) AM_READ(SMH_RAM)
220   AM_RANGE(0x3f8000, 0x3fbfff) AM_READ(SMH_RAM) /* Main ram */
221   AM_RANGE(0x3fc000, 0x3fcfff) AM_READ(SMH_RAM) /* Spriteram (2nd) */
222   AM_RANGE(0x3feffc, 0x3fefff) AM_READ(dassault_irq_r)
223   AM_RANGE(0x3fe000, 0x3fefff) AM_READ(shared_ram_r) /* Shared ram */
224ADDRESS_MAP_END
213static ADDRESS_MAP_START( dassault_map, ADDRESS_SPACE_PROGRAM, 16 )
214   AM_RANGE(0x000000, 0x07ffff) AM_ROM
225215
226static ADDRESS_MAP_START( dassault_writemem, ADDRESS_SPACE_PROGRAM, 16 )
227   AM_RANGE(0x000000, 0x07ffff) AM_WRITE(SMH_ROM)
228   AM_RANGE(0x100000, 0x103fff) AM_WRITE(deco16_nonbuffered_palette_w) AM_BASE(&paletteram16)
216   AM_RANGE(0x100000, 0x103fff) AM_RAM_WRITE(deco16_nonbuffered_palette_w) AM_BASE(&paletteram16)
217
229218   AM_RANGE(0x140004, 0x140007) AM_WRITENOP /* ? */
230219   AM_RANGE(0x180000, 0x180001) AM_WRITE(dassault_sound_w)
220
221   AM_RANGE(0x1c0000, 0x1c000f) AM_READ(dassault_control_r)
231222   AM_RANGE(0x1c000a, 0x1c000b) AM_WRITE(deco16_priority_w)
232223   AM_RANGE(0x1c000c, 0x1c000d) AM_WRITE(buffer_spriteram16_2_w)
233224   AM_RANGE(0x1c000e, 0x1c000f) AM_WRITE(dassault_control_w)
234225
235   AM_RANGE(0x200000, 0x201fff) AM_WRITE(deco16_pf1_data_w) AM_BASE(&deco16_pf1_data)
236   AM_RANGE(0x202000, 0x203fff) AM_WRITE(deco16_pf2_data_w) AM_BASE(&deco16_pf2_data)
226   AM_RANGE(0x200000, 0x201fff) AM_RAM_WRITE(deco16_pf1_data_w) AM_BASE(&deco16_pf1_data)
227   AM_RANGE(0x202000, 0x203fff) AM_RAM_WRITE(deco16_pf2_data_w) AM_BASE(&deco16_pf2_data)
237228   AM_RANGE(0x212000, 0x212fff) AM_WRITE(SMH_RAM) AM_BASE(&deco16_pf2_rowscroll)
238229   AM_RANGE(0x220000, 0x22000f) AM_WRITE(SMH_RAM) AM_BASE(&deco16_pf12_control)
239230
240   AM_RANGE(0x240000, 0x240fff) AM_WRITE(deco16_pf3_data_w) AM_BASE(&deco16_pf3_data)
241   AM_RANGE(0x242000, 0x242fff) AM_WRITE(deco16_pf4_data_w) AM_BASE(&deco16_pf4_data)
231   AM_RANGE(0x240000, 0x240fff) AM_RAM_WRITE(deco16_pf3_data_w) AM_BASE(&deco16_pf3_data)
232   AM_RANGE(0x242000, 0x242fff) AM_RAM_WRITE(deco16_pf4_data_w) AM_BASE(&deco16_pf4_data)
242233   AM_RANGE(0x252000, 0x252fff) AM_WRITE(SMH_RAM) AM_BASE(&deco16_pf4_rowscroll)
243234   AM_RANGE(0x260000, 0x26000f) AM_WRITE(SMH_RAM) AM_BASE(&deco16_pf34_control)
244235
245   AM_RANGE(0x3f8000, 0x3fbfff) AM_WRITE(SMH_RAM) AM_BASE(&dassault_ram)
246   AM_RANGE(0x3fc000, 0x3fcfff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16_2) AM_SIZE(&spriteram_2_size)
247   AM_RANGE(0x3feffc, 0x3fefff) AM_WRITE(dassault_irq_w)
248   AM_RANGE(0x3fe000, 0x3fefff) AM_WRITE(shared_ram_w) AM_BASE(&shared_ram)
236   AM_RANGE(0x3f8000, 0x3fbfff) AM_RAM AM_BASE(&dassault_ram) /* Main ram */
237   AM_RANGE(0x3fc000, 0x3fcfff) AM_RAM AM_BASE(&spriteram16_2) AM_SIZE(&spriteram_2_size) /* Spriteram (2nd) */
238   AM_RANGE(0x3feffc, 0x3fefff) AM_READWRITE(dassault_irq_r, dassault_irq_w)
239   AM_RANGE(0x3fe000, 0x3fefff) AM_READWRITE(shared_ram_r, shared_ram_w) AM_BASE(&shared_ram) /* Shared ram */
249240ADDRESS_MAP_END
250241
251static ADDRESS_MAP_START( dassault_sub_readmem, ADDRESS_SPACE_PROGRAM, 16 )
252   AM_RANGE(0x000000, 0x07ffff) AM_READ(SMH_ROM)
253   AM_RANGE(0x100004, 0x100005) AM_READ(dassault_sub_control_r)
254   AM_RANGE(0x3f8000, 0x3fbfff) AM_READ(SMH_RAM) /* Sub cpu ram */
255   AM_RANGE(0x3fc000, 0x3fcfff) AM_READ(SMH_RAM) /* Sprite ram */
256   AM_RANGE(0x3feffc, 0x3fefff) AM_READ(dassault_irq_r)
257   AM_RANGE(0x3fe000, 0x3fefff) AM_READ(shared_ram_r)
258ADDRESS_MAP_END
242static ADDRESS_MAP_START( dassault_sub_map, ADDRESS_SPACE_PROGRAM, 16 )
243   AM_RANGE(0x000000, 0x07ffff) AM_ROM
259244
260static ADDRESS_MAP_START( dassault_sub_writemem, ADDRESS_SPACE_PROGRAM, 16 )
261   AM_RANGE(0x000000, 0x07ffff) AM_WRITE(SMH_ROM)
262245   AM_RANGE(0x100000, 0x100001) AM_WRITE(buffer_spriteram16_w)
263246   AM_RANGE(0x100002, 0x100007) AM_WRITENOP /* ? */
264   AM_RANGE(0x3f8000, 0x3fbfff) AM_WRITE(SMH_RAM) AM_BASE(&dassault_ram2)
265   AM_RANGE(0x3fc000, 0x3fcfff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)
266   AM_RANGE(0x3feffc, 0x3fefff) AM_WRITE(dassault_irq_w)
267   AM_RANGE(0x3fe000, 0x3fefff) AM_WRITE(shared_ram_w)
247   AM_RANGE(0x100004, 0x100005) AM_READ(dassault_sub_control_r)
248
249   AM_RANGE(0x3f8000, 0x3fbfff) AM_RAM AM_BASE(&dassault_ram2) /* Sub cpu ram */
250   AM_RANGE(0x3fc000, 0x3fcfff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size) /* Sprite ram */
251   AM_RANGE(0x3feffc, 0x3fefff) AM_READWRITE(dassault_irq_r, dassault_irq_w)
252   AM_RANGE(0x3fe000, 0x3fefff) AM_READWRITE(shared_ram_r, shared_ram_w)
268253ADDRESS_MAP_END
269254
270255/******************************************************************************/
271256
272static ADDRESS_MAP_START( sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
273   AM_RANGE(0x000000, 0x00ffff) AM_READ(SMH_ROM)
274   AM_RANGE(0x100000, 0x100001) AM_DEVREAD("ym1", ym2203_r)
275   AM_RANGE(0x110000, 0x110001) AM_DEVREAD("ym2", ym2151_r)
276   AM_RANGE(0x120000, 0x120001) AM_DEVREAD("oki1", okim6295_r)
277   AM_RANGE(0x130000, 0x130001) AM_DEVREAD("oki2", okim6295_r)
257static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 )
258   AM_RANGE(0x000000, 0x00ffff) AM_ROM
259   AM_RANGE(0x100000, 0x100001) AM_DEVREADWRITE("ym1", ym2203_r, ym2203_w)
260   AM_RANGE(0x110000, 0x110001) AM_DEVREADWRITE("ym2", ym2151_r, ym2151_w)
261   AM_RANGE(0x120000, 0x120001) AM_DEVREADWRITE("oki1", okim6295_r, okim6295_w)
262   AM_RANGE(0x130000, 0x130001) AM_DEVREADWRITE("oki2", okim6295_r, okim6295_w)
278263   AM_RANGE(0x140000, 0x140001) AM_READ(soundlatch_r)
279   AM_RANGE(0x1f0000, 0x1f1fff) AM_READ(SMH_BANK8)
280ADDRESS_MAP_END
281
282static ADDRESS_MAP_START( sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
283   AM_RANGE(0x000000, 0x00ffff) AM_WRITE(SMH_ROM)
284   AM_RANGE(0x100000, 0x100001) AM_DEVWRITE("ym1", ym2203_w)
285   AM_RANGE(0x110000, 0x110001) AM_DEVWRITE("ym2", ym2151_w)
286   AM_RANGE(0x120000, 0x120001) AM_DEVWRITE("oki1", okim6295_w)
287   AM_RANGE(0x130000, 0x130001) AM_DEVWRITE("oki2", okim6295_w)
288   AM_RANGE(0x1f0000, 0x1f1fff) AM_WRITE(SMH_BANK8)
264   AM_RANGE(0x1f0000, 0x1f1fff) AM_RAMBANK(8)
289265   AM_RANGE(0x1fec00, 0x1fec01) AM_WRITE(h6280_timer_w)
290266   AM_RANGE(0x1ff400, 0x1ff403) AM_WRITE(h6280_irq_status_w)
291267ADDRESS_MAP_END
r4679r4680
534510
535511static void sound_irq(const device_config *device, int state)
536512{
537   cpu_set_input_line(device->machine->cpu[2],1,state);
513   cputag_set_input_line(device->machine, "audiocpu", 1, state);
538514}
539515
540516static WRITE8_DEVICE_HANDLER( sound_bankswitch_w )
r4679r4680
555531
556532   /* basic machine hardware */
557533   MDRV_CPU_ADD("maincpu", M68000, 14000000) /* Accurate */
558   MDRV_CPU_PROGRAM_MAP(dassault_readmem,dassault_writemem)
534   MDRV_CPU_PROGRAM_MAP(dassault_map,0)
559535   MDRV_CPU_VBLANK_INT("screen", irq4_line_hold)
560536
561537   MDRV_CPU_ADD("sub", M68000, 14000000) /* Accurate */
562   MDRV_CPU_PROGRAM_MAP(dassault_sub_readmem,dassault_sub_writemem)
538   MDRV_CPU_PROGRAM_MAP(dassault_sub_map,0)
563539   MDRV_CPU_VBLANK_INT("screen", irq5_line_hold)
564540
565541   MDRV_CPU_ADD("audiocpu", H6280,32220000/8)   /* Accurate */
566   MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem)
542   MDRV_CPU_PROGRAM_MAP(sound_map,0)
567543
568544   MDRV_QUANTUM_TIME(HZ(8400)) /* 140 CPU slices per frame */
569545
r4679r4680
832808{
833809   const UINT8 *src = memory_region(machine, "gfx1");
834810   UINT8 *dst = memory_region(machine, "gfx2");
835   UINT8 *tmp = malloc_or_die(0x80000);
811   UINT8 *tmp = alloc_array_or_die(UINT8, 0x80000);
836812
837813   /* Playfield 4 also has access to the char graphics, make things easier
838814    by just copying the chars to both banks (if I just used a different gfx
r4679r4680
845821   free(tmp);
846822
847823   /* Save time waiting on vblank bit */
848   memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x3f8000, 0x3f8001, 0, 0, dassault_main_skip);
824   memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x3f8000, 0x3f8001, 0, 0, dassault_main_skip);
849825}
850826
851827static DRIVER_INIT( thndzone )
852828{
853829   const UINT8 *src = memory_region(machine, "gfx1");
854830   UINT8 *dst = memory_region(machine, "gfx2");
855   UINT8 *tmp = malloc_or_die(0x80000);
831   UINT8 *tmp = alloc_array_or_die(UINT8, 0x80000);
856832
857833   /* Playfield 4 also has access to the char graphics, make things easier
858834    by just copying the chars to both banks (if I just used a different gfx
r4679r4680
865841   free(tmp);
866842
867843   /* Save time waiting on vblank bit */
868   memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x3f8000, 0x3f8001, 0, 0, thndzone_main_skip);
844   memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x3f8000, 0x3f8001, 0, 0, thndzone_main_skip);
869845}
870846
871847/**********************************************************************************/
src/mame/drivers/merit.c
r4679r4680
7070static MACHINE_START(merit)
7171{
7272   question_address = 0;
73   ram_palette = auto_malloc(RAM_PALETTE_SIZE);
73   ram_palette = auto_alloc_array(machine, UINT8, RAM_PALETTE_SIZE);
7474
7575   state_save_register_global_pointer(machine, ram_palette, RAM_PALETTE_SIZE);
7676   state_save_register_global(machine, lscnblk);
r4679r4680
248248
249249static MC6845_ON_VSYNC_CHANGED(vsync_changed)
250250{
251   cpu_set_input_line(device->machine->cpu[0], 0, vsync ? ASSERT_LINE : CLEAR_LINE);
251   cputag_set_input_line(device->machine, "maincpu", 0, vsync ? ASSERT_LINE : CLEAR_LINE);
252252}
253253
254254static const mc6845_interface mc6845_intf =
src/mame/drivers/dambustr.c
r4679r4680
3030}
3131
3232
33static ADDRESS_MAP_START( dambustr_readmem, ADDRESS_SPACE_PROGRAM, 8 )
34   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
35   AM_RANGE(0xc000, 0xc7ff) AM_READ(SMH_RAM)
36   AM_RANGE(0xd000, 0xd3ff) AM_READ(SMH_RAM)
33static ADDRESS_MAP_START( dambustr_map, ADDRESS_SPACE_PROGRAM, 8 )
34   AM_RANGE(0x0000, 0x7fff) AM_ROM
35
36   AM_RANGE(0x8000, 0x8000) AM_WRITE(dambustr_bg_color_w)
37   AM_RANGE(0x8001, 0x8001) AM_WRITE(dambustr_bg_split_line_w)
38
39   AM_RANGE(0xc000, 0xc7ff) AM_RAM
40
41   AM_RANGE(0xd000, 0xd3ff) AM_RAM_WRITE(galaxold_videoram_w) AM_BASE(&galaxold_videoram)
3742   AM_RANGE(0xd400, 0xd7ff) AM_READ(galaxold_videoram_r)
38   AM_RANGE(0xd800, 0xd8ff) AM_READ(SMH_RAM)
39   AM_RANGE(0xe000, 0xe000) AM_READ_PORT("IN0")
40   AM_RANGE(0xe800, 0xefff) AM_READ_PORT("IN1")
41   AM_RANGE(0xf000, 0xf7ff) AM_READ_PORT("DSW")
42   AM_RANGE(0xf800, 0xffff) AM_READ(watchdog_reset_r)
43ADDRESS_MAP_END
43   AM_RANGE(0xd800, 0xd83f) AM_RAM_WRITE(galaxold_attributesram_w) AM_BASE(&galaxold_attributesram)
44   AM_RANGE(0xd840, 0xd85f) AM_RAM AM_BASE(&galaxold_spriteram) AM_SIZE(&galaxold_spriteram_size)
45   AM_RANGE(0xd860, 0xd87f) AM_RAM AM_BASE(&galaxold_bulletsram) AM_SIZE(&galaxold_bulletsram_size)
4446
47   AM_RANGE(0xd880, 0xd8ff) AM_RAM
4548
46static ADDRESS_MAP_START( dambustr_writemem, ADDRESS_SPACE_PROGRAM, 8 )
47   AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM)
48   AM_RANGE(0xc000, 0xc7ff) AM_WRITE(SMH_RAM)
49   AM_RANGE(0x8000, 0x8000) AM_WRITE(dambustr_bg_color_w)
50   AM_RANGE(0x8001, 0x8001) AM_WRITE(dambustr_bg_split_line_w)
51   AM_RANGE(0xd000, 0xd3ff) AM_WRITE(galaxold_videoram_w) AM_BASE(&galaxold_videoram)
52   AM_RANGE(0xd800, 0xd83f) AM_WRITE(galaxold_attributesram_w) AM_BASE(&galaxold_attributesram)
53   AM_RANGE(0xd840, 0xd85f) AM_WRITE(SMH_RAM) AM_BASE(&galaxold_spriteram) AM_SIZE(&galaxold_spriteram_size)
54   AM_RANGE(0xd860, 0xd87f) AM_WRITE(SMH_RAM) AM_BASE(&galaxold_bulletsram) AM_SIZE(&galaxold_bulletsram_size)
55   AM_RANGE(0xd880, 0xd8ff) AM_WRITE(SMH_RAM)
49   AM_RANGE(0xe000, 0xe000) AM_READ_PORT("IN0")
5650   AM_RANGE(0xe002, 0xe003) AM_WRITE(galaxold_coin_counter_w)
5751   AM_RANGE(0xe004, 0xe007) AM_WRITE(galaxian_lfo_freq_w)
52
53   AM_RANGE(0xe800, 0xefff) AM_READ_PORT("IN1")
5854   AM_RANGE(0xe800, 0xe802) AM_WRITE(galaxian_background_enable_w)
5955   AM_RANGE(0xe803, 0xe803) AM_WRITE(dambustr_noise_enable_w)
6056   AM_RANGE(0xe804, 0xe804) AM_WRITE(galaxian_shoot_enable_w)   // probably louder than normal shot
6157   AM_RANGE(0xe805, 0xe805) AM_WRITE(galaxian_shoot_enable_w)   // normal shot (like Galaxian)
6258   AM_RANGE(0xe806, 0xe807) AM_WRITE(galaxian_vol_w)
59
60   AM_RANGE(0xf000, 0xf7ff) AM_READ_PORT("DSW")
6361   AM_RANGE(0xf001, 0xf001) AM_WRITE(galaxold_nmi_enable_w)
6462   AM_RANGE(0xf004, 0xf004) AM_WRITE(galaxold_stars_enable_w)
6563   AM_RANGE(0xf006, 0xf006) AM_WRITE(galaxold_flip_screen_x_w)
6664   AM_RANGE(0xf007, 0xf007) AM_WRITE(galaxold_flip_screen_y_w)
65
6766   AM_RANGE(0xf800, 0xf800) AM_WRITE(galaxian_pitch_w)
67   AM_RANGE(0xf800, 0xffff) AM_READ(watchdog_reset_r)
6868ADDRESS_MAP_END
6969
7070
r4679r4680
185185static MACHINE_DRIVER_START( dambustr )
186186   /* basic machine hardware */
187187   MDRV_CPU_ADD("maincpu", Z80, 18432000/6)   /* 3.072 MHz */
188   MDRV_CPU_PROGRAM_MAP(dambustr_readmem, dambustr_writemem)
188   MDRV_CPU_PROGRAM_MAP(dambustr_map, 0)
189189
190190   MDRV_MACHINE_RESET(galaxold)
191191
src/mame/drivers/pingpong.c
r4679r4680
1/***************************************************************************
2
3Ping Pong (c) 1985 Konami
4
5***************************************************************************/
6
17#include "driver.h"
28#include "cpu/z80/z80.h"
39#include "deprecat.h"
r4679r4680
8591   }
8692}
8793
88static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 )
89   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
90   AM_RANGE(0x8000, 0x87ff) AM_READ(SMH_RAM)
91   AM_RANGE(0x9000, 0x97ff) AM_READ(SMH_RAM)
94static ADDRESS_MAP_START( pingpong_map, ADDRESS_SPACE_PROGRAM, 8 )
95   AM_RANGE(0x0000, 0x7fff) AM_ROM
96   AM_RANGE(0x8000, 0x83ff) AM_RAM_WRITE(pingpong_colorram_w) AM_BASE(&colorram)
97   AM_RANGE(0x8400, 0x87ff) AM_RAM_WRITE(pingpong_videoram_w) AM_BASE(&videoram)
98   AM_RANGE(0x9000, 0x9002) AM_RAM
99   AM_RANGE(0x9003, 0x9052) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
100   AM_RANGE(0x9053, 0x97ff) AM_RAM
92101   AM_RANGE(0xa800, 0xa800) AM_READ_PORT("SYSTEM")
93102   AM_RANGE(0xa880, 0xa880) AM_READ_PORT("INPUTS")
94103   AM_RANGE(0xa900, 0xa900) AM_READ_PORT("DSW1")
95104   AM_RANGE(0xa980, 0xa980) AM_READ_PORT("DSW2")
96ADDRESS_MAP_END
97
98static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 )
99   AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM)
100   AM_RANGE(0x8000, 0x83ff) AM_WRITE(pingpong_colorram_w) AM_BASE(&colorram)
101   AM_RANGE(0x8400, 0x87ff) AM_WRITE(pingpong_videoram_w) AM_BASE(&videoram)
102   AM_RANGE(0x9000, 0x9002) AM_WRITE(SMH_RAM)
103   AM_RANGE(0x9003, 0x9052) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
104   AM_RANGE(0x9053, 0x97ff) AM_WRITE(SMH_RAM)
105105   AM_RANGE(0xa000, 0xa000) AM_WRITE(coin_w)   /* coin counters + irq enables */
106106   AM_RANGE(0xa200, 0xa200) AM_WRITENOP      /* SN76496 data latch */
107107   AM_RANGE(0xa400, 0xa400) AM_DEVWRITE("sn", sn76496_w)   /* trigger read */
r4679r4680
457457
458458   /* basic machine hardware */
459459   MDRV_CPU_ADD("cpu",Z80,18432000/6)      /* 3.072 MHz (probably) */
460   MDRV_CPU_PROGRAM_MAP(readmem,writemem)
460   MDRV_CPU_PROGRAM_MAP(pingpong_map,0)
461461   MDRV_CPU_VBLANK_INT_HACK(pingpong_interrupt,16)   /* 1 IRQ + 8 NMI */
462462
463463   /* video hardware */
r4679r4680
594594      ROM[i] = BITSWAP8(ROM[i],0,1,2,3,4,5,6,7);
595595
596596   /* questions banking handlers */
597   memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x4000, 0x4000, 0, 0, cashquiz_question_bank_high_w);
598   memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x4001, 0x4001, 0, 0, cashquiz_question_bank_low_w);
597   memory_install_write8_handler(cputag_get_address_space(machine, "cpu", ADDRESS_SPACE_PROGRAM), 0x4000, 0x4000, 0, 0, cashquiz_question_bank_high_w);
598   memory_install_write8_handler(cputag_get_address_space(machine, "cpu", ADDRESS_SPACE_PROGRAM), 0x4001, 0x4001, 0, 0, cashquiz_question_bank_low_w);
599599
600600   // 8 independents banks for questions
601   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x5000, 0x50ff, 0, 0, SMH_BANK1);
602   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x5100, 0x51ff, 0, 0, SMH_BANK2);
603   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x5200, 0x52ff, 0, 0, SMH_BANK3);
604   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x5300, 0x53ff, 0, 0, SMH_BANK4);
605   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x5400, 0x54ff, 0, 0, SMH_BANK5);
606   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x5500, 0x55ff, 0, 0, SMH_BANK6);
607   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x5600, 0x56ff, 0, 0, SMH_BANK7);
608   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x5700, 0x57ff, 0, 0, SMH_BANK8);
601   memory_install_read8_handler(cputag_get_address_space(machine, "cpu", ADDRESS_SPACE_PROGRAM), 0x5000, 0x50ff, 0, 0, (read8_space_func)SMH_BANK(1));
602   memory_install_read8_handler(cputag_get_address_space(machine, "cpu", ADDRESS_SPACE_PROGRAM), 0x5100, 0x51ff, 0, 0, (read8_space_func)SMH_BANK(2));
603   memory_install_read8_handler(cputag_get_address_space(machine, "cpu", ADDRESS_SPACE_PROGRAM), 0x5200, 0x52ff, 0, 0, (read8_space_func)SMH_BANK(3));
604   memory_install_read8_handler(cputag_get_address_space(machine, "cpu", ADDRESS_SPACE_PROGRAM), 0x5300, 0x53ff, 0, 0, (read8_space_func)SMH_BANK(4));
605   memory_install_read8_handler(cputag_get_address_space(machine, "cpu", ADDRESS_SPACE_PROGRAM), 0x5400, 0x54ff, 0, 0, (read8_space_func)SMH_BANK(5));
606   memory_install_read8_handler(cputag_get_address_space(machine, "cpu", ADDRESS_SPACE_PROGRAM), 0x5500, 0x55ff, 0, 0, (read8_space_func)SMH_BANK(6));
607   memory_install_read8_handler(cputag_get_address_space(machine, "cpu", ADDRESS_SPACE_PROGRAM), 0x5600, 0x56ff, 0, 0, (read8_space_func)SMH_BANK(7));
608   memory_install_read8_handler(cputag_get_address_space(machine, "cpu", ADDRESS_SPACE_PROGRAM), 0x5700, 0x57ff, 0, 0, (read8_space_func)SMH_BANK(8));
609609
610610   // setup default banks
611611   for(i = 0; i < 8; i++)
src/mame/drivers/blstroid.c
r4679r4680
3333
3434static void update_interrupts(running_machine *machine)
3535{
36   cpu_set_input_line(machine->cpu[0], 1, atarigen_scanline_int_state ? ASSERT_LINE : CLEAR_LINE);
37   cpu_set_input_line(machine->cpu[0], 2, atarigen_video_int_state ? ASSERT_LINE : CLEAR_LINE);
38   cpu_set_input_line(machine->cpu[0], 4, atarigen_sound_int_state ? ASSERT_LINE : CLEAR_LINE);
36   cputag_set_input_line(machine, "maincpu", 1, atarigen_scanline_int_state ? ASSERT_LINE : CLEAR_LINE);
37   cputag_set_input_line(machine, "maincpu", 2, atarigen_video_int_state ? ASSERT_LINE : CLEAR_LINE);
38   cputag_set_input_line(machine, "maincpu", 4, atarigen_sound_int_state ? ASSERT_LINE : CLEAR_LINE);
3939}
4040
4141
src/mame/drivers/gotya.c
r4679r4680
3939#include "includes/gotya.h"
4040
4141
42static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 )
43   AM_RANGE(0x0000, 0x3fff) AM_READ(SMH_ROM)
44   AM_RANGE(0x5000, 0x5fff) AM_READ(SMH_RAM)
42static ADDRESS_MAP_START( gotya_map, ADDRESS_SPACE_PROGRAM, 8 )
43   AM_RANGE(0x0000, 0x3fff) AM_ROM
44   AM_RANGE(0x5000, 0x5fff) AM_RAM
4545   AM_RANGE(0x6000, 0x6000) AM_READ_PORT("P1")
4646   AM_RANGE(0x6001, 0x6001) AM_READ_PORT("P2")
4747   AM_RANGE(0x6002, 0x6002) AM_READ_PORT("DSW")
48   AM_RANGE(0xc000, 0xd3ff) AM_READ(SMH_RAM)
49ADDRESS_MAP_END
50
51static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 )
52   AM_RANGE(0x0000, 0x3fff) AM_WRITE(SMH_ROM)
53   AM_RANGE(0x5000, 0x5fff) AM_WRITE(SMH_RAM)
5448   AM_RANGE(0x6004, 0x6004) AM_WRITE(gotya_video_control_w)
5549   AM_RANGE(0x6005, 0x6005) AM_WRITE(gotya_soundlatch_w)
5650   AM_RANGE(0x6006, 0x6006) AM_WRITE(SMH_RAM) AM_BASE(&gotya_scroll)
5751   AM_RANGE(0x6007, 0x6007) AM_WRITE(watchdog_reset_w)
58   AM_RANGE(0xc000, 0xc7ff) AM_WRITE(gotya_videoram_w) AM_BASE(&videoram)
59   AM_RANGE(0xc800, 0xcfff) AM_WRITE(gotya_colorram_w) AM_BASE(&colorram)
60   AM_RANGE(0xd000, 0xd3df) AM_WRITE(SMH_RAM) AM_BASE(&gotya_videoram2)
61   AM_RANGE(0xd3e0, 0xd3ff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram)
52   AM_RANGE(0xc000, 0xc7ff) AM_RAM_WRITE(gotya_videoram_w) AM_BASE(&videoram)
53   AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(gotya_colorram_w) AM_BASE(&colorram)
54   AM_RANGE(0xd000, 0xd3df) AM_RAM AM_BASE(&gotya_videoram2)
55   AM_RANGE(0xd3e0, 0xd3ff) AM_RAM AM_BASE(&spriteram)
6256ADDRESS_MAP_END
6357
6458
r4679r4680
184178
185179   /* basic machine hardware */
186180   MDRV_CPU_ADD("maincpu", Z80,18432000/6)   /* 3.072 MHz ??? */
187   MDRV_CPU_PROGRAM_MAP(readmem,writemem)
181   MDRV_CPU_PROGRAM_MAP(gotya_map,0)
188182   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
189183
190184   /* video hardware */
src/mame/drivers/aztarac.c
r4679r4680
3636
3737static MACHINE_RESET( aztarac )
3838{
39   cpu_set_irq_callback(machine->cpu[0], aztarac_irq_callback);
39   cpu_set_irq_callback(cputag_get_cpu(machine, "maincpu"), aztarac_irq_callback);
4040}
4141
4242
src/mame/drivers/tatsumi.c
r4679r4680
188188static WRITE16_HANDLER(cyclwarr_sound_w)
189189{
190190   soundlatch_w(space, 0, data >> 8);
191   cpu_set_input_line(space->machine->cpu[2], INPUT_LINE_NMI, PULSE_LINE);
191   cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
192192}
193193
194194/***************************************************************************/
r4679r4680
829829
830830static void sound_irq(const device_config *device, int state)
831831{
832   cpu_set_input_line(device->machine->cpu[2], INPUT_LINE_IRQ0, state);
832   cputag_set_input_line(device->machine, "audiocpu", INPUT_LINE_IRQ0, state);
833833}
834834
835835static const ym2151_interface ym2151_config =
r4679r4680
844844
845845static void apache3_68000_reset(const device_config *device)
846846{
847   cpu_set_input_line(device->machine->cpu[3], INPUT_LINE_RESET, PULSE_LINE);
847   cputag_set_input_line(device->machine, "sub2", INPUT_LINE_RESET, PULSE_LINE);
848848}
849849
850850static MACHINE_RESET( apache3 )
851851{
852   cpu_set_input_line(machine->cpu[3], INPUT_LINE_RESET, ASSERT_LINE); // TODO
852   cputag_set_input_line(machine, "sub2", INPUT_LINE_RESET, ASSERT_LINE); // TODO
853853
854854   /* Hook the RESET line, which resets the Z80 */
855   device_set_info_fct(machine->cpu[1], CPUINFO_FCT_M68K_RESET_CALLBACK, (genf *)apache3_68000_reset);
855   m68k_set_reset_callback(cputag_get_cpu(machine, "sub"), apache3_68000_reset);
856856}
857857
858858
src/mame/drivers/supbtime.c
r4679r4680
5353
5454static WRITE16_HANDLER( sound_w )
5555{
56   soundlatch_w(space,0,data & 0xff);
57   cpu_set_input_line(space->machine->cpu[1],0,HOLD_LINE);
56   soundlatch_w(space, 0, data & 0xff);
57   cputag_set_input_line(space->machine, "audiocpu", 0, HOLD_LINE);
5858}
5959
6060/******************************************************************************/
r4679r4680
311311
312312static void sound_irq(const device_config *device, int state)
313313{
314   cpu_set_input_line(device->machine->cpu[1],1,state); /* IRQ 2 */
314   cputag_set_input_line(device->machine, "audiocpu", 1, state); /* IRQ 2 */
315315}
316316
317317static const ym2151_interface ym2151_config =
src/mame/drivers/toratora.c
r4679r4680
122122   int combined_state = pia6821_get_irq_a(device) | pia6821_get_irq_b(device);
123123
124124logerror("GEN IRQ: %x\n", combined_state);
125   cpu_set_input_line(device->machine->cpu[0], 0, combined_state ? ASSERT_LINE : CLEAR_LINE);
125   cputag_set_input_line(device->machine, "maincpu", 0, combined_state ? ASSERT_LINE : CLEAR_LINE);
126126}
127127
128128
src/mame/drivers/retofinv.c
r4679r4680
4040
4141static WRITE8_HANDLER( cpu1_reset_w )
4242{
43   cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_RESET, data ? CLEAR_LINE : ASSERT_LINE);
43   cputag_set_input_line(space->machine, "sub", INPUT_LINE_RESET, data ? CLEAR_LINE : ASSERT_LINE);
4444}
4545
4646static WRITE8_HANDLER( cpu2_reset_w )
4747{
48   cpu_set_input_line(space->machine->cpu[2], INPUT_LINE_RESET, data ? CLEAR_LINE : ASSERT_LINE);
48   cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_RESET, data ? CLEAR_LINE : ASSERT_LINE);
4949}
5050
5151static WRITE8_HANDLER( mcu_reset_w )
5252{
5353   /* the bootlegs don't have a MCU, so make sure it's there before trying to reset it */
54   if (space->machine->cpu[3] != NULL)
55      cpu_set_input_line(space->machine->cpu[3], INPUT_LINE_RESET, data ? CLEAR_LINE : ASSERT_LINE);
54   if (cputag_get_cpu(space->machine, "68705") != NULL)
55      cputag_set_input_line(space->machine, "68705", INPUT_LINE_RESET, data ? CLEAR_LINE : ASSERT_LINE);
5656}
5757
5858static WRITE8_HANDLER( cpu2_m6000_w )
r4679r4680
6868static WRITE8_HANDLER( soundcommand_w )
6969{
7070      soundlatch_w(space, 0, data);
71      cpu_set_input_line(space->machine->cpu[2], 0, HOLD_LINE);
71      cputag_set_input_line(space->machine, "audiocpu", 0, HOLD_LINE);
7272}
7373
7474static WRITE8_HANDLER( irq0_ack_w )
7575{
7676   int bit = data & 1;
7777
78   cpu_interrupt_enable(space->machine->cpu[0],bit);
78   cpu_interrupt_enable(cputag_get_cpu(space->machine, "maincpu"), bit);
7979   if (!bit)
80      cpu_set_input_line(space->machine->cpu[0], 0, CLEAR_LINE);
80      cputag_set_input_line(space->machine, "maincpu", 0, CLEAR_LINE);
8181}
8282
8383static WRITE8_HANDLER( irq1_ack_w )
8484{
8585   int bit = data & 1;
8686
87   cpu_interrupt_enable(space->machine->cpu[1],bit);
87   cpu_interrupt_enable(cputag_get_cpu(space->machine, "sub"), bit);
8888   if (!bit)
89      cpu_set_input_line(space->machine->cpu[1], 0, CLEAR_LINE);
89      cputag_set_input_line(space->machine, "sub", 0, CLEAR_LINE);
9090}
9191
9292static WRITE8_HANDLER( coincounter_w )
src/mame/drivers/gbusters.c
r4679r4680
104104
105105static WRITE8_HANDLER( gbusters_sh_irqtrigger_w )
106106{
107   cpu_set_input_line_and_vector(space->machine->cpu[1],0,HOLD_LINE,0xff);
107   cputag_set_input_line_and_vector(space->machine, "audiocpu", 0, HOLD_LINE, 0xff);
108108}
109109
110110static WRITE8_DEVICE_HANDLER( gbusters_snd_bankswitch_w )
r4679r4680
122122#endif
123123}
124124
125static ADDRESS_MAP_START( gbusters_readmem, ADDRESS_SPACE_PROGRAM, 8 )
125static ADDRESS_MAP_START( gbusters_map, ADDRESS_SPACE_PROGRAM, 8 )
126   AM_RANGE(0x1f80, 0x1f80) AM_WRITE(gbusters_coin_counter_w)                  /* coin counters */
127   AM_RANGE(0x1f84, 0x1f84) AM_WRITE(soundlatch_w)                           /* sound code # */
128   AM_RANGE(0x1f88, 0x1f88) AM_WRITE(gbusters_sh_irqtrigger_w)                  /* cause interrupt on audio CPU */
129   AM_RANGE(0x1f8c, 0x1f8c) AM_WRITE(watchdog_reset_w)                        /* watchdog reset */
126130   AM_RANGE(0x1f90, 0x1f90) AM_READ_PORT("SYSTEM")
127131   AM_RANGE(0x1f91, 0x1f91) AM_READ_PORT("P1")
128132   AM_RANGE(0x1f92, 0x1f92) AM_READ_PORT("P2")
129133   AM_RANGE(0x1f93, 0x1f93) AM_READ_PORT("DSW3")
130134   AM_RANGE(0x1f94, 0x1f94) AM_READ_PORT("DSW1")
131135   AM_RANGE(0x1f95, 0x1f95) AM_READ_PORT("DSW2")
132   AM_RANGE(0x0000, 0x3fff) AM_READ(K052109_051960_r)   /* tiles + sprites (RAM H21, G21 & H6) */
133   AM_RANGE(0x4000, 0x57ff) AM_READ(SMH_RAM)         /* RAM I12 */
134   AM_RANGE(0x5800, 0x5fff) AM_READ(bankedram_r)      /* palette + work RAM (RAM D16 & C16) */
135   AM_RANGE(0x6000, 0x7fff) AM_READ(SMH_BANK1)         /* banked ROM */
136   AM_RANGE(0x8000, 0xffff) AM_READ(SMH_ROM)         /* ROM 878n02.rom */
136   AM_RANGE(0x1f98, 0x1f98) AM_WRITE(gbusters_1f98_w)                        /* enable gfx ROM read through VRAM */
137   AM_RANGE(0x1f9c, 0x1f9c) AM_WRITE(gbusters_unknown_w)                     /* ??? */
138   AM_RANGE(0x0000, 0x3fff) AM_READWRITE(K052109_051960_r, K052109_051960_w)      /* tiles + sprites (RAM H21, G21 & H6) */
139   AM_RANGE(0x4000, 0x57ff) AM_RAM                                       /* RAM I12 */
140   AM_RANGE(0x5800, 0x5fff) AM_READWRITE(bankedram_r, bankedram_w) AM_BASE(&ram)   /* palette + work RAM (RAM D16 & C16) */
141   AM_RANGE(0x6000, 0x7fff) AM_ROMBANK(1)                                 /* banked ROM */
142   AM_RANGE(0x8000, 0xffff) AM_ROM                                       /* ROM 878n02.rom */
137143ADDRESS_MAP_END
138144
139static ADDRESS_MAP_START( gbusters_writemem, ADDRESS_SPACE_PROGRAM, 8 )
140   AM_RANGE(0x1f80, 0x1f80) AM_WRITE(gbusters_coin_counter_w)   /* coin counters */
141   AM_RANGE(0x1f84, 0x1f84) AM_WRITE(soundlatch_w)            /* sound code # */
142   AM_RANGE(0x1f88, 0x1f88) AM_WRITE(gbusters_sh_irqtrigger_w)   /* cause interrupt on audio CPU */
143   AM_RANGE(0x1f8c, 0x1f8c) AM_WRITE(watchdog_reset_w)         /* watchdog reset */
144   AM_RANGE(0x1f98, 0x1f98) AM_WRITE(gbusters_1f98_w)         /* enable gfx ROM read through VRAM */
145   AM_RANGE(0x1f9c, 0x1f9c) AM_WRITE(gbusters_unknown_w)         /* ??? */
146   AM_RANGE(0x0000, 0x3fff) AM_WRITE(K052109_051960_w)         /* tiles + sprites (RAM H21, G21 & H6) */
147   AM_RANGE(0x4000, 0x57ff) AM_WRITE(SMH_RAM)               /* RAM I12 */
148   AM_RANGE(0x5800, 0x5fff) AM_WRITE(bankedram_w) AM_BASE(&ram)         /* palette + work RAM (RAM D16 & C16) */
149   AM_RANGE(0x6000, 0x7fff) AM_WRITE(SMH_ROM)               /* banked ROM */
150   AM_RANGE(0x8000, 0xffff) AM_WRITE(SMH_ROM)               /* ROM 878n02.rom */
145static ADDRESS_MAP_START( gbusters_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
146   AM_RANGE(0x0000, 0x7fff) AM_ROM                                       /* ROM 878h01.rom */
147   AM_RANGE(0x8000, 0x87ff) AM_RAM                                       /* RAM */
148   AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_r)                           /* soundlatch_r */
149   AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE("konami", k007232_r, k007232_w)      /* 007232 registers */
150   AM_RANGE(0xc001, 0xc001) AM_DEVREAD("ym", ym2151_status_port_r)               /* YM 2151 */
151   AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)            /* YM 2151 */
152   AM_RANGE(0xf000, 0xf000) AM_DEVWRITE("konami", gbusters_snd_bankswitch_w)      /* 007232 bankswitch? */
151153ADDRESS_MAP_END
152154
153static ADDRESS_MAP_START( gbusters_readmem_sound, ADDRESS_SPACE_PROGRAM, 8 )
154   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)            /* ROM 878h01.rom */
155   AM_RANGE(0x8000, 0x87ff) AM_READ(SMH_RAM)            /* RAM */
156   AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_r)         /* soundlatch_r */
157   AM_RANGE(0xb000, 0xb00d) AM_DEVREAD("konami", k007232_r)   /* 007232 registers */
158   AM_RANGE(0xc001, 0xc001) AM_DEVREAD("ym", ym2151_status_port_r)   /* YM 2151 */
159ADDRESS_MAP_END
160
161static ADDRESS_MAP_START( gbusters_writemem_sound, ADDRESS_SPACE_PROGRAM, 8 )
162   AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM)               /* ROM 878h01.rom */
163   AM_RANGE(0x8000, 0x87ff) AM_WRITE(SMH_RAM)               /* RAM */
164   AM_RANGE(0xb000, 0xb00d) AM_DEVWRITE("konami", k007232_w)      /* 007232 registers */
165   AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)      /* YM 2151 */
166   AM_RANGE(0xf000, 0xf000) AM_DEVWRITE("konami", gbusters_snd_bankswitch_w)   /* 007232 bankswitch? */
167ADDRESS_MAP_END
168
169155/***************************************************************************
170156
171157    Input Ports
r4679r4680
245231
246232   /* basic machine hardware */
247233   MDRV_CPU_ADD("maincpu", KONAMI, 3000000)   /* Konami custom 052526 */
248   MDRV_CPU_PROGRAM_MAP(gbusters_readmem,gbusters_writemem)
234   MDRV_CPU_PROGRAM_MAP(gbusters_map,0)
249235   MDRV_CPU_VBLANK_INT("screen", gbusters_interrupt)
250236
251237   MDRV_CPU_ADD("audiocpu", Z80, 3579545)      /* ? */
252   MDRV_CPU_PROGRAM_MAP(gbusters_readmem_sound,gbusters_writemem_sound)
238   MDRV_CPU_PROGRAM_MAP(gbusters_sound_map,0)
253239
254240   MDRV_MACHINE_RESET(gbusters)
255241
r4679r4680
382368{
383369   UINT8 *RAM = memory_region(machine, "maincpu");
384370
385   konami_configure_set_lines(machine->cpu[0], gbusters_banking);
371   konami_configure_set_lines(cputag_get_cpu(machine, "maincpu"), gbusters_banking);
386372
387373   /* mirror address for banked ROM */
388374   memcpy(&RAM[0x18000], &RAM[0x10000], 0x08000 );
src/mame/drivers/dotrikun.c
r4679r4680
2323#include "driver.h"
2424#include "cpu/z80/z80.h"
2525
26/*---------------  External Function Prototypes  ---------------*/
2627
2728VIDEO_UPDATE( dotrikun );
29VIDEO_START( dotrikun );
2830WRITE8_HANDLER( dotrikun_color_w );
2931
32/*--------------------  Address / I/O Maps  --------------------*/
3033
31static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 )
32   AM_RANGE(0x0000, 0x3fff) AM_READ(SMH_ROM)
33   AM_RANGE(0x8000, 0x87ff) AM_READ(SMH_RAM)
34static ADDRESS_MAP_START( dotrikun_map, ADDRESS_SPACE_PROGRAM, 8 )
35   AM_RANGE(0x0000, 0x3fff) AM_ROM
36   AM_RANGE(0x8000, 0x87ff) AM_RAM AM_BASE(&videoram) AM_SIZE(&videoram_size)
3437ADDRESS_MAP_END
3538
36static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 )
37   AM_RANGE(0x0000, 0x3fff) AM_WRITE(SMH_ROM)
38   AM_RANGE(0x8000, 0x87ff) AM_WRITE(SMH_RAM) AM_BASE(&videoram) AM_SIZE(&videoram_size)
39ADDRESS_MAP_END
40
41
4239static ADDRESS_MAP_START( io_map, ADDRESS_SPACE_IO, 8 )
4340   ADDRESS_MAP_GLOBAL_MASK(0xff)
4441   AM_RANGE(0x00, 0x00) AM_READ_PORT("INPUTS") AM_WRITE(dotrikun_color_w)
4542ADDRESS_MAP_END
4643
44/*--------------------------  Inputs  --------------------------*/
45
4746static INPUT_PORTS_START( dotrikun )
4847   PORT_START("INPUTS")
4948   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP )
r4679r4680
5655   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 )
5756INPUT_PORTS_END
5857
58/*-------------------------  Machine  --------------------------*/
5959
6060static MACHINE_DRIVER_START( dotrikun )
6161
6262   /* basic machine hardware */
6363   MDRV_CPU_ADD("maincpu", Z80, 4000000)       /* 4 MHz */
64   MDRV_CPU_PROGRAM_MAP(readmem,writemem)
64   MDRV_CPU_PROGRAM_MAP(dotrikun_map,0)
6565   MDRV_CPU_IO_MAP(io_map,0)
6666   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
6767
6868   /* video hardware */
6969   MDRV_VIDEO_UPDATE(dotrikun)
70   MDRV_VIDEO_START(dotrikun)
7071
7172   MDRV_SCREEN_ADD("screen", RASTER)
7273   MDRV_SCREEN_REFRESH_RATE(60)
r4679r4680
9697ROM_END
9798
9899
99GAME( 1990, dotrikun, 0,        dotrikun, dotrikun, 0, ROT0, "Sega", "Dottori Kun (new version)", GAME_NO_SOUND )
100GAME( 1990, dotriku2, dotrikun, dotrikun, dotrikun, 0, ROT0, "Sega", "Dottori Kun (old version)", GAME_NO_SOUND )
100GAME( 1990, dotrikun, 0,        dotrikun, dotrikun, 0, ROT0, "Sega", "Dottori Kun (new version)", GAME_SUPPORTS_SAVE | GAME_NO_SOUND )
101GAME( 1990, dotriku2, dotrikun, dotrikun, dotrikun, 0, ROT0, "Sega", "Dottori Kun (old version)", GAME_SUPPORTS_SAVE | GAME_NO_SOUND )
101102
src/mame/drivers/meadows.c
r4679r4680
209209
210210static INPUT_CHANGED( coin_inserted )
211211{
212   cpu_set_input_line_and_vector(field->port->machine->cpu[0], 0, (newval ? ASSERT_LINE : CLEAR_LINE), 0x82);
212   cputag_set_input_line_and_vector(field->port->machine, "maincpu", 0, (newval ? ASSERT_LINE : CLEAR_LINE), 0x82);
213213}
214214
215215
src/mame/drivers/megaplay.c
r4679r4680
4141
4242#include "driver.h"
4343#include "cpu/z80/z80.h"
44#include "sound/sn76496.h"
45
4446#include "deprecat.h"
4547#include "genesis.h"
4648#include "megadriv.h"
r4679r4680
633635static WRITE8_HANDLER( megaplay_bios_6404_w )
634636{
635637   if(((bios_6404 & 0x0c) == 0x00) && ((data & 0x0c) == 0x0c))
636      cpu_set_input_line(space->machine->cpu[0], INPUT_LINE_RESET, PULSE_LINE);
638      cputag_set_input_line(space->machine, "maincpu", INPUT_LINE_RESET, PULSE_LINE);
637639   bios_6404 = data;
638640
639641//  logerror("BIOS: 0x6404 write: 0x%02x\n",data);
r4679r4680
992994static DRIVER_INIT (megaplay)
993995{
994996   /* to support the old code.. */
995   ic36_ram = auto_malloc(0x10000);
996   ic37_ram = auto_malloc(0x10000);
997   genesis_io_ram = auto_malloc(0x20);
997   ic36_ram = auto_alloc_array(machine, UINT16, 0x10000/2);
998   ic37_ram = auto_alloc_array(machine, UINT8, 0x10000);
999   genesis_io_ram = auto_alloc_array(machine, UINT16, 0x20/2);
9981000
9991001   DRIVER_INIT_CALL(megadrij);
10001002   megplay_stat(machine);
10011003
10021004   /* for now ... */
1003   memory_install_readwrite16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xa10000, 0xa1001f, 0, 0, OLD_megaplay_genesis_io_r, OLD_megaplay_genesis_io_w);
1005   memory_install_readwrite16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xa10000, 0xa1001f, 0, 0, OLD_megaplay_genesis_io_r, OLD_megaplay_genesis_io_w);
10041006
10051007   /* megaplay has ram shared with the bios cpu here */
1006   memory_install_readwrite8_handler(cpu_get_address_space(machine->cpu[1], ADDRESS_SPACE_PROGRAM), 0x2000, 0x3fff, 0, 0, SMH_BANK7, SMH_BANK7);
1008   memory_install_readwrite8_handler(cputag_get_address_space(machine, "genesis_snd_z80", ADDRESS_SPACE_PROGRAM), 0x2000, 0x3fff, 0, 0, (read8_space_func)SMH_BANK(7), (write8_space_func)SMH_BANK(7));
10071009   memory_set_bankptr(machine, 7, &ic36_ram[0]);
10081010
10091011   /* instead of a RAM mirror the 68k sees the extra ram of the 2nd z80 too */
1010   memory_install_readwrite16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xa02000, 0xa03fff, 0, 0, megadriv_68k_read_z80_extra_ram, megadriv_68k_write_z80_extra_ram);
1012   memory_install_readwrite16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xa02000, 0xa03fff, 0, 0, megadriv_68k_read_z80_extra_ram, megadriv_68k_write_z80_extra_ram);
10111013}
10121014
10131015/*
src/mame/drivers/srmp2.c
r4679r4680
1414
1515Supported games :
1616==================
17 Super Real Mahjong Part1     (C) 1987 Seta
1718 Super Real Mahjong Part2     (C) 1987 Seta
1819 Super Real Mahjong Part3     (C) 1988 Seta
1920 Mahjong Yuugi (set 1)        (C) 1990 Visco
r4679r4680
2223 Mahjong Pon Chin Kan (set 2) (C) 1991 Visco
2324
2425
25Not supported game :
26=====================
27 Super Real Mahjong Part1 (not dumped)
28
29
3026System specs :
3127===============
3228   CPU       : 68000 (8MHz)
r4679r4680
386382**************************************************************************/
387383
388384
389static ADDRESS_MAP_START( srmp2_readmem, ADDRESS_SPACE_PROGRAM, 16 )
390   AM_RANGE(0x000000, 0x03ffff) AM_READ(SMH_ROM)
391   AM_RANGE(0x0c0000, 0x0c3fff) AM_READ(SMH_RAM)
392   AM_RANGE(0x140000, 0x143fff) AM_READ(SMH_RAM)            /* Sprites Code + X + Attr */
393   AM_RANGE(0x180000, 0x180607) AM_READ(SMH_RAM)            /* Sprites Y */
394   AM_RANGE(0x900000, 0x900001) AM_READ_PORT("SYSTEM")         /* Coinage */
395   AM_RANGE(0xa00000, 0xa00001) AM_READ(srmp2_input_1_r)      /* I/O port 1 */
396   AM_RANGE(0xa00002, 0xa00003) AM_READ(srmp2_input_2_r)      /* I/O port 2 */
385static ADDRESS_MAP_START( srmp2_map, ADDRESS_SPACE_PROGRAM, 16 )
386   AM_RANGE(0x000000, 0x03ffff) AM_ROM
387   AM_RANGE(0x0c0000, 0x0c3fff) AM_RAM AM_BASE(&generic_nvram16) AM_SIZE(&generic_nvram_size)
388   AM_RANGE(0x140000, 0x143fff) AM_RAM AM_BASE(&spriteram16_2)      /* Sprites Code + X + Attr */
389   AM_RANGE(0x180000, 0x180609) AM_RAM AM_BASE(&spriteram16)      /* Sprites Y */
390   AM_RANGE(0x1c0000, 0x1c0001) AM_WRITENOP                  /* ??? */
391   AM_RANGE(0x800000, 0x800001) AM_WRITE(srmp2_flags_w)         /* ADPCM bank, Color bank, etc. */
392   AM_RANGE(0x900000, 0x900001) AM_READ_PORT("SYSTEM")            /* Coinage */
393   AM_RANGE(0x900000, 0x900001) AM_WRITENOP                  /* ??? */
394   AM_RANGE(0xa00000, 0xa00001) AM_READWRITE(srmp2_input_1_r,srmp2_input_1_w)   /* I/O port 1 */
395   AM_RANGE(0xa00002, 0xa00003) AM_READWRITE(srmp2_input_2_r,srmp2_input_2_w)   /* I/O port 2 */
397396   AM_RANGE(0xb00000, 0xb00001) AM_READ(srmp2_cchip_status_0_r)   /* Custom chip status ??? */
397   AM_RANGE(0xb00000, 0xb00001) AM_DEVWRITE("msm", srmp2_adpcm_code_w)   /* ADPCM number */
398398   AM_RANGE(0xb00002, 0xb00003) AM_READ(srmp2_cchip_status_1_r)   /* Custom chip status ??? */
399   AM_RANGE(0xc00000, 0xc00001) AM_WRITENOP                  /* ??? */
400   AM_RANGE(0xd00000, 0xd00001) AM_WRITENOP                  /* ??? */
401   AM_RANGE(0xe00000, 0xe00001) AM_WRITENOP                  /* ??? */
399402   AM_RANGE(0xf00000, 0xf00001) AM_DEVREAD8("ay", ay8910_r, 0x00ff)
400ADDRESS_MAP_END
401
402static ADDRESS_MAP_START( srmp2_writemem, ADDRESS_SPACE_PROGRAM, 16 )
403   AM_RANGE(0x000000, 0x03ffff) AM_WRITE(SMH_ROM)
404   AM_RANGE(0x0c0000, 0x0c3fff) AM_WRITE(SMH_RAM) AM_BASE(&generic_nvram16) AM_SIZE(&generic_nvram_size)
405   AM_RANGE(0x140000, 0x143fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16_2)   /* Sprites Code + X + Attr */
406   AM_RANGE(0x180000, 0x180609) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16)   /* Sprites Y */
407   AM_RANGE(0x1c0000, 0x1c0001) AM_WRITENOP               /* ??? */
408   AM_RANGE(0x800000, 0x800001) AM_WRITE(srmp2_flags_w)            /* ADPCM bank, Color bank, etc. */
409   AM_RANGE(0x900000, 0x900001) AM_WRITENOP               /* ??? */
410   AM_RANGE(0xa00000, 0xa00001) AM_WRITE(srmp2_input_1_w)         /* I/O ??? */
411   AM_RANGE(0xa00002, 0xa00003) AM_WRITE(srmp2_input_2_w)         /* I/O ??? */
412   AM_RANGE(0xb00000, 0xb00001) AM_DEVWRITE("msm", srmp2_adpcm_code_w)         /* ADPCM number */
413   AM_RANGE(0xc00000, 0xc00001) AM_WRITENOP               /* ??? */
414   AM_RANGE(0xd00000, 0xd00001) AM_WRITENOP               /* ??? */
415   AM_RANGE(0xe00000, 0xe00001) AM_WRITENOP               /* ??? */
416403   AM_RANGE(0xf00000, 0xf00003) AM_DEVWRITE8("ay", ay8910_address_data_w, 0x00ff)
417404ADDRESS_MAP_END
418405
419406
420static ADDRESS_MAP_START( mjyuugi_readmem, ADDRESS_SPACE_PROGRAM, 16 )
421   AM_RANGE(0x000000, 0x07ffff) AM_READ(SMH_ROM)
422   AM_RANGE(0x100000, 0x100001) AM_READ_PORT("SYSTEM")         /* Coinage */
423   AM_RANGE(0x100010, 0x100011) AM_READNOP            /* ??? */
424   AM_RANGE(0x200000, 0x200001) AM_READNOP            /* ??? */
425   AM_RANGE(0x300000, 0x300001) AM_READNOP            /* ??? */
426   AM_RANGE(0x500000, 0x500001) AM_READ_PORT("DSW3-1")         /* DSW 3-1 */
427   AM_RANGE(0x500010, 0x500011) AM_READ_PORT("DSW3-2")         /* DSW 3-2 */
428   AM_RANGE(0x700000, 0x7003ff) AM_READ(SMH_RAM)
407static ADDRESS_MAP_START( mjyuugi_map, ADDRESS_SPACE_PROGRAM, 16 )
408   AM_RANGE(0x000000, 0x07ffff) AM_ROM
409   AM_RANGE(0x100000, 0x100001) AM_READ_PORT("SYSTEM")            /* Coinage */
410   AM_RANGE(0x100000, 0x100001) AM_WRITE(mjyuugi_flags_w)         /* Coin Counter */
411   AM_RANGE(0x100010, 0x100011) AM_READNOP                     /* ??? */
412   AM_RANGE(0x100010, 0x100011) AM_WRITE(mjyuugi_adpcm_bank_w)      /* ADPCM bank, GFX bank */
413   AM_RANGE(0x200000, 0x200001) AM_READNOP                     /* ??? */
414   AM_RANGE(0x300000, 0x300001) AM_READNOP                     /* ??? */
415   AM_RANGE(0x500000, 0x500001) AM_READ_PORT("DSW3-1")            /* DSW 3-1 */
416   AM_RANGE(0x500010, 0x500011) AM_READ_PORT("DSW3-2")            /* DSW 3-2 */
417   AM_RANGE(0x700000, 0x7003ff) AM_RAM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE(&paletteram16)
429418   AM_RANGE(0x800000, 0x800001) AM_READNOP            /* ??? */
430   AM_RANGE(0x900000, 0x900001) AM_READ(srmp2_input_1_r)      /* I/O port 1 */
431   AM_RANGE(0x900002, 0x900003) AM_READ(srmp2_input_2_r)      /* I/O port 2 */
419   AM_RANGE(0x900000, 0x900001) AM_READWRITE(srmp2_input_1_r,srmp2_input_1_w)      /* I/O port 1 */
420   AM_RANGE(0x900002, 0x900003) AM_READWRITE(srmp2_input_2_r,srmp2_input_2_w)      /* I/O port 2 */
432421   AM_RANGE(0xa00000, 0xa00001) AM_READ(srmp2_cchip_status_0_r)   /* custom chip status ??? */
422   AM_RANGE(0xa00000, 0xa00001) AM_DEVWRITE("msm", srmp2_adpcm_code_w)         /* ADPCM number */
433423   AM_RANGE(0xa00002, 0xa00003) AM_READ(srmp2_cchip_status_1_r)   /* custom chip status ??? */
434424   AM_RANGE(0xb00000, 0xb00001) AM_DEVREAD8("ay", ay8910_r, 0x00ff)
435   AM_RANGE(0xd00000, 0xd00609) AM_READ(SMH_RAM)            /* Sprites Y */
436   AM_RANGE(0xd02000, 0xd023ff) AM_READ(SMH_RAM)            /* ??? */
437   AM_RANGE(0xe00000, 0xe03fff) AM_READ(SMH_RAM)            /* Sprites Code + X + Attr */
438   AM_RANGE(0xffc000, 0xffffff) AM_READ(SMH_RAM)
439ADDRESS_MAP_END
440
441static ADDRESS_MAP_START( mjyuugi_writemem, ADDRESS_SPACE_PROGRAM, 16 )
442   AM_RANGE(0x000000, 0x07ffff) AM_WRITE(SMH_ROM)
443   AM_RANGE(0x100000, 0x100001) AM_WRITE(mjyuugi_flags_w)         /* Coin Counter */
444   AM_RANGE(0x100010, 0x100011) AM_WRITE(mjyuugi_adpcm_bank_w)      /* ADPCM bank, GFX bank */
445   AM_RANGE(0x700000, 0x7003ff) AM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE(&paletteram16)
446   AM_RANGE(0x900000, 0x900001) AM_WRITE(srmp2_input_1_w)         /* I/O ??? */
447   AM_RANGE(0x900002, 0x900003) AM_WRITE(srmp2_input_2_w)         /* I/O ??? */
448   AM_RANGE(0xa00000, 0xa00001) AM_DEVWRITE("msm", srmp2_adpcm_code_w)         /* ADPCM number */
449425   AM_RANGE(0xb00000, 0xb00003) AM_DEVWRITE8("ay", ay8910_address_data_w, 0x00ff)
450426   AM_RANGE(0xc00000, 0xc00001) AM_WRITENOP               /* ??? */
451   AM_RANGE(0xd00000, 0xd00609) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16)   /* Sprites Y */
452   AM_RANGE(0xd02000, 0xd023ff) AM_WRITE(SMH_RAM)               /* ??? only writes $00fa */
453   AM_RANGE(0xe00000, 0xe03fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16_2)   /* Sprites Code + X + Attr */
454   AM_RANGE(0xffc000, 0xffffff) AM_WRITE(SMH_RAM) AM_BASE(&generic_nvram16) AM_SIZE(&generic_nvram_size)
427   AM_RANGE(0xd00000, 0xd00609) AM_RAM AM_BASE(&spriteram16)   /* Sprites Y */
428   AM_RANGE(0xd02000, 0xd023ff) AM_RAM                     /* ??? only writes $00fa */
429   AM_RANGE(0xe00000, 0xe03fff) AM_RAM   AM_BASE(&spriteram16_2)   /* Sprites Code + X + Attr */
430   AM_RANGE(0xffc000, 0xffffff) AM_RAM AM_BASE(&generic_nvram16) AM_SIZE(&generic_nvram_size)
455431ADDRESS_MAP_END
456432
457433
r4679r4680
562538}
563539
564540
565static ADDRESS_MAP_START( srmp3_readmem, ADDRESS_SPACE_PROGRAM, 8 )
566   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
567   AM_RANGE(0x8000, 0x9fff) AM_READ(SMH_BANK1)                  /* rom bank */
568   AM_RANGE(0xa000, 0xa7ff) AM_READ(SMH_RAM)                  /* work ram */
569   AM_RANGE(0xb000, 0xb303) AM_READ(SMH_RAM)                  /* Sprites Y */
570   AM_RANGE(0xc000, 0xdfff) AM_READ(SMH_RAM)                  /* Sprites Code + X + Attr */
571   AM_RANGE(0xe000, 0xffff) AM_READ(SMH_RAM)
541static ADDRESS_MAP_START( srmp3_map, ADDRESS_SPACE_PROGRAM, 8 )
542   AM_RANGE(0x0000, 0x7fff) AM_ROM
543   AM_RANGE(0x8000, 0x9fff) AM_ROMBANK(1)                     /* rom bank */
544   AM_RANGE(0xa000, 0xa7ff) AM_RAM AM_BASE(&generic_nvram) AM_SIZE(&generic_nvram_size)   /* work ram */
545   AM_RANGE(0xa800, 0xa800) AM_WRITENOP                     /* flag ? */
546   AM_RANGE(0xb000, 0xb303) AM_RAM AM_BASE(&spriteram)            /* Sprites Y */
547   AM_RANGE(0xb800, 0xb800) AM_WRITENOP                     /* flag ? */
548   AM_RANGE(0xc000, 0xdfff) AM_RAM AM_BASE(&spriteram_2)         /* Sprites Code + X + Attr */
549   AM_RANGE(0xe000, 0xffff) AM_RAM AM_BASE(&spriteram_3)
572550ADDRESS_MAP_END
573551
574static ADDRESS_MAP_START( srmp3_writemem, ADDRESS_SPACE_PROGRAM, 8 )
575   AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM)
576   AM_RANGE(0x8000, 0x9fff) AM_WRITE(SMH_ROM)                  /* rom bank */
577   AM_RANGE(0xa000, 0xa7ff) AM_WRITE(SMH_RAM) AM_BASE(&generic_nvram) AM_SIZE(&generic_nvram_size)   /* work ram */
578   AM_RANGE(0xa800, 0xa800) AM_WRITENOP                  /* flag ? */
579   AM_RANGE(0xb000, 0xb303) AM_WRITE(SMH_RAM) AM_BASE(&spriteram)         /* Sprites Y */
580   AM_RANGE(0xb800, 0xb800) AM_WRITENOP                  /* flag ? */
581   AM_RANGE(0xc000, 0xdfff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram_2)         /* Sprites Code + X + Attr */
582   AM_RANGE(0xe000, 0xffff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram_3)
583ADDRESS_MAP_END
584
585552static ADDRESS_MAP_START( srmp3_io_map, ADDRESS_SPACE_IO, 8 )
586553   ADDRESS_MAP_GLOBAL_MASK(0xff)
587554   AM_RANGE(0x20, 0x20) AM_WRITENOP                        /* elapsed interrupt signal */
r4679r4680
10591026
10601027   /* basic machine hardware */
10611028   MDRV_CPU_ADD("maincpu", M68000,16000000/2)            /* 8.00 MHz */
1062   MDRV_CPU_PROGRAM_MAP(srmp2_readmem,srmp2_writemem)
1029   MDRV_CPU_PROGRAM_MAP(srmp2_map,0)
10631030   MDRV_CPU_VBLANK_INT_HACK(srmp2_interrupt,16)      /* Interrupt times is not understood */
10641031
10651032   MDRV_MACHINE_RESET(srmp2)
r4679r4680
10981065
10991066   MDRV_CPU_ADD("maincpu", Z80, 3500000)      /* 3.50 MHz ? */
11001067   //      4000000,                /* 4.00 MHz ? */
1101   MDRV_CPU_PROGRAM_MAP(srmp3_readmem,srmp3_writemem)
1068   MDRV_CPU_PROGRAM_MAP(srmp3_map,0)
11021069   MDRV_CPU_IO_MAP(srmp3_io_map,0)
11031070   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
11041071
r4679r4680
11361103
11371104   /* basic machine hardware */
11381105   MDRV_CPU_ADD("maincpu", M68000,16000000/2)            /* 8.00 MHz */
1139   MDRV_CPU_PROGRAM_MAP(mjyuugi_readmem,mjyuugi_writemem)
1106   MDRV_CPU_PROGRAM_MAP(mjyuugi_map,0)
11401107   MDRV_CPU_VBLANK_INT_HACK(srmp2_interrupt,16)      /* Interrupt times is not understood */
11411108
11421109   MDRV_MACHINE_RESET(srmp2)
src/mame/drivers/m72.c
r4679r4680
190190{
191191   UINT16 val = ((UINT32) param) & 0xffff;
192192   UINT16 offset = (((UINT32) param) >> 16) & 0xffff;
193   UINT16 *ram = ptr;
193   UINT16 *ram = (UINT16 *)ptr;
194194
195195   ram[offset] = val;
196196}
r4679r4680
327327   const address_space *sndio = cputag_get_address_space(machine, "soundcpu", ADDRESS_SPACE_IO);
328328   const device_config *dac = devtag_get_device(machine, "dac");
329329
330   protection_ram = auto_malloc(0x10000);
331   memory_install_read16_handler(program, 0xb0000, 0xbffff, 0, 0, SMH_BANK1);
330   protection_ram = auto_alloc_array(machine, UINT16, 0x10000/2);
331   memory_install_read16_handler(program, 0xb0000, 0xbffff, 0, 0, (read16_space_func)SMH_BANK(1));
332332   memory_install_write16_handler(program, 0xb0000, 0xb0fff, 0, 0, m72_main_mcu_w);
333333   memory_set_bankptr(machine, 1, protection_ram);
334334
r4679r4680
697697
698698static void install_protection_handler(running_machine *machine, const UINT8 *code,const UINT8 *crc)
699699{
700   protection_ram = auto_malloc(0x1000);
700   protection_ram = auto_alloc_array(machine, UINT16, 0x1000/2);
701701   protection_code = code;
702702   protection_crc =  crc;
703   memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xb0000, 0xb0fff, 0, 0, SMH_BANK1);
704   memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xb0ffa, 0xb0ffb, 0, 0, protection_r);
705   memory_install_write16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xb0000, 0xb0fff, 0, 0, protection_w);
703   memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xb0000, 0xb0fff, 0, 0, (read16_space_func)SMH_BANK(1));
704   memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xb0ffa, 0xb0ffb, 0, 0, protection_r);
705   memory_install_write16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xb0000, 0xb0fff, 0, 0, protection_w);
706706   memory_set_bankptr(machine, 1, protection_ram);
707707}
708708
r4679r4680
710710{
711711   install_protection_handler(machine, bchopper_code,bchopper_crc);
712712
713   memory_install_write16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0xc0, 0xc1, 0, 0, bchopper_sample_trigger_w);
713   memory_install_write16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_IO), 0xc0, 0xc1, 0, 0, bchopper_sample_trigger_w);
714714}
715715
716716static DRIVER_INIT( mrheli )
717717{
718718   install_protection_handler(machine, bchopper_code,mrheli_crc);
719719
720   memory_install_write16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0xc0, 0xc1, 0, 0, bchopper_sample_trigger_w);
720   memory_install_write16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_IO), 0xc0, 0xc1, 0, 0, bchopper_sample_trigger_w);
721721}
722722
723723static DRIVER_INIT( nspirit )
724724{
725725   install_protection_handler(machine, nspirit_code,nspirit_crc);
726726
727   memory_install_write16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0xc0, 0xc1, 0, 0, nspirit_sample_trigger_w);
727   memory_install_write16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_IO), 0xc0, 0xc1, 0, 0, nspirit_sample_trigger_w);
728728}
729729
730730static DRIVER_INIT( nspiritj )
731731{
732732   install_protection_handler(machine, nspirit_code,nspiritj_crc);
733733
734   memory_install_write16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0xc0, 0xc1, 0, 0, nspirit_sample_trigger_w);
734   memory_install_write16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_IO), 0xc0, 0xc1, 0, 0, nspirit_sample_trigger_w);
735735}
736736
737737static DRIVER_INIT( imgfight )
738738{
739739   install_protection_handler(machine, imgfight_code,imgfight_crc);
740740
741   memory_install_write16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0xc0, 0xc1, 0, 0, imgfight_sample_trigger_w);
741   memory_install_write16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_IO), 0xc0, 0xc1, 0, 0, imgfight_sample_trigger_w);
742742}
743743
744744static DRIVER_INIT( loht )
745745{
746746   install_protection_handler(machine, loht_code,loht_crc);
747747
748   memory_install_write16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0xc0, 0xc1, 0, 0, loht_sample_trigger_w);
748   memory_install_write16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_IO), 0xc0, 0xc1, 0, 0, loht_sample_trigger_w);
749749
750750   /* since we skip the startup tests, clear video RAM to prevent garbage on title screen */
751751   memset(m72_videoram2,0,0x4000);
r4679r4680
755755{
756756   install_protection_handler(machine, xmultipl_code,xmultipl_crc);
757757
758   memory_install_write16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0xc0, 0xc1, 0, 0, xmultipl_sample_trigger_w);
758   memory_install_write16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_IO), 0xc0, 0xc1, 0, 0, xmultipl_sample_trigger_w);
759759}
760760
761761static DRIVER_INIT( dbreed72 )
762762{
763763   install_protection_handler(machine, dbreed72_code,dbreed72_crc);
764764
765   memory_install_write16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0xc0, 0xc1, 0, 0, dbreed72_sample_trigger_w);
765   memory_install_write16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_IO), 0xc0, 0xc1, 0, 0, dbreed72_sample_trigger_w);
766766}
767767
768768static DRIVER_INIT( airduel )
769769{
770770   install_protection_handler(machine, airduel_code,airduel_crc);
771771
772   memory_install_write16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0xc0, 0xc1, 0, 0, airduel_sample_trigger_w);
772   memory_install_write16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_IO), 0xc0, 0xc1, 0, 0, airduel_sample_trigger_w);
773773}
774774
775775static DRIVER_INIT( dkgenm72 )
776776{
777777   install_protection_handler(machine, dkgenm72_code,dkgenm72_crc);
778778
779   memory_install_write16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0xc0, 0xc1, 0, 0, dkgenm72_sample_trigger_w);
779   memory_install_write16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_IO), 0xc0, 0xc1, 0, 0, dkgenm72_sample_trigger_w);
780780}
781781
782782static DRIVER_INIT( gallop )
783783{
784   memory_install_write16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0xc0, 0xc1, 0, 0, gallop_sample_trigger_w);
784   memory_install_write16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_IO), 0xc0, 0xc1, 0, 0, gallop_sample_trigger_w);
785785}
786786
787787
src/mame/drivers/r2dtank.c
r4679r4680
7878   int combined_state = pia6821_get_irq_a(pia0) | pia6821_get_irq_b(pia0) |
7979                   pia6821_get_irq_a(pia1) | pia6821_get_irq_b(pia1);
8080
81   cpu_set_input_line(device->machine->cpu[0], M6809_IRQ_LINE,  combined_state ? ASSERT_LINE : CLEAR_LINE);
81   cputag_set_input_line(device->machine, "maincpu", M6809_IRQ_LINE,  combined_state ? ASSERT_LINE : CLEAR_LINE);
8282}
8383
8484
r4679r4680
102102static WRITE8_HANDLER( audio_command_w )
103103{
104104   soundlatch_w(space, 0, ~data);
105   cpu_set_input_line(space->machine->cpu[1], M6800_IRQ_LINE, HOLD_LINE);
105   cputag_set_input_line(space->machine, "audiocpu", M6800_IRQ_LINE, HOLD_LINE);
106106
107107if (LOG_AUDIO_COMM) logerror("%08X   CPU#0  Audio Command Write: %x\n", cpu_get_pc(space->cpu), data^0xff);
108108}
r4679r4680
124124      data = 0x00;
125125
126126   soundlatch2_w(space, 0, data);
127   cpu_set_input_line(space->machine->cpu[0], M6809_IRQ_LINE, HOLD_LINE);
127   cputag_set_input_line(space->machine, "maincpu", M6809_IRQ_LINE, HOLD_LINE);
128128
129129if (LOG_AUDIO_COMM) logerror("%08X  CPU#1  Audio Answer Write: %x\n", cpu_get_pc(space->cpu), data);
130130}
src/mame/drivers/ohmygod.c
r4679r4680
2828
2929static int adpcm_bank_shift;
3030static int sndbank;
31static int nosound_kludge_step;
3231
3332static MACHINE_RESET( ohmygod )
3433{
r4679r4680
3635
3736   sndbank = 0;
3837   memcpy(rom + 0x20000,rom + 0x40000 + 0x20000 * sndbank,0x20000);
39
40   nosound_kludge_step = 0;
4138}
4239
4340static WRITE16_HANDLER( ohmygod_ctrl_w )
r4679r4680
6057   }
6158}
6259
63static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 16 )
64   AM_RANGE(0x000000, 0x07ffff) AM_READ(SMH_ROM)
65   AM_RANGE(0x300000, 0x303fff) AM_READ(SMH_RAM)
66   AM_RANGE(0x304000, 0x307fff) AM_READ(SMH_RAM)
67   AM_RANGE(0x308000, 0x30ffff) AM_READ(SMH_RAM)
68   AM_RANGE(0x600000, 0x6007ff) AM_READ(SMH_RAM)
69   AM_RANGE(0x700000, 0x703fff) AM_READ(SMH_RAM)
70   AM_RANGE(0x704000, 0x707fff) AM_READ(SMH_RAM)
71   AM_RANGE(0x708000, 0x70ffff) AM_READ(SMH_RAM)
60static ADDRESS_MAP_START( ohmygod_map, ADDRESS_SPACE_PROGRAM, 16 )
61   AM_RANGE(0x000000, 0x07ffff) AM_ROM
62   AM_RANGE(0x300000, 0x303fff) AM_RAM
63   AM_RANGE(0x304000, 0x307fff) AM_RAM_WRITE(ohmygod_videoram_w) AM_BASE(&ohmygod_videoram)
64   AM_RANGE(0x308000, 0x30ffff) AM_RAM
65   AM_RANGE(0x400000, 0x400001) AM_WRITE(ohmygod_scrollx_w)
66   AM_RANGE(0x400002, 0x400003) AM_WRITE(ohmygod_scrolly_w)
67   AM_RANGE(0x600000, 0x6007ff) AM_RAM_WRITE(paletteram16_xGGGGGRRRRRBBBBB_word_w) AM_BASE(&paletteram16)
68   AM_RANGE(0x700000, 0x703fff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)
69   AM_RANGE(0x704000, 0x707fff) AM_RAM
70   AM_RANGE(0x708000, 0x70ffff) AM_RAM    /* Work RAM */
7271   AM_RANGE(0x800000, 0x800001) AM_READ_PORT("P1")
7372   AM_RANGE(0x800002, 0x800003) AM_READ_PORT("P2")
73   AM_RANGE(0x900000, 0x900001) AM_WRITE(ohmygod_ctrl_w)
7474   AM_RANGE(0xa00000, 0xa00001) AM_READ_PORT("DSW1")
7575   AM_RANGE(0xa00002, 0xa00003) AM_READ_PORT("DSW2")
76   AM_RANGE(0xb00000, 0xb00001) AM_DEVREAD8("oki", okim6295_r, 0x00ff)
76   AM_RANGE(0xb00000, 0xb00001) AM_DEVREADWRITE8("oki", okim6295_r,okim6295_w, 0x00ff)
7777   AM_RANGE(0xc00000, 0xc00001) AM_READ(watchdog_reset16_r)
78ADDRESS_MAP_END
79
80static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 16 )
81   AM_RANGE(0x000000, 0x07ffff) AM_WRITE(SMH_ROM)
82   AM_RANGE(0x300000, 0x303fff) AM_WRITE(SMH_RAM)
83   AM_RANGE(0x304000, 0x307fff) AM_WRITE(ohmygod_videoram_w) AM_BASE(&ohmygod_videoram)
84   AM_RANGE(0x308000, 0x30ffff) AM_WRITE(SMH_RAM)
85   AM_RANGE(0x400000, 0x400001) AM_WRITE(ohmygod_scrollx_w)
86   AM_RANGE(0x400002, 0x400003) AM_WRITE(ohmygod_scrolly_w)
87   AM_RANGE(0x600000, 0x6007ff) AM_WRITE(paletteram16_xGGGGGRRRRRBBBBB_word_w) AM_BASE(&paletteram16)
88   AM_RANGE(0x700000, 0x703fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)
89   AM_RANGE(0x704000, 0x707fff) AM_WRITE(SMH_RAM)
90   AM_RANGE(0x708000, 0x70ffff) AM_WRITE(SMH_RAM)   /* work RAM */
91   AM_RANGE(0x900000, 0x900001) AM_WRITE(ohmygod_ctrl_w)
92   AM_RANGE(0xb00000, 0xb00001) AM_DEVWRITE8("oki", okim6295_w, 0x00ff)
9378   AM_RANGE(0xd00000, 0xd00001) AM_WRITE(ohmygod_spritebank_w)
9479ADDRESS_MAP_END
9580
9681
97
9882static INPUT_PORTS_START( ohmygod )
9983   PORT_START("P1")
10084   PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(1)
r4679r4680
332316
333317   /* basic machine hardware */
334318   MDRV_CPU_ADD("maincpu", M68000, 12000000)
335   MDRV_CPU_PROGRAM_MAP(readmem,writemem)
319   MDRV_CPU_PROGRAM_MAP(ohmygod_map,0)
336320   MDRV_CPU_VBLANK_INT("screen", irq1_line_hold)
337321
338322   MDRV_MACHINE_RESET(ohmygod)
src/mame/drivers/pokechmp.c
r4679r4680
9393
9494static WRITE8_HANDLER( pokechmp_sound_w )
9595{
96   soundlatch_w(space,0,data);
97   cpu_set_input_line(space->machine->cpu[1],INPUT_LINE_NMI,PULSE_LINE);
96   soundlatch_w(space, 0, data);
97   cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
9898}
9999
100100
r4679r4680
111111}
112112
113113
114static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 )
115   AM_RANGE(0x0000, 0x07ff) AM_READ(SMH_RAM)
116   AM_RANGE(0x1800, 0x1800) AM_READ_PORT("P1")
117   AM_RANGE(0x1a00, 0x1a00) AM_READ_PORT("P2")
118   AM_RANGE(0x1c00, 0x1c00) AM_READ_PORT("DSW")
114static ADDRESS_MAP_START( pokechmp_map, ADDRESS_SPACE_PROGRAM, 8 )
115   AM_RANGE(0x0000, 0x07ff) AM_RAM
116   AM_RANGE(0x0800, 0x0fff) AM_RAM_WRITE(pokechmp_videoram_w) AM_BASE(&videoram)
117   AM_RANGE(0x1000, 0x11ff) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
119118
120   /* Extra on Poke Champ (not on Pocket Gal) */
121   AM_RANGE(0x2000, 0x27ff) AM_READ(SMH_RAM)
122
123   AM_RANGE(0x4000, 0x5fff) AM_READ(SMH_BANK1)
124   AM_RANGE(0x6000, 0x7fff) AM_READ(SMH_BANK2)
125   AM_RANGE(0x8000, 0xffff) AM_READ(SMH_ROM)
126ADDRESS_MAP_END
127
128static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 )
129   AM_RANGE(0x0000, 0x07ff) AM_WRITE(SMH_RAM)
130   AM_RANGE(0x0800, 0x0fff) AM_WRITE(pokechmp_videoram_w) AM_BASE(&videoram)
131   AM_RANGE(0x1000, 0x11ff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
119   AM_RANGE(0x1800, 0x1800) AM_READ_PORT("P1")
132120   AM_RANGE(0x1801, 0x1801) AM_WRITE(pokechmp_flipscreen_w)
121   /* 1800 - 0x181f are unused BAC-06 registers, see video/dec0.c */
133122   AM_RANGE(0x1802, 0x181f) AM_WRITENOP
134/* 1800 - 0x181f are unused BAC-06 registers, see video/dec0.c */
135   AM_RANGE(0x1a00, 0x1a00) AM_WRITE(pokechmp_sound_w)
136   AM_RANGE(0x1c00, 0x1c00) AM_WRITE(pokechmp_bank_w)
137123
124   AM_RANGE(0x1a00, 0x1a00) AM_READ_PORT("P2") AM_WRITE(pokechmp_sound_w)
125   AM_RANGE(0x1c00, 0x1c00) AM_READ_PORT("DSW") AM_WRITE(pokechmp_bank_w)
126
138127   /* Extra on Poke Champ (not on Pocket Gal) */
139   AM_RANGE(0x2000, 0x27ff) AM_WRITE(pokechmp_paletteram_w) AM_BASE(&paletteram)
128   AM_RANGE(0x2000, 0x27ff) AM_RAM_WRITE(pokechmp_paletteram_w) AM_BASE(&paletteram)
140129
141   AM_RANGE(0x4000, 0xffff) AM_WRITE(SMH_ROM)
130   AM_RANGE(0x4000, 0x5fff) AM_ROMBANK(1)
131   AM_RANGE(0x6000, 0x7fff) AM_ROMBANK(2)
132   AM_RANGE(0x8000, 0xffff) AM_ROM
142133ADDRESS_MAP_END
143134
135
144136/***************************************************************************/
145137
146static ADDRESS_MAP_START( sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
147   AM_RANGE(0x0000, 0x07ff) AM_READ(SMH_RAM)
148   AM_RANGE(0x2800, 0x2800) AM_DEVREAD("oki", okim6295_r) // extra
149   AM_RANGE(0x3000, 0x3000) AM_READ(soundlatch_r)
150//  AM_RANGE(0x3400, 0x3400) AM_READ(pokechmp_adpcm_reset_r)    /* ? not sure */
151   AM_RANGE(0x4000, 0x7fff) AM_READ(SMH_BANK3)
152   AM_RANGE(0x8000, 0xffff) AM_READ(SMH_ROM)
153ADDRESS_MAP_END
154
155static ADDRESS_MAP_START( sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
156   AM_RANGE(0x0000, 0x07ff) AM_WRITE(SMH_RAM)
138static ADDRESS_MAP_START( pokechmp_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
139   AM_RANGE(0x0000, 0x07ff) AM_RAM
157140   AM_RANGE(0x0800, 0x0801) AM_DEVWRITE("ym1", ym2203_w)
158141   AM_RANGE(0x1000, 0x1001) AM_DEVWRITE("ym2", ym3812_w)
159142   AM_RANGE(0x1800, 0x1800) AM_WRITENOP   /* MSM5205 chip on Pocket Gal, not connected here? */
160143//  AM_RANGE(0x2000, 0x2000) AM_WRITE(pokechmp_sound_bank_w)/ * might still be sound bank */
161   AM_RANGE(0x2800, 0x2800) AM_DEVWRITE("oki", okim6295_w) // extra
162   AM_RANGE(0x4000, 0xffff) AM_WRITE(SMH_ROM)
144   AM_RANGE(0x2800, 0x2800) AM_DEVREADWRITE("oki", okim6295_r,okim6295_w) // extra
145   AM_RANGE(0x3000, 0x3000) AM_READ(soundlatch_r)
146//  AM_RANGE(0x3400, 0x3400) AM_READ(pokechmp_adpcm_reset_r)    /* ? not sure */
147   AM_RANGE(0x4000, 0x7fff) AM_ROMBANK(3)
148   AM_RANGE(0x8000, 0xffff) AM_ROM
163149ADDRESS_MAP_END
164150
165151
r4679r4680
245231
246232   /* basic machine hardware */
247233   MDRV_CPU_ADD("maincpu", M6502, 4000000)
248   MDRV_CPU_PROGRAM_MAP(readmem,writemem)
234   MDRV_CPU_PROGRAM_MAP(pokechmp_map,0)
249235   MDRV_CPU_VBLANK_INT("screen", nmi_line_pulse)
250236
251237   MDRV_CPU_ADD("audiocpu", M6502, 4000000)
252   MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem)
238   MDRV_CPU_PROGRAM_MAP(pokechmp_sound_map,0)
253239   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
254240
255241   /* video hardware */
src/mame/drivers/snk68.c
r4679r4680
120120   if (ACCESSING_BITS_8_15)
121121   {
122122      soundlatch_w(space, 0, data >> 8);
123      cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_NMI, PULSE_LINE);
123      cputag_set_input_line(space->machine, "soundcpu", INPUT_LINE_NMI, PULSE_LINE);
124124   }
125125}
126126
r4679r4680
587587
588588static void irqhandler(const device_config *device, int irq)
589589{
590   cpu_set_input_line(device->machine->cpu[1],0,irq ? ASSERT_LINE : CLEAR_LINE);
590   cputag_set_input_line(device->machine, "soundcpu", 0, irq ? ASSERT_LINE : CLEAR_LINE);
591591}
592592
593593static const ym3812_interface ym3812_config =
src/mame/drivers/madalien.c
r4679r4680
2323static INPUT_CHANGED( coin_inserted )
2424{
2525   /* coin insertion causes an NMI */
26   cpu_set_input_line(field->port->machine->cpu[0], INPUT_LINE_NMI, newval ? CLEAR_LINE : ASSERT_LINE);
26   cputag_set_input_line(field->port->machine, "maincpu", INPUT_LINE_NMI, newval ? CLEAR_LINE : ASSERT_LINE);
2727}
2828
2929
r4679r4680
5858
5959static WRITE8_HANDLER( madalien_sound_command_w )
6060{
61   cpu_set_input_line(space->machine->cpu[1], 0, ASSERT_LINE);
61   cputag_set_input_line(space->machine, "audiocpu", 0, ASSERT_LINE);
6262   soundlatch_w(space, offset, data);
6363}
6464
6565
6666static READ8_HANDLER(madalien_sound_command_r )
6767{
68   cpu_set_input_line(space->machine->cpu[1], 0, CLEAR_LINE);
68   cputag_set_input_line(space->machine, "audiocpu", 0, CLEAR_LINE);
6969   return soundlatch_r(space, offset);
7070}
7171
src/mame/drivers/konamigv.c
r4679r4680
547547   intelflash_init( machine, 2, FLASH_FUJITSU_29F016A, NULL );
548548   intelflash_init( machine, 3, FLASH_FUJITSU_29F016A, NULL );
549549
550   memory_install_readwrite32_handler( cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1f680080, 0x1f68008f, 0, 0, flash_r, flash_w );
551   memory_install_read32_handler     ( cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1f6800c0, 0x1f6800c7, 0, 0, trackball_r );
552   memory_install_read32_handler     ( cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1f6800c8, 0x1f6800cb, 0, 0, unknown_r ); /* ?? */
550   memory_install_readwrite32_handler( cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1f680080, 0x1f68008f, 0, 0, flash_r, flash_w );
551   memory_install_read32_handler     ( cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1f6800c0, 0x1f6800c7, 0, 0, trackball_r );
552   memory_install_read32_handler     ( cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1f6800c8, 0x1f6800cb, 0, 0, unknown_r ); /* ?? */
553553
554554   DRIVER_INIT_CALL(konamigv);
555555}
r4679r4680
635635{
636636   intelflash_init( machine, 0, FLASH_SHARP_LH28F400, NULL );
637637
638   memory_install_readwrite32_handler( cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1f680080, 0x1f68008f, 0, 0, btc_trackball_r, btc_trackball_w );
639   memory_install_write32_handler    ( cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1f6800e0, 0x1f6800e3, 0, 0, SMH_NOP );
640   memory_install_readwrite32_handler( cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1f380000, 0x1f3fffff, 0, 0, btcflash_r, btcflash_w );
638   memory_install_readwrite32_handler( cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1f680080, 0x1f68008f, 0, 0, btc_trackball_r, btc_trackball_w );
639   memory_install_write32_handler    ( cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1f6800e0, 0x1f6800e3, 0, 0, (write32_space_func)SMH_NOP );
640   memory_install_readwrite32_handler( cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1f380000, 0x1f3fffff, 0, 0, btcflash_r, btcflash_w );
641641
642642   DRIVER_INIT_CALL(konamigv);
643643}
r4679r4680
691691
692692static DRIVER_INIT( tokimosh )
693693{
694   memory_install_read32_handler ( cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1f680080, 0x1f680083, 0, 0, tokimeki_serial_r );
695   memory_install_write32_handler( cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1f680090, 0x1f680093, 0, 0, tokimeki_serial_w );
694   memory_install_read32_handler ( cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1f680080, 0x1f680083, 0, 0, tokimeki_serial_r );
695   memory_install_write32_handler( cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1f680090, 0x1f680093, 0, 0, tokimeki_serial_w );
696696
697697   DRIVER_INIT_CALL(konamigv);
698698}
r4679r4680
722722{
723723   intelflash_init( machine, 0, FLASH_SHARP_LH28F400, NULL );
724724
725   memory_install_read_port_handler  ( cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1f680080, 0x1f680083, 0, 0, "GUNX1" );
726   memory_install_read_port_handler  ( cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1f680090, 0x1f680093, 0, 0, "GUNY1" );
727   memory_install_read_port_handler  ( cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1f6800a0, 0x1f6800a3, 0, 0, "GUNX2" );
728   memory_install_read_port_handler  ( cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1f6800b0, 0x1f6800b3, 0, 0, "GUNY2" );
729   memory_install_read_port_handler  ( cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1f6800c0, 0x1f6800c3, 0, 0, "BUTTONS" );
730   memory_install_write32_handler    ( cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1f6800e0, 0x1f6800e3, 0, 0, kdeadeye_0_w );
731   memory_install_readwrite32_handler( cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1f380000, 0x1f3fffff, 0, 0, btcflash_r, btcflash_w );
725   memory_install_read_port_handler  ( cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1f680080, 0x1f680083, 0, 0, "GUNX1" );
726   memory_install_read_port_handler  ( cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1f680090, 0x1f680093, 0, 0, "GUNY1" );
727   memory_install_read_port_handler  ( cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1f6800a0, 0x1f6800a3, 0, 0, "GUNX2" );
728   memory_install_read_port_handler  ( cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1f6800b0, 0x1f6800b3, 0, 0, "GUNY2" );
729   memory_install_read_port_handler  ( cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1f6800c0, 0x1f6800c3, 0, 0, "BUTTONS" );
730   memory_install_write32_handler    ( cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1f6800e0, 0x1f6800e3, 0, 0, kdeadeye_0_w );
731   memory_install_readwrite32_handler( cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1f380000, 0x1f3fffff, 0, 0, btcflash_r, btcflash_w );
732732
733733   DRIVER_INIT_CALL(konamigv);
734734}
src/mame/drivers/firetrap.c
r4679r4680
147147   if (data==0x26) {
148148      i8751_current_command=0;
149149      i8751_return=0xff; /* This value is XOR'd and must equal 0 */
150      cpu_set_input_line_and_vector(space->machine->cpu[0],0,HOLD_LINE,0xff);
150      cputag_set_input_line_and_vector(space->machine, "maincpu", 0, HOLD_LINE, 0xff);
151151      return;
152152   }
153153
r4679r4680
194194   }
195195
196196   /* Signal main cpu task is complete */
197   cpu_set_input_line_and_vector(space->machine->cpu[0],0,HOLD_LINE,0xff);
197   cputag_set_input_line_and_vector(space->machine, "maincpu", 0, HOLD_LINE, 0xff);
198198   i8751_current_command=data;
199199}
200200
201201static WRITE8_HANDLER( firetrap_sound_command_w )
202202{
203   soundlatch_w(space,offset,data);
204   cpu_set_input_line(space->machine->cpu[1],INPUT_LINE_NMI,PULSE_LINE);
203   soundlatch_w(space, offset, data);
204   cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
205205}
206206
207207static WRITE8_HANDLER( firetrap_sound_2400_w )
r4679r4680
216216   UINT8 *RAM = memory_region(space->machine, "audiocpu");
217217
218218   bankaddress = 0x10000 + (data & 0x01) * 0x4000;
219   memory_set_bankptr(space->machine, 2,&RAM[bankaddress]);
219   memory_set_bankptr(space->machine, 2, &RAM[bankaddress]);
220220}
221221
222222static int msm5205next;
223223
224224static void firetrap_adpcm_int (const device_config *device)
225225{
226   static int toggle=0;
226   static int toggle = 0;
227227
228   msm5205_data_w (device,msm5205next>>4);
229   msm5205next<<=4;
228   msm5205_data_w(device, msm5205next >> 4);
229   msm5205next <<= 4;
230230
231231   toggle ^= 1;
232232   if (firetrap_irq_enable && toggle)
233      cpu_set_input_line (device->machine->cpu[1], M6502_IRQ_LINE, HOLD_LINE);
233      cputag_set_input_line (device->machine, "audiocpu", M6502_IRQ_LINE, HOLD_LINE);
234234}
235235
236236static WRITE8_HANDLER( firetrap_adpcm_data_w )
r4679r4680
244244}
245245
246246
247static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 )
248   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
249   AM_RANGE(0x8000, 0xbfff) AM_READ(SMH_BANK1)
250   AM_RANGE(0xc000, 0xe97f) AM_READ(SMH_RAM)
251   AM_RANGE(0xf010, 0xf010) AM_READ_PORT("IN0")
252   AM_RANGE(0xf011, 0xf011) AM_READ_PORT("IN1")
253   AM_RANGE(0xf012, 0xf012) AM_READ_PORT("IN2")
254   AM_RANGE(0xf013, 0xf013) AM_READ_PORT("DSW0")
255   AM_RANGE(0xf014, 0xf014) AM_READ_PORT("DSW1")
256   AM_RANGE(0xf016, 0xf016) AM_READ(firetrap_8751_r)
257ADDRESS_MAP_END
258
259static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 )
260   AM_RANGE(0x0000, 0xbfff) AM_WRITE(SMH_ROM)
261   AM_RANGE(0xc000, 0xcfff) AM_WRITE(SMH_RAM)
262   AM_RANGE(0xd000, 0xd7ff) AM_WRITE(firetrap_bg1videoram_w) AM_BASE(&firetrap_bg1videoram)
263   AM_RANGE(0xd800, 0xdfff) AM_WRITE(firetrap_bg2videoram_w) AM_BASE(&firetrap_bg2videoram)
264   AM_RANGE(0xe000, 0xe7ff) AM_WRITE(firetrap_fgvideoram_w) AM_BASE(&firetrap_fgvideoram)
265   AM_RANGE(0xe800, 0xe97f) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
247static ADDRESS_MAP_START( firetrap_map, ADDRESS_SPACE_PROGRAM, 8 )
248   AM_RANGE(0x0000, 0x7fff) AM_ROM
249   AM_RANGE(0x8000, 0xbfff) AM_ROMBANK(1)
250   AM_RANGE(0xc000, 0xcfff) AM_RAM
251   AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(firetrap_bg1videoram_w) AM_BASE(&firetrap_bg1videoram)
252   AM_RANGE(0xd800, 0xdfff) AM_RAM_WRITE(firetrap_bg2videoram_w) AM_BASE(&firetrap_bg2videoram)
253   AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(firetrap_fgvideoram_w) AM_BASE(&firetrap_fgvideoram)
254   AM_RANGE(0xe800, 0xe97f) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
266255   AM_RANGE(0xf000, 0xf000) AM_WRITENOP   /* IRQ acknowledge */
267256   AM_RANGE(0xf001, 0xf001) AM_WRITE(firetrap_sound_command_w)
268257   AM_RANGE(0xf002, 0xf002) AM_WRITE(firetrap_bankselect_w)
r4679r4680
273262   AM_RANGE(0xf00a, 0xf00b) AM_WRITE(firetrap_bg1_scrolly_w)
274263   AM_RANGE(0xf00c, 0xf00d) AM_WRITE(firetrap_bg2_scrollx_w)
275264   AM_RANGE(0xf00e, 0xf00f) AM_WRITE(firetrap_bg2_scrolly_w)
276ADDRESS_MAP_END
277
278static ADDRESS_MAP_START( readmem_bootleg, ADDRESS_SPACE_PROGRAM, 8 )
279   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
280   AM_RANGE(0x8000, 0xbfff) AM_READ(SMH_BANK1)
281   AM_RANGE(0xc000, 0xe97f) AM_READ(SMH_RAM)
282265   AM_RANGE(0xf010, 0xf010) AM_READ_PORT("IN0")
283266   AM_RANGE(0xf011, 0xf011) AM_READ_PORT("IN1")
284267   AM_RANGE(0xf012, 0xf012) AM_READ_PORT("IN2")
285268   AM_RANGE(0xf013, 0xf013) AM_READ_PORT("DSW0")
286269   AM_RANGE(0xf014, 0xf014) AM_READ_PORT("DSW1")
287   AM_RANGE(0xf016, 0xf016) AM_READ(firetrap_8751_bootleg_r)
288   AM_RANGE(0xf800, 0xf8ff) AM_READ(SMH_ROM)   /* extra ROM in the bootleg with unprotection code */
270   AM_RANGE(0xf016, 0xf016) AM_READ(firetrap_8751_r)
289271ADDRESS_MAP_END
290272
291static ADDRESS_MAP_START( writemem_bootleg, ADDRESS_SPACE_PROGRAM, 8 )
292   AM_RANGE(0x0000, 0xbfff) AM_WRITE(SMH_ROM)
293   AM_RANGE(0xc000, 0xcfff) AM_WRITE(SMH_RAM)
294   AM_RANGE(0xd000, 0xd7ff) AM_WRITE(firetrap_bg1videoram_w) AM_BASE(&firetrap_bg1videoram)
295   AM_RANGE(0xd800, 0xdfff) AM_WRITE(firetrap_bg2videoram_w) AM_BASE(&firetrap_bg2videoram)
296   AM_RANGE(0xe000, 0xe7ff) AM_WRITE(firetrap_fgvideoram_w) AM_BASE(&firetrap_fgvideoram)
297   AM_RANGE(0xe800, 0xe97f) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
273static ADDRESS_MAP_START( firetrap_bootleg_map, ADDRESS_SPACE_PROGRAM, 8 )
274   AM_RANGE(0x0000, 0x7fff) AM_ROM
275   AM_RANGE(0x8000, 0xbfff) AM_ROMBANK(1)
276   AM_RANGE(0xc000, 0xcfff) AM_RAM
277   AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(firetrap_bg1videoram_w) AM_BASE(&firetrap_bg1videoram)
278   AM_RANGE(0xd800, 0xdfff) AM_RAM_WRITE(firetrap_bg2videoram_w) AM_BASE(&firetrap_bg2videoram)
279   AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(firetrap_fgvideoram_w) AM_BASE(&firetrap_fgvideoram)
280   AM_RANGE(0xe800, 0xe97f) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
298281   AM_RANGE(0xf000, 0xf000) AM_WRITENOP   /* IRQ acknowledge */
299282   AM_RANGE(0xf001, 0xf001) AM_WRITE(firetrap_sound_command_w)
300283   AM_RANGE(0xf002, 0xf002) AM_WRITE(firetrap_bankselect_w)
r4679r4680
305288   AM_RANGE(0xf00a, 0xf00b) AM_WRITE(firetrap_bg1_scrolly_w)
306289   AM_RANGE(0xf00c, 0xf00d) AM_WRITE(firetrap_bg2_scrollx_w)
307290   AM_RANGE(0xf00e, 0xf00f) AM_WRITE(firetrap_bg2_scrolly_w)
308   AM_RANGE(0xf800, 0xf8ff) AM_WRITE(SMH_ROM)   /* extra ROM in the bootleg with unprotection code */
291   AM_RANGE(0xf010, 0xf010) AM_READ_PORT("IN0")
292   AM_RANGE(0xf011, 0xf011) AM_READ_PORT("IN1")
293   AM_RANGE(0xf012, 0xf012) AM_READ_PORT("IN2")
294   AM_RANGE(0xf013, 0xf013) AM_READ_PORT("DSW0")
295   AM_RANGE(0xf014, 0xf014) AM_READ_PORT("DSW1")
296   AM_RANGE(0xf016, 0xf016) AM_READ(firetrap_8751_bootleg_r)
297   AM_RANGE(0xf800, 0xf8ff) AM_ROM /* extra ROM in the bootleg with unprotection code */
309298ADDRESS_MAP_END
310299
311static ADDRESS_MAP_START( sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
312   AM_RANGE(0x0000, 0x07ff) AM_READ(SMH_RAM)
313   AM_RANGE(0x3400, 0x3400) AM_READ(soundlatch_r)
314   AM_RANGE(0x4000, 0x7fff) AM_READ(SMH_BANK2)
315   AM_RANGE(0x8000, 0xffff) AM_READ(SMH_ROM)
316ADDRESS_MAP_END
317
318static ADDRESS_MAP_START( sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
319   AM_RANGE(0x0000, 0x07ff) AM_WRITE(SMH_RAM)
300static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 )
301   AM_RANGE(0x0000, 0x07ff) AM_RAM
320302   AM_RANGE(0x1000, 0x1001) AM_DEVWRITE("ym", ym3526_w)
321303   AM_RANGE(0x2000, 0x2000) AM_WRITE(firetrap_adpcm_data_w)   /* ADPCM data for the MSM5205 chip */
322304   AM_RANGE(0x2400, 0x2400) AM_WRITE(firetrap_sound_2400_w)
323305   AM_RANGE(0x2800, 0x2800) AM_WRITE(firetrap_sound_bankselect_w)
324   AM_RANGE(0x4000, 0xffff) AM_WRITE(SMH_ROM)
306   AM_RANGE(0x3400, 0x3400) AM_READ(soundlatch_r)
307   AM_RANGE(0x4000, 0x7fff) AM_ROMBANK(2)
308   AM_RANGE(0x8000, 0xffff) AM_ROM
325309ADDRESS_MAP_END
326310
327311
r4679r4680
577561
578562   /* basic machine hardware */
579563   MDRV_CPU_ADD("maincpu", Z80, 6000000)   /* 6 MHz */
580   MDRV_CPU_PROGRAM_MAP(readmem,writemem)
564   MDRV_CPU_PROGRAM_MAP(firetrap_map,0)
581565   MDRV_CPU_VBLANK_INT_HACK(firetrap,2)
582566
583567   MDRV_CPU_ADD("audiocpu", M6502,3072000/2)   /* 1.536 MHz? */
584   MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem)
568   MDRV_CPU_PROGRAM_MAP(sound_map,0)
585569                     /* IRQs are caused by the ADPCM chip */
586570                     /* NMIs are caused by the main CPU */
587571   MDRV_MACHINE_RESET(firetrap)
r4679r4680
616600
617601   /* basic machine hardware */
618602   MDRV_CPU_ADD("maincpu", Z80, 6000000)   /* 6 MHz */
619   MDRV_CPU_PROGRAM_MAP(readmem_bootleg,writemem_bootleg)
603   MDRV_CPU_PROGRAM_MAP(firetrap_bootleg_map,0)
620604   MDRV_CPU_VBLANK_INT("screen", bootleg)
621605
622606   MDRV_CPU_ADD("audiocpu", M6502,3072000/2) /* 1.536 MHz? */
623   MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem)
607   MDRV_CPU_PROGRAM_MAP(sound_map,0)
624608                     /* IRQs are caused by the ADPCM chip */
625609                     /* NMIs are caused by the main CPU */
626610
src/mame/drivers/crgolf.c
r4679r4680
123123
124124static TIMER_CALLBACK( main_to_sound_callback )
125125{
126   cpu_set_input_line(machine->cpu[1], INPUT_LINE_NMI, ASSERT_LINE);
126   cputag_set_input_line(machine, "audiocpu", INPUT_LINE_NMI, ASSERT_LINE);
127127   main_to_sound_data = param;
128128}
129129
r4679r4680
136136
137137static READ8_HANDLER( main_to_sound_r )
138138{
139   cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_NMI, CLEAR_LINE);
139   cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, CLEAR_LINE);
140140   return main_to_sound_data;
141141}
142142
r4679r4680
150150
151151static TIMER_CALLBACK( sound_to_main_callback )
152152{
153   cpu_set_input_line(machine->cpu[0], INPUT_LINE_NMI, ASSERT_LINE);
153   cputag_set_input_line(machine, "maincpu", INPUT_LINE_NMI, ASSERT_LINE);
154154   sound_to_main_data = param;
155155}
156156
r4679r4680
163163
164164static READ8_HANDLER( sound_to_main_r )
165165{
166   cpu_set_input_line(space->machine->cpu[0], INPUT_LINE_NMI, CLEAR_LINE);
166   cputag_set_input_line(space->machine, "maincpu", INPUT_LINE_NMI, CLEAR_LINE);
167167   return sound_to_main_data;
168168}
169169
r4679r4680
581581static DRIVER_INIT( crgolfhi )
582582{
583583   const device_config *msm = devtag_get_device(machine, "msm");
584   memory_install_write8_device_handler(cpu_get_address_space(machine->cpu[1], ADDRESS_SPACE_PROGRAM), msm, 0xa000, 0xa003, 0, 0, crgolfhi_sample_w);
584   memory_install_write8_device_handler(cputag_get_address_space(machine, "audiocpu", ADDRESS_SPACE_PROGRAM), msm, 0xa000, 0xa003, 0, 0, crgolfhi_sample_w);
585585}
586586
587587
src/mame/drivers/mastboy.c
r4679r4680
641641
642642static void mastboy_adpcm_int(const device_config *device)
643643{
644   msm5205_data_w (device,mastboy_m5205_next);
645   mastboy_m5205_next>>=4;
644   msm5205_data_w(device, mastboy_m5205_next);
645   mastboy_m5205_next >>= 4;
646646
647647   mastboy_m5205_part ^= 1;
648648   if(!mastboy_m5205_part)
649      cpu_set_input_line(device->machine->cpu[0], INPUT_LINE_NMI, PULSE_LINE);
649      cputag_set_input_line(device->machine, "maincpu", INPUT_LINE_NMI, PULSE_LINE);
650650}
651651
652652
r4679r4680
661661static WRITE8_HANDLER( mastboy_irq0_ack_w )
662662{
663663   mastboy_irq0_ack = data;
664   if ((data&1)==1) cpu_set_input_line(space->machine->cpu[0],0, CLEAR_LINE);
664   if ((data & 1) == 1)
665      cputag_set_input_line(space->machine, "maincpu", 0, CLEAR_LINE);
665666}
666667
667668static INTERRUPT_GEN( mastboy_interrupt )
668669{
669   if ((mastboy_irq0_ack&1)==1)
670   if ((mastboy_irq0_ack & 1) == 1)
670671   {
671      cpu_set_input_line(device,0, ASSERT_LINE);
672      cpu_set_input_line(device, 0, ASSERT_LINE);
672673   }
673674}
674675
675676/* Memory Maps */
676677
677static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 )
678   AM_RANGE(0x0000, 0x3fff) AM_READ(SMH_ROM) // Internal ROM
679   AM_RANGE(0x4000, 0x7fff) AM_READ(SMH_ROM) // External ROM
680   AM_RANGE(0x8000, 0x8fff) AM_READ(SMH_RAM) // worl ram
681   AM_RANGE(0x9000, 0x9fff) AM_READ(SMH_RAM) // tilemap ram
682   AM_RANGE(0xa000, 0xa1ff) AM_READ(SMH_RAM) AM_MIRROR(0x0e00) // colour ram
683   AM_RANGE(0xc000, 0xffff) AM_READ(banked_ram_r) // mastboy bank area read
678static ADDRESS_MAP_START( mastboy_map, ADDRESS_SPACE_PROGRAM, 8 )
679   AM_RANGE(0x0000, 0x3fff) AM_ROM // Internal ROM
680   AM_RANGE(0x4000, 0x7fff) AM_ROM // External ROM
684681
685   AM_RANGE(0xff000, 0xff7ff) AM_READ(mastboy_backupram_r)
682   AM_RANGE(0x8000, 0x8fff) AM_RAM AM_BASE(&mastboy_workram)// work ram
683   AM_RANGE(0x9000, 0x9fff) AM_RAM AM_BASE(&mastboy_tileram)// tilemap ram
684   AM_RANGE(0xa000, 0xa1ff) AM_RAM AM_BASE(&mastboy_colram) AM_MIRROR(0x0e00)  // colour ram
685
686   AM_RANGE(0xc000, 0xffff) AM_READWRITE(banked_ram_r,banked_ram_w) // mastboy bank area read / write
687
688   AM_RANGE(0xff000, 0xff7ff) AM_READWRITE(mastboy_backupram_r,mastboy_backupram_w) AM_BASE(&generic_nvram) AM_SIZE(&generic_nvram_size)
689
686690   AM_RANGE(0xff800, 0xff807) AM_READ_PORT("P1")
687691   AM_RANGE(0xff808, 0xff80f) AM_READ_PORT("P2")
688692   AM_RANGE(0xff810, 0xff817) AM_READ_PORT("DSW1")
689693   AM_RANGE(0xff818, 0xff81f) AM_READ_PORT("DSW2")
690   AM_RANGE(0xffc00, 0xfffff) AM_READ(SMH_RAM) // Internal RAM
691ADDRESS_MAP_END
692694
693static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 )
694   //ADDRESS_MAP_GLOBAL_MASK(0xffff)
695   AM_RANGE(0x0000, 0x3fff) AM_WRITE(SMH_ROM) // Internal ROM
696   AM_RANGE(0x4000, 0x7fff) AM_WRITE(SMH_ROM) // External  ROM
697   AM_RANGE(0x8000, 0x8fff) AM_WRITE(SMH_RAM) AM_BASE(&mastboy_workram)// work ram
698   AM_RANGE(0x9000, 0x9fff) AM_WRITE(SMH_RAM) AM_BASE(&mastboy_tileram)// tilemap ram
699   AM_RANGE(0xa000, 0xa1ff) AM_WRITE(SMH_RAM) AM_BASE(&mastboy_colram) AM_MIRROR(0x0e00)  // colour ram
700   AM_RANGE(0xc000, 0xffff) AM_WRITE(banked_ram_w) // mastboy bank area write
701
702   AM_RANGE(0xff000, 0xff7ff) AM_WRITE(mastboy_backupram_w) AM_BASE(&generic_nvram) AM_SIZE(&generic_nvram_size)
703695   AM_RANGE(0xff820, 0xff827) AM_WRITE(mastboy_bank_w)
704696   AM_RANGE(0xff828, 0xff828) AM_DEVWRITE("saa", saa1099_data_w)
705697   AM_RANGE(0xff829, 0xff829) AM_DEVWRITE("saa", saa1099_control_w)
r4679r4680
709701   AM_RANGE(0xff83a, 0xff83a) AM_WRITE(msm5205_mastboy_m5205_sambit1_w)
710702   AM_RANGE(0xff83b, 0xff83b) AM_DEVWRITE("msm", mastboy_msm5205_reset_w)
711703   AM_RANGE(0xff83c, 0xff83c) AM_WRITE(backupram_enable_w)
712   AM_RANGE(0xffc00, 0xfffff) AM_WRITE(SMH_RAM) // Internal RAM
704
705   AM_RANGE(0xffc00, 0xfffff) AM_RAM // Internal RAM
713706ADDRESS_MAP_END
714707
715708/* Ports */
r4679r4680
725718   return 0x00;
726719}
727720
728static ADDRESS_MAP_START( port_readmem, ADDRESS_SPACE_IO, 8 )
721static ADDRESS_MAP_START( mastboy_io_map, ADDRESS_SPACE_IO, 8 )
729722   AM_RANGE(0x38, 0x38) AM_READ(mastboy_port_38_read)
730723   AM_RANGE(0x39, 0x39) AM_READ(mastboy_nmi_read)
731724ADDRESS_MAP_END
r4679r4680
864857
865858static MACHINE_DRIVER_START( mastboy )
866859   MDRV_CPU_ADD("maincpu", Z180, 12000000/2)   /* HD647180X0CP6-1M1R */
867   MDRV_CPU_PROGRAM_MAP(readmem,writemem)
868   MDRV_CPU_IO_MAP(port_readmem,0)
860   MDRV_CPU_PROGRAM_MAP(mastboy_map,0)
861   MDRV_CPU_IO_MAP(mastboy_io_map,0)
869862   MDRV_CPU_VBLANK_INT("screen", mastboy_interrupt)
870863
871864   MDRV_NVRAM_HANDLER(generic_1fill)
src/mame/drivers/thedeep.c
r4679r4680
4646
4747static WRITE8_HANDLER( thedeep_sound_w )
4848{
49   soundlatch_w(space,0,data);
50   cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_NMI, PULSE_LINE);
49   soundlatch_w(space, 0, data);
50   cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
5151}
5252
5353static UINT8 protection_command, protection_data;
r4679r4680
151151
152152static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 8 )
153153   AM_RANGE(0x0000, 0x7fff) AM_ROM
154   AM_RANGE(0x8000, 0xbfff) AM_READWRITE(SMH_BANK1, SMH_ROM)   // ROM (banked)
154   AM_RANGE(0x8000, 0xbfff) AM_READWRITE(SMH_BANK(1), SMH_ROM)   // ROM (banked)
155155   AM_RANGE(0xc000, 0xcfff) AM_RAM
156156   AM_RANGE(0xd000, 0xdfff) AM_RAM                           // RAM (MCU data copied here)
157157   AM_RANGE(0xe000, 0xe000) AM_READWRITE(thedeep_protection_r, thedeep_protection_w   )   // To MCU
r4679r4680
308308
309309static void irqhandler(const device_config *device, int irq)
310310{
311   cpu_set_input_line(device->machine->cpu[1],0,irq ? ASSERT_LINE : CLEAR_LINE);
311   cputag_set_input_line(device->machine, "audiocpu", 0, irq ? ASSERT_LINE : CLEAR_LINE);
312312}
313313
314314static const ym2203_interface thedeep_ym2203_intf =
src/mame/drivers/oneshot.c
r4679r4680
107107
108108
109109
110static ADDRESS_MAP_START( oneshot_readmem, ADDRESS_SPACE_PROGRAM, 16 )
111   AM_RANGE(0x000000, 0x03ffff) AM_READ(SMH_ROM)
112   AM_RANGE(0x080000, 0x087fff) AM_READ(SMH_RAM)
113   AM_RANGE(0x0c0000, 0x0c07ff) AM_READ(SMH_RAM)
114   AM_RANGE(0x120000, 0x120fff) AM_READ(SMH_RAM)
115   AM_RANGE(0x180000, 0x182fff) AM_READ(SMH_RAM)
110static ADDRESS_MAP_START( oneshot_map, ADDRESS_SPACE_PROGRAM, 16 )
111   AM_RANGE(0x000000, 0x03ffff) AM_ROM
112   AM_RANGE(0x080000, 0x087fff) AM_RAM
113   AM_RANGE(0x0c0000, 0x0c07ff) AM_RAM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE(&paletteram16)
114   AM_RANGE(0x120000, 0x120fff) AM_RAM AM_BASE(&oneshot_sprites)
115   AM_RANGE(0x180000, 0x180fff) AM_RAM_WRITE(oneshot_mid_videoram_w) AM_BASE(&oneshot_mid_videoram) // some people , girl etc.
116   AM_RANGE(0x181000, 0x181fff) AM_RAM_WRITE(oneshot_fg_videoram_w) AM_BASE(&oneshot_fg_videoram) // credits etc.
117   AM_RANGE(0x182000, 0x182fff) AM_RAM_WRITE(oneshot_bg_videoram_w) AM_BASE(&oneshot_bg_videoram) // credits etc.
118   AM_RANGE(0x188000, 0x18800f) AM_WRITEONLY AM_BASE(&oneshot_scroll)   // scroll registers
116119   AM_RANGE(0x190002, 0x190003) AM_READ(soundlatch_word_r)
120   AM_RANGE(0x190010, 0x190011) AM_WRITE(soundlatch_word_w)
121   AM_RANGE(0x190018, 0x190019) AM_DEVWRITE("oki", soundbank_w)
117122   AM_RANGE(0x190026, 0x190027) AM_READ(oneshot_gun_x_p1_r)
118123   AM_RANGE(0x19002e, 0x19002f) AM_READ(oneshot_gun_x_p2_r)
119124   AM_RANGE(0x190036, 0x190037) AM_READ(oneshot_gun_y_p1_r)
r4679r4680
125130   AM_RANGE(0x19c034, 0x19c035) AM_READ_PORT("P2")
126131ADDRESS_MAP_END
127132
128static ADDRESS_MAP_START( oneshot_writemem, ADDRESS_SPACE_PROGRAM, 16 )
129   AM_RANGE(0x000000, 0x03ffff) AM_WRITE(SMH_ROM)
130   AM_RANGE(0x080000, 0x087fff) AM_WRITE(SMH_RAM)
131   AM_RANGE(0x0c0000, 0x0c07ff) AM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE(&paletteram16)
132   AM_RANGE(0x120000, 0x120fff) AM_WRITE(SMH_RAM) AM_BASE(&oneshot_sprites)
133   AM_RANGE(0x180000, 0x180fff) AM_WRITE(oneshot_mid_videoram_w) AM_BASE(&oneshot_mid_videoram) // some people , girl etc.
134   AM_RANGE(0x181000, 0x181fff) AM_WRITE(oneshot_fg_videoram_w) AM_BASE(&oneshot_fg_videoram) // credits etc.
135   AM_RANGE(0x182000, 0x182fff) AM_WRITE(oneshot_bg_videoram_w) AM_BASE(&oneshot_bg_videoram) // credits etc.
136   AM_RANGE(0x188000, 0x18800f) AM_WRITE(SMH_RAM) AM_BASE(&oneshot_scroll)   // scroll registers???
137   AM_RANGE(0x190010, 0x190011) AM_WRITE(soundlatch_word_w)
138   AM_RANGE(0x190018, 0x190019) AM_DEVWRITE("oki", soundbank_w)
133static ADDRESS_MAP_START( oneshot_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
134   AM_RANGE(0x0000, 0x7fff) AM_ROM
135   AM_RANGE(0x8000, 0x8000) AM_READWRITE(soundlatch_r,soundlatch_w)
136   AM_RANGE(0x8001, 0x87ff) AM_RAM
137   AM_RANGE(0xe000, 0xe001) AM_DEVREADWRITE("ym", ym3812_r,ym3812_w)
138   AM_RANGE(0xe010, 0xe010) AM_DEVREADWRITE("oki", okim6295_r,okim6295_w)
139139ADDRESS_MAP_END
140140
141static ADDRESS_MAP_START( snd_readmem, ADDRESS_SPACE_PROGRAM, 8 )
142   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
143   AM_RANGE(0x8000, 0x8000) AM_READ(soundlatch_r)
144   AM_RANGE(0x8001, 0x87ff) AM_READ(SMH_RAM)
145   AM_RANGE(0xe000, 0xe001) AM_DEVREAD("ym", ym3812_r)
146   AM_RANGE(0xe010, 0xe010) AM_DEVREAD("oki", okim6295_r)
147ADDRESS_MAP_END
148141
149static ADDRESS_MAP_START( snd_writemem, ADDRESS_SPACE_PROGRAM, 8 )
150   AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM)
151   AM_RANGE(0x8000, 0x8000) AM_WRITE(soundlatch_w)
152   AM_RANGE(0x8001, 0x87ff) AM_WRITE(SMH_RAM)
153   AM_RANGE(0xe000, 0xe001) AM_DEVWRITE("ym", ym3812_w)
154   AM_RANGE(0xe010, 0xe010) AM_DEVWRITE("oki", okim6295_w)
155ADDRESS_MAP_END
156
157142static INPUT_PORTS_START( oneshot )
158143   PORT_START("DSW1")   /* DSW 1    (0x19c020.l -> 0x08006c.l) */
159144   PORT_DIPNAME( 0x03, 0x00, DEF_STR( Coinage ) )      // 0x080084.l : credits (00-09)
r4679r4680
352337
353338static void irq_handler(const device_config *device, int irq)
354339{
355   cpu_set_input_line(device->machine->cpu[1], 0, irq ? ASSERT_LINE : CLEAR_LINE);
340   cputag_set_input_line(device->machine, "audiocpu", 0, irq ? ASSERT_LINE : CLEAR_LINE);
356341}
357342
358343static const ym3812_interface ym3812_config =
r4679r4680
364349
365350   /* basic machine hardware */
366351   MDRV_CPU_ADD("maincpu", M68000, 12000000)
367   MDRV_CPU_PROGRAM_MAP(oneshot_readmem,oneshot_writemem)
352   MDRV_CPU_PROGRAM_MAP(oneshot_map,0)
368353   MDRV_CPU_VBLANK_INT("screen", irq4_line_hold)
369354
370355   MDRV_CPU_ADD("audiocpu", Z80, 5000000)
371   MDRV_CPU_PROGRAM_MAP(snd_readmem, snd_writemem)
356   MDRV_CPU_PROGRAM_MAP(oneshot_sound_map, 0)
372357
373358   MDRV_GFXDECODE(oneshot)
374359
src/mame/drivers/rmhaihai.c
r4679r4680
166166
167167static MACHINE_RESET( themj )
168168{
169   themj_rombank_w(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO),0,0);
169   themj_rombank_w(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_IO), 0, 0);
170170}
171171
172172
173173
174static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 )
175   AM_RANGE(0x0000, 0x9fff) AM_READ(SMH_ROM)
176   AM_RANGE(0xa000, 0xa7ff) AM_READ(SMH_RAM)
177   AM_RANGE(0xa800, 0xb7ff) AM_READ(SMH_RAM)
178   AM_RANGE(0xc000, 0xdfff) AM_READ(SMH_ROM)
179   AM_RANGE(0xe000, 0xffff) AM_READ(SMH_ROM)   /* rmhaisei only */
180ADDRESS_MAP_END
181
182static ADDRESS_MAP_START( themj_readmem, ADDRESS_SPACE_PROGRAM, 8 )
183   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
184   AM_RANGE(0x8000, 0x9fff) AM_READ(SMH_BANK1)
185   AM_RANGE(0xa000, 0xa7ff) AM_READ(SMH_RAM)
186   AM_RANGE(0xa800, 0xb7ff) AM_READ(SMH_RAM)
187   AM_RANGE(0xc000, 0xdfff) AM_READ(SMH_BANK2)
188   AM_RANGE(0xe000, 0xffff) AM_READ(SMH_ROM)
189ADDRESS_MAP_END
190
191static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 )
192   AM_RANGE(0x0000, 0x9fff) AM_WRITE(SMH_ROM)
193   AM_RANGE(0xa000, 0xa7ff) AM_WRITE(SMH_RAM)
194   AM_RANGE(0xa800, 0xafff) AM_WRITE(rmhaihai_colorram_w) AM_BASE(&colorram)
195   AM_RANGE(0xb000, 0xb7ff) AM_WRITE(rmhaihai_videoram_w) AM_BASE(&videoram)
174static ADDRESS_MAP_START( rmhaihai_map, ADDRESS_SPACE_PROGRAM, 8 )
175   AM_RANGE(0x0000, 0x9fff) AM_ROM
176   AM_RANGE(0xa000, 0xa7ff) AM_RAM
177   AM_RANGE(0xa800, 0xafff) AM_RAM_WRITE(rmhaihai_colorram_w) AM_BASE(&colorram)
178   AM_RANGE(0xb000, 0xb7ff) AM_RAM_WRITE(rmhaihai_videoram_w) AM_BASE(&videoram)
196179   AM_RANGE(0xb83c, 0xb83c) AM_WRITENOP   // ??
197180   AM_RANGE(0xbc00, 0xbc00) AM_WRITENOP   // ??
198   AM_RANGE(0xc000, 0xdfff) AM_WRITE(SMH_ROM)
199   AM_RANGE(0xe000, 0xffff) AM_WRITE(SMH_ROM)   /* rmhaisei only */
181   AM_RANGE(0xc000, 0xdfff) AM_ROM
182   AM_RANGE(0xe000, 0xffff) AM_ROM         /* rmhaisei only */
200183ADDRESS_MAP_END
201184
202static ADDRESS_MAP_START( io_map, ADDRESS_SPACE_IO, 8 )
185static ADDRESS_MAP_START( rmhaihai_io_map, ADDRESS_SPACE_IO, 8 )
203186   AM_RANGE(0x0000, 0x7fff) AM_READ(samples_r)
204187   AM_RANGE(0x8000, 0x8000) AM_READWRITE(keyboard_r, SMH_NOP)   // ??
205188   AM_RANGE(0x8001, 0x8001) AM_READWRITE(SMH_NOP, keyboard_w)   // ??
r4679r4680
212195   AM_RANGE(0xbc0c, 0xbc0c) AM_WRITENOP   // ??
213196ADDRESS_MAP_END
214197
198static ADDRESS_MAP_START( themj_map, ADDRESS_SPACE_PROGRAM, 8 )
199   AM_RANGE(0x0000, 0x7fff) AM_ROM
200   AM_RANGE(0x8000, 0x9fff) AM_ROMBANK(1)
201   AM_RANGE(0xa000, 0xa7ff) AM_RAM
202   AM_RANGE(0xa800, 0xafff) AM_RAM_WRITE(rmhaihai_colorram_w) AM_BASE(&colorram)
203   AM_RANGE(0xb000, 0xb7ff) AM_RAM_WRITE(rmhaihai_videoram_w) AM_BASE(&videoram)
204   AM_RANGE(0xc000, 0xdfff) AM_ROMBANK(2)
205   AM_RANGE(0xe000, 0xffff) AM_ROM
206ADDRESS_MAP_END
207
215208static ADDRESS_MAP_START( themj_io_map, ADDRESS_SPACE_IO, 8 )
216209   AM_RANGE(0x0000, 0x7fff) AM_READ(samples_r)
217210   AM_RANGE(0x8000, 0x8000) AM_READWRITE(keyboard_r, SMH_NOP)   // ??
r4679r4680
226219   AM_RANGE(0xbc0c, 0xbc0c) AM_WRITENOP   // ??
227220ADDRESS_MAP_END
228221
222
229223static INPUT_PORTS_START( mjctrl )
230224   PORT_START("KEY0")      // fake, handled by keyboard_r()
231225   PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_MAHJONG_SMALL )
r4679r4680
415409   16*8
416410};
417411
418static GFXDECODE_START( 1 )
412static GFXDECODE_START( rmhaihai )
419413   GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0, 32 )
420414GFXDECODE_END
421415
422static GFXDECODE_START( 2 )
416static GFXDECODE_START( themj )
423417   GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0, 64 )
424418GFXDECODE_END
425419
r4679r4680
445439
446440   /* basic machine hardware */
447441   MDRV_CPU_ADD("maincpu",Z80,20000000/4)   /* 5 MHz ??? */
448   MDRV_CPU_PROGRAM_MAP(readmem,writemem)
449   MDRV_CPU_IO_MAP(io_map,0)
442   MDRV_CPU_PROGRAM_MAP(rmhaihai_map,0)
443   MDRV_CPU_IO_MAP(rmhaihai_io_map,0)
450444   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
451445
452446   /* video hardware */
r4679r4680
457451   MDRV_SCREEN_SIZE(64*8, 32*8)
458452   MDRV_SCREEN_VISIBLE_AREA(4*8, 60*8-1, 2*8, 30*8-1)
459453
460   MDRV_GFXDECODE(1)
454   MDRV_GFXDECODE(rmhaihai)
461455   MDRV_PALETTE_LENGTH(0x100)
462456
463457   MDRV_PALETTE_INIT(RRRR_GGGG_BBBB)
r4679r4680
482476   MDRV_IMPORT_FROM(rmhaihai)
483477
484478   /* video hardware */
485   MDRV_GFXDECODE(2)
479   MDRV_GFXDECODE(themj)
486480   MDRV_PALETTE_LENGTH(0x200)
487481MACHINE_DRIVER_END
488482
r4679r4680
492486   MDRV_IMPORT_FROM(rmhaihai)
493487
494488   MDRV_CPU_MODIFY("maincpu")
495   MDRV_CPU_PROGRAM_MAP(themj_readmem,writemem)
489   MDRV_CPU_PROGRAM_MAP(themj_map,0)
496490   MDRV_CPU_IO_MAP(themj_io_map,0)
497491
498492   MDRV_MACHINE_RESET(themj)
499493
500494   /* video hardware */
501   MDRV_GFXDECODE(2)
495   MDRV_GFXDECODE(themj)
502496   MDRV_PALETTE_LENGTH(0x200)
503497MACHINE_DRIVER_END
504498
src/mame/drivers/topspeed.c
r4679r4680
276276   /* bit 0 enables cpu B */
277277   /* however this fails when recovering from a save state
278278       if cpu B is disabled !! */
279   cpu_set_input_line(machine->cpu[2], INPUT_LINE_RESET, (cpua_ctrl &0x1) ? CLEAR_LINE : ASSERT_LINE);
279   cputag_set_input_line(machine, "sub", INPUT_LINE_RESET, (cpua_ctrl &0x1) ? CLEAR_LINE : ASSERT_LINE);
280280
281281}
282282
r4679r4680
300300
301301static TIMER_CALLBACK( topspeed_interrupt6  )
302302{
303   cpu_set_input_line(machine->cpu[0],6,HOLD_LINE);
303   cputag_set_input_line(machine, "maincpu", 6, HOLD_LINE);
304304}
305305
306306/* 68000 B */
307307
308308static TIMER_CALLBACK( topspeed_cpub_interrupt6 )
309309{
310   cpu_set_input_line(machine->cpu[2],6,HOLD_LINE);   /* assumes Z80 sandwiched between the 68Ks */
310   cputag_set_input_line(machine, "sub", 6, HOLD_LINE);   /* assumes Z80 sandwiched between the 68Ks */
311311}
312312
313313
r4679r4680
628628
629629static void irq_handler(const device_config *device, int irq)   /* assumes Z80 sandwiched between 68Ks */
630630{
631   cpu_set_input_line(device->machine->cpu[1],0,irq ? ASSERT_LINE : CLEAR_LINE);
631   cputag_set_input_line(device->machine, "audiocpu", 0, irq ? ASSERT_LINE : CLEAR_LINE);
632632}
633633
634634static const ym2151_interface ym2151_config =
src/mame/drivers/zr107.c
r4679r4680
220220   draw_7segment_led(bitmap, 3, 3, led_reg0);
221221   draw_7segment_led(bitmap, 9, 3, led_reg1);
222222
223   sharc_set_flag_input(screen->machine->cpu[2], 1, ASSERT_LINE);
223   sharc_set_flag_input(cputag_get_cpu(screen->machine, "dsp"), 1, ASSERT_LINE);
224224   return 0;
225225}
226226
r4679r4680
274274   draw_7segment_led(bitmap, 3, 3, led_reg0);
275275   draw_7segment_led(bitmap, 9, 3, led_reg1);
276276
277   sharc_set_flag_input(screen->machine->cpu[2], 1, ASSERT_LINE);
277   sharc_set_flag_input(cputag_get_cpu(screen->machine, "dsp"), 1, ASSERT_LINE);
278278   return 0;
279279}
280280
r4679r4680
345345         eeprom_write_bit((data & 0x01) ? 1 : 0);
346346         eeprom_set_clock_line((data & 0x02) ? ASSERT_LINE : CLEAR_LINE);
347347         eeprom_set_cs_line((data & 0x04) ? CLEAR_LINE : ASSERT_LINE);
348         cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_RESET, (data & 0x10) ? CLEAR_LINE : ASSERT_LINE);
348         cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_RESET, (data & 0x10) ? CLEAR_LINE : ASSERT_LINE);
349349         mame_printf_debug("System register 0 = %02X\n", data);
350350         break;
351351
r4679r4680
361361                0x01 = ADDSCLK (ADC SCLK)
362362            */
363363         if (data & 0x80)   /* CG Board 1 IRQ Ack */
364            cpu_set_input_line(space->machine->cpu[0], INPUT_LINE_IRQ1, CLEAR_LINE);
364            cputag_set_input_line(space->machine, "maincpu", INPUT_LINE_IRQ1, CLEAR_LINE);
365365         if (data & 0x40)   /* CG Board 0 IRQ Ack */
366            cpu_set_input_line(space->machine->cpu[0], INPUT_LINE_IRQ0, CLEAR_LINE);
366            cputag_set_input_line(space->machine, "maincpu", INPUT_LINE_IRQ0, CLEAR_LINE);
367367         set_cgboard_id((data >> 4) & 3);
368368         adc083x_cs_write(space->machine, 0, (data >> 2) & 1);
369369         adc083x_di_write(space->machine, 0, (data >> 1) & 1);
r4679r4680
442442static MACHINE_START( zr107 )
443443{
444444   /* set conservative DRC options */
445   ppcdrc_set_options(machine->cpu[0], PPCDRC_COMPATIBLE_OPTIONS);
445   ppcdrc_set_options(cputag_get_cpu(machine, "maincpu"), PPCDRC_COMPATIBLE_OPTIONS);
446446
447447   /* configure fast RAM regions for DRC */
448   ppcdrc_add_fastram(machine->cpu[0], 0x00000000, 0x000fffff, FALSE, workram);
448   ppcdrc_add_fastram(cputag_get_cpu(machine, "maincpu"), 0x00000000, 0x000fffff, FALSE, workram);
449449}
450450
451451static ADDRESS_MAP_START( zr107_map, ADDRESS_SPACE_PROGRAM, 32 )
r4679r4680
710710}
711711static MACHINE_RESET( zr107 )
712712{
713   cpu_set_input_line(machine->cpu[2], INPUT_LINE_RESET, ASSERT_LINE);
713   cputag_set_input_line(machine, "dsp", INPUT_LINE_RESET, ASSERT_LINE);
714714}
715715
716716static MACHINE_DRIVER_START( zr107 )
r4679r4680
807807
808808static TIMER_CALLBACK( irq_off )
809809{
810   cpu_set_input_line(machine->cpu[1], param, CLEAR_LINE);
810   cputag_set_input_line(machine, "audiocpu", param, CLEAR_LINE);
811811}
812812
813813static void sound_irq_callback(running_machine *machine, int irq)
814814{
815815   int line = (irq == 0) ? INPUT_LINE_IRQ1 : INPUT_LINE_IRQ2;
816   cpu_set_input_line(machine->cpu[1], line, ASSERT_LINE);
816   cputag_set_input_line(machine, "audiocpu", line, ASSERT_LINE);
817817   timer_set(machine, ATTOTIME_IN_USEC(1), NULL, line, irq_off);
818818}
819819
820820static void init_zr107(running_machine *machine)
821821{
822   sharc_dataram = auto_malloc(0x100000);
822   sharc_dataram = auto_alloc_array(machine, UINT32, 0x100000/4);
823823   led_reg0 = led_reg1 = 0x7f;
824824   ccu_vcth = ccu_vctl = 0;
825825
src/mame/drivers/amspdwy.c
r4679r4680
7979
8080static WRITE8_HANDLER( amspdwy_sound_w )
8181{
82   soundlatch_w(space,0,data);
83   cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_NMI, PULSE_LINE);
82   soundlatch_w(space, 0, data);
83   cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
8484}
8585
8686static ADDRESS_MAP_START( amspdwy_map, ADDRESS_SPACE_PROGRAM, 8 )
r4679r4680
250250
251251static void irq_handler(const device_config *device, int irq)
252252{
253   cpu_set_input_line(device->machine->cpu[1],0,irq ? ASSERT_LINE : CLEAR_LINE);
253   cputag_set_input_line(device->machine, "audiocpu", 0, irq ? ASSERT_LINE : CLEAR_LINE);
254254}
255255
256256static const ym2151_interface amspdwy_ym2151_interface =
src/mame/drivers/segae.c
r4679r4680
316316#define SMS_VDP_VRAM(address) chip->vram[(address)&0x3fff]
317317
318318#ifdef UNUSED_FUNCTION
319static ADDRESS_MAP_START( sms_readmem, ADDRESS_SPACE_PROGRAM, 8 )
320//  AM_RANGE(0x0000 , 0xbfff) AM_READ(SMH_ROM)
321//  AM_RANGE(0xc000 , 0xdfff) AM_READ(SMH_RAM) AM_MIRROR(0x2000)
319static ADDRESS_MAP_START( sms_map, ADDRESS_SPACE_PROGRAM, 8 )
320//  AM_RANGE(0x0000 , 0xbfff) AM_ROM
321//  AM_RANGE(0xc000 , 0xdfff) AM_RAM AM_MIRROR(0x2000)
322322ADDRESS_MAP_END
323
324static ADDRESS_MAP_START( sms_writemem, ADDRESS_SPACE_PROGRAM, 8 )
325//  AM_RANGE(0x0000 , 0xbfff) AM_WRITE(SMH_ROM)
326//  AM_RANGE(0xc000 , 0xdfff) AM_WRITE(SMH_RAM) AM_MIRROR(0x2000)
327ADDRESS_MAP_END
328323#endif
329324
330325/* we have to fill in the ROM addresses for systeme due to the encrypted games */
331static ADDRESS_MAP_START( systeme_readmem, ADDRESS_SPACE_PROGRAM, 8 )
332   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)            /* Fixed ROM */
333   AM_RANGE(0x8000, 0xbfff) AM_READ(SMH_BANK1)            /* Banked ROM */
326static ADDRESS_MAP_START( systeme_map, ADDRESS_SPACE_PROGRAM, 8 )
327   AM_RANGE(0x0000, 0x7fff) AM_ROM                        /* Fixed ROM */
328   AM_RANGE(0x8000, 0xbfff) AM_ROMBANK(1)                  /* Banked ROM */
334329
335//  AM_RANGE(0x0000 , 0xbfff) AM_READ(SMH_ROM)
336//  AM_RANGE(0xc000 , 0xdfff) AM_READ(SMH_RAM) AM_MIRROR(0x2000)
330//  AM_RANGE(0x0000 , 0xbfff) AM_ROM
331//  AM_RANGE(0xc000 , 0xdfff) AM_RAM     AM_MIRROR(0x2000)
337332ADDRESS_MAP_END
338333
339static ADDRESS_MAP_START( systeme_writemem, ADDRESS_SPACE_PROGRAM, 8 )
340   AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM)            /* Fixed ROM */
341
342//  AM_RANGE(0x0000 , 0xbfff) AM_WRITE(SMH_ROM)
343//  AM_RANGE(0xc000 , 0xdfff) AM_WRITE(SMH_RAM) AM_MIRROR(0x2000)
344ADDRESS_MAP_END
345
346334static ADDRESS_MAP_START( sms_io_map, ADDRESS_SPACE_IO, 8 )
347335   ADDRESS_MAP_GLOBAL_MASK(0xff)
348336ADDRESS_MAP_END
r4679r4680
577565
578566static int sms_vdp_cpu0_irq_callback(running_machine *machine, int status)
579567{
580   if (status==1)
581      cpu_set_input_line(machine->cpu[0],0,HOLD_LINE);
568   if (status == 1)
569      cputag_set_input_line(machine, "maincpu", 0, HOLD_LINE);
582570   else
583      cpu_set_input_line(machine->cpu[0],0,CLEAR_LINE);
571      cputag_set_input_line(machine, "maincpu", 0, CLEAR_LINE);
584572
585573   return 0;
586574}
587575
588576static int sms_vdp_cpu1_irq_callback(running_machine *machine, int status)
589577{
590   if (status==1)
591      cpu_set_input_line(machine->cpu[1],0,HOLD_LINE);
578   if (status == 1)
579      cputag_set_input_line(machine, "genesis_snd_z80", 0, HOLD_LINE);
592580   else
593      cpu_set_input_line(machine->cpu[1],0,CLEAR_LINE);
581      cputag_set_input_line(machine, "genesis_snd_z80", 0, CLEAR_LINE);
594582
595583   return 0;
596584}
r4679r4680
598586
599587static int sms_vdp_cpu2_irq_callback(running_machine *machine, int status)
600588{
601   if (status==1)
602      cpu_set_input_line(machine->cpu[2],0,HOLD_LINE);
589   if (status == 1)
590      cputag_set_input_line(machine, "mtbios", 0, HOLD_LINE);
603591   else
604      cpu_set_input_line(machine->cpu[2],0,CLEAR_LINE);
592      cputag_set_input_line(machine, "mtbios", 0, CLEAR_LINE);
605593
606594   return 0;
607595}
r4679r4680
658646{
659647   struct sms_vdp *chip;
660648
661   chip = auto_malloc(sizeof(*chip));
662   memset(chip, 0, sizeof(*chip));
649   chip = auto_alloc_clear(machine, struct sms_vdp);
663650
664651   chip->vdp_type = type;
665652
r4679r4680
684671   chip->regs[0xa] = 0;
685672   /* b-f don't matter */
686673   chip->readbuf = 0;
687   chip->vram = auto_malloc(0x4000);
688   memset(chip->vram,0x00,0x4000);
674   chip->vram = auto_alloc_array_clear(machine, UINT8, 0x4000);
689675
690676   //printf("%d\n", (*chip->set_irq)(machine, 200));
691677
692678   if (chip->vdp_type==GG_VDP)
693679   {
694      chip->cram = auto_malloc(0x0040);
695      memset(chip->cram,0x00,0x0040);
696      chip->cram_mamecolours = auto_malloc(0x0080);
697      memset(chip->cram_mamecolours,0x00,0x0080);
680      chip->cram = auto_alloc_array_clear(machine, UINT8, 0x0040);
681      chip->cram_mamecolours = auto_alloc_array_clear(machine, UINT16, 0x0080/2);
698682      chip->gg_cram_latch = 0;
699683   }
700684   else
701685   {
702      chip->cram = auto_malloc(0x0020);
703      memset(chip->cram,0x00,0x0020);
704      chip->cram_mamecolours = auto_malloc(0x0040);
705      memset(chip->cram_mamecolours,0x00,0x0040);
686      chip->cram = auto_alloc_array_clear(machine, UINT8, 0x0020);
687      chip->cram_mamecolours = auto_alloc_array(machine, UINT16, 0x0040/2);
706688   }
707689
708   chip->tile_renderline = auto_malloc(256+8);
690   chip->tile_renderline = auto_alloc_array(machine, UINT8, 256+8);
709691   memset(chip->tile_renderline,0x00,256+8);
710692
711   chip->sprite_renderline = auto_malloc(256+32);
693   chip->sprite_renderline = auto_alloc_array(machine, UINT8, 256+32);
712694   memset(chip->sprite_renderline,0x00,256+32);
713695
714696   chip->writemode = 0;
715   chip->r_bitmap = auto_bitmap_alloc(256, 256, BITMAP_FORMAT_RGB15);
697   chip->r_bitmap = auto_bitmap_alloc(machine, 256, 256, BITMAP_FORMAT_RGB15);
716698
717699   chip->sms_scanline_timer = timer_alloc(machine, sms_scanline_timer_callback, chip);
718700
r4679r4680
12791261       The position to get the H position also has to compensate for a few errors
12801262    */
12811263//  printf("num %d\n",num );
1282   struct sms_vdp *chip = ptr;
1264   struct sms_vdp *chip = (struct sms_vdp *)ptr;
12831265
12841266   if (chip->sms_scanline_counter<(chip->sms_total_scanlines-1))
12851267   {
r4679r4680
14561438VIDEO_EOF(sms)
14571439{
14581440   end_of_frame(machine, vdp1);
1459   //if (SMS_PAUSE_BUTTON) cpu_set_input_line(machine->cpu[0],INPUT_LINE_NMI,PULSE_LINE); // not on systeme!!!
1441   //if (SMS_PAUSE_BUTTON) cputag_set_input_line(machine, , "maincpu", INPUT_LINE_NMI, PULSE_LINE); // not on systeme!!!
14601442}
14611443#endif
14621444
r4679r4680
18461828
18471829
18481830ROM_START( hangonjr )
1849   ROM_REGION( 0x30000, "z80", 0 )
1831   ROM_REGION( 0x30000, "maincpu", 0 )
18501832   ROM_LOAD( "rom5.ic7",   0x00000, 0x08000, CRC(d63925a7) SHA1(699f222d9712fa42651c753fe75d7b60e016d3ad) ) /* Fixed Code */
18511833
18521834   /* The following are 8 0x4000 banks that get mapped to reads from 0x8000 - 0xbfff */
r4679r4680
18571839ROM_END
18581840
18591841ROM_START( ridleofp )
1860   ROM_REGION( 0x30000, "z80", 0 )
1842   ROM_REGION( 0x30000, "maincpu", 0 )
18611843   ROM_LOAD( "epr10426.bin",   0x00000, 0x08000, CRC(4404c7e7) SHA1(555f44786976a009d96a6395c9173929ad6138a7) ) /* Fixed Code */
18621844
18631845   /* The following are 8 0x4000 banks that get mapped to reads from 0x8000 - 0xbfff */
r4679r4680
18681850ROM_END
18691851
18701852ROM_START( transfrm )
1871   ROM_REGION( 0x30000, "z80", 0 )
1853   ROM_REGION( 0x30000, "maincpu", 0 )
18721854   ROM_LOAD( "ic7.top",   0x00000, 0x08000, CRC(ccf1d123) SHA1(5ade9b00e2a36d034fafdf1902d47a9a00e96fc4) ) /* Fixed Code */
18731855
18741856   /* The following are 8 0x4000 banks that get mapped to reads from 0x8000 - 0xbfff */
r4679r4680
18791861ROM_END
18801862
18811863ROM_START( astrofl )
1882   ROM_REGION( 0x50000, "z80", 0 )
1864   ROM_REGION( 0x50000, "maincpu", 0 )
18831865   ROM_LOAD( "epr-7723.ic7",   0x00000, 0x08000, CRC(66061137) SHA1(cb6a2c7864f9f87bbedfd4b1448ad6c2de65d6ca) ) /* encrypted */
18841866
18851867   /* The following are 8 0x4000 banks that get mapped to reads from 0x8000 - 0xbfff */
r4679r4680
18911873
18921874
18931875ROM_START( tetrisse )
1894   ROM_REGION( 0x30000, "z80", 0 )
1876   ROM_REGION( 0x30000, "maincpu", 0 )
18951877   ROM_LOAD( "epr12213.7",   0x00000, 0x08000, CRC(ef3c7a38) SHA1(cbb91aef330ab1a37d3e21ecf1d008143d0dd7ec) ) /* Fixed Code */
18961878
18971879   /* The following are 8 0x4000 banks that get mapped to reads from 0x8000 - 0xbfff */
r4679r4680
19031885
19041886
19051887ROM_START( fantzn2 )
1906   ROM_REGION( 0x50000, "z80", 0 )
1888   ROM_REGION( 0x50000, "maincpu", 0 )
19071889   ROM_LOAD( "epr-11416.ic7",   0x00000, 0x08000, CRC(76db7b7b) SHA1(d60e2961fc893dcb4445aed5f67515cbd25b610f) )   /* encrypted */
19081890
19091891   ROM_LOAD( "epr-11415.ic5",   0x10000, 0x10000, CRC(57b45681) SHA1(1ae6d0d58352e246a4ec4e1ce02b0417257d5d20) )
r4679r4680
19161898ROM_END
19171899
19181900ROM_START( opaopa )
1919   ROM_REGION( 0x50000, "z80", 0 )
1901   ROM_REGION( 0x50000, "maincpu", 0 )
19201902   ROM_LOAD( "epr11224.ic7",   0x00000, 0x08000, CRC(024b1244) SHA1(59a522ac3d98982cc4ddb1c81f9584d3da453649) ) /* encrypted */
19211903
19221904   /* The following are 8 0x4000 banks that get mapped to reads from 0x8000 - 0xbfff */
r4679r4680
20412023
20422024
20432025static MACHINE_DRIVER_START( systeme )
2044   MDRV_CPU_ADD("z80", Z80, 10738600/2) /* correct for hangonjr, and astroflash/transformer at least  */
2045   MDRV_CPU_PROGRAM_MAP(systeme_readmem,systeme_writemem)
2026   MDRV_CPU_ADD("maincpu", Z80, 10738600/2) /* correct for hangonjr, and astroflash/transformer at least  */
2027   MDRV_CPU_PROGRAM_MAP(systeme_map,0)
20462028   MDRV_CPU_IO_MAP(sms_io_map,0)
20472029
20482030   /* IRQ handled via the timers */
r4679r4680
21562138{
21572139   /* INIT THE PORTS *********************************************************************************************/
21582140
2159   const address_space *io = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO);
2141   const address_space *io = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_IO);
21602142   const device_config *sn1 = devtag_get_device(machine, "sn1");
21612143   const device_config *sn2 = devtag_get_device(machine, "sn2");
21622144
r4679r4680
21862168   /* INIT THE MEMMAP / BANKING *********************************************************************************/
21872169
21882170   /* catch any addresses that don't get mapped */
2189//  memory_install_readwrite8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x0000, 0xffff, 0, 0, z80_unmapped_r, z80_unmapped_w);
2171//  memory_install_readwrite8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x0000, 0xffff, 0, 0, z80_unmapped_r, z80_unmapped_w);
21902172
21912173   /* fixed rom bank area */
2192//  sms_rom = auto_malloc(0xc000);
2193//  memory_install_readwrite8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x0000, 0xbfff, 0, 0, SMH_BANK1, SMH_UNMAP);
2174//  sms_rom = auto_alloc_array(machine, UINT8, 0xc000);
2175//  memory_install_readwrite8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x0000, 0xbfff, 0, 0, (read8_space_func)SMH_BANK(1), (write8_space_func)SMH_UNMAP);
21942176//  memory_set_bankptr(machine,  1, sms_rom );
21952177
2196   memory_configure_bank(machine, 1, 0, 16, memory_region(machine, "z80") + 0x10000, 0x4000);
2178   memory_configure_bank(machine, 1, 0, 16, memory_region(machine, "maincpu") + 0x10000, 0x4000);
21972179
21982180   /* alternate way of accessing video ram */
2199   memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x8000, 0xbfff, 0, 0, segasyse_videoram_w);
2181   memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x8000, 0xbfff, 0, 0, segasyse_videoram_w);
22002182
22012183
22022184//  memcpy(sms_rom, memory_region(machine, "user1"), 0x8000);
22032185
22042186   /* main ram area */
2205   sms_mainram = auto_malloc(0x4000);
2206   memory_install_readwrite8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xc000, 0xffff, 0, 0, SMH_BANK2, SMH_BANK2);
2187   sms_mainram = auto_alloc_array(machine, UINT8, 0x4000);
2188   memory_install_readwrite8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xc000, 0xffff, 0, 0, (read8_space_func)SMH_BANK(2), (write8_space_func)SMH_BANK(2));
22072189   memory_set_bankptr(machine,  2, sms_mainram );
22082190   memset(sms_mainram,0x00,0x4000);
22092191
r4679r4680
22122194
22132195void init_for_megadrive(running_machine *machine)
22142196{
2215   md_sms_vdp = start_vdp(machine, GEN_VDP);
2197   md_sms_vdp = (struct sms_vdp *)start_vdp(machine, GEN_VDP);
22162198   md_sms_vdp->set_irq = sms_vdp_cpu1_irq_callback;
22172199   md_sms_vdp->is_pal = 0;
22182200   md_sms_vdp->sms_total_scanlines = 262;
r4679r4680
22262208{
22272209//  init_systeme_map(machine);
22282210
2229   vdp1 = start_vdp(machine, SMS2_VDP);
2211   vdp1 = (struct sms_vdp *)start_vdp(machine, SMS2_VDP);
22302212   vdp1->set_irq = sms_vdp_cpu2_irq_callback;
22312213   vdp1->is_pal = 0;
22322214   vdp1->sms_total_scanlines = 262;
r4679r4680
22342216   vdp1->chip_id = 1;
22352217
22362218   vdp1_vram_bank0 = vdp1->vram;
2237   vdp1_vram_bank1 = auto_malloc(0x4000);
2219   vdp1_vram_bank1 = auto_alloc_array(machine, UINT8, 0x4000);
22382220}
22392221
22402222static DRIVER_INIT( segasyse )
22412223{
22422224   init_systeme_map(machine);
22432225
2244   vdp1 = start_vdp(machine, SMS2_VDP);
2226   vdp1 = (struct sms_vdp *)start_vdp(machine, SMS2_VDP);
22452227//  vdp1->set_irq = sms_vdp_cpu0_irq_callback;
22462228   vdp1->is_pal = 0;
22472229   vdp1->sms_total_scanlines = 262;
r4679r4680
22492231   vdp1->chip_id = 1;
22502232
22512233   vdp1_vram_bank0 = vdp1->vram;
2252   vdp1_vram_bank1 = auto_malloc(0x4000);
2234   vdp1_vram_bank1 = auto_alloc_array(machine, UINT8, 0x4000);
22532235
22542236
2255   vdp2 = start_vdp(machine, SMS2_VDP);
2237   vdp2 = (struct sms_vdp *)start_vdp(machine, SMS2_VDP);
22562238   vdp2->set_irq = sms_vdp_cpu0_irq_callback;
22572239   vdp2->is_pal = 0;
22582240   vdp2->sms_total_scanlines = 262;
r4679r4680
22602242   vdp2->chip_id = 2;
22612243
22622244   vdp2_vram_bank0 = vdp2->vram;
2263   vdp2_vram_bank1 = auto_malloc(0x4000);
2245   vdp2_vram_bank1 = auto_alloc_array(machine, UINT8, 0x4000);
22642246}
22652247
22662248/*- Hang On Jr. Specific -*/
r4679r4680
23282310{
23292311   DRIVER_INIT_CALL(segasyse);
23302312
2331   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0xf8, 0xf8, 0, 0, segae_ridleofp_port_f8_r);
2332   memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0xfa, 0xfa, 0, 0, segae_ridleofp_port_fa_w);
2313   memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_IO), 0xf8, 0xf8, 0, 0, segae_ridleofp_port_f8_r);
2314   memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_IO), 0xfa, 0xfa, 0, 0, segae_ridleofp_port_fa_w);
23332315}
23342316
23352317
r4679r4680
23372319{
23382320   DRIVER_INIT_CALL(segasyse);
23392321
2340   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0xf8, 0xf8, 0, 0, segae_hangonjr_port_f8_r);
2341   memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0xfa, 0xfa, 0, 0, segae_hangonjr_port_fa_w);
2322   memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_IO), 0xf8, 0xf8, 0, 0, segae_hangonjr_port_f8_r);
2323   memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_IO), 0xfa, 0xfa, 0, 0, segae_hangonjr_port_fa_w);
23422324}
23432325
23442326static DRIVER_INIT( opaopa )
23452327{
23462328   DRIVER_INIT_CALL(segasyse);
23472329
2348   mc8123_decrypt_rom(machine, "z80", "user1", 1, 8);
2330   mc8123_decrypt_rom(machine, "maincpu", "user1", 1, 8);
23492331}
23502332
23512333static DRIVER_INIT( fantzn2 )
23522334{
23532335   DRIVER_INIT_CALL(segasyse);
23542336
2355   mc8123_decrypt_rom(machine, "z80", "user1", 0, 0);
2337   mc8123_decrypt_rom(machine, "maincpu", "user1", 0, 0);
23562338}
23572339
23582340static DRIVER_INIT( astrofl )
23592341{
23602342   DRIVER_INIT_CALL(segasyse);
23612343
2362   astrofl_decode(machine, "z80");
2344   astrofl_decode(machine, "maincpu");
23632345}
23642346
23652347GAME( 1985, hangonjr, 0,        systeme, hangonjr, hangonjr, ROT0,  "Sega", "Hang-On Jr.", 0 )
src/mame/drivers/fantland.c
r4679r4680
8181
8282static WRITE8_HANDLER( fantland_soundlatch_w )
8383{
84   soundlatch_w(space,0,data);
85   cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_NMI, PULSE_LINE);
84   soundlatch_w(space, 0, data);
85   cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
8686}
8787
8888static WRITE16_HANDLER( fantland_soundlatch_16_w )
r4679r4680
864864
865865static void galaxygn_sound_irq(const device_config *device, int line)
866866{
867   cpu_set_input_line_and_vector(device->machine->cpu[1], 0, line ? ASSERT_LINE : CLEAR_LINE, 0x80/4);
867   cputag_set_input_line_and_vector(device->machine, "audiocpu", 0, line ? ASSERT_LINE : CLEAR_LINE, 0x80/4);
868868}
869869
870870static const ym2151_interface galaxygn_ym2151_interface =
r4679r4680
977977
978978static void wheelrun_ym3526_irqhandler(const device_config *device, int state)
979979{
980   cpu_set_input_line(device->machine->cpu[1], INPUT_LINE_IRQ0, state);
980   cputag_set_input_line(device->machine, "audiocpu", INPUT_LINE_IRQ0, state);
981981}
982982
983983static const ym3526_interface wheelrun_ym3526_interface =
src/mame/drivers/ksys573.c
r4679r4680
565565      atapi_regs[ATAPI_REG_COUNTLOW] = atapi_xferlen & 0xff;
566566      atapi_regs[ATAPI_REG_COUNTHIGH] = (atapi_xferlen>>8)&0xff;
567567
568      timer_adjust_oneshot(atapi_timer, cpu_clocks_to_attotime(machine->cpu[0], (ATAPI_CYCLES_PER_SECTOR * (atapi_xferlen/2048))), 0);
568      timer_adjust_oneshot(atapi_timer, cputag_clocks_to_attotime(machine, "maincpu", (ATAPI_CYCLES_PER_SECTOR * (atapi_xferlen/2048))), 0);
569569   }
570570   else
571571   {
r4679r4680
952952{
953953   int i;
954954
955   atapi_regs = auto_malloc( ATAPI_REG_MAX );
955   atapi_regs = auto_alloc_array(machine, UINT8, ATAPI_REG_MAX );
956956   memset(atapi_regs, 0, sizeof(atapi_regs));
957957
958958   atapi_regs[ATAPI_REG_CMDSTATUS] = 0;
r4679r4680
980980   }
981981   add_exit_callback(machine, atapi_exit);
982982
983   atapi_data = auto_malloc( ATAPI_DATA_SIZE );
983   atapi_data = auto_alloc_array(machine, UINT8, ATAPI_DATA_SIZE );
984984
985985   state_save_register_global_pointer(machine,  atapi_regs, ATAPI_REG_MAX );
986986   state_save_register_global_pointer(machine,  atapi_data, ATAPI_DATA_SIZE / 2 );
r4679r4680
10321032   verboselog( machine, 2, "atapi_xfer_end: %d %d\n", atapi_xferlen, atapi_xfermod );
10331033
10341034   // set a transfer complete timer (Note: CYCLES_PER_SECTOR can't be lower than 2000 or the BIOS ends up "out of order")
1035   timer_adjust_oneshot(atapi_timer, cpu_clocks_to_attotime(machine->cpu[0], (ATAPI_CYCLES_PER_SECTOR * (atapi_xferlen/2048))), 0);
1035   timer_adjust_oneshot(atapi_timer, cputag_clocks_to_attotime(machine, "maincpu", (ATAPI_CYCLES_PER_SECTOR * (atapi_xferlen/2048))), 0);
10361036}
10371037
10381038static UINT32 m_n_security_control;
r4679r4680
11881188static UINT64 psxcpu_gettotalcycles( running_machine *machine )
11891189{
11901190   /* TODO: should return the start of the current tick. */
1191   return cpu_get_total_cycles(machine->cpu[0]) * 2;
1191   return cputag_get_total_cycles(machine, "maincpu") * 2;
11921192}
11931193
11941194static int root_divider( int n_counter )
r4679r4680
17401740
17411741   uPD4701_init( machine, 0 );
17421742
1743   memory_install_readwrite32_handler( cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1f640000, 0x1f6400ff, 0, 0, ge765pwbba_r, ge765pwbba_w );
1743   memory_install_readwrite32_handler( cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1f640000, 0x1f6400ff, 0, 0, ge765pwbba_r, ge765pwbba_w );
17441744}
17451745
17461746/*
r4679r4680
18511851
18521852   gx700pwfbf_output_callback = output_callback_func;
18531853
1854   memory_install_readwrite32_handler( cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1f640000, 0x1f6400ff, 0, 0, gx700pwbf_io_r, gx700pwbf_io_w );
1854   memory_install_readwrite32_handler( cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1f640000, 0x1f6400ff, 0, 0, gx700pwbf_io_r, gx700pwbf_io_w );
18551855
18561856   state_save_register_global_array(machine,  gx700pwbf_output_data );
18571857}
r4679r4680
20942094{
20952095   DRIVER_INIT_CALL(konami573);
20962096
2097   memory_install_readwrite32_handler( cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1f600000, 0x1f6000ff, 0, 0, gtrfrks_io_r, gtrfrks_io_w );
2097   memory_install_readwrite32_handler( cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1f600000, 0x1f6000ff, 0, 0, gtrfrks_io_r, gtrfrks_io_w );
20982098}
20992099
21002100/* GX894 digital i/o */
r4679r4680
23842384
23852385   gx894pwbba_output_callback = output_callback_func;
23862386
2387   memory_install_readwrite32_handler( cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1f640000, 0x1f6400ff, 0, 0, gx894pwbba_r, gx894pwbba_w );
2387   memory_install_readwrite32_handler( cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1f640000, 0x1f6400ff, 0, 0, gx894pwbba_r, gx894pwbba_w );
23882388
23892389   gx894_ram_write_offset = 0;
23902390   gx894_ram_read_offset = 0;
2391   gx894_ram = auto_malloc( gx894_ram_size );
2391   gx894_ram = auto_alloc_array(machine, UINT16,  gx894_ram_size/2);
23922392
23932393   ds2401_init( machine, 2, ds2401_xid ); /* todo: load this from roms */
23942394
r4679r4680
24132413
24142414   gx894pwbba_init( machine, NULL );
24152415
2416   memory_install_readwrite32_handler( cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1f600000, 0x1f6000ff, 0, 0, gtrfrks_io_r, gtrfrks_io_w );
2416   memory_install_readwrite32_handler( cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1f600000, 0x1f6000ff, 0, 0, gtrfrks_io_r, gtrfrks_io_w );
24172417}
24182418
24192419/* ddr solo */
r4679r4680
27062706
27072707   gx894pwbba_init( machine, dmx_output_callback );
27082708
2709   memory_install_write32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1f600000, 0x1f6000ff, 0, 0, dmx_io_w );
2709   memory_install_write32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1f600000, 0x1f6000ff, 0, 0, dmx_io_w );
27102710}
27112711
27122712/* salary man champ */
r4679r4680
32933293   ROM_REGION32_LE( 0x080000, "user1", 0 )
32943294   SYS573_BIOS_A
32953295
3296   ROM_REGION( 0x080000, "cpu2", 0 ) /* memory card reader */
3297   ROM_LOAD( "885a01.bin",   0x000000, 0x080000, CRC(e22d093f) SHA1(927f62f63b5caa7899392decacd12fea0e6fdbea) )
3298
32963299   ROM_REGION( 0x0000224, "user2", 0 ) /* security cart eeprom */
32973300   ROM_LOAD( "ge885jaa.u1",  0x000000, 0x000224, BAD_DUMP CRC(cbc984c5) SHA1(6c0cd78a41000999b4ffbd9fb3707738b50a9b50) )
32983301
r4679r4680
40114014   DISK_IMAGE_READONLY( "910jaa02", 0, SHA1(70851c383e3876c4a697a99706fbaae2dafcb0e0) )
40124015ROM_END
40134016
4017ROM_START( dsfdr )
4018   ROM_REGION32_LE( 0x080000, "user1", 0 )
4019   SYS573_BIOS_A
4020
4021   ROM_REGION( 0x0000224, "user2", 0 ) /* install security cart eeprom */
4022   ROM_LOAD( "gea37ja.u1",   0x000000, 0x000224, BAD_DUMP CRC(5321055e) SHA1(d06b0dca9caba8249d71340469ad9083b02fd087) )
4023
4024   ROM_REGION( 0x0001014, "user8", 0 ) /* game security cart eeprom */
4025        ROM_LOAD( "gca37ja.u1",   0x000000, 0x001014, BAD_DUMP CRC(b6d9e7f9) SHA1(bc5f491de53a96d46745df09bc94e7853052296c) )
4026
4027   ROM_REGION( 0x1000000, "user3", 0 ) /* onboard flash */
4028   ROM_FILL( 0x0000000, 0x1000000, 0xff )
4029
4030   ROM_REGION( 0x000008, "user9", 0 ) /* install security cart id */
4031   ROM_LOAD( "gea37ja.u6",    0x000000, 0x000008, BAD_DUMP CRC(af09e43c) SHA1(d8372f2d6e0ae07061b496a2242a63e5bc2e54dc) )
4032
4033   ROM_REGION( 0x000008, "user10", 0 ) /* game security cart id */
4034   ROM_LOAD( "gca37ja.u6",   0x000000, 0x000008, BAD_DUMP CRC(ce84419e) SHA1(839e8ee080ecfc79021a06417d930e8b32dfc6a1) )
4035
4036   DISK_REGION( "cdrom0" )
4037   DISK_IMAGE_READONLY( "a37jaa02", 0, SHA1(c6a23b910e884aa0d4afc388dbc8379e0d09611a) )
4038ROM_END
4039
40144040ROM_START( dsftkd )
40154041   ROM_REGION32_LE( 0x080000, "user1", 0 )
40164042   SYS573_BIOS_A
r4679r4680
45744600GAME( 2000, ddr4mj,   ddr4m,    konami573, ddr,       ddrdigital, ROT0, "Konami", "Dance Dance Revolution 4th Mix (G*A33 VER. JAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.8 */
45754601GAME( 2000, ddr4ms,   sys573,   konami573, ddrsolo,   ddrsolo,    ROT0, "Konami", "Dance Dance Revolution 4th Mix Solo (G*A33 VER. ABA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.8 */
45764602GAME( 2000, ddr4msj,  ddr4ms,   konami573, ddrsolo,   ddrsolo,    ROT0, "Konami", "Dance Dance Revolution 4th Mix Solo (G*A33 VER. JBA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.8 */
4603GAME( 2000, dsfdr,    sys573,   konami573, ddr,       ddrdigital, ROT0, "Konami", "Dancing Stage Featuring Disney's Rave (GCA37JAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.8 */
45774604GAME( 2000, ddrusa,   sys573,   konami573, ddr,       ddrdigital, ROT0, "Konami", "Dance Dance Revolution USA (G*A44 VER. UAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.8 */
45784605GAME( 2000, ddr4mp,   sys573,   konami573, ddr,       ddrdigital, ROT0, "Konami", "Dance Dance Revolution 4th Mix Plus (G*A34 VER. JAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.9 */
45794606GAME( 2000, ddr4mps,  sys573,   konami573, ddrsolo,   ddrsolo,    ROT0, "Konami", "Dance Dance Revolution 4th Mix Plus Solo (G*A34 VER. JAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) /* BOOT VER 1.9 */
src/mame/drivers/atarig1.c
r4679r4680
5151
5252static void update_interrupts(running_machine *machine)
5353{
54   cpu_set_input_line(machine->cpu[0], 1, atarigen_video_int_state ? ASSERT_LINE : CLEAR_LINE);
55   cpu_set_input_line(machine->cpu[0], 2, atarigen_sound_int_state ? ASSERT_LINE : CLEAR_LINE);
54   cputag_set_input_line(machine, "maincpu", 1, atarigen_video_int_state ? ASSERT_LINE : CLEAR_LINE);
55   cputag_set_input_line(machine, "maincpu", 2, atarigen_sound_int_state ? ASSERT_LINE : CLEAR_LINE);
5656}
5757
5858
r4679r4680
193193static void pitfighb_cheap_slapstic_init(running_machine *machine)
194194{
195195   /* install a read handler */
196   bslapstic_base = memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x038000, 0x03ffff, 0, 0, pitfighb_cheap_slapstic_r);
196   bslapstic_base = memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x038000, 0x03ffff, 0, 0, pitfighb_cheap_slapstic_r);
197197
198198   /* allocate memory for a copy of bank 0 */
199   bslapstic_bank0 = auto_malloc(0x2000);
199   bslapstic_bank0 = auto_alloc_array(machine, UINT8, 0x2000);
200200   memcpy(bslapstic_bank0, bslapstic_base, 0x2000);
201201
202202   /* not primed by default */
r4679r4680
746746   ROM_LOAD( "136081-1027.15l",  0x000000, 0x10000, CRC(a59f381d) SHA1(b14e878340ad2adbf4f6d4fc331c58f62037c7c7) ) /* alphanumerics */
747747
748748   ROM_REGION16_BE( 0x200000, "gfx3", 0 )
749   /* missing 1st half on each rom */
750//  ROM_LOAD16_BYTE( "136081-1065.65r", 0x080001, 0x40000, CRC(3bcad459) SHA1(08084fb9761ee8216b809a42eeb73c6c42e3b081) )
751//  ROM_LOAD16_BYTE( "136081-1066.65n", 0x080000, 0x40000, CRC(d3a274ab) SHA1(9a791c5df45e317f7f88b384333d563b0ff566ea) )
752//  ROM_LOAD16_BYTE( "136081-1067.70r", 0x180001, 0x40000, CRC(6e05d0a5) SHA1(ac5aaac3644af8c3ad852ce7f8b3248910df2e3a) )
753//  ROM_LOAD16_BYTE( "136081-1068.70n", 0x180000, 0x40000, CRC(343ae455) SHA1(85d785f4e05ea74ca47df199c6b3f120028b9c37) )
749   ROM_LOAD16_BYTE( "136081-1065.65r", 0x000001, 0x80000, CRC(6d3a834f) SHA1(6e153fee39b6a932aeb101e69e3557355a637c76) ) /* Same data as other sets, but in four mask roms */
750   ROM_LOAD16_BYTE( "136081-1066.65n", 0x000000, 0x80000, CRC(0f7f5117) SHA1(e9d3d0db388a5f7d76de363018d92fa59bf8113a) )
751   ROM_LOAD16_BYTE( "136081-1067.70r", 0x100001, 0x80000, CRC(ca4f75a8) SHA1(f8b8b03df4ad043a48970a0f8a4c3b85c7140493) )
752   ROM_LOAD16_BYTE( "136081-1068.70n", 0x100000, 0x80000, CRC(85240517) SHA1(f3d5c0803a7958569d2f3b9c25c73d33defcabe7) )
754753
755   ROM_LOAD16_BYTE( "136081-1001.65r",  0x000001, 0x20000, CRC(3af31444) SHA1(91fc02786b82abdf12ebdbaacdd1f158f8ce6d06) )
756   ROM_LOAD16_BYTE( "136081-1002.65n",  0x000000, 0x20000, CRC(f1d76a4c) SHA1(ca769d2cdd096f4a54f7bcaa4840fc9ffaabf499) )
757   ROM_LOAD16_BYTE( "136081-1003.70r",  0x040001, 0x20000, CRC(28c41c2a) SHA1(75cd527f98c8475e3b880f53c5a355d6c3bd8766) )
758   ROM_LOAD16_BYTE( "136081-1004.70n",  0x040000, 0x20000, CRC(977744da) SHA1(10f388eef999f702863e2b1a02a188df9a0a6086) )
759   ROM_LOAD16_BYTE( "136081-1005.75r",  0x080001, 0x20000, CRC(ae59aef2) SHA1(44eda8a01016f6911b47df973b9427ff9f2ecef0) )
760   ROM_LOAD16_BYTE( "136081-1006.75n",  0x080000, 0x20000, CRC(b6ccd77e) SHA1(f09a829143abd972699f3e671d4a1362fd362b19) )
761   ROM_LOAD16_BYTE( "136081-1007.90r",  0x0c0001, 0x20000, CRC(ba33b0c0) SHA1(be09ba8796d3db2a859a2776336c1e9acbdaee95) )
762   ROM_LOAD16_BYTE( "136081-1008.90n",  0x0c0000, 0x20000, CRC(09bd047c) SHA1(c283d526c7b08ce06e3981d1fc69433ea0dae657) )
763   ROM_LOAD16_BYTE( "136081-1009.100r", 0x100001, 0x20000, CRC(ab85b00b) SHA1(6c60b9b58ff93ffdd1cffc49c3ea67400d56bf61) )
764   ROM_LOAD16_BYTE( "136081-1010.100n", 0x100000, 0x20000, CRC(eca94bdc) SHA1(c474dfc9dc4460cd2f40cc6012214e760b133c0d) )
765   ROM_LOAD16_BYTE( "136081-1011.115r", 0x140001, 0x20000, CRC(a86582fd) SHA1(8b557622c53c8ff388248ea54d3cc85b0d77cafb) )
766   ROM_LOAD16_BYTE( "136081-1012.115n", 0x140000, 0x20000, CRC(efd1152d) SHA1(77d1752b76b079c9e834a8b73e8601873d3afdbe) )
767   ROM_LOAD16_BYTE( "136081-1013.120r", 0x180001, 0x20000, CRC(a141379e) SHA1(d4c98b364495e19e2e7bee5431834f38ba20a514) )
768   ROM_LOAD16_BYTE( "136081-1014.120n", 0x180000, 0x20000, CRC(93bfcc15) SHA1(4d8f6c8c279533b2fc35f87c3eb5ed614cb03248) )
769   ROM_LOAD16_BYTE( "136081-1015.130r", 0x1c0001, 0x20000, CRC(9378ad0b) SHA1(909f9879f5b8fc3ed0622fd27d903ccb1f7a90c6) )
770   ROM_LOAD16_BYTE( "136081-1016.130n", 0x1c0000, 0x20000, CRC(19c3fbe0) SHA1(ba28f71edb04387f009afe39bfe0ffeff8fbf5e9) )
754   ROM_REGION( 0x40000, "adpcm", 0 )   /* 256k for ADPCM samples */
755   ROM_LOAD( "136081-1061.7k",  0x00000, 0x10000, CRC(5b0468c6) SHA1(c910344622386e6be336fe04bc0be758ac6c59db) )
756   ROM_LOAD( "136081-1062.7j",  0x10000, 0x10000, CRC(f73fe3cb) SHA1(547b5c4add617237c4c851751a27cda091fb7933) )
757   ROM_LOAD( "136081-1063.7e",  0x20000, 0x10000, CRC(aa93421d) SHA1(f319057dadcb77a489d0bcffb24e0afe88adc769) )
758   ROM_LOAD( "136081-1064.7d",  0x30000, 0x10000, CRC(33f045d5) SHA1(1fc7bedafeb3c1ffa0f115538cc300959c8d4601) )
771759
760   ROM_REGION( 0x0600, "proms", ROMREGION_DISPOSE )   /* microcode for growth renderer */
761   ROM_LOAD( "136081-1040.30s",  0x0000, 0x0200, CRC(9b0f8b95) SHA1(d03987fe2d50a9f7769c600885bd1c7e1dee0789) )
762   ROM_LOAD( "136081-1041.25s",  0x0200, 0x0200, CRC(f7ba6153) SHA1(d58792c9e9ea72d8f53f41ac1b420a86db6da3a3) )
763   ROM_LOAD( "136081-1042.20s",  0x0400, 0x0200, CRC(3572fe68) SHA1(ab34ff337c16cd4d568cd2bd6a5063f5ed97368f) )
764
765   ROM_REGION( 0x1200, "plds", ROMREGION_DISPOSE )
766   ROM_LOAD( "gal16v8a-136081-1043.15e",  0x0000, 0x0117, CRC(649d9c0d) SHA1(bba2f3cf4607946340de27157c799f6b84c48584) )
767   ROM_LOAD( "gal16v8a-136079-1045.40p",  0x0200, 0x0117, CRC(535c4d2e) SHA1(a428eef81723546566216e6af0db3baebda9a1f2) )
768   ROM_LOAD( "gal16v8a-136079-1046.65d",  0x0400, 0x0117, CRC(38b22b2c) SHA1(cf9051129a790f3427e1c6d74a5c66f16acbd4be) )
769   ROM_LOAD( "gal16v8a-136079-1047.40s",  0x0600, 0x0117, CRC(20839904) SHA1(134d1b379b7708ce33fbbf75e5c879dad971cd22) )
770   ROM_LOAD( "gal16v8a-136079-1048.125f", 0x0800, 0x0117, CRC(d16e8d6e) SHA1(61cc270d80cb34f63fc407e41b55f95d59717757) )
771   ROM_LOAD( "gal16v8a-136079-1049.120f", 0x0a00, 0x0117, CRC(68440ab1) SHA1(2f4eabac27d9a5778fcba0d9aa47460bcb153378) )
772   ROM_LOAD( "gal16v8a-136079-1050.115f", 0x0c00, 0x0117, CRC(20dc296a) SHA1(9179fca2efcdd0782bb15cbf1923670806755bc8) )
773   ROM_LOAD( "gal16v8a-136079-1051.105f", 0x0e00, 0x0117, CRC(45f0cb5f) SHA1(a7043231f68374871253da50cfd905519f283d9e) )
774   ROM_LOAD( "gal16v8a-136079-1052.30n",  0x1000, 0x0117, CRC(6b3d2669) SHA1(143178d9c36a87aa58034faea2e4d4038ae565e7) )
775ROM_END
776
777
778ROM_START( pitfigh5 )
779   ROM_REGION( 0x80000, "maincpu", 0 )   /* 8*64k for 68000 code */
780   ROM_LOAD16_BYTE( "136081-5028.05d", 0x00000, 0x10000, CRC(dd34b528) SHA1(806e01f3fd6a1335cdcfd2e41f04e9046fe433b5) )
781   ROM_LOAD16_BYTE( "136081-5029.05b", 0x00001, 0x10000, CRC(b0ee9a09) SHA1(df85aeae2c497fbb22732704c2d581a3c195fcfb) )
782   ROM_LOAD16_BYTE( "136081-5030.15d", 0x20000, 0x10000, CRC(6a094723) SHA1(a77046a8c5fab81cf0207122e494c32aab3b220d) )
783   ROM_LOAD16_BYTE( "136081-5031.15b", 0x20001, 0x10000, CRC(47400d94) SHA1(07ba297a9b3ae574bc501a24fb6e46db7a5b3de5) )
784
785   ROM_REGION( 0x14000, "jsa", 0 )   /* 64k for 6502 code */
786   ROM_LOAD( "136081-1060.1b", 0x10000, 0x4000, CRC(231d71d7) SHA1(24622eee5fe873ef81e1df2691bd7a1d3ea7ef6b) )
787   ROM_CONTINUE(               0x04000, 0xc000 )
788
789   ROM_REGION( 0x0a0000, "gfx1", ROMREGION_DISPOSE )
790   ROM_LOAD( "136081-1017.130m", 0x000000, 0x10000, CRC(ad3cfea5) SHA1(7b6fec131230e84ab87b7fc95f08989916f30e02) ) /* playfield, planes 0-3 odd */
791   ROM_LOAD( "136081-1018.120m", 0x010000, 0x10000, CRC(1a0f8bcf) SHA1(b965e73246db9507d2ad42dfcb033692b43b9b7a) )
792   ROM_LOAD( "136081-1021.90m",  0x040000, 0x10000, CRC(777efee3) SHA1(07591f11685c4c75c24c55fd242878253d32481b) ) /* playfield, planes 0-3 even */
793   ROM_LOAD( "136081-1022.75m",  0x050000, 0x10000, CRC(524319d0) SHA1(6f47a69d7d4e2a8f79b7470138e8b4edd6d0b2bb) )
794   ROM_LOAD( "136081-1025.45m",  0x080000, 0x10000, CRC(fc41691a) SHA1(4ef2f9093f20d27e1ba7d218b90ff6abb1f33646) ) /* playfield plane 4 */
795
796   ROM_REGION( 0x020000, "gfx2", ROMREGION_DISPOSE )
797   ROM_LOAD( "136081-1027.15l",  0x000000, 0x10000, CRC(a59f381d) SHA1(b14e878340ad2adbf4f6d4fc331c58f62037c7c7) ) /* alphanumerics */
798
799   ROM_REGION16_BE( 0x200000, "gfx3", 0 )
800   ROM_LOAD16_BYTE( "136081-1065.65r", 0x000001, 0x80000, CRC(6d3a834f) SHA1(6e153fee39b6a932aeb101e69e3557355a637c76) ) /* Same data as other sets, but in four mask roms */
801   ROM_LOAD16_BYTE( "136081-1066.65n", 0x000000, 0x80000, CRC(0f7f5117) SHA1(e9d3d0db388a5f7d76de363018d92fa59bf8113a) )
802   ROM_LOAD16_BYTE( "136081-1067.70r", 0x100001, 0x80000, CRC(ca4f75a8) SHA1(f8b8b03df4ad043a48970a0f8a4c3b85c7140493) )
803   ROM_LOAD16_BYTE( "136081-1068.70n", 0x100000, 0x80000, CRC(85240517) SHA1(f3d5c0803a7958569d2f3b9c25c73d33defcabe7) )
804
772805   ROM_REGION( 0x40000, "adpcm", 0 )   /* 256k for ADPCM samples */
773806   ROM_LOAD( "136081-1061.7k",  0x00000, 0x10000, CRC(5b0468c6) SHA1(c910344622386e6be336fe04bc0be758ac6c59db) )
774807   ROM_LOAD( "136081-1062.7j",  0x10000, 0x10000, CRC(f73fe3cb) SHA1(547b5c4add617237c4c851751a27cda091fb7933) )
r4679r4680
10521085      state_save_register_postload(machine, pitfighb_state_postload, NULL);
10531086   }
10541087   else if (slapstic != 0)
1055      atarigen_slapstic_init(machine->cpu[0], slapstic_base, 0, slapstic);
1088      atarigen_slapstic_init(cputag_get_cpu(machine, "maincpu"), slapstic_base, 0, slapstic);
10561089   atarijsa_init(machine, "IN0", 0x4000);
10571090
10581091   atarig1_pitfight = is_pitfight;
r4679r4680
10791112
10801113GAME( 1990, pitfight, 0,        atarig1, pitfight, pitfigh7, ROT0, "Atari Games", "Pit Fighter (rev 7)", GAME_SUPPORTS_SAVE )
10811114GAME( 1990, pitfigh6, pitfight, atarig1, pitfight, pitfighj, ROT0, "Atari Games", "Pit Fighter (rev 6)", GAME_SUPPORTS_SAVE )
1115GAME( 1990, pitfigh5, pitfight, atarig1, pitfight, pitfigh7, ROT0, "Atari Games", "Pit Fighter (rev 5)", GAME_SUPPORTS_SAVE )
10821116GAME( 1990, pitfigh4, pitfight, atarig1, pitfight, pitfight, ROT0, "Atari Games", "Pit Fighter (rev 4)", GAME_SUPPORTS_SAVE )
10831117GAME( 1990, pitfigh3, pitfight, atarig1, pitfight, pitfight, ROT0, "Atari Games", "Pit Fighter (rev 3)", GAME_SUPPORTS_SAVE )
10841118GAME( 1990, pitfighj, pitfight, atarig1, pitfighj, pitfighj, ROT0, "Atari Games", "Pit Fighter (Japan, 2 players)", GAME_SUPPORTS_SAVE )
src/mame/drivers/sbrkout.c
r4679r4680
117117
118118   /* if this is a rising edge of 16V, assert the CPU interrupt */
119119   if (scanline % 32 == 16)
120      cpu_set_input_line(machine->cpu[0], 0, ASSERT_LINE);
120      cputag_set_input_line(machine, "maincpu", 0, ASSERT_LINE);
121121
122122   /* update the DAC state */
123123   dac_data_w(devtag_get_device(machine, "dac"), (videoram[0x380 + 0x11] & (scanline >> 2)) ? 255 : 0);
r4679r4680
139139
140140static WRITE8_HANDLER( irq_ack_w )
141141{
142   cpu_set_input_line(space->machine->cpu[0], 0, CLEAR_LINE);
142   cputag_set_input_line(space->machine, "maincpu", 0, CLEAR_LINE);
143143}
144144
145145
r4679r4680
183183static void update_nmi_state(running_machine *machine)
184184{
185185   if ((pot_trigger[0] & ~pot_mask[0]) | (pot_trigger[1] & ~pot_mask[1]))
186      cpu_set_input_line(machine->cpu[0], INPUT_LINE_NMI, ASSERT_LINE);
186      cputag_set_input_line(machine, "maincpu", INPUT_LINE_NMI, ASSERT_LINE);
187187   else
188      cpu_set_input_line(machine->cpu[0], INPUT_LINE_NMI, CLEAR_LINE);
188      cputag_set_input_line(machine, "maincpu", INPUT_LINE_NMI, CLEAR_LINE);
189189}
190190
191191
src/mame/drivers/segae.h
r4679r4680
2323extern WRITE8_HANDLER( md_sms_vdp_data_w );
2424extern READ8_HANDLER( md_sms_vdp_ctrl_r );
2525extern WRITE8_HANDLER( md_sms_vdp_ctrl_w );
26extern WRITE8_HANDLER( sms_sn76496_w );
2726
src/mame/drivers/bladestl.c
r4679r4680
9191static WRITE8_HANDLER( bladestl_sh_irqtrigger_w )
9292{
9393   soundlatch_w(space, offset, data);
94   cpu_set_input_line(space->machine->cpu[1], M6809_IRQ_LINE, HOLD_LINE);
94   cputag_set_input_line(space->machine, "audiocpu", M6809_IRQ_LINE, HOLD_LINE);
9595   //logerror("(sound) write %02x\n", data);
9696}
9797
r4679r4680
127127   AM_RANGE(0x2f80, 0x2f9f) AM_READWRITE(K051733_r, K051733_w)   /* Protection: 051733 */
128128   AM_RANGE(0x2fc0, 0x2fc0) AM_WRITENOP            /* ??? */
129129   AM_RANGE(0x4000, 0x5fff) AM_RAM                     /* Work RAM */
130   AM_RANGE(0x6000, 0x7fff) AM_READWRITE(SMH_BANK1, SMH_RAM)   /* banked ROM */
130   AM_RANGE(0x6000, 0x7fff) AM_READWRITE(SMH_BANK(1), SMH_RAM)   /* banked ROM */
131131   AM_RANGE(0x8000, 0xffff) AM_ROM
132132ADDRESS_MAP_END
133133
src/mame/drivers/bwidow.c
r4679r4680
305305
306306static CUSTOM_INPUT( clock_r )
307307{
308   return (cpu_get_total_cycles(field->port->machine->cpu[0]) & 0x100) ? 1 : 0;
308   return (cputag_get_total_cycles(field->port->machine, "maincpu") & 0x100) ? 1 : 0;
309309}
310310
311311
r4679r4680
341341
342342static WRITE8_HANDLER( irq_ack_w )
343343{
344   cpu_set_input_line(space->machine->cpu[0], 0, CLEAR_LINE);
344   cputag_set_input_line(space->machine, "maincpu", 0, CLEAR_LINE);
345345}
346346
347347
src/mame/drivers/srumbler.c
r4679r4680
5353
5454static MACHINE_RESET( srumbler )
5555{
56   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
56   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
5757   /* initialize banked ROM pointers */
5858   srumbler_bankswitch_w(space,0,0);
5959}
r4679r4680
6666      cpu_set_input_line(device,M6809_FIRQ_LINE,HOLD_LINE);
6767}
6868
69
70
71static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 )
72   AM_RANGE(0x0000, 0x3fff) AM_READ(SMH_RAM)   /* RAM (of 1 sort or another) */
73   AM_RANGE(0x4008, 0x4008) AM_READ_PORT("SYSTEM")
74   AM_RANGE(0x4009, 0x4009) AM_READ_PORT("P1")
75   AM_RANGE(0x400a, 0x400a) AM_READ_PORT("P2")
76   AM_RANGE(0x400b, 0x400b) AM_READ_PORT("DSW1")
77   AM_RANGE(0x400c, 0x400c) AM_READ_PORT("DSW2")
78   AM_RANGE(0x5000, 0x5fff) AM_READ(SMH_BANK6)   /* Banked ROM */
79   AM_RANGE(0x6000, 0x6fff) AM_READ(SMH_BANK7)   /* Banked ROM */
80   AM_RANGE(0x7000, 0x7fff) AM_READ(SMH_BANK8)   /* Banked ROM */
81   AM_RANGE(0x8000, 0x8fff) AM_READ(SMH_BANK9)   /* Banked ROM */
82   AM_RANGE(0x9000, 0x9fff) AM_READ(SMH_BANK10)   /* Banked ROM */
83   AM_RANGE(0xa000, 0xafff) AM_READ(SMH_BANK11)   /* Banked ROM */
84   AM_RANGE(0xb000, 0xbfff) AM_READ(SMH_BANK12)   /* Banked ROM */
85   AM_RANGE(0xc000, 0xcfff) AM_READ(SMH_BANK13)   /* Banked ROM */
86   AM_RANGE(0xd000, 0xdfff) AM_READ(SMH_BANK14)   /* Banked ROM */
87   AM_RANGE(0xe000, 0xefff) AM_READ(SMH_BANK15)   /* Banked ROM */
88   AM_RANGE(0xf000, 0xffff) AM_READ(SMH_BANK16)   /* Banked ROM */
89ADDRESS_MAP_END
90
9169/*
9270The "scroll test" routine on the test screen appears to overflow and write
9371over the control registers (0x4000-0x4080) when it clears the screen.
r4679r4680
9876Ignore the warnings about writing to unmapped memory.
9977*/
10078
101static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 )
102   AM_RANGE(0x0000, 0x1dff) AM_WRITE(SMH_RAM)
103   AM_RANGE(0x1e00, 0x1fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
104   AM_RANGE(0x2000, 0x3fff) AM_WRITE(srumbler_background_w) AM_BASE(&srumbler_backgroundram)
105   AM_RANGE(0x4008, 0x4008) AM_WRITE(srumbler_bankswitch_w)
106   AM_RANGE(0x4009, 0x4009) AM_WRITE(srumbler_4009_w)
79static ADDRESS_MAP_START( srumbler_map, ADDRESS_SPACE_PROGRAM, 8 )
80   AM_RANGE(0x0000, 0x1dff) AM_RAM  /* RAM (of 1 sort or another) */
81   AM_RANGE(0x1e00, 0x1fff) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
82   AM_RANGE(0x2000, 0x3fff) AM_RAM_WRITE(srumbler_background_w) AM_BASE(&srumbler_backgroundram)
83   AM_RANGE(0x4008, 0x4008) AM_READ_PORT("SYSTEM") AM_WRITE(srumbler_bankswitch_w)
84   AM_RANGE(0x4009, 0x4009) AM_READ_PORT("P1") AM_WRITE(srumbler_4009_w)
85   AM_RANGE(0x400a, 0x400a) AM_READ_PORT("P2")
86   AM_RANGE(0x400b, 0x400b) AM_READ_PORT("DSW1")
87   AM_RANGE(0x400c, 0x400c) AM_READ_PORT("DSW2")
10788   AM_RANGE(0x400a, 0x400d) AM_WRITE(srumbler_scroll_w)
10889   AM_RANGE(0x400e, 0x400e) AM_WRITE(soundlatch_w)
109   AM_RANGE(0x5000, 0x5fff) AM_WRITE(srumbler_foreground_w) AM_BASE(&srumbler_foregroundram)
110   AM_RANGE(0x6000, 0x6fff) AM_WRITE(SMH_RAM) /* Video RAM 2 ??? (not used) */
90   AM_RANGE(0x5000, 0x5fff) AM_ROMBANK(6)   AM_WRITE(srumbler_foreground_w) AM_BASE(&srumbler_foregroundram) /* Banked ROM */
91   AM_RANGE(0x6000, 0x6fff) AM_ROMBANK(7)   /* Banked ROM */
92   AM_RANGE(0x6000, 0x6fff) AM_WRITENOP    /* Video RAM 2 ??? (not used) */
93   AM_RANGE(0x7000, 0x7fff) AM_ROMBANK(8)   /* Banked ROM */
11194   AM_RANGE(0x7000, 0x73ff) AM_WRITE(paletteram_RRRRGGGGBBBBxxxx_be_w) AM_BASE(&paletteram)
112   AM_RANGE(0x7400, 0xffff) AM_WRITE(SMH_ROM)
95   AM_RANGE(0x8000, 0x8fff) AM_ROMBANK(9)   /* Banked ROM */
96   AM_RANGE(0x9000, 0x9fff) AM_ROMBANK(10)   /* Banked ROM */
97   AM_RANGE(0xa000, 0xafff) AM_ROMBANK(11)   /* Banked ROM */
98   AM_RANGE(0xb000, 0xbfff) AM_ROMBANK(12)   /* Banked ROM */
99   AM_RANGE(0xc000, 0xcfff) AM_ROMBANK(13)   /* Banked ROM */
100   AM_RANGE(0xd000, 0xdfff) AM_ROMBANK(14)   /* Banked ROM */
101   AM_RANGE(0xe000, 0xefff) AM_ROMBANK(15)   /* Banked ROM */
102   AM_RANGE(0xf000, 0xffff) AM_ROMBANK(16)   /* Banked ROM */
113103ADDRESS_MAP_END
114104
115static ADDRESS_MAP_START( sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
116   AM_RANGE(0xe000, 0xe000) AM_READ(soundlatch_r)
117   AM_RANGE(0xc000, 0xc7ff) AM_READ(SMH_RAM)
118   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
119ADDRESS_MAP_END
120
121static ADDRESS_MAP_START( sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
122   AM_RANGE(0xc000, 0xc7ff) AM_WRITE(SMH_RAM)
105static ADDRESS_MAP_START( srumbler_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
106   AM_RANGE(0x0000, 0x7fff) AM_ROM
123107   AM_RANGE(0x8000, 0x8001) AM_DEVWRITE("ym1", ym2203_w)
124108   AM_RANGE(0xa000, 0xa001) AM_DEVWRITE("ym2", ym2203_w)
125   AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM)
109   AM_RANGE(0xc000, 0xc7ff) AM_RAM
110   AM_RANGE(0xe000, 0xe000) AM_READ(soundlatch_r)
126111ADDRESS_MAP_END
127112
128113
r4679r4680
257242
258243   /* basic machine hardware */
259244   MDRV_CPU_ADD("maincpu", M6809, 1500000)        /* 1.5 MHz (?) */
260   MDRV_CPU_PROGRAM_MAP(readmem,writemem)
245   MDRV_CPU_PROGRAM_MAP(srumbler_map,0)
261246   MDRV_CPU_VBLANK_INT_HACK(srumbler_interrupt,2)
262247
263248   MDRV_CPU_ADD("audiocpu", Z80, 3000000)        /* 3 MHz ??? */
264   MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem)
249   MDRV_CPU_PROGRAM_MAP(srumbler_sound_map,0)
265250   MDRV_CPU_VBLANK_INT_HACK(irq0_line_hold,4)
266251
267252   MDRV_MACHINE_RESET(srumbler)
src/mame/drivers/legionna.c
r4679r4680
957957   int len = 0x10000;
958958
959959   /*  rearrange gfx */
960   buffer = malloc_or_die(len);
960   buffer = alloc_array_or_die(UINT8, len);
961961   {
962962      int i;
963963      for (i = 0;i < len; i++)
src/mame/drivers/pbaction.c
r4679r4680
8686static WRITE8_HANDLER( pbaction_sh_command_w )
8787{
8888   soundlatch_w(space,offset,data);
89   cpu_set_input_line_and_vector(space->machine->cpu[1],0,HOLD_LINE,0x00);
89   cputag_set_input_line_and_vector(space->machine, "audiocpu", 0, HOLD_LINE, 0x00);
9090}
9191
9292
9393static UINT8 *work_ram;
9494
9595
96static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 )
97   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
98   AM_RANGE(0x8000, 0xbfff) AM_READ(SMH_ROM)
99   AM_RANGE(0xc000, 0xdfff) AM_READ(SMH_RAM)
100   AM_RANGE(0xe000, 0xe07f) AM_READ(SMH_RAM)
101   AM_RANGE(0xe400, 0xe5ff) AM_READ(SMH_RAM)
102   AM_RANGE(0xe600, 0xe600) AM_READ_PORT("P1")
96static ADDRESS_MAP_START( pbaction_map, ADDRESS_SPACE_PROGRAM, 8 )
97   AM_RANGE(0x0000, 0x7fff) AM_ROM
98   AM_RANGE(0x8000, 0xbfff) AM_ROM
99   AM_RANGE(0xc000, 0xcfff) AM_RAM AM_BASE(&work_ram)
100   AM_RANGE(0xd000, 0xd3ff) AM_RAM_WRITE(pbaction_videoram2_w) AM_BASE(&pbaction_videoram2)
101   AM_RANGE(0xd400, 0xd7ff) AM_RAM_WRITE(pbaction_colorram2_w) AM_BASE(&pbaction_colorram2)
102   AM_RANGE(0xd800, 0xdbff) AM_RAM_WRITE(pbaction_videoram_w) AM_BASE(&videoram)
103   AM_RANGE(0xdc00, 0xdfff) AM_RAM_WRITE(pbaction_colorram_w) AM_BASE(&colorram)
104   AM_RANGE(0xe000, 0xe07f) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
105   AM_RANGE(0xe400, 0xe5ff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_le_w) AM_BASE(&paletteram)
106   AM_RANGE(0xe600, 0xe600) AM_READ_PORT("P1") AM_WRITE(interrupt_enable_w)
103107   AM_RANGE(0xe601, 0xe601) AM_READ_PORT("P2")
104108   AM_RANGE(0xe602, 0xe602) AM_READ_PORT("SYSTEM")
105   AM_RANGE(0xe604, 0xe604) AM_READ_PORT("DSW1")
109   AM_RANGE(0xe604, 0xe604) AM_READ_PORT("DSW1") AM_WRITE(pbaction_flipscreen_w)
106110   AM_RANGE(0xe605, 0xe605) AM_READ_PORT("DSW2")
107   AM_RANGE(0xe606, 0xe606) AM_READNOP   /* ??? */
108ADDRESS_MAP_END
109
110static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 )
111   AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM)
112   AM_RANGE(0x8000, 0xbfff) AM_WRITE(SMH_ROM)
113   AM_RANGE(0xc000, 0xcfff) AM_WRITE(SMH_RAM) AM_BASE(&work_ram)
114   AM_RANGE(0xd000, 0xd3ff) AM_WRITE(pbaction_videoram2_w) AM_BASE(&pbaction_videoram2)
115   AM_RANGE(0xd400, 0xd7ff) AM_WRITE(pbaction_colorram2_w) AM_BASE(&pbaction_colorram2)
116   AM_RANGE(0xd800, 0xdbff) AM_WRITE(pbaction_videoram_w) AM_BASE(&videoram)
117   AM_RANGE(0xdc00, 0xdfff) AM_WRITE(pbaction_colorram_w) AM_BASE(&colorram)
118   AM_RANGE(0xe000, 0xe07f) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
119   AM_RANGE(0xe400, 0xe5ff) AM_WRITE(paletteram_xxxxBBBBGGGGRRRR_le_w) AM_BASE(&paletteram)
120   AM_RANGE(0xe600, 0xe600) AM_WRITE(interrupt_enable_w)
121   AM_RANGE(0xe604, 0xe604) AM_WRITE(pbaction_flipscreen_w)
122   AM_RANGE(0xe606, 0xe606) AM_WRITE(pbaction_scroll_w)
111   AM_RANGE(0xe606, 0xe606) AM_READNOP   /* ??? */ AM_WRITE(pbaction_scroll_w)
123112   AM_RANGE(0xe800, 0xe800) AM_WRITE(pbaction_sh_command_w)
124113ADDRESS_MAP_END
125114
126static ADDRESS_MAP_START( sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
127   AM_RANGE(0x0000, 0x1fff) AM_READ(SMH_ROM)
128   AM_RANGE(0x4000, 0x47ff) AM_READ(SMH_RAM)
115static ADDRESS_MAP_START( pbaction_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
116   AM_RANGE(0x0000, 0x1fff) AM_ROM
117   AM_RANGE(0x4000, 0x47ff) AM_RAM
129118   AM_RANGE(0x8000, 0x8000) AM_READ(soundlatch_r)
130ADDRESS_MAP_END
131
132static ADDRESS_MAP_START( sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
133   AM_RANGE(0x0000, 0x1fff) AM_WRITE(SMH_ROM)
134   AM_RANGE(0x4000, 0x47ff) AM_WRITE(SMH_RAM)
135119   AM_RANGE(0xffff, 0xffff) AM_WRITENOP   /* watchdog? */
136120ADDRESS_MAP_END
137121
138122
139static ADDRESS_MAP_START( sound_io_map, ADDRESS_SPACE_IO, 8 )
123static ADDRESS_MAP_START( pbaction_sound_io_map, ADDRESS_SPACE_IO, 8 )
140124   ADDRESS_MAP_GLOBAL_MASK(0xff)
141125   AM_RANGE(0x10, 0x11) AM_DEVWRITE("ay1", ay8910_address_data_w)
142126   AM_RANGE(0x20, 0x21) AM_DEVWRITE("ay2", ay8910_address_data_w)
r4679r4680
286270
287271   /* basic machine hardware */
288272   MDRV_CPU_ADD("maincpu", Z80, 4000000)   /* 4 MHz? */
289   MDRV_CPU_PROGRAM_MAP(readmem,writemem)
273   MDRV_CPU_PROGRAM_MAP(pbaction_map,0)
290274   MDRV_CPU_VBLANK_INT("screen", nmi_line_pulse)
291275
292276   MDRV_CPU_ADD("audiocpu", Z80, 3072000)
293   MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem)
294   MDRV_CPU_IO_MAP(sound_io_map,0)
277   MDRV_CPU_PROGRAM_MAP(pbaction_sound_map,0)
278   MDRV_CPU_IO_MAP(pbaction_sound_io_map,0)
295279   MDRV_CPU_VBLANK_INT_HACK(pbaction_interrupt,2)   /* ??? */
296280                           /* IRQs are caused by the main CPU */
297281
r4679r4680
437421   pbaction_decode(machine, "maincpu");
438422
439423   /* install a protection (?) workaround */
440   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xc000, 0xc000, 0, 0, pbactio3_prot_kludge_r );
424   memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xc000, 0xc000, 0, 0, pbactio3_prot_kludge_r );
441425}
442426
443427
src/mame/drivers/re900.c
r4679r4680
228228
229229static void vdp_interrupt (running_machine *machine, int state)
230230{
231   cpu_set_input_line(machine->cpu[0], INPUT_LINE_NMI, state ? ASSERT_LINE : CLEAR_LINE );
231   cputag_set_input_line(machine, "maincpu", INPUT_LINE_NMI, state ? ASSERT_LINE : CLEAR_LINE );
232232}
233233
234234
src/mame/drivers/funworld.c
r4679r4680
30613061      rom[i] = BITSWAP8(rom[i], 7, 6, 5, 4, 3, 0, 1, 2);
30623062   }
30633063
3064   buffer = malloc_or_die(size);
3064   buffer = alloc_array_or_die(UINT8, size);
30653065   memcpy(buffer, rom, size);
30663066
30673067
r4679r4680
30803080    *   Graphics ROM decryption   *
30813081    ******************************/
30823082
3083   buffer = malloc_or_die(sizeg);
3083   buffer = alloc_array_or_die(UINT8, sizeg);
30843084   memcpy(buffer, gfxrom, sizeg);
30853085
30863086   /* address lines swap: fedcba9876543210 -> fedcb67584a39012 */
r4679r4680
31053105      prom[i] = BITSWAP8(prom[i], 2, 3, 5, 4, 6, 7, 1, 0);
31063106   }
31073107
3108   buffer = malloc_or_die(sizep);
3108   buffer = alloc_array_or_die(UINT8, sizep);
31093109   memcpy(buffer, prom, sizep);
31103110
31113111
src/mame/drivers/overdriv.c
r4679r4680
77Notes:
88- Missing road (two unemulated K053250)
99- Visible area and relative placement of sprites and tiles is most likely wrong.
10- Test mode doesn't work well with 3 IRQ5 per frame, the ROM check doens't work
10- Test mode doesn't work well with 3 IRQ5 per frame, the ROM check doesn't work
1111  and the coin A setting isn't shown. It's OK with 1 IRQ5 per frame.
1212- Some flickering sprites, this might be an interrupt/timing issue
1313- The screen is cluttered with sprites which aren't supposed to be visible,
r4679r4680
2626#include "cpu/m6809/m6809.h"
2727#include "sound/2151intf.h"
2828#include "sound/k053260.h"
29
3029#include "overdriv.lh"
3130
32
3331VIDEO_START( overdriv );
3432VIDEO_UPDATE( overdriv );
3533
3634
37
38
3935static READ16_HANDLER( K051316_0_msb_r )
4036{
4137   return K051316_0_r(space,offset) << 8;
r4679r4680
159155static MACHINE_RESET( overdriv )
160156{
161157   /* start with cpu B halted */
162   cpu_set_input_line(machine->cpu[1], INPUT_LINE_RESET, ASSERT_LINE);
158   cputag_set_input_line(machine, "sub", INPUT_LINE_RESET, ASSERT_LINE);
163159}
164160
165161static WRITE16_HANDLER( cpuA_ctrl_w )
r4679r4680
167163   if (ACCESSING_BITS_0_7)
168164   {
169165      /* bit 0 probably enables the second 68000 */
170      cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_RESET, (data & 0x01) ? CLEAR_LINE : ASSERT_LINE);
166      cputag_set_input_line(space->machine, "maincpu", INPUT_LINE_RESET, (data & 0x01) ? CLEAR_LINE : ASSERT_LINE);
171167
172168      /* bit 1 is clear during service mode - function unknown */
173169
174      set_led_status(0,data & 0x08);
175      coin_counter_w(0,data & 0x10);
176      coin_counter_w(1,data & 0x20);
170      set_led_status(0, data & 0x08);
171      coin_counter_w(0, data & 0x10);
172      coin_counter_w(1, data & 0x20);
177173
178174//logerror("%06x: write %04x to cpuA_ctrl_w\n",cpu_get_pc(space->cpu),data);
179175   }
r4679r4680
203199}
204200
205201
206static UINT16 *sharedram;
207
208static READ16_HANDLER( sharedram_r )
209{
210   return sharedram[offset];
211}
212
213static WRITE16_HANDLER( sharedram_w )
214{
215   COMBINE_DATA(&sharedram[offset]);
216}
217
218
219
220202static READ8_DEVICE_HANDLER( overdriv_sound_r )
221203{
222204   return k053260_r(device,2 + offset);
r4679r4680
224206
225207static WRITE16_HANDLER( overdriv_soundirq_w )
226208{
227   cpu_set_input_line(space->machine->cpu[2],M6809_IRQ_LINE,HOLD_LINE);
209   cputag_set_input_line(space->machine, "audiocpu", M6809_IRQ_LINE, HOLD_LINE);
228210}
229211
230212static WRITE16_HANDLER( overdriv_cpuB_irq5_w )
231213{
232   cpu_set_input_line(space->machine->cpu[1],5,HOLD_LINE);
214   cputag_set_input_line(space->machine, "audiocpu", 5, HOLD_LINE);
233215}
234216
235217static WRITE16_HANDLER( overdriv_cpuB_irq6_w )
236218{
237   cpu_set_input_line(space->machine->cpu[1],6,HOLD_LINE);
219   cputag_set_input_line(space->machine, "audiocpu", 6, HOLD_LINE);
238220}
239221
240222
241223
242224
243static ADDRESS_MAP_START( overdriv_readmem, ADDRESS_SPACE_PROGRAM, 16 )
244   AM_RANGE(0x000000, 0x03ffff) AM_READ(SMH_ROM)
245   AM_RANGE(0x040000, 0x043fff) AM_READ(SMH_RAM)
246   AM_RANGE(0x080000, 0x080fff) AM_READ(SMH_RAM)
225static ADDRESS_MAP_START( overdriv_master_map, ADDRESS_SPACE_PROGRAM, 16 )
226   AM_RANGE(0x000000, 0x03ffff) AM_ROM
227   AM_RANGE(0x040000, 0x043fff) AM_RAM               /* work RAM */
228   AM_RANGE(0x080000, 0x080fff) AM_RAM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE(&paletteram16)
247229   AM_RANGE(0x0c0000, 0x0c0001) AM_READ_PORT("INPUTS")
248230   AM_RANGE(0x0c0002, 0x0c0003) AM_READ_PORT("SYSTEM")
249   AM_RANGE(0x180000, 0x180001) AM_READ_PORT("PADDLE")
250   AM_RANGE(0x1d8000, 0x1d8003) AM_DEVREAD8("konami1", overdriv_sound_r, 0x00ff)   /* K053260 */
251   AM_RANGE(0x1e0000, 0x1e0003) AM_DEVREAD8("konami2", overdriv_sound_r, 0x00ff)   /* K053260 */
252   AM_RANGE(0x200000, 0x203fff) AM_READ(sharedram_r)
253   AM_RANGE(0x210000, 0x210fff) AM_READ(K051316_0_msb_r)
254   AM_RANGE(0x218000, 0x218fff) AM_READ(K051316_1_msb_r)
255   AM_RANGE(0x220000, 0x220fff) AM_READ(K051316_rom_0_msb_r)
256   AM_RANGE(0x228000, 0x228fff) AM_READ(K051316_rom_1_msb_r)
257ADDRESS_MAP_END
258
259static ADDRESS_MAP_START( overdriv_writemem, ADDRESS_SPACE_PROGRAM, 16 )
260   AM_RANGE(0x000000, 0x03ffff) AM_WRITE(SMH_ROM)
261   AM_RANGE(0x040000, 0x043fff) AM_WRITE(SMH_RAM)   /* work RAM */
262   AM_RANGE(0x080000, 0x080fff) AM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE(&paletteram16)
263   AM_RANGE(0x0e0000, 0x0e0001) AM_WRITENOP   /* unknown (always 0x30) */
264   AM_RANGE(0x100000, 0x10001f) AM_WRITENOP   /* 053252? (LSB) */
231   AM_RANGE(0x0e0000, 0x0e0001) AM_WRITENOP         /* unknown (always 0x30) */
232   AM_RANGE(0x100000, 0x10001f) AM_WRITENOP         /* 053252? (LSB) */
265233   AM_RANGE(0x140000, 0x140001) AM_WRITE(watchdog_reset16_w)
234   AM_RANGE(0x180000, 0x180001) AM_READ_PORT("PADDLE")
266235   AM_RANGE(0x1c0000, 0x1c001f) AM_WRITE(K051316_ctrl_0_msb_w)
267236   AM_RANGE(0x1c8000, 0x1c801f) AM_WRITE(K051316_ctrl_1_msb_w)
268237   AM_RANGE(0x1d0000, 0x1d001f) AM_WRITE(K053251_msb_w)
269   AM_RANGE(0x1d8000, 0x1d8003) AM_DEVWRITE8("konami1", k053260_w, 0x00ff)
270   AM_RANGE(0x1e0000, 0x1e0003) AM_DEVWRITE8("konami2", k053260_w, 0x00ff)
238   AM_RANGE(0x1d8000, 0x1d8003) AM_DEVREADWRITE8("konami1", overdriv_sound_r, k053260_w, 0x00ff)   /* K053260 */
239   AM_RANGE(0x1e0000, 0x1e0003) AM_DEVREADWRITE8("konami2", overdriv_sound_r, k053260_w, 0x00ff)   /* K053260 */
271240   AM_RANGE(0x1e8000, 0x1e8001) AM_WRITE(overdriv_soundirq_w)
272241   AM_RANGE(0x1f0000, 0x1f0001) AM_WRITE(cpuA_ctrl_w)   /* halt cpu B, coin counter, start lamp, other? */
273242   AM_RANGE(0x1f8000, 0x1f8001) AM_WRITE(eeprom_w)
274   AM_RANGE(0x200000, 0x203fff) AM_WRITE(sharedram_w) AM_BASE(&sharedram)
275   AM_RANGE(0x210000, 0x210fff) AM_WRITE(K051316_0_msb_w)
276   AM_RANGE(0x218000, 0x218fff) AM_WRITE(K051316_1_msb_w)
243   AM_RANGE(0x200000, 0x203fff) AM_RAM AM_SHARE(1)
244   AM_RANGE(0x210000, 0x210fff) AM_READWRITE(K051316_0_msb_r,K051316_0_msb_w)
245   AM_RANGE(0x218000, 0x218fff) AM_READWRITE(K051316_1_msb_r,K051316_1_msb_w)
246   AM_RANGE(0x220000, 0x220fff) AM_READ(K051316_rom_0_msb_r)
247   AM_RANGE(0x228000, 0x228fff) AM_READ(K051316_rom_1_msb_r)
277248   AM_RANGE(0x230000, 0x230001) AM_WRITE(overdriv_cpuB_irq6_w)
278249   AM_RANGE(0x238000, 0x238001) AM_WRITE(overdriv_cpuB_irq5_w)
279250ADDRESS_MAP_END
280251
281
282static ADDRESS_MAP_START( overdriv_readmem2, ADDRESS_SPACE_PROGRAM, 16 )
283   AM_RANGE(0x000000, 0x03ffff) AM_READ(SMH_ROM)
284   AM_RANGE(0x080000, 0x083fff) AM_READ(SMH_RAM)
285   AM_RANGE(0x0c0000, 0x0c1fff) AM_READ(SMH_RAM)
286   AM_RANGE(0x100000, 0x10000f) AM_READNOP   // K053250 #0
287   AM_RANGE(0x108000, 0x10800f) AM_READNOP   // K053250 #1
288   AM_RANGE(0x118000, 0x118fff) AM_READ(K053247_word_r)
252static ADDRESS_MAP_START( overdriv_slave_map, ADDRESS_SPACE_PROGRAM, 16 )
253   AM_RANGE(0x000000, 0x03ffff) AM_ROM
254   AM_RANGE(0x080000, 0x083fff) AM_RAM /* work RAM */
255   AM_RANGE(0x0c0000, 0x0c1fff) AM_RAM
256   AM_RANGE(0x100000, 0x10000f) AM_NOP   // K053250 #0
257   AM_RANGE(0x108000, 0x10800f) AM_NOP   // K053250 #1
258   AM_RANGE(0x118000, 0x118fff) AM_READWRITE(K053247_word_r,K053247_word_w)
289259   AM_RANGE(0x120000, 0x120001) AM_READ(K053246_word_r)
290   AM_RANGE(0x128000, 0x128001) AM_READ(cpuB_ctrl_r)
291   AM_RANGE(0x200000, 0x203fff) AM_READ(sharedram_r)
292   AM_RANGE(0x208000, 0x20bfff) AM_READ(SMH_RAM)
293
260   AM_RANGE(0x128000, 0x128001) AM_READWRITE(cpuB_ctrl_r,cpuB_ctrl_w)    /* enable K053247 ROM reading, plus something else */
261   AM_RANGE(0x130000, 0x130007) AM_WRITE(K053246_word_w)
262   AM_RANGE(0x200000, 0x203fff) AM_RAM AM_SHARE(1)
263   AM_RANGE(0x208000, 0x20bfff) AM_RAM
294264   AM_RANGE(0x218000, 0x219fff) AM_READNOP   // K053250 #0 gfx ROM read (LSB)
295265   AM_RANGE(0x220000, 0x221fff) AM_READNOP   // K053250 #1 gfx ROM read (LSB)
296266ADDRESS_MAP_END
297267
298static ADDRESS_MAP_START( overdriv_writemem2, ADDRESS_SPACE_PROGRAM, 16 )
299   AM_RANGE(0x000000, 0x03ffff) AM_WRITE(SMH_ROM)
300   AM_RANGE(0x080000, 0x083fff) AM_WRITE(SMH_RAM)   /* work RAM */
301   AM_RANGE(0x0c0000, 0x0c1fff) AM_WRITE(SMH_RAM)
302   AM_RANGE(0x100000, 0x10000f) AM_WRITENOP   // K053250 #0
303   AM_RANGE(0x108000, 0x10800f) AM_WRITENOP   // K053250 #1
304   AM_RANGE(0x118000, 0x118fff) AM_WRITE(K053247_word_w)
305   AM_RANGE(0x128000, 0x128001) AM_WRITE(cpuB_ctrl_w)   /* enable K053247 ROM reading, plus something else */
306   AM_RANGE(0x130000, 0x130007) AM_WRITE(K053246_word_w)
307   AM_RANGE(0x200000, 0x203fff) AM_WRITE(sharedram_w)
308   AM_RANGE(0x208000, 0x20bfff) AM_WRITE(SMH_RAM)
268static ADDRESS_MAP_START( overdriv_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
269   AM_RANGE(0x0200, 0x0201) AM_DEVREADWRITE("ym", ym2151_r,ym2151_w)
270   AM_RANGE(0x0400, 0x042f) AM_DEVREADWRITE("konami1", k053260_r,k053260_w)
271   AM_RANGE(0x0600, 0x062f) AM_DEVREADWRITE("konami2", k053260_r,k053260_w)
272   AM_RANGE(0x0800, 0x0fff) AM_RAM
273   AM_RANGE(0x1000, 0xffff) AM_ROM
309274ADDRESS_MAP_END
310275
311276
312static ADDRESS_MAP_START( overdriv_s_readmem, ADDRESS_SPACE_PROGRAM, 8 )
313   AM_RANGE(0x0200, 0x0201) AM_DEVREAD("ym", ym2151_r)
314   AM_RANGE(0x0400, 0x042f) AM_DEVREAD("konami1", k053260_r)
315   AM_RANGE(0x0600, 0x062f) AM_DEVREAD("konami2", k053260_r)
316   AM_RANGE(0x0800, 0x0fff) AM_READ(SMH_RAM)
317   AM_RANGE(0x1000, 0xffff) AM_READ(SMH_ROM)
318ADDRESS_MAP_END
319
320static ADDRESS_MAP_START( overdriv_s_writemem, ADDRESS_SPACE_PROGRAM, 8 )
321   AM_RANGE(0x0200, 0x0201) AM_DEVWRITE("ym", ym2151_w)
322   AM_RANGE(0x0400, 0x042f) AM_DEVWRITE("konami1", k053260_w)
323   AM_RANGE(0x0600, 0x062f) AM_DEVWRITE("konami2", k053260_w)
324   AM_RANGE(0x0800, 0x0fff) AM_WRITE(SMH_RAM)
325   AM_RANGE(0x1000, 0xffff) AM_WRITE(SMH_ROM)
326ADDRESS_MAP_END
327
328277/* Both IPT_START1 assignments are needed. The game will reset during */
329278/* the "continue" sequence if the assignment on the first port        */
330279/* is missing.                                                        */
r4679r4680
385334
386335   /* basic machine hardware */
387336   MDRV_CPU_ADD("maincpu", M68000,24000000/2)   /* 12 MHz */
388   MDRV_CPU_PROGRAM_MAP(overdriv_readmem,overdriv_writemem)
337   MDRV_CPU_PROGRAM_MAP(overdriv_master_map,0)
389338   MDRV_CPU_VBLANK_INT_HACK(cpuA_interrupt,4)   /* ??? IRQ 4 is vblank, IRQ 5 of unknown origin */
390339
391340   MDRV_CPU_ADD("sub", M68000,24000000/2)   /* 12 MHz */
392   MDRV_CPU_PROGRAM_MAP(overdriv_readmem2,overdriv_writemem2)
341   MDRV_CPU_PROGRAM_MAP(overdriv_slave_map,0)
393342   MDRV_CPU_VBLANK_INT("screen", cpuB_interrupt)   /* IRQ 5 and 6 are generated by the main CPU. */
394343                        /* IRQ 5 is used only in test mode, to request the checksums of the gfx ROMs. */
395344   MDRV_CPU_ADD("audiocpu", M6809,3579545/2)   /* 1.789 MHz?? This might be the right speed, but ROM testing */
396345                  /* takes a little too much (the counter wraps from 0000 to 9999). */
397346                  /* This might just mean that the video refresh rate is less than */
398347                  /* 60 fps, that's how I fixed it for now. */
399   MDRV_CPU_PROGRAM_MAP(overdriv_s_readmem,overdriv_s_writemem)
348   MDRV_CPU_PROGRAM_MAP(overdriv_sound_map,0)
400349
401350   MDRV_QUANTUM_TIME(HZ(12000))
402351
r4679r4680
423372   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
424373
425374   MDRV_SOUND_ADD("ym", YM2151, 3579545)
426   MDRV_SOUND_ROUTE(0, "lspeaker", 1.0)
427   MDRV_SOUND_ROUTE(1, "rspeaker", 1.0)
375   MDRV_SOUND_ROUTE(0, "lspeaker", 0.5)
376   MDRV_SOUND_ROUTE(1, "rspeaker", 0.5)
428377
429378   MDRV_SOUND_ADD("konami1", K053260, 3579545)
430379   MDRV_SOUND_CONFIG(k053260_config)
431   MDRV_SOUND_ROUTE(0, "lspeaker", 0.70)
432   MDRV_SOUND_ROUTE(1, "rspeaker", 0.70)
380   MDRV_SOUND_ROUTE(0, "lspeaker", 0.35)
381   MDRV_SOUND_ROUTE(1, "rspeaker", 0.35)
433382
434383   MDRV_SOUND_ADD("konami2", K053260, 3579545)
435384   MDRV_SOUND_CONFIG(k053260_config)
436   MDRV_SOUND_ROUTE(0, "lspeaker", 0.70)
437   MDRV_SOUND_ROUTE(1, "rspeaker", 0.70)
385   MDRV_SOUND_ROUTE(0, "lspeaker", 0.35)
386   MDRV_SOUND_ROUTE(1, "rspeaker", 0.35)
438387MACHINE_DRIVER_END
439388
440389
r4679r4680
484433ROM_END
485434
486435
487
488436static DRIVER_INIT( overdriv )
489437{
490438   konami_rom_deinterleave_4(machine, "gfx1");
491439}
492440
493441
494
495GAMEL( 1990, overdriv, 0, overdriv, overdriv, overdriv, ROT90, "Konami", "Over Drive", GAME_IMPERFECT_GRAPHICS, layout_overdriv )
442GAMEL( 1990, overdriv, 0, overdriv, overdriv, overdriv, ROT90, "Konami", "Over Drive", GAME_IMPERFECT_GRAPHICS | GAME_NOT_WORKING, layout_overdriv )
src/mame/drivers/thunderx.c
r4679r4680
3636
3737static TIMER_CALLBACK( thunderx_firq_callback )
3838{
39   cpu_set_input_line(machine->cpu[0], KONAMI_FIRQ_LINE, HOLD_LINE);
39   cputag_set_input_line(machine, "maincpu", KONAMI_FIRQ_LINE, HOLD_LINE);
4040}
4141
4242
r4679r4680
356356
357357static WRITE8_HANDLER( thunderx_sh_irqtrigger_w )
358358{
359   cpu_set_input_line_and_vector(space->machine->cpu[1],0,HOLD_LINE,0xff);
359   cputag_set_input_line_and_vector(space->machine, "audiocpu", 0, HOLD_LINE, 0xff);
360360}
361361
362362static WRITE8_DEVICE_HANDLER( scontra_snd_bankswitch_w )
r4679r4680
909909{
910910   UINT8 *RAM = memory_region(machine, "maincpu");
911911
912   konami_configure_set_lines(machine->cpu[0], thunderx_banking);
913   memory_set_bankptr(machine,  1, &RAM[0x10000] ); /* init the default bank */
912   konami_configure_set_lines(cputag_get_cpu(machine, "maincpu"), thunderx_banking);
913   memory_set_bankptr(machine, 1, &RAM[0x10000] ); /* init the default bank */
914914
915915   paletteram = &RAM[0x28000];
916916   pmcram = &RAM[0x28800];
src/mame/drivers/spcforce.c
r4679r4680
5353
5454static READ8_HANDLER( spcforce_SN76496_select_r )
5555{
56   return spcforce_SN76496_select;
56   if (~spcforce_SN76496_select & 0x40) return sn76496_ready_r(devtag_get_device(space->machine, "sn1"), 0 );
57   if (~spcforce_SN76496_select & 0x20) return sn76496_ready_r(devtag_get_device(space->machine, "sn2"), 0 );
58   if (~spcforce_SN76496_select & 0x10) return sn76496_ready_r(devtag_get_device(space->machine, "sn3"), 0 );
59
60   return 0;
5761}
5862
5963static WRITE8_HANDLER( spcforce_SN76496_select_w )
r4679r4680
7478
7579static WRITE8_HANDLER( spcforce_soundtrigger_w )
7680{
77   cpu_set_input_line(space->machine->cpu[1], 0, (~data & 0x08) ? ASSERT_LINE : CLEAR_LINE);
81   cputag_set_input_line(space->machine, "audiocpu", 0, (~data & 0x08) ? ASSERT_LINE : CLEAR_LINE);
7882}
7983
8084
81static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 )
82   AM_RANGE(0x0000, 0x3fff) AM_READ(SMH_ROM)
83   AM_RANGE(0x4000, 0x43ff) AM_READ(SMH_RAM)
84   AM_RANGE(0x7000, 0x7000) AM_READ_PORT("DSW")
85   AM_RANGE(0x7001, 0x7001) AM_READ_PORT("P1")
85static ADDRESS_MAP_START( spcforce_map, ADDRESS_SPACE_PROGRAM, 8 )
86   AM_RANGE(0x0000, 0x3fff) AM_ROM
87   AM_RANGE(0x4000, 0x43ff) AM_RAM
88   AM_RANGE(0x7000, 0x7000) AM_READ_PORT("DSW") AM_WRITE(soundlatch_w)
89   AM_RANGE(0x7001, 0x7001) AM_READ_PORT("P1") AM_WRITE(spcforce_soundtrigger_w)
8690   AM_RANGE(0x7002, 0x7002) AM_READ_PORT("P2")
87   AM_RANGE(0x8000, 0x83ff) AM_READ(SMH_RAM)
88   AM_RANGE(0x9000, 0x93ff) AM_READ(SMH_RAM)
89   AM_RANGE(0xa000, 0xa3ff) AM_READ(SMH_RAM)
90ADDRESS_MAP_END
91
92static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 )
93   AM_RANGE(0x0000, 0x3fff) AM_WRITE(SMH_ROM)
94   AM_RANGE(0x4000, 0x43ff) AM_WRITE(SMH_RAM)
95   AM_RANGE(0x7000, 0x7000) AM_WRITE(soundlatch_w)
96   AM_RANGE(0x7001, 0x7001) AM_WRITE(spcforce_soundtrigger_w)
9791   AM_RANGE(0x700b, 0x700b) AM_WRITE(spcforce_flip_screen_w)
9892   AM_RANGE(0x700e, 0x700e) AM_WRITE(interrupt_enable_w)
9993   AM_RANGE(0x700f, 0x700f) AM_WRITENOP
100   AM_RANGE(0x8000, 0x83ff) AM_WRITE(SMH_RAM) AM_BASE(&videoram) AM_SIZE(&videoram_size)
101   AM_RANGE(0x9000, 0x93ff) AM_WRITE(SMH_RAM) AM_BASE(&colorram)
102   AM_RANGE(0xa000, 0xa3ff) AM_WRITE(SMH_RAM) AM_BASE(&spcforce_scrollram)
94   AM_RANGE(0x8000, 0x83ff) AM_RAM AM_BASE(&videoram) AM_SIZE(&videoram_size)
95   AM_RANGE(0x9000, 0x93ff) AM_RAM AM_BASE(&colorram)
96   AM_RANGE(0xa000, 0xa3ff) AM_RAM AM_BASE(&spcforce_scrollram)
10397ADDRESS_MAP_END
10498
105static ADDRESS_MAP_START( sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
106   AM_RANGE(0x0000, 0x07ff) AM_READ(SMH_ROM)
99static ADDRESS_MAP_START( spcforce_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
100   AM_RANGE(0x0000, 0x07ff) AM_ROM
107101ADDRESS_MAP_END
108102
109static ADDRESS_MAP_START( sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
110   AM_RANGE(0x0000, 0x07ff) AM_WRITE(SMH_ROM)
111ADDRESS_MAP_END
112
113static ADDRESS_MAP_START( sound_io_map, ADDRESS_SPACE_IO, 8 )
103static ADDRESS_MAP_START( spcforce_sound_io_map, ADDRESS_SPACE_IO, 8 )
114104   AM_RANGE(MCS48_PORT_BUS, MCS48_PORT_BUS) AM_READ(soundlatch_r)
115105   AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_WRITE(spcforce_SN76496_latch_w)
116106   AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_READWRITE(spcforce_SN76496_select_r, spcforce_SN76496_select_w)
r4679r4680
255245   /* basic machine hardware */
256246   /* FIXME: The 8085A had a max clock of 6MHz, internally divided by 2! */
257247   MDRV_CPU_ADD("maincpu", 8085A, 8000000 * 2)        /* 4.00 MHz??? */
258   MDRV_CPU_PROGRAM_MAP(readmem,writemem)
248   MDRV_CPU_PROGRAM_MAP(spcforce_map,0)
259249   MDRV_CPU_VBLANK_INT("screen", irq3_line_pulse)
260250
261251   MDRV_CPU_ADD("audiocpu", I8035, 6144000)      /* divisor ??? */
262   MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem)
263   MDRV_CPU_IO_MAP(sound_io_map,0)
252   MDRV_CPU_PROGRAM_MAP(spcforce_sound_map,0)
253   MDRV_CPU_IO_MAP(spcforce_sound_io_map,0)
264254
265255   /* video hardware */
266256   MDRV_SCREEN_ADD("screen", RASTER)
r4679r4680
368358GAME( 1980, spcforce, 0,        spcforce, spcforce, 0, ROT270, "Venture Line", "Space Force (set 1)", GAME_IMPERFECT_COLORS )
369359GAME( 19??, spcforc2, spcforce, spcforce, spcforc2, 0, ROT270, "Elcon (bootleg?)", "Space Force (set 2)", GAME_IMPERFECT_COLORS )
370360GAME( 1981, meteor,   spcforce, spcforce, spcforc2, 0, ROT270, "Venture Line", "Meteoroids", GAME_IMPERFECT_COLORS )
371
src/mame/drivers/nmg5.c
r4679r4680
247247   if (ACCESSING_BITS_0_7)
248248   {
249249      soundlatch_w(space,0,data & 0xff);
250      cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_NMI, PULSE_LINE);
250      cputag_set_input_line(space->machine, "soundcpu", INPUT_LINE_NMI, PULSE_LINE);
251251   }
252252}
253253
r4679r4680
959959
960960static void soundirq(const device_config *device, int state)
961961{
962   cpu_set_input_line(device->machine->cpu[1], 0, state);
962   cputag_set_input_line(device->machine, "soundcpu", 0, state);
963963}
964964
965965static const ym3812_interface ym3812_intf =
src/mame/drivers/mario.c
r4679r4680
128128
129129static READ8_DEVICE_HANDLER(mario_dma_read_byte)
130130{
131   const address_space *space = cpu_get_address_space(device->machine->cpu[0], ADDRESS_SPACE_PROGRAM);
131   const address_space *space = cputag_get_address_space(device->machine, "maincpu", ADDRESS_SPACE_PROGRAM);
132132   return memory_read_byte(space, offset);
133133}
134134
135135static WRITE8_DEVICE_HANDLER(mario_dma_write_byte)
136136{
137   const address_space *space = cpu_get_address_space(device->machine->cpu[0], ADDRESS_SPACE_PROGRAM);
137   const address_space *space = cputag_get_address_space(device->machine, "maincpu", ADDRESS_SPACE_PROGRAM);
138138   memory_write_byte(space, offset, data);
139139}
140140
src/mame/drivers/xmen.c
r4679r4680
9595   if (ACCESSING_BITS_0_7)
9696   {
9797      /* bit 0 = coin counter */
98      coin_counter_w(0,data & 0x01);
98      coin_counter_w(0, data & 0x01);
9999
100100      /* bit 2 is data */
101101      /* bit 3 is clock (active high) */
r4679r4680
115115
116116static READ16_HANDLER( sound_status_r )
117117{
118   return soundlatch2_r(space,0);
118   return soundlatch2_r(space, 0);
119119}
120120
121121static WRITE16_HANDLER( sound_cmd_w )
122122{
123   if (ACCESSING_BITS_0_7) {
123   if (ACCESSING_BITS_0_7)
124   {
124125      data &= 0xff;
125126      soundlatch_w(space, 0, data);
126127   }
r4679r4680
128129
129130static WRITE16_HANDLER( sound_irq_w )
130131{
131   cpu_set_input_line(space->machine->cpu[1], 0, HOLD_LINE);
132   cputag_set_input_line(space->machine, "audiocpu", 0, HOLD_LINE);
132133}
133134
134135//int xmen_irqenabled;
135136
136137static WRITE16_HANDLER( xmen_18fa00_w )
137138{
138   if(ACCESSING_BITS_0_7) {
139   if(ACCESSING_BITS_0_7)
140   {
139141      /* bit 2 is interrupt enable */
140      interrupt_enable_w(space,0,data & 0x04);
142      interrupt_enable_w(space, 0, data & 0x04);
141143   //  xmen_irqenabled = data;
142144   }
143145}
r4679r4680
179181
180182static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 )
181183   AM_RANGE(0x0000, 0x7fff) AM_ROM
182   AM_RANGE(0x8000, 0xbfff) AM_READ(SMH_BANK4)
184   AM_RANGE(0x8000, 0xbfff) AM_READ(SMH_BANK(4))
183185   AM_RANGE(0x8000, 0xbfff) AM_WRITE(SMH_ROM)
184186   AM_RANGE(0xc000, 0xdfff) AM_RAM
185187   AM_RANGE(0xe000, 0xe22f) AM_DEVREADWRITE("konami", k054539_r, k054539_w)
r4679r4680
250252
251253static INPUT_PORTS_START( xmen )
252254   PORT_START("P1_P3")
253   KONAMI16_LSB(1, IPT_BUTTON3, IPT_COIN1 )
254   KONAMI16_MSB(3, IPT_BUTTON3, IPT_COIN3 )
255   KONAMI16_LSB_UDLR(1, IPT_BUTTON3, IPT_COIN1 )
256   KONAMI16_MSB_UDLR(3, IPT_BUTTON3, IPT_COIN3 )
255257
256258   PORT_START("P2_P4")
257   KONAMI16_LSB(2, IPT_BUTTON3, IPT_COIN2 )
258   KONAMI16_MSB(4, IPT_BUTTON3, IPT_COIN4 )
259   KONAMI16_LSB_UDLR(2, IPT_BUTTON3, IPT_COIN2 )
260   KONAMI16_MSB_UDLR(4, IPT_BUTTON3, IPT_COIN4 )
259261
260262   PORT_START("EEPROM")
261263   PORT_BIT( 0x003f, IP_ACTIVE_LOW, IPT_UNKNOWN )   /* unused? */
r4679r4680
272274
273275static INPUT_PORTS_START( xmen2p )
274276   PORT_START("P1_P3")
275   KONAMI16_LSB(1, IPT_BUTTON3, IPT_COIN1 )
277   KONAMI16_LSB_UDLR(1, IPT_BUTTON3, IPT_COIN1 )
276278   PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNUSED )
277279
278280   PORT_START("P2_P4")
279   KONAMI16_LSB(2, IPT_BUTTON3, IPT_COIN2 )
281   KONAMI16_LSB_UDLR(2, IPT_BUTTON3, IPT_COIN2 )
280282   PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNUSED )
281283
282284   PORT_START("EEPROM")
r4679r4680
301303
302304static INPUT_PORTS_START( xmen6p )
303305   PORT_START("P1_P3")
304   KONAMI16_LSB(1, IPT_BUTTON3, IPT_COIN1 )
305   KONAMI16_MSB(3, IPT_BUTTON3, IPT_COIN3 )
306   KONAMI16_LSB_UDLR(1, IPT_BUTTON3, IPT_COIN1 )
307   KONAMI16_MSB_UDLR(3, IPT_BUTTON3, IPT_COIN3 )
306308
307309   PORT_START("P2_P4")
308   KONAMI16_LSB(2, IPT_BUTTON3, IPT_COIN2 )
309   KONAMI16_MSB(4, IPT_BUTTON3, IPT_COIN4 )
310   KONAMI16_LSB_UDLR(2, IPT_BUTTON3, IPT_COIN2 )
311   KONAMI16_MSB_UDLR(4, IPT_BUTTON3, IPT_COIN4 )
310312
311313   PORT_START("P5_P6")
312   KONAMI16_LSB(5, IPT_BUTTON3, IPT_COIN5 )
313   KONAMI16_MSB(6, IPT_BUTTON3, IPT_COIN6 )
314   KONAMI16_LSB_UDLR(5, IPT_BUTTON3, IPT_COIN5 )
315   KONAMI16_MSB_UDLR(6, IPT_BUTTON3, IPT_COIN6 )
314316
315317   PORT_START("EEPROM")
316318   PORT_BIT( 0x003f, IP_ACTIVE_LOW, IPT_UNKNOWN )   /* unused? */
src/mame/drivers/silkroad.c
r4679r4680
345345
346346   src += tileoffset; len -=tileoffset;
347347
348   buffer = malloc_or_die(len);
348   buffer = alloc_array_or_die(UINT8, len);
349349   {
350350      int i;
351351      for (i = 0;i < len; i++)
src/mame/drivers/wink.c
r4679r4680
5656
5757static WRITE8_HANDLER( sound_irq_w )
5858{
59   cpu_set_input_line(space->machine->cpu[1],0,HOLD_LINE);
59   cputag_set_input_line(space->machine, "audiocpu", 0, HOLD_LINE);
6060   //sync with sound cpu (but it still loses some soundlatches...)
6161   //timer_call_after_resynch(space->machine, NULL, 0, NULL);
6262}
r4679r4680
394394{
395395   UINT32 i;
396396   UINT8 *ROM = memory_region(machine, "maincpu");
397   UINT8 *buffer = malloc_or_die(0x8000);
397   UINT8 *buffer = alloc_array_or_die(UINT8, 0x8000);
398398
399399   // protection module reverse engineered by HIGHWAYMAN
400400
src/mame/drivers/lethal.c
r4679r4680
259259
260260static WRITE8_HANDLER( sound_irq_w )
261261{
262   cpu_set_input_line(space->machine->cpu[1], 0, HOLD_LINE);
262   cputag_set_input_line(space->machine, "soundcpu", 0, HOLD_LINE);
263263}
264264
265265static READ8_HANDLER( sound_status_r )
r4679r4680
269269
270270static void sound_nmi(const device_config *device)
271271{
272   cpu_set_input_line(device->machine->cpu[1], INPUT_LINE_NMI, PULSE_LINE);
272   cputag_set_input_line(device->machine, "soundcpu", INPUT_LINE_NMI, PULSE_LINE);
273273}
274274
275275static WRITE8_HANDLER( le_bankswitch_w )
r4679r4680
481481}
482482
483483static ADDRESS_MAP_START( le_main, ADDRESS_SPACE_PROGRAM, 8 )
484   AM_RANGE(0x0000, 0x1fff) AM_READ(SMH_BANK1) AM_WRITE(SMH_ROM)
484   AM_RANGE(0x0000, 0x1fff) AM_READ(SMH_BANK(1)) AM_WRITE(SMH_ROM)
485485   AM_RANGE(0x2000, 0x3fff) AM_RAM            // work RAM
486486   AM_RANGE(0x4000, 0x403f) AM_WRITE(K056832_w)
487487   AM_RANGE(0x4040, 0x404f) AM_WRITE(K056832_b_w)
r4679r4680
497497   AM_RANGE(0x40dc, 0x40dc) AM_WRITE(le_bankswitch_w)
498498   AM_RANGE(0x47fe, 0x47ff) AM_WRITE(le_bgcolor_w)      // BG color
499499   AM_RANGE(0x4800, 0x7fff) AM_READWRITE(le_4800_r, le_4800_w)   AM_BASE(&paletteram) // bankswitched: RAM and registers
500   AM_RANGE(0x8000, 0xffff) AM_READ(SMH_BANK2) AM_WRITE(SMH_ROM)
500   AM_RANGE(0x8000, 0xffff) AM_READ(SMH_BANK(2)) AM_WRITE(SMH_ROM)
501501ADDRESS_MAP_END
502502
503503static ADDRESS_MAP_START( le_sound, ADDRESS_SPACE_PROGRAM, 8 )
r4679r4680
588588   memory_set_bankptr(machine, 1, &prgrom[0x10000]);
589589   memory_set_bankptr(machine, 2, &prgrom[0x48000]);
590590   /* force reset again to read proper reset vector */
591   device_reset(machine->cpu[0]);
591   device_reset(cputag_get_cpu(machine, "maincpu"));
592592}
593593
594594static const gfx_layout lethal_6bpp =
src/mame/drivers/videopin.c
r4679r4680
3737         time_released = timer_get_time(machine);
3838
3939         if (!mask)
40            cpu_set_input_line(machine->cpu[0], INPUT_LINE_NMI, ASSERT_LINE);
40            cputag_set_input_line(machine, "maincpu", INPUT_LINE_NMI, ASSERT_LINE);
4141      }
4242      else
4343         time_pushed = timer_get_time(machine);
r4679r4680
5353
5454   update_plunger(machine);
5555
56   cpu_set_input_line(machine->cpu[0], 0, ASSERT_LINE);
56   cputag_set_input_line(machine, "maincpu", 0, ASSERT_LINE);
5757
5858   scanline = scanline + 32;
5959
r4679r4680
134134   if (i == 7)
135135      set_led_status(0, data & 8);   /* start button */
136136
137   cpu_set_input_line(space->machine->cpu[0], 0, CLEAR_LINE);
137   cputag_set_input_line(space->machine, "maincpu", 0, CLEAR_LINE);
138138}
139139
140140
r4679r4680
152152   mask = ~data & 0x10;
153153
154154   if (mask)
155      cpu_set_input_line(device->machine->cpu[0], INPUT_LINE_NMI, CLEAR_LINE);
155      cputag_set_input_line(device->machine, "maincpu", INPUT_LINE_NMI, CLEAR_LINE);
156156
157157   coin_lockout_global_w(~data & 0x08);
158158
src/mame/drivers/exprraid.c
r4679r4680
247247
248248static WRITE8_HANDLER( sound_cpu_command_w )
249249{
250    soundlatch_w(space,0,data);
251    cpu_set_input_line(space->machine->cpu[1],INPUT_LINE_NMI,PULSE_LINE);
250    soundlatch_w(space, 0, data);
251    cputag_set_input_line(space->machine, "slave", INPUT_LINE_NMI, PULSE_LINE);
252252}
253253
254254static READ8_HANDLER( vblank_r )
r4679r4680
435435/* handler called by the 3812 emulator when the internal timers cause an IRQ */
436436static void irqhandler(const device_config *device, int linestate)
437437{
438   cpu_set_input_line_and_vector(device->machine->cpu[1],0,linestate,0xff);
438   cputag_set_input_line_and_vector(device->machine, "slave", 0, linestate, 0xff);
439439}
440440
441441static const ym3526_interface ym3526_config =
r4679r4680
760760
761761static DRIVER_INIT( wexpresb )
762762{
763   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x3800, 0x3800, 0, 0, vblank_r);
763   memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x3800, 0x3800, 0, 0, vblank_r);
764764   exprraid_gfx_expand(machine);
765765}
766766
767767static DRIVER_INIT( wexpresc )
768768{
769   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xFFC0, 0xFFC0, 0, 0, vblank_r);
769   memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xFFC0, 0xFFC0, 0, 0, vblank_r);
770770   exprraid_gfx_expand(machine);
771771}
772772
src/mame/drivers/tecmo16.c
r4679r4680
6161{
6262   if (ACCESSING_BITS_0_7)
6363   {
64      soundlatch_w(space,0x00,data & 0xff);
65      cpu_set_input_line(space->machine->cpu[1],INPUT_LINE_NMI,PULSE_LINE);
64      soundlatch_w(space, 0x00, data & 0xff);
65      cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
6666   }
6767}
6868
r4679r4680
388388
389389static void irqhandler(const device_config *device, int irq)
390390{
391   cpu_set_input_line(device->machine->cpu[1],0,irq ? ASSERT_LINE : CLEAR_LINE);
391   cputag_set_input_line(device->machine, "audiocpu", 0, irq ? ASSERT_LINE : CLEAR_LINE);
392392}
393393
394394static const ym2151_interface ym2151_config =
r4679r4680
478478   ROM_LOAD( "fstarf08.rom", 0x00000, 0x20000, CRC(f0ad5693) SHA1(a0202801bb9f9c86175ca7989fbc9efa47183188) )
479479ROM_END
480480
481ROM_START( fstarfrcj )
482   ROM_REGION( 0x80000, "maincpu", 0 )
483   ROM_LOAD16_BYTE( "1.bin", 0x00000, 0x40000, CRC(1905d85d) SHA1(83d244f13064b826ccf86b5a8158478452efbf7f) )
484   ROM_LOAD16_BYTE( "2.bin", 0x00001, 0x40000, CRC(de9cfc39) SHA1(bd7943f366a3161222848c5f9b687a6ba8c1d43a) )
485
486   ROM_REGION( 0x10000, "audiocpu", 0 )
487   ROM_LOAD( "fstarf07.rom", 0x00000, 0x10000, CRC(e0ad5de1) SHA1(677237341e837061b6cc02200c0752964caed907) )
488
489   ROM_REGION( 0x20000, "gfx1", ROMREGION_DISPOSE )
490   ROM_LOAD( "fstarf03.rom", 0x00000, 0x20000, CRC(54375335) SHA1(d1af56a7c7fff877066dad3144d0b5147da28c6a) )
491
492   ROM_REGION( 0x100000, "gfx2", ROMREGION_DISPOSE )
493   ROM_LOAD16_BYTE( "fstarf05.rom", 0x00000, 0x80000, CRC(77a281e7) SHA1(a87a90c2c856d45785cb56185b1a7dff3404b5cb) )
494   ROM_LOAD16_BYTE( "fstarf04.rom", 0x00001, 0x80000, CRC(398a920d) SHA1(eecc167803f48517348d68ce70f15e87eac204bb) )
495
496   ROM_REGION( 0x100000, "gfx3", ROMREGION_DISPOSE )
497   ROM_LOAD16_BYTE( "fstarf09.rom", 0x00000, 0x80000, CRC(d51341d2) SHA1(e46c319158046d407d4387cb2d8f0b6cfd7be576) )
498   ROM_LOAD16_BYTE( "fstarf06.rom", 0x00001, 0x80000, CRC(07e40e87) SHA1(22867e52a8267ae8ae0ff0dba6bb846cb3e1b63d) )
499
500   ROM_REGION( 0x20000, "oki", 0 )
501   ROM_LOAD( "fstarf08.rom", 0x00000, 0x20000, CRC(f0ad5693) SHA1(a0202801bb9f9c86175ca7989fbc9efa47183188) )
502ROM_END
503
481504ROM_START( ginkun )
482505   ROM_REGION( 0x80000, "maincpu", 0 )
483506   ROM_LOAD16_BYTE( "ginkun01.i01", 0x00000, 0x40000, CRC(98946fd5) SHA1(e0b496d1fa5201d94a2a22243fe4b37d9ff7bc90) )
r4679r4680
633656
634657/******************************************************************************/
635658
636GAME( 1992, fstarfrc, 0, fstarfrc, fstarfrc, 0, ROT90, "Tecmo", "Final Star Force (US)", 0 )
637GAME( 1992, riot,     0, riot,     riot,     0, ROT0,  "NMK",   "Riot", 0 )
638GAME( 1995, ginkun,   0, ginkun,   ginkun,   0, ROT0,  "Tecmo", "Ganbare Ginkun", 0 )
659GAME( 1992, fstarfrc,  0,        fstarfrc, fstarfrc, 0, ROT90, "Tecmo", "Final Star Force (US)", 0 )
660GAME( 1992, fstarfrcj, fstarfrc, fstarfrc, fstarfrc, 0, ROT90, "Tecmo", "Final Star Force (Japan)", 0 )
661GAME( 1992, riot,      0,        riot,     riot,     0, ROT0,  "NMK",   "Riot", 0 )
662GAME( 1995, ginkun,    0,        ginkun,   ginkun,   0, ROT0,  "Tecmo", "Ganbare Ginkun", 0 )
src/mame/drivers/2mindril.c
r4679r4680
393393/* WRONG,it does something with 60000c & 700002,likely to be called when the player throws the ball.*/
394394static void irqhandler(const device_config *device, int irq)
395395{
396//  cpu_set_input_line(device->machine->cpu[0],5,irq ? ASSERT_LINE : CLEAR_LINE);
396//  cputag_set_input_line(device->machine, "maincpu", 5, irq ? ASSERT_LINE : CLEAR_LINE);
397397}
398398
399399static const ym2610_interface ym2610_config =
src/mame/drivers/naughtyb.c
r4679r4680
784784static DRIVER_INIT( popflame )
785785{
786786   /* install a handler to catch protection checks */
787   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x9000, 0x9000, 0, 0, popflame_protection_r);
787   memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x9000, 0x9000, 0, 0, popflame_protection_r);
788788}
789789
790790static int question_offset = 0;
r4679r4680
813813static DRIVER_INIT( trvmstr )
814814{
815815   /* install questions' handlers  */
816   memory_install_readwrite8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xc000, 0xc002, 0, 0, trvmstr_questions_r, trvmstr_questions_w);
816   memory_install_readwrite8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xc000, 0xc002, 0, 0, trvmstr_questions_r, trvmstr_questions_w);
817817}
818818
819819
src/mame/drivers/runaway.c
r4679r4680
3333   /* assume Centipede-style interrupt timing */
3434   int scanline = param;
3535
36   cpu_set_input_line(machine->cpu[0], 0, (scanline & 32) ? ASSERT_LINE : CLEAR_LINE);
36   cputag_set_input_line(machine, "maincpu", 0, (scanline & 32) ? ASSERT_LINE : CLEAR_LINE);
3737
3838   scanline += 32;
3939
r4679r4680
8181
8282static WRITE8_HANDLER( runaway_irq_ack_w )
8383{
84   cpu_set_input_line(space->machine->cpu[0], 0, CLEAR_LINE);
84   cputag_set_input_line(space->machine, "maincpu", 0, CLEAR_LINE);
8585}
8686
8787
88static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 )
89   AM_RANGE(0x0000, 0x03ff) AM_READ(SMH_RAM)
90   AM_RANGE(0x0400, 0x07ff) AM_READ(SMH_RAM)
91   AM_RANGE(0x3000, 0x3007) AM_READ(runaway_input_r)
92   AM_RANGE(0x4000, 0x4000) AM_READ_PORT("4000")
93   AM_RANGE(0x5000, 0x5000) AM_DEVREAD("earom", atari_vg_earom_r)
94   AM_RANGE(0x6000, 0x600f) AM_DEVREAD("pokey1", pokey_r)
95   AM_RANGE(0x7000, 0x700f) AM_DEVREAD("pokey2", pokey_r)
96   AM_RANGE(0x8000, 0xcfff) AM_READ(SMH_ROM)
97   AM_RANGE(0xf000, 0xffff) AM_READ(SMH_ROM)   /* for the interrupt vectors */
98ADDRESS_MAP_END
99
100
101static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 )
102   AM_RANGE(0x0000, 0x03ff) AM_WRITE(SMH_RAM)
103   AM_RANGE(0x0400, 0x07bf) AM_WRITE(runaway_video_ram_w) AM_BASE(&runaway_video_ram)
104   AM_RANGE(0x07c0, 0x07ff) AM_WRITE(SMH_RAM) AM_BASE(&runaway_sprite_ram)
88static ADDRESS_MAP_START( runaway_map, ADDRESS_SPACE_PROGRAM, 8 )
89   AM_RANGE(0x0000, 0x03ff) AM_RAM
90   AM_RANGE(0x0400, 0x07bf) AM_RAM_WRITE(runaway_video_ram_w) AM_BASE(&runaway_video_ram)
91   AM_RANGE(0x07c0, 0x07ff) AM_RAM AM_BASE(&runaway_sprite_ram)
10592   AM_RANGE(0x1000, 0x1000) AM_WRITE(runaway_irq_ack_w)
106   AM_RANGE(0x1400, 0x143F) AM_DEVWRITE("earom", atari_vg_earom_w)
93   AM_RANGE(0x1400, 0x143f) AM_DEVWRITE("earom", atari_vg_earom_w)
10794   AM_RANGE(0x1800, 0x1800) AM_DEVWRITE("earom", atari_vg_earom_ctrl_w)
10895   AM_RANGE(0x1c00, 0x1c0f) AM_WRITE(runaway_paletteram_w)
10996   AM_RANGE(0x2000, 0x2000) AM_WRITENOP /* coin counter? */
11097   AM_RANGE(0x2001, 0x2001) AM_WRITENOP /* coin counter? */
11198   AM_RANGE(0x2003, 0x2004) AM_WRITE(runaway_led_w)
11299   AM_RANGE(0x2005, 0x2005) AM_WRITE(runaway_tile_bank_w)
113   AM_RANGE(0x6000, 0x600f) AM_DEVWRITE("pokey1", pokey_w)
114   AM_RANGE(0x7000, 0x700f) AM_DEVWRITE("pokey2", pokey_w)
115   AM_RANGE(0x8000, 0xcfff) AM_WRITE(SMH_ROM)
100
101   AM_RANGE(0x3000, 0x3007) AM_READ(runaway_input_r)
102   AM_RANGE(0x4000, 0x4000) AM_READ_PORT("4000")
103   AM_RANGE(0x5000, 0x5000) AM_DEVREAD("earom", atari_vg_earom_r)
104   AM_RANGE(0x6000, 0x600f) AM_DEVREADWRITE("pokey1", pokey_r,pokey_w)
105   AM_RANGE(0x7000, 0x700f) AM_DEVREADWRITE("pokey2", pokey_r,pokey_w)
106   AM_RANGE(0x8000, 0xcfff) AM_ROM
107   AM_RANGE(0xf000, 0xffff) AM_ROM   /* for the interrupt vectors */
116108ADDRESS_MAP_END
117109
118110
r4679r4680
363355
364356   /* basic machine hardware */
365357   MDRV_CPU_ADD("maincpu", M6502, 12096000 / 8) /* ? */
366   MDRV_CPU_PROGRAM_MAP(readmem, writemem)
358   MDRV_CPU_PROGRAM_MAP(runaway_map, 0)
367359
368360   MDRV_MACHINE_RESET(runaway)
369361
src/mame/drivers/sothello.c
r4679r4680
7373
7474static TIMER_CALLBACK( subcpu_suspend )
7575{
76    cpu_suspend(machine->cpu[2],SUSPEND_REASON_HALT,1);
76    cputag_suspend(machine, "sub", SUSPEND_REASON_HALT, 1);
7777}
7878
7979static TIMER_CALLBACK( subcpu_resume )
8080{
81    cpu_resume(machine->cpu[2],SUSPEND_REASON_HALT);
82    cpu_set_input_line(machine->cpu[2], INPUT_LINE_NMI, PULSE_LINE);
81    cputag_resume(machine, "sub", SUSPEND_REASON_HALT);
82    cputag_set_input_line(machine, "sub", INPUT_LINE_NMI, PULSE_LINE);
8383}
8484
8585static READ8_HANDLER( subcpu_halt_set )
r4679r4680
165165
166166static WRITE8_HANDLER(soundcpu_int_clear_w)
167167{
168    cpu_set_input_line(space->machine->cpu[1], 0, CLEAR_LINE );
168    cputag_set_input_line(space->machine, "soundcpu", 0, CLEAR_LINE );
169169}
170170
171171static ADDRESS_MAP_START( soundcpu_mem_map, ADDRESS_SPACE_PROGRAM, 8 )
r4679r4680
187187
188188static void unlock_shared_ram(const address_space *space)
189189{
190    if(!cpu_is_suspended(space->machine->cpu[2], SUSPEND_REASON_HALT))
190    if(!cputag_is_suspended(space->machine, "sub", SUSPEND_REASON_HALT))
191191    {
192192        subcpu_status|=1;
193193    }
r4679r4680
292292
293293static void irqhandler(const device_config *device, int irq)
294294{
295    cpu_set_input_line(device->machine->cpu[2],0,irq ? ASSERT_LINE : CLEAR_LINE);
295    cputag_set_input_line(device->machine, "sub", 0, irq ? ASSERT_LINE : CLEAR_LINE);
296296}
297297
298298static void sothello_vdp_interrupt(running_machine *machine, int i)
299299{
300    cpu_set_input_line (machine->cpu[0], 0, (i ? HOLD_LINE : CLEAR_LINE));
300    cputag_set_input_line(machine, "maincpu", 0, (i ? HOLD_LINE : CLEAR_LINE));
301301}
302302
303303static INTERRUPT_GEN( sothello_interrupt )
r4679r4680
309309{
310310    /* only 4 bits are used */
311311    msm5205_data_w( device, msm_data & 0x0f );
312    cpu_set_input_line(device->machine->cpu[1], 0, ASSERT_LINE );
312    cputag_set_input_line(device->machine, "soundcpu", 0, ASSERT_LINE );
313313}
314314
315315
src/mame/drivers/taitowlf.c
r4679r4680
324324{
325325   UINT8 data = at_pages[offset % 0x10];
326326
327   switch(offset % 8) {
327   switch(offset % 8)
328   {
328329   case 1:
329330      data = dma_offset[(offset / 8) & 1][2];
330331      break;
r4679r4680
346347{
347348   at_pages[offset % 0x10] = data;
348349
349   switch(offset % 8) {
350   switch(offset % 8)
351   {
350352   case 1:
351353      dma_offset[(offset / 8) & 1][2] = data;
352354      break;
r4679r4680
365367
366368static DMA8237_MEM_READ( pc_dma_read_byte )
367369{
368   const address_space *space = cpu_get_address_space(device->machine->cpu[0], ADDRESS_SPACE_PROGRAM);
370   const address_space *space = cputag_get_address_space(device->machine, "maincpu", ADDRESS_SPACE_PROGRAM);
369371   offs_t page_offset = (((offs_t) dma_offset[0][channel]) << 16)
370372      & 0xFF0000;
371373
r4679r4680
375377
376378static DMA8237_MEM_WRITE( pc_dma_write_byte )
377379{
378   const address_space *space = cpu_get_address_space(device->machine->cpu[0], ADDRESS_SPACE_PROGRAM);
380   const address_space *space = cputag_get_address_space(device->machine, "maincpu", ADDRESS_SPACE_PROGRAM);
379381   offs_t page_offset = (((offs_t) dma_offset[0][channel]) << 16)
380382      & 0xFF0000;
381383
r4679r4680
525527
526528static MACHINE_START(taitowlf)
527529{
528   cpu_set_irq_callback(machine->cpu[0], irq_callback);
530   cpu_set_irq_callback(cputag_get_cpu(machine, "maincpu"), irq_callback);
529531
530532   taitowlf_devices.pit8254 = devtag_get_device( machine, "pit8254" );
531533   taitowlf_devices.pic8259_1 = devtag_get_device( machine, "pic8259_1" );
r4679r4680
546548 *
547549 *************************************************************/
548550
549static PIC8259_SET_INT_LINE( taitowlf_pic8259_1_set_int_line ) {
550   cpu_set_input_line(device->machine->cpu[0], 0, interrupt ? HOLD_LINE : CLEAR_LINE);
551static PIC8259_SET_INT_LINE( taitowlf_pic8259_1_set_int_line )
552{
553   cputag_set_input_line(device->machine, "maincpu", 0, interrupt ? HOLD_LINE : CLEAR_LINE);
551554}
552555
553556
554static PIC8259_SET_INT_LINE( taitowlf_pic8259_2_set_int_line ) {
557static PIC8259_SET_INT_LINE( taitowlf_pic8259_2_set_int_line )
558{
555559   pic8259_set_irq_line( taitowlf_devices.pic8259_1, 2, interrupt);
556560}
557561
r4679r4680
639643
640644static void set_gate_a20(running_machine *machine, int a20)
641645{
642   cpu_set_input_line(machine->cpu[0], INPUT_LINE_A20, a20);
646   cputag_set_input_line(machine, "maincpu", INPUT_LINE_A20, a20);
643647}
644648
645649static void keyboard_interrupt(running_machine *machine, int state)
r4679r4680
652656   pic8259_set_irq_line(taitowlf_devices.pic8259_2, 6, state);
653657}
654658
655static int taitowlf_get_out2(running_machine *machine) {
659static int taitowlf_get_out2(running_machine *machine)
660{
656661   return pit8253_get_output(taitowlf_devices.pit8254, 2 );
657662}
658663
r4679r4680
661666   KBDC8042_AT386, set_gate_a20, keyboard_interrupt, taitowlf_get_out2
662667};
663668
664static void taitowlf_set_keyb_int(running_machine *machine, int state) {
669static void taitowlf_set_keyb_int(running_machine *machine, int state)
670{
665671   pic8259_set_irq_line(taitowlf_devices.pic8259_1, 1, state);
666672}
667673
668674static DRIVER_INIT( taitowlf )
669675{
670   bios_ram = auto_malloc(0x10000);
676   bios_ram = auto_alloc_array(machine, UINT32, 0x10000/4);
671677
672678   init_pc_common(machine, PCCOMMON_KEYBOARD_AT, taitowlf_set_keyb_int);
673679   mc146818_init(machine, MC146818_STANDARD);
src/mame/drivers/toypop.c
r4679r4680
156156
157157static READ8_HANDLER( toypop_main_interrupt_enable_r )
158158{
159   cpu_interrupt_enable(space->machine->cpu[0],1);
159   cpu_interrupt_enable(cputag_get_cpu(space->machine, "maincpu"), 1);
160160   return 0;
161161}
162162
163163static WRITE8_HANDLER( toypop_main_interrupt_enable_w )
164164{
165   cpu_interrupt_enable(space->machine->cpu[0],1);
166   cpu_set_input_line(space->machine->cpu[0], 0, CLEAR_LINE);
165   cpu_interrupt_enable(cputag_get_cpu(space->machine, "maincpu"), 1);
166   cputag_set_input_line(space->machine, "maincpu", 0, CLEAR_LINE);
167167}
168168
169169static WRITE8_HANDLER( toypop_main_interrupt_disable_w )
170170{
171   cpu_interrupt_enable(space->machine->cpu[0],0);
171   cpu_interrupt_enable(cputag_get_cpu(space->machine, "maincpu"), 0);
172172}
173173
174174static WRITE8_HANDLER( toypop_sound_interrupt_enable_acknowledge_w )
175175{
176   cpu_interrupt_enable(space->machine->cpu[1],1);
177   cpu_set_input_line(space->machine->cpu[1], 0, CLEAR_LINE);
176   cpu_interrupt_enable(cputag_get_cpu(space->machine, "audiocpu"), 1);
177   cputag_set_input_line(space->machine, "audiocpu", 0, CLEAR_LINE);
178178}
179179
180180static WRITE8_HANDLER( toypop_sound_interrupt_disable_w )
181181{
182   cpu_interrupt_enable(space->machine->cpu[1],0);
182   cpu_interrupt_enable(cputag_get_cpu(space->machine, "audiocpu"), 0);
183183}
184184
185185static INTERRUPT_GEN( toypop_main_interrupt )
186186{
187187   irq0_line_assert(device);   // this also checks if irq is enabled - IMPORTANT!
188                  // so don't replace with cpu_set_input_line(machine->cpu[0], 0, ASSERT_LINE);
188                        // so don't replace with cputag_set_input_line(machine, "maincpu", 0, ASSERT_LINE);
189189
190   namcoio_set_irq_line(device->machine,0,PULSE_LINE);
191   namcoio_set_irq_line(device->machine,1,PULSE_LINE);
192   namcoio_set_irq_line(device->machine,2,PULSE_LINE);
190   namcoio_set_irq_line(device->machine, 0, PULSE_LINE);
191   namcoio_set_irq_line(device->machine, 1, PULSE_LINE);
192   namcoio_set_irq_line(device->machine, 2, PULSE_LINE);
193193}
194194
195195static WRITE8_HANDLER( toypop_sound_clear_w )
196196{
197   cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_RESET, CLEAR_LINE);
197   cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_RESET, CLEAR_LINE);
198198}
199199
200200static WRITE8_HANDLER( toypop_sound_assert_w )
201201{
202   cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_RESET, ASSERT_LINE);
202   cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_RESET, ASSERT_LINE);
203203}
204204
205205static WRITE8_HANDLER( toypop_m68000_clear_w )
206206{
207   cpu_set_input_line(space->machine->cpu[2], INPUT_LINE_RESET, CLEAR_LINE);
207   cputag_set_input_line(space->machine, "sub", INPUT_LINE_RESET, CLEAR_LINE);
208208}
209209
210210static WRITE8_HANDLER( toypop_m68000_assert_w )
211211{
212   cpu_set_input_line(space->machine->cpu[2], INPUT_LINE_RESET, ASSERT_LINE);
212   cputag_set_input_line(space->machine, "sub", INPUT_LINE_RESET, ASSERT_LINE);
213213}
214214
215215static TIMER_CALLBACK( disable_interrupts )
216216{
217   cpu_interrupt_enable(machine->cpu[0],0);
218   cpu_set_input_line(machine->cpu[0], 0, CLEAR_LINE);
219   cpu_interrupt_enable(machine->cpu[1],0);
220   cpu_set_input_line(machine->cpu[1], 0, CLEAR_LINE);
217   cpu_interrupt_enable(cputag_get_cpu(machine, "maincpu"), 0);
218   cputag_set_input_line(machine, "maincpu", 0, CLEAR_LINE);
219   cpu_interrupt_enable(cputag_get_cpu(machine, "audiocpu"), 0);
220   cputag_set_input_line(machine, "audiocpu", 0, CLEAR_LINE);
221221   interrupt_enable_68k = 0;
222222}
223223
src/mame/drivers/tumbleb.c
r4679r4680
829829
830830static ADDRESS_MAP_START( jumppop_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
831831   AM_RANGE(0x0000, 0x2fff) AM_ROM
832   AM_RANGE(0x8000, 0xbfff) AM_READ(SMH_BANK1)
832   AM_RANGE(0x8000, 0xbfff) AM_READ(SMH_BANK(1))
833833   AM_RANGE(0xf800, 0xffff) AM_RAM
834834ADDRESS_MAP_END
835835
r4679r4680
35743574
35753575   HCROM[0x1e228/2] = 0x4e75;
35763576
3577   memory_install_write16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x140000, 0x1407ff, 0, 0, SMH_NOP ); // kill palette writes as the interrupt code we don't have controls them
3577   memory_install_write16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x140000, 0x1407ff, 0, 0, (write16_space_func)SMH_NOP ); // kill palette writes as the interrupt code we don't have controls them
35783578
35793579
35803580   {
r4679r4680
35953595static void suprtrio_decrypt_code(running_machine *machine)
35963596{
35973597   UINT16 *rom = (UINT16 *)memory_region(machine, "maincpu");
3598   UINT16 *buf = malloc_or_die(0x80000);
3598   UINT16 *buf = alloc_array_or_die(UINT16, 0x80000/2);
35993599   int i;
36003600
36013601   /* decrypt main ROMs */
r4679r4680
36153615static void suprtrio_decrypt_gfx(running_machine *machine)
36163616{
36173617   UINT16 *rom = (UINT16 *)memory_region(machine, "gfx1");
3618   UINT16 *buf = malloc_or_die(0x100000);
3618   UINT16 *buf = alloc_array_or_die(UINT16, 0x100000/2);
36193619   int i;
36203620
36213621   /* decrypt tiles */
src/mame/drivers/micro3d.c
r4679r4680
151151
152152static void duart_irq_handler(const device_config *device, UINT8 vector)
153153{
154   cpu_set_input_line_and_vector(device->machine->cpu[0], 3, HOLD_LINE, vector);
154   cputag_set_input_line_and_vector(device->machine, "maincpu", 3, HOLD_LINE, vector);
155155};
156156
157157static void duart_tx(const device_config *device, int channel, UINT8 data)
r4679r4680
163163   else
164164   {
165165      m68681_tx0 = data;
166      cpu_set_input_line(device->machine->cpu[2], MCS51_RX_LINE, HOLD_LINE);
166      cputag_set_input_line(device->machine, "audiocpu", MCS51_RX_LINE, HOLD_LINE);
167167   }
168168};
169169
r4679r4680
196196*/
197197static void duart_output_w(const device_config *device, UINT8 data)
198198{
199   cpu_set_input_line(device->machine->cpu[2], INPUT_LINE_RESET, data & 0x20 ? CLEAR_LINE : ASSERT_LINE);
199   cputag_set_input_line(device->machine, "audiocpu", INPUT_LINE_RESET, data & 0x20 ? CLEAR_LINE : ASSERT_LINE);
200200}
201201
202202
r4679r4680
336336
337337   if (m68901_base[IMASK_REG] & (bit << 8))              // If interrupt is not masked by MFD, trigger a 68k INT
338338   {
339      cpu_set_input_line(machine->cpu[0], 4, HOLD_LINE);
339      cputag_set_input_line(machine, "maincpu", 4, HOLD_LINE);
340340      //    logerror("M68901 interrupt %d serviced.\n",source);
341341   }
342342}
r4679r4680
480480
481481static READ16_HANDLER( tms_host_r )
482482{
483   return tms34010_host_r(space->machine->cpu[1], offset);
483   return tms34010_host_r(cputag_get_cpu(space->machine, "vgb"), offset);
484484}
485485
486486static WRITE16_HANDLER( tms_host_w )
487487{
488   tms34010_host_w(space->machine->cpu[1], offset, data);
488   tms34010_host_w(cputag_get_cpu(space->machine, "vgb"), offset, data);
489489}
490490
491491
r4679r4680
640640static MACHINE_RESET( micro3d )
641641{
642642   /* TODO: Check. Also do this for the other CPUs? */
643//  cpu_set_input_line(machine->cpu[2], INPUT_LINE_RESET, ASSERT_LINE);
643//  cputag_set_input_line(machine, "audiocpu", INPUT_LINE_RESET, ASSERT_LINE);
644644
645645   creg = 0;
646646   ti_uart[STATUS] = 1;
r4679r4680
692692
693693static DRIVER_INIT( micro3d )
694694{
695   i8051_set_serial_tx_callback(machine->cpu[2], data_from_i8031);
696   i8051_set_serial_rx_callback(machine->cpu[2], data_to_i8031);
695   i8051_set_serial_tx_callback(cputag_get_cpu(machine, "audiocpu"), data_from_i8031);
696   i8051_set_serial_rx_callback(cputag_get_cpu(machine, "audiocpu"), data_to_i8031);
697697
698698   duart68681 = devtag_get_device( machine, "duart68681" );
699699}
src/mame/drivers/momoko.c
r4679r4680
7070
7171/****************************************************************************/
7272
73static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 )
74   AM_RANGE(0x0000, 0xbfff) AM_READ(SMH_ROM)
75   AM_RANGE(0xc000, 0xcfff) AM_READ(SMH_RAM)
76
77   AM_RANGE(0xd064, 0xd0ff) AM_READ(SMH_RAM) /* sprite ram */
78
79   AM_RANGE(0xd400, 0xd400) AM_READ_PORT("IN0")
80   AM_RANGE(0xd402, 0xd402) AM_READ_PORT("IN1")
81   AM_RANGE(0xd406, 0xd406) AM_READ_PORT("DSW0")
82   AM_RANGE(0xd407, 0xd407) AM_READ_PORT("DSW1")
83
84   AM_RANGE(0xd800, 0xdbff) AM_READ(SMH_RAM)
85   AM_RANGE(0xe000, 0xe3ff) AM_READ(SMH_RAM) /* text */
86
87   AM_RANGE(0xf000, 0xffff) AM_READ(SMH_BANK1)
88ADDRESS_MAP_END
89
90static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 )
91   AM_RANGE(0x0000, 0xbfff) AM_WRITE(SMH_ROM)
92   AM_RANGE(0xc000, 0xcfff) AM_WRITE(SMH_RAM)
93
94   AM_RANGE(0xd064, 0xd0ff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
95
96   AM_RANGE(0xd400, 0xd400) AM_WRITENOP /* interrupt ack? */
97   AM_RANGE(0xd402, 0xd402) AM_WRITE(momoko_flipscreen_w)
73static ADDRESS_MAP_START( momoko_map, ADDRESS_SPACE_PROGRAM, 8 )
74   AM_RANGE(0x0000, 0xbfff) AM_ROM
75   AM_RANGE(0xc000, 0xcfff) AM_RAM
76   AM_RANGE(0xd064, 0xd0ff) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
77   AM_RANGE(0xd400, 0xd400) AM_READ_PORT("IN0") AM_WRITENOP /* interrupt ack? */
78   AM_RANGE(0xd402, 0xd402) AM_READ_PORT("IN1") AM_WRITE(momoko_flipscreen_w)
9879   AM_RANGE(0xd404, 0xd404) AM_WRITE(watchdog_reset_w)
99   AM_RANGE(0xd406, 0xd406) AM_WRITE(soundlatch_w)
100
101   AM_RANGE(0xd800, 0xdbff) AM_WRITE(paletteram_xxxxRRRRGGGGBBBB_be_w) AM_BASE(&paletteram)
102
80   AM_RANGE(0xd406, 0xd406) AM_READ_PORT("DSW0") AM_WRITE(soundlatch_w)
81   AM_RANGE(0xd407, 0xd407) AM_READ_PORT("DSW1")
82   AM_RANGE(0xd800, 0xdbff) AM_RAM_WRITE(paletteram_xxxxRRRRGGGGBBBB_be_w) AM_BASE(&paletteram)
10383   AM_RANGE(0xdc00, 0xdc00) AM_WRITE(momoko_fg_scrolly_w)
10484   AM_RANGE(0xdc01, 0xdc01) AM_WRITE(momoko_fg_scrollx_w)
10585   AM_RANGE(0xdc02, 0xdc02) AM_WRITE(momoko_fg_select_w)
106
107   AM_RANGE(0xe000, 0xe3ff) AM_WRITE(SMH_RAM) AM_BASE(&videoram) AM_SIZE(&videoram_size)
108
86   AM_RANGE(0xe000, 0xe3ff) AM_RAM AM_BASE(&videoram) AM_SIZE(&videoram_size)
10987   AM_RANGE(0xe800, 0xe800) AM_WRITE(momoko_text_scrolly_w)
11088   AM_RANGE(0xe801, 0xe801) AM_WRITE(momoko_text_mode_w)
111
89   AM_RANGE(0xf000, 0xffff) AM_ROMBANK(1)
11290   AM_RANGE(0xf000, 0xf001) AM_WRITE(momoko_bg_scrolly_w) AM_BASE(&momoko_bg_scrolly)
11391   AM_RANGE(0xf002, 0xf003) AM_WRITE(momoko_bg_scrollx_w) AM_BASE(&momoko_bg_scrollx)
11492   AM_RANGE(0xf004, 0xf004) AM_WRITE(momoko_bg_read_bank_w)
r4679r4680
11694   AM_RANGE(0xf007, 0xf007) AM_WRITE(momoko_bg_priority_w)
11795ADDRESS_MAP_END
11896
119static ADDRESS_MAP_START( readmem_sound, ADDRESS_SPACE_PROGRAM, 8 )
120   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
121   AM_RANGE(0x8000, 0x87ff) AM_READ(SMH_RAM)
122   AM_RANGE(0xa000, 0xa001) AM_DEVREAD("ym1", ym2203_r)
123   AM_RANGE(0xc000, 0xc001) AM_DEVREAD("ym2", ym2203_r)
124ADDRESS_MAP_END
125
126static ADDRESS_MAP_START( writemem_sound, ADDRESS_SPACE_PROGRAM, 8 )
127   AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM)
128   AM_RANGE(0x8000, 0x87ff) AM_WRITE(SMH_RAM)
97static ADDRESS_MAP_START( momoko_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
98   AM_RANGE(0x0000, 0x7fff) AM_ROM
99   AM_RANGE(0x8000, 0x87ff) AM_RAM
129100   AM_RANGE(0x9000, 0x9000) AM_WRITENOP /* unknown */
130   AM_RANGE(0xa000, 0xa001) AM_DEVWRITE("ym1", ym2203_w)
101   AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE("ym1", ym2203_r,ym2203_w)
131102   AM_RANGE(0xb000, 0xb000) AM_WRITENOP /* unknown */
132   AM_RANGE(0xc000, 0xc001) AM_DEVWRITE("ym2", ym2203_w)
103   AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ym2", ym2203_r,ym2203_w)
133104ADDRESS_MAP_END
134105
106
135107/****************************************************************************/
136108
137109static INPUT_PORTS_START( momoko )
r4679r4680
273245
274246   /* basic machine hardware */
275247   MDRV_CPU_ADD("maincpu", Z80, 5000000)   /* 5.0MHz */
276   MDRV_CPU_PROGRAM_MAP(readmem,writemem)
248   MDRV_CPU_PROGRAM_MAP(momoko_map,0)
277249   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
278250
279251   MDRV_CPU_ADD("audiocpu", Z80, 2500000)   /* 2.5MHz */
280   MDRV_CPU_PROGRAM_MAP(readmem_sound,writemem_sound)
252   MDRV_CPU_PROGRAM_MAP(momoko_sound_map,0)
281253
282254   /* video hardware */
283255   MDRV_SCREEN_ADD("screen", RASTER)
src/mame/drivers/kchamp.c
r4679r4680
8282static int nmi_enable = 0;
8383static int sound_nmi_enable = 0;
8484
85static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 )
86   AM_RANGE(0x0000, 0xbfff) AM_READ(SMH_ROM)
87   AM_RANGE(0xc000, 0xcfff) AM_READ(SMH_RAM)
88   AM_RANGE(0xd000, 0xd3ff) AM_READ(SMH_RAM)
89   AM_RANGE(0xd400, 0xd7ff) AM_READ(SMH_RAM)
90   AM_RANGE(0xd800, 0xd8ff) AM_READ(SMH_RAM)
91   AM_RANGE(0xd900, 0xdfff) AM_READ(SMH_RAM)
92   AM_RANGE(0xe000, 0xffff) AM_READ(SMH_ROM)
93ADDRESS_MAP_END
85/********************
86* VS Version        *
87********************/
9488
95static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 )
96   AM_RANGE(0x0000, 0xbfff) AM_WRITE(SMH_ROM)
97   AM_RANGE(0xc000, 0xcfff) AM_WRITE(SMH_RAM)
98   AM_RANGE(0xd000, 0xd3ff) AM_WRITE(kchamp_videoram_w) AM_BASE(&videoram)
99   AM_RANGE(0xd400, 0xd7ff) AM_WRITE(kchamp_colorram_w) AM_BASE(&colorram)
100   AM_RANGE(0xd800, 0xd8ff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
101   AM_RANGE(0xd900, 0xdfff) AM_WRITE(SMH_RAM)
102   AM_RANGE(0xe000, 0xffff) AM_WRITE(SMH_ROM)
103ADDRESS_MAP_END
104
105static ADDRESS_MAP_START( sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
106   AM_RANGE(0x0000, 0x5fff) AM_READ(SMH_ROM)
107   AM_RANGE(0x6000, 0xffff) AM_READ(SMH_RAM)
108ADDRESS_MAP_END
109
110static ADDRESS_MAP_START( sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
111   AM_RANGE(0x0000, 0x5fff) AM_WRITE(SMH_ROM)
112   AM_RANGE(0x6000, 0xffff) AM_WRITE(SMH_RAM)
113ADDRESS_MAP_END
114
115static WRITE8_HANDLER( control_w ) {
89static WRITE8_HANDLER( control_w )
90{
11691   nmi_enable = data & 1;
11792}
11893
119static WRITE8_HANDLER( sound_reset_w ) {
94static WRITE8_HANDLER( sound_reset_w )
95{
12096   if ( !( data & 1 ) )
121      cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_RESET, PULSE_LINE);
97      cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_RESET, PULSE_LINE);
12298}
12399
124static WRITE8_DEVICE_HANDLER( sound_control_w ) {
100static WRITE8_DEVICE_HANDLER( sound_control_w )
101{
125102   msm5205_reset_w( device, !( data & 1 ) );
126103   sound_nmi_enable = ( ( data >> 1 ) & 1 );
127104}
128105
129static WRITE8_HANDLER( sound_command_w ) {
106static WRITE8_HANDLER( sound_command_w )
107{
130108   soundlatch_w( space, 0, data );
131   cpu_set_input_line_and_vector(space->machine->cpu[1], 0, HOLD_LINE, 0xff );
109   cputag_set_input_line_and_vector(space->machine, "audiocpu", 0, HOLD_LINE, 0xff );
132110}
133111
134112static int msm_data = 0;
135113static int msm_play_lo_nibble = 1;
136114
137static WRITE8_HANDLER( sound_msm_w ) {
115static WRITE8_HANDLER( sound_msm_w )
116{
138117   msm_data = data;
139118   msm_play_lo_nibble = 1;
140119}
141120
142static ADDRESS_MAP_START( io_map, ADDRESS_SPACE_IO, 8 )
121static ADDRESS_MAP_START( kchampvs_map, ADDRESS_SPACE_PROGRAM, 8 )
122   AM_RANGE(0x0000, 0xbfff) AM_ROM
123   AM_RANGE(0xc000, 0xcfff) AM_RAM
124   AM_RANGE(0xd000, 0xd3ff) AM_RAM_WRITE(kchamp_videoram_w) AM_BASE(&videoram)
125   AM_RANGE(0xd400, 0xd7ff) AM_RAM_WRITE(kchamp_colorram_w) AM_BASE(&colorram)
126   AM_RANGE(0xd800, 0xd8ff) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
127   AM_RANGE(0xd900, 0xdfff) AM_RAM
128   AM_RANGE(0xe000, 0xffff) AM_ROM
129ADDRESS_MAP_END
130
131static ADDRESS_MAP_START( kchampvs_io_map, ADDRESS_SPACE_IO, 8 )
143132   ADDRESS_MAP_GLOBAL_MASK(0xff)
144133   AM_RANGE(0x00, 0x00) AM_READ_PORT("P1") AM_WRITE(kchamp_flipscreen_w)
145134   AM_RANGE(0x01, 0x01) AM_WRITE(control_w)
146135   AM_RANGE(0x02, 0x02) AM_WRITE(sound_reset_w)
147136   AM_RANGE(0x40, 0x40) AM_READ_PORT("P2") AM_WRITE(sound_command_w)
148137   AM_RANGE(0x80, 0x80) AM_READ_PORT("SYSTEM")
149   AM_RANGE(0xC0, 0xC0) AM_READ_PORT("DSW")
138   AM_RANGE(0xc0, 0xc0) AM_READ_PORT("DSW")
150139ADDRESS_MAP_END
151140
152static ADDRESS_MAP_START( sound_io_map, ADDRESS_SPACE_IO, 8 )
141static ADDRESS_MAP_START( kchampvs_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
142   AM_RANGE(0x0000, 0x5fff) AM_ROM
143   AM_RANGE(0x6000, 0xffff) AM_RAM
144ADDRESS_MAP_END
145
146static ADDRESS_MAP_START( kchampvs_sound_io_map, ADDRESS_SPACE_IO, 8 )
153147   ADDRESS_MAP_GLOBAL_MASK(0xff)
154148   AM_RANGE(0x00, 0x01) AM_DEVWRITE("ay1", ay8910_data_address_w)
155149   AM_RANGE(0x01, 0x01) AM_READ(soundlatch_r)
r4679r4680
158152   AM_RANGE(0x05, 0x05) AM_DEVWRITE("msm", sound_control_w)
159153ADDRESS_MAP_END
160154
155
161156/********************
162157* 1 Player Version  *
163158********************/
164
165static ADDRESS_MAP_START( kc_readmem, ADDRESS_SPACE_PROGRAM, 8 )
166   AM_RANGE(0x0000, 0xbfff) AM_READ(SMH_ROM)
167   AM_RANGE(0xc000, 0xdfff) AM_READ(SMH_RAM)
168   AM_RANGE(0xe000, 0xe3ff) AM_READ(SMH_RAM)
169   AM_RANGE(0xe400, 0xe7ff) AM_READ(SMH_RAM)
170   AM_RANGE(0xea00, 0xeaff) AM_READ(SMH_RAM)
171   AM_RANGE(0xeb00, 0xffff) AM_READ(SMH_RAM)
172ADDRESS_MAP_END
173
174static ADDRESS_MAP_START( kc_writemem, ADDRESS_SPACE_PROGRAM, 8 )
175   AM_RANGE(0x0000, 0xbfff) AM_WRITE(SMH_ROM)
176   AM_RANGE(0xc000, 0xdfff) AM_WRITE(SMH_RAM)
177   AM_RANGE(0xe000, 0xe3ff) AM_WRITE(kchamp_videoram_w) AM_BASE(&videoram)
178   AM_RANGE(0xe400, 0xe7ff) AM_WRITE(kchamp_colorram_w) AM_BASE(&colorram)
179   AM_RANGE(0xea00, 0xeaff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
180   AM_RANGE(0xeb00, 0xffff) AM_WRITE(SMH_RAM)
181ADDRESS_MAP_END
182
183static ADDRESS_MAP_START( kc_sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
184   AM_RANGE(0x0000, 0xdfff) AM_READ(SMH_ROM)
185   AM_RANGE(0xe000, 0xe2ff) AM_READ(SMH_RAM)
186ADDRESS_MAP_END
187
188static ADDRESS_MAP_START( kc_sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
189   AM_RANGE(0x0000, 0xdfff) AM_WRITE(SMH_ROM)
190   AM_RANGE(0xe000, 0xe2ff) AM_WRITE(SMH_RAM)
191ADDRESS_MAP_END
192
193static READ8_HANDLER( sound_reset_r ) {
194   cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_RESET, PULSE_LINE);
159static READ8_HANDLER( sound_reset_r )
160{
161   cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_RESET, PULSE_LINE);
195162   return 0;
196163}
197164
198static WRITE8_HANDLER( kc_sound_control_w ) {
165static WRITE8_HANDLER( kc_sound_control_w )
166{
199167   if ( offset == 0 )
200168      sound_nmi_enable = ( ( data >> 7 ) & 1 );
201169//  else
202170//      DAC_set_volume(0,( data == 1 ) ? 255 : 0,0);
203171}
204172
205static ADDRESS_MAP_START( kc_io_map, ADDRESS_SPACE_IO, 8 )
173static ADDRESS_MAP_START( kchamp_map, ADDRESS_SPACE_PROGRAM, 8 )
174   AM_RANGE(0x0000, 0xbfff) AM_ROM
175   AM_RANGE(0xc000, 0xdfff) AM_RAM
176   AM_RANGE(0xe000, 0xe3ff) AM_RAM_WRITE(kchamp_videoram_w) AM_BASE(&videoram)
177   AM_RANGE(0xe400, 0xe7ff) AM_RAM_WRITE(kchamp_colorram_w) AM_BASE(&colorram)
178   AM_RANGE(0xea00, 0xeaff) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
179   AM_RANGE(0xeb00, 0xffff) AM_RAM
180ADDRESS_MAP_END
181
182static ADDRESS_MAP_START( kchamp_io_map, ADDRESS_SPACE_IO, 8 )
206183   ADDRESS_MAP_GLOBAL_MASK(0xff)
207184   AM_RANGE(0x80, 0x80) AM_READ_PORT("DSW") AM_WRITE(kchamp_flipscreen_w)
208185   AM_RANGE(0x81, 0x81) AM_WRITE(control_w)
r4679r4680
212189   AM_RANGE(0xa8, 0xa8) AM_READWRITE(sound_reset_r, sound_command_w)
213190ADDRESS_MAP_END
214191
215static ADDRESS_MAP_START( kc_sound_io_map, ADDRESS_SPACE_IO, 8 )
192static ADDRESS_MAP_START( kchamp_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
193   AM_RANGE(0x0000, 0xdfff) AM_ROM
194   AM_RANGE(0xe000, 0xe2ff) AM_RAM
195ADDRESS_MAP_END
196
197static ADDRESS_MAP_START( kchamp_sound_io_map, ADDRESS_SPACE_IO, 8 )
216198   ADDRESS_MAP_GLOBAL_MASK(0xff)
217199   AM_RANGE(0x00, 0x01) AM_DEVWRITE("ay1", ay8910_data_address_w)
218200   AM_RANGE(0x02, 0x03) AM_DEVWRITE("ay2", ay8910_data_address_w)
r4679r4680
371353
372354
373355
374static INTERRUPT_GEN( kc_interrupt ) {
356static INTERRUPT_GEN( kc_interrupt )
357{
375358
376359   if ( nmi_enable )
377360      cpu_set_input_line(device, INPUT_LINE_NMI, PULSE_LINE);
378361}
379362
380static void msmint(const device_config *device) {
363static void msmint(const device_config *device)
364{
381365
382366   static int counter = 0;
383367
r4679r4680
388372
389373   msm_play_lo_nibble ^= 1;
390374
391   if ( !( counter ^= 1 ) ) {
392      if ( sound_nmi_enable ) {
393         cpu_set_input_line(device->machine->cpu[1], INPUT_LINE_NMI, PULSE_LINE );
375   if ( !( counter ^= 1 ) )
376   {
377      if ( sound_nmi_enable )
378      {
379         cputag_set_input_line(device->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE );
394380      }
395381   }
396382}
r4679r4680
405391* 1 Player Version  *
406392********************/
407393
408static INTERRUPT_GEN( sound_int ) {
409
394static INTERRUPT_GEN( sound_int )
395{
410396   if ( sound_nmi_enable )
411397      cpu_set_input_line(device, INPUT_LINE_NMI, PULSE_LINE);
412398}
r4679r4680
416402
417403   /* basic machine hardware */
418404   MDRV_CPU_ADD("maincpu", Z80, 3000000)   /* 12MHz / 4 = 3.0 MHz */
419   MDRV_CPU_PROGRAM_MAP(readmem,writemem)
420   MDRV_CPU_IO_MAP(io_map,0)
405   MDRV_CPU_PROGRAM_MAP(kchampvs_map,0)
406   MDRV_CPU_IO_MAP(kchampvs_io_map,0)
421407   MDRV_CPU_VBLANK_INT("screen", kc_interrupt)
422408
423409   MDRV_CPU_ADD("audiocpu", Z80, 3000000)   /* 12MHz / 4 = 3.0 MHz */
424   MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem)
425   MDRV_CPU_IO_MAP(sound_io_map,0)      /* irq's triggered from main cpu */
410   MDRV_CPU_PROGRAM_MAP(kchampvs_sound_map,0)
411   MDRV_CPU_IO_MAP(kchampvs_sound_io_map,0)      /* irq's triggered from main cpu */
426412                              /* nmi's from msm5205 */
427413
428414   /* video hardware */
r4679r4680
462448
463449   /* basic machine hardware */
464450   MDRV_CPU_ADD("maincpu", Z80, 3000000)   /* 12MHz / 4 = 3.0 MHz */
465   MDRV_CPU_PROGRAM_MAP(kc_readmem,kc_writemem)
466   MDRV_CPU_IO_MAP(kc_io_map,0)
451   MDRV_CPU_PROGRAM_MAP(kchamp_map,0)
452   MDRV_CPU_IO_MAP(kchamp_io_map,0)
467453   MDRV_CPU_VBLANK_INT("screen", kc_interrupt)
468454
469455   MDRV_CPU_ADD("audiocpu", Z80, 3000000)   /* 12MHz / 4 = 3.0 MHz */
470   MDRV_CPU_PROGRAM_MAP(kc_sound_readmem,kc_sound_writemem)
471   MDRV_CPU_IO_MAP(kc_sound_io_map,0)
456   MDRV_CPU_PROGRAM_MAP(kchamp_sound_map,0)
457   MDRV_CPU_IO_MAP(kchamp_sound_io_map,0)
472458   MDRV_CPU_PERIODIC_INT(sound_int, 125)   /* Hz */
473459                                 /* irq's triggered from main cpu */
474460                                 /* nmi's from 125 Hz clock */
r4679r4680
498484   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
499485
500486   MDRV_SOUND_ADD("dac", DAC, 0)
501   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
487   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.15) /* guess: using volume 0.50 makes the sound to clip a lot */
502488MACHINE_DRIVER_END
503489
504490
r4679r4680
679665static DRIVER_INIT( kchampvs )
680666{
681667   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
682   UINT8 *decrypted = auto_malloc(0x10000);
668   UINT8 *decrypted = auto_alloc_array(machine, UINT8, 0x10000);
683669   UINT8 *rom = memory_region(machine, "maincpu");
684670   int A;
685671
src/mame/drivers/olibochu.c
r4679r4680
167167   static int cmd;
168168   int c;
169169
170
171170   if (offset == 0) cmd = (cmd & 0x00ff) | (data << 8);
172171   else cmd = (cmd & 0xff00) | data;
173172
r4679r4680
178177}
179178
180179
181static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 )
182   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
183   AM_RANGE(0x8000, 0x87ff) AM_READ(SMH_RAM)
180static ADDRESS_MAP_START( olibochu_map, ADDRESS_SPACE_PROGRAM, 8 )
181   AM_RANGE(0x0000, 0x7fff) AM_ROM
182   AM_RANGE(0x8000, 0x83ff) AM_RAM_WRITE(olibochu_videoram_w) AM_BASE(&videoram)
183   AM_RANGE(0x8400, 0x87ff) AM_RAM_WRITE(olibochu_colorram_w) AM_BASE(&colorram)
184184   AM_RANGE(0xa000, 0xa000) AM_READ_PORT("IN0")
185185   AM_RANGE(0xa001, 0xa001) AM_READ_PORT("IN1")
186186   AM_RANGE(0xa002, 0xa002) AM_READ_PORT("IN2")
187187   AM_RANGE(0xa003, 0xa003) AM_READ_PORT("DSW0")
188188   AM_RANGE(0xa004, 0xa004) AM_READ_PORT("DSW1")
189189   AM_RANGE(0xa005, 0xa005) AM_READ_PORT("DSW2")
190   AM_RANGE(0xf000, 0xffff) AM_READ(SMH_RAM)
191ADDRESS_MAP_END
192
193static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 )
194   AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM)
195   AM_RANGE(0x8000, 0x83ff) AM_WRITE(olibochu_videoram_w) AM_BASE(&videoram)
196   AM_RANGE(0x8400, 0x87ff) AM_WRITE(olibochu_colorram_w) AM_BASE(&colorram)
197190   AM_RANGE(0xa800, 0xa801) AM_WRITE(sound_command_w)
198191   AM_RANGE(0xa802, 0xa802) AM_WRITE(olibochu_flipscreen_w)   /* bit 6 = enable sound? */
199   AM_RANGE(0xf000, 0xffff) AM_WRITE(SMH_RAM)
200   AM_RANGE(0xf400, 0xf41f) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
201   AM_RANGE(0xf440, 0xf47f) AM_WRITE(SMH_RAM) AM_BASE(&spriteram_2) AM_SIZE(&spriteram_2_size)
192   AM_RANGE(0xf400, 0xf41f) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
193   AM_RANGE(0xf440, 0xf47f) AM_RAM AM_BASE(&spriteram_2) AM_SIZE(&spriteram_2_size)
194   AM_RANGE(0xf000, 0xffff) AM_RAM
202195ADDRESS_MAP_END
203196
204static ADDRESS_MAP_START( sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
205   AM_RANGE(0x0000, 0x1fff) AM_READ(SMH_ROM)
206   AM_RANGE(0x6000, 0x63ff) AM_READ(SMH_RAM)
197static ADDRESS_MAP_START( olibochu_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
198   AM_RANGE(0x0000, 0x1fff) AM_ROM
199   AM_RANGE(0x6000, 0x63ff) AM_RAM
207200   AM_RANGE(0x7000, 0x7000) AM_READ(soundlatch_r)   /* likely ay8910 input port, not direct */
208ADDRESS_MAP_END
209
210static ADDRESS_MAP_START( sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
211   AM_RANGE(0x0000, 0x1fff) AM_WRITE(SMH_ROM)
212   AM_RANGE(0x6000, 0x63ff) AM_WRITE(SMH_RAM)
213201   AM_RANGE(0x7000, 0x7001) AM_DEVWRITE("ay", ay8910_address_data_w)
214202ADDRESS_MAP_END
215203
216204
217
218205static INPUT_PORTS_START( olibochu )
219206   PORT_START("IN0")
220207   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 )
r4679r4680
367354
368355   /* basic machine hardware */
369356   MDRV_CPU_ADD("maincpu", Z80, 4000000)   /* 4 MHz ?? */
370   MDRV_CPU_PROGRAM_MAP(readmem,writemem)
357   MDRV_CPU_PROGRAM_MAP(olibochu_map,0)
371358   MDRV_CPU_VBLANK_INT_HACK(olibochu_interrupt,2)
372359
373360   MDRV_CPU_ADD("audiocpu", Z80, 4000000)   /* 4 MHz ?? */
374   MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem)
375   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
361   MDRV_CPU_PROGRAM_MAP(olibochu_sound_map,0)
362   MDRV_CPU_PERIODIC_INT(irq0_line_hold,60) //???
376363
364//  MDRV_QUANTUM_PERFECT_CPU("maincpu")
365
377366   /* video hardware */
378367   MDRV_SCREEN_ADD("screen", RASTER)
379368   MDRV_SCREEN_REFRESH_RATE(60)
src/mame/drivers/ultratnk.c
r4679r4680
2929
3030static CUSTOM_INPUT( get_joystick )
3131{
32   UINT8 joy = input_port_read(field->port->machine, param) & 3;
32   UINT8 joy = input_port_read(field->port->machine, (const char *)param) & 3;
3333
3434   if (joy == 1)
3535   {
r4679r4680
5656   watchdog_enable(machine, input_port_read(machine, "IN0") & 0x40);
5757
5858   if (input_port_read(machine, "IN0") & 0x40)
59      cpu_set_input_line(machine->cpu[0], INPUT_LINE_NMI, PULSE_LINE);
59      cputag_set_input_line(machine, "maincpu", INPUT_LINE_NMI, PULSE_LINE);
6060
6161   timer_set(machine, video_screen_get_time_until_pos(machine->primary_screen, scanline, 0), NULL, scanline, nmi_callback);
6262}
src/mame/drivers/m90.c
r4679r4680
9090
9191/***************************************************************************/
9292
93static ADDRESS_MAP_START( main_cpu, ADDRESS_SPACE_PROGRAM, 16 )
93static ADDRESS_MAP_START( m90_main_cpu_map, ADDRESS_SPACE_PROGRAM, 16 )
9494   AM_RANGE(0x00000, 0x7ffff) AM_ROM
9595   AM_RANGE(0x80000, 0x8ffff) AM_ROMBANK(1)   /* Quiz F1 only */
9696   AM_RANGE(0xa0000, 0xa3fff) AM_RAM
r4679r4680
9999   AM_RANGE(0xffff0, 0xfffff) AM_ROM
100100ADDRESS_MAP_END
101101
102static ADDRESS_MAP_START( dynablsb_main_cpu, ADDRESS_SPACE_PROGRAM, 16 )
102static ADDRESS_MAP_START( dynablsb_main_cpu_map, ADDRESS_SPACE_PROGRAM, 16 )
103103   AM_RANGE(0x00000, 0x3ffff) AM_ROM
104104   AM_RANGE(0x6000e, 0x60fff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)
105105   AM_RANGE(0xa0000, 0xa3fff) AM_RAM
r4679r4680
108108   AM_RANGE(0xffff0, 0xfffff) AM_ROM
109109ADDRESS_MAP_END
110110
111static ADDRESS_MAP_START( bomblord_main_cpu, ADDRESS_SPACE_PROGRAM, 16 )
111static ADDRESS_MAP_START( bomblord_main_cpu_map, ADDRESS_SPACE_PROGRAM, 16 )
112112   AM_RANGE(0x00000, 0x7ffff) AM_ROM
113113   AM_RANGE(0xa0000, 0xa3fff) AM_RAM
114114   AM_RANGE(0xc000e, 0xc0fff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)
r4679r4680
117117   AM_RANGE(0xffff0, 0xfffff) AM_ROM
118118ADDRESS_MAP_END
119119
120static ADDRESS_MAP_START( main_cpu_io_map, ADDRESS_SPACE_IO, 16 )
120static ADDRESS_MAP_START( m90_main_cpu_io_map, ADDRESS_SPACE_IO, 16 )
121121   AM_RANGE(0x00, 0x01) AM_WRITE(m72_sound_command_w)
122122   AM_RANGE(0x00, 0x01) AM_READ_PORT("P1_P2")
123123   AM_RANGE(0x02, 0x03) AM_WRITE(m90_coincounter_w)
r4679r4680
128128   AM_RANGE(0x80, 0x8f) AM_WRITE(m90_video_control_w)
129129ADDRESS_MAP_END
130130
131static ADDRESS_MAP_START( dynablsb_cpu_io, ADDRESS_SPACE_IO, 16 )
131static ADDRESS_MAP_START( dynablsb_cpu_io_map, ADDRESS_SPACE_IO, 16 )
132132   AM_RANGE(0x00, 0x01) AM_WRITE(m72_sound_command_w)
133133   AM_RANGE(0x00, 0x01) AM_READ_PORT("P1_P2")
134134   AM_RANGE(0x02, 0x03) AM_WRITE(m90_coincounter_w)
r4679r4680
142142
143143/*****************************************************************************/
144144
145static ADDRESS_MAP_START( sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
146   AM_RANGE(0x0000, 0xefff) AM_READ(SMH_ROM)
147   AM_RANGE(0xf000, 0xffff) AM_READ(SMH_RAM)
145static ADDRESS_MAP_START( m90_sound_cpu_map, ADDRESS_SPACE_PROGRAM, 8 )
146   AM_RANGE(0x0000, 0xefff) AM_ROM
147   AM_RANGE(0xf000, 0xffff) AM_RAM
148148ADDRESS_MAP_END
149149
150static ADDRESS_MAP_START( sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
151   AM_RANGE(0x0000, 0xefff) AM_WRITE(SMH_ROM)
152   AM_RANGE(0xf000, 0xffff) AM_WRITE(SMH_RAM)
153ADDRESS_MAP_END
154
155static ADDRESS_MAP_START( sound_io_map, ADDRESS_SPACE_IO, 8 )
150static ADDRESS_MAP_START( m90_sound_cpu_io_map, ADDRESS_SPACE_IO, 8 )
156151   ADDRESS_MAP_GLOBAL_MASK(0xff)
157152   AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
158153   AM_RANGE(0x80, 0x80) AM_READ(soundlatch_r)
r4679r4680
705700static MACHINE_DRIVER_START( m90 )
706701   /* basic machine hardware */
707702   MDRV_CPU_ADD("maincpu", V30,XTAL_32MHz/2/2) /* verified clock on cpu is 16Mhz but probably divided internally by 2 */
708   MDRV_CPU_PROGRAM_MAP(main_cpu,0)
709   MDRV_CPU_IO_MAP(main_cpu_io_map,0)
703   MDRV_CPU_PROGRAM_MAP(m90_main_cpu_map,0)
704   MDRV_CPU_IO_MAP(m90_main_cpu_io_map,0)
710705   MDRV_CPU_VBLANK_INT("screen", m90_interrupt)
711706
712707   MDRV_CPU_ADD("soundcpu", Z80, XTAL_3_579545MHz) /* verified on pcb */
713   MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem)
714   MDRV_CPU_IO_MAP(sound_io_map,0)
708   MDRV_CPU_PROGRAM_MAP(m90_sound_cpu_map,0)
709   MDRV_CPU_IO_MAP(m90_sound_cpu_io_map,0)
715710   MDRV_CPU_VBLANK_INT_HACK(nmi_line_pulse,128)   /* clocked by V1? (Vigilante) */
716711                        /* IRQs are generated by main Z80 and YM2151 */
717712
r4679r4680
786781   /* basic machine hardware */
787782   MDRV_CPU_ADD("maincpu", V30,XTAL_32MHz/2/2) /* verified clock on cpu is 16Mhz but probably divided internally by 2 */
788783   MDRV_CPU_CONFIG(bomberman_config)
789
790   MDRV_CPU_PROGRAM_MAP(main_cpu,0)
791   MDRV_CPU_IO_MAP(main_cpu_io_map,0)
784   MDRV_CPU_PROGRAM_MAP(m90_main_cpu_map,0)
785   MDRV_CPU_IO_MAP(m90_main_cpu_io_map,0)
792786   MDRV_CPU_VBLANK_INT("screen", m90_interrupt)
793787
794788   MDRV_CPU_ADD("soundcpu", Z80, XTAL_3_579545MHz) /* verified on pcb */
795   MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem)
796   MDRV_CPU_IO_MAP(sound_io_map,0)
789   MDRV_CPU_PROGRAM_MAP(m90_sound_cpu_map,0)
790   MDRV_CPU_IO_MAP(m90_sound_cpu_io_map,0)
797791   MDRV_CPU_VBLANK_INT_HACK(nmi_line_pulse,128)   /* clocked by V1? (Vigilante) */
798792                        /* IRQs are generated by main Z80 and YM2151 */
799793   MDRV_MACHINE_RESET(m72_sound)
r4679r4680
831825   /* basic machine hardware */
832826   MDRV_CPU_ADD("maincpu", V30,XTAL_32MHz/2/2) /* verified clock on cpu is 16Mhz but probably divided internally by 2 */
833827   MDRV_CPU_CONFIG(dynablaster_config)
834
835   MDRV_CPU_PROGRAM_MAP(main_cpu,0)
836   MDRV_CPU_IO_MAP(main_cpu_io_map,0)
828   MDRV_CPU_PROGRAM_MAP(m90_main_cpu_map,0)
829   MDRV_CPU_IO_MAP(m90_main_cpu_io_map,0)
837830   MDRV_CPU_VBLANK_INT("screen", m90_interrupt)
838831
839832   MDRV_CPU_ADD("soundcpu", Z80, XTAL_3_579545MHz) /* verified on pcb */
840   MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem)
833   MDRV_CPU_PROGRAM_MAP(m90_sound_cpu_map,0)
841834   MDRV_CPU_IO_MAP(bbmanw_sound_io_map,0)
842835   MDRV_CPU_VBLANK_INT_HACK(nmi_line_pulse,128)   /* clocked by V1? (Vigilante) */
843836                        /* IRQs are generated by main Z80 and YM2151 */
r4679r4680
875868
876869   MDRV_IMPORT_FROM( bbmanw )
877870   MDRV_CPU_MODIFY("soundcpu")
878   MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem)
879   MDRV_CPU_IO_MAP(sound_io_map,0)
871   MDRV_CPU_PROGRAM_MAP(m90_sound_cpu_map,0)
872   MDRV_CPU_IO_MAP(m90_sound_cpu_io_map,0)
880873   MDRV_CPU_VBLANK_INT_HACK(nmi_line_pulse,128)   /* clocked by V1? (Vigilante) */
881874                        /* IRQs are generated by main Z80 and YM2151 */
882875
r4679r4680
887880   MDRV_IMPORT_FROM( bbmanw )
888881   MDRV_CPU_MODIFY("maincpu")
889882   MDRV_CPU_CONFIG(no_table)
890   MDRV_CPU_PROGRAM_MAP(bomblord_main_cpu,0)
891   MDRV_CPU_IO_MAP(dynablsb_cpu_io,0)
883   MDRV_CPU_PROGRAM_MAP(bomblord_main_cpu_map,0)
884   MDRV_CPU_IO_MAP(dynablsb_cpu_io_map,0)
892885
893886   MDRV_VIDEO_START(bomblord)
894887   MDRV_VIDEO_UPDATE(bomblord)
r4679r4680
901894
902895   /* basic machine hardware */
903896   MDRV_CPU_ADD("maincpu", V30,32000000/4)
904   MDRV_CPU_PROGRAM_MAP(dynablsb_main_cpu,0)
905   MDRV_CPU_IO_MAP(dynablsb_cpu_io,0)
897   MDRV_CPU_PROGRAM_MAP(dynablsb_main_cpu_map,0)
898   MDRV_CPU_IO_MAP(dynablsb_cpu_io_map,0)
906899   MDRV_CPU_VBLANK_INT("screen", m90_interrupt)
907900
908901   MDRV_CPU_ADD("soundcpu", Z80, XTAL_3_579545MHz)   /* 3.579545 MHz */
909   MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem)
910   MDRV_CPU_IO_MAP(sound_io_map,0)
902   MDRV_CPU_PROGRAM_MAP(m90_sound_cpu_map,0)
903   MDRV_CPU_IO_MAP(m90_sound_cpu_io_map,0)
911904   MDRV_CPU_VBLANK_INT_HACK(nmi_line_pulse,128)   /* clocked by V1? (Vigilante) */
912905                        /* IRQs are generated by main Z80 and YM2151 */
913906   MDRV_MACHINE_RESET(m72_sound)
src/mame/drivers/taitogn.c
r4679r4680
484484
485485static void install_handlers(running_machine *machine, int mode)
486486{
487   const address_space *a = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
487   const address_space *a = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
488488   if(mode == 0) {
489489      // Mode 0 has access to the subbios, the mn102 flash and the rf5c296 mem zone
490490      memory_install_readwrite32_handler(a, 0x1f000000, 0x1f1fffff, 0, 0, flash_subbios_r, flash_subbios_w);
491491      memory_install_readwrite32_handler(a, 0x1f200000, 0x1f2fffff, 0, 0, rf5c296_mem_r, rf5c296_mem_w);
492492      memory_install_readwrite32_handler(a, 0x1f300000, 0x1f37ffff, 0, 0, flash_mn102_r, flash_mn102_w);
493      memory_install_readwrite32_handler(a, 0x1f380000, 0x1f5fffff, 0, 0, SMH_NOP, SMH_NOP);
493      memory_install_readwrite32_handler(a, 0x1f380000, 0x1f5fffff, 0, 0, (read32_space_func)SMH_NOP, (write32_space_func)SMH_NOP);
494494
495495   } else {
496496      // Mode 1 has access to the 3 samples flashes
r4679r4680
703703
704704   if( param )
705705   {
706      timer_adjust_oneshot( dip_timer, cpu_clocks_to_attotime( machine->cpu[0], 50 ), 0 );
706      timer_adjust_oneshot(dip_timer, cputag_clocks_to_attotime(machine, "maincpu", 50), 0);
707707   }
708708}
709709
r4679r4680
813813static DRIVER_INIT( coh3002t_mp )
814814{
815815   DRIVER_INIT_CALL(coh3002t);
816   memory_install_read32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1fa10100, 0x1fa10103, 0, 0, gnet_mahjong_panel_r );
816   memory_install_read32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1fa10100, 0x1fa10103, 0, 0, gnet_mahjong_panel_r );
817817}
818818
819819static MACHINE_RESET( coh3002t )
src/mame/drivers/tugboat.c
r4679r4680
186186
187187static TIMER_CALLBACK( interrupt_gen )
188188{
189   cpu_set_input_line(machine->cpu[0], 0, HOLD_LINE);
189   cputag_set_input_line(machine, "maincpu", 0, HOLD_LINE);
190190   timer_set(machine, video_screen_get_frame_period(machine->primary_screen), NULL, 0, interrupt_gen);
191191}
192192
src/mame/drivers/kingdrby.c
r4679r4680
242242
243243static WRITE8_DEVICE_HANDLER( sound_cmd_w )
244244{
245   cpu_set_input_line(device->machine->cpu[2], INPUT_LINE_NMI, PULSE_LINE);
245   cputag_set_input_line(device->machine, "soundcpu", INPUT_LINE_NMI, PULSE_LINE);
246246   sound_cmd = data;
247247   /* soundlatch is unneeded since we are already using perfect interleave. */
248248   // soundlatch_w(space,0, data);
src/mame/drivers/gunbustr.c
r4679r4680
6464
6565static TIMER_CALLBACK( gunbustr_interrupt5 )
6666{
67   cpu_set_input_line(machine->cpu[0],5,HOLD_LINE);
67   cputag_set_input_line(machine, "maincpu", 5, HOLD_LINE);
6868}
6969
7070static INTERRUPT_GEN( gunbustr_interrupt )
r4679r4680
174174             MEMORY STRUCTURES
175175***********************************************************/
176176
177static ADDRESS_MAP_START( gunbustr_readmem, ADDRESS_SPACE_PROGRAM, 32 )
178   AM_RANGE(0x000000, 0x0fffff) AM_READ(SMH_ROM)
179   AM_RANGE(0x200000, 0x21ffff) AM_READ(SMH_RAM)   /* main CPUA ram */
180   AM_RANGE(0x300000, 0x301fff) AM_READ(SMH_RAM)   /* Sprite ram */
181   AM_RANGE(0x390000, 0x3907ff) AM_READ(SMH_RAM)   /* Sound shared ram */
177static ADDRESS_MAP_START( gunbustr_map, ADDRESS_SPACE_PROGRAM, 32 )
178   AM_RANGE(0x000000, 0x0fffff) AM_ROM
179   AM_RANGE(0x200000, 0x21ffff) AM_RAM AM_BASE(&gunbustr_ram)                              /* main CPUA ram */
180   AM_RANGE(0x300000, 0x301fff) AM_RAM AM_BASE(&spriteram32) AM_SIZE(&spriteram_size)            /* Sprite ram */
181   AM_RANGE(0x380000, 0x380003) AM_WRITE(motor_control_w)                                 /* motor, lamps etc. */
182   AM_RANGE(0x390000, 0x3907ff) AM_RAM AM_BASE(&f3_shared_ram)                              /* Sound shared ram */
182183   AM_RANGE(0x400000, 0x400003) AM_READ_PORT("P1_P2")
183184   AM_RANGE(0x400004, 0x400007) AM_READ_PORT("SYSTEM")
184   AM_RANGE(0x500000, 0x500003) AM_READ(gunbustr_gun_r)   /* gun coord read */
185   AM_RANGE(0x800000, 0x80ffff) AM_READ(TC0480SCP_long_r)
186   AM_RANGE(0x830000, 0x83002f) AM_READ(TC0480SCP_ctrl_long_r)
187   AM_RANGE(0x900000, 0x901fff) AM_READ(SMH_RAM)   /* Palette ram */
188   AM_RANGE(0xc00000, 0xc03fff) AM_READ(SMH_RAM)   /* network ram ?? */
185   AM_RANGE(0x400000, 0x400007) AM_WRITE(gunbustr_input_w)                                 /* eerom etc. */
186   AM_RANGE(0x500000, 0x500003) AM_READWRITE(gunbustr_gun_r, gunbustr_gun_w)                  /* gun coord read */
187   AM_RANGE(0x800000, 0x80ffff) AM_READWRITE(TC0480SCP_long_r, TC0480SCP_long_w)
188   AM_RANGE(0x830000, 0x83002f) AM_READWRITE(TC0480SCP_ctrl_long_r, TC0480SCP_ctrl_long_w)
189   AM_RANGE(0x900000, 0x901fff) AM_RAM_WRITE(gunbustr_palette_w) AM_BASE(&paletteram32)         /* Palette ram */
190   AM_RANGE(0xc00000, 0xc03fff) AM_RAM                                                /* network ram ?? */
189191ADDRESS_MAP_END
190192
191static ADDRESS_MAP_START( gunbustr_writemem, ADDRESS_SPACE_PROGRAM, 32 )
192   AM_RANGE(0x000000, 0x0fffff) AM_WRITE(SMH_ROM)
193   AM_RANGE(0x200000, 0x21ffff) AM_WRITE(SMH_RAM) AM_BASE(&gunbustr_ram)
194   AM_RANGE(0x300000, 0x301fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram32) AM_SIZE(&spriteram_size)
195   AM_RANGE(0x380000, 0x380003) AM_WRITE(motor_control_w)   /* motor, lamps etc. */
196   AM_RANGE(0x390000, 0x3907ff) AM_WRITE(SMH_RAM) AM_BASE(&f3_shared_ram)
197   AM_RANGE(0x400000, 0x400007) AM_WRITE(gunbustr_input_w)   /* eerom etc. */
198   AM_RANGE(0x500000, 0x500003) AM_WRITE(gunbustr_gun_w)   /* gun int request */
199   AM_RANGE(0x800000, 0x80ffff) AM_WRITE(TC0480SCP_long_w)
200   AM_RANGE(0x830000, 0x83002f) AM_WRITE(TC0480SCP_ctrl_long_w)
201   AM_RANGE(0x900000, 0x901fff) AM_WRITE(gunbustr_palette_w) AM_BASE(&paletteram32)
202   AM_RANGE(0xc00000, 0xc03fff) AM_WRITE(SMH_RAM)   /* network ram ?? */
203ADDRESS_MAP_END
204
205193/***********************************************************
206194             INPUT PORTS (dips in eprom)
207195***********************************************************/
r4679r4680
361349
362350   /* basic machine hardware */
363351   MDRV_CPU_ADD("maincpu", M68EC020, 16000000)   /* 16 MHz */
364   MDRV_CPU_PROGRAM_MAP(gunbustr_readmem,gunbustr_writemem)
352   MDRV_CPU_PROGRAM_MAP(gunbustr_map,0)
365353   MDRV_CPU_VBLANK_INT("screen", gunbustr_interrupt) /* VBL */
366354
367355   TAITO_F3_SOUND_SYSTEM_CPU(16000000)
r4679r4680
431419static DRIVER_INIT( gunbustr )
432420{
433421   /* Speedup handler */
434   memory_install_read32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x203acc, 0x203acf, 0, 0, main_cycle_r);
422   memory_install_read32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x203acc, 0x203acf, 0, 0, main_cycle_r);
435423}
436424
437425GAME( 1992, gunbustr, 0,      gunbustr, gunbustr, gunbustr, ORIENTATION_FLIP_X, "Taito Corporation", "Gunbuster (Japan)", 0 )
src/mame/drivers/scotrsht.c
r4679r4680
6565
6666static WRITE8_HANDLER( scotrsht_soundlatch_w )
6767{
68   soundlatch_w(space,0,data);
69   cpu_set_input_line(space->machine->cpu[1], 0, HOLD_LINE);
68   soundlatch_w(space, 0, data);
69   cputag_set_input_line(space->machine, "audiocpu", 0, HOLD_LINE);
7070}
7171
7272static ADDRESS_MAP_START( scotrsht_map, ADDRESS_SPACE_PROGRAM, 8 )
src/mame/drivers/taito_z.c
r4679r4680
41934193   ROM_LOAD( "c09-23.14", 0x00000, 0x00100, CRC(fbf81f30) SHA1(c868452c334792345dcced075f6df69cff9e31ca) )   // road A/B internal priority
41944194ROM_END
41954195
4196ROM_START( scin )
4197   ROM_REGION( 0x80000, "maincpu", 0 )   /* 512K for 68000 code (CPU A) */
4198   ROM_LOAD16_BYTE( "ic37.37", 0x00000, 0x20000, CRC(33fb159c) SHA1(b004a5249414f69768d8a951ded3c104ea107b32) )
4199   ROM_LOAD16_BYTE( "ic40.38", 0x00001, 0x20000, CRC(657df3f2) SHA1(80e30961e2cdcb834d2cbd48803ace68acaab422) )
4200   ROM_LOAD16_BYTE( "ic38.42", 0x40000, 0x20000, CRC(0a09b90b) SHA1(0970644a0d79ab3898187849bec6c7cf598652f3) )
4201   ROM_LOAD16_BYTE( "ic41.39", 0x40001, 0x20000, CRC(43167b2a) SHA1(1e6f2a113deb57df869ec2ceb99d6a7ecfa5d7e5) )
4202
4203   ROM_REGION( 0x20000, "sub", 0 )   /* 128K for 68000 code (CPU B) */
4204   ROM_LOAD16_BYTE( "c09-33.6", 0x00000, 0x10000, CRC(cf4e6c5b) SHA1(8d6720b605b8e0c7f0473ba452c79bf5efc2615d) ) /* Actual label is "C09 33*" */
4205   ROM_LOAD16_BYTE( "c09-32.5", 0x00001, 0x10000, CRC(a4713719) SHA1(b1110e397d3407ec63975cdd92a23cbb16348200) ) /* Actual label is "C09 32*" */
4206
4207   ROM_REGION( 0x2c000, "audiocpu", 0 )   /* Z80 sound cpu */
4208   ROM_LOAD( "c09-34.31",   0x00000, 0x04000, CRC(a21b3151) SHA1(f59c7b1ba5edf97d72670ee194ce9fdc5c5b9a58) )
4209   ROM_CONTINUE(            0x10000, 0x1c000 )   /* banked stuff */
4210
4211   ROM_REGION( 0x80000, "gfx1", ROMREGION_DISPOSE )
4212   ROM_LOAD( "c09-05.16", 0x00000, 0x80000, CRC(890b38f0) SHA1(b478c96214ce027926346a4653250c8ee8a98bdc) )   /* SCR 8x8 */
4213
4214   ROM_REGION( 0x200000, "gfx2", ROMREGION_DISPOSE )
4215   ROM_LOAD32_BYTE( "c09-04.52", 0x000000, 0x080000, CRC(2cbb3c9b) SHA1(9e3d95f76f5f5d385b6a9516af781aefef1eb0ca) )   /* OBJ 16x8 */
4216   ROM_LOAD32_BYTE( "c09-02.53", 0x000001, 0x080000, CRC(a83a0389) SHA1(932788b5b5f01326d0fbb2b9fdb94a8c7c004db3) )
4217   ROM_LOAD32_BYTE( "c09-03.54", 0x000002, 0x080000, CRC(a31d0e80) SHA1(dfeff1b89dd7b3f19b26e77f2d66f6448cb00553) )
4218   ROM_LOAD32_BYTE( "c09-01.55", 0x000003, 0x080000, CRC(64bfea10) SHA1(15ea43092027b1717d0f24fbe6ac2cdf11a7ddc6) )
4219
4220   ROM_REGION( 0x80000, "gfx3", 0 )   /* don't dispose */
4221   ROM_LOAD( "c09-07.15", 0x00000, 0x80000, CRC(963bc82b) SHA1(e3558aecd1b82ddbf10ab2b71843a3664705f1f1) )   /* ROD, road lines */
4222
4223   ROM_REGION16_LE( 0x80000, "user1", 0 )
4224   ROM_LOAD16_WORD( "c09-06.37", 0x00000, 0x80000, CRC(12df6d7b) SHA1(8ce742eb3f7eb6283b5ca32bb520d1cc7684d515) )   /* STY spritemap */
4225
4226   ROM_REGION( 0x180000, "ym", 0 )   /* ADPCM samples */
4227   ROM_LOAD( "c09-14.42", 0x000000, 0x080000, CRC(ad78bf46) SHA1(4020744bbdc4b9ec3dee1a9d7b5ffa8def43d7b2) )
4228   ROM_LOAD( "c09-13.43", 0x080000, 0x080000, CRC(d57c41d3) SHA1(3375a1fc6389840544b9fdb96b2fafbc8e3276e2) )
4229   ROM_LOAD( "c09-12.44", 0x100000, 0x080000, CRC(56c99fa5) SHA1(3f9a6bc89d847cc4c99d35f98157ea3f187c0f98) )
4230
4231   ROM_REGION( 0x80000, "ym.deltat", 0 )   /* Delta-T samples */
4232   ROM_LOAD( "c09-15.29", 0x00000, 0x80000, CRC(e63b9095) SHA1(c6ea670b5a90ab39429259ec1fefb2bde5d0213f) )
4233
4234   ROM_REGION( 0x10000, "user2", 0 )   /* unused ROMs */
4235   ROM_LOAD( "c09-16.17", 0x00000, 0x10000, CRC(7245a6f6) SHA1(5bdde4e3bcde8c59dc84478c3cc079d7ef8ee9c5) )
4236   ROM_LOAD( "c09-20.71", 0x00000, 0x00100, CRC(cd8ffd80) SHA1(133bcd291a3751bce5293cb6b685f87258e8db19) )   // road/sprite priority and palette select
4237   ROM_LOAD( "c09-23.14", 0x00000, 0x00100, CRC(fbf81f30) SHA1(c868452c334792345dcced075f6df69cff9e31ca) )   // road A/B internal priority
4238
4239ROM_END
4240
41964241ROM_START( nightstr )
41974242   ROM_REGION( 0x80000, "maincpu", 0 )   /* 512K for 68000 code (CPU A) */
41984243   ROM_LOAD16_BYTE( "b91-45.bin", 0x00000, 0x20000, CRC(7ad63421) SHA1(4ecfc3c8cd691d878e5d9212ccff0d225bb06bd9) )
r4679r4680
46474692GAMEL(1989, scia,     sci,      sci,      sci,      taitoz,   ROT0,               "Taito Corporation Japan", "Special Criminal Investigation (World set 2)", GAME_IMPERFECT_GRAPHICS, layout_contcirc )
46484693GAMEL(1989, scij,     sci,      sci,      scij,     taitoz,   ROT0,               "Taito Corporation", "Special Criminal Investigation (Japan)", GAME_IMPERFECT_GRAPHICS, layout_contcirc )
46494694GAMEL(1989, sciu,     sci,      sci,      sciu,     taitoz,   ROT0,               "Taito America Corporation", "Special Criminal Investigation (US)", GAME_IMPERFECT_GRAPHICS, layout_contcirc )
4695GAMEL(1991, scin,     sci,      sci,      sci,      taitoz,   ROT0,               "Taito Corporation Japan", "Special Criminal Investigation (Negro Torino hack)", GAME_IMPERFECT_GRAPHICS, layout_contcirc )
46504696GAME( 1989, nightstr, 0,        nightstr, nightstr, taitoz,   ROT0,               "Taito Corporation Japan", "Night Striker (World)", GAME_IMPERFECT_GRAPHICS )
46514697GAME( 1989, nghtstrj, nightstr, nightstr, nghtstrj, taitoz,   ROT0,               "Taito Corporation", "Night Striker (Japan)", GAME_IMPERFECT_GRAPHICS )
46524698GAME( 1989, nghtstru, nightstr, nightstr, nghtstru, taitoz,   ROT0,               "Taito America Corporation", "Night Striker (US)", GAME_IMPERFECT_GRAPHICS )
src/mame/drivers/phoenix.c
r4679r4680
3939
4040static ADDRESS_MAP_START( phoenix_memory_map, ADDRESS_SPACE_PROGRAM, 8 )
4141   AM_RANGE(0x0000, 0x3fff) AM_ROM
42   AM_RANGE(0x4000, 0x4fff) AM_READWRITE(SMH_BANK1, phoenix_videoram_w)   /* 2 pages selected by bit 0 of the video register */
42   AM_RANGE(0x4000, 0x4fff) AM_READWRITE(SMH_BANK(1), phoenix_videoram_w)   /* 2 pages selected by bit 0 of the video register */
4343   AM_RANGE(0x5000, 0x53ff) AM_WRITE(phoenix_videoreg_w)
4444   AM_RANGE(0x5800, 0x5bff) AM_WRITE(phoenix_scroll_w)
4545   AM_RANGE(0x6000, 0x63ff) AM_DEVWRITE("discrete", phoenix_sound_control_a_w)
r4679r4680
5050
5151static ADDRESS_MAP_START( pleiads_memory_map, ADDRESS_SPACE_PROGRAM, 8 )
5252   AM_RANGE(0x0000, 0x3fff) AM_ROM
53   AM_RANGE(0x4000, 0x4fff) AM_READWRITE(SMH_BANK1, phoenix_videoram_w)   /* 2 pages selected by bit 0 of the video register */
53   AM_RANGE(0x4000, 0x4fff) AM_READWRITE(SMH_BANK(1), phoenix_videoram_w)   /* 2 pages selected by bit 0 of the video register */
5454   AM_RANGE(0x5000, 0x53ff) AM_WRITE(pleiads_videoreg_w)
5555   AM_RANGE(0x5800, 0x5bff) AM_WRITE(phoenix_scroll_w)
5656   AM_RANGE(0x6000, 0x63ff) AM_WRITE(pleiads_sound_control_a_w)
r4679r4680
6161
6262static ADDRESS_MAP_START( survival_memory_map, ADDRESS_SPACE_PROGRAM, 8 )
6363   AM_RANGE(0x0000, 0x3fff) AM_ROM
64   AM_RANGE(0x4000, 0x4fff) AM_READWRITE(SMH_BANK1, phoenix_videoram_w)   /* 2 pages selected by bit 0 of the video register */
64   AM_RANGE(0x4000, 0x4fff) AM_READWRITE(SMH_BANK(1), phoenix_videoram_w)   /* 2 pages selected by bit 0 of the video register */
6565   AM_RANGE(0x5000, 0x53ff) AM_WRITE(phoenix_videoreg_w)
6666   AM_RANGE(0x5800, 0x5bff) AM_WRITE(phoenix_scroll_w)
6767   AM_RANGE(0x6800, 0x68ff) AM_DEVWRITE("ay", ay8910_address_w)
r4679r4680
10581058static DRIVER_INIT( condor )
10591059{
10601060   /* additional inputs for coinage */
1061   memory_install_read_port_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x5000, 0x5000, 0, 0, "DSW1");
1061   memory_install_read_port_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x5000, 0x5000, 0, 0, "DSW1");
10621062}
10631063
10641064
src/mame/drivers/lastfght.c
r4679r4680
8080   for (i = 0; i < 2; i++)
8181      lastfght_bitmap[i] = video_screen_auto_bitmap_alloc(machine->primary_screen);
8282
83   colorram = auto_malloc(256*3);
83   colorram = auto_alloc_array(machine, UINT8, 256*3);
8484}
8585
8686
r4679r4680
455455         generic_pulse_irq_line(device, 0);
456456         break;
457457      default:
458         cpu_set_input_line(device->machine->cpu[0], H8_METRO_TIMER_HACK, HOLD_LINE);
458         cputag_set_input_line(device->machine, "maincpu", H8_METRO_TIMER_HACK, HOLD_LINE);
459459         break;
460460   }
461461}
src/mame/drivers/markham.c
r4679r4680
2929
3030/****************************************************************************/
3131
32static ADDRESS_MAP_START( readmem1, ADDRESS_SPACE_PROGRAM, 8 )
33   AM_RANGE(0x0000, 0x5fff) AM_READ(SMH_ROM)
32static ADDRESS_MAP_START( markham_master_map, ADDRESS_SPACE_PROGRAM, 8 )
33   AM_RANGE(0x0000, 0x5fff) AM_ROM
3434
35   AM_RANGE(0xc000, 0xc7ff) AM_READ(SMH_RAM)
36   AM_RANGE(0xc800, 0xcfff) AM_READ(SMH_RAM)
37   AM_RANGE(0xd000, 0xd7ff) AM_READ(SMH_RAM)
38   AM_RANGE(0xd800, 0xdfff) AM_READ(SMH_RAM) AM_SHARE(1)
35   AM_RANGE(0xc000, 0xc7ff) AM_RAM
36   AM_RANGE(0xc800, 0xcfff) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
37   AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(markham_videoram_w) AM_BASE(&videoram)
38   AM_RANGE(0xd800, 0xdfff) AM_RAM AM_SHARE(1)
3939
4040   AM_RANGE(0xe000, 0xe000) AM_READ_PORT("DSW2")
4141   AM_RANGE(0xe001, 0xe001) AM_READ_PORT("DSW1")
r4679r4680
4646
4747   AM_RANGE(0xe005, 0xe005) AM_READ_PORT("SYSTEM")
4848
49ADDRESS_MAP_END
50
51static ADDRESS_MAP_START( writemem1, ADDRESS_SPACE_PROGRAM, 8 )
52   AM_RANGE(0x0000, 0x5fff) AM_WRITE(SMH_ROM)
53
54   AM_RANGE(0xc000, 0xc7ff) AM_WRITE(SMH_RAM)
55   AM_RANGE(0xc800, 0xcfff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
56   AM_RANGE(0xd000, 0xd7ff) AM_WRITE(markham_videoram_w) AM_BASE(&videoram)
57   AM_RANGE(0xd800, 0xdfff) AM_WRITE(SMH_RAM) AM_SHARE(1)
58
5949   AM_RANGE(0xe008, 0xe008) AM_WRITENOP /* coin counter? */
60
6150   AM_RANGE(0xe009, 0xe009) AM_WRITENOP /* to CPU2 busreq */
6251
63   AM_RANGE(0xe00c, 0xe00d) AM_WRITE(SMH_RAM) AM_BASE(&markham_xscroll)
52   AM_RANGE(0xe00c, 0xe00d) AM_WRITEONLY AM_BASE(&markham_xscroll)
6453   AM_RANGE(0xe00e, 0xe00e) AM_WRITE(markham_flipscreen_w)
6554ADDRESS_MAP_END
6655
67static ADDRESS_MAP_START( readmem2, ADDRESS_SPACE_PROGRAM, 8 )
68   AM_RANGE(0x0000, 0x5fff) AM_READ(SMH_ROM)
69   AM_RANGE(0x8000, 0x87ff) AM_READ(SMH_RAM) AM_SHARE(1)
70ADDRESS_MAP_END
56static ADDRESS_MAP_START( markham_slave_map, ADDRESS_SPACE_PROGRAM, 8 )
57   AM_RANGE(0x0000, 0x5fff) AM_ROM
58   AM_RANGE(0x8000, 0x87ff) AM_RAM AM_SHARE(1)
7159
72static ADDRESS_MAP_START( writemem2, ADDRESS_SPACE_PROGRAM, 8 )
73   AM_RANGE(0x0000, 0x5fff) AM_WRITE(SMH_ROM)
74   AM_RANGE(0x8000, 0x87ff) AM_WRITE(SMH_RAM) AM_SHARE(1)
75
7660   AM_RANGE(0xc000, 0xc000) AM_DEVWRITE("sn1", sn76496_w)
7761   AM_RANGE(0xc001, 0xc001) AM_DEVWRITE("sn2", sn76496_w)
7862
r4679r4680
200184
201185   /* basic machine hardware */
202186   MDRV_CPU_ADD("maincpu", Z80,8000000/2) /* 4.000MHz */
203   MDRV_CPU_PROGRAM_MAP(readmem1,writemem1)
187   MDRV_CPU_PROGRAM_MAP(markham_master_map,0)
204188   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
205189
206190   MDRV_CPU_ADD("sub", Z80,8000000/2) /* 4.000MHz */
207   MDRV_CPU_PROGRAM_MAP(readmem2,writemem2)
191   MDRV_CPU_PROGRAM_MAP(markham_slave_map,0)
208192   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
209193
210194   MDRV_QUANTUM_TIME(HZ(6000))
src/mame/drivers/msisaac.c
r4679r4680
4848
4949static TIMER_CALLBACK( nmi_callback )
5050{
51   if (sound_nmi_enable) cpu_set_input_line(machine->cpu[1],INPUT_LINE_NMI,PULSE_LINE);
51   if (sound_nmi_enable) cputag_set_input_line(machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
5252   else pending_nmi = 1;
5353}
5454
r4679r4680
6868   sound_nmi_enable = 1;
6969   if (pending_nmi)
7070   {
71      cpu_set_input_line(space->machine->cpu[1],INPUT_LINE_NMI,PULSE_LINE);
71      cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
7272      pending_nmi = 0;
7373   }
7474}
r4679r4680
198198#endif
199199}
200200
201static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 )
202   AM_RANGE(0x0000, 0xdfff) AM_READ(SMH_ROM)
203   AM_RANGE(0xe000, 0xe7ff) AM_READ(SMH_RAM)
201static ADDRESS_MAP_START( msisaac_map, ADDRESS_SPACE_PROGRAM, 8 )
202   AM_RANGE(0x0000, 0xdfff) AM_ROM
203   AM_RANGE(0xe000, 0xe7ff) AM_RAM
204   AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(paletteram_xxxxRRRRGGGGBBBB_le_w) AM_BASE(&paletteram)
205   AM_RANGE(0xf000, 0xf000) AM_WRITE(msisaac_bg2_textbank_w)
206   AM_RANGE(0xf001, 0xf001) AM_WRITENOP                //???
207   AM_RANGE(0xf002, 0xf002) AM_WRITENOP                //???
204208
205   AM_RANGE(0xf0e0, 0xf0e0) AM_READ(msisaac_mcu_r)
206   AM_RANGE(0xf0e1, 0xf0e1) AM_READ(msisaac_mcu_status_r)
207
208   AM_RANGE(0xf080, 0xf080) AM_READ_PORT("DSW1")
209   AM_RANGE(0xf081, 0xf081) AM_READ_PORT("DSW2")
210   AM_RANGE(0xf082, 0xf082) AM_READ_PORT("DSW3")
211   AM_RANGE(0xf083, 0xf083) AM_READ_PORT("IN0")
212   AM_RANGE(0xf084, 0xf084) AM_READ_PORT("IN1")
213//AM_RANGE(0xf086, 0xf086) AM_READ_PORT("IN2")
214ADDRESS_MAP_END
215
216static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 )
217   AM_RANGE(0x0000, 0xdfff) AM_WRITE(SMH_ROM)
218   AM_RANGE(0xe000, 0xe7ff) AM_WRITE(SMH_RAM)
219
220   AM_RANGE(0xe800, 0xefff) AM_WRITE(paletteram_xxxxRRRRGGGGBBBB_le_w) AM_BASE(&paletteram)
221
222//AM_RANGE(0xf400, 0xf43f) AM_WRITE(msisaac_fg_colorram_w) AM_BASE(&colorram)
223
224   AM_RANGE(0xf0a3, 0xf0a3) AM_WRITE(ms_unknown_w)         //???? written in interrupt routine
225
226209   AM_RANGE(0xf060, 0xf060) AM_WRITE(sound_command_w)      //sound command
227210   AM_RANGE(0xf061, 0xf061) AM_WRITENOP /*sound_reset*/   //????
228211
229   AM_RANGE(0xf000, 0xf000) AM_WRITE(msisaac_bg2_textbank_w)
230   AM_RANGE(0xf001, 0xf001) AM_WRITE(SMH_RAM)          //???
231   AM_RANGE(0xf002, 0xf002) AM_WRITE(SMH_RAM)          //???
212   AM_RANGE(0xf0a3, 0xf0a3) AM_WRITE(ms_unknown_w)         //???? written in interrupt routine
232213
233214   AM_RANGE(0xf0c0, 0xf0c0) AM_WRITE(msisaac_fg_scrollx_w)
234215   AM_RANGE(0xf0c1, 0xf0c1) AM_WRITE(msisaac_fg_scrolly_w)
r4679r4680
237218   AM_RANGE(0xf0c4, 0xf0c4) AM_WRITE(msisaac_bg_scrollx_w)
238219   AM_RANGE(0xf0c5, 0xf0c5) AM_WRITE(msisaac_bg_scrolly_w)
239220
240   AM_RANGE(0xf0e0, 0xf0e0) AM_WRITE(msisaac_mcu_w)
221   AM_RANGE(0xf0e0, 0xf0e0) AM_READWRITE(msisaac_mcu_r,msisaac_mcu_w)
222   AM_RANGE(0xf0e1, 0xf0e1) AM_READ(msisaac_mcu_status_r)
241223
242   AM_RANGE(0xf100, 0xf17f) AM_WRITE(SMH_RAM) AM_BASE(&spriteram)   //sprites
243   AM_RANGE(0xf400, 0xf7ff) AM_WRITE(msisaac_fg_videoram_w) AM_BASE(&videoram)
244   AM_RANGE(0xf800, 0xfbff) AM_WRITE(msisaac_bg2_videoram_w) AM_BASE(&msisaac_videoram2)
245   AM_RANGE(0xfc00, 0xffff) AM_WRITE(msisaac_bg_videoram_w) AM_BASE(&msisaac_videoram)
224   AM_RANGE(0xf080, 0xf080) AM_READ_PORT("DSW1")
225   AM_RANGE(0xf081, 0xf081) AM_READ_PORT("DSW2")
226   AM_RANGE(0xf082, 0xf082) AM_READ_PORT("DSW3")
227   AM_RANGE(0xf083, 0xf083) AM_READ_PORT("IN0")
228   AM_RANGE(0xf084, 0xf084) AM_READ_PORT("IN1")
229//  AM_RANGE(0xf086, 0xf086) AM_READ_PORT("IN2")
246230
247
231   AM_RANGE(0xf100, 0xf17f) AM_RAM AM_BASE(&spriteram)   //sprites
232   AM_RANGE(0xf400, 0xf7ff) AM_RAM_WRITE(msisaac_fg_videoram_w) AM_BASE(&videoram)
233   AM_RANGE(0xf800, 0xfbff) AM_RAM_WRITE(msisaac_bg2_videoram_w) AM_BASE(&msisaac_videoram2)
234   AM_RANGE(0xfc00, 0xffff) AM_RAM_WRITE(msisaac_bg_videoram_w) AM_BASE(&msisaac_videoram)
248235//  AM_RANGE(0xf801, 0xf801) AM_WRITE(msisaac_bgcolor_w)
249236//  AM_RANGE(0xfc00, 0xfc00) AM_WRITE(flip_screen_w)
250237//  AM_RANGE(0xfc03, 0xfc04) AM_WRITE(msisaac_coin_counter_w)
251238ADDRESS_MAP_END
252239
253
254static ADDRESS_MAP_START( readmem_sound, ADDRESS_SPACE_PROGRAM, 8 )
255   AM_RANGE(0x0000, 0x3fff) AM_READ(SMH_ROM)
256   AM_RANGE(0x4000, 0x47ff) AM_READ(SMH_RAM)
257   AM_RANGE(0xc000, 0xc000) AM_READ(soundlatch_r)
258   AM_RANGE(0xe000, 0xffff) AM_READNOP /*space for diagnostic ROM (not dumped, not reachable) */
259ADDRESS_MAP_END
260
261
262240static int vol_ctrl[16];
263241
264242static MACHINE_RESET( ta7630 )
r4679r4680
309287   //popmessage("SND1 0=%2x 1=%2x", snd_ctrl0, snd_ctrl1);
310288}
311289
312
313
314static ADDRESS_MAP_START( writemem_sound, ADDRESS_SPACE_PROGRAM, 8 )
315   AM_RANGE(0x0000, 0x3fff) AM_WRITE(SMH_ROM)
316   AM_RANGE(0x4000, 0x47ff) AM_WRITE(SMH_RAM)
317
290static ADDRESS_MAP_START( msisaac_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
291   AM_RANGE(0x0000, 0x3fff) AM_ROM
292   AM_RANGE(0x4000, 0x47ff) AM_RAM
318293   AM_RANGE(0x8000, 0x8001) AM_DEVWRITE("ay1", ay8910_address_data_w)
319294   AM_RANGE(0x8002, 0x8003) AM_DEVWRITE("ay2", ay8910_address_data_w)
320295   AM_RANGE(0x8010, 0x801d) AM_DEVWRITE("msm", msm5232_w)
321296   AM_RANGE(0x8020, 0x8020) AM_DEVWRITE("msm", sound_control_0_w)
322297   AM_RANGE(0x8030, 0x8030) AM_WRITE(sound_control_1_w)
323
298   AM_RANGE(0xc000, 0xc000) AM_READ(soundlatch_r)
324299   AM_RANGE(0xc001, 0xc001) AM_WRITE(nmi_enable_w)
325300   AM_RANGE(0xc002, 0xc002) AM_WRITE(nmi_disable_w)
326301   AM_RANGE(0xc003, 0xc003) AM_WRITENOP /*???*/ /* this is NOT mixer_enable */
327
302   AM_RANGE(0xe000, 0xffff) AM_READNOP /*space for diagnostic ROM (not dumped, not reachable) */
328303ADDRESS_MAP_END
329304
330305#ifdef USE_MCU
331306
332static ADDRESS_MAP_START( mcu_readmem, ADDRESS_SPACE_PROGRAM, 8 )
307static ADDRESS_MAP_START( msisaac_mcu_map, ADDRESS_SPACE_PROGRAM, 8 )
333308   ADDRESS_MAP_GLOBAL_MASK(0x7ff)
334   AM_RANGE(0x0000, 0x0000) AM_READ(buggychl_68705_portA_r)
335   AM_RANGE(0x0001, 0x0001) AM_READ(buggychl_68705_portB_r)
336   AM_RANGE(0x0002, 0x0002) AM_READ(buggychl_68705_portC_r)
337   AM_RANGE(0x0010, 0x007f) AM_READ(SMH_RAM)
338   AM_RANGE(0x0080, 0x07ff) AM_READ(SMH_ROM)
339ADDRESS_MAP_END
340
341static ADDRESS_MAP_START( mcu_writemem, ADDRESS_SPACE_PROGRAM, 8 )
342   ADDRESS_MAP_GLOBAL_MASK(0x7ff)
343   AM_RANGE(0x0000, 0x0000) AM_WRITE(buggychl_68705_portA_w)
344   AM_RANGE(0x0001, 0x0001) AM_WRITE(buggychl_68705_portB_w)
345   AM_RANGE(0x0002, 0x0002) AM_WRITE(buggychl_68705_portC_w)
309   AM_RANGE(0x0000, 0x0000) AM_READ(buggychl_68705_portA_r,buggychl_68705_portA_w)
310   AM_RANGE(0x0001, 0x0001) AM_READ(buggychl_68705_portB_r,buggychl_68705_portB_w)
311   AM_RANGE(0x0002, 0x0002) AM_READ(buggychl_68705_portC_r,buggychl_68705_portC_w)
346312   AM_RANGE(0x0004, 0x0004) AM_WRITE(buggychl_68705_ddrA_w)
347313   AM_RANGE(0x0005, 0x0005) AM_WRITE(buggychl_68705_ddrB_w)
348314   AM_RANGE(0x0006, 0x0006) AM_WRITE(buggychl_68705_ddrC_w)
349   AM_RANGE(0x0010, 0x007f) AM_WRITE(SMH_RAM)
350   AM_RANGE(0x0080, 0x07ff) AM_WRITE(SMH_ROM)
315   AM_RANGE(0x0010, 0x007f) AM_RAM
316   AM_RANGE(0x0080, 0x07ff) AM_ROM
351317ADDRESS_MAP_END
352318
353319#endif
r4679r4680
513479
514480   /* basic machine hardware */
515481   MDRV_CPU_ADD("maincpu", Z80, 4000000)
516   MDRV_CPU_PROGRAM_MAP(readmem,writemem)
482   MDRV_CPU_PROGRAM_MAP(msisaac_map,0)
517483   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
518484
519485   MDRV_CPU_ADD("audiocpu", Z80, 4000000)
520   MDRV_CPU_PROGRAM_MAP(readmem_sound,writemem_sound)
486   MDRV_CPU_PROGRAM_MAP(msisaac_sound_map,0)
521487   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)   /* source of IRQs is unknown */
522488
523489#ifdef USE_MCU
524490   MDRV_CPU_ADD("mcu", M68705,8000000/2)  /* 4 MHz */
525   MDRV_CPU_PROGRAM_MAP(mcu_readmem,mcu_writemem)
491   MDRV_CPU_PROGRAM_MAP(msisaac_mcu_map,0)
526492#endif
527493
528494   MDRV_MACHINE_RESET(ta7630)
src/mame/drivers/superqix.c
r4679r4680
142142   int i, len = memory_region_length(machine, "samples");
143143
144144   /* convert 8-bit unsigned samples to 8-bit signed */
145   samplebuf = auto_malloc(len * 2);
145   samplebuf = auto_alloc_array(machine, INT16, len);
146146   for (i = 0;i < len;i++)
147147      samplebuf[i] = (INT8)(src[i] ^ 0x80) * 256;
148148}
r4679r4680
295295
296296static READ8_HANDLER( nmi_ack_r )
297297{
298   cpu_set_input_line(space->machine->cpu[0], INPUT_LINE_NMI, CLEAR_LINE);
298   cputag_set_input_line(space->machine, "maincpu", INPUT_LINE_NMI, CLEAR_LINE);
299299   return 0;
300300}
301301
r4679r4680
349349logerror("Z80 sends command %02x\n",param);
350350   from_z80 = param;
351351   from_mcu_pending = 0;
352   cpu_set_input_line(machine->cpu[1], 0, HOLD_LINE);
352   cputag_set_input_line(machine, "mcu", 0, HOLD_LINE);
353353   cpuexec_boost_interleave(machine, attotime_zero, ATTOTIME_IN_USEC(200));
354354}
355355
src/mame/drivers/dday.c
r4679r4680
7171READ8_HANDLER( dday_countdown_timer_r );
7272
7373
74static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 )
75   AM_RANGE(0x0000, 0x3fff) AM_READ(SMH_ROM)
76   AM_RANGE(0x5000, 0x5bff) AM_READ(SMH_RAM)
77   AM_RANGE(0x5c00, 0x5fff) AM_READ(dday_colorram_r)
78   AM_RANGE(0x6000, 0x63ff) AM_READ(SMH_RAM)
74static ADDRESS_MAP_START( dday_map, ADDRESS_SPACE_PROGRAM, 8 )
75   AM_RANGE(0x0000, 0x3fff) AM_ROM
76   AM_RANGE(0x4000, 0x4000) AM_WRITE(dday_sl_control_w)
77   AM_RANGE(0x5000, 0x53ff) AM_RAM_WRITE(dday_textvideoram_w) AM_BASE(&dday_textvideoram)
78   AM_RANGE(0x5400, 0x57ff) AM_RAM_WRITE(dday_fgvideoram_w) AM_BASE(&dday_fgvideoram)
79   AM_RANGE(0x5800, 0x5bff) AM_RAM_WRITE(dday_bgvideoram_w) AM_BASE(&dday_bgvideoram)
80   AM_RANGE(0x5c00, 0x5fff) AM_READWRITE(dday_colorram_r, dday_colorram_w) AM_BASE(&dday_colorram)
81   AM_RANGE(0x6000, 0x63ff) AM_RAM
82   AM_RANGE(0x6400, 0x6401) AM_MIRROR(0x000e) AM_DEVWRITE("ay1", ay8910_address_data_w)
83   AM_RANGE(0x6800, 0x6801) AM_DEVWRITE("ay2", ay8910_address_data_w)
7984   AM_RANGE(0x6c00, 0x6c00) AM_READ_PORT("BUTTONS")
8085   AM_RANGE(0x7000, 0x7000) AM_READ_PORT("DSW0")
8186   AM_RANGE(0x7400, 0x7400) AM_READ_PORT("DSW1")
82   AM_RANGE(0x7800, 0x7800) AM_READ(dday_countdown_timer_r)
87   AM_RANGE(0x7800, 0x7800) AM_READWRITE(dday_countdown_timer_r, dday_control_w)
8388   AM_RANGE(0x7c00, 0x7c00) AM_READ_PORT("PADDLE")
8489ADDRESS_MAP_END
8590
86static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 )
87   AM_RANGE(0x0000, 0x3fff) AM_WRITE(SMH_ROM)
88   AM_RANGE(0x4000, 0x4000) AM_WRITE(dday_sl_control_w)
89   AM_RANGE(0x5000, 0x53ff) AM_WRITE(dday_textvideoram_w) AM_BASE(&dday_textvideoram)
90   AM_RANGE(0x5400, 0x57ff) AM_WRITE(dday_fgvideoram_w) AM_BASE(&dday_fgvideoram)
91   AM_RANGE(0x5800, 0x5bff) AM_WRITE(dday_bgvideoram_w) AM_BASE(&dday_bgvideoram)
92   AM_RANGE(0x5c00, 0x5fff) AM_WRITE(dday_colorram_w) AM_BASE(&dday_colorram)
93   AM_RANGE(0x6000, 0x63ff) AM_WRITE(SMH_RAM)
94   AM_RANGE(0x6400, 0x6401) AM_MIRROR(0x000e) AM_DEVWRITE("ay1", ay8910_address_data_w)
95   AM_RANGE(0x6800, 0x6801) AM_DEVWRITE("ay2", ay8910_address_data_w)
96   AM_RANGE(0x7800, 0x7800) AM_WRITE(dday_control_w)
97ADDRESS_MAP_END
9891
9992
100
10193static INPUT_PORTS_START( dday )
10294   PORT_START("BUTTONS")
10395   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 )
r4679r4680
244236
245237   /* basic machine hardware */
246238   MDRV_CPU_ADD("maincpu", Z80, 2000000)     /* 2 MHz ? */
247   MDRV_CPU_PROGRAM_MAP(readmem,writemem)
239   MDRV_CPU_PROGRAM_MAP(dday_map,0)
248240
249241   /* video hardware */
250242   MDRV_SCREEN_ADD("screen", RASTER)
src/mame/drivers/cojag.c
r4679r4680
369369   jaguar_dsp_resume(machine);
370370
371371   /* halt the CPUs */
372   jaguargpu_ctrl_w(machine->cpu[1], G_CTRL, 0, 0xffffffff);
373   jaguardsp_ctrl_w(machine->cpu[2], D_CTRL, 0, 0xffffffff);
372   jaguargpu_ctrl_w(cputag_get_cpu(machine, "gpu"), G_CTRL, 0, 0xffffffff);
373   jaguardsp_ctrl_w(cputag_get_cpu(machine, "audiocpu"), D_CTRL, 0, 0xffffffff);
374374
375375   /* init the sound system */
376376   cojag_sound_reset(machine);
r4679r4680
419419      jaguar_dsp_resume(space->machine);
420420
421421      /* halt the CPUs */
422      jaguargpu_ctrl_w(space->machine->cpu[1], G_CTRL, 0, 0xffffffff);
423      jaguardsp_ctrl_w(space->machine->cpu[2], D_CTRL, 0, 0xffffffff);
422      jaguargpu_ctrl_w(cputag_get_cpu(space->machine, "gpu"), G_CTRL, 0, 0xffffffff);
423      jaguardsp_ctrl_w(cputag_get_cpu(space->machine, "audiocpu"), D_CTRL, 0, 0xffffffff);
424424   }
425425
426426   /* adjust banking */
r4679r4680
443443
444444static READ32_HANDLER( gpuctrl_r )
445445{
446   return jaguargpu_ctrl_r(space->machine->cpu[1], offset);
446   return jaguargpu_ctrl_r(cputag_get_cpu(space->machine, "gpu"), offset);
447447}
448448
449449
450450static WRITE32_HANDLER( gpuctrl_w )
451451{
452   jaguargpu_ctrl_w(space->machine->cpu[1], offset, data, mem_mask);
452   jaguargpu_ctrl_w(cputag_get_cpu(space->machine, "gpu"), offset, data, mem_mask);
453453}
454454
455455
r4679r4680
462462
463463static READ32_HANDLER( dspctrl_r )
464464{
465   return jaguardsp_ctrl_r(space->machine->cpu[2], offset);
465   return jaguardsp_ctrl_r(cputag_get_cpu(space->machine, "audiocpu"), offset);
466466}
467467
468468
469469static WRITE32_HANDLER( dspctrl_w )
470470{
471   jaguardsp_ctrl_w(space->machine->cpu[2], offset, data, mem_mask);
471   jaguardsp_ctrl_w(cputag_get_cpu(space->machine, "audiocpu"), offset, data, mem_mask);
472472}
473473
474474
r4679r4680
15051505static void cojag_common_init(running_machine *machine, UINT16 gpu_jump_offs, UINT16 spin_pc)
15061506{
15071507   /* copy over the ROM */
1508   cojag_is_r3000 = (cpu_get_type(machine->cpu[0]) == CPU_R3041BE);
1508   cojag_is_r3000 = (cpu_get_type(cputag_get_cpu(machine, "maincpu")) == CPU_R3041BE);
15091509
15101510   /* install synchronization hooks for GPU */
15111511   if (cojag_is_r3000)
1512      memory_install_write32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x04f0b000 + gpu_jump_offs, 0x04f0b003 + gpu_jump_offs, 0, 0, gpu_jump_w);
1512      memory_install_write32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x04f0b000 + gpu_jump_offs, 0x04f0b003 + gpu_jump_offs, 0, 0, gpu_jump_w);
15131513   else
1514      memory_install_write32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xf0b000 + gpu_jump_offs, 0xf0b003 + gpu_jump_offs, 0, 0, gpu_jump_w);
1515   memory_install_read32_handler(cpu_get_address_space(machine->cpu[1], ADDRESS_SPACE_PROGRAM), 0xf03000 + gpu_jump_offs, 0xf03003 + gpu_jump_offs, 0, 0, gpu_jump_r);
1514      memory_install_write32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xf0b000 + gpu_jump_offs, 0xf0b003 + gpu_jump_offs, 0, 0, gpu_jump_w);
1515   memory_install_read32_handler(cputag_get_address_space(machine, "gpu", ADDRESS_SPACE_PROGRAM), 0xf03000 + gpu_jump_offs, 0xf03003 + gpu_jump_offs, 0, 0, gpu_jump_r);
15161516   gpu_jump_address = &jaguar_gpu_ram[gpu_jump_offs/4];
15171517   gpu_spin_pc = 0xf03000 + spin_pc;
15181518
r4679r4680
15271527
15281528#if ENABLE_SPEEDUP_HACKS
15291529   /* install speedup for main CPU */
1530   main_speedup = memory_install_write32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xa02030, 0xa02033, 0, 0, area51_main_speedup_w);
1530   main_speedup = memory_install_write32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xa02030, 0xa02033, 0, 0, area51_main_speedup_w);
15311531#endif
15321532}
15331533
r4679r4680
15391539#if ENABLE_SPEEDUP_HACKS
15401540   /* install speedup for main CPU */
15411541   main_speedup_max_cycles = 120;
1542   main_speedup = memory_install_read32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x100062e8, 0x100062eb, 0, 0, cojagr3k_main_speedup_r);
1542   main_speedup = memory_install_read32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x100062e8, 0x100062eb, 0, 0, cojagr3k_main_speedup_r);
15431543#endif
15441544}
15451545
r4679r4680
15531553#if ENABLE_SPEEDUP_HACKS
15541554   /* install speedup for main CPU */
15551555   main_speedup_max_cycles = 120;
1556   main_speedup = memory_install_read32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x1000865c, 0x1000865f, 0, 0, cojagr3k_main_speedup_r);
1556   main_speedup = memory_install_read32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1000865c, 0x1000865f, 0, 0, cojagr3k_main_speedup_r);
15571557#endif
15581558}
15591559
r4679r4680
15671567
15681568#if ENABLE_SPEEDUP_HACKS
15691569   /* install speedup for main CPU */
1570   main_speedup = memory_install_write32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xa19550, 0xa19557, 0, 0, area51mx_main_speedup_w);
1570   main_speedup = memory_install_write32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xa19550, 0xa19557, 0, 0, area51mx_main_speedup_w);
15711571#endif
15721572}
15731573
r4679r4680
15821582#if ENABLE_SPEEDUP_HACKS
15831583   /* install speedup for main CPU */
15841584   main_speedup_max_cycles = 120;
1585   main_speedup = memory_install_read32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x10006f0c, 0x10006f0f, 0, 0, cojagr3k_main_speedup_r);
1585   main_speedup = memory_install_read32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x10006f0c, 0x10006f0f, 0, 0, cojagr3k_main_speedup_r);
15861586#endif
15871587}
15881588
r4679r4680
15941594#if ENABLE_SPEEDUP_HACKS
15951595   /* install speedup for main CPU */
15961596   main_speedup_max_cycles = 200;
1597   main_speedup = memory_install_read32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x10021b60, 0x10021b63, 0, 0, cojagr3k_main_speedup_r);
1597   main_speedup = memory_install_read32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x10021b60, 0x10021b63, 0, 0, cojagr3k_main_speedup_r);
15981598#endif
15991599}
16001600
r4679r4680
16071607   /* install speedup for main CPU */
16081608   main_speedup_max_cycles = 200;
16091609   if (main_speedup_addr != 0)
1610      main_speedup = memory_install_read32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), main_speedup_addr, main_speedup_addr + 3, 0, 0, cojagr3k_main_speedup_r);
1611   main_gpu_wait = memory_install_read32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x0400d900, 0x0400d900 + 3, 0, 0, main_gpu_wait_r);
1610      main_speedup = memory_install_read32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), main_speedup_addr, main_speedup_addr + 3, 0, 0, cojagr3k_main_speedup_r);
1611   main_gpu_wait = memory_install_read32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x0400d900, 0x0400d900 + 3, 0, 0, main_gpu_wait_r);
16121612#endif
16131613}
16141614
r4679r4680
16271627#if ENABLE_SPEEDUP_HACKS
16281628   /* install speedup for main CPU */
16291629   main_speedup_max_cycles = 50;
1630   main_speedup = memory_install_read32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x12005b34, 0x12005b37, 0, 0, cojagr3k_main_speedup_r);
1630   main_speedup = memory_install_read32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x12005b34, 0x12005b37, 0, 0, cojagr3k_main_speedup_r);
16311631#endif
16321632}
16331633
src/mame/drivers/cyberbal.c
r4679r4680
3838
3939static void update_interrupts(running_machine *machine)
4040{
41   cpu_set_input_line(machine->cpu[0], 1, atarigen_sound_int_state ? ASSERT_LINE : CLEAR_LINE);
42   cpu_set_input_line(machine->cpu[2], 1, atarigen_video_int_state ? ASSERT_LINE : CLEAR_LINE);
41   cputag_set_input_line(machine, "maincpu", 1, atarigen_sound_int_state ? ASSERT_LINE : CLEAR_LINE);
42   cputag_set_input_line(machine, "extra", 1, atarigen_video_int_state ? ASSERT_LINE : CLEAR_LINE);
4343}
4444
4545
r4679r4680
4949   atarigen_slapstic_reset();
5050   atarigen_interrupt_reset(update_interrupts);
5151   atarigen_scanline_timer_reset(machine->primary_screen, cyberbal_scanline_update, 8);
52   atarigen_sound_io_reset(machine->cpu[1]);
52   atarigen_sound_io_reset(cputag_get_cpu(machine, "audiocpu"));
5353
5454   cyberbal_sound_reset(machine);
5555
56   /* CPU 2 doesn't run until reset */
57   cpu_set_input_line(machine->cpu[2], INPUT_LINE_RESET, ASSERT_LINE);
56   /* Extra CPU (second M68k) doesn't run until reset */
57   cputag_set_input_line(machine, "extra", INPUT_LINE_RESET, ASSERT_LINE);
5858}
5959
6060
6161static void cyberb2p_update_interrupts(running_machine *machine)
6262{
63   cpu_set_input_line(machine->cpu[0], 1, atarigen_video_int_state ? ASSERT_LINE : CLEAR_LINE);
64   cpu_set_input_line(machine->cpu[0], 3, atarigen_sound_int_state ? ASSERT_LINE : CLEAR_LINE);
63   cputag_set_input_line(machine, "maincpu", 1, atarigen_video_int_state ? ASSERT_LINE : CLEAR_LINE);
64   cputag_set_input_line(machine, "maincpu", 3, atarigen_sound_int_state ? ASSERT_LINE : CLEAR_LINE);
6565}
6666
6767
r4679r4680
114114
115115static WRITE16_HANDLER( p2_reset_w )
116116{
117   cpu_set_input_line(space->machine->cpu[2], INPUT_LINE_RESET, CLEAR_LINE);
117   cputag_set_input_line(space->machine, "extra", INPUT_LINE_RESET, CLEAR_LINE);
118118}
119119
120120
r4679r4680
972972static DRIVER_INIT( cyberbal )
973973{
974974   atarigen_eeprom_default = default_eeprom;
975   atarigen_slapstic_init(machine->cpu[0], 0x018000, 0, 0);
975   atarigen_slapstic_init(cputag_get_cpu(machine, "maincpu"), 0x018000, 0, 0);
976976}
977977
978978
979979static DRIVER_INIT( cyberbt )
980980{
981981   atarigen_eeprom_default = default_eeprom;
982   atarigen_slapstic_init(machine->cpu[0], 0x018000, 0, 116);
982   atarigen_slapstic_init(cputag_get_cpu(machine, "maincpu"), 0x018000, 0, 116);
983983}
984984
985985
src/mame/drivers/lockon.c
r4679r4680
6666   lockon_ctrl_reg = data & 0xff;
6767
6868   /* Bus mastering for shared access */
69   cpu_set_input_line(space->machine->cpu[GROUND_CPU], INPUT_LINE_HALT, data & 0x04 ? ASSERT_LINE : CLEAR_LINE);
70   cpu_set_input_line(space->machine->cpu[OBJECT_CPU], INPUT_LINE_HALT, data & 0x20 ? ASSERT_LINE : CLEAR_LINE);
71   cpu_set_input_line(space->machine->cpu[SOUND_CPU],  INPUT_LINE_HALT, data & 0x40 ? CLEAR_LINE : ASSERT_LINE);
69   cputag_set_input_line(space->machine, "ground", INPUT_LINE_HALT, data & 0x04 ? ASSERT_LINE : CLEAR_LINE);
70   cputag_set_input_line(space->machine, "object", INPUT_LINE_HALT, data & 0x20 ? ASSERT_LINE : CLEAR_LINE);
71   cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_HALT, data & 0x40 ? CLEAR_LINE : ASSERT_LINE);
7272}
7373
7474static READ16_HANDLER( main_gnd_r )
7575{
76   const address_space *gndspace = cpu_get_address_space(space->machine->cpu[GROUND_CPU], ADDRESS_SPACE_PROGRAM);
76   const address_space *gndspace = cputag_get_address_space(space->machine, "ground", ADDRESS_SPACE_PROGRAM);
7777   return memory_read_word(gndspace, V30_GND_ADDR | offset * 2);
7878}
7979
8080static WRITE16_HANDLER( main_gnd_w )
8181{
82   const address_space *gndspace = cpu_get_address_space(space->machine->cpu[GROUND_CPU], ADDRESS_SPACE_PROGRAM);
82   const address_space *gndspace = cputag_get_address_space(space->machine, "ground", ADDRESS_SPACE_PROGRAM);
8383
8484   if (ACCESSING_BITS_0_7)
8585      memory_write_byte(gndspace, V30_GND_ADDR | (offset * 2 + 0), data);
r4679r4680
8989
9090static READ16_HANDLER( main_obj_r )
9191{
92   const address_space *objspace = cpu_get_address_space(space->machine->cpu[OBJECT_CPU], ADDRESS_SPACE_PROGRAM);
92   const address_space *objspace = cputag_get_address_space(space->machine, "object", ADDRESS_SPACE_PROGRAM);
9393   return memory_read_word(objspace, V30_OBJ_ADDR | offset * 2);
9494}
9595
9696static WRITE16_HANDLER( main_obj_w )
9797{
98   const address_space *objspace = cpu_get_address_space(space->machine->cpu[OBJECT_CPU], ADDRESS_SPACE_PROGRAM);
98   const address_space *objspace = cputag_get_address_space(space->machine, "object", ADDRESS_SPACE_PROGRAM);
9999
100100   if (ACCESSING_BITS_0_7)
101101      memory_write_byte(objspace, V30_OBJ_ADDR | (offset * 2 + 0), data);
r4679r4680
107107{
108108   if (offset < 0x800)
109109   {
110      const address_space *gndspace = cpu_get_address_space(space->machine->cpu[GROUND_CPU], ADDRESS_SPACE_PROGRAM);
111      const address_space *objspace = cpu_get_address_space(space->machine->cpu[OBJECT_CPU], ADDRESS_SPACE_PROGRAM);
110      const address_space *gndspace = cputag_get_address_space(space->machine, "ground", ADDRESS_SPACE_PROGRAM);
111      const address_space *objspace = cputag_get_address_space(space->machine, "object", ADDRESS_SPACE_PROGRAM);
112112
113113      if (ACCESSING_BITS_0_7)
114114         memory_write_byte(gndspace, V30_GND_ADDR | (offset * 2 + 0), data);
r4679r4680
124124
125125static READ16_HANDLER( main_z80_r )
126126{
127   const address_space *sndspace = cpu_get_address_space(space->machine->cpu[SOUND_CPU], ADDRESS_SPACE_PROGRAM);
127   const address_space *sndspace = cputag_get_address_space(space->machine, "audiocpu", ADDRESS_SPACE_PROGRAM);
128128   return 0xff00 | memory_read_byte(sndspace, offset);
129129}
130130
131131static WRITE16_HANDLER( main_z80_w )
132132{
133   const address_space *sndspace = cpu_get_address_space(space->machine->cpu[SOUND_CPU], ADDRESS_SPACE_PROGRAM);
133   const address_space *sndspace = cputag_get_address_space(space->machine, "audiocpu", ADDRESS_SPACE_PROGRAM);
134134   memory_write_byte(sndspace, offset, data);
135135}
136136
r4679r4680
425425
426426static void ym2203_irq(const device_config *device, int irq)
427427{
428   cpu_set_input_line(device->machine->cpu[SOUND_CPU], 0, irq ? ASSERT_LINE : CLEAR_LINE );
428   cputag_set_input_line(device->machine, "audiocpu", 0, irq ? ASSERT_LINE : CLEAR_LINE );
429429}
430430
431431static WRITE8_DEVICE_HANDLER( ym2203_out_b )
src/mame/drivers/mappy.c
r4679r4680
703703   switch (offset & 0x0e)
704704   {
705705      case 0x00:   /* INT ON 2 */
706         cpu_interrupt_enable(space->machine->cpu[1],bit);
706         cpu_interrupt_enable(cputag_get_cpu(space->machine, "sub"), bit);
707707         if (!bit)
708            cpu_set_input_line(space->machine->cpu[1], 0, CLEAR_LINE);
708            cputag_set_input_line(space->machine, "sub", 0, CLEAR_LINE);
709709         break;
710710
711711      case 0x02:   /* INT ON */
712         cpu_interrupt_enable(space->machine->cpu[0],bit);
712         cpu_interrupt_enable(cputag_get_cpu(space->machine, "maincpu"), bit);
713713         if (!bit)
714            cpu_set_input_line(space->machine->cpu[0], 0, CLEAR_LINE);
714            cputag_set_input_line(space->machine, "maincpu", 0, CLEAR_LINE);
715715         break;
716716
717717      case 0x04:   /* n.c. */
r4679r4680
727727         break;
728728
729729      case 0x0a:   /* SUB RESET */
730         cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_RESET, bit ? CLEAR_LINE : ASSERT_LINE);
730         cputag_set_input_line(space->machine, "sub", INPUT_LINE_RESET, bit ? CLEAR_LINE : ASSERT_LINE);
731731         break;
732732
733733      case 0x0c:   /* n.c. */
r4679r4680
745745   switch (offset & 0x0e)
746746   {
747747      case 0x00:
748         cpu_interrupt_enable(space->machine->cpu[1],bit);
748         cpu_interrupt_enable(cputag_get_cpu(space->machine, "sub"), bit);
749749         if (!bit)
750            cpu_set_input_line(space->machine->cpu[1], 0, CLEAR_LINE);
750            cputag_set_input_line(space->machine, "sub", 0, CLEAR_LINE);
751751         break;
752752
753753      case 0x02:
754         cpu_interrupt_enable(space->machine->cpu[0],bit);
754         cpu_interrupt_enable(cputag_get_cpu(space->machine, "maincpu"), bit);
755755         if (!bit)
756            cpu_set_input_line(space->machine->cpu[0], 0, CLEAR_LINE);
756            cputag_set_input_line(space->machine, "maincpu", 0, CLEAR_LINE);
757757         break;
758758
759759      case 0x04:
760         cpu_interrupt_enable(space->machine->cpu[2],bit);
760         cpu_interrupt_enable(cputag_get_cpu(space->machine, "sub2"), bit);
761761         if (!bit)
762            cpu_set_input_line(space->machine->cpu[2], 0, CLEAR_LINE);
762            cputag_set_input_line(space->machine, "sub2", 0, CLEAR_LINE);
763763         break;
764764
765765      case 0x06:
r4679r4680
772772         break;
773773
774774      case 0x0a:
775         cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_RESET, bit ? CLEAR_LINE : ASSERT_LINE);
775         cputag_set_input_line(space->machine, "sub", INPUT_LINE_RESET, bit ? CLEAR_LINE : ASSERT_LINE);
776776         break;
777777
778778      case 0x0c:
779         cpu_set_input_line(space->machine->cpu[2], INPUT_LINE_RESET, bit ? CLEAR_LINE : ASSERT_LINE);
779         cputag_set_input_line(space->machine, "sub2", INPUT_LINE_RESET, bit ? CLEAR_LINE : ASSERT_LINE);
780780         break;
781781
782782      case 0x0e:
r4679r4680
791791   switch (offset & 0x0e)
792792   {
793793      case 0x00:   /* INT ON 2 */
794         cpu_interrupt_enable(space->machine->cpu[1],bit);
794         cpu_interrupt_enable(cputag_get_cpu(space->machine, "sub"), bit);
795795         if (!bit)
796            cpu_set_input_line(space->machine->cpu[1], 0, CLEAR_LINE);
796            cputag_set_input_line(space->machine, "sub", 0, CLEAR_LINE);
797797         break;
798798
799799      case 0x02:   /* INT ON */
800         cpu_interrupt_enable(space->machine->cpu[0],bit);
800         cpu_interrupt_enable(cputag_get_cpu(space->machine, "maincpu"), bit);
801801         if (!bit)
802            cpu_set_input_line(space->machine->cpu[0], 0, CLEAR_LINE);
802            cputag_set_input_line(space->machine, "maincpu", 0, CLEAR_LINE);
803803         break;
804804
805805      case 0x04:   /* FLIP */
r4679r4680
816816         break;
817817
818818      case 0x0a:   /* SUB RESET */
819         cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_RESET, bit ? CLEAR_LINE : ASSERT_LINE);
819         cputag_set_input_line(space->machine, "sub", INPUT_LINE_RESET, bit ? CLEAR_LINE : ASSERT_LINE);
820820         break;
821821
822822      case 0x0c:   /* n.c. */
r4679r4680
830830
831831static MACHINE_RESET( superpac )
832832{
833   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
833   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
834834   int i;
835835
836836   /* Reset all latches */
r4679r4680
840840
841841static MACHINE_RESET( phozon )
842842{
843   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
843   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
844844   int i;
845845
846846   /* Reset all latches */
r4679r4680
850850
851851static MACHINE_RESET( mappy )
852852{
853   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
853   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
854854   int i;
855855
856856   /* Reset all latches */
r4679r4680
861861static INTERRUPT_GEN( mappy_interrupt_1 )
862862{
863863   irq0_line_assert(device);   // this also checks if irq is enabled - IMPORTANT!
864                  // so don't replace with cpu_set_input_line(machine->cpu[0], 0, ASSERT_LINE);
864                        // so don't replace with cputag_set_input_line(machine, "maincpu", 0, ASSERT_LINE);
865865
866   namcoio_set_irq_line(device->machine,0,PULSE_LINE);
867   namcoio_set_irq_line(device->machine,1,PULSE_LINE);
866   namcoio_set_irq_line(device->machine, 0, PULSE_LINE);
867   namcoio_set_irq_line(device->machine, 1, PULSE_LINE);
868868}
869869
870870
r4679r4680
21332133       the DAC might be built-in after all.
21342134      */
21352135    const device_config *dac = devtag_get_device(machine, "dac");
2136   memory_install_write8_device_handler(cpu_get_address_space(machine->cpu[1], ADDRESS_SPACE_PROGRAM), dac, 0x0002, 0x0002, 0, 0, grobda_DAC_w );
2136   memory_install_write8_device_handler(cputag_get_address_space(machine, "sub", ADDRESS_SPACE_PROGRAM), dac, 0x0002, 0x0002, 0, 0, grobda_DAC_w );
21372137
21382138   DRIVER_INIT_CALL(58_56);
21392139}
r4679r4680
21412141static DRIVER_INIT( digdug2 )
21422142{
21432143   /* appears to not use the watchdog */
2144   memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x8000, 0x8000, 0, 0, SMH_NOP);
2144   memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x8000, 0x8000, 0, 0, (write8_space_func)SMH_NOP);
21452145   DRIVER_INIT_CALL(58_56);
21462146}
21472147
src/mame/drivers/safarir.c
r4679r4680
126126static TILE_GET_INFO( get_bg_tile_info )
127127{
128128   int color;
129   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
129   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
130130   UINT8 code = ram_r(space,tile_index | 0x400);
131131
132132   /* this is wrong */
r4679r4680
142142static TILE_GET_INFO( get_fg_tile_info )
143143{
144144   int color, flags;
145   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
145   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
146146
147147   UINT8 code = ram_r(space,tile_index);
148148
r4679r4680
186186
187187static MACHINE_START( safarir )
188188{
189   ram_1 = auto_malloc(ram_size);
190   ram_2 = auto_malloc(ram_size);
189   ram_1 = auto_alloc_array(machine, UINT8, ram_size);
190   ram_2 = auto_alloc_array(machine, UINT8, ram_size);
191191
192192   /* setup for save states */
193193   state_save_register_global_pointer(machine, ram_1, ram_size);
src/mame/drivers/rastan.c
r4679r4680
359359/* handler called by the YM2151 emulator when the internal timers cause an IRQ */
360360static void irqhandler(const device_config *device, int irq)
361361{
362   cpu_set_input_line(device->machine->cpu[1],0,irq ? ASSERT_LINE : CLEAR_LINE);
362   cputag_set_input_line(device->machine, "audiocpu", 0, irq ? ASSERT_LINE : CLEAR_LINE);
363363}
364364
365365static const ym2151_interface ym2151_config =
src/mame/drivers/pntnpuzl.c
r4679r4680
151151         UINT32 length, size;
152152         UINT8 *dat;
153153
154         dat = eeprom_get_data_pointer(&length, &size);
154         dat = (UINT8 *)eeprom_get_data_pointer(&length, &size);
155155         memset(dat, 0, length * size);
156156      }
157157   }
r4679r4680
186186/* vid */
187187static VIDEO_START( pntnpuzl )
188188{
189   pntnpuzl_3a0000ram=auto_malloc(0x100000);
189   pntnpuzl_3a0000ram=auto_alloc_array(machine, UINT16, 0x100000/2);
190190}
191191
192192static VIDEO_UPDATE( pntnpuzl )
src/mame/drivers/gijoe.c
r4679r4680
151151static TIMER_CALLBACK( dmaend_callback )
152152{
153153   if (cur_control2 & 0x0020)
154      cpu_set_input_line(machine->cpu[0], 6, HOLD_LINE);
154      cputag_set_input_line(machine, "maincpu", 6, HOLD_LINE);
155155}
156156
157157static INTERRUPT_GEN( gijoe_interrupt )
r4679r4680
182182
183183static WRITE16_HANDLER( sound_irq_w )
184184{
185   cpu_set_input_line(space->machine->cpu[1], 0, HOLD_LINE);
185   cputag_set_input_line(space->machine, "audiocpu", 0, HOLD_LINE);
186186}
187187
188188static READ16_HANDLER( sound_status_r )
r4679r4680
192192
193193static void sound_nmi(const device_config *device)
194194{
195   cpu_set_input_line(device->machine->cpu[1], INPUT_LINE_NMI, PULSE_LINE);
195   cputag_set_input_line(device->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
196196}
197197
198198static MACHINE_START( gijoe )
r4679r4680
203203}
204204
205205
206static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 16 )
207   AM_RANGE(0x000000, 0x0fffff) AM_READ(SMH_ROM)
208   AM_RANGE(0x100000, 0x100fff) AM_READ(SMH_RAM)         // Sprites
209   AM_RANGE(0x120000, 0x121fff) AM_READ(K056832_ram_word_r)   // Graphic planes
210   AM_RANGE(0x122000, 0x123fff) AM_READ(K056832_ram_word_r)   // Graphic planes mirror read
211   AM_RANGE(0x130000, 0x131fff) AM_READ(K056832_rom_word_r)   // Passthrough to tile roms
212   AM_RANGE(0x180000, 0x18ffff) AM_READ(SMH_RAM)         // Main RAM.  Spec. 180000-1803ff, 180400-187fff
213   AM_RANGE(0x190000, 0x190fff) AM_READ(SMH_RAM)
206static ADDRESS_MAP_START( gijoe_map, ADDRESS_SPACE_PROGRAM, 16 )
207   AM_RANGE(0x000000, 0x0fffff) AM_ROM
208   AM_RANGE(0x100000, 0x100fff) AM_RAM AM_BASE(&spriteram16)                        // Sprites
209   AM_RANGE(0x110000, 0x110007) AM_WRITE(K053246_word_w)
210   AM_RANGE(0x120000, 0x121fff) AM_READWRITE(K056832_ram_word_r, K056832_ram_word_w)      // Graphic planes
211   AM_RANGE(0x122000, 0x123fff) AM_READWRITE(K056832_ram_word_r, K056832_ram_word_w)      // Graphic planes mirror read
212   AM_RANGE(0x130000, 0x131fff) AM_READ(K056832_rom_word_r)                         // Passthrough to tile roms
213   AM_RANGE(0x160000, 0x160007) AM_WRITE(K056832_b_word_w)                           // VSCCS (board dependent)
214   AM_RANGE(0x170000, 0x170001) AM_WRITENOP                                    // Watchdog
215   AM_RANGE(0x180000, 0x18ffff) AM_RAM AM_BASE(&gijoe_workram)               // Main RAM.  Spec. 180000-1803ff, 180400-187fff
216   AM_RANGE(0x190000, 0x190fff) AM_RAM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE(&paletteram16)
217   AM_RANGE(0x1a0000, 0x1a001f) AM_WRITE(K053251_lsb_w)
218   AM_RANGE(0x1b0000, 0x1b003f) AM_WRITE(K056832_word_w)
219   AM_RANGE(0x1c000c, 0x1c000d) AM_WRITE(sound_cmd_w)
214220   AM_RANGE(0x1c0014, 0x1c0015) AM_READ(sound_status_r)
215   AM_RANGE(0x1c0000, 0x1c001f) AM_READ(SMH_RAM)         // sound regs read fall through
221   AM_RANGE(0x1c0000, 0x1c001f) AM_RAM
222   AM_RANGE(0x1d0000, 0x1d0001) AM_WRITE(sound_irq_w)
216223   AM_RANGE(0x1e0000, 0x1e0001) AM_READ_PORT("P1_P2")
217224   AM_RANGE(0x1e0002, 0x1e0003) AM_READ_PORT("P3_P4")
218225   AM_RANGE(0x1e4000, 0x1e4001) AM_READ_PORT("SYSTEM")
219226   AM_RANGE(0x1e4002, 0x1e4003) AM_READ(control1_r)
220   AM_RANGE(0x1e8000, 0x1e8001) AM_READ(control2_r)
227   AM_RANGE(0x1e8000, 0x1e8001) AM_READWRITE(control2_r, control2_w)
221228   AM_RANGE(0x1f0000, 0x1f0001) AM_READ(K053246_word_r)
222229#if JOE_DEBUG
223230   AM_RANGE(0x110000, 0x110007) AM_READ(K053246_reg_word_r)
r4679r4680
227234#endif
228235ADDRESS_MAP_END
229236
230static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 16 )
231   AM_RANGE(0x000000, 0x0fffff) AM_WRITE(SMH_ROM)
232   AM_RANGE(0x100000, 0x100fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16)
233   AM_RANGE(0x110000, 0x110007) AM_WRITE(K053246_word_w)
234   AM_RANGE(0x120000, 0x121fff) AM_WRITE(K056832_ram_word_w)
235   AM_RANGE(0x122000, 0x123fff) AM_WRITE(K056832_ram_word_w)
236   AM_RANGE(0x130000, 0x131fff) AM_WRITE(SMH_ROM)
237   AM_RANGE(0x160000, 0x160007) AM_WRITE(K056832_b_word_w)   // VSCCS (board dependent)
238   AM_RANGE(0x170000, 0x170001) AM_WRITENOP         // Watchdog
239   AM_RANGE(0x180000, 0x18ffff) AM_WRITE(SMH_RAM) AM_BASE(&gijoe_workram)
240   AM_RANGE(0x190000, 0x190fff) AM_WRITE(paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_BASE(&paletteram16)
241   AM_RANGE(0x1a0000, 0x1a001f) AM_WRITE(K053251_lsb_w)
242   AM_RANGE(0x1b0000, 0x1b003f) AM_WRITE(K056832_word_w)
243   AM_RANGE(0x1c000c, 0x1c000d) AM_WRITE(sound_cmd_w)
244   AM_RANGE(0x1c0000, 0x1c001f) AM_WRITE(SMH_RAM)         // sound regs write fall through
245   AM_RANGE(0x1d0000, 0x1d0001) AM_WRITE(sound_irq_w)
246   AM_RANGE(0x1e8000, 0x1e8001) AM_WRITE(control2_w)
247ADDRESS_MAP_END
248
249static ADDRESS_MAP_START( sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
250   AM_RANGE(0x0000, 0xebff) AM_READ(SMH_ROM)
251   AM_RANGE(0xf000, 0xf7ff) AM_READ(SMH_RAM)
252   AM_RANGE(0xf800, 0xfa2f) AM_DEVREAD("konami", k054539_r)
237static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 )
238   AM_RANGE(0x0000, 0xebff) AM_ROM
239   AM_RANGE(0xf000, 0xf7ff) AM_RAM
240   AM_RANGE(0xf800, 0xfa2f) AM_DEVREADWRITE("konami", k054539_r, k054539_w)
241   AM_RANGE(0xfc00, 0xfc00) AM_WRITE(soundlatch2_w)
253242   AM_RANGE(0xfc02, 0xfc02) AM_READ(soundlatch_r)
254243ADDRESS_MAP_END
255244
256static ADDRESS_MAP_START( sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
257   AM_RANGE(0x0000, 0xebff) AM_WRITE(SMH_ROM)
258   AM_RANGE(0xf000, 0xf7ff) AM_WRITE(SMH_RAM)
259   AM_RANGE(0xf800, 0xfa2f) AM_DEVWRITE("konami", k054539_w)
260   AM_RANGE(0xfc00, 0xfc00) AM_WRITE(soundlatch2_w)
261ADDRESS_MAP_END
262
263245static INPUT_PORTS_START( gijoe )
264246   PORT_START("START")
265247   PORT_BIT( 0x0001, IP_ACTIVE_LOW,  IPT_START1 )
r4679r4680
310292
311293   /* basic machine hardware */
312294   MDRV_CPU_ADD("maincpu", M68000, 16000000)   /* Confirmed */
313   MDRV_CPU_PROGRAM_MAP(readmem, writemem)
295   MDRV_CPU_PROGRAM_MAP(gijoe_map,0)
314296   MDRV_CPU_VBLANK_INT("screen", gijoe_interrupt)
315297
316298   MDRV_CPU_ADD("audiocpu", Z80, 8000000)   /* Amuse & confirmed. z80e */
317   MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem)
299   MDRV_CPU_PROGRAM_MAP(sound_map,0)
318300
319301   MDRV_MACHINE_START(gijoe)
320302   MDRV_NVRAM_HANDLER(gijoe)
src/mame/drivers/uapce.c
r4679r4680
4242
4343   if ( diff & 0x40 )
4444   {
45      cpu_set_input_line(space->machine->cpu[0], INPUT_LINE_RESET, (data & 0x40) ? CLEAR_LINE : ASSERT_LINE);
45      cputag_set_input_line(space->machine, "maincpu", INPUT_LINE_RESET, (data & 0x40) ? CLEAR_LINE : ASSERT_LINE);
4646   }
4747
4848   // bit 3 - enable 752 Hz (D-3) square wave output
src/mame/drivers/tigeroad.c
r4679r4680
501501/* handler called by the 2203 emulator when the internal timers cause an IRQ */
502502static void irqhandler(const device_config *device, int irq)
503503{
504   cpu_set_input_line(device->machine->cpu[1],0,irq ? ASSERT_LINE : CLEAR_LINE);
504   cputag_set_input_line(device->machine, "audiocpu", 0, irq ? ASSERT_LINE : CLEAR_LINE);
505505}
506506
507507static const ym2203_interface ym2203_config =
r4679r4680
770770
771771static DRIVER_INIT( tigeroad )
772772{
773   memory_install_write16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xfe4002, 0xfe4003, 0, 0, tigeroad_soundcmd_w);
773   memory_install_write16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xfe4002, 0xfe4003, 0, 0, tigeroad_soundcmd_w);
774774}
775775
776776static DRIVER_INIT( f1dream )
777777{
778   memory_install_write16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xfe4002, 0xfe4003, 0, 0, f1dream_control_w);
778   memory_install_write16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xfe4002, 0xfe4003, 0, 0, f1dream_control_w);
779779}
780780
781781
src/mame/drivers/looping.c
r4679r4680
166166
167167static TILE_GET_INFO( get_tile_info )
168168{
169   looping_state *state = machine->driver_data;
169   looping_state *state = (looping_state *)machine->driver_data;
170170   int tile_number = state->videoram[tile_index];
171171   int color = state->colorram[(tile_index & 0x1f) * 2 + 1] & 0x07;
172172   SET_TILE_INFO(0, tile_number, color, 0);
r4679r4680
175175
176176static VIDEO_START( looping )
177177{
178   looping_state *state = machine->driver_data;
178   looping_state *state = (looping_state *)machine->driver_data;
179179
180180   state->bg_tilemap = tilemap_create(machine, get_tile_info, tilemap_scan_rows, 8,8, 32,32);
181181
r4679r4680
192192
193193static WRITE8_HANDLER( flip_screen_x_w )
194194{
195   looping_state *state = space->machine->driver_data;
195   looping_state *state = (looping_state *)space->machine->driver_data;
196196   flip_screen_x_set(space->machine, ~data & 0x01);
197197   tilemap_set_scrollx(state->bg_tilemap, 0, flip_screen_get(space->machine) ? 128 : 0);
198198}
r4679r4680
200200
201201static WRITE8_HANDLER( flip_screen_y_w )
202202{
203   looping_state *state = space->machine->driver_data;
203   looping_state *state = (looping_state *)space->machine->driver_data;
204204   flip_screen_y_set(space->machine, ~data & 0x01);
205205   tilemap_set_scrollx(state->bg_tilemap, 0, flip_screen_get(space->machine) ? 128 : 0);
206206}
r4679r4680
208208
209209static WRITE8_HANDLER( looping_videoram_w )
210210{
211   looping_state *state = space->machine->driver_data;
211   looping_state *state = (looping_state *)space->machine->driver_data;
212212   state->videoram[offset] = data;
213213   tilemap_mark_tile_dirty(state->bg_tilemap, offset);
214214}
r4679r4680
216216
217217static WRITE8_HANDLER( looping_colorram_w )
218218{
219   looping_state *state = space->machine->driver_data;
219   looping_state *state = (looping_state *)space->machine->driver_data;
220220   int i;
221221
222222   state->colorram[offset] = data;
r4679r4680
246246static void draw_sprites(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect)
247247{
248248   const UINT8 *source;
249   looping_state *state = machine->driver_data;
249   looping_state *state = (looping_state *)machine->driver_data;
250250
251251   for (source = state->spriteram; source < state->spriteram + 0x40; source += 4)
252252   {
r4679r4680
276276
277277static VIDEO_UPDATE( looping )
278278{
279   looping_state *state = screen->machine->driver_data;
279   looping_state *state = (looping_state *)screen->machine->driver_data;
280280   tilemap_draw(bitmap, cliprect, state->bg_tilemap, 0, 0);
281281
282282   draw_sprites(screen->machine, bitmap, cliprect);
r4679r4680
293293
294294static MACHINE_START( looping )
295295{
296   looping_state *state = machine->driver_data;
296   looping_state *state = (looping_state *)machine->driver_data;
297297   state_save_register_global_array(machine, state->sound);
298298}
299299
r4679r4680
314314static WRITE8_HANDLER( level2_irq_set )
315315{
316316   if (!(data & 1))
317      cpu_set_input_line_and_vector(space->machine->cpu[0], 0, ASSERT_LINE, 4);
317      cputag_set_input_line_and_vector(space->machine, "maincpu", 0, ASSERT_LINE, 4);
318318}
319319
320320
321321static WRITE8_HANDLER( main_irq_ack_w )
322322{
323323   if (data == 0)
324      cpu_set_input_line(space->machine->cpu[0], 0, CLEAR_LINE);
324      cputag_set_input_line(space->machine, "maincpu", 0, CLEAR_LINE);
325325}
326326
327327
328328static WRITE8_HANDLER( looping_souint_clr )
329329{
330330   if (data == 0)
331      cpu_set_input_line(space->machine->cpu[1], 0, CLEAR_LINE);
331      cputag_set_input_line(space->machine, "audiocpu", 0, CLEAR_LINE);
332332}
333333
334334
335335static void looping_spcint(const device_config *device, int state)
336336{
337   cpu_set_input_line_and_vector(device->machine->cpu[1], 0, state, 6);
337   cputag_set_input_line_and_vector(device->machine, "audiocpu", 0, state, 6);
338338}
339339
340340
341341static WRITE8_HANDLER( looping_soundlatch_w )
342342{
343343   soundlatch_w(space, offset, data);
344   cpu_set_input_line_and_vector(space->machine->cpu[1], 0, ASSERT_LINE, 4);
344   cputag_set_input_line_and_vector(space->machine, "audiocpu", 0, ASSERT_LINE, 4);
345345}
346346
347347
r4679r4680
365365        0007 = AFA
366366    */
367367
368   looping_state *state = device->machine->driver_data;
368   looping_state *state = (looping_state *)device->machine->driver_data;
369369   state->sound[offset + 1] = data ^ 1;
370370   dac_data_w(device, ((state->sound[2] << 7) + (state->sound[3] << 6)) * state->sound[7]);
371371}
r4679r4680
794794      rom[i] = BITSWAP8(rom[i], 0,1,2,3,4,5,6,7);
795795
796796   /* install protection handlers */
797   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x7000, 0x7007, 0, 0, protection_r);
797   memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x7000, 0x7007, 0, 0, protection_r);
798798}
799799
800800
r4679r4680
808808GAME( 1982, looping,  0,        looping, looping, looping, ROT90, "Venture Line", "Looping (set 1)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
809809GAME( 1982, loopinga, looping,  looping, looping, looping, ROT90, "Venture Line", "Looping (set 2)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
810810GAME( 1982, skybump,  0,        looping, skybump, looping, ROT90, "Venture Line", "Sky Bumper", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
811
src/mame/drivers/segas32.c
r4679r4680
401401   v60_irq_timer[1] = timer_alloc(machine, signal_v60_irq_callback, NULL);
402402
403403   /* clear IRQ lines */
404   cpu_set_input_line(machine->cpu[0], 0, CLEAR_LINE);
404   cputag_set_input_line(machine, "maincpu", 0, CLEAR_LINE);
405405}
406406
407407
r4679r4680
422422   for (vector = 0; vector < 5; vector++)
423423      if (effirq & (1 << vector))
424424      {
425         cpu_set_input_line_and_vector(machine->cpu[0], 0, ASSERT_LINE, vector);
425         cputag_set_input_line_and_vector(machine, "maincpu", 0, ASSERT_LINE, vector);
426426         break;
427427      }
428428
429429   /* if we didn't find any, clear the interrupt line */
430430   if (vector == 5)
431      cpu_set_input_line(machine->cpu[0], 0, CLEAR_LINE);
431      cputag_set_input_line(machine, "maincpu", 0, CLEAR_LINE);
432432}
433433
434434
r4679r4680
695695      case 0x1c/2:
696696         system32_displayenable[which] = (data & 0x02);
697697         if (which == 0)
698            cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_RESET, (data & 0x04) ? CLEAR_LINE : ASSERT_LINE);
698            cputag_set_input_line(space->machine, "soundcpu", INPUT_LINE_RESET, (data & 0x04) ? CLEAR_LINE : ASSERT_LINE);
699699         break;
700700   }
701701}
r4679r4680
10401040   for (vector = 0; vector < 3; vector++)
10411041      if (effirq & (1 << vector))
10421042      {
1043         cpu_set_input_line_and_vector(machine->cpu[1], 0, ASSERT_LINE, 2 * vector);
1043         cputag_set_input_line_and_vector(machine, "soundcpu", 0, ASSERT_LINE, 2 * vector);
10441044         break;
10451045      }
10461046
10471047   /* if we didn't find any, clear the interrupt line */
10481048   if (vector == 3)
1049      cpu_set_input_line(machine->cpu[1], 0, CLEAR_LINE);
1049      cputag_set_input_line(machine, "soundcpu", 0, CLEAR_LINE);
10501050}
10511051
10521052
r4679r4680
37873787static DRIVER_INIT( arescue )
37883788{
37893789   segas32_common_init(analog_custom_io_r, analog_custom_io_w, NULL);
3790   memory_install_readwrite16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xa00000, 0xa00007, 0, 0, arescue_dsp_r, arescue_dsp_w);
3790   memory_install_readwrite16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xa00000, 0xa00007, 0, 0, arescue_dsp_r, arescue_dsp_w);
37913791
3792   dual_pcb_comms = auto_malloc(0x1000);
3793   memory_install_readwrite16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x810000, 0x810fff, 0, 0, dual_pcb_comms_r, dual_pcb_comms_w);
3794   memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x818000, 0x818003, 0, 0, dual_pcb_masterslave);
3792   dual_pcb_comms = auto_alloc_array(machine, UINT16, 0x1000/2);
3793   memory_install_readwrite16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x810000, 0x810fff, 0, 0, dual_pcb_comms_r, dual_pcb_comms_w);
3794   memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x818000, 0x818003, 0, 0, dual_pcb_masterslave);
37953795
3796   memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x810000, 0x810001, 0, 0, arescue_handshake_r);
3797   memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x81000e, 0x81000f, 0, 0, arescue_slavebusy_r);
3796   memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x810000, 0x810001, 0, 0, arescue_handshake_r);
3797   memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x81000e, 0x81000f, 0, 0, arescue_slavebusy_r);
37983798}
37993799
38003800
r4679r4680
38033803   segas32_common_init(extra_custom_io_r, NULL, NULL);
38043804
38053805   /* install protection handlers */
3806   memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xa00100, 0xa0011f, 0, 0, arf_wakeup_protection_r);
3807   memory_install_readwrite16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xa00000, 0xa00fff, 0, 0, arabfgt_protection_r, arabfgt_protection_w);
3806   memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xa00100, 0xa0011f, 0, 0, arf_wakeup_protection_r);
3807   memory_install_readwrite16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xa00000, 0xa00fff, 0, 0, arabfgt_protection_r, arabfgt_protection_w);
38083808}
38093809
38103810
r4679r4680
38133813   segas32_common_init(extra_custom_io_r, NULL, NULL);
38143814
38153815   /* install protection handlers */
3816   system32_protram = auto_malloc (0x1000);
3817   memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x20ba00, 0x20ba07, 0, 0, brival_protection_r);
3818   memory_install_write16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xa00000, 0xa00fff, 0, 0, brival_protection_w);
3816   system32_protram = auto_alloc_array(machine, UINT16, 0x1000/2);
3817   memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x20ba00, 0x20ba07, 0, 0, brival_protection_r);
3818   memory_install_write16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xa00000, 0xa00fff, 0, 0, brival_protection_w);
38193819}
38203820
38213821
r4679r4680
38243824   segas32_common_init(extra_custom_io_r, NULL, NULL);
38253825
38263826   /* install protection handlers */
3827   memory_install_readwrite16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xa00000, 0xa7ffff, 0, 0, darkedge_protection_r, darkedge_protection_w);
3827   memory_install_readwrite16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xa00000, 0xa7ffff, 0, 0, darkedge_protection_r, darkedge_protection_w);
38283828   system32_prot_vblank = darkedge_fd1149_vblank;
38293829}
38303830
r4679r4680
38333833   segas32_common_init(NULL, NULL, NULL);
38343834
38353835   /* install protection handlers */
3836   memory_install_readwrite16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xa00000, 0xa7ffff, 0, 0, dbzvrvs_protection_r, dbzvrvs_protection_w);
3836   memory_install_readwrite16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xa00000, 0xa7ffff, 0, 0, dbzvrvs_protection_r, dbzvrvs_protection_w);
38373837}
38383838
38393839static WRITE16_HANDLER( f1en_comms_echo_w )
r4679r4680
38473847{
38483848   segas32_common_init(analog_custom_io_r, analog_custom_io_w, NULL);
38493849
3850   dual_pcb_comms = auto_malloc(0x1000);
3851   memory_install_readwrite16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x810000, 0x810fff, 0, 0, dual_pcb_comms_r, dual_pcb_comms_w);
3852   memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x818000, 0x818003, 0, 0, dual_pcb_masterslave);
3850   dual_pcb_comms = auto_alloc_array(machine, UINT16, 0x1000/2);
3851   memory_install_readwrite16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x810000, 0x810fff, 0, 0, dual_pcb_comms_r, dual_pcb_comms_w);
3852   memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x818000, 0x818003, 0, 0, dual_pcb_masterslave);
38533853
3854   memory_install_write16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x810048, 0x810049, 0, 0, f1en_comms_echo_w);
3854   memory_install_write16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x810048, 0x810049, 0, 0, f1en_comms_echo_w);
38553855}
38563856
38573857
r4679r4680
38663866   segas32_common_init(extra_custom_io_r, NULL, NULL);
38673867
38683868   decrypt_ga2_protrom(machine);
3869   memory_install_readwrite16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xa00000, 0xa00fff, 0, 0, ga2_dpram_r, ga2_dpram_w);
3869   memory_install_readwrite16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xa00000, 0xa00fff, 0, 0, ga2_dpram_r, ga2_dpram_w);
38703870}
38713871
38723872
r4679r4680
39423942{
39433943   const device_config *multipcm = devtag_get_device(machine, "sega");
39443944   segas32_common_init(analog_custom_io_r, analog_custom_io_w, NULL);
3945   memory_install_write8_device_handler(cpu_get_address_space(machine->cpu[1], ADDRESS_SPACE_PROGRAM), multipcm, 0xb0, 0xbf, 0, 0, scross_bank_w);
3945   memory_install_write8_device_handler(cputag_get_address_space(machine, "soundcpu", ADDRESS_SPACE_PROGRAM), multipcm, 0xb0, 0xbf, 0, 0, scross_bank_w);
39463946}
39473947
39483948
r4679r4680
39573957   segas32_common_init(sonic_custom_io_r, sonic_custom_io_w, NULL);
39583958
39593959   /* install protection handlers */
3960   memory_install_write16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x20E5C4, 0x20E5C5, 0, 0, sonic_level_load_protection);
3960   memory_install_write16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x20E5C4, 0x20E5C5, 0, 0, sonic_level_load_protection);
39613961}
39623962
39633963
r4679r4680
39823982static DRIVER_INIT( jleague )
39833983{
39843984   segas32_common_init(NULL, NULL, NULL);
3985   memory_install_write16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x20F700, 0x20F705, 0, 0, jleague_protection_w);
3985   memory_install_write16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x20F700, 0x20F705, 0, 0, jleague_protection_w);
39863986}
39873987
39883988
src/mame/drivers/slapfght.c
r4679r4680
408408int getstar_id;
409409
410410
411static ADDRESS_MAP_START( perfrman_readmem, ADDRESS_SPACE_PROGRAM, 8 )
412   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
413   AM_RANGE(0x8000, 0x87ff) AM_READ(SMH_RAM)
414   AM_RANGE(0x8800, 0x880f) AM_READ(slapfight_dpram_r)
415   AM_RANGE(0x8810, 0x8fff) AM_READ(SMH_BANK1)
416   AM_RANGE(0x9000, 0x97ff) AM_READ(SMH_RAM)
417   AM_RANGE(0x9800, 0x9fff) AM_READ(SMH_RAM)
418   AM_RANGE(0xa000, 0xa7ff) AM_READ(SMH_RAM)
411static ADDRESS_MAP_START( perfrman_map, ADDRESS_SPACE_PROGRAM, 8 )
412   AM_RANGE(0x0000, 0x7fff) AM_ROM
413   AM_RANGE(0x8000, 0x87ff) AM_RAM
414   AM_RANGE(0x8800, 0x880f) AM_RAM AM_SHARE(1)
415   AM_RANGE(0x8810, 0x8fff) AM_RAMBANK(1) /* Shared RAM with sound CPU */
416   AM_RANGE(0x9000, 0x97ff) AM_RAM_WRITE(slapfight_videoram_w) AM_BASE(&videoram) AM_SIZE(&videoram_size)
417   AM_RANGE(0x9800, 0x9fff) AM_RAM_WRITE(slapfight_colorram_w) AM_BASE(&colorram)
418   AM_RANGE(0xa000, 0xa7ff) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
419419ADDRESS_MAP_END
420420
421static ADDRESS_MAP_START( perfrman_writemem, ADDRESS_SPACE_PROGRAM, 8 )
422   AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM)
423   AM_RANGE(0x8000, 0x87ff) AM_WRITE(SMH_RAM)
424   AM_RANGE(0x8800, 0x880f) AM_WRITE(slapfight_dpram_w) AM_BASE(&slapfight_dpram) AM_SIZE(&slapfight_dpram_size)
425   AM_RANGE(0x8810, 0x8fff) AM_WRITE(SMH_BANK1)   /* Shared RAM with sound CPU */
426   AM_RANGE(0x9000, 0x97ff) AM_WRITE(slapfight_videoram_w) AM_BASE(&videoram) AM_SIZE(&videoram_size)
427   AM_RANGE(0x9800, 0x9fff) AM_WRITE(slapfight_colorram_w) AM_BASE(&colorram)
428   AM_RANGE(0xa000, 0xa7ff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
421static ADDRESS_MAP_START( tigerh_map, ADDRESS_SPACE_PROGRAM, 8 )
422   AM_RANGE(0x0000, 0xbfff) AM_ROM
423   AM_RANGE(0xc000, 0xc7ff) AM_RAM
424   AM_RANGE(0xc800, 0xc80f) AM_RAM AM_SHARE(1)
425   AM_RANGE(0xc810, 0xcfff) AM_RAM
426   AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(slapfight_videoram_w) AM_BASE(&videoram) AM_SIZE(&videoram_size)
427   AM_RANGE(0xd800, 0xdfff) AM_RAM_WRITE(slapfight_colorram_w) AM_BASE(&colorram)
428   AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
429   AM_RANGE(0xe800, 0xe800) AM_WRITEONLY AM_BASE(&slapfight_scrollx_lo)
430   AM_RANGE(0xe801, 0xe801) AM_WRITEONLY AM_BASE(&slapfight_scrollx_hi)
431   AM_RANGE(0xe802, 0xe802) AM_WRITEONLY AM_BASE(&slapfight_scrolly)
432   AM_RANGE(0xf000, 0xf7ff) AM_RAM_WRITE(slapfight_fixram_w) AM_BASE(&slapfight_videoram) AM_SIZE(&slapfight_videoram_size)
433   AM_RANGE(0xf800, 0xffff) AM_RAM_WRITE(slapfight_fixcol_w) AM_BASE(&slapfight_colorram)
429434ADDRESS_MAP_END
430435
431static ADDRESS_MAP_START( tigerh_readmem, ADDRESS_SPACE_PROGRAM, 8 )
432   AM_RANGE(0x0000, 0xbfff) AM_READ(SMH_ROM)
433   AM_RANGE(0xc000, 0xc7ff) AM_READ(SMH_RAM)
434   AM_RANGE(0xc800, 0xc80f) AM_READ(slapfight_dpram_r)
435   AM_RANGE(0xc810, 0xcfff) AM_READ(SMH_RAM)
436   AM_RANGE(0xd000, 0xd7ff) AM_READ(SMH_RAM)
437   AM_RANGE(0xd800, 0xdfff) AM_READ(SMH_RAM)
438   AM_RANGE(0xf000, 0xf7ff) AM_READ(SMH_RAM)
439   AM_RANGE(0xf800, 0xffff) AM_READ(SMH_RAM)
440ADDRESS_MAP_END
441
442static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 )
443   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
444   AM_RANGE(0x8000, 0xbfff) AM_READ(SMH_BANK1)
445   AM_RANGE(0xc000, 0xc7ff) AM_READ(SMH_RAM)
446   AM_RANGE(0xc800, 0xc80f) AM_READ(slapfight_dpram_r)
447   AM_RANGE(0xc810, 0xcfff) AM_READ(SMH_RAM)
448   AM_RANGE(0xd000, 0xd7ff) AM_READ(SMH_RAM)
449   AM_RANGE(0xd800, 0xdfff) AM_READ(SMH_RAM)
450   AM_RANGE(0xe000, 0xe7ff) AM_READ(SMH_RAM)
436static ADDRESS_MAP_START( slapfght_map, ADDRESS_SPACE_PROGRAM, 8 )
437   AM_RANGE(0x0000, 0x7fff) AM_ROM
438   AM_RANGE(0x8000, 0xbfff) AM_ROMBANK(1)
439   AM_RANGE(0xc000, 0xc7ff) AM_RAM
440   AM_RANGE(0xc800, 0xc80f) AM_RAM AM_SHARE(1)
441   AM_RANGE(0xc810, 0xcfff) AM_RAM
442   AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(slapfight_videoram_w) AM_BASE(&videoram) AM_SIZE(&videoram_size)
443   AM_RANGE(0xd800, 0xdfff) AM_RAM_WRITE(slapfight_colorram_w) AM_BASE(&colorram)
444   AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
445   AM_RANGE(0xe800, 0xe800) AM_WRITEONLY AM_BASE(&slapfight_scrollx_lo)
446   AM_RANGE(0xe801, 0xe801) AM_WRITEONLY AM_BASE(&slapfight_scrollx_hi)
447   AM_RANGE(0xe802, 0xe802) AM_WRITEONLY AM_BASE(&slapfight_scrolly)
451448//  AM_RANGE(0xe803, 0xe803) AM_READ(mcu_r) // MCU lives here
452   AM_RANGE(0xf000, 0xf7ff) AM_READ(SMH_RAM)
453   AM_RANGE(0xf800, 0xffff) AM_READ(SMH_RAM)
449   AM_RANGE(0xf000, 0xf7ff) AM_RAM_WRITE(slapfight_fixram_w) AM_BASE(&slapfight_videoram) AM_SIZE(&slapfight_videoram_size)
450   AM_RANGE(0xf800, 0xffff) AM_RAM_WRITE(slapfight_fixcol_w) AM_BASE(&slapfight_colorram)
454451ADDRESS_MAP_END
455452
456static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 )
457   AM_RANGE(0x0000, 0xbfff) AM_WRITE(SMH_ROM)
458   AM_RANGE(0xc000, 0xc7ff) AM_WRITE(SMH_RAM)
459   AM_RANGE(0xc800, 0xc80f) AM_WRITE(slapfight_dpram_w) AM_BASE(&slapfight_dpram) AM_SIZE(&slapfight_dpram_size)
460   AM_RANGE(0xc810, 0xcfff) AM_WRITE(SMH_RAM)
461   AM_RANGE(0xd000, 0xd7ff) AM_WRITE(slapfight_videoram_w) AM_BASE(&videoram) AM_SIZE(&videoram_size)
462   AM_RANGE(0xd800, 0xdfff) AM_WRITE(slapfight_colorram_w) AM_BASE(&colorram)
463   AM_RANGE(0xe000, 0xe7ff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
464   AM_RANGE(0xe800, 0xe800) AM_WRITE(SMH_RAM) AM_BASE(&slapfight_scrollx_lo)
465   AM_RANGE(0xe801, 0xe801) AM_WRITE(SMH_RAM) AM_BASE(&slapfight_scrollx_hi)
466   AM_RANGE(0xe802, 0xe802) AM_WRITE(SMH_RAM) AM_BASE(&slapfight_scrolly)
467   AM_RANGE(0xf000, 0xf7ff) AM_WRITE(slapfight_fixram_w) AM_BASE(&slapfight_videoram) AM_SIZE(&slapfight_videoram_size)
468   AM_RANGE(0xf800, 0xffff) AM_WRITE(slapfight_fixcol_w) AM_BASE(&slapfight_colorram)
469ADDRESS_MAP_END
470
471static ADDRESS_MAP_START( slapbtuk_readmem, ADDRESS_SPACE_PROGRAM, 8 )
472   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
473   AM_RANGE(0x8000, 0xbfff) AM_READ(SMH_BANK1)
474   AM_RANGE(0xc000, 0xc7ff) AM_READ(SMH_RAM)
475   AM_RANGE(0xc800, 0xc80f) AM_READ(slapfight_dpram_r)
476   AM_RANGE(0xc810, 0xcfff) AM_READ(SMH_RAM)
477   AM_RANGE(0xd000, 0xd7ff) AM_READ(SMH_RAM)
478   AM_RANGE(0xd800, 0xdfff) AM_READ(SMH_RAM)
479   AM_RANGE(0xe000, 0xe7ff) AM_READ(SMH_RAM)
453static ADDRESS_MAP_START( slapbtuk_map, ADDRESS_SPACE_PROGRAM, 8 )
454   AM_RANGE(0x0000, 0x7fff) AM_ROM
455   AM_RANGE(0x8000, 0xbfff) AM_ROMBANK(1)
456   AM_RANGE(0xc000, 0xc7ff) AM_RAM
457   AM_RANGE(0xc800, 0xc80f) AM_RAM AM_SHARE(1)
458   AM_RANGE(0xc810, 0xcfff) AM_RAM
459   AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(slapfight_videoram_w) AM_BASE(&videoram) AM_SIZE(&videoram_size)
460   AM_RANGE(0xd800, 0xdfff) AM_RAM_WRITE(slapfight_colorram_w) AM_BASE(&colorram)
461   AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
462   AM_RANGE(0xe800, 0xe800) AM_WRITEONLY AM_BASE(&slapfight_scrollx_hi)
463   AM_RANGE(0xe802, 0xe802) AM_WRITEONLY AM_BASE(&slapfight_scrolly)
464   AM_RANGE(0xe803, 0xe803) AM_WRITEONLY AM_BASE(&slapfight_scrollx_lo)
480465//  AM_RANGE(0xe803, 0xe803) AM_READ(getstar_e803_r)
481   AM_RANGE(0xec00, 0xefff) AM_READ(SMH_ROM) // it reads a copy of the logo from here!
482   AM_RANGE(0xf000, 0xf7ff) AM_READ(SMH_RAM)
483   AM_RANGE(0xf800, 0xffff) AM_READ(SMH_RAM)
466   AM_RANGE(0xec00, 0xefff) AM_ROM // it reads a copy of the logo from here!
467   AM_RANGE(0xf000, 0xf7ff) AM_RAM_WRITE(slapfight_fixram_w) AM_BASE(&slapfight_videoram) AM_SIZE(&slapfight_videoram_size)
468   AM_RANGE(0xf800, 0xffff) AM_RAM_WRITE(slapfight_fixcol_w) AM_BASE(&slapfight_colorram)
484469ADDRESS_MAP_END
485470
486
487static ADDRESS_MAP_START( slapbtuk_writemem, ADDRESS_SPACE_PROGRAM, 8 )
488   AM_RANGE(0x0000, 0xbfff) AM_WRITE(SMH_ROM)
489   AM_RANGE(0xc000, 0xc7ff) AM_WRITE(SMH_RAM)
490   AM_RANGE(0xc800, 0xc80f) AM_WRITE(slapfight_dpram_w) AM_BASE(&slapfight_dpram) AM_SIZE(&slapfight_dpram_size)
491   AM_RANGE(0xc810, 0xcfff) AM_WRITE(SMH_RAM)
492   AM_RANGE(0xd000, 0xd7ff) AM_WRITE(slapfight_videoram_w) AM_BASE(&videoram) AM_SIZE(&videoram_size)
493   AM_RANGE(0xd800, 0xdfff) AM_WRITE(slapfight_colorram_w) AM_BASE(&colorram)
494   AM_RANGE(0xe000, 0xe7ff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
495   AM_RANGE(0xe800, 0xe800) AM_WRITE(SMH_RAM) AM_BASE(&slapfight_scrollx_hi)
496   AM_RANGE(0xe802, 0xe802) AM_WRITE(SMH_RAM) AM_BASE(&slapfight_scrolly)
497   AM_RANGE(0xe803, 0xe803) AM_WRITE(SMH_RAM) AM_BASE(&slapfight_scrollx_lo)
498   AM_RANGE(0xf000, 0xf7ff) AM_WRITE(slapfight_fixram_w) AM_BASE(&slapfight_videoram) AM_SIZE(&slapfight_videoram_size)
499   AM_RANGE(0xf800, 0xffff) AM_WRITE(slapfight_fixcol_w) AM_BASE(&slapfight_colorram)
500ADDRESS_MAP_END
501
502static ADDRESS_MAP_START( io_map, ADDRESS_SPACE_IO, 8 )
471static ADDRESS_MAP_START( slapfght_io_map, ADDRESS_SPACE_IO, 8 )
503472   ADDRESS_MAP_GLOBAL_MASK(0xff)
504473   AM_RANGE(0x00, 0x00) AM_READWRITE(slapfight_port_00_r, slapfight_port_00_w)   /* status register */
505474   AM_RANGE(0x01, 0x01) AM_WRITE(slapfight_port_01_w)
r4679r4680
526495   AM_RANGE(0x07, 0x07) AM_WRITE(slapfight_port_07_w)
527496ADDRESS_MAP_END
528497
529static ADDRESS_MAP_START( m68705_readmem, ADDRESS_SPACE_PROGRAM, 8 )
530   ADDRESS_MAP_GLOBAL_MASK(0x7ff)
531   AM_RANGE(0x0000, 0x0000) AM_READ(tigerh_68705_portA_r)
532   AM_RANGE(0x0001, 0x0001) AM_READ(tigerh_68705_portB_r)
533   AM_RANGE(0x0002, 0x0002) AM_READ(tigerh_68705_portC_r)
534   AM_RANGE(0x0010, 0x007f) AM_READ(SMH_RAM)
535   AM_RANGE(0x0080, 0x07ff) AM_READ(SMH_ROM)
536ADDRESS_MAP_END
537
538static ADDRESS_MAP_START( m68705_writemem, ADDRESS_SPACE_PROGRAM, 8 )
539   ADDRESS_MAP_GLOBAL_MASK(0x7ff)
540   AM_RANGE(0x0000, 0x0000) AM_WRITE(tigerh_68705_portA_w)
541   AM_RANGE(0x0001, 0x0001) AM_WRITE(tigerh_68705_portB_w)
542   AM_RANGE(0x0002, 0x0002) AM_WRITE(tigerh_68705_portC_w)
543   AM_RANGE(0x0004, 0x0004) AM_WRITE(tigerh_68705_ddrA_w)
544   AM_RANGE(0x0005, 0x0005) AM_WRITE(tigerh_68705_ddrB_w)
545   AM_RANGE(0x0006, 0x0006) AM_WRITE(tigerh_68705_ddrC_w)
546   AM_RANGE(0x0010, 0x007f) AM_WRITE(SMH_RAM)
547   AM_RANGE(0x0080, 0x07ff) AM_WRITE(SMH_ROM)
548ADDRESS_MAP_END
549
550498static ADDRESS_MAP_START( tigerhb_io_map, ADDRESS_SPACE_IO, 8 )
551499   ADDRESS_MAP_GLOBAL_MASK(0xff)
552500   AM_RANGE(0x00, 0x00) AM_READWRITE(slapfight_port_00_r, slapfight_port_00_w)   /* status register */
r4679r4680
556504   AM_RANGE(0x07, 0x07) AM_WRITE(slapfight_port_07_w)
557505ADDRESS_MAP_END
558506
559static ADDRESS_MAP_START( perfrman_sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
560   AM_RANGE(0x0000, 0x1fff) AM_READ(SMH_ROM)
561   AM_RANGE(0x8800, 0x880f) AM_READ(slapfight_dpram_r)
562   AM_RANGE(0x8810, 0x8fff) AM_READ(SMH_BANK1)
563   AM_RANGE(0xa081, 0xa081) AM_DEVREAD("ay1", ay8910_r)
564   AM_RANGE(0xa091, 0xa091) AM_DEVREAD("ay2", ay8910_r)
507static ADDRESS_MAP_START( tigerh_m68705_map, ADDRESS_SPACE_PROGRAM, 8 )
508   ADDRESS_MAP_GLOBAL_MASK(0x7ff)
509   AM_RANGE(0x0000, 0x0000) AM_READWRITE(tigerh_68705_portA_r,tigerh_68705_portA_w)
510   AM_RANGE(0x0001, 0x0001) AM_READWRITE(tigerh_68705_portB_r,tigerh_68705_portB_w)
511   AM_RANGE(0x0002, 0x0002) AM_READWRITE(tigerh_68705_portC_r,tigerh_68705_portC_w)
512   AM_RANGE(0x0004, 0x0004) AM_WRITE(tigerh_68705_ddrA_w)
513   AM_RANGE(0x0005, 0x0005) AM_WRITE(tigerh_68705_ddrB_w)
514   AM_RANGE(0x0006, 0x0006) AM_WRITE(tigerh_68705_ddrC_w)
515   AM_RANGE(0x0010, 0x007f) AM_RAM
516   AM_RANGE(0x0080, 0x07ff) AM_ROM
565517ADDRESS_MAP_END
566518
567static ADDRESS_MAP_START( perfrman_sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
568   AM_RANGE(0x0000, 0x1fff) AM_WRITE(SMH_ROM)
569   AM_RANGE(0x8800, 0x880f) AM_WRITE(slapfight_dpram_w)
570   AM_RANGE(0x8810, 0x8fff) AM_WRITE(SMH_BANK1)   /* Shared RAM with main CPU */
519static ADDRESS_MAP_START( perfrman_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
520   AM_RANGE(0x0000, 0x1fff) AM_ROM
521   AM_RANGE(0x8800, 0x880f) AM_RAM AM_SHARE(1)
522   AM_RANGE(0x8810, 0x8fff) AM_RAMBANK(1) /* Shared RAM with main CPU */
571523   AM_RANGE(0xa080, 0xa080) AM_DEVWRITE("ay1", ay8910_address_w)
524   AM_RANGE(0xa081, 0xa081) AM_DEVREAD("ay1", ay8910_r)
572525   AM_RANGE(0xa082, 0xa082) AM_DEVWRITE("ay1", ay8910_data_w)
573526   AM_RANGE(0xa090, 0xa090) AM_DEVWRITE("ay2", ay8910_address_w)
527   AM_RANGE(0xa091, 0xa091) AM_DEVREAD("ay2", ay8910_r)
574528   AM_RANGE(0xa092, 0xa092) AM_DEVWRITE("ay2", ay8910_data_w)
575529   AM_RANGE(0xa0e0, 0xa0e0) AM_WRITE(getstar_sh_intenable_w) /* maybe a0f0 also -LE */
576530//  AM_RANGE(0xa0f0, 0xa0f0) AM_WRITENOP
577531ADDRESS_MAP_END
578532
579static ADDRESS_MAP_START( sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
580   AM_RANGE(0x0000, 0x1fff) AM_READ(SMH_ROM)
581   AM_RANGE(0xa081, 0xa081) AM_DEVREAD("ay1", ay8910_r)
582   AM_RANGE(0xa091, 0xa091) AM_DEVREAD("ay2", ay8910_r)
583   AM_RANGE(0xc800, 0xc80f) AM_READ(slapfight_dpram_r)
584   AM_RANGE(0xc810, 0xcfff) AM_READ(SMH_RAM)
585   AM_RANGE(0xd000, 0xffff) AM_READ(SMH_RAM)
586ADDRESS_MAP_END
587
588static ADDRESS_MAP_START( sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
589   AM_RANGE(0x0000, 0x1fff) AM_WRITE(SMH_ROM)
533static ADDRESS_MAP_START( slapfght_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
534   AM_RANGE(0x0000, 0x1fff) AM_ROM
590535   AM_RANGE(0xa080, 0xa080) AM_DEVWRITE("ay1", ay8910_address_w)
536   AM_RANGE(0xa081, 0xa081) AM_DEVREAD("ay1", ay8910_r)
591537   AM_RANGE(0xa082, 0xa082) AM_DEVWRITE("ay1", ay8910_data_w)
592538   AM_RANGE(0xa090, 0xa090) AM_DEVWRITE("ay2", ay8910_address_w)
539   AM_RANGE(0xa091, 0xa091) AM_DEVREAD("ay2", ay8910_r)
593540   AM_RANGE(0xa092, 0xa092) AM_DEVWRITE("ay2", ay8910_data_w)
594541   AM_RANGE(0xa0e0, 0xa0e0) AM_WRITE(getstar_sh_intenable_w) /* maybe a0f0 also -LE */
595   AM_RANGE(0xc800, 0xc80f) AM_WRITE(slapfight_dpram_w)
596   AM_RANGE(0xc810, 0xcfff) AM_WRITE(SMH_RAM)
597   AM_RANGE(0xd000, 0xffff) AM_WRITE(SMH_RAM)
542//  AM_RANGE(0xa0f0, 0xa0f0) AM_WRITENOP
543   AM_RANGE(0xc800, 0xc80f) AM_RAM AM_SHARE(1)
544   AM_RANGE(0xc810, 0xcfff) AM_RAM
545   AM_RANGE(0xd000, 0xffff) AM_RAM
598546ADDRESS_MAP_END
599547
600548
549
601550static INPUT_PORTS_START( slapfght_generic )
602551   PORT_START("IN0")
603552   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    ) PORT_8WAY
r4679r4680
917866
918867static VIDEO_EOF( perfrman )
919868{
920   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
921   buffer_spriteram_w(space,0,0);
869   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
870   buffer_spriteram_w(space, 0, 0);
922871}
923872
924873static MACHINE_DRIVER_START( perfrman )
925874
926875   /* basic machine hardware */
927876   MDRV_CPU_ADD("maincpu", Z80,16000000/4)         /* 4MHz ???, 16MHz Oscillator */
928   MDRV_CPU_PROGRAM_MAP(perfrman_readmem,perfrman_writemem)
929   MDRV_CPU_IO_MAP(io_map,0)
877   MDRV_CPU_PROGRAM_MAP(perfrman_map,0)
878   MDRV_CPU_IO_MAP(slapfght_io_map,0)
930879   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
931880
932881   MDRV_CPU_ADD("audiocpu", Z80,16000000/8)         /* 2MHz ???, 16MHz Oscillator */
933   MDRV_CPU_PROGRAM_MAP(perfrman_sound_readmem,perfrman_sound_writemem)
882   MDRV_CPU_PROGRAM_MAP(perfrman_sound_map,0)
934883   MDRV_CPU_VBLANK_INT_HACK(getstar_interrupt,4)   /* music speed, verified */
935884
936885   MDRV_QUANTUM_TIME(HZ(600))      /* 10 CPU slices per frame - enough for the sound CPU to read all commands */
r4679r4680
972921
973922   /* basic machine hardware */
974923   MDRV_CPU_ADD("maincpu", Z80, 6000000)
975   MDRV_CPU_PROGRAM_MAP(tigerh_readmem,writemem)
924   MDRV_CPU_PROGRAM_MAP(tigerh_map,0)
976925   MDRV_CPU_IO_MAP(tigerhb_io_map,0)
977926   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
978927
979928   MDRV_CPU_ADD("audiocpu", Z80, 6000000)
980   MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem)
929   MDRV_CPU_PROGRAM_MAP(slapfght_sound_map,0)
981930   MDRV_CPU_VBLANK_INT_HACK(nmi_line_pulse,6)    /* ??? */
982931
983932   MDRV_QUANTUM_TIME(HZ(600))   /* 10 CPU slices per frame - enough for the sound CPU to read all commands */
r4679r4680
1018967
1019968   /* basic machine hardware */
1020969   MDRV_CPU_ADD("maincpu", Z80, XTAL_36MHz/6) /* verified on pcb */
1021   MDRV_CPU_PROGRAM_MAP(tigerh_readmem,writemem)
970   MDRV_CPU_PROGRAM_MAP(tigerh_map,0)
1022971   MDRV_CPU_IO_MAP(tigerh_io_map,0)
1023972   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
1024973
1025974   MDRV_CPU_ADD("audiocpu", Z80, XTAL_36MHz/12) /* verified on pcb */
1026   MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem)
975   MDRV_CPU_PROGRAM_MAP(slapfght_sound_map,0)
1027976   MDRV_CPU_VBLANK_INT_HACK(nmi_line_pulse,6)    /* ??? */
1028977
1029978   MDRV_CPU_ADD("mcu", M68705,XTAL_36MHz/12) /* verified on pcb */
1030   MDRV_CPU_PROGRAM_MAP(m68705_readmem,m68705_writemem)
979   MDRV_CPU_PROGRAM_MAP(tigerh_m68705_map,0)
1031980
1032981   MDRV_QUANTUM_TIME(HZ(600))   /* 10 CPU slices per frame - enough for the sound CPU to read all commands */
1033982
r4679r4680
10681017
10691018   /* basic machine hardware */
10701019   MDRV_CPU_ADD("maincpu",Z80, XTAL_36MHz/6) /* verified on pcb */
1071   MDRV_CPU_PROGRAM_MAP(readmem,writemem)
1072   MDRV_CPU_IO_MAP(io_map,0)
1020   MDRV_CPU_PROGRAM_MAP(slapfght_map,0)
1021   MDRV_CPU_IO_MAP(slapfght_io_map,0)
10731022   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
10741023
10751024   MDRV_CPU_ADD("audiocpu", Z80, XTAL_36MHz/12) /* verified on pcb */
1076   MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem)
1025   MDRV_CPU_PROGRAM_MAP(slapfght_sound_map,0)
10771026   MDRV_CPU_VBLANK_INT_HACK(getstar_interrupt, 3)
10781027
10791028   MDRV_QUANTUM_TIME(HZ(600))   /* 10 CPU slices per frame - enough for the sound CPU to read all commands */
r4679r4680
11161065   /* basic machine hardware */
11171066   MDRV_IMPORT_FROM(slapfigh)
11181067   MDRV_CPU_MODIFY("maincpu")
1119   MDRV_CPU_PROGRAM_MAP(slapbtuk_readmem,slapbtuk_writemem)
1068   MDRV_CPU_PROGRAM_MAP(slapbtuk_map,0)
11201069MACHINE_DRIVER_END
11211070
11221071
r4679r4680
17701719
17711720static DRIVER_INIT( tigerh )
17721721{
1773   memory_install_readwrite8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xe803, 0xe803, 0, 0, tigerh_mcu_r, tigerh_mcu_w  );
1722   memory_install_readwrite8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xe803, 0xe803, 0, 0, tigerh_mcu_r, tigerh_mcu_w  );
17741723}
17751724
17761725static DRIVER_INIT( tigerhb )
17771726{
1778   memory_install_readwrite8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xe803, 0xe803, 0, 0, tigerhb_e803_r, tigerhb_e803_w  );
1727   memory_install_readwrite8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xe803, 0xe803, 0, 0, tigerhb_e803_r, tigerhb_e803_w  );
17791728}
17801729
17811730
r4679r4680
18331782   return 0;
18341783}
18351784
1836static READ8_HANDLER( gtstarb1_dpram_r )
1837{
1838   /* requires this or it gets stuck with 'rom test' on screen */
1839   /* it is possible the program roms are slighly corrupt like the gfx roms, or
1840       that the bootleg simply shouldn't execute the code due to the modified roms */
1841   if (cpu_get_pc(space->cpu)==0x6d54) return 0xff;
1842   return slapfight_dpram[offset];
1843}
1844
18451785static void getstar_init( running_machine *machine )
18461786{
1847   memory_install_readwrite8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xe803, 0xe803, 0, 0, getstar_e803_r, getstar_e803_w  );
1787   memory_install_readwrite8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xe803, 0xe803, 0, 0, getstar_e803_r, getstar_e803_w  );
18481788}
18491789
18501790static DRIVER_INIT( getstar )
r4679r4680
18611801
18621802static DRIVER_INIT( gtstarb1 )
18631803{
1804   UINT8 *ROM = memory_region(machine, "maincpu");
1805
18641806   getstar_id = GTSTARB1;
18651807   getstar_init(machine);
18661808
18671809   /* specific handlers for this bootleg */
1868   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x0, 0x0, 0, 0, gtstarb1_port_0_read );
1869   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xc800, 0xc80f, 0, 0, gtstarb1_dpram_r );
1810   memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_IO), 0x0, 0x0, 0, 0, gtstarb1_port_0_read );
1811   /* requires this or it gets stuck with 'rom test' on screen */
1812   /* it is possible the program roms are slighly corrupt like the gfx roms, or
1813       that the bootleg simply shouldn't execute the code due to the modified roms */
1814   /* TODO: find & fix the cause of the following happening. */
1815   ROM[0x6d56] = 0xc3; //jp instead of jp z
18701816}
18711817
18721818static DRIVER_INIT( gtstarb2 )
r4679r4680
19031849static DRIVER_INIT( slapfigh )
19041850{
19051851   slapfigh_prot_pos = 0;
1906   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xe803, 0xe803, 0, 0, slapfigh_mcu_r );
1907//  memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xe803, 0xe803, 0, 0, getstar_mcu_w  );
1852   memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xe803, 0xe803, 0, 0, slapfigh_mcu_r );
1853//  memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xe803, 0xe803, 0, 0, getstar_mcu_w  );
19081854}
19091855
19101856
r4679r4680
19261872GAME( 1986, getstarj, getstar,  slapfigh, getstarj, getstarj, ROT0,   "Taito",   "Get Star (Japan)", GAME_NO_COCKTAIL )
19271873GAME( 1986, gtstarb1, getstar,  slapfigh, getstarj, gtstarb1, ROT0,   "bootleg", "Get Star (bootleg set 1)", GAME_NO_COCKTAIL )
19281874GAME( 1986, gtstarb2, getstar,  slapfigh, gtstarb2, gtstarb2, ROT0,   "bootleg", "Get Star (bootleg set 2)", GAME_NO_COCKTAIL )
1929
src/mame/drivers/astinvad.c
r4679r4680
9696
9797static VIDEO_START( spaceint )
9898{
99   colorram = auto_malloc(videoram_size);
99   colorram = auto_alloc_array(machine, UINT8, videoram_size);
100100}
101101
102102
r4679r4680
188188
189189static TIMER_CALLBACK( kamikaze_int_off )
190190{
191   cpu_set_input_line(machine->cpu[0], 0, CLEAR_LINE);
191   cputag_set_input_line(machine, "maincpu", 0, CLEAR_LINE);
192192}
193193
194194
195195static TIMER_CALLBACK( kamizake_int_gen )
196196{
197197   /* interrupts are asserted on every state change of the 128V line */
198   cpu_set_input_line(machine->cpu[0], 0, ASSERT_LINE);
198   cputag_set_input_line(machine, "maincpu", 0, ASSERT_LINE);
199199   param ^= 128;
200200   timer_adjust_oneshot(int_timer, video_screen_get_time_until_pos(machine->primary_screen, param, 0), param);
201201
r4679r4680
214214static INPUT_CHANGED( spaceint_coin_inserted )
215215{
216216   /* coin insertion causes an NMI */
217   cpu_set_input_line(field->port->machine->cpu[0], INPUT_LINE_NMI, newval ? ASSERT_LINE : CLEAR_LINE);
217   cputag_set_input_line(field->port->machine, "maincpu", INPUT_LINE_NMI, newval ? ASSERT_LINE : CLEAR_LINE);
218218}
219219
220220
src/mame/drivers/psikyosh.c
r4679r4680
349349         UINT32 length, size;
350350         UINT8 *dat;
351351
352         dat = eeprom_get_data_pointer(&length, &size);
352         dat = (UINT8 *)eeprom_get_data_pointer(&length, &size);
353353         memset(dat, 0, length * size);
354354
355355          if (use_factory_eeprom!=eeprom_0) /* Set the EEPROM to Factory Defaults for games needing them*/
r4679r4680
435435{
436436   if (!(data & 0x00c00000))
437437   {
438      cpu_set_input_line(space->machine->cpu[0], 4, CLEAR_LINE);
438      cputag_set_input_line(space->machine, "maincpu", 4, CLEAR_LINE);
439439   }
440440}
441441
r4679r4680
479479#endif
480480
481481
482static ADDRESS_MAP_START( ps3v1_readmem, ADDRESS_SPACE_PROGRAM, 32 )
483   AM_RANGE(0x00000000, 0x000fffff) AM_READ(SMH_ROM)   // program ROM (1 meg)
484   AM_RANGE(0x02000000, 0x021fffff) AM_READ(SMH_BANK1) // data ROM
485   AM_RANGE(0x03000000, 0x03003fff) AM_READ(SMH_RAM)   // sprites
486   AM_RANGE(0x03004000, 0x0300ffff) AM_READ(SMH_RAM)
487   AM_RANGE(0x03040000, 0x03044fff) AM_READ(SMH_RAM)
488   AM_RANGE(0x03050000, 0x030501ff) AM_READ(SMH_RAM)
489   AM_RANGE(0x0305ffdc, 0x0305ffdf) AM_READNOP // also writes to this address - might be vblank reads?
490   AM_RANGE(0x0305ffe0, 0x0305ffff) AM_READ(SMH_RAM) //  video registers
482static ADDRESS_MAP_START( ps3v1_map, ADDRESS_SPACE_PROGRAM, 32 )
483   AM_RANGE(0x00000000, 0x000fffff) AM_ROM               // program ROM (1 meg)
484   AM_RANGE(0x02000000, 0x021fffff) AM_ROMBANK(1) // data ROM
485   AM_RANGE(0x03000000, 0x03003fff) AM_RAM AM_BASE(&spriteram32) AM_SIZE(&spriteram_size)   // sprites (might be a bit longer)
486   AM_RANGE(0x03004000, 0x0300ffff) AM_RAM AM_BASE(&psikyosh_bgram) // backgrounds
487   AM_RANGE(0x03040000, 0x03044fff) AM_RAM_WRITE(paletteram32_RRRRRRRRGGGGGGGGBBBBBBBBxxxxxxxx_dword_w) AM_BASE(&paletteram32) // palette..
488   AM_RANGE(0x03050000, 0x030501ff) AM_RAM AM_BASE(&psikyosh_zoomram) // a gradient sometimes ...
489   AM_RANGE(0x0305ffdc, 0x0305ffdf) AM_READNOP AM_WRITE(psikyosh_irqctrl_w) // also writes to this address - might be vblank reads?
490   AM_RANGE(0x0305ffe0, 0x0305ffff) AM_RAM_WRITE(psikyosh_vidregs_w) AM_BASE(&psikyosh_vidregs) //  video registers
491491   AM_RANGE(0x05000000, 0x05000003) AM_DEVREAD8("ymf", ymf278b_r, 0xffffffff) // read YMF status
492   AM_RANGE(0x05000000, 0x05000007) AM_DEVWRITE8("ymf", ymf278b_w, 0xffffffff)
492493   AM_RANGE(0x05800000, 0x05800003) AM_READ_PORT("INPUTS")
493   AM_RANGE(0x05800004, 0x05800007) AM_READ(psh_eeprom_r)
494   AM_RANGE(0x06000000, 0x060fffff) AM_READ(SMH_RAM) // main RAM (1 meg)
494   AM_RANGE(0x05800004, 0x05800007) AM_READWRITE(psh_eeprom_r,psh_eeprom_w)
495   AM_RANGE(0x06000000, 0x060fffff) AM_RAM   AM_BASE(&psh_ram) // main RAM (1 meg)
495496
496497#if ROMTEST
497498   AM_RANGE(0x05000004, 0x05000007) AM_READ(psh_sample_r) // data for rom tests (Used to verify Sample rom)
498   AM_RANGE(0x03060000, 0x0307ffff) AM_READ(SMH_BANK2) // data for rom tests (gfx), data is controlled by vidreg
499   AM_RANGE(0x04060000, 0x0407ffff) AM_READ(SMH_BANK2) // data for rom tests (gfx) (Mirrored?)
499   AM_RANGE(0x03060000, 0x0307ffff) AM_ROMBANK(2) // data for rom tests (gfx), data is controlled by vidreg
500   AM_RANGE(0x04060000, 0x0407ffff) AM_ROMBANK(2) // data for rom tests (gfx) (Mirrored?)
500501#endif
501502ADDRESS_MAP_END
502503
503static ADDRESS_MAP_START( ps3v1_writemem, ADDRESS_SPACE_PROGRAM, 32 )
504   AM_RANGE(0x00000000, 0x000fffff) AM_WRITE(SMH_ROM)   // program ROM (1 meg)
505   AM_RANGE(0x02000000, 0x021fffff) AM_WRITE(SMH_ROM) // data ROM
506   AM_RANGE(0x03000000, 0x03003fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram32) AM_SIZE(&spriteram_size)   // sprites (might be a bit longer)
507   AM_RANGE(0x03004000, 0x0300ffff) AM_WRITE(SMH_RAM) AM_BASE(&psikyosh_bgram) // backgrounds
508   AM_RANGE(0x03040000, 0x03044fff) AM_WRITE(paletteram32_RRRRRRRRGGGGGGGGBBBBBBBBxxxxxxxx_dword_w) AM_BASE(&paletteram32) // palette..
509   AM_RANGE(0x03050000, 0x030501ff) AM_WRITE(SMH_RAM) AM_BASE(&psikyosh_zoomram) // a gradient sometimes ...
510   AM_RANGE(0x0305ffdc, 0x0305ffdf) AM_WRITE(psikyosh_irqctrl_w)
511   AM_RANGE(0x0305ffe0, 0x0305ffff) AM_WRITE(psikyosh_vidregs_w) AM_BASE(&psikyosh_vidregs) //  video registers
512   AM_RANGE(0x05000000, 0x05000007) AM_DEVWRITE8("ymf", ymf278b_w, 0xffffffff)
513   AM_RANGE(0x05800004, 0x05800007) AM_WRITE(psh_eeprom_w)
514   AM_RANGE(0x06000000, 0x060fffff) AM_WRITE(SMH_RAM) AM_BASE(&psh_ram) // work RAM
515ADDRESS_MAP_END
516
517static ADDRESS_MAP_START( ps5_readmem, ADDRESS_SPACE_PROGRAM, 32 )
518   AM_RANGE(0x00000000, 0x000fffff) AM_READ(SMH_ROM) // program ROM (1 meg)
504static ADDRESS_MAP_START( ps5_map, ADDRESS_SPACE_PROGRAM, 32 )
505   AM_RANGE(0x00000000, 0x000fffff) AM_ROM // program ROM (1 meg)
519506   AM_RANGE(0x03000000, 0x03000003) AM_READ_PORT("INPUTS")
520   AM_RANGE(0x03000004, 0x03000007) AM_READ_PORT("JP4")
507   AM_RANGE(0x03000004, 0x03000007) AM_READ_PORT("JP4") AM_WRITE(psh_eeprom_w)
521508   AM_RANGE(0x03100000, 0x03100003) AM_DEVREAD8("ymf", ymf278b_r, 0xffffffff)
522   AM_RANGE(0x04000000, 0x04003fff) AM_READ(SMH_RAM)   // sprites
523   AM_RANGE(0x04004000, 0x0400ffff) AM_READ(SMH_RAM)
524   AM_RANGE(0x04040000, 0x04044fff) AM_READ(SMH_RAM)
525   AM_RANGE(0x04050000, 0x040501ff) AM_READ(SMH_RAM)
526   AM_RANGE(0x0405ffdc, 0x0405ffdf) AM_READNOP // also writes to this address - might be vblank reads?
527   AM_RANGE(0x0405ffe0, 0x0405ffff) AM_READ(SMH_RAM) // video registers
528   AM_RANGE(0x05000000, 0x0507ffff) AM_READ(SMH_BANK1) // data ROM
529   AM_RANGE(0x06000000, 0x060fffff) AM_READ(SMH_RAM)
509   AM_RANGE(0x03100000, 0x03100007) AM_DEVWRITE8("ymf", ymf278b_w, 0xffffffff)
510   AM_RANGE(0x04000000, 0x04003fff) AM_RAM AM_BASE(&spriteram32) AM_SIZE(&spriteram_size)
511   AM_RANGE(0x04004000, 0x0400ffff) AM_RAM AM_BASE(&psikyosh_bgram) // backgrounds
512   AM_RANGE(0x04040000, 0x04044fff) AM_RAM_WRITE(paletteram32_RRRRRRRRGGGGGGGGBBBBBBBBxxxxxxxx_dword_w) AM_BASE(&paletteram32)
513   AM_RANGE(0x04050000, 0x040501ff) AM_RAM AM_BASE(&psikyosh_zoomram)
514   AM_RANGE(0x0405ffdc, 0x0405ffdf) AM_READNOP AM_WRITE(psikyosh_irqctrl_w) // also writes to this address - might be vblank reads?
515   AM_RANGE(0x0405ffe0, 0x0405ffff) AM_RAM_WRITE(psikyosh_vidregs_w) AM_BASE(&psikyosh_vidregs) // video registers
516   AM_RANGE(0x05000000, 0x0507ffff) AM_ROMBANK(1) // data ROM
517   AM_RANGE(0x06000000, 0x060fffff) AM_RAM  AM_BASE(&psh_ram)
530518
531519#if ROMTEST
532520   AM_RANGE(0x03100004, 0x03100007) AM_READ(psh_sample_r) // data for rom tests (Used to verify Sample rom)
533   AM_RANGE(0x04060000, 0x0407ffff) AM_READ(SMH_BANK2) // data for rom tests (gfx), data is controlled by vidreg
521   AM_RANGE(0x04060000, 0x0407ffff) AM_ROMBANK(2) // data for rom tests (gfx), data is controlled by vidreg
534522#endif
535523ADDRESS_MAP_END
536524
537static ADDRESS_MAP_START( ps5_writemem, ADDRESS_SPACE_PROGRAM, 32 )
538   AM_RANGE(0x00000000, 0x000fffff) AM_WRITE(SMH_ROM)   // program ROM (1 meg)
539   AM_RANGE(0x03000004, 0x03000007) AM_WRITE(psh_eeprom_w)
540   AM_RANGE(0x03100000, 0x03100007) AM_DEVWRITE8("ymf", ymf278b_w, 0xffffffff)
541   AM_RANGE(0x04000000, 0x04003fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram32) AM_SIZE(&spriteram_size)
542   AM_RANGE(0x04004000, 0x0400ffff) AM_WRITE(SMH_RAM) AM_BASE(&psikyosh_bgram) // backgrounds
543   AM_RANGE(0x04040000, 0x04044fff) AM_WRITE(paletteram32_RRRRRRRRGGGGGGGGBBBBBBBBxxxxxxxx_dword_w) AM_BASE(&paletteram32)
544   AM_RANGE(0x04050000, 0x040501ff) AM_WRITE(SMH_RAM) AM_BASE(&psikyosh_zoomram)
545   AM_RANGE(0x0405ffdc, 0x0405ffdf) AM_WRITE(psikyosh_irqctrl_w)
546   AM_RANGE(0x0405ffe0, 0x0405ffff) AM_WRITE(psikyosh_vidregs_w) AM_BASE(&psikyosh_vidregs) // video registers
547   AM_RANGE(0x05000000, 0x0507ffff) AM_WRITE(SMH_ROM) // data ROM
548   AM_RANGE(0x06000000, 0x060fffff) AM_WRITE(SMH_RAM) AM_BASE(&psh_ram)
549ADDRESS_MAP_END
550525
551526static void irqhandler(const device_config *device, int linestate)
552527{
553528   if (linestate)
554      cpu_set_input_line(device->machine->cpu[0], 12, ASSERT_LINE);
529      cputag_set_input_line(device->machine, "maincpu", 12, ASSERT_LINE);
555530   else
556      cpu_set_input_line(device->machine->cpu[0], 12, CLEAR_LINE);
531      cputag_set_input_line(device->machine, "maincpu", 12, CLEAR_LINE);
557532}
558533
559534static const ymf278b_interface ymf278b_config =
r4679r4680
564539static MACHINE_DRIVER_START( psikyo3v1 )
565540   /* basic machine hardware */
566541   MDRV_CPU_ADD("maincpu", SH2, MASTER_CLOCK/2)
567   MDRV_CPU_PROGRAM_MAP(ps3v1_readmem,ps3v1_writemem)
542   MDRV_CPU_PROGRAM_MAP(ps3v1_map,0)
568543   MDRV_CPU_VBLANK_INT("screen", psikyosh_interrupt)
569544
570545   MDRV_NVRAM_HANDLER(93C56)
r4679r4680
600575   MDRV_IMPORT_FROM(psikyo3v1)
601576
602577   MDRV_CPU_MODIFY("maincpu")
603   MDRV_CPU_PROGRAM_MAP(ps5_readmem,ps5_writemem)
578   MDRV_CPU_PROGRAM_MAP(ps5_map,0)
604579MACHINE_DRIVER_END
605580
606581static MACHINE_DRIVER_START( psikyo5_240 )
r4679r4680
608583   MDRV_IMPORT_FROM(psikyo3v1)
609584
610585   MDRV_CPU_MODIFY("maincpu")
611   MDRV_CPU_PROGRAM_MAP(ps5_readmem,ps5_writemem)
586   MDRV_CPU_PROGRAM_MAP(ps5_map,0)
612587
613588   /* It probably has a register to change visarea */
614589   MDRV_SCREEN_MODIFY("screen")
r4679r4680
10981073
10991074static DRIVER_INIT( soldivid )
11001075{
1101   sh2drc_set_options(machine->cpu[0], SH2DRC_FASTEST_OPTIONS);
1102   use_factory_eeprom=eeprom_0;
1076   sh2drc_set_options(cputag_get_cpu(machine, "maincpu"), SH2DRC_FASTEST_OPTIONS);
1077   use_factory_eeprom = eeprom_0;
11031078}
11041079
11051080static DRIVER_INIT( s1945ii )
11061081{
1107   sh2drc_set_options(machine->cpu[0], SH2DRC_FASTEST_OPTIONS);
1108   use_factory_eeprom=eeprom_DEFAULT;
1082   sh2drc_set_options(cputag_get_cpu(machine, "maincpu"), SH2DRC_FASTEST_OPTIONS);
1083   use_factory_eeprom = eeprom_DEFAULT;
11091084}
11101085
11111086static DRIVER_INIT( daraku )
11121087{
11131088   UINT8 *RAM = memory_region(machine, "maincpu");
1114   memory_set_bankptr(machine, 1,&RAM[0x100000]);
1115   sh2drc_set_options(machine->cpu[0], SH2DRC_FASTEST_OPTIONS);
1116   use_factory_eeprom=eeprom_DARAKU;
1089   memory_set_bankptr(machine, 1, &RAM[0x100000]);
1090   sh2drc_set_options(cputag_get_cpu(machine, "maincpu"), SH2DRC_FASTEST_OPTIONS);
1091   use_factory_eeprom = eeprom_DARAKU;
11171092}
11181093
11191094static DRIVER_INIT( sbomberb )
11201095{
1121   sh2drc_set_options(machine->cpu[0], SH2DRC_FASTEST_OPTIONS);
1122   use_factory_eeprom=eeprom_DEFAULT;
1096   sh2drc_set_options(cputag_get_cpu(machine, "maincpu"), SH2DRC_FASTEST_OPTIONS);
1097   use_factory_eeprom = eeprom_DEFAULT;
11231098}
11241099
11251100static DRIVER_INIT( gunbird2 )
11261101{
11271102   UINT8 *RAM = memory_region(machine, "maincpu");
1128   memory_set_bankptr(machine, 1,&RAM[0x100000]);
1129   sh2drc_set_options(machine->cpu[0], SH2DRC_FASTEST_OPTIONS);
1130   use_factory_eeprom=eeprom_DEFAULT;
1103   memory_set_bankptr(machine, 1, &RAM[0x100000]);
1104   sh2drc_set_options(cputag_get_cpu(machine, "maincpu"), SH2DRC_FASTEST_OPTIONS);
1105   use_factory_eeprom = eeprom_DEFAULT;
11311106}
11321107
11331108static DRIVER_INIT( s1945iii )
11341109{
11351110   UINT8 *RAM = memory_region(machine, "maincpu");
1136   memory_set_bankptr(machine, 1,&RAM[0x100000]);
1137   sh2drc_set_options(machine->cpu[0], SH2DRC_FASTEST_OPTIONS);
1138   use_factory_eeprom=eeprom_S1945III;
1111   memory_set_bankptr(machine, 1, &RAM[0x100000]);
1112   sh2drc_set_options(cputag_get_cpu(machine, "maincpu"), SH2DRC_FASTEST_OPTIONS);
1113   use_factory_eeprom = eeprom_S1945III;
11391114}
11401115
11411116static DRIVER_INIT( dragnblz )
11421117{
1143   sh2drc_set_options(machine->cpu[0], SH2DRC_FASTEST_OPTIONS);
1144   use_factory_eeprom=eeprom_DRAGNBLZ;
1118   sh2drc_set_options(cputag_get_cpu(machine, "maincpu"), SH2DRC_FASTEST_OPTIONS);
1119   use_factory_eeprom = eeprom_DRAGNBLZ;
11451120}
11461121
11471122static DRIVER_INIT( gnbarich )
11481123{
1149   sh2drc_set_options(machine->cpu[0], SH2DRC_FASTEST_OPTIONS);
1150   use_factory_eeprom=eeprom_GNBARICH;
1124   sh2drc_set_options(cputag_get_cpu(machine, "maincpu"), SH2DRC_FASTEST_OPTIONS);
1125   use_factory_eeprom = eeprom_GNBARICH;
11511126}
11521127
11531128static DRIVER_INIT( tgm2 )
11541129{
1155   sh2drc_set_options(machine->cpu[0], SH2DRC_FASTEST_OPTIONS);
1156   use_factory_eeprom=eeprom_USER1;
1130   sh2drc_set_options(cputag_get_cpu(machine, "maincpu"), SH2DRC_FASTEST_OPTIONS);
1131   use_factory_eeprom = eeprom_USER1;
11571132}
11581133
11591134static DRIVER_INIT( mjgtaste )
11601135{
1161   sh2drc_set_options(machine->cpu[0], SH2DRC_FASTEST_OPTIONS);
1162   use_factory_eeprom=eeprom_MJGTASTE;
1136   sh2drc_set_options(cputag_get_cpu(machine, "maincpu"), SH2DRC_FASTEST_OPTIONS);
1137   use_factory_eeprom = eeprom_MJGTASTE;
11631138   /* needs to install mahjong controls too (can select joystick in test mode tho) */
11641139}
11651140
src/mame/drivers/boogwing.c
r4679r4680
137137   AM_RANGE(0x120000, 0x120001) AM_DEVREADWRITE("oki1", okim6295_r, okim6295_w)
138138   AM_RANGE(0x130000, 0x130001) AM_DEVREADWRITE("oki2", okim6295_r, okim6295_w)
139139   AM_RANGE(0x140000, 0x140001) AM_READ(soundlatch_r)
140   AM_RANGE(0x1f0000, 0x1f1fff) AM_READWRITE(SMH_BANK8, SMH_BANK8)
140   AM_RANGE(0x1f0000, 0x1f1fff) AM_READWRITE(SMH_BANK(8), SMH_BANK(8))
141141   AM_RANGE(0x1fec00, 0x1fec01) AM_WRITE(h6280_timer_w)
142142   AM_RANGE(0x1ff400, 0x1ff403) AM_WRITE(h6280_irq_status_w)
143143ADDRESS_MAP_END
r4679r4680
279279
280280static void sound_irq(const device_config *device, int state)
281281{
282   cpu_set_input_line(device->machine->cpu[1],1,state); /* IRQ 2 */
282   cputag_set_input_line(device->machine, "audiocpu", 1, state); /* IRQ 2 */
283283}
284284
285285static WRITE8_DEVICE_HANDLER( sound_bankswitch_w )
src/mame/drivers/quizdna.c
r4679r4680
4141
4242/****************************************************************************/
4343
44static ADDRESS_MAP_START( quizdna_readmem, ADDRESS_SPACE_PROGRAM, 8 )
45   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
46   AM_RANGE(0x8000, 0xbfff) AM_READ(SMH_BANK1)
47   AM_RANGE(0xc000, 0xffff) AM_READ(SMH_RAM)
48ADDRESS_MAP_END
49
50static ADDRESS_MAP_START( quizdna_writemem, ADDRESS_SPACE_PROGRAM, 8 )
51   AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM)
44static ADDRESS_MAP_START( quizdna_map, ADDRESS_SPACE_PROGRAM, 8 )
45   AM_RANGE(0x0000, 0x7fff) AM_ROM
46   AM_RANGE(0x8000, 0xbfff) AM_ROMBANK(1)
5247   AM_RANGE(0x8000, 0x9fff) AM_WRITE(quizdna_fg_ram_w)
5348   AM_RANGE(0xa000, 0xbfff) AM_WRITE(quizdna_bg_ram_w)
54   AM_RANGE(0xc000, 0xdfff) AM_WRITE(SMH_RAM)
55   AM_RANGE(0xe000, 0xe1ff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
56   AM_RANGE(0xe200, 0xefff) AM_WRITE(SMH_RAM)
57   AM_RANGE(0xf000, 0xffff) AM_WRITE(paletteram_xBGR_RRRR_GGGG_BBBB_w) AM_BASE(&paletteram)
49   AM_RANGE(0xc000, 0xdfff) AM_RAM
50   AM_RANGE(0xe000, 0xe1ff) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
51   AM_RANGE(0xe200, 0xefff) AM_RAM
52   AM_RANGE(0xf000, 0xffff) AM_RAM_WRITE(paletteram_xBGR_RRRR_GGGG_BBBB_w) AM_BASE(&paletteram)
5853ADDRESS_MAP_END
5954
60static ADDRESS_MAP_START( gekiretu_writemem, ADDRESS_SPACE_PROGRAM, 8 )
61   AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM)
55static ADDRESS_MAP_START( gekiretu_map, ADDRESS_SPACE_PROGRAM, 8 )
56   AM_RANGE(0x0000, 0x7fff) AM_ROM
57   AM_RANGE(0x8000, 0xbfff) AM_ROMBANK(1)
6258   AM_RANGE(0x8000, 0x9fff) AM_WRITE(quizdna_fg_ram_w)
6359   AM_RANGE(0xa000, 0xbfff) AM_WRITE(quizdna_bg_ram_w)
64   AM_RANGE(0xc000, 0xdfff) AM_WRITE(SMH_RAM)
65   AM_RANGE(0xe000, 0xefff) AM_WRITE(paletteram_xBGR_RRRR_GGGG_BBBB_w) AM_BASE(&paletteram)
66   AM_RANGE(0xf000, 0xf1ff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
67   AM_RANGE(0xf200, 0xffff) AM_WRITE(SMH_RAM)
60   AM_RANGE(0xc000, 0xdfff) AM_RAM
61   AM_RANGE(0xe000, 0xefff) AM_RAM_WRITE(paletteram_xBGR_RRRR_GGGG_BBBB_w) AM_BASE(&paletteram)
62   AM_RANGE(0xf000, 0xf1ff) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
63   AM_RANGE(0xf200, 0xffff) AM_RAM
6864ADDRESS_MAP_END
6965
7066static ADDRESS_MAP_START( quizdna_io_map, ADDRESS_SPACE_IO, 8 )
r4679r4680
460456
461457   /* basic machine hardware */
462458   MDRV_CPU_ADD("maincpu", Z80, MCLK/2) /* 8.000 MHz */
463   MDRV_CPU_PROGRAM_MAP(quizdna_readmem,quizdna_writemem)
459   MDRV_CPU_PROGRAM_MAP(quizdna_map,0)
464460   MDRV_CPU_IO_MAP(quizdna_io_map,0)
465461   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
466462
r4679r4680
509505   MDRV_IMPORT_FROM(quizdna)
510506
511507   MDRV_CPU_MODIFY("maincpu")
512   MDRV_CPU_PROGRAM_MAP(quizdna_readmem,gekiretu_writemem)
508   MDRV_CPU_PROGRAM_MAP(gekiretu_map,0)
513509   MDRV_CPU_IO_MAP(gekiretu_io_map,0)
514510
515511MACHINE_DRIVER_END
src/mame/drivers/supertnk.c
r4679r4680
159159
160160static WRITE8_HANDLER( supertnk_interrupt_ack_w )
161161{
162   cpu_set_input_line(space->machine->cpu[0], 0, CLEAR_LINE);
162   cputag_set_input_line(space->machine, "maincpu", 0, CLEAR_LINE);
163163}
164164
165165
r4679r4680
172172
173173static VIDEO_START( supertnk )
174174{
175   supertnk_videoram[0] = auto_malloc(supertnk_videoram_size);
176   supertnk_videoram[1] = auto_malloc(supertnk_videoram_size);
177   supertnk_videoram[2] = auto_malloc(supertnk_videoram_size);
175   supertnk_videoram[0] = auto_alloc_array(machine, UINT8, supertnk_videoram_size);
176   supertnk_videoram[1] = auto_alloc_array(machine, UINT8, supertnk_videoram_size);
177   supertnk_videoram[2] = auto_alloc_array(machine, UINT8, supertnk_videoram_size);
178178}
179179
180180
r4679r4680
274274
275275static MACHINE_RESET( supertnk )
276276{
277   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
277   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
278278   supertnk_bankswitch_0_w(space, 0, 0);
279279   supertnk_bankswitch_1_w(space, 0, 0);
280280
src/mame/drivers/darkhors.c
r4679r4680
297297//  if (ACCESSING_BITS_16_31)    popmessage("%04X",data >> 16);
298298}
299299
300static ADDRESS_MAP_START( darkhors_readmem, ADDRESS_SPACE_PROGRAM, 32 )
301   AM_RANGE(0x000000, 0x0fffff) AM_READ( SMH_ROM               )
302   AM_RANGE(0x400000, 0x41ffff) AM_READ( SMH_RAM               )
303   AM_RANGE(0x4e0080, 0x4e0083) AM_READ_PORT("4e0080")
300static ADDRESS_MAP_START( darkhors_map, ADDRESS_SPACE_PROGRAM, 32 )
301   AM_RANGE(0x000000, 0x0fffff) AM_ROM
302   AM_RANGE(0x400000, 0x41ffff) AM_RAM
303
304   AM_RANGE(0x490040, 0x490043) AM_WRITE(darkhors_eeprom_w)
305   AM_RANGE(0x4e0080, 0x4e0083) AM_READ_PORT("4e0080") AM_WRITE(darkhors_unk1_w)
306
304307   AM_RANGE(0x580000, 0x580003) AM_READ_PORT("580000")
305308   AM_RANGE(0x580004, 0x580007) AM_READ_PORT("580004")
306   AM_RANGE(0x580008, 0x58000b) AM_READ( darkhors_input_sel_r      )
307   AM_RANGE(0x580084, 0x580087) AM_DEVREAD8( "oki", okim6295_r, 0xff000000   )
308   AM_RANGE(0x580200, 0x580203) AM_READ( SMH_NOP               )
309   AM_RANGE(0x580008, 0x58000b) AM_READ(darkhors_input_sel_r)
310   AM_RANGE(0x58000c, 0x58000f) AM_WRITE(darkhors_input_sel_w)
311   AM_RANGE(0x580084, 0x580087) AM_DEVREADWRITE8( "oki", okim6295_r, okim6295_w, 0xff000000)
312   AM_RANGE(0x580200, 0x580203) AM_READ(SMH_NOP)
309313   AM_RANGE(0x580400, 0x580403) AM_READ_PORT("580400")
310314   AM_RANGE(0x580420, 0x580423) AM_READ_PORT("580420")
311   AM_RANGE(0x800000, 0x87ffff) AM_READ( SMH_RAM               )
312ADDRESS_MAP_END
313315
314static ADDRESS_MAP_START( darkhors_writemem, ADDRESS_SPACE_PROGRAM, 32 )
315   AM_RANGE(0x000000, 0x0fffff) AM_WRITE( SMH_ROM            )
316   AM_RANGE(0x400000, 0x41ffff) AM_WRITE( SMH_RAM            )
317   AM_RANGE(0x490040, 0x490043) AM_WRITE( darkhors_eeprom_w      )
318   AM_RANGE(0x58000c, 0x58000f) AM_WRITE( darkhors_input_sel_w      )
319   AM_RANGE(0x4e0080, 0x4e0083) AM_WRITE( darkhors_unk1_w         )
320   AM_RANGE(0x580084, 0x580087) AM_DEVWRITE8( "oki", okim6295_w, 0xff000000   )
321   AM_RANGE(0x800000, 0x86bfff) AM_WRITE( SMH_RAM            )
322   AM_RANGE(0x86c000, 0x86ffff) AM_WRITE( darkhors_tmapram_w      )   AM_BASE(&darkhors_tmapram)
323   AM_RANGE(0x870000, 0x873fff) AM_WRITE( darkhors_tmapram2_w      )   AM_BASE(&darkhors_tmapram2)
324   AM_RANGE(0x874000, 0x87dfff) AM_WRITE( SMH_RAM            )
325   AM_RANGE(0x87e000, 0x87ffff) AM_WRITE( SMH_RAM            )   AM_BASE(&spriteram32)
326   AM_RANGE(0x880000, 0x89ffff) AM_WRITE( paletteram32_xBBBBBGGGGGRRRRR_dword_w)   AM_BASE(&paletteram32)
327   AM_RANGE(0x8a0000, 0x8bffff) AM_WRITE( SMH_RAM            )   // this should still be palette ram!
328   AM_RANGE(0x8c0120, 0x8c012f) AM_WRITE( SMH_RAM            ) AM_BASE(&darkhors_tmapscroll)
329   AM_RANGE(0x8c0130, 0x8c013f) AM_WRITE( SMH_RAM            ) AM_BASE(&darkhors_tmapscroll2)
316   AM_RANGE(0x800000, 0x86bfff) AM_RAM
317   AM_RANGE(0x86c000, 0x86ffff) AM_RAM_WRITE(darkhors_tmapram_w) AM_BASE(&darkhors_tmapram)
318   AM_RANGE(0x870000, 0x873fff) AM_RAM_WRITE(darkhors_tmapram2_w) AM_BASE(&darkhors_tmapram2)
319   AM_RANGE(0x874000, 0x87dfff) AM_RAM
320   AM_RANGE(0x87e000, 0x87ffff) AM_RAM AM_BASE(&spriteram32)
321   AM_RANGE(0x880000, 0x89ffff) AM_WRITE(paletteram32_xBBBBBGGGGGRRRRR_dword_w) AM_BASE(&paletteram32)
322   AM_RANGE(0x8a0000, 0x8bffff) AM_WRITE(SMH_RAM)   // this should still be palette ram!
323   AM_RANGE(0x8c0120, 0x8c012f) AM_WRITE(SMH_RAM) AM_BASE(&darkhors_tmapscroll)
324   AM_RANGE(0x8c0130, 0x8c013f) AM_WRITE(SMH_RAM) AM_BASE(&darkhors_tmapscroll2)
330325ADDRESS_MAP_END
331326
332327
r4679r4680
584579
585580static MACHINE_DRIVER_START( darkhors )
586581   MDRV_CPU_ADD("maincpu", M68EC020, 12000000) // 36MHz/3 ??
587   MDRV_CPU_PROGRAM_MAP(darkhors_readmem,darkhors_writemem)
582   MDRV_CPU_PROGRAM_MAP(darkhors_map,0)
588583   MDRV_CPU_VBLANK_INT_HACK(darkhors,3)
589584
590585   MDRV_NVRAM_HANDLER(darkhors)
src/mame/drivers/bishjan.c
r4679r4680
213213   tilemap_set_scrolldy( tmap_1, -1, +1 );
214214   tilemap_set_scrolldy( tmap_2, -1, +1 );
215215
216   bishjan_videoram_1_lo = auto_malloc(0x80 * 0x40);
217   bishjan_videoram_1_hi = auto_malloc(0x80 * 0x40);
216   bishjan_videoram_1_lo = auto_alloc_array(machine, UINT8, 0x80 * 0x40);
217   bishjan_videoram_1_hi = auto_alloc_array(machine, UINT8, 0x80 * 0x40);
218218
219   bishjan_videoram_2_lo = auto_malloc(0x80 * 0x40);
220   bishjan_videoram_2_hi = auto_malloc(0x80 * 0x40);
219   bishjan_videoram_2_lo = auto_alloc_array(machine, UINT8, 0x80 * 0x40);
220   bishjan_videoram_2_hi = auto_alloc_array(machine, UINT8, 0x80 * 0x40);
221221
222   bishjan_scrollram_1_lo = auto_malloc(0x200);
223   bishjan_scrollram_1_hi = auto_malloc(0x200);
222   bishjan_scrollram_1_lo = auto_alloc_array(machine, UINT8, 0x200);
223   bishjan_scrollram_1_hi = auto_alloc_array(machine, UINT8, 0x200);
224224
225   bishjan_scrollram_2_lo = auto_malloc(0x200);
226   bishjan_scrollram_2_hi = auto_malloc(0x200);
225   bishjan_scrollram_2_lo = auto_alloc_array(machine, UINT8, 0x200);
226   bishjan_scrollram_2_hi = auto_alloc_array(machine, UINT8, 0x200);
227227
228   bishjan_videoram_2_hi = auto_malloc(0x80 * 0x40);
228   bishjan_videoram_2_hi = auto_alloc_array(machine, UINT8, 0x80 * 0x40);
229229
230   colorram = auto_malloc(256*3);
230   colorram = auto_alloc_array(machine, UINT8, 256*3);
231231}
232232
233233static VIDEO_UPDATE( bishjan )
r4679r4680
818818         generic_pulse_irq_line(device, 0);
819819         break;
820820      default:
821         cpu_set_input_line(device->machine->cpu[0], H8_METRO_TIMER_HACK, HOLD_LINE);
821         cputag_set_input_line(device->machine, "maincpu", H8_METRO_TIMER_HACK, HOLD_LINE);
822822         break;
823823   }
824824}
src/mame/drivers/offtwall.c
r4679r4680
3333
3434static void update_interrupts(running_machine *machine)
3535{
36   cpu_set_input_line(machine->cpu[0], 4, atarigen_scanline_int_state ? ASSERT_LINE : CLEAR_LINE);
37   cpu_set_input_line(machine->cpu[0], 6, atarigen_sound_int_state ? ASSERT_LINE : CLEAR_LINE);
36   cputag_set_input_line(machine, "maincpu", 4, atarigen_scanline_int_state ? ASSERT_LINE : CLEAR_LINE);
37   cputag_set_input_line(machine, "maincpu", 6, atarigen_sound_int_state ? ASSERT_LINE : CLEAR_LINE);
3838}
3939
4040
r4679r4680
9494   if (ACCESSING_BITS_0_7)
9595   {
9696      /* bit 4 resets the sound CPU */
97      cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_RESET, (data & 0x10) ? CLEAR_LINE : ASSERT_LINE);
97      cputag_set_input_line(space->machine, "jsa", INPUT_LINE_RESET, (data & 0x10) ? CLEAR_LINE : ASSERT_LINE);
9898      if (!(data & 0x10)) atarijsa_reset();
9999   }
100100
r4679r4680
495495   atarijsa_init(machine, "260010", 0x0040);
496496
497497   /* install son-of-slapstic workarounds */
498   spritecache_count = memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x3fde42, 0x3fde43, 0, 0, spritecache_count_r);
499   bankswitch_base = memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x037ec2, 0x037f39, 0, 0, bankswitch_r);
500   unknown_verify_base = memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x3fdf1e, 0x3fdf1f, 0, 0, unknown_verify_r);
498   spritecache_count = memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x3fde42, 0x3fde43, 0, 0, spritecache_count_r);
499   bankswitch_base = memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x037ec2, 0x037f39, 0, 0, bankswitch_r);
500   unknown_verify_base = memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x3fdf1e, 0x3fdf1f, 0, 0, unknown_verify_r);
501501}
502502
503503
r4679r4680
507507   atarijsa_init(machine, "260010", 0x0040);
508508
509509   /* install son-of-slapstic workarounds */
510   spritecache_count = memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x3fde42, 0x3fde43, 0, 0, spritecache_count_r);
511   bankswitch_base = memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x037eca, 0x037f43, 0, 0, bankswitch_r);
512   unknown_verify_base = memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x3fdf24, 0x3fdf25, 0, 0, unknown_verify_r);
510   spritecache_count = memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x3fde42, 0x3fde43, 0, 0, spritecache_count_r);
511   bankswitch_base = memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x037eca, 0x037f43, 0, 0, bankswitch_r);
512   unknown_verify_base = memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x3fdf24, 0x3fdf25, 0, 0, unknown_verify_r);
513513}
514514
515515
src/mame/drivers/upscope.c
r4679r4680
8989   /* swap the write handlers between ROM and bank 1 based on the bit */
9090   if ((data & 1) == 0)
9191      /* overlay disabled, map RAM on 0x000000 */
92      memory_install_write16_handler(cpu_get_address_space(device->machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x000000, 0x07ffff, 0, 0, SMH_BANK1);
92      memory_install_write16_handler(cputag_get_address_space(device->machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x000000, 0x07ffff, 0, 0, (write16_space_func)SMH_BANK(1));
9393
9494   else
9595      /* overlay enabled, map Amiga system ROM on 0x000000 */
96      memory_install_write16_handler(cpu_get_address_space(device->machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x000000, 0x07ffff, 0, 0, SMH_UNMAP);
96      memory_install_write16_handler(cputag_get_address_space(device->machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x000000, 0x07ffff, 0, 0, (write16_space_func)SMH_UNMAP);
9797}
9898
9999
r4679r4680
388388
389389   /* allocate NVRAM */
390390   generic_nvram_size = 0x100;
391   generic_nvram = auto_malloc(generic_nvram_size);
391   generic_nvram = auto_alloc_array(machine, UINT8, generic_nvram_size);
392392
393393   /* set up memory */
394394   memory_configure_bank(machine, 1, 0, 1, amiga_chip_ram, 0);
src/mame/drivers/esh.c
r4679r4680
130130static WRITE8_HANDLER(nmi_line_w)
131131{
132132   if (data == 0x00)
133      cpu_set_input_line(space->machine->cpu[0], INPUT_LINE_NMI, ASSERT_LINE);
133      cputag_set_input_line(space->machine, "maincpu", INPUT_LINE_NMI, ASSERT_LINE);
134134   if (data == 0x01)
135      cpu_set_input_line(space->machine->cpu[0], INPUT_LINE_NMI, CLEAR_LINE);
135      cputag_set_input_line(space->machine, "maincpu", INPUT_LINE_NMI, CLEAR_LINE);
136136
137137   if (data != 0x00 && data != 0x01)
138138      logerror("NMI line got a weird value!\n");
r4679r4680
260260
261261static TIMER_CALLBACK( irq_stop )
262262{
263   cpu_set_input_line(machine->cpu[0], 0, CLEAR_LINE);
263   cputag_set_input_line(machine, "maincpu", 0, CLEAR_LINE);
264264}
265265
266266static INTERRUPT_GEN( vblank_callback_esh )
src/mame/drivers/equites.c
r4679r4680
410410
411411static TIMER_CALLBACK( equites_nmi_callback )
412412{
413   cpu_set_input_line(machine->cpu[1], INPUT_LINE_NMI, ASSERT_LINE);
413   cputag_set_input_line(machine, "audiocpu", INPUT_LINE_NMI, ASSERT_LINE);
414414}
415415
416416
r4679r4680
443443   switch (offset)
444444   {
445445      case 0:   // c0f8: NMI ack (written by NMI handler)
446         cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_NMI, CLEAR_LINE);
446         cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, CLEAR_LINE);
447447         break;
448448
449449      case 1: // c0f9: RST75 trigger (written by NMI handler)
450450         // Note: solder pad CP3 on the pcb would allow to disable this
451         generic_pulse_irq_line(space->machine->cpu[1], I8085_RST75_LINE);
451         generic_pulse_irq_line(cputag_get_cpu(space->machine, "audiocpu"), I8085_RST75_LINE);
452452         break;
453453
454454      case 2: // c0fa: INTR trigger (written by NMI handler)
455455         // verified on PCB:
456         cpu_set_input_line(space->machine->cpu[1], I8085_INTR_LINE, HOLD_LINE);
456         cputag_set_input_line(space->machine, "audiocpu", I8085_INTR_LINE, HOLD_LINE);
457457         break;
458458
459459      case 3: // c0fb: n.c.
r4679r4680
700700
701701static WRITE16_HANDLER( mcu_halt_assert_w )
702702{
703   cpu_set_input_line(space->machine->cpu[2], INPUT_LINE_HALT, ASSERT_LINE);
703   cputag_set_input_line(space->machine, "mcu", INPUT_LINE_HALT, ASSERT_LINE);
704704}
705705
706706static WRITE16_HANDLER( mcu_halt_clear_w )
707707{
708   cpu_set_input_line(space->machine->cpu[2], INPUT_LINE_HALT, CLEAR_LINE);
708   cputag_set_input_line(space->machine, "mcu", INPUT_LINE_HALT, CLEAR_LINE);
709709}
710710
711711
r4679r4680
18481848   unpack_region(machine, "gfx3");
18491849
18501850   // install special handlers for unknown device (protection?)
1851   memory_install_write16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x580000, 0x580001, 0, 0, gekisou_unknown_0_w);
1852   memory_install_write16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x5a0000, 0x5a0001, 0, 0, gekisou_unknown_1_w);
1851   memory_install_write16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x580000, 0x580001, 0, 0, gekisou_unknown_0_w);
1852   memory_install_write16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x5a0000, 0x5a0001, 0, 0, gekisou_unknown_1_w);
18531853}
18541854
18551855static DRIVER_INIT( splndrbt )
r4679r4680
18621862   unpack_region(machine, "gfx3");
18631863
18641864#if HVOLTAGE_DEBUG
1865   memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x000038, 0x000039, 0, 0, hvoltage_debug_r);
1865   memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x000038, 0x000039, 0, 0, hvoltage_debug_r);
18661866#endif
18671867}
18681868
r4679r4680
18811881// Splendor Blast Hardware
18821882GAME( 1985, splndrbt, 0,        splndrbt, splndrbt, splndrbt, ROT0,  "Alpha Denshi Co.", "Splendor Blast", GAME_IMPERFECT_SOUND | GAME_IMPERFECT_GRAPHICS )
18831883GAME( 1985, hvoltage, 0,        splndrbt, hvoltage, hvoltage, ROT0,  "Alpha Denshi Co.", "High Voltage", GAME_IMPERFECT_SOUND | GAME_IMPERFECT_GRAPHICS )
1884
1885/******************************************************************************/
src/mame/drivers/neodrvr.c
r4679r4680
74827482   neogeo_fixed_layer_bank_type = 2;
74837483   DRIVER_INIT_CALL(neogeo);
74847484   install_pvc_protection(machine);
7485   memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xc00000, 0xc7ffff, 0, 0, SMH_BANK6 );  // 512k bios
7485   memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xc00000, 0xc7ffff, 0, 0, (read16_space_func)SMH_BANK(6) );  // 512k bios
74867486}
74877487
74887488static DRIVER_INIT( kof2003 )
r4679r4680
75557555   kof2000_neogeo_gfx_decrypt(machine, 0xac);
75567556
75577557   /* install some extra RAM */
7558   extra_ram = auto_malloc(0x2000);
7558   extra_ram = auto_alloc_array(machine, UINT16, 0x2000/2);
75597559   state_save_register_global_pointer(machine, extra_ram, 0x2000 / 2);
75607560
7561   memory_install_readwrite16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x200000, 0x201fff, 0, 0, SMH_BANK8, SMH_BANK8);
7561   memory_install_readwrite16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x200000, 0x201fff, 0, 0, (read16_space_func)SMH_BANK(8), (write16_space_func)SMH_BANK(8));
75627562   memory_set_bankptr(machine, NEOGEO_BANK_EXTRA_RAM, extra_ram);
75637563
7564//  memory_install_read_port_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x280000, 0x280001, 0, 0, "IN5");
7565//  memory_install_read_port_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x2c0000, 0x2c0001, 0, 0, "IN6");
7564//  memory_install_read_port_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x280000, 0x280001, 0, 0, "IN5");
7565//  memory_install_read_port_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x2c0000, 0x2c0001, 0, 0, "IN6");
75667566
75677567   DRIVER_INIT_CALL(neogeo);
75687568}
r4679r4680
75727572   UINT16* extra_ram;
75737573
75747574   /* install some extra RAM */
7575   extra_ram = auto_malloc(0x2000);
7575   extra_ram = auto_alloc_array(machine, UINT16, 0x2000/2);
75767576   state_save_register_global_pointer(machine, extra_ram, 0x2000 / 2);
75777577
7578   memory_install_readwrite16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x200000, 0x201fff, 0, 0, SMH_BANK8, SMH_BANK8);
7578   memory_install_readwrite16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x200000, 0x201fff, 0, 0, (read16_space_func)SMH_BANK(8), (write16_space_func)SMH_BANK(8));
75797579   memory_set_bankptr(machine, NEOGEO_BANK_EXTRA_RAM, extra_ram);
75807580
7581   memory_install_read_port_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x280000, 0x280001, 0, 0, "IN5");
7582   memory_install_read_port_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x2c0000, 0x2c0001, 0, 0, "IN6");
7581   memory_install_read_port_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x280000, 0x280001, 0, 0, "IN5");
7582   memory_install_read_port_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x2c0000, 0x2c0001, 0, 0, "IN6");
75837583
75847584   DRIVER_INIT_CALL(neogeo);
75857585}
r4679r4680
75877587static DRIVER_INIT( kog )
75887588{
75897589   /* overlay cartridge ROM */
7590   memory_install_read_port_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x0ffffe, 0x0fffff, 0, 0, "JUMPER");
7590   memory_install_read_port_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x0ffffe, 0x0fffff, 0, 0, "JUMPER");
75917591
75927592   kog_px_decrypt(machine);
75937593   neogeo_bootleg_sx_decrypt(machine, 1);
r4679r4680
77157715GAME( 2000, kof2000,  neogeo,   neogeo,   neogeo,   kof2000,  ROT0, "SNK", "The King of Fighters 2000" , 0 ) /* Encrypted Code & GFX */
77167716GAME( 2000, kof2000n, kof2000,  neogeo,   neogeo,   kof2000n, ROT0, "SNK", "The King of Fighters 2000 (not encrypted)" , 0 ) /* Encrypted GFX */
77177717GAME( 2001, zupapa,   neogeo,   neogeo,   neogeo,   zupapa,   ROT0, "SNK", "Zupapa!" , 0 )   /* Encrypted GFX */
7718GAME( 2001, sengoku3, neogeo,   neogeo,   neogeo,   sengoku3, ROT0, "Noise Factory / SNK", "Sengoku 3" , 0 )   /* Encrypted GFX */
7718GAME( 2001, sengoku3, neogeo,   neogeo,   neogeo,   sengoku3, ROT0, "Noise Factory / SNK", "Sengoku 3 / Sengoku Densho 2001" , 0 )   /* Encrypted GFX */
77197719GAME( 2001, kof2001,  neogeo,   neogeo,   neogeo,   kof2001,  ROT0, "Eolith / SNK", "The King of Fighters 2001 (set 1)" , 0 ) /* Encrypted GFX */
77207720GAME( 2001, kof2001h, kof2001,  neogeo,   neogeo,   kof2001,  ROT0, "Eolith / SNK", "The King of Fighters 2001 (set 2)" , 0 ) /* Encrypted GFX */
77217721GAME( 2003, cthd2003, kof2001,  neogeo,   neogeo,   cthd2003, ROT0, "bootleg", "Crouching Tiger Hidden Dragon 2003 (The King of Fighters 2001 bootleg)", 0 ) /* Protected Hack / Bootleg of kof2001 */
r4679r4680
77817781GAME( 1996, twinspri, neogeo,   neogeo,   neogeo,   neogeo,   ROT0, "ADK",              "Twinkle Star Sprites", 0 )
77827782GAME( 1996, zintrckb, neogeo,   neogeo,   neogeo,   neogeo,   ROT0, "hack / bootleg",   "Zintrick / Oshidashi Zentrix (hack / bootleg)", 0 )
77837783
7784/* Aicom */
7784/* Aicom (was a part of Sammy) / Yumekobo (changed name in 1996) */
7785GAME( 1992, viewpoin, neogeo,   neogeo,   neogeo,   neogeo,   ROT0, "Sammy / Aicom", "Viewpoint", 0 )
77857786GAME( 1994, janshin,  neogeo,   neogeo,   mjneogeo, neogeo,   ROT0, "Aicom", "Jyanshin Densetsu - Quest of Jongmaster", 0 )
77867787GAME( 1995, pulstar,  neogeo,   neogeo,   neogeo,   neogeo,   ROT0, "Aicom", "Pulstar", 0 )
7788GAME( 1998, blazstar, neogeo,   neogeo,   neogeo,   neogeo,   ROT0, "Yumekobo", "Blazing Star", 0 )
7789GAME( 1999, preisle2, neogeo,   neogeo,   neogeo,   preisle2, ROT0, "Yumekobo", "Prehistoric Isle 2" , 0 ) /* Encrypted GFX */
77877790
77887791/* Data East Corporation */
77897792GAME( 1993, spinmast, neogeo,   neogeo,   neogeo,   neogeo,   ROT0, "Data East Corporation", "Spin Master / Miracle Adventure", 0 )
r4679r4680
78117814GAME( 1990, minasan,  neogeo,   neogeo,   mjneogeo, neogeo,   ROT0, "Monolith Corp.", "Minnasanno Okagesamadesu", 0 )
78127815GAME( 1991, bakatono, neogeo,   neogeo,   mjneogeo, neogeo,   ROT0, "Monolith Corp.", "Bakatonosama Mahjong Manyuki", 0 )
78137816
7814/* Nazca */
7817/* Nazca (later acquired by SNK) */
78157818GAME( 1996, turfmast, neogeo,   neogeo,   neogeo,   neogeo,   ROT0, "Nazca", "Neo Turf Masters / Big Tournament Golf", 0 )
78167819GAME( 1996, mslug,    neogeo,   neogeo,   neogeo,   neogeo,   ROT0, "Nazca", "Metal Slug - Super Vehicle-001", 0 )
78177820
r4679r4680
78217824/* Psikyo */
78227825GAME( 1999, s1945p,   neogeo,   neogeo,   neogeo,   s1945p,   ROT0, "Psikyo", "Strikers 1945 Plus" , 0 )   /* Encrypted GFX */
78237826
7824/* Sammy */
7825GAME( 1992, viewpoin, neogeo,   neogeo,   neogeo,   neogeo,   ROT0, "Sammy", "Viewpoint", 0 )
7826
78277827/* Saurus */
78287828GAME( 1995, quizkof,  neogeo,   neogeo,   neogeo,   neogeo,   ROT0, "Saurus", "Quiz King of Fighters", 0 )
78297829GAME( 1995, stakwin,  neogeo,   neogeo,   neogeo,   neogeo,   ROT0, "Saurus", "Stakes Winner / Stakes Winner - GI kinzen seihae no michi", 0 )
r4679r4680
78567856/* Tecmo */
78577857GAME( 1996, tws96,    neogeo,   neogeo,   neogeo,   neogeo,   ROT0, "Tecmo", "Tecmo World Soccer '96", 0 )
78587858
7859/* Yumekobo */
7860GAME( 1998, blazstar, neogeo,   neogeo,   neogeo,   neogeo,   ROT0, "Yumekobo", "Blazing Star", 0 )
7861GAME( 1999, preisle2, neogeo,   neogeo,   neogeo,   preisle2, ROT0, "Yumekobo", "Prehistoric Isle 2" , 0 ) /* Encrypted GFX */
7862
78637859/* Viccom */
78647860GAME( 1994, fightfev, neogeo,   neogeo,   neogeo,   neogeo,   ROT0, "Viccom", "Fight Fever (set 1)", 0 )
78657861GAME( 1994, fightfeva, fightfev, neogeo,   neogeo,   neogeo,   ROT0, "Viccom", "Fight Fever (set 2)", 0 )
src/mame/drivers/mirax.c
r4679r4680
7979   //audio tester
8080   if(input_code_pressed_once(KEYCODE_Q))
8181   {
82      cpu_set_input_line(screen->machine->cpu[0], INPUT_LINE_NMI, PULSE_LINE);
82      cputag_set_input_line(screen->machine, "maincpu", INPUT_LINE_NMI, PULSE_LINE);
8383   }
8484#endif
8585   return 0;
r4679r4680
112112
113113static WRITE8_DEVICE_HANDLER(ay_sel)
114114{
115   if(cpu_get_previouspc(device->machine->cpu[0])==0x309)
115   if(cpu_get_previouspc(cputag_get_cpu(device->machine, "maincpu"))==0x309)
116116   {
117117      ay8910_address_w(device,0,nAyCtrl);
118118      ay8910_data_w(device,0,nAyData);
src/mame/drivers/gradius3.c
r4679r4680
8383static MACHINE_RESET( gradius3 )
8484{
8585   /* start with cpu B halted */
86   cpu_set_input_line(machine->cpu[1], INPUT_LINE_RESET, ASSERT_LINE);
86   cputag_set_input_line(machine, "sub", INPUT_LINE_RESET, ASSERT_LINE);
8787   irqAen = 0;
8888   irqBmask = 0;
8989}
r4679r4680
102102      gradius3_priority = data & 0x04;
103103
104104      /* bit 3 enables cpu B */
105      cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_RESET, (data & 0x08) ? CLEAR_LINE : ASSERT_LINE);
105      cputag_set_input_line(space->machine, "sub", INPUT_LINE_RESET, (data & 0x08) ? CLEAR_LINE : ASSERT_LINE);
106106
107107      /* bit 5 enables irq */
108108      irqAen = data & 0x20;
r4679r4680
143143   if (irqBmask & 4)
144144   {
145145logerror("%04x trigger cpu B irq 4 %02x\n",cpu_get_pc(space->cpu),data);
146      cpu_set_input_line(space->machine->cpu[1],4,HOLD_LINE);
146      cputag_set_input_line(space->machine, "sub", 4, HOLD_LINE);
147147   }
148148   else
149149logerror("%04x MISSED cpu B irq 4 %02x\n",cpu_get_pc(space->cpu),data);
r4679r4680
157157
158158static WRITE16_HANDLER( sound_irq_w )
159159{
160   cpu_set_input_line_and_vector(space->machine->cpu[2],0,HOLD_LINE,0xff);
160   cputag_set_input_line_and_vector(space->machine, "audiocpu", 0, HOLD_LINE, 0xff);
161161}
162162
163163static WRITE8_DEVICE_HANDLER( sound_bank_w )
src/mame/drivers/omegrace.c
r4679r4680
234234
235235static MACHINE_RESET( omegrace )
236236{
237   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
237   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
238238   /* Omega Race expects the vector processor to be ready. */
239239   avgdvg_reset_w(space, 0, 0);
240240}
r4679r4680
317317static WRITE8_HANDLER( omegrace_soundlatch_w )
318318{
319319   soundlatch_w (space, offset, data);
320   cpu_set_input_line(space->machine->cpu[1], 0, HOLD_LINE);
320   cputag_set_input_line(space->machine, "audiocpu", 0, HOLD_LINE);
321321}
322322
323323
src/mame/drivers/decocass.c
r4679r4680
10481048   int A;
10491049
10501050   /* allocate memory and mark all RAM regions with their decrypted pointers */
1051   decrypted = auto_malloc(0x10000);
1051   decrypted = auto_alloc_array(machine, UINT8, 0x10000);
10521052   memory_set_decrypted_region(space, 0x0000, 0xc7ff, &decrypted[0x0000]);
10531053   memory_set_decrypted_region(space, 0xd000, 0xdbff, &decrypted[0xd000]);
10541054   memory_set_decrypted_region(space, 0xf000, 0xffff, &decrypted[0xf000]);
r4679r4680
10671067{
10681068   int romlength = memory_region_length(machine, "user3");
10691069   UINT8 *rom = memory_region(machine, "user3");
1070   UINT8 *decrypted2 = auto_malloc(romlength);
1070   UINT8 *decrypted2 = auto_alloc_array(machine, UINT8, romlength);
10711071   int i;
10721072
10731073   /* standard init */
r4679r4680
10781078      decrypted2[i] = swap_bits_5_6(rom[i]);
10791079
10801080   /* convert charram to a banked ROM */
1081   memory_install_readwrite8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x6000, 0xafff, 0, 0, SMH_BANK1, decocass_de0091_w);
1081   memory_install_readwrite8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x6000, 0xafff, 0, 0, (read8_space_func)SMH_BANK(1), decocass_de0091_w);
10821082   memory_configure_bank(machine, 1, 0, 1, decocass_charram, 0);
10831083   memory_configure_bank(machine, 1, 1, 1, memory_region(machine, "user3"), 0);
10841084   memory_configure_bank_decrypted(machine, 1, 0, 1, &decrypted[0x6000], 0);
r4679r4680
10861086   memory_set_bank(machine, 1, 0);
10871087
10881088   /* install the bank selector */
1089   memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xe900, 0xe900, 0, 0, decocass_e900_w);
1089   memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xe900, 0xe900, 0, 0, decocass_e900_w);
10901090}
10911091
10921092
src/mame/drivers/mystwarr.c
r4679r4680
281281
282282static WRITE16_HANDLER( sound_irq_w )
283283{
284   cpu_set_input_line(space->machine->cpu[1], 0, HOLD_LINE);
284   cputag_set_input_line(space->machine, "soundcpu", 0, HOLD_LINE);
285285}
286286
287287static READ16_HANDLER( sound_status_r )
r4679r4680
371371
372372/* 68000 memory handlers */
373373/* Mystic Warriors */
374static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 16 )
375   AM_RANGE(0x000000, 0x1fffff) AM_READ(SMH_ROM)   // main program
376   AM_RANGE(0x200000, 0x20ffff) AM_READ(SMH_RAM)
377   AM_RANGE(0x400000, 0x40ffff) AM_READ(K053247_scattered_word_r)
374static ADDRESS_MAP_START( mystwarr_map, ADDRESS_SPACE_PROGRAM, 16 )
375   AM_RANGE(0x000000, 0x1fffff) AM_ROM   // main program
376   AM_RANGE(0x200000, 0x20ffff) AM_RAM AM_BASE(&gx_workram)
377   AM_RANGE(0x400000, 0x40ffff) AM_READWRITE(K053247_scattered_word_r,K053247_scattered_word_w) AM_BASE(&spriteram16)
378   AM_RANGE(0x480000, 0x4800ff) AM_WRITE(K055555_word_w)
378379   AM_RANGE(0x482000, 0x48200f) AM_READ(K055673_rom_word_r)
380   AM_RANGE(0x482010, 0x48201f) AM_WRITE(K053247_reg_word_w)
381   AM_RANGE(0x484000, 0x484007) AM_WRITE(K053246_word_w)
382   AM_RANGE(0x48a000, 0x48a01f) AM_WRITE(K054338_word_w)
383   AM_RANGE(0x48c000, 0x48c03f) AM_WRITE(K056832_word_w)
384   AM_RANGE(0x490000, 0x490001) AM_WRITE(mweeprom_w)
385   AM_RANGE(0x492000, 0x492001) AM_WRITENOP   // watchdog
379386   AM_RANGE(0x494000, 0x494001) AM_READ_PORT("P1_P2")
380387   AM_RANGE(0x494002, 0x494003) AM_READ_PORT("P3_P4")
381388   AM_RANGE(0x496000, 0x496001) AM_READ(mmcoins_r)
382389   AM_RANGE(0x496002, 0x496003) AM_READ(mweeprom_r)
390   AM_RANGE(0x49800c, 0x49800d) AM_WRITE(sound_cmd1_w)
391   AM_RANGE(0x49800e, 0x49800f) AM_WRITE(sound_cmd2_w)
383392   AM_RANGE(0x498014, 0x498015) AM_READ(sound_status_r)
384   AM_RANGE(0x498000, 0x49801f) AM_READ(SMH_RAM)
385   AM_RANGE(0x600000, 0x601fff) AM_READ(K056832_ram_word_r)
386   AM_RANGE(0x602000, 0x603fff) AM_READ(K056832_ram_word_r)   // tilemap RAM mirror read(essential)
393   AM_RANGE(0x498000, 0x49801f) AM_RAM
394   AM_RANGE(0x49a000, 0x49a001) AM_WRITE(sound_irq_w)
395   AM_RANGE(0x49c000, 0x49c01f) AM_WRITE(K053252_word_w)
396   AM_RANGE(0x49e000, 0x49e007) AM_WRITE(irq_ack_w)   // VSCCS (custom)
397   AM_RANGE(0x600000, 0x601fff) AM_READWRITE(K056832_ram_word_r,K056832_ram_word_w)
398   AM_RANGE(0x602000, 0x603fff) AM_READWRITE(K056832_ram_word_r,K056832_ram_word_w)   // tilemap RAM mirror read(essential)
387399   AM_RANGE(0x680000, 0x683fff) AM_READ(K056832_mw_rom_word_r)
388   AM_RANGE(0x700000, 0x701fff) AM_READ(SMH_RAM)
400   AM_RANGE(0x700000, 0x701fff) AM_RAM_WRITE(paletteram16_xrgb_word_be_w) AM_BASE(&paletteram16)
389401#if MW_DEBUG
390402   AM_RANGE(0x480000, 0x4800ff) AM_READ(K055555_word_r)
391403   AM_RANGE(0x482010, 0x48201f) AM_READ(K053247_reg_word_r)
r4679r4680
396408#endif
397409ADDRESS_MAP_END
398410
399static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 16 )
400   AM_RANGE(0x200000, 0x20ffff) AM_WRITE(SMH_RAM) AM_BASE(&gx_workram)
401   AM_RANGE(0x400000, 0x40ffff) AM_WRITE(K053247_scattered_word_w) AM_BASE(&spriteram16)
402   AM_RANGE(0x480000, 0x4800ff) AM_WRITE(K055555_word_w)
403   AM_RANGE(0x482010, 0x48201f) AM_WRITE(K053247_reg_word_w)
404   AM_RANGE(0x484000, 0x484007) AM_WRITE(K053246_word_w)
405   AM_RANGE(0x48a000, 0x48a01f) AM_WRITE(K054338_word_w)
406   AM_RANGE(0x48c000, 0x48c03f) AM_WRITE(K056832_word_w)
407   AM_RANGE(0x490000, 0x490001) AM_WRITE(mweeprom_w)
408   AM_RANGE(0x492000, 0x492001) AM_WRITENOP   // watchdog
409   AM_RANGE(0x49800c, 0x49800d) AM_WRITE(sound_cmd1_w)
410   AM_RANGE(0x49800e, 0x49800f) AM_WRITE(sound_cmd2_w)
411   AM_RANGE(0x498000, 0x49801f) AM_WRITE(SMH_RAM)
412   AM_RANGE(0x49a000, 0x49a001) AM_WRITE(sound_irq_w)
413   AM_RANGE(0x49c000, 0x49c01f) AM_WRITE(K053252_word_w)
414   AM_RANGE(0x49e000, 0x49e007) AM_WRITE(irq_ack_w)   // VSCCS (custom)
415   AM_RANGE(0x600000, 0x601fff) AM_WRITE(K056832_ram_word_w)
416   AM_RANGE(0x602000, 0x603fff) AM_WRITE(K056832_ram_word_w)   // tilemap RAM mirror write(essential)
417   AM_RANGE(0x700000, 0x701fff) AM_WRITE(paletteram16_xrgb_word_be_w) AM_BASE(&paletteram16)
418ADDRESS_MAP_END
419
420411/* Metamorphic Force */
421static ADDRESS_MAP_START( mmreadmem, ADDRESS_SPACE_PROGRAM, 16 )
422   AM_RANGE(0x000000, 0x1fffff) AM_READ(SMH_ROM)   // main program
423   AM_RANGE(0x200000, 0x20ffff) AM_READ(SMH_RAM)
424   AM_RANGE(0x210000, 0x210fff) AM_READ(K053247_word_r)
425   AM_RANGE(0x211000, 0x21ffff) AM_READ(SMH_RAM)
412static ADDRESS_MAP_START( metamrph_map, ADDRESS_SPACE_PROGRAM, 16 )
413   AM_RANGE(0x000000, 0x1fffff) AM_ROM   // main program
414   AM_RANGE(0x200000, 0x20ffff) AM_RAM AM_BASE(&gx_workram)
415   AM_RANGE(0x210000, 0x210fff) AM_READWRITE(K053247_word_r,K053247_word_w)
416   AM_RANGE(0x211000, 0x21ffff) AM_RAM
417   AM_RANGE(0x240000, 0x240007) AM_WRITE(K053246_word_w)
426418   AM_RANGE(0x244000, 0x24400f) AM_READ(K055673_rom_word_r)
427    AM_RANGE(0x24c000, 0x24ffff) AM_READ(K053250_0_ram_r)
428   AM_RANGE(0x250000, 0x25000f) AM_READ(K053250_0_r)
419   AM_RANGE(0x244010, 0x24401f) AM_WRITE(K053247_reg_word_w)
420    AM_RANGE(0x24c000, 0x24ffff) AM_READWRITE(K053250_0_ram_r,K053250_0_ram_w) // "LVC RAM" (53250_ram)
421   AM_RANGE(0x250000, 0x25000f) AM_READWRITE(K053250_0_r,K053250_0_w)
422   AM_RANGE(0x254000, 0x25401f) AM_WRITE(K054338_word_w)
423   AM_RANGE(0x258000, 0x2580ff) AM_WRITE(K055555_word_w)
424   AM_RANGE(0x260000, 0x26001f) AM_WRITE(K053252_word_w)
425   AM_RANGE(0x264000, 0x264001) AM_WRITE(sound_irq_w)
426   AM_RANGE(0x26800c, 0x26800d) AM_WRITE(sound_cmd1_w)
427   AM_RANGE(0x26800e, 0x26800f) AM_WRITE(sound_cmd2_w)
429428   AM_RANGE(0x268014, 0x268015) AM_READ(sound_status_r)
430   AM_RANGE(0x268000, 0x26801f) AM_READ(SMH_RAM)
429   AM_RANGE(0x268000, 0x26801f) AM_RAM
430   AM_RANGE(0x26c000, 0x26c007) AM_WRITE(K056832_b_word_w)
431   AM_RANGE(0x270000, 0x27003f) AM_WRITE(K056832_word_w)
431432   AM_RANGE(0x274000, 0x274001) AM_READ_PORT("P1_P3")
432433   AM_RANGE(0x274002, 0x274003) AM_READ_PORT("P2_P4")
433434   AM_RANGE(0x278000, 0x278001) AM_READ(mmcoins_r)
434435   AM_RANGE(0x278002, 0x278003) AM_READ(vseeprom_r)
435436   AM_RANGE(0x27c000, 0x27c001) AM_READNOP   // watchdog lives here
436   AM_RANGE(0x300000, 0x301fff) AM_READ(K056832_ram_word_r)
437   AM_RANGE(0x302000, 0x303fff) AM_READ(K056832_ram_word_r)   // tilemap RAM mirror read(essential)
437   AM_RANGE(0x27c000, 0x27c001) AM_WRITE(mmeeprom_w)
438   AM_RANGE(0x300000, 0x301fff) AM_READWRITE(K056832_ram_word_r,K056832_ram_word_w)
439   AM_RANGE(0x302000, 0x303fff) AM_READWRITE(K056832_ram_word_r,K056832_ram_word_w)   // tilemap RAM mirror read/write (essential)
438440   AM_RANGE(0x310000, 0x311fff) AM_READ(K056832_mw_rom_word_r)
439441   AM_RANGE(0x320000, 0x321fff) AM_READ(K053250_0_rom_r)
440   AM_RANGE(0x330000, 0x331fff) AM_READ(SMH_RAM)
442   AM_RANGE(0x330000, 0x331fff) AM_RAM_WRITE(paletteram16_xrgb_word_be_w) AM_BASE(&paletteram16)
441443#if MW_DEBUG
442444   AM_RANGE(0x240000, 0x240007) AM_READ(K053246_reg_word_r)
443445   AM_RANGE(0x244010, 0x24401f) AM_READ(K053247_reg_word_r)
r4679r4680
449451#endif
450452ADDRESS_MAP_END
451453
452static ADDRESS_MAP_START( mmwritemem, ADDRESS_SPACE_PROGRAM, 16 )
453   AM_RANGE(0x200000, 0x20ffff) AM_WRITE(SMH_RAM) AM_BASE(&gx_workram)
454   AM_RANGE(0x210000, 0x210fff) AM_WRITE(K053247_word_w)
455   AM_RANGE(0x211000, 0x21ffff) AM_WRITE(SMH_RAM)
454/* Violent Storm */
455static ADDRESS_MAP_START( viostorm_map, ADDRESS_SPACE_PROGRAM, 16 )
456   AM_RANGE(0x000000, 0x1fffff) AM_ROM      // main program
457   AM_RANGE(0x200000, 0x20ffff) AM_RAM AM_BASE(&gx_workram)
458   AM_RANGE(0x210000, 0x210fff) AM_READWRITE(K053247_word_r,K053247_word_w)
459   AM_RANGE(0x211000, 0x21ffff) AM_RAM
456460   AM_RANGE(0x240000, 0x240007) AM_WRITE(K053246_word_w)
461   AM_RANGE(0x244000, 0x24400f) AM_READ(K055673_rom_word_r)
457462   AM_RANGE(0x244010, 0x24401f) AM_WRITE(K053247_reg_word_w)
458    AM_RANGE(0x24c000, 0x24ffff) AM_WRITE(K053250_0_ram_w)   // "LVC RAM" (53250_ram)
459   AM_RANGE(0x250000, 0x25000f) AM_WRITE(K053250_0_w)
463    AM_RANGE(0x24c000, 0x24ffff) AM_RAM      // K053250_0_ram_r / K053250_0_ram_w
464   AM_RANGE(0x250000, 0x25000f) AM_RAM      // K053250_0_r / K053250_0_w
460465   AM_RANGE(0x254000, 0x25401f) AM_WRITE(K054338_word_w)
461466   AM_RANGE(0x258000, 0x2580ff) AM_WRITE(K055555_word_w)
467   AM_RANGE(0x25c000, 0x25c03f) AM_READWRITE(K055550_word_r,K055550_word_w)
462468   AM_RANGE(0x260000, 0x26001f) AM_WRITE(K053252_word_w)
463469   AM_RANGE(0x264000, 0x264001) AM_WRITE(sound_irq_w)
464470   AM_RANGE(0x26800c, 0x26800d) AM_WRITE(sound_cmd1_w)
465471   AM_RANGE(0x26800e, 0x26800f) AM_WRITE(sound_cmd2_w)
466   AM_RANGE(0x268000, 0x26801f) AM_WRITE(SMH_RAM)
467   AM_RANGE(0x26C000, 0x26C007) AM_WRITE(K056832_b_word_w)
468   AM_RANGE(0x270000, 0x27003f) AM_WRITE(K056832_word_w)
469   AM_RANGE(0x27C000, 0x27C001) AM_WRITE(mmeeprom_w)
470   AM_RANGE(0x300000, 0x301fff) AM_WRITE(K056832_ram_word_w)
471   AM_RANGE(0x302000, 0x303fff) AM_WRITE(K056832_ram_word_w)   // tilemap RAM mirror write(essential)
472   AM_RANGE(0x330000, 0x331fff) AM_WRITE(paletteram16_xrgb_word_be_w) AM_BASE(&paletteram16)
473ADDRESS_MAP_END
474
475/* Violent Storm */
476static ADDRESS_MAP_START( vsreadmem, ADDRESS_SPACE_PROGRAM, 16 )
477   AM_RANGE(0x000000, 0x1fffff) AM_READ(SMH_ROM)      // main program
478   AM_RANGE(0x200000, 0x20ffff) AM_READ(SMH_RAM)
479   AM_RANGE(0x210000, 0x210fff) AM_READ(K053247_word_r)
480   AM_RANGE(0x211000, 0x21ffff) AM_READ(SMH_RAM)
481   AM_RANGE(0x244000, 0x24400f) AM_READ(K055673_rom_word_r)
482    AM_RANGE(0x24c000, 0x24ffff) AM_READ(SMH_RAM)      // K053250_0_ram_r
483   AM_RANGE(0x250000, 0x25000f) AM_READ(SMH_RAM)      // K053250_0_r
484   AM_RANGE(0x25c000, 0x25c03f) AM_READ(K055550_word_r)
485472   AM_RANGE(0x268014, 0x268015) AM_READ(sound_status_r)
486   AM_RANGE(0x268000, 0x26801f) AM_READ(SMH_RAM)
473   AM_RANGE(0x268000, 0x26801f) AM_RAM
474   AM_RANGE(0x26c000, 0x26c007) AM_WRITE(K056832_b_word_w)
475   AM_RANGE(0x270000, 0x27003f) AM_WRITE(K056832_word_w)
487476   AM_RANGE(0x274000, 0x274001) AM_READ_PORT("P1_P3")
488477   AM_RANGE(0x274002, 0x274003) AM_READ_PORT("P2_P4")
489478   AM_RANGE(0x278000, 0x278001) AM_READ(mmcoins_r)
490479   AM_RANGE(0x278002, 0x278003) AM_READ(vseeprom_r)
491480   AM_RANGE(0x27c000, 0x27c001) AM_READNOP      // watchdog lives here
492   AM_RANGE(0x300000, 0x301fff) AM_READ(K056832_ram_word_r)
493   AM_RANGE(0x302000, 0x303fff) AM_READ(K056832_ram_word_r) // tilemap RAM mirror read(essential)
494   AM_RANGE(0x304000, 0x3041ff) AM_READ(SMH_RAM)
481   AM_RANGE(0x27c000, 0x27c001) AM_WRITE(mmeeprom_w)
482   AM_RANGE(0x300000, 0x301fff) AM_READWRITE(K056832_ram_word_r,K056832_ram_word_w)
483   AM_RANGE(0x302000, 0x303fff) AM_READWRITE(K056832_ram_word_r,K056832_ram_word_w) // tilemap RAM mirror read(essential)
484   AM_RANGE(0x304000, 0x3041ff) AM_RAM
495485   AM_RANGE(0x310000, 0x311fff) AM_READ(K056832_mw_rom_word_r)
496   AM_RANGE(0x330000, 0x331fff) AM_READ(SMH_RAM)
486   AM_RANGE(0x330000, 0x331fff) AM_RAM_WRITE(paletteram16_xrgb_word_be_w) AM_BASE(&paletteram16)
497487#if MW_DEBUG
498488   AM_RANGE(0x240000, 0x240007) AM_READ(K053246_reg_word_r)
499489   AM_RANGE(0x244010, 0x24401f) AM_READ(K053247_reg_word_r)
r4679r4680
505495#endif
506496ADDRESS_MAP_END
507497
508static ADDRESS_MAP_START( vswritemem, ADDRESS_SPACE_PROGRAM, 16 )
509   AM_RANGE(0x200000, 0x20ffff) AM_WRITE(SMH_RAM) AM_BASE(&gx_workram)
510   AM_RANGE(0x210000, 0x210fff) AM_WRITE(K053247_word_w)
511   AM_RANGE(0x211000, 0x21ffff) AM_WRITE(SMH_RAM)
512   AM_RANGE(0x240000, 0x240007) AM_WRITE(K053246_word_w)
513   AM_RANGE(0x244010, 0x24401f) AM_WRITE(K053247_reg_word_w)
514    AM_RANGE(0x24c000, 0x24ffff) AM_WRITE(SMH_RAM)         // K053250_0_ram_w
515   AM_RANGE(0x250000, 0x25000f) AM_WRITE(SMH_RAM)         // K053250_0_w
516   AM_RANGE(0x254000, 0x25401f) AM_WRITE(K054338_word_w)
517   AM_RANGE(0x258000, 0x2580ff) AM_WRITE(K055555_word_w)
518   AM_RANGE(0x25c000, 0x25c03f) AM_WRITE(K055550_word_w)
519   AM_RANGE(0x260000, 0x26001f) AM_WRITE(K053252_word_w)
520   AM_RANGE(0x264000, 0x264001) AM_WRITE(sound_irq_w)
521   AM_RANGE(0x26800c, 0x26800d) AM_WRITE(sound_cmd1_w)
522   AM_RANGE(0x26800e, 0x26800f) AM_WRITE(sound_cmd2_w)
523   AM_RANGE(0x268000, 0x26801f) AM_WRITE(SMH_RAM)
524   AM_RANGE(0x26C000, 0x26C007) AM_WRITE(K056832_b_word_w)
525   AM_RANGE(0x270000, 0x27003f) AM_WRITE(K056832_word_w)
526   AM_RANGE(0x27C000, 0x27C001) AM_WRITE(mmeeprom_w)
527   AM_RANGE(0x300000, 0x301fff) AM_WRITE(K056832_ram_word_w)
528   AM_RANGE(0x302000, 0x303fff) AM_WRITE(K056832_ram_word_w) // tilemap RAM mirror write(essential)
529   AM_RANGE(0x304000, 0x3041ff) AM_WRITE(SMH_RAM)
530   AM_RANGE(0x330000, 0x331fff) AM_WRITE(paletteram16_xrgb_word_be_w) AM_BASE(&paletteram16)
531ADDRESS_MAP_END
532
533498// Martial Champion specific interfaces
534499static READ16_HANDLER( K053247_martchmp_word_r )
535500{
r4679r4680
581546}
582547
583548/* Martial Champion */
584static ADDRESS_MAP_START( mcreadmem, ADDRESS_SPACE_PROGRAM, 16 )
585   AM_RANGE(0x000000, 0x0fffff) AM_READ(SMH_ROM)         // main program
586   AM_RANGE(0x100000, 0x10ffff) AM_READ(SMH_RAM)         // work RAM
587   AM_RANGE(0x300000, 0x3fffff) AM_READ(SMH_ROM)         // data ROM
588   AM_RANGE(0x402000, 0x40200f) AM_READ(K055673_rom_word_r)   // sprite ROM readback
589   AM_RANGE(0x412000, 0x412001) AM_READ(mccontrol_r)
549static ADDRESS_MAP_START( martchmp_map, ADDRESS_SPACE_PROGRAM, 16 )
550   AM_RANGE(0x000000, 0x0fffff) AM_ROM                           // main program
551   AM_RANGE(0x100000, 0x10ffff) AM_RAM AM_BASE(&gx_workram)         // work RAM
552   AM_RANGE(0x300000, 0x3fffff) AM_ROM                           // data ROM
553   AM_RANGE(0x400000, 0x4000ff) AM_WRITE(K055555_word_w)            // PCU2
554   AM_RANGE(0x402000, 0x40200f) AM_READ(K055673_rom_word_r)         // sprite ROM readback
555   AM_RANGE(0x402010, 0x40201f) AM_WRITE(K053247_reg_word_w)         // OBJSET2
556   AM_RANGE(0x404000, 0x404007) AM_WRITE(K053246_word_w)            // OBJSET1
557   AM_RANGE(0x40a000, 0x40a01f) AM_WRITE(K054338_word_w)            // CLTC
558   AM_RANGE(0x40c000, 0x40c03f) AM_WRITE(K056832_word_w)            // VACSET
559   AM_RANGE(0x40e000, 0x40e03f) AM_WRITE(K053990_martchmp_word_w)       // protection
560   AM_RANGE(0x410000, 0x410001) AM_WRITE(mweeprom_w)
561   AM_RANGE(0x412000, 0x412001) AM_READWRITE(mccontrol_r,mccontrol_w)
590562   AM_RANGE(0x414000, 0x414001) AM_READ_PORT("P1_P2")
591563   AM_RANGE(0x414002, 0x414003) AM_READ_PORT("P3_P4")
592   AM_RANGE(0x416000, 0x416001) AM_READ(mmcoins_r)         // coin
593   AM_RANGE(0x416002, 0x416003) AM_READ(mweeprom_r)         // eeprom read
594   AM_RANGE(0x418014, 0x418015) AM_READ(sound_status_r)      // z80 status
595   AM_RANGE(0x418000, 0x41801f) AM_READ(SMH_RAM)         // sound regs fall through
596   AM_RANGE(0x480000, 0x483fff) AM_READ(K053247_martchmp_word_r)// sprite RAM
597   AM_RANGE(0x600000, 0x601fff) AM_READ(SMH_RAM)         // palette RAM
598   AM_RANGE(0x680000, 0x681fff) AM_READ(K056832_ram_word_r)   // tilemap RAM
599   AM_RANGE(0x682000, 0x683fff) AM_READ(K056832_ram_word_r)   // tilemap RAM mirror read(essential)
600   AM_RANGE(0x700000, 0x703fff) AM_READ(K056832_mw_rom_word_r)   // tile ROM readback
564   AM_RANGE(0x416000, 0x416001) AM_READ(mmcoins_r)                  // coin
565   AM_RANGE(0x416002, 0x416003) AM_READ(mweeprom_r)               // eeprom read
566   AM_RANGE(0x418014, 0x418015) AM_READ(sound_status_r)            // z80 status
567   AM_RANGE(0x41800c, 0x41800d) AM_WRITE(sound_cmd1_w)
568   AM_RANGE(0x41800e, 0x41800f) AM_WRITE(sound_cmd2_w)
569   AM_RANGE(0x418000, 0x41801f) AM_RAM                           // sound regs fall through
570   AM_RANGE(0x41a000, 0x41a001) AM_WRITE(sound_irq_w)
571   AM_RANGE(0x41c000, 0x41c01f) AM_WRITE(K053252_word_w)            // CCU
572   AM_RANGE(0x41e000, 0x41e007) AM_WRITE(K056832_b_word_w)            // VSCCS
573   AM_RANGE(0x480000, 0x483fff) AM_READWRITE(K053247_martchmp_word_r,K053247_martchmp_word_w) AM_BASE(&spriteram16)   // sprite RAM
574   AM_RANGE(0x600000, 0x601fff) AM_RAM_WRITE(paletteram16_xrgb_word_be_w) AM_BASE(&paletteram16)                  // palette RAM
575   AM_RANGE(0x680000, 0x681fff) AM_READWRITE(K056832_ram_word_r,K056832_ram_word_w)   // tilemap RAM
576   AM_RANGE(0x682000, 0x683fff) AM_READWRITE(K056832_ram_word_r,K056832_ram_word_w)   // tilemap RAM mirror read/write (essential)
577   AM_RANGE(0x700000, 0x703fff) AM_READ(K056832_mw_rom_word_r)         // tile ROM readback
601578#if MW_DEBUG
602579   AM_RANGE(0x400000, 0x4000ff) AM_READ(K055555_word_r)
603580   AM_RANGE(0x402010, 0x40201f) AM_READ(K053247_reg_word_r)
r4679r4680
609586#endif
610587ADDRESS_MAP_END
611588
612static ADDRESS_MAP_START( mcwritemem, ADDRESS_SPACE_PROGRAM, 16 )
613   AM_RANGE(0x100000, 0x10ffff) AM_WRITE(SMH_RAM) AM_BASE(&gx_workram)
614   AM_RANGE(0x400000, 0x4000ff) AM_WRITE(K055555_word_w)      // PCU2
615   AM_RANGE(0x402010, 0x40201f) AM_WRITE(K053247_reg_word_w)   // OBJSET2
616   AM_RANGE(0x404000, 0x404007) AM_WRITE(K053246_word_w)      // OBJSET1
617   AM_RANGE(0x40a000, 0x40a01f) AM_WRITE(K054338_word_w)      // CLTC
618   AM_RANGE(0x40c000, 0x40c03f) AM_WRITE(K056832_word_w)      // VACSET
619   AM_RANGE(0x40e000, 0x40e03f) AM_WRITE(K053990_martchmp_word_w) // protection
620   AM_RANGE(0x410000, 0x410001) AM_WRITE(mweeprom_w)
621   AM_RANGE(0x412000, 0x412001) AM_WRITE(mccontrol_w)
622   AM_RANGE(0x41c000, 0x41c01f) AM_WRITE(K053252_word_w)      // CCU
623   AM_RANGE(0x41e000, 0x41e007) AM_WRITE(K056832_b_word_w)   // VSCCS
624   AM_RANGE(0x41800c, 0x41800d) AM_WRITE(sound_cmd1_w)
625   AM_RANGE(0x41800e, 0x41800f) AM_WRITE(sound_cmd2_w)
626   AM_RANGE(0x418000, 0x41801f) AM_WRITE(SMH_RAM)         // sound regs fall through
627   AM_RANGE(0x41a000, 0x41a001) AM_WRITE(sound_irq_w)
628   AM_RANGE(0x480000, 0x483fff) AM_WRITE(K053247_martchmp_word_w) AM_BASE(&spriteram16)
629   AM_RANGE(0x600000, 0x601fff) AM_WRITE(paletteram16_xrgb_word_be_w) AM_BASE(&paletteram16)
630   AM_RANGE(0x680000, 0x681fff) AM_WRITE(K056832_ram_word_w)
631   AM_RANGE(0x682000, 0x683fff) AM_WRITE(K056832_ram_word_w)   // tilemap RAM mirror write(essential)
632ADDRESS_MAP_END
633
634589/* Ultimate Battler Dadandarn */
635static ADDRESS_MAP_START( dddreadmem, ADDRESS_SPACE_PROGRAM, 16 )
636   AM_RANGE(0x000000, 0x1fffff) AM_READ(SMH_ROM)   // main program and data ROM
637   AM_RANGE(0x400000, 0x40ffff) AM_READ(K053247_scattered_word_r)
638   AM_RANGE(0x410000, 0x411fff) AM_READ(K056832_ram_word_r)   // tilemap RAM
639   AM_RANGE(0x412000, 0x413fff) AM_READ(K056832_ram_word_r) // tilemap RAM mirror read(essential)
640   AM_RANGE(0x420000, 0x421fff) AM_READ(SMH_RAM)
590static ADDRESS_MAP_START( dadandrn_map, ADDRESS_SPACE_PROGRAM, 16 )
591   AM_RANGE(0x000000, 0x1fffff) AM_ROM                     // main program and data ROM
592   AM_RANGE(0x400000, 0x40ffff) AM_READWRITE(K053247_scattered_word_r,K053247_scattered_word_w) AM_BASE(&spriteram16)
593   AM_RANGE(0x410000, 0x411fff) AM_READWRITE(K056832_ram_word_r,K056832_ram_word_w)   // tilemap RAM
594   AM_RANGE(0x412000, 0x413fff) AM_READWRITE(K056832_ram_word_r,K056832_ram_word_w)    // tilemap RAM mirror read/write (essential)
595   AM_RANGE(0x420000, 0x421fff) AM_RAM_WRITE(paletteram16_xrgb_word_be_w) AM_BASE(&paletteram16)
596   AM_RANGE(0x430000, 0x430007) AM_WRITE(K053246_word_w)
641597   AM_RANGE(0x440000, 0x443fff) AM_READ(K056832_mw_rom_word_r)
642598   AM_RANGE(0x450000, 0x45000f) AM_READ(K055673_rom_word_r)
643   AM_RANGE(0x470000, 0x470fff) AM_READ(SMH_RAM)
599   AM_RANGE(0x450010, 0x45001f) AM_WRITE(K053247_reg_word_w)
600   AM_RANGE(0x460000, 0x46001f) AM_WRITEONLY AM_BASE(&K053936_0_ctrl)
601   AM_RANGE(0x470000, 0x470fff) AM_RAM AM_BASE(&K053936_0_linectrl)
602   AM_RANGE(0x480000, 0x48003f) AM_WRITE(K056832_word_w)      // VACSET
603   AM_RANGE(0x482000, 0x482007) AM_WRITE(K056832_b_word_w)   // VSCCS
604   AM_RANGE(0x484000, 0x484003) AM_WRITE(ddd_053936_clip_w)
605   AM_RANGE(0x486000, 0x48601f) AM_WRITE(K053252_word_w)
606   AM_RANGE(0x48a00c, 0x48a00d) AM_WRITE(sound_cmd1_msb_w)
607   AM_RANGE(0x48a00e, 0x48a00f) AM_WRITE(sound_cmd2_msb_w)
644608   AM_RANGE(0x48a014, 0x48a015) AM_READ(sound_status_msb_r)
645   AM_RANGE(0x48a000, 0x48a01f) AM_READ(SMH_RAM)   // sound regs fall-through
609   AM_RANGE(0x48a000, 0x48a01f) AM_RAM               // sound regs fall-through
610   AM_RANGE(0x48c000, 0x48c01f) AM_WRITE(K054338_word_w)
646611   AM_RANGE(0x48e000, 0x48e001) AM_READ(dddcoins_r)   // bit 3 (0x8) is test switch
647612   AM_RANGE(0x48e020, 0x48e021) AM_READ(dddeeprom_r)
648   AM_RANGE(0x600000, 0x60ffff) AM_READ(SMH_RAM)
649   AM_RANGE(0x680000, 0x68003f) AM_READ(K055550_word_r)
613   AM_RANGE(0x600000, 0x60ffff) AM_RAM AM_BASE(&gx_workram)
614   AM_RANGE(0x680000, 0x68003f) AM_READWRITE(K055550_word_r,K055550_word_w)
615   AM_RANGE(0x6a0000, 0x6a0001) AM_WRITE(mmeeprom_w)
616   AM_RANGE(0x6c0000, 0x6c0001) AM_WRITE(ddd_053936_enable_w)
617   AM_RANGE(0x6e0000, 0x6e0001) AM_WRITE(sound_irq_w)
650618   AM_RANGE(0x800000, 0x87ffff) AM_READ(ddd_053936_tilerom_0_r)   // 256k tilemap readback
651619   AM_RANGE(0xa00000, 0xa7ffff) AM_READ(ddd_053936_tilerom_1_r) // 128k tilemap readback
652620   AM_RANGE(0xc00000, 0xdfffff) AM_READ(ddd_053936_tilerom_2_r)   // tile character readback
621   AM_RANGE(0xe00000, 0xe00001) AM_WRITENOP   // watchdog
653622#if MW_DEBUG
654623   AM_RANGE(0x430000, 0x430007) AM_READ(K053246_reg_word_r)
655624   AM_RANGE(0x450010, 0x45001f) AM_READ(K053247_reg_word_r)
r4679r4680
661630#endif
662631ADDRESS_MAP_END
663632
664static ADDRESS_MAP_START( dddwritemem, ADDRESS_SPACE_PROGRAM, 16 )
665   AM_RANGE(0x400000, 0x40ffff) AM_WRITE(K053247_scattered_word_w) AM_BASE(&spriteram16)
666   AM_RANGE(0x410000, 0x411fff) AM_WRITE(K056832_ram_word_w)
667   AM_RANGE(0x412000, 0x413fff) AM_WRITE(K056832_ram_word_w)   // tile RAM mirror write(essential)
668   AM_RANGE(0x420000, 0x421fff) AM_WRITE(paletteram16_xrgb_word_be_w) AM_BASE(&paletteram16)
633/* Gaiapolis */
634// a00000 = the 128k tilemap
635// 800000 = the 256k tilemap
636// c00000 = 936 tiles (7fffff window)
637static ADDRESS_MAP_START( gaiapols_map, ADDRESS_SPACE_PROGRAM, 16 )
638   AM_RANGE(0x000000, 0x2fffff) AM_ROM                        // main program
639   AM_RANGE(0x400000, 0x40ffff) AM_READWRITE(K053247_scattered_word_r,K053247_scattered_word_w) AM_BASE(&spriteram16)
640   AM_RANGE(0x410000, 0x411fff) AM_READWRITE(K056832_ram_word_r,K056832_ram_word_w)      // tilemap RAM
641   AM_RANGE(0x412000, 0x413fff) AM_READWRITE(K056832_ram_word_r,K056832_ram_word_w)       // tilemap RAM mirror read / write (essential)
642   AM_RANGE(0x420000, 0x421fff) AM_RAM_WRITE(paletteram16_xrgb_word_be_w) AM_BASE(&paletteram16)
669643   AM_RANGE(0x430000, 0x430007) AM_WRITE(K053246_word_w)
644   AM_RANGE(0x440000, 0x441fff) AM_READ(K056832_mw_rom_word_r)
645   AM_RANGE(0x450000, 0x45000f) AM_READ(K055673_rom_word_r)
670646   AM_RANGE(0x450010, 0x45001f) AM_WRITE(K053247_reg_word_w)
671   AM_RANGE(0x460000, 0x46001f) AM_WRITE(SMH_RAM) AM_BASE(&K053936_0_ctrl)
672   AM_RANGE(0x470000, 0x470fff) AM_WRITE(SMH_RAM) AM_BASE(&K053936_0_linectrl)
673   AM_RANGE(0x480000, 0x48003f) AM_WRITE(K056832_word_w)      // VACSET
674   AM_RANGE(0x482000, 0x482007) AM_WRITE(K056832_b_word_w)   // VSCCS
647   AM_RANGE(0x460000, 0x46001f) AM_WRITEONLY AM_BASE(&K053936_0_ctrl)
648   AM_RANGE(0x470000, 0x470fff) AM_RAM AM_BASE(&K053936_0_linectrl)
649   AM_RANGE(0x480000, 0x48003f) AM_WRITE(K056832_word_w)         // VACSET
650   AM_RANGE(0x482000, 0x482007) AM_WRITE(K056832_b_word_w)         // VSCCS
675651   AM_RANGE(0x484000, 0x484003) AM_WRITE(ddd_053936_clip_w)
676652   AM_RANGE(0x486000, 0x48601f) AM_WRITE(K053252_word_w)
677653   AM_RANGE(0x488000, 0x4880ff) AM_WRITE(K055555_word_w)
678654   AM_RANGE(0x48a00c, 0x48a00d) AM_WRITE(sound_cmd1_msb_w)
679655   AM_RANGE(0x48a00e, 0x48a00f) AM_WRITE(sound_cmd2_msb_w)
680   AM_RANGE(0x48a000, 0x48a01f) AM_WRITE(SMH_RAM)   // sound regs fall-through
656   AM_RANGE(0x48a014, 0x48a015) AM_READ(sound_status_msb_r)
657   AM_RANGE(0x48a000, 0x48a01f) AM_RAM                        // sound regs fall-through
681658   AM_RANGE(0x48c000, 0x48c01f) AM_WRITE(K054338_word_w)
682   AM_RANGE(0x600000, 0x60ffff) AM_WRITE(SMH_RAM) AM_BASE(&gx_workram)
683   AM_RANGE(0x680000, 0x68003f) AM_WRITE(K055550_word_w)
659   AM_RANGE(0x48e000, 0x48e001) AM_READ(dddcoins_r)            // bit 3 (0x8) is test switch
660   AM_RANGE(0x48e020, 0x48e021) AM_READ(dddeeprom_r)
661   AM_RANGE(0x600000, 0x60ffff) AM_RAM AM_BASE(&gx_workram)
662   AM_RANGE(0x660000, 0x6600ff) AM_READWRITE(K054000_lsb_r,K054000_lsb_w)
684663   AM_RANGE(0x6a0000, 0x6a0001) AM_WRITE(mmeeprom_w)
685664   AM_RANGE(0x6c0000, 0x6c0001) AM_WRITE(ddd_053936_enable_w)
686665   AM_RANGE(0x6e0000, 0x6e0001) AM_WRITE(sound_irq_w)
687   AM_RANGE(0xe00000, 0xe00001) AM_WRITENOP   // watchdog
688ADDRESS_MAP_END
689
690/* Gaiapolis */
691// a00000 = the 128k tilemap
692// 800000 = the 256k tilemap
693// c00000 = 936 tiles (7fffff window)
694static ADDRESS_MAP_START( gaiareadmem, ADDRESS_SPACE_PROGRAM, 16 )
695   AM_RANGE(0x000000, 0x2fffff) AM_READ(SMH_ROM)   // main program
696   AM_RANGE(0x400000, 0x40ffff) AM_READ(K053247_scattered_word_r)
697   AM_RANGE(0x410000, 0x411fff) AM_READ(K056832_ram_word_r)   // tilemap RAM
698   AM_RANGE(0x412000, 0x413fff) AM_READ(K056832_ram_word_r) // tilemap RAM mirror read(essential)
699   AM_RANGE(0x420000, 0x421fff) AM_READ(SMH_RAM)
700   AM_RANGE(0x440000, 0x441fff) AM_READ(K056832_mw_rom_word_r)
701   AM_RANGE(0x450000, 0x45000f) AM_READ(K055673_rom_word_r)
702   AM_RANGE(0x470000, 0x470fff) AM_READ(SMH_RAM)
703   AM_RANGE(0x48a014, 0x48a015) AM_READ(sound_status_msb_r)
704   AM_RANGE(0x48a000, 0x48a01f) AM_READ(SMH_RAM)   // sound regs fall-through
705   AM_RANGE(0x48e000, 0x48e001) AM_READ(dddcoins_r)   // bit 3 (0x8) is test switch
706   AM_RANGE(0x48e020, 0x48e021) AM_READ(dddeeprom_r)
707   AM_RANGE(0x600000, 0x60ffff) AM_READ(SMH_RAM)
708   AM_RANGE(0x660000, 0x6600ff) AM_READ(K054000_lsb_r)
709666   AM_RANGE(0x800000, 0x87ffff) AM_READ(gai_053936_tilerom_0_r)   // 256k tilemap readback
710   AM_RANGE(0xa00000, 0xa7ffff) AM_READ(ddd_053936_tilerom_1_r) // 128k tilemap readback
667   AM_RANGE(0xa00000, 0xa7ffff) AM_READ(ddd_053936_tilerom_1_r)    // 128k tilemap readback
711668   AM_RANGE(0xc00000, 0xdfffff) AM_READ(gai_053936_tilerom_2_r)   // tile character readback
669   AM_RANGE(0xe00000, 0xe00001) AM_WRITENOP    // watchdog
712670#if MW_DEBUG
713671   AM_RANGE(0x430000, 0x430007) AM_READ(K053246_reg_word_r)
714672   AM_RANGE(0x450010, 0x45001f) AM_READ(K053247_reg_word_r)
r4679r4680
720678#endif
721679ADDRESS_MAP_END
722680
723static ADDRESS_MAP_START( gaiawritemem, ADDRESS_SPACE_PROGRAM, 16 )
724   AM_RANGE(0x400000, 0x40ffff) AM_WRITE(K053247_scattered_word_w) AM_BASE(&spriteram16)
725   AM_RANGE(0x410000, 0x411fff) AM_WRITE(K056832_ram_word_w)
726   AM_RANGE(0x412000, 0x413fff) AM_WRITE(K056832_ram_word_w)   // tilemap RAM mirror write(essential)
727   AM_RANGE(0x412000, 0x4120ff) AM_WRITE(SMH_RAM)
728   AM_RANGE(0x420000, 0x421fff) AM_WRITE(paletteram16_xrgb_word_be_w) AM_BASE(&paletteram16)
729   AM_RANGE(0x430000, 0x430007) AM_WRITE(K053246_word_w)
730   AM_RANGE(0x450010, 0x45001f) AM_WRITE(K053247_reg_word_w)
731   AM_RANGE(0x460000, 0x46001f) AM_WRITE(SMH_RAM) AM_BASE(&K053936_0_ctrl)
732   AM_RANGE(0x470000, 0x470fff) AM_WRITE(SMH_RAM) AM_BASE(&K053936_0_linectrl)
733   AM_RANGE(0x480000, 0x48003f) AM_WRITE(K056832_word_w)      // VACSET
734   AM_RANGE(0x482000, 0x482007) AM_WRITE(K056832_b_word_w)   // VSCCS
735   AM_RANGE(0x484000, 0x484003) AM_WRITE(ddd_053936_clip_w)
736   AM_RANGE(0x486000, 0x48601f) AM_WRITE(K053252_word_w)
737   AM_RANGE(0x488000, 0x4880ff) AM_WRITE(K055555_word_w)
738   AM_RANGE(0x48a00c, 0x48a00d) AM_WRITE(sound_cmd1_msb_w)
739   AM_RANGE(0x48a00e, 0x48a00f) AM_WRITE(sound_cmd2_msb_w)
740   AM_RANGE(0x48a000, 0x48a01f) AM_WRITE(SMH_RAM)   // sound regs fall-through
741   AM_RANGE(0x48c000, 0x48c01f) AM_WRITE(K054338_word_w)
742   AM_RANGE(0x600000, 0x60ffff) AM_WRITE(SMH_RAM) AM_BASE(&gx_workram)
743   AM_RANGE(0x660000, 0x6600ff) AM_WRITE(K054000_lsb_w)
744   AM_RANGE(0x6a0000, 0x6a0001) AM_WRITE(mmeeprom_w)
745   AM_RANGE(0x6c0000, 0x6c0001) AM_WRITE(ddd_053936_enable_w)
746   AM_RANGE(0x6e0000, 0x6e0001) AM_WRITE(sound_irq_w)
747   AM_RANGE(0xe00000, 0xe00001) AM_WRITENOP    // watchdog
748ADDRESS_MAP_END
749
750681/**********************************************************************************/
751682
752683static int cur_sound_region;
r4679r4680
770701   quite similar to xexex/gijoe/asterix's sound.
771702 */
772703
773static ADDRESS_MAP_START( sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
774   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
775   AM_RANGE(0x8000, 0xbfff) AM_READ(SMH_BANK2)
776   AM_RANGE(0xc000, 0xdfff) AM_READ(SMH_RAM)
777   AM_RANGE(0xe000, 0xe22f) AM_DEVREAD("konami1", k054539_r)
778   AM_RANGE(0xe230, 0xe3ff) AM_READ(SMH_RAM)
779   AM_RANGE(0xe400, 0xe62f) AM_DEVREAD("konami2", k054539_r)
780   AM_RANGE(0xe630, 0xe7ff) AM_READ(SMH_RAM)
781   AM_RANGE(0xf002, 0xf002) AM_READ(soundlatch_r)
782   AM_RANGE(0xf003, 0xf003) AM_READ(soundlatch2_r)
783ADDRESS_MAP_END
784
785static ADDRESS_MAP_START( sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
704static ADDRESS_MAP_START( mystwarr_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
705   AM_RANGE(0x0000, 0x7fff) AM_ROM
706   AM_RANGE(0x8000, 0xbfff) AM_ROMBANK(2)
786707   AM_RANGE(0x0000, 0xbfff) AM_WRITENOP
787   AM_RANGE(0xc000, 0xdfff) AM_WRITE(SMH_RAM)
788   AM_RANGE(0xe000, 0xe22f) AM_DEVWRITE("konami1", k054539_w)
789   AM_RANGE(0xe230, 0xe3ff) AM_WRITE(SMH_RAM)
790   AM_RANGE(0xe400, 0xe62f) AM_DEVWRITE("konami2", k054539_w)
791   AM_RANGE(0xe630, 0xe7ff) AM_WRITE(SMH_RAM)
708   AM_RANGE(0xc000, 0xdfff) AM_RAM
709   AM_RANGE(0xe000, 0xe22f) AM_DEVREADWRITE("konami1", k054539_r,k054539_w)
710   AM_RANGE(0xe230, 0xe3ff) AM_RAM
711   AM_RANGE(0xe400, 0xe62f) AM_DEVREADWRITE("konami2", k054539_r,k054539_w)
712   AM_RANGE(0xe630, 0xe7ff) AM_RAM
792713   AM_RANGE(0xf000, 0xf000) AM_WRITE(soundlatch3_w)
714   AM_RANGE(0xf002, 0xf002) AM_READ(soundlatch_r)
715   AM_RANGE(0xf003, 0xf003) AM_READ(soundlatch2_r)
793716   AM_RANGE(0xf800, 0xf800) AM_WRITE(sound_bankswitch_w)
794717   AM_RANGE(0xfff0, 0xfff3) AM_WRITENOP   // unknown write
795718ADDRESS_MAP_END
796719
720
797721static const k054539_interface k054539_config =
798722{
799723   "shared"
r4679r4680
924848
925849   /* basic machine hardware */
926850   MDRV_CPU_ADD("maincpu", M68000, 16000000)   /* 16 MHz (confirmed) */
927   MDRV_CPU_PROGRAM_MAP(readmem,writemem)
851   MDRV_CPU_PROGRAM_MAP(mystwarr_map,0)
928852   MDRV_CPU_VBLANK_INT_HACK(mystwarr_interrupt, 3)
929853
930854   MDRV_CPU_ADD("soundcpu", Z80, 8000000)
931   MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem)
855   MDRV_CPU_PROGRAM_MAP(mystwarr_sound_map,0)
932856   MDRV_CPU_PERIODIC_INT(nmi_line_pulse, 480)
933857
934858   MDRV_QUANTUM_TIME(HZ(1920))
r4679r4680
974898
975899   /* basic machine hardware */
976900   MDRV_CPU_MODIFY("maincpu")
977   MDRV_CPU_PROGRAM_MAP(vsreadmem,vswritemem)
901   MDRV_CPU_PROGRAM_MAP(viostorm_map,0)
978902   MDRV_CPU_VBLANK_INT_HACK(metamrph_interrupt, 40)
979903
980904   /* video hardware */
r4679r4680
994918
995919   /* basic machine hardware */
996920   MDRV_CPU_MODIFY("maincpu")
997   MDRV_CPU_PROGRAM_MAP(mmreadmem,mmwritemem)
921   MDRV_CPU_PROGRAM_MAP(metamrph_map,0)
998922   MDRV_CPU_VBLANK_INT_HACK(metamrph_interrupt, 40)
999923
1000924   /* video hardware */
r4679r4680
1014938
1015939   /* basic machine hardware */
1016940   MDRV_CPU_MODIFY("maincpu")
1017   MDRV_CPU_PROGRAM_MAP(dddreadmem, dddwritemem)
941   MDRV_CPU_PROGRAM_MAP(dadandrn_map, 0)
1018942   MDRV_CPU_VBLANK_INT("screen", ddd_interrupt)
1019943
1020944   MDRV_GFXDECODE(dadandrn)
r4679r4680
1036960
1037961   /* basic machine hardware */
1038962   MDRV_CPU_MODIFY("maincpu")
1039   MDRV_CPU_PROGRAM_MAP(gaiareadmem,gaiawritemem)
963   MDRV_CPU_PROGRAM_MAP(gaiapols_map,0)
1040964   MDRV_CPU_VBLANK_INT("screen", ddd_interrupt)
1041965
1042966   MDRV_GFXDECODE(gaiapols)
r4679r4680
1061985
1062986   /* basic machine hardware */
1063987   MDRV_CPU_MODIFY("maincpu")
1064   MDRV_CPU_PROGRAM_MAP(mcreadmem,mcwritemem)
988   MDRV_CPU_PROGRAM_MAP(martchmp_map,0)
1065989   MDRV_CPU_VBLANK_INT_HACK(mchamp_interrupt, 2)
1066990
1067991   MDRV_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS | VIDEO_HAS_HIGHLIGHTS | VIDEO_UPDATE_BEFORE_VBLANK)
src/mame/drivers/fromance.c
r4679r4680
180180
181181   /* generate an NMI if we're out of data */
182182   if (!fromance_vclk_left)
183      cpu_set_input_line(device->machine->cpu[1], INPUT_LINE_NMI, PULSE_LINE);
183      cputag_set_input_line(device->machine, "sub", INPUT_LINE_NMI, PULSE_LINE);
184184}
185185
186186
r4679r4680
236236 *
237237 *************************************/
238238
239static ADDRESS_MAP_START( nekkyoku_readmem_main, ADDRESS_SPACE_PROGRAM, 8 )
240   AM_RANGE(0x0000, 0xbfff) AM_READ(SMH_ROM)
241   AM_RANGE(0xc000, 0xdfff) AM_READ(SMH_RAM)
242   AM_RANGE(0xf000, 0xf000) AM_READ_PORT("SERVICE")
243   AM_RANGE(0xf001, 0xf001) AM_READ(fromance_keymatrix_r)
244   AM_RANGE(0xf002, 0xf002) AM_READ_PORT("COIN")
245   AM_RANGE(0xf003, 0xf003) AM_READ(fromance_busycheck_main_r)
239static ADDRESS_MAP_START( nekkyoku_main_map, ADDRESS_SPACE_PROGRAM, 8 )
240   AM_RANGE(0x0000, 0xbfff) AM_ROM
241   AM_RANGE(0xc000, 0xdfff) AM_RAM
242   AM_RANGE(0xf000, 0xf000) AM_READ_PORT("SERVICE") AM_WRITE(fromance_portselect_w)
243   AM_RANGE(0xf001, 0xf001) AM_READ(fromance_keymatrix_r) AM_WRITENOP
244   AM_RANGE(0xf002, 0xf002) AM_READ_PORT("COIN") AM_WRITE(fromance_coinctr_w)
245   AM_RANGE(0xf003, 0xf003) AM_READWRITE(fromance_busycheck_main_r, fromance_commanddata_w)
246246   AM_RANGE(0xf004, 0xf004) AM_READ_PORT("DSW2")
247247   AM_RANGE(0xf005, 0xf005) AM_READ_PORT("DSW1")
248248ADDRESS_MAP_END
249249
250static ADDRESS_MAP_START( nekkyoku_writemem_main, ADDRESS_SPACE_PROGRAM, 8 )
251   AM_RANGE(0x0000, 0xbfff) AM_WRITE(SMH_ROM)
252   AM_RANGE(0xc000, 0xdfff) AM_WRITE(SMH_RAM)
253   AM_RANGE(0xf000, 0xf000) AM_WRITE(fromance_portselect_w)
254   AM_RANGE(0xf001, 0xf001) AM_WRITENOP
255   AM_RANGE(0xf002, 0xf002) AM_WRITE(fromance_coinctr_w)
256   AM_RANGE(0xf003, 0xf003) AM_WRITE(fromance_commanddata_w)
257ADDRESS_MAP_END
258
259
260static ADDRESS_MAP_START( fromance_readmem_main, ADDRESS_SPACE_PROGRAM, 8 )
261   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
262   AM_RANGE(0xc000, 0xdfff) AM_READ(SMH_RAM)
250static ADDRESS_MAP_START( fromance_main_map, ADDRESS_SPACE_PROGRAM, 8 )
251   AM_RANGE(0x0000, 0x7fff) AM_ROM
252   AM_RANGE(0xc000, 0xdfff) AM_RAM
263253   AM_RANGE(0x9e89, 0x9e89) AM_READNOP         // unknown (idolmj)
264   AM_RANGE(0xe000, 0xe000) AM_READ_PORT("SERVICE")
254   AM_RANGE(0xe000, 0xe000) AM_READ_PORT("SERVICE") AM_WRITE(fromance_portselect_w)
265255   AM_RANGE(0xe001, 0xe001) AM_READ(fromance_keymatrix_r)
266   AM_RANGE(0xe002, 0xe002) AM_READ_PORT("COIN")
267   AM_RANGE(0xe003, 0xe003) AM_READ(fromance_busycheck_main_r)
256   AM_RANGE(0xe002, 0xe002) AM_READ_PORT("COIN") AM_WRITE(fromance_coinctr_w)
257   AM_RANGE(0xe003, 0xe003) AM_READWRITE(fromance_busycheck_main_r, fromance_commanddata_w)
268258   AM_RANGE(0xe004, 0xe004) AM_READ_PORT("DSW2")
269259   AM_RANGE(0xe005, 0xe005) AM_READ_PORT("DSW1")
270260ADDRESS_MAP_END
271261
272static ADDRESS_MAP_START( fromance_writemem_main, ADDRESS_SPACE_PROGRAM, 8 )
273   AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM)
274   AM_RANGE(0xc000, 0xdfff) AM_WRITE(SMH_RAM)
275   AM_RANGE(0xe000, 0xe000) AM_WRITE(fromance_portselect_w)
276   AM_RANGE(0xe002, 0xe002) AM_WRITE(fromance_coinctr_w)
277   AM_RANGE(0xe003, 0xe003) AM_WRITE(fromance_commanddata_w)
278ADDRESS_MAP_END
279262
280263
281
282264/*************************************
283265 *
284266 *  Slave CPU memory handlers
285267 *
286268 *************************************/
287269
288static ADDRESS_MAP_START( nekkyoku_readmem_sub, ADDRESS_SPACE_PROGRAM, 8 )
289   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
290   AM_RANGE(0x8000, 0xbfff) AM_READ(SMH_BANK1)
291   AM_RANGE(0xc000, 0xefff) AM_READ(fromance_videoram_r)
292   AM_RANGE(0xf000, 0xf7ff) AM_READ(SMH_RAM)
293   AM_RANGE(0xf800, 0xffff) AM_READ(fromance_paletteram_r)
270static ADDRESS_MAP_START( nekkyoku_sub_map, ADDRESS_SPACE_PROGRAM, 8 )
271   AM_RANGE(0x0000, 0x7fff) AM_ROM
272   AM_RANGE(0x8000, 0xbfff) AM_ROMBANK(1)
273   AM_RANGE(0xc000, 0xefff) AM_READWRITE(fromance_videoram_r, fromance_videoram_w)
274   AM_RANGE(0xf000, 0xf7ff) AM_RAM
275   AM_RANGE(0xf800, 0xffff) AM_READWRITE(fromance_paletteram_r, fromance_paletteram_w)
294276ADDRESS_MAP_END
295277
296static ADDRESS_MAP_START( nekkyoku_writemem_sub, ADDRESS_SPACE_PROGRAM, 8 )
297   AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM)
298   AM_RANGE(0x8000, 0xbfff) AM_WRITE(SMH_ROM)
299   AM_RANGE(0xc000, 0xefff) AM_WRITE(fromance_videoram_w)
300   AM_RANGE(0xf000, 0xf7ff) AM_WRITE(SMH_RAM)
301   AM_RANGE(0xf800, 0xffff) AM_WRITE(fromance_paletteram_w)
278static ADDRESS_MAP_START( fromance_sub_map, ADDRESS_SPACE_PROGRAM, 8 )
279   AM_RANGE(0x0000, 0x7fff) AM_ROM
280   AM_RANGE(0x8000, 0xbfff) AM_ROMBANK(1)
281   AM_RANGE(0xc000, 0xc7ff) AM_RAM
282   AM_RANGE(0xc800, 0xcfff) AM_READWRITE(fromance_paletteram_r, fromance_paletteram_w)
283   AM_RANGE(0xd000, 0xffff) AM_READWRITE(fromance_videoram_r, fromance_videoram_w)
302284ADDRESS_MAP_END
303285
304286
305static ADDRESS_MAP_START( fromance_readmem_sub, ADDRESS_SPACE_PROGRAM, 8 )
306   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
307   AM_RANGE(0x8000, 0xbfff) AM_READ(SMH_BANK1)
308   AM_RANGE(0xc000, 0xc7ff) AM_READ(SMH_RAM)
309   AM_RANGE(0xc800, 0xcfff) AM_READ(fromance_paletteram_r)
310   AM_RANGE(0xd000, 0xffff) AM_READ(fromance_videoram_r)
311ADDRESS_MAP_END
312287
313static ADDRESS_MAP_START( fromance_writemem_sub, ADDRESS_SPACE_PROGRAM, 8 )
314   AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM)
315   AM_RANGE(0x8000, 0xbfff) AM_WRITE(SMH_ROM)
316   AM_RANGE(0xc000, 0xc7ff) AM_WRITE(SMH_RAM)
317   AM_RANGE(0xc800, 0xcfff) AM_WRITE(fromance_paletteram_w)
318   AM_RANGE(0xd000, 0xffff) AM_WRITE(fromance_videoram_w)
319ADDRESS_MAP_END
320
321
322
323288/*************************************
324289 *
325290 *  Slave CPU port handlers
r4679r4680
1012977
1013978   /* basic machine hardware */
1014979   MDRV_CPU_ADD("maincpu", Z80,12000000/2)      /* 6.00 Mhz ? */
1015   MDRV_CPU_PROGRAM_MAP(nekkyoku_readmem_main,nekkyoku_writemem_main)
980   MDRV_CPU_PROGRAM_MAP(nekkyoku_main_map,0)
1016981   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
1017982
1018983   MDRV_CPU_ADD("sub", Z80,12000000/2)      /* 6.00 Mhz ? */
1019   MDRV_CPU_PROGRAM_MAP(nekkyoku_readmem_sub,nekkyoku_writemem_sub)
984   MDRV_CPU_PROGRAM_MAP(nekkyoku_sub_map,0)
1020985   MDRV_CPU_IO_MAP(nekkyoku_sub_io_map,0)
1021986
1022987   MDRV_MACHINE_RESET(fromance)
r4679r4680
10501015
10511016   /* basic machine hardware */
10521017   MDRV_CPU_ADD("maincpu", Z80,12000000/2)      /* 6.00 Mhz ? */
1053   MDRV_CPU_PROGRAM_MAP(fromance_readmem_main,fromance_writemem_main)
1018   MDRV_CPU_PROGRAM_MAP(fromance_main_map,0)
10541019   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
10551020
10561021   MDRV_CPU_ADD("sub", Z80,12000000/2)      /* 6.00 Mhz ? */
1057   MDRV_CPU_PROGRAM_MAP(fromance_readmem_sub,fromance_writemem_sub)
1022   MDRV_CPU_PROGRAM_MAP(fromance_sub_map,0)
10581023   MDRV_CPU_IO_MAP(idolmj_sub_io_map,0)
10591024
10601025   MDRV_MACHINE_RESET(fromance)
r4679r4680
10881053
10891054   /* basic machine hardware */
10901055   MDRV_CPU_ADD("maincpu", Z80,12000000/2)      /* 6.00 Mhz ? */
1091   MDRV_CPU_PROGRAM_MAP(fromance_readmem_main,fromance_writemem_main)
1056   MDRV_CPU_PROGRAM_MAP(fromance_main_map,0)
10921057   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
10931058
10941059   MDRV_CPU_ADD("sub", Z80,12000000/2)      /* 6.00 Mhz ? */
1095   MDRV_CPU_PROGRAM_MAP(fromance_readmem_sub,fromance_writemem_sub)
1060   MDRV_CPU_PROGRAM_MAP(fromance_sub_map,0)
10961061   MDRV_CPU_IO_MAP(fromance_sub_io_map,0)
10971062
10981063   MDRV_MACHINE_RESET(fromance)
r4679r4680
13421307GAME( 1990, daiyogen,        0, fromance, daiyogen, 0, ROT0, "Video System Co.", "Mahjong Daiyogen (Japan)", 0 )
13431308GAME( 1991, nmsengen,        0, fromance, nmsengen, 0, ROT0, "Video System Co.", "Nekketsu Mahjong Sengen! AFTER 5 (Japan)", 0 )
13441309GAME( 1991, fromance,        0, fromance, fromance, 0, ROT0, "Video System Co.", "Idol-Mahjong Final Romance (Japan)", 0 )
1345
src/mame/drivers/dlair.c
r4679r4680
8484
8585static void dleuro_interrupt(const device_config *device, int state)
8686{
87   cpu_set_input_line(device->machine->cpu[0], 0, state);
87   cputag_set_input_line(device->machine, "maincpu", 0, state);
8888}
8989
9090
r4679r4680
194194   if (laserdisc_type == LASERDISC_TYPE_VARIABLE)
195195   {
196196      int newtype = (input_port_read(machine, "DSW2") & 0x08) ? LASERDISC_TYPE_PIONEER_LDV1000 : LASERDISC_TYPE_PIONEER_PR7820;
197      device_set_info_int(laserdisc, LDINFO_INT_TYPE, newtype);
197      laserdisc_set_type(laserdisc, newtype);
198198   }
199199}
200200
r4679r4680
297297
298298static CUSTOM_INPUT( laserdisc_status_r )
299299{
300   switch (device_get_info_int(laserdisc, LDINFO_INT_TYPE))
300   switch (laserdisc_get_type(laserdisc))
301301   {
302302      case LASERDISC_TYPE_PIONEER_PR7820:
303303         return 0;
r4679r4680
314314
315315static CUSTOM_INPUT( laserdisc_command_r )
316316{
317   switch (device_get_info_int(laserdisc, LDINFO_INT_TYPE))
317   switch (laserdisc_get_type(laserdisc))
318318   {
319319      case LASERDISC_TYPE_PIONEER_PR7820:
320320         return (laserdisc_line_r(laserdisc, LASERDISC_LINE_READY) == ASSERT_LINE) ? 0 : 1;
src/mame/drivers/irobot.c
r4679r4680
102102
103103static WRITE8_HANDLER( irobot_clearirq_w )
104104{
105    cpu_set_input_line(space->machine->cpu[0], M6809_IRQ_LINE ,CLEAR_LINE);
105    cputag_set_input_line(space->machine, "maincpu", M6809_IRQ_LINE ,CLEAR_LINE);
106106}
107107
108108
109109static WRITE8_HANDLER( irobot_clearfirq_w )
110110{
111    cpu_set_input_line(space->machine->cpu[0], M6809_FIRQ_LINE ,CLEAR_LINE);
111    cputag_set_input_line(space->machine, "maincpu", M6809_FIRQ_LINE ,CLEAR_LINE);
112112}
113113
114114
r4679r4680
121121
122122static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 )
123123    AM_RANGE(0x0000, 0x07ff) AM_READ(SMH_RAM)
124    AM_RANGE(0x0800, 0x0fff) AM_READ(SMH_BANK2)
124    AM_RANGE(0x0800, 0x0fff) AM_READ(SMH_BANK(2))
125125    AM_RANGE(0x1000, 0x103f) AM_READ_PORT("IN0")
126126    AM_RANGE(0x1040, 0x1040) AM_READ_PORT("IN1")
127127    AM_RANGE(0x1080, 0x1080) AM_READ(irobot_status_r)
r4679r4680
131131    AM_RANGE(0x1400, 0x143f) AM_READ(quad_pokey_r)
132132    AM_RANGE(0x1c00, 0x1fff) AM_READ(SMH_RAM)
133133    AM_RANGE(0x2000, 0x3fff) AM_READ(irobot_sharedmem_r)
134    AM_RANGE(0x4000, 0x5fff) AM_READ(SMH_BANK1)
134    AM_RANGE(0x4000, 0x5fff) AM_READ(SMH_BANK(1))
135135    AM_RANGE(0x6000, 0xffff) AM_READ(SMH_ROM)
136136ADDRESS_MAP_END
137137
138138
139139static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 )
140140    AM_RANGE(0x0000, 0x07ff) AM_WRITE(SMH_RAM)
141    AM_RANGE(0x0800, 0x0fff) AM_WRITE(SMH_BANK2)
141    AM_RANGE(0x0800, 0x0fff) AM_WRITE(SMH_BANK(2))
142142    AM_RANGE(0x1100, 0x1100) AM_WRITE(irobot_clearirq_w)
143143    AM_RANGE(0x1140, 0x1140) AM_WRITE(irobot_statwr_w)
144144    AM_RANGE(0x1180, 0x1180) AM_WRITE(irobot_out0_w)
src/mame/drivers/skykid.c
r4679r4680
8080static WRITE8_HANDLER( skykid_subreset_w )
8181{
8282   int bit = !BIT(offset,11);
83   cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_RESET, bit ? CLEAR_LINE : ASSERT_LINE);
83   cputag_set_input_line(space->machine, "mcu", INPUT_LINE_RESET, bit ? CLEAR_LINE : ASSERT_LINE);
8484}
8585
8686static WRITE8_HANDLER( skykid_bankswitch_w )
r4679r4680
9191static WRITE8_HANDLER( skykid_irq_1_ctrl_w )
9292{
9393   int bit = !BIT(offset,11);
94   cpu_interrupt_enable(space->machine->cpu[0],bit);
94   cpu_interrupt_enable(cputag_get_cpu(space->machine, "maincpu"), bit);
9595   if (!bit)
96      cpu_set_input_line(space->machine->cpu[0], 0, CLEAR_LINE);
96      cputag_set_input_line(space->machine, "maincpu", 0, CLEAR_LINE);
9797}
9898
9999static WRITE8_HANDLER( skykid_irq_2_ctrl_w )
100100{
101101   int bit = !BIT(offset,13);
102   cpu_interrupt_enable(space->machine->cpu[1],bit);
102   cpu_interrupt_enable(cputag_get_cpu(space->machine, "mcu"), bit);
103103   if (!bit)
104      cpu_set_input_line(space->machine->cpu[1], 0, CLEAR_LINE);
104      cputag_set_input_line(space->machine, "mcu", 0, CLEAR_LINE);
105105}
106106
107107static MACHINE_START( skykid )
r4679r4680
115115
116116
117117static ADDRESS_MAP_START( skykid_map, ADDRESS_SPACE_PROGRAM, 8 )
118   AM_RANGE(0x0000, 0x1fff) AM_READ(SMH_BANK1)            /* banked ROM */
118   AM_RANGE(0x0000, 0x1fff) AM_READ(SMH_BANK(1))            /* banked ROM */
119119   AM_RANGE(0x2000, 0x2fff) AM_READWRITE(skykid_videoram_r,skykid_videoram_w) AM_BASE(&skykid_videoram)/* Video RAM (background) */
120120   AM_RANGE(0x4000, 0x47ff) AM_READWRITE(skykid_textram_r,skykid_textram_w) AM_BASE(&skykid_textram)   /* video RAM (text layer) */
121121   AM_RANGE(0x4800, 0x5fff) AM_RAM AM_BASE(&skykid_spriteram)   /* RAM + Sprite RAM */
src/mame/drivers/klax.c
r4679r4680
3333
3434static void update_interrupts(running_machine *machine)
3535{
36   cpu_set_input_line(machine->cpu[0], 4, atarigen_video_int_state || atarigen_scanline_int_state ? ASSERT_LINE : CLEAR_LINE);
36   cputag_set_input_line(machine, "maincpu", 4, atarigen_video_int_state || atarigen_scanline_int_state ? ASSERT_LINE : CLEAR_LINE);
3737}
3838
3939
r4679r4680
4141{
4242   /* generate 32V signals */
4343   if ((scanline & 32) == 0 && !(input_port_read(screen->machine, "P1") & 0x800))
44      atarigen_scanline_int_gen(screen->machine->cpu[0]);
44      atarigen_scanline_int_gen(cputag_get_cpu(screen->machine, "maincpu"));
4545}
4646
4747
r4679r4680
7474 *
7575 *************************************/
7676
77static ADDRESS_MAP_START( main_readmem, ADDRESS_SPACE_PROGRAM, 16 )
78   AM_RANGE(0x000000, 0x03ffff) AM_READ(SMH_ROM)
79   AM_RANGE(0x0e0000, 0x0e0fff) AM_READ(atarigen_eeprom_r)
80   AM_RANGE(0x260000, 0x260001) AM_READ_PORT("P1")
81   AM_RANGE(0x260002, 0x260003) AM_READ_PORT("P2")
82   AM_RANGE(0x270000, 0x270001) AM_DEVREAD8("oki", okim6295_r, 0x00ff)
83   AM_RANGE(0x3e0000, 0x3e07ff) AM_READ(SMH_RAM)
84   AM_RANGE(0x3f0000, 0x3f3fff) AM_READ(SMH_RAM)
85ADDRESS_MAP_END
86
87
88static ADDRESS_MAP_START( main_writemem, ADDRESS_SPACE_PROGRAM, 16 )
89   AM_RANGE(0x000000, 0x03ffff) AM_WRITE(SMH_ROM)
90   AM_RANGE(0x0e0000, 0x0e0fff) AM_WRITE(atarigen_eeprom_w) AM_BASE(&atarigen_eeprom) AM_SIZE(&atarigen_eeprom_size)
77static ADDRESS_MAP_START( klax_map, ADDRESS_SPACE_PROGRAM, 16 )
78   AM_RANGE(0x000000, 0x03ffff) AM_ROM
79   AM_RANGE(0x0e0000, 0x0e0fff) AM_READWRITE(atarigen_eeprom_r,atarigen_eeprom_w) AM_BASE(&atarigen_eeprom) AM_SIZE(&atarigen_eeprom_size)
9180   AM_RANGE(0x1f0000, 0x1fffff) AM_WRITE(atarigen_eeprom_enable_w)
92   AM_RANGE(0x260000, 0x260001) AM_WRITE(klax_latch_w)
93   AM_RANGE(0x270000, 0x270001) AM_DEVWRITE8("oki", okim6295_w, 0x00ff)
81   AM_RANGE(0x260000, 0x260001) AM_READ_PORT("P1") AM_WRITE(klax_latch_w)
82   AM_RANGE(0x260002, 0x260003) AM_READ_PORT("P2")
83   AM_RANGE(0x270000, 0x270001) AM_DEVREADWRITE8("oki", okim6295_r,okim6295_w, 0x00ff)
9484   AM_RANGE(0x2e0000, 0x2e0001) AM_WRITE(watchdog_reset16_w)
9585   AM_RANGE(0x360000, 0x360001) AM_WRITE(interrupt_ack_w)
96   AM_RANGE(0x3e0000, 0x3e07ff) AM_WRITE(atarigen_expanded_666_paletteram_w) AM_BASE(&paletteram16)
97   AM_RANGE(0x3f0000, 0x3f0f7f) AM_WRITE(atarigen_playfield_w) AM_BASE(&atarigen_playfield)
98   AM_RANGE(0x3f0f80, 0x3f0fff) AM_WRITE(atarimo_0_slipram_w) AM_BASE(&atarimo_0_slipram)
99   AM_RANGE(0x3f1000, 0x3f1fff) AM_WRITE(atarigen_playfield_upper_w) AM_BASE(&atarigen_playfield_upper)
100   AM_RANGE(0x3f2000, 0x3f27ff) AM_WRITE(atarimo_0_spriteram_w) AM_BASE(&atarimo_0_spriteram)
101   AM_RANGE(0x3f2800, 0x3f3fff) AM_WRITE(SMH_RAM)
86   AM_RANGE(0x3e0000, 0x3e07ff) AM_RAM_WRITE(atarigen_expanded_666_paletteram_w) AM_BASE(&paletteram16)
87   AM_RANGE(0x3f0000, 0x3f0f7f) AM_RAM_WRITE(atarigen_playfield_w) AM_BASE(&atarigen_playfield)
88   AM_RANGE(0x3f0f80, 0x3f0fff) AM_RAM_WRITE(atarimo_0_slipram_w) AM_BASE(&atarimo_0_slipram)
89   AM_RANGE(0x3f1000, 0x3f1fff) AM_RAM_WRITE(atarigen_playfield_upper_w) AM_BASE(&atarigen_playfield_upper)
90   AM_RANGE(0x3f2000, 0x3f27ff) AM_RAM_WRITE(atarimo_0_spriteram_w) AM_BASE(&atarimo_0_spriteram)
91   AM_RANGE(0x3f2800, 0x3f3fff) AM_RAM
10292ADDRESS_MAP_END
10393
10494
105
10695/*************************************
10796 *
10897 *  Port definitions
r4679r4680
170159
171160   /* basic machine hardware */
172161   MDRV_CPU_ADD("maincpu", M68000, ATARI_CLOCK_14MHz/2)
173   MDRV_CPU_PROGRAM_MAP(main_readmem,main_writemem)
162   MDRV_CPU_PROGRAM_MAP(klax_map,0)
174163   MDRV_CPU_VBLANK_INT("screen", atarigen_video_int_gen)
175164
176165   MDRV_MACHINE_RESET(klax)
src/mame/drivers/quizpani.c
r4679r4680
4747extern VIDEO_START( quizpani );
4848extern VIDEO_UPDATE( quizpani );
4949
50static ADDRESS_MAP_START( quizpani_readmem, ADDRESS_SPACE_PROGRAM, 16 )
51   AM_RANGE(0x000000, 0x07ffff) AM_READ(SMH_ROM)
50static ADDRESS_MAP_START( quizpani_map, ADDRESS_SPACE_PROGRAM, 16 )
51   AM_RANGE(0x000000, 0x07ffff) AM_ROM
5252   AM_RANGE(0x100000, 0x100001) AM_READ_PORT("SYSTEM")
5353   AM_RANGE(0x100002, 0x100003) AM_READ_PORT("P1_P2")
5454   AM_RANGE(0x100008, 0x100009) AM_READ_PORT("DSW1")
5555   AM_RANGE(0x10000a, 0x10000b) AM_READ_PORT("DSW2")
56   AM_RANGE(0x104000, 0x104001) AM_DEVREAD8("oki", okim6295_r, 0x00ff)
57   AM_RANGE(0x108000, 0x1083ff) AM_READ(SMH_RAM)
58   AM_RANGE(0x110000, 0x113fff) AM_READ(SMH_RAM)
59   AM_RANGE(0x180000, 0x18ffff) AM_READ(SMH_RAM)
60   AM_RANGE(0x200000, 0x33ffff) AM_READ(SMH_ROM)
61ADDRESS_MAP_END
62
63static ADDRESS_MAP_START( quizpani_writemem, ADDRESS_SPACE_PROGRAM, 16 )
64   AM_RANGE(0x000000, 0x07ffff) AM_WRITE(SMH_ROM)
6556   AM_RANGE(0x100014, 0x100015) AM_WRITENOP
66   AM_RANGE(0x100016, 0x100017) AM_WRITENOP /* IRQ eanble? */
57   AM_RANGE(0x100016, 0x100017) AM_WRITENOP /* IRQ enable? */
6758   AM_RANGE(0x100018, 0x100019) AM_WRITE(quizpani_tilesbank_w)
68   AM_RANGE(0x104000, 0x104001) AM_DEVWRITE8("oki", okim6295_w, 0x00ff)
59   AM_RANGE(0x104000, 0x104001) AM_DEVREADWRITE8("oki", okim6295_r,okim6295_w, 0x00ff)
6960   AM_RANGE(0x104020, 0x104027) AM_WRITE(NMK112_okibank_lsb_w)
70   AM_RANGE(0x108000, 0x1083ff) AM_WRITE(paletteram16_RRRRGGGGBBBBRGBx_word_w) AM_BASE(&paletteram16)
61   AM_RANGE(0x108000, 0x1083ff) AM_RAM_WRITE(paletteram16_RRRRGGGGBBBBRGBx_word_w) AM_BASE(&paletteram16)
7162   AM_RANGE(0x108400, 0x1085ff) AM_WRITENOP
72   AM_RANGE(0x10c000, 0x10c007) AM_WRITE(SMH_RAM) AM_BASE(&quizpani_scrollreg)
63   AM_RANGE(0x10c000, 0x10c007) AM_RAM AM_BASE(&quizpani_scrollreg)
7364   AM_RANGE(0x10c008, 0x10c403) AM_WRITENOP
74   AM_RANGE(0x110000, 0x113fff) AM_WRITE(quizpani_bg_videoram_w) AM_BASE(&quizpani_bg_videoram)
75   AM_RANGE(0x11c000, 0x11ffff) AM_WRITE(quizpani_txt_videoram_w) AM_BASE(&quizpani_txt_videoram)
76   AM_RANGE(0x180000, 0x18ffff) AM_WRITE(SMH_RAM)
77   AM_RANGE(0x200000, 0x33ffff) AM_WRITE(SMH_ROM)
65   AM_RANGE(0x110000, 0x113fff) AM_RAM_WRITE(quizpani_bg_videoram_w) AM_BASE(&quizpani_bg_videoram)
66   AM_RANGE(0x11c000, 0x11ffff) AM_RAM_WRITE(quizpani_txt_videoram_w) AM_BASE(&quizpani_txt_videoram)
67   AM_RANGE(0x180000, 0x18ffff) AM_RAM
68   AM_RANGE(0x200000, 0x33ffff) AM_ROM
7869ADDRESS_MAP_END
7970
71
8072static INPUT_PORTS_START( quizpani )
8173   PORT_START("SYSTEM")
8274   PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 )
r4679r4680
249241
250242static MACHINE_DRIVER_START( quizpani )
251243   MDRV_CPU_ADD("maincpu", M68000, 10000000)
252   MDRV_CPU_PROGRAM_MAP(quizpani_readmem,quizpani_writemem)
244   MDRV_CPU_PROGRAM_MAP(quizpani_map,0)
253245   MDRV_CPU_VBLANK_INT("screen", irq4_line_hold)
254246   MDRV_CPU_PERIODIC_INT(irq1_line_hold,164) // music tempo
255247
src/mame/drivers/halleys.c
r4679r4680
10041004      if (i==0 || (i==4 && !data))
10051005      {
10061006         blitter_busy = 0;
1007         if (firq_level) cpu_set_input_line(space->machine->cpu[0], M6809_FIRQ_LINE, ASSERT_LINE); // make up delayed FIRQ's
1007         if (firq_level) cputag_set_input_line(space->machine, "maincpu", M6809_FIRQ_LINE, ASSERT_LINE); // make up delayed FIRQ's
10081008      }
10091009      else
10101010      {
r4679r4680
15051505            fftail = (fftail + 1) & (MAX_SOUNDS - 1);
15061506            latch_delay = (latch_data) ? 0 : 4;
15071507            soundlatch_w( cpu_get_address_space(device, ADDRESS_SPACE_PROGRAM), 0, latch_data);
1508            cpu_set_input_line(device->machine->cpu[1], INPUT_LINE_NMI, PULSE_LINE);
1508            cputag_set_input_line(device->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
15091509         }
15101510
15111511         // clear collision list of this frame unconditionally
r4679r4680
15451545            fftail = (fftail + 1) & (MAX_SOUNDS - 1);
15461546            latch_delay = (latch_data) ? 0 : 4;
15471547            soundlatch_w(cpu_get_address_space(device, ADDRESS_SPACE_PROGRAM), 0, latch_data);
1548            cpu_set_input_line(device->machine->cpu[1], INPUT_LINE_NMI, PULSE_LINE);
1548            cputag_set_input_line(device->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
15491549         }
15501550      break;
15511551
r4679r4680
15731573   io_ram[0x9c] = data;
15741574
15751575   if (firq_level) firq_level--;
1576   cpu_set_input_line(space->machine->cpu[0], M6809_FIRQ_LINE, CLEAR_LINE);
1576   cputag_set_input_line(space->machine, "maincpu", M6809_FIRQ_LINE, CLEAR_LINE);
15771577}
15781578
15791579
r4679r4680
16221622//**************************************************************************
16231623// Memory Maps
16241624
1625static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 )
1626   AM_RANGE(0x0000, 0x0fff) AM_READ(blitter_r)
1627   AM_RANGE(0x1000, 0xefff) AM_READ(SMH_ROM)
1628   AM_RANGE(0xf000, 0xfeff) AM_READ(SMH_RAM)        // work ram
1625static ADDRESS_MAP_START( halleys_map, ADDRESS_SPACE_PROGRAM, 8 )
1626   AM_RANGE(0x0000, 0x0fff) AM_READWRITE(blitter_r, blitter_w) AM_BASE(&blitter_ram) AM_SIZE(&blitter_ramsize)
1627   AM_RANGE(0x1f00, 0x1fff) AM_WRITE(bgtile_w)      // background tiles?(Ben Bero Beh only)
1628   AM_RANGE(0x1000, 0xefff) AM_ROM
1629   AM_RANGE(0xf000, 0xfeff) AM_RAM               // work ram
16291630
16301631   AM_RANGE(0xff66, 0xff66) AM_READ(collision_id_r) // HACK: collision detection bypass(Halley's Comet only)
16311632   AM_RANGE(0xff71, 0xff71) AM_READ(blitter_status_r)
16321633   AM_RANGE(0xff80, 0xff83) AM_READ(io_mirror_r)
1634   AM_RANGE(0xff8a, 0xff8a) AM_WRITE(soundcommand_w)
16331635   AM_RANGE(0xff90, 0xff90) AM_READ_PORT("IN0")   // coin/start
16341636   AM_RANGE(0xff91, 0xff91) AM_READ_PORT("IN1")   // player 1
16351637   AM_RANGE(0xff92, 0xff92) AM_READ_PORT("IN2")   // player 2
r4679r4680
16381640   AM_RANGE(0xff95, 0xff95) AM_READ_PORT("DSW1")   // dipswitch 4
16391641   AM_RANGE(0xff96, 0xff96) AM_READ_PORT("DSW2")   // dipswitch 3
16401642   AM_RANGE(0xff97, 0xff97) AM_READ_PORT("DSW3")   // dipswitch 2
1641   AM_RANGE(0xff00, 0xffbf) AM_READ(SMH_RAM)      // I/O read fall-through
1643   AM_RANGE(0xff9c, 0xff9c) AM_WRITE(firq_ack_w)
1644   AM_RANGE(0xff00, 0xffbf) AM_RAM AM_BASE(&io_ram) AM_SIZE(&io_ramsize)   // I/O write fall-through
16421645
1643   AM_RANGE(0xffc0, 0xffdf) AM_READ(SMH_RAM)      // palette read
1646   AM_RANGE(0xffc0, 0xffdf) AM_RAM_WRITE(halleys_paletteram_IIRRGGBB_w) AM_BASE(&paletteram)
16441647   AM_RANGE(0xffe0, 0xffff) AM_READ(vector_r)
16451648ADDRESS_MAP_END
16461649
16471650
1648static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 )
1649   AM_RANGE(0x0000, 0x0fff) AM_WRITE(blitter_w) AM_BASE(&blitter_ram) AM_SIZE(&blitter_ramsize)
1650   AM_RANGE(0x1f00, 0x1fff) AM_WRITE(bgtile_w)      // background tiles?(Ben Bero Beh only)
1651   AM_RANGE(0x1000, 0xefff) AM_WRITE(SMH_ROM)
1652   AM_RANGE(0xf000, 0xfeff) AM_WRITE(SMH_RAM)      // work ram
1653
1654   AM_RANGE(0xff8a, 0xff8a) AM_WRITE(soundcommand_w)
1655   AM_RANGE(0xff9c, 0xff9c) AM_WRITE(firq_ack_w)
1656   AM_RANGE(0xff00, 0xffbf) AM_WRITE(SMH_RAM) AM_BASE(&io_ram) AM_SIZE(&io_ramsize)   // I/O write fall-through
1657
1658   AM_RANGE(0xffc0, 0xffdf) AM_WRITE(halleys_paletteram_IIRRGGBB_w) AM_BASE(&paletteram)
1659   AM_RANGE(0xffe0, 0xffff) AM_WRITE(SMH_ROM)
1660ADDRESS_MAP_END
1661
1662
1663static ADDRESS_MAP_START( sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
1664   AM_RANGE(0x0000, 0x3fff) AM_READ(SMH_ROM)
1665   AM_RANGE(0x4000, 0x47ff) AM_READ(SMH_RAM)
1666   AM_RANGE(0x4801, 0x4801) AM_DEVREAD("ay2", ay8910_r)
1667   AM_RANGE(0x4803, 0x4803) AM_DEVREAD("ay3", ay8910_r)
1668   AM_RANGE(0x4805, 0x4805) AM_DEVREAD("ay4", ay8910_r)
1651static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 )
1652   AM_RANGE(0x0000, 0x3fff) AM_ROM
1653   AM_RANGE(0x4000, 0x47ff) AM_RAM
1654   AM_RANGE(0x4801, 0x4801) AM_DEVREADWRITE("ay2", ay8910_r, ay8910_address_data_w)
1655   AM_RANGE(0x4803, 0x4803) AM_DEVREADWRITE("ay3", ay8910_r, ay8910_address_data_w)
1656   AM_RANGE(0x4805, 0x4805) AM_DEVREADWRITE("ay4", ay8910_r, ay8910_address_data_w)
16691657   AM_RANGE(0x5000, 0x5000) AM_READ(soundlatch_r)
1670   AM_RANGE(0xe000, 0xefff) AM_READ(SMH_ROM)      // space for diagnostic ROM
1658   AM_RANGE(0xe000, 0xefff) AM_ROM // space for diagnostic ROM
16711659ADDRESS_MAP_END
16721660
16731661
1674static ADDRESS_MAP_START( sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
1675   AM_RANGE(0x0000, 0x3fff) AM_WRITE(SMH_ROM)
1676   AM_RANGE(0x4000, 0x47ff) AM_WRITE(SMH_RAM)
1677   AM_RANGE(0x4800, 0x4801) AM_DEVWRITE("ay2", ay8910_address_data_w)
1678   AM_RANGE(0x4802, 0x4803) AM_DEVWRITE("ay3", ay8910_address_data_w)
1679   AM_RANGE(0x4804, 0x4805) AM_DEVWRITE("ay4", ay8910_address_data_w)
1680   AM_RANGE(0xe000, 0xefff) AM_WRITE(SMH_ROM)
1681ADDRESS_MAP_END
1682
1683
16841662//**************************************************************************
16851663// Port Maps
16861664
r4679r4680
19461924
19471925static MACHINE_DRIVER_START( halleys )
19481926   MDRV_CPU_ADD("maincpu", M6809, XTAL_19_968MHz/12) /* verified on pcb */
1949   MDRV_CPU_PROGRAM_MAP(readmem, writemem)
1927   MDRV_CPU_PROGRAM_MAP(halleys_map,0)
19501928   MDRV_CPU_VBLANK_INT_HACK(halleys_interrupt, 4)
19511929
19521930   MDRV_CPU_ADD("audiocpu", Z80, XTAL_6MHz/2) /* verified on pcb */
1953   MDRV_CPU_PROGRAM_MAP(sound_readmem, sound_writemem)
1931   MDRV_CPU_PROGRAM_MAP(sound_map,0)
19541932   MDRV_CPU_PERIODIC_INT(irq0_line_hold, (double)6000000/(4*16*16*10*16))
19551933
19561934   MDRV_MACHINE_RESET(halleys)
r4679r4680
21482126
21492127
21502128   // allocate memory for unpacked graphics
2151   buf = auto_malloc(0x100000);
2129   buf = auto_alloc_array(machine, UINT8, 0x100000);
21522130   gfx_plane02 = buf;
21532131   gfx_plane13 = buf + 0x80000;
21542132
21552133
21562134   // allocate memory for render layers
2157   buf = auto_malloc(SCREEN_BYTESIZE * MAX_LAYERS);
2135   buf = auto_alloc_array(machine, UINT8, SCREEN_BYTESIZE * MAX_LAYERS);
21582136   for (i=0; i<MAX_LAYERS; buf+=SCREEN_BYTESIZE, i++) render_layer[i] = (UINT16*)buf;
21592137
21602138
21612139   // allocate memory for pre-processed ROMs
2162   gfx1_base = auto_malloc(0x20000);
2140   gfx1_base = auto_alloc_array(machine, UINT8, 0x20000);
21632141
21642142
21652143   // allocate memory for alpha table
2166   alpha_table = auto_malloc(sizeof(UINT32) * 0x10000);
2144   alpha_table = auto_alloc_array(machine, UINT32, 0x10000);
21672145
21682146
21692147   // allocate memory for internal palette
2170   internal_palette = auto_malloc(sizeof(UINT32) * PALETTE_SIZE);
2148   internal_palette = auto_alloc_array(machine, UINT32, PALETTE_SIZE);
21712149
21722150
21732151   // allocate memory for hardware collision list
2174   collision_list = auto_malloc(MAX_SPRITES);
2152   collision_list = auto_alloc_array(machine, UINT8, MAX_SPRITES);
21752153
21762154
21772155   // decrypt main program ROM
src/mame/drivers/gomoku.c
r4679r4680
3838}
3939
4040
41static ADDRESS_MAP_START( readmem_gomoku, ADDRESS_SPACE_PROGRAM, 8 )
42   AM_RANGE(0x0000, 0x47ff) AM_READ(SMH_ROM)
43   AM_RANGE(0x4800, 0x4fff) AM_READ(SMH_RAM)
44   AM_RANGE(0x5000, 0x53ff) AM_READ(SMH_RAM)
45   AM_RANGE(0x5400, 0x57ff) AM_READ(SMH_RAM)
46   AM_RANGE(0x5800, 0x58ff) AM_READ(SMH_RAM)
47   AM_RANGE(0x7800, 0x7807) AM_READ(input_port_r)
48ADDRESS_MAP_END
49
50static ADDRESS_MAP_START( writemem_gomoku, ADDRESS_SPACE_PROGRAM, 8 )
51   AM_RANGE(0x0000, 0x47ff) AM_WRITE(SMH_ROM)
52   AM_RANGE(0x4800, 0x4fff) AM_WRITE(SMH_RAM)
53   AM_RANGE(0x5000, 0x53ff) AM_WRITE(gomoku_videoram_w) AM_BASE(&gomoku_videoram)
54   AM_RANGE(0x5400, 0x57ff) AM_WRITE(gomoku_colorram_w) AM_BASE(&gomoku_colorram)
55   AM_RANGE(0x5800, 0x58ff) AM_WRITE(gomoku_bgram_w) AM_BASE(&gomoku_bgram)
41static ADDRESS_MAP_START( gomoku_map, ADDRESS_SPACE_PROGRAM, 8 )
42   AM_RANGE(0x0000, 0x47ff) AM_ROM
43   AM_RANGE(0x4800, 0x4fff) AM_RAM
44   AM_RANGE(0x5000, 0x53ff) AM_RAM_WRITE(gomoku_videoram_w) AM_BASE(&gomoku_videoram)
45   AM_RANGE(0x5400, 0x57ff) AM_RAM_WRITE(gomoku_colorram_w) AM_BASE(&gomoku_colorram)
46   AM_RANGE(0x5800, 0x58ff) AM_RAM_WRITE(gomoku_bgram_w) AM_BASE(&gomoku_bgram)
5647   AM_RANGE(0x6000, 0x601f) AM_WRITE(gomoku_sound1_w) AM_BASE(&gomoku_soundregs1)
5748   AM_RANGE(0x6800, 0x681f) AM_WRITE(gomoku_sound2_w) AM_BASE(&gomoku_soundregs2)
5849   AM_RANGE(0x7000, 0x7000) AM_WRITENOP
5950   AM_RANGE(0x7001, 0x7001) AM_WRITE(gomoku_flipscreen_w)
6051   AM_RANGE(0x7002, 0x7002) AM_WRITE(gomoku_bg_dispsw_w)
6152   AM_RANGE(0x7003, 0x7007) AM_WRITENOP
53   AM_RANGE(0x7800, 0x7807) AM_READ(input_port_r)
6254   AM_RANGE(0x7800, 0x7800) AM_WRITENOP
6355ADDRESS_MAP_END
6456
r4679r4680
128120static MACHINE_DRIVER_START( gomoku )
129121   /* basic machine hardware */
130122   MDRV_CPU_ADD("maincpu", Z80, 18432000/12)       /* 1.536 MHz ? */
131   MDRV_CPU_PROGRAM_MAP(readmem_gomoku, writemem_gomoku)
123   MDRV_CPU_PROGRAM_MAP(gomoku_map,0)
132124   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
133125
134126   /* video hardware */
src/mame/drivers/djmain.c
r4679r4680
238238      if (pending_vb_int && !DISABLE_VB_INT)
239239      {
240240         pending_vb_int = 0;
241         cpu_set_input_line(space->machine->cpu[0], M68K_IRQ_4, HOLD_LINE);
241         cputag_set_input_line(space->machine, "maincpu", M68K_IRQ_4, HOLD_LINE);
242242      }
243243   }
244244}
r4679r4680
450450   if (state != CLEAR_LINE)
451451   {
452452      //logerror("IDE interrupt asserted\n");
453      cpu_set_input_line(device->machine->cpu[0], M68K_IRQ_1, HOLD_LINE);
453      cputag_set_input_line(device->machine, "maincpu", M68K_IRQ_1, HOLD_LINE);
454454   }
455455   else
456456   {
457457      //logerror("IDE interrupt cleared\n");
458      cpu_set_input_line(device->machine->cpu[0], M68K_IRQ_1, CLEAR_LINE);
458      cputag_set_input_line(device->machine, "maincpu", M68K_IRQ_1, CLEAR_LINE);
459459   }
460460}
461461
src/mame/drivers/ssfindo.c
r4679r4680
259259   PS7500_IO[IRQSTA]|=0x20;
260260   if(PS7500_IO[IRQMSKA]&0x20)
261261   {
262      generic_pulse_irq_line(machine->cpu[0], ARM7_IRQ_LINE);
262      generic_pulse_irq_line(cputag_get_cpu(machine, "maincpu"), ARM7_IRQ_LINE);
263263   }
264264}
265265
r4679r4680
278278   PS7500_IO[IRQSTA]|=0x40;
279279   if(PS7500_IO[IRQMSKA]&0x40)
280280   {
281      generic_pulse_irq_line(machine->cpu[0], ARM7_IRQ_LINE);
281      generic_pulse_irq_line(cputag_get_cpu(machine, "maincpu"), ARM7_IRQ_LINE);
282282   }
283283}
284284
src/mame/drivers/firetrk.c
r4679r4680
2727   watchdog_enable(machine, !enable);
2828
2929   /* change CPU clock speed according to service switch change */
30   cpu_set_clock(machine->cpu[0], enable ? (MASTER_CLOCK/12) : (MASTER_CLOCK/16));
30   cputag_set_clock(machine, "maincpu", enable ? (MASTER_CLOCK/12) : (MASTER_CLOCK/16));
3131}
3232
3333
r4679r4680
6666{
6767   int scanline = param;
6868
69   generic_pulse_irq_line(machine->cpu[0], 0);
69   generic_pulse_irq_line(cputag_get_cpu(machine, "maincpu"), 0);
7070
7171   /* IRQs are generated by inverse 16V signal */
7272   scanline += 32;
src/mame/drivers/peplus.c
r4679r4680
659659static VIDEO_START( peplus )
660660{
661661   bg_tilemap = tilemap_create(machine, get_bg_tile_info, tilemap_scan_rows, 8, 8, 40, 25);
662   palette_ram = auto_malloc(0x3000);
662   palette_ram = auto_alloc_array(machine, UINT8, 0x3000);
663663   memset(palette_ram, 0, 0x3000);
664   palette_ram2 = auto_malloc(0x3000);
664   palette_ram2 = auto_alloc_array(machine, UINT8, 0x3000);
665665   memset(palette_ram2, 0, 0x3000);
666666}
667667
r4679r4680
791791static CUSTOM_INPUT( peplus_input_r )
792792{
793793   UINT8 inp_ret = 0x00;
794   UINT8 inp_read = input_port_read(field->port->machine, param);
794   UINT8 inp_read = input_port_read(field->port->machine, (const char *)param);
795795
796796   if (inp_read & 0x01) inp_ret = 0x01;
797797   if (inp_read & 0x02) inp_ret = 0x02;
src/mame/drivers/segas24.c
r4679r4680
689689   int changed = resetcontrol ^ prev_resetcontrol;
690690   if(changed & 2) {
691691      if(resetcontrol & 2) {
692         cpu_set_input_line(machine->cpu[1], INPUT_LINE_HALT, CLEAR_LINE);
693         cpu_set_input_line(machine->cpu[1], INPUT_LINE_RESET, PULSE_LINE);
692         cputag_set_input_line(machine, "sub", INPUT_LINE_HALT, CLEAR_LINE);
693         cputag_set_input_line(machine, "sub", INPUT_LINE_RESET, PULSE_LINE);
694694//          mame_printf_debug("enable 2nd cpu!\n");
695695//          debugger_break(machine);
696696         s24_fd1094_machine_init(machine);
697697
698698      } else
699         cpu_set_input_line(machine->cpu[1], INPUT_LINE_HALT, ASSERT_LINE);
699         cputag_set_input_line(machine, "sub", INPUT_LINE_HALT, ASSERT_LINE);
700700   }
701701   if(changed & 4)
702702      devtag_reset(machine, "ym");
r4679r4680
802802{
803803   irq_timer_pend0 = irq_timer_pend1 = 1;
804804   if(irq_allow0 & (1 << IRQ_TIMER))
805      cpu_set_input_line(machine->cpu[0], IRQ_TIMER+1, ASSERT_LINE);
805      cputag_set_input_line(machine, "maincpu", IRQ_TIMER+1, ASSERT_LINE);
806806   if(irq_allow1 & (1 << IRQ_TIMER))
807      cpu_set_input_line(machine->cpu[1], IRQ_TIMER+1, ASSERT_LINE);
807      cputag_set_input_line(machine, "sub", IRQ_TIMER+1, ASSERT_LINE);
808808}
809809
810810static TIMER_CALLBACK( irq_timer_clear_cb )
811811{
812812   irq_sprite = irq_vblank = 0;
813   cpu_set_input_line(machine->cpu[0], IRQ_VBLANK+1, CLEAR_LINE);
814   cpu_set_input_line(machine->cpu[0], IRQ_SPRITE+1, CLEAR_LINE);
815   cpu_set_input_line(machine->cpu[1], IRQ_VBLANK+1, CLEAR_LINE);
816   cpu_set_input_line(machine->cpu[1], IRQ_SPRITE+1, CLEAR_LINE);
813   cputag_set_input_line(machine, "maincpu", IRQ_VBLANK+1, CLEAR_LINE);
814   cputag_set_input_line(machine, "maincpu", IRQ_SPRITE+1, CLEAR_LINE);
815   cputag_set_input_line(machine, "sub", IRQ_VBLANK+1, CLEAR_LINE);
816   cputag_set_input_line(machine, "sub", IRQ_SPRITE+1, CLEAR_LINE);
817817}
818818
819819static void irq_init(running_machine *machine)
r4679r4680
860860   case 2:
861861      irq_allow0 = data;
862862      irq_timer_pend0 = 0;
863      cpu_set_input_line(space->machine->cpu[0], IRQ_TIMER+1, CLEAR_LINE);
864      cpu_set_input_line(space->machine->cpu[0], IRQ_YM2151+1, irq_yms && (irq_allow0 & (1 << IRQ_YM2151)) ? ASSERT_LINE : CLEAR_LINE);
865      cpu_set_input_line(space->machine->cpu[0], IRQ_VBLANK+1, irq_vblank && (irq_allow0 & (1 << IRQ_VBLANK)) ? ASSERT_LINE : CLEAR_LINE);
866      cpu_set_input_line(space->machine->cpu[0], IRQ_SPRITE+1, irq_sprite && (irq_allow0 & (1 << IRQ_SPRITE)) ? ASSERT_LINE : CLEAR_LINE);
863      cputag_set_input_line(space->machine, "maincpu", IRQ_TIMER+1, CLEAR_LINE);
864      cputag_set_input_line(space->machine, "maincpu", IRQ_YM2151+1, irq_yms && (irq_allow0 & (1 << IRQ_YM2151)) ? ASSERT_LINE : CLEAR_LINE);
865      cputag_set_input_line(space->machine, "maincpu", IRQ_VBLANK+1, irq_vblank && (irq_allow0 & (1 << IRQ_VBLANK)) ? ASSERT_LINE : CLEAR_LINE);
866      cputag_set_input_line(space->machine, "maincpu", IRQ_SPRITE+1, irq_sprite && (irq_allow0 & (1 << IRQ_SPRITE)) ? ASSERT_LINE : CLEAR_LINE);
867867      break;
868868   case 3:
869869      irq_allow1 = data;
870870      irq_timer_pend1 = 0;
871      cpu_set_input_line(space->machine->cpu[1], IRQ_TIMER+1, CLEAR_LINE);
872      cpu_set_input_line(space->machine->cpu[1], IRQ_YM2151+1, irq_yms && (irq_allow1 & (1 << IRQ_YM2151)) ? ASSERT_LINE : CLEAR_LINE);
873      cpu_set_input_line(space->machine->cpu[1], IRQ_VBLANK+1, irq_vblank && (irq_allow1 & (1 << IRQ_VBLANK)) ? ASSERT_LINE : CLEAR_LINE);
874      cpu_set_input_line(space->machine->cpu[1], IRQ_SPRITE+1, irq_sprite && (irq_allow1 & (1 << IRQ_SPRITE)) ? ASSERT_LINE : CLEAR_LINE);
871      cputag_set_input_line(space->machine, "sub", IRQ_TIMER+1, CLEAR_LINE);
872      cputag_set_input_line(space->machine, "sub", IRQ_YM2151+1, irq_yms && (irq_allow1 & (1 << IRQ_YM2151)) ? ASSERT_LINE : CLEAR_LINE);
873      cputag_set_input_line(space->machine, "sub", IRQ_VBLANK+1, irq_vblank && (irq_allow1 & (1 << IRQ_VBLANK)) ? ASSERT_LINE : CLEAR_LINE);
874      cputag_set_input_line(space->machine, "sub", IRQ_SPRITE+1, irq_sprite && (irq_allow1 & (1 << IRQ_SPRITE)) ? ASSERT_LINE : CLEAR_LINE);
875875      break;
876876   }
877877}
r4679r4680
900900   }
901901   case 2:
902902      irq_timer_pend0 = 0;
903      cpu_set_input_line(space->machine->cpu[0], IRQ_TIMER+1, CLEAR_LINE);
903      cputag_set_input_line(space->machine, "maincpu", IRQ_TIMER+1, CLEAR_LINE);
904904      break;
905905   case 3:
906906      irq_timer_pend1 = 0;
907      cpu_set_input_line(space->machine->cpu[1], IRQ_TIMER+1, CLEAR_LINE);
907      cputag_set_input_line(space->machine, "sub", IRQ_TIMER+1, CLEAR_LINE);
908908      break;
909909   }
910910   return 0xffff;
r4679r4680
927927   mask = 1 << irq;
928928
929929   if(irq_allow0 & mask)
930      cpu_set_input_line(device->machine->cpu[0], 1+irq, ASSERT_LINE);
930      cputag_set_input_line(device->machine, "maincpu", 1+irq, ASSERT_LINE);
931931
932932   if(irq_allow1 & mask)
933      cpu_set_input_line(device->machine->cpu[1], 1+irq, ASSERT_LINE);
933      cputag_set_input_line(device->machine, "sub", 1+irq, ASSERT_LINE);
934934
935935   if(!cpu_getiloops(device)) {
936936      // Ensure one index pulse every 20 frames
r4679r4680
945945static void irq_ym(const device_config *device, int irq)
946946{
947947   irq_yms = irq;
948   cpu_set_input_line(device->machine->cpu[0], IRQ_YM2151+1, irq_yms && (irq_allow0 & (1 << IRQ_YM2151)) ? ASSERT_LINE : CLEAR_LINE);
949   cpu_set_input_line(device->machine->cpu[1], IRQ_YM2151+1, irq_yms && (irq_allow1 & (1 << IRQ_YM2151)) ? ASSERT_LINE : CLEAR_LINE);
948   cputag_set_input_line(device->machine, "maincpu", IRQ_YM2151+1, irq_yms && (irq_allow0 & (1 << IRQ_YM2151)) ? ASSERT_LINE : CLEAR_LINE);
949   cputag_set_input_line(device->machine, "sub", IRQ_YM2151+1, irq_yms && (irq_allow1 & (1 << IRQ_YM2151)) ? ASSERT_LINE : CLEAR_LINE);
950950}
951951
952952
r4679r4680
10951095
10961096static MACHINE_RESET( system24 )
10971097{
1098   cpu_set_input_line(machine->cpu[1], INPUT_LINE_HALT, ASSERT_LINE);
1098   cputag_set_input_line(machine, "sub", INPUT_LINE_HALT, ASSERT_LINE);
10991099   prev_resetcontrol = resetcontrol = 0x06;
11001100   fdc_init();
11011101   curbank = 0;
src/mame/drivers/mustache.c
r4679r4680
176176
177177static TIMER_CALLBACK( clear_irq_cb )
178178{
179   cpu_set_input_line(machine->cpu[0], 0, CLEAR_LINE);
179   cputag_set_input_line(machine, "maincpu", 0, CLEAR_LINE);
180180}
181181
182182static INTERRUPT_GEN( assert_irq )
r4679r4680
265265   int G2 = memory_region_length(machine, "gfx2")/2;
266266   UINT8 *gfx1 = memory_region(machine, "gfx1");
267267   UINT8 *gfx2 = memory_region(machine, "gfx2");
268   UINT8 *buf=malloc_or_die(G2*2);
268   UINT8 *buf=alloc_array_or_die(UINT8, G2*2);
269269
270270   /* BG data lines */
271271   for (i=0;i<G1; i++)
src/mame/drivers/namcoic.c
r4679r4680
5757{
5858   int i;
5959   mTilemapInfo.gfxbank = gfxbank;
60   mTilemapInfo.maskBaseAddr = maskBaseAddr;
60   mTilemapInfo.maskBaseAddr = (UINT8 *)maskBaseAddr;
6161   mTilemapInfo.cb = cb;
62   mTilemapInfo.videoram = auto_malloc( 0x10000*2 );
62   mTilemapInfo.videoram = auto_alloc_array(machine, UINT16,  0x10000 );
6363
6464      /* four scrolling tilemaps */
6565      mTilemapInfo.tmap[0] = tilemap_create(machine, get_tile_info0,tilemap_scan_rows,8,8,64,64);
r4679r4680
910910}
911911
912912void
913namco_obj_init( int gfxbank, int palXOR, int (*codeToTile)( int code ) )
913namco_obj_init( running_machine *machine, int gfxbank, int palXOR, int (*codeToTile)( int code ) )
914914{
915915   mGfxC355 = gfxbank;
916916   mPalXOR = palXOR;
r4679r4680
922922   {
923923      mpCodeToTile = DefaultCodeToTile;
924924   }
925   spriteram16 = auto_malloc(0x20000);
925   spriteram16 = auto_alloc_array(machine, UINT16, 0x20000/2);
926926   memset( spriteram16, 0, 0x20000 ); /* needed for Nebulas Ray */
927927   memset( mSpritePos,0x00,sizeof(mSpritePos) );
928928} /* namcosC355_init */
r4679r4680
11301130   mRozGfxBank = gfxbank;
11311131   mRozMaskRegion = maskregion;
11321132
1133   rozbank16 = auto_malloc(0x10);
1134   rozvideoram16 = auto_malloc(0x20000);
1135   rozcontrol16 = auto_malloc(0x20);
1133   rozbank16 = auto_alloc_array(machine, UINT16, 0x10/2);
1134   rozvideoram16 = auto_alloc_array(machine, UINT16, 0x20000/2);
1135   rozcontrol16 = auto_alloc_array(machine, UINT16, 0x20/2);
11361136
11371137      for( i=0; i<ROZ_TILEMAP_COUNT; i++ )
11381138      {
r4679r4680
15801580   mbRoadNeedTransparent = 0;
15811581   mRoadGfxBank = gfxbank;
15821582
1583   mpRoadRAM = auto_malloc(0x20000);
1583   mpRoadRAM = auto_alloc_array(machine, UINT16, 0x20000/2);
15841584
15851585   pGfx = gfx_element_alloc( machine, &RoadTileLayout, 0x10000+(UINT8 *)mpRoadRAM, 0x3f, 0xf00);
15861586
r4679r4680
16031603void
16041604namco_road_draw(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect, int pri )
16051605{
1606   const UINT8 *clut = (void *)memory_region(machine, "user3");
1606   const UINT8 *clut = (const UINT8 *)memory_region(machine, "user3");
16071607   bitmap_t *pSourceBitmap;
16081608   unsigned yscroll;
16091609   int i;
src/mame/drivers/ddayjlc.c
r4679r4680
173173static WRITE8_HANDLER( sound_w )
174174{
175175   soundlatch_w(space,offset,data);
176   cpu_set_input_line_and_vector(space->machine->cpu[1], 0, HOLD_LINE, 0xff);
176   cputag_set_input_line_and_vector(space->machine, "audiocpu", 0, HOLD_LINE, 0xff);
177177}
178178
179179static WRITE8_HANDLER( i8257_CH0_w )
r4679r4680
556556   {
557557      UINT32 oldaddr, newadr, length,j;
558558      UINT8 *src, *dst, *temp;
559      temp = malloc_or_die(0x10000);
559      temp = alloc_array_or_die(UINT8, 0x10000);
560560      src = temp;
561561      dst = memory_region(machine, "gfx1");
562562      length = memory_region_length(machine, "gfx1");
src/mame/drivers/segas16a.c
r4679r4680
246246
247247static MACHINE_RESET( system16a )
248248{
249   fd1094_machine_init(machine->cpu[0]);
249   fd1094_machine_init(cputag_get_cpu(machine, "maincpu"));
250250
251251   /* if we have a fake i8751 handler, disable the actual 8751 */
252252   if (i8751_vblank_hook != NULL)
r4679r4680
380380             0= Sound is disabled
381381             1= sound is enabled
382382    */
383   cpu_set_input_line(device->machine->cpu[1], INPUT_LINE_NMI, (data & 0x80) ? CLEAR_LINE : ASSERT_LINE);
383   cputag_set_input_line(device->machine, "soundcpu", INPUT_LINE_NMI, (data & 0x80) ? CLEAR_LINE : ASSERT_LINE);
384384   segaic16_tilemap_set_colscroll(device->machine, 0, ~data & 0x04);
385385   segaic16_tilemap_set_rowscroll(device->machine, 0, ~data & 0x02);
386386}
r4679r4680
432432        D1 = /RESET line on 7751
433433        D0 = /IRQ line on 7751
434434    */
435   cpu_set_input_line(device->machine->cpu[2], INPUT_LINE_RESET, (data & 0x01) ? CLEAR_LINE : ASSERT_LINE);
436   cpu_set_input_line(device->machine->cpu[2], 0, (data & 0x02) ? CLEAR_LINE : ASSERT_LINE);
435   cputag_set_input_line(device->machine, "n7751", INPUT_LINE_RESET, (data & 0x01) ? CLEAR_LINE : ASSERT_LINE);
436   cputag_set_input_line(device->machine, "n7751", 0, (data & 0x02) ? CLEAR_LINE : ASSERT_LINE);
437437   cpuexec_boost_interleave(device->machine, attotime_zero, ATTOTIME_IN_USEC(100));
438438}
439439
r4679r4680
512512   UINT8 min = workram[0x202/2] & 0xff;
513513
514514   /* signal a VBLANK to the main CPU */
515   cpu_set_input_line(machine->cpu[0], 4, HOLD_LINE);
515   cputag_set_input_line(machine, "maincpu", 4, HOLD_LINE);
516516
517517   /* out of time? set the flag */
518518   if (tick == 0 && sec == 0 && min == 0)
r4679r4680
551551
552552static void quartet_i8751_sim(running_machine *machine)
553553{
554   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
554   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
555555   /* signal a VBLANK to the main CPU */
556   cpu_set_input_line(machine->cpu[0], 4, HOLD_LINE);
556   cputag_set_input_line(machine, "maincpu", 4, HOLD_LINE);
557557
558558   /* X scroll values */
559559   segaic16_textram_0_w(space, 0xff8/2, workram[0x0d14/2], 0xffff);
src/mame/drivers/neogeo.c
r4679r4680
312312
313313static void update_interrupts(running_machine *machine)
314314{
315   cpu_set_input_line(machine->cpu[0], 1, vblank_interrupt_pending ? ASSERT_LINE : CLEAR_LINE);
316   cpu_set_input_line(machine->cpu[0], 2, display_position_interrupt_pending ? ASSERT_LINE : CLEAR_LINE);
317   cpu_set_input_line(machine->cpu[0], 3, irq3_pending ? ASSERT_LINE : CLEAR_LINE);
315   cputag_set_input_line(machine, "maincpu", 1, vblank_interrupt_pending ? ASSERT_LINE : CLEAR_LINE);
316   cputag_set_input_line(machine, "maincpu", 2, display_position_interrupt_pending ? ASSERT_LINE : CLEAR_LINE);
317   cputag_set_input_line(machine, "maincpu", 3, irq3_pending ? ASSERT_LINE : CLEAR_LINE);
318318}
319319
320320
r4679r4680
400400
401401static void audio_cpu_irq(const device_config *device, int assert)
402402{
403   cpu_set_input_line(device->machine->cpu[1], 0, assert ? ASSERT_LINE : CLEAR_LINE);
403   cputag_set_input_line(device->machine, "audiocpu", 0, assert ? ASSERT_LINE : CLEAR_LINE);
404404}
405405
406406
407407static void audio_cpu_assert_nmi(running_machine *machine)
408408{
409   cpu_set_input_line(machine->cpu[1], INPUT_LINE_NMI, ASSERT_LINE);
409   cputag_set_input_line(machine, "audiocpu", INPUT_LINE_NMI, ASSERT_LINE);
410410}
411411
412412
413413static WRITE8_HANDLER( audio_cpu_clear_nmi_w )
414414{
415   cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_NMI, CLEAR_LINE);
415   cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, CLEAR_LINE);
416416}
417417
418418
r4679r4680
550550
551551static CUSTOM_INPUT( get_calendar_status )
552552{
553   const address_space *space = cpu_get_address_space(field->port->machine->cpu[0], ADDRESS_SPACE_PROGRAM);
553   const address_space *space = cputag_get_address_space(field->port->machine, "maincpu", ADDRESS_SPACE_PROGRAM);
554554   return (pd4990a_databit_r(space, 0) << 1) | pd4990a_testbit_r(space, 0);
555555}
556556
r4679r4680
601601#define MEMCARD_SIZE   0x0800
602602
603603
604static void memcard_init(void)
605{
606   memcard_data = auto_malloc(MEMCARD_SIZE);
607   memset(memcard_data, 0, MEMCARD_SIZE);
608}
609
610
611604static CUSTOM_INPUT( get_memcard_status )
612605{
613606   /* D0 and D1 are memcard presence indicators, D2 indicates memcard
r4679r4680
708701{
709702   UINT32 ret = audio_result;
710703
711//  if (LOG_CPU_COMM) logerror("MAIN CPU PC %06x: audio_result_r %02x\n", cpu_get_pc(field->port->machine->cpu[0]), ret);
704//  if (LOG_CPU_COMM) logerror("MAIN CPU PC %06x: audio_result_r %02x\n", cpu_get_pc(cputag_get_cpu(field->port->machine, "maincpu")), ret);
712705
713706   return ret;
714707}
r4679r4680
775768
776769static void main_cpu_banking_init(running_machine *machine)
777770{
778   const address_space *mainspace = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
771   const address_space *mainspace = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
779772
780773   /* create vector banks */
781774   memory_configure_bank(machine, NEOGEO_BANK_VECTORS, 0, 1, memory_region(machine, "mainbios"), 0);
r4679r4680
859852   {
860853      audio_cpu_rom_source_last = audio_cpu_rom_source;
861854
862      cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_RESET, PULSE_LINE);
855      cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_RESET, PULSE_LINE);
863856
864857      if (LOG_AUDIO_CPU_BANKING) logerror("Audio CPU PC %03x: selectign %s ROM\n", cpu_get_pc(space->cpu), audio_cpu_rom_source ? "CARTRIDGE" : "BIOS");
865858   }
r4679r4680
909902   set_audio_cpu_banking(machine);
910903
911904   audio_cpu_rom_source_last = 0;
912   set_audio_cpu_rom_source(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0);
905   set_audio_cpu_rom_source(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0);
913906}
914907
915908
r4679r4680
10611054   _set_main_cpu_bank_address(machine);
10621055   _set_main_cpu_vector_table_source(machine);
10631056   set_audio_cpu_banking(machine);
1064   _set_audio_cpu_rom_source(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM));
1057   _set_audio_cpu_rom_source(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM));
10651058   set_outputs();
10661059}
10671060
r4679r4680
10821075   calendar_init(machine);
10831076
10841077   /* initialize the memcard data structure */
1085   memcard_init();
1078   memcard_data = auto_alloc_array_clear(machine, UINT8, MEMCARD_SIZE);
10861079
10871080   /* start with an IRQ3 - but NOT on a reset */
10881081   irq3_pending = 1;
r4679r4680
11221115static MACHINE_RESET( neogeo )
11231116{
11241117   offs_t offs;
1125   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
1118   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
11261119
11271120   /* reset system control registers */
11281121   for (offs = 0; offs < 8; offs++)
11291122      system_control_w(space, offs, 0, 0x00ff);
1130   device_reset(machine->cpu[0]);
1123   device_reset(cputag_get_cpu(machine, "maincpu"));
11311124
11321125   neogeo_reset_rng();
11331126
src/mame/drivers/konamigx.c
r4679r4680
441441      if (konamigx_wrport1_1 & 0x10)
442442      {
443443         gx_rdport1_3 &= ~8;
444         cpu_set_input_line(space->machine->cpu[0], 4, HOLD_LINE);
444         cputag_set_input_line(space->machine, "maincpu", 4, HOLD_LINE);
445445      }
446446   }
447447   else
r4679r4680
553553      {
554554         // enable 68k
555555         // clear the halt condition and reset the 68000
556         cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_HALT, CLEAR_LINE);
557         cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_RESET, PULSE_LINE);
556         cputag_set_input_line(space->machine, "soundcpu", INPUT_LINE_HALT, CLEAR_LINE);
557         cputag_set_input_line(space->machine, "soundcpu", INPUT_LINE_RESET, PULSE_LINE);
558558      }
559559      else
560560      {
561561         // disable 68k
562         cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_HALT, ASSERT_LINE);
562         cputag_set_input_line(space->machine, "soundcpu", INPUT_LINE_HALT, ASSERT_LINE);
563563      }
564564
565565      K053246_set_OBJCHA_line((data&0x100000) ? ASSERT_LINE : CLEAR_LINE);
r4679r4680
622622      // vblank interrupt ACK
623623      if (ACCESSING_BITS_24_31)
624624      {
625         cpu_set_input_line(space->machine->cpu[0], 1, CLEAR_LINE);
625         cputag_set_input_line(space->machine, "maincpu", 1, CLEAR_LINE);
626626         gx_syncen |= 0x20;
627627      }
628628
629629      // hblank interrupt ACK
630630      if (ACCESSING_BITS_8_15)
631631      {
632         cpu_set_input_line(space->machine->cpu[0], 2, CLEAR_LINE);
632         cputag_set_input_line(space->machine, "maincpu", 2, CLEAR_LINE);
633633         gx_syncen |= 0x40;
634634      }
635635   }
r4679r4680
659659
660660      // lower OBJINT-REQ flag and trigger interrupt
661661      gx_rdport1_3 &= ~0x80;
662      cpu_set_input_line(machine->cpu[0], 3, HOLD_LINE);
662      cputag_set_input_line(machine, "maincpu", 3, HOLD_LINE);
663663   }
664664}
665665
r4679r4680
817817
818818   if (reg == 7)
819819   {
820      cpu_set_input_line(machine->cpu[1], 1, HOLD_LINE);
820      cputag_set_input_line(machine, "soundcpu", 1, HOLD_LINE);
821821   }
822822}
823823
r4679r4680
10901090            if (konamigx_wrport1_1 & 0x10)
10911091            {
10921092               gx_rdport1_3 &= ~8;
1093               cpu_set_input_line(space->machine->cpu[0], 4, HOLD_LINE);
1093               cputag_set_input_line(space->machine, "maincpu", 4, HOLD_LINE);
10941094            }
10951095
10961096            // don't accidentally do a phony command
r4679r4680
12341234
12351235static READ16_HANDLER(tms57002_data_word_r)
12361236{
1237   return tms57002_data_r(space->machine->cpu[2], 0);
1237   return tms57002_data_r(cputag_get_cpu(space->machine, "dasp"), 0);
12381238}
12391239
12401240static WRITE16_HANDLER(tms57002_data_word_w)
12411241{
12421242   if (ACCESSING_BITS_0_7)
1243      tms57002_data_w(space->machine->cpu[2], 0, data);
1243      tms57002_data_w(cputag_get_cpu(space->machine, "dasp"), 0, data);
12441244}
12451245
12461246static READ16_HANDLER(tms57002_status_word_r)
12471247{
1248   return (tms57002_dready_r(space->machine->cpu[2], 0) ? 4 : 0) |
1249      (tms57002_empty_r(space->machine->cpu[2], 0) ? 1 : 0);
1248   return (tms57002_dready_r(cputag_get_cpu(space->machine, "dasp"), 0) ? 4 : 0) |
1249      (tms57002_empty_r(cputag_get_cpu(space->machine, "dasp"), 0) ? 1 : 0);
12501250}
12511251
12521252static WRITE16_HANDLER(tms57002_control_word_w)
12531253{
12541254   if (ACCESSING_BITS_0_7)
12551255   {
1256      tms57002_pload_w(space->machine->cpu[2], 0, data & 4);
1257      tms57002_cload_w(space->machine->cpu[2], 0, data & 8);
1258      cpu_set_input_line(space->machine->cpu[2], INPUT_LINE_RESET, !(data & 16) ? ASSERT_LINE : CLEAR_LINE);
1256      tms57002_pload_w(cputag_get_cpu(space->machine, "dasp"), 0, data & 4);
1257      tms57002_cload_w(cputag_get_cpu(space->machine, "dasp"), 0, data & 8);
1258      cputag_set_input_line(space->machine, "dasp", INPUT_LINE_RESET, !(data & 16) ? ASSERT_LINE : CLEAR_LINE);
12591259   }
12601260}
12611261
r4679r4680
33323332   memset(sndto020, 0, 16);
33333333
33343334   // sound CPU initially disabled?
3335   cpu_set_input_line(machine->cpu[1], INPUT_LINE_HALT, ASSERT_LINE);
3336   cpu_set_input_line(machine->cpu[2], INPUT_LINE_RESET, ASSERT_LINE);
3335   cputag_set_input_line(machine, "sound", INPUT_LINE_HALT, ASSERT_LINE);
3336   cputag_set_input_line(machine, "dasp", INPUT_LINE_RESET, ASSERT_LINE);
33373337
33383338   if (!strcmp(machine->gamedrv->name, "tkmmpzdm"))
33393339   {
r4679r4680
34313431         switch (gameDefs[i].special)
34323432   {
34333433            case 1:   // LE2 guns
3434               memory_install_read32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xd44000, 0xd44003, 0, 0, le2_gun_H_r );
3435               memory_install_read32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xd44004, 0xd44007, 0, 0, le2_gun_V_r );
3434               memory_install_read32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xd44000, 0xd44003, 0, 0, le2_gun_H_r );
3435               memory_install_read32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xd44004, 0xd44007, 0, 0, le2_gun_V_r );
34363436               break;
34373437
34383438            case 2:   // tkmmpzdm hack
r4679r4680
34683468               break;
34693469
34703470            case 7:   // install type 4 Xilinx protection for non-type 3/4 games
3471      memory_install_write32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xcc0000, 0xcc0007, 0, 0, type4_prot_w );
3471      memory_install_write32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xcc0000, 0xcc0007, 0, 0, type4_prot_w );
34723472               break;
34733473
34743474            case 8: // tbyahhoo
r4679r4680
34883488   switch (readback)
34893489   {
34903490      case BPP5:
3491         memory_install_read32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xd4a000, 0xd4a00f, 0, 0, gx5bppspr_r);
3491         memory_install_read32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xd4a000, 0xd4a00f, 0, 0, gx5bppspr_r);
34923492      break;
34933493
34943494      case BPP66:
3495         memory_install_read32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xd00000, 0xd01fff, 0, 0, K056832_6bpp_rom_long_r);
3495         memory_install_read32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xd00000, 0xd01fff, 0, 0, K056832_6bpp_rom_long_r);
34963496
34973497      case BPP6:
3498         memory_install_read32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xd4a000, 0xd4a00f, 0, 0, gx6bppspr_r);
3498         memory_install_read32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xd4a000, 0xd4a00f, 0, 0, gx6bppspr_r);
34993499      break;
35003500   }
35013501
src/mame/drivers/segahang.c
r4679r4680
264264
265265static WRITE8_DEVICE_HANDLER( sound_latch_w )
266266{
267   const address_space *space = cpu_get_address_space(device->machine->cpu[0], ADDRESS_SPACE_PROGRAM);
267   const address_space *space = cputag_get_address_space(device->machine, "maincpu", ADDRESS_SPACE_PROGRAM);
268268   soundlatch_w(space, offset, data);
269269}
270270
r4679r4680
301301   /* D2 : SCONT1 - Tilemap origin bit 1 */
302302   /* D1 : SCONT0 - Tilemap origin bit 0 */
303303   /* D0 : MUTE (1= audio on, 0= audio off) */
304   cpu_set_input_line(device->machine->cpu[2], INPUT_LINE_NMI, (data & 0x80) ? CLEAR_LINE : ASSERT_LINE);
304   cputag_set_input_line(device->machine, "soundcpu", INPUT_LINE_NMI, (data & 0x80) ? CLEAR_LINE : ASSERT_LINE);
305305   segaic16_tilemap_set_colscroll(device->machine, 0, ~data & 0x04);
306306   segaic16_tilemap_set_rowscroll(device->machine, 0, ~data & 0x02);
307307   sound_global_enable(data & 0x01);
r4679r4680
314314   /* D6 : INTR line on second CPU */
315315   /* D5 : RESET line on second CPU */
316316   /* D3-D2 : ADC_SELECT */
317   cpu_set_input_line(device->machine->cpu[1], 4, (data & 0x40) ? CLEAR_LINE : ASSERT_LINE);
318   cpu_set_input_line(device->machine->cpu[1], INPUT_LINE_RESET, (data & 0x20) ? ASSERT_LINE : CLEAR_LINE);
317   cputag_set_input_line(device->machine, "sub", 4, (data & 0x40) ? CLEAR_LINE : ASSERT_LINE);
318   cputag_set_input_line(device->machine, "sub", INPUT_LINE_RESET, (data & 0x20) ? ASSERT_LINE : CLEAR_LINE);
319319   adc_select = (data >> 2) & 3;
320320}
321321
r4679r4680
368368
369369static void sound_irq(const device_config *device, int irq)
370370{
371   cpu_set_input_line(device->machine->cpu[2], 0, irq ? ASSERT_LINE : CLEAR_LINE);
371   cputag_set_input_line(device->machine, "soundcpu", 0, irq ? ASSERT_LINE : CLEAR_LINE);
372372}
373373
374374
r4679r4680
17331733{
17341734   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
17351735   UINT16 *rom = (UINT16 *)memory_region(machine, "maincpu");
1736   UINT16 *decrypt = (UINT16 *)auto_malloc(0x40000);
1736   UINT16 *decrypt = auto_alloc_array(machine, UINT16, 0x40000/2);
17371737
17381738   hangon_generic_init();
17391739   memory_set_decrypted_region(space, 0x000000, 0x03ffff, decrypt);
r4679r4680
17471747{
17481748   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
17491749   UINT16 *rom = (UINT16 *)memory_region(machine, "maincpu");
1750   UINT16 *decrypt = (UINT16 *)auto_malloc(0x40000);
1750   UINT16 *decrypt = auto_alloc_array(machine, UINT16, 0x40000/2);
17511751
17521752   hangon_generic_init();
17531753   memory_set_decrypted_region(space, 0x000000, 0x03ffff, decrypt);
src/mame/drivers/sprcros2.c
r4679r4680
7070PALETTE_INIT( sprcros2 );
7171VIDEO_START( sprcros2 );
7272VIDEO_UPDATE( sprcros2 );
73static UINT8 *sprcros2_sharedram;
7473UINT8 sprcros2_m_port7 = 0;
7574static UINT8 sprcros2_s_port3 = 0;
7675
77static READ8_HANDLER( sprcros2_sharedram_r )
78{
79   return sprcros2_sharedram[offset];
80}
8176
82static WRITE8_HANDLER( sprcros2_sharedram_w )
83{
84   sprcros2_sharedram[offset]=data;
85}
8677
8778static WRITE8_HANDLER( sprcros2_m_port7_w )
8879{
89   UINT8 *RAM = memory_region(space->machine, "maincpu");
80   UINT8 *RAM = memory_region(space->machine, "master");
9081
9182   //76543210
9283   //x------- unused
r4679r4680
10798
10899static WRITE8_HANDLER( sprcros2_s_port3_w )
109100{
110   UINT8 *RAM = memory_region(space->machine, "audiocpu");
101   UINT8 *RAM = memory_region(space->machine, "slave");
111102
112103   //76543210
113104   //xxxx---- unused
r4679r4680
121112   sprcros2_s_port3 = data;
122113}
123114
124static ADDRESS_MAP_START( sprcros2_m_readmem, ADDRESS_SPACE_PROGRAM, 8 )
125   AM_RANGE(0x0000, 0xbfff) AM_READ(SMH_ROM)
126   AM_RANGE(0xc000, 0xdfff) AM_READ(SMH_BANK1)
127   AM_RANGE(0xe000, 0xf7ff) AM_READ(SMH_RAM)
128   AM_RANGE(0xf800, 0xffff) AM_READ(SMH_RAM)                  //shared with slave cpu
115static ADDRESS_MAP_START( sprcros2_master_map, ADDRESS_SPACE_PROGRAM, 8 )
116   AM_RANGE(0x0000, 0xbfff) AM_ROM
117   AM_RANGE(0xc000, 0xdfff) AM_ROMBANK(1)
118   AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(sprcros2_fgvideoram_w) AM_BASE(&sprcros2_fgvideoram)
119   AM_RANGE(0xe800, 0xe817) AM_RAM                  //always zero
120   AM_RANGE(0xe818, 0xe83f) AM_RAM AM_BASE(&sprcros2_spriteram) AM_SIZE(&sprcros2_spriteram_size)
121   AM_RANGE(0xe840, 0xefff) AM_RAM                  //always zero
122   AM_RANGE(0xf000, 0xf7ff) AM_RAM
123   AM_RANGE(0xf800, 0xffff) AM_RAM AM_SHARE(1)         //shared with slave cpu
129124ADDRESS_MAP_END
130125
131static ADDRESS_MAP_START( sprcros2_m_writemem, ADDRESS_SPACE_PROGRAM, 8 )
132   AM_RANGE(0x0000, 0xbfff) AM_WRITE(SMH_ROM)
133   AM_RANGE(0xc000, 0xdfff) AM_WRITE(SMH_BANK1)
134   AM_RANGE(0xe000, 0xe7ff) AM_WRITE(sprcros2_fgvideoram_w) AM_BASE(&sprcros2_fgvideoram)
135   AM_RANGE(0xe800, 0xe817) AM_WRITE(SMH_RAM)                  //always zero
136   AM_RANGE(0xe818, 0xe83f) AM_WRITE(SMH_RAM) AM_BASE(&sprcros2_spriteram) AM_SIZE(&sprcros2_spriteram_size)
137   AM_RANGE(0xe840, 0xefff) AM_WRITE(SMH_RAM)                  //always zero
138   AM_RANGE(0xf000, 0xf7ff) AM_WRITE(SMH_RAM)
139   AM_RANGE(0xf800, 0xffff) AM_WRITE(SMH_RAM) AM_BASE(&sprcros2_sharedram)   //shared with slave cpu
140ADDRESS_MAP_END
141
142static ADDRESS_MAP_START( io_map, ADDRESS_SPACE_IO, 8 )
126static ADDRESS_MAP_START( sprcros2_master_io_map, ADDRESS_SPACE_IO, 8 )
143127   ADDRESS_MAP_GLOBAL_MASK(0xff)
144128   AM_RANGE(0x00, 0x00) AM_READ_PORT("P1") AM_DEVWRITE("sn1", sn76496_w)
145129   AM_RANGE(0x01, 0x01) AM_READ_PORT("P2") AM_DEVWRITE("sn2", sn76496_w)
r4679r4680
149133   AM_RANGE(0x07, 0x07) AM_WRITE(sprcros2_m_port7_w)
150134ADDRESS_MAP_END
151135
152static ADDRESS_MAP_START( sprcros2_s_readmem, ADDRESS_SPACE_PROGRAM, 8 )
153   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
154   AM_RANGE(0x8000, 0xbfff) AM_READ(SMH_ROM)
155   AM_RANGE(0xc000, 0xdfff) AM_READ(SMH_BANK2)
156   AM_RANGE(0xe000, 0xf7ff) AM_READ(SMH_RAM)
157   AM_RANGE(0xf800, 0xffff) AM_READ(sprcros2_sharedram_r)
136static ADDRESS_MAP_START( sprcros2_slave_map, ADDRESS_SPACE_PROGRAM, 8 )
137   AM_RANGE(0x0000, 0xbfff) AM_ROM
138   AM_RANGE(0xc000, 0xdfff) AM_ROMBANK(2)
139   AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(sprcros2_bgvideoram_w) AM_BASE(&sprcros2_bgvideoram)
140   AM_RANGE(0xe800, 0xefff) AM_RAM                  //always zero
141   AM_RANGE(0xf000, 0xf7ff) AM_RAM
142   AM_RANGE(0xf800, 0xffff) AM_RAM AM_SHARE(1)
158143ADDRESS_MAP_END
159144
160static ADDRESS_MAP_START( sprcros2_s_writemem, ADDRESS_SPACE_PROGRAM, 8 )
161   AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM)
162   AM_RANGE(0x8000, 0xbfff) AM_WRITE(SMH_ROM)
163   AM_RANGE(0xc000, 0xdfff) AM_WRITE(SMH_BANK2)
164   AM_RANGE(0xe000, 0xe7ff) AM_WRITE(sprcros2_bgvideoram_w) AM_BASE(&sprcros2_bgvideoram)
165   AM_RANGE(0xe800, 0xefff) AM_WRITE(SMH_RAM)                  //always zero
166   AM_RANGE(0xf000, 0xf7ff) AM_WRITE(SMH_RAM)
167   AM_RANGE(0xf800, 0xffff) AM_WRITE(sprcros2_sharedram_w)
168ADDRESS_MAP_END
169
170static ADDRESS_MAP_START( audio_io_map, ADDRESS_SPACE_IO, 8 )
145static ADDRESS_MAP_START( sprcros2_slave_io_map, ADDRESS_SPACE_IO, 8 )
171146   ADDRESS_MAP_GLOBAL_MASK(0xff)
172147   AM_RANGE(0x00, 0x00) AM_WRITE(sprcros2_bgscrollx_w)
173148   AM_RANGE(0x01, 0x01) AM_WRITE(sprcros2_bgscrolly_w)
r4679r4680
295270static MACHINE_DRIVER_START( sprcros2 )
296271
297272   /* basic machine hardware */
298   MDRV_CPU_ADD("maincpu", Z80,10000000/2)
299   MDRV_CPU_PROGRAM_MAP(sprcros2_m_readmem,sprcros2_m_writemem)
300   MDRV_CPU_IO_MAP(io_map,0)
273   MDRV_CPU_ADD("master", Z80,10000000/2)
274   MDRV_CPU_PROGRAM_MAP(sprcros2_master_map,0)
275   MDRV_CPU_IO_MAP(sprcros2_master_io_map,0)
301276   MDRV_CPU_VBLANK_INT_HACK(sprcros2_m_interrupt,2)   //1 nmi + 1 irq
302277
303   MDRV_CPU_ADD("audiocpu", Z80,10000000/2)
304   MDRV_CPU_PROGRAM_MAP(sprcros2_s_readmem,sprcros2_s_writemem)
305   MDRV_CPU_IO_MAP(audio_io_map,0)
278   MDRV_CPU_ADD("slave", Z80,10000000/2)
279   MDRV_CPU_PROGRAM_MAP(sprcros2_slave_map,0)
280   MDRV_CPU_IO_MAP(sprcros2_slave_io_map,0)
306281   MDRV_CPU_VBLANK_INT_HACK(sprcros2_s_interrupt,2)   //2 nmis
307282
308283   MDRV_MACHINE_START(sprcros2)
r4679r4680
336311MACHINE_DRIVER_END
337312
338313ROM_START( sprcros2 )
339   ROM_REGION( 0x14000, "maincpu", 0 )
314   ROM_REGION( 0x14000, "master", 0 )
340315   ROM_LOAD( "scm-03.10g", 0x00000, 0x4000, CRC(b9757908) SHA1(d59cb2aac1b6268fc766306850f5711d4a12d897) )
341316   ROM_LOAD( "scm-02.10j", 0x04000, 0x4000, CRC(849c5c87) SHA1(0e02c4990e371d6a290efa53301818e769648945) )
342317   ROM_LOAD( "scm-01.10k", 0x08000, 0x4000, CRC(385a62de) SHA1(847bf9d97ab3fa8949d9198e4e509948a940d6aa) )
343318
344319   ROM_LOAD( "scm-00.10l", 0x10000, 0x4000, CRC(13fa3684) SHA1(611b7a237e394f285dcc5beb027dacdbdd58a7a0) )   //banked into c000-dfff
345320
346   ROM_REGION( 0x14000, "audiocpu", 0 )
321   ROM_REGION( 0x14000, "slave", 0 )
347322   ROM_LOAD( "scs-30.5f",  0x00000, 0x4000, CRC(c0a40e41) SHA1(e74131b353855749258dffa45091c825ccdbf05a) )
348323   ROM_LOAD( "scs-29.5h",  0x04000, 0x4000, CRC(83d49fa5) SHA1(7112110df2f382bbc0e651adcec975054a485b9b) )
349324   ROM_LOAD( "scs-28.5j",  0x08000, 0x4000, CRC(480d351f) SHA1(d1b86f441ae0e58b30e0f089ab25de219d5f30e3) )
r4679r4680
373348
374349/* this is probably an old revision */
375350ROM_START( sprcrs2a )
376   ROM_REGION( 0x14000, "maincpu", 0 )
351   ROM_REGION( 0x14000, "master", 0 )
377352   ROM_LOAD( "15.bin",     0x00000, 0x4000, CRC(b9d02558) SHA1(775404c6c7648d9dab02b496541739ea700cd481) )
378353   ROM_LOAD( "scm-02.10j", 0x04000, 0x4000, CRC(849c5c87) SHA1(0e02c4990e371d6a290efa53301818e769648945) )
379354   ROM_LOAD( "scm-01.10k", 0x08000, 0x4000, CRC(385a62de) SHA1(847bf9d97ab3fa8949d9198e4e509948a940d6aa) )
380355
381356   ROM_LOAD( "scm-00.10l", 0x10000, 0x4000, CRC(13fa3684) SHA1(611b7a237e394f285dcc5beb027dacdbdd58a7a0) )   //banked into c000-dfff
382357
383   ROM_REGION( 0x14000, "audiocpu", 0 )
358   ROM_REGION( 0x14000, "slave", 0 )
384359   ROM_LOAD( "scs-30.5f",  0x00000, 0x4000, CRC(c0a40e41) SHA1(e74131b353855749258dffa45091c825ccdbf05a) )
385360   ROM_LOAD( "scs-29.5h",  0x04000, 0x4000, CRC(83d49fa5) SHA1(7112110df2f382bbc0e651adcec975054a485b9b) )
386361   ROM_LOAD( "scs-28.5j",  0x08000, 0x4000, CRC(480d351f) SHA1(d1b86f441ae0e58b30e0f089ab25de219d5f30e3) )
src/mame/drivers/statriv2.c
r4679r4680
10701070
10711071static DRIVER_INIT( laserdisc )
10721072{
1073   const address_space *iospace = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO);
1073   const address_space *iospace = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_IO);
10741074   memory_install_readwrite8_handler(iospace, 0x28, 0x2b, 0, 0, laserdisc_io_r, laserdisc_io_w);
10751075}
10761076
src/mame/drivers/dorachan.c
r4679r4680
3232{
3333   UINT8 ret = 0;
3434
35   switch (cpu_get_previouspc(field->port->machine->cpu[0]))
35   switch (cpu_get_previouspc(cputag_get_cpu(field->port->machine, "maincpu")))
3636   {
3737   case 0x70ce: ret = 0xf2; break;
3838   case 0x72a2: ret = 0xd5; break;
3939   case 0x72b5: ret = 0xcb; break;
4040
4141   default:
42      mame_printf_debug("unhandled $2400 read @ %x\n",cpu_get_previouspc(field->port->machine->cpu[0]));
42      mame_printf_debug("unhandled $2400 read @ %x\n", cpu_get_previouspc(cputag_get_cpu(field->port->machine, "maincpu")));
4343      break;
4444   }
4545
src/mame/drivers/thunderj.c
r4679r4680
3333
3434static void update_interrupts(running_machine *machine)
3535{
36   cpu_set_input_line(machine->cpu[0], 4, atarigen_scanline_int_state ? ASSERT_LINE : CLEAR_LINE);
37   cpu_set_input_line(machine->cpu[1], 4, atarigen_scanline_int_state ? ASSERT_LINE : CLEAR_LINE);
38   cpu_set_input_line(machine->cpu[0], 6, atarigen_sound_int_state ? ASSERT_LINE : CLEAR_LINE);
36   cputag_set_input_line(machine, "maincpu", 4, atarigen_scanline_int_state ? ASSERT_LINE : CLEAR_LINE);
37   cputag_set_input_line(machine, "extra", 4, atarigen_scanline_int_state ? ASSERT_LINE : CLEAR_LINE);
38   cputag_set_input_line(machine, "maincpu", 6, atarigen_sound_int_state ? ASSERT_LINE : CLEAR_LINE);
3939}
4040
4141
r4679r4680
7474   {
7575      /* 0 means hold CPU 2's reset low */
7676      if (data & 1)
77         cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_RESET, CLEAR_LINE);
77         cputag_set_input_line(space->machine, "extra", INPUT_LINE_RESET, CLEAR_LINE);
7878      else
79         cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_RESET, ASSERT_LINE);
79         cputag_set_input_line(space->machine, "extra", INPUT_LINE_RESET, ASSERT_LINE);
8080
8181      /* bits 2-5 are the alpha bank */
8282      if (thunderj_alpha_tile_bank != ((data >> 2) & 7))
src/mame/drivers/ultraman.c
r4679r4680
101101static WRITE16_HANDLER( sound_cmd_w )
102102{
103103   if (ACCESSING_BITS_0_7)
104      soundlatch_w(space,0,data & 0xff);
104      soundlatch_w(space, 0, data & 0xff);
105105}
106106
107107static WRITE16_HANDLER( sound_irq_trigger_w )
108108{
109109   if (ACCESSING_BITS_0_7)
110      cpu_set_input_line(space->machine->cpu[1],INPUT_LINE_NMI,PULSE_LINE);
110      cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
111111}
112112
113113
src/mame/drivers/parodius.c
r4679r4680
101101
102102static WRITE8_HANDLER( parodius_sh_irqtrigger_w )
103103{
104   cpu_set_input_line_and_vector(space->machine->cpu[1],0,HOLD_LINE,0xff);
104   cputag_set_input_line_and_vector(space->machine, "audiocpu", 0, HOLD_LINE, 0xff);
105105}
106106
107107#if 0
r4679r4680
117117
118118static TIMER_CALLBACK( nmi_callback )
119119{
120   cpu_set_input_line(machine->cpu[1], INPUT_LINE_NMI, ASSERT_LINE);
120   cputag_set_input_line(machine, "audiocpu", INPUT_LINE_NMI, ASSERT_LINE);
121121}
122122
123123static WRITE8_HANDLER( sound_arm_nmi_w )
124124{
125125//  sound_nmi_enabled = 1;
126   cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_NMI, CLEAR_LINE);
127   timer_set(space->machine, ATTOTIME_IN_USEC(50), NULL,0,nmi_callback);   /* kludge until the K053260 is emulated correctly */
126   cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, CLEAR_LINE);
127   timer_set(space->machine, ATTOTIME_IN_USEC(50), NULL, 0, nmi_callback);   /* kludge until the K053260 is emulated correctly */
128128}
129129
130130/********************************************/
131131
132static ADDRESS_MAP_START( parodius_readmem, ADDRESS_SPACE_PROGRAM, 8 )
133   AM_RANGE(0x0000, 0x07ff) AM_READ(bankedram_r)
134   AM_RANGE(0x0800, 0x1fff) AM_READ(SMH_RAM)
132static ADDRESS_MAP_START( parodius_map, ADDRESS_SPACE_PROGRAM, 8 )
133   AM_RANGE(0x0000, 0x07ff) AM_READWRITE(bankedram_r,bankedram_w) AM_BASE(&ram)
134   AM_RANGE(0x0800, 0x1fff) AM_RAM
135135   AM_RANGE(0x3f8c, 0x3f8c) AM_READ_PORT("P1")
136136   AM_RANGE(0x3f8d, 0x3f8d) AM_READ_PORT("P2")
137137   AM_RANGE(0x3f8e, 0x3f8e) AM_READ_PORT("DSW3")
138138   AM_RANGE(0x3f8f, 0x3f8f) AM_READ_PORT("DSW1")
139139   AM_RANGE(0x3f90, 0x3f90) AM_READ_PORT("DSW2")
140   AM_RANGE(0x3fa0, 0x3faf) AM_READ(K053244_r)
141   AM_RANGE(0x3fc0, 0x3fc0) AM_READ(watchdog_reset_r)
142   AM_RANGE(0x3fcc, 0x3fcd) AM_DEVREAD("konami", parodius_sound_r)   /* K053260 */
143   AM_RANGE(0x2000, 0x27ff) AM_READ(parodius_052109_053245_r)
144   AM_RANGE(0x2000, 0x5fff) AM_READ(K052109_r)
145   AM_RANGE(0x6000, 0x9fff) AM_READ(SMH_BANK1)         /* banked ROM */
146   AM_RANGE(0xa000, 0xffff) AM_READ(SMH_ROM)         /* ROM */
147ADDRESS_MAP_END
148
149static ADDRESS_MAP_START( parodius_writemem, ADDRESS_SPACE_PROGRAM, 8 )
150   AM_RANGE(0x0000, 0x07ff) AM_WRITE(bankedram_w) AM_BASE(&ram)
151   AM_RANGE(0x0800, 0x1fff) AM_WRITE(SMH_RAM)
152   AM_RANGE(0x3fa0, 0x3faf) AM_WRITE(K053244_w)
140   AM_RANGE(0x3fa0, 0x3faf) AM_READWRITE(K053244_r,K053244_w)
153141   AM_RANGE(0x3fb0, 0x3fbf) AM_WRITE(K053251_w)
154   AM_RANGE(0x3fc0, 0x3fc0) AM_WRITE(parodius_3fc0_w)
142   AM_RANGE(0x3fc0, 0x3fc0) AM_READWRITE(watchdog_reset_r,parodius_3fc0_w)
155143   AM_RANGE(0x3fc4, 0x3fc4) AM_WRITE(parodius_videobank_w)
156144   AM_RANGE(0x3fc8, 0x3fc8) AM_WRITE(parodius_sh_irqtrigger_w)
157   AM_RANGE(0x3fcc, 0x3fcd) AM_DEVWRITE("konami", k053260_w)
158   AM_RANGE(0x2000, 0x27ff) AM_WRITE(parodius_052109_053245_w)
159   AM_RANGE(0x2000, 0x5fff) AM_WRITE(K052109_w)
160   AM_RANGE(0x6000, 0x9fff) AM_WRITE(SMH_ROM)               /* banked ROM */
161   AM_RANGE(0xa000, 0xffff) AM_WRITE(SMH_ROM)               /* ROM */
145   AM_RANGE(0x3fcc, 0x3fcd) AM_DEVREADWRITE("konami", parodius_sound_r,k053260_w)   /* K053260 */
146   AM_RANGE(0x2000, 0x27ff) AM_READWRITE(parodius_052109_053245_r,parodius_052109_053245_w)
147   AM_RANGE(0x2000, 0x5fff) AM_READWRITE(K052109_r,K052109_w)
148   AM_RANGE(0x6000, 0x9fff) AM_ROMBANK(1)         /* banked ROM */
149   AM_RANGE(0xa000, 0xffff) AM_ROM               /* ROM */
162150ADDRESS_MAP_END
163151
164static ADDRESS_MAP_START( parodius_readmem_sound, ADDRESS_SPACE_PROGRAM, 8 )
165   AM_RANGE(0x0000, 0xefff) AM_READ(SMH_ROM)
166   AM_RANGE(0xf000, 0xf7ff) AM_READ(SMH_RAM)
167   AM_RANGE(0xf800, 0xf801) AM_DEVREAD("ym", ym2151_r)
168   AM_RANGE(0xfc00, 0xfc2f) AM_DEVREAD("konami", k053260_r)
169ADDRESS_MAP_END
170
171static ADDRESS_MAP_START( parodius_writemem_sound, ADDRESS_SPACE_PROGRAM, 8 )
172   AM_RANGE(0x0000, 0xefff) AM_WRITE(SMH_ROM)
173   AM_RANGE(0xf000, 0xf7ff) AM_WRITE(SMH_RAM)
174   AM_RANGE(0xf800, 0xf801) AM_DEVWRITE("ym", ym2151_w)
152static ADDRESS_MAP_START( parodius_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
153   AM_RANGE(0x0000, 0xefff) AM_ROM
154   AM_RANGE(0xf000, 0xf7ff) AM_RAM
155   AM_RANGE(0xf800, 0xf801) AM_DEVREADWRITE("ym", ym2151_r,ym2151_w)
175156   AM_RANGE(0xfa00, 0xfa00) AM_WRITE(sound_arm_nmi_w)
176   AM_RANGE(0xfc00, 0xfc2f) AM_DEVWRITE("konami", k053260_w)
157   AM_RANGE(0xfc00, 0xfc2f) AM_DEVREADWRITE("konami", k053260_r,k053260_w)
177158ADDRESS_MAP_END
178159
160
179161/***************************************************************************
180162
181163    Input Ports
r4679r4680
245227
246228   /* basic machine hardware */
247229   MDRV_CPU_ADD("maincpu", KONAMI, 3000000)      /* 053248 */
248   MDRV_CPU_PROGRAM_MAP(parodius_readmem,parodius_writemem)
230   MDRV_CPU_PROGRAM_MAP(parodius_map,0)
249231   MDRV_CPU_VBLANK_INT("screen", parodius_interrupt)
250232
251233   MDRV_CPU_ADD("audiocpu", Z80, 3579545)
252   MDRV_CPU_PROGRAM_MAP(parodius_readmem_sound,parodius_writemem_sound)
234   MDRV_CPU_PROGRAM_MAP(parodius_sound_map,0)
253235                        /* NMIs are triggered by the 053260 */
254236
255237   MDRV_MACHINE_RESET(parodius)
r4679r4680
351333{
352334   UINT8 *RAM = memory_region(machine, "maincpu");
353335
354   konami_configure_set_lines(machine->cpu[0], parodius_banking);
336   konami_configure_set_lines(cputag_get_cpu(machine, "maincpu"), parodius_banking);
355337
356338   paletteram = &memory_region(machine, "maincpu")[0x48000];
357339
src/mame/drivers/ladybug.c
r4679r4680
150150static INPUT_CHANGED( coin1_inserted )
151151{
152152   /* left coin insertion causes an NMI */
153   cpu_set_input_line(field->port->machine->cpu[0], INPUT_LINE_NMI, newval ? ASSERT_LINE : CLEAR_LINE);
153   cputag_set_input_line(field->port->machine, "maincpu", INPUT_LINE_NMI, newval ? ASSERT_LINE : CLEAR_LINE);
154154}
155155
156156static INPUT_CHANGED( coin2_inserted )
157157{
158158   /* right coin insertion causes an IRQ */
159159   if (newval)
160      cpu_set_input_line(field->port->machine->cpu[0], 0, HOLD_LINE);
160      cputag_set_input_line(field->port->machine, "maincpu", 0, HOLD_LINE);
161161}
162162
163163
r4679r4680
963963
964964   offs_t i;
965965   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
966   UINT8 *decrypted = auto_malloc(0x6000);
966   UINT8 *decrypted = auto_alloc_array(machine, UINT8, 0x6000);
967967   UINT8 *rom = memory_region(machine, "maincpu");
968968   UINT8 *table = memory_region(machine, "user1");
969969
src/mame/drivers/blueprnt.c
r4679r4680
8686static WRITE8_HANDLER( blueprnt_sound_command_w )
8787{
8888   soundlatch_w(space, offset, data);
89   cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_NMI, PULSE_LINE);
89   cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
9090}
9191
9292static WRITE8_HANDLER( blueprnt_coin_counter_w )
src/mame/drivers/combatsc.c
r4679r4680
219219
220220static WRITE8_HANDLER( combasc_sh_irqtrigger_w )
221221{
222   cpu_set_input_line_and_vector(space->machine->cpu[1],0,HOLD_LINE,0xff);
222   cputag_set_input_line_and_vector(space->machine, "audiocpu", 0, HOLD_LINE, 0xff);
223223}
224224
225225static READ8_DEVICE_HANDLER( combasc_busy_r )
r4679r4680
249249   static int boost = 1;
250250   int status = ym2203_r(device,offset);
251251
252   if (cpu_get_pc(device->machine->cpu[1]) == 0x334)
252   if (cpu_get_pc(cputag_get_cpu(device->machine, "audiocpu")) == 0x334)
253253   {
254254      if (boost)
255255      {
256256         boost = 0;
257         timer_adjust_periodic(combasc_interleave_timer, attotime_zero, 0, cpu_clocks_to_attotime(device->machine->cpu[1],80));
257         timer_adjust_periodic(combasc_interleave_timer, attotime_zero, 0, cputag_clocks_to_attotime(device->machine, "audiocpu", 80));
258258      }
259259      else if (status & 2)
260260      {
r4679r4680
268268
269269/****************************************************************************/
270270
271static ADDRESS_MAP_START( combasc_readmem, ADDRESS_SPACE_PROGRAM, 8 )
272   AM_RANGE(0x0020, 0x005f) AM_READ(combasc_scrollram_r)
273   AM_RANGE(0x0200, 0x0201) AM_READ(protection_r)
271static ADDRESS_MAP_START( combasc_map, ADDRESS_SPACE_PROGRAM, 8 )
272   AM_RANGE(0x0000, 0x0007) AM_WRITE(combasc_pf_control_w)
273   AM_RANGE(0x0020, 0x005f) AM_READWRITE(combasc_scrollram_r, combasc_scrollram_w)
274//  AM_RANGE(0x0060, 0x00ff) AM_WRITE(SMH_RAM)                 /* RAM */
275
276   AM_RANGE(0x0200, 0x0201) AM_READWRITE(protection_r, protection_w)
277   AM_RANGE(0x0206, 0x0206) AM_WRITE(protection_clock_w)
278
274279   AM_RANGE(0x0400, 0x0400) AM_READ_PORT("IN0")
275280   AM_RANGE(0x0401, 0x0401) AM_READ_PORT("DSW3")         /* DSW #3 */
276281   AM_RANGE(0x0402, 0x0402) AM_READ_PORT("DSW1")         /* DSW #1 */
277282   AM_RANGE(0x0403, 0x0403) AM_READ_PORT("DSW2")         /* DSW #2 */
278283   AM_RANGE(0x0404, 0x0407) AM_READ(trackball_r)         /* 1P & 2P controls / trackball */
279   AM_RANGE(0x0600, 0x06ff) AM_READ(SMH_RAM)            /* palette */
280   AM_RANGE(0x0800, 0x1fff) AM_READ(SMH_RAM)
281   AM_RANGE(0x2000, 0x3fff) AM_READ(combasc_video_r)
282   AM_RANGE(0x4000, 0x7fff) AM_READ(SMH_BANK1)            /* banked ROM area */
283   AM_RANGE(0x8000, 0xffff) AM_READ(SMH_ROM)            /* ROM */
284ADDRESS_MAP_END
285
286static ADDRESS_MAP_START( combasc_writemem, ADDRESS_SPACE_PROGRAM, 8 )
287   AM_RANGE(0x0000, 0x0007) AM_WRITE(combasc_pf_control_w)
288   AM_RANGE(0x0020, 0x005f) AM_WRITE(combasc_scrollram_w)
289//  AM_RANGE(0x0060, 0x00ff) AM_WRITE(SMH_RAM)                 /* RAM */
290   AM_RANGE(0x0200, 0x0201) AM_WRITE(protection_w)
291   AM_RANGE(0x0206, 0x0206) AM_WRITE(protection_clock_w)
292284   AM_RANGE(0x0408, 0x0408) AM_WRITE(combasc_coin_counter_w)   /* coin counters */
293285   AM_RANGE(0x040c, 0x040c) AM_WRITE(combasc_vreg_w)
294286   AM_RANGE(0x0410, 0x0410) AM_WRITE(combasc_bankselect_w)
295287   AM_RANGE(0x0414, 0x0414) AM_WRITE(soundlatch_w)
296288   AM_RANGE(0x0418, 0x0418) AM_WRITE(combasc_sh_irqtrigger_w)
297289   AM_RANGE(0x041c, 0x041c) AM_WRITE(watchdog_reset_w)         /* watchdog reset? */
298   AM_RANGE(0x0600, 0x06ff) AM_WRITE(SMH_RAM) AM_BASE(&paletteram)
299   AM_RANGE(0x0800, 0x1fff) AM_WRITE(SMH_RAM)               /* RAM */
300   AM_RANGE(0x2000, 0x3fff) AM_WRITE(combasc_video_w)
301   AM_RANGE(0x4000, 0x7fff) AM_WRITE(SMH_ROM)               /* banked ROM area */
302   AM_RANGE(0x8000, 0xffff) AM_WRITE(SMH_ROM)               /* ROM */
303ADDRESS_MAP_END
304290
305static ADDRESS_MAP_START( combascb_readmem, ADDRESS_SPACE_PROGRAM, 8 )
306   AM_RANGE(0x0000, 0x04ff) AM_READ(SMH_RAM)
307   AM_RANGE(0x0600, 0x06ff) AM_READ(SMH_RAM)   /* palette */
308   AM_RANGE(0x0800, 0x1fff) AM_READ(SMH_RAM)
309   AM_RANGE(0x2000, 0x3fff) AM_READ(combasc_video_r)
310   AM_RANGE(0x4000, 0x7fff) AM_READ(SMH_BANK1)            /* banked ROM/RAM area */
311   AM_RANGE(0x8000, 0xffff) AM_READ(SMH_ROM)            /* ROM */
291   AM_RANGE(0x0600, 0x06ff) AM_RAM AM_BASE(&paletteram)      /* palette */
292   AM_RANGE(0x0800, 0x1fff) AM_RAM                        /* RAM */
293   AM_RANGE(0x2000, 0x3fff) AM_READWRITE(combasc_video_r, combasc_video_w)
294   AM_RANGE(0x4000, 0x7fff) AM_ROMBANK(1)                  /* banked ROM area */
295   AM_RANGE(0x8000, 0xffff) AM_ROM                        /* ROM */
312296ADDRESS_MAP_END
313297
314static ADDRESS_MAP_START( combascb_writemem, ADDRESS_SPACE_PROGRAM, 8 )
315   AM_RANGE(0x0000, 0x04ff) AM_WRITE(SMH_RAM)
298static ADDRESS_MAP_START( combascb_map, ADDRESS_SPACE_PROGRAM, 8 )
299   AM_RANGE(0x0000, 0x04ff) AM_RAM
316300   AM_RANGE(0x0500, 0x0500) AM_WRITE(combascb_bankselect_w)
317   AM_RANGE(0x0600, 0x06ff) AM_WRITE(SMH_RAM) AM_BASE(&paletteram)
318   AM_RANGE(0x0800, 0x1fff) AM_WRITE(SMH_RAM)
319   AM_RANGE(0x2000, 0x3fff) AM_WRITE(combasc_video_w)
320   AM_RANGE(0x4000, 0x7fff) AM_WRITE(SMH_BANK1) /* banked ROM/RAM area */
321   AM_RANGE(0x8000, 0xffff) AM_WRITE(SMH_ROM)            /* ROM */
301   AM_RANGE(0x0600, 0x06ff) AM_RAM AM_BASE(&paletteram)      /* palette */
302   AM_RANGE(0x0800, 0x1fff) AM_RAM
303   AM_RANGE(0x2000, 0x3fff) AM_READWRITE(combasc_video_r, combasc_video_w)
304   AM_RANGE(0x4000, 0x7fff) AM_ROMBANK(1)                  /* banked ROM/RAM area */
305   AM_RANGE(0x8000, 0xffff) AM_ROM                        /* ROM */
322306ADDRESS_MAP_END
323307
324308#if 0
325static ADDRESS_MAP_START( readmem_sound, ADDRESS_SPACE_PROGRAM, 8 )
326   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)               /* ROM */
327   AM_RANGE(0x8000, 0x87ef) AM_READ(SMH_RAM)               /* RAM */
328   AM_RANGE(0x87f0, 0x87ff) AM_READ(SMH_RAM)               /* ??? */
329   AM_RANGE(0x9000, 0x9001) AM_DEVREAD("ym", ym2203_r)   /* YM 2203 */
330   AM_RANGE(0x9008, 0x9009) AM_DEVREAD("ym", ym2203_r)   /* ??? */
331   AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_r)            /* soundlatch_r? */
332   AM_RANGE(0x8800, 0xfffb) AM_READ(SMH_ROM)               /* ROM? */
333   AM_RANGE(0xfffc, 0xffff) AM_READ(SMH_RAM)               /* ??? */
309static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 )
310   AM_RANGE(0x0000, 0x7fff) AM_ROM                              /* ROM */
311   AM_RANGE(0x8000, 0x87ef) AM_RAM                              /* RAM */
312   AM_RANGE(0x87f0, 0x87ff) AM_RAM                              /* ??? */
313   AM_RANGE(0x9000, 0x9001) AM_DEVREADWRITE("ym", ym2203_r, ym2203_w)   /* YM 2203 */
314   AM_RANGE(0x9008, 0x9009) AM_DEVREAD("ym", ym2203_r)               /* ??? */
315   AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_r)                  /* soundlatch_r? */
316   AM_RANGE(0x8800, 0xfffb) AM_ROM                              /* ROM? */
317   AM_RANGE(0xfffc, 0xffff) AM_RAM                              /* ??? */
334318ADDRESS_MAP_END
335
336static ADDRESS_MAP_START( writemem_sound, ADDRESS_SPACE_PROGRAM, 8 )
337   AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM)            /* ROM */
338   AM_RANGE(0x8000, 0x87ef) AM_WRITE(SMH_RAM)            /* RAM */
339   AM_RANGE(0x87f0, 0x87ff) AM_WRITE(SMH_RAM)            /* ??? */
340    AM_RANGE(0x9000, 0x9001) AM_DEVWRITE("ym", ym2203_w)   /* YM 2203 */
341   //AM_RANGE(0x9800, 0x9800) AM_WRITE(combasc_unknown_w_1)    /* OKIM5205? */
342   //AM_RANGE(0xa800, 0xa800) AM_WRITE(combasc_unknown_w_2)    /* OKIM5205? */
343   AM_RANGE(0x8800, 0xfffb) AM_WRITE(SMH_ROM)            /* ROM */
344   AM_RANGE(0xfffc, 0xffff) AM_WRITE(SMH_RAM)            /* ??? */
345ADDRESS_MAP_END
346319#endif
347320
348static ADDRESS_MAP_START( combasc_readmem_sound, ADDRESS_SPACE_PROGRAM, 8 )
349   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)               /* ROM */
350   AM_RANGE(0x8000, 0x87ff) AM_READ(SMH_RAM)               /* RAM */
351   AM_RANGE(0xb000, 0xb000) AM_DEVREAD("upd", combasc_busy_r)   /* upd7759 busy? */
352   AM_RANGE(0xd000, 0xd000) AM_READ(soundlatch_r)            /* soundlatch_r? */
353   AM_RANGE(0xe000, 0xe001) AM_DEVREAD("ym", combasc_ym2203_r)   /* YM 2203 intercepted */
354ADDRESS_MAP_END
321static ADDRESS_MAP_START( combasc_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
322   AM_RANGE(0x0000, 0x7fff) AM_ROM                                    /* ROM */
323   AM_RANGE(0x8000, 0x87ff) AM_RAM                                    /* RAM */
355324
356static ADDRESS_MAP_START( combasc_writemem_sound, ADDRESS_SPACE_PROGRAM, 8 )
357   AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM)            /* ROM */
358   AM_RANGE(0x8000, 0x87ff) AM_WRITE(SMH_RAM)            /* RAM */
359   AM_RANGE(0x9000, 0x9000) AM_DEVWRITE("upd", combasc_play_w)         /* upd7759 play voice */
360   AM_RANGE(0xa000, 0xa000) AM_DEVWRITE("upd", upd7759_port_w)         /* upd7759 voice select */
361   AM_RANGE(0xc000, 0xc000) AM_DEVWRITE("upd", combasc_voice_reset_w)   /* upd7759 reset? */
362    AM_RANGE(0xe000, 0xe001) AM_DEVWRITE("ym", ym2203_w)   /* YM 2203 */
325   AM_RANGE(0x9000, 0x9000) AM_DEVWRITE("upd", combasc_play_w)               /* upd7759 play voice */
326   AM_RANGE(0xa000, 0xa000) AM_DEVWRITE("upd", upd7759_port_w)               /* upd7759 voice select */
327   AM_RANGE(0xb000, 0xb000) AM_DEVREAD("upd", combasc_busy_r)               /* upd7759 busy? */
328   AM_RANGE(0xc000, 0xc000) AM_DEVWRITE("upd", combasc_voice_reset_w)         /* upd7759 reset? */
329
330   AM_RANGE(0xd000, 0xd000) AM_READ(soundlatch_r)                        /* soundlatch_r? */
331   AM_RANGE(0xe000, 0xe001) AM_DEVREADWRITE("ym", combasc_ym2203_r, ym2203_w)   /* YM 2203 intercepted */
363332ADDRESS_MAP_END
364333
365334
r4679r4680
581550
582551   /* basic machine hardware */
583552   MDRV_CPU_ADD("maincpu", HD6309, 3000000*4)   /* 3 MHz? */
584   MDRV_CPU_PROGRAM_MAP(combasc_readmem,combasc_writemem)
553   MDRV_CPU_PROGRAM_MAP(combasc_map,0)
585554   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
586555
587556   MDRV_CPU_ADD("audiocpu", Z80,3579545)   /* 3.579545 MHz */
588   MDRV_CPU_PROGRAM_MAP(combasc_readmem_sound,combasc_writemem_sound)
557   MDRV_CPU_PROGRAM_MAP(combasc_sound_map,0)
589558
590559   MDRV_QUANTUM_TIME(HZ(1200))
591560
r4679r4680
622591
623592   /* basic machine hardware */
624593   MDRV_CPU_ADD("maincpu", HD6309, 3000000*4)   /* 3 MHz? */
625   MDRV_CPU_PROGRAM_MAP(combascb_readmem,combascb_writemem)
594   MDRV_CPU_PROGRAM_MAP(combascb_map,0)
626595   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
627596
628597   MDRV_CPU_ADD("audiocpu", Z80,3579545)   /* 3.579545 MHz */
629   MDRV_CPU_PROGRAM_MAP(combasc_readmem_sound,combasc_writemem_sound) /* FAKE */
598   MDRV_CPU_PROGRAM_MAP(combasc_sound_map,0) /* FAKE */
630599
631600   MDRV_QUANTUM_TIME(HZ(1200))
632601
r4679r4680
832801static DRIVER_INIT( combasc )
833802{
834803   /* joystick instead of trackball */
835   memory_install_read_port_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x0404, 0x0404, 0, 0, "IN1");
804   memory_install_read_port_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x0404, 0x0404, 0, 0, "IN1");
836805
837806   combasc_init_common(machine);
838807}
src/mame/drivers/quizpun2.c
r4679r4680
119119
120120***************************************************************************/
121121
122typedef enum { STATE_IDLE = 0, STATE_ADDR_R, STATE_ROM_R, STATE_EEPROM_R, STATE_EEPROM_W } prot_state;
122123static struct {
123   enum { STATE_IDLE = 0, STATE_ADDR_R, STATE_ROM_R, STATE_EEPROM_R, STATE_EEPROM_W } state;
124   prot_state state;
124125   int wait_param;
125126   int param;
126127   int cmd;
r4679r4680
280281
281282static WRITE8_HANDLER( quizpun2_irq_ack )
282283{
283   cpu_set_input_line(space->machine->cpu[0], INPUT_LINE_IRQ0, CLEAR_LINE);
284   cputag_set_input_line(space->machine, "maincpu", INPUT_LINE_IRQ0, CLEAR_LINE);
284285}
285286
286287static WRITE8_HANDLER( quizpun2_soundlatch_w )
287288{
288289   soundlatch_w(space, 0, data);
289   cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_NMI, PULSE_LINE);
290   cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
290291}
291292
292293static ADDRESS_MAP_START( quizpun2_map, ADDRESS_SPACE_PROGRAM, 8 )
src/mame/drivers/rockrage.c
r4679r4680
8787static WRITE8_HANDLER( rockrage_sh_irqtrigger_w )
8888{
8989   soundlatch_w(space, offset, data);
90   cpu_set_input_line(space->machine->cpu[1],M6809_IRQ_LINE,HOLD_LINE);
90   cputag_set_input_line(space->machine, "audiocpu", M6809_IRQ_LINE, HOLD_LINE);
9191}
9292
93static READ8_DEVICE_HANDLER( rockrage_VLM5030_busy_r ) {
93static READ8_DEVICE_HANDLER( rockrage_VLM5030_busy_r )
94{
9495   return ( vlm5030_bsy(device) ? 1 : 0 );
9596}
9697
97static WRITE8_DEVICE_HANDLER( rockrage_speech_w ) {
98static WRITE8_DEVICE_HANDLER( rockrage_speech_w )
99{
98100   /* bit2 = data bus enable */
99101   vlm5030_rst( device, ( data >> 1 ) & 0x01 );
100102   vlm5030_st( device, ( data >> 0 ) & 0x01 );
101103}
102104
103static ADDRESS_MAP_START( rockrage_readmem, ADDRESS_SPACE_PROGRAM, 8 )
104   AM_RANGE(0x0000, 0x1fff) AM_READ(K007342_r)         /* Color RAM + Video RAM */
105   AM_RANGE(0x2000, 0x21ff) AM_READ(K007420_r)         /* Sprite RAM */
106   AM_RANGE(0x2200, 0x23ff) AM_READ(K007342_scroll_r)   /* Scroll RAM */
107   AM_RANGE(0x2400, 0x247f) AM_READ(SMH_RAM)         /* Palette */
105static ADDRESS_MAP_START( rockrage_map, ADDRESS_SPACE_PROGRAM, 8 )
106   AM_RANGE(0x0000, 0x1fff) AM_READWRITE(K007342_r,K007342_w)               /* Color RAM + Video RAM */
107   AM_RANGE(0x2000, 0x21ff) AM_READWRITE(K007420_r,K007420_w)               /* Sprite RAM */
108   AM_RANGE(0x2200, 0x23ff) AM_READWRITE(K007342_scroll_r,K007342_scroll_w)   /* Scroll RAM */
109   AM_RANGE(0x2400, 0x247f) AM_RAM AM_BASE(&paletteram)                  /* Palette */
110   AM_RANGE(0x2600, 0x2607) AM_WRITE(K007342_vreg_w)                     /* Video Registers */
111   AM_RANGE(0x2e00, 0x2e00) AM_READ_PORT("SYSTEM")
108112   AM_RANGE(0x2e01, 0x2e01) AM_READ_PORT("P1")
109113   AM_RANGE(0x2e02, 0x2e02) AM_READ_PORT("P2")
110114   AM_RANGE(0x2e03, 0x2e03) AM_READ_PORT("DSW2")
111115   AM_RANGE(0x2e40, 0x2e40) AM_READ_PORT("DSW1")
112   AM_RANGE(0x2e00, 0x2e00) AM_READ_PORT("SYSTEM")
113   AM_RANGE(0x4000, 0x5fff) AM_READ(SMH_RAM)         /* RAM */
114   AM_RANGE(0x6000, 0x7fff) AM_READ(SMH_BANK1)         /* banked ROM */
115   AM_RANGE(0x8000, 0xffff) AM_READ(SMH_ROM)         /* ROM */
116   AM_RANGE(0x2e80, 0x2e80) AM_WRITE(rockrage_sh_irqtrigger_w)               /* cause interrupt on audio CPU */
117   AM_RANGE(0x2ec0, 0x2ec0) AM_WRITE(watchdog_reset_w)                     /* watchdog reset */
118   AM_RANGE(0x2f00, 0x2f00) AM_WRITE(rockrage_vreg_w)                     /* ??? */
119   AM_RANGE(0x2f40, 0x2f40) AM_WRITE(rockrage_bankswitch_w)               /* bankswitch control */
120   AM_RANGE(0x4000, 0x5fff) AM_RAM                                    /* RAM */
121   AM_RANGE(0x6000, 0x7fff) AM_ROMBANK(1)                              /* banked ROM */
122   AM_RANGE(0x8000, 0xffff) AM_ROM                                    /* ROM */
116123ADDRESS_MAP_END
117124
118static ADDRESS_MAP_START( rockrage_writemem, ADDRESS_SPACE_PROGRAM, 8 )
119   AM_RANGE(0x0000, 0x1fff) AM_WRITE(K007342_w)            /* Color RAM + Video RAM */
120   AM_RANGE(0x2000, 0x21ff) AM_WRITE(K007420_w)            /* Sprite RAM */
121   AM_RANGE(0x2200, 0x23ff) AM_WRITE(K007342_scroll_w)      /* Scroll RAM */
122   AM_RANGE(0x2400, 0x247f) AM_WRITE(SMH_RAM) AM_BASE(&paletteram)/* palette */
123   AM_RANGE(0x2600, 0x2607) AM_WRITE(K007342_vreg_w)         /* Video Registers */
124   AM_RANGE(0x2e80, 0x2e80) AM_WRITE(rockrage_sh_irqtrigger_w)/* cause interrupt on audio CPU */
125   AM_RANGE(0x2ec0, 0x2ec0) AM_WRITE(watchdog_reset_w)      /* watchdog reset */
126   AM_RANGE(0x2f00, 0x2f00) AM_WRITE(rockrage_vreg_w)      /* ??? */
127   AM_RANGE(0x2f40, 0x2f40) AM_WRITE(rockrage_bankswitch_w)   /* bankswitch control */
128   AM_RANGE(0x4000, 0x5fff) AM_WRITE(SMH_RAM)            /* RAM */
129   AM_RANGE(0x6000, 0x7fff) AM_WRITE(SMH_RAM)            /* banked ROM */
130   AM_RANGE(0x8000, 0xffff) AM_WRITE(SMH_ROM)            /* ROM */
125static ADDRESS_MAP_START( rockrage_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
126   AM_RANGE(0x2000, 0x2000) AM_DEVWRITE("vlm", vlm5030_data_w)             /* VLM5030 */
127   AM_RANGE(0x3000, 0x3000) AM_DEVREAD("vlm", rockrage_VLM5030_busy_r)         /* VLM5030 */
128   AM_RANGE(0x4000, 0x4000) AM_DEVWRITE("vlm", rockrage_speech_w)            /* VLM5030 */
129   AM_RANGE(0x5000, 0x5000) AM_READ(soundlatch_r)                        /* soundlatch_r */
130   AM_RANGE(0x6000, 0x6001) AM_DEVREADWRITE("ym", ym2151_r,ym2151_w)         /* YM 2151 */
131   AM_RANGE(0x7000, 0x77ff) AM_RAM                                    /* RAM */
132   AM_RANGE(0x8000, 0xffff) AM_ROM                                    /* ROM */
131133ADDRESS_MAP_END
132134
133static ADDRESS_MAP_START( rockrage_readmem_sound, ADDRESS_SPACE_PROGRAM, 8 )
134   AM_RANGE(0x3000, 0x3000) AM_DEVREAD("vlm", rockrage_VLM5030_busy_r)/* VLM5030 */
135   AM_RANGE(0x5000, 0x5000) AM_READ(soundlatch_r)         /* soundlatch_r */
136   AM_RANGE(0x6000, 0x6001) AM_DEVREAD("ym", ym2151_r)   /* YM 2151 */
137   AM_RANGE(0x7000, 0x77ff) AM_READ(SMH_RAM)            /* RAM */
138   AM_RANGE(0x8000, 0xffff) AM_READ(SMH_ROM)            /* ROM */
139ADDRESS_MAP_END
140
141static ADDRESS_MAP_START( rockrage_writemem_sound, ADDRESS_SPACE_PROGRAM, 8 )
142   AM_RANGE(0x2000, 0x2000) AM_DEVWRITE("vlm", vlm5030_data_w)          /* VLM5030 */
143   AM_RANGE(0x4000, 0x4000) AM_DEVWRITE("vlm", rockrage_speech_w)         /* VLM5030 */
144   AM_RANGE(0x6000, 0x6001) AM_DEVWRITE("ym", ym2151_w)      /* YM 2151 */
145   AM_RANGE(0x7000, 0x77ff) AM_WRITE(SMH_RAM)               /* RAM */
146   AM_RANGE(0x8000, 0xffff) AM_WRITE(SMH_ROM)               /* ROM */
147ADDRESS_MAP_END
148
149135/***************************************************************************
150136
151137    Input Ports
r4679r4680
286272
287273   /* basic machine hardware */
288274   MDRV_CPU_ADD("maincpu", HD6309, 3000000*4)      /* 24MHz/8 */
289   MDRV_CPU_PROGRAM_MAP(rockrage_readmem,rockrage_writemem)
275   MDRV_CPU_PROGRAM_MAP(rockrage_map,0)
290276   MDRV_CPU_VBLANK_INT("screen", rockrage_interrupt)
291277
292278   MDRV_CPU_ADD("audiocpu", M6809, 1500000)      /* 24MHz/16 */
293   MDRV_CPU_PROGRAM_MAP(rockrage_readmem_sound,rockrage_writemem_sound)
279   MDRV_CPU_PROGRAM_MAP(rockrage_sound_map,0)
294280
295281   /* video hardware */
296282   MDRV_SCREEN_ADD("screen", RASTER)
src/mame/drivers/stvinit.c
r4679r4680
119119void install_stvbios_speedups(running_machine *machine)
120120{
121121   // flushes 0 & 1 on both CPUs are for the BIOS speedups
122   sh2drc_add_pcflush(machine->cpu[0], 0x60154b2);
123   sh2drc_add_pcflush(machine->cpu[0], 0x6013aee);
122   sh2drc_add_pcflush(cputag_get_cpu(machine, "maincpu"), 0x60154b2);
123   sh2drc_add_pcflush(cputag_get_cpu(machine, "maincpu"), 0x6013aee);
124124
125   sh2drc_add_pcflush(machine->cpu[1], 0x60154b2);
126   sh2drc_add_pcflush(machine->cpu[1], 0x6013aee);
125   sh2drc_add_pcflush(cputag_get_cpu(machine, "slave"), 0x60154b2);
126   sh2drc_add_pcflush(cputag_get_cpu(machine, "slave"), 0x6013aee);
127127}
128128
129129DRIVER_INIT(shienryu)
r4679r4680
132132   stv_default_eeprom_length = sizeof(shienryu_default_eeprom);
133133
134134   // master
135   sh2drc_add_pcflush(machine->cpu[0], 0x60041c6);
135   sh2drc_add_pcflush(cputag_get_cpu(machine, "maincpu"), 0x60041c6);
136136   // slave
137   sh2drc_add_pcflush(machine->cpu[1], 0x600440e);
137   sh2drc_add_pcflush(cputag_get_cpu(machine, "slave"), 0x600440e);
138138
139139   DRIVER_INIT_CALL(stv);
140140}
r4679r4680
149149    (loops for 263473 instructions)
150150*/
151151   // master
152   sh2drc_add_pcflush(machine->cpu[0], 0x6018640);
152   sh2drc_add_pcflush(cputag_get_cpu(machine, "maincpu"), 0x6018640);
153153   // slave
154   sh2drc_add_pcflush(machine->cpu[1], 0x6018c6e);
154   sh2drc_add_pcflush(cputag_get_cpu(machine, "slave"), 0x6018c6e);
155155
156156   DRIVER_INIT_CALL(stv);
157157
r4679r4680
179179
180180   (loops for 288688 instructions)
181181*/
182   sh2drc_add_pcflush(machine->cpu[0], 0x6010160);
182   sh2drc_add_pcflush(cputag_get_cpu(machine, "maincpu"), 0x6010160);
183183
184184   DRIVER_INIT_CALL(stv);
185185}
r4679r4680
205205
206206DRIVER_INIT(puyosun)
207207{
208   sh2drc_add_pcflush(machine->cpu[0], 0x6021cf0);
208   sh2drc_add_pcflush(cputag_get_cpu(machine, "maincpu"), 0x6021cf0);
209209
210   sh2drc_add_pcflush(machine->cpu[1], 0x60236fe);
210   sh2drc_add_pcflush(cputag_get_cpu(machine, "slave"), 0x60236fe);
211211
212212   DRIVER_INIT_CALL(stv);
213213
r4679r4680
227227
228228DRIVER_INIT(mausuke)
229229{
230   sh2drc_add_pcflush(machine->cpu[0], 0x60461A0);
230   sh2drc_add_pcflush(cputag_get_cpu(machine, "maincpu"), 0x60461A0);
231231
232232   DRIVER_INIT_CALL(stv);
233233
r4679r4680
237237
238238DRIVER_INIT(cottonbm)
239239{
240//  sh2drc_add_pcflush(machine->cpu[0], 0x6030ee2);
241//  sh2drc_add_pcflush(machine->cpu[1], 0x6032b52);
240//  sh2drc_add_pcflush(cputag_get_cpu(machine, "maincpu"), 0x6030ee2);
241//  sh2drc_add_pcflush(cputag_get_cpu(machine, "slave"), 0x6032b52);
242242
243243   DRIVER_INIT_CALL(stv);
244244
r4679r4680
247247
248248DRIVER_INIT(cotton2)
249249{
250   sh2drc_add_pcflush(machine->cpu[0], 0x6031c7a);
251   sh2drc_add_pcflush(machine->cpu[1], 0x60338ea);
250   sh2drc_add_pcflush(cputag_get_cpu(machine, "maincpu"), 0x6031c7a);
251   sh2drc_add_pcflush(cputag_get_cpu(machine, "slave"), 0x60338ea);
252252
253253   DRIVER_INIT_CALL(stv);
254254
r4679r4680
258258DRIVER_INIT(dnmtdeka)
259259{
260260   // install all 3 speedups on both master and slave
261   sh2drc_add_pcflush(machine->cpu[0], 0x6027c90);
262   sh2drc_add_pcflush(machine->cpu[0], 0xd04);
263   sh2drc_add_pcflush(machine->cpu[0], 0x60051f2);
261   sh2drc_add_pcflush(cputag_get_cpu(machine, "maincpu"), 0x6027c90);
262   sh2drc_add_pcflush(cputag_get_cpu(machine, "maincpu"), 0xd04);
263   sh2drc_add_pcflush(cputag_get_cpu(machine, "maincpu"), 0x60051f2);
264264
265   sh2drc_add_pcflush(machine->cpu[1], 0x6027c90);
266   sh2drc_add_pcflush(machine->cpu[1], 0xd04);
267   sh2drc_add_pcflush(machine->cpu[1], 0x60051f2);
265   sh2drc_add_pcflush(cputag_get_cpu(machine, "slave"), 0x6027c90);
266   sh2drc_add_pcflush(cputag_get_cpu(machine, "slave"), 0xd04);
267   sh2drc_add_pcflush(cputag_get_cpu(machine, "slave"), 0x60051f2);
268268
269269   DRIVER_INIT_CALL(stv);
270270}
r4679r4680
272272DRIVER_INIT(diehard)
273273{
274274   // install all 3 speedups on both master and slave
275   sh2drc_add_pcflush(machine->cpu[0], 0x6027c98);
276   sh2drc_add_pcflush(machine->cpu[0], 0xd04);
277   sh2drc_add_pcflush(machine->cpu[0], 0x60051f2);
275   sh2drc_add_pcflush(cputag_get_cpu(machine, "maincpu"), 0x6027c98);
276   sh2drc_add_pcflush(cputag_get_cpu(machine, "maincpu"), 0xd04);
277   sh2drc_add_pcflush(cputag_get_cpu(machine, "maincpu"), 0x60051f2);
278278
279   sh2drc_add_pcflush(machine->cpu[1], 0x6027c98);
280   sh2drc_add_pcflush(machine->cpu[1], 0xd04);
281   sh2drc_add_pcflush(machine->cpu[1], 0x60051f2);
279   sh2drc_add_pcflush(cputag_get_cpu(machine, "slave"), 0x6027c98);
280   sh2drc_add_pcflush(cputag_get_cpu(machine, "slave"), 0xd04);
281   sh2drc_add_pcflush(cputag_get_cpu(machine, "slave"), 0x60051f2);
282282
283283   DRIVER_INIT_CALL(stv);
284284}
285285
286286DRIVER_INIT(fhboxers)
287287{
288   sh2drc_add_pcflush(machine->cpu[0], 0x60041c2);
289   sh2drc_add_pcflush(machine->cpu[0], 0x600bb0a);
290   sh2drc_add_pcflush(machine->cpu[0], 0x600b31e);
288   sh2drc_add_pcflush(cputag_get_cpu(machine, "maincpu"), 0x60041c2);
289   sh2drc_add_pcflush(cputag_get_cpu(machine, "maincpu"), 0x600bb0a);
290   sh2drc_add_pcflush(cputag_get_cpu(machine, "maincpu"), 0x600b31e);
291291
292292   DRIVER_INIT_CALL(stv);
293293}
r4679r4680
311311
312312DRIVER_INIT( groovef )
313313{
314   sh2drc_add_pcflush(machine->cpu[0], 0x6005e7c);
315   sh2drc_add_pcflush(machine->cpu[0], 0x6005e86);
316   sh2drc_add_pcflush(machine->cpu[0], 0x60a4970);
314   sh2drc_add_pcflush(cputag_get_cpu(machine, "maincpu"), 0x6005e7c);
315   sh2drc_add_pcflush(cputag_get_cpu(machine, "maincpu"), 0x6005e86);
316   sh2drc_add_pcflush(cputag_get_cpu(machine, "maincpu"), 0x60a4970);
317317
318   sh2drc_add_pcflush(machine->cpu[1], 0x60060c2);
318   sh2drc_add_pcflush(cputag_get_cpu(machine, "slave"), 0x60060c2);
319319
320320   /* prevent game from hanging on startup -- todo: remove these hacks */
321   memory_install_read32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x60ca6cc, 0x60ca6cf, 0, 0, groovef_hack2_r );
322   memory_install_read32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x60fffcc, 0x60fffcf, 0, 0, groovef_hack1_r );
321   memory_install_read32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x60ca6cc, 0x60ca6cf, 0, 0, groovef_hack2_r );
322   memory_install_read32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x60fffcc, 0x60fffcf, 0, 0, groovef_hack1_r );
323323
324324   DRIVER_INIT_CALL(stv);
325325
r4679r4680
364364
365365DRIVER_INIT( danchih )
366366{
367   sh2drc_add_pcflush(machine->cpu[0], 0x6028b28);
368   sh2drc_add_pcflush(machine->cpu[0], 0x6028c8e);
369   sh2drc_add_pcflush(machine->cpu[1], 0x602ae26);
367   sh2drc_add_pcflush(cputag_get_cpu(machine, "maincpu"), 0x6028b28);
368   sh2drc_add_pcflush(cputag_get_cpu(machine, "maincpu"), 0x6028c8e);
369   sh2drc_add_pcflush(cputag_get_cpu(machine, "slave"), 0x602ae26);
370370
371371   /* prevent game from hanging on title screen -- todo: remove these hacks */
372   memory_install_read32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x60ffcbc, 0x60ffcbf, 0, 0, danchih_hack_r );
372   memory_install_read32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x60ffcbc, 0x60ffcbf, 0, 0, danchih_hack_r );
373373
374374   DRIVER_INIT_CALL(stv);
375375
r4679r4680
407407
408408DRIVER_INIT( astrass )
409409{
410   sh2drc_add_pcflush(machine->cpu[0], 0x60011b8);
411   sh2drc_add_pcflush(machine->cpu[0], 0x605b9da);
410   sh2drc_add_pcflush(cputag_get_cpu(machine, "maincpu"), 0x60011b8);
411   sh2drc_add_pcflush(cputag_get_cpu(machine, "maincpu"), 0x605b9da);
412412
413   memory_install_read32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x06000770, 0x06000773, 0, 0, astrass_hack_r );
413   memory_install_read32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x06000770, 0x06000773, 0, 0, astrass_hack_r );
414414
415415   install_astrass_protection(machine);
416416
r4679r4680
419419
420420DRIVER_INIT(thunt)
421421{
422   sh2drc_add_pcflush(machine->cpu[0], 0x602A024);
423   sh2drc_add_pcflush(machine->cpu[0], 0x6013EEA);
424   sh2drc_add_pcflush(machine->cpu[1], 0x602AAF8);
422   sh2drc_add_pcflush(cputag_get_cpu(machine, "maincpu"), 0x602A024);
423   sh2drc_add_pcflush(cputag_get_cpu(machine, "maincpu"), 0x6013EEA);
424   sh2drc_add_pcflush(cputag_get_cpu(machine, "slave"), 0x602AAF8);
425425
426426   DRIVER_INIT_CALL(stv);
427427
r4679r4680
430430
431431DRIVER_INIT(sandor)
432432{
433   sh2drc_add_pcflush(machine->cpu[0], 0x602a0f8);
434   sh2drc_add_pcflush(machine->cpu[0], 0x6013fbe);
435   sh2drc_add_pcflush(machine->cpu[1], 0x602abcc);
433   sh2drc_add_pcflush(cputag_get_cpu(machine, "maincpu"), 0x602a0f8);
434   sh2drc_add_pcflush(cputag_get_cpu(machine, "maincpu"), 0x6013fbe);
435   sh2drc_add_pcflush(cputag_get_cpu(machine, "slave"), 0x602abcc);
436436
437437   DRIVER_INIT_CALL(stv);
438438   minit_boost_timeslice = sinit_boost_timeslice = ATTOTIME_IN_USEC(1);
r4679r4680
441441
442442DRIVER_INIT(grdforce)
443443{
444   sh2drc_add_pcflush(machine->cpu[0], 0x6041e32);
445   sh2drc_add_pcflush(machine->cpu[1], 0x6043aa2);
444   sh2drc_add_pcflush(cputag_get_cpu(machine, "maincpu"), 0x6041e32);
445   sh2drc_add_pcflush(cputag_get_cpu(machine, "slave"), 0x6043aa2);
446446
447447   DRIVER_INIT_CALL(stv);
448448
r4679r4680
451451
452452DRIVER_INIT(batmanfr)
453453{
454   sh2drc_add_pcflush(machine->cpu[0], 0x60121c0);
455   sh2drc_add_pcflush(machine->cpu[1], 0x60125bc);
454   sh2drc_add_pcflush(cputag_get_cpu(machine, "maincpu"), 0x60121c0);
455   sh2drc_add_pcflush(cputag_get_cpu(machine, "slave"), 0x60125bc);
456456
457457   DRIVER_INIT_CALL(stv);
458458
r4679r4680
462462
463463DRIVER_INIT(colmns97)
464464{
465   sh2drc_add_pcflush(machine->cpu[1], 0x60298a2);
465   sh2drc_add_pcflush(cputag_get_cpu(machine, "slave"), 0x60298a2);
466466
467467   DRIVER_INIT_CALL(stv);
468468
r4679r4680
472472
473473DRIVER_INIT(winterht)
474474{
475   sh2drc_add_pcflush(machine->cpu[0], 0x6098aea);
476   sh2drc_add_pcflush(machine->cpu[1], 0x609ae4e);
475   sh2drc_add_pcflush(cputag_get_cpu(machine, "maincpu"), 0x6098aea);
476   sh2drc_add_pcflush(cputag_get_cpu(machine, "slave"), 0x609ae4e);
477477
478478   DRIVER_INIT_CALL(stv);
479479
r4679r4680
482482
483483DRIVER_INIT(seabass)
484484{
485   sh2drc_add_pcflush(machine->cpu[0], 0x602cbfa);
486   sh2drc_add_pcflush(machine->cpu[1], 0x60321ee);
485   sh2drc_add_pcflush(cputag_get_cpu(machine, "maincpu"), 0x602cbfa);
486   sh2drc_add_pcflush(cputag_get_cpu(machine, "slave"), 0x60321ee);
487487
488488   DRIVER_INIT_CALL(stv);
489489
r4679r4680
492492
493493DRIVER_INIT(vfremix)
494494{
495   sh2drc_add_pcflush(machine->cpu[0], 0x602c30c);
496   sh2drc_add_pcflush(machine->cpu[1], 0x604c332);
495   sh2drc_add_pcflush(cputag_get_cpu(machine, "maincpu"), 0x602c30c);
496   sh2drc_add_pcflush(cputag_get_cpu(machine, "slave"), 0x604c332);
497497
498498   DRIVER_INIT_CALL(stv);
499499
r4679r4680
502502
503503DRIVER_INIT(sss)
504504{
505   sh2drc_add_pcflush(machine->cpu[0], 0x6026398);
506   sh2drc_add_pcflush(machine->cpu[1], 0x6028cd6);
505   sh2drc_add_pcflush(cputag_get_cpu(machine, "maincpu"), 0x6026398);
506   sh2drc_add_pcflush(cputag_get_cpu(machine, "slave"), 0x6028cd6);
507507
508508   install_standard_protection(machine);
509509
r4679r4680
514514
515515DRIVER_INIT(othellos)
516516{
517   sh2drc_add_pcflush(machine->cpu[0], 0x602bcbe);
518   sh2drc_add_pcflush(machine->cpu[1], 0x602d92e);
517   sh2drc_add_pcflush(cputag_get_cpu(machine, "maincpu"), 0x602bcbe);
518   sh2drc_add_pcflush(cputag_get_cpu(machine, "slave"), 0x602d92e);
519519
520520   DRIVER_INIT_CALL(stv);
521521
r4679r4680
525525
526526DRIVER_INIT(sasissu)
527527{
528   sh2drc_add_pcflush(machine->cpu[1], 0x60710be);
528   sh2drc_add_pcflush(cputag_get_cpu(machine, "slave"), 0x60710be);
529529
530530   DRIVER_INIT_CALL(stv);
531531
r4679r4680
534534
535535DRIVER_INIT(gaxeduel)
536536{
537   sh2drc_add_pcflush(machine->cpu[0], 0x6012ee4);
537   sh2drc_add_pcflush(cputag_get_cpu(machine, "maincpu"), 0x6012ee4);
538538
539539   DRIVER_INIT_CALL(stv);
540540}
541541
542542DRIVER_INIT(suikoenb)
543543{
544   sh2drc_add_pcflush(machine->cpu[0], 0x6013f7a);
544   sh2drc_add_pcflush(cputag_get_cpu(machine, "maincpu"), 0x6013f7a);
545545
546546   DRIVER_INIT_CALL(stv);
547547}
r4679r4680
556556
557557DRIVER_INIT(znpwfv)
558558{
559   sh2drc_add_pcflush(machine->cpu[0], 0x6012ec2);
560   sh2drc_add_pcflush(machine->cpu[1], 0x60175a6);
559   sh2drc_add_pcflush(cputag_get_cpu(machine, "maincpu"), 0x6012ec2);
560   sh2drc_add_pcflush(cputag_get_cpu(machine, "slave"), 0x60175a6);
561561
562562   DRIVER_INIT_CALL(stv);
563563   minit_boost_timeslice = sinit_boost_timeslice = ATTOTIME_IN_NSEC(500);
r4679r4680
565565
566566DRIVER_INIT(twcup98)
567567{
568   sh2drc_add_pcflush(machine->cpu[0], 0x605edde);
569   sh2drc_add_pcflush(machine->cpu[1], 0x6062bca);
568   sh2drc_add_pcflush(cputag_get_cpu(machine, "maincpu"), 0x605edde);
569   sh2drc_add_pcflush(cputag_get_cpu(machine, "slave"), 0x6062bca);
570570
571571   DRIVER_INIT_CALL(stv);
572572   install_standard_protection(machine);
r4679r4680
576576
577577DRIVER_INIT(smleague)
578578{
579   sh2drc_add_pcflush(machine->cpu[0], 0x6063bf4);
580   sh2drc_add_pcflush(machine->cpu[1], 0x6062bca);
579   sh2drc_add_pcflush(cputag_get_cpu(machine, "maincpu"), 0x6063bf4);
580   sh2drc_add_pcflush(cputag_get_cpu(machine, "slave"), 0x6062bca);
581581
582582   DRIVER_INIT_CALL(stv);
583583
r4679r4680
586586
587587DRIVER_INIT(finlarch)
588588{
589   sh2drc_add_pcflush(machine->cpu[0], 0x6064d60);
589   sh2drc_add_pcflush(cputag_get_cpu(machine, "maincpu"), 0x6064d60);
590590
591591   DRIVER_INIT_CALL(stv);
592592
r4679r4680
594594
595595DRIVER_INIT(maruchan)
596596{
597   sh2drc_add_pcflush(machine->cpu[0], 0x601ba46);
598   sh2drc_add_pcflush(machine->cpu[1], 0x601ba46);
597   sh2drc_add_pcflush(cputag_get_cpu(machine, "maincpu"), 0x601ba46);
598   sh2drc_add_pcflush(cputag_get_cpu(machine, "slave"), 0x601ba46);
599599
600600   DRIVER_INIT_CALL(stv);
601601
r4679r4680
604604
605605DRIVER_INIT(pblbeach)
606606{
607   sh2drc_add_pcflush(machine->cpu[0], 0x605eb78);
607   sh2drc_add_pcflush(cputag_get_cpu(machine, "maincpu"), 0x605eb78);
608608
609609   DRIVER_INIT_CALL(stv);
610610}
611611
612612DRIVER_INIT(shanhigw)
613613{
614   sh2drc_add_pcflush(machine->cpu[0], 0x6020c5c);
614   sh2drc_add_pcflush(cputag_get_cpu(machine, "maincpu"), 0x6020c5c);
615615
616616   DRIVER_INIT_CALL(stv);
617617}
618618
619619DRIVER_INIT(elandore)
620620{
621   sh2drc_add_pcflush(machine->cpu[0], 0x604eac0);
622   sh2drc_add_pcflush(machine->cpu[1], 0x605340a);
621   sh2drc_add_pcflush(cputag_get_cpu(machine, "maincpu"), 0x604eac0);
622   sh2drc_add_pcflush(cputag_get_cpu(machine, "slave"), 0x605340a);
623623
624624   install_standard_protection(machine);
625625
r4679r4680
630630
631631DRIVER_INIT(rsgun)
632632{
633   sh2drc_add_pcflush(machine->cpu[0], 0x6034d04);
634   sh2drc_add_pcflush(machine->cpu[1], 0x6036152);
633   sh2drc_add_pcflush(cputag_get_cpu(machine, "maincpu"), 0x6034d04);
634   sh2drc_add_pcflush(cputag_get_cpu(machine, "slave"), 0x6036152);
635635
636636   install_standard_protection(machine);
637637
r4679r4680
655655
656656DRIVER_INIT(nameclv3)
657657{
658   sh2drc_add_pcflush(machine->cpu[0], 0x601eb4c);
659   sh2drc_add_pcflush(machine->cpu[1], 0x602b80e);
658   sh2drc_add_pcflush(cputag_get_cpu(machine, "maincpu"), 0x601eb4c);
659   sh2drc_add_pcflush(cputag_get_cpu(machine, "slave"), 0x602b80e);
660660
661661   DRIVER_INIT_CALL(stv);
662662}
src/mame/drivers/ttchamp.c
r4679r4680
123123static ADDRESS_MAP_START( ttchamp_map, ADDRESS_SPACE_PROGRAM, 16 )
124124    AM_RANGE(0x00000, 0x0ffff) AM_RAM
125125    AM_RANGE(0x10000, 0x1ffff) AM_RAM AM_BASE(&peno_vram)
126    AM_RANGE(0x20000, 0x7ffff) AM_READ(SMH_BANK1) // ?
127    AM_RANGE(0x80000, 0xfffff) AM_READ(SMH_BANK2) // ?
126    AM_RANGE(0x20000, 0x7ffff) AM_READ(SMH_BANK(1)) // ?
127    AM_RANGE(0x80000, 0xfffff) AM_READ(SMH_BANK(2)) // ?
128128ADDRESS_MAP_END
129129
130130static ADDRESS_MAP_START( ttchamp_io, ADDRESS_SPACE_IO, 16 )
src/mame/drivers/egghunt.c
r4679r4680
146146static VIDEO_START(egghunt)
147147{
148148   bg_tilemap = tilemap_create(machine, get_bg_tile_info,tilemap_scan_rows,8,8,64, 32);
149   egghunt_bgram = auto_malloc(0x1000);
150   egghunt_spram = auto_malloc(0x1000);
149   egghunt_bgram = auto_alloc_array(machine, UINT8, 0x1000);
150   egghunt_spram = auto_alloc_array(machine, UINT8, 0x1000);
151151}
152152
153153static VIDEO_UPDATE(egghunt)
r4679r4680
173173
174174static WRITE8_HANDLER( egghunt_soundlatch_w )
175175{
176   soundlatch_w(space,0,data);
177   cpu_set_input_line(space->machine->cpu[1],0,HOLD_LINE);
176   soundlatch_w(space, 0, data);
177   cputag_set_input_line(space->machine, "audiocpu", 0, HOLD_LINE);
178178}
179179
180180static READ8_DEVICE_HANDLER( egghunt_okibanking_r )
r4679r4680
188188   okim6295_set_bank_base(device, (data & 0x10) ? 0x40000 : 0);
189189}
190190
191static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 )
192   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
193   AM_RANGE(0xc000, 0xcfff) AM_READ(SMH_RAM)
194   AM_RANGE(0xd000, 0xdfff) AM_READ(egghunt_bgram_r)
195   AM_RANGE(0xe000, 0xffff) AM_READ(SMH_RAM)
191static ADDRESS_MAP_START( egghunt_map, ADDRESS_SPACE_PROGRAM, 8 )
192   AM_RANGE(0x0000, 0x7fff) AM_ROM
193   AM_RANGE(0xc000, 0xc7ff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_le_w) AM_BASE(&paletteram)
194   AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(egghunt_atram_w) AM_BASE(&egghunt_atram)
195   AM_RANGE(0xd000, 0xdfff) AM_READWRITE(egghunt_bgram_r, egghunt_bgram_w)
196   AM_RANGE(0xe000, 0xffff) AM_RAM
196197ADDRESS_MAP_END
197198
198static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 )
199   AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM)
200   AM_RANGE(0xc000, 0xc7ff) AM_WRITE(paletteram_xRRRRRGGGGGBBBBB_le_w) AM_BASE(&paletteram)
201   AM_RANGE(0xc800, 0xcfff) AM_WRITE(egghunt_atram_w) AM_BASE(&egghunt_atram)
202   AM_RANGE(0xd000, 0xdfff) AM_WRITE(egghunt_bgram_w)
203   AM_RANGE(0xe000, 0xffff) AM_WRITE(SMH_RAM)
204ADDRESS_MAP_END
205199
206
207200static ADDRESS_MAP_START( io_map, ADDRESS_SPACE_IO, 8 )
208201   ADDRESS_MAP_GLOBAL_MASK(0xff)
209202   AM_RANGE(0x00, 0x00) AM_READ_PORT("DSW1") AM_WRITE(egghunt_vidram_bank_w)
r4679r4680
215208   AM_RANGE(0x07, 0x07) AM_WRITENOP
216209ADDRESS_MAP_END
217210
218static ADDRESS_MAP_START( sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
219   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
211static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 )
212   AM_RANGE(0x0000, 0x7fff) AM_ROM
220213   AM_RANGE(0xe000, 0xe000) AM_READ(soundlatch_r)
221   AM_RANGE(0xe004, 0xe004) AM_DEVREAD("oki", okim6295_r)
222   AM_RANGE(0xf000, 0xffff) AM_READ(SMH_RAM)
223ADDRESS_MAP_END
224
225static ADDRESS_MAP_START( sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
226   AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM)
227214   AM_RANGE(0xe001, 0xe001) AM_DEVREADWRITE("oki", egghunt_okibanking_r, egghunt_okibanking_w)
228   AM_RANGE(0xe004, 0xe004) AM_DEVWRITE("oki", okim6295_w)
229   AM_RANGE(0xf000, 0xffff) AM_WRITE(SMH_RAM)
215   AM_RANGE(0xe004, 0xe004) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w)
216   AM_RANGE(0xf000, 0xffff) AM_RAM
230217ADDRESS_MAP_END
231218
232219
r4679r4680
379366static MACHINE_DRIVER_START( egghunt )
380367   /* basic machine hardware */
381368   MDRV_CPU_ADD("maincpu", Z80,12000000/2)       /* 6 MHz ?*/
382   MDRV_CPU_PROGRAM_MAP(readmem,writemem)
369   MDRV_CPU_PROGRAM_MAP(egghunt_map,0)
383370   MDRV_CPU_IO_MAP(io_map,0)
384371   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold) // or 2 like mitchell.c?
385372
386373   MDRV_CPU_ADD("audiocpu", Z80,12000000/2)       /* 6 MHz ?*/
387   MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem)
374   MDRV_CPU_PROGRAM_MAP(sound_map,0)
388375
389376   MDRV_MACHINE_RESET(egghunt)
390377
r4679r4680
434421ROM_END
435422
436423GAME( 1995, egghunt, 0, egghunt, egghunt, 0, ROT0, "Invi Image", "Egg Hunt", 0 )
437
src/mame/drivers/buggychl.c
r4679r4680
100100
101101static TIMER_CALLBACK( nmi_callback )
102102{
103   if (sound_nmi_enable) cpu_set_input_line(machine->cpu[1],INPUT_LINE_NMI,PULSE_LINE);
103   if (sound_nmi_enable) cputag_set_input_line(machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
104104   else pending_nmi = 1;
105105}
106106
107107static WRITE8_HANDLER( sound_command_w )
108108{
109   soundlatch_w(space,0,data);
110   timer_call_after_resynch(space->machine, NULL, data,nmi_callback);
109   soundlatch_w(space, 0, data);
110   timer_call_after_resynch(space->machine, NULL, data, nmi_callback);
111111}
112112
113113static WRITE8_HANDLER( nmi_disable_w )
r4679r4680
120120   sound_nmi_enable = 1;
121121   if (pending_nmi)
122122   {
123      cpu_set_input_line(space->machine->cpu[1],INPUT_LINE_NMI,PULSE_LINE);
123      cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
124124      pending_nmi = 0;
125125   }
126126}
r4679r4680
132132
133133
134134
135static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 )
136   AM_RANGE(0x0000, 0x3fff) AM_READ(SMH_ROM)      /* A22-04 (23) */
137   AM_RANGE(0x4000, 0x7fff) AM_READ(SMH_ROM)      /* A22-05 (22) */
138   AM_RANGE(0x8000, 0x87ff) AM_READ(SMH_RAM)      /* 6116 SRAM (36) */
139   AM_RANGE(0x8800, 0x8fff) AM_READ(SMH_RAM)      /* 6116 SRAM (35) */
140   AM_RANGE(0xa000, 0xbfff) AM_READ(SMH_BANK1)
141   AM_RANGE(0xc800, 0xcfff) AM_READ(SMH_RAM)
142   AM_RANGE(0xd400, 0xd400) AM_READ(buggychl_mcu_r)
135static ADDRESS_MAP_START( buggychl_map, ADDRESS_SPACE_PROGRAM, 8 )
136   AM_RANGE(0x0000, 0x3fff) AM_ROM /* A22-04 (23) */
137   AM_RANGE(0x4000, 0x7fff) AM_ROM /* A22-05 (22) */
138   AM_RANGE(0x8000, 0x87ff) AM_RAM /* 6116 SRAM (36) */
139   AM_RANGE(0x8800, 0x8fff) AM_RAM /* 6116 SRAM (35) */
140   AM_RANGE(0x9000, 0x9fff) AM_WRITE(buggychl_sprite_lookup_w)
141   AM_RANGE(0xa000, 0xbfff) AM_READWRITE(SMH_BANK(1), buggychl_chargen_w) AM_BASE(&buggychl_character_ram)
142   AM_RANGE(0xc800, 0xcfff) AM_RAM AM_BASE(&videoram) AM_SIZE(&videoram_size)
143   AM_RANGE(0xd100, 0xd100) AM_WRITE(buggychl_ctrl_w)
144   AM_RANGE(0xd200, 0xd200) AM_WRITE(bankswitch_w)
145   AM_RANGE(0xd300, 0xd300) AM_WRITE(watchdog_reset_w)
146   AM_RANGE(0xd303, 0xd303) AM_WRITE(buggychl_sprite_lookup_bank_w)
147   AM_RANGE(0xd400, 0xd400) AM_READWRITE(buggychl_mcu_r, buggychl_mcu_w)
143148   AM_RANGE(0xd401, 0xd401) AM_READ(buggychl_mcu_status_r)
149   AM_RANGE(0xd500, 0xd57f) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
144150   AM_RANGE(0xd600, 0xd600) AM_READ_PORT("DSW1")
145151   AM_RANGE(0xd601, 0xd601) AM_READ_PORT("DSW2")
146152   AM_RANGE(0xd602, 0xd602) AM_READ_PORT("DSW3")
r4679r4680
149155   AM_RANGE(0xd609, 0xd609) AM_READ_PORT("IN1")   /* coin + accelerator */
150156//  AM_RANGE(0xd60a, 0xd60a) // other inputs, not used?
151157//  AM_RANGE(0xd60b, 0xd60b) // other inputs, not used?
152ADDRESS_MAP_END
153
154static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 )
155   AM_RANGE(0x0000, 0x3fff) AM_WRITE(SMH_ROM) /* A22-04 (23) */
156   AM_RANGE(0x4000, 0x7fff) AM_WRITE(SMH_ROM) /* A22-05 (22) */
157   AM_RANGE(0x8000, 0x87ff) AM_WRITE(SMH_RAM) /* 6116 SRAM (36) */
158   AM_RANGE(0x8800, 0x8fff) AM_WRITE(SMH_RAM) /* 6116 SRAM (35) */
159   AM_RANGE(0x9000, 0x9fff) AM_WRITE(buggychl_sprite_lookup_w)
160   AM_RANGE(0xa000, 0xbfff) AM_WRITE(buggychl_chargen_w) AM_BASE(&buggychl_character_ram)
161   AM_RANGE(0xc800, 0xcfff) AM_WRITE(SMH_RAM) AM_BASE(&videoram) AM_SIZE(&videoram_size)
162//  AM_RANGE(0xd000, 0xd000) // horizon
163   AM_RANGE(0xd100, 0xd100) AM_WRITE(buggychl_ctrl_w)
164   AM_RANGE(0xd200, 0xd200) AM_WRITE(bankswitch_w)
165   AM_RANGE(0xd300, 0xd300) AM_WRITE(watchdog_reset_w)
166//  AM_RANGE(0xd301, 0xd301)
167//  AM_RANGE(0xd302, 0xd302) // reset mcu
168   AM_RANGE(0xd303, 0xd303) AM_WRITE(buggychl_sprite_lookup_bank_w)
169//  AM_RANGE(0xd304, 0xd307) // sccon 1-4
170   AM_RANGE(0xd400, 0xd400) AM_WRITE(buggychl_mcu_w)
171   AM_RANGE(0xd500, 0xd57f) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
172158   AM_RANGE(0xd610, 0xd610) AM_WRITE(sound_command_w)
173//  AM_RANGE(0xd613, 0xd613) // reset sound cpu & sound chips
174159   AM_RANGE(0xd618, 0xd618) AM_WRITENOP   /* accelerator clear */
175160   AM_RANGE(0xd700, 0xd7ff) AM_WRITE(paletteram_xxxxRRRRGGGGBBBB_be_w) AM_BASE(&paletteram)
176161   AM_RANGE(0xd840, 0xd85f) AM_WRITE(SMH_RAM) AM_BASE(&buggychl_scrollv)
r4679r4680
179164   AM_RANGE(0xdc06, 0xdc06) AM_WRITE(buggychl_bg_scrollx_w)
180165ADDRESS_MAP_END
181166
182static ADDRESS_MAP_START( sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
183   AM_RANGE(0x0000, 0x3fff) AM_READ(SMH_ROM)
184   AM_RANGE(0x4000, 0x47ff) AM_READ(SMH_RAM)
185   AM_RANGE(0x5000, 0x5000) AM_READ(soundlatch_r)
186//  AM_RANGE(0x5001, 0x5001) AM_READ(SMH_RAM)   /* is command pending? */
187   AM_RANGE(0xe000, 0xefff) AM_READ(SMH_ROM)   /* space for diagnostics ROM */
188ADDRESS_MAP_END
189
190static ADDRESS_MAP_START( sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
191   AM_RANGE(0x0000, 0x3fff) AM_WRITE(SMH_ROM)
192   AM_RANGE(0x4000, 0x47ff) AM_WRITE(SMH_RAM)
167static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 )
168   AM_RANGE(0x0000, 0x3fff) AM_ROM
169   AM_RANGE(0x4000, 0x47ff) AM_RAM
193170   AM_RANGE(0x4800, 0x4801) AM_DEVWRITE("ay1", ay8910_address_data_w)
194171   AM_RANGE(0x4802, 0x4803) AM_DEVWRITE("ay2", ay8910_address_data_w)
195172   AM_RANGE(0x4810, 0x481d) AM_DEVWRITE("msm", msm5232_w)
196   AM_RANGE(0x4820, 0x4820) AM_WRITE(SMH_RAM)   /* VOL/BAL   for the 7630 on the MSM5232 output */
197   AM_RANGE(0x4830, 0x4830) AM_WRITE(SMH_RAM)   /* TRBL/BASS for the 7630 on the MSM5232 output  */
198//  AM_RANGE(0x5000, 0x5000) AM_WRITE(SMH_RAM)  /* to main cpu */
173   AM_RANGE(0x4820, 0x4820) AM_RAM   /* VOL/BAL   for the 7630 on the MSM5232 output */
174   AM_RANGE(0x4830, 0x4830) AM_RAM   /* TRBL/BASS for the 7630 on the MSM5232 output  */
175   AM_RANGE(0x5000, 0x5000) AM_READ(soundlatch_r)
176//  AM_RANGE(0x5001, 0x5001) AM_READ(SMH_RAM)   /* is command pending? */
199177   AM_RANGE(0x5001, 0x5001) AM_WRITE(nmi_enable_w)
200178   AM_RANGE(0x5002, 0x5002) AM_WRITE(nmi_disable_w)
201179   AM_RANGE(0x5003, 0x5003) AM_WRITE(sound_enable_w)
202   AM_RANGE(0xe000, 0xefff) AM_WRITE(SMH_ROM)
180   AM_RANGE(0xe000, 0xefff) AM_ROM   /* space for diagnostics ROM */
203181ADDRESS_MAP_END
204182
205static ADDRESS_MAP_START( mcu_readmem, ADDRESS_SPACE_PROGRAM, 8 )
183static ADDRESS_MAP_START( mcu_map, ADDRESS_SPACE_PROGRAM, 8 )
206184   ADDRESS_MAP_GLOBAL_MASK(0x7ff)
207   AM_RANGE(0x0000, 0x0000) AM_READ(buggychl_68705_portA_r)
208   AM_RANGE(0x0001, 0x0001) AM_READ(buggychl_68705_portB_r)
209   AM_RANGE(0x0002, 0x0002) AM_READ(buggychl_68705_portC_r)
210   AM_RANGE(0x0010, 0x007f) AM_READ(SMH_RAM)
211   AM_RANGE(0x0080, 0x07ff) AM_READ(SMH_ROM)
212ADDRESS_MAP_END
213
214static ADDRESS_MAP_START( mcu_writemem, ADDRESS_SPACE_PROGRAM, 8 )
215   ADDRESS_MAP_GLOBAL_MASK(0x7ff)
216   AM_RANGE(0x0000, 0x0000) AM_WRITE(buggychl_68705_portA_w)
217   AM_RANGE(0x0001, 0x0001) AM_WRITE(buggychl_68705_portB_w)
218   AM_RANGE(0x0002, 0x0002) AM_WRITE(buggychl_68705_portC_w)
185   AM_RANGE(0x0000, 0x0000) AM_READWRITE(buggychl_68705_portA_r, buggychl_68705_portA_w)
186   AM_RANGE(0x0001, 0x0001) AM_READWRITE(buggychl_68705_portB_r, buggychl_68705_portB_w)
187   AM_RANGE(0x0002, 0x0002) AM_READWRITE(buggychl_68705_portC_r, buggychl_68705_portC_w)
219188   AM_RANGE(0x0004, 0x0004) AM_WRITE(buggychl_68705_ddrA_w)
220189   AM_RANGE(0x0005, 0x0005) AM_WRITE(buggychl_68705_ddrB_w)
221190   AM_RANGE(0x0006, 0x0006) AM_WRITE(buggychl_68705_ddrC_w)
222   AM_RANGE(0x0010, 0x007f) AM_WRITE(SMH_RAM)
223   AM_RANGE(0x0080, 0x07ff) AM_WRITE(SMH_ROM)
191   AM_RANGE(0x0010, 0x007f) AM_RAM
192   AM_RANGE(0x0080, 0x07ff) AM_ROM
224193ADDRESS_MAP_END
225194
226195/******************************************************************************/
r4679r4680
406375
407376   /* basic machine hardware */
408377   MDRV_CPU_ADD("maincpu", Z80, 4000000) /* 4 MHz??? */
409   MDRV_CPU_PROGRAM_MAP(readmem,writemem)
378   MDRV_CPU_PROGRAM_MAP(buggychl_map,0)
410379   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
411380
412381   MDRV_CPU_ADD("audiocpu", Z80, 4000000) /* 4 MHz??? */
413   MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem)
382   MDRV_CPU_PROGRAM_MAP(sound_map,0)
414383   MDRV_CPU_VBLANK_INT_HACK(irq0_line_hold,60)   /* irq is timed, tied to the cpu clock and not to vblank */
415384                     /* nmi is caused by the main cpu */
416385
417386   MDRV_CPU_ADD("mcu", M68705,8000000/2)  /* 4 MHz */
418   MDRV_CPU_PROGRAM_MAP(mcu_readmem,mcu_writemem)
387   MDRV_CPU_PROGRAM_MAP(mcu_map,0)
419388
420389   /* video hardware */
421390   MDRV_SCREEN_ADD("screen", RASTER)
src/mame/drivers/segac2.c
r4679r4680
6868
6969#include "driver.h"
7070#include "cpu/m68000/m68000.h"
71//#include "genesis.h"
72#include "megadriv.h"
7371#include "sound/okim6295.h"
7472#include "sound/sn76496.h"
7573#include "sound/2612intf.h"
7674#include "sound/upd7759.h"
7775
76#include "megadriv.h"
77
7878#define XL1_CLOCK         640000
7979#define XL2_CLOCK         53693175
8080
r4679r4680
13151315static void  segac2_irq2_interrupt(const device_config *device, int state)
13161316{
13171317   //printf("sound irq %d\n", state);
1318   cpu_set_input_line(device->machine->cpu[0], 2, state ? ASSERT_LINE : CLEAR_LINE);
1318   cputag_set_input_line(device->machine, "maincpu", 2, state ? ASSERT_LINE : CLEAR_LINE);
13191319}
13201320static const ym3438_interface ym3438_intf =
13211321{
r4679r4680
13411341   VIDEO_START_CALL(megadriv);
13421342
13431343
1344   megadrive_vdp_palette_lookup = auto_malloc(0x1000);
1345   megadrive_vdp_palette_lookup_sprite = auto_malloc(0x1000);
1346   megadrive_vdp_palette_lookup_shadow = auto_malloc(0x1000);
1347   megadrive_vdp_palette_lookup_highlight = auto_malloc(0x1000);
1344   megadrive_vdp_palette_lookup = auto_alloc_array(machine, UINT16, 0x1000/2);
1345   megadrive_vdp_palette_lookup_sprite = auto_alloc_array(machine, UINT16, 0x1000/2);
1346   megadrive_vdp_palette_lookup_shadow = auto_alloc_array(machine, UINT16, 0x1000/2);
1347   megadrive_vdp_palette_lookup_highlight = auto_alloc_array(machine, UINT16, 0x1000/2);
13481348}
13491349
13501350static VIDEO_UPDATE(segac2_new)
r4679r4680
18261826   prot_func = func;
18271827
18281828   genvdp_use_cram = 0;
1829   genesis_has_z80 = 0;
18301829   genesis_always_irq6 = 1;
18311830   genesis_other_hacks = 0;
18321831
18331832   if (upd != NULL)
1834      memory_install_write16_device_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), upd, 0x880000, 0x880001, 0, 0x13fefe, segac2_upd7759_w);
1833      memory_install_write16_device_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), upd, 0x880000, 0x880001, 0, 0x13fefe, segac2_upd7759_w);
18351834}
18361835
18371836
r4679r4680
20882087{
20892088   /* disable the palette bank switching from the protection chip */
20902089   segac2_common_init(machine, NULL);
2091   memory_install_write16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x800000, 0x800001, 0, 0, SMH_NOP);
2090   memory_install_write16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x800000, 0x800001, 0, 0, (write16_space_func)SMH_NOP);
20922091}
20932092
20942093static DRIVER_INIT( borench )
r4679r4680
21762175{
21772176   segac2_common_init(machine, prot_func_pclub);
21782177
2179   memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x880120, 0x880121, 0, 0, printer_r );/*Print Club Vol.1*/
2180   memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x880124, 0x880125, 0, 0, printer_r );/*Print Club Vol.2*/
2181   memory_install_write16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x880124, 0x880125, 0, 0, print_club_camera_w);
2178   memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x880120, 0x880121, 0, 0, printer_r );/*Print Club Vol.1*/
2179   memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x880124, 0x880125, 0, 0, printer_r );/*Print Club Vol.2*/
2180   memory_install_write16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x880124, 0x880125, 0, 0, print_club_camera_w);
21822181}
21832182
21842183static DRIVER_INIT( pclubjv2 )
21852184{
21862185   segac2_common_init(machine, prot_func_pclubjv2);
21872186
2188   memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x880120, 0x880121, 0, 0, printer_r );/*Print Club Vol.1*/
2189   memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x880124, 0x880125, 0, 0, printer_r );/*Print Club Vol.2*/
2190   memory_install_write16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x880124, 0x880125, 0, 0, print_club_camera_w);
2187   memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x880120, 0x880121, 0, 0, printer_r );/*Print Club Vol.1*/
2188   memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x880124, 0x880125, 0, 0, printer_r );/*Print Club Vol.2*/
2189   memory_install_write16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x880124, 0x880125, 0, 0, print_club_camera_w);
21912190}
21922191
21932192static DRIVER_INIT( pclubjv4 )
21942193{
21952194   segac2_common_init(machine, prot_func_pclubjv4);
21962195
2197   memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x880120, 0x880121, 0, 0, printer_r );/*Print Club Vol.1*/
2198   memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x880124, 0x880125, 0, 0, printer_r );/*Print Club Vol.2*/
2199   memory_install_write16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x880124, 0x880125, 0, 0, print_club_camera_w);
2196   memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x880120, 0x880121, 0, 0, printer_r );/*Print Club Vol.1*/
2197   memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x880124, 0x880125, 0, 0, printer_r );/*Print Club Vol.2*/
2198   memory_install_write16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x880124, 0x880125, 0, 0, print_club_camera_w);
22002199}
22012200
22022201static DRIVER_INIT( pclubjv5 )
22032202{
22042203   segac2_common_init(machine, prot_func_pclubjv5);
22052204
2206   memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x880120, 0x880121, 0, 0, printer_r );/*Print Club Vol.1*/
2207   memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x880124, 0x880125, 0, 0, printer_r );/*Print Club Vol.2*/
2208   memory_install_write16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x880124, 0x880125, 0, 0, print_club_camera_w);
2205   memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x880120, 0x880121, 0, 0, printer_r );/*Print Club Vol.1*/
2206   memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x880124, 0x880125, 0, 0, printer_r );/*Print Club Vol.2*/
2207   memory_install_write16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x880124, 0x880125, 0, 0, print_club_camera_w);
22092208}
22102209
22112210
src/mame/drivers/gotcha.c
r4679r4680
106106
107107
108108
109static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 16 )
110   AM_RANGE(0x000000, 0x07ffff) AM_READ(SMH_ROM)
111   AM_RANGE(0x120000, 0x12ffff) AM_READ(SMH_RAM)
112   AM_RANGE(0x140000, 0x1405ff) AM_READ(SMH_RAM)
113   AM_RANGE(0x160000, 0x1607ff) AM_READ(SMH_RAM)
114   AM_RANGE(0x180000, 0x180001) AM_READ_PORT("INPUTS")
115   AM_RANGE(0x180002, 0x180003) AM_READ_PORT("SYSTEM")
116   AM_RANGE(0x180004, 0x180005) AM_READ_PORT("DSW")
117ADDRESS_MAP_END
118
119static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 16 )
120   AM_RANGE(0x000000, 0x07ffff) AM_WRITE(SMH_ROM)
109static ADDRESS_MAP_START( gotcha_map, ADDRESS_SPACE_PROGRAM, 16 )
110   AM_RANGE(0x000000, 0x07ffff) AM_ROM
121111   AM_RANGE(0x100000, 0x100001) AM_WRITE(soundlatch_word_w)
122112   AM_RANGE(0x100002, 0x100003) AM_WRITE(gotcha_lamps_w)
123113   AM_RANGE(0x100004, 0x100005) AM_DEVWRITE("oki", gotcha_oki_bank_w)
124   AM_RANGE(0x120000, 0x12ffff) AM_WRITE(SMH_RAM)
125   AM_RANGE(0x140000, 0x1405ff) AM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE(&paletteram16)
126   AM_RANGE(0x160000, 0x1607ff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)
114   AM_RANGE(0x120000, 0x12ffff) AM_RAM
115   AM_RANGE(0x140000, 0x1405ff) AM_RAM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE(&paletteram16)
116   AM_RANGE(0x160000, 0x1607ff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)
117   AM_RANGE(0x180000, 0x180001) AM_READ_PORT("INPUTS")
118   AM_RANGE(0x180002, 0x180003) AM_READ_PORT("SYSTEM")
119   AM_RANGE(0x180004, 0x180005) AM_READ_PORT("DSW")
127120   AM_RANGE(0x300000, 0x300001) AM_WRITE(gotcha_gfxbank_select_w)
128121   AM_RANGE(0x300002, 0x300009) AM_WRITE(gotcha_scroll_w)
129122//  { 0x30000c, 0x30000d,
r4679r4680
133126ADDRESS_MAP_END
134127
135128
136static ADDRESS_MAP_START( sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
137   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
138   AM_RANGE(0xc000, 0xc001) AM_DEVREAD("ym", ym2151_r)
129static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 )
130   AM_RANGE(0x0000, 0x7fff) AM_ROM
131   AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
132   AM_RANGE(0xc002, 0xc003) AM_DEVWRITE("oki", okim6295_w)   // TWO addresses!
139133   AM_RANGE(0xc006, 0xc006) AM_READ(soundlatch_r)
140   AM_RANGE(0xd000, 0xd7ff) AM_READ(SMH_RAM)
134   AM_RANGE(0xd000, 0xd7ff) AM_RAM
141135ADDRESS_MAP_END
142136
143static ADDRESS_MAP_START( sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
144   AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM)
145   AM_RANGE(0xc000, 0xc001) AM_DEVWRITE("ym", ym2151_w)
146   AM_RANGE(0xc002, 0xc003) AM_DEVWRITE("oki", okim6295_w)   // TWO addresses!
147   AM_RANGE(0xd000, 0xd7ff) AM_WRITE(SMH_RAM)
148ADDRESS_MAP_END
149137
150138
151
152139static INPUT_PORTS_START( gotcha )
153140   PORT_START("INPUTS")
154141   PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
r4679r4680
262249
263250static void irqhandler(const device_config *device, int linestate)
264251{
265   cpu_set_input_line(device->machine->cpu[1],0,linestate);
252   cputag_set_input_line(device->machine, "audiocpu", 0, linestate);
266253}
267254
268255static const ym2151_interface ym2151_config =
r4679r4680
276263
277264   /* basic machine hardware */
278265   MDRV_CPU_ADD("maincpu", M68000,14318180)   /* 14.31818 MHz */
279   MDRV_CPU_PROGRAM_MAP(readmem,writemem)
266   MDRV_CPU_PROGRAM_MAP(gotcha_map,0)
280267   MDRV_CPU_VBLANK_INT("screen", irq6_line_hold)
281268
282269   MDRV_CPU_ADD("audiocpu", Z80,6000000)   /* 6 MHz */
283   MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem)
270   MDRV_CPU_PROGRAM_MAP(sound_map,0)
284271//  MDRV_CPU_VBLANK_INT("screen", nmi_line_pulse)
285272
286273   /* video hardware */
src/mame/drivers/starshp1.c
r4679r4680
164164}
165165
166166
167static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 )
168   AM_RANGE(0x0000, 0x00ff) AM_READ(SMH_RAM) AM_MIRROR(0x100)
169   AM_RANGE(0x2c00, 0x3fff) AM_READ(SMH_ROM)
167static ADDRESS_MAP_START( starshp1_map, ADDRESS_SPACE_PROGRAM, 8 )
168   AM_RANGE(0x0000, 0x00ff) AM_RAM AM_MIRROR(0x100)
169   AM_RANGE(0x2c00, 0x3fff) AM_ROM
170170   AM_RANGE(0xa000, 0xa000) AM_READ_PORT("SYSTEM")
171171   AM_RANGE(0xb000, 0xb000) AM_READ_PORT("VBLANK")
172   AM_RANGE(0xc400, 0xc400) AM_READ_PORT("COINAGE")
173   AM_RANGE(0xd800, 0xd800) AM_READ(starshp1_rng_r)
174   AM_RANGE(0xf000, 0xffff) AM_READ(SMH_ROM)
175ADDRESS_MAP_END
176
177static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 )
178   AM_RANGE(0x0000, 0x00ff) AM_WRITE(SMH_RAM) AM_MIRROR(0x100)
179   AM_RANGE(0x2c00, 0x3fff) AM_WRITE(SMH_ROM)
180172   AM_RANGE(0xc300, 0xc3ff) AM_WRITE(starshp1_sspic_w) /* spaceship picture */
173   AM_RANGE(0xc400, 0xc400) AM_READ_PORT("COINAGE")
181174   AM_RANGE(0xc400, 0xc4ff) AM_WRITE(starshp1_ssadd_w) /* spaceship address */
182   AM_RANGE(0xc800, 0xc9ff) AM_WRITE(starshp1_playfield_w) AM_BASE(&starshp1_playfield_ram)
183   AM_RANGE(0xcc00, 0xcc0f) AM_WRITE(SMH_RAM) AM_BASE(&starshp1_hpos_ram)
184   AM_RANGE(0xd000, 0xd00f) AM_WRITE(SMH_RAM) AM_BASE(&starshp1_vpos_ram)
185   AM_RANGE(0xd400, 0xd40f) AM_WRITE(SMH_RAM) AM_BASE(&starshp1_obj_ram)
175   AM_RANGE(0xc800, 0xc9ff) AM_RAM_WRITE(starshp1_playfield_w) AM_BASE(&starshp1_playfield_ram)
176   AM_RANGE(0xcc00, 0xcc0f) AM_WRITEONLY AM_BASE(&starshp1_hpos_ram)
177   AM_RANGE(0xd000, 0xd00f) AM_WRITEONLY AM_BASE(&starshp1_vpos_ram)
178   AM_RANGE(0xd400, 0xd40f) AM_WRITEONLY AM_BASE(&starshp1_obj_ram)
179   AM_RANGE(0xd800, 0xd800) AM_READ(starshp1_rng_r)
186180   AM_RANGE(0xd800, 0xd80f) AM_WRITE(starshp1_collision_reset_w)
187181   AM_RANGE(0xdc00, 0xdc0f) AM_WRITE(starshp1_misc_w)
188182   AM_RANGE(0xdd00, 0xdd0f) AM_WRITE(starshp1_analog_in_w)
189183   AM_RANGE(0xde00, 0xde0f) AM_DEVWRITE("discrete", starshp1_audio_w)
190184   AM_RANGE(0xdf00, 0xdf0f) AM_DEVWRITE("discrete", starshp1_analog_out_w)
191   AM_RANGE(0xf000, 0xffff) AM_WRITE(SMH_ROM)
185   AM_RANGE(0xf000, 0xffff) AM_ROM
192186ADDRESS_MAP_END
193187
194188
r4679r4680
304298   /* basic machine hardware */
305299
306300   MDRV_CPU_ADD("maincpu", M6502, STARSHP1_CPU_CLOCK)
307   MDRV_CPU_PROGRAM_MAP(readmem, writemem)
301   MDRV_CPU_PROGRAM_MAP(starshp1_map, 0)
308302   MDRV_CPU_VBLANK_INT("screen", starshp1_interrupt)
309303
310304   /* video hardware */
src/mame/drivers/pandoras.c
r4679r4680
3838VIDEO_START( pandoras );
3939VIDEO_UPDATE( pandoras );
4040
41static INTERRUPT_GEN( pandoras_interrupt_a ){
41static INTERRUPT_GEN( pandoras_master_interrupt )
42{
4243   if (irq_enable_a)
4344      cpu_set_input_line(device, M6809_IRQ_LINE, HOLD_LINE);
4445}
4546
46static INTERRUPT_GEN( pandoras_interrupt_b ){
47static INTERRUPT_GEN( pandoras_slave_interrupt )
48{
4749   if (irq_enable_b)
4850      cpu_set_input_line(device, M6809_IRQ_LINE, HOLD_LINE);
4951}
5052
51static WRITE8_HANDLER( pandoras_int_control_w ){
53static WRITE8_HANDLER( pandoras_int_control_w )
54{
5255   /*  byte 0: irq enable (CPU A)
5356        byte 2: coin counter 1
5457        byte 3: coin counter 2
r4679r4680
5861
5962        other bytes unknown */
6063
61   switch (offset){
62      case 0x00:   if (!data) cpu_set_input_line(space->machine->cpu[0], M6809_IRQ_LINE, CLEAR_LINE);
64   switch (offset)
65   {
66      case 0x00:   if (!data) cputag_set_input_line(space->machine, "maincpu", M6809_IRQ_LINE, CLEAR_LINE);
6367               irq_enable_a = data;
6468               break;
6569      case 0x02:   coin_counter_w(0,data & 0x01);
r4679r4680
6872               break;
6973      case 0x05:   pandoras_flipscreen_w(space, 0, data);
7074               break;
71      case 0x06:   if (!data) cpu_set_input_line(space->machine->cpu[1], M6809_IRQ_LINE, CLEAR_LINE);
75      case 0x06:   if (!data) cputag_set_input_line(space->machine, "sub", M6809_IRQ_LINE, CLEAR_LINE);
7276               irq_enable_b = data;
7377               break;
74      case 0x07:   cpu_set_input_line(space->machine->cpu[1],INPUT_LINE_NMI,PULSE_LINE);
78      case 0x07:   cputag_set_input_line(space->machine, "sub",INPUT_LINE_NMI,PULSE_LINE);
7579               break;
7680
7781      default:
r4679r4680
7983   }
8084}
8185
82static WRITE8_HANDLER( pandoras_cpua_irqtrigger_w ){
83   if (!firq_old_data_a && data){
84      cpu_set_input_line(space->machine->cpu[0],M6809_FIRQ_LINE,HOLD_LINE);
86static WRITE8_HANDLER( pandoras_cpua_irqtrigger_w )
87{
88   if (!firq_old_data_a && data)
89   {
90      cputag_set_input_line(space->machine, "maincpu", M6809_FIRQ_LINE, HOLD_LINE);
8591   }
8692
8793   firq_old_data_a = data;
8894}
8995
90static WRITE8_HANDLER( pandoras_cpub_irqtrigger_w ){
91   if (!firq_old_data_b && data){
92      cpu_set_input_line(space->machine->cpu[1],M6809_FIRQ_LINE,HOLD_LINE);
96static WRITE8_HANDLER( pandoras_cpub_irqtrigger_w )
97{
98   if (!firq_old_data_b && data)
99   {
100      cputag_set_input_line(space->machine, "sub", M6809_FIRQ_LINE, HOLD_LINE);
93101   }
94102
95103   firq_old_data_b = data;
r4679r4680
97105
98106static WRITE8_HANDLER( pandoras_i8039_irqtrigger_w )
99107{
100   cpu_set_input_line(space->machine->cpu[3], 0, ASSERT_LINE);
108   cputag_set_input_line(space->machine, "mcu", 0, ASSERT_LINE);
101109}
102110
103111static WRITE8_HANDLER( i8039_irqen_and_status_w )
104112{
105113   /* bit 7 enables IRQ */
106114   if ((data & 0x80) == 0)
107      cpu_set_input_line(space->machine->cpu[3], 0, CLEAR_LINE);
115      cputag_set_input_line(space->machine, "mcu", 0, CLEAR_LINE);
108116
109117   /* bit 5 goes to 8910 port A */
110118   i8039_status = (data & 0x20) >> 5;
r4679r4680
112120
113121static WRITE8_HANDLER( pandoras_z80_irqtrigger_w )
114122{
115   cpu_set_input_line_and_vector(space->machine->cpu[2],0,HOLD_LINE,0xff);
123   cputag_set_input_line_and_vector(space->machine, "audiocpu", 0, HOLD_LINE, 0xff);
116124}
117125
118126
119127
120static ADDRESS_MAP_START( pandoras_readmem_a, ADDRESS_SPACE_PROGRAM, 8 )
121   AM_RANGE(0x0000, 0x0fff) AM_READ(SMH_RAM) AM_SHARE(1)   /* Work RAM (Shared with CPU B) */
122   AM_RANGE(0x1000, 0x13ff) AM_READ(SMH_RAM) AM_SHARE(2)    /* Color RAM (shared with CPU B) */
123   AM_RANGE(0x1400, 0x17ff) AM_READ(SMH_RAM) AM_SHARE(3)   /* Video RAM (shared with CPU B) */
124   AM_RANGE(0x4000, 0x5fff) AM_READ(SMH_ROM)            /* space for diagnostic ROM */
125   AM_RANGE(0x6000, 0x67ff) AM_READ(SMH_RAM) AM_SHARE(4)   /* Shared RAM with CPU B */
126   AM_RANGE(0x8000, 0xffff) AM_READ(SMH_ROM)            /* ROM */
128static ADDRESS_MAP_START( pandoras_master_map, ADDRESS_SPACE_PROGRAM, 8 )
129   AM_RANGE(0x0000, 0x0fff) AM_RAM AM_SHARE(1) AM_BASE(&spriteram)                   /* Work RAM (Shared with CPU B) */
130   AM_RANGE(0x1000, 0x13ff) AM_RAM_WRITE(pandoras_cram_w) AM_SHARE(2) AM_BASE(&colorram)   /* Color RAM (shared with CPU B) */
131   AM_RANGE(0x1400, 0x17ff) AM_RAM_WRITE(pandoras_vram_w) AM_SHARE(3) AM_BASE(&videoram)   /* Video RAM (shared with CPU B) */
132   AM_RANGE(0x1800, 0x1807) AM_WRITE(pandoras_int_control_w)                        /* INT control */
133   AM_RANGE(0x1a00, 0x1a00) AM_WRITE(pandoras_scrolly_w)                           /* bg scroll */
134   AM_RANGE(0x1c00, 0x1c00) AM_WRITE(pandoras_z80_irqtrigger_w)                     /* cause INT on the Z80 */
135   AM_RANGE(0x1e00, 0x1e00) AM_WRITE(soundlatch_w)                                 /* sound command to the Z80 */
136   AM_RANGE(0x2000, 0x2000) AM_WRITE(pandoras_cpub_irqtrigger_w)                     /* cause FIRQ on CPU B */
137   AM_RANGE(0x2001, 0x2001) AM_WRITE(watchdog_reset_w)                              /* watchdog reset */
138   AM_RANGE(0x4000, 0x5fff) AM_ROM                                             /* space for diagnostic ROM */
139   AM_RANGE(0x6000, 0x67ff) AM_RAM AM_SHARE(4)                                  /* Shared RAM with CPU B */
140   AM_RANGE(0x8000, 0xffff) AM_ROM                                             /* ROM */
127141ADDRESS_MAP_END
128142
129static ADDRESS_MAP_START( pandoras_writemem_a, ADDRESS_SPACE_PROGRAM, 8 )
130   AM_RANGE(0x0000, 0x0fff) AM_WRITE(SMH_RAM) AM_SHARE(1) AM_BASE(&spriteram) /* Work RAM (Shared with CPU B) */
131   AM_RANGE(0x1000, 0x13ff) AM_WRITE(pandoras_cram_w) AM_SHARE(2) AM_BASE(&colorram)               /* Color RAM (shared with CPU B) */
132   AM_RANGE(0x1400, 0x17ff) AM_WRITE(pandoras_vram_w) AM_SHARE(3) AM_BASE(&videoram)               /* Video RAM (shared with CPU B) */
133   AM_RANGE(0x1800, 0x1807) AM_WRITE(pandoras_int_control_w)                  /* INT control */
134   AM_RANGE(0x1a00, 0x1a00) AM_WRITE(pandoras_scrolly_w)                     /* bg scroll */
135   AM_RANGE(0x1c00, 0x1c00) AM_WRITE(pandoras_z80_irqtrigger_w)               /* cause INT on the Z80 */
136   AM_RANGE(0x1e00, 0x1e00) AM_WRITE(soundlatch_w)                        /* sound command to the Z80 */
137   AM_RANGE(0x2000, 0x2000) AM_WRITE(pandoras_cpub_irqtrigger_w)               /* cause FIRQ on CPU B */
138   AM_RANGE(0x2001, 0x2001) AM_WRITE(watchdog_reset_w)                     /* watchdog reset */
139   AM_RANGE(0x4000, 0x5fff) AM_WRITE(SMH_ROM)                           /* see notes */
140   AM_RANGE(0x6000, 0x67ff) AM_WRITE(SMH_RAM) AM_SHARE(4) /* Shared RAM with CPU B */
141   AM_RANGE(0x8000, 0xffff) AM_WRITE(SMH_ROM)                           /* ROM */
142ADDRESS_MAP_END
143
144static ADDRESS_MAP_START( pandoras_readmem_b, ADDRESS_SPACE_PROGRAM, 8 )
145   AM_RANGE(0x0000, 0x0fff) AM_READ(SMH_RAM) AM_SHARE(1)/* Work RAM (Shared with CPU A) */
146   AM_RANGE(0x1000, 0x13ff) AM_READ(SMH_RAM) AM_SHARE(2)       /* Color RAM (shared with CPU A) */
147   AM_RANGE(0x1400, 0x17ff) AM_READ(SMH_RAM) AM_SHARE(3)    /* Video RAM (shared with CPU A) */
143static ADDRESS_MAP_START( pandoras_slave_map, ADDRESS_SPACE_PROGRAM, 8 )
144   AM_RANGE(0x0000, 0x0fff) AM_RAM AM_SHARE(1)                                    /* Work RAM (Shared with CPU A) */
145   AM_RANGE(0x1000, 0x13ff) AM_RAM_WRITE(pandoras_cram_w) AM_SHARE(2)                   /* Color RAM (shared with CPU A) */
146   AM_RANGE(0x1400, 0x17ff) AM_RAM_WRITE(pandoras_vram_w) AM_SHARE(3)                   /* Video RAM (shared with CPU A) */
148147   AM_RANGE(0x1800, 0x1800) AM_READ_PORT("DSW1")
148   AM_RANGE(0x1800, 0x1807) AM_WRITE(pandoras_int_control_w)                        /* INT control */
149149   AM_RANGE(0x1a00, 0x1a00) AM_READ_PORT("SYSTEM")
150150   AM_RANGE(0x1a01, 0x1a01) AM_READ_PORT("P1")
151151   AM_RANGE(0x1a02, 0x1a02) AM_READ_PORT("P2")
152152   AM_RANGE(0x1a03, 0x1a03) AM_READ_PORT("DSW3")
153153   AM_RANGE(0x1c00, 0x1c00) AM_READ_PORT("DSW2")
154//  AM_RANGE(0x1e00, 0x1e00) AM_READNOP              /* ??? seems to be important */
155   AM_RANGE(0xc000, 0xc7ff) AM_READ(SMH_RAM) AM_SHARE(4)   /* Shared RAM with the CPU A */
156   AM_RANGE(0xe000, 0xffff) AM_READ(SMH_ROM)            /* ROM */
154//  AM_RANGE(0x1e00, 0x1e00) AM_READNOP                                                     /* ??? seems to be important */
155   AM_RANGE(0x8000, 0x8000) AM_WRITE(watchdog_reset_w)                              /* watchdog reset */
156   AM_RANGE(0xa000, 0xa000) AM_WRITE(pandoras_cpua_irqtrigger_w)                     /* cause FIRQ on CPU A */
157   AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_SHARE(4)                                    /* Shared RAM with the CPU A */
158   AM_RANGE(0xe000, 0xffff) AM_ROM                                             /* ROM */
157159ADDRESS_MAP_END
158160
159static ADDRESS_MAP_START( pandoras_writemem_b, ADDRESS_SPACE_PROGRAM, 8 )
160   AM_RANGE(0x0000, 0x0fff) AM_WRITE(SMH_RAM)   AM_SHARE(1) /* Work RAM (Shared with CPU A) */
161   AM_RANGE(0x1000, 0x13ff) AM_WRITE(pandoras_cram_w) AM_SHARE(2)       /* Color RAM (shared with CPU A) */
162   AM_RANGE(0x1400, 0x17ff) AM_WRITE(pandoras_vram_w) AM_SHARE(3)       /* Video RAM (shared with CPU A) */
163   AM_RANGE(0x1800, 0x1807) AM_WRITE(pandoras_int_control_w)   /* INT control */
164   AM_RANGE(0x8000, 0x8000) AM_WRITE(watchdog_reset_w)      /* watchdog reset */
165   AM_RANGE(0xa000, 0xa000) AM_WRITE(pandoras_cpua_irqtrigger_w)/* cause FIRQ on CPU A */
166   AM_RANGE(0xc000, 0xc7ff) AM_WRITE(SMH_RAM) AM_SHARE(4)   /* Shared RAM with the CPU A */
167   AM_RANGE(0xe000, 0xffff) AM_WRITE(SMH_ROM)            /* ROM */
161static ADDRESS_MAP_START( pandoras_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
162   AM_RANGE(0x0000, 0x1fff) AM_ROM                                             /* ROM */
163   AM_RANGE(0x2000, 0x23ff) AM_RAM                                             /* RAM */
164   AM_RANGE(0x4000, 0x4000) AM_READ(soundlatch_r)                                 /* soundlatch_r */
165   AM_RANGE(0x6000, 0x6000) AM_DEVWRITE("ay", ay8910_address_w)                     /* AY-8910 */
166   AM_RANGE(0x6001, 0x6001) AM_DEVREAD("ay", ay8910_r)                              /* AY-8910 */
167   AM_RANGE(0x6002, 0x6002) AM_DEVWRITE("ay", ay8910_data_w)                        /* AY-8910 */
168   AM_RANGE(0x8000, 0x8000) AM_WRITE(pandoras_i8039_irqtrigger_w)                     /* cause INT on the 8039 */
169   AM_RANGE(0xa000, 0xa000) AM_WRITE(soundlatch2_w)                              /* sound command to the 8039 */
168170ADDRESS_MAP_END
169171
170static ADDRESS_MAP_START( pandoras_readmem_snd, ADDRESS_SPACE_PROGRAM, 8 )
171   AM_RANGE(0x0000, 0x1fff) AM_READ(SMH_ROM)            /* ROM */
172   AM_RANGE(0x2000, 0x23ff) AM_READ(SMH_RAM)            /* RAM */
173   AM_RANGE(0x4000, 0x4000) AM_READ(soundlatch_r)         /* soundlatch_r */
174   AM_RANGE(0x6001, 0x6001) AM_DEVREAD("ay", ay8910_r)   /* AY-8910 */
172static ADDRESS_MAP_START( pandoras_i8039_map, ADDRESS_SPACE_PROGRAM, 8 )
173   AM_RANGE(0x0000, 0x0fff) AM_ROM
175174ADDRESS_MAP_END
176175
177static ADDRESS_MAP_START( pandoras_writemem_snd, ADDRESS_SPACE_PROGRAM, 8 )
178   AM_RANGE(0x0000, 0x1fff) AM_WRITE(SMH_ROM)            /* ROM */
179   AM_RANGE(0x2000, 0x23ff) AM_WRITE(SMH_RAM)            /* RAM */
180   AM_RANGE(0x6000, 0x6000) AM_DEVWRITE("ay", ay8910_address_w)/* AY-8910 */
181   AM_RANGE(0x6002, 0x6002) AM_DEVWRITE("ay", ay8910_data_w)   /* AY-8910 */
182   AM_RANGE(0x8000, 0x8000) AM_WRITE(pandoras_i8039_irqtrigger_w)/* cause INT on the 8039 */
183   AM_RANGE(0xa000, 0xa000) AM_WRITE(soundlatch2_w)         /* sound command to the 8039 */
184ADDRESS_MAP_END
185
186static ADDRESS_MAP_START( i8039_readmem, ADDRESS_SPACE_PROGRAM, 8 )
187   AM_RANGE(0x0000, 0x0fff) AM_READ(SMH_ROM)
188ADDRESS_MAP_END
189
190static ADDRESS_MAP_START( i8039_writemem, ADDRESS_SPACE_PROGRAM, 8 )
191   AM_RANGE(0x0000, 0x0fff) AM_WRITE(SMH_ROM)
192ADDRESS_MAP_END
193
194static ADDRESS_MAP_START( i8039_io_map, ADDRESS_SPACE_IO, 8 )
176static ADDRESS_MAP_START( pandoras_i8039_io_map, ADDRESS_SPACE_IO, 8 )
195177   AM_RANGE(0x00, 0xff) AM_READ(soundlatch2_r)
196178   AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_DEVWRITE("dac", dac_w)
197179   AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_WRITE(i8039_irqen_and_status_w)
r4679r4680
337319
338320   /* basic machine hardware */
339321   MDRV_CPU_ADD("maincpu", M6809,18432000/6)   /* CPU A */
340   MDRV_CPU_PROGRAM_MAP(pandoras_readmem_a,pandoras_writemem_a)
341   MDRV_CPU_VBLANK_INT("screen", pandoras_interrupt_a)
322   MDRV_CPU_PROGRAM_MAP(pandoras_master_map,0)
323   MDRV_CPU_VBLANK_INT("screen", pandoras_master_interrupt)
342324
343   MDRV_CPU_ADD("sub", M6809,18432000/6)   /* CPU B */
344   MDRV_CPU_PROGRAM_MAP(pandoras_readmem_b,pandoras_writemem_b)
345   MDRV_CPU_VBLANK_INT("screen", pandoras_interrupt_b)
325   MDRV_CPU_ADD("sub", M6809,18432000/6)      /* CPU B */
326   MDRV_CPU_PROGRAM_MAP(pandoras_slave_map,0)
327   MDRV_CPU_VBLANK_INT("screen", pandoras_slave_interrupt)
346328
347329   MDRV_CPU_ADD("audiocpu", Z80,14318000/8)
348   MDRV_CPU_PROGRAM_MAP(pandoras_readmem_snd,pandoras_writemem_snd)
330   MDRV_CPU_PROGRAM_MAP(pandoras_sound_map,0)
349331
350332   MDRV_CPU_ADD("mcu", I8039,14318000/2)
351   MDRV_CPU_PROGRAM_MAP(i8039_readmem,i8039_writemem)
352   MDRV_CPU_IO_MAP(i8039_io_map,0)
333   MDRV_CPU_PROGRAM_MAP(pandoras_i8039_map,0)
334   MDRV_CPU_IO_MAP(pandoras_i8039_io_map,0)
353335
354336   MDRV_QUANTUM_TIME(HZ(3000))   /* slices per frame */
355337
src/mame/drivers/taito_f2.c
r4679r4680
609609
610610static TIMER_CALLBACK( taitof2_interrupt6 )
611611{
612   cpu_set_input_line(machine->cpu[0],6,HOLD_LINE);
612   cputag_set_input_line(machine, "maincpu", 6, HOLD_LINE);
613613}
614614
615615static INTERRUPT_GEN( taitof2_interrupt )
616616{
617   timer_set(device->machine, cpu_clocks_to_attotime(device,500), NULL, 0, taitof2_interrupt6);
617   timer_set(device->machine, cpu_clocks_to_attotime(device, 500), NULL, 0, taitof2_interrupt6);
618618   cpu_set_input_line(device, 5, HOLD_LINE);
619619}
620620
r4679r4680
639639
640640static READ8_HANDLER( driveout_sound_command_r)
641641{
642   cpu_set_input_line(space->machine->cpu[1],0,CLEAR_LINE);
642   cputag_set_input_line(space->machine, "audiocpu", 0, CLEAR_LINE);
643643//  logerror("sound IRQ OFF (sound command=%02x)\n",driveout_sound_latch);
644644   return driveout_sound_latch;
645645}
r4679r4680
667667   if (ACCESSING_BITS_8_15)
668668   {
669669      data >>= 8;
670      if (offset==0)
670      if (offset == 0)
671671      {
672672         nibble = data & 1;
673673      }
r4679r4680
679679         }
680680         else
681681         {
682            driveout_sound_latch = ((data<<4) & 0xf0) | (driveout_sound_latch & 0x0f);
683            cpu_set_input_line (space->machine->cpu[1], 0, ASSERT_LINE);
682            driveout_sound_latch = ((data << 4) & 0xf0) | (driveout_sound_latch & 0x0f);
683            cputag_set_input_line (space->machine, "audiocpu", 0, ASSERT_LINE);
684684         }
685685      }
686686   }
r4679r4680
31293129/* handler called by the YM2610 emulator when the internal timers cause an IRQ */
31303130static void irq_handler(const device_config *device, int irq)
31313131{
3132   cpu_set_input_line(device->machine->cpu[1],0,irq ? ASSERT_LINE : CLEAR_LINE);
3132   cputag_set_input_line(device->machine, "audiocpu", 0, irq ? ASSERT_LINE : CLEAR_LINE);
31333133}
31343134
31353135static const ym2610_interface ym2610_config =
src/mame/drivers/gottlieb.c
r4679r4680
257257   if (laserdisc != NULL)
258258   {
259259      /* attach to the I/O ports */
260      memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x05805, 0x05807, 0, 0x07f8, laserdisc_status_r);
261      memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x05805, 0x05805, 0, 0x07f8, laserdisc_command_w);   /* command for the player */
262      memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x05806, 0x05806, 0, 0x07f8, laserdisc_select_w);
260      memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x05805, 0x05807, 0, 0x07f8, laserdisc_status_r);
261      memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x05805, 0x05805, 0, 0x07f8, laserdisc_command_w);   /* command for the player */
262      memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x05806, 0x05806, 0, 0x07f8, laserdisc_select_w);
263263
264264      /* allocate a timer for serial transmission, and one for philips code processing */
265265      laserdisc_bit_timer = timer_alloc(machine, laserdisc_bit_callback, NULL);
266266      laserdisc_philips_timer = timer_alloc(machine, laserdisc_philips_callback, NULL);
267267
268268      /* create some audio RAM */
269      laserdisc_audio_buffer = auto_malloc(AUDIORAM_SIZE);
269      laserdisc_audio_buffer = auto_alloc_array(machine, UINT8, AUDIORAM_SIZE);
270270      laserdisc_status = 0x38;
271271
272272      /* more save state registration */
r4679r4680
305305
306306static CUSTOM_INPUT( analog_delta_r )
307307{
308   const char *string = param;
308   const char *string = (const char *)param;
309309   int which = string[0] - '0';
310310
311311   return input_port_read(field->port->machine, &string[1]) - track[which];
r4679r4680
664664
665665static TIMER_CALLBACK( nmi_clear )
666666{
667   cpu_set_input_line(machine->cpu[0], INPUT_LINE_NMI, CLEAR_LINE);
667   cputag_set_input_line(machine, "maincpu", INPUT_LINE_NMI, CLEAR_LINE);
668668}
669669
670670
r4679r4680
19331933   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
19341934MACHINE_DRIVER_END
19351935
1936static MACHINE_DRIVER_START( screwloo )
1937   MDRV_IMPORT_FROM(gottlieb2)
19361938
1939   MDRV_VIDEO_START(screwloo)
1940MACHINE_DRIVER_END
19371941
1942
19381943/*************************************
19391944 *
19401945 *  ROM definitions
r4679r4680
25402545static DRIVER_INIT( stooges )
25412546{
25422547   DRIVER_INIT_CALL(ramtiles);
2543   memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x05803, 0x05803, 0, 0x07f8, stooges_output_w);
2548   memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x05803, 0x05803, 0, 0x07f8, stooges_output_w);
25442549}
25452550
2551static DRIVER_INIT( screwloo )
2552{
2553   gottlieb_gfxcharlo = 0;
2554   gottlieb_gfxcharhi = 1;
2555}
25462556
25472557static DRIVER_INIT( vidvince )
25482558{
r4679r4680
25502560   gottlieb_gfxcharhi = 0;
25512561}
25522562
2553
2554
25552563/*************************************
25562564 *
25572565 *  Game drivers
r4679r4680
25782586GAME( 1984, curvebal, 0,        gottlieb1, curvebal, romtiles, ROT270, "Mylstar", "Curve Ball", 0 )
25792587
25802588/* games using rev 2 sound board */
2581GAME( 1983, screwloo, 0,        gottlieb2, screwloo, romtiles, ROT0,   "Mylstar", "Screw Loose (prototype)", 0 )
2589GAME( 1983, screwloo, 0,        screwloo, screwloo, screwloo, ROT0,   "Mylstar", "Screw Loose (prototype)", 0 )
25822590GAME( 1983, mach3,    0,        g2laser,   mach3,    romtiles, ROT0,   "Mylstar", "M.A.C.H. 3", 0 )
25832591GAME( 1984, cobram3,  0,        g2laser,   mach3,    romtiles, ROT0,   "Data East","Cobra Command (M.A.C.H. 3 hardware)", GAME_NOT_WORKING )
25842592GAME( 1984, usvsthem, 0,        g2laser,   usvsthem, romtiles, ROT0,   "Mylstar", "Us vs. Them", 0 )
src/mame/drivers/sandscrp.c
r4679r4680
105105static void update_irq_state(running_machine *machine)
106106{
107107   if (vblank_irq || sprite_irq || unknown_irq)
108      cpu_set_input_line(machine->cpu[0], 1, ASSERT_LINE);
108      cputag_set_input_line(machine, "maincpu", 1, ASSERT_LINE);
109109   else
110      cpu_set_input_line(machine->cpu[0], 1, CLEAR_LINE);
110      cputag_set_input_line(machine, "maincpu", 1, CLEAR_LINE);
111111}
112112
113113
r4679r4680
197197   {
198198      latch1_full = 1;
199199      soundlatch_w(space, 0, data & 0xff);
200      cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_NMI, PULSE_LINE);
200      cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
201201      cpu_spinuntil_time(space->cpu, ATTOTIME_IN_USEC(100));   // Allow the other cpu to reply
202202   }
203203}
r4679r4680
265265
266266static ADDRESS_MAP_START( sandscrp_soundmem, ADDRESS_SPACE_PROGRAM, 8 )
267267   AM_RANGE(0x0000, 0x7fff) AM_ROM      // ROM
268   AM_RANGE(0x8000, 0xbfff) AM_READWRITE(SMH_BANK1, SMH_ROM)   // Banked ROM
268   AM_RANGE(0x8000, 0xbfff) AM_READWRITE(SMH_BANK(1), SMH_ROM)   // Banked ROM
269269   AM_RANGE(0xc000, 0xdfff) AM_RAM      // RAM
270270ADDRESS_MAP_END
271271
r4679r4680
414414
415415static void irq_handler(const device_config *device, int irq)
416416{
417   cpu_set_input_line(device->machine->cpu[1],0,irq ? ASSERT_LINE : CLEAR_LINE);
417   cputag_set_input_line(device->machine, "audiocpu", 0, irq ? ASSERT_LINE : CLEAR_LINE);
418418}
419419
420420static const ym2203_interface ym2203_intf_sandscrp =
src/mame/drivers/gpworld.c
r4679r4680
407407
408408static TIMER_CALLBACK( irq_stop )
409409{
410   cpu_set_input_line(machine->cpu[0], 0, CLEAR_LINE);
410   cputag_set_input_line(machine, "maincpu", 0, CLEAR_LINE);
411411}
412412
413413static INTERRUPT_GEN( vblank_callback_gpworld )
src/mame/drivers/ddragon.c
r4679r4680
153153
154154   /* on the rising edge of VBLK (vcount == F8), signal an NMI */
155155   if (vcount == 0xf8)
156      cpu_set_input_line(timer->machine->cpu[0], INPUT_LINE_NMI, ASSERT_LINE);
156      cputag_set_input_line(timer->machine, "maincpu", INPUT_LINE_NMI, ASSERT_LINE);
157157
158158   /* set 1ms signal on rising edge of vcount & 8 */
159159   if (!(vcount_old & 8) && (vcount & 8))
160      cpu_set_input_line(timer->machine->cpu[0], M6809_FIRQ_LINE, ASSERT_LINE);
160      cputag_set_input_line(timer->machine, "maincpu", M6809_FIRQ_LINE, ASSERT_LINE);
161161}
162162
163163
r4679r4680
212212   if (data & 0x10)
213213      dd_sub_cpu_busy = 0;
214214   else if (dd_sub_cpu_busy == 0)
215      cpu_set_input_line(space->machine->cpu[1], sprite_irq, (sprite_irq == INPUT_LINE_NMI) ? PULSE_LINE : HOLD_LINE);
215      cputag_set_input_line(space->machine, "sub", sprite_irq, (sprite_irq == INPUT_LINE_NMI) ? PULSE_LINE : HOLD_LINE);
216216
217217   memory_set_bank(space->machine, 1, (data & 0xe0) >> 5);
218218}
r4679r4680
287287   if (data & 0x10)
288288      dd_sub_cpu_busy = 0;
289289   else if (dd_sub_cpu_busy == 0)
290      cpu_set_input_line(space->machine->cpu[1], sprite_irq, (sprite_irq == INPUT_LINE_NMI) ? PULSE_LINE : HOLD_LINE);
290      cputag_set_input_line(space->machine, "sub", sprite_irq, (sprite_irq == INPUT_LINE_NMI) ? PULSE_LINE : HOLD_LINE);
291291
292292   memory_set_bank(space->machine, 1, newbank);
293293   if (newbank == 4 && oldbank != 4)
294294      memory_install_readwrite8_handler(space, 0x4000, 0x7fff, 0, 0, darktowr_mcu_bank_r, darktowr_mcu_bank_w);
295295   else if (newbank != 4 && oldbank == 4)
296      memory_install_readwrite8_handler(space, 0x4000, 0x7fff, 0, 0, SMH_BANK1, SMH_BANK1);
296      memory_install_readwrite8_handler(space, 0x4000, 0x7fff, 0, 0, (read8_space_func)SMH_BANK(1), (write8_space_func)SMH_BANK(1));
297297}
298298
299299
r4679r4680
309309   switch (offset)
310310   {
311311      case 0: /* 380b - NMI ack */
312         cpu_set_input_line(space->machine->cpu[0], INPUT_LINE_NMI, CLEAR_LINE);
312         cputag_set_input_line(space->machine, "maincpu", INPUT_LINE_NMI, CLEAR_LINE);
313313         break;
314314
315315      case 1: /* 380c - FIRQ ack */
316         cpu_set_input_line(space->machine->cpu[0], M6809_FIRQ_LINE, CLEAR_LINE);
316         cputag_set_input_line(space->machine, "maincpu", M6809_FIRQ_LINE, CLEAR_LINE);
317317         break;
318318
319319      case 2: /* 380d - IRQ ack */
320         cpu_set_input_line(space->machine->cpu[0], M6809_IRQ_LINE, CLEAR_LINE);
320         cputag_set_input_line(space->machine, "maincpu", M6809_IRQ_LINE, CLEAR_LINE);
321321         break;
322322
323323      case 3: /* 380e - SND irq */
r4679r4680
334334
335335static WRITE8_HANDLER( ddragon2_sub_irq_ack_w )
336336{
337   cpu_set_input_line(space->machine->cpu[1], sprite_irq, CLEAR_LINE );
337   cputag_set_input_line(space->machine, "sub", sprite_irq, CLEAR_LINE );
338338}
339339
340340
341341static WRITE8_HANDLER( ddragon2_sub_irq_w )
342342{
343   cpu_set_input_line(space->machine->cpu[0], M6809_IRQ_LINE, ASSERT_LINE);
343   cputag_set_input_line(space->machine, "maincpu", M6809_IRQ_LINE, ASSERT_LINE);
344344}
345345
346346
r4679r4680
387387        it's quite obvious from the Double Dragon 2 code, below). */
388388      if (data & 3)
389389      {
390         cpu_set_input_line(space->machine->cpu[0], M6809_IRQ_LINE, ASSERT_LINE);
391         cpu_set_input_line(space->machine->cpu[1], sprite_irq, CLEAR_LINE);
390         cputag_set_input_line(space->machine, "maincpu", M6809_IRQ_LINE, ASSERT_LINE);
391         cputag_set_input_line(space->machine, "sub", sprite_irq, CLEAR_LINE);
392392      }
393393   }
394394}
r4679r4680
413413
414414static WRITE8_HANDLER( ddragon_spriteram_w )
415415{
416   if (space->cpu == space->machine->cpu[1] && offset == 0)
416   if (space->cpu == cputag_get_cpu(space->machine, "sub") && offset == 0)
417417      dd_sub_cpu_busy = 1;
418418
419419   ddragon_spriteram[offset] = data;
r4679r4680
566566/* might not be 100% accurate, check bits written */
567567static WRITE8_HANDLER( ddragnba_port_w )
568568{
569   cpu_set_input_line(space->machine->cpu[0],M6809_IRQ_LINE,ASSERT_LINE);
570   cpu_set_input_line(space->machine->cpu[1],sprite_irq, CLEAR_LINE );
569   cputag_set_input_line(space->machine, "maincpu", M6809_IRQ_LINE, ASSERT_LINE);
570   cputag_set_input_line(space->machine, "sub", sprite_irq, CLEAR_LINE );
571571}
572572
573573static ADDRESS_MAP_START( ddragnba_sub_portmap, ADDRESS_SPACE_IO, 8 )
r4679r4680
19651965   sound_irq = M6809_IRQ_LINE;
19661966   ym_irq = M6809_FIRQ_LINE;
19671967   technos_video_hw = 0;
1968   memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x3808, 0x3808, 0, 0, darktowr_bankswitch_w);
1968   memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x3808, 0x3808, 0, 0, darktowr_bankswitch_w);
19691969}
19701970
19711971
r4679r4680
19771977   sound_irq = M6809_IRQ_LINE;
19781978   ym_irq = M6809_FIRQ_LINE;
19791979   technos_video_hw = 0;
1980   memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x3808, 0x3808, 0, 0, toffy_bankswitch_w);
1980   memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x3808, 0x3808, 0, 0, toffy_bankswitch_w);
19811981
19821982   /* the program rom has a simple bitswap encryption */
19831983   rom = memory_region(machine, "maincpu");
src/mame/drivers/acommand.c
r4679r4680
155155   tx_tilemap = tilemap_create(machine, ac_get_tx_tile_info,tilemap_scan_cols,8,8,512,32);
156156   bg_tilemap = tilemap_create(machine, ac_get_bg_tile_info,bg_scan,16,16,256,16);
157157
158   ac_vregs = auto_malloc(0x80);
158   ac_vregs = auto_alloc_array(machine, UINT16, 0x80/2);
159159
160160   tilemap_set_transparent_pen(tx_tilemap,15);
161161}
src/mame/drivers/asterix.c
r4679r4680
110110
111111static READ8_DEVICE_HANDLER( asterix_sound_r )
112112{
113   return k053260_r(device,2 + offset);
113   return k053260_r(device, 2 + offset);
114114}
115115
116116static TIMER_CALLBACK( nmi_callback )
117117{
118   cpu_set_input_line(machine->cpu[1], INPUT_LINE_NMI, ASSERT_LINE);
118   cputag_set_input_line(machine, "audiocpu", INPUT_LINE_NMI, ASSERT_LINE);
119119}
120120
121121static WRITE8_HANDLER( sound_arm_nmi_w )
122122{
123   cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_NMI, CLEAR_LINE);
124   timer_set(space->machine, ATTOTIME_IN_USEC(5), NULL,0,nmi_callback);
123   cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, CLEAR_LINE);
124   timer_set(space->machine, ATTOTIME_IN_USEC(5), NULL, 0, nmi_callback);
125125}
126126
127127static WRITE16_HANDLER( sound_irq_w )
128128{
129   cpu_set_input_line(space->machine->cpu[1], 0, HOLD_LINE);
129   cputag_set_input_line(space->machine, "audiocpu", 0, HOLD_LINE);
130130}
131131
132132// Check the routine at 7f30 in the ead version.
r4679r4680
137137
138138static WRITE16_HANDLER( protection_w )
139139{
140   COMBINE_DATA(prot+offset);
140   COMBINE_DATA(prot + offset);
141141
142142   if (offset == 1)
143143   {
src/mame/drivers/tubep.c
r4679r4680
168168
169169static WRITE8_HANDLER( main_cpu_irq_line_clear_w )
170170{
171   cpu_set_input_line(space->machine->cpu[0], 0, CLEAR_LINE);
171   cputag_set_input_line(space->machine, "maincpu", 0, CLEAR_LINE);
172172   logerror("CPU#0 VBLANK int clear at scanline=%3i\n", curr_scanline);
173173   return;
174174}
r4679r4680
204204
205205static WRITE8_HANDLER( second_cpu_irq_line_clear_w )
206206{
207   cpu_set_input_line(space->machine->cpu[1], 0, CLEAR_LINE);
207   cputag_set_input_line(space->machine, "slave", 0, CLEAR_LINE);
208208   logerror("CPU#1 VBLANK int clear at scanline=%3i\n", curr_scanline);
209209   return;
210210}
r4679r4680
239239
240240static READ8_HANDLER( tubep_sound_irq_ack )
241241{
242   cpu_set_input_line(space->machine->cpu[2], 0, CLEAR_LINE);
242   cputag_set_input_line(space->machine, "soundcpu", 0, CLEAR_LINE);
243243   return 0;
244244}
245245
r4679r4680
271271{
272272   int scanline = param;
273273
274curr_scanline = scanline;//for debugging
274   curr_scanline = scanline;//for debugging
275275
276
277276   /* CPU #0 interrupt */
278277   /* activates at the start of VBLANK signal which happens at the beginning of scaline number 240 */
279   if (scanline==240)
278   if (scanline == 240)
280279   {
281280      logerror("VBLANK CPU#0\n");
282      cpu_set_input_line(machine->cpu[0], 0, ASSERT_LINE);
281      cputag_set_input_line(machine, "maincpu", 0, ASSERT_LINE);
283282   }
284283
285284
286285   /* CPU #1 interrupt */
287286   /* activates at the _end_ of VBLANK signal which happens at the beginning of scanline number 16 */
288   if (scanline==16)
287   if (scanline == 16)
289288   {
290289      logerror("/VBLANK CPU#1\n");
291      cpu_set_input_line(machine->cpu[1], 0, ASSERT_LINE);
290      cputag_set_input_line(machine, "slave", 0, ASSERT_LINE);
292291   }
293292
294293
295294   /* CPU #3 MS2010-A NMI */
296295   /* activates at the _end_ of VBLANK signal which happens at the beginning of scanline number 16 */
297   if (scanline==16)
296   if (scanline == 16)
298297   {
299298      logerror("/nmi CPU#3\n");
300299      tubep_vblank_end(); /* switch buffered sprite RAM page */
301      cpu_set_input_line(machine->cpu[3], INPUT_LINE_NMI, ASSERT_LINE);
300      cputag_set_input_line(machine, "nsc", INPUT_LINE_NMI, ASSERT_LINE);
302301   }
303302   /* CPU #3 MS2010-A NMI */
304303   /* deactivates at the start of VBLANK signal which happens at the beginning of scanline number 240*/
305   if (scanline==240)
304   if (scanline == 240)
306305   {
307306      logerror("CPU#3 nmi clear\n");
308      cpu_set_input_line(machine->cpu[3], INPUT_LINE_NMI, CLEAR_LINE);
307      cputag_set_input_line(machine, "nsc", INPUT_LINE_NMI, CLEAR_LINE);
309308   }
310309
311310
312311   /* sound CPU interrupt */
313312   /* activates whenever line V6 from video part goes lo->hi that is when the scanline becomes 64 and 192 */
314   if ((scanline==64) || (scanline==192))
313   if ((scanline == 64) || (scanline == 192))
315314   {
316      cpu_set_input_line(machine->cpu[2],0,ASSERT_LINE);   /* sound cpu interrupt (music tempo) */
315      cputag_set_input_line(machine, "soundcpu", 0, ASSERT_LINE);   /* sound cpu interrupt (music tempo) */
317316   }
318317
319318
320319   video_screen_update_partial(machine->primary_screen, video_screen_get_vpos(machine->primary_screen));
321320
322//debug
323logerror("scanline=%3i scrgetvpos(0)=%3i\n",scanline,video_screen_get_vpos(machine->primary_screen));
321   //debug
322   logerror("scanline=%3i scrgetvpos(0)=%3i\n",scanline,video_screen_get_vpos(machine->primary_screen));
324323
325   scanline ++;
326   if (scanline>=264)
327      scanline=0;
324   scanline++;
325   if (scanline >= 264)
326      scanline = 0;
328327
329328   timer_adjust_oneshot(interrupt_timer, video_screen_get_time_until_pos(machine->primary_screen, scanline, 0), scanline);
330329}
r4679r4680
406405static WRITE8_HANDLER( rjammer_soundlatch_w )
407406{
408407   sound_latch = data;
409   cpu_set_input_line(space->machine->cpu[2], INPUT_LINE_NMI, PULSE_LINE);
408   cputag_set_input_line(space->machine, "soundcpu", INPUT_LINE_NMI, PULSE_LINE);
410409}
411410
412411
r4679r4680
453452{
454453   int scanline = param;
455454
456curr_scanline = scanline;//for debugging
455   curr_scanline = scanline;//for debugging
457456
458
459457   /* CPU #0 interrupt */
460458   /* activates at the start of VBLANK signal which happens at the beginning of scaline number 240 */
461   if (scanline==240)
459   if (scanline == 240)
462460   {
463461      logerror("VBLANK CPU#0\n");
464      cpu_set_input_line(machine->cpu[0], 0, ASSERT_LINE);
462      cputag_set_input_line(machine, "maincpu", 0, ASSERT_LINE);
465463   }
466464
467465
468466   /* CPU #1 interrupt */
469467   /* activates at the _end_ of VBLANK signal which happens at the beginning of scanline number 16 */
470   if (scanline==16)
468   if (scanline == 16)
471469   {
472470      logerror("/VBLANK CPU#1\n");
473      cpu_set_input_line(machine->cpu[1], 0, HOLD_LINE);
471      cputag_set_input_line(machine, "slave", 0, HOLD_LINE);
474472   }
475473
476474
477475   /* CPU #3 MS2010-A NMI */
478476   /* activates at the _end_ of VBLANK signal which happens at the beginning of scanline number 16 */
479   if (scanline==16)
477   if (scanline == 16)
480478   {
481479      logerror("/nmi CPU#3\n");
482480      tubep_vblank_end(); /* switch buffered sprite RAM page */
483      cpu_set_input_line(machine->cpu[3], INPUT_LINE_NMI, ASSERT_LINE);
481      cputag_set_input_line(machine, "nsc", INPUT_LINE_NMI, ASSERT_LINE);
484482   }
485483   /* CPU #3 MS2010-A NMI */
486484   /* deactivates at the start of VBLANK signal which happens at the beginning of scanline number 240*/
487   if (scanline==240)
485   if (scanline == 240)
488486   {
489487      logerror("CPU#3 nmi clear\n");
490      cpu_set_input_line(machine->cpu[3], INPUT_LINE_NMI, CLEAR_LINE);
488      cputag_set_input_line(machine, "nsc", INPUT_LINE_NMI, CLEAR_LINE);
491489   }
492490
493491
494492   /* sound CPU interrupt */
495493   /* activates whenever line V6 from video part goes lo->hi that is when the scanline becomes 64 and 192 */
496   if ((scanline==64) || (scanline==192))
494   if ((scanline == 64) || (scanline == 192))
497495   {
498      cpu_set_input_line(machine->cpu[2],0,ASSERT_LINE);   /* sound cpu interrupt (music tempo) */
496      cputag_set_input_line(machine, "soundcpu", 0, ASSERT_LINE);   /* sound cpu interrupt (music tempo) */
499497   }
500498
501499
502500   video_screen_update_partial(machine->primary_screen, video_screen_get_vpos(machine->primary_screen));
503501
504logerror("scanline=%3i scrgetvpos(0)=%3i\n",scanline,video_screen_get_vpos(machine->primary_screen));
502   logerror("scanline=%3i scrgetvpos(0)=%3i\n", scanline, video_screen_get_vpos(machine->primary_screen));
505503
506   scanline ++;
507   if (scanline>=264)
508      scanline=0;
504   scanline++;
505   if (scanline >= 264)
506      scanline = 0;
509507
510508   timer_adjust_oneshot(interrupt_timer, video_screen_get_time_until_pos(machine->primary_screen, scanline, 0), scanline);
511509}
r4679r4680
553551{
554552   /* bit 0 of data selects voice frequency on MSM5205 */
555553   // 0 -4 KHz; 1- 8KHz
556   if (data&1)
557      msm5205_playmode_w(device,MSM5205_S48_4B);   /* 8 KHz */
554   if (data & 1)
555      msm5205_playmode_w(device, MSM5205_S48_4B);   /* 8 KHz */
558556   else
559      msm5205_playmode_w(device,MSM5205_S96_4B);   /* 4 KHz */
557      msm5205_playmode_w(device, MSM5205_S96_4B);   /* 4 KHz */
560558
561559   return;
562560}
r4679r4680
564562
565563static void rjammer_adpcm_vck (const device_config *device)
566564{
567   ls74 = (ls74+1) & 1;
565   ls74 = (ls74 + 1) & 1;
568566
569   if (ls74==1)
567   if (ls74 == 1)
570568   {
571      msm5205_data_w(device, (ls377>>0) & 15 );
572      cpu_set_input_line(device->machine->cpu[2], 0, ASSERT_LINE );
569      msm5205_data_w(device, (ls377 >> 0) & 15 );
570      cputag_set_input_line(device->machine, "soundcpu", 0, ASSERT_LINE );
573571   }
574572   else
575573   {
576      msm5205_data_w(device, (ls377>>4) & 15 );
574      msm5205_data_w(device, (ls377 >> 4) & 15 );
577575   }
578576
579577}
r4679r4680
591589            I do it here because this port (0x80) is first one accessed
592590            in the interrupt routine.
593591    */
594   cpu_set_input_line(space->machine->cpu[2], 0, CLEAR_LINE );
592   cputag_set_input_line(space->machine, "soundcpu", 0, CLEAR_LINE );
595593   return;
596594}
597595
r4679r4680
12151213GAME( 1984, tubep,   0,      tubep,   tubep,   0, ROT0, "Nichibutsu + Fujitek", "Tube Panic", GAME_SUPPORTS_SAVE )
12161214GAME( 1984, tubepb,  tubep,  tubepb,  tubepb,  0, ROT0, "bootleg", "Tube Panic (bootleg)", GAME_SUPPORTS_SAVE )
12171215GAME( 1984, rjammer, 0,      rjammer, rjammer, 0, ROT0, "Nichibutsu + Alice", "Roller Jammer", GAME_SUPPORTS_SAVE )
1218
src/mame/drivers/ppmast93.c
r4679r4680
165165
166166static ADDRESS_MAP_START( ppmast93_cpu1_map, ADDRESS_SPACE_PROGRAM, 8 )
167167   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM) AM_WRITENOP AM_REGION("maincpu", 0x10000)
168   AM_RANGE(0x8000, 0xbfff) AM_READ(SMH_BANK1)
168   AM_RANGE(0x8000, 0xbfff) AM_READ(SMH_BANK(1))
169169   AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(ppmast93_bgram_w) AM_BASE(&ppmast93_bgram) AM_SHARE(1)
170170   AM_RANGE(0xd800, 0xdfff) AM_WRITENOP
171171   AM_RANGE(0xf000, 0xf7ff) AM_RAM_WRITE(ppmast93_fgram_w) AM_BASE(&ppmast93_fgram) AM_SHARE(2)
src/mame/drivers/homedata.c
r4679r4680
327327
328328static WRITE8_HANDLER( mrokumei_sound_cmd_w )
329329{
330   soundlatch_w(space,offset,data);
331   cpu_set_input_line(space->machine->cpu[1],0,HOLD_LINE);
330   soundlatch_w(space, offset, data);
331   cputag_set_input_line(space->machine, "audiocpu", 0, HOLD_LINE);
332332}
333333
334334
r4679r4680
388388
389389static MACHINE_RESET( reikaids_upd7807 )
390390{
391   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
391   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
392392   /* on reset, ports are set as input (high impedance), therefore 0xff output */
393393   reikaids_which=homedata_priority;
394394   reikaids_upd7807_portc_w(space,0,0xff);
r4679r4680
535535
536536static MACHINE_RESET( pteacher_upd7807 )
537537{
538   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
538   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
539539   /* on reset, ports are set as input (high impedance), therefore 0xff output */
540540   pteacher_upd7807_portc_w(space,0,0xff);
541541}
r4679r4680
565565/********************************************************************************/
566566
567567
568static ADDRESS_MAP_START( mrokumei_readmem, ADDRESS_SPACE_PROGRAM, 8 )
569   AM_RANGE(0x0000, 0x3fff) AM_READ(SMH_RAM) /* videoram */
570   AM_RANGE(0x4000, 0x5fff) AM_READ(SMH_RAM)
571   AM_RANGE(0x6000, 0x6fff) AM_READ(SMH_RAM) /* work ram */
572   AM_RANGE(0x7000, 0x77ff) AM_READ(SMH_RAM) /* hourouki expects this to act as RAM */
573   AM_RANGE(0x7800, 0x7800) AM_READ(SMH_RAM) /* only used to store the result of the ROM check */
568static ADDRESS_MAP_START( mrokumei_map, ADDRESS_SPACE_PROGRAM, 8 )
569   AM_RANGE(0x0000, 0x3fff) AM_RAM_WRITE(mrokumei_videoram_w) AM_BASE(&videoram)
570   AM_RANGE(0x4000, 0x5fff) AM_RAM
571   AM_RANGE(0x6000, 0x6fff) AM_RAM /* work ram */
572   AM_RANGE(0x7000, 0x77ff) AM_RAM /* hourouki expects this to act as RAM */
573   AM_RANGE(0x7800, 0x7800) AM_RAM /* only used to store the result of the ROM check */
574574   AM_RANGE(0x7801, 0x7802) AM_READ(mrokumei_keyboard_r)   // also vblank and active page
575575   AM_RANGE(0x7803, 0x7803) AM_READ_PORT("IN0")         // coin, service
576576   AM_RANGE(0x7804, 0x7804) AM_READ_PORT("DSW1")         // DSW1
577577   AM_RANGE(0x7805, 0x7805) AM_READ_PORT("DSW2")         // DSW2
578   AM_RANGE(0x7ffe, 0x7ffe) AM_READNOP   // ??? read every vblank, value discarded
579   AM_RANGE(0x8000, 0xffff) AM_READ(SMH_ROM)
580ADDRESS_MAP_END
581
582static ADDRESS_MAP_START( mrokumei_writemem, ADDRESS_SPACE_PROGRAM, 8 )
583   AM_RANGE(0x0000, 0x3fff) AM_WRITE(mrokumei_videoram_w) AM_BASE(&videoram)
584   AM_RANGE(0x4000, 0x5fff) AM_WRITE(SMH_RAM)
585   AM_RANGE(0x6000, 0x6fff) AM_WRITE(SMH_RAM)
586   AM_RANGE(0x7000, 0x77ff) AM_WRITE(SMH_RAM)
587   AM_RANGE(0x7800, 0x7800) AM_WRITE(SMH_RAM) /* only used to store the result of the ROM check */
588578   AM_RANGE(0x7ff0, 0x7ffd) AM_WRITE(SMH_RAM) AM_BASE(&homedata_vreg)
579   AM_RANGE(0x7ffe, 0x7ffe) AM_READNOP   // ??? read every vblank, value discarded
589580   AM_RANGE(0x8000, 0x8000) AM_WRITE(mrokumei_blitter_start_w)   // in some games also ROM bank switch to access service ROM
590581   AM_RANGE(0x8001, 0x8001) AM_WRITE(mrokumei_keyboard_select_w)
591582   AM_RANGE(0x8002, 0x8002) AM_WRITE(mrokumei_sound_cmd_w)
592583   AM_RANGE(0x8003, 0x8003) AM_DEVWRITE("sn", sn76496_w)
593584   AM_RANGE(0x8006, 0x8006) AM_WRITE(homedata_blitter_param_w)
594585   AM_RANGE(0x8007, 0x8007) AM_WRITE(mrokumei_blitter_bank_w)
595   AM_RANGE(0x8000, 0xffff) AM_WRITE(SMH_ROM)
586   AM_RANGE(0x8000, 0xffff) AM_ROM
596587ADDRESS_MAP_END
597588
589static ADDRESS_MAP_START( mrokumei_writemem, ADDRESS_SPACE_PROGRAM, 8 )
590ADDRESS_MAP_END
591
598592static ADDRESS_MAP_START( mrokumei_sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
599593   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
600594ADDRESS_MAP_END
r4679r4680
620614   AM_RANGE(0x7801, 0x7801) AM_READ_PORT("IN0")
621615   AM_RANGE(0x7802, 0x7802) AM_READ_PORT("IN1")
622616   AM_RANGE(0x7803, 0x7803) AM_READ(reikaids_io_r)   // coin, blitter, upd7807
623   AM_RANGE(0x8000, 0xbfff) AM_READ(SMH_BANK1)
617   AM_RANGE(0x8000, 0xbfff) AM_READ(SMH_BANK(1))
624618   AM_RANGE(0xc000, 0xffff) AM_READ(SMH_ROM)
625619ADDRESS_MAP_END
626620
r4679r4680
640634ADDRESS_MAP_END
641635
642636static ADDRESS_MAP_START( reikaids_upd7807_readmem, ADDRESS_SPACE_PROGRAM, 8 )
643   AM_RANGE(0x0000, 0xfeff) AM_READ(SMH_BANK2)   /* External ROM (Banked) */
637   AM_RANGE(0x0000, 0xfeff) AM_READ(SMH_BANK(2))   /* External ROM (Banked) */
644638   AM_RANGE(0xff00, 0xffff) AM_READ(SMH_RAM)   /* Internal RAM */
645639ADDRESS_MAP_END
646640
r4679r4680
666660   AM_RANGE(0x7800, 0x7800) AM_READ(SMH_RAM)
667661   AM_RANGE(0x7801, 0x7801) AM_READ(pteacher_io_r)   // vblank, visible page
668662   AM_RANGE(0x7ff2, 0x7ff2) AM_READ(pteacher_snd_r)
669   AM_RANGE(0x8000, 0xbfff) AM_READ(SMH_BANK1)
663   AM_RANGE(0x8000, 0xbfff) AM_READ(SMH_BANK(1))
670664   AM_RANGE(0xc000, 0xffff) AM_READ(SMH_ROM)
671665ADDRESS_MAP_END
672666
r4679r4680
687681ADDRESS_MAP_END
688682
689683static ADDRESS_MAP_START( pteacher_upd7807_readmem, ADDRESS_SPACE_PROGRAM, 8 )
690   AM_RANGE(0x0000, 0xfeff) AM_READ(SMH_BANK2)   /* External ROM (Banked) */
684   AM_RANGE(0x0000, 0xfeff) AM_READ(SMH_BANK(2))   /* External ROM (Banked) */
691685   AM_RANGE(0xff00, 0xffff) AM_READ(SMH_RAM)   /* Internal RAM */
692686ADDRESS_MAP_END
693687
r4679r4680
12111205
12121206   /* basic machine hardware */
12131207   MDRV_CPU_ADD("maincpu", M6809, 16000000/4)   /* 4MHz ? */
1214   MDRV_CPU_PROGRAM_MAP(mrokumei_readmem,mrokumei_writemem)
1208   MDRV_CPU_PROGRAM_MAP(mrokumei_map,0)
12151209   MDRV_CPU_VBLANK_INT("screen", homedata_irq)   /* also triggered by the blitter */
12161210
12171211   MDRV_CPU_ADD("audiocpu", Z80, 16000000/4)   /* 4MHz ? */
r4679r4680
17851779   /* it seems that Mahjong Jogakuen runs on the same board as the others,
17861780       but with just these two addresses swapped. Instead of creating a new
17871781       MachineDriver, I just fix them here. */
1788   memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x8007, 0x8007, 0, 0, pteacher_blitter_bank_w);
1789   memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x8005, 0x8005, 0, 0, pteacher_gfx_bank_w);
1782   memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x8007, 0x8007, 0, 0, pteacher_blitter_bank_w);
1783   memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x8005, 0x8005, 0, 0, pteacher_gfx_bank_w);
17901784}
17911785
17921786static DRIVER_INIT( mjikaga )
17931787{
17941788   /* Mahjong Ikagadesuka is different as well. */
1795   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x7802, 0x7802, 0, 0, pteacher_snd_r);
1796   memory_install_write8_handler(cpu_get_address_space(machine->cpu[1], ADDRESS_SPACE_PROGRAM), 0x0123, 0x0123, 0, 0, pteacher_snd_answer_w);
1789   memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x7802, 0x7802, 0, 0, pteacher_snd_r);
1790   memory_install_write8_handler(cputag_get_address_space(machine, "audiocpu", ADDRESS_SPACE_PROGRAM), 0x0123, 0x0123, 0, 0, pteacher_snd_answer_w);
17971791}
17981792
17991793static DRIVER_INIT( reikaids )
r4679r4680
18231817GAME( 1990, lemnangl, 0, lemnangl, pteacher, 0,          ROT0, "Home Data", "Mahjong Lemon Angel (Japan)", 0 )
18241818
18251819GAME( 1991?,mjikaga,  0, lemnangl, mjikaga,  mjikaga,    ROT0, "Mitchell",  "Mahjong Ikaga Desu ka (Japan)", GAME_NOT_WORKING | GAME_NO_SOUND )
1826
src/mame/drivers/exidy.c
r4679r4680
13861386   exidy_color_latch[0] = 0x09;
13871387
13881388   /* the ROM is actually mapped high */
1389   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xf800, 0xffff, 0, 0, SMH_BANK1);
1389   memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xf800, 0xffff, 0, 0, (read8_space_func)SMH_BANK(1));
13901390   memory_set_bankptr(machine, 1, memory_region(machine, "maincpu") + 0xf800);
13911391}
13921392
r4679r4680
14171417
14181418static DRIVER_INIT( fax )
14191419{
1420   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
1420   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
14211421
14221422   exidy_video_config(0x04, 0x04, TRUE);
14231423
src/mame/drivers/xxmissio.c
r4679r4680
5353
5454      case 0x40:
5555         xxmissio_status &= ~0x08;
56         cpu_set_input_line_and_vector(space->machine->cpu[1],0,HOLD_LINE,0x10);
56         cputag_set_input_line_and_vector(space->machine, "sub", 0, HOLD_LINE, 0x10);
5757         break;
5858
5959      case 0x80:
r4679r4680
7676
7777      case 0x80:
7878         xxmissio_status &= ~0x04;
79         cpu_set_input_line_and_vector(space->machine->cpu[0],0,HOLD_LINE,0x10);
79         cputag_set_input_line_and_vector(space->machine, "maincpu", 0, HOLD_LINE, 0x10);
8080         break;
8181   }
8282}
src/mame/drivers/mugsmash.c
r4679r4680
6363   switch (offset)
6464   {
6565   case 1:
66      soundlatch_w(space,1,data&0xff);
67      cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_NMI, PULSE_LINE );
66      soundlatch_w(space, 1, data & 0xff);
67      cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE );
6868      break;
6969
7070   default:
r4679r4680
179179}
180180#endif
181181
182static ADDRESS_MAP_START( mugsmash_readmem, ADDRESS_SPACE_PROGRAM, 16 )
183   AM_RANGE(0x000000, 0x07ffff) AM_READ(SMH_ROM)
184   AM_RANGE(0x080000, 0x080fff) AM_READ(SMH_RAM)
185   AM_RANGE(0x082000, 0x082fff) AM_READ(SMH_RAM)
186   AM_RANGE(0x100000, 0x1001ff) AM_READ(SMH_RAM)
187   AM_RANGE(0x100200, 0x1005ff) AM_READ(SMH_RAM)
188   AM_RANGE(0x1c0000, 0x1c3fff) AM_READ(SMH_RAM)
189   AM_RANGE(0x1c4000, 0x1cffff) AM_READ(SMH_RAM)
190   AM_RANGE(0x200000, 0x201fff) AM_READ(SMH_RAM)
191   AM_RANGE(0x202000, 0x203fff) AM_READ(SMH_RAM)
182static ADDRESS_MAP_START( mugsmash_map, ADDRESS_SPACE_PROGRAM, 16 )
183   AM_RANGE(0x000000, 0x07ffff) AM_ROM
184   AM_RANGE(0x080000, 0x080fff) AM_RAM_WRITE(mugsmash_videoram1_w) AM_BASE(&mugsmash_videoram1)
185   AM_RANGE(0x082000, 0x082fff) AM_RAM_WRITE(mugsmash_videoram2_w) AM_BASE(&mugsmash_videoram2)
186   AM_RANGE(0x0c0000, 0x0c0007) AM_WRITE(mugsmash_reg_w) AM_BASE(&mugsmash_regs1)    /* video registers*/
187   AM_RANGE(0x100000, 0x1005ff) AM_RAM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE(&paletteram16)
188   AM_RANGE(0x140000, 0x140007) AM_WRITE(mugsmash_reg2_w) AM_BASE(&mugsmash_regs2) /* sound + ? */
189   AM_RANGE(0x1c0000, 0x1c3fff) AM_RAM /* main ram? */
190   AM_RANGE(0x1c4000, 0x1cffff) AM_RAM
191   AM_RANGE(0x200000, 0x203fff) AM_RAM AM_BASE(&mugs_spriteram) /* sprite ram */
192192#if USE_FAKE_INPUT_PORTS
193193   AM_RANGE(0x180000, 0x180007) AM_READ(mugsmash_input_ports_r)
194194#else
r4679r4680
199199#endif
200200ADDRESS_MAP_END
201201
202static ADDRESS_MAP_START( mugsmash_writemem, ADDRESS_SPACE_PROGRAM, 16 )
203   AM_RANGE(0x000000, 0x07ffff) AM_WRITE(SMH_ROM)
204   AM_RANGE(0x080000, 0x080fff) AM_WRITE(mugsmash_videoram1_w) AM_BASE(&mugsmash_videoram1)
205   AM_RANGE(0x082000, 0x082fff) AM_WRITE(mugsmash_videoram2_w) AM_BASE(&mugsmash_videoram2)
206   AM_RANGE(0x0C0000, 0x0C0007) AM_WRITE(mugsmash_reg_w) AM_BASE(&mugsmash_regs1)    /* video registers*/
207   AM_RANGE(0x100000, 0x1005ff) AM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE(&paletteram16)
208   AM_RANGE(0x140000, 0x140007) AM_WRITE(mugsmash_reg2_w) AM_BASE(&mugsmash_regs2) /* sound + ? */
209   AM_RANGE(0x1c0000, 0x1c3fff) AM_WRITE(SMH_RAM) /* main ram? */
210   AM_RANGE(0x1c4000, 0x1cffff) AM_WRITE(SMH_RAM)
211   AM_RANGE(0x200000, 0x203fff) AM_WRITE(SMH_RAM) AM_BASE(&mugs_spriteram) /* sprite ram */
212ADDRESS_MAP_END
213
214static ADDRESS_MAP_START( snd_readmem, ADDRESS_SPACE_PROGRAM, 8 )
215   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
216   AM_RANGE(0x8000, 0x87ff) AM_READ(SMH_RAM)
217   AM_RANGE(0x8800, 0x8801) AM_DEVREAD("ym", ym2151_r)
218   AM_RANGE(0x9800, 0x9800) AM_DEVREAD("oki", okim6295_r)
202static ADDRESS_MAP_START( mugsmash_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
203   AM_RANGE(0x0000, 0x7fff) AM_ROM
204   AM_RANGE(0x8000, 0x87ff) AM_RAM
205   AM_RANGE(0x8800, 0x8801) AM_DEVREADWRITE("ym", ym2151_r,ym2151_w)
206   AM_RANGE(0x9800, 0x9800) AM_DEVREADWRITE("oki", okim6295_r,okim6295_w)
219207   AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_r)
220208ADDRESS_MAP_END
221209
222static ADDRESS_MAP_START( snd_writemem, ADDRESS_SPACE_PROGRAM, 8 )
223   AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM)
224   AM_RANGE(0x8000, 0x87ff) AM_WRITE(SMH_RAM)
225   AM_RANGE(0x8800, 0x8801) AM_DEVWRITE("ym", ym2151_w)
226   AM_RANGE(0x9800, 0x9800) AM_DEVWRITE("oki", okim6295_w)
227ADDRESS_MAP_END
228210
229
230211#define MUGSMASH_PLAYER_INPUT( player, start ) \
231212   PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(player) PORT_8WAY \
232213   PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(player) PORT_8WAY \
r4679r4680
417398
418399static void irq_handler(const device_config *device, int irq)
419400{
420   cpu_set_input_line(device->machine->cpu[1], 0 , irq ? ASSERT_LINE : CLEAR_LINE );
401   cputag_set_input_line(device->machine, "audiocpu", 0 , irq ? ASSERT_LINE : CLEAR_LINE );
421402}
422403
423404static const ym2151_interface ym2151_config =
r4679r4680
427408
428409static MACHINE_DRIVER_START( mugsmash )
429410   MDRV_CPU_ADD("maincpu", M68000, 12000000)
430   MDRV_CPU_PROGRAM_MAP(mugsmash_readmem,mugsmash_writemem)
411   MDRV_CPU_PROGRAM_MAP(mugsmash_map,0)
431412   MDRV_CPU_VBLANK_INT("screen", irq6_line_hold)
432413
433414   MDRV_CPU_ADD("audiocpu", Z80, 4000000)   /* Guess */
434   MDRV_CPU_PROGRAM_MAP(snd_readmem,snd_writemem)
415   MDRV_CPU_PROGRAM_MAP(mugsmash_sound_map,0)
435416
436   MDRV_GFXDECODE(mugsmash)
437
438
439417   MDRV_SCREEN_ADD("screen", RASTER)
440418   MDRV_SCREEN_REFRESH_RATE(60)
441419   MDRV_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
442420   MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
443421   MDRV_SCREEN_SIZE(40*8, 32*8)
444422   MDRV_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1)
423   MDRV_GFXDECODE(mugsmash)
445424
446425   MDRV_PALETTE_LENGTH(0x300)
447426
src/mame/drivers/pcktgal.c
r4679r4680
3131{
3232   UINT8 *RAM = memory_region(space->machine, "maincpu");
3333
34   if (data & 1) { memory_set_bankptr(space->machine, 1,&RAM[0x4000]); }
35   else { memory_set_bankptr(space->machine, 1,&RAM[0x10000]); }
34   if (data & 1) { memory_set_bankptr(space->machine, 1, &RAM[0x4000]); }
35   else { memory_set_bankptr(space->machine, 1, &RAM[0x10000]); }
3636
37   if (data & 2) { memory_set_bankptr(space->machine, 2,&RAM[0x6000]); }
38   else { memory_set_bankptr(space->machine, 2,&RAM[0x12000]); }
37   if (data & 2) { memory_set_bankptr(space->machine, 2, &RAM[0x6000]); }
38   else { memory_set_bankptr(space->machine, 2, &RAM[0x12000]); }
3939}
4040
4141static WRITE8_HANDLER( pcktgal_sound_bank_w )
r4679r4680
4545
4646static WRITE8_HANDLER( pcktgal_sound_w )
4747{
48   soundlatch_w(space,0,data);
49   cpu_set_input_line(space->machine->cpu[1],INPUT_LINE_NMI,PULSE_LINE);
48   soundlatch_w(space, 0, data);
49   cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
5050}
5151
5252static int msm5205next;
r4679r4680
6060
6161   toggle = 1 - toggle;
6262   if (toggle)
63      cpu_set_input_line(device->machine->cpu[1],M6502_IRQ_LINE,HOLD_LINE);
63      cputag_set_input_line(device->machine, "audiocpu", M6502_IRQ_LINE, HOLD_LINE);
6464}
6565
6666static WRITE8_HANDLER( pcktgal_adpcm_data_w )
r4679r4680
7676
7777/***************************************************************************/
7878
79static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 )
80   AM_RANGE(0x0000, 0x07ff) AM_READ(SMH_RAM)
79static ADDRESS_MAP_START( pcktgal_map, ADDRESS_SPACE_PROGRAM, 8 )
80   AM_RANGE(0x0000, 0x07ff) AM_RAM
81   AM_RANGE(0x0800, 0x0fff) AM_RAM_WRITE(pcktgal_videoram_w) AM_BASE(&videoram)
82   AM_RANGE(0x1000, 0x11ff) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
8183   AM_RANGE(0x1800, 0x1800) AM_READ_PORT("P1")
82   AM_RANGE(0x1a00, 0x1a00) AM_READ_PORT("P2")
83   AM_RANGE(0x1c00, 0x1c00) AM_READ_PORT("DSW")
84   AM_RANGE(0x4000, 0x5fff) AM_READ(SMH_BANK1)
85   AM_RANGE(0x6000, 0x7fff) AM_READ(SMH_BANK2)
86   AM_RANGE(0x8000, 0xffff) AM_READ(SMH_ROM)
87ADDRESS_MAP_END
88
89static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 )
90   AM_RANGE(0x0000, 0x07ff) AM_WRITE(SMH_RAM)
91   AM_RANGE(0x0800, 0x0fff) AM_WRITE(pcktgal_videoram_w) AM_BASE(&videoram)
92   AM_RANGE(0x1000, 0x11ff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
9384   AM_RANGE(0x1801, 0x1801) AM_WRITE(pcktgal_flipscreen_w)
9485   /* 1800 - 0x181f are unused BAC-06 registers, see video/dec0.c */
95   AM_RANGE(0x1a00, 0x1a00) AM_WRITE(pcktgal_sound_w)
96   AM_RANGE(0x1c00, 0x1c00) AM_WRITE(pcktgal_bank_w)
97   AM_RANGE(0x4000, 0xffff) AM_WRITE(SMH_ROM)
86   AM_RANGE(0x1a00, 0x1a00) AM_READ_PORT("P2") AM_WRITE(pcktgal_sound_w)
87   AM_RANGE(0x1c00, 0x1c00) AM_READ_PORT("DSW") AM_WRITE(pcktgal_bank_w)
88   AM_RANGE(0x4000, 0x5fff) AM_ROMBANK(1)
89   AM_RANGE(0x6000, 0x7fff) AM_ROMBANK(2)
90   AM_RANGE(0x8000, 0xffff) AM_ROM
9891ADDRESS_MAP_END
9992
93
10094/***************************************************************************/
10195
102static ADDRESS_MAP_START( sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
103   AM_RANGE(0x0000, 0x07ff) AM_READ(SMH_RAM)
104   AM_RANGE(0x3000, 0x3000) AM_READ(soundlatch_r)
105   AM_RANGE(0x3400, 0x3400) AM_DEVREAD("msm", pcktgal_adpcm_reset_r)   /* ? not sure */
106   AM_RANGE(0x4000, 0x7fff) AM_READ(SMH_BANK3)
107   AM_RANGE(0x8000, 0xffff) AM_READ(SMH_ROM)
108ADDRESS_MAP_END
109
110static ADDRESS_MAP_START( sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
111   AM_RANGE(0x0000, 0x07ff) AM_WRITE(SMH_RAM)
96static ADDRESS_MAP_START( pcktgal_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
97   AM_RANGE(0x0000, 0x07ff) AM_RAM
11298   AM_RANGE(0x0800, 0x0801) AM_DEVWRITE("ym1", ym2203_w)
11399   AM_RANGE(0x1000, 0x1001) AM_DEVWRITE("ym2", ym3812_w)
114100   AM_RANGE(0x1800, 0x1800) AM_WRITE(pcktgal_adpcm_data_w)   /* ADPCM data for the MSM5205 chip */
115101   AM_RANGE(0x2000, 0x2000) AM_WRITE(pcktgal_sound_bank_w)
116   AM_RANGE(0x4000, 0xffff) AM_WRITE(SMH_ROM)
102   AM_RANGE(0x3000, 0x3000) AM_READ(soundlatch_r)
103   AM_RANGE(0x3400, 0x3400) AM_DEVREAD("msm", pcktgal_adpcm_reset_r)   /* ? not sure */
104   AM_RANGE(0x4000, 0x7fff) AM_ROMBANK(3)
105   AM_RANGE(0x8000, 0xffff) AM_ROM
117106ADDRESS_MAP_END
118107
108
119109/***************************************************************************/
120110
121111static INPUT_PORTS_START( pcktgal )
r4679r4680
235225
236226   /* basic machine hardware */
237227   MDRV_CPU_ADD("maincpu", M6502, 2000000)
238   MDRV_CPU_PROGRAM_MAP(readmem,writemem)
228   MDRV_CPU_PROGRAM_MAP(pcktgal_map,0)
239229   MDRV_CPU_VBLANK_INT("screen", nmi_line_pulse)
240230
241231   MDRV_CPU_ADD("audiocpu", M6502, 1500000)
242   MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem)
232   MDRV_CPU_PROGRAM_MAP(pcktgal_sound_map,0)
243233                     /* IRQs are caused by the ADPCM chip */
244234                     /* NMIs are caused by the main CPU */
245235
r4679r4680
425415{
426416   int A;
427417   const address_space *space = cputag_get_address_space(machine, "audiocpu", ADDRESS_SPACE_PROGRAM);
428   UINT8 *decrypted = auto_malloc(0x10000);
418   UINT8 *decrypted = auto_alloc_array(machine, UINT8, 0x10000);
429419   UINT8 *rom = memory_region(machine, "audiocpu");
430420
431421   memory_set_decrypted_region(space, 0x8000, 0xffff, decrypted);
src/mame/drivers/hyhoo.c
r4679r4680
5555}
5656
5757
58static ADDRESS_MAP_START( readmem_hyhoo, ADDRESS_SPACE_PROGRAM, 8 )
59   AM_RANGE(0x0000, 0xefff) AM_READ(SMH_ROM)
60   AM_RANGE(0xf000, 0xffff) AM_READ(SMH_RAM)
58static ADDRESS_MAP_START( hyhoo_map, ADDRESS_SPACE_PROGRAM, 8 )
59   AM_RANGE(0x0000, 0xefff) AM_ROM
60   AM_RANGE(0xf000, 0xffff) AM_RAM AM_BASE(&nb1413m3_nvram) AM_SIZE(&nb1413m3_nvram_size)
6161ADDRESS_MAP_END
6262
63static ADDRESS_MAP_START( writemem_hyhoo, ADDRESS_SPACE_PROGRAM, 8 )
64   AM_RANGE(0x0000, 0xefff) AM_WRITE(SMH_ROM)
65   AM_RANGE(0xf000, 0xffff) AM_WRITE(SMH_RAM) AM_BASE(&nb1413m3_nvram) AM_SIZE(&nb1413m3_nvram_size)
66ADDRESS_MAP_END
67
6863static ADDRESS_MAP_START( hyhoo_io_map, ADDRESS_SPACE_IO, 8 )
6964   ADDRESS_MAP_GLOBAL_MASK(0xff)
7065//  AM_RANGE(0x00, 0x00) AM_WRITE(nb1413m3_nmi_clock_w)
r4679r4680
261256
262257   /* basic machine hardware */
263258   MDRV_CPU_ADD("maincpu", Z80, 5000000/1)   /* 5.00 MHz ?? */
264   MDRV_CPU_PROGRAM_MAP(readmem_hyhoo, writemem_hyhoo)
259   MDRV_CPU_PROGRAM_MAP(hyhoo_map,0)
265260   MDRV_CPU_IO_MAP(hyhoo_io_map,0)
266261   MDRV_CPU_VBLANK_INT("screen", nb1413m3_interrupt)
267262
src/mame/drivers/hng64.c
r4679r4680
33Driver by David Haywood, ElSemi, and Andrew Gardner.
44Rasterizing code provided in part by Andrew Zaferakis.
55
6
67Notes:
78  * The top board is likely identical for all revisions and all "versions" of the hardware.
89    It contains the main MIPS CPU and a secondary communications KL5C80.
r4679r4680
1516    It probably has a lot to do with the network (Roads Edge network connectors are on this board).
1617    And since it can return any value at any time, it may be responsible for fatfurwa's missing palette.
1718  * The Toshiba CPU datasheet is here : http://www.semicon.toshiba.co.jp/openb2b/websearch/productDetails.jsp?partKey=TMP87CH40N
18  * The internal ROM needs dumping.  Rumor has it, it's the same MCU as in Naomi hardware...
1919
2020  * From the Roads Edge manual : "The Network Check screen will be displayed for about 40 seconds whether
2121                                  the cabinet is connected for communication competition or not.  After this,
r4679r4680
4444  * upgrade to modern video timing.
4545
4646  3d:
47  * Find where the remainder of the 3d display list information is 'hiding' (FIFO?)
47  * Find where the remainder of the 3d display list information is 'hiding'
48    -- should the 3d 'ram' be treated like a fifo, instead of like RAM (see Dreamcast etc.)
4849  * Remaining 3d bits - glowing, etc.
4950  * Populate the display buffers
5051  * Does the hng64 do perspective-correct texture mapping?  Doesn't look like it...
r4679r4680
6061*/
6162
6263/*
63Known games on this system
64
65Beast Busters 2nd Nightmare ( http://emustatus.rainemu.com/games/bbustr2nd.htm )
66Buriki One ( http://emustatus.rainemu.com/games/buriki1.htm )
67Fatal Fury: Wild Ambition ( http://emustatus.rainemu.com/games/ffurywa.htm )
68Roads Edge / Round Trip? ( http://emustatus.rainemu.com/games/redge.htm )
69Samurai Shodown 64 ( http://emustatus.rainemu.com/games/sams64.htm )
70Samurai Shodown: Warrior's Rage ( http://emustatus.rainemu.com/games/samswr.htm )
71Xtreme Rally / Offbeat Racer ( http://emustatus.rainemu.com/games/xrally.htm )
72*/
73
74/*
7564NeoGeo Hyper 64 (Main Board)
7665SNK, 1997
7766
r4679r4680
463452#include "deprecat.h"
464453#include "cpu/mips/mips3.h"
465454
455static int hng64_boothack = 0;
466456static UINT32 *rombase;
467457static UINT32 *hng_mainram;
468458static UINT32 *hng_cart;
469459static UINT32 *hng64_dualport;
470460static UINT32 *hng64_sram;
471461static UINT16 *hng64_soundram;
462static UINT32 *hng64_sysregs;
472463
473464// Stuff from over in video...
474465extern tilemap *hng64_tilemap0, *hng64_tilemap1, *hng64_tilemap2, *hng64_tilemap3 ;
r4679r4680
627618   //if (a != 0)
628619   //  popmessage("Alpha is not zero!") ;
629620
630   palette_set_color(space->machine,offset,MAKE_RGB(r,g,b));
621   // sams64 / sams64_2 never write a palette, why not?
622   if (hng64_boothack!=1)
623      palette_set_color(space->machine,offset,MAKE_RGB(r,g,b));
631624}
632625
633static READ32_HANDLER( hng64_port_read )
626static READ32_HANDLER( hng64_sysregs_r )
634627{
635   logerror("HNG64 port read (PC=%08x) 0x%08x\n", cpu_get_pc(space->cpu),offset*4);
628   mame_system_time systime;
629   mame_get_base_datetime(space->machine, &systime);
636630
637   if(offset==0x421) return 0x00000002;
638    if(offset==0x441) return hng64_interrupt_level_request;
631   //if(((offset*4) & 0xff00) == 0x2100)
632   //  printf("HNG64 port read (PC=%08x) 0x%08x\n", cpu_get_pc(space->cpu),offset*4);
639633
640   if(offset==0x85b) return 0x00000010;
634   switch(offset*4)
635   {
636      case 0x001c: return mame_rand(space->machine); // hng64 hangs on start-up if zero.
637      //case 0x106c:
638      //case 0x107c:
639      case 0x1084: return 0x00000002; //???
640      //case 0x108c:
641      case 0x1104: return hng64_interrupt_level_request;
642      case 0x1254: return 0x00000000; //dma status, 0x800
643      /* 4-bit RTC */
644      case 0x2104: return (systime.local_time.second % 10);
645      case 0x210c: return (systime.local_time.second / 10);
646      case 0x2114: return (systime.local_time.minute % 10);
647      case 0x211c: return (systime.local_time.minute / 10);
648      case 0x2124: return (systime.local_time.hour % 10);
649      case 0x212c: return (systime.local_time.hour / 10);
650      case 0x2134: return (systime.local_time.mday % 10);
651      case 0x213c: return (systime.local_time.mday / 10);
652      case 0x2144: return ((systime.local_time.month+1) % 10);
653      case 0x214c: return ((systime.local_time.month+1) / 10);
654      case 0x2154: return (systime.local_time.year%10);
655      case 0x215c: return ((systime.local_time.year%100)/10);
656      case 0x2164: return (systime.local_time.weekday);
641657
642   return mame_rand(space->machine)&0xffffffff;
658      case 0x216c: return 0x00000010; //enables "system log reader"
659
660      case 0x217c: return 0; //RTC status?
661   }
662
663   //printf("%08x\n",offset*4);
664
665   //return mame_rand(space->machine)&0xffffffff;
666   return hng64_sysregs[offset];
643667}
644668
669/* preliminary dma code, dma is used to copy program code -> ram */
670static INT32 hng_dma_start,hng_dma_dst,hng_dma_len;
645671
646/* preliminary dma code, dma is used to copy program code -> ram */
647static int hng_dma_start,hng_dma_dst,hng_dma_len;
648672static void hng64_do_dma (const address_space *space)
649673{
650   logerror("Performing DMA Start %08x Len %08x Dst %08x\n",hng_dma_start, hng_dma_len, hng_dma_dst);
674   printf("Performing DMA Start %08x Len %08x Dst %08x\n",hng_dma_start, hng_dma_len, hng_dma_dst);
651675
652   while (hng_dma_len>0)
676   while (hng_dma_len>=0)
653677   {
654678      UINT32 dat;
655679
r4679r4680
659683      hng_dma_dst+=4;
660684      hng_dma_len--;
661685   }
662
663   hng_dma_start+=4;
664   hng_dma_dst+=4;
665686}
666687
688/*
689//  AM_RANGE(0x1F70100C, 0x1F70100F) AM_WRITENOP        // ?? often
690//  AM_RANGE(0x1F70101C, 0x1F70101F) AM_WRITENOP        // ?? often
691//  AM_RANGE(0x1F70106C, 0x1F70106F) AM_WRITENOP        // fatfur,strange
692//  AM_RANGE(0x1F701084, 0x1F701087) AM_RAM
693//  AM_RANGE(0x1F70111C, 0x1F70111F) AM_WRITENOP        // irq ack
667694
668static WRITE32_HANDLER( hng_dma_start_w )
669{
670   logerror ("DMA Start Write %08x\n",data);
671   hng_dma_start = data;
672}
695//  AM_RANGE(0x1F70124C, 0x1F70124F) AM_WRITENOP        // dma related?
696//  AM_RANGE(0x1F70125C, 0x1F70125F) AM_WRITENOP        // dma related?
697//  AM_RANGE(0x1F7021C4, 0x1F7021C7) AM_WRITENOP        // ?? often
673698
674static WRITE32_HANDLER( hng_dma_dst_w )
675{
676   logerror ("DMA Dst Write %08x\n",data);
677   hng_dma_dst = data;
678}
699*/
679700
680static WRITE32_HANDLER( hng_dma_len_w )
701static WRITE32_HANDLER( hng64_sysregs_w )
681702{
682   logerror ("DMA Len Write %08x\n",data);
683   hng_dma_len = data;
684   hng64_do_dma(space);
685
703   COMBINE_DATA (&hng64_sysregs[offset]);
704   switch(offset*4)
705   {
706      case 0x111c: /* irq ack */ break;
707      case 0x1204: hng_dma_start = hng64_sysregs[offset]; break;
708      case 0x1214: hng_dma_dst = hng64_sysregs[offset]; break;
709      case 0x1224:
710         hng_dma_len = hng64_sysregs[offset];
711         hng64_do_dma(space);
712         break;
713      default:
714         logerror("HNG64 writing to SYSTEM Registers 0x%08x == 0x%08x. (PC=%08x)\n", offset*4, hng64_sysregs[offset], cpu_get_pc(space->cpu));
715   }
686716}
687717
688#ifdef UNUSED_FUNCTION
689READ32_HANDLER( hng64_videoram_r )
690{
691   return hng64_videoram[offset];
692}
693
694WRITE32_HANDLER( hng64_mainram_w )
695{
696   COMBINE_DATA (&hng_mainram[offset]);
697}
698
699READ32_HANDLER( hng64_cart_r )
700{
701   return hng_cart[offset];
702}
703#endif
704
705718static READ32_HANDLER( hng64_sram_r )
706719{
707720   logerror("HNG64 reading from SRAM 0x%08x == 0x%08x. (PC=%08x)\n", offset*4, hng64_sram[offset], cpu_get_pc(space->cpu));
r4679r4680
720733   COMBINE_DATA (&hng64_dualport[offset]);
721734}
722735
736
723737static READ32_HANDLER( hng64_dualport_r )
724738{
739   static int toggle = 0;
740
725741   logerror("dualport R %08x %08x (PC=%08x)\n", offset*4, hng64_dualport[offset], cpu_get_pc(space->cpu));
726742
727743   // These hacks create some red marks for the boot-up sequence
728744   switch (offset*4)
729745   {
730746      //SamSho64
731//      case 0x00:  toggi^=1; if (toggi==1) {return 0x00000400;} else {return 0x00000300;};
747        case 0x00:
748      {
749
750         if (hng64_boothack == 1) // ss64
751         {
752            toggle^=1; if (toggle==1) {return 0x00000400;} else {return 0x00000300;};
753         }
754         else if (hng64_boothack == 2) // ffwa
755         {
756            return 0x00000400;
757         }
758
759         return mame_rand(space->machine);
760      }
761
732762      //RoadsEdge
733763//      case 0x00:  return input_port_read(space->machine, "IPT_TEST");
734764
735      //Fatfurwa
736      case 0x00:  return 0x00000400;
765
737766      case 0x04:  return input_port_read(space->machine, "SYSTEM");
738767      case 0x08:  return input_port_read(space->machine, "P1_P2");
739768
r4679r4680
777806
778807
779808// The 3d 'display list'
809// is it a fifo?
810// sams64 / sams64_2 access it in a very different way to fatal fury...
780811static WRITE32_HANDLER( dl_w )
781812{
782813   COMBINE_DATA (&hng64_dl[offset]) ;
814}
783815
784   // !!! There are a few other writes over 0x80 as well - don't forget about those someday !!!
816#if 0
817static READ32_HANDLER( dl_r )
818{
785819
786   // This method of finding the 85 writes and switching banks seems to work
787   //  the problem is when there are a lot of things to be drawn (more than what can fit in 2*0x80)
788   //  the list doesn't fit anymore, and parts aren't drawn every frame.
789820
790   if (offset == 0x85)
791   {
792      // Only if it's VALID
793      if ((INT32)hng64_dl[offset] == 1 || (INT32)hng64_dl[offset] == 2)
794         activeBuffer = (INT32)hng64_dl[offset] - 1 ;      // Subtract 1 to fit into my array...
795   }
821//  mame_printf_debug("dl R (%08x) : %x %x\n", cpu_get_pc(space->cpu), offset, hng64_dl[offset]) ;
822//  usrintf_showmessage("dl R (%08x) : %x %x", cpu_get_pc(space->cpu), offset, hng64_dl[offset]) ;
823   return hng64_dl[offset] ;
824}
825#endif
796826
797   if (offset <= 0x80)
798      hng64_dls[activeBuffer][offset] = hng64_dl[offset] ;
827// A read at 0x20300217 ONLY happens if there are more display lists than what are readily available.
799828
800   // For some reason, if the value at 0x86 and'ed with 0x02 is non-zero, the software just keeps
801   //   checking 0x86 until and'ing it with 2 returns 0...  What could change 0x86 if cpu0 is in this infinite loop?
802   //   Why 0x2?  And why (see below) does a read of 0x86 only happen when there is data 'hiding'
803   //   in the display list?
829// Some kind of buffering of the display lists, or 'render current buffer' write?
830static WRITE32_HANDLER( dl_control_w )
831{
832   if (activeBuffer==0 || activeBuffer==1)
833      memcpy(&hng64_dls[activeBuffer][0],&hng64_dl[0],0x200);
804834
805   // Sends the program into an infinite loop...
806//  if (offset == 0x85 && hng64_dl[offset] == 0x1)      // Just before the second half of the writes
807//      hng64_dl[0x86] = 0x2 ;                          // set 0x86 to 2 (so it drops into the loop)
835   // Only if it's VALID (hack)
836   if (data == 1 || data == 2)
837      activeBuffer = data - 1;
808838
809//  mame_printf_debug("dl W (%08x) : %.8x %.8x\n", cpu_get_pc(space->cpu), offset, hng64_dl[offset]) ;
810839}
811840
812static READ32_HANDLER( dl_r )
813{
814   // A read of 0x86 ONLY happens if there are more display lists than what are readily available.
815   // (PC = 8006fe1c)
816841
817//  mame_printf_debug("dl R (%08x) : %x %x\n", cpu_get_pc(space->cpu), offset, hng64_dl[offset]) ;
818//  usrintf_showmessage("dl R (%08x) : %x %x", cpu_get_pc(space->cpu), offset, hng64_dl[offset]) ;
819   return hng64_dl[offset] ;
820}
821842
822843#ifdef UNUSED_FUNCTION
823844WRITE32_HANDLER( activate_3d_buffer )
r4679r4680
847868    if (offset == 0x0000000b)
848869    {
849870        sprintf(writeString, "%s %.8x ", writeString, hng64_tcram[offset]) ;
850//      popmessage("%s", writeString) ;
871//      _("%s", writeString) ;
851872    }
852873*/
853874}
r4679r4680
903924   AM_RANGE(0x04000000, 0x05ffffff) AM_WRITENOP AM_ROM AM_REGION("user3",0) AM_BASE(&hng_cart)
904925
905926   // Ports
906   AM_RANGE(0x1F700000, 0x1F702fff) AM_READ(hng64_port_read)
927   AM_RANGE(0x1f700000, 0x1f702fff) AM_READWRITE(hng64_sysregs_r,hng64_sysregs_w) AM_BASE(&hng64_sysregs)
907928
908//  AM_RANGE(0x1F70100C, 0x1F70100F) AM_WRITENOP        // ?? often
909//  AM_RANGE(0x1F70101C, 0x1F70101F) AM_WRITENOP        // ?? often
910//  AM_RANGE(0x1F70106C, 0x1F70106F) AM_WRITENOP        // fatfur,strange
911//  AM_RANGE(0x1F701084, 0x1F701087) AM_RAM
912//  AM_RANGE(0x1F70111C, 0x1F70111F) AM_WRITENOP        // irq ack
913   AM_RANGE(0x1F701204, 0x1F701207) AM_WRITE(hng_dma_start_w)
914   AM_RANGE(0x1F701214, 0x1F701217) AM_WRITE(hng_dma_dst_w)
915   AM_RANGE(0x1F701224, 0x1F701227) AM_WRITE(hng_dma_len_w)
916//  AM_RANGE(0x1F70124C, 0x1F70124F) AM_WRITENOP        // dma related?
917//  AM_RANGE(0x1F70125C, 0x1F70125F) AM_WRITENOP        // dma related?
918//  AM_RANGE(0x1F7021C4, 0x1F7021C7) AM_WRITENOP        // ?? often
919
920929   // SRAM.  Coin data, Player Statistics, etc.
921930   AM_RANGE(0x1F800000, 0x1F803fff) AM_READWRITE(hng64_sram_r, hng64_sram_w) AM_BASE(&hng64_sram)
922931
r4679r4680
933942   AM_RANGE(0x20190000, 0x20190037) AM_RAM AM_BASE(&hng64_videoregs)                           // Video Registers
934943   AM_RANGE(0x20200000, 0x20203fff) AM_READWRITE(SMH_RAM,hng64_pal_w) AM_BASE(&paletteram32)         // Palette
935944   AM_RANGE(0x20208000, 0x2020805f) AM_READWRITE(tcram_r, tcram_w) AM_BASE(&hng64_tcram)            // Transition Control
936   AM_RANGE(0x20300000, 0x2030ffff) AM_READWRITE(dl_r, dl_w) AM_BASE(&hng64_dl)                  // 3d Display List
945   AM_RANGE(0x20300000, 0x203001ff) AM_WRITE(dl_w) AM_BASE(&hng64_dl)                  // 3d Display List
946   AM_RANGE(0x20300214, 0x20300217) AM_WRITE(dl_control_w)
937947
938948   // 3d?
939949//  AM_RANGE(0x30000000, 0x3000002f) AM_READWRITE(q2_r, q2_w) AM_BASE(&hng64_q2)
r4679r4680
12421252
12431253
12441254static ADDRESS_MAP_START( hng_sound_map, ADDRESS_SPACE_PROGRAM, 16 )
1245   AM_RANGE(0x00000, 0x3ffff) AM_READ(SMH_BANK2)
1246   AM_RANGE(0xe0000, 0xfffff) AM_READ(SMH_BANK1)
1255   AM_RANGE(0x00000, 0x3ffff) AM_READ(SMH_BANK(2))
1256   AM_RANGE(0xe0000, 0xfffff) AM_READ(SMH_BANK(1))
12471257ADDRESS_MAP_END
12481258
12491259
r4679r4680
13241334
13251335
13261336
1327/* the 4bpp gfx encoding is annoying */
1328
1329static const gfx_layout hng64_4_even_layout =
1337static const gfx_layout hng64_8x8x4_tilelayout =
13301338{
13311339   8,8,
13321340   RGN_FRAC(1,1),
13331341   4,
13341342   { 0,1,2,3 },
1335   { 40, 44, 8,12,  32,36,    0,4},
1336   { 0*64, 1*64, 2*64, 3*64, 4*64, 5*64, 6*64, 7*64 },
1337   8*64
1343   { 24, 28, 8,12,  16,20,    0,4},
1344   { 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32 },
1345   8*32
13381346};
13391347
1340static const gfx_layout hng64_4_odd_layout =
1348static const gfx_layout hng64_8x8x8_tilelayout =
13411349{
13421350   8,8,
13431351   RGN_FRAC(1,1),
1344   4,
1345   { 0,1,2,3 },
1346   {  56,60, 24, 28,  48,52,   16, 20 },
1347
1348
1349   { 0*64, 1*64, 2*64, 3*64, 4*64, 5*64, 6*64, 7*64 },
1350   8*64
1352   8,
1353   { 0,1,2,3,4,5,6,7 },
1354   { 24, 8, 16, 0, 256+24, 256+8, 256+16, 256+0},
1355   { 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32 },
1356   16*32
13511357};
13521358
1353
1354static const gfx_layout hng64_4_16_layout =
1359static const gfx_layout hng64_16x16x4_tilelayout =
13551360{
13561361   16,16,
13571362   RGN_FRAC(1,1),
13581363   4,
13591364   { 0,1,2,3 },
1360   {  56,60, 24, 28,  48,52,   16, 20,40, 44, 8,12,  32,36,    0,4 },
1365   { 24, 28, 8,12,  16,20,    0,4,
1366   256+24,256+28,256+8,256+12,256+16,256+20,256+0,256+4
13611367
1362
1363   { 0*64, 1*64, 2*64, 3*64, 4*64, 5*64, 6*64, 7*64,8*64,9*64,10*64,11*64,12*64,13*64,14*64,15*64 },
1364   16*64
1368   },
1369   { 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32, 16*32,17*32,18*32,19*32,20*32,21*32,22*32,23*32 },
1370   32*32
13651371};
13661372
13671373
1368static const gfx_layout hng64_layout =
1374static const gfx_layout hng64_16x16x8_tilelayout =
13691375{
1370   8,8,
1376   16,16,
13711377   RGN_FRAC(1,1),
13721378   8,
13731379   { 0,1,2,3,4,5,6,7 },
1374   { 56, 24, 48,16,  40, 8,  32, 0 },
1375   { 0*64, 1*64, 2*64, 3*64, 4*64, 5*64, 6*64, 7*64 },
1376   8*64
1380   { 24, 8, 16, 0,
1381   256+24, 256+8, 256+16, 256+0,
1382   1024+24,1024+8,1024+16,1024+0,
1383   1280+24,1280+8,1280+16,1280+0,
1384   },
1385   { 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32,
1386     16*32,17*32,18*32,19*32,20*32,21*32,22*32,22*32,23*32
1387   },
1388   64*32
13771389};
13781390
1391static const gfx_layout hng64_16x16x4_spritelayout =
1392{
1393   16,16,
1394   RGN_FRAC(1,1),
1395   4,
1396   { 0,1,2,3 },
1397   {  56,60, 24, 28,  48,52,   16, 20,40, 44, 8,12,  32,36,    0,4 },
1398   { 0*64, 1*64, 2*64, 3*64, 4*64, 5*64, 6*64, 7*64,8*64,9*64,10*64,11*64,12*64,13*64,14*64,15*64 },
1399   16*64
1400};
13791401
1380static const gfx_layout hng64_16_layout =
1402static const gfx_layout hng64_16x16x8_spritelayout =
13811403{
13821404   16,16,
13831405   RGN_FRAC(1,1),
r4679r4680
13911413};
13921414
13931415
1416static const UINT32 texlayout_xoffset[1024] =
1417{
1418   STEP1024(0,8),
1419
1420};
1421
1422static const UINT32 texlayout_yoffset[512] =
1423{
1424   STEP512(0,8192),
1425};
1426
1427static const gfx_layout hng64_texlayout =
1428{
1429   1024, 512,
1430   RGN_FRAC(1,1),
1431   8,
1432   { 0,1,2,3,4,5,6,7 },
1433   EXTENDED_XOFFS,
1434   EXTENDED_YOFFS,
1435   1024*512*8,
1436   texlayout_xoffset,
1437   texlayout_yoffset
1438};
1439
1440
13941441static GFXDECODE_START( hng64 )
1395   GFXDECODE_ENTRY( "gfx1", 0, hng64_4_even_layout, 0x0, 0x100 ) /* scrolltiles */
1396   GFXDECODE_ENTRY( "gfx1", 0, hng64_4_odd_layout,  0x0, 0x100 ) /* scrolltiles */
1397   GFXDECODE_ENTRY( "gfx1", 0, hng64_layout,        0x0, 0x10 )  /* scrolltiles */
1398   GFXDECODE_ENTRY( "gfx1", 0, hng64_16_layout,     0x0, 0x10 )  /* scroll tiles */
1399   GFXDECODE_ENTRY( "gfx2", 0, hng64_4_16_layout,   0x0, 0x100 ) /* sprite tiles */
1400   GFXDECODE_ENTRY( "gfx2", 0, hng64_16_layout,     0x0, 0x10 )  /* sprite tiles */
1442
1443   /* tilemap tiles */
1444   GFXDECODE_ENTRY( "scrtile", 0, hng64_8x8x4_tilelayout,  0x0, 0x100 )
1445   GFXDECODE_ENTRY( "scrtile", 0, hng64_8x8x8_tilelayout,  0x0, 0x10 )
1446   GFXDECODE_ENTRY( "scrtile", 0, hng64_16x16x4_tilelayout,0x0, 0x100 )
1447   GFXDECODE_ENTRY( "scrtile", 0, hng64_16x16x8_tilelayout,0x0, 0x10 )
1448
1449   /* sprite tiles */
1450   GFXDECODE_ENTRY( "sprtile", 0, hng64_16x16x4_spritelayout, 0x0, 0x100 )
1451   GFXDECODE_ENTRY( "sprtile", 0, hng64_16x16x8_spritelayout, 0x0, 0x10 )
1452
1453   GFXDECODE_ENTRY( "textures", 0, hng64_texlayout,     0x0, 0x10 )  /* textures */
14011454GFXDECODE_END
14021455
1456static void hng64_reorder(UINT8* gfxregion, size_t gfxregionsize)
1457{
1458   // by default 2 4bpp tiles are stored in each 8bpp tile, this makes decoding in MAME harder than it needs to be
1459   // reorder them
1460   UINT8* buffer;
1461   int i;
1462   UINT8 tilesize = 4*8; // 4 bytes per line, 8 lines
1463
1464   buffer = alloc_array_or_die(UINT8, gfxregionsize);
1465
1466   for (i=0;i<gfxregionsize/2;i+=tilesize)
1467   {
1468      memcpy((buffer+i*2)+tilesize, gfxregion+i,                   tilesize);
1469      memcpy((buffer+i*2),          gfxregion+i+(gfxregionsize/2), tilesize);
1470   }
1471
1472   memcpy(gfxregion, buffer, gfxregionsize);
1473
1474   free (buffer);
1475
1476}
1477
1478
1479static DRIVER_INIT( hng64_reorder_gfx )
1480{
1481   hng64_reorder(memory_region(machine,"scrtile"), memory_region_length(machine, "scrtile"));
1482}
1483
1484
1485
14031486static DRIVER_INIT( hng64 )
14041487{
1405   hng64_soundram=auto_malloc(0x200000);
1488   hng64_soundram=auto_alloc_array(machine, UINT16, 0x200000/2);
1489   DRIVER_INIT_CALL(hng64_reorder_gfx);
14061490}
14071491
14081492static DRIVER_INIT(hng64_fght)
14091493{
1410   no_machine_error_code=0x01010101;
1494   no_machine_error_code=0x01000000;
14111495   DRIVER_INIT_CALL(hng64);
14121496}
14131497
1498static DRIVER_INIT( fatfurwa )
1499{
1500   DRIVER_INIT_CALL(hng64_fght);
1501   hng64_boothack = 2;
1502}
1503
1504static DRIVER_INIT( ss64 )
1505{
1506   DRIVER_INIT_CALL(hng64_fght);
1507   hng64_boothack = 1;
1508}
1509
1510
14141511static DRIVER_INIT(hng64_race)
14151512{
1416   no_machine_error_code=0x02020202;
1513   no_machine_error_code=0x02000000;
14171514   DRIVER_INIT_CALL(hng64);
14181515}
14191516
1517static DRIVER_INIT(hng64_shoot)
1518{
1519   hng64_boothack = 2;
1520   no_machine_error_code=0x03000000;
1521   DRIVER_INIT_CALL(hng64);
1522}
14201523
14211524
1525
14221526/* ?? */
14231527static const mips3_config config =
14241528{
r4679r4680
14281532
14291533static TIMER_CALLBACK( irq_stop )
14301534{
1431   cpu_set_input_line(machine->cpu[0], 0, CLEAR_LINE);
1535   cputag_set_input_line(machine, "maincpu", 0, CLEAR_LINE);
14321536}
14331537
14341538static INTERRUPT_GEN( irq_start )
r4679r4680
14541558static MACHINE_START(hyperneo)
14551559{
14561560   /* set the fastest DRC options */
1457   mips3drc_set_options(machine->cpu[0], MIPS3DRC_FASTEST_OPTIONS + MIPS3DRC_STRICT_VERIFY);
1561   mips3drc_set_options(cputag_get_cpu(machine, "maincpu"), MIPS3DRC_FASTEST_OPTIONS + MIPS3DRC_STRICT_VERIFY);
14581562
14591563   /* configure fast RAM regions for DRC */
1460   mips3drc_add_fastram(machine->cpu[0], 0x00000000, 0x00ffffff, FALSE, hng_mainram);
1461   mips3drc_add_fastram(machine->cpu[0], 0x04000000, 0x05ffffff, TRUE,  hng_cart);
1462   mips3drc_add_fastram(machine->cpu[0], 0x1fc00000, 0x1fc7ffff, TRUE,  rombase);
1564   mips3drc_add_fastram(cputag_get_cpu(machine, "maincpu"), 0x00000000, 0x00ffffff, FALSE, hng_mainram);
1565   mips3drc_add_fastram(cputag_get_cpu(machine, "maincpu"), 0x04000000, 0x05ffffff, TRUE,  hng_cart);
1566   mips3drc_add_fastram(cputag_get_cpu(machine, "maincpu"), 0x1fc00000, 0x1fc7ffff, TRUE,  rombase);
14631567}
14641568
14651569
r4679r4680
14721576   UINT8 *RAM = (UINT8*)hng64_soundram;
14731577   memory_set_bankptr(machine, 1,&RAM[0x1e0000]);
14741578   memory_set_bankptr(machine, 2,&RAM[0x001000]); // where..
1475   cpu_set_input_line(machine->cpu[1], INPUT_LINE_HALT, ASSERT_LINE);
1476   cpu_set_input_line(machine->cpu[1], INPUT_LINE_RESET, ASSERT_LINE);
1579   cputag_set_input_line(machine, "audiocpu", INPUT_LINE_HALT, ASSERT_LINE);
1580   cputag_set_input_line(machine, "audiocpu", INPUT_LINE_RESET, ASSERT_LINE);
14771581
14781582
14791583   /* Comm CPU */
14801584   KL5C80_init();
14811585
14821586   /* 1 meg of virtual address space for the com cpu */
1483   hng64_com_virtual_mem = auto_malloc(0x100000);
1484   hng64_com_op_base     = auto_malloc(0x10000);
1587   hng64_com_virtual_mem = auto_alloc_array(machine, UINT8, 0x100000);
1588   hng64_com_op_base     = auto_alloc_array(machine, UINT8, 0x10000);
14851589
14861590   /* Fill up virtual memory with ROM */
14871591   for (i = 0x0; i < 0x100000; i++)
14881592      hng64_com_virtual_mem[i] = rom[i] ;
14891593
14901594   KL5C80_virtual_mem_sync();
1491   memory_set_direct_update_handler(cpu_get_address_space(machine->cpu[2], ADDRESS_SPACE_PROGRAM), KL5C80_direct_handler);
1595   memory_set_direct_update_handler(cputag_get_address_space(machine, "comm", ADDRESS_SPACE_PROGRAM), KL5C80_direct_handler);
14921596
1493   cpu_set_input_line(machine->cpu[2], INPUT_LINE_RESET, PULSE_LINE);     // reset the CPU and let 'er rip
1494//  cpu_set_input_line(machine->cpu[2], INPUT_LINE_HALT, ASSERT_LINE);     // hold on there pardner...
1597   cputag_set_input_line(machine, "comm", INPUT_LINE_RESET, PULSE_LINE);     // reset the CPU and let 'er rip
1598//  cputag_set_input_line(machine, "comm", INPUT_LINE_HALT, ASSERT_LINE);     // hold on there pardner...
14951599
14961600
14971601
r4679r4680
15411645   ROM_LOAD ( "rom1.bin",  0x080000, 0x01ff32,  CRC(4a6832dc) SHA1(ae504f7733c2f40450157cd1d3b85bc83fac8569) )
15421646
15431647   /* To placate MAME */
1544   ROM_REGION32_LE( 0x2000000, "user3", ROMREGION_ERASEFF ) /* Program Code, mapped at ??? maybe banked?  LE? */
1545   ROM_REGION( 0x4000, "gfx1", ROMREGION_DISPOSE | ROMREGION_ERASEFF )
1546   ROM_REGION( 0x4000, "gfx2", ROMREGION_DISPOSE | ROMREGION_ERASEFF )
1547   ROM_REGION( 0x1000000, "gfx3", ROMREGION_ERASEFF )
1548   ROM_REGION16_BE( 0x0c00000, "gfx4", ROMREGION_ERASEFF )
1648   ROM_REGION32_LE( 0x2000000, "user3", ROMREGION_ERASEFF )
1649   ROM_REGION( 0x4000, "scrtile", ROMREGION_DISPOSE | ROMREGION_ERASEFF )
1650   ROM_REGION( 0x4000, "sprtile", ROMREGION_DISPOSE | ROMREGION_ERASEFF )
1651   ROM_REGION( 0x1000000, "textures", ROMREGION_ERASEFF )
1652   ROM_REGION16_BE( 0x0c00000, "verts", ROMREGION_ERASEFF )
15491653   ROM_REGION( 0x1000000, "samples", ROMREGION_ERASEFF ) /* Sound Samples? */
15501654ROM_END
15511655
r4679r4680
15601664   ROM_LOAD ( "rom1.bin",  0x080000, 0x01ff32,  CRC(4a6832dc) SHA1(ae504f7733c2f40450157cd1d3b85bc83fac8569) )
15611665   /* END BIOS */
15621666
1563   ROM_REGION32_LE( 0x2000000, "user3", 0 ) /* Program Code, mapped at ??? maybe banked?  LE? */
1667   ROM_REGION32_LE( 0x2000000, "user3", 0 )
15641668   ROM_LOAD32_WORD( "001pr01b.81", 0x0000000, 0x400000, CRC(effbac30) SHA1(c1bddf3e511a8950f65ac7e452f81dbc4b7fd977) )
15651669   ROM_LOAD32_WORD( "001pr02b.82", 0x0000002, 0x400000, CRC(b9aa4ad3) SHA1(9ab3c896dbdc45560b7127486e2db6ca3b15a057) )
15661670
15671671   /* Scroll Characters 8x8x8 / 16x16x8 */
1568   ROM_REGION( 0x1000000, "gfx1", ROMREGION_DISPOSE )
1569   ROM_LOAD32_BYTE( "001sc01a.41", 0x0000000, 0x400000, CRC(084395a1) SHA1(8bfea8fd3981fd45dcc04bd74840a5948aaf06a8) )
1570   ROM_LOAD32_BYTE( "001sc02a.42", 0x0000001, 0x400000, CRC(51dd19e3) SHA1(eeb3634294a049a357a75ee00aa9fce65b737395) )
1571   ROM_LOAD32_BYTE( "001sc03a.43", 0x0000002, 0x400000, CRC(0b6f3e19) SHA1(3b6dfd0f0633b0d8b629815920edfa39d92336bf) )
1572   ROM_LOAD32_BYTE( "001sc04a.44", 0x0000003, 0x400000, CRC(256c8c1c) SHA1(85935eea3722ec92f8d922f527c2e049c4185aa3) )
1672   ROM_REGION( 0x1000000, "scrtile", ROMREGION_DISPOSE )
1673   ROM_LOAD16_BYTE( "001sc01a.41", 0x0000000, 0x400000, CRC(084395a1) SHA1(8bfea8fd3981fd45dcc04bd74840a5948aaf06a8) )
1674   ROM_LOAD16_BYTE( "001sc02a.42", 0x0000001, 0x400000, CRC(51dd19e3) SHA1(eeb3634294a049a357a75ee00aa9fce65b737395) )
1675   ROM_LOAD16_BYTE( "001sc03a.43", 0x0800000, 0x400000, CRC(0b6f3e19) SHA1(3b6dfd0f0633b0d8b629815920edfa39d92336bf) )
1676   ROM_LOAD16_BYTE( "001sc04a.44", 0x0800001, 0x400000, CRC(256c8c1c) SHA1(85935eea3722ec92f8d922f527c2e049c4185aa3) )
15731677
15741678   /* Sprite Characters - 8x8x8 / 16x16x8 */
1575   ROM_REGION( 0x1000000, "gfx2", ROMREGION_DISPOSE )
1679   ROM_REGION( 0x1000000, "sprtile", ROMREGION_DISPOSE )
15761680   ROM_LOAD32_BYTE( "001sp01a.53",0x0000000, 0x400000, CRC(7a469453) SHA1(3738ca76f538243bb23ffd23a42b2a0558882889) )
15771681   ROM_LOAD32_BYTE( "001sp02a.54",0x0000001, 0x400000, CRC(6b9a3de0) SHA1(464c652f7b193326e3a871dfe751dd83c14284eb) )
15781682   ROM_LOAD32_BYTE( "001sp03a.55",0x0000002, 0x400000, CRC(efbbd391) SHA1(7447c481ba6f9ba154d48a4b160dd24157891d35) )
15791683   ROM_LOAD32_BYTE( "001sp04a.56",0x0000003, 0x400000, CRC(1a0eb173) SHA1(a69b786a9957197d1cc950ab046c57c18ca07ea7) )
15801684
15811685   /* Textures - 1024x1024x8 pages */
1582   ROM_REGION( 0x1000000, "gfx3", 0 )
1686   ROM_REGION( 0x1000000, "textures", 0 )
15831687   /* note: same roms are at different positions on the board, repeated a total of 4 times*/
15841688   ROM_LOAD( "001tx01a.1", 0x0000000, 0x400000, CRC(f6539bb9) SHA1(57fc5583d56846be93d6f5784acd20fc149c70a5) )
15851689   ROM_LOAD( "001tx02a.2", 0x0400000, 0x400000, CRC(f1d139d3) SHA1(f120243f4d55f38b10bf8d1aa861cdc546a24c80) )
r4679r4680
15991703   ROM_LOAD( "001tx04a.16",0x0c00000, 0x400000, CRC(288a5bd5) SHA1(24e05db681894eb31cdc049cf42c1f9d7347bd0c) )
16001704
16011705   /* X,Y,Z Vertex ROMs */
1602   ROM_REGION( 0x0c00000, "gfx4", ROMREGION_NODISPOSE )
1706   ROM_REGION( 0x0c00000, "verts", ROMREGION_NODISPOSE )
16031707   ROMX_LOAD( "001vt01a.17", 0x0000000, 0x400000, CRC(1a748e1b) SHA1(376d40baa3b94890d4740045d053faf208fe43db), ROM_GROUPWORD | ROM_SKIP(4) )
16041708   ROMX_LOAD( "001vt02a.18", 0x0000002, 0x400000, CRC(449f94d0) SHA1(2228690532d82d2661285aeb4260689b027597cb), ROM_GROUPWORD | ROM_SKIP(4) )
16051709   ROMX_LOAD( "001vt03a.19", 0x0000004, 0x400000, CRC(50ac8639) SHA1(dd2d3689466990a7c479bb8f11bd930ea45e47b5), ROM_GROUPWORD | ROM_SKIP(4) )
r4679r4680
16101714ROM_END
16111715
16121716
1613ROM_START( sams64_2 )
16141717
1718ROM_START( sams64 )
16151719   /* BIOS */
16161720   ROM_REGION32_BE( 0x0100000, "user1", 0 ) /* 512k for R4300 BIOS code */
16171721   ROM_LOAD ( "brom1.bin", 0x000000, 0x080000,  CRC(a30dd3de) SHA1(3e2fd0a56214e6f5dcb93687e409af13d065ea30) )
r4679r4680
16201724   ROM_LOAD ( "rom1.bin",  0x080000, 0x01ff32,  CRC(4a6832dc) SHA1(ae504f7733c2f40450157cd1d3b85bc83fac8569) )
16211725   /* END BIOS */
16221726
1623   ROM_REGION32_LE( 0x2000000, "user3", 0 ) /* Program Code, mapped at ??? maybe banked?  LE? */
1727   ROM_REGION32_LE( 0x2000000, "user3", 0 )
1728   ROM_LOAD32_WORD( "002-pro1a.81", 0x0000000, 0x400000, CRC(e5b907c5) SHA1(83637ffaa9031d41a5bed3397a519d1dfa8052cb) )
1729   ROM_LOAD32_WORD( "002-pro2a.82", 0x0000002, 0x400000, CRC(803ed2eb) SHA1(666db47886a316e68b911311e5db3bc0f5b8a34d) )
1730   ROM_LOAD32_WORD( "002-pro3a.83", 0x0800000, 0x400000, CRC(582156a7) SHA1(a7bbbd472a53072cbfaed5d41d4265123c9e3f3d) )
1731   ROM_LOAD32_WORD( "002-pro4a.84", 0x0800002, 0x400000, CRC(5a8291e9) SHA1(ec1e5a5a0ba37393e8b93d78b4ac855109d45ec9) )
1732
1733   /* Scroll Characters 8x8x8 / 16x16x8 */
1734   ROM_REGION( 0x2000000, "scrtile", ROMREGION_DISPOSE )
1735   ROM_LOAD16_BYTE( "002-sc01a.41", 0x0000000, 0x400000, CRC(77c3df69) SHA1(813d57814acccd2c04c951e58ac87cf7413bdf58) )
1736   ROM_LOAD16_BYTE( "002-sc02a.42", 0x0000001, 0x400000, CRC(60065174) SHA1(624c2e20abb53b2466df4ce2ffa9e20273798e92) )
1737   ROM_LOAD16_BYTE( "002-sc05a.45", 0x0800000, 0x400000, CRC(fd242bee) SHA1(b1fad97987da21c77d6c460bbed6f0dd18905ed4) )
1738   ROM_LOAD16_BYTE( "002-sc06a.46", 0x0800001, 0x400000, CRC(87afc297) SHA1(47d5eaae88ce501fbbd5a2d7305c1d6acadfb13e) )
1739   ROM_LOAD16_BYTE( "002-sc03a.43", 0x1000000, 0x400000, CRC(5d4a5289) SHA1(7a1576fdd344825cb05866c156d17b18f562a336) )
1740   ROM_LOAD16_BYTE( "002-sc04a.44", 0x1000001, 0x400000, CRC(aa5536fa) SHA1(09a50a29561ac97c564243da879bd7c4cf8c3cee) )
1741   ROM_LOAD16_BYTE( "002-sc07a.47", 0x1800000, 0x400000, CRC(e01e8a95) SHA1(b132214ef2b33a46cb605ea8f2193e77d9464881) )
1742   ROM_LOAD16_BYTE( "002-sc08a.48", 0x1800001, 0x400000, CRC(a17464d0) SHA1(2e6b73b1e0983b2b01455b0f4d6dc7c3845adb69) )
1743
1744   /* Sprite Characters - 8x8x8 / 16x16x8 */
1745   ROM_REGION( 0x2000000, "sprtile", ROMREGION_DISPOSE )
1746   ROM_LOAD32_BYTE( "002-sp01a.53",0x0000000, 0x400000, CRC(c73cf9b4) SHA1(7c34fa1bc03cd366d473dbf3e316a6434ee5ec60) )
1747   ROM_LOAD32_BYTE( "002-sp02a.54",0x0000001, 0x400000, CRC(04b0ecc8) SHA1(893e522324dd41dfcd2217974a6740e6bc3ea1d3) )
1748   ROM_LOAD32_BYTE( "002-sp03a.55",0x0000002, 0x400000, CRC(13c80b74) SHA1(ad6c1690ebcde0d8237201ea43eb162cd5308ccb) )
1749   ROM_LOAD32_BYTE( "002-sp04a.56",0x0000003, 0x400000, CRC(b1a6a06d) SHA1(1b11ee7cec46d0c99dc6310ee8221fa2de33c359) )
1750   ROM_LOAD32_BYTE( "002-sp05a.57",0x1000000, 0x400000, CRC(fa71e825) SHA1(adfa8b5a8ec703d4f04285c47f2618a294c90ec5) )
1751   ROM_LOAD32_BYTE( "002-sp06a.58",0x1000001, 0x400000, CRC(1bcfe48e) SHA1(8d85b1eb33fea48e5c6597d2fcbec903ecdad9d9) )
1752   ROM_LOAD32_BYTE( "002-sp07a.59",0x1000002, 0x400000, CRC(a5049bd7) SHA1(123e32c22f53d6e55ee1d1deb4ab40891004c6fd) )
1753   ROM_LOAD32_BYTE( "002-sp08a.60",0x1000003, 0x400000, CRC(c2e57813) SHA1(e7a21df1f94ed959a53da9dc4667863ee77bf676) )
1754
1755   /* Textures - 1024x1024x8 pages */
1756   ROM_REGION( 0x1000000, "textures", 0 )
1757   /* note: same roms are at different positions on the board, repeated a total of 4 times*/
1758   ROM_LOAD( "002-tx01a.13", 0x0000000, 0x400000, CRC(233749b5) SHA1(7c93681bbd5f4246e0dc50d26108f04e9b248d0d) )
1759   ROM_LOAD( "002-tx02a.14", 0x0400000, 0x400000, CRC(d5074be2) SHA1(c33e9b9f0d21ad5ad31d8f988b3c7378d374fc1b) )
1760   ROM_LOAD( "002-tx03a.15", 0x0800000, 0x400000, CRC(68c313f7) SHA1(90ce8d0d19a994647c7167e3b256ff31647e575a) )
1761   ROM_LOAD( "002-tx04a.16", 0x0c00000, 0x400000, CRC(f7dac24f) SHA1(1215354f28cbeb9fc38f6a7acae450ad5f34bb6a) )
1762
1763
1764   /* X,Y,Z Vertex ROMs */
1765   ROM_REGION( 0x1800000, "verts", ROMREGION_NODISPOSE )
1766   ROMX_LOAD( "002-vt01a.17", 0x0000000, 0x400000, CRC(403fd7fd) SHA1(9bdadbeb4cd13c4c4e89a1c233af9eaaa46f8fdf), ROM_GROUPWORD | ROM_SKIP(4) )
1767   ROMX_LOAD( "002-vt02a.18", 0x0000002, 0x400000, CRC(e1885905) SHA1(6b16083c50e887aebe2baf95bf56697c239970f2), ROM_GROUPWORD | ROM_SKIP(4) )
1768   ROMX_LOAD( "002-vt03a.19", 0x0000004, 0x400000, CRC(2074a6a6) SHA1(9a5e8259d1e19d2b43878c24ca06afba5ee5e316), ROM_GROUPWORD | ROM_SKIP(4) )
1769   ROMX_LOAD( "002-vt04a.20", 0x0400000, 0x400000, CRC(aefc4d94) SHA1(f9d8222d4320ccf9f3c7c0ef307e03c8f34ea530), ROM_GROUPWORD | ROM_SKIP(4) )
1770   ROMX_LOAD( "002-vt05a.21", 0x0400002, 0x400000, CRC(d32ee9cb) SHA1(a768dfc15899924eb05eccbf8e85cb29c7b60396), ROM_GROUPWORD | ROM_SKIP(4) )
1771   ROMX_LOAD( "002-vt06a.22", 0x0400004, 0x400000, CRC(13bf3636) SHA1(7c704bf66b571350207bccc7a2d6ed1ec9de4cd5), ROM_GROUPWORD | ROM_SKIP(4) )
1772
1773   ROM_REGION( 0x1000000, "samples", ROMREGION_DISPOSE ) /* Sound Samples? */
1774   ROM_LOAD( "002-sd01a.77", 0x0000000, 0x400000, CRC(6215036b) SHA1(ded71dce98b7f7ef78ef32d966a292bbf0d15332) )
1775   ROM_LOAD( "002-sd02a.78", 0x0400000, 0x400000, CRC(32b28310) SHA1(5b80750a66c12b035b493d06e3842741a3334d0f) )
1776   ROM_LOAD( "002-sd03a.79", 0x0800000, 0x400000, CRC(53591413) SHA1(36c7efa1aced0ca38b3ce7b95af28755973698f3) )
1777ROM_END
1778
1779
1780ROM_START( xrally )
1781   /* BIOS */
1782   ROM_REGION32_BE( 0x0100000, "user1", 0 ) /* 512k for R4300 BIOS code */
1783   ROM_LOAD ( "brom1.bin", 0x000000, 0x080000,  CRC(a30dd3de) SHA1(3e2fd0a56214e6f5dcb93687e409af13d065ea30) )
1784   ROM_REGION( 0x0100000, "user2", 0 ) /* KL5C80 BIOS and unknown ROM */
1785   ROM_LOAD ( "from1.bin", 0x000000, 0x080000,  CRC(6b933005) SHA1(e992747f46c48b66e5509fe0adf19c91250b00c7) )
1786   ROM_LOAD ( "rom1.bin",  0x080000, 0x01ff32,  CRC(4a6832dc) SHA1(ae504f7733c2f40450157cd1d3b85bc83fac8569) )
1787   /* END BIOS */
1788
1789   ROM_REGION32_LE( 0x2000000, "user3", 0 )
1790   ROM_LOAD32_WORD( "003-pr01a.81", 0x0000000, 0x400000, CRC(4e160388) SHA1(08fba66d0f0dab47f7db5bc7d411f4fc0e8219c8) )
1791   ROM_LOAD32_WORD( "003-pr02a.82", 0x0000002, 0x400000, CRC(c4dd4f18) SHA1(4db0e6d5cabd9e4f82d5905556174b9eff8ad4d9) )
1792
1793   /* Scroll Characters 8x8x8 / 16x16x8 */
1794   ROM_REGION( 0x1000000, "scrtile", ROMREGION_DISPOSE )
1795   ROM_LOAD16_BYTE( "003-sc01a.41", 0x0000000, 0x400000, CRC(bc608584) SHA1(fa4b618eb36f302f58cefea7c50618a8318927d6) )
1796   ROM_LOAD16_BYTE( "003-sc02a.42", 0x0000001, 0x400000, CRC(c810e9e2) SHA1(4f0d35d9b0af2a4b66253e467c0d30a519c904b6) )
1797   ROM_LOAD16_BYTE( "003-sc03a.43", 0x0800000, 0x400000, CRC(12724653) SHA1(5e40947086883d64db84ac51a1b29efa2f173f58) )
1798   ROM_LOAD16_BYTE( "003-sc04a.44", 0x0800001, 0x400000, CRC(b0062c4d) SHA1(73c75b59dc1463ad80f805191f4605a6b4b1c321) )
1799
1800   /* Sprite Characters - 8x8x8 / 16x16x8 */
1801   ROM_REGION( 0x1000000, "sprtile", ROMREGION_DISPOSE )
1802   ROM_LOAD32_BYTE( "003-sp01a.53",0x0000000, 0x400000, CRC(12a329dc) SHA1(00929f3c460cce5a3657dec73d467731e59de564) )
1803   ROM_LOAD32_BYTE( "003-sp02a.54",0x0000001, 0x400000, CRC(ee9e5338) SHA1(681c2f34a2f292ce14fcbef4447ede7b949c7117) )
1804   ROM_LOAD32_BYTE( "003-sp03a.55",0x0000002, 0x400000, CRC(6fa8dff9) SHA1(500bd128e6568e9491e52676775e9239adc332fe) )
1805   ROM_LOAD32_BYTE( "003-sp04a.56",0x0000003, 0x400000, CRC(a98eec07) SHA1(de0c7db56b851daa369f37088bd536933372346f) )
1806
1807   /* Textures - 1024x1024x8 pages */
1808   ROM_REGION( 0x2000000, "textures", 0 )
1809   /* note: same roms are at different positions on the board, repeated a total of 4 times*/
1810   ROM_LOAD( "003-tx01a.13", 0x0000000, 0x400000, CRC(83ea2178) SHA1(931898f57564b8b9975e06df5ccfd8c84fc2fbe3) )
1811   ROM_LOAD( "003-tx02a.14", 0x0400000, 0x400000, CRC(7912f4be) SHA1(bca44c1415a25f2349857b2246e3ee7abe709a84) )
1812   ROM_LOAD( "003-tx03a.15", 0x0800000, 0x400000, CRC(a319c94e) SHA1(14d720cdd8b9411fd82a7b4b33ee5dbfdd01c9f8) )
1813   ROM_LOAD( "003-tx04a.16", 0x0c00000, 0x400000, CRC(16d7805b) SHA1(4cc7b2375832c2f9f20fe882e604a2a52bf07f6f) )
1814
1815   /* X,Y,Z Vertex ROMs */
1816   ROM_REGION( 0x1800000, "verts", ROMREGION_NODISPOSE )
1817   ROMX_LOAD( "003-vt01a.17", 0x0000000, 0x400000, CRC(3e5e275d) SHA1(74f5ec88c258bc224e271f7abeb02d6485e27d8c), ROM_GROUPWORD | ROM_SKIP(4) )
1818   ROMX_LOAD( "003-vt02a.18", 0x0000002, 0x400000, CRC(da7b956e) SHA1(c57cbb8c51145ae224faba5b6a1a7e61cb2bee64), ROM_GROUPWORD | ROM_SKIP(4) )
1819   ROMX_LOAD( "003-vt03a.19", 0x0000004, 0x400000, CRC(4fe72cb7) SHA1(9f8e662f0656f201924834d1ee78498d4223745e), ROM_GROUPWORD | ROM_SKIP(4) )
1820
1821   ROM_REGION( 0x1000000, "samples", ROMREGION_DISPOSE ) /* Sound Samples? */
1822   ROM_LOAD( "003-sd01a.77", 0x0000000, 0x400000, CRC(c43898ff) SHA1(0e49b87181b56c62a674d255d326f761942b99b1) )
1823   ROM_LOAD( "003-sd02a.78", 0x0400000, 0x400000, CRC(079a3d5a) SHA1(a97b052de69fee7d605cae30f5a228e6ffeabb26) )
1824   ROM_LOAD( "003-sd03a.79", 0x0800000, 0x400000, CRC(96c0991a) SHA1(01be872b3e307258236fe96a544417dd8a0bc8bd) )
1825ROM_END
1826
1827
1828ROM_START( bbust2 )
1829   /* BIOS */
1830   ROM_REGION32_BE( 0x0100000, "user1", 0 ) /* 512k for R4300 BIOS code */
1831   ROM_LOAD ( "brom1.bin", 0x000000, 0x080000,  CRC(a30dd3de) SHA1(3e2fd0a56214e6f5dcb93687e409af13d065ea30) )
1832   ROM_REGION( 0x0100000, "user2", 0 ) /* KL5C80 BIOS and unknown ROM */
1833   ROM_LOAD ( "from1.bin", 0x000000, 0x080000,  CRC(6b933005) SHA1(e992747f46c48b66e5509fe0adf19c91250b00c7) )
1834   ROM_LOAD ( "rom1.bin",  0x080000, 0x01ff32,  CRC(4a6832dc) SHA1(ae504f7733c2f40450157cd1d3b85bc83fac8569) )
1835   /* END BIOS */
1836
1837   ROM_REGION32_LE( 0x2000000, "user3", 0 )
1838   ROM_LOAD32_WORD( "004-pr01a.81", 0x0000000, 0x400000, CRC(7b836ece) SHA1(7a4a08251f1dd66c368ac203f5a006266e77f73d) )
1839   ROM_LOAD32_WORD( "004-pr02a.82", 0x0000002, 0x400000, CRC(8c55a988) SHA1(d9a61ac3d8550ce0ee6aab374c9f024912163180) )
1840   ROM_LOAD32_WORD( "004-pr03a.83", 0x0800000, 0x400000, CRC(f25a82dd) SHA1(74c0a03021ef424e0b9c3c818be297d2967b3012) )
1841   ROM_LOAD32_WORD( "004-pr04a.84", 0x0800002, 0x400000, CRC(9258312b) SHA1(fabac42c8a033e85d503be56f266f9386adff10b) )
1842
1843   /* Scroll Characters 8x8x8 / 16x16x8 */
1844   ROM_REGION( 0x1000000, "scrtile", ROMREGION_DISPOSE )
1845   ROM_LOAD16_BYTE( "004-sc01a.41", 0x0000000, 0x400000, CRC(0b52987e) SHA1(3c7b0ce9416dea8db4cf63431166fcfa7c3bb168) )
1846   ROM_LOAD16_BYTE( "004-sc02a.42", 0x0000001, 0x400000, CRC(6b55309d) SHA1(87761deed6d842075bbe13abc444ac502274eeba) )
1847   ROM_LOAD16_BYTE( "004-sc03a.43", 0x0800000, 0x400000, CRC(17302f01) SHA1(5b6a927c520e421aa31b9162d3e47b06069b4bd0) )
1848   ROM_LOAD16_BYTE( "004-sc04a.44", 0x0800001, 0x400000, CRC(db31d73c) SHA1(8a6847e367e87a081cd1499294935c45f1fb4794) )
1849
1850   /* Sprite Characters - 8x8x8 / 16x16x8 */
1851   ROM_REGION( 0x2000000, "sprtile", ROMREGION_DISPOSE )
1852   ROM_LOAD32_BYTE( "004-sp01a.53",0x0000000, 0x400000, CRC(72fe73c3) SHA1(82825705076c40558d414653386e3bf1d0693008) )
1853   ROM_LOAD32_BYTE( "004-sp02a.54",0x0000001, 0x400000, CRC(1ece1cff) SHA1(78d88e96df979a834b5af091d3feda8b9cd466e0) )
1854   ROM_LOAD32_BYTE( "004-sp03a.55",0x0000002, 0x400000, CRC(9049ab14) SHA1(0a19ccbd82f000eba19a0b407fa5765db0464cca) )
1855   ROM_LOAD32_BYTE( "004-sp04a.56",0x0000003, 0x400000, CRC(8f7fb914) SHA1(dd1709881bf1d9e233b4e794c0e2ce28d265f855) )
1856   ROM_LOAD32_BYTE( "004-sp05a.57",0x1000000, 0x400000, CRC(440ce760) SHA1(f6f256334c32fe7d25448fba73f8966c4c5b1cba) )
1857   ROM_LOAD32_BYTE( "004-sp06a.58",0x1000001, 0x400000, CRC(fc24d2e5) SHA1(073dcb21ec6cf9c6a81987a54c0e27a2db499341) )
1858   ROM_LOAD32_BYTE( "004-sp07a.59",0x1000002, 0x400000, CRC(bc580b81) SHA1(c668d0524fdc53c6ba2f3e5120f2dee7ce4279bb) )
1859   ROM_LOAD32_BYTE( "004-sp08a.60",0x1000003, 0x400000, CRC(d6c69bea) SHA1(24508c0ed0ca135316aec1c8239e8b755070384a) )
1860
1861   /* Textures - 1024x1024x8 pages */
1862   ROM_REGION( 0x1000000, "textures", 0 )
1863   /* note: same roms are at different positions on the board, repeated a total of 4 times*/
1864   ROM_LOAD( "004-tx01a.13", 0x0000000, 0x400000, CRC(12a78a20) SHA1(a5c1c8841cd0cb5efbf7408d908fa10a743e5c6f) )
1865   ROM_LOAD( "004-tx02a.14", 0x0400000, 0x400000, CRC(a36c6c34) SHA1(3e4ad293b064a7c05aa23447ff5f17010cae2863) )
1866   ROM_LOAD( "004-tx03a.15", 0x0800000, 0x400000, CRC(f46377c0) SHA1(bfa6fc3ab89599a4443577d18578569ad55774bd) )
1867   ROM_LOAD( "004-tx04a.16", 0x0c00000, 0x400000, CRC(b5f0ef01) SHA1(646bfb17b9e81aecf8db33d3a021f7769b262eda) )
1868
1869   /* X,Y,Z Vertex ROMs */
1870   ROM_REGION( 0x1800000, "verts", ROMREGION_NODISPOSE )
1871   ROMX_LOAD( "004-vt01a.17", 0x0000000, 0x400000, CRC(25ebbf9b) SHA1(b7c3fb9ee9cf75824d908e7a94970282f1845d5d), ROM_GROUPWORD | ROM_SKIP(4) )
1872   ROMX_LOAD( "004-vt02a.18", 0x0000002, 0x400000, CRC(279fc216) SHA1(eb90cc347745491c1d1b1fb611fd6e227310731c), ROM_GROUPWORD | ROM_SKIP(4) )
1873   ROMX_LOAD( "004-vt03a.19", 0x0000004, 0x400000, CRC(e0cf6a42) SHA1(dd09b3d05739cf030c820cd7dbaea2e7262764ab), ROM_GROUPWORD | ROM_SKIP(4) )
1874
1875   ROM_REGION( 0x1000000, "samples", ROMREGION_DISPOSE ) /* Sound Samples? */
1876   ROM_LOAD( "004-sd01a.77", 0x0000000, 0x400000, CRC(2ef868bd) SHA1(0a1ef002efe6738698ebe98a1c3695b151fdd282) )
1877   ROM_LOAD( "004-sd02a.78", 0x0400000, 0x400000, CRC(07fb3135) SHA1(56cc8e29ba9b13f82a4c9248bff02e2b7a0c49b0) )
1878   ROM_LOAD( "004-sd03a.79", 0x0800000, 0x400000, CRC(42571f1d) SHA1(425cbd3f7c8aea1c0f057ea8f186acffb0091dc0) )
1879ROM_END
1880
1881
1882ROM_START( sams64_2 )
1883   /* BIOS */
1884   ROM_REGION32_BE( 0x0100000, "user1", 0 ) /* 512k for R4300 BIOS code */
1885   ROM_LOAD ( "brom1.bin", 0x000000, 0x080000,  CRC(a30dd3de) SHA1(3e2fd0a56214e6f5dcb93687e409af13d065ea30) )
1886   ROM_REGION( 0x0100000, "user2", 0 ) /* KL5C80 BIOS and unknown ROM */
1887   ROM_LOAD ( "from1.bin", 0x000000, 0x080000,  CRC(6b933005) SHA1(e992747f46c48b66e5509fe0adf19c91250b00c7) )
1888   ROM_LOAD ( "rom1.bin",  0x080000, 0x01ff32,  CRC(4a6832dc) SHA1(ae504f7733c2f40450157cd1d3b85bc83fac8569) )
1889   /* END BIOS */
1890
1891   ROM_REGION32_LE( 0x2000000, "user3", 0 )
16241892   ROM_LOAD32_WORD( "005pr01a.81", 0x0000000, 0x400000, CRC(a69d7700) SHA1(a580783a109bc3e24248d70bcd67f62dd7d8a5dd) )
16251893   ROM_LOAD32_WORD( "005pr02a.82", 0x0000002, 0x400000, CRC(38b9e6b3) SHA1(d1dad8247d920cc66854a0096e1c7845842d2e1c) )
16261894   ROM_LOAD32_WORD( "005pr03a.83", 0x0800000, 0x400000, CRC(0bc738a8) SHA1(79893b0e1c4a31e02ab385c4382684245975ae8f) )
r4679r4680
16311899   ROM_LOAD32_WORD( "005pr08a.88", 0x1800002, 0x400000, CRC(d094eb67) SHA1(3edc8d608c631a05223e1d05157cd3daf2d6597a) )
16321900
16331901   /* Scroll Characters 8x8x8 / 16x16x8 */
1634   ROM_REGION( 0x4000000, "gfx1", ROMREGION_DISPOSE )
1635   ROM_LOAD32_BYTE( "005sc01a.97",  0x0000000, 0x800000, CRC(7f11cda9) SHA1(5fbdabd8423e9723a6ec38f8503e6ca7f4f69fdd) )
1636   ROM_LOAD32_BYTE( "005sc02a.99",  0x0000001, 0x800000, CRC(87d1e1a7) SHA1(00f2ef46ce64ab715add8cd47745c57944286f81) )
1637   ROM_LOAD32_BYTE( "005sc03a.101", 0x0000002, 0x800000, CRC(a5d4c535) SHA1(089a3cd07701f025024ce73b7b4d38063c33a59f) )
1638   ROM_LOAD32_BYTE( "005sc04a.103", 0x0000003, 0x800000, CRC(14930d77) SHA1(b4c613a8896e21fe2cac0595dd1ea30dc7fce0bd) )
1639   ROM_LOAD32_BYTE( "005sc05a.98",  0x2000000, 0x800000, CRC(4475a3f8) SHA1(f099baf766ee00d166cfa8402baa0b6ea25a0010) )
1640   ROM_LOAD32_BYTE( "005sc06a.100", 0x2000001, 0x800000, CRC(41c0fbbd) SHA1(1d9ac01c9499a6202ee59d15d498ec34edc05888) )
1641   ROM_LOAD32_BYTE( "005sc07a.102", 0x2000002, 0x800000, CRC(3505b198) SHA1(2fdfdd5a1f6f31f5fb1c0af70047108d1df44af2) )
1642   ROM_LOAD32_BYTE( "005sc08a.104", 0x2000003, 0x800000, CRC(3139e413) SHA1(38210541379ddeba8c0b9ef8fa5430c0090db7c7) )
1902   ROM_REGION( 0x4000000, "scrtile", ROMREGION_DISPOSE )
1903   ROM_LOAD16_BYTE( "005sc01a.97",  0x0000000, 0x800000, CRC(7f11cda9) SHA1(5fbdabd8423e9723a6ec38f8503e6ca7f4f69fdd) )
1904   ROM_LOAD16_BYTE( "005sc02a.99",  0x0000001, 0x800000, CRC(87d1e1a7) SHA1(00f2ef46ce64ab715add8cd47745c57944286f81) )
1905   ROM_LOAD16_BYTE( "005sc05a.98",  0x1000000, 0x800000, CRC(4475a3f8) SHA1(f099baf766ee00d166cfa8402baa0b6ea25a0010) )
1906   ROM_LOAD16_BYTE( "005sc06a.100", 0x1000001, 0x800000, CRC(41c0fbbd) SHA1(1d9ac01c9499a6202ee59d15d498ec34edc05888) )
1907   ROM_LOAD16_BYTE( "005sc03a.101", 0x2000000, 0x800000, CRC(a5d4c535) SHA1(089a3cd07701f025024ce73b7b4d38063c33a59f) )
1908   ROM_LOAD16_BYTE( "005sc04a.103", 0x2000001, 0x800000, CRC(14930d77) SHA1(b4c613a8896e21fe2cac0595dd1ea30dc7fce0bd) )
1909   ROM_LOAD16_BYTE( "005sc07a.102", 0x3000000, 0x800000, CRC(3505b198) SHA1(2fdfdd5a1f6f31f5fb1c0af70047108d1df44af2) )
1910   ROM_LOAD16_BYTE( "005sc08a.104", 0x3000001, 0x800000, CRC(3139e413) SHA1(38210541379ddeba8c0b9ef8fa5430c0090db7c7) )
16431911
16441912   /* Sprite Characters - 8x8x8 / 16x16x8 */
1645   ROM_REGION( 0x4000000, "gfx2", ROMREGION_DISPOSE )
1913   ROM_REGION( 0x4000000, "sprtile", ROMREGION_DISPOSE )
16461914   ROM_LOAD32_BYTE( "005sp01a.105",0x0000000, 0x800000, CRC(68eefee5) SHA1(d95bd7b549900500633af07544423b0062ac07ce) )
16471915   ROM_LOAD32_BYTE( "005sp02a.109",0x0000001, 0x800000, CRC(5d9a49b9) SHA1(50768c496a3e0b4379e121349f32edec4f18652f) )
16481916   ROM_LOAD32_BYTE( "005sp03a.113",0x0000002, 0x800000, CRC(9b6530fe) SHA1(398433b98578a6b4b950afc4d6318916376e0760) )
r4679r4680
16531921   ROM_LOAD32_BYTE( "005sp08a.118",0x2000003, 0x400000, CRC(05486fbc) SHA1(747d9ae03ce999be4ab697753e93c90ea85b7d44) )
16541922
16551923   /* Textures - 1024x1024x8 pages */
1656   ROM_REGION( 0x1000000, "gfx3", 0 )
1924   ROM_REGION( 0x1000000, "textures", 0 )
16571925   /* note: same roms are at different positions on the board, repeated a total of 4 times*/
16581926   ROM_LOAD( "005tx01a.1", 0x0000000, 0x400000, CRC(05a4ceb7) SHA1(2dfc46a70c0a957ed0931a4c4df90c341aafff70) )
16591927   ROM_LOAD( "005tx02a.2", 0x0400000, 0x400000, CRC(b7094c69) SHA1(aed9a624166f6f1a2eb4e746c61f9f46f1929283) )
r4679r4680
16731941   ROM_LOAD( "005tx04a.16",0x0c00000, 0x400000, CRC(6be50882) SHA1(1f99717cfa69076b258a0c52d66be007fd820374) )
16741942
16751943   /* X,Y,Z Vertex ROMs */
1676   ROM_REGION( 0x1800000, "gfx4", ROMREGION_NODISPOSE )
1944   ROM_REGION( 0x1800000, "verts", ROMREGION_NODISPOSE )
16771945   ROMX_LOAD( "005vt01a.17", 0x0000000, 0x400000, CRC(48a61479) SHA1(ef982b1ecc6dfca2ad989391afcc1b3d1e7fe652), ROM_GROUPWORD | ROM_SKIP(4) )
16781946   ROMX_LOAD( "005vt02a.18", 0x0000002, 0x400000, CRC(ba9100c8) SHA1(f7704fb8e5310ea7d0e6ae6b8935717ec9119b6d), ROM_GROUPWORD | ROM_SKIP(4) )
16791947   ROMX_LOAD( "005vt03a.19", 0x0000004, 0x400000, CRC(f54a28de) SHA1(c445cf7fee71a516065cf37e05b898208f48b17e), ROM_GROUPWORD | ROM_SKIP(4) )
r4679r4680
16991967   ROM_LOAD ( "rom1.bin",  0x080000, 0x01ff32,  CRC(4a6832dc) SHA1(ae504f7733c2f40450157cd1d3b85bc83fac8569) )
17001968   /* END BIOS */
17011969
1702   ROM_REGION32_LE( 0x2000000, "user3", 0 ) /* Program Code, mapped at ??? maybe banked?  LE? */
1970   ROM_REGION32_LE( 0x2000000, "user3", 0 )
17031971   ROM_LOAD32_WORD( "006pr01a.81", 0x0000000, 0x400000, CRC(3830efa1) SHA1(9d8c941ccb6cbe8d138499cf9d335db4ac7a9ec0) )
17041972   ROM_LOAD32_WORD( "006pr02a.82", 0x0000002, 0x400000, CRC(8d5de84e) SHA1(e3ae014263f370c2836f62ab323f1560cb3a9cf0) )
17051973   ROM_LOAD32_WORD( "006pr03a.83", 0x0800000, 0x400000, CRC(c811b458) SHA1(7d94e0df501fb086b2e5cf08905d7a3adc2c6472) )
17061974   ROM_LOAD32_WORD( "006pr04a.84", 0x0800002, 0x400000, CRC(de708d6c) SHA1(2c9848e7bbf61c574370f9ecab5f5a6ba63339fd) )
17071975
17081976   /* Scroll Characters 8x8x8 / 16x16x8 */
1709   ROM_REGION( 0x4000000, "gfx1", ROMREGION_DISPOSE )
1710   ROM_LOAD32_BYTE( "006sc01a.97", 0x0000000, 0x800000, CRC(f13dffad) SHA1(86363aeae176fd4204e446c13a028da919dc2069) )
1711   ROM_LOAD32_BYTE( "006sc02a.99", 0x0000001, 0x800000, CRC(be79d42a) SHA1(f3eb950a62e2df1de116af9434027439f1305e1f) )
1712   ROM_LOAD32_BYTE( "006sc03a.101",0x0000002, 0x800000, CRC(16918b73) SHA1(ad0c751a301fe3c95fca19473869dfd55fb6b0de) )
1713   ROM_LOAD32_BYTE( "006sc04a.103",0x0000003, 0x800000, CRC(9b63cd98) SHA1(62519a3a531c4493a5a85dc01ca69413977120ca) )
1714   ROM_LOAD32_BYTE( "006sc05a.98", 0x2000000, 0x800000, CRC(0487297b) SHA1(d3fa4d691559327739c96717312faf09b498001d) )
1715   ROM_LOAD32_BYTE( "006sc06a.100",0x2000001, 0x800000, CRC(34a76c31) SHA1(be05dc75afb7cde65ba5d29c0e66a7b1b62c41cb) )
1716   ROM_LOAD32_BYTE( "006sc07a.102",0x2000002, 0x800000, CRC(7a1c371e) SHA1(1cd4ad66dd007adc9ab0c29720cbf9955c7337e0) )
1717   ROM_LOAD32_BYTE( "006sc08a.104",0x2000003, 0x800000, CRC(88232ade) SHA1(4ae2a572c3525087f77c95185e8697a1fc720512) )
1977   ROM_REGION( 0x4000000, "scrtile", ROMREGION_DISPOSE )
1978   ROM_LOAD16_BYTE( "006sc01a.97", 0x0000000, 0x800000, CRC(f13dffad) SHA1(86363aeae176fd4204e446c13a028da919dc2069) )
1979   ROM_LOAD16_BYTE( "006sc02a.99", 0x0000001, 0x800000, CRC(be79d42a) SHA1(f3eb950a62e2df1de116af9434027439f1305e1f) )
1980   ROM_LOAD16_BYTE( "006sc05a.98", 0x1000000, 0x800000, CRC(0487297b) SHA1(d3fa4d691559327739c96717312faf09b498001d) )
1981   ROM_LOAD16_BYTE( "006sc06a.100",0x1000001, 0x800000, CRC(34a76c31) SHA1(be05dc75afb7cde65ba5d29c0e66a7b1b62c41cb) )
1982   ROM_LOAD16_BYTE( "006sc03a.101",0x2000000, 0x800000, CRC(16918b73) SHA1(ad0c751a301fe3c95fca19473869dfd55fb6b0de) )
1983   ROM_LOAD16_BYTE( "006sc04a.103",0x2000001, 0x800000, CRC(9b63cd98) SHA1(62519a3a531c4493a5a85dc01ca69413977120ca) )
1984   ROM_LOAD16_BYTE( "006sc07a.102",0x3000000, 0x800000, CRC(7a1c371e) SHA1(1cd4ad66dd007adc9ab0c29720cbf9955c7337e0) )
1985   ROM_LOAD16_BYTE( "006sc08a.104",0x3000001, 0x800000, CRC(88232ade) SHA1(4ae2a572c3525087f77c95185e8697a1fc720512) )
17181986
17191987   /* Sprite Characters - 8x8x8 / 16x16x8 */
1720   ROM_REGION( 0x4000000, "gfx2", ROMREGION_DISPOSE )
1988   ROM_REGION( 0x4000000, "sprtile", ROMREGION_DISPOSE )
17211989   ROM_LOAD32_BYTE( "006sp01a.105",0x0000000, 0x800000, CRC(087b8c49) SHA1(bb1eb2baef7da91f904bf45414f21dd6bac30749) )
17221990   ROM_LOAD32_BYTE( "006sp02a.109",0x0000001, 0x800000, CRC(da28631e) SHA1(ea7e2d9195cfa4f954f4d542296eec1323223653) )
17231991   ROM_LOAD32_BYTE( "006sp03a.113",0x0000002, 0x800000, CRC(bb87b55b) SHA1(8644ebb356ae158244a6e03254b0212cb359e167) )
r4679r4680
17281996   ROM_LOAD32_BYTE( "006sp08a.118",0x2000003, 0x800000, CRC(9c3044ac) SHA1(24b28bcc6be51ab3ff59c2894094cd03ec377d84) )
17291997
17301998   /* Textures - 1024x1024x8 pages */
1731   ROM_REGION( 0x1000000, "gfx3", 0 )
1999   ROM_REGION( 0x1000000, "textures", 0 )
17322000   /* note: same roms are at different positions on the board, repeated a total of 4 times*/
17332001   ROM_LOAD( "006tx01a.1", 0x0000000, 0x400000, CRC(ab4c1747) SHA1(2c097bd38f1a92c4b6534992f6bf29fd6dc2d265) )
17342002   ROM_LOAD( "006tx02a.2", 0x0400000, 0x400000, CRC(7854a229) SHA1(dba23c1b793dd0308ac1088c819543fff334a57e) )
r4679r4680
17482016   ROM_LOAD( "006tx04a.16",0x0c00000, 0x400000, CRC(82d61652) SHA1(28303ae9e2545a4cb0b5843f9e73407754f41e9e) )
17492017
17502018   /* X,Y,Z Vertex ROMs */
1751   ROM_REGION16_BE( 0x0c00000, "gfx4", ROMREGION_NODISPOSE )
2019   ROM_REGION16_BE( 0x0c00000, "verts", ROMREGION_NODISPOSE )
17522020   ROMX_LOAD( "006vt01a.17", 0x0000000, 0x400000, CRC(5c20ed4c) SHA1(df679f518292d70b9f23d2bddabf975d56b96910), ROM_GROUPWORD | ROM_SKIP(4) )
17532021   ROMX_LOAD( "006vt02a.18", 0x0000002, 0x400000, CRC(150eb717) SHA1(9acb067346eb386256047c0f1d24dc8fcc2118ca), ROM_GROUPWORD | ROM_SKIP(4) )
17542022   ROMX_LOAD( "006vt03a.19", 0x0000004, 0x400000, CRC(021cfcaf) SHA1(fb8b5f50d3490b31f0a4c3e6d3ae1b98bae41c97), ROM_GROUPWORD | ROM_SKIP(4) )
r4679r4680
17612029ROM_END
17622030
17632031ROM_START( buriki )
1764
17652032   /* BIOS */
17662033   ROM_REGION32_BE( 0x0100000, "user1", 0 ) /* 512k for R4300 BIOS code */
17672034   ROM_LOAD ( "brom1.bin", 0x000000, 0x080000,  CRC(a30dd3de) SHA1(3e2fd0a56214e6f5dcb93687e409af13d065ea30) )
r4679r4680
17702037   ROM_LOAD ( "rom1.bin",  0x080000, 0x01ff32,  CRC(4a6832dc) SHA1(ae504f7733c2f40450157cd1d3b85bc83fac8569) )
17712038   /* END BIOS */
17722039
1773   ROM_REGION32_LE( 0x2000000, "user3", 0 ) /* Program Code, mapped at ??? maybe banked?  LE? */
2040   ROM_REGION32_LE( 0x2000000, "user3", 0 )
17742041   ROM_LOAD32_WORD( "007pr01b.81", 0x0000000, 0x400000, CRC(a31202f5) SHA1(c657729b292d394ced021a0201a1c5608a7118ba) )
17752042   ROM_LOAD32_WORD( "007pr02b.82", 0x0000002, 0x400000, CRC(a563fed6) SHA1(9af9a021beb814e35df968abe5a99225a124b5eb) )
17762043   ROM_LOAD32_WORD( "007pr03a.83", 0x0800000, 0x400000, CRC(da5f6105) SHA1(5424cf5289cef66e301e968b4394e551918fe99b) )
r4679r4680
17792046   ROM_LOAD32_WORD( "007pr06a.86", 0x1000002, 0x400000, CRC(0620fccc) SHA1(e0bffc56b019c79276a4ef5ec7354edda15b0889) )
17802047
17812048   /* Scroll Characters 8x8x8 / 16x16x8 */
1782   ROM_REGION( 0x4000000, "gfx1", ROMREGION_DISPOSE )
1783   ROM_LOAD32_BYTE( "007sc01a.97", 0x0000000, 0x800000, CRC(4e8300db) SHA1(f1c9e6fddc10efc8f2a530027cca062f48b8c8d4) )
1784   ROM_LOAD32_BYTE( "007sc02a.99", 0x0000001, 0x800000, CRC(d5855944) SHA1(019c0bd2f8de7ffddd53df6581b40940262f0053) )
1785   ROM_LOAD32_BYTE( "007sc03a.101",0x0000002, 0x800000, CRC(ff45c9b5) SHA1(ddcc2a10ccac62eb1f3671172ad1a4d163714fca) )
1786   ROM_LOAD32_BYTE( "007sc04a.103",0x0000003, 0x800000, CRC(e4cb59e9) SHA1(4e07ff374890217466a53d5bfb1fa99eb7402360) )
1787   ROM_LOAD32_BYTE( "007sc05a.98", 0x2000000, 0x400000, CRC(27f848c1) SHA1(2ee9cca4e68e56c7c17c8e2d7e0f55a34a5960bd) )
1788   ROM_LOAD32_BYTE( "007sc06a.100",0x2000001, 0x400000, CRC(c39e9b4c) SHA1(3c8a0494c2a6866ecc0df2c551619c57ee072440) )
1789   ROM_LOAD32_BYTE( "007sc07a.102",0x2000002, 0x400000, CRC(753e7e3d) SHA1(39b2e9fd23878d8fc4f98fe88b466e963d8fc959) )
1790   ROM_LOAD32_BYTE( "007sc08a.104",0x2000003, 0x400000, CRC(b605928e) SHA1(558042b84115273fa581606daafba0e9688fa002) )
2049   ROM_REGION( 0x4000000, "scrtile", ROMREGION_DISPOSE )
2050   ROM_LOAD16_BYTE( "007sc01a.97", 0x0000000, 0x800000, CRC(4e8300db) SHA1(f1c9e6fddc10efc8f2a530027cca062f48b8c8d4) )
2051   ROM_LOAD16_BYTE( "007sc02a.99", 0x0000001, 0x800000, CRC(d5855944) SHA1(019c0bd2f8de7ffddd53df6581b40940262f0053) )
2052   ROM_LOAD16_BYTE( "007sc05a.98", 0x1000000, 0x400000, CRC(27f848c1) SHA1(2ee9cca4e68e56c7c17c8e2d7e0f55a34a5960bd) )
2053   ROM_LOAD16_BYTE( "007sc06a.100",0x1000001, 0x400000, CRC(c39e9b4c) SHA1(3c8a0494c2a6866ecc0df2c551619c57ee072440) )
2054   ROM_LOAD16_BYTE( "007sc03a.101",0x2000000, 0x800000, CRC(ff45c9b5) SHA1(ddcc2a10ccac62eb1f3671172ad1a4d163714fca) )
2055   ROM_LOAD16_BYTE( "007sc04a.103",0x2000001, 0x800000, CRC(e4cb59e9) SHA1(4e07ff374890217466a53d5bfb1fa99eb7402360) )
2056   ROM_LOAD16_BYTE( "007sc07a.102",0x3000000, 0x400000, CRC(753e7e3d) SHA1(39b2e9fd23878d8fc4f98fe88b466e963d8fc959) )
2057   ROM_LOAD16_BYTE( "007sc08a.104",0x3000001, 0x400000, CRC(b605928e) SHA1(558042b84115273fa581606daafba0e9688fa002) )
17912058
17922059   /* Sprite Characters - 8x8x8 / 16x16x8 */
1793   ROM_REGION( 0x4000000, "gfx2", ROMREGION_DISPOSE )
2060   ROM_REGION( 0x4000000, "sprtile", ROMREGION_DISPOSE )
17942061   ROM_LOAD32_BYTE( "007sp01a.105",0x0000000, 0x800000, CRC(160acae6) SHA1(37c15e1d2544ec6f3b61d06200345d6abdd28edf) )
17952062   ROM_LOAD32_BYTE( "007sp02a.109",0x0000001, 0x800000, CRC(1a55331d) SHA1(0b03d5c7312e01874365b31f1ff3d9766abd00f1) )
17962063   ROM_LOAD32_BYTE( "007sp03a.113",0x0000002, 0x800000, CRC(3f308444) SHA1(0acd52312c15a2ed3bacf60a2fd820cb09ebbb55) )
r4679r4680
18012068   ROM_LOAD32_BYTE( "007sp08a.118",0x2000003, 0x400000, CRC(7a158c67) SHA1(d66f4920a513208d45b908a1934d9afb894debf1) )
18022069
18032070   /* Textures - 1024x1024x8 pages */
1804   ROM_REGION( 0x1000000, "gfx3", 0 )
2071   ROM_REGION( 0x1000000, "textures", 0 )
18052072   /* note: same roms are at different positions on the board, repeated a total of 4 times*/
18062073   ROM_LOAD( "007tx01a.1", 0x0000000, 0x400000, CRC(a7774075) SHA1(4f3da9af131a7efb0f0a5180da57c19c65fffb82) )
18072074   ROM_LOAD( "007tx02a.2", 0x0400000, 0x400000, CRC(bc05d5fd) SHA1(84e3fafcebdeb1e2ffae80785949c973a14055d8) )
r4679r4680
18212088   ROM_LOAD( "007tx04a.16",0x0c00000, 0x400000, CRC(02aa3f46) SHA1(1fca89c70586f8ebcdf669ecac121afa5cdf623f) )
18222089
18232090   /* X,Y,Z Vertex ROMs */
1824   ROM_REGION16_BE( 0x0c00000, "gfx4", ROMREGION_NODISPOSE )
2091   ROM_REGION16_BE( 0x0c00000, "verts", ROMREGION_NODISPOSE )
18252092   ROMX_LOAD( "007vt01a.17", 0x0000000, 0x400000, CRC(f78a0376) SHA1(fde4ddd4bf326ae5f1ed10311c237b13b62e060c), ROM_GROUPWORD | ROM_SKIP(4) )
18262093   ROMX_LOAD( "007vt02a.18", 0x0000002, 0x400000, CRC(f365f608) SHA1(035fd9b829b7720c4aee6fdf204c080e6157994f), ROM_GROUPWORD | ROM_SKIP(4) )
18272094   ROMX_LOAD( "007vt03a.19", 0x0000004, 0x400000, CRC(ba05654d) SHA1(b7fe532732c0af7860c8eded3c5abd304d74e08e), ROM_GROUPWORD | ROM_SKIP(4) )
r4679r4680
18382105
18392106/* Games */
18402107GAME( 1997, roadedge, hng64,  hng64, hng64, hng64_race, ROT0, "SNK", "Roads Edge / Round Trip (rev.B)",     GAME_NOT_WORKING|GAME_NO_SOUND )   /* 001 */
1841/* Samurai Shodown 64           002 */
1842/* Xtreme Rally / Offbeat Racer 003 */
1843/* Beast Busters 2nd Nightmare  004 */
1844GAME( 1998, sams64_2, hng64,  hng64, hng64, hng64_fght, ROT0, "SNK", "Samurai Shodown: Warrior's Rage",     GAME_NOT_WORKING|GAME_NO_SOUND )   /* 005 */
1845GAME( 1998, fatfurwa, hng64,  hng64, hng64, hng64_fght, ROT0, "SNK", "Fatal Fury: Wild Ambition (rev.A)", GAME_NOT_WORKING|GAME_NO_SOUND )   /* 006 */
1846GAME( 1999, buriki,   hng64,  hng64, hng64, hng64_fght, ROT0, "SNK", "Buriki One (rev.B)",              GAME_NOT_WORKING|GAME_NO_SOUND )   /* 007 */
2108GAME( 1998, sams64,   hng64,  hng64, hng64, ss64,       ROT0, "SNK", "Samurai Shodown 64 / Samurai Spirits 64",     GAME_NOT_WORKING|GAME_NO_SOUND )   /* 002 */
2109GAME( 1998, xrally,   hng64,  hng64, hng64, hng64_race, ROT0, "SNK", "Xtreme Rally / Off Beat Racer!",     GAME_NOT_WORKING|GAME_NO_SOUND )   /* 003 */
2110GAME( 1998, bbust2,   hng64,  hng64, hng64, hng64_shoot,ROT0, "SNK", "Beast Busters 2nd Nightmare",     GAME_NOT_WORKING|GAME_NO_SOUND )   /* 004 */
2111GAME( 1998, sams64_2, hng64,  hng64, hng64, ss64,       ROT0, "SNK", "Samurai Shodown: Warrior's Rage / Samurai Spirits 2: Asura Zanmaden",     GAME_NOT_WORKING|GAME_NO_SOUND )   /* 005 */
2112GAME( 1998, fatfurwa, hng64,  hng64, hng64, fatfurwa,   ROT0, "SNK", "Fatal Fury: Wild Ambition (rev.A)", GAME_NOT_WORKING|GAME_NO_SOUND )   /* 006 */
2113GAME( 1999, buriki,   hng64,  hng64, hng64, fatfurwa,   ROT0, "SNK", "Buriki One (rev.B)",              GAME_NOT_WORKING|GAME_NO_SOUND )   /* 007 */
18472114
src/mame/drivers/solomon.c
r4679r4680
2424
2525static WRITE8_HANDLER( solomon_sh_command_w )
2626{
27   soundlatch_w(space,offset,data);
28   cpu_set_input_line(space->machine->cpu[1],INPUT_LINE_NMI,PULSE_LINE);
27   soundlatch_w(space, offset, data);
28   cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
2929}
3030
3131/* this is checked on the title screen and when you reach certain scores in the game
r4679r4680
3434
3535static READ8_HANDLER( solomon_0xe603_r )
3636{
37   if (cpu_get_pc(space->cpu)==0x161) // all the time .. return 0 to act as before  for coin / startup etc.
37   if (cpu_get_pc(space->cpu) == 0x161) // all the time .. return 0 to act as before  for coin / startup etc.
3838   {
3939      return 0;
4040   }
41   else if (cpu_get_pc(space->cpu)==0x4cf0) // stop it clearing the screen at certain scores
41   else if (cpu_get_pc(space->cpu) == 0x4cf0) // stop it clearing the screen at certain scores
4242   {
4343      return (cpu_get_reg(space->cpu, Z80_BC) & 0x08);
4444   }
4545   else
4646   {
47      mame_printf_debug("unhandled solomon_0xe603_r %04x\n",cpu_get_pc(space->cpu));
47      mame_printf_debug("unhandled solomon_0xe603_r %04x\n", cpu_get_pc(space->cpu));
4848      return 0;
4949   }
5050}
src/mame/drivers/macrossp.c
r4679r4680
354354   if (ACCESSING_BITS_16_31)
355355   {
356356      //logerror("%08x write soundcmd %08x (%08x)\n",cpu_get_pc(space->cpu),data,mem_mask);
357      soundlatch_word_w(space,0,data >> 16,0xffff);
357      soundlatch_word_w(space, 0, data >> 16, 0xffff);
358358      sndpending = 1;
359      cpu_set_input_line(space->machine->cpu[1],2,HOLD_LINE);
359      cputag_set_input_line(space->machine, "audiocpu", 2, HOLD_LINE);
360360      /* spin for a while to let the sound CPU read the command */
361361      cpu_spinuntil_time(space->cpu, ATTOTIME_IN_USEC(50));
362362   }
r4679r4680
366366{
367367//  logerror("%06x read soundcmd\n",cpu_get_pc(space->cpu));
368368   sndpending = 0;
369   return soundlatch_word_r(space,offset,mem_mask);
369   return soundlatch_word_r(space, offset, mem_mask);
370370}
371371
372372static INT32 fade_effect,old_fade;
r4679r4680
404404
405405/*** MEMORY MAPS *************************************************************/
406406
407static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 32 )
408   AM_RANGE(0x000000, 0x3fffff) AM_READ(SMH_ROM)
409
410   AM_RANGE(0x800000, 0x802fff) AM_READ(SMH_RAM)
411
412   AM_RANGE(0x900000, 0x903fff) AM_READ(SMH_RAM)
413   AM_RANGE(0x908000, 0x90bfff) AM_READ(SMH_RAM)
414   AM_RANGE(0x910000, 0x913fff) AM_READ(SMH_RAM)
415   AM_RANGE(0x918000, 0x91bfff) AM_READ(SMH_RAM)
416
417   AM_RANGE(0xa00000, 0xa03fff) AM_READ(SMH_RAM)
418
419   AM_RANGE(0xb00000, 0xb00003) AM_READ_PORT("INPUTS")
420   AM_RANGE(0xb00004, 0xb00007) AM_READ(macrossp_soundstatus_r)
421   AM_RANGE(0xb0000c, 0xb0000f) AM_READ_PORT("DSW")
422
423   AM_RANGE(0xf00000, 0xf1ffff) AM_READ(SMH_RAM)
424
425//  AM_RANGE(0xfe0000, 0xfe0003) AM_READNOP
426ADDRESS_MAP_END
427
428static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 32 )
429   AM_RANGE(0x000000, 0x3fffff) AM_WRITE(SMH_ROM)
430   AM_RANGE(0x800000, 0x802fff) AM_WRITE(SMH_RAM) AM_BASE(&macrossp_spriteram) AM_SIZE(&spriteram_size)
431
407static ADDRESS_MAP_START( macrossp_map, ADDRESS_SPACE_PROGRAM, 32 )
408   AM_RANGE(0x000000, 0x3fffff) AM_ROM
409   AM_RANGE(0x800000, 0x802fff) AM_RAM AM_BASE(&macrossp_spriteram) AM_SIZE(&spriteram_size)
432410   /* SCR A Layer */
433   AM_RANGE(0x900000, 0x903fff) AM_WRITE(macrossp_scra_videoram_w) AM_BASE(&macrossp_scra_videoram)
434   AM_RANGE(0x904200, 0x9043ff) AM_WRITE(SMH_RAM) /* W/O? */
435   AM_RANGE(0x905000, 0x90500b) AM_WRITE(SMH_RAM) AM_BASE(&macrossp_scra_videoregs) /* W/O? */
411   AM_RANGE(0x900000, 0x903fff) AM_RAM_WRITE(macrossp_scra_videoram_w) AM_BASE(&macrossp_scra_videoram)
412   AM_RANGE(0x904200, 0x9043ff) AM_WRITEONLY /* W/O? */
413   AM_RANGE(0x905000, 0x90500b) AM_WRITEONLY AM_BASE(&macrossp_scra_videoregs) /* W/O? */
436414   /* SCR B Layer */
437   AM_RANGE(0x908000, 0x90bfff) AM_WRITE(macrossp_scrb_videoram_w) AM_BASE(&macrossp_scrb_videoram)
438   AM_RANGE(0x90c200, 0x90c3ff) AM_WRITE(SMH_RAM) /* W/O? */
439   AM_RANGE(0x90d000, 0x90d00b) AM_WRITE(SMH_RAM) AM_BASE(&macrossp_scrb_videoregs) /* W/O? */
415   AM_RANGE(0x908000, 0x90bfff) AM_RAM_WRITE(macrossp_scrb_videoram_w) AM_BASE(&macrossp_scrb_videoram)
416   AM_RANGE(0x90c200, 0x90c3ff) AM_WRITEONLY /* W/O? */
417   AM_RANGE(0x90d000, 0x90d00b) AM_WRITEONLY AM_BASE(&macrossp_scrb_videoregs) /* W/O? */
440418   /* SCR C Layer */
441   AM_RANGE(0x910000, 0x913fff) AM_WRITE(macrossp_scrc_videoram_w) AM_BASE(&macrossp_scrc_videoram)
442   AM_RANGE(0x914200, 0x9143ff) AM_WRITE(SMH_RAM) /* W/O? */
443   AM_RANGE(0x915000, 0x91500b) AM_WRITE(SMH_RAM) AM_BASE(&macrossp_scrc_videoregs) /* W/O? */
419   AM_RANGE(0x910000, 0x913fff) AM_RAM_WRITE(macrossp_scrc_videoram_w) AM_BASE(&macrossp_scrc_videoram)
420   AM_RANGE(0x914200, 0x9143ff) AM_WRITEONLY /* W/O? */
421   AM_RANGE(0x915000, 0x91500b) AM_WRITEONLY AM_BASE(&macrossp_scrc_videoregs) /* W/O? */
444422   /* Text Layer */
445   AM_RANGE(0x918000, 0x91bfff) AM_WRITE(macrossp_text_videoram_w) AM_BASE(&macrossp_text_videoram)
446   AM_RANGE(0x91c200, 0x91c3ff) AM_WRITE(SMH_RAM) /* W/O? */
447   AM_RANGE(0x91d000, 0x91d00b) AM_WRITE(SMH_RAM) AM_BASE(&macrossp_text_videoregs) /* W/O? */
423   AM_RANGE(0x918000, 0x91bfff) AM_RAM_WRITE(macrossp_text_videoram_w) AM_BASE(&macrossp_text_videoram)
424   AM_RANGE(0x91c200, 0x91c3ff) AM_WRITEONLY /* W/O? */
425   AM_RANGE(0x91d000, 0x91d00b) AM_WRITEONLY AM_BASE(&macrossp_text_videoregs) /* W/O? */
448426
449   AM_RANGE(0xa00000, 0xa03fff) AM_WRITE(paletteram32_macrossp_w) AM_BASE(&paletteram32)
427   AM_RANGE(0xa00000, 0xa03fff) AM_RAM_WRITE(paletteram32_macrossp_w) AM_BASE(&paletteram32)
450428
451   AM_RANGE(0xb00004, 0xb00007) AM_WRITENOP   // irq related?
429   AM_RANGE(0xb00000, 0xb00003) AM_READ_PORT("INPUTS")
430   AM_RANGE(0xb00004, 0xb00007) AM_READ(macrossp_soundstatus_r) AM_WRITENOP // irq related?
452431   AM_RANGE(0xb00008, 0xb0000b) AM_WRITENOP   // irq related?
453   AM_RANGE(0xb0000c, 0xb0000f) AM_WRITENOP
432   AM_RANGE(0xb0000c, 0xb0000f) AM_READ_PORT("DSW") AM_WRITENOP
454433   AM_RANGE(0xb00010, 0xb00013) AM_WRITE(macrossp_palette_fade_w)   // macrossp palette fade
455434     AM_RANGE(0xb00020, 0xb00023) AM_WRITENOP
456435
457436   AM_RANGE(0xc00000, 0xc00003) AM_WRITE(macrossp_soundcmd_w)
458437
459   AM_RANGE(0xf00000, 0xf1ffff) AM_WRITE(SMH_RAM) AM_BASE(&macrossp_mainram) /* Main Ram */
460
461//  AM_RANGE(0xfe0000, 0xfe0003) AM_WRITENOP
438   AM_RANGE(0xf00000, 0xf1ffff) AM_RAM AM_BASE(&macrossp_mainram) /* Main Ram */
439//  AM_RANGE(0xfe0000, 0xfe0003) AM_NOP
462440ADDRESS_MAP_END
463441
464
465static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 16 )
442static ADDRESS_MAP_START( macrossp_sound_map, ADDRESS_SPACE_PROGRAM, 16 )
466443   AM_RANGE(0x000000, 0x0fffff) AM_ROM
467444   AM_RANGE(0x200000, 0x207fff) AM_RAM
468445   AM_RANGE(0x400000, 0x40007f) AM_DEVREADWRITE8("ensoniq", es5506_r, es5506_w, 0x00ff)
r4679r4680
613590
614591   /* IRQ lines 1 & 4 on the sound 68000 are definitely triggered by the ES5506,
615592    but I haven't noticed the ES5506 ever assert the line - maybe only used when developing the game? */
616//  cpu_set_input_line(device->cpu[1],1,irq ? ASSERT_LINE : CLEAR_LINE);
593//  cputag_set_input_line(device, "audiocpu", 1, irq ? ASSERT_LINE : CLEAR_LINE);
617594}
618595
619596static const es5506_interface es5506_config =
r4679r4680
629606static MACHINE_DRIVER_START( macrossp )
630607   /* basic machine hardware */
631608   MDRV_CPU_ADD("maincpu", M68EC020, 50000000/2)   /* 25 MHz */
632   MDRV_CPU_PROGRAM_MAP(readmem,writemem)
609   MDRV_CPU_PROGRAM_MAP(macrossp_map,0)
633610   MDRV_CPU_VBLANK_INT("screen", irq3_line_hold) // there are others ...
634611
635612   MDRV_CPU_ADD("audiocpu", M68000, 32000000/2)   /* 16 MHz */
636   MDRV_CPU_PROGRAM_MAP(sound_map,0)
613   MDRV_CPU_PROGRAM_MAP(macrossp_sound_map,0)
637614
638615   /* video hardware */
639616   MDRV_SCREEN_ADD("screen", RASTER)
r4679r4680
786763
787764static DRIVER_INIT( macrossp )
788765{
789   memory_install_write32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xf10158, 0xf1015b, 0, 0, macrossp_speedup_w );
766   memory_install_write32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xf10158, 0xf1015b, 0, 0, macrossp_speedup_w );
790767}
791768
792769static DRIVER_INIT( quizmoon )
793770{
794771#ifdef UNUSED_FUNCTION
795   memory_install_write32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xf00020, 0xf00023, 0, 0, quizmoon_speedup_w );
772   memory_install_write32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xf00020, 0xf00023, 0, 0, quizmoon_speedup_w );
796773#endif
797774}
798775
src/mame/drivers/gladiatr.c
r4679r4680
272272   {
273273      UINT8 *rom = memory_region(machine, "audiocpu") + 0x10000;
274274      memory_set_bankptr(machine, 2,rom);
275      device_reset(machine->cpu[2]);
275      device_reset(cputag_get_cpu(machine, "audiocpu"));
276276   }
277277}
278278
r4679r4680
287287static void gladiator_ym_irq(const device_config *device, int irq)
288288{
289289   /* NMI IRQ is not used by gladiator sound program */
290   cpu_set_input_line(device->machine->cpu[1], INPUT_LINE_NMI, irq ? ASSERT_LINE : CLEAR_LINE);
290   cputag_set_input_line(device->machine, "sub", INPUT_LINE_NMI, irq ? ASSERT_LINE : CLEAR_LINE);
291291}
292292
293293/*Sound Functions*/
r4679r4680
306306static WRITE8_HANDLER( glad_cpu_sound_command_w )
307307{
308308   soundlatch_w(space,0,data);
309   cpu_set_input_line(space->machine->cpu[2], INPUT_LINE_NMI, ASSERT_LINE);
309   cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, ASSERT_LINE);
310310}
311311
312312static READ8_HANDLER( glad_cpu_sound_command_r )
313313{
314   cpu_set_input_line(space->machine->cpu[2], INPUT_LINE_NMI, CLEAR_LINE);
314   cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, CLEAR_LINE);
315315   return soundlatch_r(space,0);
316316}
317317
r4679r4680
325325/* !!!!! patch to IRQ timming for 2nd CPU !!!!! */
326326static WRITE8_HANDLER( gladiatr_irq_patch_w )
327327{
328   cpu_set_input_line(space->machine->cpu[1],0,HOLD_LINE);
328   cputag_set_input_line(space->machine, "audiocpu", 0, HOLD_LINE);
329329}
330330#endif
331331
r4679r4680
10471047      }
10481048   }
10491049
1050   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xf6a3,0xf6a3,0,0, f6a3_r );
1050   memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xf6a3,0xf6a3,0,0, f6a3_r );
10511051}
10521052
10531053
src/mame/drivers/imolagp.c
r4679r4680
113113}
114114static READ8_HANDLER( trigger_slave_nmi_r )
115115{
116   cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_NMI, PULSE_LINE);
116   cputag_set_input_line(space->machine, "slave", INPUT_LINE_NMI, PULSE_LINE);
117117   return 0;
118118}
119119
r4679r4680
164164   int i;
165165   for( i=0; i<3; i++ )
166166   {
167      imola_videoram[i] = auto_malloc(0x4000);
167      imola_videoram[i] = auto_alloc_array(machine, UINT8, 0x4000);
168168      memset( imola_videoram[i], 0x00, 0x4000 );
169169   }
170170   InitializeColors(machine);
src/mame/drivers/puckpkmn.c
r4679r4680
4444
4545#include "driver.h"
4646#include "cpu/m68000/m68000.h"
47#include "sound/okim6295.h"
48#include "sound/sn76496.h"
49#include "sound/2612intf.h"
50
4751#include "genesis.h"
4852
4953#define MASTER_CLOCK      53693100
r4679r4680
126130INPUT_PORTS_END
127131
128132
129static ADDRESS_MAP_START( puckpkmn_readmem, ADDRESS_SPACE_PROGRAM, 16 )
130   AM_RANGE(0x000000, 0x1fffff) AM_READ(SMH_ROM)               /* Main 68k Program Roms */
133static ADDRESS_MAP_START( puckpkmn_map, ADDRESS_SPACE_PROGRAM, 16 )
134   AM_RANGE(0x000000, 0x1fffff) AM_ROM                                       /* Main 68k Program Roms */
131135   AM_RANGE(0x700010, 0x700011) AM_READ_PORT("P2")
132136   AM_RANGE(0x700012, 0x700013) AM_READ_PORT("P1")
133137   AM_RANGE(0x700014, 0x700015) AM_READ_PORT("UNK")
134138   AM_RANGE(0x700016, 0x700017) AM_READ_PORT("DSW1")
135139   AM_RANGE(0x700018, 0x700019) AM_READ_PORT("DSW2")
136   AM_RANGE(0x700022, 0x700023) AM_DEVREAD8("oki", okim6295_r, 0x00ff)   /* M6295 Sound Chip Status Register */
137   AM_RANGE(0xa04000, 0xa04003) AM_DEVREAD8("ym", ym3438_r, 0xffff)         /* Ym3438 Sound Chip Status Register */
138   AM_RANGE(0xc00000, 0xc0001f) AM_READ(genesis_vdp_r)            /* VDP Access */
139   AM_RANGE(0xe00000, 0xe1ffff) AM_READ(SMH_BANK1)               /* VDP sees the roms here */
140   AM_RANGE(0xfe0000, 0xfeffff) AM_READ(SMH_BANK2)               /* VDP sees the ram here */
141   AM_RANGE(0xff0000, 0xffffff) AM_READ(SMH_RAM)               /* Main Ram */
140   AM_RANGE(0x700022, 0x700023) AM_DEVREADWRITE8("oki", okim6295_r,okim6295_w, 0x00ff)   /* M6295 Sound Chip Status Register/Writes */
141   AM_RANGE(0xa04000, 0xa04003) AM_DEVREADWRITE8("ym", ym3438_r,ym3438_w, 0xffff)      /* Ym3438 Sound Chip Status Register */
142   AM_RANGE(0xc00000, 0xc0001f) AM_READWRITE(genesis_vdp_r,genesis_vdp_w)            /* VDP Access */
143   AM_RANGE(0xe00000, 0xe1ffff) AM_ROMBANK(1)                                 /* VDP sees the roms here */
144   AM_RANGE(0xfe0000, 0xfeffff) AM_RAMBANK(2)                                 /* VDP sees the ram here */
145   AM_RANGE(0xff0000, 0xffffff) AM_RAM AM_BASE(&main_ram)                        /* Main Ram */
142146
143   /* Unknown reads: */
144//  AM_RANGE(0xa10000, 0xa10001) AM_READNOP                   /* ? once */
145   AM_RANGE(0xa10002, 0xa10005) AM_READNOP               /* ? alternative way of reading inputs ? */
146   AM_RANGE(0xa11100, 0xa11101) AM_READNOP               /* ? */
147   /* Unknown reads/writes: */
148   AM_RANGE(0xa00000, 0xa00551) AM_WRITENOP                                 /* ? */
149//  AM_RANGE(0xa10000, 0xa10001) AM_READNOP                                             /* ? once */
150   AM_RANGE(0xa10002, 0xa10005) AM_NOP                                       /* ? alternative way of reading inputs ? */
151   AM_RANGE(0xa11100, 0xa11101) AM_NOP                                       /* ? */
152//  AM_RANGE(0xa10008, 0xa1000d) AM_WRITENOP                                            /* ? once */
153//  AM_RANGE(0xa14000, 0xa14003) AM_WRITENOP                                            /* ? once */
154   AM_RANGE(0xa11200, 0xa11201) AM_WRITENOP                                 /* ? */
147155ADDRESS_MAP_END
148156
149static ADDRESS_MAP_START( puckpkmn_writemem, ADDRESS_SPACE_PROGRAM, 16 )
150   AM_RANGE(0x000000, 0x1fffff) AM_WRITE(SMH_ROM)               /* Main 68k Program Roms */
151   AM_RANGE(0x700022, 0x700023) AM_DEVWRITE8("oki", okim6295_w, 0x00ff)      /* M6295 Sound Chip Writes */
152   AM_RANGE(0xa04000, 0xa04003) AM_DEVWRITE8("ym", ym3438_w, 0xffff)         /* Ym3438 Sound Chip Writes */
153   AM_RANGE(0xc00000, 0xc0001f) AM_WRITE(genesis_vdp_w)            /* VDP Access */
154   AM_RANGE(0xff0000, 0xffffff) AM_WRITE(SMH_RAM) AM_BASE(&main_ram)      /* Main Ram */
155157
156   /* Unknown writes: */
157   AM_RANGE(0xa00000, 0xa00551) AM_WRITE(SMH_RAM)               /* ? */
158   AM_RANGE(0xa10002, 0xa10005) AM_WRITENOP               /* ? alternative way of reading inputs ? */
159//  AM_RANGE(0xa10008, 0xa1000d) AM_WRITENOP                    /* ? once */
160//  AM_RANGE(0xa14000, 0xa14003) AM_WRITENOP                    /* ? once */
161   AM_RANGE(0xa11100, 0xa11101) AM_WRITENOP               /* ? */
162   AM_RANGE(0xa11200, 0xa11201) AM_WRITENOP               /* ? */
163ADDRESS_MAP_END
164
165
166158static const ym3438_interface ym3438_intf =
167159{
168160   genesis_irq2_interrupt      /* IRQ handler */
r4679r4680
172164
173165   /* basic machine hardware */
174166   MDRV_CPU_ADD("maincpu",M68000, MASTER_CLOCK/7)       /*???*/
175   MDRV_CPU_PROGRAM_MAP(puckpkmn_readmem,puckpkmn_writemem)
167   MDRV_CPU_PROGRAM_MAP(puckpkmn_map,0)
176168   MDRV_CPU_VBLANK_INT("screen", genesis_vblank_interrupt)
177169
178170   MDRV_MACHINE_START(genesis)
src/mame/drivers/moo.c
r4679r4680
169169static TIMER_CALLBACK( dmaend_callback )
170170{
171171   if (cur_control2 & 0x800)
172      cpu_set_input_line(machine->cpu[0], 4, HOLD_LINE);
172      cputag_set_input_line(machine, "maincpu", 4, HOLD_LINE);
173173}
174174
175175static INTERRUPT_GEN(moo_interrupt)
r4679r4680
215215
216216static WRITE16_HANDLER( sound_irq_w )
217217{
218   cpu_set_input_line(space->machine->cpu[1], 0, HOLD_LINE);
218   cputag_set_input_line(space->machine, "soundcpu", 0, HOLD_LINE);
219219}
220220
221221static READ16_HANDLER( sound_status_r )
r4679r4680
225225
226226static WRITE8_HANDLER( sound_bankswitch_w )
227227{
228   memory_set_bankptr(space->machine, 2, memory_region(space->machine, "soundcpu") + 0x10000 + (data&0xf)*0x4000);
228   memory_set_bankptr(space->machine, 1, memory_region(space->machine, "soundcpu") + 0x10000 + (data&0xf)*0x4000);
229229}
230230
231231
r4679r4680
296296   okim6295_set_bank_base(device, (data & 0x0f)* 0x40000);
297297}
298298
299static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 16 )
300   AM_RANGE(0x000000, 0x07ffff) AM_READ(SMH_ROM)
299static ADDRESS_MAP_START( moo_map, ADDRESS_SPACE_PROGRAM, 16 )
300   AM_RANGE(0x000000, 0x07ffff) AM_ROM
301   AM_RANGE(0x0c0000, 0x0c003f) AM_WRITE(K056832_word_w)
302   AM_RANGE(0x0c2000, 0x0c2007) AM_WRITE(K053246_word_w)
303
301304   AM_RANGE(0x0c4000, 0x0c4001) AM_READ(K053246_word_r)
305   AM_RANGE(0x0ca000, 0x0ca01f) AM_WRITE(K054338_word_w)      /* K054338 alpha blending engine */
306   AM_RANGE(0x0cc000, 0x0cc01f) AM_WRITE(K053251_lsb_w)
307   AM_RANGE(0x0ce000, 0x0ce01f) AM_WRITE(moo_prot_w)
308   AM_RANGE(0x0d0000, 0x0d001f) AM_WRITEONLY               /* CCU regs (ignored) */
309   AM_RANGE(0x0d4000, 0x0d4001) AM_WRITE(sound_irq_w)
310   AM_RANGE(0x0d600c, 0x0d600d) AM_WRITE(sound_cmd1_w)
311   AM_RANGE(0x0d600e, 0x0d600f) AM_WRITE(sound_cmd2_w)
302312   AM_RANGE(0x0d6014, 0x0d6015) AM_READ(sound_status_r)
303   AM_RANGE(0x0d6000, 0x0d601f) AM_READ(SMH_RAM)         /* sound regs fall through */
313   AM_RANGE(0x0d6000, 0x0d601f) AM_RAM                     /* sound regs fall through */
314   AM_RANGE(0x0d8000, 0x0d8007) AM_WRITE(K056832_b_word_w)      /* VSCCS regs */
304315   AM_RANGE(0x0da000, 0x0da001) AM_READ_PORT("P1_P3")
305316   AM_RANGE(0x0da002, 0x0da003) AM_READ_PORT("P2_P4")
306317   AM_RANGE(0x0dc000, 0x0dc001) AM_READ_PORT("IN0")
307318   AM_RANGE(0x0dc002, 0x0dc003) AM_READ(control1_r)
308   AM_RANGE(0x0de000, 0x0de001) AM_READ(control2_r)
309   AM_RANGE(0x100000, 0x17ffff) AM_READ(SMH_ROM)
310   AM_RANGE(0x180000, 0x18ffff) AM_READ(SMH_RAM)         /* Work RAM */
311   AM_RANGE(0x190000, 0x19ffff) AM_READ(SMH_RAM)         /* Sprite RAM */
312   AM_RANGE(0x1a0000, 0x1a1fff) AM_READ(K056832_ram_word_r)   /* Graphic planes */
313   AM_RANGE(0x1a2000, 0x1a3fff) AM_READ(K056832_ram_word_r)   /* Graphic planes mirror */
319   AM_RANGE(0x0de000, 0x0de001) AM_READWRITE(control2_r,control2_w)
320   AM_RANGE(0x100000, 0x17ffff) AM_ROM
321   AM_RANGE(0x180000, 0x18ffff) AM_RAM   AM_BASE(&workram)      /* Work RAM */
322   AM_RANGE(0x190000, 0x19ffff) AM_RAM AM_BASE(&spriteram16)   /* Sprite RAM */
323   AM_RANGE(0x1a0000, 0x1a1fff) AM_READWRITE(K056832_ram_word_r,K056832_ram_word_w)   /* Graphic planes */
324   AM_RANGE(0x1a2000, 0x1a3fff) AM_READWRITE(K056832_ram_word_r,K056832_ram_word_w)   /* Graphic planes mirror */
314325   AM_RANGE(0x1b0000, 0x1b1fff) AM_READ(K056832_rom_word_r)   /* Passthrough to tile roms */
315   AM_RANGE(0x1c0000, 0x1c1fff) AM_READ(SMH_RAM)
326   AM_RANGE(0x1c0000, 0x1c1fff) AM_RAM_WRITE(paletteram16_xrgb_word_be_w) AM_BASE(&paletteram16)
316327#if MOO_DEBUG
317328   AM_RANGE(0x0c0000, 0x0c003f) AM_READ(K056832_word_r)
318329   AM_RANGE(0x0c2000, 0x0c2007) AM_READ(K053246_reg_word_r)
319330   AM_RANGE(0x0ca000, 0x0ca01f) AM_READ(K054338_word_r)
320331   AM_RANGE(0x0cc000, 0x0cc01f) AM_READ(K053251_lsb_r)
321   AM_RANGE(0x0d0000, 0x0d001f) AM_READ(SMH_RAM)
332   AM_RANGE(0x0d0000, 0x0d001f) AM_RAM
322333   AM_RANGE(0x0d8000, 0x0d8007) AM_READ(K056832_b_word_r)
323334#endif
324335ADDRESS_MAP_END
325336
326static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 16 )
327   AM_RANGE(0x000000, 0x07ffff) AM_WRITE(SMH_ROM)
337static ADDRESS_MAP_START( moobl_map, ADDRESS_SPACE_PROGRAM, 16 )
338   AM_RANGE(0x000000, 0x07ffff) AM_ROM
328339   AM_RANGE(0x0c0000, 0x0c003f) AM_WRITE(K056832_word_w)
329340   AM_RANGE(0x0c2000, 0x0c2007) AM_WRITE(K053246_word_w)
330   AM_RANGE(0x0ca000, 0x0ca01f) AM_WRITE(K054338_word_w)      /* K054338 alpha blending engine */
331   AM_RANGE(0x0cc000, 0x0cc01f) AM_WRITE(K053251_lsb_w)
332   AM_RANGE(0x0ce000, 0x0ce01f) AM_WRITE(moo_prot_w)
333   AM_RANGE(0x0d0000, 0x0d001f) AM_WRITE(SMH_RAM)         /* CCU regs (ignored) */
334   AM_RANGE(0x0d4000, 0x0d4001) AM_WRITE(sound_irq_w)
335   AM_RANGE(0x0d600c, 0x0d600d) AM_WRITE(sound_cmd1_w)
336   AM_RANGE(0x0d600e, 0x0d600f) AM_WRITE(sound_cmd2_w)
337   AM_RANGE(0x0d6000, 0x0d601f) AM_WRITE(SMH_RAM)         /* sound regs fall through */
338   AM_RANGE(0x0d8000, 0x0d8007) AM_WRITE(K056832_b_word_w)   /* VSCCS regs */
339   AM_RANGE(0x0de000, 0x0de001) AM_WRITE(control2_w)
340   AM_RANGE(0x100000, 0x17ffff) AM_WRITE(SMH_ROM)
341   AM_RANGE(0x180000, 0x18ffff) AM_WRITE(SMH_RAM) AM_BASE(&workram)
342   AM_RANGE(0x190000, 0x19ffff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16)
343   AM_RANGE(0x1a0000, 0x1a1fff) AM_WRITE(K056832_ram_word_w)   /* Graphic planes */
344   AM_RANGE(0x1a2000, 0x1a3fff) AM_WRITE(K056832_ram_word_w)   /* Graphic planes mirror */
345   AM_RANGE(0x1c0000, 0x1c1fff) AM_WRITE(paletteram16_xrgb_word_be_w) AM_BASE(&paletteram16)
346ADDRESS_MAP_END
347
348static ADDRESS_MAP_START( readmembl, ADDRESS_SPACE_PROGRAM, 16 )
349   AM_RANGE(0x000000, 0x07ffff) AM_READ(SMH_ROM)
350   AM_RANGE(0x0c2f00, 0x0c2f01) AM_READNOP              /* heck if I know, but it's polled constantly */
341   AM_RANGE(0x0c2f00, 0x0c2f01) AM_READNOP                  /* heck if I know, but it's polled constantly */
351342   AM_RANGE(0x0c4000, 0x0c4001) AM_READ(K053246_word_r)
352   AM_RANGE(0x0d6ffe, 0x0d6fff) AM_DEVREAD8("oki", okim6295_r, 0x00ff)
343   AM_RANGE(0x0ca000, 0x0ca01f) AM_WRITE(K054338_word_w)       /* K054338 alpha blending engine */
344   AM_RANGE(0x0cc000, 0x0cc01f) AM_WRITE(K053251_lsb_w)
345   AM_RANGE(0x0d0000, 0x0d001f) AM_WRITEONLY                  /* CCU regs (ignored) */
346   AM_RANGE(0x0d6ffc, 0x0d6ffd) AM_DEVWRITE("oki", moobl_oki_bank_w)
347   AM_RANGE(0x0d6ffe, 0x0d6fff) AM_DEVREADWRITE8("oki", okim6295_r,okim6295_w, 0x00ff)
348   AM_RANGE(0x0d8000, 0x0d8007) AM_WRITE(K056832_b_word_w)     /* VSCCS regs */
353349   AM_RANGE(0x0da000, 0x0da001) AM_READ_PORT("P1_P3")
354350   AM_RANGE(0x0da002, 0x0da003) AM_READ_PORT("P2_P4")
355351   AM_RANGE(0x0dc000, 0x0dc001) AM_READ_PORT("IN0")
356352   AM_RANGE(0x0dc002, 0x0dc003) AM_READ(control1_r)
357   AM_RANGE(0x0de000, 0x0de001) AM_READ(control2_r)
358   AM_RANGE(0x100000, 0x17ffff) AM_READ(SMH_ROM)
359   AM_RANGE(0x180000, 0x18ffff) AM_READ(SMH_RAM)              /* Work RAM */
360   AM_RANGE(0x190000, 0x19ffff) AM_READ(SMH_RAM)              /* Sprite RAM */
361   AM_RANGE(0x1a0000, 0x1a1fff) AM_READ(K056832_ram_word_r)     /* Graphic planes */
362   AM_RANGE(0x1a2000, 0x1a3fff) AM_READ(K056832_ram_word_r)   /* Graphic planes mirror */
353   AM_RANGE(0x0de000, 0x0de001) AM_READWRITE(control2_r,control2_w)
354   AM_RANGE(0x100000, 0x17ffff) AM_ROM
355   AM_RANGE(0x180000, 0x18ffff) AM_RAM AM_BASE(&workram)       /* Work RAM */
356   AM_RANGE(0x190000, 0x19ffff) AM_RAM AM_BASE(&spriteram16)     /* Sprite RAM */
357   AM_RANGE(0x1a0000, 0x1a1fff) AM_READWRITE(K056832_ram_word_r,K056832_ram_word_w) /* Graphic planes */
358   AM_RANGE(0x1a2000, 0x1a3fff) AM_READWRITE(K056832_ram_word_r,K056832_ram_word_w)   /* Graphic planes mirror */
363359   AM_RANGE(0x1b0000, 0x1b1fff) AM_READ(K056832_rom_word_r)   /* Passthrough to tile roms */
364   AM_RANGE(0x1c0000, 0x1c1fff) AM_READ(SMH_RAM)
360   AM_RANGE(0x1c0000, 0x1c1fff) AM_RAM_WRITE(paletteram16_xrgb_word_be_w) AM_BASE(&paletteram16)
365361ADDRESS_MAP_END
366362
367static ADDRESS_MAP_START( writemembl, ADDRESS_SPACE_PROGRAM, 16 )
368   AM_RANGE(0x000000, 0x07ffff) AM_WRITE(SMH_ROM)
363static ADDRESS_MAP_START( bucky_map, ADDRESS_SPACE_PROGRAM, 16 )
364   AM_RANGE(0x000000, 0x07ffff) AM_ROM
365   AM_RANGE(0x080000, 0x08ffff) AM_RAM
366   AM_RANGE(0x090000, 0x09ffff) AM_RAM AM_BASE(&spriteram16)   /* Sprite RAM */
367   AM_RANGE(0x0a0000, 0x0affff) AM_RAM                     /* extra sprite RAM? */
369368   AM_RANGE(0x0c0000, 0x0c003f) AM_WRITE(K056832_word_w)
370369   AM_RANGE(0x0c2000, 0x0c2007) AM_WRITE(K053246_word_w)
371   AM_RANGE(0x0ca000, 0x0ca01f) AM_WRITE(K054338_word_w)         /* K054338 alpha blending engine */
372   AM_RANGE(0x0cc000, 0x0cc01f) AM_WRITE(K053251_lsb_w)
373   AM_RANGE(0x0d0000, 0x0d001f) AM_WRITE(SMH_RAM)              /* CCU regs (ignored) */
374   AM_RANGE(0x0d6ffc, 0x0d6ffd) AM_DEVWRITE("oki", moobl_oki_bank_w)
375   AM_RANGE(0x0d6ffe, 0x0d6fff) AM_DEVWRITE8("oki", okim6295_w, 0x00ff)
376   AM_RANGE(0x0d8000, 0x0d8007) AM_WRITE(K056832_b_word_w)       /* VSCCS regs */
377   AM_RANGE(0x0de000, 0x0de001) AM_WRITE(control2_w)
378   AM_RANGE(0x100000, 0x17ffff) AM_WRITE(SMH_ROM)
379   AM_RANGE(0x180000, 0x18ffff) AM_WRITE(SMH_RAM) AM_BASE(&workram)
380   AM_RANGE(0x190000, 0x19ffff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16)
381   AM_RANGE(0x1a0000, 0x1a1fff) AM_WRITE(K056832_ram_word_w)   /* Graphic planes */
382   AM_RANGE(0x1a2000, 0x1a3fff) AM_WRITE(K056832_ram_word_w)   /* Graphic planes mirror */
383   AM_RANGE(0x1c0000, 0x1c1fff) AM_WRITE(paletteram16_xrgb_word_be_w) AM_BASE(&paletteram16)
384ADDRESS_MAP_END
385
386static ADDRESS_MAP_START( buckyreadmem, ADDRESS_SPACE_PROGRAM, 16 )
387   AM_RANGE(0x000000, 0x07ffff) AM_READ(SMH_ROM)
388   AM_RANGE(0x080000, 0x08ffff) AM_READ(SMH_RAM)
389   AM_RANGE(0x090000, 0x09ffff) AM_READ(SMH_RAM)         /* Sprite RAM */
390   AM_RANGE(0x0a0000, 0x0affff) AM_READ(SMH_RAM)         /* extra sprite RAM? */
391370   AM_RANGE(0x0c4000, 0x0c4001) AM_READ(K053246_word_r)
392   AM_RANGE(0x0d2000, 0x0d20ff) AM_READ(K054000_lsb_r)
371   AM_RANGE(0x0ca000, 0x0ca01f) AM_WRITE(K054338_word_w)      /* K054338 alpha blending engine */
372   AM_RANGE(0x0cc000, 0x0cc01f) AM_WRITE(K053251_lsb_w)
373   AM_RANGE(0x0ce000, 0x0ce01f) AM_WRITE(moo_prot_w)
374   AM_RANGE(0x0d0000, 0x0d001f) AM_WRITEONLY               /* CCU regs (ignored) */
375   AM_RANGE(0x0d2000, 0x0d20ff) AM_READWRITE(K054000_lsb_r,K054000_lsb_w)
376   AM_RANGE(0x0d4000, 0x0d4001) AM_WRITE(sound_irq_w)
377   AM_RANGE(0x0d600c, 0x0d600d) AM_WRITE(sound_cmd1_w)
378   AM_RANGE(0x0d600e, 0x0d600f) AM_WRITE(sound_cmd2_w)
393379   AM_RANGE(0x0d6014, 0x0d6015) AM_READ(sound_status_r)
394   AM_RANGE(0x0d6000, 0x0d601f) AM_READ(SMH_RAM)         /* sound regs fall through */
380   AM_RANGE(0x0d6000, 0x0d601f) AM_RAM                     /* sound regs fall through */
381   AM_RANGE(0x0d8000, 0x0d8007) AM_WRITE(K056832_b_word_w)      /* VSCCS regs */
395382   AM_RANGE(0x0da000, 0x0da001) AM_READ_PORT("P1_P3")
396383   AM_RANGE(0x0da002, 0x0da003) AM_READ_PORT("P2_P4")
397384   AM_RANGE(0x0dc000, 0x0dc001) AM_READ_PORT("IN0")
398385   AM_RANGE(0x0dc002, 0x0dc003) AM_READ(control1_r)
399   AM_RANGE(0x0de000, 0x0de001) AM_READ(control2_r)
400   AM_RANGE(0x180000, 0x181fff) AM_READ(K056832_ram_word_r)   /* Graphic planes */
401   AM_RANGE(0x182000, 0x183fff) AM_READ(K056832_ram_word_r)   /* Graphic planes mirror */
402   AM_RANGE(0x184000, 0x187fff) AM_READ(SMH_RAM)         /* extra tile RAM? */
386   AM_RANGE(0x0de000, 0x0de001) AM_READWRITE(control2_r,control2_w)
387   AM_RANGE(0x180000, 0x181fff) AM_READWRITE(K056832_ram_word_r,K056832_ram_word_w)   /* Graphic planes */
388   AM_RANGE(0x182000, 0x183fff) AM_READWRITE(K056832_ram_word_r,K056832_ram_word_w)   /* Graphic planes mirror */
389   AM_RANGE(0x184000, 0x187fff) AM_RAM                     /* extra tile RAM? */
403390   AM_RANGE(0x190000, 0x191fff) AM_READ(K056832_rom_word_r)   /* Passthrough to tile roms */
404   AM_RANGE(0x1b0000, 0x1b3fff) AM_READ(SMH_RAM)
405   AM_RANGE(0x200000, 0x23ffff) AM_READ(SMH_ROM)         /* data */
391   AM_RANGE(0x1b0000, 0x1b3fff) AM_RAM_WRITE(paletteram16_xrgb_word_be_w) AM_BASE(&paletteram16)
392   AM_RANGE(0x200000, 0x23ffff) AM_ROM                     /* data */
406393#if MOO_DEBUG
407394   AM_RANGE(0x0c0000, 0x0c003f) AM_READ(K056832_word_r)
408395   AM_RANGE(0x0c2000, 0x0c2007) AM_READ(K053246_reg_word_r)
409396   AM_RANGE(0x0ca000, 0x0ca01f) AM_READ(K054338_word_r)
410397   AM_RANGE(0x0cc000, 0x0cc01f) AM_READ(K053251_lsb_r)
411   AM_RANGE(0x0d0000, 0x0d001f) AM_READ(SMH_RAM)
398   AM_RANGE(0x0d0000, 0x0d001f) AM_RAM
412399   AM_RANGE(0x0d8000, 0x0d8007) AM_READ(K056832_b_word_r)
413400#endif
414401ADDRESS_MAP_END
415402
416static ADDRESS_MAP_START( buckywritemem, ADDRESS_SPACE_PROGRAM, 16 )
417   AM_RANGE(0x000000, 0x07ffff) AM_WRITE(SMH_ROM)
418   AM_RANGE(0x080000, 0x08ffff) AM_WRITE(SMH_RAM)
419   AM_RANGE(0x090000, 0x09ffff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16)   /* Sprite RAM */
420   AM_RANGE(0x0a0000, 0x0affff) AM_WRITE(SMH_RAM)         /* extra sprite RAM? */
421   AM_RANGE(0x0c0000, 0x0c003f) AM_WRITE(K056832_word_w)
422   AM_RANGE(0x0c2000, 0x0c2007) AM_WRITE(K053246_word_w)
423   AM_RANGE(0x0ca000, 0x0ca01f) AM_WRITE(K054338_word_w)      /* K054338 alpha blending engine */
424   AM_RANGE(0x0cc000, 0x0cc01f) AM_WRITE(K053251_lsb_w)
425   AM_RANGE(0x0ce000, 0x0ce01f) AM_WRITE(moo_prot_w)
426   AM_RANGE(0x0d0000, 0x0d001f) AM_WRITE(SMH_RAM)         /* CCU regs (ignored) */
427   AM_RANGE(0x0d2000, 0x0d20ff) AM_WRITE(K054000_lsb_w)
428   AM_RANGE(0x0d4000, 0x0d4001) AM_WRITE(sound_irq_w)
429   AM_RANGE(0x0d600c, 0x0d600d) AM_WRITE(sound_cmd1_w)
430   AM_RANGE(0x0d600e, 0x0d600f) AM_WRITE(sound_cmd2_w)
431   AM_RANGE(0x0d6000, 0x0d601f) AM_WRITE(SMH_RAM)         /* sound regs fall through */
432   AM_RANGE(0x0d8000, 0x0d8007) AM_WRITE(K056832_b_word_w)   /* VSCCS regs */
433   AM_RANGE(0x0de000, 0x0de001) AM_WRITE(control2_w)
434   AM_RANGE(0x180000, 0x181fff) AM_WRITE(K056832_ram_word_w)   /* Graphic planes */
435   AM_RANGE(0x182000, 0x183fff) AM_WRITE(K056832_ram_word_w)   /* Graphic planes mirror */
436   AM_RANGE(0x184000, 0x187fff) AM_WRITE(SMH_RAM)         /* extra tile RAM? */
437   AM_RANGE(0x1b0000, 0x1b3fff) AM_WRITE(paletteram16_xrgb_word_be_w) AM_BASE(&paletteram16)
438   AM_RANGE(0x200000, 0x23ffff) AM_WRITE(SMH_ROM)
439ADDRESS_MAP_END
440
441static ADDRESS_MAP_START( sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
442   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
443   AM_RANGE(0x8000, 0xbfff) AM_READ(SMH_BANK2)
444   AM_RANGE(0xc000, 0xdfff) AM_READ(SMH_RAM)
445   AM_RANGE(0xe000, 0xe22f) AM_DEVREAD("konami", k054539_r)
446   AM_RANGE(0xec00, 0xec01) AM_DEVREAD("ym", ym2151_r)
403static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 )
404   AM_RANGE(0x0000, 0x7fff) AM_ROM
405   AM_RANGE(0x8000, 0xbfff) AM_ROMBANK(1)
406   AM_RANGE(0xc000, 0xdfff) AM_RAM
407   AM_RANGE(0xe000, 0xe22f) AM_DEVREADWRITE("konami", k054539_r,k054539_w)
408   AM_RANGE(0xec00, 0xec01) AM_DEVREADWRITE("ym", ym2151_r,ym2151_w)
409   AM_RANGE(0xf000, 0xf000) AM_WRITE(soundlatch3_w)
447410   AM_RANGE(0xf002, 0xf002) AM_READ(soundlatch_r)
448411   AM_RANGE(0xf003, 0xf003) AM_READ(soundlatch2_r)
449ADDRESS_MAP_END
450
451static ADDRESS_MAP_START( sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
452   AM_RANGE(0x0000, 0xbfff) AM_WRITE(SMH_ROM)
453   AM_RANGE(0xc000, 0xdfff) AM_WRITE(SMH_RAM)
454   AM_RANGE(0xe000, 0xe22f) AM_DEVWRITE("konami", k054539_w)
455   AM_RANGE(0xec00, 0xec01) AM_DEVWRITE("ym", ym2151_w)
456   AM_RANGE(0xf000, 0xf000) AM_WRITE(soundlatch3_w)
457412   AM_RANGE(0xf800, 0xf800) AM_WRITE(sound_bankswitch_w)
458413ADDRESS_MAP_END
459414
460
461415static INPUT_PORTS_START( moo )
462416   PORT_START("IN0")
463417   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
r4679r4680
524478
525479   /* basic machine hardware */
526480   MDRV_CPU_ADD("maincpu", M68000, 16000000)
527   MDRV_CPU_PROGRAM_MAP(readmem,writemem)
481   MDRV_CPU_PROGRAM_MAP(moo_map,0)
528482   MDRV_CPU_VBLANK_INT("screen", moo_interrupt)
529483
530484   MDRV_CPU_ADD("soundcpu", Z80, 8000000)
531   MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem)
485   MDRV_CPU_PROGRAM_MAP(sound_map,0)
532486
533487   MDRV_MACHINE_START(moo)
534488   MDRV_MACHINE_RESET(moo)
r4679r4680
566520
567521   /* basic machine hardware */
568522   MDRV_CPU_ADD("maincpu", M68000, 16100000)
569   MDRV_CPU_PROGRAM_MAP(readmembl,writemembl)
523   MDRV_CPU_PROGRAM_MAP(moobl_map,0)
570524   MDRV_CPU_VBLANK_INT("screen", moobl_interrupt)
571525
572526   MDRV_MACHINE_START(moo)
r4679r4680
601555   MDRV_IMPORT_FROM(moo)
602556
603557   MDRV_CPU_MODIFY("maincpu")
604   MDRV_CPU_PROGRAM_MAP(buckyreadmem,buckywritemem)
558   MDRV_CPU_PROGRAM_MAP(bucky_map,0)
605559
606560   /* video hardware */
607561   MDRV_PALETTE_LENGTH(4096)
src/mame/drivers/goindol.c
r4679r4680
9696
9797
9898
99static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 )
100   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
101   AM_RANGE(0x8000, 0xbfff) AM_READ(SMH_BANK1)
102   AM_RANGE(0xc000, 0xc7ff) AM_READ(SMH_RAM)
103   AM_RANGE(0xc800, 0xc800) AM_READNOP   // watchdog?
104   AM_RANGE(0xd000, 0xefff) AM_READ(SMH_RAM)
99static ADDRESS_MAP_START( goindol_map, ADDRESS_SPACE_PROGRAM, 8 )
100   AM_RANGE(0x0000, 0x7fff) AM_ROM
101   AM_RANGE(0x8000, 0xbfff) AM_ROMBANK(1)
102   AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_BASE(&ram)
103   AM_RANGE(0xc800, 0xc800) AM_READNOP AM_WRITE(soundlatch_w) // watchdog?
104   AM_RANGE(0xc810, 0xc810) AM_WRITE(goindol_bankswitch_w)
105   AM_RANGE(0xc820, 0xd820) AM_READ_PORT("DIAL") AM_WRITE(SMH_RAM) AM_BASE(&goindol_fg_scrolly)
106   AM_RANGE(0xc830, 0xd830) AM_READ_PORT("P1") AM_WRITE(SMH_RAM) AM_BASE(&goindol_fg_scrollx)
107   AM_RANGE(0xc834, 0xc834) AM_READ_PORT("P2")
108   AM_RANGE(0xd000, 0xd03f) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
109   AM_RANGE(0xd040, 0xd7ff) AM_RAM
110   AM_RANGE(0xd800, 0xdfff) AM_RAM_WRITE(goindol_bg_videoram_w) AM_BASE(&goindol_bg_videoram) AM_SIZE(&goindol_bg_videoram_size)
111   AM_RANGE(0xe000, 0xe03f) AM_RAM AM_BASE(&spriteram_2)
112   AM_RANGE(0xe040, 0xe7ff) AM_RAM
113   AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(goindol_fg_videoram_w) AM_BASE(&goindol_fg_videoram) AM_SIZE(&goindol_fg_videoram_size)
105114   AM_RANGE(0xf000, 0xf000) AM_READ_PORT("DSW1")
106115   AM_RANGE(0xf422, 0xf422) AM_READ(prot_f422_r)
107116   AM_RANGE(0xf800, 0xf800) AM_READ_PORT("DSW2")
108   AM_RANGE(0xc834, 0xc834) AM_READ_PORT("P2")
109   AM_RANGE(0xc820, 0xc820) AM_READ_PORT("DIAL")
110   AM_RANGE(0xc830, 0xc830) AM_READ_PORT("P1")
111   AM_RANGE(0xe000, 0xefff) AM_READ(SMH_RAM)
112ADDRESS_MAP_END
113
114static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 )
115   AM_RANGE(0x0000, 0xbfff) AM_WRITE(SMH_ROM)
116   AM_RANGE(0xc000, 0xc7ff) AM_WRITE(SMH_RAM) AM_BASE(&ram)
117   AM_RANGE(0xc810, 0xc810) AM_WRITE(goindol_bankswitch_w)
118   AM_RANGE(0xc820, 0xd820) AM_WRITE(SMH_RAM) AM_BASE(&goindol_fg_scrolly)
119   AM_RANGE(0xc830, 0xd830) AM_WRITE(SMH_RAM) AM_BASE(&goindol_fg_scrollx)
120   AM_RANGE(0xc800, 0xc800) AM_WRITE(soundlatch_w)
121   AM_RANGE(0xd000, 0xd03f) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
122   AM_RANGE(0xd040, 0xd7ff) AM_WRITE(SMH_RAM)
123   AM_RANGE(0xd800, 0xdfff) AM_WRITE(goindol_bg_videoram_w) AM_BASE(&goindol_bg_videoram) AM_SIZE(&goindol_bg_videoram_size)
124   AM_RANGE(0xe000, 0xe03f) AM_WRITE(SMH_RAM) AM_BASE(&spriteram_2)
125   AM_RANGE(0xe040, 0xe7ff) AM_WRITE(SMH_RAM)
126   AM_RANGE(0xe800, 0xefff) AM_WRITE(goindol_fg_videoram_w) AM_BASE(&goindol_fg_videoram) AM_SIZE(&goindol_fg_videoram_size)
127117   AM_RANGE(0xfc44, 0xfc44) AM_WRITE(prot_fc44_w)
128118   AM_RANGE(0xfc66, 0xfc66) AM_WRITE(prot_fc66_w)
129119   AM_RANGE(0xfcb0, 0xfcb0) AM_WRITE(prot_fcb0_w)
130120   AM_RANGE(0xfd99, 0xfd99) AM_WRITE(prot_fd99_w)
131121ADDRESS_MAP_END
132122
133static ADDRESS_MAP_START( sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
134   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
135   AM_RANGE(0xc000, 0xc7ff) AM_READ(SMH_RAM)
123static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 )
124   AM_RANGE(0x0000, 0x7fff) AM_ROM
125   AM_RANGE(0xa000, 0xa001) AM_DEVWRITE("ym", ym2203_w)
126   AM_RANGE(0xc000, 0xc7ff) AM_RAM
136127   AM_RANGE(0xd800, 0xd800) AM_READ(soundlatch_r)
137128ADDRESS_MAP_END
138129
139static ADDRESS_MAP_START( sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
140   AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM)
141   AM_RANGE(0xc000, 0xc7ff) AM_WRITE(SMH_RAM)
142   AM_RANGE(0xa000, 0xa001) AM_DEVWRITE("ym", ym2203_w)
143ADDRESS_MAP_END
144130
145
146131static INPUT_PORTS_START( goindol )
147132   PORT_START("P1")
148133   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY
r4679r4680
247232
248233   /* basic machine hardware */
249234   MDRV_CPU_ADD("maincpu", Z80, 6000000)        /* 6 MHz (?) */
250   MDRV_CPU_PROGRAM_MAP(readmem,writemem)
235   MDRV_CPU_PROGRAM_MAP(goindol_map,0)
251236   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
252237
253238   MDRV_CPU_ADD("audiocpu", Z80, 4000000)
254   MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem)
239   MDRV_CPU_PROGRAM_MAP(sound_map,0)
255240   MDRV_CPU_VBLANK_INT_HACK(irq0_line_hold,4)
256241
257242   /* video hardware */
src/mame/drivers/eolith16.c
r4679r4680
102102
103103static VIDEO_START( eolith16 )
104104{
105   vram = auto_malloc(0x10000*2);
105   vram = auto_alloc_array(machine, UINT16, 0x10000);
106106}
107107
108108static VIDEO_UPDATE( eolith16 )
src/mame/drivers/taito_l.c
r4679r4680
137137{
138138   int i;
139139
140   taitol_rambanks = auto_malloc(0x1000*12);
141   palette_ram = auto_malloc(0x1000);
142   empty_ram = auto_malloc(0x1000);
140   taitol_rambanks = auto_alloc_array(machine, UINT8, 0x1000*12);
141   palette_ram = auto_alloc_array(machine, UINT8, 0x1000);
142   empty_ram = auto_alloc_array(machine, UINT8, 0x1000);
143143
144144   for(i=0;i<3;i++)
145145      irq_adr_table[i] = 0;
r4679r4680
314314
315315   // fix Plotting test mode
316316   if ((irq_enable & (1 << last_irq_level)) == 0)
317      cpu_set_input_line(space->machine->cpu[0], 0, CLEAR_LINE);
317      cputag_set_input_line(space->machine, "maincpu", 0, CLEAR_LINE);
318318}
319319
320320static READ8_HANDLER( irq_enable_r )
r4679r4680
866866
867867static WRITE8_HANDLER (evilston_snd_w)
868868{
869   shared_ram[0x7fe]=data&0x7f;
870   cpu_set_input_line(space->machine->cpu[1],INPUT_LINE_NMI,PULSE_LINE);
869   shared_ram[0x7fe] = data & 0x7f;
870   cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
871871}
872872
873873static ADDRESS_MAP_START( evilston_map, ADDRESS_SPACE_PROGRAM, 8 )
r4679r4680
18771877
18781878static void irqhandler(const device_config *device, int irq)
18791879{
1880   cpu_set_input_line(device->machine->cpu[1],0,irq ? ASSERT_LINE : CLEAR_LINE);
1880   cputag_set_input_line(device->machine, "audiocpu", 0, irq ? ASSERT_LINE : CLEAR_LINE);
18811881}
18821882
18831883static WRITE8_DEVICE_HANDLER( portA_w )
r4679r4680
18891889
18901890      cur_bank = data & 0x03;
18911891      bankaddress = 0x10000 + (cur_bank-1) * 0x4000;
1892      memory_set_bankptr(device->machine, 7,&RAM[bankaddress]);
1893      //logerror ("YM2203 bank change val=%02x  pc=%04x\n",cur_bank, cpu_get_pc(space->cpu) );
1892      memory_set_bankptr(device->machine, 7, &RAM[bankaddress]);
1893      //logerror ("YM2203 bank change val=%02x  pc=%04x\n", cur_bank, cpu_get_pc(space->cpu) );
18941894   }
18951895}
18961896
r4679r4680
27612761{
27622762   UINT8 *ROM = memory_region(machine, "audiocpu");
27632763   ROM[0x72]=0x45;   /* reti -> retn  ('dead' loop @ $1104 )*/
2764   memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xa7fe, 0xa7fe, 0, 0, evilston_snd_w);
2764   memory_install_write8_handler(cputag_get_address_space(machine, "audiocpu", ADDRESS_SPACE_PROGRAM), 0xa7fe, 0xa7fe, 0, 0, evilston_snd_w);
27652765}
27662766
27672767
src/mame/drivers/groundfx.c
r4679r4680
107107
108108static TIMER_CALLBACK( groundfx_interrupt5 )
109109{
110   cpu_set_input_line(machine->cpu[0],5,HOLD_LINE); //from 5... ADC port
110   cputag_set_input_line(machine, "maincpu", 5, HOLD_LINE); //from 5... ADC port
111111}
112112
113113
r4679r4680
117117
118118static const UINT8 default_eeprom[128]=
119119{
120   0x02,0x01,0x11,0x12,0x01,0x01,0x01,0x00,0x80,0x80,0x30,0x01,0x00,0x00,0x62,0x45,
121   0xe0,0xa0,0xff,0x28,0xff,0xff,0xfa,0xd7,0x33,0x28,0x00,0x00,0x33,0x28,0x00,0x00,
122   0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xa0,0xff,0x28,0xff,0xff,0xff,0xff,0xfa,0xd7,
123   0x33,0x28,0x00,0x00,0x33,0x28,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,
124   0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
125   0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
126   0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
120   0x62,0x11,0x00,0x00,0x00,0x00,0x01,0x00,0x80,0x80,0x30,0x05,0x00,0x00,0x96,0x14,
121   0x17,0x70,0x35,0xcd,0x75,0x30,0x24,0xaa,0x75,0x30,0x51,0xd9,0x75,0x30,0x2d,0x2b,
122   0x75,0x30,0x51,0xb9,0x00,0x00,0xe0,0xa0,0x17,0x70,0x35,0xcd,0x75,0x30,0x24,0xaa,
123   0x75,0x30,0x51,0xd9,0x75,0x30,0x2d,0x2b,0x75,0x30,0x51,0xb9,0x00,0x00,0xff,0xff,
124   0x17,0x70,0x35,0xcd,0x75,0x30,0x24,0xaa,0x75,0x30,0x51,0xd9,0x75,0x30,0x2d,0x2b,
125   0x75,0x30,0x51,0xb9,0xff,0xff,0xff,0xff,0x17,0x70,0x35,0xcd,0x75,0x30,0x24,0xaa,
126   0x75,0x30,0x51,0xd9,0x75,0x30,0x2d,0x2b,0x75,0x30,0x51,0xb9,0xff,0xff,0xff,0xff,
127127   0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff
128128};
129129
r4679r4680
249249             MEMORY STRUCTURES
250250***********************************************************/
251251
252static ADDRESS_MAP_START( groundfx_readmem, ADDRESS_SPACE_PROGRAM, 32 )
253   AM_RANGE(0x000000, 0x1fffff) AM_READ(SMH_ROM)
254   AM_RANGE(0x200000, 0x21ffff) AM_READ(SMH_RAM)   /* main CPUA ram */
255   AM_RANGE(0x300000, 0x303fff) AM_READ(SMH_RAM)   /* sprite ram */
252static ADDRESS_MAP_START( groundfx_map, ADDRESS_SPACE_PROGRAM, 32 )
253   AM_RANGE(0x000000, 0x1fffff) AM_ROM
254   AM_RANGE(0x200000, 0x21ffff) AM_RAM   AM_BASE(&groundfx_ram) /* main CPUA ram */
255   AM_RANGE(0x300000, 0x303fff) AM_RAM   AM_BASE(&spriteram32) AM_SIZE(&spriteram_size) /* sprite ram */
256   AM_RANGE(0x400000, 0x400003) AM_WRITE(motor_control_w)   /* gun vibration */
256257   AM_RANGE(0x500000, 0x500003) AM_READ_PORT("BUTTONS")
257258   AM_RANGE(0x500004, 0x500007) AM_READ_PORT("SYSTEM")
258   AM_RANGE(0x600000, 0x600003) AM_READ(groundfx_adc_r)
259   AM_RANGE(0x700000, 0x7007ff) AM_READ(SMH_RAM)
260   AM_RANGE(0x800000, 0x80ffff) AM_READ(TC0480SCP_long_r)     /* tilemaps */
261   AM_RANGE(0x830000, 0x83002f) AM_READ(TC0480SCP_ctrl_long_r)   // debugging
262   AM_RANGE(0x900000, 0x90ffff) AM_READ(TC0100SCN_long_r)   /* piv tilemaps */
263   AM_RANGE(0x920000, 0x92000f) AM_READ(TC0100SCN_ctrl_long_r)
264   AM_RANGE(0xa00000, 0xa0ffff) AM_READ(SMH_RAM) /* palette ram */
265   AM_RANGE(0xb00000, 0xb003ff) AM_READ(SMH_RAM)   // ?? single bytes
266   AM_RANGE(0xc00000, 0xc00007) AM_READNOP /* Network? */
267ADDRESS_MAP_END
268
269static ADDRESS_MAP_START( groundfx_writemem, ADDRESS_SPACE_PROGRAM, 32 )
270   AM_RANGE(0x000000, 0x1fffff) AM_WRITE(SMH_ROM)
271   AM_RANGE(0x200000, 0x21ffff) AM_WRITE(SMH_RAM) AM_BASE(&groundfx_ram)
272   AM_RANGE(0x300000, 0x303fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram32) AM_SIZE(&spriteram_size)
273   AM_RANGE(0x400000, 0x400003) AM_WRITE(motor_control_w)   /* gun vibration */
274259   AM_RANGE(0x500000, 0x500007) AM_WRITE(groundfx_input_w)   /* eeprom etc. */
275   AM_RANGE(0x600000, 0x600003) AM_WRITE(groundfx_adc_w)
276   AM_RANGE(0x700000, 0x7007ff) AM_WRITE(SMH_RAM) AM_BASE(&f3_shared_ram)
277   AM_RANGE(0x800000, 0x80ffff) AM_WRITE(TC0480SCP_long_w)     /* tilemaps */
278   AM_RANGE(0x830000, 0x83002f) AM_WRITE(TC0480SCP_ctrl_long_w)
279   AM_RANGE(0x900000, 0x90ffff) AM_WRITE(TC0100SCN_long_w)   /* piv tilemaps */
280   AM_RANGE(0x920000, 0x92000f) AM_WRITE(TC0100SCN_ctrl_long_w)
281   AM_RANGE(0xa00000, 0xa0ffff) AM_WRITE(color_ram_w) AM_BASE(&paletteram32)
282   AM_RANGE(0xb00000, 0xb003ff) AM_WRITE(SMH_RAM)   // single bytes, blending ??
260   AM_RANGE(0x600000, 0x600003) AM_READWRITE(groundfx_adc_r,groundfx_adc_w)
261   AM_RANGE(0x700000, 0x7007ff) AM_RAM AM_BASE(&f3_shared_ram)
262   AM_RANGE(0x800000, 0x80ffff) AM_READWRITE(TC0480SCP_long_r,TC0480SCP_long_w)     /* tilemaps */
263   AM_RANGE(0x830000, 0x83002f) AM_READWRITE(TC0480SCP_ctrl_long_r,TC0480SCP_ctrl_long_w)   // debugging
264   AM_RANGE(0x900000, 0x90ffff) AM_READWRITE(TC0100SCN_long_r,TC0100SCN_long_w)   /* piv tilemaps */
265   AM_RANGE(0x920000, 0x92000f) AM_READWRITE(TC0100SCN_ctrl_long_r,TC0100SCN_ctrl_long_w)
266   AM_RANGE(0xa00000, 0xa0ffff) AM_RAM_WRITE(color_ram_w) AM_BASE(&paletteram32) /* palette ram */
267   AM_RANGE(0xb00000, 0xb003ff) AM_RAM                  // ?? single bytes, blending ??
268   AM_RANGE(0xc00000, 0xc00007) AM_READNOP /* Network? */
283269   AM_RANGE(0xd00000, 0xd00003) AM_WRITE(rotate_control_w)   /* perhaps port based rotate control? */
284270   /* f00000 is seat control? */
285271ADDRESS_MAP_END
r4679r4680
397383
398384   /* basic machine hardware */
399385   MDRV_CPU_ADD("maincpu", M68EC020, 16000000)   /* 16 MHz */
400   MDRV_CPU_PROGRAM_MAP(groundfx_readmem,groundfx_writemem)
386   MDRV_CPU_PROGRAM_MAP(groundfx_map,0)
401387   MDRV_CPU_VBLANK_INT("screen", groundfx_interrupt)
402388
403389   TAITO_F3_SOUND_SYSTEM_CPU(16000000)
r4679r4680
486472   int data;
487473
488474   /* Speedup handlers */
489   memory_install_read32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x20b574, 0x20b577, 0, 0, irq_speedup_r_groundfx);
475   memory_install_read32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x20b574, 0x20b577, 0, 0, irq_speedup_r_groundfx);
490476
491477   /* make piv tile GFX format suitable for gfxdecode */
492478   offset = size/2;
src/mame/drivers/fastlane.c
r4679r4680
8080
8181
8282
83static ADDRESS_MAP_START( fastlane_readmem, ADDRESS_SPACE_PROGRAM, 8 )
84   AM_RANGE(0x0000, 0x005f) AM_READ(SMH_RAM)
83static ADDRESS_MAP_START( fastlane_map, ADDRESS_SPACE_PROGRAM, 8 )
84   AM_RANGE(0x0000, 0x005f) AM_RAM_WRITE(k007121_registers_w) AM_BASE(&fastlane_k007121_regs)   /* 007121 registers */
8585   AM_RANGE(0x0800, 0x0800) AM_READ_PORT("DSW3")
8686   AM_RANGE(0x0801, 0x0801) AM_READ_PORT("P2")
8787   AM_RANGE(0x0802, 0x0802) AM_READ_PORT("P1")
8888   AM_RANGE(0x0803, 0x0803) AM_READ_PORT("SYSTEM")
8989   AM_RANGE(0x0900, 0x0900) AM_READ_PORT("DSW1")
9090   AM_RANGE(0x0901, 0x0901) AM_READ_PORT("DSW2")
91   AM_RANGE(0x0d00, 0x0d0d) AM_DEVREAD("konami1", fastlane_k007232_r)/* 007232 registers (chip 1) */
92   AM_RANGE(0x0e00, 0x0e0d) AM_DEVREAD("konami2", fastlane_k007232_r)/* 007232 registers (chip 2) */
93   AM_RANGE(0x0f00, 0x0f1f) AM_READ(K051733_r)         /* 051733 (protection) */
94   AM_RANGE(0x1000, 0x1fff) AM_READ(SMH_RAM)         /* Palette RAM/Work RAM */
95   AM_RANGE(0x2000, 0x3fff) AM_READ(SMH_RAM)         /* Video RAM + Sprite RAM */
96   AM_RANGE(0x4000, 0x7fff) AM_READ(SMH_BANK1)         /* banked ROM */
97   AM_RANGE(0x8000, 0xffff) AM_READ(SMH_ROM)         /* ROM */
91   AM_RANGE(0x0b00, 0x0b00) AM_WRITE(watchdog_reset_w)                                 /* watchdog reset */
92   AM_RANGE(0x0c00, 0x0c00) AM_WRITE(fastlane_bankswitch_w)                           /* bankswitch control */
93   AM_RANGE(0x0d00, 0x0d0d) AM_DEVREADWRITE("konami1", fastlane_k007232_r, fastlane_k007232_w)   /* 007232 registers (chip 1) */
94   AM_RANGE(0x0e00, 0x0e0d) AM_DEVREADWRITE("konami2", fastlane_k007232_r, fastlane_k007232_w)   /* 007232 registers (chip 2) */
95   AM_RANGE(0x0f00, 0x0f1f) AM_READWRITE(K051733_r, K051733_w)                           /* 051733 (protection) */
96   AM_RANGE(0x1000, 0x17ff) AM_RAM AM_BASE(&paletteram)                              /* Palette RAM */
97   AM_RANGE(0x1800, 0x1fff) AM_RAM                                                /* Work RAM */
98   AM_RANGE(0x2000, 0x27ff) AM_RAM_WRITE(fastlane_vram1_w) AM_BASE(&fastlane_videoram1)       /* Video RAM (chip 1) */
99   AM_RANGE(0x2800, 0x2fff) AM_RAM_WRITE(fastlane_vram2_w) AM_BASE(&fastlane_videoram2)       /* Video RAM (chip 2) */
100   AM_RANGE(0x3000, 0x3fff) AM_RAM AM_BASE(&spriteram)                                 /* Sprite RAM */
101   AM_RANGE(0x4000, 0x7fff) AM_ROMBANK(1)                                          /* banked ROM */
102   AM_RANGE(0x8000, 0xffff) AM_ROM                                                /* ROM */
98103ADDRESS_MAP_END
99104
100static ADDRESS_MAP_START( fastlane_writemem, ADDRESS_SPACE_PROGRAM, 8 )
101   AM_RANGE(0x0000, 0x005f) AM_WRITE(k007121_registers_w) AM_BASE(&fastlane_k007121_regs)/* 007121 registers */
102   AM_RANGE(0x0b00, 0x0b00) AM_WRITE(watchdog_reset_w)      /* watchdog reset */
103   AM_RANGE(0x0c00, 0x0c00) AM_WRITE(fastlane_bankswitch_w)   /* bankswitch control */
104   AM_RANGE(0x0d00, 0x0d0d) AM_DEVWRITE("konami1", fastlane_k007232_w)   /* 007232 registers (chip 1) */
105   AM_RANGE(0x0e00, 0x0e0d) AM_DEVWRITE("konami2", fastlane_k007232_w)   /* 007232 registers (chip 2) */
106   AM_RANGE(0x0f00, 0x0f1f) AM_WRITE(K051733_w)            /* 051733 (protection) */
107   AM_RANGE(0x1000, 0x17ff) AM_WRITE(SMH_RAM) AM_BASE(&paletteram)/* palette RAM */
108   AM_RANGE(0x1800, 0x1fff) AM_WRITE(SMH_RAM)            /* Work RAM */
109   AM_RANGE(0x2000, 0x27ff) AM_WRITE(fastlane_vram1_w) AM_BASE(&fastlane_videoram1)
110   AM_RANGE(0x2800, 0x2fff) AM_WRITE(fastlane_vram2_w) AM_BASE(&fastlane_videoram2)
111   AM_RANGE(0x3000, 0x3fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram)   /* Sprite RAM */
112   AM_RANGE(0x4000, 0xffff) AM_WRITE(SMH_ROM)            /* ROM/banked ROM */
113ADDRESS_MAP_END
114
115105/***************************************************************************
116106
117107    Input Ports
r4679r4680
217207
218208   /* basic machine hardware */
219209   MDRV_CPU_ADD("maincpu", HD6309, 3000000*4)      /* 24MHz/8? */
220   MDRV_CPU_PROGRAM_MAP(fastlane_readmem,fastlane_writemem)
210   MDRV_CPU_PROGRAM_MAP(fastlane_map,0)
221211   MDRV_CPU_VBLANK_INT_HACK(fastlane_interrupt,16)   /* 1 IRQ + ??? NMI (generated by the 007121) */
222212
223213   /* video hardware */
src/mame/drivers/gamecstl.c
r4679r4680
379379{
380380   UINT8 data = at_pages[offset % 0x10];
381381
382   switch(offset % 8) {
382   switch(offset % 8)
383   {
383384   case 1:
384385      data = dma_offset[(offset / 8) & 1][2];
385386      break;
r4679r4680
401402{
402403   at_pages[offset % 0x10] = data;
403404
404   switch(offset % 8) {
405   switch(offset % 8)
406   {
405407   case 1:
406408      dma_offset[(offset / 8) & 1][2] = data;
407409      break;
r4679r4680
420422
421423static DMA8237_MEM_READ( pc_dma_read_byte )
422424{
423   const address_space *space = cpu_get_address_space(device->machine->cpu[0], ADDRESS_SPACE_PROGRAM);
425   const address_space *space = cputag_get_address_space(device->machine, "maincpu", ADDRESS_SPACE_PROGRAM);
424426   offs_t page_offset = (((offs_t) dma_offset[0][channel]) << 16)
425427      & 0xFF0000;
426428
r4679r4680
430432
431433static DMA8237_MEM_WRITE( pc_dma_write_byte )
432434{
433   const address_space *space = cpu_get_address_space(device->machine->cpu[0], ADDRESS_SPACE_PROGRAM);
435   const address_space *space = cputag_get_address_space(device->machine, "maincpu", ADDRESS_SPACE_PROGRAM);
434436   offs_t page_offset = (((offs_t) dma_offset[0][channel]) << 16)
435437      & 0xFF0000;
436438
r4679r4680
591593{
592594   memory_set_bankptr(machine, 1, memory_region(machine, "user1") + 0x30000);
593595
594   cpu_set_irq_callback(machine->cpu[0], irq_callback);
596   cpu_set_irq_callback(cputag_get_cpu(machine, "maincpu"), irq_callback);
595597}
596598
597599
r4679r4680
601603 *
602604 *************************************************************/
603605
604static PIC8259_SET_INT_LINE( gamecstl_pic8259_1_set_int_line ) {
605   cpu_set_input_line(device->machine->cpu[0], 0, interrupt ? HOLD_LINE : CLEAR_LINE);
606static PIC8259_SET_INT_LINE( gamecstl_pic8259_1_set_int_line )
607{
608   cputag_set_input_line(device->machine, "maincpu", 0, interrupt ? HOLD_LINE : CLEAR_LINE);
606609}
607610
608611
609static PIC8259_SET_INT_LINE( gamecstl_pic8259_2_set_int_line ) {
612static PIC8259_SET_INT_LINE( gamecstl_pic8259_2_set_int_line )
613{
610614   pic8259_set_irq_line( gamecstl_devices.pic8259_1, 2, interrupt);
611615}
612616
r4679r4680
694698
695699static void set_gate_a20(running_machine *machine, int a20)
696700{
697   cpu_set_input_line(machine->cpu[0], INPUT_LINE_A20, a20);
701   cputag_set_input_line(machine, "maincpu", INPUT_LINE_A20, a20);
698702}
699703
700704static void keyboard_interrupt(running_machine *machine, int state)
r4679r4680
707711   pic8259_set_irq_line( gamecstl_devices.pic8259_2, 6, state);
708712}
709713
710static int gamecstl_get_out2(running_machine *machine) {
714static int gamecstl_get_out2(running_machine *machine)
715{
711716   return pit8253_get_output( gamecstl_devices.pit8254, 2 );
712717}
713718
r4679r4680
716721   KBDC8042_AT386, set_gate_a20, keyboard_interrupt, gamecstl_get_out2
717722};
718723
719static void gamecstl_set_keyb_int(running_machine *machine, int state) {
724static void gamecstl_set_keyb_int(running_machine *machine, int state)
725{
720726   pic8259_set_irq_line(gamecstl_devices.pic8259_1, 1, state);
721727}
722728
723729static DRIVER_INIT( gamecstl )
724730{
725   bios_ram = auto_malloc(0x10000);
731   bios_ram = auto_alloc_array(machine, UINT32, 0x10000/4);
726732
727733   init_pc_common(machine, PCCOMMON_KEYBOARD_AT, gamecstl_set_keyb_int);
728734   mc146818_init(machine, MC146818_STANDARD);
r4679r4680
761767
762768GAME(2002, gamecstl, 0,   gamecstl, gamecstl, gamecstl,   ROT0,   "Cristaltec",  "GameCristal", GAME_NOT_WORKING | GAME_NO_SOUND)
763769GAME(2002, gamecst2, gamecstl, gamecstl, gamecstl, gamecstl, ROT0, "Cristaltec", "GameCristal (version 2.613)", GAME_NOT_WORKING | GAME_NO_SOUND)
764
src/mame/drivers/kangaroo.c
r4679r4680
187187static MACHINE_START( kangaroo_mcu )
188188{
189189   MACHINE_START_CALL(kangaroo);
190   memory_install_readwrite8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xef00, 0xefff, 0, 0, mcu_sim_r, mcu_sim_w);
190   memory_install_readwrite8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xef00, 0xefff, 0, 0, mcu_sim_r, mcu_sim_w);
191191   kangaroo_clock = 0;
192192}
193193
r4679r4680
205205   /* the copy protection. */
206206   /* Anyway, what I do here is just immediately generate the NMI, so the game */
207207   /* properly starts. */
208   cpu_set_input_line(machine->cpu[0], INPUT_LINE_NMI, PULSE_LINE);
208   cputag_set_input_line(machine, "maincpu", INPUT_LINE_NMI, PULSE_LINE);
209209}
210210
211211
src/mame/drivers/cabal.c
r4679r4680
118118
119119static WRITE16_HANDLER( cabalbl_sound_irq_trigger_word_w )
120120{
121   cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_NMI, PULSE_LINE );
121   cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE );
122122}
123123
124124
r4679r4680
464464
465465static void irqhandler(const device_config *device, int irq)
466466{
467   cpu_set_input_line(device->machine->cpu[1],0,irq ? ASSERT_LINE : CLEAR_LINE);
467   cputag_set_input_line(device->machine, "audiocpu", 0, irq ? ASSERT_LINE : CLEAR_LINE);
468468}
469469
470470static const ym2151_interface cabalbl_ym2151_interface =
r4679r4680
786786ROM_END
787787
788788
789// alternate bootleg
790// this is much closer to the original, the only real difference is the soundcpu has been pre-decrypted,
791// with the encrypted/decrypted data split across the rom
792// based on stickers present on the board it appears to have been manufactured by 'TAB-Austria' and is marked 'CA02'
789793
794ROM_START( cabalbl2 )
795   ROM_REGION( 0x50000, "maincpu", 0 )   /* 64k for cpu code */
796   ROM_LOAD16_BYTE( "c9.bin",    0x00000, 0x10000, CRC(00abbe0c) SHA1(bacf17444abfb4f56248ff56e37b0aa2b1a3800d) )
797   ROM_LOAD16_BYTE( "c7.bin",    0x00001, 0x10000, CRC(44736281) SHA1(1d6da95ef96d9c02aea70791e1cb87b70097d5ed) )
798   ROM_LOAD16_BYTE( "c8.bin",    0x20000, 0x10000, CRC(d763a47c) SHA1(146d8082a404b6eddaf2dc9ba41a997949c17f8a) )
799   ROM_LOAD16_BYTE( "c6.bin",    0x20001, 0x10000, CRC(96d5e8af) SHA1(ed7d854f08e87db5ae6cf526eafa029dfd2bfb9f) )
800
801   ROM_REGION( 0x10000, "audiocpu", 0 )   /* 64k for sound cpu code */
802   ROM_LOAD( "c4.bin",    0x2000, 0x2000, CRC(82f9f296) SHA1(2769ffdc28f003684e77d4806be07b87d50be31c) )
803   ROM_CONTINUE(0x0000,0x2000)
804   ROM_IGNORE(0x4000)
805   ROM_LOAD( "c3.bin",    0x8000, 0x8000,  CRC(d9defcbf) SHA1(f26b10b1dbe5aa6446f70fd18e5f1379455578ec) )
806
807   ROM_REGION( 0x4000,  "gfx1", ROMREGION_DISPOSE )
808   ROM_LOAD( "c5.bin",           0x00000, 0x04000, CRC(183e4834) SHA1(05ab0c388be8701930a9de437978206cda6fed68) ) /* characters */
809   ROM_CONTINUE(0x0000,0x4000)
810
811   ROM_REGION( 0x80000, "gfx2", ROMREGION_DISPOSE )
812   ROM_LOAD16_BYTE( "c14.bin",   0x00000, 0x10000, CRC(1023319b) SHA1(38fcc8159776b82779b3163329b07c61be939fae) )
813   ROM_LOAD16_BYTE( "c10.bin",   0x00001, 0x10000, CRC(3b6d2b09) SHA1(4cdcd22836dce4ee6348c4e6df7c6360d12ef912) )
814   ROM_LOAD16_BYTE( "c15.bin",   0x20000, 0x10000, CRC(420b0801) SHA1(175be6e3ca3cb98672e4cdbc9b5f5b007bc531c9) )
815   ROM_LOAD16_BYTE( "c11.bin",   0x20001, 0x10000, CRC(77bc7a60) SHA1(4d148241835f6a6b63f66494636c09a1fc1d3c06) )
816   ROM_LOAD16_BYTE( "c16.bin",   0x40000, 0x10000, CRC(543fcb37) SHA1(78c40f6a78a8b9ca9f73fc67fc87f78b15e7abbe) )
817   ROM_LOAD16_BYTE( "c12.bin",   0x40001, 0x10000, CRC(0bc50075) SHA1(565eb59b41f71fb69f62397f9747f5ae18b83009) )
818   ROM_LOAD16_BYTE( "c17.bin",   0x60000, 0x10000, CRC(d28d921e) SHA1(e133de5129a33ca9ff449948a959621bbfc58c11) )
819   ROM_LOAD16_BYTE( "c13.bin",   0x60001, 0x10000, CRC(67e4fe47) SHA1(15620fc5e985a249677da333b77331e40d2b24ab) )
820
821   ROM_REGION( 0x80000, "gfx3", ROMREGION_DISPOSE )
822   ROM_LOAD16_BYTE( "c18.bin",   0x00000, 0x10000, CRC(34d3cac8) SHA1(a6a2304fb576267db2c72cfbf0a3f66740ebe60e) )
823   ROM_LOAD16_BYTE( "c22.bin",   0x00001, 0x10000, CRC(4e49c28e) SHA1(ea74443a9423b14611a1f97e44692badfedd0ead) )
824   ROM_LOAD16_BYTE( "c19.bin",   0x20000, 0x10000, CRC(7065e840) SHA1(baa8cd28be60c678d782ecfabde6cd5e36480415) )
825   ROM_LOAD16_BYTE( "c23.bin",   0x20001, 0x10000, CRC(6a0e739d) SHA1(e3f4f5b4587f573426ec00417f33e94a257c77e6) )
826   ROM_LOAD16_BYTE( "c20.bin",   0x40000, 0x10000, CRC(0e1ec30e) SHA1(4b1f092fc1e92da0f92e55d1548db7961a13f717) )
827   ROM_LOAD16_BYTE( "c24.bin",   0x40001, 0x10000, CRC(581a50c1) SHA1(5afd65c15a0a63a54727e6d882011f0718a9fefc) )
828   ROM_LOAD16_BYTE( "c21.bin",   0x60000, 0x10000, CRC(55c44764) SHA1(7fad1f2084664b5b4d1384c8081371b0c79c4f5e) )
829   ROM_LOAD16_BYTE( "c25.bin",   0x60001, 0x10000, CRC(702735c9) SHA1(e4ac799dc85ff5b7c8e578611605989c78f9e8b3) )
830
831   ROM_REGION( 0x20000, "adpcm", 0 )   /* Samples */
832   ROM_LOAD( "c2.bin",           0x00000, 0x10000, CRC(850406b4) SHA1(23ac1650c6d6f35607a5264b3aa89868401a645a) )
833   ROM_LOAD( "c1.bin",           0x10000, 0x10000, CRC(8b3e0789) SHA1(b1450db1b1bada237c90930623e4def321099f13) )
834ROM_END
835
836
837
838void seibu_sound_bootleg(running_machine *machine,const char *cpu,int length)
839{
840   const address_space *space = cputag_get_address_space(machine, cpu, ADDRESS_SPACE_PROGRAM);
841   UINT8 *decrypt = auto_alloc_array(machine, UINT8, length);
842   UINT8 *rom = memory_region(machine, cpu);
843
844   memory_set_decrypted_region(space, 0x0000, (length < 0x10000) ? (length - 1) : 0x1fff, decrypt);
845
846   memcpy(decrypt, rom+length, length);
847
848   if (length > 0x10000)
849      memory_configure_bank_decrypted(machine, 1, 0, (length - 0x10000) / 0x8000, decrypt + 0x10000, 0x8000);
850}
851
852
853
790854static DRIVER_INIT( cabal )
791855{
792856   seibu_sound_decrypt(machine,"audiocpu",0x2000);
793857   seibu_adpcm_decrypt(machine,"adpcm");
794858}
795859
860static DRIVER_INIT( cabalbl2 )
861{
862   seibu_sound_bootleg(machine,"audiocpu",0x2000);
863   seibu_adpcm_decrypt(machine,"adpcm");
864}
796865
797GAME( 1988, cabal,   0,     cabal,   cabalj,   cabal,  ROT0, "Tad Corporation", "Cabal (World, Joystick version)", 0 )
798GAME( 1989, cabala,  cabal, cabal,   cabalj,   cabal,  ROT0, "Tad Corporation (Alpha Trading license)", "Cabal (Alpha Trading)", 0 ) // korea?
799GAME( 1988, cabalbl, cabal, cabalbl, cabalbl,  0,      ROT0, "[Tad Corporation] (Red Corporation bootleg)", "Cabal (bootleg of Joystick version)", GAME_IMPERFECT_SOUND )
800866
867GAME( 1988, cabal,   0,     cabal,   cabalj,   cabal,   ROT0, "Tad Corporation", "Cabal (World, Joystick version)", 0 )
868GAME( 1989, cabala,  cabal, cabal,   cabalj,   cabal,   ROT0, "Tad Corporation (Alpha Trading license)", "Cabal (Alpha Trading)", 0 ) // korea?
869GAME( 1988, cabalbl, cabal, cabalbl, cabalbl,  0,       ROT0, "[Tad Corporation] (Red Corporation bootleg)", "Cabal (bootleg of Joystick version, set 1, alternate sound hardware)", GAME_IMPERFECT_SOUND )
870GAME( 1988, cabalbl2,cabal, cabal,   cabalj,   cabalbl2,ROT0, "bootleg", "Cabal (bootleg of Joystick version, set 2)", 0 )
871
801872GAME( 1988, cabalus, cabal, cabal,   cabalt,   cabal,  ROT0, "Tad (Fabtek license)", "Cabal (US set 1, Trackball version)", 0 )
802873GAME( 1988, cabalus2,cabal, cabal,   cabalt,   cabal,  ROT0, "Tad (Fabtek license)", "Cabal (US set 2, Trackball version)", 0 )
src/mame/drivers/cidelsa.c
r4679r4680
1010
1111static CDP1802_MODE_READ( cidelsa_mode_r )
1212{
13   cidelsa_state *state = device->machine->driver_data;
13   cidelsa_state *state = (cidelsa_state *)device->machine->driver_data;
1414
1515   return state->cdp1802_mode;
1616}
r4679r4680
2929
3030static CDP1802_Q_WRITE( cidelsa_q_w )
3131{
32   cidelsa_state *state = device->machine->driver_data;
32   cidelsa_state *state = (cidelsa_state *)device->machine->driver_data;
3333
3434   state->cdp1802_q = level;
3535}
r4679r4680
6666
6767static WRITE8_DEVICE_HANDLER( draco_sound_g_w )
6868{
69   cidelsa_state *state = device->machine->driver_data;
69   cidelsa_state *state = (cidelsa_state *)device->machine->driver_data;
7070
7171   /*
7272
r4679r4680
9797
9898static READ8_HANDLER( draco_sound_in_r )
9999{
100   cidelsa_state *state = space->machine->driver_data;
100   cidelsa_state *state = (cidelsa_state *)space->machine->driver_data;
101101
102102   return ~(state->draco_sound) & 0x07;
103103}
104104
105105static READ8_HANDLER( draco_sound_ay8910_r )
106106{
107   cidelsa_state *state = space->machine->driver_data;
107   cidelsa_state *state = (cidelsa_state *)space->machine->driver_data;
108108
109109   return state->draco_ay_latch;
110110}
111111
112112static WRITE8_HANDLER( draco_sound_ay8910_w )
113113{
114   cidelsa_state *state = space->machine->driver_data;
114   cidelsa_state *state = (cidelsa_state *)space->machine->driver_data;
115115
116116   state->draco_ay_latch = data;
117117}
r4679r4680
171171        7   SONIDO C -> COP402 IN2
172172    */
173173
174   cidelsa_state *state = space->machine->driver_data;
174   cidelsa_state *state = (cidelsa_state *)space->machine->driver_data;
175175
176176    state->draco_sound = (data & 0xe0) >> 5;
177177}
r4679r4680
308308
309309static CUSTOM_INPUT( cdp1869_pcb_r )
310310{
311   cidelsa_state *state = field->port->machine->driver_data;
311   cidelsa_state *state = (cidelsa_state *)field->port->machine->driver_data;
312312
313313   return state->cdp1869_pcb;
314314}
315315
316316static CUSTOM_INPUT( cdp1869_predisplay_r )
317317{
318   cidelsa_state *state = field->port->machine->driver_data;
318   cidelsa_state *state = (cidelsa_state *)field->port->machine->driver_data;
319319
320320   return state->cdp1869_prd;
321321}
r4679r4680
466466
467467static TIMER_CALLBACK( set_cpu_mode )
468468{
469   cidelsa_state *state = machine->driver_data;
469   cidelsa_state *state = (cidelsa_state *)machine->driver_data;
470470
471471   state->cdp1802_mode = CDP1802_MODE_RUN;
472472}
473473
474474static MACHINE_START( cidelsa )
475475{
476   cidelsa_state *state = machine->driver_data;
476   cidelsa_state *state = (cidelsa_state *)machine->driver_data;
477477
478478   /* reset the CPU */
479479   state->cdp1802_mode = CDP1802_MODE_RESET;
r4679r4680
485485
486486static MACHINE_START( draco )
487487{
488   cidelsa_state *state = machine->driver_data;
488   cidelsa_state *state = (cidelsa_state *)machine->driver_data;
489489
490490   MACHINE_START_CALL( cidelsa );
491491
src/mame/drivers/tickee.c
r4679r4680
5858static TIMER_CALLBACK( trigger_gun_interrupt )
5959{
6060   /* fire the IRQ at the correct moment */
61   cpu_set_input_line(machine->cpu[0], param, ASSERT_LINE);
61   cputag_set_input_line(machine, "maincpu", param, ASSERT_LINE);
6262}
6363
6464
6565static TIMER_CALLBACK( clear_gun_interrupt )
6666{
6767   /* clear the IRQ on the next scanline? */
68   cpu_set_input_line(machine->cpu[0], param, CLEAR_LINE);
68   cputag_set_input_line(machine, "maincpu", param, CLEAR_LINE);
6969}
7070
7171
src/mame/drivers/hotblock.c
r4679r4680
117117
118118static VIDEO_START(hotblock)
119119{
120   hotblock_pal=auto_malloc(0x10000);
120   hotblock_pal=auto_alloc_array(machine, UINT8, 0x10000);
121121}
122122
123123static VIDEO_UPDATE(hotblock)
src/mame/drivers/srmp5.c
r4679r4680
577577static DRIVER_INIT(srmp5)
578578{
579579   st0016_game=9;
580   tileram = (UINT16 *)auto_malloc(0x100000);
581   sprram  = (UINT16 *)auto_malloc(0x080000);
582   palram  = (UINT16 *)auto_malloc(0x040000);
580   tileram = auto_alloc_array(machine, UINT16, 0x100000/2);
581   sprram  = auto_alloc_array(machine, UINT16, 0x080000/2);
582   palram  = auto_alloc_array(machine, UINT16, 0x040000/2);
583583#ifdef DEBUG_CHAR
584584   memset(tileduty, 1, 0x2000);
585585#endif
src/mame/drivers/suprloco.c
r4679r4680
3232
3333static WRITE8_HANDLER( suprloco_soundport_w )
3434{
35   soundlatch_w(space,0,data);
36   cpu_set_input_line(space->machine->cpu[1],INPUT_LINE_NMI,PULSE_LINE);
35   soundlatch_w(space, 0, data);
36   cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
3737   /* spin for a while to let the Z80 read the command (fixes hanging sound in Regulus) */
3838   cpu_spinuntil_time(space->cpu, ATTOTIME_IN_USEC(50));
3939}
src/mame/drivers/m92.c
r4679r4680
254254   if (scanline == m92_raster_irq_position)
255255   {
256256      video_screen_update_partial(machine->primary_screen, scanline);
257      cpu_set_input_line_and_vector(machine->cpu[0], 0, HOLD_LINE, M92_IRQ_2);
257      cputag_set_input_line_and_vector(machine, "maincpu", 0, HOLD_LINE, M92_IRQ_2);
258258   }
259259
260260   /* VBLANK interrupt */
261261   else if (scanline == video_screen_get_visible_area(machine->primary_screen)->max_y + 1)
262262   {
263263      video_screen_update_partial(machine->primary_screen, scanline);
264      cpu_set_input_line_and_vector(machine->cpu[0], 0, HOLD_LINE, M92_IRQ_0);
264      cputag_set_input_line_and_vector(machine, "maincpu", 0, HOLD_LINE, M92_IRQ_0);
265265   }
266266
267267   /* adjust for next scanline */
r4679r4680
329329   }
330330
331331   if (irqvector & 0x2)      /* YM2151 has precedence */
332      cpu_set_input_line_vector(machine->cpu[1], 0, 0x18);
332      cpu_set_input_line_vector(cputag_get_cpu(machine, "soundcpu"), 0, 0x18);
333333   else if (irqvector & 0x1)   /* V30 */
334      cpu_set_input_line_vector(machine->cpu[1], 0, 0x19);
334      cpu_set_input_line_vector(cputag_get_cpu(machine, "soundcpu"), 0, 0x19);
335335
336336   if (irqvector == 0)   /* no IRQs pending */
337      cpu_set_input_line(machine->cpu[1], 0, CLEAR_LINE);
337      cputag_set_input_line(machine, "soundcpu", 0, CLEAR_LINE);
338338   else   /* IRQ pending */
339      cpu_set_input_line(machine->cpu[1], 0, ASSERT_LINE);
339      cputag_set_input_line(machine, "soundcpu", 0, ASSERT_LINE);
340340}
341341
342342static WRITE16_HANDLER( m92_soundlatch_w )
r4679r4680
364364static WRITE16_HANDLER( m92_sound_status_w )
365365{
366366   COMBINE_DATA(&sound_status);
367   cpu_set_input_line_and_vector(space->machine->cpu[0], 0, HOLD_LINE, M92_IRQ_3);
367   cputag_set_input_line_and_vector(space->machine, "maincpu", 0, HOLD_LINE, M92_IRQ_3);
368368}
369369
370370/*****************************************************************************/
r4679r4680
910910
911911void m92_sprite_interrupt(running_machine *machine)
912912{
913   cpu_set_input_line_and_vector(machine->cpu[0], 0, HOLD_LINE, M92_IRQ_1);
913   cputag_set_input_line_and_vector(machine, "maincpu", 0, HOLD_LINE, M92_IRQ_1);
914914}
915915
916916static MACHINE_DRIVER_START( m92 )
r4679r4680
19681968
19691969   if (hasbanks)
19701970   {
1971      memcpy(RAM+0xffff0,RAM+0x7fff0,0x10); /* Start vector */
1971      memcpy(RAM + 0xffff0, RAM + 0x7fff0, 0x10); /* Start vector */
19721972      bankaddress = 0xa0000; /* Initial bank */
19731973      set_m92_bank(machine);
19741974
19751975      /* Mirror used by In The Hunt for protection */
1976      memcpy(RAM+0xc0000,RAM+0x00000,0x10000);
1977      memory_set_bankptr(machine, 2,&RAM[0xc0000]);
1976      memcpy(RAM + 0xc0000, RAM + 0x00000, 0x10000);
1977      memory_set_bankptr(machine, 2, &RAM[0xc0000]);
19781978   }
19791979
19801980   RAM = memory_region(machine, "soundcpu");
1981   memcpy(RAM+0xffff0, RAM+0x1fff0, 0x10); /* Sound cpu Start vector */
1981   memcpy(RAM + 0xffff0, RAM + 0x1fff0, 0x10); /* Sound cpu Start vector */
19821982
1983   m92_game_kludge=0;
1984   m92_irq_vectorbase=0x80;
1985   m92_sprite_buffer_busy=1;
1983   m92_game_kludge = 0;
1984   m92_irq_vectorbase = 0x80;
1985   m92_sprite_buffer_busy = 1;
19861986
19871987   setvector_callback(machine, NULL, VECTOR_INIT);
19881988}
r4679r4680
20152015static DRIVER_INIT( rtypeleo )
20162016{
20172017   init_m92(machine, 1);
2018   m92_irq_vectorbase=0x20;
2018   m92_irq_vectorbase = 0x20;
20192019}
20202020
20212021static DRIVER_INIT( rtypelej )
20222022{
20232023   init_m92(machine, 1);
2024   m92_irq_vectorbase=0x20;
2024   m92_irq_vectorbase = 0x20;
20252025}
20262026
20272027static DRIVER_INIT( majtitl2 )
r4679r4680
20292029   init_m92(machine, 1);
20302030
20312031   /* This game has an eprom on the game board */
2032   memory_install_readwrite16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xf0000, 0xf3fff, 0, 0, m92_eeprom_r, m92_eeprom_w);
2032   memory_install_readwrite16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xf0000, 0xf3fff, 0, 0, m92_eeprom_r, m92_eeprom_w);
20332033
2034   m92_game_kludge=2;
2034   m92_game_kludge = 2;
20352035}
20362036
20372037static DRIVER_INIT( kaiteids )
r4679r4680
20482048static DRIVER_INIT( lethalth )
20492049{
20502050   init_m92(machine, 0);
2051   m92_irq_vectorbase=0x20;
2051   m92_irq_vectorbase = 0x20;
20522052
20532053   /* NOP out the bankswitcher */
2054   memory_install_write16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x20, 0x21, 0, 0, SMH_NOP);
2054   memory_install_write16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_IO), 0x20, 0x21, 0, 0, (write16_space_func)SMH_NOP);
20552055}
20562056
20572057static DRIVER_INIT( nbbatman )
r4679r4680
20602060
20612061   init_m92(machine, 1);
20622062
2063   memcpy(RAM+0x80000,RAM+0x100000,0x20000);
2063   memcpy(RAM + 0x80000, RAM + 0x100000, 0x20000);
20642064}
20652065
20662066static DRIVER_INIT( ssoldier )
20672067{
20682068   init_m92(machine, 1);
2069   m92_irq_vectorbase=0x20;
2069   m92_irq_vectorbase = 0x20;
20702070   /* main CPU expects an answer even before writing the first command */
20712071   sound_status = 0x80;
20722072}
r4679r4680
20742074static DRIVER_INIT( psoldier )
20752075{
20762076   init_m92(machine, 1);
2077   m92_irq_vectorbase=0x20;
2077   m92_irq_vectorbase = 0x20;
20782078   /* main CPU expects an answer even before writing the first command */
20792079   sound_status = 0x80;
20802080}
r4679r4680
20882088{
20892089   UINT8 *RAM = memory_region(machine, "maincpu");
20902090   init_m92(machine, 1);
2091   memcpy(RAM+0x80000,RAM+0x100000,0x20000);
2091   memcpy(RAM + 0x80000, RAM + 0x100000, 0x20000);
20922092}
20932093
20942094/***************************************************************************/
src/mame/drivers/vendetta.c
r4679r4680
209209{
210210   if ( select & 1 )
211211   {
212      memory_install_readwrite8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), video_banking_base + 0x2000, video_banking_base + 0x2fff, 0, 0, SMH_BANK4, paletteram_xBBBBBGGGGGRRRRR_be_w );
213      memory_install_readwrite8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), video_banking_base + 0x0000, video_banking_base + 0x0fff, 0, 0, K053247_r, K053247_w );
212      memory_install_readwrite8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), video_banking_base + 0x2000, video_banking_base + 0x2fff, 0, 0, (read8_space_func)SMH_BANK(4), paletteram_xBBBBBGGGGGRRRRR_be_w );
213      memory_install_readwrite8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), video_banking_base + 0x0000, video_banking_base + 0x0fff, 0, 0, K053247_r, K053247_w );
214214      memory_set_bankptr(machine, 4, paletteram);
215215   }
216216   else
217217   {
218      memory_install_readwrite8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), video_banking_base + 0x2000, video_banking_base + 0x2fff, 0, 0, vendetta_K052109_r, vendetta_K052109_w );
219      memory_install_readwrite8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), video_banking_base + 0x0000, video_banking_base + 0x0fff, 0, 0, K052109_r, K052109_w );
218      memory_install_readwrite8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), video_banking_base + 0x2000, video_banking_base + 0x2fff, 0, 0, vendetta_K052109_r, vendetta_K052109_w );
219      memory_install_readwrite8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), video_banking_base + 0x0000, video_banking_base + 0x0fff, 0, 0, K052109_r, K052109_w );
220220   }
221221}
222222
r4679r4680
239239
240240static TIMER_CALLBACK( z80_nmi_callback )
241241{
242   cpu_set_input_line(machine->cpu[1], INPUT_LINE_NMI, ASSERT_LINE );
242   cputag_set_input_line(machine, "audiocpu", INPUT_LINE_NMI, ASSERT_LINE );
243243}
244244
245245static WRITE8_HANDLER( z80_arm_nmi_w )
246246{
247   cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_NMI, CLEAR_LINE );
247   cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, CLEAR_LINE );
248248
249249   timer_set( space->machine, ATTOTIME_IN_USEC( 25 ), NULL, 0, z80_nmi_callback );
250250}
251251
252252static WRITE8_HANDLER( z80_irq_w )
253253{
254   cpu_set_input_line_and_vector(space->machine->cpu[1], 0, HOLD_LINE, 0xff );
254   cputag_set_input_line_and_vector(space->machine, "audiocpu", 0, HOLD_LINE, 0xff );
255255}
256256
257257static READ8_HANDLER( vendetta_sound_interrupt_r )
258258{
259   cpu_set_input_line_and_vector(space->machine->cpu[1], 0, HOLD_LINE, 0xff );
259   cputag_set_input_line_and_vector(space->machine, "audiocpu", 0, HOLD_LINE, 0xff );
260260   return 0x00;
261261}
262262
r4679r4680
701701
702702static MACHINE_RESET( vendetta )
703703{
704   konami_configure_set_lines(machine->cpu[0], vendetta_banking);
704   konami_configure_set_lines(cputag_get_cpu(machine, "maincpu"), vendetta_banking);
705705
706706   paletteram = &memory_region(machine, "maincpu")[0x48000];
707707   irq_enabled = 0;
src/mame/drivers/fcombat.c
r4679r4680
6161static INPUT_CHANGED( coin_inserted )
6262{
6363   /* coin insertion causes an NMI */
64   cpu_set_input_line(field->port->machine->cpu[0], INPUT_LINE_NMI, newval ? CLEAR_LINE : ASSERT_LINE);
64   cputag_set_input_line(field->port->machine, "maincpu", INPUT_LINE_NMI, newval ? CLEAR_LINE : ASSERT_LINE);
6565}
6666
6767
r4679r4680
322322   UINT8 *src, *dst, *temp;
323323
324324   /* allocate some temporary space */
325   temp = malloc_or_die(0x10000);
325   temp = alloc_array_or_die(UINT8, 0x10000);
326326
327327   /* make a temporary copy of the character data */
328328   src = temp;
src/mame/drivers/destroyr.c
r4679r4680
3939
4040   if (destroyr_potmask[dial])
4141   {
42      cpu_set_input_line(machine->cpu[0], INPUT_LINE_NMI, PULSE_LINE);
42      cputag_set_input_line(machine, "maincpu", INPUT_LINE_NMI, PULSE_LINE);
4343   }
4444}
4545
r4679r4680
8888
8989static WRITE8_HANDLER( destroyr_interrupt_ack_w )
9090{
91   cpu_set_input_line(space->machine->cpu[0], 0, CLEAR_LINE);
91   cputag_set_input_line(space->machine, "maincpu", 0, CLEAR_LINE);
9292}
9393
9494
src/mame/drivers/segas16b.c
r4679r4680
950950
951951static const segaic16_memory_map_entry rom_171_5358_info_small[] =
952952{
953   { 0x3d/2, 0x00000, 0x04000, 0xffc000,      ~0, misc_io_r,             misc_io_w,             NULL,                  "I/O space" },
954   { 0x39/2, 0x00000, 0x01000, 0xfff000,      ~0, SMH_BANK10,          segaic16_paletteram_w, &paletteram16,         "color RAM" },
955   { 0x35/2, 0x00000, 0x10000, 0xfe0000,      ~0, SMH_BANK11,          segaic16_tileram_0_w,  &segaic16_tileram_0,   "tile RAM" },
956   { 0x35/2, 0x10000, 0x01000, 0xfef000,      ~0, SMH_BANK12,          segaic16_textram_0_w,  &segaic16_textram_0,   "text RAM" },
957   { 0x31/2, 0x00000, 0x00800, 0xfff800,      ~0, SMH_BANK13,          SMH_BANK13,          &segaic16_spriteram_0, "object RAM" },
958   { 0x2d/2, 0x00000, 0x04000, 0xffc000,      ~0, SMH_BANK14,          SMH_BANK14,          &workram,              "work RAM" },
959   { 0x29/2, 0x00000, 0x20000, 0xfe0000, 0x20000, SMH_BANK15,          SMH_UNMAP,           NULL,                  "ROM 2" },
960   { 0x25/2, 0x00000, 0x20000, 0xfe0000, 0x10000, SMH_BANK16,          SMH_UNMAP,           NULL,                  "ROM 1" },
961   { 0x21/2, 0x00000, 0x20000, 0xfe0000, 0x00000, SMH_BANK17,          SMH_UNMAP,           NULL,                  "ROM 0" },
953   { 0x3d/2, 0x00000, 0x04000, 0xffc000,      ~0, misc_io_r,                       misc_io_w,                        NULL,                  "I/O space" },
954   { 0x39/2, 0x00000, 0x01000, 0xfff000,      ~0, (read16_space_func)SMH_BANK(10), segaic16_paletteram_w,            &paletteram16,         "color RAM" },
955   { 0x35/2, 0x00000, 0x10000, 0xfe0000,      ~0, (read16_space_func)SMH_BANK(11), segaic16_tileram_0_w,             &segaic16_tileram_0,   "tile RAM" },
956   { 0x35/2, 0x10000, 0x01000, 0xfef000,      ~0, (read16_space_func)SMH_BANK(12), segaic16_textram_0_w,             &segaic16_textram_0,   "text RAM" },
957   { 0x31/2, 0x00000, 0x00800, 0xfff800,      ~0, (read16_space_func)SMH_BANK(13), (write16_space_func)SMH_BANK(13), &segaic16_spriteram_0, "object RAM" },
958   { 0x2d/2, 0x00000, 0x04000, 0xffc000,      ~0, (read16_space_func)SMH_BANK(14), (write16_space_func)SMH_BANK(14), &workram,              "work RAM" },
959   { 0x29/2, 0x00000, 0x20000, 0xfe0000, 0x20000, (read16_space_func)SMH_BANK(15), (write16_space_func)SMH_UNMAP,    NULL,                  "ROM 2" },
960   { 0x25/2, 0x00000, 0x20000, 0xfe0000, 0x10000, (read16_space_func)SMH_BANK(16), (write16_space_func)SMH_UNMAP,    NULL,                  "ROM 1" },
961   { 0x21/2, 0x00000, 0x20000, 0xfe0000, 0x00000, (read16_space_func)SMH_BANK(17), (write16_space_func)SMH_UNMAP,    NULL,                  "ROM 0" },
962962   { 0 }
963963};
964964
965965static const segaic16_memory_map_entry rom_171_5358_info[] =
966966{
967   { 0x3d/2, 0x00000, 0x04000, 0xffc000,      ~0, misc_io_r,             misc_io_w,             NULL,                  "I/O space" },
968   { 0x39/2, 0x00000, 0x01000, 0xfff000,      ~0, SMH_BANK10,          segaic16_paletteram_w, &paletteram16,         "color RAM" },
969   { 0x35/2, 0x00000, 0x10000, 0xfe0000,      ~0, SMH_BANK11,          segaic16_tileram_0_w,  &segaic16_tileram_0,   "tile RAM" },
970   { 0x35/2, 0x10000, 0x01000, 0xfef000,      ~0, SMH_BANK12,          segaic16_textram_0_w,  &segaic16_textram_0,   "text RAM" },
971   { 0x31/2, 0x00000, 0x00800, 0xfff800,      ~0, SMH_BANK13,          SMH_BANK13,          &segaic16_spriteram_0, "object RAM" },
972   { 0x2d/2, 0x00000, 0x04000, 0xffc000,      ~0, SMH_BANK14,          SMH_BANK14,          &workram,              "work RAM" },
973   { 0x29/2, 0x00000, 0x20000, 0xfe0000, 0x40000, SMH_BANK15,          SMH_UNMAP,           NULL,                  "ROM 2" },
974   { 0x25/2, 0x00000, 0x20000, 0xfe0000, 0x20000, SMH_BANK16,          SMH_UNMAP,           NULL,                  "ROM 1" },
975   { 0x21/2, 0x00000, 0x20000, 0xfe0000, 0x00000, SMH_BANK17,          SMH_UNMAP,           NULL,                  "ROM 0" },
967   { 0x3d/2, 0x00000, 0x04000, 0xffc000,      ~0, misc_io_r,                       misc_io_w,                        NULL,                  "I/O space" },
968   { 0x39/2, 0x00000, 0x01000, 0xfff000,      ~0, (read16_space_func)SMH_BANK(10), segaic16_paletteram_w,            &paletteram16,         "color RAM" },
969   { 0x35/2, 0x00000, 0x10000, 0xfe0000,      ~0, (read16_space_func)SMH_BANK(11), segaic16_tileram_0_w,             &segaic16_tileram_0,   "tile RAM" },
970   { 0x35/2, 0x10000, 0x01000, 0xfef000,      ~0, (read16_space_func)SMH_BANK(12), segaic16_textram_0_w,             &segaic16_textram_0,   "text RAM" },
971   { 0x31/2, 0x00000, 0x00800, 0xfff800,      ~0, (read16_space_func)SMH_BANK(13), (write16_space_func)SMH_BANK(13), &segaic16_spriteram_0, "object RAM" },
972   { 0x2d/2, 0x00000, 0x04000, 0xffc000,      ~0, (read16_space_func)SMH_BANK(14), (write16_space_func)SMH_BANK(14), &workram,              "work RAM" },
973   { 0x29/2, 0x00000, 0x20000, 0xfe0000, 0x40000, (read16_space_func)SMH_BANK(15), (write16_space_func)SMH_UNMAP,    NULL,                  "ROM 2" },
974   { 0x25/2, 0x00000, 0x20000, 0xfe0000, 0x20000, (read16_space_func)SMH_BANK(16), (write16_space_func)SMH_UNMAP,    NULL,                  "ROM 1" },
975   { 0x21/2, 0x00000, 0x20000, 0xfe0000, 0x00000, (read16_space_func)SMH_BANK(17), (write16_space_func)SMH_UNMAP,    NULL,                  "ROM 0" },
976976   { 0 }
977977};
978978
979979static const segaic16_memory_map_entry rom_171_5704_info[] =
980980{
981   { 0x3d/2, 0x00000, 0x04000, 0xffc000,      ~0, misc_io_r,             misc_io_w,             NULL,                  "I/O space" },
982   { 0x39/2, 0x00000, 0x01000, 0xfff000,      ~0, SMH_BANK10,          segaic16_paletteram_w, &paletteram16,         "color RAM" },
983   { 0x35/2, 0x00000, 0x10000, 0xfe0000,      ~0, SMH_BANK11,          segaic16_tileram_0_w,  &segaic16_tileram_0,   "tile RAM" },
984   { 0x35/2, 0x10000, 0x01000, 0xfef000,      ~0, SMH_BANK12,          segaic16_textram_0_w,  &segaic16_textram_0,   "text RAM" },
985   { 0x31/2, 0x00000, 0x00800, 0xfff800,      ~0, SMH_BANK13,          SMH_BANK13,          &segaic16_spriteram_0, "object RAM" },
986   { 0x2d/2, 0x00000, 0x04000, 0xffc000,      ~0, SMH_BANK14,          SMH_BANK14,          &workram,              "work RAM" },
987   { 0x29/2, 0x00000, 0x10000, 0xff0000,      ~0, NULL,                  rom_5704_bank_w,       NULL,                  "tile bank" },
988   { 0x25/2, 0x00000, 0x80000, 0xfc0000, 0x80000, SMH_BANK16,          SMH_UNMAP,           NULL,                  "ROM 1" },
989   { 0x21/2, 0x00000, 0x80000, 0xfc0000, 0x00000, SMH_BANK17,          SMH_UNMAP,           NULL,                  "ROM 0" },
981   { 0x3d/2, 0x00000, 0x04000, 0xffc000,      ~0, misc_io_r,                       misc_io_w,                        NULL,                  "I/O space" },
982   { 0x39/2, 0x00000, 0x01000, 0xfff000,      ~0, (read16_space_func)SMH_BANK(10), segaic16_paletteram_w,            &paletteram16,         "color RAM" },
983   { 0x35/2, 0x00000, 0x10000, 0xfe0000,      ~0, (read16_space_func)SMH_BANK(11), segaic16_tileram_0_w,             &segaic16_tileram_0,   "tile RAM" },
984   { 0x35/2, 0x10000, 0x01000, 0xfef000,      ~0, (read16_space_func)SMH_BANK(12), segaic16_textram_0_w,             &segaic16_textram_0,   "text RAM" },
985   { 0x31/2, 0x00000, 0x00800, 0xfff800,      ~0, (read16_space_func)SMH_BANK(13), (write16_space_func)SMH_BANK(13), &segaic16_spriteram_0, "object RAM" },
986   { 0x2d/2, 0x00000, 0x04000, 0xffc000,      ~0, (read16_space_func)SMH_BANK(14), (write16_space_func)SMH_BANK(14), &workram,              "work RAM" },
987   { 0x29/2, 0x00000, 0x10000, 0xff0000,      ~0, NULL,                            rom_5704_bank_w,                  NULL,                  "tile bank" },
988   { 0x25/2, 0x00000, 0x80000, 0xfc0000, 0x80000, (read16_space_func)SMH_BANK(16), (write16_space_func)SMH_UNMAP,    NULL,                  "ROM 1" },
989   { 0x21/2, 0x00000, 0x80000, 0xfc0000, 0x00000, (read16_space_func)SMH_BANK(17), (write16_space_func)SMH_UNMAP,    NULL,                  "ROM 0" },
990990   { 0 }
991991};
992992
993993static const segaic16_memory_map_entry rom_atomicp_info[] =
994994{
995   { 0x3d/2, 0x00000, 0x04000, 0xffc000,      ~0, misc_io_r,             misc_io_w,             NULL,                  "I/O space" },
996   { 0x39/2, 0x00000, 0x01000, 0xfff000,      ~0, SMH_BANK10,          segaic16_paletteram_w, &paletteram16,         "color RAM" },
997   { 0x35/2, 0x00000, 0x10000, 0xfe0000,      ~0, SMH_BANK11,          segaic16_tileram_0_w,  &segaic16_tileram_0,   "tile RAM" },
998   { 0x35/2, 0x10000, 0x01000, 0xfef000,      ~0, SMH_BANK12,          segaic16_textram_0_w,  &segaic16_textram_0,   "text RAM" },
999   { 0x31/2, 0x00000, 0x00800, 0xfff800,      ~0, SMH_BANK13,          SMH_BANK13,          &segaic16_spriteram_0, "object RAM" },
1000   { 0x2d/2, 0x00000, 0x04000, 0xffc000,      ~0, SMH_BANK14,          SMH_BANK14,          &workram,              "work RAM" },
1001   { 0x29/2, 0x00000, 0x10000, 0xff0000,      ~0, NULL,                  rom_5704_bank_w,       NULL,                  "tile bank" },
1002   { 0x25/2, 0x00000, 0x10000, 0xff0000,      ~0, NULL,                  atomicp_sound_w,       NULL,                  "sound" },
1003   { 0x21/2, 0x00000, 0x80000, 0xfc0000, 0x00000, SMH_BANK17,          SMH_UNMAP,           NULL,                  "ROM 0" },
995   { 0x3d/2, 0x00000, 0x04000, 0xffc000,      ~0, misc_io_r,                       misc_io_w,                        NULL,                  "I/O space" },
996   { 0x39/2, 0x00000, 0x01000, 0xfff000,      ~0, (read16_space_func)SMH_BANK(10), segaic16_paletteram_w,            &paletteram16,         "color RAM" },
997   { 0x35/2, 0x00000, 0x10000, 0xfe0000,      ~0, (read16_space_func)SMH_BANK(11), segaic16_tileram_0_w,             &segaic16_tileram_0,   "tile RAM" },
998   { 0x35/2, 0x10000, 0x01000, 0xfef000,      ~0, (read16_space_func)SMH_BANK(12), segaic16_textram_0_w,             &segaic16_textram_0,   "text RAM" },
999   { 0x31/2, 0x00000, 0x00800, 0xfff800,      ~0, (read16_space_func)SMH_BANK(13), (write16_space_func)SMH_BANK(13), &segaic16_spriteram_0, "object RAM" },
1000   { 0x2d/2, 0x00000, 0x04000, 0xffc000,      ~0, (read16_space_func)SMH_BANK(14), (write16_space_func)SMH_BANK(14), &workram,              "work RAM" },
1001   { 0x29/2, 0x00000, 0x10000, 0xff0000,      ~0, NULL,                            rom_5704_bank_w,                  NULL,                  "tile bank" },
1002   { 0x25/2, 0x00000, 0x10000, 0xff0000,      ~0, NULL,                            atomicp_sound_w,                  NULL,                  "sound" },
1003   { 0x21/2, 0x00000, 0x80000, 0xfc0000, 0x00000, (read16_space_func)SMH_BANK(17), (write16_space_func)SMH_UNMAP,    NULL,                  "ROM 0" },
10041004   { 0 }
10051005};
10061006
10071007static const segaic16_memory_map_entry rom_171_5797_info[] =
10081008{
1009   { 0x3d/2, 0x00000, 0x04000, 0xffc000,      ~0, misc_io_r,             misc_io_w,             NULL,                  "I/O space" },
1010   { 0x39/2, 0x00000, 0x01000, 0xfff000,      ~0, SMH_BANK10,          segaic16_paletteram_w, &paletteram16,         "color RAM" },
1011   { 0x35/2, 0x00000, 0x10000, 0xfe0000,      ~0, SMH_BANK11,          segaic16_tileram_0_w,  &segaic16_tileram_0,   "tile RAM" },
1012   { 0x35/2, 0x10000, 0x01000, 0xfef000,      ~0, SMH_BANK12,          segaic16_textram_0_w,  &segaic16_textram_0,   "text RAM" },
1013   { 0x31/2, 0x00000, 0x00800, 0xfff800,      ~0, SMH_BANK13,          SMH_BANK13,          &segaic16_spriteram_0, "object RAM" },
1014   { 0x2d/2, 0x00000, 0x04000, 0xffc000,      ~0, SMH_BANK14,          SMH_BANK14,          &workram,              "work RAM" },
1015   { 0x29/2, 0x00000, 0x10000, 0xff0000,      ~0, unknown_rgn2_r,        unknown_rgn2_w,        NULL,                  "???" },
1016   { 0x25/2, 0x00000, 0x04000, 0xffc000,      ~0, rom_5797_bank_math_r,  rom_5797_bank_math_w,  NULL,                  "tile bank/math" },
1017   { 0x21/2, 0x00000, 0x80000, 0xf80000, 0x00000, SMH_BANK17,          SMH_UNMAP,           NULL,                  "ROM 0" },
1009   { 0x3d/2, 0x00000, 0x04000, 0xffc000,      ~0, misc_io_r,                       misc_io_w,                        NULL,                  "I/O space" },
1010   { 0x39/2, 0x00000, 0x01000, 0xfff000,      ~0, (read16_space_func)SMH_BANK(10), segaic16_paletteram_w,            &paletteram16,         "color RAM" },
1011   { 0x35/2, 0x00000, 0x10000, 0xfe0000,      ~0, (read16_space_func)SMH_BANK(11), segaic16_tileram_0_w,             &segaic16_tileram_0,   "tile RAM" },
1012   { 0x35/2, 0x10000, 0x01000, 0xfef000,      ~0, (read16_space_func)SMH_BANK(12), segaic16_textram_0_w,             &segaic16_textram_0,   "text RAM" },
1013   { 0x31/2, 0x00000, 0x00800, 0xfff800,      ~0, (read16_space_func)SMH_BANK(13), (write16_space_func)SMH_BANK(13), &segaic16_spriteram_0, "object RAM" },
1014   { 0x2d/2, 0x00000, 0x04000, 0xffc000,      ~0, (read16_space_func)SMH_BANK(14), (write16_space_func)SMH_BANK(14), &workram,              "work RAM" },
1015   { 0x29/2, 0x00000, 0x10000, 0xff0000,      ~0, unknown_rgn2_r,                  unknown_rgn2_w,                   NULL,                  "???" },
1016   { 0x25/2, 0x00000, 0x04000, 0xffc000,      ~0, rom_5797_bank_math_r,            rom_5797_bank_math_w,             NULL,                  "tile bank/math" },
1017   { 0x21/2, 0x00000, 0x80000, 0xf80000, 0x00000, (read16_space_func)SMH_BANK(17), (write16_space_func)SMH_UNMAP,    NULL,                  "ROM 0" },
10181018   { 0 }
10191019};
10201020
r4679r4680
10391039{
10401040   if (has_sound_cpu)
10411041   {
1042      const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
1042      const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
10431043      soundlatch_w(space, 0, data & 0xff);
1044      cpu_set_input_line(machine->cpu[1], 0, HOLD_LINE);
1044      cputag_set_input_line(machine, "soundcpu", 0, HOLD_LINE);
10451045   }
10461046}
10471047
r4679r4680
10521052   rom_board = _rom_board;
10531053
10541054   /* allocate memory for regions not autmatically assigned */
1055   segaic16_spriteram_0 = auto_malloc(0x00800);
1056   paletteram16         = auto_malloc(0x01000);
1057   segaic16_tileram_0   = auto_malloc(0x10000);
1058   segaic16_textram_0   = auto_malloc(0x01000);
1059   workram              = auto_malloc(0x04000);
1055   segaic16_spriteram_0 = auto_alloc_array(machine, UINT16, 0x00800/2);
1056   paletteram16         = auto_alloc_array(machine, UINT16, 0x01000/2);
1057   segaic16_tileram_0   = auto_alloc_array(machine, UINT16, 0x10000/2);
1058   segaic16_textram_0   = auto_alloc_array(machine, UINT16, 0x01000/2);
1059   workram              = auto_alloc_array(machine, UINT16, 0x04000/2);
10601060
10611061   /* init the memory mapper */
10621062   segaic16_memory_mapper_init(cputag_get_cpu(machine, "maincpu"), region_info_list[rom_board], sound_w, NULL);
r4679r4680
11001100      segaic16_memory_mapper_config(machine, i8751_initial_config);
11011101   segaic16_tilemap_reset(machine, 0);
11021102
1103   fd1094_machine_init(machine->cpu[0]);
1103   fd1094_machine_init(cputag_get_cpu(machine, "maincpu"));
11041104
11051105   /* if we have a fake i8751 handler, disable the actual 8751 */
11061106   if (i8751_vblank_hook != NULL)
r4679r4680
11141114
11151115static TIMER_CALLBACK( atomicp_sound_irq )
11161116{
1117   cpu_set_input_line(machine->cpu[0], 2, HOLD_LINE);
1117   cputag_set_input_line(machine, "maincpu", 2, HOLD_LINE);
11181118}
11191119
11201120
r4679r4680
13471347static void upd7759_generate_nmi(const device_config *device, int state)
13481348{
13491349   if (state)
1350      cpu_set_input_line(device->machine->cpu[1], INPUT_LINE_NMI, PULSE_LINE);
1350      cputag_set_input_line(device->machine, "soundcpu", INPUT_LINE_NMI, PULSE_LINE);
13511351}
13521352
13531353
r4679r4680
13551355static WRITE8_HANDLER( mcu_data_w )
13561356{
13571357   mcu_data = data;
1358   generic_pulse_irq_line(space->machine->cpu[2], 1);
1358   generic_pulse_irq_line(cputag_get_cpu(space->machine, "mcu"), 1);
13591359}
13601360#endif
13611361
r4679r4680
13831383
13841384static void altbeast_common_i8751_sim(running_machine *machine, offs_t soundoffs, offs_t inputoffs)
13851385{
1386   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
1386   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
13871387   UINT16 temp;
13881388
13891389   /* signal a VBLANK to the main CPU */
1390   cpu_set_input_line(machine->cpu[0], 4, HOLD_LINE);
1390   cputag_set_input_line(machine, "maincpu", 4, HOLD_LINE);
13911391
13921392   /* set tile banks */
13931393   rom_5704_bank_w(space, 1, workram[0x3094/2] & 0x00ff, 0x00ff);
r4679r4680
14221422
14231423static void ddux_i8751_sim(running_machine *machine)
14241424{
1425   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
1425   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
14261426   UINT16 temp;
14271427
14281428   /* signal a VBLANK to the main CPU */
1429   cpu_set_input_line(machine->cpu[0], 4, HOLD_LINE);
1429   cputag_set_input_line(machine, "maincpu", 4, HOLD_LINE);
14301430
14311431   /* process any new sound data */
14321432   temp = workram[0x0bd0/2];
r4679r4680
14581458
14591459static void goldnaxe_i8751_sim(running_machine *machine)
14601460{
1461   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
1461   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
14621462   UINT16 temp;
14631463
14641464   /* signal a VBLANK to the main CPU */
1465   cpu_set_input_line(machine->cpu[0], 4, HOLD_LINE);
1465   cputag_set_input_line(machine, "maincpu", 4, HOLD_LINE);
14661466
14671467   /* they periodically clear the data at 2cd8,2cda,2cdc,2cde and expect the MCU to fill it in */
14681468   if (workram[0x2cd8/2] == 0 && workram[0x2cda/2] == 0 && workram[0x2cdc/2] == 0 && workram[0x2cde/2] == 0)
r4679r4680
14891489
14901490static void tturf_i8751_sim(running_machine *machine)
14911491{
1492   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
1492   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
14931493   UINT16 temp;
14941494
14951495   /* signal a VBLANK to the main CPU */
1496   cpu_set_input_line(machine->cpu[0], 4, HOLD_LINE);
1496   cputag_set_input_line(machine, "maincpu", 4, HOLD_LINE);
14971497
14981498   /* process any new sound data */
14991499   temp = workram[0x01d0/2];
r4679r4680
15121512
15131513static void wb3_i8751_sim(running_machine *machine)
15141514{
1515   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
1515   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
15161516   UINT16 temp;
15171517
15181518   /* signal a VBLANK to the main CPU */
1519   cpu_set_input_line(machine->cpu[0], 4, HOLD_LINE);
1519   cputag_set_input_line(machine, "maincpu", 4, HOLD_LINE);
15201520
15211521   /* process any new sound data */
15221522   temp = workram[0x0008/2];
r4679r4680
15301530
15311531static void wrestwar_i8751_sim(running_machine *machine)
15321532{
1533   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
1533   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
15341534   UINT16 temp;
15351535
15361536   /* signal a VBLANK to the main CPU */
1537   cpu_set_input_line(machine->cpu[0], 4, HOLD_LINE);
1537   cputag_set_input_line(machine, "maincpu", 4, HOLD_LINE);
15381538
15391539   /* process any new sound data */
15401540   temp = workram[0x208e/2];
src/mame/drivers/feversoc.c
r4679r4680
229229
230230static INTERRUPT_GEN( feversoc_irq )
231231{
232   cpu_set_input_line(device->machine->cpu[0], 8, HOLD_LINE );
232   cputag_set_input_line(device->machine, "maincpu", 8, HOLD_LINE );
233233}
234234
235235static MACHINE_DRIVER_START( feversoc )
src/mame/drivers/wwfwfest.c
r4679r4680
103103static WRITE16_HANDLER( wwfwfest_irq_ack_w )
104104{
105105   if (offset == 0)
106      cpu_set_input_line(space->machine->cpu[0], 3, CLEAR_LINE);
106      cputag_set_input_line(space->machine, "maincpu", 3, CLEAR_LINE);
107107
108108   else
109      cpu_set_input_line(space->machine->cpu[0], 2, CLEAR_LINE);
109      cputag_set_input_line(space->machine, "maincpu", 2, CLEAR_LINE);
110110}
111111
112112static WRITE16_HANDLER( wwfwfest_flipscreen_w )
r4679r4680
166166static WRITE16_HANDLER ( wwfwfest_soundwrite )
167167{
168168   soundlatch_w(space,1,data & 0xff);
169   cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_NMI, PULSE_LINE );
169   cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE );
170170}
171171
172172/*******************************************************************************
r4679r4680
178178/* DIPs are spread accross the other input ports */
179179static CUSTOM_INPUT( dsw_3f_r )
180180{
181   const char *tag = param;
181   const char *tag = (const char *)param;
182182   return input_port_read(field->port->machine, tag) & 0x3f;
183183}
184184
185185static CUSTOM_INPUT( dsw_c0_r )
186186{
187   const char *tag = param;
187   const char *tag = (const char *)param;
188188   return (input_port_read(field->port->machine, tag) & 0xc0) >> 6;
189189}
190190
r4679r4680
352352   {
353353      if (scanline > 0)
354354         video_screen_update_partial(timer->machine->primary_screen, scanline - 1);
355      cpu_set_input_line(timer->machine->cpu[0], 2, ASSERT_LINE);
355      cputag_set_input_line(timer->machine, "maincpu", 2, ASSERT_LINE);
356356   }
357357
358358   /* Vblank is raised on scanline 248 */
359359   if (scanline == 248)
360360   {
361361      video_screen_update_partial(timer->machine->primary_screen, scanline - 1);
362      cpu_set_input_line(timer->machine->cpu[0], 3, ASSERT_LINE);
362      cputag_set_input_line(timer->machine, "maincpu", 3, ASSERT_LINE);
363363   }
364364}
365365
r4679r4680
371371
372372static void dd3_ymirq_handler(const device_config *device, int irq)
373373{
374   cpu_set_input_line(device->machine->cpu[1], 0 , irq ? ASSERT_LINE : CLEAR_LINE );
374   cputag_set_input_line(device->machine, "audiocpu", 0 , irq ? ASSERT_LINE : CLEAR_LINE );
375375}
376376
377377static const ym2151_interface ym2151_config =
r4679r4680
381381
382382static VIDEO_EOF( wwfwfest )
383383{
384   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
384   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
385385
386386   buffer_spriteram16_w(space,0,0,0xffff);
387387}
src/mame/drivers/pktgaldx.c
r4679r4680
4747
4848bootleg todo:
4949
50    Sound.
5150    Fix GFX glitches in background of girls after each level.
5251    Tidy up code.
5352
r4679r4680
8079static ADDRESS_MAP_START( pktgaldx_map, ADDRESS_SPACE_PROGRAM, 16 )
8180   AM_RANGE(0x000000, 0x07ffff) AM_ROM
8281
83   AM_RANGE(0x100000, 0x100fff) AM_READ(SMH_RAM) AM_WRITE(deco16_pf1_data_w) AM_BASE(&deco16_pf1_data)
84   AM_RANGE(0x102000, 0x102fff) AM_READ(SMH_RAM) AM_WRITE(deco16_pf2_data_w) AM_BASE(&deco16_pf2_data)
85   AM_RANGE(0x110000, 0x1107ff) AM_READ(SMH_RAM) AM_WRITE(SMH_RAM) AM_BASE(&deco16_pf1_rowscroll)
86   AM_RANGE(0x112000, 0x1127ff) AM_READ(SMH_RAM) AM_WRITE(SMH_RAM) AM_BASE(&deco16_pf2_rowscroll)
82   AM_RANGE(0x100000, 0x100fff) AM_RAM_WRITE(deco16_pf1_data_w) AM_BASE(&deco16_pf1_data)
83   AM_RANGE(0x102000, 0x102fff) AM_RAM_WRITE(deco16_pf2_data_w) AM_BASE(&deco16_pf2_data)
84   AM_RANGE(0x110000, 0x1107ff) AM_RAM AM_BASE(&deco16_pf1_rowscroll)
85   AM_RANGE(0x112000, 0x1127ff) AM_RAM AM_BASE(&deco16_pf2_rowscroll)
8786
8887   AM_RANGE(0x120000, 0x1207ff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)
8988   AM_RANGE(0x130000, 0x130fff) AM_RAM_WRITE(deco16_nonbuffered_palette_w) AM_BASE(&paletteram16)
r4679r4680
9392   AM_RANGE(0x150000, 0x15000f) AM_DEVWRITE8("oki2", okim6295_w, 0x00ff)
9493   AM_RANGE(0x150006, 0x150007) AM_DEVREAD8("oki2", okim6295_r, 0x00ff)
9594
96   AM_RANGE(0x161800, 0x16180f) AM_WRITE(SMH_RAM) AM_BASE(&deco16_pf12_control)
95   AM_RANGE(0x161800, 0x16180f) AM_WRITEONLY AM_BASE(&deco16_pf12_control)
9796   AM_RANGE(0x164800, 0x164801) AM_DEVWRITE("oki2", pktgaldx_oki_bank_w)
98   AM_RANGE(0x167800, 0x167fff) AM_READ(deco16_104_pktgaldx_prot_r) AM_WRITE(deco16_104_pktgaldx_prot_w) AM_BASE(&deco16_prot_ram)
97   AM_RANGE(0x167800, 0x167fff) AM_READWRITE(deco16_104_pktgaldx_prot_r,deco16_104_pktgaldx_prot_w) AM_BASE(&deco16_prot_ram)
9998   AM_RANGE(0x170000, 0x17ffff) AM_RAM
10099ADDRESS_MAP_END
101100
r4679r4680
107106   return 0xffff;
108107}
109108
110static WRITE16_HANDLER( paletteram16_xRGB_w )
111{
112   int pen;
113   int r,g,b;
114   UINT32 paldat;
115
116   COMBINE_DATA(&paletteram16[offset]);
117
118   pen = offset/2;
119
120   paldat = (paletteram16[pen*2] << 16) | (paletteram16[pen*2+1] << 0);
121
122   r = ((paldat & 0x000000ff) >>0);
123   g = ((paldat & 0x0000ff00) >>8);
124   b = ((paldat & 0x00ff0000) >>16);
125
126   palette_set_color(space->machine,pen,MAKE_RGB(r,g,b));
127}
128
129109static READ16_HANDLER( pckgaldx_protection_r )
130110{
131111   logerror("pckgaldx_protection_r address %06x\n",cpu_get_pc(space->cpu));
132112   return -1;
133113}
134114
135
136
137static ADDRESS_MAP_START( pktgaldb_readmem, ADDRESS_SPACE_PROGRAM, 16 )
138
139   AM_RANGE(0x000000, 0x0fffff) AM_READ(SMH_ROM)
140   AM_RANGE(0x100000, 0x100fff) AM_READ(SMH_RAM)
141   AM_RANGE(0x102000, 0x102fff) AM_READ(SMH_RAM)
142   AM_RANGE(0x130000, 0x130fff) AM_READ(SMH_RAM)
143   AM_RANGE(0x120000, 0x123fff) AM_READ(SMH_RAM)
144
145   AM_RANGE(0x140006, 0x140007) AM_READ(pckgaldx_unknown_r) // sound?
146   AM_RANGE(0x150006, 0x150007) AM_READ(pckgaldx_unknown_r) // sound?
147
148//  AM_RANGE(0x160000, 0x167fff) AM_READ(SMH_RAM)
149   AM_RANGE(0x170000, 0x17ffff) AM_READ(SMH_RAM)
150
151115/*
152116cpu #0 (PC=0000A0DE): unmapped program memory word read from 00167DB2 & FFFF
153117cpu #0 (PC=00009DFA): unmapped program memory word read from 00167C4C & FFFF
r4679r4680
158122cpu #0 (PC=0000923C): unmapped program memory word read from 00167DB2 & 00FF
159123*/
160124
161   /* do the 300000 addresses somehow interact with the protection addresses on this bootleg? */
125/* do the 300000 addresses somehow interact with the protection addresses on this bootleg? */
126/* or maybe protection writes go to sound ... */
162127
163   AM_RANGE(0x16500A, 0x16500b) AM_READ(pckgaldx_unknown_r)
128static ADDRESS_MAP_START( pktgaldb_map, ADDRESS_SPACE_PROGRAM, 16 )
129   AM_RANGE(0x000000, 0x0fffff) AM_ROM
130   AM_RANGE(0x100000, 0x100fff) AM_RAM AM_BASE(&pcktgaldb_fgram) // fgram on original?
131   AM_RANGE(0x102000, 0x102fff) AM_RAM // bgram on original?
132   AM_RANGE(0x120000, 0x123fff) AM_RAM AM_BASE(&pcktgaldb_sprites)
164133
134   AM_RANGE(0x130000, 0x130fff) AM_RAM // palette on original?
135
136   AM_RANGE(0x140000, 0x14000f) AM_DEVWRITE8("oki1", okim6295_w, 0x00ff)
137   AM_RANGE(0x140006, 0x140007) AM_DEVREAD8("oki1", okim6295_r, 0x00ff)
138   AM_RANGE(0x150000, 0x15000f) AM_DEVWRITE8("oki2", okim6295_w, 0x00ff)
139   AM_RANGE(0x150006, 0x150007) AM_DEVREAD8("oki2", okim6295_r, 0x00ff)
140
141//  AM_RANGE(0x160000, 0x167fff) AM_RAM
142   AM_RANGE(0x164800, 0x164801) AM_DEVWRITE("oki2", pktgaldx_oki_bank_w)
143   AM_RANGE(0x160000, 0x167fff) AM_WRITENOP
144   AM_RANGE(0x16500a, 0x16500b) AM_READ(pckgaldx_unknown_r)
145
165146   /* should we really be using these to read the i/o in the BOOTLEG?
166147      these look like i/o through protection ... */
167148   AM_RANGE(0x167842, 0x167843) AM_READ_PORT("INPUTS")
r4679r4680
171152   AM_RANGE(0x167d10, 0x167d11) AM_READ(pckgaldx_protection_r) // check code at 6ea
172153   AM_RANGE(0x167d1a, 0x167d1b) AM_READ(pckgaldx_protection_r) // check code at 7C4
173154
174   AM_RANGE(0x300000, 0x30000f) AM_READ(SMH_RAM) // ??
155   AM_RANGE(0x170000, 0x17ffff) AM_RAM
175156
176   AM_RANGE(0x330000, 0x330bff) AM_READ(SMH_RAM)
177ADDRESS_MAP_END
157   AM_RANGE(0x300000, 0x30000f) AM_RAM // ??
178158
179
180static ADDRESS_MAP_START( pktgaldb_writemem, ADDRESS_SPACE_PROGRAM, 16 )
181
182   AM_RANGE(0x000000, 0x0fffff) AM_WRITE(SMH_ROM)
183   AM_RANGE(0x100000, 0x100fff) AM_WRITE(SMH_RAM) AM_BASE(&pcktgaldb_fgram) // fgram on original?
184   AM_RANGE(0x102000, 0x102fff) AM_WRITE(SMH_RAM) // bgram on original?
185   AM_RANGE(0x120000, 0x123fff) AM_WRITE(SMH_RAM)AM_BASE(&pcktgaldb_sprites)
186   AM_RANGE(0x130000, 0x130fff) AM_WRITE(SMH_RAM) // palette on original?
187   AM_RANGE(0x140000, 0x140003) AM_WRITE(SMH_RAM) // sound?
188   AM_RANGE(0x140008, 0x140009) AM_WRITE(SMH_RAM) // sound?
189   AM_RANGE(0x150000, 0x150003) AM_WRITE(SMH_RAM) // sound?
190
191   /* or maybe protection writes go to sound ... */
192   AM_RANGE(0x160000, 0x167fff) AM_WRITE(SMH_RAM)
193//cpu #0 (PC=00009246): unmapped program memory word write to 00167942 = 0000 & FFFF
194//cpu #0 (PC=0000924E): unmapped program memory word write to  = 0000 & FFFF
195   AM_RANGE(0x16500a, 0x16500b) AM_WRITE(SMH_RAM)
196   AM_RANGE(0x166800, 0x166801) AM_WRITE(SMH_RAM)
197   AM_RANGE(0x167942, 0x167943) AM_WRITE(SMH_RAM)
198
199   AM_RANGE(0x170000, 0x17ffff) AM_WRITE(SMH_RAM)
200
201   AM_RANGE(0x300000, 0x30000f) AM_WRITE(SMH_RAM)
202
203   AM_RANGE(0x330000, 0x330bff) AM_WRITE(paletteram16_xRGB_w) AM_BASE(&paletteram16) // extra colours?
159   AM_RANGE(0x330000, 0x330bff) AM_RAM_WRITE(paletteram16_xbgr_word_be_w) AM_BASE(&paletteram16) // extra colours?
204160ADDRESS_MAP_END
205161
162
206163/**********************************************************************************/
207164
208165static INPUT_PORTS_START( pktgaldx )
r4679r4680
379336static MACHINE_DRIVER_START( pktgaldb )
380337   /* basic machine hardware */
381338   MDRV_CPU_ADD("maincpu", M68000, 16000000)
382   MDRV_CPU_PROGRAM_MAP(pktgaldb_readmem,pktgaldb_writemem)
339   MDRV_CPU_PROGRAM_MAP(pktgaldb_map,0)
383340   MDRV_CPU_VBLANK_INT("screen", irq6_line_hold)
384341
385342   /* video hardware */
r4679r4680
397354   MDRV_VIDEO_UPDATE(pktgaldb)
398355
399356   /* sound hardware */
357   MDRV_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
358
359   MDRV_SOUND_ADD("oki1", OKIM6295, 32220000/32)
360   MDRV_SOUND_CONFIG(okim6295_interface_pin7high)
361   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.75)
362   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.75)
363
364   MDRV_SOUND_ADD("oki2", OKIM6295, 32220000/16)
365   MDRV_SOUND_CONFIG(okim6295_interface_pin7high)
366   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.60)
367   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.60)
400368MACHINE_DRIVER_END
401369
402370
r4679r4680
441409   ROM_LOAD16_BYTE ("4.bin", 0x00000, 0x80000, CRC(67ce30aa) SHA1(c5228ed19eebbfb6d5f7cbfcb99734d9fcd5aba3) )
442410   ROM_LOAD16_BYTE( "5.bin", 0x00001, 0x80000, CRC(64cb4c33) SHA1(02f988f558113dd9a77079dee59e23583394fa98) )
443411
444   ROM_REGION( 0x20000, "oki1", 0 ) /* Oki samples */
445   ROM_LOAD( "kg01.14f",    0x00000, 0x20000, CRC(8a106263) SHA1(229ab17403c2b8f4e89a90a8cda2f3c3a4b55d9e) ) // 1.bin on the bootleg
446
447412   ROM_REGION( 0x400000, "gfx1", 0 )
448413   ROM_LOAD16_BYTE( "11.bin",    0x000000, 0x80000, CRC(a8c8f1fd) SHA1(9fd5fa500967a1bd692abdbeef89ce195c8aecd4) )
449414   ROM_LOAD16_BYTE( "6.bin",     0x000001, 0x80000, CRC(0e3335a1) SHA1(2d6899336302d222e8404dde159e64911a8f94e6) )
r4679r4680
452417   ROM_LOAD16_BYTE( "9.bin",     0x200001, 0x80000, CRC(078f371c) SHA1(5b510a0f7f50c55cce1ffcc8f2e9c3432b23e352) )
453418   ROM_LOAD16_BYTE( "8.bin",     0x200000, 0x80000, CRC(40f5a032) SHA1(c2ad585ddbc3ef40c6214cb30b4d78a2cd0a9446) )
454419
420   ROM_REGION( 0x20000, "oki1", 0 ) /* Oki samples */
421   ROM_LOAD( "kg01.14f",    0x00000, 0x20000, CRC(8a106263) SHA1(229ab17403c2b8f4e89a90a8cda2f3c3a4b55d9e) ) // 1.bin on the bootleg
422
455423   ROM_REGION( 0x100000, "oki2", 0 ) /* Oki samples (banked?) */
456424   ROM_LOAD( "3.bin",    0x00000, 0x80000, CRC(4638747b) SHA1(56d79cd8d4d7b41b71f1e942b5a5bf1bafc5c6e7) )
457425   ROM_LOAD( "2.bin",    0x80000, 0x80000, CRC(f841d995) SHA1(0ef2f8fd9be62b979862c3688e7aad34c7b0404d) )
r4679r4680
467435
468436GAME( 1992, pktgaldx, 0,        pktgaldx, pktgaldx, pktgaldx,  ROT0, "Data East Corporation", "Pocket Gal Deluxe (Euro v3.00)", 0 )
469437GAME( 1993, pktgaldj, pktgaldx, pktgaldx, pktgaldx, pktgaldx,  ROT0, "Nihon System",          "Pocket Gal Deluxe (Japan v3.00)", 0 )
470GAME( 1992, pktgaldb, pktgaldx, pktgaldb, pktgaldx, 0,         ROT0, "bootleg",               "Pocket Gal Deluxe (Euro v3.00, bootleg)", GAME_IMPERFECT_GRAPHICS | GAME_NO_SOUND )
438GAME( 1992, pktgaldb, pktgaldx, pktgaldb, pktgaldx, 0,         ROT0, "bootleg",               "Pocket Gal Deluxe (Euro v3.00, bootleg)", GAME_IMPERFECT_GRAPHICS )
src/mame/drivers/timeplt.c
r4679r4680
7878{
7979   nmi_enable = data & 1;
8080   if (!nmi_enable)
81      cpu_set_input_line(space->machine->cpu[0], INPUT_LINE_NMI, CLEAR_LINE);
81      cputag_set_input_line(space->machine, "maincpu", INPUT_LINE_NMI, CLEAR_LINE);
8282}
8383
8484
src/mame/drivers/multigam.c
r4679r4680
215215      if ( --multigam3_mmc3_scanline_counter == -1 )
216216      {
217217         multigam3_mmc3_scanline_counter = multigam3_mmc3_scanline_latch;
218         generic_pulse_irq_line(device->machine->cpu[0], 0);
218         generic_pulse_irq_line(cputag_get_cpu(device->machine, "maincpu"), 0);
219219      }
220220   }
221221}
r4679r4680
368368   memcpy(&dst[0x8000], &src[0xa0000 + 0x3c000], 0x4000);
369369   memcpy(&dst[0xc000], &src[0xa0000 + 0x3c000], 0x4000);
370370
371   memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x8000, 0xffff, 0, 0, multigam3_mmc3_rom_switch_w );
371   memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x8000, 0xffff, 0, 0, multigam3_mmc3_rom_switch_w );
372372
373373   memory_set_bankptr(machine, 1, multigmc_mmc3_6000_ram);
374374
r4679r4680
535535
536536static void ppu_irq( const device_config *device, int *ppu_regs )
537537{
538   cpu_set_input_line(device->machine->cpu[0], INPUT_LINE_NMI, PULSE_LINE );
538   cputag_set_input_line(device->machine, "maincpu", INPUT_LINE_NMI, PULSE_LINE );
539539}
540540
541541/* our ppu interface                                            */
r4679r4680
575575
576576static MACHINE_RESET( multigm3 )
577577{
578   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
578   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
579579   /* reset the ppu */
580580   multigm3_switch_prg_rom(space, 0, 0x01 );
581581};
r4679r4680
703703
704704static DRIVER_INIT( multigam )
705705{
706   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
706   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
707707   multigam_switch_prg_rom( space, 0x0, 0x01 );
708708}
709709
r4679r4680
718718
719719static DRIVER_INIT(multigm3)
720720{
721   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
721   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
722722
723723   const UINT8 decode[16]  = { 0x09, 0x08, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x0f, 0x0e, 0x0d, 0x0c, 0x0b, 0x0a };
724724
725725   multigm3_decrypt(memory_region(machine, "maincpu"), memory_region_length(machine, "maincpu"), decode );
726726   multigm3_decrypt(memory_region(machine, "user1"), memory_region_length(machine, "user1"), decode );
727727
728   multigmc_mmc3_6000_ram = auto_malloc(0x2000);
728   multigmc_mmc3_6000_ram = auto_alloc_array(machine, UINT8, 0x2000);
729729
730730   multigam_switch_prg_rom( space, 0x0, 0x01 );
731731}
src/mame/drivers/atarigx2.c
r4679r4680
5050
5151static void update_interrupts(running_machine *machine)
5252{
53   cpu_set_input_line(machine->cpu[0], 4, atarigen_video_int_state ? ASSERT_LINE : CLEAR_LINE);
54   cpu_set_input_line(machine->cpu[0], 5, atarigen_sound_int_state ? ASSERT_LINE : CLEAR_LINE);
53   cputag_set_input_line(machine, "maincpu", 4, atarigen_video_int_state ? ASSERT_LINE : CLEAR_LINE);
54   cputag_set_input_line(machine, "maincpu", 5, atarigen_sound_int_state ? ASSERT_LINE : CLEAR_LINE);
5555}
5656
5757
r4679r4680
136136
137137   /* lower byte */
138138   if (ACCESSING_BITS_16_23)
139      cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_RESET, (data & 0x100000) ? CLEAR_LINE : ASSERT_LINE);
139      cputag_set_input_line(space->machine, "jsa", INPUT_LINE_RESET, (data & 0x100000) ? CLEAR_LINE : ASSERT_LINE);
140140}
141141
142142
r4679r4680
21072107   atarigx2_motion_object_base = 0x400;
21082108   atarigx2_motion_object_mask = 0x3ff;
21092109
2110   memory_install_read32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xca0fc0, 0xca0fc3, 0, 0, rrreveng_prot_r);
2110   memory_install_read32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xca0fc0, 0xca0fc3, 0, 0, rrreveng_prot_r);
21112111}
21122112
21132113
src/mame/drivers/fuukifg2.c
r4679r4680
8484   if (ACCESSING_BITS_0_7)
8585   {
8686      soundlatch_w(space,0,data & 0xff);
87      cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_NMI, PULSE_LINE);
87      cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
8888//      cpu_spinuntil_time(space->cpu, ATTOTIME_IN_USEC(50));   // Allow the other CPU to reply
8989      cpuexec_boost_interleave(space->machine, attotime_zero, ATTOTIME_IN_USEC(50)); // Fixes glitching in rasters
9090   }
9191}
9292
93static ADDRESS_MAP_START( fuuki16_readmem, ADDRESS_SPACE_PROGRAM, 16 )
94   AM_RANGE(0x000000, 0x0fffff) AM_READ(SMH_ROM               )   // ROM
95   AM_RANGE(0x400000, 0x40ffff) AM_READ(SMH_RAM               )   // RAM
96   AM_RANGE(0x500000, 0x507fff) AM_READ(SMH_RAM               )   // Layers
97   AM_RANGE(0x600000, 0x601fff) AM_MIRROR(0x008000) AM_READ(SMH_RAM   )   // Sprites, mirrored?
98   AM_RANGE(0x700000, 0x703fff) AM_READ(SMH_RAM               )   // Palette
93static ADDRESS_MAP_START( fuuki16_map, ADDRESS_SPACE_PROGRAM, 16 )
94   AM_RANGE(0x000000, 0x0fffff) AM_ROM                                                      // ROM
95   AM_RANGE(0x400000, 0x40ffff) AM_RAM                                                      // RAM
96   AM_RANGE(0x500000, 0x501fff) AM_RAM_WRITE(fuuki16_vram_0_w) AM_BASE(&fuuki16_vram_0)               // Layers
97   AM_RANGE(0x502000, 0x503fff) AM_RAM_WRITE(fuuki16_vram_1_w) AM_BASE(&fuuki16_vram_1)               //
98   AM_RANGE(0x504000, 0x505fff) AM_RAM_WRITE(fuuki16_vram_2_w) AM_BASE(&fuuki16_vram_2)               //
99   AM_RANGE(0x506000, 0x507fff) AM_RAM_WRITE(fuuki16_vram_3_w) AM_BASE(&fuuki16_vram_3)               //
100   AM_RANGE(0x600000, 0x601fff) AM_MIRROR(0x008000) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)   // Sprites, mirrored?
101   AM_RANGE(0x700000, 0x703fff) AM_RAM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE(&paletteram16)   // Palette
99102   AM_RANGE(0x800000, 0x800001) AM_READ_PORT("SYSTEM")
100103   AM_RANGE(0x810000, 0x810001) AM_READ_PORT("P1_P2")
101104   AM_RANGE(0x880000, 0x880001) AM_READ_PORT("DSW")
102   AM_RANGE(0x8c0000, 0x8c001f) AM_READ(SMH_RAM               )   // Video Registers
103/**/AM_RANGE(0x8d0000, 0x8d0003) AM_READ(SMH_RAM             )   //
104/**/AM_RANGE(0x8e0000, 0x8e0001) AM_READ(SMH_RAM             )   //
105   AM_RANGE(0x8a0000, 0x8a0001) AM_WRITE(fuuki16_sound_command_w)                                 // To Sound CPU
106   AM_RANGE(0x8c0000, 0x8c001f) AM_RAM_WRITE(fuuki16_vregs_w) AM_BASE(&fuuki16_vregs )                  // Video Registers
107/**/AM_RANGE(0x8d0000, 0x8d0003) AM_RAM AM_BASE(&fuuki16_unknown)                                 //
108/**/AM_RANGE(0x8e0000, 0x8e0001) AM_RAM AM_BASE(&fuuki16_priority)                                 //
105109ADDRESS_MAP_END
106110
107static ADDRESS_MAP_START( fuuki16_writemem, ADDRESS_SPACE_PROGRAM, 16 )
108   AM_RANGE(0x000000, 0x0fffff) AM_WRITE(SMH_ROM                     )   // ROM
109   AM_RANGE(0x400000, 0x40ffff) AM_WRITE(SMH_RAM                     )   // RAM
110   AM_RANGE(0x500000, 0x501fff) AM_WRITE(fuuki16_vram_0_w) AM_BASE(&fuuki16_vram_0   )   // Layers
111   AM_RANGE(0x502000, 0x503fff) AM_WRITE(fuuki16_vram_1_w) AM_BASE(&fuuki16_vram_1   )   //
112   AM_RANGE(0x504000, 0x505fff) AM_WRITE(fuuki16_vram_2_w) AM_BASE(&fuuki16_vram_2   )   //
113   AM_RANGE(0x506000, 0x507fff) AM_WRITE(fuuki16_vram_3_w) AM_BASE(&fuuki16_vram_3   )   //
114   AM_RANGE(0x506000, 0x507fff) AM_WRITE(SMH_RAM                     )   //
115   AM_RANGE(0x600000, 0x601fff) AM_MIRROR(0x008000) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size   )   // Sprites, mirrored?
116   AM_RANGE(0x700000, 0x703fff) AM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE(&paletteram16   )   // Palette
117   AM_RANGE(0x8c0000, 0x8c001f) AM_WRITE(fuuki16_vregs_w) AM_BASE(&fuuki16_vregs )   // Video Registers
118   AM_RANGE(0x8a0000, 0x8a0001) AM_WRITE(fuuki16_sound_command_w         )   // To Sound CPU
119   AM_RANGE(0x8d0000, 0x8d0003) AM_WRITE(SMH_RAM) AM_BASE(&fuuki16_unknown      )   //
120   AM_RANGE(0x8e0000, 0x8e0001) AM_WRITE(SMH_RAM) AM_BASE(&fuuki16_priority      )   //
121ADDRESS_MAP_END
122111
123
124112/***************************************************************************
125113
126114
r4679r4680
147135   okim6295_set_bank_base(device, ((data & 6) >> 1) * 0x40000);
148136}
149137
150static ADDRESS_MAP_START( fuuki16_sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
151   AM_RANGE(0x0000, 0x5fff) AM_READ(SMH_ROM      )   // ROM
152   AM_RANGE(0x6000, 0x7fff) AM_READ(SMH_RAM      )   // RAM
153   AM_RANGE(0x8000, 0xffff) AM_READ(SMH_BANK1      )   // Banked ROM
138static ADDRESS_MAP_START( fuuki16_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
139   AM_RANGE(0x0000, 0x5fff) AM_ROM         // ROM
140   AM_RANGE(0x6000, 0x7fff) AM_RAM         // RAM
141   AM_RANGE(0x8000, 0xffff) AM_ROMBANK(1)   // Banked ROM
154142ADDRESS_MAP_END
155143
156static ADDRESS_MAP_START( fuuki16_sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
157   AM_RANGE(0x0000, 0x5fff) AM_WRITE(SMH_ROM      )   // ROM
158   AM_RANGE(0x6000, 0x7fff) AM_WRITE(SMH_RAM      )   // RAM
159   AM_RANGE(0x8000, 0xffff) AM_WRITE(SMH_ROM      )   // Banked ROM
160ADDRESS_MAP_END
161
162144static ADDRESS_MAP_START( fuuki16_sound_io_map, ADDRESS_SPACE_IO, 8 )
163145   ADDRESS_MAP_GLOBAL_MASK(0xff)
164146   AM_RANGE(0x00, 0x00) AM_WRITE(fuuki16_sound_rombank_w    )   // ROM Bank
r4679r4680
407389
408390static void soundirq(const device_config *device, int state)
409391{
410   cpu_set_input_line(device->machine->cpu[1], 0, state);
392   cputag_set_input_line(device->machine, "audiocpu", 0, state);
411393}
412394
413395static const ym3812_interface fuuki16_ym3812_intf =
r4679r4680
429411
430412static TIMER_CALLBACK( level_1_interrupt_callback )
431413{
432   cpu_set_input_line(machine->cpu[0], 1, HOLD_LINE);
414   cputag_set_input_line(machine, "maincpu", 1, HOLD_LINE);
433415   timer_set(machine, video_screen_get_time_until_pos(machine->primary_screen, 248, 0), NULL, 0, level_1_interrupt_callback);
434416}
435417
436418
437419static TIMER_CALLBACK( vblank_interrupt_callback )
438420{
439   cpu_set_input_line(machine->cpu[0], 3, HOLD_LINE);   // VBlank IRQ
421   cputag_set_input_line(machine, "maincpu", 3, HOLD_LINE);   // VBlank IRQ
440422   timer_set(machine, video_screen_get_time_until_vblank_start(machine->primary_screen), NULL, 0, vblank_interrupt_callback);
441423}
442424
443425
444426static TIMER_CALLBACK( raster_interrupt_callback )
445427{
446   cpu_set_input_line(machine->cpu[0], 5, HOLD_LINE);   // Raster Line IRQ
428   cputag_set_input_line(machine, "maincpu", 5, HOLD_LINE);   // Raster Line IRQ
447429   video_screen_update_partial(machine->primary_screen, video_screen_get_vpos(machine->primary_screen));
448430   timer_adjust_oneshot(raster_interrupt_timer, video_screen_get_frame_period(machine->primary_screen), 0);
449431}
r4679r4680
469451
470452   /* basic machine hardware */
471453   MDRV_CPU_ADD("maincpu", M68000, 16000000)
472   MDRV_CPU_PROGRAM_MAP(fuuki16_readmem,fuuki16_writemem)
454   MDRV_CPU_PROGRAM_MAP(fuuki16_map,0)
473455
474456   MDRV_CPU_ADD("audiocpu", Z80, 3000000)   /* ? */
475   MDRV_CPU_PROGRAM_MAP(fuuki16_sound_readmem,fuuki16_sound_writemem)
457   MDRV_CPU_PROGRAM_MAP(fuuki16_sound_map,0)
476458   MDRV_CPU_IO_MAP(fuuki16_sound_io_map,0)
477459
478460   MDRV_MACHINE_START(fuuki16)
src/mame/drivers/nwk-tr.c
r4679r4680
417417      return 1;
418418   }
419419
420   K001604_char_ram[chip] = auto_malloc(0x200000);
420   K001604_char_ram[chip] = auto_alloc_array(machine, UINT32, 0x200000/4);
421421
422   K001604_tile_ram[chip] = auto_malloc(0x20000);
422   K001604_tile_ram[chip] = auto_alloc_array(machine, UINT32, 0x20000/4);
423423
424   K001604_reg[chip] = auto_malloc(0x400);
424   K001604_reg[chip] = auto_alloc_array(machine, UINT32, 0x400/4);
425425
426426   if (chip == 0)
427427   {
r4679r4680
649649
650650static void voodoo_vblank_0(const device_config *device, int param)
651651{
652   cpu_set_input_line(device->machine->cpu[0], INPUT_LINE_IRQ0, ASSERT_LINE);
652   cputag_set_input_line(device->machine, "maincpu", INPUT_LINE_IRQ0, ASSERT_LINE);
653653}
654654
655655static VIDEO_START( nwktr )
r4679r4680
754754      {
755755         if (data & 0x80)   // CG Board 1 IRQ Ack
756756         {
757            //cpu_set_input_line(space->machine->cpu[0], INPUT_LINE_IRQ1, CLEAR_LINE);
757            //cputag_set_input_line(space->machine, "maincpu", INPUT_LINE_IRQ1, CLEAR_LINE);
758758         }
759759         if (data & 0x40)   // CG Board 0 IRQ Ack
760760         {
761            //cpu_set_input_line(space->machine->cpu[0], INPUT_LINE_IRQ0, CLEAR_LINE);
761            //cputag_set_input_line(space->machine, "maincpu", INPUT_LINE_IRQ0, CLEAR_LINE);
762762         }
763763      }
764764      return;
r4679r4680
770770static int lanc2_ram_w = 0;
771771static UINT8 *lanc2_ram;
772772
773static void lanc2_init(void)
773static void lanc2_init(running_machine *machine)
774774{
775775   fpga_uploaded = 0;
776776   lanc2_ram_r = 0;
777777   lanc2_ram_w = 0;
778   lanc2_ram = auto_malloc(0x8000);
778   lanc2_ram = auto_alloc_array(machine, UINT8, 0x8000);
779779}
780780
781781static READ32_HANDLER( lanc1_r )
r4679r4680
890890static MACHINE_START( nwktr )
891891{
892892   /* set conservative DRC options */
893   ppcdrc_set_options(machine->cpu[0], PPCDRC_COMPATIBLE_OPTIONS);
893   ppcdrc_set_options(cputag_get_cpu(machine, "maincpu"), PPCDRC_COMPATIBLE_OPTIONS);
894894
895895   /* configure fast RAM regions for DRC */
896   ppcdrc_add_fastram(machine->cpu[0], 0x00000000, 0x003fffff, FALSE, work_ram);
896   ppcdrc_add_fastram(cputag_get_cpu(machine, "maincpu"), 0x00000000, 0x003fffff, FALSE, work_ram);
897897}
898898
899899static ADDRESS_MAP_START( nwktr_map, ADDRESS_SPACE_PROGRAM, 32 )
r4679r4680
10241024
10251025static MACHINE_RESET( nwktr )
10261026{
1027   cpu_set_input_line(machine->cpu[2], INPUT_LINE_RESET, ASSERT_LINE);
1027   cputag_set_input_line(machine, "dsp", INPUT_LINE_RESET, ASSERT_LINE);
10281028}
10291029
10301030static MACHINE_DRIVER_START( nwktr )
r4679r4680
10771077static void sound_irq_callback(running_machine *machine, int irq)
10781078{
10791079   if (irq == 0)
1080      generic_pulse_irq_line(machine->cpu[1], INPUT_LINE_IRQ1);
1080      generic_pulse_irq_line(cputag_get_cpu(machine, "audiocpu"), INPUT_LINE_IRQ1);
10811081   else
1082      generic_pulse_irq_line(machine->cpu[1], INPUT_LINE_IRQ2);
1082      generic_pulse_irq_line(cputag_get_cpu(machine, "audiocpu"), INPUT_LINE_IRQ2);
10831083}
10841084
10851085static DRIVER_INIT(nwktr)
r4679r4680
10871087   init_konami_cgboard(machine, 1, CGBOARD_TYPE_NWKTR);
10881088   set_cgboard_texture_bank(machine, 0, 5, memory_region(machine, "user5"));
10891089
1090   sharc_dataram = auto_malloc(0x100000);
1090   sharc_dataram = auto_alloc_array(machine, UINT32, 0x100000/4);
10911091   led_reg0 = led_reg1 = 0x7f;
10921092
10931093   K056800_init(machine, sound_irq_callback);
10941094   K033906_init(machine);
10951095
1096//  device_set_info_fct(machine->cpu[0], CPUINFO_FCT_SPU_TX_HANDLER, (genf *)jamma_jvs_w);
1097//  device_set_info_fct(machine->cpu[0], CPUINFO_FCT_SPU_RX_HANDLER, (genf *)jamma_jvs_r);
1098
10991096   adc1213x_init(0, adc12138_input_callback);
1100   lanc2_init();
1097   lanc2_init(machine);
11011098}
11021099
11031100
src/mame/drivers/circus.c
r4679r4680
5555
5656
5757
58static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 )
59   AM_RANGE(0x0000, 0x01ff) AM_READ(SMH_RAM)
60   AM_RANGE(0x1000, 0x1fff) AM_READ(SMH_ROM)
61   AM_RANGE(0x4000, 0x43ff) AM_READ(SMH_RAM)
62   AM_RANGE(0x8000, 0x8000) AM_READ(SMH_RAM)
58static ADDRESS_MAP_START( circus_map, ADDRESS_SPACE_PROGRAM, 8 )
59   AM_RANGE(0x0000, 0x01ff) AM_RAM
60   AM_RANGE(0x1000, 0x1fff) AM_ROM
61   AM_RANGE(0x2000, 0x2000) AM_WRITE(circus_clown_x_w)
62   AM_RANGE(0x3000, 0x3000) AM_WRITE(circus_clown_y_w)
63   AM_RANGE(0x4000, 0x43ff) AM_RAM_WRITE(circus_videoram_w) AM_BASE(&videoram)
64   AM_RANGE(0x8000, 0x8000) AM_RAM_WRITE(circus_clown_z_w)
6365   AM_RANGE(0xa000, 0xa000) AM_READ_PORT("INPUTS")
6466   AM_RANGE(0xc000, 0xc000) AM_READ_PORT("DSW")
6567   AM_RANGE(0xd000, 0xd000) AM_READ_PORT("PADDLE")
6668//  AM_RANGE(0xd000, 0xd000) AM_READ(ripcord_IN2_r)
67   AM_RANGE(0xf000, 0xffff) AM_READ(SMH_ROM)
69   AM_RANGE(0xf000, 0xffff) AM_ROM
6870ADDRESS_MAP_END
6971
70static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 )
71   AM_RANGE(0x0000, 0x01ff) AM_WRITE(SMH_RAM)
72   AM_RANGE(0x1000, 0x1fff) AM_WRITE(SMH_ROM)
73   AM_RANGE(0x2000, 0x2000) AM_WRITE(circus_clown_x_w)
74   AM_RANGE(0x3000, 0x3000) AM_WRITE(circus_clown_y_w)
75   AM_RANGE(0x4000, 0x43ff) AM_WRITE(circus_videoram_w) AM_BASE(&videoram)
76   AM_RANGE(0x8000, 0x8000) AM_WRITE(circus_clown_z_w)
77   AM_RANGE(0xf000, 0xffff) AM_WRITE(SMH_ROM)
78ADDRESS_MAP_END
7972
80
8173static INPUT_PORTS_START( circus )
8274   PORT_START("INPUTS")
8375   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_START1 )
r4679r4680
277269
278270   /* basic machine hardware */
279271   MDRV_CPU_ADD("maincpu", M6502, XTAL_11_289MHz / 16) /* 705.562kHz */
280   MDRV_CPU_PROGRAM_MAP(readmem,writemem)
272   MDRV_CPU_PROGRAM_MAP(circus_map,0)
281273   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
282274
283275   /* video hardware */
r4679r4680
312304
313305   /* basic machine hardware */
314306   MDRV_CPU_ADD("maincpu", M6502, XTAL_11_289MHz / 16) /* 705.562kHz */
315   MDRV_CPU_PROGRAM_MAP(readmem,writemem)
307   MDRV_CPU_PROGRAM_MAP(circus_map,0)
316308   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
317309
318310   /* video hardware */
r4679r4680
346338
347339   /* basic machine hardware */
348340   MDRV_CPU_ADD("maincpu", M6502, XTAL_11_289MHz / 16) /* 705.562kHz */
349   MDRV_CPU_PROGRAM_MAP(readmem,writemem)
341   MDRV_CPU_PROGRAM_MAP(circus_map,0)
350342   MDRV_CPU_VBLANK_INT_HACK(irq0_line_hold,2)
351343
352344   /* video hardware */
r4679r4680
380372
381373   /* basic machine hardware */
382374   MDRV_CPU_ADD("maincpu", M6502, XTAL_11_289MHz / 16) /* 705.562kHz */
383   MDRV_CPU_PROGRAM_MAP(readmem,writemem)
375   MDRV_CPU_PROGRAM_MAP(circus_map,0)
384376   //MDRV_CPU_VBLANK_INT("screen", ripcord_interrupt) //AT
385377
386378   /* video hardware */
src/mame/drivers/vcombat.c
r4679r4680
199199   if (bus_hold)
200200   {
201201      fprintf(stderr, "M0 asserting bus HOLD to i860 %s\n", device->tag);
202      i860_set_pin(device->token, DEC_PIN_BUS_HOLD, 1);
202      i860_set_pin(device, DEC_PIN_BUS_HOLD, 1);
203203   }
204204   else
205205   {
206206      fprintf(stderr, "M0 clearing bus HOLD to i860 %s\n", device->tag);
207      i860_set_pin(device->token, DEC_PIN_BUS_HOLD, 0);
207      i860_set_pin(device, DEC_PIN_BUS_HOLD, 0);
208208   }
209209
210210   if (reset)
211211   {
212212      fprintf(stderr, "M0 asserting RESET to i860 %s\n", device->tag);
213      i860_set_pin(device->token, DEC_PIN_RESET, 1);
213      i860_set_pin(device, DEC_PIN_RESET, 1);
214214   }
215215   else
216      i860_set_pin(device->token, DEC_PIN_RESET, 0);
216      i860_set_pin(device, DEC_PIN_RESET, 0);
217217}
218218
219219static WRITE16_HANDLER( wiggle_i860p0_pins_w )
r4679r4680
379379   /* Setup the Bt476 VGA RAMDAC palette chip */
380380   tlc34076_reset(6);
381381
382   i860_set_pin(cputag_get_cpu(machine, "vid_0")->token, DEC_PIN_BUS_HOLD, 1);
383   i860_set_pin(cputag_get_cpu(machine, "vid_1")->token, DEC_PIN_BUS_HOLD, 1);
382   i860_set_pin(cputag_get_cpu(machine, "vid_0"), DEC_PIN_BUS_HOLD, 1);
383   i860_set_pin(cputag_get_cpu(machine, "vid_1"), DEC_PIN_BUS_HOLD, 1);
384384
385385   crtc_select = 0;
386386}
r4679r4680
390390   /* Setup the Bt476 VGA RAMDAC palette chip */
391391   tlc34076_reset(6);
392392
393   i860_set_pin(cputag_get_cpu(machine, "vid_0")->token, DEC_PIN_BUS_HOLD, 1);
393   i860_set_pin(cputag_get_cpu(machine, "vid_0"), DEC_PIN_BUS_HOLD, 1);
394394
395395   crtc_select = 0;
396396}
r4679r4680
426426   memory_set_direct_update_handler(cputag_get_address_space(machine, "vid_1", ADDRESS_SPACE_PROGRAM), vid_1_direct_handler);
427427
428428   /* Allocate the 68000 framebuffers */
429   m68k_framebuffer[0] = auto_malloc(0x8000 * sizeof(UINT16));
430   m68k_framebuffer[1] = auto_malloc(0x8000 * sizeof(UINT16));
429   m68k_framebuffer[0] = auto_alloc_array(machine, UINT16, 0x8000);
430   m68k_framebuffer[1] = auto_alloc_array(machine, UINT16, 0x8000);
431431
432432   /* First i860 */
433   i860_framebuffer[0][0] = auto_malloc(0x8000 * sizeof(UINT16));
434   i860_framebuffer[0][1] = auto_malloc(0x8000 * sizeof(UINT16));
433   i860_framebuffer[0][0] = auto_alloc_array(machine, UINT16, 0x8000);
434   i860_framebuffer[0][1] = auto_alloc_array(machine, UINT16, 0x8000);
435435
436436   /* Second i860 */
437   i860_framebuffer[1][0] = auto_malloc(0x8000 * sizeof(UINT16));
438   i860_framebuffer[1][1] = auto_malloc(0x8000 * sizeof(UINT16));
437   i860_framebuffer[1][0] = auto_alloc_array(machine, UINT16, 0x8000);
438   i860_framebuffer[1][1] = auto_alloc_array(machine, UINT16, 0x8000);
439439
440440   /* pc==4016 : jump 4038 ... There's something strange about how it waits at 402e (interrupts all masked out)
441441       I think what is happening here is that M0 snags the first time
r4679r4680
456456static DRIVER_INIT( shadfgtr )
457457{
458458   /* Allocate th 68000 frame buffers */
459   m68k_framebuffer[0] = auto_malloc(0x8000 * sizeof(UINT16));
460   m68k_framebuffer[1] = auto_malloc(0x8000 * sizeof(UINT16));
459   m68k_framebuffer[0] = auto_alloc_array(machine, UINT16, 0x8000);
460   m68k_framebuffer[1] = auto_alloc_array(machine, UINT16, 0x8000);
461461
462462   /* Only one i860 */
463   i860_framebuffer[0][0] = auto_malloc(0x8000 * sizeof(UINT16));
464   i860_framebuffer[0][1] = auto_malloc(0x8000 * sizeof(UINT16));
463   i860_framebuffer[0][0] = auto_alloc_array(machine, UINT16, 0x8000);
464   i860_framebuffer[0][1] = auto_alloc_array(machine, UINT16, 0x8000);
465465   i860_framebuffer[1][0] = NULL;
466466   i860_framebuffer[1][1] = NULL;
467467
src/mame/drivers/shangha3.c
r4679r4680
5656   static int count;
5757   static const int result[] = { 0x0,0x1,0x3,0x7,0xf,0xe,0xc,0x8,0x0};
5858
59logerror("PC %04x: read 20004e\n",cpu_get_pc(space->cpu));
59   logerror("PC %04x: read 20004e\n",cpu_get_pc(space->cpu));
6060
6161   return result[count++ % 9];
6262}
6363static WRITE16_HANDLER( shangha3_prot_w )
6464{
65logerror("PC %04x: write %02x to 20004e\n",cpu_get_pc(space->cpu),data);
65   logerror("PC %04x: write %02x to 20004e\n",cpu_get_pc(space->cpu),data);
6666}
6767
6868
r4679r4680
119119{
120120   if (ACCESSING_BITS_0_7)
121121   {
122      soundlatch_w(space,0,data & 0xff);
123      cpu_set_input_line_and_vector(space->machine->cpu[1],0,HOLD_LINE,0xff);   /* RST 38h */
122      soundlatch_w(space, 0, data & 0xff);
123      cputag_set_input_line_and_vector(space->machine, "audiocpu", 0, HOLD_LINE, 0xff);   /* RST 38h */
124124   }
125125}
126126
127127
128128
129static ADDRESS_MAP_START( shangha3_readmem, ADDRESS_SPACE_PROGRAM, 16 )
130   AM_RANGE(0x000000, 0x07ffff) AM_READ(SMH_ROM)
131   AM_RANGE(0x100000, 0x100fff) AM_READ(SMH_RAM)
129static ADDRESS_MAP_START( shangha3_map, ADDRESS_SPACE_PROGRAM, 16 )
130   AM_RANGE(0x000000, 0x07ffff) AM_ROM
131   AM_RANGE(0x100000, 0x100fff) AM_RAM_WRITE(paletteram16_RRRRRGGGGGBBBBBx_word_w) AM_BASE(&paletteram16)
132132   AM_RANGE(0x200000, 0x200001) AM_READ_PORT("INPUTS")
133133   AM_RANGE(0x200002, 0x200003) AM_READ_PORT("SYSTEM")
134   AM_RANGE(0x20001e, 0x20001f) AM_DEVREAD8("ay", ay8910_r, 0x00ff)
135   AM_RANGE(0x20004e, 0x20004f) AM_READ(shangha3_prot_r)
136   AM_RANGE(0x20006e, 0x20006f) AM_DEVREAD8("oki", okim6295_r, 0x00ff)
137   AM_RANGE(0x300000, 0x30ffff) AM_READ(SMH_RAM)
138ADDRESS_MAP_END
139
140static ADDRESS_MAP_START( shangha3_writemem, ADDRESS_SPACE_PROGRAM, 16 )
141   AM_RANGE(0x000000, 0x07ffff) AM_WRITE(SMH_ROM)
142   AM_RANGE(0x100000, 0x100fff) AM_WRITE(paletteram16_RRRRRGGGGGBBBBBx_word_w) AM_BASE(&paletteram16)
143134   AM_RANGE(0x200008, 0x200009) AM_WRITE(shangha3_blitter_go_w)
144135   AM_RANGE(0x20000a, 0x20000b) AM_WRITENOP   /* irq ack? */
145136   AM_RANGE(0x20000c, 0x20000d) AM_WRITE(shangha3_coinctrl_w)
137   AM_RANGE(0x20001e, 0x20001f) AM_DEVREAD8("ay", ay8910_r, 0x00ff)
146138   AM_RANGE(0x20002e, 0x20002f) AM_DEVWRITE8("ay", ay8910_data_w, 0x00ff)
147139   AM_RANGE(0x20003e, 0x20003f) AM_DEVWRITE8("ay", ay8910_address_w, 0x00ff)
148   AM_RANGE(0x20004e, 0x20004f) AM_WRITE(shangha3_prot_w)
149   AM_RANGE(0x20006e, 0x20006f) AM_DEVWRITE8("oki", okim6295_w, 0x00ff)
150   AM_RANGE(0x300000, 0x30ffff) AM_WRITE(SMH_RAM) AM_BASE(&shangha3_ram) AM_SIZE(&shangha3_ram_size)   /* gfx & work ram */
140   AM_RANGE(0x20004e, 0x20004f) AM_READWRITE(shangha3_prot_r,shangha3_prot_w)
141   AM_RANGE(0x20006e, 0x20006f) AM_DEVREADWRITE8("oki", okim6295_r,okim6295_w, 0x00ff)
142   AM_RANGE(0x300000, 0x30ffff) AM_RAM AM_BASE(&shangha3_ram) AM_SIZE(&shangha3_ram_size)   /* gfx & work ram */
151143   AM_RANGE(0x340000, 0x340001) AM_WRITE(shangha3_flipscreen_w)
152144   AM_RANGE(0x360000, 0x360001) AM_WRITE(shangha3_gfxlist_addr_w)
153145ADDRESS_MAP_END
154146
155
156static ADDRESS_MAP_START( heberpop_readmem, ADDRESS_SPACE_PROGRAM, 16 )
157   AM_RANGE(0x000000, 0x0fffff) AM_READ(SMH_ROM)
158   AM_RANGE(0x100000, 0x100fff) AM_READ(SMH_RAM)
147static ADDRESS_MAP_START( heberpop_map, ADDRESS_SPACE_PROGRAM, 16 )
148   AM_RANGE(0x000000, 0x0fffff) AM_ROM
149   AM_RANGE(0x100000, 0x100fff) AM_RAM_WRITE(paletteram16_RRRRRGGGGGBBBBBx_word_w) AM_BASE(&paletteram16)
159150   AM_RANGE(0x200000, 0x200001) AM_READ_PORT("INPUTS")
160151   AM_RANGE(0x200002, 0x200003) AM_READ_PORT("SYSTEM")
161152   AM_RANGE(0x200004, 0x200005) AM_READ_PORT("DSW")
162   AM_RANGE(0x300000, 0x30ffff) AM_READ(SMH_RAM)
163   AM_RANGE(0x800000, 0xb7ffff) AM_READ(heberpop_gfxrom_r)
164ADDRESS_MAP_END
165
166static ADDRESS_MAP_START( heberpop_writemem, ADDRESS_SPACE_PROGRAM, 16 )
167   AM_RANGE(0x000000, 0x0fffff) AM_WRITE(SMH_ROM)
168   AM_RANGE(0x100000, 0x100fff) AM_WRITE(paletteram16_RRRRRGGGGGBBBBBx_word_w) AM_BASE(&paletteram16)
169153   AM_RANGE(0x200008, 0x200009) AM_WRITE(shangha3_blitter_go_w)
170154   AM_RANGE(0x20000a, 0x20000b) AM_WRITENOP   /* irq ack? */
171155   AM_RANGE(0x20000c, 0x20000d) AM_WRITE(heberpop_coinctrl_w)
172156   AM_RANGE(0x20000e, 0x20000f) AM_WRITE(heberpop_sound_command_w)
173   AM_RANGE(0x300000, 0x30ffff) AM_WRITE(SMH_RAM) AM_BASE(&shangha3_ram) AM_SIZE(&shangha3_ram_size)   /* gfx & work ram */
157   AM_RANGE(0x300000, 0x30ffff) AM_RAM AM_BASE(&shangha3_ram) AM_SIZE(&shangha3_ram_size)   /* gfx & work ram */
174158   AM_RANGE(0x340000, 0x340001) AM_WRITE(shangha3_flipscreen_w)
175159   AM_RANGE(0x360000, 0x360001) AM_WRITE(shangha3_gfxlist_addr_w)
160   AM_RANGE(0x800000, 0xb7ffff) AM_READ(heberpop_gfxrom_r)
176161ADDRESS_MAP_END
177162
178static ADDRESS_MAP_START( blocken_readmem, ADDRESS_SPACE_PROGRAM, 16 )
179   AM_RANGE(0x000000, 0x0fffff) AM_READ(SMH_ROM)
163static ADDRESS_MAP_START( blocken_map, ADDRESS_SPACE_PROGRAM, 16 )
164   AM_RANGE(0x000000, 0x0fffff) AM_ROM
180165   AM_RANGE(0x100000, 0x100001) AM_READ_PORT("INPUTS")
181166   AM_RANGE(0x100002, 0x100003) AM_READ_PORT("SYSTEM")
182167   AM_RANGE(0x100004, 0x100005) AM_READ_PORT("DSW")
183   AM_RANGE(0x200000, 0x200fff) AM_READ(SMH_RAM)
184   AM_RANGE(0x300000, 0x30ffff) AM_READ(SMH_RAM)
185   AM_RANGE(0x800000, 0xb7ffff) AM_READ(heberpop_gfxrom_r)
186ADDRESS_MAP_END
187
188static ADDRESS_MAP_START( blocken_writemem, ADDRESS_SPACE_PROGRAM, 16 )
189   AM_RANGE(0x000000, 0x0fffff) AM_WRITE(SMH_ROM)
190168   AM_RANGE(0x100008, 0x100009) AM_WRITE(shangha3_blitter_go_w)
191169   AM_RANGE(0x10000a, 0x10000b) AM_WRITENOP   /* irq ack? */
192170   AM_RANGE(0x10000c, 0x10000d) AM_WRITE(blocken_coinctrl_w)
193171   AM_RANGE(0x10000e, 0x10000f) AM_WRITE(heberpop_sound_command_w)
194   AM_RANGE(0x200000, 0x200fff) AM_WRITE(paletteram16_RRRRRGGGGGBBBBBx_word_w) AM_BASE(&paletteram16)
195   AM_RANGE(0x300000, 0x30ffff) AM_WRITE(SMH_RAM) AM_BASE(&shangha3_ram) AM_SIZE(&shangha3_ram_size)   /* gfx & work ram */
172   AM_RANGE(0x200000, 0x200fff) AM_RAM_WRITE(paletteram16_RRRRRGGGGGBBBBBx_word_w) AM_BASE(&paletteram16)
173   AM_RANGE(0x300000, 0x30ffff) AM_RAM AM_BASE(&shangha3_ram) AM_SIZE(&shangha3_ram_size)   /* gfx & work ram */
196174   AM_RANGE(0x340000, 0x340001) AM_WRITE(shangha3_flipscreen_w)
197175   AM_RANGE(0x360000, 0x360001) AM_WRITE(shangha3_gfxlist_addr_w)
176   AM_RANGE(0x800000, 0xb7ffff) AM_READ(heberpop_gfxrom_r)
198177ADDRESS_MAP_END
199178
200179
201static ADDRESS_MAP_START( heberpop_sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
202   AM_RANGE(0x0000, 0xf7ff) AM_READ(SMH_ROM)
203   AM_RANGE(0xf800, 0xffff) AM_READ(SMH_RAM)
180static ADDRESS_MAP_START( heberpop_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
181   AM_RANGE(0x0000, 0xf7ff) AM_ROM
182   AM_RANGE(0xf800, 0xffff) AM_RAM
204183ADDRESS_MAP_END
205184
206static ADDRESS_MAP_START( heberpop_sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
207   AM_RANGE(0x0000, 0xf7ff) AM_WRITE(SMH_ROM)
208   AM_RANGE(0xf800, 0xffff) AM_WRITE(SMH_RAM)
209ADDRESS_MAP_END
210
211
212185static ADDRESS_MAP_START( heberpop_sound_io_map, ADDRESS_SPACE_IO, 8 )
213186   ADDRESS_MAP_GLOBAL_MASK(0xff)
214187   AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ym", ym3438_r, ym3438_w)
r4679r4680
494467
495468static void irqhandler(const device_config *device, int linestate)
496469{
497   cpu_set_input_line(device->machine->cpu[1], INPUT_LINE_NMI, linestate);
470   cputag_set_input_line(device->machine, "audiocpu", INPUT_LINE_NMI, linestate);
498471}
499472
500473static const ym3438_interface ym3438_config =
r4679r4680
507480
508481   /* basic machine hardware */
509482   MDRV_CPU_ADD("maincpu", M68000, 8000000)
510   MDRV_CPU_PROGRAM_MAP(shangha3_readmem,shangha3_writemem)
483   MDRV_CPU_PROGRAM_MAP(shangha3_map,0)
511484   MDRV_CPU_VBLANK_INT("screen", irq4_line_hold)
512485
513486   /* video hardware */
514   MDRV_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS )
487   MDRV_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS)
515488
516489   MDRV_SCREEN_ADD("screen", RASTER)
517490   MDRV_SCREEN_REFRESH_RATE(60)
r4679r4680
543516
544517   /* basic machine hardware */
545518   MDRV_CPU_ADD("maincpu", M68000, 8000000)
546   MDRV_CPU_PROGRAM_MAP(heberpop_readmem,heberpop_writemem)
519   MDRV_CPU_PROGRAM_MAP(heberpop_map,0)
547520   MDRV_CPU_VBLANK_INT("screen", irq4_line_hold)
548521
549522   MDRV_CPU_ADD("audiocpu", Z80, 6000000)   /* 6 MHz ??? */
550   MDRV_CPU_PROGRAM_MAP(heberpop_sound_readmem,heberpop_sound_writemem)
523   MDRV_CPU_PROGRAM_MAP(heberpop_sound_map,0)
551524   MDRV_CPU_IO_MAP(heberpop_sound_io_map,0)   /* NMI triggered by YM3438 */
552525
553526   /* video hardware */
r4679r4680
584557
585558   /* basic machine hardware */
586559   MDRV_CPU_ADD("maincpu", M68000, 8000000)
587   MDRV_CPU_PROGRAM_MAP(blocken_readmem,blocken_writemem)
560   MDRV_CPU_PROGRAM_MAP(blocken_map,0)
588561   MDRV_CPU_VBLANK_INT("screen", irq4_line_hold)
589562
590563   MDRV_CPU_ADD("audiocpu", Z80, 6000000)   /* 6 MHz ??? */
591   MDRV_CPU_PROGRAM_MAP(heberpop_sound_readmem,heberpop_sound_writemem)
564   MDRV_CPU_PROGRAM_MAP(heberpop_sound_map,0)
592565   MDRV_CPU_IO_MAP(heberpop_sound_io_map,0)   /* NMI triggered by YM3438 */
593566
594567   /* video hardware */
r4679r4680
698671{
699672   shangha3_do_shadows = 1;
700673}
674
701675static DRIVER_INIT( heberpop )
702676{
703677   shangha3_do_shadows = 0;
src/mame/drivers/pkscram.c
r4679r4680
7373
7474   if (!(out & 0x2000) && interrupt_line_active)
7575   {
76       cpu_set_input_line(space->machine->cpu[0], 1, CLEAR_LINE);
76       cputag_set_input_line(space->machine, "maincpu", 1, CLEAR_LINE);
7777      interrupt_line_active = 0;
7878   }
7979
r4679r4680
193193
194194static TIMER_CALLBACK( scanline_callback )
195195{
196   if (param==interrupt_scanline)
196   if (param == interrupt_scanline)
197197   {
198       if (out&0x2000)
199          cpu_set_input_line(machine->cpu[0], 1, ASSERT_LINE);
200      timer_adjust_oneshot(scanline_timer, video_screen_get_time_until_pos(machine->primary_screen, param+1, 0), param+1);
198       if (out & 0x2000)
199          cputag_set_input_line(machine, "maincpu", 1, ASSERT_LINE);
200      timer_adjust_oneshot(scanline_timer, video_screen_get_time_until_pos(machine->primary_screen, param + 1, 0), param+1);
201201      interrupt_line_active = 1;
202202   }
203203   else
204204   {
205205      if (interrupt_line_active)
206          cpu_set_input_line(machine->cpu[0], 1, CLEAR_LINE);
206          cputag_set_input_line(machine, "maincpu", 1, CLEAR_LINE);
207207      timer_adjust_oneshot(scanline_timer, video_screen_get_time_until_pos(machine->primary_screen, interrupt_scanline, 0), interrupt_scanline);
208208      interrupt_line_active = 0;
209209   }
r4679r4680
246246static void irqhandler(const device_config *device, int irq)
247247{
248248   if(out & 0x10)
249      cpu_set_input_line(device->machine->cpu[0],2,irq ? ASSERT_LINE : CLEAR_LINE);
249      cputag_set_input_line(device->machine, "maincpu", 2, irq ? ASSERT_LINE : CLEAR_LINE);
250250}
251251
252252static const ym2203_interface ym2203_config =
src/mame/drivers/vastar.c
r4679r4680
8686static MACHINE_RESET( vastar )
8787{
8888   /* we must start with the second CPU halted */
89   cpu_set_input_line(machine->cpu[1], INPUT_LINE_RESET, ASSERT_LINE);
89   cputag_set_input_line(machine, "sub", INPUT_LINE_RESET, ASSERT_LINE);
9090}
9191
9292static WRITE8_HANDLER( vastar_hold_cpu2_w )
9393{
9494   /* I'm not sure that this works exactly like this */
9595   if (data & 1)
96      cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_RESET, CLEAR_LINE);
96      cputag_set_input_line(space->machine, "sub", INPUT_LINE_RESET, CLEAR_LINE);
9797   else
98      cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_RESET, ASSERT_LINE);
98      cputag_set_input_line(space->machine, "sub", INPUT_LINE_RESET, ASSERT_LINE);
9999}
100100
101101static READ8_HANDLER( vastar_sharedram_r )
src/mame/drivers/taotaido.c
r4679r4680
8484   if (ACCESSING_BITS_0_7)
8585   {
8686      pending_command = 1;
87      soundlatch_w(space,offset,data & 0xff);
88      cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_NMI, PULSE_LINE);
87      soundlatch_w(space, offset, data & 0xff);
88      cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
8989   }
9090}
9191static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 16 )
r4679r4680
132132static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 )
133133   AM_RANGE(0x0000, 0x77ff) AM_ROM
134134   AM_RANGE(0x7800, 0x7fff) AM_RAM
135   AM_RANGE(0x8000, 0xffff) AM_READWRITE(SMH_BANK1, SMH_ROM)
135   AM_RANGE(0x8000, 0xffff) AM_READWRITE(SMH_BANK(1), SMH_ROM)
136136ADDRESS_MAP_END
137137
138138static ADDRESS_MAP_START( sound_port_map, ADDRESS_SPACE_IO, 8 )
r4679r4680
322322
323323static void irqhandler(const device_config *device, int irq)
324324{
325   cpu_set_input_line(device->machine->cpu[1],0,irq ? ASSERT_LINE : CLEAR_LINE);
325   cputag_set_input_line(device->machine, "audiocpu", 0, irq ? ASSERT_LINE : CLEAR_LINE);
326326}
327327
328328static const ym2610_interface ym2610_config =
src/mame/drivers/fortecar.c
r4679r4680
101101
102102static ADDRESS_MAP_START( fortecar_map, ADDRESS_SPACE_PROGRAM, 8 )
103103   AM_RANGE(0x0000, 0xbfff) AM_ROM
104   AM_RANGE(0xc000, 0xc7ff) AM_READWRITE(SMH_BANK1, SMH_ROM) //bank
104   AM_RANGE(0xc000, 0xc7ff) AM_READWRITE(SMH_BANK(1), SMH_ROM) //bank
105105   AM_RANGE(0xd000, 0xd7ff) AM_RAM
106106   AM_RANGE(0xd800, 0xffff) AM_RAM AM_BASE(&fortecar_ram)
107107ADDRESS_MAP_END
src/mame/drivers/relief.c
r4679r4680
4545
4646static void update_interrupts(running_machine *machine)
4747{
48   cpu_set_input_line(machine->cpu[0], 4, atarigen_scanline_int_state ? ASSERT_LINE : CLEAR_LINE);
48   cputag_set_input_line(machine, "maincpu", 4, atarigen_scanline_int_state ? ASSERT_LINE : CLEAR_LINE);
4949}
5050
5151
src/mame/drivers/taito_f3.c
r4679r4680
121121
122122static WRITE32_HANDLER( f3_sound_reset_0_w )
123123{
124   cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_RESET, CLEAR_LINE);
124   cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_RESET, CLEAR_LINE);
125125}
126126
127127static WRITE32_HANDLER( f3_sound_reset_1_w )
128128{
129   cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_RESET, ASSERT_LINE);
129   cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_RESET, ASSERT_LINE);
130130}
131131
132132static WRITE32_HANDLER( f3_sound_bankswitch_w )
r4679r4680
361361
362362static TIMER_CALLBACK( f3_interrupt3 )
363363{
364   cpu_set_input_line(machine->cpu[0], 3, HOLD_LINE);   // some signal from video hardware?
364   cputag_set_input_line(machine, "maincpu", 3, HOLD_LINE);   // some signal from video hardware?
365365}
366366
367367static INTERRUPT_GEN( f3_interrupt2 )
r4679r4680
373373static MACHINE_RESET( f3 )
374374{
375375   taito_f3_soundsystem_reset(machine);
376   cpu_set_input_line(machine->cpu[1], INPUT_LINE_RESET, ASSERT_LINE);
376   cputag_set_input_line(machine, "audiocpu", INPUT_LINE_RESET, ASSERT_LINE);
377377
378378   f3_68681_reset(machine);
379379}
r4679r4680
36693669      }
36703670   }
36713671
3672   memory_install_read32_device_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), oki, 0x4a001c, 0x4a001f, 0, 0, bubsympb_oki_r );
3673   memory_install_write32_device_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), oki, 0x4a001c, 0x4a001f, 0, 0, bubsympb_oki_w );
3672   memory_install_read32_device_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), oki, 0x4a001c, 0x4a001f, 0, 0, bubsympb_oki_r );
3673   memory_install_write32_device_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), oki, 0x4a001c, 0x4a001f, 0, 0, bubsympb_oki_w );
36743674}
36753675
36763676
src/mame/drivers/jpmsys5.c
r4679r4680
8181
8282static void tms_interrupt(running_machine *machine, int state)
8383{
84   cpu_set_input_line(machine->cpu[0], INT_TMS34061, state);
84   cputag_set_input_line(machine, "maincpu", INT_TMS34061, state);
8585}
8686
8787static const struct tms34061_interface tms34061intf =
r4679r4680
460460
461461static void ptm_irq(running_machine *machine, int state)
462462{
463   cpu_set_input_line(machine->cpu[0], INT_6840PTM, state ? ASSERT_LINE : CLEAR_LINE);
463   cputag_set_input_line(machine, "maincpu", INT_6840PTM, state ? ASSERT_LINE : CLEAR_LINE);
464464}
465465
466466static const ptm6840_interface ptm_intf =
r4679r4680
480480
481481static WRITE_LINE_DEVICE_HANDLER( acia_irq )
482482{
483   cpu_set_input_line(device->machine->cpu[0], INT_6850ACIA, state ? CLEAR_LINE : ASSERT_LINE);
483   cputag_set_input_line(device->machine, "maincpu", INT_6850ACIA, state ? CLEAR_LINE : ASSERT_LINE);
484484}
485485
486486/* Clocks are incorrect */
src/mame/drivers/gaelco2.c
r4679r4680
5656                            MANIAC SQUARE (FINAL)
5757  ============================================================================*/
5858
59static ADDRESS_MAP_START( maniacsq_readmem, ADDRESS_SPACE_PROGRAM, 16 )
60   AM_RANGE(0x000000, 0x03ffff) AM_READ(SMH_ROM)         /* ROM */
61   AM_RANGE(0x202890, 0x2028ff) AM_DEVREAD("gaelco", gaelcosnd_r)      /* Sound Registers */
62   AM_RANGE(0x200000, 0x20ffff) AM_READ(SMH_RAM)         /* Video RAM */
63   AM_RANGE(0x210000, 0x211fff) AM_READ(SMH_RAM)         /* Palette */
64   AM_RANGE(0x218004, 0x218009) AM_READ(SMH_RAM)         /* Video Registers */
65   AM_RANGE(0x300000, 0x300001) AM_READ_PORT("IN0")      /* DSW #1 + Input 1P */
66   AM_RANGE(0x300002, 0x300003) AM_READ_PORT("IN1")      /* DSW #2 + Input 2P */
67   AM_RANGE(0x320000, 0x320001) AM_READ_PORT("COIN")      /* COINSW + SERVICESW */
68   AM_RANGE(0xfe0000, 0xfeffff) AM_READ(SMH_RAM)         /* Work RAM */
59static ADDRESS_MAP_START( maniacsq_map, ADDRESS_SPACE_PROGRAM, 16 )
60   AM_RANGE(0x000000, 0x03ffff) AM_ROM                                                            /* ROM */
61   AM_RANGE(0x202890, 0x2028ff) AM_DEVREADWRITE("gaelco", gaelcosnd_r, gaelcosnd_w) AM_BASE(&gaelco_sndregs)      /* Sound Registers */
62   AM_RANGE(0x200000, 0x20ffff) AM_RAM_WRITE(gaelco2_vram_w) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)      /* Video RAM */
63   AM_RANGE(0x210000, 0x211fff) AM_RAM_WRITE(gaelco2_palette_w) AM_BASE(&paletteram16)                        /* Palette */
64   AM_RANGE(0x218004, 0x218009) AM_RAM AM_BASE(&gaelco2_vregs)                                          /* Video Registers */
65   AM_RANGE(0x300000, 0x300001) AM_READ_PORT("IN0")                                                /* DSW #1 + Input 1P */
66   AM_RANGE(0x300002, 0x300003) AM_READ_PORT("IN1")                                                /* DSW #2 + Input 2P */
67   AM_RANGE(0x30004a, 0x30004b) AM_WRITENOP                                                      /* Sound muting? */
68   AM_RANGE(0x320000, 0x320001) AM_READ_PORT("COIN")                                                /* COINSW + SERVICESW */
69   AM_RANGE(0x500000, 0x500001) AM_WRITE(gaelco2_coin_w)                                             /* Coin lockout + counters */
70   AM_RANGE(0xfe0000, 0xfeffff) AM_RAM                                                            /* Work RAM */
6971ADDRESS_MAP_END
7072
71static ADDRESS_MAP_START( maniacsq_writemem, ADDRESS_SPACE_PROGRAM, 16 )
72   AM_RANGE(0x000000, 0x03ffff) AM_WRITE(SMH_ROM)                     /* ROM */
73   AM_RANGE(0x202890, 0x2028ff) AM_DEVWRITE("gaelco", gaelcosnd_w) AM_BASE(&gaelco_sndregs)      /* Sound Registers */
74   AM_RANGE(0x200000, 0x20ffff) AM_WRITE(gaelco2_vram_w) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)   /* Video RAM */
75   AM_RANGE(0x210000, 0x211fff) AM_WRITE(gaelco2_palette_w) AM_BASE(&paletteram16)   /* Palette */
76   AM_RANGE(0x218004, 0x218009) AM_WRITE(SMH_RAM) AM_BASE(&gaelco2_vregs)         /* Video Registers */
77   AM_RANGE(0x30004a, 0x30004b) AM_WRITENOP                     /* Sound muting? */
78   AM_RANGE(0x500000, 0x500001) AM_WRITE(gaelco2_coin_w)                  /* Coin lockout + counters */
79   AM_RANGE(0xfe0000, 0xfeffff) AM_WRITE(SMH_RAM)                     /* Work RAM */
80ADDRESS_MAP_END
8173
82
8374static INPUT_PORTS_START( maniacsq )
8475   PORT_START("IN0")
8576   PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1)
r4679r4680
167158static MACHINE_DRIVER_START( maniacsq )
168159   /* basic machine hardware */
169160   MDRV_CPU_ADD("maincpu", M68000, 26000000/2)      /* 13 MHz? */
170   MDRV_CPU_PROGRAM_MAP(maniacsq_readmem, maniacsq_writemem)
161   MDRV_CPU_PROGRAM_MAP(maniacsq_map,0)
171162   MDRV_CPU_VBLANK_INT("screen", irq6_line_hold)
172163
173164   /* video hardware */
r4679r4680
223214static READ16_HANDLER(p2_gun_x) {return (input_port_read(space->machine, "LIGHT1_X") * 320 / 0x100) + 1;}
224215static READ16_HANDLER(p2_gun_y) {return (input_port_read(space->machine, "LIGHT1_Y") * 240 / 0x100) - 4;}
225216
226static ADDRESS_MAP_START( bang_readmem, ADDRESS_SPACE_PROGRAM, 16 )
227    AM_RANGE(0x000000, 0x0fffff) AM_READ(SMH_ROM) /* ROM */
228    AM_RANGE(0x202890, 0x2028ff) AM_DEVREAD("gaelco", gaelcosnd_r) /* Sound Registers */
229    AM_RANGE(0x200000, 0x20ffff) AM_READ(SMH_RAM) /* Video RAM */
230    AM_RANGE(0x210000, 0x211fff) AM_READ(SMH_RAM) /* Palette */
231    AM_RANGE(0x218004, 0x218009) AM_READ(SMH_RAM) /* Video Registers */
217static ADDRESS_MAP_START( bang_map, ADDRESS_SPACE_PROGRAM, 16 )
218    AM_RANGE(0x000000, 0x0fffff) AM_ROM                                                         /* ROM */
219    AM_RANGE(0x202890, 0x2028ff) AM_DEVREADWRITE("gaelco", gaelcosnd_r, gaelcosnd_w) AM_BASE(&gaelco_sndregs)   /* Sound Registers */
220    AM_RANGE(0x200000, 0x20ffff) AM_RAM_WRITE(gaelco2_vram_w) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)   /* Video RAM */
221    AM_RANGE(0x210000, 0x211fff) AM_RAM_WRITE(gaelco2_palette_w) AM_BASE(&paletteram16)                     /* Palette */
222    AM_RANGE(0x218004, 0x218009) AM_READ(SMH_RAM)                                                 /* Video Registers */
223   AM_RANGE(0x218004, 0x218007) AM_WRITE(SMH_RAM) AM_BASE(&gaelco2_vregs)                              /* Video Registers */
224   AM_RANGE(0x218008, 0x218009) AM_WRITENOP                                                   /* CLR INT Video */
232225    AM_RANGE(0x300000, 0x300001) AM_READ_PORT("P1")
233    AM_RANGE(0x300002, 0x300003) AM_READNOP /* Random number generator? */
226    AM_RANGE(0x300002, 0x300003) AM_READNOP                                                    /* Random number generator? */
227   AM_RANGE(0x300000, 0x300003) AM_WRITE(gaelco2_coin2_w)                                          /* Coin Counters */
228   AM_RANGE(0x300008, 0x300009) AM_WRITE(gaelco2_eeprom_data_w)                                    /* EEPROM data */
229   AM_RANGE(0x30000a, 0x30000b) AM_WRITE(gaelco2_eeprom_sk_w)                                       /* EEPROM serial clock */
230   AM_RANGE(0x30000c, 0x30000d) AM_WRITE(gaelco2_eeprom_cs_w)                                       /* EEPROM chip select */
234231    AM_RANGE(0x300010, 0x300011) AM_READ_PORT("P2")
235232    AM_RANGE(0x300020, 0x300021) AM_READ_PORT("COIN")
236    AM_RANGE(0x310000, 0x310001) AM_READ(p1_gun_x)/* Gun 1P X */
237    AM_RANGE(0x310002, 0x310003) AM_READ(p2_gun_x)/* Gun 2P X */
238    AM_RANGE(0x310004, 0x310005) AM_READ(p1_gun_y)/* Gun 1P Y */
239    AM_RANGE(0x310006, 0x310007) AM_READ(p2_gun_y)/* Gun 2P Y */
240    AM_RANGE(0xfe0000, 0xfeffff) AM_READ(SMH_RAM) /* Work RAM */
233    AM_RANGE(0x310000, 0x310001) AM_READ(p1_gun_x) AM_WRITE(bang_clr_gun_int_w)                           /* Gun 1P X */ /* CLR INT Gun */
234    AM_RANGE(0x310002, 0x310003) AM_READ(p2_gun_x)                                                /* Gun 2P X */
235    AM_RANGE(0x310004, 0x310005) AM_READ(p1_gun_y)                                                /* Gun 1P Y */
236    AM_RANGE(0x310006, 0x310007) AM_READ(p2_gun_y)                                                /* Gun 2P Y */
237    AM_RANGE(0xfe0000, 0xfeffff) AM_RAM                                                         /* Work RAM */
241238ADDRESS_MAP_END
242239
243static ADDRESS_MAP_START( bang_writemem, ADDRESS_SPACE_PROGRAM, 16 )
244   AM_RANGE(0x000000, 0x0fffff) AM_WRITE(SMH_ROM)                     /* ROM */
245   AM_RANGE(0x202890, 0x2028ff) AM_DEVWRITE("gaelco", gaelcosnd_w) AM_BASE(&gaelco_sndregs)      /* Sound Registers */
246   AM_RANGE(0x200000, 0x20ffff) AM_WRITE(gaelco2_vram_w) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)   /* Video RAM */
247   AM_RANGE(0x210000, 0x211fff) AM_WRITE(gaelco2_palette_w) AM_BASE(&paletteram16)   /* Palette */
248   AM_RANGE(0x218004, 0x218007) AM_WRITE(SMH_RAM) AM_BASE(&gaelco2_vregs)   /* Video Registers */
249   AM_RANGE(0x218008, 0x218009) AM_WRITENOP                     /* CLR INT Video */
250   AM_RANGE(0x300000, 0x300003) AM_WRITE(gaelco2_coin2_w)               /* Coin Counters */
251   AM_RANGE(0x300008, 0x300009) AM_WRITE(gaelco2_eeprom_data_w)         /* EEPROM data */
252   AM_RANGE(0x30000a, 0x30000b) AM_WRITE(gaelco2_eeprom_sk_w)            /* EEPROM serial clock */
253   AM_RANGE(0x30000c, 0x30000d) AM_WRITE(gaelco2_eeprom_cs_w)            /* EEPROM chip select */
254   AM_RANGE(0x310000, 0x310001) AM_WRITE(bang_clr_gun_int_w)            /* CLR INT Gun */
255   AM_RANGE(0xfe0000, 0xfeffff) AM_WRITE(SMH_RAM)                     /* Work RAM */
256ADDRESS_MAP_END
257240
258
259241static INPUT_PORTS_START( bang )
260242   PORT_START("P1")
261243   PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_IMPULSE(1) PORT_PLAYER(1)
r4679r4680
295277static MACHINE_DRIVER_START( bang )
296278   /* basic machine hardware */
297279   MDRV_CPU_ADD("maincpu", M68000, 30000000/2)         /* 15 MHz */
298   MDRV_CPU_PROGRAM_MAP(bang_readmem, bang_writemem)
280   MDRV_CPU_PROGRAM_MAP(bang_map,0)
299281   MDRV_CPU_VBLANK_INT_HACK(bang_interrupt, 6)
300282
301283   MDRV_NVRAM_HANDLER(gaelco2)
r4679r4680
389371  ============================================================================*/
390372
391373
392static ADDRESS_MAP_START( alighunt_readmem, ADDRESS_SPACE_PROGRAM, 16 )
393   AM_RANGE(0x000000, 0x0fffff) AM_READ(SMH_ROM)         /* ROM */
394   AM_RANGE(0x202890, 0x2028ff) AM_DEVREAD("gaelco", gaelcosnd_r)      /* Sound Registers */
395   AM_RANGE(0x200000, 0x20ffff) AM_READ(SMH_RAM)         /* Video RAM */
396   AM_RANGE(0x210000, 0x211fff) AM_READ(SMH_RAM)         /* Palette */
397   AM_RANGE(0x218004, 0x218009) AM_READ(SMH_RAM)         /* Video Registers */
398   AM_RANGE(0x300000, 0x300001) AM_READ_PORT("IN0")      /* DSW #1 + Input 1P */
399   AM_RANGE(0x300002, 0x300003) AM_READ_PORT("IN1")      /* DSW #2 + Input 2P */
400   AM_RANGE(0x320000, 0x320001) AM_READ_PORT("COIN")      /* COINSW + SERVICESW */
401   AM_RANGE(0xfe0000, 0xfeffff) AM_READ(SMH_RAM)         /* Work RAM */
374static ADDRESS_MAP_START( alighunt_map, ADDRESS_SPACE_PROGRAM, 16 )
375   AM_RANGE(0x000000, 0x0fffff) AM_ROM                                                            /* ROM */
376   AM_RANGE(0x202890, 0x2028ff) AM_DEVREADWRITE("gaelco", gaelcosnd_r, gaelcosnd_w) AM_BASE(&gaelco_sndregs)      /* Sound Registers */
377   AM_RANGE(0x200000, 0x20ffff) AM_RAM_WRITE(gaelco2_vram_w) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)      /* Video RAM */
378   AM_RANGE(0x210000, 0x211fff) AM_RAM_WRITE(gaelco2_palette_w) AM_BASE(&paletteram16)                        /* Palette */
379   AM_RANGE(0x218004, 0x218009) AM_RAM AM_BASE(&gaelco2_vregs)                                          /* Video Registers */
380   AM_RANGE(0x300000, 0x300001) AM_READ_PORT("IN0")                                                /* DSW #1 + Input 1P */
381   AM_RANGE(0x300002, 0x300003) AM_READ_PORT("IN1")                                                /* DSW #2 + Input 2P */
382   AM_RANGE(0x320000, 0x320001) AM_READ_PORT("COIN")                                                /* COINSW + SERVICESW */
383   AM_RANGE(0x500000, 0x500001) AM_WRITE(gaelco2_coin_w)                                             /* Coin lockout + counters */
384   AM_RANGE(0x500006, 0x500007) AM_WRITENOP                                                      /* ??? */
385   AM_RANGE(0xfe0000, 0xfeffff) AM_RAM                                                            /* Work RAM */
402386ADDRESS_MAP_END
403387
404static ADDRESS_MAP_START( alighunt_writemem, ADDRESS_SPACE_PROGRAM, 16 )
405   AM_RANGE(0x000000, 0x0fffff) AM_WRITE(SMH_ROM)                     /* ROM */
406   AM_RANGE(0x202890, 0x2028ff) AM_DEVWRITE("gaelco", gaelcosnd_w) AM_BASE(&gaelco_sndregs)      /* Sound Registers */
407   AM_RANGE(0x200000, 0x20ffff) AM_WRITE(gaelco2_vram_w) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)   /* Video RAM */
408   AM_RANGE(0x210000, 0x211fff) AM_WRITE(gaelco2_palette_w) AM_BASE(&paletteram16)   /* Palette */
409   AM_RANGE(0x218004, 0x218009) AM_WRITE(SMH_RAM) AM_BASE(&gaelco2_vregs)         /* Video Registers */
410   AM_RANGE(0x500000, 0x500001) AM_WRITE(gaelco2_coin_w)                  /* Coin lockout + counters */
411   AM_RANGE(0x500006, 0x500007) AM_WRITENOP                     /* ??? */
412   AM_RANGE(0xfe0000, 0xfeffff) AM_WRITE(SMH_RAM)                     /* Work RAM */
413ADDRESS_MAP_END
414388
415
416389static INPUT_PORTS_START( alighunt )
417390   PORT_START("IN0")
418391   PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1)
r4679r4680
499472static MACHINE_DRIVER_START( alighunt )
500473   /* basic machine hardware */
501474   MDRV_CPU_ADD("maincpu", M68000, 24000000/2)         /* 12 MHz */
502   MDRV_CPU_PROGRAM_MAP(alighunt_readmem, alighunt_writemem)
475   MDRV_CPU_PROGRAM_MAP(alighunt_map,0)
503476   MDRV_CPU_VBLANK_INT("screen", irq6_line_hold)
504477
505478   /* video hardware */
r4679r4680
610583   return 0x0200;
611584}
612585
613static ADDRESS_MAP_START( touchgo_readmem, ADDRESS_SPACE_PROGRAM, 16 )
614   AM_RANGE(0x000000, 0x0fffff) AM_READ(SMH_ROM)         /* ROM */
615   AM_RANGE(0x202890, 0x2028ff) AM_DEVREAD("gaelco", gaelcosnd_r)      /* Sound Registers */
616   AM_RANGE(0x200000, 0x20ffff) AM_READ(SMH_RAM)         /* Video RAM */
617   AM_RANGE(0x210000, 0x211fff) AM_READ(SMH_RAM)         /* Palette */
618   AM_RANGE(0x218004, 0x218009) AM_READ(SMH_RAM)         /* Video Registers */
619   AM_RANGE(0x300000, 0x300001) AM_READ_PORT("IN0")      /* DSW #1 + Input 1P */
620   AM_RANGE(0x300002, 0x300003) AM_READ_PORT("IN1")      /* DSW #2 + Input 2P */
621   AM_RANGE(0x300004, 0x300005) AM_READ_PORT("IN2")      /* COINSW + Input 3P */
622   AM_RANGE(0x300006, 0x300007) AM_READ_PORT("IN3")      /* SERVICESW + Input 4P */
623   AM_RANGE(0xfefffa, 0xfefffb) AM_READ(dallas_kludge_r)   /* DS5002FP related patch */
624   AM_RANGE(0xfe0000, 0xfeffff) AM_READ(SMH_RAM)         /* Work RAM */
586static ADDRESS_MAP_START( touchgo_map, ADDRESS_SPACE_PROGRAM, 16 )
587   AM_RANGE(0x000000, 0x0fffff) AM_ROM                                                               /* ROM */
588   AM_RANGE(0x202890, 0x2028ff) AM_DEVREADWRITE("gaelco", gaelcosnd_r, gaelcosnd_w) AM_BASE(&gaelco_sndregs)         /* Sound Registers */
589   AM_RANGE(0x200000, 0x20ffff) AM_RAM_WRITE(gaelco2_vram_w) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)         /* Video RAM */
590   AM_RANGE(0x210000, 0x211fff) AM_RAM_WRITE(gaelco2_palette_w) AM_BASE(&paletteram16)                           /* Palette */
591   AM_RANGE(0x218004, 0x218009) AM_RAM AM_BASE(&gaelco2_vregs)                                             /* Video Registers */
592   AM_RANGE(0x300000, 0x300001) AM_READ_PORT("IN0")                                                   /* DSW #1 + Input 1P */
593   AM_RANGE(0x300002, 0x300003) AM_READ_PORT("IN1")                                                   /* DSW #2 + Input 2P */
594   AM_RANGE(0x300004, 0x300005) AM_READ_PORT("IN2")                                                   /* COINSW + Input 3P */
595   AM_RANGE(0x300006, 0x300007) AM_READ_PORT("IN3")                                                   /* SERVICESW + Input 4P */
596   AM_RANGE(0x500000, 0x50001f) AM_WRITE(touchgo_coin_w)                                                /* Coin counters */
597   AM_RANGE(0xfefffa, 0xfefffb) AM_READWRITE(dallas_kludge_r, SMH_RAM)                                       /* DS5002FP related patch */
598   AM_RANGE(0xfe0000, 0xfeffff) AM_RAM                                                               /* Work RAM */
625599ADDRESS_MAP_END
626600
627static ADDRESS_MAP_START( touchgo_writemem, ADDRESS_SPACE_PROGRAM, 16 )
628   AM_RANGE(0x000000, 0x0fffff) AM_WRITE(SMH_ROM)                     /* ROM */
629   AM_RANGE(0x202890, 0x2028ff) AM_DEVWRITE("gaelco", gaelcosnd_w) AM_BASE(&gaelco_sndregs)      /* Sound Registers */
630   AM_RANGE(0x200000, 0x20ffff) AM_WRITE(gaelco2_vram_w) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)   /* Video RAM */
631   AM_RANGE(0x210000, 0x211fff) AM_WRITE(gaelco2_palette_w) AM_BASE(&paletteram16)   /* Palette */
632   AM_RANGE(0x218004, 0x218009) AM_WRITE(SMH_RAM) AM_BASE(&gaelco2_vregs)         /* Video Registers */
633   AM_RANGE(0x500000, 0x50001f) AM_WRITE(touchgo_coin_w)                  /* Coin counters */
634   AM_RANGE(0xfe0000, 0xfeffff) AM_WRITE(SMH_RAM)                     /* Work RAM */
635ADDRESS_MAP_END
636601
637
638602static INPUT_PORTS_START( touchgo )
639603   PORT_START("IN0")
640604   PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1)
r4679r4680
751715static MACHINE_DRIVER_START( touchgo )
752716   /* basic machine hardware */
753717   MDRV_CPU_ADD("maincpu", M68000, 32000000/2)         /* 16 MHz */
754   MDRV_CPU_PROGRAM_MAP(touchgo_readmem, touchgo_writemem)
718   MDRV_CPU_PROGRAM_MAP(touchgo_map,0)
755719   MDRV_CPU_VBLANK_INT("lscreen", irq6_line_hold)
756720
757721   /* video hardware */
r4679r4680
884848                            SNOW BOARD
885849  ============================================================================*/
886850
887static ADDRESS_MAP_START( snowboar_readmem, ADDRESS_SPACE_PROGRAM, 16 )
888   AM_RANGE(0x000000, 0x0fffff) AM_READ(SMH_ROM)         /* ROM */
889   AM_RANGE(0x202890, 0x2028ff) AM_DEVREAD("gaelco", gaelcosnd_r)      /* Sound Registers */
890   AM_RANGE(0x200000, 0x20ffff) AM_READ(SMH_RAM)         /* Video RAM */
891   AM_RANGE(0x210000, 0x211fff) AM_READ(SMH_RAM)         /* Palette */
892   AM_RANGE(0x212000, 0x213fff) AM_READ(SMH_RAM)         /* Extra RAM */
893   AM_RANGE(0x218004, 0x218009) AM_READ(SMH_RAM)         /* Video Registers */
851static ADDRESS_MAP_START( snowboar_map, ADDRESS_SPACE_PROGRAM, 16 )
852   AM_RANGE(0x000000, 0x0fffff) AM_ROM                                                                  /* ROM */
853   AM_RANGE(0x202890, 0x2028ff) AM_DEVREADWRITE("gaelco", gaelcosnd_r, gaelcosnd_w) AM_BASE(&gaelco_sndregs)            /* Sound Registers */
854   AM_RANGE(0x200000, 0x20ffff) AM_RAM_WRITE(gaelco2_vram_w) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)            /* Video RAM */
855   AM_RANGE(0x210000, 0x211fff) AM_RAM_WRITE(gaelco2_palette_w) AM_BASE(&paletteram16)                              /* Palette */
856   AM_RANGE(0x212000, 0x213fff) AM_RAM                                                                  /* Extra RAM */
857   AM_RANGE(0x218004, 0x218009) AM_RAM AM_BASE(&gaelco2_vregs)                                                /* Video Registers */
894858   AM_RANGE(0x300000, 0x300001) AM_READ_PORT("P1")
859   AM_RANGE(0x300000, 0x300003) AM_WRITE(gaelco2_coin2_w)                                                   /* Coin Counters */
860   AM_RANGE(0x300008, 0x300009) AM_WRITE(gaelco2_eeprom_data_w)                                             /* EEPROM data */
861   AM_RANGE(0x30000a, 0x30000b) AM_WRITE(gaelco2_eeprom_sk_w)                                                /* EEPROM serial clock */
862   AM_RANGE(0x30000c, 0x30000d) AM_WRITE(gaelco2_eeprom_cs_w)                                                /* EEPROM chip select */
895863   AM_RANGE(0x300010, 0x300011) AM_READ_PORT("P2")
896864   AM_RANGE(0x300020, 0x300021) AM_READ_PORT("COIN")
897   AM_RANGE(0x310000, 0x31ffff) AM_READ(snowboar_protection_r)/* Protection */
898   AM_RANGE(0xfe0000, 0xfeffff) AM_READ(SMH_RAM)         /* Work RAM */
865   AM_RANGE(0x310000, 0x31ffff) AM_READWRITE(snowboar_protection_r,snowboar_protection_w) AM_BASE(&snowboar_protection)   /* Protection */
866   AM_RANGE(0xfe0000, 0xfeffff) AM_RAM                                                                  /* Work RAM */
899867ADDRESS_MAP_END
900868
901static ADDRESS_MAP_START( snowboar_writemem, ADDRESS_SPACE_PROGRAM, 16 )
902   AM_RANGE(0x000000, 0x0fffff) AM_WRITE(SMH_ROM)                     /* ROM */
903   AM_RANGE(0x202890, 0x2028ff) AM_DEVWRITE("gaelco", gaelcosnd_w) AM_BASE(&gaelco_sndregs)      /* Sound Registers */
904   AM_RANGE(0x200000, 0x20ffff) AM_WRITE(gaelco2_vram_w) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)   /* Video RAM */
905   AM_RANGE(0x210000, 0x211fff) AM_WRITE(gaelco2_palette_w) AM_BASE(&paletteram16)   /* Palette */
906   AM_RANGE(0x212000, 0x213fff) AM_WRITE(SMH_RAM)                     /* Extra RAM */
907   AM_RANGE(0x218004, 0x218009) AM_WRITE(SMH_RAM) AM_BASE(&gaelco2_vregs)         /* Video Registers */
908   AM_RANGE(0x300000, 0x300003) AM_WRITE(gaelco2_coin2_w)               /* Coin Counters */
909   AM_RANGE(0x300008, 0x300009) AM_WRITE(gaelco2_eeprom_data_w)            /* EEPROM data */
910   AM_RANGE(0x30000a, 0x30000b) AM_WRITE(gaelco2_eeprom_sk_w)            /* EEPROM serial clock */
911   AM_RANGE(0x30000c, 0x30000d) AM_WRITE(gaelco2_eeprom_cs_w)            /* EEPROM chip select */
912   AM_RANGE(0x310000, 0x31ffff) AM_WRITE(snowboar_protection_w) AM_BASE(&snowboar_protection)/* Protection */
913   AM_RANGE(0xfe0000, 0xfeffff) AM_WRITE(SMH_RAM)                     /* Work RAM */
914ADDRESS_MAP_END
915869
916
917870static INPUT_PORTS_START( snowboar )
918871   PORT_START("P1")
919872   PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1)
r4679r4680
955908static MACHINE_DRIVER_START( snowboar )
956909   /* basic machine hardware */
957910   MDRV_CPU_ADD("maincpu", M68000, 30000000/2)         /* 15 MHz */
958   MDRV_CPU_PROGRAM_MAP(snowboar_readmem, snowboar_writemem)
911   MDRV_CPU_PROGRAM_MAP(snowboar_map,0)
959912   MDRV_CPU_VBLANK_INT("screen", irq6_line_hold)
960913
961914   MDRV_NVRAM_HANDLER(gaelco2)
r4679r4680
10811034                            WORLD RALLY 2
10821035  ============================================================================*/
10831036
1084static ADDRESS_MAP_START( wrally2_readmem, ADDRESS_SPACE_PROGRAM, 16 )
1085   AM_RANGE(0x000000, 0x0fffff) AM_READ(SMH_ROM)         /* ROM */
1086   AM_RANGE(0x202890, 0x2028ff) AM_DEVREAD("gaelco", gaelcosnd_r)      /* Sound Registers */
1087   AM_RANGE(0x200000, 0x20ffff) AM_READ(SMH_RAM)         /* Video RAM */
1088   AM_RANGE(0x210000, 0x211fff) AM_READ(SMH_RAM)         /* Palette */
1089   AM_RANGE(0x212000, 0x213fff) AM_READ(SMH_RAM)         /* Extra RAM */
1090   AM_RANGE(0x218004, 0x218009) AM_READ(SMH_RAM)         /* Video Registers */
1091   AM_RANGE(0x300000, 0x300001) AM_READ_PORT("IN0")      /* DIPSW #2 + Inputs 1P */
1092   AM_RANGE(0x300002, 0x300003) AM_READ_PORT("IN1")      /* DIPSW #1 */
1093   AM_RANGE(0x300004, 0x300005) AM_READ_PORT("IN2")      /* Inputs 2P + COINSW */
1094   AM_RANGE(0x300006, 0x300007) AM_READ_PORT("IN3")      /* SERVICESW */
1095   AM_RANGE(0xfe0000, 0xfeffff) AM_READ(SMH_RAM)         /* Work RAM */
1037static ADDRESS_MAP_START( wrally2_map, ADDRESS_SPACE_PROGRAM, 16 )
1038   AM_RANGE(0x000000, 0x0fffff) AM_ROM                                                         /* ROM */
1039   AM_RANGE(0x202890, 0x2028ff) AM_DEVREADWRITE("gaelco", gaelcosnd_r, gaelcosnd_w) AM_BASE(&gaelco_sndregs)   /* Sound Registers */
1040   AM_RANGE(0x200000, 0x20ffff) AM_RAM_WRITE(gaelco2_vram_w) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)   /* Video RAM */
1041   AM_RANGE(0x210000, 0x211fff) AM_RAM_WRITE(gaelco2_palette_w) AM_BASE(&paletteram16)                     /* Palette */
1042   AM_RANGE(0x212000, 0x213fff) AM_RAM                                                         /* Extra RAM */
1043   AM_RANGE(0x218004, 0x218009) AM_RAM AM_BASE(&gaelco2_vregs)                                       /* Video Registers */
1044   AM_RANGE(0x300000, 0x300001) AM_READ_PORT("IN0")                                             /* DIPSW #2 + Inputs 1P */
1045   AM_RANGE(0x300002, 0x300003) AM_READ_PORT("IN1")                                             /* DIPSW #1 */
1046   AM_RANGE(0x300004, 0x300005) AM_READ_PORT("IN2")                                             /* Inputs 2P + COINSW */
1047   AM_RANGE(0x300006, 0x300007) AM_READ_PORT("IN3")                                             /* SERVICESW */
1048   AM_RANGE(0x400000, 0x400011) AM_WRITE(wrally2_coin_w)                                          /* Coin Counters */
1049   AM_RANGE(0x400028, 0x400029) AM_WRITE(wrally2_adc_clk)                                          /* ADCs clock-in line */
1050   AM_RANGE(0x400030, 0x400031) AM_WRITE(wrally2_adc_cs)                                          /* ADCs chip select line */
1051   AM_RANGE(0xfe0000, 0xfeffff) AM_RAM                                                         /* Work RAM */
10961052ADDRESS_MAP_END
10971053
1098static ADDRESS_MAP_START( wrally2_writemem, ADDRESS_SPACE_PROGRAM, 16 )
1099   AM_RANGE(0x000000, 0x0fffff) AM_WRITE(SMH_ROM)                           /* ROM */
1100   AM_RANGE(0x202890, 0x2028ff) AM_DEVWRITE("gaelco", gaelcosnd_w) AM_BASE(&gaelco_sndregs)      /* Sound Registers */
1101   AM_RANGE(0x200000, 0x20ffff) AM_WRITE(gaelco2_vram_w) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)   /* Video RAM */
1102   AM_RANGE(0x210000, 0x211fff) AM_WRITE(gaelco2_palette_w) AM_BASE(&paletteram16)   /* Palette */
1103   AM_RANGE(0x212000, 0x213fff) AM_WRITE(SMH_RAM)                           /* Extra RAM */
1104   AM_RANGE(0x218004, 0x218009) AM_WRITE(SMH_RAM) AM_BASE(&gaelco2_vregs)         /* Video Registers */
1105   AM_RANGE(0x400000, 0x400011) AM_WRITE(wrally2_coin_w)                     /* Coin Counters */
1106   AM_RANGE(0x400028, 0x400029) AM_WRITE(wrally2_adc_clk)                           /* ADCs clock-in line */
1107   AM_RANGE(0x400030, 0x400031) AM_WRITE(wrally2_adc_cs)                           /* ADCs chip select line */
1108   AM_RANGE(0xfe0000, 0xfeffff) AM_WRITE(SMH_RAM)                           /* Work RAM */
1109ADDRESS_MAP_END
11101054
1111
11121055static INPUT_PORTS_START( wrally2 )
11131056   PORT_START("IN0")
11141057   PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1)
r4679r4680
12071150static MACHINE_DRIVER_START( wrally2 )
12081151   /* basic machine hardware */
12091152   MDRV_CPU_ADD("maincpu", M68000, 26000000/2)         /* 13 MHz */
1210   MDRV_CPU_PROGRAM_MAP(wrally2_readmem, wrally2_writemem)
1153   MDRV_CPU_PROGRAM_MAP(wrally2_map,0)
12111154   MDRV_CPU_VBLANK_INT("lscreen", irq6_line_hold)
12121155
12131156   MDRV_NVRAM_HANDLER(gaelco2)
src/mame/drivers/homerun.c
r4679r4680
8181
8282static ADDRESS_MAP_START( homerun_memmap, ADDRESS_SPACE_PROGRAM, 8 )
8383   AM_RANGE(0x0000, 0x3fff) AM_ROM
84   AM_RANGE(0x4000, 0x7fff) AM_READ(SMH_BANK1)
84   AM_RANGE(0x4000, 0x7fff) AM_READ(SMH_BANK(1))
8585   AM_RANGE(0x8000, 0x9fff) AM_RAM_WRITE(homerun_videoram_w) AM_BASE(&homerun_videoram)
8686   AM_RANGE(0xa000, 0xa0ff) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
8787   AM_RANGE(0xb000, 0xb0ff) AM_WRITE(homerun_color_w)
src/mame/drivers/guab.c
r4679r4680
5959
6060static void ptm_irq(running_machine *machine, int state)
6161{
62   cpu_set_input_line(machine->cpu[0], INT_6840PTM, state);
62   cputag_set_input_line(machine, "maincpu", INT_6840PTM, state);
6363}
6464
6565static const ptm6840_interface ptm_intf =
r4679r4680
8383
8484static void tms_interrupt(running_machine *machine, int state)
8585{
86   cpu_set_input_line(machine->cpu[0], INT_TMS34061, state);
86   cputag_set_input_line(machine, "maincpu", INT_TMS34061, state);
8787}
8888
8989static const struct tms34061_interface tms34061intf =
r4679r4680
350350   }
351351
352352   fdc.status |= DATA_REQUEST;
353   cpu_set_input_line(machine->cpu[0], INT_FLOPPYCTRL, ASSERT_LINE);
353   cputag_set_input_line(machine, "maincpu", INT_FLOPPYCTRL, ASSERT_LINE);
354354}
355355
356356
r4679r4680
444444                                             fdc.sector));
445445
446446               /* Trigger a DRQ interrupt on the CPU */
447               cpu_set_input_line(space->machine->cpu[0], INT_FLOPPYCTRL, ASSERT_LINE);
447               cputag_set_input_line(space->machine, "maincpu", INT_FLOPPYCTRL, ASSERT_LINE);
448448               fdc.status |= DATA_REQUEST;
449449               break;
450450            }
r4679r4680
489489         fdc.data = data;
490490
491491         /* Clear the DRQ */
492         cpu_set_input_line(space->machine->cpu[0], INT_FLOPPYCTRL, CLEAR_LINE);
492         cputag_set_input_line(space->machine, "maincpu", INT_FLOPPYCTRL, CLEAR_LINE);
493493
494494         /* Queue an event to write the data if write command was specified */
495495         if (fdc.cmd & 0x20)
r4679r4680
526526         retval = fdc.data;
527527
528528         /* Clear the DRQ */
529         cpu_set_input_line(space->machine->cpu[0], INT_FLOPPYCTRL, CLEAR_LINE);
529         cputag_set_input_line(space->machine, "maincpu", INT_FLOPPYCTRL, CLEAR_LINE);
530530         fdc.status &= ~DATA_REQUEST;
531531         break;
532532      }
r4679r4680
572572   if (newval == 0)
573573   {
574574      UINT32 credit;
575      const address_space *space = cpu_get_address_space(field->port->machine->cpu[0], ADDRESS_SPACE_PROGRAM);
575      const address_space *space = cputag_get_address_space(field->port->machine, "maincpu", ADDRESS_SPACE_PROGRAM);
576576
577577      /* Get the current credit value and add the new coin value */
578578      credit = memory_read_dword(space, 0x8002c) + (UINT32)(FPTR)param;
src/mame/drivers/baraduke.c
r4679r4680
170170
171171static WRITE8_HANDLER( baraduke_irq_ack_w )
172172{
173   cpu_set_input_line(space->machine->cpu[0], 0, CLEAR_LINE);
173   cputag_set_input_line(space->machine, "maincpu", 0, CLEAR_LINE);
174174}
175175
176176
src/mame/drivers/champbas.c
r4679r4680
130130{
131131   int bit = data & 1;
132132
133   cpu_interrupt_enable(space->machine->cpu[0],bit);
133   cpu_interrupt_enable(cputag_get_cpu(space->machine, "maincpu"), bit);
134134   if (!bit)
135      cpu_set_input_line(space->machine->cpu[0], 0, CLEAR_LINE);
135      cputag_set_input_line(space->machine, "maincpu", 0, CLEAR_LINE);
136136}
137137
138138
139139static TIMER_CALLBACK( exctsccr_fm_callback )
140140{
141   cpu_set_input_line_and_vector(machine->cpu[1], 0, HOLD_LINE, 0xff );
141   cputag_set_input_line_and_vector(machine, "audiocpu", 0, HOLD_LINE, 0xff);
142142}
143143
144144static MACHINE_START( exctsccr )
src/mame/drivers/ssozumo.c
r4679r4680
88***************************************************************************/
99
1010#include "driver.h"
11#include "deprecat.h"
1211#include "cpu/m6502/m6502.h"
1312#include "cpu/m6809/m6809.h"
1413#include "sound/ay8910.h"
r4679r4680
2928extern VIDEO_START( ssozumo );
3029extern VIDEO_UPDATE( ssozumo );
3130
32
33static INTERRUPT_GEN( ssozumo_interrupt )
34{
35   static int coin;
36
37   if ((input_port_read(device->machine, "P1") & 0xc0) != 0xc0)
38   {
39      if (coin == 0)
40      {
41         coin = 1;
42         nmi_line_pulse(device);
43         return;
44      }
45   }
46   else coin = 0;
47
48   irq0_line_hold(device);
49}
50
51
5231static WRITE8_HANDLER( ssozumo_sh_command_w )
5332{
54   soundlatch_w(space, offset, data);
55   cpu_set_input_line(space->machine->cpu[1], M6502_IRQ_LINE, HOLD_LINE);
33   soundlatch_w(space, 0, data);
34   cputag_set_input_line(space->machine, "audiocpu", M6502_IRQ_LINE, HOLD_LINE);
5635}
5736
5837
59static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 )
60   AM_RANGE(0x0000, 0x077f) AM_READ(SMH_RAM)
61
62   AM_RANGE(0x2000, 0x27ff) AM_READ(SMH_RAM)
63   AM_RANGE(0x3000, 0x31ff) AM_READ(SMH_RAM)
64
65   AM_RANGE(0x4000, 0x4000) AM_READ_PORT("P1")
66   AM_RANGE(0x4010, 0x4010) AM_READ_PORT("P2")
67   AM_RANGE(0x4020, 0x4020) AM_READ_PORT("DSW2")
38static ADDRESS_MAP_START( ssozumo_map, ADDRESS_SPACE_PROGRAM, 8 )
39   AM_RANGE(0x0000, 0x077f) AM_RAM
40   AM_RANGE(0x0780, 0x07ff) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
41   AM_RANGE(0x2000, 0x23ff) AM_RAM_WRITE(ssozumo_videoram2_w) AM_BASE(&ssozumo_videoram2)
42   AM_RANGE(0x2400, 0x27ff) AM_RAM_WRITE(ssozumo_colorram2_w) AM_BASE(&ssozumo_colorram2)
43   AM_RANGE(0x3000, 0x31ff) AM_RAM_WRITE(ssozumo_videoram_w) AM_BASE(&videoram)
44   AM_RANGE(0x3200, 0x33ff) AM_RAM_WRITE(ssozumo_colorram_w) AM_BASE(&colorram)
45   AM_RANGE(0x3400, 0x35ff) AM_RAM
46   AM_RANGE(0x3600, 0x37ff) AM_RAM
47   AM_RANGE(0x4000, 0x4000) AM_READ_PORT("P1") AM_WRITE(ssozumo_flipscreen_w)
48   AM_RANGE(0x4010, 0x4010) AM_READ_PORT("P2") AM_WRITE(ssozumo_sh_command_w)
49   AM_RANGE(0x4020, 0x4020) AM_READ_PORT("DSW2") AM_WRITE(ssozumo_scroll_w)
6850   AM_RANGE(0x4030, 0x4030) AM_READ_PORT("DSW1")
69
70   AM_RANGE(0x6000, 0xffff) AM_READ(SMH_ROM)
51//  AM_RANGE(0x4030, 0x4030) AM_WRITEONLY
52   AM_RANGE(0x4050, 0x407f) AM_RAM_WRITE(ssozumo_paletteram_w) AM_BASE(&paletteram)
53   AM_RANGE(0x6000, 0xffff) AM_ROM
7154ADDRESS_MAP_END
7255
73
74static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 )
75   AM_RANGE(0x0000, 0x077f) AM_WRITE(SMH_RAM)
76
77   AM_RANGE(0x0780, 0x07ff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
78   AM_RANGE(0x2000, 0x23ff) AM_WRITE(ssozumo_videoram2_w) AM_BASE(&ssozumo_videoram2)
79   AM_RANGE(0x2400, 0x27ff) AM_WRITE(ssozumo_colorram2_w) AM_BASE(&ssozumo_colorram2)
80   AM_RANGE(0x3000, 0x31ff) AM_WRITE(ssozumo_videoram_w) AM_BASE(&videoram)
81   AM_RANGE(0x3200, 0x33ff) AM_WRITE(ssozumo_colorram_w) AM_BASE(&colorram)
82   AM_RANGE(0x3400, 0x35ff) AM_WRITE(SMH_RAM)
83   AM_RANGE(0x3600, 0x37ff) AM_WRITE(SMH_RAM)
84
85   AM_RANGE(0x4000, 0x4000) AM_WRITE(ssozumo_flipscreen_w)
86   AM_RANGE(0x4010, 0x4010) AM_WRITE(ssozumo_sh_command_w)
87   AM_RANGE(0x4020, 0x4020) AM_WRITE(ssozumo_scroll_w)
88//  AM_RANGE(0x4030, 0x4030) AM_WRITE(SMH_RAM)
89   AM_RANGE(0x4050, 0x407f) AM_WRITE(ssozumo_paletteram_w) AM_BASE(&paletteram)
90
91   AM_RANGE(0x6000, 0xffff) AM_WRITE(SMH_ROM)
92ADDRESS_MAP_END
93
94
95static ADDRESS_MAP_START( sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
96   AM_RANGE(0x0000, 0x01ff) AM_READ(SMH_RAM)
97   AM_RANGE(0x2007, 0x2007) AM_READ(soundlatch_r)
98   AM_RANGE(0x4000, 0xffff) AM_READ(SMH_ROM)
99ADDRESS_MAP_END
100
101
102static ADDRESS_MAP_START( sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
103   AM_RANGE(0x0000, 0x01ff) AM_WRITE(SMH_RAM)
56static ADDRESS_MAP_START( ssozumo_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
57   AM_RANGE(0x0000, 0x01ff) AM_RAM
10458   AM_RANGE(0x2000, 0x2001) AM_DEVWRITE("ay1", ay8910_data_address_w)
10559   AM_RANGE(0x2002, 0x2003) AM_DEVWRITE("ay2", ay8910_data_address_w)
10660   AM_RANGE(0x2004, 0x2004) AM_DEVWRITE("dac", dac_signed_w)
10761   AM_RANGE(0x2005, 0x2005) AM_WRITE(interrupt_enable_w)
108   AM_RANGE(0x4000, 0xffff) AM_WRITE(SMH_ROM)
62   AM_RANGE(0x2007, 0x2007) AM_READ(soundlatch_r)
63   AM_RANGE(0x4000, 0xffff) AM_ROM
10964ADDRESS_MAP_END
11065
66static INPUT_CHANGED( coin_inserted )
67{
68   cputag_set_input_line(field->port->machine, "maincpu", INPUT_LINE_NMI, newval ? CLEAR_LINE : ASSERT_LINE);
69}
11170
11271static INPUT_PORTS_START( ssozumo )
11372   PORT_START("P1")   /* IN0 */
r4679r4680
11776   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY
11877   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 )
11978   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 )
120   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 )
121   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 )
79   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_CHANGED(coin_inserted, 0)
80   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_CHANGED(coin_inserted, 0)
12281
12382   PORT_START("P2")   /* IN1 */
12483   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2)
r4679r4680
232191
233192   /* basic machine hardware */
234193   MDRV_CPU_ADD("maincpu", M6502, 1200000)   /* 1.2 MHz ???? */
235   MDRV_CPU_PROGRAM_MAP(readmem,writemem)
236   MDRV_CPU_VBLANK_INT("screen", ssozumo_interrupt)
194   MDRV_CPU_PROGRAM_MAP(ssozumo_map,0)
195   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
237196
238197   MDRV_CPU_ADD("audiocpu", M6502, 975000)       /* 975 kHz ?? */
239   MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem)
240   MDRV_CPU_VBLANK_INT_HACK(nmi_line_pulse,16)   /* IRQs are triggered by the main CPU */
198   MDRV_CPU_PROGRAM_MAP(ssozumo_sound_map,0)
199   MDRV_CPU_PERIODIC_INT(nmi_line_pulse,60*16)   /* not accurate */
241200
242201   /* video hardware */
243202   MDRV_SCREEN_ADD("screen", RASTER)
src/mame/drivers/beaminv.c
r4679r4680
8282   int next_interrupt_number;
8383   int next_vpos;
8484
85   cpu_set_input_line(machine->cpu[0], 0, HOLD_LINE);
85   cputag_set_input_line(machine, "maincpu", 0, HOLD_LINE);
8686
8787   /* set up for next interrupt */
8888   next_interrupt_number = (interrupt_number + 1) % INTERRUPTS_PER_FRAME;
src/mame/drivers/m107.c
r4679r4680
7575   if (scanline == m107_raster_irq_position)
7676   {
7777      video_screen_update_partial(machine->primary_screen, scanline);
78      cpu_set_input_line_and_vector(machine->cpu[0], 0, HOLD_LINE, M107_IRQ_2);
78      cputag_set_input_line_and_vector(machine, "maincpu", 0, HOLD_LINE, M107_IRQ_2);
7979   }
8080
8181   /* VBLANK interrupt */
8282   else if (scanline == video_screen_get_visible_area(machine->primary_screen)->max_y + 1)
8383   {
8484      video_screen_update_partial(machine->primary_screen, scanline);
85      cpu_set_input_line_and_vector(machine->cpu[0], 0, HOLD_LINE, M107_IRQ_0);
85      cputag_set_input_line_and_vector(machine, "maincpu", 0, HOLD_LINE, M107_IRQ_0);
8686   }
8787
8888   /* adjust for next scanline */
r4679r4680
119119   }
120120
121121   if (irqvector & 0x2)      /* YM2151 has precedence */
122      cpu_set_input_line_vector(machine->cpu[1],0,0x18);
122      cpu_set_input_line_vector(cputag_get_cpu(machine, "soundcpu"), 0, 0x18);
123123   else if (irqvector & 0x1)   /* V30 */
124      cpu_set_input_line_vector(machine->cpu[1],0,0x19);
124      cpu_set_input_line_vector(cputag_get_cpu(machine, "soundcpu"), 0, 0x19);
125125
126126   if (irqvector == 0)   /* no IRQs pending */
127      cpu_set_input_line(machine->cpu[1],0,CLEAR_LINE);
127      cputag_set_input_line(machine, "soundcpu", 0, CLEAR_LINE);
128128   else   /* IRQ pending */
129      cpu_set_input_line(machine->cpu[1],0,ASSERT_LINE);
129      cputag_set_input_line(machine, "soundcpu", 0, ASSERT_LINE);
130130}
131131
132132static WRITE16_HANDLER( m107_soundlatch_w )
133133{
134   timer_call_after_resynch(space->machine, NULL, V30_ASSERT,setvector_callback);
134   timer_call_after_resynch(space->machine, NULL, V30_ASSERT, setvector_callback);
135135   soundlatch_w(space, 0, data & 0xff);
136136//      logerror("soundlatch_w %02x\n",data);
137137}
r4679r4680
156156static WRITE16_HANDLER( m107_sound_status_w )
157157{
158158   COMBINE_DATA(&sound_status);
159   cpu_set_input_line_and_vector(space->machine->cpu[0], 0, HOLD_LINE, M107_IRQ_3);
159   cputag_set_input_line_and_vector(space->machine, "maincpu", 0, HOLD_LINE, M107_IRQ_3);
160160}
161161
162162/*****************************************************************************/
r4679r4680
629629{
630630   UINT8 *RAM = memory_region(machine, "maincpu");
631631
632   memcpy(RAM+0xffff0,RAM+0x7fff0,0x10); /* Start vector */
633   memory_set_bankptr(machine, 1,&RAM[0xa0000]); /* Initial bank */
632   memcpy(RAM + 0xffff0, RAM + 0x7fff0, 0x10); /* Start vector */
633   memory_set_bankptr(machine, 1, &RAM[0xa0000]); /* Initial bank */
634634
635635   RAM = memory_region(machine, "soundcpu");
636   memcpy(RAM+0xffff0,RAM+0x1fff0,0x10); /* Sound cpu Start vector */
636   memcpy(RAM + 0xffff0,RAM + 0x1fff0, 0x10); /* Sound cpu Start vector */
637637
638   m107_irq_vectorbase=0x20;
638   m107_irq_vectorbase = 0x20;
639639   m107_spritesystem = 1;
640640}
641641
r4679r4680
643643{
644644   UINT8 *RAM = memory_region(machine, "maincpu");
645645
646   memcpy(RAM+0xffff0,RAM+0x7fff0,0x10); /* Start vector */
647   memory_set_bankptr(machine, 1,&RAM[0xa0000]); /* Initial bank */
646   memcpy(RAM + 0xffff0, RAM + 0x7fff0, 0x10); /* Start vector */
647   memory_set_bankptr(machine, 1, &RAM[0xa0000]); /* Initial bank */
648648
649649   RAM = memory_region(machine, "soundcpu");
650   memcpy(RAM+0xffff0,RAM+0x1fff0,0x10); /* Sound cpu Start vector */
650   memcpy(RAM + 0xffff0, RAM + 0x1fff0, 0x10); /* Sound cpu Start vector */
651651
652   m107_irq_vectorbase=0x80;
652   m107_irq_vectorbase = 0x80;
653653   m107_spritesystem = 0;
654654}
655655
r4679r4680
657657{
658658   UINT8 *RAM = memory_region(machine, "maincpu");
659659
660   memcpy(RAM+0xffff0,RAM+0x7fff0,0x10); /* Start vector */
661   memory_set_bankptr(machine, 1,&RAM[0xa0000]); /* Initial bank */
660   memcpy(RAM + 0xffff0, RAM + 0x7fff0, 0x10); /* Start vector */
661   memory_set_bankptr(machine, 1, &RAM[0xa0000]); /* Initial bank */
662662
663663   RAM = memory_region(machine, "soundcpu");
664   memcpy(RAM+0xffff0,RAM+0x1fff0,0x10); /* Sound cpu Start vector */
664   memcpy(RAM + 0xffff0, RAM + 0x1fff0, 0x10); /* Sound cpu Start vector */
665665
666666
667   m107_irq_vectorbase=0x80;
667   m107_irq_vectorbase = 0x80;
668668   m107_spritesystem = 0;
669669}
670670
src/mame/drivers/ninjaw.c
r4679r4680
213213   /* bit 0 enables cpu B */
214214   /* however this fails when recovering from a save state
215215       if cpu B is disabled !! */
216   cpu_set_input_line(machine->cpu[2], INPUT_LINE_RESET, (cpua_ctrl &0x1) ? CLEAR_LINE : ASSERT_LINE);
216   cputag_set_input_line(machine, "sub", INPUT_LINE_RESET, (cpua_ctrl &0x1) ? CLEAR_LINE : ASSERT_LINE);
217217
218218}
219219
r4679r4680
283283             MEMORY STRUCTURES
284284***********************************************************/
285285
286static ADDRESS_MAP_START( ninjaw_readmem, ADDRESS_SPACE_PROGRAM, 16 )
287   AM_RANGE(0x000000, 0x0bffff) AM_READ(SMH_ROM)
288   AM_RANGE(0x0c0000, 0x0cffff) AM_READ(SMH_RAM)   /* main ram */
289   AM_RANGE(0x200000, 0x200001) AM_READ8(TC0220IOC_portreg_r, 0x00ff)
290   AM_RANGE(0x200002, 0x200003) AM_READ8(TC0220IOC_port_r, 0x00ff)
291   AM_RANGE(0x220000, 0x220003) AM_READ(ninjaw_sound_r)
292   AM_RANGE(0x280000, 0x293fff) AM_READ(TC0100SCN_word_0_r)   /* tilemaps (1st screen) */
293   AM_RANGE(0x2a0000, 0x2a000f) AM_READ(TC0100SCN_ctrl_word_0_r)
294   AM_RANGE(0x2c0000, 0x2d3fff) AM_READ(TC0100SCN_word_1_r)   /* tilemaps (2nd screen) */
295   AM_RANGE(0x2e0000, 0x2e000f) AM_READ(TC0100SCN_ctrl_word_1_r)
296   AM_RANGE(0x300000, 0x313fff) AM_READ(TC0100SCN_word_2_r)   /* tilemaps (3rd screen) */
297   AM_RANGE(0x320000, 0x32000f) AM_READ(TC0100SCN_ctrl_word_2_r)
298   AM_RANGE(0x340000, 0x340007) AM_READ(TC0110PCR_word_r)      /* palette (1st screen) */
299   AM_RANGE(0x350000, 0x350007) AM_READ(TC0110PCR_word_1_r)   /* palette (2nd screen) */
300   AM_RANGE(0x360000, 0x360007) AM_READ(TC0110PCR_word_2_r)   /* palette (3rd screen) */
301ADDRESS_MAP_END
302
303static ADDRESS_MAP_START( ninjaw_writemem, ADDRESS_SPACE_PROGRAM, 16 )
304   AM_RANGE(0x000000, 0x0bffff) AM_WRITE(SMH_ROM)
305   AM_RANGE(0x0c0000, 0x0cffff) AM_WRITE(SMH_RAM)
306   AM_RANGE(0x200000, 0x200001) AM_WRITE8(TC0220IOC_portreg_w, 0x00ff)
307   AM_RANGE(0x200002, 0x200003) AM_WRITE8(TC0220IOC_port_w, 0x00ff)
286static ADDRESS_MAP_START( ninjaw_master_map, ADDRESS_SPACE_PROGRAM, 16 )
287   AM_RANGE(0x000000, 0x0bffff) AM_ROM
288   AM_RANGE(0x0c0000, 0x0cffff) AM_RAM                                          /* main ram */
289   AM_RANGE(0x200000, 0x200001) AM_READWRITE8(TC0220IOC_portreg_r,TC0220IOC_portreg_w, 0x00ff)
290   AM_RANGE(0x200002, 0x200003) AM_READWRITE8(TC0220IOC_port_r,TC0220IOC_port_w, 0x00ff)
308291   AM_RANGE(0x210000, 0x210001) AM_WRITE(cpua_ctrl_w)
309   AM_RANGE(0x220000, 0x220003) AM_WRITE(ninjaw_sound_w)
292   AM_RANGE(0x220000, 0x220003) AM_READWRITE(ninjaw_sound_r,ninjaw_sound_w)
310293   AM_RANGE(0x240000, 0x24ffff) AM_RAM AM_SHARE(1)
311294   AM_RANGE(0x260000, 0x263fff) AM_RAM AM_SHARE(2) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)
312   AM_RANGE(0x280000, 0x293fff) AM_WRITE(TC0100SCN_triple_screen_w)   /* tilemaps (all screens) */
313   AM_RANGE(0x2a0000, 0x2a000f) AM_WRITE(TC0100SCN_ctrl_word_0_w)
314   AM_RANGE(0x2c0000, 0x2d3fff) AM_WRITE(TC0100SCN_word_1_w)   /* tilemaps (2nd screen) */
315   AM_RANGE(0x2e0000, 0x2e000f) AM_WRITE(TC0100SCN_ctrl_word_1_w)
316   AM_RANGE(0x300000, 0x313fff) AM_WRITE(TC0100SCN_word_2_w)   /* tilemaps (3rd screen) */
317   AM_RANGE(0x320000, 0x32000f) AM_WRITE(TC0100SCN_ctrl_word_2_w)
318   AM_RANGE(0x340000, 0x340007) AM_WRITE(TC0110PCR_step1_word_w)      /* palette (1st screen) */
319   AM_RANGE(0x350000, 0x350007) AM_WRITE(TC0110PCR_step1_word_1_w)   /* palette (2nd screen) */
320   AM_RANGE(0x360000, 0x360007) AM_WRITE(TC0110PCR_step1_word_2_w)   /* palette (3rd screen) */
295   AM_RANGE(0x280000, 0x293fff) AM_READWRITE(TC0100SCN_word_0_r,TC0100SCN_triple_screen_w)   /* tilemaps (1st screen/all screens) */
296   AM_RANGE(0x2a0000, 0x2a000f) AM_READWRITE(TC0100SCN_ctrl_word_0_r,TC0100SCN_ctrl_word_0_w)
297   AM_RANGE(0x2c0000, 0x2d3fff) AM_READWRITE(TC0100SCN_word_1_r,TC0100SCN_word_1_w)      /* tilemaps (2nd screen) */
298   AM_RANGE(0x2e0000, 0x2e000f) AM_READWRITE(TC0100SCN_ctrl_word_1_r,TC0100SCN_ctrl_word_1_w)
299   AM_RANGE(0x300000, 0x313fff) AM_READWRITE(TC0100SCN_word_2_r,TC0100SCN_word_2_w)      /* tilemaps (3rd screen) */
300   AM_RANGE(0x320000, 0x32000f) AM_READWRITE(TC0100SCN_ctrl_word_2_r,TC0100SCN_ctrl_word_2_w)
301   AM_RANGE(0x340000, 0x340007) AM_READWRITE(TC0110PCR_word_r,TC0110PCR_step1_word_w)      /* palette (1st screen) */
302   AM_RANGE(0x350000, 0x350007) AM_READWRITE(TC0110PCR_word_1_r,TC0110PCR_step1_word_1_w)   /* palette (2nd screen) */
303   AM_RANGE(0x360000, 0x360007) AM_READWRITE(TC0110PCR_word_2_r,TC0110PCR_step1_word_2_w)   /* palette (3rd screen) */
321304ADDRESS_MAP_END
322305
323306// NB there could be conflicts between which cpu writes what to the
324307// palette, as our interleaving won't match the original board.
325308
326static ADDRESS_MAP_START( ninjaw_cpub_readmem, ADDRESS_SPACE_PROGRAM, 16 )
327   AM_RANGE(0x000000, 0x05ffff) AM_READ(SMH_ROM)
328   AM_RANGE(0x080000, 0x08ffff) AM_READ(SMH_RAM)   /* main ram */
329   AM_RANGE(0x200000, 0x200001) AM_READ8(TC0220IOC_portreg_r, 0x00ff)
330   AM_RANGE(0x200002, 0x200003) AM_READ8(TC0220IOC_port_r, 0x00ff)
331   AM_RANGE(0x280000, 0x293fff) AM_READ(TC0100SCN_word_0_r)   /* tilemaps (1st screen) */
332   AM_RANGE(0x340000, 0x340007) AM_READ(TC0110PCR_word_r)      /* palette (1st screen) */
333   AM_RANGE(0x350000, 0x350007) AM_READ(TC0110PCR_word_1_r)   /* palette (2nd screen) */
334   AM_RANGE(0x360000, 0x360007) AM_READ(TC0110PCR_word_2_r)   /* palette (3rd screen) */
335ADDRESS_MAP_END
336
337static ADDRESS_MAP_START( ninjaw_cpub_writemem, ADDRESS_SPACE_PROGRAM, 16 )
338   AM_RANGE(0x000000, 0x05ffff) AM_WRITE(SMH_ROM)
339   AM_RANGE(0x080000, 0x08ffff) AM_WRITE(SMH_RAM)
340   AM_RANGE(0x200000, 0x200001) AM_WRITE8(TC0220IOC_portreg_w, 0x00ff)
341   AM_RANGE(0x200002, 0x200003) AM_WRITE8(TC0220IOC_port_w, 0x00ff)
309static ADDRESS_MAP_START( ninjaw_slave_map, ADDRESS_SPACE_PROGRAM, 16 )
310   AM_RANGE(0x000000, 0x05ffff) AM_ROM
311   AM_RANGE(0x080000, 0x08ffff) AM_RAM   /* main ram */
312   AM_RANGE(0x200000, 0x200001) AM_READWRITE8(TC0220IOC_portreg_r,TC0220IOC_portreg_w, 0x00ff)
313   AM_RANGE(0x200002, 0x200003) AM_READWRITE8(TC0220IOC_port_r,TC0220IOC_port_w, 0x00ff)
342314   AM_RANGE(0x240000, 0x24ffff) AM_RAM AM_SHARE(1)
343315   AM_RANGE(0x260000, 0x263fff) AM_RAM AM_SHARE(2)
344   AM_RANGE(0x280000, 0x293fff) AM_WRITE(TC0100SCN_triple_screen_w)   /* tilemaps (all screens) */
345   AM_RANGE(0x340000, 0x340007) AM_WRITE(TC0110PCR_step1_word_w)      /* palette (1st screen) */
346   AM_RANGE(0x350000, 0x350007) AM_WRITE(TC0110PCR_step1_word_1_w)   /* palette (2nd screen) */
347   AM_RANGE(0x360000, 0x360007) AM_WRITE(TC0110PCR_step1_word_2_w)   /* palette (3rd screen) */
316   AM_RANGE(0x280000, 0x293fff) AM_READWRITE(TC0100SCN_word_0_r,TC0100SCN_triple_screen_w)   /* tilemaps (1st screen/all screens) */
317   AM_RANGE(0x340000, 0x340007) AM_READWRITE(TC0110PCR_word_r,TC0110PCR_step1_word_w)      /* palette (1st screen) */
318   AM_RANGE(0x350000, 0x350007) AM_READWRITE(TC0110PCR_word_1_r,TC0110PCR_step1_word_1_w)   /* palette (2nd screen) */
319   AM_RANGE(0x360000, 0x360007) AM_READWRITE(TC0110PCR_word_2_r,TC0110PCR_step1_word_2_w)   /* palette (3rd screen) */
348320ADDRESS_MAP_END
349321
350
351static ADDRESS_MAP_START( darius2_readmem, ADDRESS_SPACE_PROGRAM, 16 )
352   AM_RANGE(0x000000, 0x0bffff) AM_READ(SMH_ROM)
353   AM_RANGE(0x0c0000, 0x0cffff) AM_READ(SMH_RAM)   /* main ram */
354   AM_RANGE(0x200000, 0x200001) AM_READ8(TC0220IOC_portreg_r, 0x00ff)
355   AM_RANGE(0x200002, 0x200003) AM_READ8(TC0220IOC_port_r, 0x00ff)
356   AM_RANGE(0x220000, 0x220003) AM_READ(ninjaw_sound_r)
357   AM_RANGE(0x280000, 0x293fff) AM_READ(TC0100SCN_word_0_r)   /* tilemaps (1st screen) */
358   AM_RANGE(0x2a0000, 0x2a000f) AM_READ(TC0100SCN_ctrl_word_0_r)
359   AM_RANGE(0x2c0000, 0x2d3fff) AM_READ(TC0100SCN_word_1_r)   /* tilemaps (2nd screen) */
360   AM_RANGE(0x2e0000, 0x2e000f) AM_READ(TC0100SCN_ctrl_word_1_r)
361   AM_RANGE(0x300000, 0x313fff) AM_READ(TC0100SCN_word_2_r)   /* tilemaps (3rd screen) */
362   AM_RANGE(0x320000, 0x32000f) AM_READ(TC0100SCN_ctrl_word_2_r)
363   AM_RANGE(0x340000, 0x340007) AM_READ(TC0110PCR_word_r)      /* palette (1st screen) */
364   AM_RANGE(0x350000, 0x350007) AM_READ(TC0110PCR_word_1_r)   /* palette (2nd screen) */
365   AM_RANGE(0x360000, 0x360007) AM_READ(TC0110PCR_word_2_r)   /* palette (3rd screen) */
366ADDRESS_MAP_END
367
368static ADDRESS_MAP_START( darius2_writemem, ADDRESS_SPACE_PROGRAM, 16 )
369   AM_RANGE(0x000000, 0x0bffff) AM_WRITE(SMH_ROM)
370   AM_RANGE(0x0c0000, 0x0cffff) AM_WRITE(SMH_RAM)
371   AM_RANGE(0x200000, 0x200001) AM_WRITE8(TC0220IOC_portreg_w, 0x00ff)
372   AM_RANGE(0x200002, 0x200003) AM_WRITE8(TC0220IOC_port_w, 0x00ff)
322static ADDRESS_MAP_START( darius2_master_map, ADDRESS_SPACE_PROGRAM, 16 )
323   AM_RANGE(0x000000, 0x0bffff) AM_ROM
324   AM_RANGE(0x0c0000, 0x0cffff) AM_RAM                     /* main ram */
325   AM_RANGE(0x200000, 0x200001) AM_READWRITE8(TC0220IOC_portreg_r,TC0220IOC_portreg_w, 0x00ff)
326   AM_RANGE(0x200002, 0x200003) AM_READWRITE8(TC0220IOC_port_r,TC0220IOC_port_w, 0x00ff)
373327   AM_RANGE(0x210000, 0x210001) AM_WRITE(cpua_ctrl_w)
374   AM_RANGE(0x220000, 0x220003) AM_WRITE(ninjaw_sound_w)
328   AM_RANGE(0x220000, 0x220003) AM_READWRITE(ninjaw_sound_r,ninjaw_sound_w)
375329   AM_RANGE(0x240000, 0x24ffff) AM_RAM AM_SHARE(1)
376330   AM_RANGE(0x260000, 0x263fff) AM_RAM AM_SHARE(2) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)
377   AM_RANGE(0x280000, 0x293fff) AM_WRITE(TC0100SCN_triple_screen_w)   /* tilemaps (all screens) */
378   AM_RANGE(0x2a0000, 0x2a000f) AM_WRITE(TC0100SCN_ctrl_word_0_w)
379   AM_RANGE(0x2c0000, 0x2d3fff) AM_WRITE(TC0100SCN_word_1_w)   /* tilemaps (2nd screen) */
380   AM_RANGE(0x2e0000, 0x2e000f) AM_WRITE(TC0100SCN_ctrl_word_1_w)
381   AM_RANGE(0x300000, 0x313fff) AM_WRITE(TC0100SCN_word_2_w)   /* tilemaps (3rd screen) */
382   AM_RANGE(0x320000, 0x32000f) AM_WRITE(TC0100SCN_ctrl_word_2_w)
383   AM_RANGE(0x340000, 0x340007) AM_WRITE(TC0110PCR_step1_word_w)      /* palette (1st screen) */
384   AM_RANGE(0x350000, 0x350007) AM_WRITE(TC0110PCR_step1_word_1_w)   /* palette (2nd screen) */
385   AM_RANGE(0x360000, 0x360007) AM_WRITE(TC0110PCR_step1_word_2_w)   /* palette (3rd screen) */
331   AM_RANGE(0x280000, 0x293fff) AM_READWRITE(TC0100SCN_word_0_r,TC0100SCN_triple_screen_w)   /* tilemaps (1st screen/all screens) */
332   AM_RANGE(0x2a0000, 0x2a000f) AM_READWRITE(TC0100SCN_ctrl_word_0_r,TC0100SCN_ctrl_word_0_w)
333   AM_RANGE(0x2c0000, 0x2d3fff) AM_READWRITE(TC0100SCN_word_1_r,TC0100SCN_word_1_w)      /* tilemaps (2nd screen) */
334   AM_RANGE(0x2e0000, 0x2e000f) AM_READWRITE(TC0100SCN_ctrl_word_1_r,TC0100SCN_ctrl_word_1_w)
335   AM_RANGE(0x300000, 0x313fff) AM_READWRITE(TC0100SCN_word_2_r,TC0100SCN_word_2_w)      /* tilemaps (3rd screen) */
336   AM_RANGE(0x320000, 0x32000f) AM_READWRITE(TC0100SCN_ctrl_word_2_r,TC0100SCN_ctrl_word_2_w)
337   AM_RANGE(0x340000, 0x340007) AM_READWRITE(TC0110PCR_word_r,TC0110PCR_step1_word_w)      /* palette (1st screen) */
338   AM_RANGE(0x350000, 0x350007) AM_READWRITE(TC0110PCR_word_1_r,TC0110PCR_step1_word_1_w)   /* palette (2nd screen) */
339   AM_RANGE(0x360000, 0x360007) AM_READWRITE(TC0110PCR_word_2_r,TC0110PCR_step1_word_2_w)   /* palette (3rd screen) */
386340ADDRESS_MAP_END
387341
388static ADDRESS_MAP_START( darius2_cpub_readmem, ADDRESS_SPACE_PROGRAM, 16 )
389   AM_RANGE(0x000000, 0x05ffff) AM_READ(SMH_ROM)
390   AM_RANGE(0x080000, 0x08ffff) AM_READ(SMH_RAM)   /* main ram */
391   AM_RANGE(0x200000, 0x200001) AM_READ8(TC0220IOC_portreg_r, 0x00ff)
392   AM_RANGE(0x200002, 0x200003) AM_READ8(TC0220IOC_port_r, 0x00ff)
393   AM_RANGE(0x280000, 0x293fff) AM_READ(TC0100SCN_word_0_r)   /* tilemaps (1st screen) */
394ADDRESS_MAP_END
395
396static ADDRESS_MAP_START( darius2_cpub_writemem, ADDRESS_SPACE_PROGRAM, 16 )
397   AM_RANGE(0x000000, 0x05ffff) AM_WRITE(SMH_ROM)
398   AM_RANGE(0x080000, 0x08ffff) AM_WRITE(SMH_RAM)
399   AM_RANGE(0x200000, 0x200001) AM_WRITE8(TC0220IOC_portreg_w, 0x00ff)
400   AM_RANGE(0x200002, 0x200003) AM_WRITE8(TC0220IOC_port_w, 0x00ff)
342static ADDRESS_MAP_START( darius2_slave_map, ADDRESS_SPACE_PROGRAM, 16 )
343   AM_RANGE(0x000000, 0x05ffff) AM_ROM
344   AM_RANGE(0x080000, 0x08ffff) AM_RAM                                          /* main ram */
345   AM_RANGE(0x200000, 0x200001) AM_READWRITE8(TC0220IOC_portreg_r,TC0220IOC_portreg_w, 0x00ff)
346   AM_RANGE(0x200002, 0x200003) AM_READWRITE8(TC0220IOC_port_r,TC0220IOC_port_w, 0x00ff)
401347   AM_RANGE(0x240000, 0x24ffff) AM_RAM AM_SHARE(1)
402348   AM_RANGE(0x260000, 0x263fff) AM_RAM AM_SHARE(2)
403   AM_RANGE(0x280000, 0x293fff) AM_WRITE(TC0100SCN_triple_screen_w)   /* tilemaps (all screens) */
349   AM_RANGE(0x280000, 0x293fff) AM_READWRITE(TC0100SCN_word_0_r,TC0100SCN_triple_screen_w)   /* tilemaps (1st screen/all screens) */
404350ADDRESS_MAP_END
405351
406352
407353/***************************************************************************/
408354
409static ADDRESS_MAP_START( z80_sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
410   AM_RANGE(0x0000, 0x3fff) AM_READ(SMH_ROM)
411   AM_RANGE(0x4000, 0x7fff) AM_READ(SMH_BANK10)
412   AM_RANGE(0xc000, 0xdfff) AM_READ(SMH_RAM)
413   AM_RANGE(0xe000, 0xe003) AM_DEVREAD("ym", ym2610_r)
414   AM_RANGE(0xe200, 0xe200) AM_READNOP
415   AM_RANGE(0xe201, 0xe201) AM_READ(taitosound_slave_comm_r)
416   AM_RANGE(0xea00, 0xea00) AM_READNOP
417ADDRESS_MAP_END
418
419static ADDRESS_MAP_START( z80_sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
420   AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM)
421   AM_RANGE(0xc000, 0xdfff) AM_WRITE(SMH_RAM)
422   AM_RANGE(0xe000, 0xe003) AM_DEVWRITE("ym", ym2610_w)
423   AM_RANGE(0xe200, 0xe200) AM_WRITE(taitosound_slave_port_w)
424   AM_RANGE(0xe201, 0xe201) AM_WRITE(taitosound_slave_comm_w)
355static ADDRESS_MAP_START( ninjaw_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
356   AM_RANGE(0x0000, 0x3fff) AM_ROM
357   AM_RANGE(0x4000, 0x7fff) AM_ROMBANK(10)
358   AM_RANGE(0xc000, 0xdfff) AM_RAM
359   AM_RANGE(0xe000, 0xe003) AM_DEVREADWRITE("ym", ym2610_r,ym2610_w)
360   AM_RANGE(0xe200, 0xe200) AM_READNOP AM_WRITE(taitosound_slave_port_w)
361   AM_RANGE(0xe201, 0xe201) AM_READWRITE(taitosound_slave_comm_r,taitosound_slave_comm_w)
425362   AM_RANGE(0xe400, 0xe403) AM_WRITE(ninjaw_pancontrol) /* pan */
363   AM_RANGE(0xea00, 0xea00) AM_READNOP
426364   AM_RANGE(0xee00, 0xee00) AM_WRITENOP /* ? */
427365   AM_RANGE(0xf000, 0xf000) AM_WRITENOP /* ? */
428366   AM_RANGE(0xf200, 0xf200) AM_WRITE(sound_bankswitch_w)
r4679r4680
567505/* handler called by the YM2610 emulator when the internal timers cause an IRQ */
568506static void irqhandler(const device_config *device, int irq)
569507{
570   cpu_set_input_line(device->machine->cpu[1],0,irq ? ASSERT_LINE : CLEAR_LINE);
508   cputag_set_input_line(device->machine, "audiocpu", 0, irq ? ASSERT_LINE : CLEAR_LINE);
571509}
572510
573511static const ym2610_interface ym2610_config =
r4679r4680
626564
627565   /* basic machine hardware */
628566   MDRV_CPU_ADD("maincpu", M68000,16000000/2)   /* 8 MHz ? */
629   MDRV_CPU_PROGRAM_MAP(ninjaw_readmem,ninjaw_writemem)
567   MDRV_CPU_PROGRAM_MAP(ninjaw_master_map,0)
630568   MDRV_CPU_VBLANK_INT("lscreen", irq4_line_hold)
631569
632570   MDRV_CPU_ADD("audiocpu", Z80,16000000/4)   /* 16/4 MHz ? */
633   MDRV_CPU_PROGRAM_MAP(z80_sound_readmem,z80_sound_writemem)
571   MDRV_CPU_PROGRAM_MAP(ninjaw_sound_map,0)
634572
635573   MDRV_CPU_ADD("sub", M68000,16000000/2)   /* 8 MHz ? */
636   MDRV_CPU_PROGRAM_MAP(ninjaw_cpub_readmem,ninjaw_cpub_writemem)
574   MDRV_CPU_PROGRAM_MAP(ninjaw_slave_map,0)
637575   MDRV_CPU_VBLANK_INT("lscreen", irq4_line_hold)
638576
639577   MDRV_QUANTUM_TIME(HZ(6000))   /* CPU slices */
r4679r4680
699637
700638   /* basic machine hardware */
701639   MDRV_CPU_ADD("maincpu", M68000,16000000/2)   /* 8 MHz ? */
702   MDRV_CPU_PROGRAM_MAP(darius2_readmem,darius2_writemem)
640   MDRV_CPU_PROGRAM_MAP(darius2_master_map,0)
703641   MDRV_CPU_VBLANK_INT("lscreen", irq4_line_hold)
704642
705643   MDRV_CPU_ADD("audiocpu", Z80,16000000/4)   /* 4 MHz ? */
706   MDRV_CPU_PROGRAM_MAP(z80_sound_readmem,z80_sound_writemem)
644   MDRV_CPU_PROGRAM_MAP(ninjaw_sound_map,0)
707645
708646   MDRV_CPU_ADD("sub", M68000,16000000/2)   /* 8 MHz ? */
709   MDRV_CPU_PROGRAM_MAP(darius2_cpub_readmem,darius2_cpub_writemem)
647   MDRV_CPU_PROGRAM_MAP(darius2_slave_map,0)
710648   MDRV_CPU_VBLANK_INT("lscreen", irq4_line_hold)
711649
712650   MDRV_QUANTUM_TIME(HZ(6000))   /* CPU slices */
src/mame/drivers/matmania.c
r4679r4680
4242static WRITE8_HANDLER( matmania_sh_command_w )
4343{
4444   soundlatch_w(space,offset,data);
45   cpu_set_input_line(space->machine->cpu[1],M6502_IRQ_LINE,HOLD_LINE);
45   cputag_set_input_line(space->machine, "audiocpu", M6502_IRQ_LINE, HOLD_LINE);
4646}
4747
4848static WRITE8_HANDLER( maniach_sh_command_w )
4949{
50   soundlatch_w(space,offset,data);
51   cpu_set_input_line(space->machine->cpu[1],M6809_IRQ_LINE,HOLD_LINE);
50   soundlatch_w(space, offset, data);
51   cputag_set_input_line(space->machine, "audiocpu", M6809_IRQ_LINE, HOLD_LINE);
5252}
5353
5454
5555
56static ADDRESS_MAP_START( matmania_readmem, ADDRESS_SPACE_PROGRAM, 8 )
57   AM_RANGE(0x0000, 0x077f) AM_READ(SMH_RAM)
58   AM_RANGE(0x1000, 0x17ff) AM_READ(SMH_RAM)
59   AM_RANGE(0x2000, 0x27ff) AM_READ(SMH_RAM)
60   AM_RANGE(0x3000, 0x3000) AM_READ_PORT("IN0")
61   AM_RANGE(0x3010, 0x3010) AM_READ_PORT("IN1")
62   AM_RANGE(0x3020, 0x3020) AM_READ_PORT("DSW2")
63   AM_RANGE(0x3030, 0x3030) AM_READ_PORT("DSW1")
64   AM_RANGE(0x4000, 0xffff) AM_READ(SMH_ROM)
65ADDRESS_MAP_END
66
67static ADDRESS_MAP_START( matmania_writemem, ADDRESS_SPACE_PROGRAM, 8 )
68   AM_RANGE(0x0000, 0x077f) AM_WRITE(SMH_RAM)
69   AM_RANGE(0x0780, 0x07df) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
70   AM_RANGE(0x1000, 0x13ff) AM_WRITE(SMH_RAM) AM_BASE(&matmania_videoram2) AM_SIZE(&matmania_videoram2_size)
71   AM_RANGE(0x1400, 0x17ff) AM_WRITE(SMH_RAM) AM_BASE(&matmania_colorram2)
72   AM_RANGE(0x2000, 0x21ff) AM_WRITE(SMH_RAM) AM_BASE(&videoram) AM_SIZE(&videoram_size)
73   AM_RANGE(0x2200, 0x23ff) AM_WRITE(SMH_RAM) AM_BASE(&colorram)
74   AM_RANGE(0x2400, 0x25ff) AM_WRITE(SMH_RAM) AM_BASE(&matmania_videoram3) AM_SIZE(&matmania_videoram3_size)
75   AM_RANGE(0x2600, 0x27ff) AM_WRITE(SMH_RAM) AM_BASE(&matmania_colorram3)
76   AM_RANGE(0x3000, 0x3000) AM_WRITE(SMH_RAM) AM_BASE(&matmania_pageselect)
77   AM_RANGE(0x3010, 0x3010) AM_WRITE(matmania_sh_command_w)
78   AM_RANGE(0x3020, 0x3020) AM_WRITE(SMH_RAM) AM_BASE(&matmania_scroll)
79//  AM_RANGE(0x3030, 0x3030) AM_WRITENOP /* ?? */
56static ADDRESS_MAP_START( matmania_map, ADDRESS_SPACE_PROGRAM, 8 )
57   AM_RANGE(0x0000, 0x077f) AM_RAM
58   AM_RANGE(0x0780, 0x07df) AM_WRITEONLY AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
59   AM_RANGE(0x1000, 0x13ff) AM_RAM AM_BASE(&matmania_videoram2) AM_SIZE(&matmania_videoram2_size)
60   AM_RANGE(0x1400, 0x17ff) AM_RAM AM_BASE(&matmania_colorram2)
61   AM_RANGE(0x2000, 0x21ff) AM_RAM AM_BASE(&videoram) AM_SIZE(&videoram_size)
62   AM_RANGE(0x2200, 0x23ff) AM_RAM AM_BASE(&colorram)
63   AM_RANGE(0x2400, 0x25ff) AM_RAM AM_BASE(&matmania_videoram3) AM_SIZE(&matmania_videoram3_size)
64   AM_RANGE(0x2600, 0x27ff) AM_RAM AM_BASE(&matmania_colorram3)
65   AM_RANGE(0x3000, 0x3000) AM_READ_PORT("IN0") AM_WRITEONLY AM_BASE(&matmania_pageselect)
66   AM_RANGE(0x3010, 0x3010) AM_READ_PORT("IN1") AM_WRITE(matmania_sh_command_w)
67   AM_RANGE(0x3020, 0x3020) AM_READ_PORT("DSW2") AM_WRITEONLY AM_BASE(&matmania_scroll)
68   AM_RANGE(0x3030, 0x3030) AM_READ_PORT("DSW1") AM_WRITENOP /* ?? */
8069   AM_RANGE(0x3050, 0x307f) AM_WRITE(matmania_paletteram_w) AM_BASE(&paletteram)
81   AM_RANGE(0x4000, 0xffff) AM_WRITE(SMH_ROM)
70   AM_RANGE(0x4000, 0xffff) AM_ROM
8271ADDRESS_MAP_END
8372
84static ADDRESS_MAP_START( maniach_readmem, ADDRESS_SPACE_PROGRAM, 8 )
85   AM_RANGE(0x0000, 0x077f) AM_READ(SMH_RAM)
86   AM_RANGE(0x1000, 0x17ff) AM_READ(SMH_RAM)
87   AM_RANGE(0x2000, 0x27ff) AM_READ(SMH_RAM)
88   AM_RANGE(0x3000, 0x3000) AM_READ_PORT("IN0")
89   AM_RANGE(0x3010, 0x3010) AM_READ_PORT("IN1")
90   AM_RANGE(0x3020, 0x3020) AM_READ_PORT("DSW2")
91   AM_RANGE(0x3030, 0x3030) AM_READ_PORT("DSW1")
92   AM_RANGE(0x3040, 0x3040) AM_READ(maniach_mcu_r)
73static ADDRESS_MAP_START( maniach_map, ADDRESS_SPACE_PROGRAM, 8 )
74   AM_RANGE(0x0000, 0x077f) AM_RAM
75   AM_RANGE(0x0780, 0x07df) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
76   AM_RANGE(0x1000, 0x13ff) AM_RAM AM_BASE(&matmania_videoram2) AM_SIZE(&matmania_videoram2_size)
77   AM_RANGE(0x1400, 0x17ff) AM_RAM AM_BASE(&matmania_colorram2)
78   AM_RANGE(0x2000, 0x21ff) AM_RAM AM_BASE(&videoram) AM_SIZE(&videoram_size)
79   AM_RANGE(0x2200, 0x23ff) AM_RAM AM_BASE(&colorram)
80   AM_RANGE(0x2400, 0x25ff) AM_RAM AM_BASE(&matmania_videoram3) AM_SIZE(&matmania_videoram3_size)
81   AM_RANGE(0x2600, 0x27ff) AM_RAM AM_BASE(&matmania_colorram3)
82   AM_RANGE(0x3000, 0x3000) AM_READ_PORT("IN0") AM_WRITEONLY AM_BASE(&matmania_pageselect)
83   AM_RANGE(0x3010, 0x3010) AM_READ_PORT("IN1") AM_WRITE(maniach_sh_command_w)
84   AM_RANGE(0x3020, 0x3020) AM_READ_PORT("DSW2") AM_WRITEONLY AM_BASE(&matmania_scroll)
85   AM_RANGE(0x3030, 0x3030) AM_READ_PORT("DSW1") AM_WRITENOP   /* ?? */
86   AM_RANGE(0x3040, 0x3040) AM_READWRITE(maniach_mcu_r,maniach_mcu_w)
9387   AM_RANGE(0x3041, 0x3041) AM_READ(maniach_mcu_status_r)
94   AM_RANGE(0x4000, 0xffff) AM_READ(SMH_ROM)
95ADDRESS_MAP_END
96
97static ADDRESS_MAP_START( maniach_writemem, ADDRESS_SPACE_PROGRAM, 8 )
98   AM_RANGE(0x0000, 0x077f) AM_WRITE(SMH_RAM)
99   AM_RANGE(0x0780, 0x07df) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
100   AM_RANGE(0x1000, 0x13ff) AM_WRITE(SMH_RAM) AM_BASE(&matmania_videoram2) AM_SIZE(&matmania_videoram2_size)
101   AM_RANGE(0x1400, 0x17ff) AM_WRITE(SMH_RAM) AM_BASE(&matmania_colorram2)
102   AM_RANGE(0x2000, 0x21ff) AM_WRITE(SMH_RAM) AM_BASE(&videoram) AM_SIZE(&videoram_size)
103   AM_RANGE(0x2200, 0x23ff) AM_WRITE(SMH_RAM) AM_BASE(&colorram)
104   AM_RANGE(0x2400, 0x25ff) AM_WRITE(SMH_RAM) AM_BASE(&matmania_videoram3) AM_SIZE(&matmania_videoram3_size)
105   AM_RANGE(0x2600, 0x27ff) AM_WRITE(SMH_RAM) AM_BASE(&matmania_colorram3)
106   AM_RANGE(0x3000, 0x3000) AM_WRITE(SMH_RAM) AM_BASE(&matmania_pageselect)
107   AM_RANGE(0x3010, 0x3010) AM_WRITE(maniach_sh_command_w)
108   AM_RANGE(0x3020, 0x3020) AM_WRITE(SMH_RAM) AM_BASE(&matmania_scroll)
109   AM_RANGE(0x3030, 0x3030) AM_WRITENOP   /* ?? */
110   AM_RANGE(0x3040, 0x3040) AM_WRITE(maniach_mcu_w)
11188   AM_RANGE(0x3050, 0x307f) AM_WRITE(matmania_paletteram_w) AM_BASE(&paletteram)
112   AM_RANGE(0x4000, 0xffff) AM_WRITE(SMH_ROM)
89   AM_RANGE(0x4000, 0xffff) AM_ROM
11390ADDRESS_MAP_END
11491
115static ADDRESS_MAP_START( sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
116   AM_RANGE(0x0000, 0x01ff) AM_READ(SMH_RAM)
117   AM_RANGE(0x2007, 0x2007) AM_READ(soundlatch_r)
118   AM_RANGE(0x8000, 0xffff) AM_READ(SMH_ROM)
119ADDRESS_MAP_END
12092
121static ADDRESS_MAP_START( sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
122   AM_RANGE(0x0000, 0x01ff) AM_WRITE(SMH_RAM)
93static ADDRESS_MAP_START( matmania_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
94   AM_RANGE(0x0000, 0x01ff) AM_RAM
12395   AM_RANGE(0x2000, 0x2001) AM_DEVWRITE("ay1", ay8910_data_address_w)
12496   AM_RANGE(0x2002, 0x2003) AM_DEVWRITE("ay2", ay8910_data_address_w)
12597   AM_RANGE(0x2004, 0x2004) AM_DEVWRITE("dac", dac_signed_w)
126   AM_RANGE(0x8000, 0xffff) AM_WRITE(SMH_ROM)
98   AM_RANGE(0x2007, 0x2007) AM_READ(soundlatch_r)
99   AM_RANGE(0x8000, 0xffff) AM_ROM
127100ADDRESS_MAP_END
128101
129static ADDRESS_MAP_START( maniach_sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
130   AM_RANGE(0x0000, 0x0fff) AM_READ(SMH_RAM)
131   AM_RANGE(0x2004, 0x2004) AM_READ(soundlatch_r)
132   AM_RANGE(0x4000, 0xffff) AM_READ(SMH_ROM)
133ADDRESS_MAP_END
134
135static ADDRESS_MAP_START( maniach_sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
136   AM_RANGE(0x0000, 0x0fff) AM_WRITE(SMH_RAM)
102static ADDRESS_MAP_START( maniach_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
103   AM_RANGE(0x0000, 0x0fff) AM_RAM
137104   AM_RANGE(0x2000, 0x2001) AM_DEVWRITE("ym", ym3526_w)
138105   AM_RANGE(0x2002, 0x2002) AM_DEVWRITE("dac", dac_signed_w)
139   AM_RANGE(0x4000, 0xffff) AM_WRITE(SMH_ROM)
106   AM_RANGE(0x2004, 0x2004) AM_READ(soundlatch_r)
107   AM_RANGE(0x4000, 0xffff) AM_ROM
140108ADDRESS_MAP_END
141109
142static ADDRESS_MAP_START( mcu_readmem, ADDRESS_SPACE_PROGRAM, 8 )
143   ADDRESS_MAP_GLOBAL_MASK(0x7ff)
144   AM_RANGE(0x0000, 0x0000) AM_READ(maniach_68705_portA_r)
145   AM_RANGE(0x0001, 0x0001) AM_READ(maniach_68705_portB_r)
146   AM_RANGE(0x0002, 0x0002) AM_READ(maniach_68705_portC_r)
147   AM_RANGE(0x0010, 0x007f) AM_READ(SMH_RAM)
148   AM_RANGE(0x0080, 0x07ff) AM_READ(SMH_ROM)
149ADDRESS_MAP_END
150110
151static ADDRESS_MAP_START( mcu_writemem, ADDRESS_SPACE_PROGRAM, 8 )
111static ADDRESS_MAP_START( maniach_mcu_map, ADDRESS_SPACE_PROGRAM, 8 )
152112   ADDRESS_MAP_GLOBAL_MASK(0x7ff)
153   AM_RANGE(0x0000, 0x0000) AM_WRITE(maniach_68705_portA_w)
154   AM_RANGE(0x0001, 0x0001) AM_WRITE(maniach_68705_portB_w)
155   AM_RANGE(0x0002, 0x0002) AM_WRITE(maniach_68705_portC_w)
113   AM_RANGE(0x0000, 0x0000) AM_READWRITE(maniach_68705_portA_r,maniach_68705_portA_w)
114   AM_RANGE(0x0001, 0x0001) AM_READWRITE(maniach_68705_portB_r,maniach_68705_portB_w)
115   AM_RANGE(0x0002, 0x0002) AM_READWRITE(maniach_68705_portC_r,maniach_68705_portC_w)
156116   AM_RANGE(0x0004, 0x0004) AM_WRITE(maniach_68705_ddrA_w)
157117   AM_RANGE(0x0005, 0x0005) AM_WRITE(maniach_68705_ddrB_w)
158118   AM_RANGE(0x0006, 0x0006) AM_WRITE(maniach_68705_ddrC_w)
159   AM_RANGE(0x0010, 0x007f) AM_WRITE(SMH_RAM)
160   AM_RANGE(0x0080, 0x07ff) AM_WRITE(SMH_ROM)
119   AM_RANGE(0x0010, 0x007f) AM_RAM
120   AM_RANGE(0x0080, 0x07ff) AM_ROM
161121ADDRESS_MAP_END
162122
163123
164
165124static INPUT_PORTS_START( matmania )
166125   PORT_START("IN0")
167126   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY
r4679r4680
313272
314273   /* basic machine hardware */
315274   MDRV_CPU_ADD("maincpu", M6502, 1500000)   /* 1.5 MHz ???? */
316   MDRV_CPU_PROGRAM_MAP(matmania_readmem,matmania_writemem)
275   MDRV_CPU_PROGRAM_MAP(matmania_map,0)
317276   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
318277
319278   MDRV_CPU_ADD("audiocpu", M6502, 1200000)   /* 1.2 MHz ???? */
320   MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem)
279   MDRV_CPU_PROGRAM_MAP(matmania_sound_map,0)
321280   MDRV_CPU_VBLANK_INT_HACK(nmi_line_pulse,15)   /* ???? */
322281                        /* IRQs are caused by the main CPU */
323282   MDRV_QUANTUM_TIME(HZ(600))
r4679r4680
355314/* handler called by the 3526 emulator when the internal timers cause an IRQ */
356315static void irqhandler(const device_config *device, int linestate)
357316{
358   cpu_set_input_line(device->machine->cpu[1],1,linestate);
317   cputag_set_input_line(device->machine, "audiocpu", 1, linestate);
359318}
360319
361320static const ym3526_interface ym3526_config =
r4679r4680
368327
369328   /* basic machine hardware */
370329   MDRV_CPU_ADD("maincpu", M6502, 1500000)   /* 1.5 MHz ???? */
371   MDRV_CPU_PROGRAM_MAP(maniach_readmem,maniach_writemem)
330   MDRV_CPU_PROGRAM_MAP(maniach_map,0)
372331   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
373332
374333   MDRV_CPU_ADD("audiocpu", M6809, 1500000)   /* 1.5 MHz ???? */
375   MDRV_CPU_PROGRAM_MAP(maniach_sound_readmem,maniach_sound_writemem)
334   MDRV_CPU_PROGRAM_MAP(maniach_sound_map,0)
376335                        /* IRQs are caused by the main CPU */
336
377337   MDRV_CPU_ADD("mcu", M68705, 1500000*2)   /* (don't know really how fast, but it doesn't need to even be this fast) */
378   MDRV_CPU_PROGRAM_MAP(mcu_readmem,mcu_writemem)
338   MDRV_CPU_PROGRAM_MAP(maniach_mcu_map,0)
379339
380340   MDRV_QUANTUM_TIME(HZ(6000))   /* 100 CPU slice per frame - high interleaving to sync main and mcu */
381341
src/mame/drivers/arkanoid.c
r4679r4680
11271127
11281128static void arkanoid_bootleg_init( running_machine *machine )
11291129{
1130   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xf002, 0xf002, 0, 0, arkanoid_bootleg_f002_r );
1131   memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xd018, 0xd018, 0, 0, arkanoid_bootleg_d018_w );
1132   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xd008, 0xd008, 0, 0, arkanoid_bootleg_d008_r );
1130   memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xf002, 0xf002, 0, 0, arkanoid_bootleg_f002_r );
1131   memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xd018, 0xd018, 0, 0, arkanoid_bootleg_d018_w );
1132   memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xd008, 0xd008, 0, 0, arkanoid_bootleg_d008_r );
11331133}
11341134
11351135static DRIVER_INIT( arkangc )
src/mame/drivers/twin16.c
r4679r4680
9494
9595/******************************************************************************************/
9696
97#define COMRAM_r               SMH_BANK1
98#define COMRAM_w               SMH_BANK1
97#define COMRAM_r               SMH_BANK(1)
98#define COMRAM_w               SMH_BANK(1)
9999
100100/* Read/Write Handlers */
101101
r4679r4680
12491249   // sprite, tile data
12501250
12511251   int i;
1252   UINT16 *temp = malloc_or_die(0x200000);
1252   UINT16 *temp = alloc_array_or_die(UINT16, 0x200000/2);
12531253
12541254      twin16_gfx_rom = (UINT16 *)memory_region(machine, "gfx2");
12551255      memcpy( temp, twin16_gfx_rom, 0x200000 );
src/mame/drivers/megasys1.c
r4679r4680
169169}
170170
171171
172static ADDRESS_MAP_START( readmem_A, ADDRESS_SPACE_PROGRAM, 16 )
172static ADDRESS_MAP_START( megasys1A_map, ADDRESS_SPACE_PROGRAM, 16 )
173173   ADDRESS_MAP_GLOBAL_MASK(0xfffff)
174   AM_RANGE(0x000000, 0x05ffff) AM_READ(SMH_ROM)
174   AM_RANGE(0x000000, 0x05ffff) AM_ROM
175175   AM_RANGE(0x080000, 0x080001) AM_READ_PORT("SYSTEM")
176176   AM_RANGE(0x080002, 0x080003) AM_READ_PORT("P1")
177177   AM_RANGE(0x080004, 0x080005) AM_READ_PORT("P2")
178178   AM_RANGE(0x080006, 0x080007) AM_READ_PORT("DSW")
179179   AM_RANGE(0x080008, 0x080009) AM_READ(soundlatch2_word_r)   /* from sound cpu */
180   AM_RANGE(0x084000, 0x084fff) AM_READ(SMH_RAM)
181   AM_RANGE(0x088000, 0x0887ff) AM_READ(SMH_RAM)
182   AM_RANGE(0x08e000, 0x08ffff) AM_READ(SMH_RAM)
183   AM_RANGE(0x090000, 0x093fff) AM_READ(SMH_RAM)
184   AM_RANGE(0x094000, 0x097fff) AM_READ(SMH_RAM)
185   AM_RANGE(0x098000, 0x09bfff) AM_READ(SMH_RAM)
186   AM_RANGE(0x0f0000, 0x0fffff) AM_READ(SMH_RAM)
180   AM_RANGE(0x084000, 0x0843ff) AM_RAM_WRITE(megasys1_vregs_A_w) AM_BASE(&megasys1_vregs)
181   AM_RANGE(0x088000, 0x0887ff) AM_RAM_WRITE(paletteram16_RRRRGGGGBBBBRGBx_word_w) AM_BASE(&paletteram16)
182   AM_RANGE(0x08e000, 0x08ffff) AM_RAM AM_BASE(&megasys1_objectram)
183   AM_RANGE(0x090000, 0x093fff) AM_RAM_WRITE(megasys1_scrollram_0_w) AM_BASE(&megasys1_scrollram[0])
184   AM_RANGE(0x094000, 0x097fff) AM_RAM_WRITE(megasys1_scrollram_1_w) AM_BASE(&megasys1_scrollram[1])
185   AM_RANGE(0x098000, 0x09bfff) AM_RAM_WRITE(megasys1_scrollram_2_w) AM_BASE(&megasys1_scrollram[2])
186   AM_RANGE(0x0f0000, 0x0fffff) AM_RAM AM_BASE(&megasys1_ram)
187187ADDRESS_MAP_END
188188
189static ADDRESS_MAP_START( writemem_A, ADDRESS_SPACE_PROGRAM, 16 )
190   ADDRESS_MAP_GLOBAL_MASK(0xfffff)
191    AM_RANGE(0x000000, 0x05ffff) AM_WRITE(SMH_ROM)
192   AM_RANGE(0x084000, 0x0843ff) AM_WRITE(megasys1_vregs_A_w) AM_BASE(&megasys1_vregs)
193   AM_RANGE(0x088000, 0x0887ff) AM_WRITE(paletteram16_RRRRGGGGBBBBRGBx_word_w) AM_BASE(&paletteram16)
194   AM_RANGE(0x08e000, 0x08ffff) AM_WRITE(SMH_RAM) AM_BASE(&megasys1_objectram)
195   AM_RANGE(0x090000, 0x093fff) AM_WRITE(megasys1_scrollram_0_w) AM_BASE(&megasys1_scrollram[0])
196   AM_RANGE(0x094000, 0x097fff) AM_WRITE(megasys1_scrollram_1_w) AM_BASE(&megasys1_scrollram[1])
197   AM_RANGE(0x098000, 0x09bfff) AM_WRITE(megasys1_scrollram_2_w) AM_BASE(&megasys1_scrollram[2])
198   AM_RANGE(0x0f0000, 0x0fffff) AM_WRITE(SMH_RAM) AM_BASE(&megasys1_ram)
199ADDRESS_MAP_END
200189
201
202
203190/***************************************************************************
204191                            [ Main CPU - System B ]
205192***************************************************************************/
r4679r4680
258245static WRITE16_HANDLER( ip_select_w )
259246{
260247   COMBINE_DATA(&ip_select);
261   cpu_set_input_line(space->machine->cpu[0],2,HOLD_LINE);
248   cputag_set_input_line(space->machine, "maincpu", 2, HOLD_LINE);
262249}
263250
264251
265static ADDRESS_MAP_START( readmem_B, ADDRESS_SPACE_PROGRAM, 16 )
252static ADDRESS_MAP_START( megasys1B_map, ADDRESS_SPACE_PROGRAM, 16 )
266253   ADDRESS_MAP_GLOBAL_MASK(0xfffff)
267   AM_RANGE(0x000000, 0x03ffff) AM_READ(SMH_ROM)
268   AM_RANGE(0x044000, 0x044fff) AM_READ(SMH_RAM)
269   AM_RANGE(0x048000, 0x0487ff) AM_READ(SMH_RAM)
270   AM_RANGE(0x04e000, 0x04ffff) AM_READ(SMH_RAM)
271   AM_RANGE(0x050000, 0x053fff) AM_READ(SMH_RAM)
272   AM_RANGE(0x054000, 0x057fff) AM_READ(SMH_RAM)
273   AM_RANGE(0x058000, 0x05bfff) AM_READ(SMH_RAM)
274   AM_RANGE(0x060000, 0x07ffff) AM_READ(SMH_RAM)
275   AM_RANGE(0x080000, 0x0bffff) AM_READ(SMH_ROM)
276   AM_RANGE(0x0e0000, 0x0e0001) AM_READ(ip_select_r)
254   AM_RANGE(0x000000, 0x03ffff) AM_ROM
255   AM_RANGE(0x044000, 0x0443ff) AM_RAM_WRITE(megasys1_vregs_A_w) AM_BASE(&megasys1_vregs)
256   AM_RANGE(0x048000, 0x0487ff) AM_RAM_WRITE(paletteram16_RRRRGGGGBBBBRGBx_word_w) AM_BASE(&paletteram16)
257   AM_RANGE(0x04e000, 0x04ffff) AM_RAM AM_BASE(&megasys1_objectram)
258   AM_RANGE(0x050000, 0x053fff) AM_RAM_WRITE(megasys1_scrollram_0_w) AM_BASE(&megasys1_scrollram[0])
259   AM_RANGE(0x054000, 0x057fff) AM_RAM_WRITE(megasys1_scrollram_1_w) AM_BASE(&megasys1_scrollram[1])
260   AM_RANGE(0x058000, 0x05bfff) AM_RAM_WRITE(megasys1_scrollram_2_w) AM_BASE(&megasys1_scrollram[2])
261   AM_RANGE(0x060000, 0x07ffff) AM_RAM AM_BASE(&megasys1_ram)
262   AM_RANGE(0x080000, 0x0bffff) AM_ROM
263   AM_RANGE(0x0e0000, 0x0e0001) AM_READWRITE(ip_select_r,ip_select_w)
277264ADDRESS_MAP_END
278265
279static ADDRESS_MAP_START( writemem_B, ADDRESS_SPACE_PROGRAM, 16 )
280   ADDRESS_MAP_GLOBAL_MASK(0xfffff)
281    AM_RANGE(0x000000, 0x03ffff) AM_WRITE(SMH_ROM)
282   AM_RANGE(0x044000, 0x0443ff) AM_WRITE(megasys1_vregs_A_w) AM_BASE(&megasys1_vregs)
283   AM_RANGE(0x048000, 0x0487ff) AM_WRITE(paletteram16_RRRRGGGGBBBBRGBx_word_w) AM_BASE(&paletteram16)
284   AM_RANGE(0x04e000, 0x04ffff) AM_WRITE(SMH_RAM) AM_BASE(&megasys1_objectram)
285   AM_RANGE(0x050000, 0x053fff) AM_WRITE(megasys1_scrollram_0_w) AM_BASE(&megasys1_scrollram[0])
286   AM_RANGE(0x054000, 0x057fff) AM_WRITE(megasys1_scrollram_1_w) AM_BASE(&megasys1_scrollram[1])
287   AM_RANGE(0x058000, 0x05bfff) AM_WRITE(megasys1_scrollram_2_w) AM_BASE(&megasys1_scrollram[2])
288   AM_RANGE(0x060000, 0x07ffff) AM_WRITE(SMH_RAM) AM_BASE(&megasys1_ram)
289   AM_RANGE(0x080000, 0x0bffff) AM_WRITE(SMH_ROM)
290   AM_RANGE(0x0e0000, 0x0e0001) AM_WRITE(ip_select_w)
291ADDRESS_MAP_END
292266
293
294
295267/***************************************************************************
296268                            [ Main CPU - System C ]
297269***************************************************************************/
r4679r4680
300272#define INTERRUPT_NUM_C   INTERRUPT_NUM_B
301273#define interrupt_C      interrupt_B
302274
303static ADDRESS_MAP_START( readmem_C, ADDRESS_SPACE_PROGRAM, 16 )
275static ADDRESS_MAP_START( megasys1C_map, ADDRESS_SPACE_PROGRAM, 16 )
304276   ADDRESS_MAP_GLOBAL_MASK(0x1fffff)
305   AM_RANGE(0x000000, 0x07ffff) AM_READ(SMH_ROM)
306   AM_RANGE(0x0c0000, 0x0cffff) AM_READ(megasys1_vregs_C_r)
307   AM_RANGE(0x0d2000, 0x0d3fff) AM_READ(SMH_RAM)
308   AM_RANGE(0x0e0000, 0x0e3fff) AM_READ(SMH_RAM)
309   AM_RANGE(0x0e8000, 0x0ebfff) AM_READ(SMH_RAM)
310   AM_RANGE(0x0f0000, 0x0f3fff) AM_READ(SMH_RAM)
311   AM_RANGE(0x0f8000, 0x0f87ff) AM_READ(SMH_RAM)
312   AM_RANGE(0x0d8000, 0x0d8001) AM_READ(ip_select_r)
313   AM_RANGE(0x1f0000, 0x1fffff) AM_READ(SMH_RAM)
277   AM_RANGE(0x000000, 0x07ffff) AM_ROM
278   AM_RANGE(0x0c0000, 0x0cffff) AM_READWRITE(megasys1_vregs_C_r,megasys1_vregs_C_w) AM_BASE(&megasys1_vregs)
279   AM_RANGE(0x0d2000, 0x0d3fff) AM_RAM AM_BASE(&megasys1_objectram)
280   AM_RANGE(0x0e0000, 0x0e3fff) AM_RAM_WRITE(megasys1_scrollram_0_w) AM_BASE(&megasys1_scrollram[0])
281   AM_RANGE(0x0e8000, 0x0ebfff) AM_RAM_WRITE(megasys1_scrollram_1_w) AM_BASE(&megasys1_scrollram[1])
282   AM_RANGE(0x0f0000, 0x0f3fff) AM_RAM_WRITE(megasys1_scrollram_2_w) AM_BASE(&megasys1_scrollram[2])
283   AM_RANGE(0x0f8000, 0x0f87ff) AM_RAM_WRITE(paletteram16_RRRRGGGGBBBBRGBx_word_w) AM_BASE(&paletteram16)
284   AM_RANGE(0x0d8000, 0x0d8001) AM_READWRITE(ip_select_r,ip_select_w)
285   AM_RANGE(0x1f0000, 0x1fffff) AM_RAM AM_BASE(&megasys1_ram)
314286ADDRESS_MAP_END
315287
316static ADDRESS_MAP_START( writemem_C, ADDRESS_SPACE_PROGRAM, 16 )
317   ADDRESS_MAP_GLOBAL_MASK(0x1fffff)
318    AM_RANGE(0x000000, 0x07ffff) AM_WRITE(SMH_ROM)
319   AM_RANGE(0x0c0000, 0x0cffff) AM_WRITE(megasys1_vregs_C_w) AM_BASE(&megasys1_vregs)
320   AM_RANGE(0x0d2000, 0x0d3fff) AM_WRITE(SMH_RAM) AM_BASE(&megasys1_objectram)
321   AM_RANGE(0x0e0000, 0x0e3fff) AM_WRITE(megasys1_scrollram_0_w) AM_BASE(&megasys1_scrollram[0])
322   AM_RANGE(0x0e8000, 0x0ebfff) AM_WRITE(megasys1_scrollram_1_w) AM_BASE(&megasys1_scrollram[1])
323   AM_RANGE(0x0f0000, 0x0f3fff) AM_WRITE(megasys1_scrollram_2_w) AM_BASE(&megasys1_scrollram[2])
324   AM_RANGE(0x0f8000, 0x0f87ff) AM_WRITE(paletteram16_RRRRGGGGBBBBRGBx_word_w) AM_BASE(&paletteram16)
325   AM_RANGE(0x0d8000, 0x0d8001) AM_WRITE(ip_select_w)
326   AM_RANGE(0x1f0000, 0x1fffff) AM_WRITE(SMH_RAM) AM_BASE(&megasys1_ram)
327ADDRESS_MAP_END
328288
329
330
331
332289/***************************************************************************
333290                            [ Main CPU - System D ]
334291***************************************************************************/
r4679r4680
338295   cpu_set_input_line(device, 2, HOLD_LINE);
339296}
340297
341static ADDRESS_MAP_START( readmem_D, ADDRESS_SPACE_PROGRAM, 16 )
342   AM_RANGE(0x000000, 0x03ffff) AM_READ(SMH_ROM)
343   AM_RANGE(0x0c0000, 0x0c9fff) AM_READ(SMH_RAM)
344   AM_RANGE(0x0ca000, 0x0cbfff) AM_READ(SMH_RAM)
345   AM_RANGE(0x0d0000, 0x0d3fff) AM_READ(SMH_RAM)
346   AM_RANGE(0x0d4000, 0x0d7fff) AM_READ(SMH_RAM)
347   AM_RANGE(0x0d8000, 0x0d87ff) AM_MIRROR(0x3000) AM_READ(SMH_RAM)
298static ADDRESS_MAP_START( megasys1D_map, ADDRESS_SPACE_PROGRAM, 16 )
299   AM_RANGE(0x000000, 0x03ffff) AM_ROM
300   AM_RANGE(0x0c0000, 0x0c9fff) AM_RAM_WRITE(megasys1_vregs_D_w) AM_BASE(&megasys1_vregs)
301   AM_RANGE(0x0ca000, 0x0cbfff) AM_RAM AM_BASE(&megasys1_objectram)
302   AM_RANGE(0x0d0000, 0x0d3fff) AM_RAM_WRITE(megasys1_scrollram_1_w) AM_BASE(&megasys1_scrollram[1])
303   AM_RANGE(0x0d4000, 0x0d7fff) AM_RAM_WRITE(megasys1_scrollram_2_w) AM_BASE(&megasys1_scrollram[2])
304   AM_RANGE(0x0d8000, 0x0d87ff) AM_MIRROR(0x3000) AM_RAM_WRITE(paletteram16_RRRRRGGGGGBBBBBx_word_w) AM_BASE(&paletteram16)
348305   AM_RANGE(0x0e0000, 0x0e0001) AM_READ_PORT("DSW")
349   AM_RANGE(0x0e8000, 0x0ebfff) AM_READ(SMH_RAM)
306   AM_RANGE(0x0e8000, 0x0ebfff) AM_RAM_WRITE(megasys1_scrollram_0_w) AM_BASE(&megasys1_scrollram[0])
350307   AM_RANGE(0x0f0000, 0x0f0001) AM_READ_PORT("SYSTEM")
351   AM_RANGE(0x0f8000, 0x0f8001) AM_DEVREAD8("oki1", okim6295_r, 0x00ff)
352//  { 0x100000, 0x100001  protection
353   AM_RANGE(0x1f0000, 0x1fffff) AM_READ(SMH_RAM)
308   AM_RANGE(0x0f8000, 0x0f8001) AM_DEVREADWRITE8("oki1", okim6295_r,okim6295_w, 0x00ff)
309//  AM_RANGE(0x100000, 0x100001) // protection
310   AM_RANGE(0x1f0000, 0x1fffff) AM_RAM AM_BASE(&megasys1_ram)
354311ADDRESS_MAP_END
355312
356static ADDRESS_MAP_START( writemem_D, ADDRESS_SPACE_PROGRAM, 16 )
357    AM_RANGE(0x000000, 0x03ffff) AM_WRITE(SMH_ROM)
358   AM_RANGE(0x0c0000, 0x0c9fff) AM_WRITE(megasys1_vregs_D_w) AM_BASE(&megasys1_vregs)
359   AM_RANGE(0x0ca000, 0x0cbfff) AM_WRITE(SMH_RAM) AM_BASE(&megasys1_objectram)
360   AM_RANGE(0x0d0000, 0x0d3fff) AM_WRITE(megasys1_scrollram_1_w) AM_BASE(&megasys1_scrollram[1])
361   AM_RANGE(0x0d4000, 0x0d7fff) AM_WRITE(megasys1_scrollram_2_w) AM_BASE(&megasys1_scrollram[2])
362   AM_RANGE(0x0d8000, 0x0d87ff) AM_MIRROR(0x3000) AM_WRITE(paletteram16_RRRRRGGGGGBBBBBx_word_w) AM_BASE(&paletteram16)
363   AM_RANGE(0x0e8000, 0x0ebfff) AM_WRITE(megasys1_scrollram_0_w) AM_BASE(&megasys1_scrollram[0])
364   AM_RANGE(0x0f8000, 0x0f8001) AM_DEVWRITE8("oki1", okim6295_w, 0x00ff)
365//  { 0x100000, 0x100001  protection
366   AM_RANGE(0x1f0000, 0x1fffff) AM_WRITE(SMH_RAM) AM_BASE(&megasys1_ram)
367ADDRESS_MAP_END
368313
369
370314/*************************************
371315 *
372316 *  Sound CPU memory handlers
r4679r4680
428372static void megasys1_sound_irq(const device_config *device, int irq)
429373{
430374   if (irq)
431      cpu_set_input_line(device->machine->cpu[1], 4, HOLD_LINE);
375      cputag_set_input_line(device->machine, "soundcpu", 4, HOLD_LINE);
432376}
433377
434378static READ8_DEVICE_HANDLER( oki_status_r )
r4679r4680
444388***************************************************************************/
445389
446390
447static ADDRESS_MAP_START( sound_readmem_A, ADDRESS_SPACE_PROGRAM, 16 )
448   AM_RANGE(0x000000, 0x01ffff) AM_READ(SMH_ROM)
391static ADDRESS_MAP_START( megasys1A_sound_map, ADDRESS_SPACE_PROGRAM, 16 )
392   AM_RANGE(0x000000, 0x01ffff) AM_ROM
449393   AM_RANGE(0x040000, 0x040001) AM_READ(soundlatch_word_r)
450   AM_RANGE(0x080000, 0x080003) AM_DEVREAD8("ym", ym2151_r, 0x00ff)
451   AM_RANGE(0x0a0000, 0x0a0001) AM_DEVREAD8("oki1", oki_status_r, 0x00ff)
452   AM_RANGE(0x0c0000, 0x0c0001) AM_DEVREAD8("oki2", oki_status_r, 0x00ff)
453   AM_RANGE(0x0e0000, 0x0fffff) AM_READ(SMH_RAM)
454ADDRESS_MAP_END
455
456static ADDRESS_MAP_START( sound_writemem_A, ADDRESS_SPACE_PROGRAM, 16 )
457   AM_RANGE(0x000000, 0x01ffff) AM_WRITE(SMH_ROM)
458394   AM_RANGE(0x060000, 0x060001) AM_WRITE(soundlatch2_word_w)   // to main cpu
459   AM_RANGE(0x080000, 0x080003) AM_DEVWRITE8("ym", ym2151_w, 0x00ff)
395   AM_RANGE(0x080000, 0x080003) AM_DEVREADWRITE8("ym", ym2151_r,ym2151_w, 0x00ff)
396   AM_RANGE(0x0a0000, 0x0a0001) AM_DEVREAD8("oki1", oki_status_r, 0x00ff)
460397   AM_RANGE(0x0a0000, 0x0a0003) AM_DEVWRITE8("oki1", okim6295_w, 0x00ff)
398   AM_RANGE(0x0c0000, 0x0c0001) AM_DEVREAD8("oki2", oki_status_r, 0x00ff)
461399   AM_RANGE(0x0c0000, 0x0c0003) AM_DEVWRITE8("oki2", okim6295_w, 0x00ff)
462   AM_RANGE(0x0e0000, 0x0fffff) AM_WRITE(SMH_RAM)
400   AM_RANGE(0x0e0000, 0x0fffff) AM_RAM
463401ADDRESS_MAP_END
464402
465403
466
467
468
469
470404/***************************************************************************
471405                        [ Sound CPU - System B / C ]
472406***************************************************************************/
473407
474408
475static ADDRESS_MAP_START( sound_readmem_B, ADDRESS_SPACE_PROGRAM, 16 )
476   AM_RANGE(0x000000, 0x01ffff) AM_READ(SMH_ROM)
477   AM_RANGE(0x040000, 0x040001) AM_READ(soundlatch_word_r)   /* from main cpu */
478   AM_RANGE(0x060000, 0x060001) AM_READ(soundlatch_word_r)   /* from main cpu */
479   AM_RANGE(0x080000, 0x080003) AM_DEVREAD8("ym", ym2151_r, 0x00ff)
409static ADDRESS_MAP_START( megasys1B_sound_map, ADDRESS_SPACE_PROGRAM, 16 )
410   AM_RANGE(0x000000, 0x01ffff) AM_ROM
411   AM_RANGE(0x040000, 0x040001) AM_READWRITE(soundlatch_word_r,soundlatch2_word_w)   /* from/to main cpu */
412   AM_RANGE(0x060000, 0x060001) AM_READWRITE(soundlatch_word_r,soundlatch2_word_w)   /* from/to main cpu */
413   AM_RANGE(0x080000, 0x080003) AM_DEVREADWRITE8("ym", ym2151_r,ym2151_w, 0x00ff)
480414   AM_RANGE(0x0a0000, 0x0a0001) AM_DEVREAD8("oki1", oki_status_r, 0x00ff)
481   AM_RANGE(0x0c0000, 0x0c0001) AM_DEVREAD8("oki2", oki_status_r, 0x00ff)
482   AM_RANGE(0x0e0000, 0x0effff) AM_READ(SMH_RAM)
483ADDRESS_MAP_END
484
485static ADDRESS_MAP_START( sound_writemem_B, ADDRESS_SPACE_PROGRAM, 16 )
486   AM_RANGE(0x000000, 0x01ffff) AM_WRITE(SMH_ROM   )
487   AM_RANGE(0x040000, 0x040001) AM_WRITE(soundlatch2_word_w)   /* to main cpu */
488   AM_RANGE(0x060000, 0x060001) AM_WRITE(soundlatch2_word_w)   /* to main cpu */
489   AM_RANGE(0x080000, 0x080003) AM_DEVWRITE8("ym", ym2151_w, 0x00ff)
490415   AM_RANGE(0x0a0000, 0x0a0003) AM_DEVWRITE8("oki1", okim6295_w, 0x00ff)
416   AM_RANGE(0x0c0000, 0x0c0001) AM_DEVREAD8("oki2", oki_status_r, 0x00ff)
491417   AM_RANGE(0x0c0000, 0x0c0003) AM_DEVWRITE8("oki2", okim6295_w, 0x00ff)
492   AM_RANGE(0x0e0000, 0x0effff) AM_WRITE(SMH_RAM)
418   AM_RANGE(0x0e0000, 0x0effff) AM_RAM
493419ADDRESS_MAP_END
494420
495421
496
497
498
499
500422/***************************************************************************
501423                        [ Sound CPU - System Z ]
502424***************************************************************************/
503425
504426
505427
506static ADDRESS_MAP_START( sound_readmem_z80, ADDRESS_SPACE_PROGRAM, 8 )
507   AM_RANGE(0x0000, 0x3fff) AM_READ(SMH_ROM)
508   AM_RANGE(0xc000, 0xc7ff) AM_READ(SMH_RAM)
428static ADDRESS_MAP_START( z80_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
429   AM_RANGE(0x0000, 0x3fff) AM_ROM
430   AM_RANGE(0xc000, 0xc7ff) AM_RAM
509431   AM_RANGE(0xe000, 0xe000) AM_READ(soundlatch_r)
510ADDRESS_MAP_END
511
512static ADDRESS_MAP_START( sound_writemem_z80, ADDRESS_SPACE_PROGRAM, 8 )
513   AM_RANGE(0x0000, 0x3fff) AM_WRITE(SMH_ROM)
514   AM_RANGE(0xc000, 0xc7ff) AM_WRITE(SMH_RAM)
515432   AM_RANGE(0xf000, 0xf000) AM_WRITENOP /* ?? */
516433ADDRESS_MAP_END
517434
518static ADDRESS_MAP_START( sound_io_map, ADDRESS_SPACE_IO, 8 )
435static ADDRESS_MAP_START( z80_sound_io_map, ADDRESS_SPACE_IO, 8 )
519436   ADDRESS_MAP_GLOBAL_MASK(0xff)
520437   AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ym", ym2203_r, ym2203_w)
521438ADDRESS_MAP_END
r4679r4680
14701387      }
14711388   }
14721389
1473   cpu_set_input_line(space->machine->cpu[0],4,HOLD_LINE);
1390   cputag_set_input_line(space->machine, "maincpu", 4, HOLD_LINE);
14741391}
14751392
14761393/*************************************
r4679r4680
15391456
15401457   /* basic machine hardware */
15411458   MDRV_CPU_ADD("maincpu", M68000, SYS_A_CPU_CLOCK) /* 6MHz verified */
1542   MDRV_CPU_PROGRAM_MAP(readmem_A,writemem_A)
1459   MDRV_CPU_PROGRAM_MAP(megasys1A_map,0)
15431460   MDRV_CPU_VBLANK_INT_HACK(interrupt_A,INTERRUPT_NUM_A)
15441461
15451462   MDRV_CPU_ADD("soundcpu", M68000, SOUND_CPU_CLOCK) /* 7MHz verified */
1546   MDRV_CPU_PROGRAM_MAP(sound_readmem_A,sound_writemem_A)
1463   MDRV_CPU_PROGRAM_MAP(megasys1A_sound_map,0)
15471464
15481465   MDRV_QUANTUM_TIME(HZ(120000))
15491466
r4679r4680
15951512
15961513   MDRV_CPU_REPLACE("maincpu", M68000, SYS_B_CPU_CLOCK) /* 8MHz */
15971514   MDRV_CPU_MODIFY("maincpu")
1598   MDRV_CPU_PROGRAM_MAP(readmem_B,writemem_B)
1515   MDRV_CPU_PROGRAM_MAP(megasys1B_map,0)
15991516   MDRV_CPU_VBLANK_INT_HACK(interrupt_B,INTERRUPT_NUM_B)
16001517
16011518   MDRV_CPU_MODIFY("soundcpu")
1602   MDRV_CPU_PROGRAM_MAP(sound_readmem_B,sound_writemem_B)
1519   MDRV_CPU_PROGRAM_MAP(megasys1B_sound_map,0)
16031520MACHINE_DRIVER_END
16041521
16051522static MACHINE_DRIVER_START( system_B_hayaosi1 )
r4679r4680
16251542   MDRV_IMPORT_FROM(system_A)
16261543   MDRV_CPU_REPLACE("maincpu", M68000, SYS_C_CPU_CLOCK) /* 12MHz */
16271544   MDRV_CPU_MODIFY("maincpu")
1628   MDRV_CPU_PROGRAM_MAP(readmem_C,writemem_C)
1545   MDRV_CPU_PROGRAM_MAP(megasys1C_map,0)
16291546   MDRV_CPU_VBLANK_INT_HACK(interrupt_C,INTERRUPT_NUM_C)
16301547
16311548   MDRV_CPU_MODIFY("soundcpu")
1632   MDRV_CPU_PROGRAM_MAP(sound_readmem_B,sound_writemem_B)
1549   MDRV_CPU_PROGRAM_MAP(megasys1B_sound_map,0)
16331550MACHINE_DRIVER_END
16341551
16351552
r4679r4680
16481565
16491566   /* basic machine hardware */
16501567   MDRV_CPU_ADD("maincpu", M68000, SYS_D_CPU_CLOCK)   /* 8MHz */
1651   MDRV_CPU_PROGRAM_MAP(readmem_D,writemem_D)
1568   MDRV_CPU_PROGRAM_MAP(megasys1D_map,0)
16521569   MDRV_CPU_VBLANK_INT("screen", interrupt_D)
16531570
16541571   MDRV_MACHINE_RESET(megasys1)
r4679r4680
16921609
16931610static void irq_handler(const device_config *device, int irq)
16941611{
1695   cpu_set_input_line(device->machine->cpu[1],0,irq ? ASSERT_LINE : CLEAR_LINE);
1612   cputag_set_input_line(device->machine, "soundcpu", 0, irq ? ASSERT_LINE : CLEAR_LINE);
16961613}
16971614
16981615
r4679r4680
17101627
17111628   /* basic machine hardware */
17121629   MDRV_CPU_ADD("maincpu", M68000, SYS_A_CPU_CLOCK) /* 6MHz (12MHz / 2) */
1713   MDRV_CPU_PROGRAM_MAP(readmem_A,writemem_A)
1630   MDRV_CPU_PROGRAM_MAP(megasys1A_map,0)
17141631   MDRV_CPU_VBLANK_INT_HACK(interrupt_A,INTERRUPT_NUM_A)
17151632
17161633   MDRV_CPU_ADD("audiocpu", Z80, 3000000) /* OSC 12MHz divided by 4 ??? */
1717   MDRV_CPU_PROGRAM_MAP(sound_readmem_z80,sound_writemem_z80)
1718   MDRV_CPU_IO_MAP(sound_io_map,0)
1634   MDRV_CPU_PROGRAM_MAP(z80_sound_map,0)
1635   MDRV_CPU_IO_MAP(z80_sound_io_map,0)
17191636
17201637   /* video hardware */
17211638   MDRV_SCREEN_ADD("screen", RASTER)
r4679r4680
36633580            | ((rom[i] & 0x48) << 1)
36643581            | ((rom[i] & 0x10) << 2);
36653582
3666   buffer = malloc_or_die(size);
3583   buffer = alloc_array_or_die(UINT8, size);
36673584
36683585   memcpy(buffer,rom,size);
36693586
r4679r4680
36923609   for (i = 0;i < size;i++)
36933610      rom[i] =   BITSWAP8(rom[i],0x4,0x3,0x5,0x7,0x6,0x2,0x1,0x0);
36943611
3695   buffer = malloc_or_die(size);
3612   buffer = alloc_array_or_die(UINT8, size);
36963613
36973614   memcpy(buffer,rom,size);
36983615
r4679r4680
38413758   RAM[0x438/2] = 0x4e71;   //
38423759
38433760   /* the sound code writes oki commands to both the lsb and msb */
3844   memory_install_write16_device_handler(cpu_get_address_space(machine->cpu[1], ADDRESS_SPACE_PROGRAM), oki1, 0xa0000, 0xa0003, 0, 0, okim6295_both_w);
3845   memory_install_write16_device_handler(cpu_get_address_space(machine->cpu[1], ADDRESS_SPACE_PROGRAM), oki2, 0xc0000, 0xc0003, 0, 0, okim6295_both_w);
3761   memory_install_write16_device_handler(cputag_get_address_space(machine, "soundcpu", ADDRESS_SPACE_PROGRAM), oki1, 0xa0000, 0xa0003, 0, 0, okim6295_both_w);
3762   memory_install_write16_device_handler(cputag_get_address_space(machine, "soundcpu", ADDRESS_SPACE_PROGRAM), oki2, 0xc0000, 0xc0003, 0, 0, okim6295_both_w);
38463763}
38473764
38483765static DRIVER_INIT( peekaboo )
38493766{
3850   memory_install_readwrite16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x100000, 0x100001, 0, 0, protection_peekaboo_r, protection_peekaboo_w);
3767   memory_install_readwrite16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x100000, 0x100001, 0, 0, protection_peekaboo_r, protection_peekaboo_w);
38513768}
38523769
38533770static DRIVER_INIT( phantasm )
r4679r4680
38923809   astyanax_rom_decode(machine, "maincpu");
38933810
38943811   /* Sprite RAM is mirrored */
3895   memory_install_readwrite16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x8c000, 0x8cfff, 0, 0, soldamj_spriteram16_r, soldamj_spriteram16_w);
3812   memory_install_readwrite16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x8c000, 0x8cfff, 0, 0, soldamj_spriteram16_r, soldamj_spriteram16_w);
38963813}
38973814
38983815static DRIVER_INIT( soldam )
r4679r4680
39003817   phantasm_rom_decode(machine, "maincpu");
39013818
39023819   /* Sprite RAM is mirrored */
3903   memory_install_readwrite16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x8c000, 0x8cfff, 0, 0, soldamj_spriteram16_r, soldamj_spriteram16_w);
3820   memory_install_readwrite16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x8c000, 0x8cfff, 0, 0, soldamj_spriteram16_r, soldamj_spriteram16_w);
39043821}
39053822
39063823
r4679r4680
39243841   UINT16 *ROM = (UINT16*)memory_region(machine, "maincpu");
39253842   ROM[0x00744/2] = 0x4e71;
39263843
3927   memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xe0000, 0xe000f, 0, 0, monkelf_input_r);
3844   memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xe0000, 0xe000f, 0, 0, monkelf_input_r);
39283845
39293846   megasys1_ram += 0x10000/2;
39303847
r4679r4680
39683885GAME( 1993, cybattlr, 0,        system_C,          cybattlr, cybattlr, ROT90,  "Jaleco", "Cybattler", 0 )
39693886GAME( 1993, hayaosi1, 0,        system_B_hayaosi1, hayaosi1, hayaosi1, ROT0,   "Jaleco", "Hayaoshi Quiz Ouza Ketteisen - The King Of Quiz", GAME_IMPERFECT_GRAPHICS )
39703887GAME( 1993, peekaboo, 0,        system_D,          peekaboo, peekaboo, ROT0,   "Jaleco", "Peek-a-Boo!", 0 )
3971
src/mame/drivers/crshrace.c
r4679r4680
171171   {
172172      pending_command = 1;
173173      soundlatch_w(space,offset,data & 0xff);
174      cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_NMI, PULSE_LINE);
174      cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
175175   }
176176}
177177
r4679r4680
187187
188188
189189
190static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 16 )
191   AM_RANGE(0x000000, 0x07ffff) AM_READ(SMH_ROM)
190static ADDRESS_MAP_START( crshrace_map, ADDRESS_SPACE_PROGRAM, 16 )
191   AM_RANGE(0x000000, 0x07ffff) AM_ROM
192192   AM_RANGE(0x300000, 0x3fffff) AM_READ(extrarom1_r)
193193   AM_RANGE(0x400000, 0x4fffff) AM_READ(extrarom2_r)
194194   AM_RANGE(0x500000, 0x5fffff) AM_READ(extrarom2_r)   /* mirror */
195   AM_RANGE(0xa00000, 0xa0ffff) AM_READ(SMH_RAM)
196   AM_RANGE(0xd00000, 0xd01fff) AM_READ(SMH_RAM)
197   AM_RANGE(0xe00000, 0xe01fff) AM_READ(SMH_RAM)
198   AM_RANGE(0xfe0000, 0xfeffff) AM_READ(SMH_RAM)
199   AM_RANGE(0xffd000, 0xffdfff) AM_READ(SMH_RAM)
200   AM_RANGE(0xffe000, 0xffefff) AM_READ(SMH_RAM)
201   AM_RANGE(0xfff000, 0xfff001) AM_READ_PORT("P1")
195   AM_RANGE(0xa00000, 0xa0ffff) AM_RAM AM_BASE(&spriteram16_2) AM_SIZE(&spriteram_2_size)
196   AM_RANGE(0xd00000, 0xd01fff) AM_RAM_WRITE(crshrace_videoram1_w) AM_BASE(&crshrace_videoram1)
197   AM_RANGE(0xe00000, 0xe01fff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)
198   AM_RANGE(0xfe0000, 0xfeffff) AM_RAM
199   AM_RANGE(0xffc000, 0xffc001) AM_WRITE(crshrace_roz_bank_w)
200   AM_RANGE(0xffd000, 0xffdfff) AM_RAM_WRITE(crshrace_videoram2_w) AM_BASE(&crshrace_videoram2)
201   AM_RANGE(0xffe000, 0xffefff) AM_RAM_WRITE(paletteram16_xGGGGGBBBBBRRRRR_word_w) AM_BASE(&paletteram16)
202   AM_RANGE(0xfff000, 0xfff001) AM_READ_PORT("P1") AM_WRITE(crshrace_gfxctrl_w)
202203   AM_RANGE(0xfff002, 0xfff003) AM_READ_PORT("P2")
203204   AM_RANGE(0xfff004, 0xfff005) AM_READ_PORT("DSW0")
204205   AM_RANGE(0xfff006, 0xfff007) AM_READ_PORT("DSW2")
206   AM_RANGE(0xfff008, 0xfff009) AM_WRITE(sound_command_w)
205207   AM_RANGE(0xfff00a, 0xfff00b) AM_READ_PORT("DSW1")
206208   AM_RANGE(0xfff00e, 0xfff00f) AM_READ_PORT("P3")
207ADDRESS_MAP_END
208
209static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 16 )
210   AM_RANGE(0x000000, 0x07ffff) AM_WRITE(SMH_ROM)
211   AM_RANGE(0xa00000, 0xa0ffff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16_2) AM_SIZE(&spriteram_2_size)         // RAM-5
212   AM_RANGE(0xd00000, 0xd01fff) AM_WRITE(crshrace_videoram1_w) AM_BASE(&crshrace_videoram1)            // RAM-3 H/L
213   AM_RANGE(0xe00000, 0xe01fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)            // RAM-6
214   AM_RANGE(0xffc000, 0xffc001) AM_WRITE(crshrace_roz_bank_w)
215   AM_RANGE(0xfe0000, 0xfeffff) AM_WRITE(SMH_RAM)   /* work RAM */                        // RAM-1 H/L
216   AM_RANGE(0xffd000, 0xffdfff) AM_WRITE(crshrace_videoram2_w) AM_BASE(&crshrace_videoram2)            // RAM-2 H/L
217   AM_RANGE(0xffe000, 0xffefff) AM_WRITE(paletteram16_xGGGGGBBBBBRRRRR_word_w) AM_BASE(&paletteram16)   // RAM-4 H/L
218   AM_RANGE(0xfff000, 0xfff001) AM_WRITE(crshrace_gfxctrl_w)
219   AM_RANGE(0xfff008, 0xfff009) AM_WRITE(sound_command_w)
220209   AM_RANGE(0xfff020, 0xfff03f) AM_WRITE(SMH_RAM) AM_BASE(&K053936_0_ctrl)
221210   AM_RANGE(0xfff044, 0xfff047) AM_WRITE(SMH_RAM)   // ??? moves during race
222211ADDRESS_MAP_END
223212
224static ADDRESS_MAP_START( sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
225   AM_RANGE(0x0000, 0x77ff) AM_READ(SMH_ROM)
226   AM_RANGE(0x7800, 0x7fff) AM_READ(SMH_RAM)
227   AM_RANGE(0x8000, 0xffff) AM_READ(SMH_BANK1)
213static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 )
214   AM_RANGE(0x0000, 0x77ff) AM_ROM
215   AM_RANGE(0x7800, 0x7fff) AM_RAM
216   AM_RANGE(0x8000, 0xffff) AM_ROMBANK(1)
228217ADDRESS_MAP_END
229218
230static ADDRESS_MAP_START( sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
231   AM_RANGE(0x0000, 0x77ff) AM_WRITE(SMH_ROM)
232   AM_RANGE(0x7800, 0x7fff) AM_WRITE(SMH_RAM)
233   AM_RANGE(0x8000, 0xffff) AM_WRITE(SMH_ROM)
234ADDRESS_MAP_END
235
236219static ADDRESS_MAP_START( sound_io_map, ADDRESS_SPACE_IO, 8 )
237220   ADDRESS_MAP_GLOBAL_MASK(0xff)
238221   AM_RANGE(0x00, 0x00) AM_WRITE(crshrace_sh_bankswitch_w)
r4679r4680
445428
446429static void irqhandler(const device_config *device, int irq)
447430{
448   cpu_set_input_line(device->machine->cpu[1],0,irq ? ASSERT_LINE : CLEAR_LINE);
431   cputag_set_input_line(device->machine, "audiocpu", 0, irq ? ASSERT_LINE : CLEAR_LINE);
449432}
450433
451434static const ym2610_interface ym2610_config =
r4679r4680
459442
460443   /* basic machine hardware */
461444   MDRV_CPU_ADD("maincpu", M68000,16000000)   /* 16 MHz ??? */
462   MDRV_CPU_PROGRAM_MAP(readmem,writemem)
445   MDRV_CPU_PROGRAM_MAP(crshrace_map,0)
463446   MDRV_CPU_VBLANK_INT("screen", irq1_line_hold)
464447
465448   MDRV_CPU_ADD("audiocpu", Z80,4000000)   /* 4 MHz ??? */
466   MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem)
449   MDRV_CPU_PROGRAM_MAP(sound_map,0)
467450   MDRV_CPU_IO_MAP(sound_io_map,0)
468451
469452   /* video hardware */
src/mame/drivers/airbustr.c
r4679r4680
277277
278278static WRITE8_HANDLER( master_nmi_trigger_w )
279279{
280   cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_NMI, PULSE_LINE);
280   cputag_set_input_line(space->machine, "slave", INPUT_LINE_NMI, PULSE_LINE);
281281}
282282
283283static void airbustr_bankswitch(running_machine *machine, const char *cpu, int bank, int data)
r4679r4680
334334{
335335   soundlatch_w(space, 0, data);
336336   soundlatch_status = 1;   // soundlatch has been written
337   cpu_set_input_line(space->machine->cpu[2], INPUT_LINE_NMI, PULSE_LINE);   // cause a nmi to sub cpu
337   cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);   // cause a nmi to sub cpu
338338}
339339
340340static WRITE8_HANDLER( soundcommand2_w )
r4679r4680
598598
599599static MACHINE_RESET( airbustr )
600600{
601   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
601   const address_space *space = cputag_get_address_space(machine, "master", ADDRESS_SPACE_PROGRAM);
602602   soundlatch_status = soundlatch2_status = 0;
603603   master_addr = 0xff;
604604   slave_addr = 0xfd;
r4679r4680
770770
771771static DRIVER_INIT( airbustr )
772772{
773   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xe000, 0xefff, 0, 0, devram_r); // protection device lives here
773   memory_install_read8_handler(cputag_get_address_space(machine, "master", ADDRESS_SPACE_PROGRAM), 0xe000, 0xefff, 0, 0, devram_r); // protection device lives here
774774}
775775
776776
src/mame/drivers/pacman.c
r4679r4680
397397
398398static WRITE8_HANDLER( pacman_interrupt_vector_w )
399399{
400   cpu_set_input_line_vector(space->machine->cpu[0], 0, data);
401   cpu_set_input_line(space->machine->cpu[0], 0, CLEAR_LINE);
400   cpu_set_input_line_vector(cputag_get_cpu(space->machine, "maincpu"), 0, data);
401   cputag_set_input_line(space->machine, "maincpu", 0, CLEAR_LINE);
402402}
403403
404404
r4679r4680
477477
478478static WRITE8_HANDLER( piranha_interrupt_vector_w)
479479{
480   if (data==0xfa) data=0x78;
481   if (data==0xfc) data=0xfc;
482   cpu_set_input_line_vector(space->machine->cpu[0], 0, data );
480   if (data == 0xfa) data = 0x78;
481   if (data == 0xfc) data = 0xfc;
482   cpu_set_input_line_vector(cputag_get_cpu(space->machine, "maincpu"), 0, data );
483483}
484484
485485
486486static WRITE8_HANDLER( nmouse_interrupt_vector_w)
487487{
488   if (data==0xbf) data=0x3c;
489   if (data==0xc6) data=0x40;
490   if (data==0xfc) data=0xfc;
491   cpu_set_input_line_vector(space->machine->cpu[0], 0, data );
488   if (data == 0xbf) data = 0x3c;
489   if (data == 0xc6) data = 0x40;
490   if (data == 0xfc) data = 0xfc;
491   cpu_set_input_line_vector(cputag_get_cpu(space->machine, "maincpu"), 0, data );
492492}
493493
494494
r4679r4680
53015301static void maketrax_rom_decode(running_machine *machine)
53025302{
53035303   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
5304   UINT8 *decrypted = auto_malloc(0x4000);
5304   UINT8 *decrypted = auto_alloc_array(machine, UINT8, 0x4000);
53055305   UINT8 *rom = memory_region(machine, "maincpu");
53065306
53075307   /* patch protection using a copy of the opcodes so ROM checksum */
r4679r4680
53245324static DRIVER_INIT( maketrax )
53255325{
53265326   /* set up protection handlers */
5327   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x5080, 0x50bf, 0, 0, maketrax_special_port2_r);
5328   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x50c0, 0x50ff, 0, 0, maketrax_special_port3_r);
5327   memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x5080, 0x50bf, 0, 0, maketrax_special_port2_r);
5328   memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x50c0, 0x50ff, 0, 0, maketrax_special_port3_r);
53295329
53305330   maketrax_rom_decode(machine);
53315331}
r4679r4680
53335333static void korosuke_rom_decode(running_machine *machine)
53345334{
53355335   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
5336   UINT8 *decrypted = auto_malloc(0x4000);
5336   UINT8 *decrypted = auto_alloc_array(machine, UINT8, 0x4000);
53375337   UINT8 *rom = memory_region(machine, "maincpu");
53385338
53395339   /* patch protection using a copy of the opcodes so ROM checksum */
r4679r4680
53565356static DRIVER_INIT( korosuke )
53575357{
53585358   /* set up protection handlers */
5359   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x5080, 0x5080, 0, 0, korosuke_special_port2_r);
5360   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x50c0, 0x50ff, 0, 0, korosuke_special_port3_r);
5359   memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x5080, 0x5080, 0, 0, korosuke_special_port2_r);
5360   memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x50c0, 0x50ff, 0, 0, korosuke_special_port3_r);
53615361
53625362   korosuke_rom_decode(machine);
53635363}
r4679r4680
56925692static DRIVER_INIT( cannonbp )
56935693{
56945694   /* extra memory */
5695   memory_install_readwrite8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x4800, 0x4bff, 0, 0, SMH_BANK5, SMH_BANK5);
5696   memory_set_bankptr(machine, 5, auto_malloc(0x400));
5695   memory_install_readwrite8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x4800, 0x4bff, 0, 0, (read8_space_func)SMH_BANK(5), (write8_space_func)SMH_BANK(5));
5696   memory_set_bankptr(machine, 5, auto_alloc_array(machine, UINT8, 0x400));
56975697
56985698   /* protection? */
5699   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x3000, 0x3fff, 0, 0, cannonbp_protection_r);
5699   memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x3000, 0x3fff, 0, 0, cannonbp_protection_r);
57005700}
57015701
57025702
r4679r4680
57075707 *************************************/
57085708
57095709/*          rom       parent    machine   inp       init */
5710GAME( 1980, puckman,  0,        pacman,   pacman,   0,        ROT90,  "Namco", "PuckMan (Japan set 1, Probably Bootleg)", GAME_SUPPORTS_SAVE )
5710GAME( 1980, puckman,  0,        pacman,   pacman,   0,        ROT90,  "Namco", "PuckMan (Japan set 1)", GAME_SUPPORTS_SAVE )
57115711GAME( 1980, puckmana, puckman,  pacman,   pacman,   0,        ROT90,  "Namco", "PuckMan (Japan set 2)", GAME_SUPPORTS_SAVE )
57125712GAME( 1980, puckmanf, puckman,  pacman,   pacman,   0,        ROT90,  "Namco", "PuckMan (Japan set 1 with speedup hack)", GAME_SUPPORTS_SAVE )
57135713GAME( 1980, puckmanh, puckman,  pacman,   pacman,   0,        ROT90,  "hack", "Puckman (Falcom?)", GAME_SUPPORTS_SAVE )
src/mame/drivers/dcheese.c
r4679r4680
8383void dcheese_signal_irq(running_machine *machine, int which)
8484{
8585   irq_state[which] = 1;
86   update_irq_state(machine->cpu[0]);
86   update_irq_state(cputag_get_cpu(machine, "maincpu"));
8787}
8888
8989
r4679r4680
103103
104104static MACHINE_START( dcheese )
105105{
106   cpu_set_irq_callback(machine->cpu[0], irq_callback);
106   cpu_set_irq_callback(cputag_get_cpu(machine, "maincpu"), irq_callback);
107107
108108   state_save_register_global_array(machine, irq_state);
109109   state_save_register_global(machine, soundlatch_full);
r4679r4680
145145   {
146146      /* write the latch and set the IRQ */
147147      soundlatch_full = 1;
148      cpu_set_input_line(space->machine->cpu[1], 0, ASSERT_LINE);
148      cputag_set_input_line(space->machine, "audiocpu", 0, ASSERT_LINE);
149149      soundlatch_w(space, 0, data & 0xff);
150150   }
151151}
r4679r4680
162162{
163163   /* read the latch and clear the IRQ */
164164   soundlatch_full = 0;
165   cpu_set_input_line(space->machine->cpu[1], 0, CLEAR_LINE);
165   cputag_set_input_line(space->machine, "audiocpu", 0, CLEAR_LINE);
166166   return soundlatch_r(space, 0);
167167}
168168
r4679r4680
805805GAME( 1994, fredmemj, fredmem, fredmem, fredmem, dcheese, ROT0,  "Coastal Amusements", "Fred Flintstones' Memory Match (Japan, High Score version, 3/20/95)", GAME_SUPPORTS_SAVE )
806806GAME( 1994, fredmemc, fredmem, fredmem, fredmem, dcheese, ROT0,  "Coastal Amusements", "Fred Flintstones' Memory Match (Mandarin Chinese, 3/17/95)", GAME_SUPPORTS_SAVE )
807807GAME( 1994, fredmesp, fredmem, fredmem, fredmem, dcheese, ROT0,  "Coastal Amusements", "Fred Flintstones' Memory Match (Spanish, 3/17/95)", GAME_SUPPORTS_SAVE )
808
src/mame/drivers/chqflag.c
r4679r4680
5656   /* bit 5 = memory bank select */
5757   if (data & 0x20)
5858   {
59      memory_install_readwrite8_handler(space, 0x1800, 0x1fff, 0, 0, SMH_BANK5, paletteram_xBBBBBGGGGGRRRRR_be_w);
59      memory_install_readwrite8_handler(space, 0x1800, 0x1fff, 0, 0, (read8_space_func)SMH_BANK(5), paletteram_xBBBBBGGGGGRRRRR_be_w);
6060      memory_set_bankptr(space->machine, 5, paletteram);
6161
6262      if (K051316_readroms)
r4679r4680
6666   }
6767   else
6868   {
69      memory_install_readwrite8_handler(space, 0x1000, 0x17ff, 0, 0, SMH_BANK1, SMH_BANK1);            /* RAM */
70      memory_install_readwrite8_handler(space, 0x1800, 0x1fff, 0, 0, SMH_BANK2, SMH_BANK2);            /* RAM */
69      memory_install_readwrite8_handler(space, 0x1000, 0x17ff, 0, 0, (read8_space_func)SMH_BANK(1), (write8_space_func)SMH_BANK(1));            /* RAM */
70      memory_install_readwrite8_handler(space, 0x1800, 0x1fff, 0, 0, (read8_space_func)SMH_BANK(2), (write8_space_func)SMH_BANK(2));            /* RAM */
7171   }
7272
7373   /* other bits unknown/unused */
r4679r4680
8888   else
8989      memory_install_read8_handler(space, 0x2800, 0x2fff, 0, 0, K051316_1_r);      /* 051316 */
9090
91   /* Bits 3-7 probably control palette dimming in a similar way to TMNT2/Saunset Riders, */
91   /* Bits 3-7 probably control palette dimming in a similar way to TMNT2/Sunset Riders, */
9292   /* however I don't have enough evidence to determine the exact behaviour. */
9393   /* Bits 3 and 7 are set in night stages, where the background should get darker and */
9494   /* the headlight (which have the shadow bit set) become highlights */
r4679r4680
140140
141141static WRITE8_HANDLER( chqflag_sh_irqtrigger_w )
142142{
143   cpu_set_input_line(space->machine->cpu[1],0,HOLD_LINE);
143   soundlatch2_w(space, 0, data);
144   cputag_set_input_line(space->machine, "audiocpu", 0, HOLD_LINE);
144145}
145146
146147
147148/****************************************************************************/
148149
149static ADDRESS_MAP_START( chqflag_readmem, ADDRESS_SPACE_PROGRAM, 8 )
150   AM_RANGE(0x0000, 0x0fff) AM_READ(SMH_RAM)               /* RAM */
151   AM_RANGE(0x1000, 0x17ff) AM_READ(SMH_BANK1)               /* banked RAM (RAM/051316 (chip 1)) */
152   AM_RANGE(0x1800, 0x1fff) AM_READ(SMH_BANK2)               /* palette + RAM */
153   AM_RANGE(0x2000, 0x2007) AM_READ(K051937_r)               /* Sprite control registers */
154   AM_RANGE(0x2400, 0x27ff) AM_READ(K051960_r)               /* Sprite RAM */
155   AM_RANGE(0x2800, 0x2fff) AM_READ(SMH_BANK3)               /* 051316 zoom/rotation (chip 2) */
156   AM_RANGE(0x3100, 0x3100) AM_READ_PORT("DSW1")            /* DIPSW #1  */
157   AM_RANGE(0x3200, 0x3200) AM_READ_PORT("IN1")            /* COINSW, STARTSW, test mode */
158   AM_RANGE(0x3201, 0x3201) AM_READ_PORT("IN0")            /* DIPSW #3, SW 4 */
159   AM_RANGE(0x3203, 0x3203) AM_READ_PORT("DSW2")            /* DIPSW #2 */
160   AM_RANGE(0x3400, 0x341f) AM_READ(K051733_r)               /* 051733 (protection) */
161   AM_RANGE(0x3701, 0x3701) AM_READ_PORT("IN2")            /* Brake + Shift + ? */
162   AM_RANGE(0x3702, 0x3702) AM_READ(analog_read_r)            /* accelerator/wheel */
163   AM_RANGE(0x4000, 0x7fff) AM_READ(SMH_BANK4)               /* banked ROM */
164   AM_RANGE(0x8000, 0xffff) AM_READ(SMH_ROM)               /* ROM */
150static ADDRESS_MAP_START( chqflag_map, ADDRESS_SPACE_PROGRAM, 8 )
151   AM_RANGE(0x0000, 0x0fff) AM_RAM                                    /* RAM */
152   AM_RANGE(0x1000, 0x17ff) AM_RAMBANK(1)                              /* banked RAM (RAM/051316 (chip 1)) */
153   AM_RANGE(0x1800, 0x1fff) AM_RAMBANK(2)                              /* palette + RAM */
154   AM_RANGE(0x2000, 0x2007) AM_READWRITE(K051937_r, K051937_w)               /* Sprite control registers */
155   AM_RANGE(0x2400, 0x27ff) AM_READWRITE(K051960_r, K051960_w)               /* Sprite RAM */
156   AM_RANGE(0x2800, 0x2fff) AM_READWRITE(SMH_BANK(3), K051316_1_w)            /* 051316 zoom/rotation (chip 2) */
157   AM_RANGE(0x3000, 0x3000) AM_WRITE(soundlatch_w)                        /* sound code # */
158   AM_RANGE(0x3001, 0x3001) AM_WRITE(chqflag_sh_irqtrigger_w)               /* cause interrupt on audio CPU */
159   AM_RANGE(0x3002, 0x3002) AM_WRITE(chqflag_bankswitch_w)                  /* bankswitch control */
160   AM_RANGE(0x3003, 0x3003) AM_WRITE(chqflag_vreg_w)                     /* enable K051316 ROM reading */
161   AM_RANGE(0x3100, 0x3100) AM_READ_PORT("DSW1")                        /* DIPSW #1  */
162   AM_RANGE(0x3200, 0x3200) AM_READ_PORT("IN1")                        /* COINSW, STARTSW, test mode */
163   AM_RANGE(0x3201, 0x3201) AM_READ_PORT("IN0")                        /* DIPSW #3, SW 4 */
164   AM_RANGE(0x3203, 0x3203) AM_READ_PORT("DSW2")                        /* DIPSW #2 */
165   AM_RANGE(0x3300, 0x3300) AM_WRITE(watchdog_reset_w)                     /* watchdog timer */
166   AM_RANGE(0x3400, 0x341f) AM_READWRITE(K051733_r, K051733_w)               /* 051733 (protection) */
167   AM_RANGE(0x3500, 0x350f) AM_WRITE(K051316_ctrl_0_w)                     /* 051316 control registers (chip 1) */
168   AM_RANGE(0x3600, 0x360f) AM_WRITE(K051316_ctrl_1_w)                     /* 051316 control registers (chip 2) */
169   AM_RANGE(0x3700, 0x3700) AM_WRITE(select_analog_ctrl_w)                  /* select accelerator/wheel */
170   AM_RANGE(0x3701, 0x3701) AM_READ_PORT("IN2")                        /* Brake + Shift + ? */
171   AM_RANGE(0x3702, 0x3702) AM_READWRITE(analog_read_r, select_analog_ctrl_w)   /* accelerator/wheel */
172   AM_RANGE(0x4000, 0x7fff) AM_ROMBANK(4)                              /* banked ROM */
173   AM_RANGE(0x8000, 0xffff) AM_ROM                                    /* ROM */
165174ADDRESS_MAP_END
166175
167static ADDRESS_MAP_START( chqflag_writemem, ADDRESS_SPACE_PROGRAM, 8 )
168   AM_RANGE(0x0000, 0x0fff) AM_WRITE(SMH_RAM)               /* RAM */
169   AM_RANGE(0x1000, 0x17ff) AM_WRITE(SMH_BANK1)            /* banked RAM (RAM/051316 (chip 1)) */
170   AM_RANGE(0x1800, 0x1fff) AM_WRITE(SMH_BANK2)               /* palette + RAM */
171   AM_RANGE(0x2000, 0x2007) AM_WRITE(K051937_w)               /* Sprite control registers */
172   AM_RANGE(0x2400, 0x27ff) AM_WRITE(K051960_w)               /* Sprite RAM */
173   AM_RANGE(0x2800, 0x2fff) AM_WRITE(K051316_1_w)            /* 051316 zoom/rotation (chip 2) */
174   AM_RANGE(0x3000, 0x3000) AM_WRITE(soundlatch_w)            /* sound code # */
175   AM_RANGE(0x3001, 0x3001) AM_WRITE(chqflag_sh_irqtrigger_w)   /* cause interrupt on audio CPU */
176   AM_RANGE(0x3002, 0x3002) AM_WRITE(chqflag_bankswitch_w)      /* bankswitch control */
177   AM_RANGE(0x3003, 0x3003) AM_WRITE(chqflag_vreg_w)            /* enable K051316 ROM reading */
178   AM_RANGE(0x3300, 0x3300) AM_WRITE(watchdog_reset_w)         /* watchdog timer */
179   AM_RANGE(0x3400, 0x341f) AM_WRITE(K051733_w)               /* 051733 (protection) */
180   AM_RANGE(0x3500, 0x350f) AM_WRITE(K051316_ctrl_0_w)         /* 051316 control registers (chip 1) */
181   AM_RANGE(0x3600, 0x360f) AM_WRITE(K051316_ctrl_1_w)         /* 051316 control registers (chip 2) */
182   AM_RANGE(0x3700, 0x3700) AM_WRITE(select_analog_ctrl_w)      /* select accelerator/wheel */
183   AM_RANGE(0x3702, 0x3702) AM_WRITE(select_analog_ctrl_w)      /* select accelerator/wheel (mirror?) */
184   AM_RANGE(0x4000, 0x7fff) AM_WRITE(SMH_ROM)               /* banked ROM */
185   AM_RANGE(0x8000, 0xffff) AM_WRITE(SMH_ROM)               /* ROM */
186ADDRESS_MAP_END
187
188static ADDRESS_MAP_START( chqflag_readmem_sound, ADDRESS_SPACE_PROGRAM, 8 )
189   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)            /* ROM */
190   AM_RANGE(0x8000, 0x87ff) AM_READ(SMH_RAM)            /* RAM */
191   AM_RANGE(0xa000, 0xa00d) AM_DEVREAD("konami1", k007232_r)   /* 007232 (chip 1) */
192   AM_RANGE(0xb000, 0xb00d) AM_DEVREAD("konami2", k007232_r)   /* 007232 (chip 2) */
193   AM_RANGE(0xc000, 0xc001) AM_DEVREAD("ym", ym2151_r)   /* YM2151 */
194   AM_RANGE(0xd000, 0xd000) AM_READ(soundlatch_r)         /* soundlatch_r */
195   //AM_RANGE(0xe000, 0xe000) AM_READNOP                /* ??? */
196ADDRESS_MAP_END
197
198176static WRITE8_HANDLER( k007232_bankswitch_w )
199177{
200178   int bank_A, bank_B;
r4679r4680
210188   k007232_set_bank( devtag_get_device(space->machine, "konami2"), bank_A, bank_B );
211189}
212190
213static ADDRESS_MAP_START( chqflag_writemem_sound, ADDRESS_SPACE_PROGRAM, 8 )
214   AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM)               /* ROM */
215   AM_RANGE(0x8000, 0x87ff) AM_WRITE(SMH_RAM)               /* RAM */
216   AM_RANGE(0x9000, 0x9000) AM_WRITE(k007232_bankswitch_w)      /* 007232 bankswitch */
217   AM_RANGE(0xa000, 0xa00d) AM_DEVWRITE("konami1", k007232_w)      /* 007232 (chip 1) */
218   AM_RANGE(0xa01c, 0xa01c) AM_DEVWRITE("konami2", k007232_extvolume_w)/* extra volume, goes to the 007232 w/ A11 */
219                                 /* selecting a different latch for the external port */
220   AM_RANGE(0xb000, 0xb00d) AM_DEVWRITE("konami2", k007232_w)      /* 007232 (chip 2) */
221   AM_RANGE(0xc000, 0xc001) AM_DEVWRITE("ym", ym2151_w)      /* YM2151 */
191static ADDRESS_MAP_START( chqflag_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
192   AM_RANGE(0x0000, 0x7fff) AM_ROM /* ROM */
193   AM_RANGE(0x8000, 0x87ff) AM_RAM /* RAM */
194   AM_RANGE(0x9000, 0x9000) AM_WRITE(k007232_bankswitch_w)   /* 007232 bankswitch */
195   AM_RANGE(0xa000, 0xa00d) AM_DEVREADWRITE("konami1", k007232_r, k007232_w)   /* 007232 (chip 1) */
196   AM_RANGE(0xa01c, 0xa01c) AM_DEVWRITE("konami2", k007232_extvolume_w)   /* extra volume, goes to the 007232 w/ A11 */
197   AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE("konami2", k007232_r, k007232_w)   /* 007232 (chip 2) */
198   AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)   /* YM2151 */
199   AM_RANGE(0xd000, 0xd000) AM_READ(soundlatch_r)         /* soundlatch_r */
200   AM_RANGE(0xe000, 0xe000) AM_READ(soundlatch2_r)         /* engine sound volume */
222201   AM_RANGE(0xf000, 0xf000) AM_WRITENOP               /* ??? */
223202ADDRESS_MAP_END
224203
r4679r4680
311290
312291static void chqflag_ym2151_irq_w(const device_config *device, int data)
313292{
314   cpu_set_input_line(device->machine->cpu[1],INPUT_LINE_NMI,PULSE_LINE);
293   cputag_set_input_line(device->machine, "audiocpu", INPUT_LINE_NMI, data ? ASSERT_LINE : CLEAR_LINE);
315294}
316295
317296
r4679r4680
350329
351330   /* basic machine hardware */
352331   MDRV_CPU_ADD("maincpu", KONAMI,XTAL_24MHz/8)   /* 052001 (verified on pcb) */
353   MDRV_CPU_PROGRAM_MAP(chqflag_readmem,chqflag_writemem)
332   MDRV_CPU_PROGRAM_MAP(chqflag_map,0)
354333   MDRV_CPU_VBLANK_INT_HACK(chqflag_interrupt,16)   /* ? */
355334
356335   MDRV_CPU_ADD("audiocpu", Z80, XTAL_3_579545MHz) /* verified on pcb */
357   MDRV_CPU_PROGRAM_MAP(chqflag_readmem_sound,chqflag_writemem_sound)
336   MDRV_CPU_PROGRAM_MAP(chqflag_sound_map,0)
358337
359338   MDRV_QUANTUM_TIME(HZ(600))
360339
src/mame/drivers/bwing.c
r4679r4680
7373            latch_data = sound_fifo[fftail];
7474            fftail = (fftail + 1) & (MAX_SOUNDS - 1);
7575            soundlatch_w(cpu_get_address_space(device, ADDRESS_SPACE_PROGRAM), 0, latch_data);
76            cpu_set_input_line(device->machine->cpu[2], DECO16_IRQ_LINE, HOLD_LINE); // SNDREQ
76            cputag_set_input_line(device->machine, "audiocpu", DECO16_IRQ_LINE, HOLD_LINE); // SNDREQ
7777         }
7878      break;
7979
r4679r4680
9898
9999static WRITE8_HANDLER( bwp12_sharedram1_w ) { bwp1_sharedram1[offset] = bwp2_sharedram1[offset] = data; }
100100static WRITE8_HANDLER( bwp3_u8F_w ) { bwp3_u8F_d = data; } // prepares custom chip for various operations
101static WRITE8_HANDLER( bwp3_nmiack_w ) { cpu_set_input_line(space->machine->cpu[2], INPUT_LINE_NMI, CLEAR_LINE); }
101static WRITE8_HANDLER( bwp3_nmiack_w ) { cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, CLEAR_LINE); }
102102static WRITE8_HANDLER( bwp3_nmimask_w ) { bwp3_nmimask = data & 0x80; }
103103
104104
r4679r4680
119119   switch (offset)
120120   {
121121      // MSSTB
122      case 0: cpu_set_input_line(space->machine->cpu[1], M6809_IRQ_LINE, ASSERT_LINE); break;
122      case 0: cputag_set_input_line(space->machine, "sub", M6809_IRQ_LINE, ASSERT_LINE); break;
123123
124124      // IRQACK
125      case 1: cpu_set_input_line(space->machine->cpu[0], M6809_IRQ_LINE, CLEAR_LINE); break;
125      case 1: cputag_set_input_line(space->machine, "maincpu", M6809_IRQ_LINE, CLEAR_LINE); break;
126126
127127      // FIRQACK
128      case 2: cpu_set_input_line(space->machine->cpu[0], M6809_FIRQ_LINE, CLEAR_LINE); break;
128      case 2: cputag_set_input_line(space->machine, "maincpu", M6809_FIRQ_LINE, CLEAR_LINE); break;
129129
130130      // NMIACK
131      case 3: cpu_set_input_line(space->machine->cpu[0], INPUT_LINE_NMI, CLEAR_LINE); break;
131      case 3: cputag_set_input_line(space->machine, "maincpu", INPUT_LINE_NMI, CLEAR_LINE); break;
132132
133133      // SWAP(bank-swaps sprite RAM between 1800 & 1900; ignored bc. they're treated as a single chunk.)
134134      case 4: break;
r4679r4680
136136      // SNDREQ
137137      case 5:
138138         if (data == 0x80) // protection trick to screw CPU1 & 3
139            cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_NMI, ASSERT_LINE); // SNMI
139            cputag_set_input_line(space->machine, "sub", INPUT_LINE_NMI, ASSERT_LINE); // SNMI
140140         else
141141         if (ffcount < MAX_SOUNDS)
142142         {
r4679r4680
163163{
164164   switch (offset)
165165   {
166      case 0: cpu_set_input_line(space->machine->cpu[0], M6809_IRQ_LINE, ASSERT_LINE); break; // SMSTB
166      case 0: cputag_set_input_line(space->machine, "maincpu", M6809_IRQ_LINE, ASSERT_LINE); break; // SMSTB
167167
168      case 1: cpu_set_input_line(space->machine->cpu[1], M6809_FIRQ_LINE, CLEAR_LINE); break;
168      case 1: cputag_set_input_line(space->machine, "sub", M6809_FIRQ_LINE, CLEAR_LINE); break;
169169
170      case 2: cpu_set_input_line(space->machine->cpu[1], M6809_IRQ_LINE, CLEAR_LINE); break;
170      case 2: cputag_set_input_line(space->machine, "sub", M6809_IRQ_LINE, CLEAR_LINE); break;
171171
172      case 3: cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_NMI, CLEAR_LINE); break;
172      case 3: cputag_set_input_line(space->machine, "sub", INPUT_LINE_NMI, CLEAR_LINE); break;
173173   }
174174
175175   #if BW_DEBUG
r4679r4680
181181// CPU Memory Maps
182182
183183// Main CPU
184static ADDRESS_MAP_START( bwp1_readmem, ADDRESS_SPACE_PROGRAM, 8 )
184static ADDRESS_MAP_START( bwp1_map, ADDRESS_SPACE_PROGRAM, 8 )
185185   AM_RANGE(0x1b00, 0x1b07) AM_READ(bwp1_io_r)
186   AM_RANGE(0x0000, 0x1fff) AM_READ(SMH_RAM)
187   AM_RANGE(0x2000, 0x3fff) AM_READ(bwing_scrollram_r)
188   AM_RANGE(0x4000, 0xffff) AM_READ(SMH_ROM)
186   AM_RANGE(0x0000, 0x07ff) AM_RAM_WRITE(bwp12_sharedram1_w) AM_BASE(&bwp1_sharedram1)
187   AM_RANGE(0x0800, 0x0fff) AM_RAM
188   AM_RANGE(0x1000, 0x13ff) AM_RAM_WRITE(bwing_videoram_w) AM_BASE(&videoram)
189   AM_RANGE(0x1400, 0x17ff) AM_RAM
190   AM_RANGE(0x1800, 0x19ff) AM_RAM_WRITE(bwing_spriteram_w) AM_BASE(&buffered_spriteram)
191   AM_RANGE(0x1a00, 0x1aff) AM_RAM_WRITE(bwing_paletteram_w) AM_BASE(&paletteram)
192   AM_RANGE(0x1b00, 0x1b07) AM_RAM_WRITE(bwing_scrollreg_w)
193   AM_RANGE(0x1c00, 0x1c07) AM_RAM_WRITE(bwp1_ctrl_w)
194   AM_RANGE(0x2000, 0x3fff) AM_READWRITE(bwing_scrollram_r, bwing_scrollram_w)
195   AM_RANGE(0x4000, 0xffff) AM_ROM // "B-Wings US" writes to 9631-9632(debug?)
189196ADDRESS_MAP_END
190197
191static ADDRESS_MAP_START( bwp1_writemem, ADDRESS_SPACE_PROGRAM, 8 )
192   AM_RANGE(0x0000, 0x07ff) AM_WRITE(bwp12_sharedram1_w) AM_BASE(&bwp1_sharedram1)
193   AM_RANGE(0x0800, 0x0fff) AM_WRITE(SMH_RAM)
194   AM_RANGE(0x1000, 0x13ff) AM_WRITE(bwing_videoram_w) AM_BASE(&videoram)
195   AM_RANGE(0x1800, 0x19ff) AM_WRITE(bwing_spriteram_w) AM_BASE(&buffered_spriteram)
196   AM_RANGE(0x1a00, 0x1aff) AM_WRITE(bwing_paletteram_w) AM_BASE(&paletteram)
197   AM_RANGE(0x1b00, 0x1b07) AM_WRITE(bwing_scrollreg_w)
198   AM_RANGE(0x1c00, 0x1c07) AM_WRITE(bwp1_ctrl_w)
199   AM_RANGE(0x2000, 0x3fff) AM_WRITE(bwing_scrollram_w)
200   AM_RANGE(0x1000, 0x1fff) AM_WRITE(SMH_RAM) // falls through
201   AM_RANGE(0x4000, 0xffff) AM_WRITENOP // "B-Wings US" writes to 9631-9632(debug?)
202ADDRESS_MAP_END
203198
204
205199// Sub CPU
206static ADDRESS_MAP_START( bwp2_readmem, ADDRESS_SPACE_PROGRAM, 8 )
207   AM_RANGE(0x0000, 0x0fff) AM_READ(SMH_RAM)
208   AM_RANGE(0xa000, 0xffff) AM_READ(SMH_ROM)
209ADDRESS_MAP_END
210
211static ADDRESS_MAP_START( bwp2_writemem, ADDRESS_SPACE_PROGRAM, 8 )
212   AM_RANGE(0x0000, 0x07ff) AM_WRITE(bwp12_sharedram1_w) AM_BASE(&bwp2_sharedram1)
213   AM_RANGE(0x0800, 0x0fff) AM_WRITE(SMH_RAM)
200static ADDRESS_MAP_START( bwp2_map, ADDRESS_SPACE_PROGRAM, 8 )
201   AM_RANGE(0x0000, 0x07ff) AM_RAM_WRITE(bwp12_sharedram1_w) AM_BASE(&bwp2_sharedram1)
202   AM_RANGE(0x0800, 0x0fff) AM_RAM
214203   AM_RANGE(0x1800, 0x1803) AM_WRITE(bwp2_ctrl_w)
215   AM_RANGE(0xa000, 0xffff) AM_WRITE(SMH_ROM)
204   AM_RANGE(0xa000, 0xffff) AM_ROM
216205ADDRESS_MAP_END
217206
218207
219208// Sound CPU
220static ADDRESS_MAP_START( bwp3_readmem, ADDRESS_SPACE_PROGRAM, 8 )
221   AM_RANGE(0x0000, 0x01ff) AM_READ(SMH_RAM)
222   AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_r)
223   AM_RANGE(0xe000, 0xffff) AM_READ(SMH_ROM)
224ADDRESS_MAP_END
225
226static ADDRESS_MAP_START( bwp3_writemem, ADDRESS_SPACE_PROGRAM, 8 )
227   AM_RANGE(0x0000, 0x01ff) AM_WRITE(SMH_RAM)
209static ADDRESS_MAP_START( bwp3_map, ADDRESS_SPACE_PROGRAM, 8 )
210   AM_RANGE(0x0000, 0x01ff) AM_RAM
228211   AM_RANGE(0x0200, 0x0200) AM_DEVWRITE("dac", dac_signed_w)
229212   AM_RANGE(0x1000, 0x1000) AM_WRITE(bwp3_nmiack_w)
230213   AM_RANGE(0x2000, 0x2000) AM_DEVWRITE("ay1", ay8910_data_w)
231214   AM_RANGE(0x4000, 0x4000) AM_DEVWRITE("ay1", ay8910_address_w)
232215   AM_RANGE(0x6000, 0x6000) AM_DEVWRITE("ay2", ay8910_data_w)
233216   AM_RANGE(0x8000, 0x8000) AM_DEVWRITE("ay2", ay8910_address_w)
217   AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_r)
234218   AM_RANGE(0xd000, 0xd000) AM_WRITE(bwp3_nmimask_w)
235   AM_RANGE(0xe000, 0xffff) AM_WRITE(SMH_ROM) AM_BASE(&bwp3_rombase) AM_SIZE(&bwp3_romsize)
219   AM_RANGE(0xe000, 0xffff) AM_ROM AM_BASE(&bwp3_rombase) AM_SIZE(&bwp3_romsize)
236220ADDRESS_MAP_END
237221
238222
r4679r4680
387371
388372   // basic machine hardware
389373   MDRV_CPU_ADD("maincpu", M6809, 2000000)
390   MDRV_CPU_PROGRAM_MAP(bwp1_readmem, bwp1_writemem)
374   MDRV_CPU_PROGRAM_MAP(bwp1_map, 0)
391375   MDRV_CPU_VBLANK_INT_HACK(bwp1_interrupt, 3)
392376
393377   MDRV_CPU_ADD("sub", M6809, 2000000)
394   MDRV_CPU_PROGRAM_MAP(bwp2_readmem, bwp2_writemem)
378   MDRV_CPU_PROGRAM_MAP(bwp2_map, 0)
395379//  MDRV_CPU_VBLANK_INT("screen", irq1_line_assert) // vblank triggers FIRQ on CPU2 by design (unused)
396380
397381   MDRV_CPU_ADD("audiocpu", DECO16, 2000000)
398   MDRV_CPU_PROGRAM_MAP(bwp3_readmem, bwp3_writemem)
382   MDRV_CPU_PROGRAM_MAP(bwp3_map, 0)
399383   MDRV_CPU_IO_MAP(bwp3_io_map,0)
400384   MDRV_CPU_PERIODIC_INT(bwp3_interrupt, 1000)
401385
r4679r4680
625609
626610GAME( 1984, zaviga,       0, bwing, bwing, bwing, ROT90, "Data East Corporation", "Zaviga", 0 )
627611GAME( 1984, zavigaj, zaviga, bwing, bwing, bwing, ROT90, "Data East Corporation", "Zaviga (Japan)", 0 )
628
src/mame/drivers/srmp6.c
r4679r4680
126126
127127static VIDEO_START(srmp6)
128128{
129   tileram = auto_malloc(0x100000*16);
129   tileram = auto_alloc_array(machine, UINT16, 0x100000*16/2);
130130   memset(tileram,0x00,(0x100000*16));
131131
132   dmaram = auto_malloc(0x100);
132   dmaram = auto_alloc_array(machine, UINT16, 0x100/2);
133133
134   sprram_old = auto_malloc(0x80000);
134   sprram_old = auto_alloc_array(machine, UINT16, 0x80000/2);
135135   memset(sprram_old, 0, 0x80000);
136136
137137   /* create the char set (gfx will then be updated dynamically from RAM) */
r4679r4680
513513static ADDRESS_MAP_START( srmp6, ADDRESS_SPACE_PROGRAM, 16 )
514514   AM_RANGE(0x000000, 0x0fffff) AM_ROM
515515   AM_RANGE(0x200000, 0x23ffff) AM_RAM               // work RAM
516   AM_RANGE(0x600000, 0x7fffff) AM_READ(SMH_BANK1)      // banked ROM (used by ROM check)
516   AM_RANGE(0x600000, 0x7fffff) AM_READ(SMH_BANK(1))      // banked ROM (used by ROM check)
517517   AM_RANGE(0x800000, 0x9fffff) AM_ROM AM_REGION("user1", 0)
518518
519519   AM_RANGE(0x300000, 0x300005) AM_READWRITE(srmp6_inputs_r, srmp6_input_select_w)      // inputs
src/mame/drivers/sf.c
r4679r4680
5252{
5353   if (ACCESSING_BITS_0_7)
5454   {
55      soundlatch_w(space,offset,data & 0xff);
56      cpu_set_input_line(space->machine->cpu[1],INPUT_LINE_NMI,PULSE_LINE);
55      soundlatch_w(space, offset, data & 0xff);
56      cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
5757   }
5858}
5959
r4679r4680
191191
192192
193193
194static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 16 )
195   AM_RANGE(0x000000, 0x04ffff) AM_READ(SMH_ROM)
196   AM_RANGE(0x800000, 0x800fff) AM_READ(SMH_RAM)
194static ADDRESS_MAP_START( sf_map, ADDRESS_SPACE_PROGRAM, 16 )
195   AM_RANGE(0x000000, 0x04ffff) AM_ROM
196   AM_RANGE(0x800000, 0x800fff) AM_RAM_WRITE(sf_videoram_w) AM_BASE(&sf_videoram) AM_SIZE(&videoram_size)
197   AM_RANGE(0xb00000, 0xb007ff) AM_RAM_WRITE(paletteram16_xxxxRRRRGGGGBBBB_word_w) AM_BASE(&paletteram16)
197198   AM_RANGE(0xc00000, 0xc00001) AM_READ_PORT("COINS")
198199   AM_RANGE(0xc00002, 0xc00003) AM_READ_PORT("IN0")
199200   AM_RANGE(0xc00004, 0xc00005) AM_READ(button1_r)
r4679r4680
202203   AM_RANGE(0xc0000a, 0xc0000b) AM_READ_PORT("DSW2")
203204   AM_RANGE(0xc0000c, 0xc0000d) AM_READ_PORT("SYSTEM")
204205   AM_RANGE(0xc0000e, 0xc0000f) AM_READ(dummy_r)
205   AM_RANGE(0xff8000, 0xffdfff) AM_READ(SMH_RAM)
206   AM_RANGE(0xffe000, 0xffffff) AM_READ(SMH_RAM)
206   AM_RANGE(0xc00010, 0xc00011) AM_WRITE(sf_coin_w)
207   AM_RANGE(0xc00014, 0xc00015) AM_WRITE(sf_fg_scroll_w)
208   AM_RANGE(0xc00018, 0xc00019) AM_WRITE(sf_bg_scroll_w)
209   AM_RANGE(0xc0001a, 0xc0001b) AM_WRITE(sf_gfxctrl_w)
210   AM_RANGE(0xc0001c, 0xc0001d) AM_WRITE(soundcmd_w)
211   AM_RANGE(0xc0001e, 0xc0001f) AM_WRITE(protection_w)
212   AM_RANGE(0xff8000, 0xffdfff) AM_RAM
213   AM_RANGE(0xffe000, 0xffffff) AM_RAM AM_BASE(&sf_objectram)
207214ADDRESS_MAP_END
208215
209static ADDRESS_MAP_START( readmemus, ADDRESS_SPACE_PROGRAM, 16 )
210   AM_RANGE(0x000000, 0x04ffff) AM_READ(SMH_ROM)
211   AM_RANGE(0x800000, 0x800fff) AM_READ(SMH_RAM)
216static ADDRESS_MAP_START( sfus_map, ADDRESS_SPACE_PROGRAM, 16 )
217   AM_RANGE(0x000000, 0x04ffff) AM_ROM
218   AM_RANGE(0x800000, 0x800fff) AM_RAM_WRITE(sf_videoram_w) AM_BASE(&sf_videoram) AM_SIZE(&videoram_size)
219   AM_RANGE(0xb00000, 0xb007ff) AM_RAM_WRITE(paletteram16_xxxxRRRRGGGGBBBB_word_w) AM_BASE(&paletteram16)
212220   AM_RANGE(0xc00000, 0xc00001) AM_READ_PORT("IN0")
213221   AM_RANGE(0xc00002, 0xc00003) AM_READ_PORT("IN1")
214222   AM_RANGE(0xc00004, 0xc00005) AM_READ(dummy_r)
r4679r4680
217225   AM_RANGE(0xc0000a, 0xc0000b) AM_READ_PORT("DSW2")
218226   AM_RANGE(0xc0000c, 0xc0000d) AM_READ_PORT("SYSTEM")
219227   AM_RANGE(0xc0000e, 0xc0000f) AM_READ(dummy_r)
220   AM_RANGE(0xff8000, 0xffdfff) AM_READ(SMH_RAM)
221   AM_RANGE(0xffe000, 0xffffff) AM_READ(SMH_RAM)
228   AM_RANGE(0xc00010, 0xc00011) AM_WRITE(sf_coin_w)
229   AM_RANGE(0xc00014, 0xc00015) AM_WRITE(sf_fg_scroll_w)
230   AM_RANGE(0xc00018, 0xc00019) AM_WRITE(sf_bg_scroll_w)
231   AM_RANGE(0xc0001a, 0xc0001b) AM_WRITE(sf_gfxctrl_w)
232   AM_RANGE(0xc0001c, 0xc0001d) AM_WRITE(soundcmd_w)
233   AM_RANGE(0xc0001e, 0xc0001f) AM_WRITE(protection_w)
234   AM_RANGE(0xff8000, 0xffdfff) AM_RAM
235   AM_RANGE(0xffe000, 0xffffff) AM_RAM AM_BASE(&sf_objectram)
222236ADDRESS_MAP_END
223237
224static ADDRESS_MAP_START( readmemjp, ADDRESS_SPACE_PROGRAM, 16 )
225   AM_RANGE(0x000000, 0x04ffff) AM_READ(SMH_ROM)
226   AM_RANGE(0x800000, 0x800fff) AM_READ(SMH_RAM)
238static ADDRESS_MAP_START( sfjp_map, ADDRESS_SPACE_PROGRAM, 16 )
239   AM_RANGE(0x000000, 0x04ffff) AM_ROM
240   AM_RANGE(0x800000, 0x800fff) AM_RAM_WRITE(sf_videoram_w) AM_BASE(&sf_videoram) AM_SIZE(&videoram_size)
241   AM_RANGE(0xb00000, 0xb007ff) AM_RAM_WRITE(paletteram16_xxxxRRRRGGGGBBBB_word_w) AM_BASE(&paletteram16)
227242   AM_RANGE(0xc00000, 0xc00001) AM_READ_PORT("COINS")
228243   AM_RANGE(0xc00002, 0xc00003) AM_READ_PORT("P1")
229244   AM_RANGE(0xc00004, 0xc00005) AM_READ_PORT("P2")
r4679r4680
232247   AM_RANGE(0xc0000a, 0xc0000b) AM_READ_PORT("DSW2")
233248   AM_RANGE(0xc0000c, 0xc0000d) AM_READ_PORT("SYSTEM")
234249   AM_RANGE(0xc0000e, 0xc0000f) AM_READ(dummy_r)
235   AM_RANGE(0xff8000, 0xffdfff) AM_READ(SMH_RAM)
236   AM_RANGE(0xffe000, 0xffffff) AM_READ(SMH_RAM)
237ADDRESS_MAP_END
238
239static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 16 )
240   AM_RANGE(0x000000, 0x04ffff) AM_WRITE(SMH_ROM)
241   AM_RANGE(0x800000, 0x800fff) AM_WRITE(sf_videoram_w) AM_BASE(&sf_videoram) AM_SIZE(&videoram_size)
242   AM_RANGE(0xb00000, 0xb007ff) AM_WRITE(paletteram16_xxxxRRRRGGGGBBBB_word_w) AM_BASE(&paletteram16)
243250   AM_RANGE(0xc00010, 0xc00011) AM_WRITE(sf_coin_w)
244251   AM_RANGE(0xc00014, 0xc00015) AM_WRITE(sf_fg_scroll_w)
245252   AM_RANGE(0xc00018, 0xc00019) AM_WRITE(sf_bg_scroll_w)
246253   AM_RANGE(0xc0001a, 0xc0001b) AM_WRITE(sf_gfxctrl_w)
247254   AM_RANGE(0xc0001c, 0xc0001d) AM_WRITE(soundcmd_w)
248255   AM_RANGE(0xc0001e, 0xc0001f) AM_WRITE(protection_w)
249   AM_RANGE(0xff8000, 0xffdfff) AM_WRITE(SMH_RAM)
250   AM_RANGE(0xffe000, 0xffffff) AM_WRITE(SMH_RAM) AM_BASE(&sf_objectram)
256   AM_RANGE(0xff8000, 0xffdfff) AM_RAM
257   AM_RANGE(0xffe000, 0xffffff) AM_RAM AM_BASE(&sf_objectram)
251258ADDRESS_MAP_END
252259
253static ADDRESS_MAP_START( sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
254   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
255   AM_RANGE(0xc000, 0xc7ff) AM_READ(SMH_RAM)
260static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 )
261   AM_RANGE(0x0000, 0x7fff) AM_ROM
262   AM_RANGE(0xc000, 0xc7ff) AM_RAM
256263   AM_RANGE(0xc800, 0xc800) AM_READ(soundlatch_r)
257   AM_RANGE(0xe000, 0xe001) AM_DEVREAD("ym", ym2151_r)
264   AM_RANGE(0xe000, 0xe001) AM_DEVREADWRITE("ym", ym2151_r,ym2151_w)
258265ADDRESS_MAP_END
259266
260static ADDRESS_MAP_START( sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
261   AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM)
262   AM_RANGE(0xc000, 0xc7ff) AM_WRITE(SMH_RAM)
263   AM_RANGE(0xe000, 0xe001) AM_DEVWRITE("ym", ym2151_w)
264ADDRESS_MAP_END
265
266
267static ADDRESS_MAP_START( sound2_readmem, ADDRESS_SPACE_PROGRAM, 8 )
268   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
269   AM_RANGE(0x8000, 0xffff) AM_READ(SMH_BANK1)
270ADDRESS_MAP_END
271
272267/* Yes, _no_ ram */
273static ADDRESS_MAP_START( sound2_writemem, ADDRESS_SPACE_PROGRAM, 8 )
274/*  AM_RANGE(0x0000, 0xffff) AM_WRITE(SMH_ROM) avoid cluttering up error.log */
275   AM_RANGE(0x0000, 0xffff) AM_WRITENOP
268static ADDRESS_MAP_START( sound2_map, ADDRESS_SPACE_PROGRAM, 8 )
269   AM_RANGE(0x0000, 0x7fff) AM_ROM
270   AM_RANGE(0x8000, 0xffff) AM_ROMBANK(1)
271   AM_RANGE(0x0000, 0xffff) AM_WRITENOP /* avoid cluttering up error.log */
276272ADDRESS_MAP_END
277273
278274static ADDRESS_MAP_START( sound2_io_map, ADDRESS_SPACE_IO, 8 )
r4679r4680
795791
796792static void irq_handler(const device_config *device, int irq)
797793{
798   cpu_set_input_line(device->machine->cpu[1],0,irq ? ASSERT_LINE : CLEAR_LINE);
794   cputag_set_input_line(device->machine, "audiocpu", 0, irq ? ASSERT_LINE : CLEAR_LINE);
799795}
800796
801797static const ym2151_interface ym2151_config =
r4679r4680
813809
814810   /* basic machine hardware */
815811   MDRV_CPU_ADD("maincpu", M68000, 8000000)   /* 8 MHz ? (xtal is 16MHz) */
816   MDRV_CPU_PROGRAM_MAP(readmem,writemem)
812   MDRV_CPU_PROGRAM_MAP(sf_map,0)
817813   MDRV_CPU_VBLANK_INT("screen", irq1_line_hold)
818814
819815   MDRV_CPU_ADD("audiocpu", Z80, 3579545)   /* ? xtal is 3.579545MHz */
820   MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem)
816   MDRV_CPU_PROGRAM_MAP(sound_map,0)
821817                        /* NMIs are caused by the main CPU */
822818
823819   MDRV_CPU_ADD("audio2", Z80, 3579545)   /* ? xtal is 3.579545MHz */
824   MDRV_CPU_PROGRAM_MAP(sound2_readmem,sound2_writemem)
820   MDRV_CPU_PROGRAM_MAP(sound2_map,0)
825821   MDRV_CPU_IO_MAP(sound2_io_map,0)
826822   MDRV_CPU_PERIODIC_INT(irq0_line_hold,8000)
827823
r4679r4680
864860   /* basic machine hardware */
865861   MDRV_IMPORT_FROM(sf)
866862   MDRV_CPU_MODIFY("maincpu")
867   MDRV_CPU_PROGRAM_MAP(readmemus,writemem)
863   MDRV_CPU_PROGRAM_MAP(sfus_map,0)
868864MACHINE_DRIVER_END
869865
870866
r4679r4680
873869   /* basic machine hardware */
874870   MDRV_IMPORT_FROM(sf)
875871   MDRV_CPU_MODIFY("maincpu")
876   MDRV_CPU_PROGRAM_MAP(readmemjp,writemem)
872   MDRV_CPU_PROGRAM_MAP(sfjp_map,0)
877873MACHINE_DRIVER_END
878874
879875
r4679r4680
10301026   ROM_LOAD( "sf-00.bin", 0x00000, 0x20000, CRC(4b733845) SHA1(f7ff46e02f8ce6682d6e573588271bae2edfa90f) )
10311027   ROM_LOAD( "sf-01.bin", 0x20000, 0x20000, CRC(86e0f0d5) SHA1(7cef8056f83dac15f1b47d7be705d26170858337) )
10321028
1029   ROM_REGION( 0x0800, "mcu", 0 ) /* 68705 MCU */
1030   ROM_LOAD( "68705.bin",   0x0000, 0x0800, NO_DUMP )
1031
10331032   ROM_REGION( 0x080000, "gfx1", ROMREGION_DISPOSE )
10341033   ROM_LOAD( "sf-39.bin", 0x000000, 0x020000, CRC(cee3d292) SHA1(a8c22f1dc81976e8dd5d6c70361c61fa3f9f89d6) ) /* Background b planes 0-1*/
10351034   ROM_LOAD( "sf-38.bin", 0x020000, 0x020000, CRC(2ea99676) SHA1(5f3eb77e75f0ee27fb8fc7bab2819b3fdd480206) )
r4679r4680
11411140GAME( 1987, sfus, sf, sfus, sfus, 0, ROT0, "Capcom", "Street Fighter (US)", 0 )
11421141GAME( 1987, sfjp, sf, sfjp, sfjp, 0, ROT0, "Capcom", "Street Fighter (Japan)", 0 )
11431142GAME( 1987, sfp,  sf, sfp,  sf,   0, ROT0, "Capcom", "Street Fighter (prototype)", 0 )
1144
src/mame/drivers/lsasquad.c
r4679r4680
168168   /* other bits unknown */
169169}
170170
171static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 )
172   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
173   AM_RANGE(0x8000, 0x9fff) AM_READ(SMH_BANK1)
174   AM_RANGE(0xa000, 0xe5ff) AM_READ(SMH_RAM)
171static ADDRESS_MAP_START( lsasquad_map, ADDRESS_SPACE_PROGRAM, 8 )
172   AM_RANGE(0x0000, 0x7fff) AM_ROM
173   AM_RANGE(0x8000, 0x9fff) AM_ROMBANK(1)
174   AM_RANGE(0xa000, 0xbfff) AM_RAM   /* SRAM */
175   AM_RANGE(0xc000, 0xdfff) AM_RAM AM_BASE(&videoram) AM_SIZE(&videoram_size)   /* SCREEN RAM */
176   AM_RANGE(0xe000, 0xe3ff) AM_RAM AM_BASE(&lsasquad_scrollram)   /* SCROLL RAM */
177   AM_RANGE(0xe400, 0xe5ff) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size)   /* OBJECT RAM */
175178   AM_RANGE(0xe800, 0xe800) AM_READ_PORT("DSWA")
176179   AM_RANGE(0xe801, 0xe801) AM_READ_PORT("DSWB")
177180   AM_RANGE(0xe802, 0xe802) AM_READ_PORT("DSWC")
r4679r4680
180183   AM_RANGE(0xe805, 0xe805) AM_READ_PORT("P2")
181184   AM_RANGE(0xe806, 0xe806) AM_READ_PORT("START")
182185   AM_RANGE(0xe807, 0xe807) AM_READ_PORT("SERVICE")
183   AM_RANGE(0xec00, 0xec00) AM_READ(lsasquad_sound_result_r)
186   AM_RANGE(0xea00, 0xea00) AM_WRITE(lsasquad_bankswitch_w)
187   AM_RANGE(0xec00, 0xec00) AM_READWRITE(lsasquad_sound_result_r,lsasquad_sound_command_w)
184188   AM_RANGE(0xec01, 0xec01) AM_READ(lsasquad_sound_status_r)
185   AM_RANGE(0xee00, 0xee00) AM_READ(lsasquad_mcu_r)
189   AM_RANGE(0xee00, 0xee00) AM_READWRITE(lsasquad_mcu_r,lsasquad_mcu_w)
186190ADDRESS_MAP_END
187191
188static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 )
189   AM_RANGE(0x0000, 0x9fff) AM_WRITE(SMH_ROM)
190   AM_RANGE(0xa000, 0xbfff) AM_WRITE(SMH_RAM)   /* SRAM */
191   AM_RANGE(0xc000, 0xdfff) AM_WRITE(SMH_RAM) AM_BASE(&videoram) AM_SIZE(&videoram_size)   /* SCREEN RAM */
192   AM_RANGE(0xe000, 0xe3ff) AM_WRITE(SMH_RAM) AM_BASE(&lsasquad_scrollram)   /* SCROLL RAM */
193   AM_RANGE(0xe400, 0xe5ff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)   /* OBJECT RAM */
194   AM_RANGE(0xea00, 0xea00) AM_WRITE(lsasquad_bankswitch_w)
195   AM_RANGE(0xec00, 0xec00) AM_WRITE(lsasquad_sound_command_w)
196   AM_RANGE(0xee00, 0xee00) AM_WRITE(lsasquad_mcu_w)
197ADDRESS_MAP_END
198
199static ADDRESS_MAP_START( sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
200   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
201   AM_RANGE(0x8000, 0x87ff) AM_READ(SMH_RAM)
202   AM_RANGE(0xa000, 0xa001) AM_DEVREAD("ym", ym2203_r)
203   AM_RANGE(0xd000, 0xd000) AM_READ(lsasquad_sh_sound_command_r)
204   AM_RANGE(0xd800, 0xd800) AM_READ(lsasquad_sound_status_r)
205   AM_RANGE(0xe000, 0xefff) AM_READ(SMH_ROM)   /* space for diagnostic ROM? */
206ADDRESS_MAP_END
207
208static ADDRESS_MAP_START( sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
209   AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM)
210   AM_RANGE(0x8000, 0x87ff) AM_WRITE(SMH_RAM)
211   AM_RANGE(0xa000, 0xa001) AM_DEVWRITE("ym", ym2203_w)
192static ADDRESS_MAP_START( lsasquad_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
193   AM_RANGE(0x0000, 0x7fff) AM_ROM
194   AM_RANGE(0x8000, 0x87ff) AM_RAM
195   AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE("ym", ym2203_r,ym2203_w)
212196   AM_RANGE(0xc000, 0xc001) AM_DEVWRITE("ay", ay8910_address_data_w)
213   AM_RANGE(0xd000, 0xd000) AM_WRITE(lsasquad_sh_result_w)
197   AM_RANGE(0xd000, 0xd000) AM_READWRITE(lsasquad_sh_sound_command_r,lsasquad_sh_result_w)
214198   AM_RANGE(0xd400, 0xd400) AM_WRITE(lsasquad_sh_nmi_disable_w)
215199   AM_RANGE(0xd800, 0xd800) AM_WRITE(lsasquad_sh_nmi_enable_w)
216   AM_RANGE(0xe000, 0xefff) AM_WRITE(SMH_ROM)   /* space for diagnostic ROM? */
200   AM_RANGE(0xd800, 0xd800) AM_READ(lsasquad_sound_status_r)
201   AM_RANGE(0xe000, 0xefff) AM_ROM      /* space for diagnostic ROM? */
217202ADDRESS_MAP_END
218203
219static ADDRESS_MAP_START( m68705_readmem, ADDRESS_SPACE_PROGRAM, 8 )
204static ADDRESS_MAP_START( lsasquad_m68705_map, ADDRESS_SPACE_PROGRAM, 8 )
220205   ADDRESS_MAP_GLOBAL_MASK(0x7ff)
221   AM_RANGE(0x0000, 0x0000) AM_READ(lsasquad_68705_portA_r)
222   AM_RANGE(0x0001, 0x0001) AM_READ(lsasquad_68705_portB_r)
206   AM_RANGE(0x0000, 0x0000) AM_READWRITE(lsasquad_68705_portA_r,lsasquad_68705_portA_w)
207   AM_RANGE(0x0001, 0x0001) AM_READWRITE(lsasquad_68705_portB_r,lsasquad_68705_portB_w)
223208   AM_RANGE(0x0002, 0x0002) AM_READ(lsasquad_mcu_status_r)
224   AM_RANGE(0x0010, 0x007f) AM_READ(SMH_RAM)
225   AM_RANGE(0x0080, 0x07ff) AM_READ(SMH_ROM)
226ADDRESS_MAP_END
227
228static ADDRESS_MAP_START( m68705_writemem, ADDRESS_SPACE_PROGRAM, 8 )
229   ADDRESS_MAP_GLOBAL_MASK(0x7ff)
230   AM_RANGE(0x0000, 0x0000) AM_WRITE(lsasquad_68705_portA_w)
231   AM_RANGE(0x0001, 0x0001) AM_WRITE(lsasquad_68705_portB_w)
232209   AM_RANGE(0x0004, 0x0004) AM_WRITE(lsasquad_68705_ddrA_w)
233210   AM_RANGE(0x0005, 0x0005) AM_WRITE(lsasquad_68705_ddrB_w)
234   AM_RANGE(0x0010, 0x007f) AM_WRITE(SMH_RAM)
235   AM_RANGE(0x0080, 0x07ff) AM_WRITE(SMH_ROM)
211   AM_RANGE(0x0010, 0x007f) AM_RAM
212   AM_RANGE(0x0080, 0x07ff) AM_ROM
236213ADDRESS_MAP_END
237214
238215
239
240216static INPUT_PORTS_START( lsasquad )
241217   PORT_START("DSWA")
242218   PORT_DIPNAME( 0x01, 0x00, DEF_STR( Cabinet ) )
r4679r4680
362338
363339/* DAIKAIJU */
364340
365static ADDRESS_MAP_START( mem_daikaiju, ADDRESS_SPACE_PROGRAM, 8 )
341static ADDRESS_MAP_START( daikaiju_map, ADDRESS_SPACE_PROGRAM, 8 )
366342   AM_RANGE(0x0000, 0x7fff) AM_ROM
367   AM_RANGE(0x8000, 0x9fff) AM_READ(SMH_BANK1)
343   AM_RANGE(0x8000, 0x9fff) AM_READ(SMH_BANK(1))
368344   AM_RANGE(0xa000, 0xbfff) AM_RAM   /* SRAM */
369345   AM_RANGE(0xc000, 0xdfff) AM_RAM AM_BASE(&videoram) AM_SIZE(&videoram_size)   /* SCREEN RAM */
370346   AM_RANGE(0xe000, 0xe3ff) AM_RAM AM_BASE(&lsasquad_scrollram)   /* SCROLL RAM */
r4679r4680
382358   AM_RANGE(0xee00, 0xee00) AM_READWRITE(daikaiju_mcu_r, daikaiju_mcu_w)
383359ADDRESS_MAP_END
384360
385static ADDRESS_MAP_START( sound_mem_daikaiju, ADDRESS_SPACE_PROGRAM, 8 )
361static ADDRESS_MAP_START( daikaiju_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
386362   AM_RANGE(0x0000, 0x7fff) AM_ROM
387363   AM_RANGE(0x8000, 0x87ff) AM_RAM
388364   AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE("ym", ym2203_r, ym2203_w)
r4679r4680
529505
530506static void irqhandler(const device_config *device, int irq)
531507{
532   cpu_set_input_line(device->machine->cpu[1],0,irq ? ASSERT_LINE : CLEAR_LINE);
508   cputag_set_input_line(device->machine, "audiocpu", 0, irq ? ASSERT_LINE : CLEAR_LINE);
533509}
534510
535511static WRITE8_DEVICE_HANDLER( unk )
r4679r4680
556532
557533   /* basic machine hardware */
558534   MDRV_CPU_ADD("maincpu", Z80, 6000000)   /* 6 MHz? */
559   MDRV_CPU_PROGRAM_MAP(readmem,writemem)
535   MDRV_CPU_PROGRAM_MAP(lsasquad_map,0)
560536   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
561537
562538   MDRV_CPU_ADD("audiocpu", Z80, 4000000)   /* 4 MHz? */
563   MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem)
539   MDRV_CPU_PROGRAM_MAP(lsasquad_sound_map,0)
564540                        /* IRQs are triggered by the YM2203 */
565541   MDRV_CPU_ADD("mcu", M68705,4000000)   /* ? */
566   MDRV_CPU_PROGRAM_MAP(m68705_readmem,m68705_writemem)
542   MDRV_CPU_PROGRAM_MAP(lsasquad_m68705_map,0)
567543
568544   MDRV_QUANTUM_TIME(HZ(30000))   /* 500 CPU slices per frame - an high value to ensure proper */
569545                     /* synchronization of the CPUs */
r4679r4680
601577
602578   /* basic machine hardware */
603579   MDRV_CPU_ADD("maincpu", Z80, 6000000)
604   MDRV_CPU_PROGRAM_MAP(mem_daikaiju, 0)
580   MDRV_CPU_PROGRAM_MAP(daikaiju_map, 0)
605581   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
606582
607583   MDRV_CPU_ADD("audiocpu", Z80, 3000000)
608   MDRV_CPU_PROGRAM_MAP(sound_mem_daikaiju, 0)
584   MDRV_CPU_PROGRAM_MAP(daikaiju_sound_map, 0)
609585   /* IRQs are triggered by the YM2203 */
610586
611587   MDRV_QUANTUM_TIME(HZ(30000))   /* 500 CPU slices per frame - an high value to ensure proper */
src/mame/drivers/konamim2.c
r4679r4680
318318      if (data & 0x800000)
319319      {
320320         mame_printf_debug("CPU '%s': CPU1 IRQ at %08X\n", space->cpu->tag, cpu_get_pc(space->cpu));
321         cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_IRQ0, ASSERT_LINE);
321         cputag_set_input_line(space->machine, "sub", INPUT_LINE_IRQ0, ASSERT_LINE);
322322      }
323323
324324      unk20004 = (UINT32)(data);
r4679r4680
413413   {
414414      if (data & U64(0x100000000))
415415      {
416         cpu_set_input_line(space->machine->cpu[0], INPUT_LINE_RESET, PULSE_LINE);
416         cputag_set_input_line(space->machine, "maincpu", INPUT_LINE_RESET, PULSE_LINE);
417417         unk3 = 0;
418418      }
419419   }
r4679r4680
10751075
10761076   if (ACCESSING_BITS_32_63)
10771077   {
1078      r = (UINT64)((space->cpu != space->machine->cpu[0]) ? 0x80000000 : 0);
1078      r = (UINT64)((space->cpu != cputag_get_cpu(space->machine, "maincpu")) ? 0x80000000 : 0);
10791079      //r |= 0x40000000;  // sets Video-LowRes !?
10801080      return r << 32;
10811081   }
src/mame/drivers/cball.c
r4679r4680
5656{
5757   int scanline = param;
5858
59   generic_pulse_irq_line(machine->cpu[0], 0);
59   generic_pulse_irq_line(cputag_get_cpu(machine, "maincpu"), 0);
6060
6161   scanline = scanline + 32;
6262
src/mame/drivers/cave.c
r4679r4680
9999static void update_irq_state(running_machine *machine)
100100{
101101   if (vblank_irq || sound_irq || unknown_irq)
102      cpu_set_input_line(machine->cpu[0], irq_level, ASSERT_LINE);
102      cputag_set_input_line(machine, "maincpu", irq_level, ASSERT_LINE);
103103   else
104      cpu_set_input_line(machine->cpu[0], irq_level, CLEAR_LINE);
104      cputag_set_input_line(machine, "maincpu", irq_level, CLEAR_LINE);
105105}
106106
107107static TIMER_CALLBACK( cave_vblank_start )
r4679r4680
223223//  sound_flag1 = 1;
224224//  sound_flag2 = 1;
225225   soundlatch_word_w(space,offset,data,mem_mask);
226   cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_NMI, PULSE_LINE);
226   cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
227227   cpu_spinuntil_time(space->cpu, ATTOTIME_IN_USEC(50));   // Allow the other cpu to reply
228228}
229229
r4679r4680
462462                                Dangun Feveron
463463***************************************************************************/
464464
465static ADDRESS_MAP_START( dfeveron_readmem, ADDRESS_SPACE_PROGRAM, 16 )
466   AM_RANGE(0x000000, 0x0fffff) AM_READ(SMH_ROM            )   // ROM
467   AM_RANGE(0x100000, 0x10ffff) AM_READ(SMH_RAM            )   // RAM
468   AM_RANGE(0x300000, 0x300003) AM_DEVREAD8("ymz", ymz280b_r, 0x00ff)   // YMZ280
469/**/AM_RANGE(0x400000, 0x407fff) AM_READ(SMH_RAM            )   // Sprites
470/**/AM_RANGE(0x408000, 0x40ffff) AM_READ(SMH_RAM            )   // Sprites?
471/**/AM_RANGE(0x500000, 0x507fff) AM_READ(SMH_RAM            )   // Layer 0
472/**/AM_RANGE(0x600000, 0x607fff) AM_READ(SMH_RAM            )   // Layer 1
473/**/AM_RANGE(0x708000, 0x708fff) AM_READ(SMH_RAM            )   // Palette
474/**/AM_RANGE(0x710000, 0x710fff) AM_READ(SMH_RAM            )   // ?
475   AM_RANGE(0x800000, 0x800007) AM_READ(cave_irq_cause_r      )   // IRQ Cause
476/**/AM_RANGE(0x900000, 0x900005) AM_READ(SMH_RAM            )   // Layer 0 Control
477/**/AM_RANGE(0xa00000, 0xa00005) AM_READ(SMH_RAM            )   // Layer 1 Control
478   AM_RANGE(0xb00000, 0xb00001) AM_READ_PORT("IN0"            )   // Inputs
479   AM_RANGE(0xb00002, 0xb00003) AM_READ_PORT("IN1"            )   // Inputs + EEPROM
465static ADDRESS_MAP_START( dfeveron_map, ADDRESS_SPACE_PROGRAM, 16 )
466   AM_RANGE(0x000000, 0x0fffff) AM_ROM                                             // ROM
467   AM_RANGE(0x100000, 0x10ffff) AM_RAM                                             // RAM
468   AM_RANGE(0x300000, 0x300003) AM_DEVREADWRITE8("ymz", ymz280b_r, ymz280b_w, 0x00ff)         // YMZ280
469/**/AM_RANGE(0x400000, 0x407fff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)         // Sprites
470/**/AM_RANGE(0x408000, 0x40ffff) AM_RAM AM_BASE(&cave_spriteram16_2)                     // Sprites?
471/**/AM_RANGE(0x500000, 0x507fff) AM_RAM_WRITE(cave_vram_0_w) AM_BASE(&cave_vram_0)            // Layer 0
472/**/AM_RANGE(0x600000, 0x607fff) AM_RAM_WRITE(cave_vram_1_w) AM_BASE(&cave_vram_1)            // Layer 1
473/**/AM_RANGE(0x708000, 0x708fff) AM_RAM AM_BASE(&paletteram16) AM_SIZE(&cave_paletteram_size)   // Palette
474/**/AM_RANGE(0x710000, 0x710bff) AM_READ(SMH_RAM)                                    // ?
475   AM_RANGE(0x710c00, 0x710fff) AM_RAM                                             // ?
476   AM_RANGE(0x800000, 0x800007) AM_READ(cave_irq_cause_r)                              // IRQ Cause
477   AM_RANGE(0x800000, 0x80007f) AM_WRITE(SMH_RAM) AM_BASE(&cave_videoregs)                  // Video Regs
478/**/AM_RANGE(0x900000, 0x900005) AM_RAM AM_BASE(&cave_vctrl_0)                           // Layer 0 Control
479/**/AM_RANGE(0xa00000, 0xa00005) AM_RAM AM_BASE(&cave_vctrl_1)                           // Layer 1 Control
480   AM_RANGE(0xb00000, 0xb00001) AM_READ_PORT("IN0")                                 // Inputs
481   AM_RANGE(0xb00002, 0xb00003) AM_READ_PORT("IN1")                                 // Inputs + EEPROM
482   AM_RANGE(0xc00000, 0xc00001) AM_WRITE(cave_eeprom_msb_w)                           // EEPROM
480483ADDRESS_MAP_END
481484
482static ADDRESS_MAP_START( dfeveron_writemem, ADDRESS_SPACE_PROGRAM, 16 )
483   AM_RANGE(0x000000, 0x0fffff) AM_WRITE(SMH_ROM                  )   // ROM
484   AM_RANGE(0x100000, 0x10ffff) AM_WRITE(SMH_RAM                  )   // RAM
485   AM_RANGE(0x300000, 0x300003) AM_DEVWRITE8("ymz", ymz280b_w, 0x00ff)   // YMZ280
486   AM_RANGE(0x400000, 0x407fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)   // Sprites
487   AM_RANGE(0x408000, 0x40ffff) AM_WRITE(SMH_RAM) AM_BASE(&cave_spriteram16_2)
488   AM_RANGE(0x500000, 0x507fff) AM_WRITE(cave_vram_0_w) AM_BASE(&cave_vram_0   )   // Layer 0
489   AM_RANGE(0x600000, 0x607fff) AM_WRITE(cave_vram_1_w) AM_BASE(&cave_vram_1   )   // Layer 1
490   AM_RANGE(0x708000, 0x708fff) AM_WRITE(SMH_RAM) AM_BASE(&paletteram16) AM_SIZE(&cave_paletteram_size)   // Palette
491   AM_RANGE(0x710c00, 0x710fff) AM_WRITE(SMH_RAM                        )   // ?
492   AM_RANGE(0x800000, 0x80007f) AM_WRITE(SMH_RAM) AM_BASE(&cave_videoregs      )   // Video Regs
493   AM_RANGE(0x900000, 0x900005) AM_WRITE(SMH_RAM) AM_BASE(&cave_vctrl_0      )   // Layer 0 Control
494   AM_RANGE(0xa00000, 0xa00005) AM_WRITE(SMH_RAM) AM_BASE(&cave_vctrl_1      )   // Layer 1 Control
495   AM_RANGE(0xc00000, 0xc00001) AM_WRITE(cave_eeprom_msb_w                  )   // EEPROM
496ADDRESS_MAP_END
497485
498
499486/***************************************************************************
500487                                Dodonpachi
501488***************************************************************************/
502489
503static ADDRESS_MAP_START( ddonpach_readmem, ADDRESS_SPACE_PROGRAM, 16 )
504   AM_RANGE(0x000000, 0x0fffff) AM_READ(SMH_ROM            )   // ROM
505   AM_RANGE(0x100000, 0x10ffff) AM_READ(SMH_RAM            )   // RAM
506   AM_RANGE(0x300000, 0x300003) AM_DEVREAD8("ymz", ymz280b_r, 0x00ff)   // YMZ280
507/**/AM_RANGE(0x400000, 0x407fff) AM_READ(SMH_RAM            )   // Sprites
508/**/AM_RANGE(0x408000, 0x40ffff) AM_READ(SMH_RAM            )   // Sprites?
509/**/AM_RANGE(0x500000, 0x507fff) AM_READ(SMH_RAM            )   // Layer 0
510/**/AM_RANGE(0x600000, 0x607fff) AM_READ(SMH_RAM            )   // Layer 1
511/**/AM_RANGE(0x700000, 0x70ffff) AM_READ(SMH_RAM            )   // Layer 2
512   AM_RANGE(0x800000, 0x800007) AM_READ(cave_irq_cause_r      )   // IRQ Cause
513/**/AM_RANGE(0x900000, 0x900005) AM_READ(SMH_RAM            )   // Layer 0 Control
514/**/AM_RANGE(0xa00000, 0xa00005) AM_READ(SMH_RAM            )   // Layer 1 Control
515/**/AM_RANGE(0xb00000, 0xb00005) AM_READ(SMH_RAM            )   // Layer 2 Control
516/**/AM_RANGE(0xc00000, 0xc0ffff) AM_READ(SMH_RAM            )   // Palette
517   AM_RANGE(0xd00000, 0xd00001) AM_READ_PORT("IN0"            )   // Inputs
518   AM_RANGE(0xd00002, 0xd00003) AM_READ_PORT("IN1"            )   // Inputs + EEPROM
490static ADDRESS_MAP_START( ddonpach_map, ADDRESS_SPACE_PROGRAM, 16 )
491   AM_RANGE(0x000000, 0x0fffff) AM_ROM                                             // ROM
492   AM_RANGE(0x100000, 0x10ffff) AM_RAM                                             // RAM
493   AM_RANGE(0x300000, 0x300003) AM_DEVREADWRITE8("ymz", ymz280b_r, ymz280b_w, 0x00ff)         // YMZ280
494/**/AM_RANGE(0x400000, 0x407fff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)         // Sprites
495/**/AM_RANGE(0x408000, 0x40ffff) AM_RAM AM_BASE(&cave_spriteram16_2)                     // Sprites?
496/**/AM_RANGE(0x500000, 0x507fff) AM_RAM_WRITE(cave_vram_0_w) AM_BASE(&cave_vram_0)            // Layer 0
497/**/AM_RANGE(0x600000, 0x607fff) AM_RAM_WRITE(cave_vram_1_w) AM_BASE(&cave_vram_1)            // Layer 1
498/**/AM_RANGE(0x700000, 0x70ffff) AM_RAM_WRITE(cave_vram_2_8x8_w) AM_BASE(&cave_vram_2)         // Layer 2
499   AM_RANGE(0x800000, 0x800007) AM_READ(cave_irq_cause_r)                              // IRQ Cause
500   AM_RANGE(0x800000, 0x80007f) AM_WRITE(SMH_RAM) AM_BASE(&cave_videoregs)                  // Video Regs
501/**/AM_RANGE(0x900000, 0x900005) AM_RAM AM_BASE(&cave_vctrl_0)                           // Layer 0 Control
502/**/AM_RANGE(0xa00000, 0xa00005) AM_RAM AM_BASE(&cave_vctrl_1)                           // Layer 1 Control
503/**/AM_RANGE(0xb00000, 0xb00005) AM_RAM AM_BASE(&cave_vctrl_2)                           // Layer 2 Control
504/**/AM_RANGE(0xc00000, 0xc0ffff) AM_RAM AM_BASE(&paletteram16) AM_SIZE(&cave_paletteram_size)   // Palette
505   AM_RANGE(0xd00000, 0xd00001) AM_READ_PORT("IN0"            )                        // Inputs
506   AM_RANGE(0xd00002, 0xd00003) AM_READ_PORT("IN1"            )                        // Inputs + EEPROM
507   AM_RANGE(0xe00000, 0xe00001) AM_WRITE(cave_eeprom_msb_w)                           // EEPROM
519508ADDRESS_MAP_END
520509
521static ADDRESS_MAP_START( ddonpach_writemem, ADDRESS_SPACE_PROGRAM, 16 )
522   AM_RANGE(0x000000, 0x0fffff) AM_WRITE(SMH_ROM                     )   // ROM
523   AM_RANGE(0x100000, 0x10ffff) AM_WRITE(SMH_RAM                     )   // RAM
524   AM_RANGE(0x300000, 0x300003) AM_DEVWRITE8("ymz", ymz280b_w, 0x00ff)   // YMZ280
525   AM_RANGE(0x400000, 0x407fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)   // Sprites
526   AM_RANGE(0x408000, 0x40ffff) AM_WRITE(SMH_RAM) AM_BASE(&cave_spriteram16_2      )
527   AM_RANGE(0x500000, 0x507fff) AM_WRITE(cave_vram_0_w) AM_BASE(&cave_vram_0      )   // Layer 0
528   AM_RANGE(0x600000, 0x607fff) AM_WRITE(cave_vram_1_w) AM_BASE(&cave_vram_1      )   // Layer 1
529   AM_RANGE(0x700000, 0x70ffff) AM_WRITE(cave_vram_2_8x8_w) AM_BASE(&cave_vram_2   )   // Layer 2
530   AM_RANGE(0x800000, 0x80007f) AM_WRITE(SMH_RAM) AM_BASE(&cave_videoregs         )   // Video Regs
531   AM_RANGE(0x900000, 0x900005) AM_WRITE(SMH_RAM) AM_BASE(&cave_vctrl_0         )   // Layer 0 Control
532   AM_RANGE(0xa00000, 0xa00005) AM_WRITE(SMH_RAM) AM_BASE(&cave_vctrl_1         )   // Layer 1 Control
533   AM_RANGE(0xb00000, 0xb00005) AM_WRITE(SMH_RAM) AM_BASE(&cave_vctrl_2         )   // Layer 2 Control
534   AM_RANGE(0xc00000, 0xc0ffff) AM_WRITE(SMH_RAM) AM_BASE(&paletteram16) AM_SIZE(&cave_paletteram_size)   // Palette
535   AM_RANGE(0xe00000, 0xe00001) AM_WRITE(cave_eeprom_msb_w                     )   // EEPROM
536ADDRESS_MAP_END
537510
538
539511/***************************************************************************
540512                                    Donpachi
541513***************************************************************************/
r4679r4680
565537}
566538#endif
567539
568static ADDRESS_MAP_START( donpachi_readmem, ADDRESS_SPACE_PROGRAM, 16 )
569   AM_RANGE(0x000000, 0x07ffff) AM_READ(SMH_ROM               )   // ROM
570   AM_RANGE(0x100000, 0x10ffff) AM_READ(SMH_RAM               )   // RAM
571   AM_RANGE(0x200000, 0x207fff) AM_READ(SMH_RAM               )   // Layer 1
572   AM_RANGE(0x300000, 0x307fff) AM_READ(SMH_RAM               )   // Layer 0
573   AM_RANGE(0x400000, 0x407fff) AM_READ(SMH_RAM               )   // Layer 2
574   AM_RANGE(0x500000, 0x507fff) AM_READ(SMH_RAM               )   // Sprites
575   AM_RANGE(0x508000, 0x50ffff) AM_READ(SMH_RAM               )   // Sprites?
576/**/AM_RANGE(0x600000, 0x600005) AM_READ(SMH_RAM               )   // Layer 0 Control
577/**/AM_RANGE(0x700000, 0x700005) AM_READ(SMH_RAM               )   // Layer 1 Control
578/**/AM_RANGE(0x800000, 0x800005) AM_READ(SMH_RAM               )   // Layer 2 Control
579   AM_RANGE(0x900000, 0x90007f) AM_READ(donpachi_videoregs_r      )   // Video Regs
580/**/AM_RANGE(0xa08000, 0xa08fff) AM_READ(SMH_RAM               )   // Palette
581   AM_RANGE(0xb00000, 0xb00001) AM_DEVREAD8("oki1", okim6295_r, 0x00ff   )   // M6295
582   AM_RANGE(0xb00010, 0xb00011) AM_DEVREAD8("oki2", okim6295_r, 0x00ff   )   //
583   AM_RANGE(0xc00000, 0xc00001) AM_READ_PORT("IN0"               )   // Inputs
584   AM_RANGE(0xc00002, 0xc00003) AM_READ_PORT("IN1"               )   // Inputs + EEPROM
540static ADDRESS_MAP_START( donpachi_map, ADDRESS_SPACE_PROGRAM, 16 )
541   AM_RANGE(0x000000, 0x07ffff) AM_ROM                                                   // ROM
542   AM_RANGE(0x100000, 0x10ffff) AM_RAM                                                   // RAM
543   AM_RANGE(0x200000, 0x207fff) AM_RAM_WRITE(cave_vram_1_w) AM_BASE(&cave_vram_1)                  // Layer 1
544   AM_RANGE(0x300000, 0x307fff) AM_RAM_WRITE(cave_vram_0_w) AM_BASE(&cave_vram_0)                  // Layer 0
545   AM_RANGE(0x400000, 0x407fff) AM_RAM_WRITE(cave_vram_2_8x8_w) AM_BASE(&cave_vram_2)               // Layer 2
546   AM_RANGE(0x500000, 0x507fff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)               // Sprites
547   AM_RANGE(0x508000, 0x50ffff) AM_RAM AM_BASE(&cave_spriteram16_2)                           // Sprites?
548/**/AM_RANGE(0x600000, 0x600005) AM_RAM AM_BASE(&cave_vctrl_1)                                 // Layer 1 Control
549/**/AM_RANGE(0x700000, 0x700005) AM_RAM AM_BASE(&cave_vctrl_0)                                 // Layer 0 Control
550/**/AM_RANGE(0x800000, 0x800005) AM_RAM AM_BASE(&cave_vctrl_2)                                 // Layer 2 Control
551   AM_RANGE(0x900000, 0x90007f) AM_READWRITE(donpachi_videoregs_r, SMH_RAM) AM_BASE(&cave_videoregs)   // Video Regs
552/**/AM_RANGE(0xa08000, 0xa08fff) AM_RAM AM_BASE(&paletteram16) AM_SIZE(&cave_paletteram_size)         // Palette
553   AM_RANGE(0xb00000, 0xb00003) AM_DEVREADWRITE8("oki1", okim6295_r, okim6295_w, 0x00ff)            // M6295
554   AM_RANGE(0xb00010, 0xb00013) AM_DEVREADWRITE8("oki2", okim6295_r, okim6295_w, 0x00ff)            //
555   AM_RANGE(0xb00020, 0xb0002f) AM_WRITE(NMK112_okibank_lsb_w)                                 //
556   AM_RANGE(0xc00000, 0xc00001) AM_READ_PORT("IN0")                                       // Inputs
557   AM_RANGE(0xc00002, 0xc00003) AM_READ_PORT("IN1")                                       // Inputs + EEPROM
558   AM_RANGE(0xd00000, 0xd00001) AM_WRITE(cave_eeprom_msb_w)                                 // EEPROM
585559ADDRESS_MAP_END
586560
587static ADDRESS_MAP_START( donpachi_writemem, ADDRESS_SPACE_PROGRAM, 16 )
588   AM_RANGE(0x000000, 0x07ffff) AM_WRITE(SMH_ROM                     )   // ROM
589   AM_RANGE(0x100000, 0x10ffff) AM_WRITE(SMH_RAM                     )   // RAM
590   AM_RANGE(0x200000, 0x207fff) AM_WRITE(cave_vram_1_w) AM_BASE(&cave_vram_1      )   // Layer 1
591   AM_RANGE(0x300000, 0x307fff) AM_WRITE(cave_vram_0_w) AM_BASE(&cave_vram_0      )   // Layer 0
592   AM_RANGE(0x400000, 0x407fff) AM_WRITE(cave_vram_2_8x8_w) AM_BASE(&cave_vram_2   )   // Layer 2
593   AM_RANGE(0x500000, 0x507fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size   )   // Sprites
594   AM_RANGE(0x508000, 0x50ffff) AM_WRITE(SMH_RAM) AM_BASE(&cave_spriteram16_2      )
595   AM_RANGE(0x600000, 0x600005) AM_WRITE(SMH_RAM) AM_BASE(&cave_vctrl_1         )   // Layer 1 Control
596   AM_RANGE(0x700000, 0x700005) AM_WRITE(SMH_RAM) AM_BASE(&cave_vctrl_0         )   // Layer 0 Control
597   AM_RANGE(0x800000, 0x800005) AM_WRITE(SMH_RAM) AM_BASE(&cave_vctrl_2         )   // Layer 2 Control
598   AM_RANGE(0x900000, 0x90007f) AM_WRITE(SMH_RAM) AM_BASE(&cave_videoregs         )   // Video Regs
599   AM_RANGE(0xa08000, 0xa08fff) AM_WRITE(SMH_RAM) AM_BASE(&paletteram16) AM_SIZE(&cave_paletteram_size)   // Palette
600   AM_RANGE(0xb00000, 0xb00003) AM_DEVWRITE8("oki1", okim6295_w, 0x00ff      )   // M6295
601   AM_RANGE(0xb00010, 0xb00013) AM_DEVWRITE8("oki2", okim6295_w, 0x00ff      )   //
602   AM_RANGE(0xb00020, 0xb0002f) AM_WRITE(NMK112_okibank_lsb_w            )   //
603   AM_RANGE(0xd00000, 0xd00001) AM_WRITE(cave_eeprom_msb_w               )   // EEPROM
604ADDRESS_MAP_END
605561
606
607562/***************************************************************************
608563                                    Esprade
609564***************************************************************************/
610565
611static ADDRESS_MAP_START( esprade_readmem, ADDRESS_SPACE_PROGRAM, 16 )
612   AM_RANGE(0x000000, 0x0fffff) AM_READ(SMH_ROM            )   // ROM
613   AM_RANGE(0x100000, 0x10ffff) AM_READ(SMH_RAM            )   // RAM
614   AM_RANGE(0x300000, 0x300003) AM_DEVREAD8("ymz", ymz280b_r, 0x00ff)   // YMZ280
615/**/AM_RANGE(0x400000, 0x407fff) AM_READ(SMH_RAM            )   // Sprites
616/**/AM_RANGE(0x408000, 0x40ffff) AM_READ(SMH_RAM            )   // Sprites?
617/**/AM_RANGE(0x500000, 0x507fff) AM_READ(SMH_RAM            )   // Layer 0
618/**/AM_RANGE(0x600000, 0x607fff) AM_READ(SMH_RAM            )   // Layer 1
619/**/AM_RANGE(0x700000, 0x707fff) AM_READ(SMH_RAM            )   // Layer 2
620   AM_RANGE(0x800000, 0x800007) AM_READ(cave_irq_cause_r      )   // IRQ Cause
621/**/AM_RANGE(0x900000, 0x900005) AM_READ(SMH_RAM            )   // Layer 0 Control
622/**/AM_RANGE(0xa00000, 0xa00005) AM_READ(SMH_RAM            )   // Layer 1 Control
623/**/AM_RANGE(0xb00000, 0xb00005) AM_READ(SMH_RAM            )   // Layer 2 Control
624/**/AM_RANGE(0xc00000, 0xc0ffff) AM_READ(SMH_RAM            )   // Palette
566static ADDRESS_MAP_START( esprade_map, ADDRESS_SPACE_PROGRAM, 16 )
567   AM_RANGE(0x000000, 0x0fffff) AM_ROM                                             // ROM
568   AM_RANGE(0x100000, 0x10ffff) AM_RAM                                             // RAM
569   AM_RANGE(0x300000, 0x300003) AM_DEVREADWRITE8("ymz", ymz280b_r, ymz280b_w, 0x00ff)         // YMZ280
570/**/AM_RANGE(0x400000, 0x407fff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)         // Sprites
571/**/AM_RANGE(0x408000, 0x40ffff) AM_RAM AM_BASE(&cave_spriteram16_2)                     // Sprites?
572/**/AM_RANGE(0x500000, 0x507fff) AM_RAM_WRITE(cave_vram_0_w) AM_BASE(&cave_vram_0)            // Layer 0
573/**/AM_RANGE(0x600000, 0x607fff) AM_RAM_WRITE(cave_vram_1_w) AM_BASE(&cave_vram_1)            // Layer 1
574/**/AM_RANGE(0x700000, 0x707fff) AM_RAM_WRITE(cave_vram_2_w) AM_BASE(&cave_vram_2)            // Layer 2
575   AM_RANGE(0x800000, 0x800007) AM_READ(cave_irq_cause_r)                              // IRQ Cause
576   AM_RANGE(0x800000, 0x80007f) AM_WRITE(SMH_RAM) AM_BASE(&cave_videoregs)                  // Video Regs
577/**/AM_RANGE(0x900000, 0x900005) AM_RAM AM_BASE(&cave_vctrl_0)                           // Layer 0 Control
578/**/AM_RANGE(0xa00000, 0xa00005) AM_RAM AM_BASE(&cave_vctrl_1)                           // Layer 1 Control
579/**/AM_RANGE(0xb00000, 0xb00005) AM_RAM AM_BASE(&cave_vctrl_2)                           // Layer 2 Control
580/**/AM_RANGE(0xc00000, 0xc0ffff) AM_RAM AM_BASE(&paletteram16) AM_SIZE(&cave_paletteram_size)   // Palette
625581   AM_RANGE(0xd00000, 0xd00001) AM_READ_PORT("IN0"            )   // Inputs
626582   AM_RANGE(0xd00002, 0xd00003) AM_READ_PORT("IN1"            )   // Inputs + EEPROM
627ADDRESS_MAP_END
628
629static ADDRESS_MAP_START( esprade_writemem, ADDRESS_SPACE_PROGRAM, 16 )
630   AM_RANGE(0x000000, 0x0fffff) AM_WRITE(SMH_ROM                  )   // ROM
631   AM_RANGE(0x100000, 0x10ffff) AM_WRITE(SMH_RAM                  )   // RAM
632   AM_RANGE(0x300000, 0x300003) AM_DEVWRITE8("ymz", ymz280b_w, 0x00ff)   // YMZ280
633   AM_RANGE(0x400000, 0x407fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)   // Sprites
634   AM_RANGE(0x408000, 0x40ffff) AM_WRITE(SMH_RAM) AM_BASE(&cave_spriteram16_2)   // Sprites?
635   AM_RANGE(0x500000, 0x507fff) AM_WRITE(cave_vram_0_w) AM_BASE(&cave_vram_0   )   // Layer 0
636   AM_RANGE(0x600000, 0x607fff) AM_WRITE(cave_vram_1_w) AM_BASE(&cave_vram_1   )   // Layer 1
637   AM_RANGE(0x700000, 0x707fff) AM_WRITE(cave_vram_2_w) AM_BASE(&cave_vram_2   )   // Layer 2
638   AM_RANGE(0x800000, 0x80007f) AM_WRITE(SMH_RAM) AM_BASE(&cave_videoregs      )   // Video Regs
639   AM_RANGE(0x900000, 0x900005) AM_WRITE(SMH_RAM) AM_BASE(&cave_vctrl_0      )   // Layer 0 Control
640   AM_RANGE(0xa00000, 0xa00005) AM_WRITE(SMH_RAM) AM_BASE(&cave_vctrl_1      )   // Layer 1 Control
641   AM_RANGE(0xb00000, 0xb00005) AM_WRITE(SMH_RAM) AM_BASE(&cave_vctrl_2      )   // Layer 2 Control
642   AM_RANGE(0xc00000, 0xc0ffff) AM_WRITE(SMH_RAM) AM_BASE(&paletteram16) AM_SIZE(&cave_paletteram_size)   // Palette
643583   AM_RANGE(0xe00000, 0xe00001) AM_WRITE(cave_eeprom_msb_w            )   // EEPROM
644584ADDRESS_MAP_END
645585
r4679r4680
648588                                    Gaia Crusaders
649589***************************************************************************/
650590
651static ADDRESS_MAP_START( gaia_readmem, ADDRESS_SPACE_PROGRAM, 16 )
652   AM_RANGE(0x000000, 0x0fffff) AM_READ(SMH_ROM            )   // ROM
653   AM_RANGE(0x100000, 0x10ffff) AM_READ(SMH_RAM            )   // RAM
654   AM_RANGE(0x300000, 0x300003) AM_DEVREAD8("ymz", ymz280b_r, 0x00ff)   // YMZ280
655   AM_RANGE(0x400000, 0x407fff) AM_READ(SMH_RAM            )   // Sprite bank 1
656   AM_RANGE(0x408000, 0x40ffff) AM_READ(SMH_RAM            )   // Sprite bank 2
657   AM_RANGE(0x500000, 0x507fff) AM_READ(SMH_RAM            )   // Layer 0
658   AM_RANGE(0x508000, 0x50ffff) AM_READ(SMH_RAM            )   // More Layer 0, Tested but not used?
659   AM_RANGE(0x600000, 0x607fff) AM_READ(SMH_RAM            )   // Layer 1
660   AM_RANGE(0x608000, 0x60ffff) AM_READ(SMH_RAM            )   // More Layer 1, Tested but not used?
661   AM_RANGE(0x700000, 0x707fff) AM_READ(SMH_RAM            )   // Layer 2
662   AM_RANGE(0x708000, 0x70ffff) AM_READ(SMH_RAM            )   // More Layer 2, Tested but not used?
663   AM_RANGE(0x800000, 0x800007) AM_READ(cave_irq_cause_r      )   // IRQ Cause
664/**/AM_RANGE(0x900000, 0x900005) AM_READ(SMH_RAM            )   // Layer 0 Control
665/**/AM_RANGE(0xa00000, 0xa00005) AM_READ(SMH_RAM            )   // Layer 1 Control
666/**/AM_RANGE(0xb00000, 0xb00005) AM_READ(SMH_RAM            )   // Layer 2 Control
667   AM_RANGE(0xc00000, 0xc0ffff) AM_READ(SMH_RAM            )   // Palette
668   AM_RANGE(0xd00010, 0xd00011) AM_READ_PORT("IN0"            )   // Inputs
669   AM_RANGE(0xd00012, 0xd00013) AM_READ_PORT("IN1"            )   // Inputs
670   AM_RANGE(0xd00014, 0xd00015) AM_READ_PORT("DSW"            )   // Dips
591static ADDRESS_MAP_START( gaia_map, ADDRESS_SPACE_PROGRAM, 16 )
592   AM_RANGE(0x000000, 0x0fffff) AM_ROM                                             // ROM
593   AM_RANGE(0x100000, 0x10ffff) AM_RAM                                             // RAM
594   AM_RANGE(0x300000, 0x300003) AM_DEVREADWRITE8("ymz", ymz280b_r, ymz280b_w, 0x00ff)         // YMZ280
595   AM_RANGE(0x400000, 0x407fff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)         // Sprite bank 1
596   AM_RANGE(0x408000, 0x40ffff) AM_RAM AM_BASE(&cave_spriteram16_2)                     // Sprite bank 2
597   AM_RANGE(0x500000, 0x507fff) AM_RAM_WRITE(cave_vram_0_w) AM_BASE(&cave_vram_0)            // Layer 0
598   AM_RANGE(0x508000, 0x50ffff) AM_RAM                                             // More Layer 0, Tested but not used?
599   AM_RANGE(0x600000, 0x607fff) AM_RAM_WRITE(cave_vram_1_w) AM_BASE(&cave_vram_1)            // Layer 1
600   AM_RANGE(0x608000, 0x60ffff) AM_RAM                                             // More Layer 1, Tested but not used?
601   AM_RANGE(0x700000, 0x707fff) AM_RAM_WRITE(cave_vram_2_w) AM_BASE(&cave_vram_2)            // Layer 2
602   AM_RANGE(0x708000, 0x70ffff) AM_RAM                                             // More Layer 2, Tested but not used?
603   AM_RANGE(0x800000, 0x800007) AM_READ(cave_irq_cause_r)                              // IRQ Cause
604   AM_RANGE(0x800000, 0x80007f) AM_WRITE(SMH_RAM) AM_BASE(&cave_videoregs)                  // Video Regs
605/**/AM_RANGE(0x900000, 0x900005) AM_RAM AM_BASE(&cave_vctrl_0)                           // Layer 0 Control
606/**/AM_RANGE(0xa00000, 0xa00005) AM_RAM AM_BASE(&cave_vctrl_1)                           // Layer 1 Control
607/**/AM_RANGE(0xb00000, 0xb00005) AM_RAM AM_BASE(&cave_vctrl_2)                           // Layer 2 Control
608   AM_RANGE(0xc00000, 0xc0ffff) AM_RAM AM_BASE(&paletteram16) AM_SIZE(&cave_paletteram_size)   // Palette
609   AM_RANGE(0xd00010, 0xd00011) AM_READ_PORT("IN0")                                 // Inputs
610   AM_RANGE(0xd00010, 0xd00011) AM_WRITE(gaia_coin_lsb_w)                              // Coin counter only
611   AM_RANGE(0xd00012, 0xd00013) AM_READ_PORT("IN1")                                 // Inputs
612   AM_RANGE(0xd00014, 0xd00015) AM_READ_PORT("DSW")                                 // Dips
613   AM_RANGE(0xd00014, 0xd00015) AM_WRITE(watchdog_reset16_w)                           // Watchdog?
671614ADDRESS_MAP_END
672615
673static ADDRESS_MAP_START( gaia_writemem, ADDRESS_SPACE_PROGRAM, 16 )
674   AM_RANGE(0x000000, 0x0fffff) AM_WRITE(SMH_ROM                  )   // ROM
675   AM_RANGE(0x100000, 0x10ffff) AM_WRITE(SMH_RAM                  )   // RAM
676   AM_RANGE(0x300000, 0x300003) AM_DEVWRITE8("ymz", ymz280b_w, 0x00ff   )   // YMZ280
677   AM_RANGE(0x400000, 0x407fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size   )   // Sprite bank 1
678   AM_RANGE(0x408000, 0x40ffff) AM_WRITE(SMH_RAM) AM_BASE(&cave_spriteram16_2   )   // Sprite bank 2
679   AM_RANGE(0x500000, 0x507fff) AM_WRITE(cave_vram_0_w) AM_BASE(&cave_vram_0   )   // Layer 0
680   AM_RANGE(0x508000, 0x50ffff) AM_WRITE(SMH_RAM                        )   // More Layer 0, Tested but not used?
681   AM_RANGE(0x600000, 0x607fff) AM_WRITE(cave_vram_1_w) AM_BASE(&cave_vram_1   )   // Layer 1
682   AM_RANGE(0x608000, 0x60ffff) AM_WRITE(SMH_RAM                        )   // More Layer 1, Tested but not used?
683   AM_RANGE(0x700000, 0x707fff) AM_WRITE(cave_vram_2_w) AM_BASE(&cave_vram_2   )   // Layer 2
684   AM_RANGE(0x708000, 0x70ffff) AM_WRITE(SMH_RAM                        )   // More Layer 2, Tested but not used?
685   AM_RANGE(0x800000, 0x80007f) AM_WRITE(SMH_RAM) AM_BASE(&cave_videoregs      )   // Video Regs
686   AM_RANGE(0x900000, 0x900005) AM_WRITE(SMH_RAM) AM_BASE(&cave_vctrl_0      )   // Layer 0 Control
687   AM_RANGE(0xa00000, 0xa00005) AM_WRITE(SMH_RAM) AM_BASE(&cave_vctrl_1      )   // Layer 1 Control
688   AM_RANGE(0xb00000, 0xb00005) AM_WRITE(SMH_RAM) AM_BASE(&cave_vctrl_2      )   // Layer 2 Control
689   AM_RANGE(0xc00000, 0xc0ffff) AM_WRITE(SMH_RAM) AM_BASE(&paletteram16) AM_SIZE(&cave_paletteram_size)   // Palette
690   AM_RANGE(0xd00010, 0xd00011) AM_WRITE(gaia_coin_lsb_w            )   // Coin counter only
691   AM_RANGE(0xd00014, 0xd00015) AM_WRITE(watchdog_reset16_w         )   // Watchdog?
692ADDRESS_MAP_END
693616
694
695617/***************************************************************************
696618                                    Guwange
697619***************************************************************************/
698620
699static ADDRESS_MAP_START( guwange_readmem, ADDRESS_SPACE_PROGRAM, 16 )
700   AM_RANGE(0x000000, 0x0fffff) AM_READ(SMH_ROM            )   // ROM
701   AM_RANGE(0x200000, 0x20ffff) AM_READ(SMH_RAM            )   // RAM
702   AM_RANGE(0x300000, 0x300007) AM_READ(cave_irq_cause_r      )   // IRQ Cause
703/**/AM_RANGE(0x400000, 0x407fff) AM_READ(SMH_RAM            )   // Sprites
704/**/AM_RANGE(0x408000, 0x40ffff) AM_READ(SMH_RAM            )   // Sprites?
705/**/AM_RANGE(0x500000, 0x507fff) AM_READ(SMH_RAM            )   // Layer 0
706/**/AM_RANGE(0x600000, 0x607fff) AM_READ(SMH_RAM            )   // Layer 1
707/**/AM_RANGE(0x700000, 0x707fff) AM_READ(SMH_RAM            )   // Layer 2
708   AM_RANGE(0x800000, 0x800003) AM_DEVREAD8("ymz", ymz280b_r, 0x00ff)   // YMZ280
709/**/AM_RANGE(0x900000, 0x900005) AM_READ(SMH_RAM            )   // Layer 0 Control
710/**/AM_RANGE(0xa00000, 0xa00005) AM_READ(SMH_RAM            )   // Layer 1 Control
711/**/AM_RANGE(0xb00000, 0xb00005) AM_READ(SMH_RAM            )   // Layer 2 Control
712/**/AM_RANGE(0xc00000, 0xc0ffff) AM_READ(SMH_RAM            )   // Palette
713   AM_RANGE(0xd00010, 0xd00011) AM_READ_PORT("IN0"            )   // Inputs
714   AM_RANGE(0xd00012, 0xd00013) AM_READ_PORT("IN1"            )   // Inputs + EEPROM
621static ADDRESS_MAP_START( guwange_map, ADDRESS_SPACE_PROGRAM, 16 )
622   AM_RANGE(0x000000, 0x0fffff) AM_ROM                                             // ROM
623   AM_RANGE(0x200000, 0x20ffff) AM_RAM                                             // RAM
624   AM_RANGE(0x300000, 0x300007) AM_READ(cave_irq_cause_r)                              // IRQ Cause
625   AM_RANGE(0x300000, 0x30007f) AM_WRITE(SMH_RAM) AM_BASE(&cave_videoregs)                  // Video Regs
626/**/AM_RANGE(0x400000, 0x407fff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)         // Sprites
627/**/AM_RANGE(0x408000, 0x40ffff) AM_RAM AM_BASE(&cave_spriteram16_2)                     // Sprites?
628/**/AM_RANGE(0x500000, 0x507fff) AM_RAM_WRITE(cave_vram_0_w) AM_BASE(&cave_vram_0)            // Layer 0
629/**/AM_RANGE(0x600000, 0x607fff) AM_RAM_WRITE(cave_vram_1_w) AM_BASE(&cave_vram_1)            // Layer 1
630/**/AM_RANGE(0x700000, 0x707fff) AM_RAM_WRITE(cave_vram_2_w) AM_BASE(&cave_vram_2)            // Layer 2
631   AM_RANGE(0x800000, 0x800003) AM_DEVREADWRITE8("ymz", ymz280b_r, ymz280b_w, 0x00ff)         // YMZ280
632/**/AM_RANGE(0x900000, 0x900005) AM_RAM AM_BASE(&cave_vctrl_0)                           // Layer 0 Control
633/**/AM_RANGE(0xa00000, 0xa00005) AM_RAM AM_BASE(&cave_vctrl_1)                           // Layer 1 Control
634/**/AM_RANGE(0xb00000, 0xb00005) AM_RAM AM_BASE(&cave_vctrl_2)                           // Layer 2 Control
635/**/AM_RANGE(0xc00000, 0xc0ffff) AM_RAM AM_BASE(&paletteram16) AM_SIZE(&cave_paletteram_size)   // Palette
636   AM_RANGE(0xd00010, 0xd00011) AM_READ_PORT("IN0")                                 // Inputs
637   AM_RANGE(0xd00010, 0xd00011) AM_WRITE(cave_eeprom_lsb_w)                           // EEPROM
638   AM_RANGE(0xd00012, 0xd00013) AM_READ_PORT("IN1")                                 // Inputs + EEPROM
639//  AM_RANGE(0xd00012, 0xd00013) AM_WRITE(SMH_NOP)                                              // ?
640//  AM_RANGE(0xd00014, 0xd00015) AM_WRITE(SMH_NOP)                                              // ? $800068 in dfeveron ? probably Watchdog
715641ADDRESS_MAP_END
716642
717static ADDRESS_MAP_START( guwange_writemem, ADDRESS_SPACE_PROGRAM, 16 )
718   AM_RANGE(0x000000, 0x0fffff) AM_WRITE(SMH_ROM                  )   // ROM
719   AM_RANGE(0x200000, 0x20ffff) AM_WRITE(SMH_RAM                  )   // RAM
720   AM_RANGE(0x300000, 0x30007f) AM_WRITE(SMH_RAM) AM_BASE(&cave_videoregs      )   // Video Regs
721   AM_RANGE(0x400000, 0x407fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)   // Sprites
722   AM_RANGE(0x408000, 0x40ffff) AM_WRITE(SMH_RAM) AM_BASE(&cave_spriteram16_2   )
723   AM_RANGE(0x500000, 0x507fff) AM_WRITE(cave_vram_0_w) AM_BASE(&cave_vram_0   )   // Layer 0
724   AM_RANGE(0x600000, 0x607fff) AM_WRITE(cave_vram_1_w) AM_BASE(&cave_vram_1   )   // Layer 1
725   AM_RANGE(0x700000, 0x707fff) AM_WRITE(cave_vram_2_w) AM_BASE(&cave_vram_2   )   // Layer 2
726   AM_RANGE(0x800000, 0x800003) AM_DEVWRITE8("ymz", ymz280b_w, 0x00ff   )   // YMZ280
727   AM_RANGE(0x900000, 0x900005) AM_WRITE(SMH_RAM) AM_BASE(&cave_vctrl_0      )   // Layer 0 Control
728   AM_RANGE(0xa00000, 0xa00005) AM_WRITE(SMH_RAM) AM_BASE(&cave_vctrl_1      )   // Layer 1 Control
729   AM_RANGE(0xb00000, 0xb00005) AM_WRITE(SMH_RAM) AM_BASE(&cave_vctrl_2      )   // Layer 2 Control
730   AM_RANGE(0xc00000, 0xc0ffff) AM_WRITE(SMH_RAM) AM_BASE(&paletteram16) AM_SIZE(&cave_paletteram_size)   // Palette
731   AM_RANGE(0xd00010, 0xd00011) AM_WRITE(cave_eeprom_lsb_w            )   // EEPROM
732//  AM_RANGE(0xd00012, 0xd00013) AM_WRITE(SMH_NOP                       )   // ?
733//  AM_RANGE(0xd00014, 0xd00015) AM_WRITE(SMH_NOP                       )   // ? $800068 in dfeveron ? probably Watchdog
734ADDRESS_MAP_END
735643
736
737644/***************************************************************************
738645                                Hotdog Storm
739646***************************************************************************/
740647
741static ADDRESS_MAP_START( hotdogst_readmem, ADDRESS_SPACE_PROGRAM, 16 )
742   AM_RANGE(0x000000, 0x0fffff) AM_READ(SMH_ROM            )   // ROM
743   AM_RANGE(0x300000, 0x30ffff) AM_READ(SMH_RAM            )   // RAM
744/**/AM_RANGE(0x408000, 0x408fff) AM_READ(SMH_RAM            )   // Palette
745/**/AM_RANGE(0x880000, 0x887fff) AM_READ(SMH_RAM            )   // Layer 0
746/**/AM_RANGE(0x900000, 0x907fff) AM_READ(SMH_RAM            )   // Layer 1
747/**/AM_RANGE(0x980000, 0x987fff) AM_READ(SMH_RAM            )   // Layer 2
748   AM_RANGE(0xa80000, 0xa80007) AM_READ(cave_irq_cause_r      )   // IRQ Cause
749//  AM_RANGE(0xa8006e, 0xa8006f) AM_READ(soundlatch_ack_r       )   // From Sound CPU
750/**/AM_RANGE(0xb00000, 0xb00005) AM_READ(SMH_RAM            )   // Layer 0 Control
751/**/AM_RANGE(0xb80000, 0xb80005) AM_READ(SMH_RAM            )   // Layer 1 Control
752/**/AM_RANGE(0xc00000, 0xc00005) AM_READ(SMH_RAM            )   // Layer 2 Control
753   AM_RANGE(0xc80000, 0xc80001) AM_READ_PORT("IN0"            )   // Inputs
754   AM_RANGE(0xc80002, 0xc80003) AM_READ_PORT("IN1"            )   // Inputs + EEPROM
755/**/AM_RANGE(0xf00000, 0xf07fff) AM_READ(SMH_RAM            )   // Sprites
756/**/AM_RANGE(0xf08000, 0xf0ffff) AM_READ(SMH_RAM            )   // Sprites?
648static ADDRESS_MAP_START( hotdogst_map, ADDRESS_SPACE_PROGRAM, 16 )
649   AM_RANGE(0x000000, 0x0fffff) AM_ROM                                             // ROM
650   AM_RANGE(0x300000, 0x30ffff) AM_RAM                                             // RAM
651/**/AM_RANGE(0x408000, 0x408fff) AM_RAM AM_BASE(&paletteram16) AM_SIZE(&cave_paletteram_size)   // Palette
652/**/AM_RANGE(0x880000, 0x887fff) AM_RAM_WRITE(cave_vram_0_w) AM_BASE(&cave_vram_0)            // Layer 0
653/**/AM_RANGE(0x900000, 0x907fff) AM_RAM_WRITE(cave_vram_1_w) AM_BASE(&cave_vram_1)            // Layer 1
654/**/AM_RANGE(0x980000, 0x987fff) AM_RAM_WRITE(cave_vram_2_w) AM_BASE(&cave_vram_2)            // Layer 2
655   AM_RANGE(0xa80000, 0xa80007) AM_READ(cave_irq_cause_r)                              // IRQ Cause
656//  AM_RANGE(0xa8006e, 0xa8006f) AM_READ(soundlatch_ack_r)                                      // From Sound CPU
657   AM_RANGE(0xa8006e, 0xa8006f) AM_WRITE(sound_cmd_w)                                 // To Sound CPU
658   AM_RANGE(0xa80000, 0xa8007f) AM_WRITE(SMH_RAM) AM_BASE(&cave_videoregs)                  // Video Regs
659/**/AM_RANGE(0xb00000, 0xb00005) AM_RAM AM_BASE(&cave_vctrl_0)                           // Layer 0 Control
660/**/AM_RANGE(0xb80000, 0xb80005) AM_RAM AM_BASE(&cave_vctrl_1)                           // Layer 1 Control
661/**/AM_RANGE(0xc00000, 0xc00005) AM_RAM AM_BASE(&cave_vctrl_2)                           // Layer 2 Control
662   AM_RANGE(0xc80000, 0xc80001) AM_READ_PORT("IN0")                                 // Inputs
663   AM_RANGE(0xc80002, 0xc80003) AM_READ_PORT("IN1")                                 // Inputs + EEPROM
664   AM_RANGE(0xd00000, 0xd00001) AM_WRITE(hotdogst_eeprom_msb_w)                        // EEPROM
665   AM_RANGE(0xd00002, 0xd00003) AM_WRITE(SMH_NOP)                                    // ???
666/**/AM_RANGE(0xf00000, 0xf07fff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)         // Sprites
667/**/AM_RANGE(0xf08000, 0xf0ffff) AM_RAM AM_BASE(&cave_spriteram16_2)                     // Sprites?
757668ADDRESS_MAP_END
758669
759static ADDRESS_MAP_START( hotdogst_writemem, ADDRESS_SPACE_PROGRAM, 16 )
760   AM_RANGE(0x000000, 0x0fffff) AM_WRITE(SMH_ROM                  )   // ROM
761   AM_RANGE(0x300000, 0x30ffff) AM_WRITE(SMH_RAM                  )   // RAM
762   AM_RANGE(0x408000, 0x408fff) AM_WRITE(SMH_RAM) AM_BASE(&paletteram16) AM_SIZE(&cave_paletteram_size)   // Palette
763   AM_RANGE(0x880000, 0x887fff) AM_WRITE(cave_vram_0_w) AM_BASE(&cave_vram_0   )   // Layer 0
764   AM_RANGE(0x900000, 0x907fff) AM_WRITE(cave_vram_1_w) AM_BASE(&cave_vram_1   )   // Layer 1
765   AM_RANGE(0x980000, 0x987fff) AM_WRITE(cave_vram_2_w) AM_BASE(&cave_vram_2   )   // Layer 2
766   AM_RANGE(0xa8006e, 0xa8006f) AM_WRITE(sound_cmd_w                     )   // To Sound CPU
767   AM_RANGE(0xa80000, 0xa8007f) AM_WRITE(SMH_RAM) AM_BASE(&cave_videoregs      )   // Video Regs
768   AM_RANGE(0xb00000, 0xb00005) AM_WRITE(SMH_RAM) AM_BASE(&cave_vctrl_0      )   // Layer 0 Control
769   AM_RANGE(0xb80000, 0xb80005) AM_WRITE(SMH_RAM) AM_BASE(&cave_vctrl_1      )   // Layer 1 Control
770   AM_RANGE(0xc00000, 0xc00005) AM_WRITE(SMH_RAM) AM_BASE(&cave_vctrl_2      )   // Layer 2 Control
771   AM_RANGE(0xd00000, 0xd00001) AM_WRITE(hotdogst_eeprom_msb_w               )   // EEPROM
772   AM_RANGE(0xd00002, 0xd00003) AM_WRITE(SMH_NOP                        )   // ???
773   AM_RANGE(0xf00000, 0xf07fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)   // Sprites
774   AM_RANGE(0xf08000, 0xf0ffff) AM_WRITE(SMH_RAM) AM_BASE(&cave_spriteram16_2)
775ADDRESS_MAP_END
776670
777
778671/***************************************************************************
779672                               Koro Koro Quest
780673***************************************************************************/
r4679r4680
842735   return hopper ? 1 : 0;
843736}
844737
845static ADDRESS_MAP_START( korokoro_readmem, ADDRESS_SPACE_PROGRAM, 16 )
846   AM_RANGE(0x000000, 0x07ffff) AM_READ( SMH_ROM            )   // ROM
847//  AM_RANGE(0x100000, 0x107fff) AM_READ( SMH_RAM               )   // Layer 0
848//  AM_RANGE(0x140000, 0x140005) AM_READ( SMH_RAM               )   // Layer 0 Control
849//  AM_RANGE(0x180000, 0x187fff) AM_READ( SMH_RAM               )   // Sprites
850   AM_RANGE(0x1c0000, 0x1c0007) AM_READ( cave_irq_cause_r      )   // IRQ Cause
851//  AM_RANGE(0x200000, 0x207fff) AM_READ( SMH_RAM               )   // Palette
852//  AM_RANGE(0x240000, 0x240003) AM_DEVREAD8( "ymz", ymz280b_r, 0x00ff )   // YMZ280
853   AM_RANGE(0x280000, 0x280001) AM_READ_PORT("IN0"            )   // Inputs + ???
854   AM_RANGE(0x280002, 0x280003) AM_READ_PORT("IN1"            )   // Inputs + EEPROM
855   AM_RANGE(0x300000, 0x30ffff) AM_READ( SMH_RAM            )   // RAM
738static ADDRESS_MAP_START( korokoro_map, ADDRESS_SPACE_PROGRAM, 16 )
739   AM_RANGE(0x000000, 0x07ffff) AM_ROM                                                      // ROM
740//  AM_RANGE(0x100000, 0x107fff) AM_READ(SMH_RAM)                                                           // Layer 0
741   AM_RANGE(0x100000, 0x107fff) AM_WRITE(cave_vram_0_w) AM_BASE(&cave_vram_0)                        // Layer 0
742//  AM_RANGE(0x140000, 0x140005) AM_READ(SMH_RAM)                                                           // Layer 0 Control
743   AM_RANGE(0x140000, 0x140005) AM_WRITE(SMH_RAM) AM_BASE(&cave_vctrl_0)                           // Layer 0 Control
744//  AM_RANGE(0x180000, 0x187fff) AM_READ(SMH_RAM)                                                           // Sprites
745   AM_RANGE(0x180000, 0x187fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)         // Sprites
746   AM_RANGE(0x1c0000, 0x1c0007) AM_READ(cave_irq_cause_r)                                       // IRQ Cause
747   AM_RANGE(0x1c0000, 0x1c007f) AM_WRITE(SMH_RAM) AM_BASE(&cave_videoregs)                           // Video Regs
748//  AM_RANGE(0x200000, 0x207fff) AM_READ(SMH_RAM)                                                           // Palette
749   AM_RANGE(0x200000, 0x207fff) AM_WRITE(SMH_RAM) AM_BASE(&paletteram16) AM_SIZE(&cave_paletteram_size)   // Palette
750//  AM_RANGE(0x240000, 0x240003) AM_DEVREAD8( "ymz", ymz280b_r, 0x00ff)                                     // YMZ280
751   AM_RANGE(0x240000, 0x240003) AM_DEVWRITE8( "ymz", ymz280b_w, 0x00ff)                           // YMZ280
752   AM_RANGE(0x280000, 0x280001) AM_READ_PORT("IN0")                                          // Inputs + ???
753   AM_RANGE(0x280002, 0x280003) AM_READ_PORT("IN1")                                          // Inputs + EEPROM
754   AM_RANGE(0x280008, 0x280009) AM_WRITE(korokoro_leds_w)
755   AM_RANGE(0x28000a, 0x28000b) AM_WRITE(korokoro_eeprom_msb_w)                                 // EEPROM
756   AM_RANGE(0x28000c, 0x28000d) AM_WRITE(SMH_NOP)                                             // 0 (watchdog?)
757   AM_RANGE(0x300000, 0x30ffff) AM_RAM                                                      // RAM
856758ADDRESS_MAP_END
857759
858static ADDRESS_MAP_START( korokoro_writemem, ADDRESS_SPACE_PROGRAM, 16 )
859   AM_RANGE(0x000000, 0x07ffff) AM_WRITE( SMH_ROM            )   // ROM
860   AM_RANGE(0x100000, 0x107fff) AM_WRITE( cave_vram_0_w      ) AM_BASE( &cave_vram_0      )   // Layer 0
861   AM_RANGE(0x140000, 0x140005) AM_WRITE( SMH_RAM            ) AM_BASE( &cave_vctrl_0   )   // Layer 0 Control
862   AM_RANGE(0x180000, 0x187fff) AM_WRITE( SMH_RAM            ) AM_BASE( &spriteram16      ) AM_SIZE(&spriteram_size   )   // Sprites
863   AM_RANGE(0x1c0000, 0x1c007f) AM_WRITE( SMH_RAM            ) AM_BASE( &cave_videoregs   )   // Video Regs
864   AM_RANGE(0x200000, 0x207fff) AM_WRITE( SMH_RAM   ) AM_BASE(&paletteram16) AM_SIZE(&cave_paletteram_size)   // Palette
865   AM_RANGE(0x240000, 0x240003) AM_DEVWRITE8( "ymz", ymz280b_w, 0x00ff)   // YMZ280
866   AM_RANGE(0x280008, 0x280009) AM_WRITE( korokoro_leds_w         )
867   AM_RANGE(0x28000a, 0x28000b) AM_WRITE( korokoro_eeprom_msb_w   )   // EEPROM
868   AM_RANGE(0x28000c, 0x28000d) AM_WRITE( SMH_NOP               )   // 0 (watchdog?)
869   AM_RANGE(0x300000, 0x30ffff) AM_WRITE( SMH_RAM               )   // RAM
870ADDRESS_MAP_END
871760
872
873761/***************************************************************************
874762                                Mazinger Z
875763***************************************************************************/
876764
877static ADDRESS_MAP_START( mazinger_readmem, ADDRESS_SPACE_PROGRAM, 16 )
878   AM_RANGE(0x000000, 0x07ffff) AM_READ(SMH_ROM            )   // ROM
879   AM_RANGE(0x100000, 0x10ffff) AM_READ(SMH_RAM            )   // RAM
880/**/AM_RANGE(0x200000, 0x207fff) AM_READ(SMH_RAM            )   // Sprites
881/**/AM_RANGE(0x208000, 0x20ffff) AM_READ(SMH_RAM            )   // Sprites?
882   AM_RANGE(0x300000, 0x300007) AM_READ(cave_irq_cause_r      )   // IRQ Cause
883   AM_RANGE(0x30006e, 0x30006f) AM_READ(soundlatch_ack_r      )   // From Sound CPU
884/**/AM_RANGE(0x404000, 0x407fff) AM_READ(SMH_RAM            )   // Layer 1
885/**/AM_RANGE(0x504000, 0x507fff) AM_READ(SMH_RAM            )   // Layer 0
886/**/AM_RANGE(0x600000, 0x600005) AM_READ(SMH_RAM            )   // Layer 1 Control
887/**/AM_RANGE(0x700000, 0x700005) AM_READ(SMH_RAM            )   // Layer 0 Control
888   AM_RANGE(0x800000, 0x800001) AM_READ_PORT("IN0"            )   // Inputs
889   AM_RANGE(0x800002, 0x800003) AM_READ_PORT("IN1"            )   // Inputs + EEPROM
890/**/AM_RANGE(0xc08000, 0xc0ffff) AM_READ(SMH_RAM            )   // Palette
891   AM_RANGE(0xd00000, 0xd7ffff) AM_READ(SMH_BANK1            )   // ROM
765static ADDRESS_MAP_START( mazinger_map, ADDRESS_SPACE_PROGRAM, 16 )
766   AM_RANGE(0x000000, 0x07ffff) AM_ROM                                             // ROM
767   AM_RANGE(0x100000, 0x10ffff) AM_RAM                                             // RAM
768/**/AM_RANGE(0x200000, 0x207fff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)         // Sprites
769/**/AM_RANGE(0x208000, 0x20ffff) AM_RAM AM_BASE(&cave_spriteram16_2)                     // Sprites?
770   AM_RANGE(0x300000, 0x300007) AM_READ(cave_irq_cause_r)                              // IRQ Cause
771   AM_RANGE(0x300068, 0x300069) AM_WRITE(watchdog_reset16_w)                           // Watchdog
772   AM_RANGE(0x30006e, 0x30006f) AM_READWRITE(soundlatch_ack_r, sound_cmd_w)               // From Sound CPU
773   AM_RANGE(0x300000, 0x30007f) AM_WRITE(SMH_RAM) AM_BASE(&cave_videoregs)                  // Video Regs
774   AM_RANGE(0x400000, 0x407fff) AM_RAM_WRITE(cave_vram_1_8x8_w) AM_BASE(&cave_vram_1)         // Layer 1
775/**/AM_RANGE(0x500000, 0x507fff) AM_RAM_WRITE(cave_vram_0_8x8_w) AM_BASE(&cave_vram_0)         // Layer 0
776/**/AM_RANGE(0x600000, 0x600005) AM_RAM AM_BASE(&cave_vctrl_1)                           // Layer 1 Control
777/**/AM_RANGE(0x700000, 0x700005) AM_RAM AM_BASE(&cave_vctrl_0)                           // Layer 0 Control
778   AM_RANGE(0x800000, 0x800001) AM_READ_PORT("IN0")                                 // Inputs
779   AM_RANGE(0x800002, 0x800003) AM_READ_PORT("IN1")                                 // Inputs + EEPROM
780   AM_RANGE(0x900000, 0x900001) AM_WRITE(cave_eeprom_msb_w)                           // EEPROM
781/**/AM_RANGE(0xc08000, 0xc0ffff) AM_RAM AM_BASE(&paletteram16) AM_SIZE(&cave_paletteram_size)   // Palette
782   AM_RANGE(0xd00000, 0xd7ffff) AM_ROMBANK(1)                                       // ROM
892783ADDRESS_MAP_END
893784
894static ADDRESS_MAP_START( mazinger_writemem, ADDRESS_SPACE_PROGRAM, 16 )
895   AM_RANGE(0x000000, 0x07ffff) AM_WRITE(SMH_ROM                     )   // ROM
896   AM_RANGE(0x100000, 0x10ffff) AM_WRITE(SMH_RAM                     )   // RAM
897   AM_RANGE(0x200000, 0x207fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)   // Sprites
898   AM_RANGE(0x208000, 0x20ffff) AM_WRITE(SMH_RAM) AM_BASE(&cave_spriteram16_2)
899   AM_RANGE(0x300068, 0x300069) AM_WRITE(watchdog_reset16_w            )   // Watchdog
900   AM_RANGE(0x30006e, 0x30006f) AM_WRITE(sound_cmd_w                  )   // To Sound CPU
901   AM_RANGE(0x300000, 0x30007f) AM_WRITE(SMH_RAM) AM_BASE(&cave_videoregs   )   // Video Regs
902   AM_RANGE(0x400000, 0x407fff) AM_WRITE(cave_vram_1_8x8_w) AM_BASE(&cave_vram_1   )   // Layer 1
903   AM_RANGE(0x500000, 0x507fff) AM_WRITE(cave_vram_0_8x8_w) AM_BASE(&cave_vram_0   )   // Layer 0
904   AM_RANGE(0x600000, 0x600005) AM_WRITE(SMH_RAM) AM_BASE(&cave_vctrl_1         )   // Layer 1 Control
905   AM_RANGE(0x700000, 0x700005) AM_WRITE(SMH_RAM) AM_BASE(&cave_vctrl_0         )   // Layer 0 Control
906   AM_RANGE(0x900000, 0x900001) AM_WRITE(cave_eeprom_msb_w               )   // EEPROM
907   AM_RANGE(0xc08000, 0xc0ffff) AM_WRITE(SMH_RAM) AM_BASE(&paletteram16) AM_SIZE(&cave_paletteram_size)   // Palette
908   AM_RANGE(0xd00000, 0xd7ffff) AM_WRITE(SMH_ROM                     )   // ROM
909ADDRESS_MAP_END
910785
911
912786/***************************************************************************
913787                                Metamoqester
914788***************************************************************************/
915789
916static ADDRESS_MAP_START( metmqstr_readmem, ADDRESS_SPACE_PROGRAM, 16 )
917   AM_RANGE(0x000000, 0x07ffff) AM_READ(SMH_ROM            )   // ROM
918   AM_RANGE(0x100000, 0x17ffff) AM_READ(SMH_ROM            )   // ROM
919   AM_RANGE(0x200000, 0x27ffff) AM_READ(SMH_ROM            )   // ROM
920   AM_RANGE(0x408000, 0x408fff) AM_READ(SMH_RAM            )   // Palette
921   AM_RANGE(0x600000, 0x600001) AM_READ(watchdog_reset16_r      )   // Watchdog?
922   AM_RANGE(0x880000, 0x887fff) AM_READ(SMH_RAM            )   // Layer 2
923   AM_RANGE(0x888000, 0x88ffff) AM_READ(SMH_RAM            )   //
924   AM_RANGE(0x900000, 0x907fff) AM_READ(SMH_RAM            )   // Layer 1
925   AM_RANGE(0x908000, 0x90ffff) AM_READ(SMH_RAM            )   //
926   AM_RANGE(0x980000, 0x987fff) AM_READ(SMH_RAM            )   // Layer 0
927   AM_RANGE(0x988000, 0x98ffff) AM_READ(SMH_RAM            )   //
928   AM_RANGE(0xa80000, 0xa80007) AM_READ(cave_irq_cause_r      )   // IRQ Cause
929   AM_RANGE(0xa8006c, 0xa8006d) AM_READ(soundflags_ack_r      )   // Communication
930   AM_RANGE(0xa8006e, 0xa8006f) AM_READ(soundlatch_ack_r      )   // From Sound CPU
931/**/AM_RANGE(0xb00000, 0xb00005) AM_READ(SMH_RAM            )   // Layer 0 Control
932/**/AM_RANGE(0xb80000, 0xb80005) AM_READ(SMH_RAM            )   // Layer 1 Control
933/**/AM_RANGE(0xc00000, 0xc00005) AM_READ(SMH_RAM            )   // Layer 2 Control
934   AM_RANGE(0xc80000, 0xc80001) AM_READ_PORT("IN0"            )   // Inputs
935   AM_RANGE(0xc80002, 0xc80003) AM_READ_PORT("IN1"            )   // Inputs + EEPROM
936   AM_RANGE(0xf00000, 0xf07fff) AM_READ(SMH_RAM            )   // Sprites
937   AM_RANGE(0xf08000, 0xf0ffff) AM_READ(SMH_RAM            )   // RAM
790static ADDRESS_MAP_START( metmqstr_map, ADDRESS_SPACE_PROGRAM, 16 )
791   AM_RANGE(0x000000, 0x07ffff) AM_ROM                                             // ROM
792   AM_RANGE(0x100000, 0x17ffff) AM_ROM                                             // ROM
793   AM_RANGE(0x200000, 0x27ffff) AM_ROM                                             // ROM
794   AM_RANGE(0x408000, 0x408fff) AM_RAM AM_BASE(&paletteram16) AM_SIZE(&cave_paletteram_size)   // Palette
795   AM_RANGE(0x600000, 0x600001) AM_READ(watchdog_reset16_r)   // Watchdog?
796   AM_RANGE(0x880000, 0x887fff) AM_RAM_WRITE(cave_vram_2_w) AM_BASE(&cave_vram_2)            // Layer 2
797   AM_RANGE(0x888000, 0x88ffff) AM_RAM                                             //
798   AM_RANGE(0x900000, 0x907fff) AM_RAM_WRITE(cave_vram_2_w) AM_BASE(&cave_vram_2)            // Layer 1
799   AM_RANGE(0x908000, 0x90ffff) AM_RAM                                             //
800   AM_RANGE(0x980000, 0x987fff) AM_RAM_WRITE(cave_vram_2_w) AM_BASE(&cave_vram_2)            // Layer 0
801   AM_RANGE(0x988000, 0x98ffff) AM_RAM                                             //
802   AM_RANGE(0xa80000, 0xa80007) AM_READ(cave_irq_cause_r)                              // IRQ Cause
803   AM_RANGE(0xa80068, 0xa80069) AM_WRITE(watchdog_reset16_w)                           // Watchdog?
804   AM_RANGE(0xa8006c, 0xa8006d) AM_READWRITE(soundflags_ack_r, SMH_NOP)                  // Communication
805   AM_RANGE(0xa8006e, 0xa8006f) AM_READWRITE(soundlatch_ack_r, sound_cmd_w)               // From Sound CPU
806   AM_RANGE(0xa80000, 0xa8007f) AM_WRITE(SMH_RAM) AM_BASE(&cave_videoregs)                  // Video Regs
807/**/AM_RANGE(0xb00000, 0xb00005) AM_RAM AM_BASE(&cave_vctrl_2)                           // Layer 2 Control
808/**/AM_RANGE(0xb80000, 0xb80005) AM_RAM AM_BASE(&cave_vctrl_1)                           // Layer 1 Control
809/**/AM_RANGE(0xc00000, 0xc00005) AM_RAM AM_BASE(&cave_vctrl_0)                           // Layer 0 Control
810   AM_RANGE(0xc80000, 0xc80001) AM_READ_PORT("IN0")                                 // Inputs
811   AM_RANGE(0xc80002, 0xc80003) AM_READ_PORT("IN1")                                 // Inputs + EEPROM
812   AM_RANGE(0xd00000, 0xd00001) AM_WRITE(metmqstr_eeprom_msb_w)                        // EEPROM
813   AM_RANGE(0xf00000, 0xf07fff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)         // Sprites
814   AM_RANGE(0xf08000, 0xf0ffff) AM_RAM AM_BASE(&cave_spriteram16_2)                     // RAM
938815ADDRESS_MAP_END
939816
940static ADDRESS_MAP_START( metmqstr_writemem, ADDRESS_SPACE_PROGRAM, 16 )
941   AM_RANGE(0x000000, 0x07ffff) AM_WRITE(SMH_ROM                  )   // ROM
942   AM_RANGE(0x100000, 0x17ffff) AM_WRITE(SMH_ROM                  )   // ROM
943   AM_RANGE(0x200000, 0x27ffff) AM_WRITE(SMH_ROM                  )   // ROM
944   AM_RANGE(0x408000, 0x408fff) AM_WRITE(SMH_RAM) AM_BASE(&paletteram16) AM_SIZE(&cave_paletteram_size)   // Palette
945   AM_RANGE(0x880000, 0x887fff) AM_WRITE(cave_vram_2_w) AM_BASE(&cave_vram_2   )   // Layer 2
946   AM_RANGE(0x888000, 0x88ffff) AM_WRITE(SMH_RAM                        )   //
947   AM_RANGE(0x900000, 0x907fff) AM_WRITE(cave_vram_1_w) AM_BASE(&cave_vram_1   )   // Layer 1
948   AM_RANGE(0x908000, 0x90ffff) AM_WRITE(SMH_RAM                        )   //
949   AM_RANGE(0x980000, 0x987fff) AM_WRITE(cave_vram_0_w) AM_BASE(&cave_vram_0   )   // Layer 0
950   AM_RANGE(0x988000, 0x98ffff) AM_WRITE(SMH_RAM                        )   //
951   AM_RANGE(0xa80068, 0xa80069) AM_WRITE(watchdog_reset16_w               )   // Watchdog?
952   AM_RANGE(0xa8006c, 0xa8006d) AM_WRITE(SMH_NOP                        )   // ?
953   AM_RANGE(0xa8006e, 0xa8006f) AM_WRITE(sound_cmd_w                     )   // To Sound CPU
954   AM_RANGE(0xa80000, 0xa8007f) AM_WRITE(SMH_RAM) AM_BASE(&cave_videoregs      )   // Video Regs
955   AM_RANGE(0xb00000, 0xb00005) AM_WRITE(SMH_RAM) AM_BASE(&cave_vctrl_2      )   // Layer 2 Control
956   AM_RANGE(0xb80000, 0xb80005) AM_WRITE(SMH_RAM) AM_BASE(&cave_vctrl_1      )   // Layer 1 Control
957   AM_RANGE(0xc00000, 0xc00005) AM_WRITE(SMH_RAM) AM_BASE(&cave_vctrl_0      )   // Layer 0 Control
958   AM_RANGE(0xd00000, 0xd00001) AM_WRITE(metmqstr_eeprom_msb_w               )   // EEPROM
959   AM_RANGE(0xf00000, 0xf07fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)   // Sprites
960   AM_RANGE(0xf08000, 0xf0ffff) AM_WRITE(SMH_RAM) AM_BASE(&cave_spriteram16_2)
961ADDRESS_MAP_END
962817
963
964818/***************************************************************************
965819                                Power Instinct 2
966820***************************************************************************/
r4679r4680
990844static WRITE16_HANDLER( pwrinst2_vctrl_2_w )   { vctrl_w(cave_vctrl_2, offset, data, mem_mask); }
991845static WRITE16_HANDLER( pwrinst2_vctrl_3_w )   { vctrl_w(cave_vctrl_3, offset, data, mem_mask); }
992846
993static ADDRESS_MAP_START( pwrinst2_readmem, ADDRESS_SPACE_PROGRAM, 16 )
994   AM_RANGE(0x000000, 0x1fffff) AM_READ(SMH_ROM               )   // ROM
995   AM_RANGE(0x400000, 0x40ffff) AM_READ(SMH_RAM               )   // RAM
996   AM_RANGE(0x500000, 0x500001) AM_READ_PORT("IN0"               )   // Inputs
997   AM_RANGE(0x500002, 0x500003) AM_READ_PORT("IN1"               )   //
998   AM_RANGE(0x600000, 0x6fffff) AM_READ(SMH_ROM) AM_REGION("user1", 0)   // extra data ROM space
999   AM_RANGE(0x800000, 0x807fff) AM_READ(SMH_RAM               )   // Layer 2
1000   AM_RANGE(0x880000, 0x887fff) AM_READ(SMH_RAM               )   // Layer 0
1001   AM_RANGE(0x900000, 0x907fff) AM_READ(SMH_RAM               )   // Layer 1
1002   AM_RANGE(0x980000, 0x987fff) AM_READ(SMH_RAM               )   // Layer 3
1003   AM_RANGE(0xa00000, 0xa07fff) AM_READ(SMH_RAM               )   // Sprites
1004   AM_RANGE(0xa08000, 0xa0ffff) AM_READ(SMH_RAM               )   // Sprites?
1005   AM_RANGE(0xa10000, 0xa1ffff) AM_READ(SMH_RAM               )   // Sprites?
1006/**/AM_RANGE(0xb00000, 0xb00005) AM_READ(SMH_RAM               )   // Layer 2 Control
1007/**/AM_RANGE(0xb80000, 0xb80005) AM_READ(SMH_RAM               )   // Layer 0 Control
1008/**/AM_RANGE(0xc00000, 0xc00005) AM_READ(SMH_RAM               )   // Layer 1 Control
1009/**/AM_RANGE(0xc80000, 0xc80005) AM_READ(SMH_RAM               )   // Layer 3 Control
1010   AM_RANGE(0xa80000, 0xa8007f) AM_READ(donpachi_videoregs_r      )   // Video Regs
1011   AM_RANGE(0xd80000, 0xd80001) AM_READ(soundlatch_ack_r         )   // ? From Sound CPU
1012   AM_RANGE(0xe80000, 0xe80001) AM_READ(pwrinst2_eeprom_r         )   // EEPROM
1013   AM_RANGE(0xf00000, 0xf04fff) AM_READ(SMH_RAM               )   // Palette
847static ADDRESS_MAP_START( pwrinst2_map, ADDRESS_SPACE_PROGRAM, 16 )
848   AM_RANGE(0x000000, 0x1fffff) AM_ROM                                                   // ROM
849   AM_RANGE(0x400000, 0x40ffff) AM_RAM                                                   // RAM
850   AM_RANGE(0x500000, 0x500001) AM_READ_PORT("IN0")                                       // Inputs
851   AM_RANGE(0x500002, 0x500003) AM_READ_PORT("IN1")                                       //
852   AM_RANGE(0x600000, 0x6fffff) AM_READ(SMH_ROM) AM_REGION("user1", 0)                           // extra data ROM space
853   AM_RANGE(0x700000, 0x700001) AM_WRITE(cave_eeprom_msb_w)                                 // EEPROM
854   AM_RANGE(0x800000, 0x807fff) AM_RAM_WRITE(cave_vram_2_w) AM_BASE(&cave_vram_2)                  // Layer 2
855   AM_RANGE(0x880000, 0x887fff) AM_RAM_WRITE(cave_vram_0_w) AM_BASE(&cave_vram_0)                  // Layer 0
856   AM_RANGE(0x900000, 0x907fff) AM_RAM_WRITE(cave_vram_1_w) AM_BASE(&cave_vram_1)                  // Layer 1
857   AM_RANGE(0x980000, 0x987fff) AM_RAM_WRITE(cave_vram_3_8x8_w) AM_BASE(&cave_vram_3)               // Layer 3
858   AM_RANGE(0xa00000, 0xa07fff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)               // Sprites
859   AM_RANGE(0xa08000, 0xa0ffff) AM_RAM AM_BASE(&cave_spriteram16_2)                           // Sprites?
860   AM_RANGE(0xa10000, 0xa1ffff) AM_RAM                                                   // Sprites?
861   AM_RANGE(0xa80000, 0xa8007f) AM_READWRITE(donpachi_videoregs_r, SMH_RAM) AM_BASE(&cave_videoregs)   // Video Regs
862/**/AM_RANGE(0xb00000, 0xb00005) AM_RAM_WRITE(pwrinst2_vctrl_2_w) AM_BASE(&cave_vctrl_2)            // Layer 2 Control
863/**/AM_RANGE(0xb80000, 0xb80005) AM_RAM_WRITE(pwrinst2_vctrl_0_w) AM_BASE(&cave_vctrl_0)            // Layer 0 Control
864/**/AM_RANGE(0xc00000, 0xc00005) AM_RAM_WRITE(pwrinst2_vctrl_1_w) AM_BASE(&cave_vctrl_1)            // Layer 1 Control
865/**/AM_RANGE(0xc80000, 0xc80005) AM_RAM_WRITE(pwrinst2_vctrl_3_w) AM_BASE(&cave_vctrl_3)            // Layer 3 Control
866   AM_RANGE(0xd80000, 0xd80001) AM_READ(soundlatch_ack_r)                                    // ? From Sound CPU
867   AM_RANGE(0xe00000, 0xe00001) AM_WRITE(sound_cmd_w)                                       // To Sound CPU
868   AM_RANGE(0xe80000, 0xe80001) AM_READ(pwrinst2_eeprom_r)                                    // EEPROM
869   AM_RANGE(0xf00000, 0xf04fff) AM_RAM AM_BASE(&paletteram16) AM_SIZE(&cave_paletteram_size)         // Palette
1014870ADDRESS_MAP_END
1015871
1016static ADDRESS_MAP_START( pwrinst2_writemem, ADDRESS_SPACE_PROGRAM, 16 )
1017   AM_RANGE(0x000000, 0x1fffff) AM_WRITE(SMH_ROM                        )   // ROM
1018   AM_RANGE(0x400000, 0x40ffff) AM_WRITE(SMH_RAM                        )   // RAM
1019   AM_RANGE(0x700000, 0x700001) AM_WRITE(cave_eeprom_msb_w                  )   // EEPROM
1020   AM_RANGE(0x800000, 0x807fff) AM_WRITE(cave_vram_2_w) AM_BASE(&cave_vram_2   )   // Layer 2
1021   AM_RANGE(0x880000, 0x887fff) AM_WRITE(cave_vram_0_w) AM_BASE(&cave_vram_0   )   // Layer 0
1022   AM_RANGE(0x900000, 0x907fff) AM_WRITE(cave_vram_1_w) AM_BASE(&cave_vram_1   )   // Layer 1
1023   AM_RANGE(0x980000, 0x987fff) AM_WRITE(cave_vram_3_8x8_w) AM_BASE(&cave_vram_3)   // Layer 3
1024   AM_RANGE(0xa00000, 0xa07fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size   )   // Sprites
1025   AM_RANGE(0xa08000, 0xa0ffff) AM_WRITE(SMH_RAM) AM_BASE(&cave_spriteram16_2)
1026   AM_RANGE(0xa10000, 0xa1ffff) AM_WRITE(SMH_RAM                        )   // Sprites?
1027   AM_RANGE(0xa80000, 0xa8007f) AM_WRITE(SMH_RAM) AM_BASE(&cave_videoregs      )   // Video Regs
1028   AM_RANGE(0xb00000, 0xb00005) AM_WRITE(pwrinst2_vctrl_2_w) AM_BASE(&cave_vctrl_2         )   // Layer 2 Control
1029   AM_RANGE(0xb80000, 0xb80005) AM_WRITE(pwrinst2_vctrl_0_w) AM_BASE(&cave_vctrl_0         )   // Layer 0 Control
1030   AM_RANGE(0xc00000, 0xc00005) AM_WRITE(pwrinst2_vctrl_1_w) AM_BASE(&cave_vctrl_1         )   // Layer 1 Control
1031   AM_RANGE(0xc80000, 0xc80005) AM_WRITE(pwrinst2_vctrl_3_w) AM_BASE(&cave_vctrl_3         )   // Layer 3 Control
1032   AM_RANGE(0xe00000, 0xe00001) AM_WRITE(sound_cmd_w                     )   // To Sound CPU
1033   AM_RANGE(0xf00000, 0xf04fff) AM_WRITE(SMH_RAM) AM_BASE(&paletteram16) AM_SIZE(&cave_paletteram_size)   // Palette
1034ADDRESS_MAP_END
1035872
1036
1037873/***************************************************************************
1038874                                Sailor Moon
1039875***************************************************************************/
r4679r4680
1058894   return irq_cause;
1059895}
1060896
1061static ADDRESS_MAP_START( sailormn_readmem, ADDRESS_SPACE_PROGRAM, 16 )
1062   AM_RANGE(0x000000, 0x07ffff) AM_READ(SMH_ROM            )   // ROM
1063   AM_RANGE(0x100000, 0x10ffff) AM_READ(SMH_RAM            )   // RAM
1064   AM_RANGE(0x110000, 0x110001) AM_READ(SMH_RAM            )   // (agallet)
1065   AM_RANGE(0x200000, 0x3fffff) AM_READ(SMH_ROM            )   // ROM
1066   AM_RANGE(0x400000, 0x407fff) AM_READ(SMH_RAM            )   // (agallet)
1067   AM_RANGE(0x408000, 0x40bfff) AM_READ(SMH_RAM            )   // Palette
1068   AM_RANGE(0x40c000, 0x40ffff) AM_READ(SMH_RAM            )   // (agallet)
1069   AM_RANGE(0x410000, 0x410001) AM_READ(SMH_RAM            )   // (agallet)
1070   AM_RANGE(0x500000, 0x507fff) AM_READ(SMH_RAM            )   // Sprites
1071   AM_RANGE(0x508000, 0x50ffff) AM_READ(SMH_RAM            )   // Sprites?
1072   AM_RANGE(0x510000, 0x510001) AM_READ(SMH_RAM            )   // (agallet)
1073   AM_RANGE(0x600000, 0x600001) AM_READ(sailormn_input0_r      )   // Inputs + Watchdog!
1074   AM_RANGE(0x600002, 0x600003) AM_READ_PORT("IN1"            )   // Inputs + EEPROM
1075   AM_RANGE(0x800000, 0x887fff) AM_READ(SMH_RAM            )   // Layer 0
1076   AM_RANGE(0x880000, 0x887fff) AM_READ(SMH_RAM            )   // Layer 1
1077   AM_RANGE(0x900000, 0x907fff) AM_READ(SMH_RAM            )   // Layer 2
1078   AM_RANGE(0x908000, 0x908001) AM_READ(SMH_RAM            )   // (agallet)
1079/**/AM_RANGE(0xa00000, 0xa00005) AM_READ(SMH_RAM            )   // Layer 0 Control
1080/**/AM_RANGE(0xa80000, 0xa80005) AM_READ(SMH_RAM            )   // Layer 1 Control
1081/**/AM_RANGE(0xb00000, 0xb00005) AM_READ(SMH_RAM            )   // Layer 2 Control
1082   AM_RANGE(0xb80000, 0xb80007) AM_READ(cave_irq_cause_r      )   // IRQ Cause (bit 2 tested!)
1083   AM_RANGE(0xb8006c, 0xb8006d) AM_READ(soundflags_ack_r      )   // Communication
1084   AM_RANGE(0xb8006e, 0xb8006f) AM_READ(soundlatch_ack_r      )   // From Sound CPU
897static ADDRESS_MAP_START( sailormn_map, ADDRESS_SPACE_PROGRAM, 16 )
898   AM_RANGE(0x000000, 0x07ffff) AM_ROM                                                   // ROM
899   AM_RANGE(0x100000, 0x10ffff) AM_RAM                                                   // RAM
900   AM_RANGE(0x110000, 0x110001) AM_RAM                                                   // (agallet)
901   AM_RANGE(0x200000, 0x3fffff) AM_ROM                                                   // ROM
902   AM_RANGE(0x400000, 0x407fff) AM_RAM                                                   // (agallet)
903   AM_RANGE(0x408000, 0x40bfff) AM_RAM AM_BASE(&paletteram16) AM_SIZE(&cave_paletteram_size)         // Palette
904   AM_RANGE(0x40c000, 0x40ffff) AM_RAM                                                   // (agallet)
905   AM_RANGE(0x410000, 0x410001) AM_RAM                                                   // (agallet)
906   AM_RANGE(0x500000, 0x507fff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)               // Sprites
907   AM_RANGE(0x508000, 0x50ffff) AM_RAM AM_BASE(&cave_spriteram16_2)                           // Sprites?
908   AM_RANGE(0x510000, 0x510001) AM_RAM                                                   // (agallet)
909   AM_RANGE(0x600000, 0x600001) AM_READ(sailormn_input0_r)                                    // Inputs + Watchdog!
910   AM_RANGE(0x600002, 0x600003) AM_READ_PORT("IN1")                                       // Inputs + EEPROM
911   AM_RANGE(0x700000, 0x700001) AM_WRITE(sailormn_eeprom_msb_w)                              // EEPROM
912   AM_RANGE(0x800000, 0x887fff) AM_RAM_WRITE(cave_vram_0_w) AM_BASE(&cave_vram_0)                  // Layer 0
913   AM_RANGE(0x880000, 0x887fff) AM_RAM_WRITE(cave_vram_1_w) AM_BASE(&cave_vram_1)                  // Layer 1
914   AM_RANGE(0x900000, 0x907fff) AM_RAM_WRITE(cave_vram_2_w) AM_BASE(&cave_vram_2)                  // Layer 2
915   AM_RANGE(0x908000, 0x908001) AM_RAM                                                   // (agallet)
916/**/AM_RANGE(0xa00000, 0xa00005) AM_RAM AM_BASE(&cave_vctrl_0)                                 // Layer 0 Control
917/**/AM_RANGE(0xa80000, 0xa80005) AM_RAM AM_BASE(&cave_vctrl_1)                                 // Layer 1 Control
918/**/AM_RANGE(0xb00000, 0xb00005) AM_RAM AM_BASE(&cave_vctrl_2)                                 // Layer 2 Control
919   AM_RANGE(0xb80000, 0xb80007) AM_READ(cave_irq_cause_r)                                    // IRQ Cause (bit 2 tested!)
920   AM_RANGE(0xb8006c, 0xb8006d) AM_READ(soundflags_ack_r)                                    // Communication
921   AM_RANGE(0xb8006e, 0xb8006f) AM_READ(soundlatch_ack_r)                                    // From Sound CPU
922   AM_RANGE(0xb8006e, 0xb8006f) AM_WRITE(sound_cmd_w)                                       // To Sound CPU
923   AM_RANGE(0xb80000, 0xb8007f) AM_WRITE(SMH_RAM) AM_BASE(&cave_videoregs)                        // Video Regs
1085924ADDRESS_MAP_END
1086925
1087static ADDRESS_MAP_START( sailormn_writemem, ADDRESS_SPACE_PROGRAM, 16 )
1088   AM_RANGE(0x000000, 0x07ffff) AM_WRITE(SMH_ROM                        )   // ROM
1089   AM_RANGE(0x100000, 0x10ffff) AM_WRITE(SMH_RAM                        )   // RAM
1090   AM_RANGE(0x110000, 0x110001) AM_WRITE(SMH_RAM                        )   // (agallet)
1091   AM_RANGE(0x200000, 0x3fffff) AM_WRITE(SMH_ROM                        )   // ROM
1092   AM_RANGE(0x400000, 0x407fff) AM_WRITE(SMH_RAM                        )   // (agallet)
1093   AM_RANGE(0x408000, 0x40bfff) AM_WRITE(SMH_RAM) AM_BASE(&paletteram16) AM_SIZE(&cave_paletteram_size)   // Palette
1094   AM_RANGE(0x40c000, 0x40ffff) AM_WRITE(SMH_RAM                        )   // (agallet)
1095   AM_RANGE(0x410000, 0x410001) AM_WRITE(SMH_RAM                        )   // (agallet)
1096   AM_RANGE(0x500000, 0x507fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)   // Sprites
1097   AM_RANGE(0x508000, 0x50ffff) AM_WRITE(SMH_RAM) AM_BASE(&cave_spriteram16_2)
1098   AM_RANGE(0x510000, 0x510001) AM_WRITE(SMH_RAM                        )   // (agallet)
1099   AM_RANGE(0x700000, 0x700001) AM_WRITE(sailormn_eeprom_msb_w               )   // EEPROM
1100   AM_RANGE(0x800000, 0x807fff) AM_WRITE(cave_vram_0_w) AM_BASE(&cave_vram_0   )   // Layer 0
1101   AM_RANGE(0x880000, 0x887fff) AM_WRITE(cave_vram_1_w) AM_BASE(&cave_vram_1   )   // Layer 1
1102   AM_RANGE(0x900000, 0x907fff) AM_WRITE(cave_vram_2_w) AM_BASE(&cave_vram_2   )   // Layer 2
1103   AM_RANGE(0x908000, 0x908001) AM_WRITE(SMH_RAM                        )   // (agallet)
1104   AM_RANGE(0xa00000, 0xa00005) AM_WRITE(SMH_RAM) AM_BASE(&cave_vctrl_0      )   // Layer 0 Control
1105   AM_RANGE(0xa80000, 0xa80005) AM_WRITE(SMH_RAM) AM_BASE(&cave_vctrl_1      )   // Layer 1 Control
1106   AM_RANGE(0xb00000, 0xb00005) AM_WRITE(SMH_RAM) AM_BASE(&cave_vctrl_2      )   // Layer 2 Control
1107   AM_RANGE(0xb8006e, 0xb8006f) AM_WRITE(sound_cmd_w                     )   // To Sound CPU
1108   AM_RANGE(0xb80000, 0xb8007f) AM_WRITE(SMH_RAM) AM_BASE(&cave_videoregs      )   // Video Regs
1109ADDRESS_MAP_END
1110926
1111
1112927/***************************************************************************
1113928                                    Uo Poko
1114929***************************************************************************/
1115930
1116static ADDRESS_MAP_START( uopoko_readmem, ADDRESS_SPACE_PROGRAM, 16 )
1117   AM_RANGE(0x000000, 0x0fffff) AM_READ(SMH_ROM            )   // ROM
1118   AM_RANGE(0x100000, 0x10ffff) AM_READ(SMH_RAM            )   // RAM
1119   AM_RANGE(0x300000, 0x300003) AM_DEVREAD8("ymz", ymz280b_r, 0x00ff)   // YMZ280
1120/**/AM_RANGE(0x400000, 0x407fff) AM_READ(SMH_RAM            )   // Sprites
1121/**/AM_RANGE(0x408000, 0x40ffff) AM_READ(SMH_RAM            )   // Sprites?
1122/**/AM_RANGE(0x500000, 0x507fff) AM_READ(SMH_RAM            )   // Layer 0
1123   AM_RANGE(0x600000, 0x600007) AM_READ(cave_irq_cause_r      )   // IRQ Cause
1124/**/AM_RANGE(0x700000, 0x700005) AM_READ(SMH_RAM            )   // Layer 0 Control
1125/**/AM_RANGE(0x800000, 0x80ffff) AM_READ(SMH_RAM            )   // Palette
1126   AM_RANGE(0x900000, 0x900001) AM_READ_PORT("IN0"            )   // Inputs
1127   AM_RANGE(0x900002, 0x900003) AM_READ_PORT("IN1"            )   // Inputs + EEPROM
931static ADDRESS_MAP_START( uopoko_map, ADDRESS_SPACE_PROGRAM, 16 )
932   AM_RANGE(0x000000, 0x0fffff) AM_ROM                                             // ROM
933   AM_RANGE(0x100000, 0x10ffff) AM_RAM                                             // RAM
934   AM_RANGE(0x300000, 0x300003) AM_DEVREADWRITE8("ymz", ymz280b_r, ymz280b_w, 0x00ff)         // YMZ280
935/**/AM_RANGE(0x400000, 0x407fff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)         // Sprites
936/**/AM_RANGE(0x408000, 0x40ffff) AM_RAM AM_BASE(&cave_spriteram16_2)                     // Sprites?
937/**/AM_RANGE(0x500000, 0x507fff) AM_RAM_WRITE(cave_vram_0_w) AM_BASE(&cave_vram_0)            // Layer 0
938   AM_RANGE(0x600000, 0x600007) AM_READ(cave_irq_cause_r)                              // IRQ Cause
939   AM_RANGE(0x600000, 0x60007f) AM_WRITE(SMH_RAM) AM_BASE(&cave_videoregs)                  // Video Regs
940/**/AM_RANGE(0x700000, 0x700005) AM_RAM AM_BASE(&cave_vctrl_0)                           // Layer 0 Control
941/**/AM_RANGE(0x800000, 0x80ffff) AM_RAM AM_BASE(&paletteram16) AM_SIZE(&cave_paletteram_size)   // Palette
942   AM_RANGE(0x900000, 0x900001) AM_READ_PORT("IN0")                                 // Inputs
943   AM_RANGE(0x900002, 0x900003) AM_READ_PORT("IN1")                                 // Inputs + EEPROM
944   AM_RANGE(0xa00000, 0xa00001) AM_WRITE(cave_eeprom_msb_w)                           // EEPROM
1128945ADDRESS_MAP_END
1129946
1130static ADDRESS_MAP_START( uopoko_writemem, ADDRESS_SPACE_PROGRAM, 16 )
1131   AM_RANGE(0x000000, 0x0fffff) AM_WRITE(SMH_ROM                  )   // ROM
1132   AM_RANGE(0x100000, 0x10ffff) AM_WRITE(SMH_RAM                  )   // RAM
1133   AM_RANGE(0x300000, 0x300003) AM_DEVWRITE8("ymz", ymz280b_w, 0x00ff)   // YMZ280
1134   AM_RANGE(0x400000, 0x407fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)   // Sprites
1135   AM_RANGE(0x408000, 0x40ffff) AM_WRITE(SMH_RAM) AM_BASE(&cave_spriteram16_2   )
1136   AM_RANGE(0x500000, 0x507fff) AM_WRITE(cave_vram_0_w) AM_BASE(&cave_vram_0   )   // Layer 0
1137   AM_RANGE(0x600000, 0x60007f) AM_WRITE(SMH_RAM) AM_BASE(&cave_videoregs      )   // Video Regs
1138   AM_RANGE(0x700000, 0x700005) AM_WRITE(SMH_RAM) AM_BASE(&cave_vctrl_0      )   // Layer 0 Control
1139   AM_RANGE(0x800000, 0x80ffff) AM_WRITE(SMH_RAM) AM_BASE(&paletteram16) AM_SIZE(&cave_paletteram_size)   // Palette
1140   AM_RANGE(0xa00000, 0xa00001) AM_WRITE(cave_eeprom_msb_w            )   // EEPROM
1141ADDRESS_MAP_END
1142947
1143948
1144
1145949/***************************************************************************
1146950
1147951
r4679r4680
1172976   memcpy(RAM + 0x20000 * 1, RAM + 0x40000 + 0x20000 * bank2, 0x20000);
1173977}
1174978
1175static ADDRESS_MAP_START( hotdogst_sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
1176   AM_RANGE(0x0000, 0x3fff) AM_READ(SMH_ROM   )   // ROM
1177   AM_RANGE(0x4000, 0x7fff) AM_READ(SMH_BANK2   )   // ROM (Banked)
1178   AM_RANGE(0xe000, 0xffff) AM_READ(SMH_RAM   )   // RAM
979static ADDRESS_MAP_START( hotdogst_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
980   AM_RANGE(0x0000, 0x3fff) AM_ROM                        // ROM
981   AM_RANGE(0x4000, 0x7fff) AM_ROMBANK(2)                  // ROM (Banked)
982   AM_RANGE(0xe000, 0xffff) AM_RAM                        // RAM
1179983ADDRESS_MAP_END
1180984
1181static ADDRESS_MAP_START( hotdogst_sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
1182   AM_RANGE(0x0000, 0x3fff) AM_WRITE(SMH_ROM   )   // ROM
1183   AM_RANGE(0x4000, 0x7fff) AM_WRITE(SMH_ROM   )   // ROM (Banked)
1184   AM_RANGE(0xe000, 0xffff) AM_WRITE(SMH_RAM   )   // RAM
1185ADDRESS_MAP_END
1186
1187static ADDRESS_MAP_START( hotdogst_sound_readport, ADDRESS_SPACE_IO, 8 )
985static ADDRESS_MAP_START( hotdogst_sound_portmap, ADDRESS_SPACE_IO, 8 )
1188986   ADDRESS_MAP_GLOBAL_MASK(0xff)
1189   AM_RANGE(0x30, 0x30) AM_READ(soundlatch_lo_r         )   // From Main CPU
1190   AM_RANGE(0x40, 0x40) AM_READ(soundlatch_hi_r         )   //
1191   AM_RANGE(0x50, 0x51) AM_DEVREAD("ym", ym2203_r   )   //
1192   AM_RANGE(0x60, 0x60) AM_DEVREAD("oki", okim6295_r)   // M6295
987   AM_RANGE(0x00, 0x00) AM_WRITE(hotdogst_rombank_w)               // ROM bank
988   AM_RANGE(0x30, 0x30) AM_READ(soundlatch_lo_r)                  // From Main CPU
989   AM_RANGE(0x40, 0x40) AM_READ(soundlatch_hi_r)                  //
990   AM_RANGE(0x50, 0x51) AM_DEVREADWRITE("ym", ym2203_r, ym2203_w)      //
991   AM_RANGE(0x60, 0x60) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w)   // M6295
992   AM_RANGE(0x70, 0x70) AM_WRITE(hotdogst_okibank_w)               // Samples bank
1193993ADDRESS_MAP_END
1194994
1195static ADDRESS_MAP_START( hotdogst_sound_writeport, ADDRESS_SPACE_IO, 8 )
1196   ADDRESS_MAP_GLOBAL_MASK(0xff)
1197   AM_RANGE(0x00, 0x00) AM_WRITE(hotdogst_rombank_w      )   // ROM bank
1198   AM_RANGE(0x50, 0x51) AM_DEVWRITE("ym", ym2203_w   )   //
1199   AM_RANGE(0x60, 0x60) AM_DEVWRITE("oki", okim6295_w)   // M6295
1200   AM_RANGE(0x70, 0x70) AM_WRITE(hotdogst_okibank_w      )   // Samples bank
1201ADDRESS_MAP_END
1202995
1203
1204996/***************************************************************************
1205997                                Mazinger Z
1206998***************************************************************************/
r4679r4680
12141006   memory_set_bankptr(space->machine, 2, &RAM[ 0x4000 * bank ]);
12151007}
12161008
1217static ADDRESS_MAP_START( mazinger_sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
1218   AM_RANGE(0x0000, 0x3fff) AM_READ(SMH_ROM   )   // ROM
1219   AM_RANGE(0x4000, 0x7fff) AM_READ(SMH_BANK2   )   // ROM (Banked)
1220   AM_RANGE(0xc000, 0xc7ff) AM_READ(SMH_RAM   )   // RAM
1221   AM_RANGE(0xf800, 0xffff) AM_READ(SMH_RAM   )   // RAM
1009static ADDRESS_MAP_START( mazinger_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
1010   AM_RANGE(0x0000, 0x3fff) AM_ROM                        // ROM
1011   AM_RANGE(0x4000, 0x7fff) AM_ROMBANK(2)                  // ROM (Banked)
1012   AM_RANGE(0xc000, 0xc7ff) AM_RAM                        // RAM
1013   AM_RANGE(0xf800, 0xffff) AM_RAM                        // RAM
12221014ADDRESS_MAP_END
12231015
1224static ADDRESS_MAP_START( mazinger_sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
1225   AM_RANGE(0x0000, 0x3fff) AM_WRITE(SMH_ROM   )   // ROM
1226   AM_RANGE(0x4000, 0x7fff) AM_WRITE(SMH_ROM   )   // ROM (Banked)
1227   AM_RANGE(0xc000, 0xc7ff) AM_WRITE(SMH_RAM   )   // RAM
1228   AM_RANGE(0xf800, 0xffff) AM_WRITE(SMH_RAM   )   // RAM
1229ADDRESS_MAP_END
1230
1231static ADDRESS_MAP_START( mazinger_sound_readport, ADDRESS_SPACE_IO, 8 )
1016static ADDRESS_MAP_START( mazinger_sound_portmap, ADDRESS_SPACE_IO, 8 )
12321017   ADDRESS_MAP_GLOBAL_MASK(0xff)
1233   AM_RANGE(0x30, 0x30) AM_READ(soundlatch_lo_r         )   // From Main CPU
1234   AM_RANGE(0x52, 0x53) AM_DEVREAD("ym", ym2203_r   )   // YM2203
1018   AM_RANGE(0x00, 0x00) AM_WRITE(mazinger_rombank_w)         // ROM bank
1019   AM_RANGE(0x10, 0x10) AM_WRITE(soundlatch_ack_w)            // To Main CPU
1020   AM_RANGE(0x30, 0x30) AM_READ(soundlatch_lo_r)            // From Main CPU
1021   AM_RANGE(0x50, 0x51) AM_DEVWRITE("ym", ym2203_w)         // YM2203
1022   AM_RANGE(0x52, 0x53) AM_DEVREAD("ym", ym2203_r)            // YM2203
1023   AM_RANGE(0x70, 0x70) AM_DEVWRITE("oki", okim6295_w)         // M6295
1024   AM_RANGE(0x74, 0x74) AM_WRITE(hotdogst_okibank_w)         // Samples bank
12351025ADDRESS_MAP_END
12361026
1237static ADDRESS_MAP_START( mazinger_sound_writeport, ADDRESS_SPACE_IO, 8 )
1238   ADDRESS_MAP_GLOBAL_MASK(0xff)
1239   AM_RANGE(0x00, 0x00) AM_WRITE(mazinger_rombank_w      )   // ROM bank
1240   AM_RANGE(0x10, 0x10) AM_WRITE(soundlatch_ack_w         )   // To Main CPU
1241   AM_RANGE(0x50, 0x51) AM_DEVWRITE("ym", ym2203_w   )   // YM2203
1242   AM_RANGE(0x70, 0x70) AM_DEVWRITE("oki", okim6295_w)   // M6295
1243   AM_RANGE(0x74, 0x74) AM_WRITE(hotdogst_okibank_w      )   // Samples bank
1244ADDRESS_MAP_END
12451027
1246
12471028/***************************************************************************
12481029                                Metamoqester
12491030***************************************************************************/
r4679r4680
12751056   memcpy(ROM + 0x20000 * 1, ROM + 0x40000 + 0x20000 * bank2, 0x20000);
12761057}
12771058
1278static ADDRESS_MAP_START( metmqstr_sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
1279   AM_RANGE(0x0000, 0x3fff) AM_READ(SMH_ROM   )   // ROM
1280   AM_RANGE(0x4000, 0x7fff) AM_READ(SMH_BANK1   )   // ROM (Banked)
1281   AM_RANGE(0xe000, 0xffff) AM_READ(SMH_RAM   )   // RAM
1059static ADDRESS_MAP_START( metmqstr_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
1060   AM_RANGE(0x0000, 0x3fff) AM_ROM                        // ROM
1061   AM_RANGE(0x4000, 0x7fff) AM_ROMBANK(1)                  // ROM (Banked)
1062   AM_RANGE(0xe000, 0xffff) AM_RAM                        // RAM
12821063ADDRESS_MAP_END
12831064
1284static ADDRESS_MAP_START( metmqstr_sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
1285   AM_RANGE(0x0000, 0x3fff) AM_WRITE(SMH_ROM   )   // ROM
1286   AM_RANGE(0x4000, 0x7fff) AM_WRITE(SMH_ROM   )   // ROM (Banked)
1287   AM_RANGE(0xe000, 0xffff) AM_WRITE(SMH_RAM   )   // RAM
1288ADDRESS_MAP_END
1289
1290static ADDRESS_MAP_START( metmqstr_sound_readport, ADDRESS_SPACE_IO, 8 )
1065static ADDRESS_MAP_START( metmqstr_sound_portmap, ADDRESS_SPACE_IO, 8 )
12911066   ADDRESS_MAP_GLOBAL_MASK(0xff)
1292   AM_RANGE(0x20, 0x20) AM_READ(soundflags_r            )   // Communication
1293   AM_RANGE(0x30, 0x30) AM_READ(soundlatch_lo_r         )   // From Main CPU
1294   AM_RANGE(0x40, 0x40) AM_READ(soundlatch_hi_r         )   //
1295   AM_RANGE(0x50, 0x51) AM_DEVREAD("ym", ym2151_r   )   // YM2151
1067   AM_RANGE(0x00, 0x00) AM_WRITE(metmqstr_rombank_w)            // Rom Bank
1068   AM_RANGE(0x20, 0x20) AM_READ(soundflags_r)                  // Communication
1069   AM_RANGE(0x30, 0x30) AM_READ(soundlatch_lo_r)               // From Main CPU
1070   AM_RANGE(0x40, 0x40) AM_READ(soundlatch_hi_r)               //
1071   AM_RANGE(0x50, 0x51) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)   // YM2151
1072   AM_RANGE(0x60, 0x60) AM_DEVWRITE("oki1", okim6295_w)         // M6295 #0
1073   AM_RANGE(0x70, 0x70) AM_WRITE(metmqstr_okibank0_w)            // Samples Bank #0
1074   AM_RANGE(0x80, 0x80) AM_DEVWRITE("oki2", okim6295_w)         // M6295 #1
1075   AM_RANGE(0x90, 0x90) AM_WRITE(metmqstr_okibank1_w)            // Samples Bank #1
12961076ADDRESS_MAP_END
12971077
1298static ADDRESS_MAP_START( metmqstr_sound_writeport, ADDRESS_SPACE_IO, 8 )
1299   ADDRESS_MAP_GLOBAL_MASK(0xff)
1300   AM_RANGE(0x00, 0x00) AM_WRITE(metmqstr_rombank_w      )   // Rom Bank
1301   AM_RANGE(0x50, 0x51) AM_DEVWRITE("ym", ym2151_w   )   // YM2151
1302   AM_RANGE(0x60, 0x60) AM_DEVWRITE("oki1", okim6295_w)   // M6295 #0
1303   AM_RANGE(0x70, 0x70) AM_WRITE(metmqstr_okibank0_w      )   // Samples Bank #0
1304   AM_RANGE(0x80, 0x80) AM_DEVWRITE("oki2", okim6295_w)   // M6295 #1
1305   AM_RANGE(0x90, 0x90) AM_WRITE(metmqstr_okibank1_w      )   // Samples Bank #1
1306ADDRESS_MAP_END
13071078
1308
13091079/***************************************************************************
13101080                                Power Instinct 2
13111081***************************************************************************/
r4679r4680
13191089   memory_set_bankptr(space->machine, 1, &ROM[ 0x4000 * bank ]);
13201090}
13211091
1322static ADDRESS_MAP_START( pwrinst2_sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
1323   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM   )   // ROM
1324   AM_RANGE(0x8000, 0xbfff) AM_READ(SMH_BANK1   )   // ROM (Banked)
1325   AM_RANGE(0xe000, 0xffff) AM_READ(SMH_RAM   )   // RAM
1092static ADDRESS_MAP_START( pwrinst2_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
1093   AM_RANGE(0x0000, 0x7fff) AM_ROM                        // ROM
1094   AM_RANGE(0x8000, 0xbfff) AM_ROMBANK(1)                  // ROM (Banked)
1095   AM_RANGE(0xe000, 0xffff) AM_RAM                        // RAM
13261096ADDRESS_MAP_END
13271097
1328static ADDRESS_MAP_START( pwrinst2_sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
1329   AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM   )   // ROM
1330   AM_RANGE(0x8000, 0xbfff) AM_WRITE(SMH_ROM   )   // ROM (Banked)
1331   AM_RANGE(0xe000, 0xffff) AM_WRITE(SMH_RAM   )   // RAM
1332ADDRESS_MAP_END
1333
1334static ADDRESS_MAP_START( pwrinst2_sound_readport, ADDRESS_SPACE_IO, 8 )
1098static ADDRESS_MAP_START( pwrinst2_sound_portmap, ADDRESS_SPACE_IO, 8 )
13351099   ADDRESS_MAP_GLOBAL_MASK(0xff)
1336   AM_RANGE(0x00, 0x00) AM_DEVREAD("oki1", okim6295_r      )   // M6295
1337   AM_RANGE(0x08, 0x08) AM_DEVREAD("oki2", okim6295_r      )   //
1338   AM_RANGE(0x40, 0x41) AM_DEVREAD("ym", ym2203_r   )   //
1339   AM_RANGE(0x60, 0x60) AM_READ(soundlatch_hi_r         )   // From Main CPU
1340   AM_RANGE(0x70, 0x70) AM_READ(soundlatch_lo_r         )   //
1100   AM_RANGE(0x00, 0x00) AM_DEVREADWRITE("oki1", okim6295_r, okim6295_w)   // M6295
1101   AM_RANGE(0x08, 0x08) AM_DEVREADWRITE("oki2", okim6295_r, okim6295_w)   //
1102   AM_RANGE(0x10, 0x17) AM_WRITE(NMK112_okibank_w)                     // Samples bank
1103   AM_RANGE(0x40, 0x41) AM_DEVREADWRITE("ym", ym2203_r, ym2203_w)         //
1104   AM_RANGE(0x50, 0x50) AM_WRITE(soundlatch_ack_w)                     // To Main CPU
1105//  AM_RANGE(0x51, 0x51) AM_WRITE(SMH_NOP)                                  // ?? volume
1106   AM_RANGE(0x80, 0x80) AM_WRITE(pwrinst2_rombank_w)                  // ROM bank
1107   AM_RANGE(0x60, 0x60) AM_READ(soundlatch_hi_r)                     // From Main CPU
1108   AM_RANGE(0x70, 0x70) AM_READ(soundlatch_lo_r)                     //
13411109ADDRESS_MAP_END
13421110
1343static ADDRESS_MAP_START( pwrinst2_sound_writeport, ADDRESS_SPACE_IO, 8 )
1344   ADDRESS_MAP_GLOBAL_MASK(0xff)
1345   AM_RANGE(0x00, 0x00) AM_DEVWRITE("oki1", okim6295_w         )   // M6295
1346   AM_RANGE(0x08, 0x08) AM_DEVWRITE("oki2", okim6295_w         )   //
1347   AM_RANGE(0x10, 0x17) AM_WRITE(NMK112_okibank_w         )   // Samples bank
1348   AM_RANGE(0x40, 0x41) AM_DEVWRITE("ym", ym2203_w   )   //
1349   AM_RANGE(0x50, 0x50) AM_WRITE(soundlatch_ack_w         )   // To Main CPU
1350//  AM_RANGE(0x51, 0x51) AM_WRITE(SMH_NOP                   )   // ?? volume
1351   AM_RANGE(0x80, 0x80) AM_WRITE(pwrinst2_rombank_w      )   // ROM bank
1352ADDRESS_MAP_END
13531111
1354
13551112/***************************************************************************
13561113                                Sailor Moon
13571114***************************************************************************/
r4679r4680
13931150   memcpy(RAM + 0x20000 * 1, RAM + 0x40000 + 0x20000 * bank2, 0x20000);
13941151}
13951152
1396static ADDRESS_MAP_START( sailormn_sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
1397   AM_RANGE(0x0000, 0x3fff) AM_READ(SMH_ROM      )   // ROM
1398   AM_RANGE(0x4000, 0x7fff) AM_READ(SMH_BANK1      )   // ROM (Banked)
1399   AM_RANGE(0xc000, 0xdfff) AM_READ(mirror_ram_r   )   // RAM
1400   AM_RANGE(0xe000, 0xffff) AM_READ(mirror_ram_r   )   // Mirrored RAM (agallet)
1153static ADDRESS_MAP_START( sailormn_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
1154   AM_RANGE(0x0000, 0x3fff) AM_ROM                                             // ROM
1155   AM_RANGE(0x4000, 0x7fff) AM_ROMBANK(1)                                       // ROM (Banked)
1156   AM_RANGE(0xc000, 0xdfff) AM_READWRITE(mirror_ram_r, mirror_ram_w) AM_BASE(&mirror_ram)   // RAM
1157   AM_RANGE(0xe000, 0xffff) AM_READWRITE(mirror_ram_r, mirror_ram_w)                  // Mirrored RAM (agallet)
14011158ADDRESS_MAP_END
14021159
1403static ADDRESS_MAP_START( sailormn_sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
1404   AM_RANGE(0x0000, 0x3fff) AM_WRITE(SMH_ROM               )   // ROM
1405   AM_RANGE(0x4000, 0x7fff) AM_WRITE(SMH_ROM               )   // ROM (Banked)
1406   AM_RANGE(0xc000, 0xdfff) AM_WRITE(mirror_ram_w) AM_BASE(&mirror_ram)   // RAM
1407   AM_RANGE(0xe000, 0xffff) AM_WRITE(mirror_ram_w            )   // Mirrored RAM (agallet)
1408ADDRESS_MAP_END
1409
1410static ADDRESS_MAP_START( sailormn_sound_readport, ADDRESS_SPACE_IO, 8 )
1160static ADDRESS_MAP_START( sailormn_sound_portmap, ADDRESS_SPACE_IO, 8 )
14111161   ADDRESS_MAP_GLOBAL_MASK(0xff)
1412   AM_RANGE(0x20, 0x20) AM_READ(soundflags_r            )   // Communication
1413   AM_RANGE(0x30, 0x30) AM_READ(soundlatch_lo_r         )   // From Main CPU
1414   AM_RANGE(0x40, 0x40) AM_READ(soundlatch_hi_r         )   //
1415   AM_RANGE(0x50, 0x51) AM_DEVREAD("ym", ym2151_r   )   // YM2151
1416   AM_RANGE(0x60, 0x60) AM_DEVREAD("oki1", okim6295_r      )   // M6295 #0
1417   AM_RANGE(0x80, 0x80) AM_DEVREAD("oki2", okim6295_r      )   // M6295 #1
1162   AM_RANGE(0x00, 0x00) AM_WRITE(sailormn_rombank_w)                  // Rom Bank
1163   AM_RANGE(0x10, 0x10) AM_WRITE(soundlatch_ack_w)                     // To Main CPU
1164   AM_RANGE(0x20, 0x20) AM_READ(soundflags_r)                        // Communication
1165   AM_RANGE(0x30, 0x30) AM_READ(soundlatch_lo_r)                     // From Main CPU
1166   AM_RANGE(0x40, 0x40) AM_READ(soundlatch_hi_r)                     //
1167   AM_RANGE(0x50, 0x51) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)         // YM2151
1168   AM_RANGE(0x60, 0x60) AM_DEVREADWRITE("oki1", okim6295_r, okim6295_w)   // M6295 #0
1169   AM_RANGE(0x70, 0x70) AM_WRITE(sailormn_okibank0_w)                  // Samples Bank #0
1170   AM_RANGE(0x80, 0x80) AM_DEVREADWRITE("oki2", okim6295_r, okim6295_w)   // M6295 #1
1171   AM_RANGE(0xc0, 0xc0) AM_WRITE(sailormn_okibank1_w)                  // Samples Bank #1
14181172ADDRESS_MAP_END
14191173
1420static ADDRESS_MAP_START( sailormn_sound_writeport, ADDRESS_SPACE_IO, 8 )
1421   ADDRESS_MAP_GLOBAL_MASK(0xff)
1422   AM_RANGE(0x00, 0x00) AM_WRITE(sailormn_rombank_w      )   // Rom Bank
1423   AM_RANGE(0x10, 0x10) AM_WRITE(soundlatch_ack_w         )   // To Main CPU
1424   AM_RANGE(0x50, 0x51) AM_DEVWRITE("ym", ym2151_w   )   // YM2151
1425   AM_RANGE(0x60, 0x60) AM_DEVWRITE("oki1", okim6295_w         )   // M6295 #0
1426   AM_RANGE(0x70, 0x70) AM_WRITE(sailormn_okibank0_w      )   // Samples Bank #0
1427   AM_RANGE(0x80, 0x80) AM_DEVWRITE("oki2", okim6295_w         )   // M6295 #1
1428   AM_RANGE(0xc0, 0xc0) AM_WRITE(sailormn_okibank1_w      )   // Samples Bank #1
1429ADDRESS_MAP_END
14301174
14311175
1432
14331176/***************************************************************************
14341177
14351178
r4679r4680
19381681
19391682static void irqhandler(const device_config *device, int irq)
19401683{
1941   cpu_set_input_line(device->machine->cpu[1],0,irq ? ASSERT_LINE : CLEAR_LINE);
1684   cputag_set_input_line(device->machine, "audiocpu", 0, irq ? ASSERT_LINE : CLEAR_LINE);
19421685}
19431686
19441687static const ym2151_interface ym2151_config =
r4679r4680
19651708
19661709   /* basic machine hardware */
19671710   MDRV_CPU_ADD("maincpu", M68000, XTAL_16MHz)
1968   MDRV_CPU_PROGRAM_MAP(dfeveron_readmem,dfeveron_writemem)
1711   MDRV_CPU_PROGRAM_MAP(dfeveron_map,0)
19691712   MDRV_CPU_VBLANK_INT("screen", cave_interrupt)
19701713
19711714   MDRV_MACHINE_RESET(cave)
r4679r4680
20041747
20051748   /* basic machine hardware */
20061749   MDRV_CPU_ADD("maincpu", M68000, XTAL_16MHz)
2007   MDRV_CPU_PROGRAM_MAP(ddonpach_readmem,ddonpach_writemem)
1750   MDRV_CPU_PROGRAM_MAP(ddonpach_map,0)
20081751   MDRV_CPU_VBLANK_INT("screen", cave_interrupt)
20091752
20101753   MDRV_MACHINE_RESET(cave)
r4679r4680
20431786
20441787   /* basic machine hardware */
20451788   MDRV_CPU_ADD("maincpu", M68000, XTAL_16MHz)
2046   MDRV_CPU_PROGRAM_MAP(donpachi_readmem,donpachi_writemem)
1789   MDRV_CPU_PROGRAM_MAP(donpachi_map,0)
20471790   MDRV_CPU_VBLANK_INT("screen", cave_interrupt)
20481791
20491792   MDRV_MACHINE_RESET(cave)
r4679r4680
20871830
20881831   /* basic machine hardware */
20891832   MDRV_CPU_ADD("maincpu", M68000, XTAL_16MHz)
2090   MDRV_CPU_PROGRAM_MAP(esprade_readmem,esprade_writemem)
1833   MDRV_CPU_PROGRAM_MAP(esprade_map,0)
20911834   MDRV_CPU_VBLANK_INT("screen", cave_interrupt)
20921835
20931836   MDRV_MACHINE_RESET(cave)
r4679r4680
21261869
21271870   /* basic machine hardware */
21281871   MDRV_CPU_ADD("maincpu", M68000, XTAL_16MHz)
2129   MDRV_CPU_PROGRAM_MAP(gaia_readmem,gaia_writemem)
1872   MDRV_CPU_PROGRAM_MAP(gaia_map,0)
21301873   MDRV_CPU_VBLANK_INT("screen", cave_interrupt)
21311874
21321875   MDRV_MACHINE_RESET(cave)
r4679r4680
21641907
21651908   /* basic machine hardware */
21661909   MDRV_CPU_ADD("maincpu", M68000, XTAL_16MHz)
2167   MDRV_CPU_PROGRAM_MAP(guwange_readmem,guwange_writemem)
1910   MDRV_CPU_PROGRAM_MAP(guwange_map,0)
21681911   MDRV_CPU_VBLANK_INT("screen", cave_interrupt)
21691912
21701913   MDRV_MACHINE_RESET(cave)
r4679r4680
22021945
22031946   /* basic machine hardware */
22041947   MDRV_CPU_ADD("maincpu", M68000, XTAL_16MHz)
2205   MDRV_CPU_PROGRAM_MAP(hotdogst_readmem,hotdogst_writemem)
1948   MDRV_CPU_PROGRAM_MAP(hotdogst_map,0)
22061949   MDRV_CPU_VBLANK_INT("screen", cave_interrupt)
22071950
22081951   MDRV_CPU_ADD("audiocpu", Z80, XTAL_4MHz)
2209   MDRV_CPU_PROGRAM_MAP(hotdogst_sound_readmem,hotdogst_sound_writemem)
2210   MDRV_CPU_IO_MAP(hotdogst_sound_readport,hotdogst_sound_writeport)
1952   MDRV_CPU_PROGRAM_MAP(hotdogst_sound_map,0)
1953   MDRV_CPU_IO_MAP(hotdogst_sound_portmap,0)
22111954
22121955   MDRV_MACHINE_RESET(cave)
22131956   MDRV_NVRAM_HANDLER(cave)
r4679r4680
22561999
22572000   /* basic machine hardware */
22582001   MDRV_CPU_ADD("maincpu", M68000, XTAL_16MHz)
2259   MDRV_CPU_PROGRAM_MAP(korokoro_readmem,korokoro_writemem)
2002   MDRV_CPU_PROGRAM_MAP(korokoro_map,0)
22602003   MDRV_CPU_VBLANK_INT("screen", cave_interrupt)
22612004
22622005   MDRV_MACHINE_RESET(cave)
r4679r4680
22952038
22962039   /* basic machine hardware */
22972040   MDRV_CPU_ADD("maincpu", M68000, XTAL_16MHz)
2298   MDRV_CPU_PROGRAM_MAP(mazinger_readmem,mazinger_writemem)
2041   MDRV_CPU_PROGRAM_MAP(mazinger_map,0)
22992042   MDRV_CPU_VBLANK_INT("screen", cave_interrupt)
23002043
23012044   MDRV_CPU_ADD("audiocpu", Z80, XTAL_4MHz) // Bidirectional communication
2302   MDRV_CPU_PROGRAM_MAP(mazinger_sound_readmem,mazinger_sound_writemem)
2303   MDRV_CPU_IO_MAP(mazinger_sound_readport,mazinger_sound_writeport)
2045   MDRV_CPU_PROGRAM_MAP(mazinger_sound_map,0)
2046   MDRV_CPU_IO_MAP(mazinger_sound_portmap,0)
23042047
23052048   MDRV_WATCHDOG_TIME_INIT(SEC(3))   /* a guess, and certainly wrong */
23062049
r4679r4680
23512094
23522095   /* basic machine hardware */
23532096   MDRV_CPU_ADD("maincpu", M68000, XTAL_32MHz / 2)
2354   MDRV_CPU_PROGRAM_MAP(metmqstr_readmem,metmqstr_writemem)
2097   MDRV_CPU_PROGRAM_MAP(metmqstr_map,0)
23552098   MDRV_CPU_VBLANK_INT("screen", cave_interrupt)
23562099
23572100   MDRV_CPU_ADD("audiocpu", Z80, XTAL_32MHz / 4)
2358   MDRV_CPU_PROGRAM_MAP(metmqstr_sound_readmem,metmqstr_sound_writemem)
2359   MDRV_CPU_IO_MAP(metmqstr_sound_readport,metmqstr_sound_writeport)
2101   MDRV_CPU_PROGRAM_MAP(metmqstr_sound_map,0)
2102   MDRV_CPU_IO_MAP(metmqstr_sound_portmap,0)
23602103
23612104   MDRV_WATCHDOG_TIME_INIT(SEC(3))   /* a guess, and certainly wrong */
23622105
r4679r4680
24082151
24092152   /* basic machine hardware */
24102153   MDRV_CPU_ADD("maincpu", M68000, XTAL_16MHz)   /* 16 MHz */
2411   MDRV_CPU_PROGRAM_MAP(pwrinst2_readmem,pwrinst2_writemem)
2154   MDRV_CPU_PROGRAM_MAP(pwrinst2_map,0)
24122155   MDRV_CPU_VBLANK_INT("screen", cave_interrupt)
24132156
24142157   MDRV_CPU_ADD("audiocpu", Z80,XTAL_16MHz / 2)   /* 8 MHz */
2415   MDRV_CPU_PROGRAM_MAP(pwrinst2_sound_readmem,pwrinst2_sound_writemem)
2416   MDRV_CPU_IO_MAP(pwrinst2_sound_readport,pwrinst2_sound_writeport)
2158   MDRV_CPU_PROGRAM_MAP(pwrinst2_sound_map,0)
2159   MDRV_CPU_IO_MAP(pwrinst2_sound_portmap,0)
24172160
24182161   MDRV_MACHINE_RESET(cave)
24192162   MDRV_NVRAM_HANDLER(cave)
r4679r4680
24672210
24682211   /* basic machine hardware */
24692212   MDRV_CPU_ADD("maincpu", M68000, XTAL_16MHz)
2470   MDRV_CPU_PROGRAM_MAP(sailormn_readmem,sailormn_writemem)
2213   MDRV_CPU_PROGRAM_MAP(sailormn_map,0)
24712214   MDRV_CPU_VBLANK_INT("screen", cave_interrupt)
24722215
24732216   MDRV_CPU_ADD("audiocpu", Z80, XTAL_8MHz) // Bidirectional Communication
2474   MDRV_CPU_PROGRAM_MAP(sailormn_sound_readmem,sailormn_sound_writemem)
2475   MDRV_CPU_IO_MAP(sailormn_sound_readport,sailormn_sound_writeport)
2217   MDRV_CPU_PROGRAM_MAP(sailormn_sound_map,0)
2218   MDRV_CPU_IO_MAP(sailormn_sound_portmap,0)
24762219
24772220//  MDRV_QUANTUM_TIME(HZ(600))
24782221
r4679r4680
25212264
25222265   /* basic machine hardware */
25232266   MDRV_CPU_ADD("maincpu", M68000, XTAL_16MHz)
2524   MDRV_CPU_PROGRAM_MAP(uopoko_readmem,uopoko_writemem)
2267   MDRV_CPU_PROGRAM_MAP(uopoko_map,0)
25252268   MDRV_CPU_VBLANK_INT("screen", cave_interrupt)
25262269
25272270   MDRV_NVRAM_HANDLER(cave)
r4679r4680
40853828   unpack_sprites(machine);
40863829
40873830//  Speed Hack
4088   memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xb80000, 0xb80001, 0, 0, agallet_irq_cause_r);
3831   memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xb80000, 0xb80001, 0, 0, agallet_irq_cause_r);
40893832}
40903833
40913834static DRIVER_INIT( dfeveron )
r4679r4680
42043947   init_cave(machine);
42053948
42063949   /* decrypt sprites */
4207   buffer = malloc_or_die(len);
3950   buffer = alloc_array_or_die(UINT8, len);
42083951   {
42093952      int i;
42103953      for (i = 0;i < len; i++)
r4679r4680
42473990
42483991   init_cave(machine);
42493992
4250   buffer = malloc_or_die(len);
3993   buffer = alloc_array_or_die(UINT8, len);
42513994   {
42523995       for(i=0; i<len/2; i++)       {
42533996         j = BITSWAP24(i,23,22,21,20,19,18,17,16,15,14,13,12,11,10,9,8,7, 2,4,6,1,5,3, 0);
r4679r4680
42934036   init_cave(machine);
42944037
42954038   /* decrypt sprites */
4296   buffer = malloc_or_die(len);
4039   buffer = alloc_array_or_die(UINT8, len);
42974040   {
42984041      int i;
42994042      for (i = 0;i < len; i++)
src/mame/drivers/cham24.c
r4679r4680
213213
214214static void ppu_irq( const device_config *device, int *ppu_regs )
215215{
216   cpu_set_input_line(device->machine->cpu[0], INPUT_LINE_NMI, PULSE_LINE );
216   cputag_set_input_line(device->machine, "maincpu", INPUT_LINE_NMI, PULSE_LINE );
217217}
218218
219219/* our ppu interface                                            */
src/mame/drivers/dooyong.c
r4679r4680
8282
8383***************************************************************************/
8484
85static ADDRESS_MAP_START( lastday_readmem, ADDRESS_SPACE_PROGRAM, 8 )
86   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
87   AM_RANGE(0x8000, 0xbfff) AM_READ(SMH_BANK1)
85static ADDRESS_MAP_START( lastday_map, ADDRESS_SPACE_PROGRAM, 8 )
86   AM_RANGE(0x0000, 0x7fff) AM_ROM
87   AM_RANGE(0x8000, 0xbfff) AM_ROMBANK(1)
88   AM_RANGE(0xc000, 0xc007) AM_WRITE(dooyong_bgscroll8_w)
89   AM_RANGE(0xc008, 0xc00f) AM_WRITE(dooyong_fgscroll8_w)
8890   AM_RANGE(0xc010, 0xc010) AM_READ_PORT("SYSTEM")
91   AM_RANGE(0xc010, 0xc010) AM_WRITE(lastday_ctrl_w)   /* coin counter, flip screen */
8992   AM_RANGE(0xc011, 0xc011) AM_READ_PORT("P1")
93   AM_RANGE(0xc011, 0xc011) AM_WRITE(lastday_bankswitch_w)
9094   AM_RANGE(0xc012, 0xc012) AM_READ_PORT("P2")
95   AM_RANGE(0xc012, 0xc012) AM_WRITE(soundlatch_w)
9196   AM_RANGE(0xc013, 0xc013) AM_READ_PORT("DSWA")
9297   AM_RANGE(0xc014, 0xc014) AM_READ_PORT("DSWB")
93   AM_RANGE(0xc800, 0xffff) AM_READ(SMH_RAM)
98   AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_le_w) AM_BASE(&paletteram)
99   AM_RANGE(0xd000, 0xdfff) AM_RAM_WRITE(dooyong_txvideoram8_w) AM_BASE(&dooyong_txvideoram)
100   AM_RANGE(0xe000, 0xefff) AM_RAM
101   AM_RANGE(0xf000, 0xffff) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
94102ADDRESS_MAP_END
95103
96static ADDRESS_MAP_START( lastday_writemem, ADDRESS_SPACE_PROGRAM, 8 )
97   AM_RANGE(0x0000, 0xbfff) AM_WRITE(SMH_ROM)
98   AM_RANGE(0xc000, 0xc007) AM_WRITE(dooyong_bgscroll8_w)
99   AM_RANGE(0xc008, 0xc00f) AM_WRITE(dooyong_fgscroll8_w)
100   AM_RANGE(0xc010, 0xc010) AM_WRITE(lastday_ctrl_w)   /* coin counter, flip screen */
101   AM_RANGE(0xc011, 0xc011) AM_WRITE(lastday_bankswitch_w)
102   AM_RANGE(0xc012, 0xc012) AM_WRITE(soundlatch_w)
103   AM_RANGE(0xc800, 0xcfff) AM_WRITE(paletteram_xxxxBBBBGGGGRRRR_le_w) AM_BASE(&paletteram)
104   AM_RANGE(0xd000, 0xdfff) AM_WRITE(dooyong_txvideoram8_w) AM_BASE(&dooyong_txvideoram)
105   AM_RANGE(0xe000, 0xefff) AM_WRITE(SMH_RAM)
106   AM_RANGE(0xf000, 0xffff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
107ADDRESS_MAP_END
108
109static ADDRESS_MAP_START( pollux_readmem, ADDRESS_SPACE_PROGRAM, 8 )
110   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
111   AM_RANGE(0x8000, 0xbfff) AM_READ(SMH_BANK1)
112   AM_RANGE(0xc000, 0xefff) AM_READ(SMH_RAM)
113   AM_RANGE(0xf000, 0xf000) AM_READ_PORT("DSWA")
104static ADDRESS_MAP_START( pollux_map, ADDRESS_SPACE_PROGRAM, 8 )
105   AM_RANGE(0x0000, 0x7fff) AM_ROM
106   AM_RANGE(0x8000, 0xbfff) AM_ROMBANK(1)
107   AM_RANGE(0xc000, 0xcfff) AM_RAM
108   AM_RANGE(0xd000, 0xdfff) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
109   AM_RANGE(0xe000, 0xefff) AM_RAM_WRITE(dooyong_txvideoram8_w) AM_BASE(&dooyong_txvideoram)
110   AM_RANGE(0xf000, 0xf000) AM_READ_PORT("DSWA") AM_WRITE(lastday_bankswitch_w)
114111   AM_RANGE(0xf001, 0xf001) AM_READ_PORT("DSWB")
115112   AM_RANGE(0xf002, 0xf002) AM_READ_PORT("P1")
116113   AM_RANGE(0xf003, 0xf003) AM_READ_PORT("P2")
117114   AM_RANGE(0xf004, 0xf004) AM_READ_PORT("SYSTEM")
118   AM_RANGE(0xf800, 0xffff) AM_READ(SMH_RAM)
119ADDRESS_MAP_END
120
121static ADDRESS_MAP_START( pollux_writemem, ADDRESS_SPACE_PROGRAM, 8 )
122   AM_RANGE(0x0000, 0xbfff) AM_WRITE(SMH_ROM)
123   AM_RANGE(0xc000, 0xcfff) AM_WRITE(SMH_RAM)
124   AM_RANGE(0xd000, 0xdfff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
125   AM_RANGE(0xe000, 0xefff) AM_WRITE(dooyong_txvideoram8_w) AM_BASE(&dooyong_txvideoram)
126   AM_RANGE(0xf000, 0xf000) AM_WRITE(lastday_bankswitch_w)
127115   AM_RANGE(0xf008, 0xf008) AM_WRITE(pollux_ctrl_w)   /* coin counter, flip screen */
128116   AM_RANGE(0xf010, 0xf010) AM_WRITE(soundlatch_w)
129117   AM_RANGE(0xf018, 0xf01f) AM_WRITE(dooyong_bgscroll8_w)
130118   AM_RANGE(0xf020, 0xf027) AM_WRITE(dooyong_fgscroll8_w)
131   AM_RANGE(0xf800, 0xffff) AM_WRITE(paletteram_xRRRRRGGGGGBBBBB_le_w) AM_BASE(&paletteram)
119   AM_RANGE(0xf800, 0xffff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_le_w) AM_BASE(&paletteram)
132120ADDRESS_MAP_END
133121
134static ADDRESS_MAP_START( gulfstrm_readmem, ADDRESS_SPACE_PROGRAM, 8 )
135   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
136   AM_RANGE(0x8000, 0xbfff) AM_READ(SMH_BANK1)
137   AM_RANGE(0xc000, 0xefff) AM_READ(SMH_RAM)
122static ADDRESS_MAP_START( gulfstrm_map, ADDRESS_SPACE_PROGRAM, 8 )
123   AM_RANGE(0x0000, 0x7fff) AM_ROM
124   AM_RANGE(0x8000, 0xbfff) AM_ROMBANK(1)
125   AM_RANGE(0xc000, 0xcfff) AM_RAM
126   AM_RANGE(0xd000, 0xdfff) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
127   AM_RANGE(0xe000, 0xefff) AM_RAM_WRITE(dooyong_txvideoram8_w) AM_BASE(&dooyong_txvideoram)
138128   AM_RANGE(0xf000, 0xf000) AM_READ_PORT("DSWA")
129   AM_RANGE(0xf000, 0xf000) AM_WRITE(lastday_bankswitch_w)
139130   AM_RANGE(0xf001, 0xf001) AM_READ_PORT("DSWB")
140131   AM_RANGE(0xf002, 0xf002) AM_READ_PORT("P2")
141132   AM_RANGE(0xf003, 0xf003) AM_READ_PORT("P1")
142133   AM_RANGE(0xf004, 0xf004) AM_READ_PORT("SYSTEM")
143   AM_RANGE(0xf800, 0xffff) AM_READ(SMH_RAM)
134   AM_RANGE(0xf008, 0xf008) AM_WRITE(pollux_ctrl_w)   /* coin counter, flip screen */
135   AM_RANGE(0xf010, 0xf010) AM_WRITE(soundlatch_w)
136   AM_RANGE(0xf018, 0xf01f) AM_WRITE(dooyong_bgscroll8_w)
137   AM_RANGE(0xf020, 0xf027) AM_WRITE(dooyong_fgscroll8_w)
138   AM_RANGE(0xf800, 0xffff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_le_w) AM_BASE(&paletteram)
144139ADDRESS_MAP_END
145140
146static ADDRESS_MAP_START( bluehawk_readmem, ADDRESS_SPACE_PROGRAM, 8 )
147   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
148   AM_RANGE(0x8000, 0xbfff) AM_READ(SMH_BANK1)
141static ADDRESS_MAP_START( bluehawk_map, ADDRESS_SPACE_PROGRAM, 8 )
142   AM_RANGE(0x0000, 0x7fff) AM_ROM
143   AM_RANGE(0x8000, 0xbfff) AM_ROMBANK(1)
149144   AM_RANGE(0xc000, 0xc000) AM_READ_PORT("DSWA")
145   AM_RANGE(0xc000, 0xc000) AM_WRITE(flip_screen_w)
150146   AM_RANGE(0xc001, 0xc001) AM_READ_PORT("DSWB")
151147   AM_RANGE(0xc002, 0xc002) AM_READ_PORT("P1")
152148   AM_RANGE(0xc003, 0xc003) AM_READ_PORT("P2")
153149   AM_RANGE(0xc004, 0xc004) AM_READ_PORT("SYSTEM")
154   AM_RANGE(0xc800, 0xffff) AM_READ(SMH_RAM)
155ADDRESS_MAP_END
156
157static ADDRESS_MAP_START( bluehawk_writemem, ADDRESS_SPACE_PROGRAM, 8 )
158   AM_RANGE(0x0000, 0xbfff) AM_WRITE(SMH_ROM)
159   AM_RANGE(0xc000, 0xc000) AM_WRITE(flip_screen_w)
160150   AM_RANGE(0xc008, 0xc008) AM_WRITE(lastday_bankswitch_w)
161151   AM_RANGE(0xc010, 0xc010) AM_WRITE(soundlatch_w)
162152   AM_RANGE(0xc018, 0xc01f) AM_WRITE(dooyong_fg2scroll8_w)
163153   AM_RANGE(0xc040, 0xc047) AM_WRITE(dooyong_bgscroll8_w)
164154   AM_RANGE(0xc048, 0xc04f) AM_WRITE(dooyong_fgscroll8_w)
165   AM_RANGE(0xc800, 0xcfff) AM_WRITE(paletteram_xRRRRRGGGGGBBBBB_le_w) AM_BASE(&paletteram)
166   AM_RANGE(0xd000, 0xdfff) AM_WRITE(dooyong_txvideoram8_w) AM_BASE(&dooyong_txvideoram)
167   AM_RANGE(0xe000, 0xefff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
168   AM_RANGE(0xf000, 0xffff) AM_WRITE(SMH_RAM)
155   AM_RANGE(0xc800, 0xcfff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_le_w) AM_BASE(&paletteram)
156   AM_RANGE(0xd000, 0xdfff) AM_RAM_WRITE(dooyong_txvideoram8_w) AM_BASE(&dooyong_txvideoram)
157   AM_RANGE(0xe000, 0xefff) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
158   AM_RANGE(0xf000, 0xffff) AM_RAM
169159ADDRESS_MAP_END
170160
171static ADDRESS_MAP_START( flytiger_readmem, ADDRESS_SPACE_PROGRAM, 8 )
172   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
173   AM_RANGE(0x8000, 0xbfff) AM_READ(SMH_BANK1)
174   AM_RANGE(0xc000, 0xcfff) AM_READ(SMH_RAM)
175   AM_RANGE(0xd000, 0xdfff) AM_READ(SMH_RAM)
161static ADDRESS_MAP_START( flytiger_map, ADDRESS_SPACE_PROGRAM, 8 )
162   AM_RANGE(0x0000, 0x7fff) AM_ROM
163   AM_RANGE(0x8000, 0xbfff) AM_ROMBANK(1)
164   AM_RANGE(0xc000, 0xcfff) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
165   AM_RANGE(0xd000, 0xdfff) AM_RAM
176166   AM_RANGE(0xe000, 0xe000) AM_READ_PORT("P1")
167   AM_RANGE(0xe000, 0xe000) AM_WRITE(lastday_bankswitch_w)
177168   AM_RANGE(0xe002, 0xe002) AM_READ_PORT("P2")
178169   AM_RANGE(0xe004, 0xe004) AM_READ_PORT("SYSTEM")
179170   AM_RANGE(0xe006, 0xe006) AM_READ_PORT("DSWA")
180171   AM_RANGE(0xe008, 0xe008) AM_READ_PORT("DSWB")
181   AM_RANGE(0xe800, 0xefff) AM_READ(SMH_RAM)
182   AM_RANGE(0xf000, 0xf7ff) AM_READ(SMH_RAM)
183   AM_RANGE(0xf800, 0xffff) AM_READ(SMH_RAM)
184ADDRESS_MAP_END
185
186static ADDRESS_MAP_START( flytiger_writemem, ADDRESS_SPACE_PROGRAM, 8 )
187   AM_RANGE(0x0000, 0xbfff) AM_WRITE(SMH_ROM)
188   AM_RANGE(0xc000, 0xcfff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
189   AM_RANGE(0xd000, 0xdfff) AM_WRITE(SMH_RAM)
190   AM_RANGE(0xe000, 0xe000) AM_WRITE(lastday_bankswitch_w)
191172   AM_RANGE(0xe010, 0xe010) AM_WRITE(flytiger_ctrl_w)   /* coin counter, flip screen */
192173   AM_RANGE(0xe020, 0xe020) AM_WRITE(soundlatch_w)
193174   AM_RANGE(0xe030, 0xe037) AM_WRITE(dooyong_bgscroll8_w)
194175   AM_RANGE(0xe040, 0xe047) AM_WRITE(dooyong_fgscroll8_w)
195   AM_RANGE(0xe800, 0xefff) AM_WRITE(paletteram_xRRRRRGGGGGBBBBB_le_w) AM_BASE(&paletteram)
196   AM_RANGE(0xf000, 0xffff) AM_WRITE(dooyong_txvideoram8_w) AM_BASE(&dooyong_txvideoram)
176   AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_le_w) AM_BASE(&paletteram)
177   AM_RANGE(0xf000, 0xffff) AM_RAM_WRITE(dooyong_txvideoram8_w) AM_BASE(&dooyong_txvideoram)
197178ADDRESS_MAP_END
198179
199static ADDRESS_MAP_START( primella_readmem, ADDRESS_SPACE_PROGRAM, 8 )
200   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
201   AM_RANGE(0x8000, 0xbfff) AM_READ(SMH_BANK1)
202   AM_RANGE(0xc000, 0xcfff) AM_READ(SMH_RAM)
203   AM_RANGE(0xd000, 0xd3ff) AM_READ(SMH_RAM)
204   AM_RANGE(0xe000, 0xefff) AM_READ(SMH_RAM)
180static ADDRESS_MAP_START( primella_map, ADDRESS_SPACE_PROGRAM, 8 )
181   AM_RANGE(0x0000, 0x7fff) AM_ROM
182   AM_RANGE(0x8000, 0xbfff) AM_ROMBANK(1)
183   AM_RANGE(0xc000, 0xcfff) AM_RAM
184   AM_RANGE(0xd000, 0xd3ff) AM_RAM /* what is this? looks like a palette? scratchpad RAM maybe? */
185   AM_RANGE(0xe000, 0xefff) AM_RAM_WRITE(dooyong_txvideoram8_w) AM_BASE(&dooyong_txvideoram)
186   AM_RANGE(0xf000, 0xf7ff) AM_WRITE(paletteram_xRRRRRGGGGGBBBBB_le_w) AM_BASE(&paletteram)
205187   AM_RANGE(0xf800, 0xf800) AM_READ_PORT("DSWA")
188   AM_RANGE(0xf800, 0xf800) AM_WRITE(primella_ctrl_w)   /* bank switch, flip screen etc */
206189   AM_RANGE(0xf810, 0xf810) AM_READ_PORT("DSWB")
190   AM_RANGE(0xf810, 0xf810) AM_WRITE(soundlatch_w)
207191   AM_RANGE(0xf820, 0xf820) AM_READ_PORT("P1")
208192   AM_RANGE(0xf830, 0xf830) AM_READ_PORT("P2")
209193   AM_RANGE(0xf840, 0xf840) AM_READ_PORT("SYSTEM")
210ADDRESS_MAP_END
211
212static ADDRESS_MAP_START( primella_writemem, ADDRESS_SPACE_PROGRAM, 8 )
213   AM_RANGE(0x0000, 0xbfff) AM_WRITE(SMH_ROM)
214   AM_RANGE(0xc000, 0xcfff) AM_WRITE(SMH_RAM)
215   AM_RANGE(0xd000, 0xd3ff) AM_WRITE(SMH_RAM)   /* what is this? looks like a palette? scratchpad RAM maybe? */
216   AM_RANGE(0xe000, 0xefff) AM_WRITE(dooyong_txvideoram8_w) AM_BASE(&dooyong_txvideoram)
217   AM_RANGE(0xf000, 0xf7ff) AM_WRITE(paletteram_xRRRRRGGGGGBBBBB_le_w) AM_BASE(&paletteram)
218   AM_RANGE(0xf800, 0xf800) AM_WRITE(primella_ctrl_w)   /* bank switch, flip screen etc */
219   AM_RANGE(0xf810, 0xf810) AM_WRITE(soundlatch_w)
220194   AM_RANGE(0xfc00, 0xfc07) AM_WRITE(dooyong_bgscroll8_w)
221195   AM_RANGE(0xfc08, 0xfc0f) AM_WRITE(dooyong_fgscroll8_w)
222196ADDRESS_MAP_END
223197
224static ADDRESS_MAP_START( rshark_readmem, ADDRESS_SPACE_PROGRAM, 16 )
198static ADDRESS_MAP_START( rshark_map, ADDRESS_SPACE_PROGRAM, 16 )
225199   ADDRESS_MAP_GLOBAL_MASK(0xfffff)   /* super-x needs this and is similar */
226   AM_RANGE(0x000000, 0x03ffff) AM_READ(SMH_ROM)
227   AM_RANGE(0x040000, 0x04cfff) AM_READ(SMH_RAM)
228   AM_RANGE(0x04d000, 0x04dfff) AM_READ(SMH_RAM)
229   AM_RANGE(0x04e000, 0x04ffff) AM_READ(SMH_RAM)
200   AM_RANGE(0x000000, 0x03ffff) AM_ROM
201   AM_RANGE(0x040000, 0x04cfff) AM_RAM
202   AM_RANGE(0x04d000, 0x04dfff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)
203   AM_RANGE(0x04e000, 0x04ffff) AM_RAM
230204   AM_RANGE(0x0c0002, 0x0c0003) AM_READ_PORT("DSW")
231205   AM_RANGE(0x0c0004, 0x0c0005) AM_READ_PORT("P1_P2")
232206   AM_RANGE(0x0c0006, 0x0c0007) AM_READ_PORT("SYSTEM")
233ADDRESS_MAP_END
234
235static ADDRESS_MAP_START( rshark_writemem, ADDRESS_SPACE_PROGRAM, 16 )
236   ADDRESS_MAP_GLOBAL_MASK(0xfffff)   /* super-x needs this and is similar */
237   AM_RANGE(0x000000, 0x03ffff) AM_WRITE(SMH_ROM)
238   AM_RANGE(0x040000, 0x04cfff) AM_WRITE(SMH_RAM)
239   AM_RANGE(0x04d000, 0x04dfff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)
240   AM_RANGE(0x04e000, 0x04ffff) AM_WRITE(SMH_RAM)
241207   AM_RANGE(0x0c4000, 0x0c400f) AM_WRITE(dooyong_bgscroll16_w)
242208   AM_RANGE(0x0c4010, 0x0c401f) AM_WRITE(dooyong_bg2scroll16_w)
243209   AM_RANGE(0x0c8000, 0x0c8fff) AM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE(&paletteram16)
r4679r4680
247213   AM_RANGE(0x0cc010, 0x0cc01f) AM_WRITE(dooyong_fg2scroll16_w)
248214ADDRESS_MAP_END
249215
250static ADDRESS_MAP_START( superx_readmem, ADDRESS_SPACE_PROGRAM, 16 )
216static ADDRESS_MAP_START( superx_map, ADDRESS_SPACE_PROGRAM, 16 )
251217   ADDRESS_MAP_GLOBAL_MASK(0xfffff)
252   AM_RANGE(0x000000, 0x03ffff) AM_READ(SMH_ROM)
253   AM_RANGE(0x0d0000, 0x0dcfff) AM_READ(SMH_RAM)
254   AM_RANGE(0x0dd000, 0x0ddfff) AM_READ(SMH_RAM)
255   AM_RANGE(0x0de000, 0x0dffff) AM_READ(SMH_RAM)
218   AM_RANGE(0x000000, 0x03ffff) AM_ROM
219   AM_RANGE(0x0d0000, 0x0dcfff) AM_RAM
220   AM_RANGE(0x0dd000, 0x0ddfff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)
221   AM_RANGE(0x0de000, 0x0dffff) AM_RAM
256222   AM_RANGE(0x080002, 0x080003) AM_READ_PORT("DSW")
257223   AM_RANGE(0x080004, 0x080005) AM_READ_PORT("P1_P2")
258224   AM_RANGE(0x080006, 0x080007) AM_READ_PORT("SYSTEM")
259ADDRESS_MAP_END
260
261static ADDRESS_MAP_START( superx_writemem, ADDRESS_SPACE_PROGRAM, 16 )
262   ADDRESS_MAP_GLOBAL_MASK(0xfffff)
263   AM_RANGE(0x000000, 0x03ffff) AM_WRITE(SMH_ROM)
264   AM_RANGE(0x0d0000, 0x0dcfff) AM_WRITE(SMH_RAM)
265   AM_RANGE(0x0dd000, 0x0ddfff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)
266   AM_RANGE(0x0de000, 0x0dffff) AM_WRITE(SMH_RAM)
267225   AM_RANGE(0x084000, 0x08400f) AM_WRITE(dooyong_bgscroll16_w)
268226   AM_RANGE(0x084010, 0x08401f) AM_WRITE(dooyong_bg2scroll16_w)
269227   AM_RANGE(0x088000, 0x088fff) AM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE(&paletteram16)
r4679r4680
273231   AM_RANGE(0x08c010, 0x08c01f) AM_WRITE(dooyong_fg2scroll16_w)
274232ADDRESS_MAP_END
275233
276static ADDRESS_MAP_START( popbingo_readmem, ADDRESS_SPACE_PROGRAM, 16 )
234static ADDRESS_MAP_START( popbingo_map, ADDRESS_SPACE_PROGRAM, 16 )
277235   ADDRESS_MAP_GLOBAL_MASK(0xfffff)
278   AM_RANGE(0x000000, 0x03ffff) AM_READ(SMH_ROM)
279   AM_RANGE(0x040000, 0x04cfff) AM_READ(SMH_RAM)
280   AM_RANGE(0x04d000, 0x04dfff) AM_READ(SMH_RAM) // sprites
281   AM_RANGE(0x04e000, 0x04ffff) AM_READ(SMH_RAM)
236   AM_RANGE(0x000000, 0x03ffff) AM_ROM
237   AM_RANGE(0x040000, 0x04cfff) AM_RAM
238   AM_RANGE(0x04d000, 0x04dfff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)
239   AM_RANGE(0x04e000, 0x04ffff) AM_RAM
282240   AM_RANGE(0x0c0002, 0x0c0003) AM_READ_PORT("DSW")
283241   AM_RANGE(0x0c0004, 0x0c0005) AM_READ_PORT("P1_P2")
284242   AM_RANGE(0x0c0006, 0x0c0007) AM_READ_PORT("SYSTEM")
285ADDRESS_MAP_END
286
287static ADDRESS_MAP_START( popbingo_writemem, ADDRESS_SPACE_PROGRAM, 16 )
288   ADDRESS_MAP_GLOBAL_MASK(0xfffff)
289   AM_RANGE(0x000000, 0x03ffff) AM_WRITE(SMH_ROM)
290   AM_RANGE(0x040000, 0x04cfff) AM_WRITE(SMH_RAM)
291   AM_RANGE(0x04d000, 0x04dfff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)
292   AM_RANGE(0x04e000, 0x04ffff) AM_WRITE(SMH_RAM)
293243   AM_RANGE(0x0c0012, 0x0c0013) AM_WRITE(soundlatch_word_w)
294244   AM_RANGE(0x0c0014, 0x0c0015) AM_WRITE(rshark_ctrl_w)
295245   AM_RANGE(0x0c0018, 0x0c001b) AM_WRITENOP // ?
r4679r4680
301251   AM_RANGE(0x0dc000, 0x0dc01f) AM_RAM // registers of some kind?
302252ADDRESS_MAP_END
303253
304static ADDRESS_MAP_START( lastday_sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
305   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
306   AM_RANGE(0xc000, 0xc7ff) AM_READ(SMH_RAM)
254static ADDRESS_MAP_START( lastday_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
255   AM_RANGE(0x0000, 0x7fff) AM_ROM
256   AM_RANGE(0xc000, 0xc7ff) AM_RAM
307257   AM_RANGE(0xc800, 0xc800) AM_READ(soundlatch_r)
308   AM_RANGE(0xf000, 0xf001) AM_DEVREAD("ym1", ym2203_r)
309   AM_RANGE(0xf002, 0xf003) AM_DEVREAD("ym1", ym2203_r)
258   AM_RANGE(0xf000, 0xf001) AM_DEVREADWRITE("ym1", ym2203_r, ym2203_w)
259   AM_RANGE(0xf002, 0xf003) AM_DEVREADWRITE("ym1", ym2203_r, ym2203_w)
310260ADDRESS_MAP_END
311261
312static ADDRESS_MAP_START( lastday_sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
313   AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM)
314   AM_RANGE(0xc000, 0xc7ff) AM_WRITE(SMH_RAM)
315   AM_RANGE(0xf000, 0xf001) AM_DEVWRITE("ym1", ym2203_w)
316   AM_RANGE(0xf002, 0xf003) AM_DEVWRITE("ym2", ym2203_w)
317ADDRESS_MAP_END
318
319static ADDRESS_MAP_START( pollux_sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
320   AM_RANGE(0x0000, 0xefff) AM_READ(SMH_ROM)
321   AM_RANGE(0xf000, 0xf7ff) AM_READ(SMH_RAM)
262static ADDRESS_MAP_START( pollux_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
263   AM_RANGE(0x0000, 0xefff) AM_ROM
264   AM_RANGE(0xf000, 0xf7ff) AM_RAM
322265   AM_RANGE(0xf800, 0xf800) AM_READ(soundlatch_r)
323   AM_RANGE(0xf802, 0xf803) AM_DEVREAD("ym1", ym2203_r)
324   AM_RANGE(0xf804, 0xf805) AM_DEVREAD("ym2", ym2203_r)
266   AM_RANGE(0xf802, 0xf803) AM_DEVREADWRITE("ym1", ym2203_r, ym2203_w)
267   AM_RANGE(0xf804, 0xf805) AM_DEVREADWRITE("ym2", ym2203_r, ym2203_w)
325268ADDRESS_MAP_END
326269
327static ADDRESS_MAP_START( pollux_sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
328   AM_RANGE(0x0000, 0xefff) AM_WRITE(SMH_ROM)
329   AM_RANGE(0xf000, 0xf7ff) AM_WRITE(SMH_RAM)
330   AM_RANGE(0xf802, 0xf803) AM_DEVWRITE("ym1", ym2203_w)
331   AM_RANGE(0xf804, 0xf805) AM_DEVWRITE("ym2", ym2203_w)
332ADDRESS_MAP_END
333
334static ADDRESS_MAP_START( bluehawk_sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
335   AM_RANGE(0x0000, 0xefff) AM_READ(SMH_ROM)
336   AM_RANGE(0xf000, 0xf7ff) AM_READ(SMH_RAM)
270static ADDRESS_MAP_START( bluehawk_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
271   AM_RANGE(0x0000, 0xefff) AM_ROM
272   AM_RANGE(0xf000, 0xf7ff) AM_RAM
337273   AM_RANGE(0xf800, 0xf800) AM_READ(soundlatch_r)
338   AM_RANGE(0xf808, 0xf809) AM_DEVREAD("ym", ym2151_r)
339   AM_RANGE(0xf80a, 0xf80a) AM_DEVREAD("oki", okim6295_r)
274   AM_RANGE(0xf808, 0xf809) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
275   AM_RANGE(0xf80a, 0xf80a) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w)
340276ADDRESS_MAP_END
341277
342static ADDRESS_MAP_START( bluehawk_sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
343   AM_RANGE(0x0000, 0xefff) AM_WRITE(SMH_ROM)
344   AM_RANGE(0xf000, 0xf7ff) AM_WRITE(SMH_RAM)
345   AM_RANGE(0xf808, 0xf809) AM_DEVWRITE("ym", ym2151_w)
346   AM_RANGE(0xf80a, 0xf80a) AM_DEVWRITE("oki", okim6295_w)
347ADDRESS_MAP_END
348
349278/***************************************************************************
350279
351280    Z80 Generic port definitions
r4679r4680
805734
806735static void irqhandler(const device_config *device, int irq)
807736{
808   cpu_set_input_line(device->machine->cpu[1],0,irq ? ASSERT_LINE : CLEAR_LINE);
737   cputag_set_input_line(device->machine, "audiocpu", 0, irq ? ASSERT_LINE : CLEAR_LINE);
809738}
810739
811740static READ8_DEVICE_HANDLER( unk_r )
r4679r4680
887816
888817   /* basic machine hardware */
889818   MDRV_CPU_ADD("maincpu", Z80, 8000000)   /* ??? */
890   MDRV_CPU_PROGRAM_MAP(lastday_readmem,lastday_writemem)
819   MDRV_CPU_PROGRAM_MAP(lastday_map,0)
891820   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
892821
893822   MDRV_CPU_ADD("audiocpu", Z80, 4000000)   /* ??? */
894   MDRV_CPU_PROGRAM_MAP(lastday_sound_readmem,lastday_sound_writemem)
823   MDRV_CPU_PROGRAM_MAP(lastday_sound_map,0)
895824
896825   MDRV_MACHINE_START(lastday)
897826
r4679r4680
920849
921850   /* basic machine hardware */
922851   MDRV_CPU_ADD("maincpu", Z80, 8000000)   /* ??? */
923   MDRV_CPU_PROGRAM_MAP(gulfstrm_readmem,pollux_writemem)
852   MDRV_CPU_PROGRAM_MAP(gulfstrm_map,0)
924853   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
925854
926855   MDRV_CPU_ADD("audiocpu", Z80, 4000000)   /* ??? */
927   MDRV_CPU_PROGRAM_MAP(lastday_sound_readmem,lastday_sound_writemem)
856   MDRV_CPU_PROGRAM_MAP(lastday_sound_map,0)
928857
929858   MDRV_MACHINE_START(lastday)
930859
r4679r4680
953882
954883   /* basic machine hardware */
955884   MDRV_CPU_ADD("maincpu", Z80, 8000000)   /* ??? */
956   MDRV_CPU_PROGRAM_MAP(pollux_readmem,pollux_writemem)
885   MDRV_CPU_PROGRAM_MAP(pollux_map,0)
957886   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
958887
959888   MDRV_CPU_ADD("audiocpu", Z80, 4000000)   /* ??? */
960   MDRV_CPU_PROGRAM_MAP(pollux_sound_readmem,pollux_sound_writemem)
889   MDRV_CPU_PROGRAM_MAP(pollux_sound_map,0)
961890
962891   MDRV_MACHINE_START(lastday)
963892
r4679r4680
986915
987916   /* basic machine hardware */
988917   MDRV_CPU_ADD("maincpu", Z80, 8000000)   /* ??? */
989   MDRV_CPU_PROGRAM_MAP(bluehawk_readmem,bluehawk_writemem)
918   MDRV_CPU_PROGRAM_MAP(bluehawk_map,0)
990919   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
991920
992921   MDRV_CPU_ADD("audiocpu", Z80, 4000000)   /* ??? */
993   MDRV_CPU_PROGRAM_MAP(bluehawk_sound_readmem,bluehawk_sound_writemem)
922   MDRV_CPU_PROGRAM_MAP(bluehawk_sound_map,0)
994923
995924   MDRV_MACHINE_START(lastday)
996925
r4679r4680
1019948
1020949   /* basic machine hardware */
1021950   MDRV_CPU_ADD("maincpu", Z80, 8000000)   /* ??? */
1022   MDRV_CPU_PROGRAM_MAP(flytiger_readmem,flytiger_writemem)
951   MDRV_CPU_PROGRAM_MAP(flytiger_map,0)
1023952   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
1024953
1025954   MDRV_CPU_ADD("audiocpu", Z80, 4000000)   /* ??? */
1026   MDRV_CPU_PROGRAM_MAP(bluehawk_sound_readmem,bluehawk_sound_writemem)
955   MDRV_CPU_PROGRAM_MAP(bluehawk_sound_map,0)
1027956
1028957   MDRV_MACHINE_START(lastday)
1029958
r4679r4680
1052981
1053982   /* basic machine hardware */
1054983   MDRV_CPU_ADD("maincpu", Z80, 8000000)   /* ??? */
1055   MDRV_CPU_PROGRAM_MAP(primella_readmem,primella_writemem)
984   MDRV_CPU_PROGRAM_MAP(primella_map,0)
1056985   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
1057986
1058987   MDRV_CPU_ADD("audiocpu", Z80, 4000000)   /* ??? */
1059   MDRV_CPU_PROGRAM_MAP(bluehawk_sound_readmem,bluehawk_sound_writemem)
988   MDRV_CPU_PROGRAM_MAP(bluehawk_sound_map,0)
1060989
1061990   MDRV_MACHINE_START(lastday)
1062991
r4679r4680
10911020
10921021   /* basic machine hardware */
10931022   MDRV_CPU_ADD("maincpu", M68000, 8000000)   /* measured on super-x */
1094   MDRV_CPU_PROGRAM_MAP(rshark_readmem,rshark_writemem)
1023   MDRV_CPU_PROGRAM_MAP(rshark_map,0)
10951024   MDRV_CPU_VBLANK_INT_HACK(rshark_interrupt,2)   /* 5 and 6 */
10961025
10971026   MDRV_CPU_ADD("audiocpu", Z80, 4000000)   /* measured on super-x */
1098   MDRV_CPU_PROGRAM_MAP(bluehawk_sound_readmem,bluehawk_sound_writemem)
1027   MDRV_CPU_PROGRAM_MAP(bluehawk_sound_map,0)
10991028
11001029   /* video hardware */
11011030   MDRV_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM)
r4679r4680
11221051
11231052   /* basic machine hardware */
11241053   MDRV_CPU_ADD("maincpu", M68000, 8000000)   /* measured on super-x */
1125   MDRV_CPU_PROGRAM_MAP(superx_readmem,superx_writemem)
1054   MDRV_CPU_PROGRAM_MAP(superx_map,0)
11261055   MDRV_CPU_VBLANK_INT_HACK(rshark_interrupt,2)   /* 5 and 6 */
11271056
11281057   MDRV_CPU_ADD("audiocpu", Z80, 4000000)   /* measured on super-x */
1129   MDRV_CPU_PROGRAM_MAP(bluehawk_sound_readmem,bluehawk_sound_writemem)
1058   MDRV_CPU_PROGRAM_MAP(bluehawk_sound_map,0)
11301059
11311060   /* video hardware */
11321061   MDRV_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM)
r4679r4680
11531082
11541083   /* basic machine hardware */
11551084   MDRV_CPU_ADD("maincpu", M68000, 10000000)
1156   MDRV_CPU_PROGRAM_MAP(popbingo_readmem,popbingo_writemem)
1085   MDRV_CPU_PROGRAM_MAP(popbingo_map,0)
11571086   MDRV_CPU_VBLANK_INT_HACK(rshark_interrupt,2)   /* 5 and 6 */
11581087
11591088   MDRV_CPU_ADD("audiocpu", Z80, 4000000)   /* measured on super-x */
1160   MDRV_CPU_PROGRAM_MAP(bluehawk_sound_readmem,bluehawk_sound_writemem)
1089   MDRV_CPU_PROGRAM_MAP(bluehawk_sound_map,0)
11611090
11621091   /* video hardware */
11631092   MDRV_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM)
src/mame/drivers/brkthru.c
r4679r4680
7272static WRITE8_HANDLER( brkthru_1803_w )
7373{
7474   /* bit 0 = NMI enable */
75   cpu_interrupt_enable(space->machine->cpu[0], ~data & 1);
75   cpu_interrupt_enable(cputag_get_cpu(space->machine, "maincpu"), ~data & 1);
7676
7777   /* bit 1 = ? maybe IRQ acknowledge */
7878}
7979static WRITE8_HANDLER( darwin_0803_w )
8080{
8181   /* bit 0 = NMI enable */
82   /*cpu_interrupt_enable(space->machine->cpu[1], ~data & 1);*/
82   /*cpu_interrupt_enable(cputag_get_cpu(space->machine, "audiocpu"), ~data & 1);*/
8383   logerror("0803 %02X\n",data);
84   cpu_interrupt_enable(space->machine->cpu[0], data & 1);
84   cpu_interrupt_enable(cputag_get_cpu(space->machine, "maincpu"), data & 1);
8585   /* bit 1 = ? maybe IRQ acknowledge */
8686}
8787
8888static WRITE8_HANDLER( brkthru_soundlatch_w )
8989{
9090   soundlatch_w(space,offset,data);
91   cpu_set_input_line(space->machine->cpu[1],INPUT_LINE_NMI,PULSE_LINE);
91   cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
9292}
9393
9494static INPUT_CHANGED( coin_inserted )
9595{
9696   /* coin insertion causes an IRQ */
97   cpu_set_input_line(field->port->machine->cpu[0], 0, newval ? CLEAR_LINE : ASSERT_LINE);
97   cputag_set_input_line(field->port->machine, "maincpu", 0, newval ? CLEAR_LINE : ASSERT_LINE);
9898}
9999
100100
r4679r4680
324324/* handler called by the 3812 emulator when the internal timers cause an IRQ */
325325static void irqhandler(const device_config *device, int linestate)
326326{
327   cpu_set_input_line(device->machine->cpu[1],M6809_IRQ_LINE,linestate);
327   cputag_set_input_line(device->machine, "audiocpu", M6809_IRQ_LINE, linestate);
328328}
329329
330330static const ym3526_interface ym3526_config =
src/mame/drivers/williams.c
r4679r4680
527527   const device_config *pia_1 = devtag_get_device(space->machine, "pia_1");
528528
529529   /* this routine dynamically installs the memory mapped above from c000-cfff */
530   memory_install_write8_handler    (space, 0xc000, 0xc00f, 0, 0x03e0, SMH_BANK4);
530   memory_install_write8_handler    (space, 0xc000, 0xc00f, 0, 0x03e0, (write8_space_func)SMH_BANK(4));
531531   memory_install_write8_handler    (space, 0xc010, 0xc01f, 0, 0x03e0, defender_video_control_w);
532532   memory_install_write8_handler    (space, 0xc3ff, 0xc3ff, 0, 0,      williams_watchdog_reset_w);
533   memory_install_readwrite8_handler(space, 0xc400, 0xc4ff, 0, 0x0300, SMH_BANK3, williams_cmos_w);
533   memory_install_readwrite8_handler(space, 0xc400, 0xc4ff, 0, 0x0300, (read8_space_func)SMH_BANK(3), williams_cmos_w);
534534   memory_install_read8_handler     (space, 0xc800, 0xcbff, 0, 0x03e0, williams_video_counter_r);
535535   memory_install_readwrite8_device_handler(space, pia_1, 0xcc00, 0xcc03, 0, 0x03e0, pia6821_r, pia6821_w);
536536   memory_install_readwrite8_device_handler(space, pia_0, 0xcc04, 0xcc07, 0, 0x03e0, pia6821_r, pia6821_w);
r4679r4680
547547 *************************************/
548548
549549static ADDRESS_MAP_START( williams_map, ADDRESS_SPACE_PROGRAM, 8 )
550   AM_RANGE(0x0000, 0x8fff) AM_READWRITE(SMH_BANK1, SMH_RAM) AM_BASE(&williams_videoram)
550   AM_RANGE(0x0000, 0x8fff) AM_READWRITE(SMH_BANK(1), SMH_RAM) AM_BASE(&williams_videoram)
551551   AM_RANGE(0x9000, 0xbfff) AM_RAM
552552   AM_RANGE(0xc000, 0xc00f) AM_MIRROR(0x03f0) AM_WRITE(SMH_RAM) AM_BASE(&paletteram)
553553   AM_RANGE(0xc804, 0xc807) AM_MIRROR(0x00f0) AM_DEVREADWRITE("pia_0", pia6821_r, pia6821_w)
r4679r4680
562562
563563
564564static ADDRESS_MAP_START( williams_extra_ram_map, ADDRESS_SPACE_PROGRAM, 8 )
565   AM_RANGE(0x0000, 0x8fff) AM_READWRITE(SMH_BANK1, SMH_RAM) AM_BASE(&williams_videoram)
565   AM_RANGE(0x0000, 0x8fff) AM_READWRITE(SMH_BANK(1), SMH_RAM) AM_BASE(&williams_videoram)
566566   AM_RANGE(0x9000, 0xbfff) AM_RAM
567567   AM_RANGE(0xc000, 0xc00f) AM_MIRROR(0x03f0) AM_WRITE(SMH_RAM) AM_BASE(&paletteram)
568568   AM_RANGE(0xc804, 0xc807) AM_MIRROR(0x00f0) AM_DEVREADWRITE("pia_0", pia6821_r, pia6821_w)
r4679r4680
585585 *************************************/
586586
587587static ADDRESS_MAP_START( blaster_map, ADDRESS_SPACE_PROGRAM, 8 )
588   AM_RANGE(0x0000, 0x3fff) AM_READWRITE(SMH_BANK1, SMH_RAM) AM_BASE(&williams_videoram)
589   AM_RANGE(0x4000, 0x8fff) AM_READWRITE(SMH_BANK2, SMH_RAM)
588   AM_RANGE(0x0000, 0x3fff) AM_READWRITE(SMH_BANK(1), SMH_RAM) AM_BASE(&williams_videoram)
589   AM_RANGE(0x4000, 0x8fff) AM_READWRITE(SMH_BANK(2), SMH_RAM)
590590   AM_RANGE(0xbb00, 0xbbff) AM_WRITE(SMH_RAM) AM_BASE(&blaster_palette_0)
591591   AM_RANGE(0xbc00, 0xbcff) AM_WRITE(SMH_RAM) AM_BASE(&blaster_scanline_control)
592592   AM_RANGE(0x9000, 0xbfff) AM_RAM
r4679r4680
613613 *************************************/
614614
615615static ADDRESS_MAP_START( williams2_map, ADDRESS_SPACE_PROGRAM, 8 )
616   AM_RANGE(0x0000, 0x7fff) AM_READWRITE(SMH_BANK1, SMH_RAM) AM_BASE(&williams_videoram)
616   AM_RANGE(0x0000, 0x7fff) AM_READWRITE(SMH_BANK(1), SMH_RAM) AM_BASE(&williams_videoram)
617617   AM_RANGE(0x8000, 0xbfff) AM_RAM
618618   AM_RANGE(0xc000, 0xc7ff) AM_RAM_WRITE(williams2_tileram_w) AM_BASE(&williams2_tileram)
619619   AM_RANGE(0xc800, 0xc87f) AM_WRITE(williams2_bank_select_w)
r4679r4680
635635
636636
637637static ADDRESS_MAP_START( williams2_extra_ram_map, ADDRESS_SPACE_PROGRAM, 8 )
638   AM_RANGE(0x0000, 0x7fff) AM_READWRITE(SMH_BANK1, SMH_RAM) AM_BASE(&williams_videoram)
638   AM_RANGE(0x0000, 0x7fff) AM_READWRITE(SMH_BANK(1), SMH_RAM) AM_BASE(&williams_videoram)
639639   AM_RANGE(0x8000, 0xbfff) AM_RAM
640640   AM_RANGE(0xc000, 0xc7ff) AM_RAM_WRITE(williams2_tileram_w) AM_BASE(&williams2_tileram)
641641   AM_RANGE(0xc800, 0xc87f) AM_WRITE(williams2_bank_select_w)
r4679r4680
27232723   CONFIGURE_BLITTER(WILLIAMS_BLITTER_NONE, 0x0000);
27242724
27252725   /* install a handler to catch protection checks */
2726   mayday_protection = memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xa190, 0xa191, 0, 0, mayday_protection_r);
2726   mayday_protection = memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xa190, 0xa191, 0, 0, mayday_protection_r);
27272727}
27282728
27292729
r4679r4680
27572757   CONFIGURE_BLITTER(WILLIAMS_BLITTER_SC01, 0xc000);
27582758
27592759   /* bubbles has a full 8-bit-wide CMOS */
2760   memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xcc00, 0xcfff, 0, 0, bubbles_cmos_w);
2760   memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xcc00, 0xcfff, 0, 0, bubbles_cmos_w);
27612761}
27622762
27632763
r4679r4680
27982798   CONFIGURE_BLITTER(WILLIAMS_BLITTER_SC01, 0xc000);
27992799
28002800   /* add a third PIA */
2801   memory_install_readwrite8_device_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), pia_3, 0xc808, 0xc80b, 0, 0, pia6821_r, pia6821_w);
2801   memory_install_readwrite8_device_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), pia_3, 0xc808, 0xc80b, 0, 0, pia6821_r, pia6821_w);
28022802
28032803   /* install extra input handlers */
2804   memory_install_read_port_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xc800, 0xc800, 0, 0, "AN0");
2805   memory_install_read_port_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xc801, 0xc801, 0, 0, "AN1");
2806   memory_install_read_port_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xc802, 0xc802, 0, 0, "AN2");
2807   memory_install_read_port_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xc803, 0xc803, 0, 0, "AN3");
2804   memory_install_read_port_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xc800, 0xc800, 0, 0, "AN0");
2805   memory_install_read_port_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xc801, 0xc801, 0, 0, "AN1");
2806   memory_install_read_port_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xc802, 0xc802, 0, 0, "AN2");
2807   memory_install_read_port_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xc803, 0xc803, 0, 0, "AN3");
28082808}
28092809
28102810
28112811static DRIVER_INIT( alienar )
28122812{
28132813   CONFIGURE_BLITTER(WILLIAMS_BLITTER_SC01, 0xc000);
2814   memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xcbff, 0xcbff, 0, 0, SMH_NOP);
2814   memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xcbff, 0xcbff, 0, 0, (write8_space_func)SMH_NOP);
28152815}
28162816
28172817
28182818static DRIVER_INIT( alienaru )
28192819{
28202820   CONFIGURE_BLITTER(WILLIAMS_BLITTER_SC01, 0xc000);
2821   memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xcbff, 0xcbff, 0, 0, SMH_NOP);
2821   memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xcbff, 0xcbff, 0, 0, (write8_space_func)SMH_NOP);
28222822}
28232823
28242824
src/mame/drivers/fuukifg3.c
r4679r4680
255255
256256// Lines with empty comment are for debug only
257257
258static ADDRESS_MAP_START( fuuki32_readmem, ADDRESS_SPACE_PROGRAM, 32 )
259   AM_RANGE(0x000000, 0x1fffff) AM_READ(SMH_ROM)
260   AM_RANGE(0x400000, 0x40ffff) AM_READ(SMH_RAM) // Work RAM
261   AM_RANGE(0x410000, 0x41ffff) AM_READ(SMH_RAM) // Work RAM (used by asurabus)
262   AM_RANGE(0x500000, 0x501fff) AM_READ(SMH_RAM) // Tilemap 1
263   AM_RANGE(0x502000, 0x503fff) AM_READ(SMH_RAM) // Tilemap 2
264   AM_RANGE(0x504000, 0x505fff) AM_READ(SMH_RAM) // Tilemap bg
265   AM_RANGE(0x506000, 0x507fff) AM_READ(SMH_RAM) // Tilemap bg2
266   AM_RANGE(0x508000, 0x517fff) AM_READ(SMH_RAM) // More tilemap, or linescroll? Seems to be empty all of the time
267   AM_RANGE(0x600000, 0x601fff) AM_READ(SMH_RAM) // Sprites
258static ADDRESS_MAP_START( fuuki32_map, ADDRESS_SPACE_PROGRAM, 32 )
259   AM_RANGE(0x000000, 0x1fffff) AM_ROM                                                      // ROM
268260
269   AM_RANGE(0x700000, 0x703fff) AM_READ(SMH_RAM) // Palette
261   AM_RANGE(0x400000, 0x40ffff) AM_RAM                                                      // Work RAM
262   AM_RANGE(0x410000, 0x41ffff) AM_RAM                                                      // Work RAM (used by asurabus)
270263
271   AM_RANGE(0x800000, 0x800003) AM_READ_PORT("800000") // Coin
272   AM_RANGE(0x810000, 0x810003) AM_READ_PORT("810000") // Player Inputs
273   AM_RANGE(0x880000, 0x880003) AM_READ_PORT("880000") // Service + DIPS
274   AM_RANGE(0x890000, 0x890003) AM_READ_PORT("890000") // More DIPS
264   AM_RANGE(0x500000, 0x501fff) AM_RAM_WRITE(fuuki32_vram_0_w) AM_BASE(&fuuki32_vram_0)               // Tilemap 1
265   AM_RANGE(0x502000, 0x503fff) AM_RAM_WRITE(fuuki32_vram_1_w) AM_BASE(&fuuki32_vram_1)               // Tilemap 2
266   AM_RANGE(0x504000, 0x505fff) AM_RAM_WRITE(fuuki32_vram_2_w) AM_BASE(&fuuki32_vram_2)               // Tilemap bg
267   AM_RANGE(0x506000, 0x507fff) AM_RAM_WRITE(fuuki32_vram_3_w) AM_BASE(&fuuki32_vram_3)               // Tilemap bg2
268   AM_RANGE(0x508000, 0x517fff) AM_RAM                                                      // More tilemap, or linescroll? Seems to be empty all of the time
275269
276   AM_RANGE(0x8c0000, 0x8c001f) AM_READ(SMH_RAM)// Video Registers
270   AM_RANGE(0x600000, 0x601fff) AM_RAM AM_BASE(&spriteram32) AM_SIZE(&spriteram_size)                  // Sprites
271   AM_RANGE(0x700000, 0x703fff) AM_RAM_WRITE(paletteram32_xRRRRRGGGGGBBBBB_dword_w) AM_BASE(&paletteram32)   // Palette
277272
278/**/AM_RANGE(0x8d0000, 0x8d0003) AM_READ(SMH_RAM) // Flipscreen Related
279/**/AM_RANGE(0x8e0000, 0x8e0003) AM_READ(SMH_RAM) // Controls layer order
273   AM_RANGE(0x800000, 0x800003) AM_READ_PORT("800000") AM_WRITENOP                                 // Coin
274   AM_RANGE(0x810000, 0x810003) AM_READ_PORT("810000") AM_WRITENOP                                 // Player Inputs
275   AM_RANGE(0x880000, 0x880003) AM_READ_PORT("880000")                                          // Service + DIPS
276   AM_RANGE(0x890000, 0x890003) AM_READ_PORT("890000")                                          // More DIPS
280277
281   AM_RANGE(0x903fe0, 0x903fff) AM_READ(snd_020_r) // Shared with Z80
282//  AM_RANGE(0x903fe0, 0x903fe3) AM_READ(fuuki32_sound_command_r) // Shared with Z80
283//  AM_RANGE(0x903fe4, 0x903fff) AM_READ(SMH_RAM) // ??
284ADDRESS_MAP_END
278   AM_RANGE(0x8c0000, 0x8c001f) AM_RAM_WRITE(fuuki32_vregs_w) AM_BASE(&fuuki32_vregs)                  // Video Registers
285279
286static ADDRESS_MAP_START( fuuki32_writemem, ADDRESS_SPACE_PROGRAM, 32 )
287   AM_RANGE(0x000000, 0x1fffff) AM_WRITE(SMH_ROM)
288   AM_RANGE(0x400000, 0x40ffff) AM_WRITE(SMH_RAM) // Work RAM
289   AM_RANGE(0x410000, 0x41ffff) AM_WRITE(SMH_RAM) // Work RAM
290   AM_RANGE(0x500000, 0x501fff) AM_WRITE(fuuki32_vram_0_w) AM_BASE(&fuuki32_vram_0) // Tilemap 1
291   AM_RANGE(0x502000, 0x503fff) AM_WRITE(fuuki32_vram_1_w) AM_BASE(&fuuki32_vram_1) // Tilemap 2
292   AM_RANGE(0x504000, 0x505fff) AM_WRITE(fuuki32_vram_2_w) AM_BASE(&fuuki32_vram_2) // Tilemap bg
293   AM_RANGE(0x506000, 0x507fff) AM_WRITE(fuuki32_vram_3_w) AM_BASE(&fuuki32_vram_3) // Tilemap bg2
294   AM_RANGE(0x508000, 0x517fff) AM_WRITE(SMH_RAM) // More tilemap, or linescroll? Seems to be empty all of the time
280   AM_RANGE(0x8d0000, 0x8d0003) AM_RAM                                                    // Flipscreen Related
281/**/AM_RANGE(0x8e0000, 0x8e0003) AM_RAM AM_BASE(&fuuki32_priority)                                  // Controls layer order
295282
296   AM_RANGE(0x600000, 0x601fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram32) AM_SIZE(&spriteram_size   )   // Sprites
297   AM_RANGE(0x700000, 0x703fff) AM_WRITE(paletteram32_xRRRRRGGGGGBBBBB_dword_w) AM_BASE(&paletteram32) // Palette
283   AM_RANGE(0x903fe0, 0x903fff) AM_READWRITE(snd_020_r, snd_020_w)                               // Shared with Z80
284//  AM_RANGE(0x903fe0, 0x903fe3) AM_READ(fuuki32_sound_command_r)                                           // Shared with Z80
285//  AM_RANGE(0x903fe4, 0x903fff) AM_READ(SMH_RAM)                                                           // ??
298286
299   AM_RANGE(0x800000, 0x800003) AM_WRITENOP // Clear buffered inputs
300   AM_RANGE(0x810000, 0x810003) AM_WRITENOP // Clear buffered inputs
301
302   AM_RANGE(0x8c0000, 0x8c001f) AM_WRITE(fuuki32_vregs_w) AM_BASE(&fuuki32_vregs)   // Video Registers
303
304   AM_RANGE(0x8d0000, 0x8d0003) AM_WRITE(SMH_RAM) // Flipscreen Related
305   AM_RANGE(0x8e0000, 0x8e0003) AM_WRITE(SMH_RAM) AM_BASE(&fuuki32_priority) // Controls layer order
306
307   AM_RANGE(0x903fe0, 0x903fff) AM_WRITE(snd_020_w) // z80 comms
308
309287   AM_RANGE(0xa00000, 0xa00003) AM_WRITE(SMH_RAM) AM_BASE(&fuuki32_tilebank)
310288ADDRESS_MAP_END
311289
r4679r4680
334312   fuuki32_shared_ram[offset] = data;
335313}
336314
337static ADDRESS_MAP_START( fuuki32_sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
338   AM_RANGE(0x0000, 0x5fff) AM_READ(SMH_ROM      )   // ROM
339   AM_RANGE(0x6000, 0x6fff) AM_READ(SMH_RAM      )   // RAM
340   AM_RANGE(0x7ff0, 0x7fff) AM_READ(snd_z80_r)
341   AM_RANGE(0x8000, 0xffff) AM_READ(SMH_BANK1      )   // ROM
315static ADDRESS_MAP_START( fuuki32_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
316   AM_RANGE(0x0000, 0x5fff) AM_ROM                        // ROM
317   AM_RANGE(0x6000, 0x6fff) AM_RAM                        // RAM
318   AM_RANGE(0x7ff0, 0x7fff) AM_READWRITE(snd_z80_r, snd_z80_w)
319   AM_RANGE(0x8000, 0xffff) AM_ROMBANK(1)                  // ROM
342320ADDRESS_MAP_END
343321
344static ADDRESS_MAP_START( fuuki32_sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
345   AM_RANGE(0x0000, 0x5fff) AM_WRITE(SMH_ROM      )   // ROM
346   AM_RANGE(0x6000, 0x6fff) AM_WRITE(SMH_RAM      )   // RAM
347   AM_RANGE(0x7ff0, 0x7fff) AM_WRITE(snd_z80_w)
348   AM_RANGE(0x8000, 0xffff) AM_WRITE(SMH_ROM      )   // ROM
349ADDRESS_MAP_END
350
351322static ADDRESS_MAP_START( fuuki32_sound_io_map, ADDRESS_SPACE_IO, 8 )
352323   ADDRESS_MAP_GLOBAL_MASK(0xff)
353324   AM_RANGE(0x00, 0x00) AM_WRITE(fuuki32_sound_bw_w)
r4679r4680
541512
542513static TIMER_CALLBACK( level_1_interrupt_callback )
543514{
544   cpu_set_input_line(machine->cpu[0], 1, HOLD_LINE);
515   cputag_set_input_line(machine, "maincpu", 1, HOLD_LINE);
545516   timer_set(machine, video_screen_get_time_until_pos(machine->primary_screen, 248, 0), NULL, 0, level_1_interrupt_callback);
546517}
547518
548519
549520static TIMER_CALLBACK( vblank_interrupt_callback )
550521{
551   cpu_set_input_line(machine->cpu[0], 3, HOLD_LINE);   // VBlank IRQ
522   cputag_set_input_line(machine, "maincpu", 3, HOLD_LINE);   // VBlank IRQ
552523   timer_set(machine, video_screen_get_time_until_vblank_start(machine->primary_screen), NULL, 0, vblank_interrupt_callback);
553524}
554525
555526
556527static TIMER_CALLBACK( raster_interrupt_callback )
557528{
558   cpu_set_input_line(machine->cpu[0], 5, HOLD_LINE);   // Raster Line IRQ
529   cputag_set_input_line(machine, "maincpu", 5, HOLD_LINE);   // Raster Line IRQ
559530   video_screen_update_partial(machine->primary_screen, video_screen_get_vpos(machine->primary_screen));
560531   timer_adjust_oneshot(raster_interrupt_timer, video_screen_get_frame_period(machine->primary_screen), 0);
561532}
r4679r4680
579550
580551static void irqhandler(const device_config *device, int irq)
581552{
582   cpu_set_input_line(device->machine->cpu[1], 0, irq ? ASSERT_LINE : CLEAR_LINE);
553   cputag_set_input_line(device->machine, "soundcpu", 0, irq ? ASSERT_LINE : CLEAR_LINE);
583554}
584555
585556static const ymf278b_interface fuuki32_ymf278b_interface =
r4679r4680
591562
592563   /* basic machine hardware */
593564   MDRV_CPU_ADD("maincpu", M68EC020, CPU_CLOCK) /* 20MHz verified */
594   MDRV_CPU_PROGRAM_MAP(fuuki32_readmem,fuuki32_writemem)
565   MDRV_CPU_PROGRAM_MAP(fuuki32_map,0)
595566
596567   MDRV_CPU_ADD("soundcpu", Z80, SOUND_CPU_CLOCK) /* 6MHz verified */
597   MDRV_CPU_PROGRAM_MAP(fuuki32_sound_readmem,fuuki32_sound_writemem)
568   MDRV_CPU_PROGRAM_MAP(fuuki32_sound_map,0)
598569   MDRV_CPU_IO_MAP(fuuki32_sound_io_map,0)
599570
600571   MDRV_MACHINE_START(fuuki32)
r4679r4680
732703
733704GAME( 1998, asurabld,   0, fuuki32, asurabld, 0, ROT0, "Fuuki", "Asura Blade - Sword of Dynasty (Japan)", GAME_IMPERFECT_GRAPHICS )
734705GAME( 2000, asurabus,   0, fuuki32, asurabld, 0, ROT0, "Fuuki", "Asura Buster - Eternal Warriors (Japan)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND ) // sounds loop forever?
735
src/mame/drivers/dec8.c
r4679r4680
4141#include "cpu/hd6309/hd6309.h"
4242#include "cpu/m6809/m6809.h"
4343#include "cpu/m6502/m6502.h"
44#include "cpu/mcs51/mcs51.h"
4445#include "sound/2203intf.h"
4546#include "sound/3812intf.h"
4647#include "sound/3526intf.h"
r4679r4680
5657/* Only used by ghostb, gondo, garyoret, other games can control buffering */
5758static VIDEO_EOF( dec8 )
5859{
59   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
60   buffer_spriteram_w(space,0,0);
60   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
61   buffer_spriteram_w(space, 0, 0);
6162}
6263
6364static READ8_HANDLER( i8751_h_r )
6465{
65   return i8751_return>>8; /* MSB */
66   return i8751_return >> 8; /* MSB */
6667}
6768
6869static READ8_HANDLER( i8751_l_r )
6970{
70   return i8751_return&0xff; /* LSB */
71   return i8751_return & 0xff; /* LSB */
7172}
7273
7374static WRITE8_HANDLER( i8751_reset_w )
7475{
75   i8751_return=0;
76   i8751_return = 0;
7677}
7778
7879/******************************************************************************/
r4679r4680
8182{
8283   int val = 1 << input_port_read(space->machine, "AN0");
8384
84   switch (offset) {
85   switch (offset)
86   {
8587      case 0: /* Rotary low byte */
8688         return ~(val & 0xff);
8789      case 1: /* Joystick = bottom 4 bits, rotary = top 4 */
r4679r4680
9496{
9597   int val = 1 << input_port_read(space->machine, "AN1");
9698
97   switch (offset) {
99   switch (offset)
100   {
98101      case 0: /* Rotary low byte */
99102         return ~(val & 0xff);
100103      case 1: /* Joystick = bottom 4 bits, rotary = top 4 */
r4679r4680
105108
106109/******************************************************************************/
107110
111/***************************************************
112*
113* Hook-up for games that we have a proper MCU dump.
114*
115***************************************************/
116
117static WRITE8_HANDLER( meikyuh_i8751_w )
118{
119   switch (offset)
120   {
121   case 0: /* High byte */
122      i8751_value = (i8751_value & 0xff) | (data << 8);
123      break;
124   case 1: /* Low byte */
125      i8751_value = (i8751_value & 0xff00) | data;
126      cputag_set_input_line(space->machine, "mcu", MCS51_INT1_LINE, ASSERT_LINE);
127      break;
128   }
129}
130
131/********************************
132*
133* MCU simulations
134*
135********************************/
136
108137static WRITE8_HANDLER( ghostb_i8751_w )
109138{
110   i8751_return=0;
139   i8751_return = 0;
111140
112   switch (offset) {
141   switch (offset)
142   {
113143   case 0: /* High byte */
114      i8751_value=(i8751_value&0xff) | (data<<8);
144      i8751_value = (i8751_value & 0xff) | (data << 8);
115145      break;
116146   case 1: /* Low byte */
117      i8751_value=(i8751_value&0xff00) | data;
147      i8751_value = (i8751_value & 0xff00) | data;
118148      break;
119149   }
120150
121   if (i8751_value==0x00aa) i8751_return=0x655;
122   if (i8751_value==0x021a) i8751_return=0x6e5; /* Ghostbusters ID */
123   if (i8751_value==0x021b) i8751_return=0x6e4; /* Meikyuu Hunter G ID */
151   if (i8751_value == 0x00aa) i8751_return = 0x655;
152   if (i8751_value == 0x021a) i8751_return = 0x6e5; /* Ghostbusters ID */
153   if (i8751_value == 0x021b) i8751_return = 0x6e4; /* Meikyuu Hunter G ID */
124154}
125155
156
157
126158static WRITE8_HANDLER( srdarwin_i8751_w )
127159{
128   static int coins,latch;
129   i8751_return=0;
160   static int coins, latch;
161   i8751_return = 0;
130162
131   switch (offset) {
163   switch (offset)
164   {
132165   case 0: /* High byte */
133      i8751_value=(i8751_value&0xff) | (data<<8);
166      i8751_value = (i8751_value & 0xff) | (data << 8);
134167      break;
135168   case 1: /* Low byte */
136      i8751_value=(i8751_value&0xff00) | data;
169      i8751_value = (i8751_value & 0xff00) | data;
137170      break;
138171   }
139172
140   if (i8751_value==0x0000) {i8751_return=0;coins=0;}
141   if (i8751_value==0x3063) i8751_return=0x9c; /* Protection - Japanese version */
142   if (i8751_value==0x306b) i8751_return=0x94; /* Protection - World version */
143   if ((i8751_value&0xff00)==0x4000) i8751_return=i8751_value; /* Coinage settings */
144    if (i8751_value==0x5000) i8751_return=((coins / 10) << 4) | (coins % 10); /* Coin request */
145    if (i8751_value==0x6000) {i8751_value=-1; coins--; } /* Coin clear */
173   if (i8751_value == 0x0000) {i8751_return = 0; coins = 0;}
174   if (i8751_value == 0x3063) i8751_return = 0x9c;            /* Protection - Japanese version */
175   if (i8751_value == 0x306b) i8751_return = 0x94;            /* Protection - World version */
176   if ((i8751_value & 0xff00) == 0x4000) i8751_return = i8751_value;   /* Coinage settings */
177    if (i8751_value == 0x5000) i8751_return =((coins / 10) << 4) | (coins % 10);   /* Coin request */
178    if (i8751_value == 0x6000) {i8751_value = -1; coins--; }   /* Coin clear */
146179   /* Nb:  Command 0x4000 for setting coinage options is not supported */
147    if ((input_port_read(space->machine, "FAKE") & 1) == 1) latch=1;
148    if ((input_port_read(space->machine, "FAKE") & 1) != 1 && latch) {coins++; latch=0;}
180    if ((input_port_read(space->machine, "FAKE") & 1) == 1) latch = 1;
181    if ((input_port_read(space->machine, "FAKE") & 1) != 1 && latch) {coins++; latch = 0;}
149182
150183   /* This next value is the index to a series of tables,
151184    each table controls the end of level bad guy, wrong values crash the
r4679r4680
183216    but Boss #6 is uncomfirmed as correct.
184217
185218*/
186   if (i8751_value==0x8000) i8751_return=0xf580 +  0; /* Boss #1: Snake + Bees */
187   if (i8751_value==0x8001) i8751_return=0xf580 + 30; /* Boss #2: 4 Corners */
188   if (i8751_value==0x8002) i8751_return=0xf580 + 26; /* Boss #3: Clock */
189   if (i8751_value==0x8003) i8751_return=0xf580 +  2; /* Boss #4: Pyramid */
190   if (i8751_value==0x8004) i8751_return=0xf580 +  6; /* Boss #5: Snake + Head Combo */
191   if (i8751_value==0x8005) i8751_return=0xf580 + 24; /* Boss #6: LED Panels */
192   if (i8751_value==0x8006) i8751_return=0xf580 + 28; /* Boss #7: Dragon */
193   if (i8751_value==0x8007) i8751_return=0xf580 + 32; /* Boss #8: Teleport */
194   if (i8751_value==0x8008) i8751_return=0xf580 + 38; /* Boss #9: Octopus (Pincer) */
195   if (i8751_value==0x8009) i8751_return=0xf580 + 40; /* Boss #10: Bird */
196   if (i8751_value==0x800a) i8751_return=0xf580 + 42; /* End Game(bad address?) */
219   if (i8751_value == 0x8000) i8751_return = 0xf580 +  0; /* Boss #1: Snake + Bees */
220   if (i8751_value == 0x8001) i8751_return = 0xf580 + 30; /* Boss #2: 4 Corners */
221   if (i8751_value == 0x8002) i8751_return = 0xf580 + 26; /* Boss #3: Clock */
222   if (i8751_value == 0x8003) i8751_return = 0xf580 +  2; /* Boss #4: Pyramid */
223   if (i8751_value == 0x8004) i8751_return = 0xf580 +  6; /* Boss #5: Snake + Head Combo */
224   if (i8751_value == 0x8005) i8751_return = 0xf580 + 24; /* Boss #6: LED Panels */
225   if (i8751_value == 0x8006) i8751_return = 0xf580 + 28; /* Boss #7: Dragon */
226   if (i8751_value == 0x8007) i8751_return = 0xf580 + 32; /* Boss #8: Teleport */
227   if (i8751_value == 0x8008) i8751_return = 0xf580 + 38; /* Boss #9: Octopus (Pincer) */
228   if (i8751_value == 0x8009) i8751_return = 0xf580 + 40; /* Boss #10: Bird */
229   if (i8751_value == 0x800a) i8751_return = 0xf580 + 42; /* End Game(bad address?) */
197230}
198231
199232static WRITE8_HANDLER( gondo_i8751_w )
200233{
201   static int coin1,coin2,latch,snd;
202   i8751_return=0;
234   static int coin1, coin2, latch,snd;
235   i8751_return = 0;
203236
204   switch (offset) {
237   switch (offset)
238   {
205239   case 0: /* High byte */
206      i8751_value=(i8751_value&0xff) | (data<<8);
207      if (int_enable) cpu_set_input_line (space->machine->cpu[0], M6809_IRQ_LINE, HOLD_LINE); /* IRQ on *high* byte only */
240      i8751_value = (i8751_value & 0xff) | (data << 8);
241      if (int_enable)
242         cputag_set_input_line (space->machine, "maincpu", M6809_IRQ_LINE, HOLD_LINE); /* IRQ on *high* byte only */
208243      break;
209244   case 1: /* Low byte */
210      i8751_value=(i8751_value&0xff00) | data;
245      i8751_value = (i8751_value & 0xff00) | data;
211246      break;
212247   }
213248
214249   /* Coins are controlled by the i8751 */
215    if ((input_port_read(space->machine, "I8751") & 3) == 3) latch=1;
216    if ((input_port_read(space->machine, "I8751") & 1) != 1 && latch) {coin1++; snd=1; latch=0;}
217    if ((input_port_read(space->machine, "I8751") & 2) != 2 && latch) {coin2++; snd=1; latch=0;}
250    if ((input_port_read(space->machine, "I8751") & 3) == 3) latch = 1;
251    if ((input_port_read(space->machine, "I8751") & 1) != 1 && latch) {coin1++; snd = 1; latch = 0;}
252    if ((input_port_read(space->machine, "I8751") & 2) != 2 && latch) {coin2++; snd = 1; latch = 0;}
218253
219254   /* Work out return values */
220   if (i8751_value==0x0000) {i8751_return=0; coin1=coin2=snd=0;}
221   if (i8751_value==0x038a)  i8751_return=0x375; /* Makyou Senshi ID */
222   if (i8751_value==0x038b)  i8751_return=0x374; /* Gondomania ID */
223   if ((i8751_value>>8)==0x04)  i8751_return=0x40f; /* Coinage settings (Not supported) */
224   if ((i8751_value>>8)==0x05) {i8751_return=0x500 | ((coin1 / 10) << 4) | (coin1 % 10);  } /* Coin 1 */
225   if ((i8751_value>>8)==0x06 && coin1 && !offset) {i8751_return=0x600; coin1--; } /* Coin 1 clear */
226   if ((i8751_value>>8)==0x07) {i8751_return=0x700 | ((coin2 / 10) << 4) | (coin2 % 10);  } /* Coin 2 */
227   if ((i8751_value>>8)==0x08 && coin2 && !offset) {i8751_return=0x800; coin2--; } /* Coin 2 clear */
255   if (i8751_value == 0x0000) {i8751_return = 0; coin1 = coin2 = snd = 0;}
256   if (i8751_value == 0x038a)  i8751_return = 0x375; /* Makyou Senshi ID */
257   if (i8751_value == 0x038b)  i8751_return = 0x374; /* Gondomania ID */
258   if ((i8751_value >> 8) == 0x04)  i8751_return = 0x40f; /* Coinage settings (Not supported) */
259   if ((i8751_value >> 8) == 0x05) {i8751_return = 0x500 | ((coin1 / 10) << 4) | (coin1 % 10);  } /* Coin 1 */
260   if ((i8751_value >> 8) == 0x06 && coin1 && !offset) {i8751_return = 0x600; coin1--; } /* Coin 1 clear */
261   if ((i8751_value >> 8) == 0x07) {i8751_return = 0x700 | ((coin2 / 10) << 4) | (coin2 % 10);  } /* Coin 2 */
262   if ((i8751_value >> 8) == 0x08 && coin2 && !offset) {i8751_return = 0x800; coin2--; } /* Coin 2 clear */
228263   /* Commands 0x9xx do nothing */
229   if ((i8751_value>>8)==0x0a) {i8751_return=0xa00 | snd; if (snd) snd=0; }
264   if ((i8751_value >> 8) == 0x0a) {i8751_return = 0xa00 | snd; if (snd) snd = 0; }
230265}
231266
232267static WRITE8_HANDLER( shackled_i8751_w )
233268{
234   static int coin1,coin2,latch=0;
235   i8751_return=0;
269   static int coin1, coin2, latch = 0;
270   i8751_return = 0;
236271
237   switch (offset) {
272   switch (offset)
273   {
238274   case 0: /* High byte */
239      i8751_value=(i8751_value&0xff) | (data<<8);
240      cpu_set_input_line (space->machine->cpu[1], M6809_FIRQ_LINE, HOLD_LINE); /* Signal main cpu */
275      i8751_value = (i8751_value & 0xff) | (data << 8);
276      cputag_set_input_line(space->machine, "sub", M6809_FIRQ_LINE, HOLD_LINE); /* Signal main cpu */
241277      break;
242278   case 1: /* Low byte */
243      i8751_value=(i8751_value&0xff00) | data;
279      i8751_value = (i8751_value & 0xff00) | data;
244280      break;
245281   }
246282
247283   /* Coins are controlled by the i8751 */
248    if (/*(input_port_read(space->machine, "IN2") & 3) == 3*/!latch) {latch=1;coin1=coin2=0;}
249    if ((input_port_read(space->machine, "IN2") & 1) != 1 && latch) {coin1=1; latch=0;}
250    if ((input_port_read(space->machine, "IN2") & 2) != 2 && latch) {coin2=1; latch=0;}
284    if (/*(input_port_read(space->machine, "IN2") & 3) == 3*/!latch) {latch = 1; coin1 = coin2 = 0;}
285    if ((input_port_read(space->machine, "IN2") & 1) != 1 && latch)  {coin1 = 1; latch = 0;}
286    if ((input_port_read(space->machine, "IN2") & 2) != 2 && latch)  {coin2 = 1; latch = 0;}
251287
252   if (i8751_value==0x0050) i8751_return=0; /* Breywood ID */
253   if (i8751_value==0x0051) i8751_return=0; /* Shackled ID */
254   if (i8751_value==0x0102) i8751_return=0; /* ?? */
255   if (i8751_value==0x0101) i8751_return=0; /* ?? */
256   if (i8751_value==0x8101) i8751_return=((coin2 / 10) << 4) | (coin2 % 10) |
257         ((((coin1 / 10) << 4) | (coin1 % 10))<<8); /* Coins */
288   if (i8751_value == 0x0050) i8751_return = 0; /* Breywood ID */
289   if (i8751_value == 0x0051) i8751_return = 0; /* Shackled ID */
290   if (i8751_value == 0x0102) i8751_return = 0; /* ?? */
291   if (i8751_value == 0x0101) i8751_return = 0; /* ?? */
292   if (i8751_value == 0x8101) i8751_return = ((coin2 / 10) << 4) | (coin2 % 10) |
293         ((((coin1 / 10) << 4) | (coin1 % 10)) << 8); /* Coins */
258294}
259295
260296static WRITE8_HANDLER( lastmiss_i8751_w )
261297{
262   static int coin,latch=0,snd;
263   i8751_return=0;
298   static int coin, latch = 0, snd;
299   i8751_return = 0;
264300
265   switch (offset) {
301   switch (offset)
302   {
266303   case 0: /* High byte */
267      i8751_value=(i8751_value&0xff) | (data<<8);
268      cpu_set_input_line (space->machine->cpu[0], M6809_FIRQ_LINE, HOLD_LINE); /* Signal main cpu */
304      i8751_value = (i8751_value & 0xff) | (data << 8);
305      cputag_set_input_line(space->machine, "maincpu", M6809_FIRQ_LINE, HOLD_LINE); /* Signal main cpu */
269306      break;
270307   case 1: /* Low byte */
271      i8751_value=(i8751_value&0xff00) | data;
308      i8751_value = (i8751_value & 0xff00) | data;
272309      break;
273310   }
274311
275   if(offset==0)
312   if(offset == 0)
276313   {
277314      /* Coins are controlled by the i8751 */
278       if ((input_port_read(space->machine, "IN2") & 3) == 3 && !latch) latch=1;
279       if ((input_port_read(space->machine, "IN2") & 3) != 3 && latch) {coin++; latch=0;snd=0x400;i8751_return=0x400;return;}
280      if (i8751_value==0x007a) i8751_return=0x0185; /* Japan ID code */
281      if (i8751_value==0x007b) i8751_return=0x0184; /* USA ID code */
282      if (i8751_value==0x0001) {coin=snd=0;}//???
283      if (i8751_value==0x0000) {i8751_return=0x0184;}//???
284      if (i8751_value==0x0401) i8751_return=0x0184; //???
285      if ((i8751_value>>8)==0x01) i8751_return=0x0184; /* Coinage setup */
286      if ((i8751_value>>8)==0x02) {i8751_return=snd | ((coin / 10) << 4) | (coin % 10); snd=0;} /* Coin return */
287      if ((i8751_value>>8)==0x03 && coin) {i8751_return=0; coin--; } /* Coin clear */
315       if ((input_port_read(space->machine, "IN2") & 3) == 3 && !latch) latch = 1;
316       if ((input_port_read(space->machine, "IN2") & 3) != 3 && latch) {coin++; latch = 0; snd = 0x400; i8751_return = 0x400; return;}
317      if (i8751_value == 0x007a) i8751_return = 0x0185; /* Japan ID code */
318      if (i8751_value == 0x007b) i8751_return = 0x0184; /* USA ID code */
319      if (i8751_value == 0x0001) {coin = snd = 0;}//???
320      if (i8751_value == 0x0000) {i8751_return = 0x0184;}//???
321      if (i8751_value == 0x0401) i8751_return = 0x0184; //???
322      if ((i8751_value >> 8) == 0x01) i8751_return = 0x0184; /* Coinage setup */
323      if ((i8751_value >> 8) == 0x02) {i8751_return = snd | ((coin / 10) << 4) | (coin % 10); snd = 0;} /* Coin return */
324      if ((i8751_value >> 8) == 0x03 && coin) {i8751_return = 0; coin--; } /* Coin clear */
288325   }
289326}
290327
291328static WRITE8_HANDLER( csilver_i8751_w )
292329{
293   static int coin,latch=0,snd;
294   i8751_return=0;
330   static int coin, latch = 0, snd;
331   i8751_return = 0;
295332
296   switch (offset) {
333   switch (offset)
334   {
297335   case 0: /* High byte */
298      i8751_value=(i8751_value&0xff) | (data<<8);
299      cpu_set_input_line (space->machine->cpu[0], M6809_FIRQ_LINE, HOLD_LINE); /* Signal main cpu */
336      i8751_value = (i8751_value & 0xff) | (data << 8);
337      cputag_set_input_line (space->machine, "maincpu", M6809_FIRQ_LINE, HOLD_LINE); /* Signal main cpu */
300338      break;
301339   case 1: /* Low byte */
302      i8751_value=(i8751_value&0xff00) | data;
340      i8751_value = (i8751_value & 0xff00) | data;
303341      break;
304342   }
305343
306   if(offset==0)
344   if(offset == 0)
307345   {
308346      /* Coins are controlled by the i8751 */
309       if ((input_port_read(space->machine, "IN2") & 3) == 3 && !latch) latch=1;
310       if ((input_port_read(space->machine, "IN2") & 3) != 3 && latch) {coin++; latch=0; snd=0x1200; i8751_return=0x1200;return;}
347       if ((input_port_read(space->machine, "IN2") & 3) == 3 && !latch) latch = 1;
348       if ((input_port_read(space->machine, "IN2") & 3) != 3 && latch) {coin++; latch = 0; snd = 0x1200; i8751_return = 0x1200; return;}
311349
312      if (i8751_value==0x054a) {i8751_return=~(0x4a); coin=0; snd=0;} /* Captain Silver (Japan) ID */
313      if (i8751_value==0x054c) {i8751_return=~(0x4c); coin=0; snd=0;} /* Captain Silver (World) ID */
314      if ((i8751_value>>8)==0x01) i8751_return=0; /* Coinage - Not Supported */
315      if ((i8751_value>>8)==0x02) {i8751_return=snd | coin; snd=0; } /* Coin Return */
316      if ((i8751_value>>8)==0x03 && coin) {i8751_return=0; coin--;} /* Coin Clear */
350      if (i8751_value == 0x054a) {i8751_return = ~(0x4a); coin = 0; snd = 0;} /* Captain Silver (Japan) ID */
351      if (i8751_value == 0x054c) {i8751_return = ~(0x4c); coin = 0; snd = 0;} /* Captain Silver (World) ID */
352      if ((i8751_value >> 8) == 0x01) i8751_return = 0; /* Coinage - Not Supported */
353      if ((i8751_value >> 8) == 0x02) {i8751_return = snd | coin; snd = 0; } /* Coin Return */
354      if ((i8751_value >> 8) == 0x03 && coin) {i8751_return = 0; coin--;} /* Coin Clear */
317355   }
318356}
319357
320358static WRITE8_HANDLER( garyoret_i8751_w )
321359{
322   static int coin1,coin2,latch;
323   i8751_return=0;
360   static int coin1, coin2, latch;
361   i8751_return = 0;
324362
325   switch (offset) {
363   switch (offset)
364   {
326365   case 0: /* High byte */
327      i8751_value=(i8751_value&0xff) | (data<<8);
366      i8751_value = (i8751_value & 0xff) | (data << 8);
328367      break;
329368   case 1: /* Low byte */
330      i8751_value=(i8751_value&0xff00) | data;
369      i8751_value = (i8751_value & 0xff00) | data;
331370      break;
332371   }
333372
334373   /* Coins are controlled by the i8751 */
335374    if ((input_port_read(space->machine, "I8751") & 3) == 3) latch=1;
336    if ((input_port_read(space->machine, "I8751") & 1) != 1 && latch) {coin1++; latch=0;}
337    if ((input_port_read(space->machine, "I8751") & 2) != 2 && latch) {coin2++; latch=0;}
375    if ((input_port_read(space->machine, "I8751") & 1) != 1 && latch) {coin1++; latch = 0;}
376    if ((input_port_read(space->machine, "I8751") & 2) != 2 && latch) {coin2++; latch = 0;}
338377
339378   /* Work out return values */
340   if ((i8751_value>>8)==0x00) {i8751_return=0; coin1=coin2=0;}
341   if ((i8751_value>>8)==0x01)  i8751_return=0x59a; /* ID */
342   if ((i8751_value>>8)==0x04)  i8751_return=i8751_value; /* Coinage settings (Not supported) */
343   if ((i8751_value>>8)==0x05) {i8751_return=0x00 | ((coin1 / 10) << 4) | (coin1 % 10);  } /* Coin 1 */
344   if ((i8751_value>>8)==0x06 && coin1 && !offset) {i8751_return=0x600; coin1--; } /* Coin 1 clear */
379   if ((i8751_value >> 8) == 0x00) {i8751_return = 0; coin1 = coin2 = 0;}
380   if ((i8751_value >> 8) == 0x01)  i8751_return = 0x59a; /* ID */
381   if ((i8751_value >> 8) == 0x04)  i8751_return = i8751_value; /* Coinage settings (Not supported) */
382   if ((i8751_value >> 8) == 0x05) {i8751_return = 0x00 | ((coin1 / 10) << 4) | (coin1 % 10);  } /* Coin 1 */
383   if ((i8751_value >> 8) == 0x06 && coin1 && !offset) {i8751_return = 0x600; coin1--; } /* Coin 1 clear */
345384}
346385
347386/******************************************************************************/
r4679r4680
369408    */
370409
371410   bankaddress = 0x10000 + (data >> 4) * 0x4000;
372   memory_set_bankptr(space->machine, 1,&RAM[bankaddress]);
411   memory_set_bankptr(space->machine, 1, &RAM[bankaddress]);
373412
374   if (data&1) int_enable=1; else int_enable=0;
375   if (data&2) nmi_enable=1; else nmi_enable=0;
413   if (data & 1) int_enable =1; else int_enable = 0;
414   if (data & 2) nmi_enable =1; else nmi_enable = 0;
376415   flip_screen_set(space->machine, data & 0x08);
377416}
378417
r4679r4680
387426        Bit 0x40 - Unused.
388427        Bit 0x80 - Hold subcpu reset line high if clear, else low?  (Not needed anyway)
389428    */
390   memory_set_bankptr(space->machine, 1,&RAM[0x10000 + (data & 0x0f) * 0x4000]);
429   memory_set_bankptr(space->machine, 1, &RAM[0x10000 + (data & 0x0f) * 0x4000]);
391430}
392431
393432static WRITE8_HANDLER( dec8_sound_w )
394433{
395    soundlatch_w(space,0,data);
396   cpu_set_input_line(space->machine->cpu[1],INPUT_LINE_NMI,PULSE_LINE);
434    soundlatch_w(space, 0, data);
435   cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
397436}
398437
399static WRITE8_HANDLER( oscar_sound_w )
400{
401    soundlatch_w(space,0,data);
402   cpu_set_input_line(space->machine->cpu[2],INPUT_LINE_NMI,PULSE_LINE);
403}
404
405438static void csilver_adpcm_int(const device_config *device)
406439{
407   static int toggle =0;
440   static int toggle = 0;
408441
409442   toggle ^= 1;
410443   if (toggle)
411      cpu_set_input_line(device->machine->cpu[2],M6502_IRQ_LINE,HOLD_LINE);
444      cputag_set_input_line(device->machine, "audiocpu", M6502_IRQ_LINE, HOLD_LINE);
412445
413   msm5205_data_w (device,msm5205next>>4);
414   msm5205next<<=4;
446   msm5205_data_w(device, msm5205next >> 4);
447   msm5205next <<= 4;
415448}
416449
417450static READ8_DEVICE_HANDLER( csilver_adpcm_reset_r )
418451{
419   msm5205_reset_w(device,0);
452   msm5205_reset_w(device, 0);
420453   return 0;
421454}
422455
r4679r4680
429462{
430463   UINT8 *RAM = memory_region(space->machine, "audiocpu");
431464
432   if (data&8) { memory_set_bankptr(space->machine, 3,&RAM[0x14000]); }
433   else { memory_set_bankptr(space->machine, 3,&RAM[0x10000]); }
465   if (data & 8)
466      memory_set_bankptr(space->machine, 3, &RAM[0x14000]);
467   else
468      memory_set_bankptr(space->machine, 3, &RAM[0x10000]);
434469}
435470
436471/******************************************************************************/
r4679r4680
438473static WRITE8_HANDLER( oscar_int_w )
439474{
440475   /* Deal with interrupts, coins also generate NMI to CPU 0 */
441   switch (offset) {
476   switch (offset)
477   {
442478      case 0: /* IRQ2 */
443         cpu_set_input_line(space->machine->cpu[1],M6809_IRQ_LINE,ASSERT_LINE);
479         cputag_set_input_line(space->machine, "sub", M6809_IRQ_LINE, ASSERT_LINE);
444480         return;
445481      case 1: /* IRC 1 */
446         cpu_set_input_line(space->machine->cpu[0],M6809_IRQ_LINE,CLEAR_LINE);
482         cputag_set_input_line(space->machine, "maincpu", M6809_IRQ_LINE, CLEAR_LINE);
447483         return;
448484      case 2: /* IRQ 1 */
449         cpu_set_input_line(space->machine->cpu[0],M6809_IRQ_LINE,ASSERT_LINE);
485         cputag_set_input_line(space->machine, "maincpu", M6809_IRQ_LINE, ASSERT_LINE);
450486         return;
451487      case 3: /* IRC 2 */
452         cpu_set_input_line(space->machine->cpu[1],M6809_IRQ_LINE,CLEAR_LINE);
488         cputag_set_input_line(space->machine, "sub", M6809_IRQ_LINE, CLEAR_LINE);
453489         return;
454490   }
455491}
r4679r4680
461497/* This is correct, but the cpus in Shackled need an interleave of about 5000!
462498    With lower interleave CPU 0 misses an interrupt at the start of the game
463499    (The last interrupt has not finished and been ack'd when the new one occurs */
464   switch (offset) {
500   switch (offset)
501   {
465502      case 0: /* CPU 2 - IRQ acknowledge */
466         cpu_set_input_line(space->machine->cpu[1],M6809_IRQ_LINE,CLEAR_LINE);
503         cputag_set_input_line(space->machine, "sub", M6809_IRQ_LINE, CLEAR_LINE);
467504            return;
468505        case 1: /* CPU 1 - IRQ acknowledge */
469         cpu_set_input_line(space->machine->cpu[0],M6809_IRQ_LINE,CLEAR_LINE);
506         cputag_set_input_line(space->machine, "maincpu", M6809_IRQ_LINE, CLEAR_LINE);
470507           return;
471508        case 2: /* i8751 - FIRQ acknowledge */
472509            return;
473510        case 3: /* IRQ 1 */
474         cpu_set_input_line(space->machine->cpu[0],M6809_IRQ_LINE,ASSERT_LINE);
511         cputag_set_input_line(space->machine, "maincpu", M6809_IRQ_LINE, ASSERT_LINE);
475512         return;
476513        case 4: /* IRQ 2 */
477            cpu_set_input_line(space->machine->cpu[1],M6809_IRQ_LINE,ASSERT_LINE);
514            cputag_set_input_line(space->machine, "sub", M6809_IRQ_LINE, ASSERT_LINE);
478515            return;
479516   }
480517#endif
481518
482   switch (offset) {
519   switch (offset)
520   {
483521      case 0: /* CPU 2 - IRQ acknowledge */
484522            return;
485523        case 1: /* CPU 1 - IRQ acknowledge */
r4679r4680
487525        case 2: /* i8751 - FIRQ acknowledge */
488526            return;
489527        case 3: /* IRQ 1 */
490         cpu_set_input_line (space->machine->cpu[0], M6809_IRQ_LINE, HOLD_LINE);
528         cputag_set_input_line (space->machine, "maincpu", M6809_IRQ_LINE, HOLD_LINE);
491529         return;
492530        case 4: /* IRQ 2 */
493            cpu_set_input_line (space->machine->cpu[1], M6809_IRQ_LINE, HOLD_LINE);
531            cputag_set_input_line (space->machine, "sub", M6809_IRQ_LINE, HOLD_LINE);
494532            return;
495533   }
496534}
r4679r4680
498536/******************************************************************************/
499537
500538static READ8_HANDLER( shackled_sprite_r ) { return spriteram[offset]; }
501static WRITE8_HANDLER( shackled_sprite_w ) { spriteram[offset]=data; }
502static WRITE8_HANDLER( flip_screen_w ) {   flip_screen_set(space->machine, data); }
539static WRITE8_HANDLER( shackled_sprite_w ) { spriteram[offset] = data; }
540static WRITE8_HANDLER( flip_screen_w ) { flip_screen_set(space->machine, data); }
503541
504542/******************************************************************************/
505543
506static ADDRESS_MAP_START( cobra_readmem, ADDRESS_SPACE_PROGRAM, 8 )
507   AM_RANGE(0x0000, 0x07ff) AM_READ(SMH_RAM)
508   AM_RANGE(0x0800, 0x0fff) AM_READ(dec8_pf0_data_r)
509   AM_RANGE(0x1000, 0x17ff) AM_READ(dec8_pf1_data_r)
510   AM_RANGE(0x1800, 0x2fff) AM_READ(SMH_RAM)
511   AM_RANGE(0x3000, 0x31ff) AM_READ(SMH_RAM)
544static ADDRESS_MAP_START( cobra_map, ADDRESS_SPACE_PROGRAM, 8 )
545   AM_RANGE(0x0000, 0x07ff) AM_RAM
546   AM_RANGE(0x0800, 0x0fff) AM_READWRITE(dec8_pf0_data_r, dec8_pf0_data_w) AM_BASE(&dec8_pf0_data)
547   AM_RANGE(0x1000, 0x17ff) AM_READWRITE(dec8_pf1_data_r, dec8_pf1_data_w) AM_BASE(&dec8_pf1_data)
548   AM_RANGE(0x1800, 0x1fff) AM_RAM
549   AM_RANGE(0x2000, 0x27ff) AM_RAM_WRITE(dec8_videoram_w) AM_BASE(&videoram) AM_SIZE(&videoram_size)
550   AM_RANGE(0x2800, 0x2fff) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
551   AM_RANGE(0x3000, 0x31ff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_be_w) AM_BASE(&paletteram)
552   AM_RANGE(0x3200, 0x37ff) AM_WRITE(SMH_RAM) /* Unused */
512553   AM_RANGE(0x3800, 0x3800) AM_READ_PORT("IN0")   /* Player 1 */
513554   AM_RANGE(0x3801, 0x3801) AM_READ_PORT("IN1")   /* Player 2 */
514555   AM_RANGE(0x3802, 0x3802) AM_READ_PORT("DSW0")   /* Dip 1 */
515556   AM_RANGE(0x3803, 0x3803) AM_READ_PORT("DSW1")   /* Dip 2 */
516   AM_RANGE(0x3a00, 0x3a00) AM_READ_PORT("IN2")   /* VBL & coins */
517   AM_RANGE(0x4000, 0x7fff) AM_READ(SMH_BANK1)
518   AM_RANGE(0x8000, 0xffff) AM_READ(SMH_ROM)
519ADDRESS_MAP_END
520
521static ADDRESS_MAP_START( cobra_writemem, ADDRESS_SPACE_PROGRAM, 8 )
522   AM_RANGE(0x0000, 0x07ff) AM_WRITE(SMH_RAM)
523   AM_RANGE(0x0800, 0x0fff) AM_WRITE(dec8_pf0_data_w) AM_BASE(&dec8_pf0_data)
524   AM_RANGE(0x1000, 0x17ff) AM_WRITE(dec8_pf1_data_w) AM_BASE(&dec8_pf1_data)
525   AM_RANGE(0x1800, 0x1fff) AM_WRITE(SMH_RAM)
526   AM_RANGE(0x2000, 0x27ff) AM_WRITE(dec8_videoram_w) AM_BASE(&videoram) AM_SIZE(&videoram_size)
527   AM_RANGE(0x2800, 0x2fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
528   AM_RANGE(0x3000, 0x31ff) AM_WRITE(paletteram_xxxxBBBBGGGGRRRR_be_w) AM_BASE(&paletteram)
529   AM_RANGE(0x3200, 0x37ff) AM_WRITE(SMH_RAM) /* Unused */
530557   AM_RANGE(0x3800, 0x381f) AM_WRITE(dec8_bac06_0_w)
558   AM_RANGE(0x3a00, 0x3a00) AM_READ_PORT("IN2")   /* VBL & coins */
531559   AM_RANGE(0x3a00, 0x3a1f) AM_WRITE(dec8_bac06_1_w)
532560   AM_RANGE(0x3c00, 0x3c00) AM_WRITE(dec8_bank_w)
533561   AM_RANGE(0x3c02, 0x3c02) AM_WRITE(buffer_spriteram_w) /* DMA */
534562   AM_RANGE(0x3e00, 0x3e00) AM_WRITE(dec8_sound_w)
535   AM_RANGE(0x4000, 0xffff) AM_WRITE(SMH_ROM)
563   AM_RANGE(0x4000, 0x7fff) AM_ROMBANK(1)
564   AM_RANGE(0x8000, 0xffff) AM_ROM
536565ADDRESS_MAP_END
537566
538static ADDRESS_MAP_START( ghostb_readmem, ADDRESS_SPACE_PROGRAM, 8 )
539   AM_RANGE(0x0000, 0x1fff) AM_READ(SMH_RAM)
540   AM_RANGE(0x1800, 0x1fff) AM_READ(SMH_RAM)
541   AM_RANGE(0x2000, 0x27ff) AM_READ(dec8_pf0_data_r)
542   AM_RANGE(0x2800, 0x2dff) AM_READ(SMH_RAM)
543   AM_RANGE(0x3000, 0x37ff) AM_READ(SMH_RAM)
567static ADDRESS_MAP_START( ghostb_map, ADDRESS_SPACE_PROGRAM, 8 )
568   AM_RANGE(0x0000, 0x0fff) AM_RAM
569   AM_RANGE(0x1000, 0x17ff) AM_RAM
570   AM_RANGE(0x1800, 0x1fff) AM_RAM_WRITE(dec8_videoram_w) AM_BASE(&videoram) AM_SIZE(&videoram_size)
571   AM_RANGE(0x2000, 0x27ff) AM_READWRITE(dec8_pf0_data_r, dec8_pf0_data_w) AM_BASE(&dec8_pf0_data)
572   AM_RANGE(0x2800, 0x2bff) AM_RAM
573   AM_RANGE(0x2c00, 0x2dff) AM_RAM AM_BASE(&dec8_row)
574   AM_RANGE(0x2e00, 0x2fff) AM_RAM /* Unused */
575   AM_RANGE(0x3000, 0x37ff) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
544576   AM_RANGE(0x3800, 0x3800) AM_READ_PORT("IN0")   /* Player 1 */
577   AM_RANGE(0x3800, 0x3800) AM_WRITE(dec8_sound_w)
545578   AM_RANGE(0x3801, 0x3801) AM_READ_PORT("IN1")   /* Player 2 */
546579   AM_RANGE(0x3802, 0x3802) AM_READ_PORT("IN2")   /* Player 3 */
547580   AM_RANGE(0x3803, 0x3803) AM_READ_PORT("DSW0")   /* Start buttons + VBL */
548581   AM_RANGE(0x3820, 0x3820) AM_READ_PORT("DSW1")   /* Dip */
582   AM_RANGE(0x3820, 0x383f) AM_WRITE(dec8_bac06_0_w)
549583   AM_RANGE(0x3840, 0x3840) AM_READ(i8751_h_r)
584   AM_RANGE(0x3840, 0x3840) AM_WRITE(ghostb_bank_w)
550585   AM_RANGE(0x3860, 0x3860) AM_READ(i8751_l_r)
551   AM_RANGE(0x4000, 0x7fff) AM_READ(SMH_BANK1)
552   AM_RANGE(0x8000, 0xffff) AM_READ(SMH_ROM)
586   AM_RANGE(0x3860, 0x3861) AM_WRITE(ghostb_i8751_w)
587   AM_RANGE(0x4000, 0x7fff) AM_ROMBANK(1)
588   AM_RANGE(0x8000, 0xffff) AM_ROM
553589ADDRESS_MAP_END
554590
555static ADDRESS_MAP_START( ghostb_writemem, ADDRESS_SPACE_PROGRAM, 8 )
556   AM_RANGE(0x0000, 0x0fff) AM_WRITE(SMH_RAM)
557   AM_RANGE(0x1000, 0x17ff) AM_WRITE(SMH_RAM)
558   AM_RANGE(0x1800, 0x1fff) AM_WRITE(dec8_videoram_w) AM_BASE(&videoram) AM_SIZE(&videoram_size)
559   AM_RANGE(0x2000, 0x27ff) AM_WRITE(dec8_pf0_data_w) AM_BASE(&dec8_pf0_data)
560   AM_RANGE(0x2800, 0x2bff) AM_WRITE(SMH_RAM) /* Scratch ram for rowscroll? */
561   AM_RANGE(0x2c00, 0x2dff) AM_WRITE(SMH_RAM) AM_BASE(&dec8_row)
562   AM_RANGE(0x2e00, 0x2fff) AM_WRITE(SMH_RAM) /* Unused */
563   AM_RANGE(0x3000, 0x37ff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
591static ADDRESS_MAP_START( meikyuh_map, ADDRESS_SPACE_PROGRAM, 8 )
592   AM_RANGE(0x0000, 0x0fff) AM_RAM
593   AM_RANGE(0x1000, 0x17ff) AM_RAM
594   AM_RANGE(0x1800, 0x1fff) AM_RAM_WRITE(dec8_videoram_w) AM_BASE(&videoram) AM_SIZE(&videoram_size)
595   AM_RANGE(0x2000, 0x27ff) AM_READWRITE(dec8_pf0_data_r, dec8_pf0_data_w) AM_BASE(&dec8_pf0_data)
596   AM_RANGE(0x2800, 0x2bff) AM_RAM
597   AM_RANGE(0x2c00, 0x2dff) AM_RAM AM_BASE(&dec8_row)
598   AM_RANGE(0x2e00, 0x2fff) AM_RAM /* Unused */
599   AM_RANGE(0x3000, 0x37ff) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
600   AM_RANGE(0x3800, 0x3800) AM_READ_PORT("IN0")   /* Player 1 */
564601   AM_RANGE(0x3800, 0x3800) AM_WRITE(dec8_sound_w)
602   AM_RANGE(0x3801, 0x3801) AM_READ_PORT("IN1")   /* Player 2 */
603   AM_RANGE(0x3802, 0x3802) AM_READ_PORT("IN2")   /* Player 3 */
604   AM_RANGE(0x3803, 0x3803) AM_READ_PORT("DSW0")   /* Start buttons + VBL */
605   AM_RANGE(0x3820, 0x3820) AM_READ_PORT("DSW1")   /* Dip */
565606   AM_RANGE(0x3820, 0x383f) AM_WRITE(dec8_bac06_0_w)
607   AM_RANGE(0x3840, 0x3840) AM_READ(i8751_h_r)
566608   AM_RANGE(0x3840, 0x3840) AM_WRITE(ghostb_bank_w)
567   AM_RANGE(0x3860, 0x3861) AM_WRITE(ghostb_i8751_w)
568   AM_RANGE(0x4000, 0xffff) AM_WRITE(SMH_ROM)
609   AM_RANGE(0x3860, 0x3860) AM_READ(i8751_l_r)
610   AM_RANGE(0x3860, 0x3861) AM_WRITE(meikyuh_i8751_w)
611   AM_RANGE(0x4000, 0x7fff) AM_ROMBANK(1)
612   AM_RANGE(0x8000, 0xffff) AM_ROM
569613ADDRESS_MAP_END
570614
571static ADDRESS_MAP_START( srdarwin_readmem, ADDRESS_SPACE_PROGRAM, 8 )
572   AM_RANGE(0x0000, 0x13ff) AM_READ(SMH_RAM)
573   AM_RANGE(0x1400, 0x17ff) AM_READ(dec8_pf0_data_r)
574   AM_RANGE(0x2000, 0x2000) AM_READ(i8751_h_r)
575   AM_RANGE(0x2001, 0x2001) AM_READ(i8751_l_r)
576   AM_RANGE(0x3800, 0x3800) AM_READ_PORT("DSW0")   /* Dip 1 */
577   AM_RANGE(0x3801, 0x3801) AM_READ_PORT("IN0")   /* Player 1 */
578   AM_RANGE(0x3802, 0x3802) AM_READ_PORT("IN1")   /* Player 2 (cocktail) + VBL */
579   AM_RANGE(0x3803, 0x3803) AM_READ_PORT("DSW1")   /* Dip 2 */
580   AM_RANGE(0x4000, 0x7fff) AM_READ(SMH_BANK1)
581   AM_RANGE(0x8000, 0xffff) AM_READ(SMH_ROM)
582ADDRESS_MAP_END
583
584static ADDRESS_MAP_START( srdarwin_writemem, ADDRESS_SPACE_PROGRAM, 8 )
585   AM_RANGE(0x0000, 0x05ff) AM_WRITE(SMH_RAM)
586   AM_RANGE(0x0600, 0x07ff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram)
587   AM_RANGE(0x0800, 0x0fff) AM_WRITE(srdarwin_videoram_w) AM_BASE(&videoram) AM_SIZE(&spriteram_size)
588   AM_RANGE(0x1000, 0x13ff) AM_WRITE(SMH_RAM)
589   AM_RANGE(0x1400, 0x17ff) AM_WRITE(dec8_pf0_data_w) AM_BASE(&dec8_pf0_data)
615static ADDRESS_MAP_START( srdarwin_map, ADDRESS_SPACE_PROGRAM, 8 )
616   AM_RANGE(0x0000, 0x05ff) AM_RAM
617   AM_RANGE(0x0600, 0x07ff) AM_RAM AM_BASE(&spriteram)
618   AM_RANGE(0x0800, 0x0fff) AM_RAM_WRITE(srdarwin_videoram_w) AM_BASE(&videoram) AM_SIZE(&spriteram_size)
619   AM_RANGE(0x1000, 0x13ff) AM_RAM
620   AM_RANGE(0x1400, 0x17ff) AM_READWRITE(dec8_pf0_data_r, dec8_pf0_data_w) AM_BASE(&dec8_pf0_data)
590621   AM_RANGE(0x1800, 0x1801) AM_WRITE(srdarwin_i8751_w)
591622   AM_RANGE(0x1802, 0x1802) AM_WRITE(i8751_reset_w)      /* Maybe.. */
592623   AM_RANGE(0x1803, 0x1803) AM_WRITENOP            /* NMI ack */
593624   AM_RANGE(0x1804, 0x1804) AM_WRITE(buffer_spriteram_w) /* DMA */
594625   AM_RANGE(0x1805, 0x1806) AM_WRITE(srdarwin_control_w) /* Scroll & Bank */
595   AM_RANGE(0x2000, 0x2000) AM_WRITE(dec8_sound_w)       /* Sound */
596   AM_RANGE(0x2001, 0x2001) AM_WRITE(flip_screen_w)  /* Flipscreen */
626   AM_RANGE(0x2000, 0x2000) AM_READWRITE(i8751_h_r, dec8_sound_w)   /* Sound */
627   AM_RANGE(0x2001, 0x2001) AM_READWRITE(i8751_l_r, flip_screen_w)      /* Flipscreen */
597628   AM_RANGE(0x2800, 0x288f) AM_WRITE(paletteram_xxxxBBBBGGGGRRRR_split1_w) AM_BASE(&paletteram)
598629   AM_RANGE(0x3000, 0x308f) AM_WRITE(paletteram_xxxxBBBBGGGGRRRR_split2_w) AM_BASE(&paletteram_2)
599   AM_RANGE(0x4000, 0xffff) AM_WRITE(SMH_ROM)
630   AM_RANGE(0x3800, 0x3800) AM_READ_PORT("DSW0")   /* Dip 1 */
631   AM_RANGE(0x3801, 0x3801) AM_READ_PORT("IN0")   /* Player 1 */
632   AM_RANGE(0x3802, 0x3802) AM_READ_PORT("IN1")   /* Player 2 (cocktail) + VBL */
633   AM_RANGE(0x3803, 0x3803) AM_READ_PORT("DSW1")   /* Dip 2 */
634   AM_RANGE(0x4000, 0x7fff) AM_ROMBANK(1)
635   AM_RANGE(0x8000, 0xffff) AM_ROM
600636ADDRESS_MAP_END
601637
602static ADDRESS_MAP_START( gondo_readmem, ADDRESS_SPACE_PROGRAM, 8 )
603   AM_RANGE(0x0000, 0x17ff) AM_READ(SMH_RAM)
604   AM_RANGE(0x1800, 0x1fff) AM_READ(SMH_RAM)
605   AM_RANGE(0x2000, 0x27ff) AM_READ(dec8_pf0_data_r)
606   AM_RANGE(0x2800, 0x2bff) AM_READ(SMH_RAM)
607   AM_RANGE(0x2c00, 0x2fff) AM_READ(SMH_RAM)
608   AM_RANGE(0x3000, 0x37ff) AM_READ(SMH_RAM)         /* Sprites */
638static ADDRESS_MAP_START( gondo_map, ADDRESS_SPACE_PROGRAM, 8 )
639   AM_RANGE(0x0000, 0x17ff) AM_RAM
640   AM_RANGE(0x1800, 0x1fff) AM_RAM_WRITE(dec8_videoram_w) AM_BASE(&videoram) AM_SIZE(&videoram_size)
641   AM_RANGE(0x2000, 0x27ff) AM_READWRITE(dec8_pf0_data_r, dec8_pf0_data_w) AM_BASE(&dec8_pf0_data)
642   AM_RANGE(0x2800, 0x2bff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_split1_w) AM_BASE(&paletteram)
643   AM_RANGE(0x2c00, 0x2fff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_split2_w) AM_BASE(&paletteram_2)
644   AM_RANGE(0x3000, 0x37ff) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size)   /* Sprites */
609645   AM_RANGE(0x3800, 0x3800) AM_READ_PORT("DSW0")      /* Dip 1 */
610646   AM_RANGE(0x3801, 0x3801) AM_READ_PORT("DSW1")      /* Dip 2 */
611647   AM_RANGE(0x380a, 0x380b) AM_READ(gondo_player_1_r)   /* Player 1 rotary */
612648   AM_RANGE(0x380c, 0x380d) AM_READ(gondo_player_2_r)   /* Player 2 rotary */
613649   AM_RANGE(0x380e, 0x380e) AM_READ_PORT("IN3")      /* VBL */
614650   AM_RANGE(0x380f, 0x380f) AM_READ_PORT("IN2")      /* Fire buttons */
615   AM_RANGE(0x3838, 0x3838) AM_READ(i8751_h_r)
616   AM_RANGE(0x3839, 0x3839) AM_READ(i8751_l_r)
617   AM_RANGE(0x4000, 0x7fff) AM_READ(SMH_BANK1)
618   AM_RANGE(0x8000, 0xffff) AM_READ(SMH_ROM)
619ADDRESS_MAP_END
620
621static ADDRESS_MAP_START( gondo_writemem, ADDRESS_SPACE_PROGRAM, 8 )
622   AM_RANGE(0x0000, 0x17ff) AM_WRITE(SMH_RAM)
623   AM_RANGE(0x1800, 0x1fff) AM_WRITE(dec8_videoram_w) AM_BASE(&videoram) AM_SIZE(&videoram_size)
624   AM_RANGE(0x2000, 0x27ff) AM_WRITE(dec8_pf0_data_w) AM_BASE(&dec8_pf0_data)
625   AM_RANGE(0x2800, 0x2bff) AM_WRITE(paletteram_xxxxBBBBGGGGRRRR_split1_w) AM_BASE(&paletteram)
626   AM_RANGE(0x2c00, 0x2fff) AM_WRITE(paletteram_xxxxBBBBGGGGRRRR_split2_w) AM_BASE(&paletteram_2)
627   AM_RANGE(0x3000, 0x37ff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
628651   AM_RANGE(0x3810, 0x3810) AM_WRITE(dec8_sound_w)
629652   AM_RANGE(0x3818, 0x382f) AM_WRITE(gondo_scroll_w)
630653   AM_RANGE(0x3830, 0x3830) AM_WRITE(ghostb_bank_w) /* Bank + NMI enable */
654   AM_RANGE(0x3838, 0x3838) AM_READ(i8751_h_r)
655   AM_RANGE(0x3839, 0x3839) AM_READ(i8751_l_r)
631656   AM_RANGE(0x383a, 0x383b) AM_WRITE(gondo_i8751_w)
632   AM_RANGE(0x4000, 0xffff) AM_WRITE(SMH_ROM)
657   AM_RANGE(0x4000, 0x7fff) AM_ROMBANK(1)
658   AM_RANGE(0x8000, 0xffff) AM_ROM
633659ADDRESS_MAP_END
634660
635static ADDRESS_MAP_START( oscar_readmem, ADDRESS_SPACE_PROGRAM, 8 )
636   AM_RANGE(0x0000, 0x0eff) AM_READ(SMH_RAM) AM_SHARE(1)
637   AM_RANGE(0x0f00, 0x0fff) AM_READ(SMH_RAM)
638   AM_RANGE(0x1000, 0x1fff) AM_READ(SMH_RAM) AM_SHARE(2)
639   AM_RANGE(0x2000, 0x27ff) AM_READ(SMH_RAM)
640   AM_RANGE(0x2800, 0x2fff) AM_READ(dec8_pf0_data_r)
641   AM_RANGE(0x3000, 0x37ff) AM_READ(SMH_RAM)      /* Sprites */
642   AM_RANGE(0x3800, 0x3bff) AM_READ(SMH_RAM)
661static ADDRESS_MAP_START( oscar_map, ADDRESS_SPACE_PROGRAM, 8 )
662   AM_RANGE(0x0000, 0x0eff) AM_RAM AM_SHARE(1)
663   AM_RANGE(0x0f00, 0x0fff) AM_RAM
664   AM_RANGE(0x1000, 0x1fff) AM_RAM AM_SHARE(2)
665   AM_RANGE(0x2000, 0x27ff) AM_RAM_WRITE(dec8_videoram_w) AM_BASE(&videoram) AM_SIZE(&videoram_size)
666   AM_RANGE(0x2800, 0x2fff) AM_READWRITE(dec8_pf0_data_r, dec8_pf0_data_w) AM_BASE(&dec8_pf0_data)
667   AM_RANGE(0x3000, 0x37ff) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size) /* Sprites */
668   AM_RANGE(0x3800, 0x3bff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_be_w) AM_BASE(&paletteram)
643669   AM_RANGE(0x3c00, 0x3c00) AM_READ_PORT("IN0")
644670   AM_RANGE(0x3c01, 0x3c01) AM_READ_PORT("IN1")
645671   AM_RANGE(0x3c02, 0x3c02) AM_READ_PORT("IN2")   /* VBL & coins */
646672   AM_RANGE(0x3c03, 0x3c03) AM_READ_PORT("DSW0")   /* Dip 1 */
647673   AM_RANGE(0x3c04, 0x3c04) AM_READ_PORT("DSW1")
648   AM_RANGE(0x4000, 0x7fff) AM_READ(SMH_BANK1)
649   AM_RANGE(0x8000, 0xffff) AM_READ(SMH_ROM)
650ADDRESS_MAP_END
651
652static ADDRESS_MAP_START( oscar_writemem, ADDRESS_SPACE_PROGRAM, 8 )
653   AM_RANGE(0x0000, 0x0eff) AM_WRITE(SMH_RAM) AM_SHARE(1)
654   AM_RANGE(0x0f00, 0x0fff) AM_WRITE(SMH_RAM)
655   AM_RANGE(0x1000, 0x1fff) AM_WRITE(SMH_RAM) AM_SHARE(2)
656   AM_RANGE(0x2000, 0x27ff) AM_WRITE(dec8_videoram_w) AM_BASE(&videoram) AM_SIZE(&videoram_size)
657   AM_RANGE(0x2800, 0x2fff) AM_WRITE(dec8_pf0_data_w) AM_BASE(&dec8_pf0_data)
658   AM_RANGE(0x3000, 0x37ff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
659   AM_RANGE(0x3800, 0x3bff) AM_WRITE(paletteram_xxxxBBBBGGGGRRRR_be_w) AM_BASE(&paletteram)
660674   AM_RANGE(0x3c00, 0x3c1f) AM_WRITE(dec8_bac06_0_w)
661675   AM_RANGE(0x3c80, 0x3c80) AM_WRITE(buffer_spriteram_w)   /* DMA */
662676   AM_RANGE(0x3d00, 0x3d00) AM_WRITE(dec8_bank_w)         /* BNKS */
663   AM_RANGE(0x3d80, 0x3d80) AM_WRITE(oscar_sound_w)       /* SOUN */
677   AM_RANGE(0x3d80, 0x3d80) AM_WRITE(dec8_sound_w)       /* SOUN */
664678   AM_RANGE(0x3e00, 0x3e00) AM_WRITENOP             /* COINCL */
665679   AM_RANGE(0x3e80, 0x3e83) AM_WRITE(oscar_int_w)
666   AM_RANGE(0x4000, 0xffff) AM_WRITE(SMH_ROM)
680   AM_RANGE(0x4000, 0x7fff) AM_ROMBANK(1)
681   AM_RANGE(0x8000, 0xffff) AM_ROM
667682ADDRESS_MAP_END
668683
669static ADDRESS_MAP_START( oscar_sub_readmem, ADDRESS_SPACE_PROGRAM, 8 )
670   AM_RANGE(0x0000, 0x0eff) AM_READ(SMH_RAM) AM_SHARE(1)
671   AM_RANGE(0x0f00, 0x0fff) AM_READ(SMH_RAM)
672   AM_RANGE(0x1000, 0x1fff) AM_READ(SMH_RAM) AM_SHARE(2)
673   AM_RANGE(0x4000, 0xffff) AM_READ(SMH_ROM)
674ADDRESS_MAP_END
675
676static ADDRESS_MAP_START( oscar_sub_writemem, ADDRESS_SPACE_PROGRAM, 8 )
677   AM_RANGE(0x0000, 0x0eff) AM_WRITE(SMH_RAM) AM_SHARE(1)
678   AM_RANGE(0x0f00, 0x0fff) AM_WRITE(SMH_RAM)
679   AM_RANGE(0x1000, 0x1fff) AM_WRITE(SMH_RAM) AM_SHARE(2)
684static ADDRESS_MAP_START( oscar_sub_map, ADDRESS_SPACE_PROGRAM, 8 )
685   AM_RANGE(0x0000, 0x0eff) AM_RAM AM_SHARE(1)
686   AM_RANGE(0x0f00, 0x0fff) AM_RAM
687   AM_RANGE(0x1000, 0x1fff) AM_RAM AM_SHARE(2)
680688   AM_RANGE(0x3e80, 0x3e83) AM_WRITE(oscar_int_w)
681   AM_RANGE(0x4000, 0xffff) AM_WRITE(SMH_ROM)
689   AM_RANGE(0x4000, 0xffff) AM_ROM
682690ADDRESS_MAP_END
683691
684static ADDRESS_MAP_START( lastmiss_readmem, ADDRESS_SPACE_PROGRAM, 8 )
685   AM_RANGE(0x0000, 0x0fff) AM_READ(SMH_RAM) AM_SHARE(1)
686   AM_RANGE(0x1000, 0x13ff) AM_READ(SMH_RAM) AM_SHARE(3)
687   AM_RANGE(0x1400, 0x17ff) AM_READ(SMH_RAM) AM_SHARE(4)
692static ADDRESS_MAP_START( lastmiss_map, ADDRESS_SPACE_PROGRAM, 8 )
693   AM_RANGE(0x0000, 0x0fff) AM_RAM AM_SHARE(1)
694   AM_RANGE(0x1000, 0x13ff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_split1_w) AM_SHARE(3) AM_BASE(&paletteram)
695   AM_RANGE(0x1400, 0x17ff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_split2_w) AM_SHARE(4) AM_BASE(&paletteram_2)
688696   AM_RANGE(0x1800, 0x1800) AM_READ_PORT("IN0")
689697   AM_RANGE(0x1801, 0x1801) AM_READ_PORT("IN1")
690698   AM_RANGE(0x1802, 0x1802) AM_READ_PORT("IN2")
691699   AM_RANGE(0x1803, 0x1803) AM_READ_PORT("DSW0")   /* Dip 1 */
692700   AM_RANGE(0x1804, 0x1804) AM_READ_PORT("DSW1")   /* Dip 2 */
693   AM_RANGE(0x1806, 0x1806) AM_READ(i8751_h_r)
694   AM_RANGE(0x1807, 0x1807) AM_READ(i8751_l_r)
695   AM_RANGE(0x2000, 0x27ff) AM_READ(SMH_RAM)
696   AM_RANGE(0x2800, 0x2fff) AM_READ(SMH_RAM)
697   AM_RANGE(0x3000, 0x37ff) AM_READ(SMH_RAM) AM_SHARE(2)
698   AM_RANGE(0x3800, 0x3fff) AM_READ(dec8_pf0_data_r)
699   AM_RANGE(0x4000, 0x7fff) AM_READ(SMH_BANK1)
700   AM_RANGE(0x8000, 0xffff) AM_READ(SMH_ROM)
701ADDRESS_MAP_END
702
703static ADDRESS_MAP_START( lastmiss_writemem, ADDRESS_SPACE_PROGRAM, 8 )
704   AM_RANGE(0x0000, 0x0fff) AM_WRITE(SMH_RAM) AM_SHARE(1)
705   AM_RANGE(0x1000, 0x13ff) AM_WRITE(paletteram_xxxxBBBBGGGGRRRR_split1_w) AM_SHARE(3) AM_BASE(&paletteram)
706   AM_RANGE(0x1400, 0x17ff) AM_WRITE(paletteram_xxxxBBBBGGGGRRRR_split2_w) AM_SHARE(4) AM_BASE(&paletteram_2)
707701   AM_RANGE(0x1800, 0x1804) AM_WRITE(shackled_int_w)
708702   AM_RANGE(0x1805, 0x1805) AM_WRITE(buffer_spriteram_w) /* DMA */
709   AM_RANGE(0x1807, 0x1807) AM_WRITE(flip_screen_w)
703   AM_RANGE(0x1806, 0x1806) AM_READ(i8751_h_r)
704   AM_RANGE(0x1807, 0x1807) AM_READWRITE(i8751_l_r, flip_screen_w)
710705   AM_RANGE(0x1809, 0x1809) AM_WRITE(lastmiss_scrollx_w) /* Scroll LSB */
711706   AM_RANGE(0x180b, 0x180b) AM_WRITE(lastmiss_scrolly_w) /* Scroll LSB */
712   AM_RANGE(0x180c, 0x180c) AM_WRITE(oscar_sound_w)
707   AM_RANGE(0x180c, 0x180c) AM_WRITE(dec8_sound_w)
713708   AM_RANGE(0x180d, 0x180d) AM_WRITE(lastmiss_control_w) /* Bank switch + Scroll MSB */
714709   AM_RANGE(0x180e, 0x180f) AM_WRITE(lastmiss_i8751_w)
715   AM_RANGE(0x2000, 0x27ff) AM_WRITE(dec8_videoram_w) AM_BASE(&videoram) AM_SIZE(&videoram_size)
716   AM_RANGE(0x2800, 0x2fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
717   AM_RANGE(0x3000, 0x37ff) AM_WRITE(SMH_RAM) AM_SHARE(2)
718   AM_RANGE(0x3800, 0x3fff) AM_WRITE(dec8_pf0_data_w) AM_BASE(&dec8_pf0_data)
719   AM_RANGE(0x4000, 0xffff) AM_WRITE(SMH_ROM)
710   AM_RANGE(0x2000, 0x27ff) AM_RAM_WRITE(dec8_videoram_w) AM_BASE(&videoram) AM_SIZE(&videoram_size)
711   AM_RANGE(0x2800, 0x2fff) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
712   AM_RANGE(0x3000, 0x37ff) AM_RAM AM_SHARE(2)
713   AM_RANGE(0x3800, 0x3fff) AM_READWRITE(dec8_pf0_data_r, dec8_pf0_data_w) AM_BASE(&dec8_pf0_data)
714   AM_RANGE(0x4000, 0x7fff) AM_ROMBANK(1)
715   AM_RANGE(0x8000, 0xffff) AM_ROM
720716ADDRESS_MAP_END
721717
722static ADDRESS_MAP_START( lastmiss_sub_readmem, ADDRESS_SPACE_PROGRAM, 8 )
723   AM_RANGE(0x0000, 0x0fff) AM_READ(SMH_RAM) AM_SHARE(1)
724   AM_RANGE(0x1000, 0x13ff) AM_READ(SMH_RAM) AM_SHARE(3)
725   AM_RANGE(0x1400, 0x17ff) AM_READ(SMH_RAM) AM_SHARE(4)
718static ADDRESS_MAP_START( lastmiss_sub_map, ADDRESS_SPACE_PROGRAM, 8 )
719   AM_RANGE(0x0000, 0x0fff) AM_RAM AM_SHARE(1)
720   AM_RANGE(0x1000, 0x13ff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_split1_w) AM_SHARE(3)
721   AM_RANGE(0x1400, 0x17ff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_split2_w) AM_SHARE(4)
726722   AM_RANGE(0x1800, 0x1800) AM_READ_PORT("IN0")
727723   AM_RANGE(0x1801, 0x1801) AM_READ_PORT("IN1")
728724   AM_RANGE(0x1802, 0x1802) AM_READ_PORT("IN2")
729725   AM_RANGE(0x1803, 0x1803) AM_READ_PORT("DSW0")   /* Dip 1 */
730726   AM_RANGE(0x1804, 0x1804) AM_READ_PORT("DSW1")   /* Dip 2 */
731   AM_RANGE(0x2000, 0x27ff) AM_READ(SMH_RAM)
732   AM_RANGE(0x3000, 0x37ff) AM_READ(SMH_RAM) AM_SHARE(2)
733   AM_RANGE(0x3800, 0x3fff) AM_READ(dec8_pf0_data_r)
734   AM_RANGE(0x4000, 0xffff) AM_READ(SMH_ROM)
735ADDRESS_MAP_END
736
737static ADDRESS_MAP_START( lastmiss_sub_writemem, ADDRESS_SPACE_PROGRAM, 8 )
738   AM_RANGE(0x0000, 0x0fff) AM_WRITE(SMH_RAM) AM_SHARE(1)
739   AM_RANGE(0x1000, 0x13ff) AM_WRITE(paletteram_xxxxBBBBGGGGRRRR_split1_w) AM_SHARE(3)
740   AM_RANGE(0x1400, 0x17ff) AM_WRITE(paletteram_xxxxBBBBGGGGRRRR_split2_w) AM_SHARE(4)
741727   AM_RANGE(0x1800, 0x1804) AM_WRITE(shackled_int_w)
742728   AM_RANGE(0x1805, 0x1805) AM_WRITE(buffer_spriteram_w) /* DMA */
743729   AM_RANGE(0x1807, 0x1807) AM_WRITE(flip_screen_w)
744   AM_RANGE(0x180c, 0x180c) AM_WRITE(oscar_sound_w)
745   AM_RANGE(0x2000, 0x27ff) AM_WRITE(dec8_videoram_w)
730   AM_RANGE(0x180c, 0x180c) AM_WRITE(dec8_sound_w)
731   AM_RANGE(0x2000, 0x27ff) AM_READ(SMH_RAM) AM_WRITE(dec8_videoram_w)
746732   AM_RANGE(0x2800, 0x2fff) AM_WRITE(shackled_sprite_w)
747   AM_RANGE(0x3000, 0x37ff) AM_WRITE(SMH_RAM) AM_SHARE(2)
748   AM_RANGE(0x3800, 0x3fff) AM_WRITE(dec8_pf0_data_w)
749   AM_RANGE(0x4000, 0xffff) AM_WRITE(SMH_ROM)
733   AM_RANGE(0x3000, 0x37ff) AM_RAM AM_SHARE(2)
734   AM_RANGE(0x3800, 0x3fff) AM_READWRITE(dec8_pf0_data_r, dec8_pf0_data_w)
735   AM_RANGE(0x4000, 0xffff) AM_ROM
750736ADDRESS_MAP_END
751737
752static ADDRESS_MAP_START( shackled_readmem, ADDRESS_SPACE_PROGRAM, 8 )
753   AM_RANGE(0x0000, 0x0fff) AM_READ(SMH_RAM) AM_SHARE(1)
754   AM_RANGE(0x1000, 0x13ff) AM_READ(SMH_RAM) AM_SHARE(3)
755   AM_RANGE(0x1400, 0x17ff) AM_READ(SMH_RAM) AM_SHARE(4)
738static ADDRESS_MAP_START( shackled_map, ADDRESS_SPACE_PROGRAM, 8 )
739   AM_RANGE(0x0000, 0x0fff) AM_RAM AM_SHARE(1)
740   AM_RANGE(0x1000, 0x13ff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_split1_w) AM_SHARE(3) AM_BASE(&paletteram)
741   AM_RANGE(0x1400, 0x17ff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_split2_w) AM_SHARE(4) AM_BASE(&paletteram_2)
756742   AM_RANGE(0x1800, 0x1800) AM_READ_PORT("IN0")
757743   AM_RANGE(0x1801, 0x1801) AM_READ_PORT("IN1")
758744   AM_RANGE(0x1802, 0x1802) AM_READ_PORT("IN2")
759745   AM_RANGE(0x1803, 0x1803) AM_READ_PORT("DSW0")
760746   AM_RANGE(0x1804, 0x1804) AM_READ_PORT("DSW1")
761   AM_RANGE(0x2000, 0x27ff) AM_READ(SMH_RAM)
762   AM_RANGE(0x2800, 0x2fff) AM_READ(shackled_sprite_r)
763   AM_RANGE(0x3000, 0x37ff) AM_READ(SMH_RAM) AM_SHARE(2)
764   AM_RANGE(0x3800, 0x3fff) AM_READ(dec8_pf0_data_r)
765   AM_RANGE(0x4000, 0x7fff) AM_READ(SMH_BANK1)
766   AM_RANGE(0x8000, 0xffff) AM_READ(SMH_ROM)
767ADDRESS_MAP_END
768
769static ADDRESS_MAP_START( shackled_writemem, ADDRESS_SPACE_PROGRAM, 8 )
770   AM_RANGE(0x0000, 0x0fff) AM_WRITE(SMH_RAM) AM_SHARE(1)
771   AM_RANGE(0x1000, 0x13ff) AM_WRITE(paletteram_xxxxBBBBGGGGRRRR_split1_w) AM_SHARE(3) AM_BASE(&paletteram)
772   AM_RANGE(0x1400, 0x17ff) AM_WRITE(paletteram_xxxxBBBBGGGGRRRR_split2_w) AM_SHARE(4) AM_BASE(&paletteram_2)
773747   AM_RANGE(0x1800, 0x1804) AM_WRITE(shackled_int_w)
774748   AM_RANGE(0x1805, 0x1805) AM_WRITE(buffer_spriteram_w) /* DMA */
775749   AM_RANGE(0x1807, 0x1807) AM_WRITE(flip_screen_w)
776750   AM_RANGE(0x1809, 0x1809) AM_WRITE(lastmiss_scrollx_w) /* Scroll LSB */
777751   AM_RANGE(0x180b, 0x180b) AM_WRITE(lastmiss_scrolly_w) /* Scroll LSB */
778   AM_RANGE(0x180c, 0x180c) AM_WRITE(oscar_sound_w)
752   AM_RANGE(0x180c, 0x180c) AM_WRITE(dec8_sound_w)
779753   AM_RANGE(0x180d, 0x180d) AM_WRITE(shackled_control_w) /* Bank switch + Scroll MSB */
780   AM_RANGE(0x2000, 0x27ff) AM_WRITE(dec8_videoram_w)
781   AM_RANGE(0x2800, 0x2fff) AM_WRITE(shackled_sprite_w)
782   AM_RANGE(0x3000, 0x37ff) AM_WRITE(SMH_RAM) AM_SHARE(2)
783   AM_RANGE(0x3800, 0x3fff) AM_WRITE(dec8_pf0_data_w) AM_BASE(&dec8_pf0_data)
784   AM_RANGE(0x4000, 0xffff) AM_WRITE(SMH_ROM)
754   AM_RANGE(0x2000, 0x27ff) AM_READ(SMH_RAM) AM_WRITE(dec8_videoram_w)
755   AM_RANGE(0x2800, 0x2fff) AM_READWRITE(shackled_sprite_r, shackled_sprite_w)
756   AM_RANGE(0x3000, 0x37ff) AM_RAM AM_SHARE(2)
757   AM_RANGE(0x3800, 0x3fff) AM_READWRITE(dec8_pf0_data_r, dec8_pf0_data_w) AM_BASE(&dec8_pf0_data)
758   AM_RANGE(0x4000, 0x7fff) AM_ROMBANK(1)
759   AM_RANGE(0x8000, 0xffff) AM_ROM
785760ADDRESS_MAP_END
786761
787static ADDRESS_MAP_START( shackled_sub_readmem, ADDRESS_SPACE_PROGRAM, 8 )
788   AM_RANGE(0x0000, 0x0fff) AM_READ(SMH_RAM) AM_SHARE(1)
789   AM_RANGE(0x1000, 0x13ff) AM_READ(SMH_RAM) AM_SHARE(3)
790   AM_RANGE(0x1400, 0x17ff) AM_READ(SMH_RAM) AM_SHARE(4)
762static ADDRESS_MAP_START( shackled_sub_map, ADDRESS_SPACE_PROGRAM, 8 )
763   AM_RANGE(0x0000, 0x0fff) AM_RAM AM_SHARE(1)
764   AM_RANGE(0x1000, 0x13ff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_split1_w) AM_SHARE(3)
765   AM_RANGE(0x1400, 0x17ff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_split2_w) AM_SHARE(4)
791766   AM_RANGE(0x1800, 0x1800) AM_READ_PORT("IN0")
792767   AM_RANGE(0x1801, 0x1801) AM_READ_PORT("IN1")
793768   AM_RANGE(0x1802, 0x1802) AM_READ_PORT("IN2")
794769   AM_RANGE(0x1803, 0x1803) AM_READ_PORT("DSW0")
795770   AM_RANGE(0x1804, 0x1804) AM_READ_PORT("DSW1")
796   AM_RANGE(0x1806, 0x1806) AM_READ(i8751_h_r)
797   AM_RANGE(0x1807, 0x1807) AM_READ(i8751_l_r)
798   AM_RANGE(0x2000, 0x27ff) AM_READ(SMH_RAM)
799   AM_RANGE(0x2800, 0x2fff) AM_READ(SMH_RAM)
800   AM_RANGE(0x3000, 0x37ff) AM_READ(SMH_RAM) AM_SHARE(2)
801   AM_RANGE(0x3800, 0x3fff) AM_READ(dec8_pf0_data_r)
802   AM_RANGE(0x4000, 0xffff) AM_READ(SMH_ROM)
803ADDRESS_MAP_END
804
805static ADDRESS_MAP_START( shackled_sub_writemem, ADDRESS_SPACE_PROGRAM, 8 )
806   AM_RANGE(0x0000, 0x0fff) AM_WRITE(SMH_RAM) AM_SHARE(1)
807   AM_RANGE(0x1000, 0x13ff) AM_WRITE(paletteram_xxxxBBBBGGGGRRRR_split1_w) AM_SHARE(3)
808   AM_RANGE(0x1400, 0x17ff) AM_WRITE(paletteram_xxxxBBBBGGGGRRRR_split2_w) AM_SHARE(4)
809771   AM_RANGE(0x1800, 0x1804) AM_WRITE(shackled_int_w)
810772   AM_RANGE(0x1805, 0x1805) AM_WRITE(buffer_spriteram_w) /* DMA */
811   AM_RANGE(0x1807, 0x1807) AM_WRITE(flip_screen_w)
773   AM_RANGE(0x1806, 0x1806) AM_READ(i8751_h_r)
774   AM_RANGE(0x1807, 0x1807) AM_READWRITE(i8751_l_r, flip_screen_w)
812775   AM_RANGE(0x1809, 0x1809) AM_WRITE(lastmiss_scrollx_w) /* Scroll LSB */
813776   AM_RANGE(0x180b, 0x180b) AM_WRITE(lastmiss_scrolly_w) /* Scroll LSB */
814   AM_RANGE(0x180c, 0x180c) AM_WRITE(oscar_sound_w)
777   AM_RANGE(0x180c, 0x180c) AM_WRITE(dec8_sound_w)
815778   AM_RANGE(0x180d, 0x180d) AM_WRITE(shackled_control_w) /* Bank switch + Scroll MSB */
816779   AM_RANGE(0x180e, 0x180f) AM_WRITE(shackled_i8751_w)
817   AM_RANGE(0x2000, 0x27ff) AM_WRITE(dec8_videoram_w) AM_BASE(&videoram) AM_SIZE(&videoram_size)
818   AM_RANGE(0x2800, 0x2fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
819   AM_RANGE(0x3000, 0x37ff) AM_WRITE(SMH_RAM) AM_SHARE(2)
820   AM_RANGE(0x3800, 0x3fff) AM_WRITE(dec8_pf0_data_w)
821   AM_RANGE(0x4000, 0xffff) AM_WRITE(SMH_ROM)
780   AM_RANGE(0x2000, 0x27ff) AM_RAM_WRITE(dec8_videoram_w) AM_BASE(&videoram) AM_SIZE(&videoram_size)
781   AM_RANGE(0x2800, 0x2fff) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
782   AM_RANGE(0x3000, 0x37ff) AM_RAM AM_SHARE(2)
783   AM_RANGE(0x3800, 0x3fff) AM_READWRITE(dec8_pf0_data_r, dec8_pf0_data_w)
784   AM_RANGE(0x4000, 0xffff) AM_ROM
822785ADDRESS_MAP_END
823786
824static ADDRESS_MAP_START( csilver_readmem, ADDRESS_SPACE_PROGRAM, 8 )
825   AM_RANGE(0x0000, 0x0fff) AM_READ(SMH_RAM) AM_SHARE(1)
826   AM_RANGE(0x1000, 0x13ff) AM_READ(SMH_RAM) AM_SHARE(3)
827   AM_RANGE(0x1400, 0x17ff) AM_READ(SMH_RAM) AM_SHARE(4)
787static ADDRESS_MAP_START( csilver_map, ADDRESS_SPACE_PROGRAM, 8 )
788   AM_RANGE(0x0000, 0x0fff) AM_RAM AM_SHARE(1)
789   AM_RANGE(0x1000, 0x13ff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_split1_w) AM_SHARE(3) AM_BASE(&paletteram)
790   AM_RANGE(0x1400, 0x17ff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_split2_w) AM_SHARE(4) AM_BASE(&paletteram_2)
828791   AM_RANGE(0x1800, 0x1800) AM_READ_PORT("IN1")
829792   AM_RANGE(0x1801, 0x1801) AM_READ_PORT("IN0")
830793   AM_RANGE(0x1803, 0x1803) AM_READ_PORT("IN2")
831794   AM_RANGE(0x1804, 0x1804) AM_READ_PORT("DSW1")   /* Dip 2 */
832   AM_RANGE(0x1805, 0x1805) AM_READ_PORT("DSW0")   /* Dip 1 */
833   AM_RANGE(0x1c00, 0x1c00) AM_READ(i8751_h_r)
834   AM_RANGE(0x1e00, 0x1e00) AM_READ(i8751_l_r)
835   AM_RANGE(0x2000, 0x27ff) AM_READ(SMH_RAM)
836   AM_RANGE(0x2800, 0x2fff) AM_READ(shackled_sprite_r)
837   AM_RANGE(0x3000, 0x37ff) AM_READ(SMH_RAM) AM_SHARE(2)
838   AM_RANGE(0x3800, 0x3fff) AM_READ(dec8_pf0_data_r)
839   AM_RANGE(0x4000, 0x7fff) AM_READ(SMH_BANK1)
840   AM_RANGE(0x8000, 0xffff) AM_READ(SMH_ROM)
841ADDRESS_MAP_END
842
843static ADDRESS_MAP_START( csilver_writemem, ADDRESS_SPACE_PROGRAM, 8 )
844   AM_RANGE(0x0000, 0x0fff) AM_WRITE(SMH_RAM) AM_SHARE(1)
845   AM_RANGE(0x1000, 0x13ff) AM_WRITE(paletteram_xxxxBBBBGGGGRRRR_split1_w) AM_SHARE(3) AM_BASE(&paletteram)
846   AM_RANGE(0x1400, 0x17ff) AM_WRITE(paletteram_xxxxBBBBGGGGRRRR_split2_w) AM_SHARE(4) AM_BASE(&paletteram_2)
847795   AM_RANGE(0x1800, 0x1804) AM_WRITE(shackled_int_w)
848   AM_RANGE(0x1805, 0x1805) AM_WRITE(buffer_spriteram_w) /* DMA */
796   AM_RANGE(0x1805, 0x1805) AM_READ_PORT("DSW0") AM_WRITE(buffer_spriteram_w) /* Dip 1, DMA */
849797   AM_RANGE(0x1807, 0x1807) AM_WRITE(flip_screen_w)
850798   AM_RANGE(0x1808, 0x180b) AM_WRITE(dec8_scroll2_w)
851   AM_RANGE(0x180c, 0x180c) AM_WRITE(oscar_sound_w)
799   AM_RANGE(0x180c, 0x180c) AM_WRITE(dec8_sound_w)
852800   AM_RANGE(0x180d, 0x180d) AM_WRITE(csilver_control_w)
853801   AM_RANGE(0x180e, 0x180f) AM_WRITE(csilver_i8751_w)
854   AM_RANGE(0x2000, 0x27ff) AM_WRITE(dec8_videoram_w)
855   AM_RANGE(0x2800, 0x2fff) AM_WRITE(shackled_sprite_w)
856   AM_RANGE(0x3000, 0x37ff) AM_WRITE(SMH_RAM) AM_SHARE(2)
857   AM_RANGE(0x3800, 0x3fff) AM_WRITE(dec8_pf0_data_w) AM_BASE(&dec8_pf0_data)
858   AM_RANGE(0x4000, 0xffff) AM_WRITE(SMH_ROM)
802   AM_RANGE(0x1c00, 0x1c00) AM_READ(i8751_h_r)
803   AM_RANGE(0x1e00, 0x1e00) AM_READ(i8751_l_r)
804   AM_RANGE(0x2000, 0x27ff) AM_READ(SMH_RAM) AM_WRITE(dec8_videoram_w)
805   AM_RANGE(0x2800, 0x2fff) AM_READWRITE(shackled_sprite_r, shackled_sprite_w)
806   AM_RANGE(0x3000, 0x37ff) AM_RAM AM_SHARE(2)
807   AM_RANGE(0x3800, 0x3fff) AM_READWRITE(dec8_pf0_data_r, dec8_pf0_data_w) AM_BASE(&dec8_pf0_data)
808   AM_RANGE(0x4000, 0x7fff) AM_ROMBANK(1)
809   AM_RANGE(0x8000, 0xffff) AM_ROM
859810ADDRESS_MAP_END
860811
861static ADDRESS_MAP_START( csilver_sub_readmem, ADDRESS_SPACE_PROGRAM, 8 )
862   AM_RANGE(0x0000, 0x0fff) AM_READ(SMH_RAM) AM_SHARE(1)
863   AM_RANGE(0x1000, 0x13ff) AM_READ(SMH_RAM) AM_SHARE(3)
864   AM_RANGE(0x1400, 0x17ff) AM_READ(SMH_RAM) AM_SHARE(4)
812static ADDRESS_MAP_START( csilver_sub_map, ADDRESS_SPACE_PROGRAM, 8 )
813   AM_RANGE(0x0000, 0x0fff) AM_RAM AM_SHARE(1)
814   AM_RANGE(0x1000, 0x13ff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_split1_w) AM_SHARE(3)
815   AM_RANGE(0x1400, 0x17ff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_split2_w) AM_SHARE(4)
865816   AM_RANGE(0x1803, 0x1803) AM_READ_PORT("IN2")
866817   AM_RANGE(0x1804, 0x1804) AM_READ_PORT("DSW1")
867   AM_RANGE(0x1805, 0x1805) AM_READ_PORT("DSW0")
868   AM_RANGE(0x2000, 0x27ff) AM_READ(SMH_RAM)
869   AM_RANGE(0x2800, 0x2fff) AM_READ(SMH_RAM)
870   AM_RANGE(0x3000, 0x37ff) AM_READ(SMH_RAM) AM_SHARE(2)
871   AM_RANGE(0x3800, 0x3fff) AM_READ(dec8_pf0_data_r)
872   AM_RANGE(0x4000, 0xffff) AM_READ(SMH_ROM)
873ADDRESS_MAP_END
874
875static ADDRESS_MAP_START( csilver_sub_writemem, ADDRESS_SPACE_PROGRAM, 8 )
876   AM_RANGE(0x0000, 0x0fff) AM_WRITE(SMH_RAM) AM_SHARE(1)
877   AM_RANGE(0x1000, 0x13ff) AM_WRITE(paletteram_xxxxBBBBGGGGRRRR_split1_w) AM_SHARE(3)
878   AM_RANGE(0x1400, 0x17ff) AM_WRITE(paletteram_xxxxBBBBGGGGRRRR_split2_w) AM_SHARE(4)
879818   AM_RANGE(0x1800, 0x1804) AM_WRITE(shackled_int_w)
880   AM_RANGE(0x1805, 0x1805) AM_WRITE(buffer_spriteram_w) /* DMA */
881   AM_RANGE(0x180c, 0x180c) AM_WRITE(oscar_sound_w)
882   AM_RANGE(0x2000, 0x27ff) AM_WRITE(dec8_videoram_w) AM_BASE(&videoram) AM_SIZE(&videoram_size)
883   AM_RANGE(0x2800, 0x2fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
884   AM_RANGE(0x3000, 0x37ff) AM_WRITE(SMH_RAM) AM_SHARE(2)
885   AM_RANGE(0x3800, 0x3fff) AM_WRITE(dec8_pf0_data_w)
886   AM_RANGE(0x4000, 0xffff) AM_WRITE(SMH_ROM)
819   AM_RANGE(0x1805, 0x1805) AM_READ_PORT("DSW0") AM_WRITE(buffer_spriteram_w) /* DMA */
820   AM_RANGE(0x180c, 0x180c) AM_WRITE(dec8_sound_w)
821   AM_RANGE(0x2000, 0x27ff) AM_RAM_WRITE(dec8_videoram_w) AM_BASE(&videoram) AM_SIZE(&videoram_size)
822   AM_RANGE(0x2800, 0x2fff) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
823   AM_RANGE(0x3000, 0x37ff) AM_RAM AM_SHARE(2)
824   AM_RANGE(0x3800, 0x3fff) AM_READWRITE(dec8_pf0_data_r, dec8_pf0_data_w)
825   AM_RANGE(0x4000, 0xffff) AM_ROM
887826ADDRESS_MAP_END
888827
889static ADDRESS_MAP_START( garyoret_readmem, ADDRESS_SPACE_PROGRAM, 8 )
890   AM_RANGE(0x0000, 0x17ff) AM_READ(SMH_RAM)
891   AM_RANGE(0x1800, 0x1fff) AM_READ(SMH_RAM)
892   AM_RANGE(0x2000, 0x27ff) AM_READ(dec8_pf0_data_r)
893   AM_RANGE(0x2800, 0x2bff) AM_READ(SMH_RAM)
894   AM_RANGE(0x2c00, 0x2fff) AM_READ(SMH_RAM)
895   AM_RANGE(0x3000, 0x37ff) AM_READ(SMH_RAM)      /* Sprites */
828static ADDRESS_MAP_START( garyoret_map, ADDRESS_SPACE_PROGRAM, 8 )
829   AM_RANGE(0x0000, 0x17ff) AM_RAM
830   AM_RANGE(0x1800, 0x1fff) AM_RAM_WRITE(dec8_videoram_w) AM_BASE(&videoram) AM_SIZE(&videoram_size)
831   AM_RANGE(0x2000, 0x27ff) AM_READWRITE(dec8_pf0_data_r, dec8_pf0_data_w) AM_BASE(&dec8_pf0_data)
832   AM_RANGE(0x2800, 0x2bff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_split1_w) AM_BASE(&paletteram)
833   AM_RANGE(0x2c00, 0x2fff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_split2_w) AM_BASE(&paletteram_2)
834   AM_RANGE(0x3000, 0x37ff) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size) /* Sprites */
896835   AM_RANGE(0x3800, 0x3800) AM_READ_PORT("DSW0")   /* Dip 1 */
897836   AM_RANGE(0x3801, 0x3801) AM_READ_PORT("DSW1")   /* Dip 2 */
898837   AM_RANGE(0x3808, 0x3808) AM_READNOP      /* ? */
899838   AM_RANGE(0x380a, 0x380a) AM_READ_PORT("IN1")   /* Player 2 + VBL */
900839   AM_RANGE(0x380b, 0x380b) AM_READ_PORT("IN0")   /* Player 1 */
901   AM_RANGE(0x383a, 0x383a) AM_READ(i8751_h_r)
902   AM_RANGE(0x383b, 0x383b) AM_READ(i8751_l_r)
903   AM_RANGE(0x4000, 0x7fff) AM_READ(SMH_BANK1)
904   AM_RANGE(0x8000, 0xffff) AM_READ(SMH_ROM)
905ADDRESS_MAP_END
906
907static ADDRESS_MAP_START( garyoret_writemem, ADDRESS_SPACE_PROGRAM, 8 )
908   AM_RANGE(0x0000, 0x17ff) AM_WRITE(SMH_RAM)
909   AM_RANGE(0x1800, 0x1fff) AM_WRITE(dec8_videoram_w) AM_BASE(&videoram) AM_SIZE(&videoram_size)
910   AM_RANGE(0x2000, 0x27ff) AM_WRITE(dec8_pf0_data_w) AM_BASE(&dec8_pf0_data)
911   AM_RANGE(0x2800, 0x2bff) AM_WRITE(paletteram_xxxxBBBBGGGGRRRR_split1_w) AM_BASE(&paletteram)
912   AM_RANGE(0x2c00, 0x2fff) AM_WRITE(paletteram_xxxxBBBBGGGGRRRR_split2_w) AM_BASE(&paletteram_2)
913   AM_RANGE(0x3000, 0x37ff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
914840   AM_RANGE(0x3810, 0x3810) AM_WRITE(dec8_sound_w)
915841   AM_RANGE(0x3818, 0x382f) AM_WRITE(gondo_scroll_w)
916842   AM_RANGE(0x3830, 0x3830) AM_WRITE(ghostb_bank_w) /* Bank + NMI enable */
917843   AM_RANGE(0x3838, 0x3839) AM_WRITE(garyoret_i8751_w)
918   AM_RANGE(0x4000, 0xffff) AM_WRITE(SMH_ROM)
844   AM_RANGE(0x383a, 0x383a) AM_READ(i8751_h_r)
845   AM_RANGE(0x383b, 0x383b) AM_READ(i8751_l_r)
846   AM_RANGE(0x4000, 0x7fff) AM_ROMBANK(1)
847   AM_RANGE(0x8000, 0xffff) AM_ROM
919848ADDRESS_MAP_END
920849
921850/******************************************************************************/
922851
923852/* Used for Cobra Command, Maze Hunter, Super Real Darwin etc */
924static ADDRESS_MAP_START( dec8_s_readmem, ADDRESS_SPACE_PROGRAM, 8 )
925   AM_RANGE(0x0000, 0x05ff) AM_READ(SMH_RAM)
926   AM_RANGE(0x6000, 0x6000) AM_READ(soundlatch_r)
927   AM_RANGE(0x8000, 0xffff) AM_READ(SMH_ROM)
928ADDRESS_MAP_END
929
930static ADDRESS_MAP_START( dec8_s_writemem, ADDRESS_SPACE_PROGRAM, 8 )
931   AM_RANGE(0x0000, 0x05ff) AM_WRITE(SMH_RAM)
853static ADDRESS_MAP_START( dec8_s_map, ADDRESS_SPACE_PROGRAM, 8 )
854   AM_RANGE(0x0000, 0x05ff) AM_RAM
932855   AM_RANGE(0x2000, 0x2001) AM_DEVWRITE("ym1", ym2203_w)
933856   AM_RANGE(0x4000, 0x4001) AM_DEVWRITE("ym2", ym3812_w)
934   AM_RANGE(0x8000, 0xffff) AM_WRITE(SMH_ROM)
857   AM_RANGE(0x6000, 0x6000) AM_READ(soundlatch_r)
858   AM_RANGE(0x8000, 0xffff) AM_ROM
935859ADDRESS_MAP_END
936860
937861/* Used by Gondomania, Psycho-Nics Oscar & Garyo Retsuden */
938static ADDRESS_MAP_START( oscar_s_writemem, ADDRESS_SPACE_PROGRAM, 8 )
939   AM_RANGE(0x0000, 0x05ff) AM_WRITE(SMH_RAM)
862static ADDRESS_MAP_START( oscar_s_map, ADDRESS_SPACE_PROGRAM, 8 )
863   AM_RANGE(0x0000, 0x05ff) AM_RAM
940864   AM_RANGE(0x2000, 0x2001) AM_DEVWRITE("ym1", ym2203_w)
941865   AM_RANGE(0x4000, 0x4001) AM_DEVWRITE("ym2", ym3526_w)
942   AM_RANGE(0x8000, 0xffff) AM_WRITE(SMH_ROM)
866   AM_RANGE(0x6000, 0x6000) AM_READ(soundlatch_r)
867   AM_RANGE(0x8000, 0xffff) AM_ROM
943868ADDRESS_MAP_END
944869
945870/* Used by Last Mission, Shackled & Breywood */
946static ADDRESS_MAP_START( ym3526_s_readmem, ADDRESS_SPACE_PROGRAM, 8 )
947   AM_RANGE(0x0000, 0x05ff) AM_READ(SMH_RAM)
948   AM_RANGE(0x3000, 0x3000) AM_READ(soundlatch_r)
949   AM_RANGE(0x8000, 0xffff) AM_READ(SMH_ROM)
950ADDRESS_MAP_END
951
952static ADDRESS_MAP_START( ym3526_s_writemem, ADDRESS_SPACE_PROGRAM, 8 )
953   AM_RANGE(0x0000, 0x05ff) AM_WRITE(SMH_RAM)
871static ADDRESS_MAP_START( ym3526_s_map, ADDRESS_SPACE_PROGRAM, 8 )
872   AM_RANGE(0x0000, 0x05ff) AM_RAM
954873   AM_RANGE(0x0800, 0x0801) AM_DEVWRITE("ym1", ym2203_w)
955874   AM_RANGE(0x1000, 0x1001) AM_DEVWRITE("ym2", ym3526_w)
956   AM_RANGE(0x8000, 0xffff) AM_WRITE(SMH_ROM)
957ADDRESS_MAP_END
958
959/* Captain Silver - same sound system as Pocket Gal */
960static ADDRESS_MAP_START( csilver_s_readmem, ADDRESS_SPACE_PROGRAM, 8 )
961   AM_RANGE(0x0000, 0x07ff) AM_READ(SMH_RAM)
962875   AM_RANGE(0x3000, 0x3000) AM_READ(soundlatch_r)
963   AM_RANGE(0x3400, 0x3400) AM_DEVREAD("msm", csilver_adpcm_reset_r)   /* ? not sure */
964   AM_RANGE(0x4000, 0x7fff) AM_READ(SMH_BANK3)
965   AM_RANGE(0x8000, 0xffff) AM_READ(SMH_ROM)
876   AM_RANGE(0x8000, 0xffff) AM_ROM
966877ADDRESS_MAP_END
967878
968static ADDRESS_MAP_START( csilver_s_writemem, ADDRESS_SPACE_PROGRAM, 8 )
969   AM_RANGE(0x0000, 0x07ff) AM_WRITE(SMH_RAM)
879/* Captain Silver - same sound system as Pocket Gal */
880static ADDRESS_MAP_START( csilver_s_map, ADDRESS_SPACE_PROGRAM, 8 )
881   AM_RANGE(0x0000, 0x07ff) AM_RAM
970882   AM_RANGE(0x0800, 0x0801) AM_DEVWRITE("ym1", ym2203_w)
971883   AM_RANGE(0x1000, 0x1001) AM_DEVWRITE("ym2", ym3526_w)
972884   AM_RANGE(0x1800, 0x1800) AM_WRITE(csilver_adpcm_data_w)   /* ADPCM data for the MSM5205 chip */
973885   AM_RANGE(0x2000, 0x2000) AM_WRITE(csilver_sound_bank_w)
974   AM_RANGE(0x4000, 0xffff) AM_WRITE(SMH_ROM)
886   AM_RANGE(0x3000, 0x3000) AM_READ(soundlatch_r)
887   AM_RANGE(0x3400, 0x3400) AM_DEVREAD("msm", csilver_adpcm_reset_r)   /* ? not sure */
888   AM_RANGE(0x4000, 0x7fff) AM_ROMBANK(3)
889   AM_RANGE(0x8000, 0xffff) AM_ROM
975890ADDRESS_MAP_END
976891
977892/******************************************************************************/
978893
894static READ8_HANDLER( dec8_mcu_from_main_r )
895{
896   switch (offset)
897   {
898      case 0:
899         return ((i8751_value & 0xff00) >> 8);
900      case 1:
901         cputag_set_input_line(space->machine, "mcu", MCS51_INT1_LINE, CLEAR_LINE);
902         return i8751_value & 0xff;
903   }
904
905   return 0; //compile safe.
906}
907
908static WRITE8_HANDLER( dec8_mcu_to_main_w )
909{
910   switch (offset)
911   {
912      case 0: /* High byte */
913         i8751_return = (i8751_return & 0xff) | (data << 8);
914         break;
915      case 1: /* Low byte */
916         i8751_return = (i8751_return & 0xff00) | data;
917         break;
918   }
919}
920
921static ADDRESS_MAP_START( dec8_mcu_io_map, ADDRESS_SPACE_IO, 8 )
922   AM_RANGE(MCS51_PORT_P0,MCS51_PORT_P1) AM_READWRITE(dec8_mcu_from_main_r,dec8_mcu_to_main_w)
923   AM_RANGE(MCS51_PORT_P2,MCS51_PORT_P2) AM_WRITENOP
924   AM_RANGE(MCS51_PORT_P3,MCS51_PORT_P3) AM_READ_PORT("I8751") AM_WRITENOP
925ADDRESS_MAP_END
926
927/******************************************************************************/
928
979929#define PLAYER1_JOYSTICK /* Player 1 controls */ \
980930   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY \
981931   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY \
r4679r4680
11501100   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START3 )
11511101INPUT_PORTS_END
11521102
1103/* same but with coin latches hooked up with the irqs since we have a MCU dump. */
1104static INPUT_CHANGED( coin_inserted )
1105{
1106   if(newval)
1107      cputag_set_input_line(field->port->machine, "maincpu", M6809_IRQ_LINE, HOLD_LINE);
1108}
1109
1110static INPUT_PORTS_START( meikyuh )
1111   PORT_INCLUDE(ghostb)
1112
1113   PORT_MODIFY("I8751")   /* hooked up on the i8751 */
1114   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN4 ) PORT_IMPULSE(1) PORT_CHANGED(coin_inserted, 0)
1115   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN3 ) PORT_IMPULSE(1) PORT_CHANGED(coin_inserted, 0)
1116   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(1) PORT_CHANGED(coin_inserted, 0)
1117   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(1) PORT_CHANGED(coin_inserted, 0)
1118INPUT_PORTS_END
1119
11531120static INPUT_PORTS_START( srdarwin )
11541121   PORT_START("IN0")
11551122   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY
r4679r4680
19701937/* handler called by the 3812 emulator when the internal timers cause an IRQ */
19711938static void irqhandler(const device_config *device, int linestate)
19721939{
1973   cpu_set_input_line(device->machine->cpu[1],0,linestate); /* M6502_IRQ_LINE */
1940   cputag_set_input_line(device->machine, "audiocpu", 0, linestate); /* M6502_IRQ_LINE */
19741941}
19751942
1976static void oscar_irqhandler(const device_config *device, int linestate)
1977{
1978   cpu_set_input_line(device->machine->cpu[2],0,linestate); /* M6502_IRQ_LINE */
1979}
1980
19811943static const ym3526_interface ym3526_config =
19821944{
19831945   irqhandler
19841946};
19851947
1986static const ym3526_interface oscar_ym3526_interface =
1987{
1988   oscar_irqhandler
1989};
1990
19911948static const ym3812_interface ym3812_config =
19921949{
19931950   irqhandler
r4679r4680
20041961static INTERRUPT_GEN( ghostb_interrupt )
20051962{
20061963   static int latch[4];
2007   int i8751_out=input_port_read(device->machine, "I8751");
1964   int i8751_out = input_port_read(device->machine, "I8751");
20081965
20091966   /* Ghostbusters coins are controlled by the i8751 */
2010   if ((i8751_out & 0x8) == 0x8) latch[0]=1;
2011   if ((i8751_out & 0x4) == 0x4) latch[1]=1;
2012   if ((i8751_out & 0x2) == 0x2) latch[2]=1;
2013   if ((i8751_out & 0x1) == 0x1) latch[3]=1;
1967   if ((i8751_out & 0x8) == 0x8) latch[0] = 1;
1968   if ((i8751_out & 0x4) == 0x4) latch[1] = 1;
1969   if ((i8751_out & 0x2) == 0x2) latch[2] = 1;
1970   if ((i8751_out & 0x1) == 0x1) latch[3] = 1;
20141971
2015   if (((i8751_out & 0x8) != 0x8) && latch[0]) {latch[0]=0; cpu_set_input_line(device,M6809_IRQ_LINE,HOLD_LINE); i8751_return=0x8001; } /* Player 1 coin */
2016   if (((i8751_out & 0x4) != 0x4) && latch[1]) {latch[1]=0; cpu_set_input_line(device,M6809_IRQ_LINE,HOLD_LINE); i8751_return=0x4001; } /* Player 2 coin */
2017   if (((i8751_out & 0x2) != 0x2) && latch[2]) {latch[2]=0; cpu_set_input_line(device,M6809_IRQ_LINE,HOLD_LINE); i8751_return=0x2001; } /* Player 3 coin */
2018   if (((i8751_out & 0x1) != 0x1) && latch[3]) {latch[3]=0; cpu_set_input_line(device,M6809_IRQ_LINE,HOLD_LINE); i8751_return=0x1001; } /* Service */
1972   if (((i8751_out & 0x8) != 0x8) && latch[0]) {latch[0] = 0; cpu_set_input_line(device,M6809_IRQ_LINE,HOLD_LINE); i8751_return = 0x8001; } /* Player 1 coin */
1973   if (((i8751_out & 0x4) != 0x4) && latch[1]) {latch[1] = 0; cpu_set_input_line(device,M6809_IRQ_LINE,HOLD_LINE); i8751_return = 0x4001; } /* Player 2 coin */
1974   if (((i8751_out & 0x2) != 0x2) && latch[2]) {latch[2] = 0; cpu_set_input_line(device,M6809_IRQ_LINE,HOLD_LINE); i8751_return = 0x2001; } /* Player 3 coin */
1975   if (((i8751_out & 0x1) != 0x1) && latch[3]) {latch[3] = 0; cpu_set_input_line(device,M6809_IRQ_LINE,HOLD_LINE); i8751_return = 0x1001; } /* Service */
20191976
20201977   if (nmi_enable) cpu_set_input_line(device, INPUT_LINE_NMI, PULSE_LINE); /* VBL */
20211978}
r4679r4680
20291986/* Coins generate NMI's */
20301987static INTERRUPT_GEN( oscar_interrupt )
20311988{
2032   static int latch=1;
1989   static int latch = 1;
20331990
2034   if ((input_port_read(device->machine, "IN2") & 0x7) == 0x7) latch=1;
2035   if (latch && (input_port_read(device->machine, "IN2") & 0x7) != 0x7) {
2036      latch=0;
1991   if ((input_port_read(device->machine, "IN2") & 0x7) == 0x7) latch = 1;
1992   if (latch && (input_port_read(device->machine, "IN2") & 0x7) != 0x7)
1993   {
1994      latch = 0;
20371995       cpu_set_input_line(device, INPUT_LINE_NMI, PULSE_LINE);
20381996    }
20391997}
r4679r4680
20442002
20452003   /* basic machine hardware */
20462004   MDRV_CPU_ADD("maincpu", M6809, 2000000)
2047   MDRV_CPU_PROGRAM_MAP(cobra_readmem,cobra_writemem)
2005   MDRV_CPU_PROGRAM_MAP(cobra_map,0)
20482006   MDRV_CPU_VBLANK_INT("screen", nmi_line_pulse)
20492007
20502008   MDRV_CPU_ADD("audiocpu", M6502, 1500000)
2051   MDRV_CPU_PROGRAM_MAP(dec8_s_readmem,dec8_s_writemem)
2009   MDRV_CPU_PROGRAM_MAP(dec8_s_map,0)
20522010                        /* NMIs are caused by the main CPU */
20532011
20542012   /* video hardware */
r4679r4680
20852043
20862044   /* basic machine hardware */
20872045   MDRV_CPU_ADD("maincpu", HD6309, 3000000*4)
2088   MDRV_CPU_PROGRAM_MAP(ghostb_readmem,ghostb_writemem)
2046   MDRV_CPU_PROGRAM_MAP(ghostb_map,0)
20892047   MDRV_CPU_VBLANK_INT("screen", ghostb_interrupt)
20902048
20912049   MDRV_CPU_ADD("audiocpu", M6502, 1500000)
2092   MDRV_CPU_PROGRAM_MAP(dec8_s_readmem,dec8_s_writemem)
2050   MDRV_CPU_PROGRAM_MAP(dec8_s_map,0)
20932051                        /* NMIs are caused by the main CPU */
20942052
20952053   /* video hardware */
r4679r4680
21242082   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.70)
21252083MACHINE_DRIVER_END
21262084
2085/* these two will be unified one day... */
2086static MACHINE_DRIVER_START( meikyuh )
2087   MDRV_IMPORT_FROM( ghostb )
2088   MDRV_CPU_MODIFY("maincpu")
2089   MDRV_CPU_PROGRAM_MAP(meikyuh_map,0)
2090   MDRV_CPU_VBLANK_INT("screen", gondo_interrupt)
2091
2092   MDRV_CPU_ADD("mcu", I8751, 3000000*4)
2093   MDRV_CPU_IO_MAP(dec8_mcu_io_map,0)
2094MACHINE_DRIVER_END
2095
2096
21272097static MACHINE_DRIVER_START( srdarwin )
21282098
21292099   /* basic machine hardware */
21302100   MDRV_CPU_ADD("maincpu", M6809,2000000)  /* MC68A09EP */
2131   MDRV_CPU_PROGRAM_MAP(srdarwin_readmem,srdarwin_writemem)
2101   MDRV_CPU_PROGRAM_MAP(srdarwin_map,0)
21322102   MDRV_CPU_VBLANK_INT("screen", nmi_line_pulse)
21332103
21342104   MDRV_CPU_ADD("audiocpu", M6502, 1500000)
2135   MDRV_CPU_PROGRAM_MAP(dec8_s_readmem,dec8_s_writemem)
2105   MDRV_CPU_PROGRAM_MAP(dec8_s_map,0)
21362106                        /* NMIs are caused by the main CPU */
21372107
21382108   /* video hardware */
r4679r4680
21692139
21702140   /* basic machine hardware */
21712141   MDRV_CPU_ADD("maincpu", HD6309,3000000*4) /* HD63C09EP */
2172   MDRV_CPU_PROGRAM_MAP(gondo_readmem,gondo_writemem)
2142   MDRV_CPU_PROGRAM_MAP(gondo_map,0)
21732143   MDRV_CPU_VBLANK_INT("screen", gondo_interrupt)
21742144
21752145   MDRV_CPU_ADD("audiocpu", M6502, 1500000)
2176   MDRV_CPU_PROGRAM_MAP(dec8_s_readmem,oscar_s_writemem)
2146   MDRV_CPU_PROGRAM_MAP(oscar_s_map,0)
21772147                        /* NMIs are caused by the main CPU */
21782148
21792149   /* video hardware */
r4679r4680
22112181
22122182   /* basic machine hardware */
22132183   MDRV_CPU_ADD("maincpu", HD6309, XTAL_12MHz/2) /* verified on pcb */
2214   MDRV_CPU_PROGRAM_MAP(oscar_readmem,oscar_writemem)
2184   MDRV_CPU_PROGRAM_MAP(oscar_map,0)
22152185   MDRV_CPU_VBLANK_INT("screen", oscar_interrupt)
22162186
22172187   MDRV_CPU_ADD("sub", HD6309, XTAL_12MHz/2) /* verified on pcb */
2218   MDRV_CPU_PROGRAM_MAP(oscar_sub_readmem,oscar_sub_writemem)
2188   MDRV_CPU_PROGRAM_MAP(oscar_sub_map,0)
22192189
22202190   MDRV_CPU_ADD("audiocpu", M6502, XTAL_12MHz/8)
2221   MDRV_CPU_PROGRAM_MAP(dec8_s_readmem,oscar_s_writemem)
2191   MDRV_CPU_PROGRAM_MAP(oscar_s_map,0)
22222192                        /* NMIs are caused by the main CPU */
22232193   MDRV_QUANTUM_TIME(HZ(2400)) /* 40 CPU slices per frame */
22242194
r4679r4680
22482218   MDRV_SOUND_ROUTE(3, "mono", 0.20)
22492219
22502220   MDRV_SOUND_ADD("ym2", YM3526, XTAL_12MHz/4) /* verified on pcb */
2251   MDRV_SOUND_CONFIG(oscar_ym3526_interface)
2221   MDRV_SOUND_CONFIG(ym3526_config)
22522222   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.70)
22532223MACHINE_DRIVER_END
22542224
r4679r4680
22562226
22572227   /* basic machine hardware */
22582228   MDRV_CPU_ADD("maincpu", M6809, 2000000)
2259   MDRV_CPU_PROGRAM_MAP(lastmiss_readmem,lastmiss_writemem)
2229   MDRV_CPU_PROGRAM_MAP(lastmiss_map,0)
22602230
22612231   MDRV_CPU_ADD("sub", M6809, 2000000)
2262   MDRV_CPU_PROGRAM_MAP(lastmiss_sub_readmem,lastmiss_sub_writemem)
2232   MDRV_CPU_PROGRAM_MAP(lastmiss_sub_map,0)
22632233
22642234   MDRV_CPU_ADD("audiocpu", M6502, 1500000)
2265   MDRV_CPU_PROGRAM_MAP(ym3526_s_readmem,ym3526_s_writemem)
2235   MDRV_CPU_PROGRAM_MAP(ym3526_s_map,0)
22662236                        /* NMIs are caused by the main CPU */
22672237   MDRV_QUANTUM_TIME(HZ(12000))
22682238
r4679r4680
22922262   MDRV_SOUND_ROUTE(3, "mono", 0.20)
22932263
22942264   MDRV_SOUND_ADD("ym2", YM3526, 3000000)
2295   MDRV_SOUND_CONFIG(oscar_ym3526_interface)
2265   MDRV_SOUND_CONFIG(ym3526_config)
22962266   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.70)
22972267MACHINE_DRIVER_END
22982268
r4679r4680
23002270
23012271   /* basic machine hardware */
23022272   MDRV_CPU_ADD("maincpu", M6809, 2000000)
2303   MDRV_CPU_PROGRAM_MAP(shackled_readmem,shackled_writemem)
2273   MDRV_CPU_PROGRAM_MAP(shackled_map,0)
23042274
23052275   MDRV_CPU_ADD("sub", M6809, 2000000)
2306   MDRV_CPU_PROGRAM_MAP(shackled_sub_readmem,shackled_sub_writemem)
2276   MDRV_CPU_PROGRAM_MAP(shackled_sub_map,0)
23072277
23082278   MDRV_CPU_ADD("audiocpu", M6502, 1500000)
2309   MDRV_CPU_PROGRAM_MAP(ym3526_s_readmem,ym3526_s_writemem)
2279   MDRV_CPU_PROGRAM_MAP(ym3526_s_map,0)
23102280                        /* NMIs are caused by the main CPU */
23112281   MDRV_QUANTUM_TIME(HZ(4800))
23122282
r4679r4680
23362306   MDRV_SOUND_ROUTE(3, "mono", 0.20)
23372307
23382308   MDRV_SOUND_ADD("ym2", YM3526, 3000000)
2339   MDRV_SOUND_CONFIG(oscar_ym3526_interface)
2309   MDRV_SOUND_CONFIG(ym3526_config)
23402310   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.70)
23412311MACHINE_DRIVER_END
23422312
r4679r4680
23442314
23452315   /* basic machine hardware */
23462316   MDRV_CPU_ADD("maincpu", M6809, XTAL_12MHz/8) /* verified on pcb */
2347   MDRV_CPU_PROGRAM_MAP(csilver_readmem,csilver_writemem)
2317   MDRV_CPU_PROGRAM_MAP(csilver_map,0)
23482318
23492319   MDRV_CPU_ADD("sub", M6809, XTAL_12MHz/8) /* verified on pcb */
2350   MDRV_CPU_PROGRAM_MAP(csilver_sub_readmem,csilver_sub_writemem)
2320   MDRV_CPU_PROGRAM_MAP(csilver_sub_map,0)
23512321   MDRV_CPU_VBLANK_INT("screen", nmi_line_pulse)
23522322
23532323   MDRV_CPU_ADD("audiocpu", M6502, XTAL_12MHz/8) /* verified on pcb */
2354   MDRV_CPU_PROGRAM_MAP(csilver_s_readmem,csilver_s_writemem)
2324   MDRV_CPU_PROGRAM_MAP(csilver_s_map,0)
23552325                        /* NMIs are caused by the main CPU */
23562326   MDRV_QUANTUM_TIME(HZ(6000))
23572327
r4679r4680
23812351   MDRV_SOUND_ROUTE(3, "mono", 0.20)
23822352
23832353   MDRV_SOUND_ADD("ym2", YM3526, XTAL_12MHz/4) /* verified on pcb */
2384   MDRV_SOUND_CONFIG(oscar_ym3526_interface)
2354   MDRV_SOUND_CONFIG(ym3526_config)
23852355   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.70)
23862356
23872357   MDRV_SOUND_ADD("msm", MSM5205, XTAL_384kHz) /* verified on pcb */
r4679r4680
23932363
23942364   /* basic machine hardware */
23952365   MDRV_CPU_ADD("maincpu", HD6309,3000000*4) /* HD63C09EP */
2396   MDRV_CPU_PROGRAM_MAP(garyoret_readmem,garyoret_writemem)
2366   MDRV_CPU_PROGRAM_MAP(garyoret_map,0)
23972367   MDRV_CPU_VBLANK_INT("screen", gondo_interrupt)
23982368
23992369   MDRV_CPU_ADD("audiocpu", M6502, 1500000)
2400   MDRV_CPU_PROGRAM_MAP(dec8_s_readmem,oscar_s_writemem)
2370   MDRV_CPU_PROGRAM_MAP(oscar_s_map,0)
24012371                        /* NMIs are caused by the main CPU */
24022372
24032373   /* video hardware */
r4679r4680
25062476   ROM_REGION( 2*0x10000, "audiocpu", 0 )   /* 64K for sound CPU + 64k for decrypted opcodes */
25072477   ROM_LOAD( "dz-06.rom", 0x8000, 0x8000, CRC(798f56df) SHA1(aee33cd0c102015114e17f6cb98945e7cc806f55) )
25082478
2509   ROM_REGION( 0x1000, "cpu2", 0 )   /* ID8751H MCU */
2479   ROM_REGION( 0x1000, "mcu", 0 )   /* ID8751H MCU */
25102480   ROM_LOAD( "id8751h.mcu", 0x0000, 0x1000, NO_DUMP )
25112481
25122482   ROM_REGION( 0x08000, "gfx1", ROMREGION_DISPOSE )   /* characters */
r4679r4680
25442514   ROM_REGION( 2*0x10000, "audiocpu", 0 )   /* 64K for sound CPU + 64k for decrypted opcodes */
25452515   ROM_LOAD( "dz-06.rom", 0x8000, 0x8000, CRC(798f56df) SHA1(aee33cd0c102015114e17f6cb98945e7cc806f55) )
25462516
2547   ROM_REGION( 0x1000, "cpu2", 0 )   /* ID8751H MCU */
2517   ROM_REGION( 0x1000, "mcu", 0 )   /* ID8751H MCU */
25482518   ROM_LOAD( "id8751h.mcu", 0x0000, 0x1000, NO_DUMP )
25492519
25502520   ROM_REGION( 0x08000, "gfx1", ROMREGION_DISPOSE )   /* characters */
r4679r4680
26672637   ROM_REGION( 0x10000, "audiocpu", 0 )
26682638   ROM_LOAD( "dw-05.5f", 0x8000, 0x8000, CRC(c28c4d82) SHA1(ad88506bcbc9763e39d6e6bb25ef2bd6aa929f30) )
26692639
2670   ROM_REGION( 0x1000, "cpu2", 0 )   /* ID8751H MCU */
2671   ROM_LOAD( "id8751h.mcu", 0x0000, 0x1000, NO_DUMP )
2640   ROM_REGION( 0x1000, "mcu", 0 )   /* ID8751H MCU */
2641   ROM_LOAD( "dw.1b", 0x0000, 0x1000, CRC(28e9ced9) SHA1(a3d6dfa1e44fa93c0f30fa0a88b6dd3d6e5c4dda) )
26722642
26732643   ROM_REGION( 0x08000, "gfx1", ROMREGION_DISPOSE )   /* characters */
26742644   ROM_LOAD( "dw-00.16b", 0x00000, 0x8000, CRC(3d25f15c) SHA1(590518460d069bc235b5efebec81731d7a2375de) )
r4679r4680
27622732   ROM_REGION( 0x10000, "audiocpu", 0 )
27632733   ROM_LOAD( "27256.5f", 0x8000, 0x8000, CRC(c28c4d82) SHA1(ad88506bcbc9763e39d6e6bb25ef2bd6aa929f30) )
27642734
2765   ROM_REGION( 0x1000, "cpu2", 0 )   /* ID8751H MCU */
2766   ROM_LOAD( "id8751h.mcu", 0x0000, 0x1000, NO_DUMP )
2735   ROM_REGION( 0x1000, "mcu", 0 )   /* ID8751H MCU */
2736   ROM_LOAD( "dw.1b", 0x0000, 0x1000, CRC(28e9ced9) SHA1(a3d6dfa1e44fa93c0f30fa0a88b6dd3d6e5c4dda) )
27672737
27682738   ROM_REGION( 0x08000, "gfx1", ROMREGION_DISPOSE )   /* characters */
27692739   ROM_LOAD( "27256.16b", 0x00000, 0x8000, CRC(3d25f15c) SHA1(590518460d069bc235b5efebec81731d7a2375de) )
r4679r4680
27982768   ROM_REGION( 2*0x10000, "audiocpu", 0 )   /* 64K for sound CPU + 64k for decrypted opcodes */
27992769   ROM_LOAD( "dy04.d7", 0x8000, 0x8000, CRC(2ae3591c) SHA1(f21b06d84e2c3d3895be0812024641fd006e45cf) )
28002770
2801   ROM_REGION( 0x1000, "cpu2", 0 )   /* ID8751H MCU */
2771   ROM_REGION( 0x1000, "mcu", 0 )   /* ID8751H MCU */
28022772   ROM_LOAD( "id8751h.mcu", 0x0000, 0x1000, NO_DUMP )
28032773
28042774   ROM_REGION( 0x08000, "gfx1", ROMREGION_DISPOSE )   /* characters */
r4679r4680
28352805   ROM_REGION( 2*0x10000, "audiocpu", 0 )   /* 64K for sound CPU + 64k for decrypted opcodes */
28362806   ROM_LOAD( "dy04.d7", 0x8000, 0x8000, CRC(2ae3591c) SHA1(f21b06d84e2c3d3895be0812024641fd006e45cf) )
28372807
2838   ROM_REGION( 0x1000, "cpu2", 0 )   /* ID8751H MCU */
2808   ROM_REGION( 0x1000, "mcu", 0 )   /* ID8751H MCU */
28392809   ROM_LOAD( "id8751h.mcu", 0x0000, 0x1000, NO_DUMP )
28402810
28412811   ROM_REGION( 0x08000, "gfx1", ROMREGION_DISPOSE )   /* characters */
r4679r4680
28732843   ROM_REGION( 0x10000, "audiocpu", 0 )
28742844   ROM_LOAD( "dt-05.256", 0x8000, 0x8000, CRC(ec08aa29) SHA1(ce83974ae095d9518d1ebf9f7e712f0cbc2c1b42) )
28752845
2876   ROM_REGION( 0x1000, "cpu2", 0 )   /* ID8751H MCU */
2846   ROM_REGION( 0x1000, "mcu", 0 )   /* ID8751H MCU */
28772847   ROM_LOAD( "id8751h.mcu", 0x0000, 0x1000, NO_DUMP )
28782848
28792849   ROM_REGION( 0x08000, "gfx1", ROMREGION_DISPOSE )   /* characters */
r4679r4680
29172887   ROM_REGION( 0x10000, "audiocpu", 0 )
29182888   ROM_LOAD( "ds05",      0x8000, 0x8000, CRC(e6e28ca9) SHA1(3b1f8219331db1910bfb428f8964f8fc1063df6f) )
29192889
2920   ROM_REGION( 0x1000, "cpu2", 0 )   /* ID8751H MCU */
2890   ROM_REGION( 0x1000, "mcu", 0 )   /* ID8751H MCU */
29212891   ROM_LOAD( "id8751h.mcu", 0x0000, 0x1000, NO_DUMP )
29222892
29232893   ROM_REGION( 0x08000, "gfx1", ROMREGION_DISPOSE )   /* characters */
r4679r4680
29672937   ROM_REGION( 2*0x10000, "audiocpu", 0 )   /* 64K for sound CPU + 64k for decrypted opcodes */
29682938   ROM_LOAD( "ed12", 0x8000, 0x8000, CRC(432031c5) SHA1(af2deea48b98eb0f9e85a4fb1486021f999f9abd) )
29692939
2970   ROM_REGION( 0x1000, "cpu3", 0 )   /* ID8751H MCU */
2940   ROM_REGION( 0x1000, "mcu", 0 )   /* ID8751H MCU */
29712941   ROM_LOAD( "id8751h.mcu", 0x0000, 0x1000, NO_DUMP )
29722942
29732943   ROM_REGION( 0x08000, "gfx1", ROMREGION_DISPOSE )   /* characters */
r4679r4680
29972967   ROM_REGION( 2*0x10000, "audiocpu", 0 )   /* 64K for sound CPU + 64k for decrypted opcodes */
29982968   ROM_LOAD( "ed12", 0x8000, 0x8000,  CRC(432031c5) SHA1(af2deea48b98eb0f9e85a4fb1486021f999f9abd) )
29992969
3000   ROM_REGION( 0x1000, "cpu3", 0 )   /* ID8751H MCU */
2970   ROM_REGION( 0x1000, "mcu", 0 )   /* ID8751H MCU */
30012971   ROM_LOAD( "id8751h.mcu", 0x0000, 0x1000, NO_DUMP )
30022972
30032973   ROM_REGION( 0x08000, "gfx1", ROMREGION_DISPOSE )   /* characters */
r4679r4680
30303000   ROM_REGION( 2*0x10000, "audiocpu", 0 )   /* 64K for sound CPU + 64k for decrypted opcodes */
30313001   ROM_LOAD( "ed12", 0x8000, 0x8000, CRC(432031c5) SHA1(af2deea48b98eb0f9e85a4fb1486021f999f9abd) )
30323002
3033   ROM_REGION( 0x1000, "cpu3", 0 )   /* ID8751H MCU */
3003   ROM_REGION( 0x1000, "mcu", 0 )   /* ID8751H MCU */
30343004   ROM_LOAD( "id8751h.mcu", 0x0000, 0x1000, NO_DUMP )
30353005
30363006   ROM_REGION( 0x08000, "gfx1", ROMREGION_DISPOSE )   /* characters */
r4679r4680
30633033   ROM_REGION( 2*0x10000, "audiocpu", 0 )   /* 64K for sound CPU + 64k for decrypted opcodes */
30643034   ROM_LOAD( "ed12", 0x8000, 0x8000, CRC(432031c5) SHA1(af2deea48b98eb0f9e85a4fb1486021f999f9abd) )
30653035
3066   ROM_REGION( 0x1000, "cpu3", 0 )   /* ID8751H MCU */
3036   ROM_REGION( 0x1000, "mcu", 0 )   /* ID8751H MCU */
30673037   ROM_LOAD( "id8751h.mcu", 0x0000, 0x1000, NO_DUMP )
30683038
30693039   ROM_REGION( 0x08000, "gfx1", ROMREGION_DISPOSE )   /* characters */
r4679r4680
30963066   ROM_REGION( 0x10000, "audiocpu", 0 )
30973067   ROM_LOAD( "dl05-.5h",    0x8000, 0x8000, CRC(1a5df8c0) SHA1(83d36b1d5fb87f50c44f3110804d6bbdbbc0da99) )
30983068
3099   ROM_REGION( 0x1000, "cpu3", 0 )   /* ID8751H MCU */
3069   ROM_REGION( 0x1000, "mcu", 0 )   /* ID8751H MCU */
31003070   ROM_LOAD( "id8751h.mcu", 0x0000, 0x1000, NO_DUMP )
31013071
31023072   ROM_REGION( 0x08000, "gfx1", ROMREGION_DISPOSE )   /* characters */
r4679r4680
31323102   ROM_REGION( 0x10000, "audiocpu", 0 )
31333103   ROM_LOAD( "dl05-.5h",    0x8000, 0x8000, CRC(1a5df8c0) SHA1(83d36b1d5fb87f50c44f3110804d6bbdbbc0da99) )
31343104
3135   ROM_REGION( 0x1000, "cpu3", 0 )   /* ID8751H MCU */
3105   ROM_REGION( 0x1000, "mcu", 0 )   /* ID8751H MCU */
31363106   ROM_LOAD( "id8751h.mcu", 0x0000, 0x1000, NO_DUMP )
31373107
31383108   ROM_REGION( 0x08000, "gfx1", ROMREGION_DISPOSE )   /* characters */
r4679r4680
31683138   ROM_REGION( 0x10000, "audiocpu", 0 )
31693139   ROM_LOAD( "dl05-.5h",    0x8000, 0x8000, CRC(1a5df8c0) SHA1(83d36b1d5fb87f50c44f3110804d6bbdbbc0da99) )
31703140
3171   ROM_REGION( 0x1000, "cpu3", 0 )   /* ID8751H MCU */
3141   ROM_REGION( 0x1000, "mcu", 0 )   /* ID8751H MCU */
31723142   ROM_LOAD( "id8751h.mcu", 0x0000, 0x1000, NO_DUMP )
31733143
31743144   ROM_REGION( 0x08000, "gfx1", ROMREGION_DISPOSE )   /* characters */
r4679r4680
32073177   ROM_REGION( 0x10000, "audiocpu", 0 )
32083178   ROM_LOAD( "dk-07.rom", 0x08000, 0x08000, CRC(887e4bcc) SHA1(6427396080e9cd8647adff47c8ed04593a14268c) )
32093179
3210   ROM_REGION( 0x1000, "cpu3", 0 )   /* ID8751H MCU */
3180   ROM_REGION( 0x1000, "mcu", 0 )   /* ID8751H MCU */
32113181   ROM_LOAD( "id8751h.mcu", 0x0000, 0x1000, NO_DUMP )
32123182
32133183   ROM_REGION( 0x08000, "gfx1", ROMREGION_DISPOSE )   /* characters */
r4679r4680
32443214   ROM_REGION( 0x10000, "audiocpu", 0 )
32453215   ROM_LOAD( "2.bin", 0x8000, 0x8000,  CRC(4a471c38) SHA1(963ed7b6afeefdfc2cf0d65b0998f973330e6495) )
32463216
3247   ROM_REGION( 0x1000, "cpu3", 0 )   /* ID8751H MCU */
3217   ROM_REGION( 0x1000, "mcu", 0 )   /* ID8751H MCU */
32483218   ROM_LOAD( "id8751h.mcu", 0x0000, 0x1000, NO_DUMP )
32493219
32503220   ROM_REGION( 0x08000, "gfx1", ROMREGION_DISPOSE )   /* characters */
r4679r4680
33273297   ROM_LOAD( "dx05.3f", 0x10000, 0x08000,  CRC(eb32cf25) SHA1(9390c88033259c65eb15320e31f5d696970987cc) )
33283298   ROM_CONTINUE(   0x08000, 0x08000 )
33293299
3330   ROM_REGION( 0x1000, "cpu3", 0 )   /* ID8751H MCU */
3300   ROM_REGION( 0x1000, "mcu", 0 )   /* ID8751H MCU */
33313301   ROM_LOAD( "id8751h.mcu", 0x0000, 0x1000, NO_DUMP ) // dx-8.19a ?
33323302
33333303   ROM_REGION( 0x08000, "gfx1", ROMREGION_DISPOSE )   /* characters */
r4679r4680
33653335   ROM_LOAD( "dx05.a6", 0x10000, 0x08000,  CRC(eb32cf25) SHA1(9390c88033259c65eb15320e31f5d696970987cc) )
33663336   ROM_CONTINUE(   0x08000, 0x08000 )
33673337
3368   ROM_REGION( 0x1000, "cpu3", 0 )   /* ID8751H MCU */
3338   ROM_REGION( 0x1000, "mcu", 0 )   /* ID8751H MCU */
33693339   ROM_LOAD( "id8751h.mcu", 0x0000, 0x1000, NO_DUMP )
33703340
33713341   ROM_REGION( 0x08000, "gfx1", ROMREGION_DISPOSE )   /* characters */
r4679r4680
34003370   ROM_REGION( 0x10000, "audiocpu", 0 )
34013371   ROM_LOAD( "dv05", 0x08000, 0x08000, CRC(c97c347f) SHA1(a1b22733dc15d524af97db3e608a82503a49b182) )
34023372
3403   ROM_REGION( 0x1000, "cpu2", 0 )   /* ID8751H MCU */
3373   ROM_REGION( 0x1000, "mcu", 0 )   /* ID8751H MCU */
34043374   ROM_LOAD( "id8751h.mcu", 0x0000, 0x1000, NO_DUMP )
34053375
34063376   ROM_REGION( 0x08000, "gfx1", ROMREGION_DISPOSE )   /* characters */
r4679r4680
34503420
34513421   /* bits 5 and 6 of the opcodes are swapped */
34523422   rom = memory_region(machine, "audiocpu");
3453   decrypt = auto_malloc(0x8000);
3423   decrypt = auto_alloc_array(machine, UINT8, 0x8000);
34543424
34553425   memory_set_decrypted_region(space, 0x8000, 0xffff, decrypt);
34563426
r4679r4680
34773447GAME( 1988, cobracmj, cobracom, cobracom, cobracom, 0,       ROT0,   "Data East Corporation", "Cobra-Command (Japan)", 0 )
34783448GAME( 1987, ghostb,   0,        ghostb,   ghostb,   ghostb,  ROT0,   "Data East USA", "The Real Ghostbusters (US 2 Players)", 0 )
34793449GAME( 1987, ghostb3,  ghostb,   ghostb,   ghostb3,  ghostb,  ROT0,   "Data East USA", "The Real Ghostbusters (US 3 Players)", 0 )
3480GAME( 1987, meikyuh,  ghostb,   ghostb,   ghostb,   meikyuh, ROT0,   "Data East Corporation", "Meikyuu Hunter G (Japan, set 1)", 0 )
3481GAME( 1987, meikyuha, ghostb,   ghostb,   ghostb,   meikyuh, ROT0,   "Data East Corporation", "Meikyuu Hunter G (Japan, set 2)", 0 )
3450GAME( 1987, meikyuh,  ghostb,   meikyuh,  meikyuh,  meikyuh, ROT0,   "Data East Corporation", "Meikyuu Hunter G (Japan, set 1)", 0 )
3451GAME( 1987, meikyuha, ghostb,   meikyuh,  meikyuh,  meikyuh, ROT0,   "Data East Corporation", "Meikyuu Hunter G (Japan, set 2)", 0 )
34823452GAME( 1987, srdarwin, 0,        srdarwin, srdarwin, deco222, ROT270, "Data East Corporation", "Super Real Darwin (World)", 0 )
34833453GAME( 1987, srdarwnj, srdarwin, srdarwin, srdarwin, deco222, ROT270, "Data East Corporation", "Super Real Darwin (Japan)", 0 )
34843454GAME( 1987, gondo,    0,        gondo,    gondo,    0,       ROT270, "Data East USA", "Gondomania (US)", 0 )
src/mame/drivers/rcorsair.c
r4679r4680
11/* Red Corsair */
22
3/* skeleton driver */
34/* This driver is not being worked on by the original author.
45   Somebody will probably need to do extensive research on the
56   PCB to establish what the custom block actually contains,
r4679r4680
5354#include "driver.h"
5455#include "cpu/i8085/i8085.h"
5556
56static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 )
57   AM_RANGE(0x0000, 0x1fff) AM_READ(SMH_ROM)
57static ADDRESS_MAP_START( rcorsair_map, ADDRESS_SPACE_PROGRAM, 8 )
58   AM_RANGE(0x0000, 0x1fff) AM_ROM
5859ADDRESS_MAP_END
5960
60static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 )
61   AM_RANGE(0x0000, 0x1fff) AM_WRITE(SMH_ROM)
62ADDRESS_MAP_END
63
6461static INPUT_PORTS_START( inports )
6562    PORT_START("IN0")
6663    PORT_DIPNAME(   0x01, 0x01, DEF_STR( Unknown ) )
r4679r4680
120117       program code, unknown type */
121118
122119   MDRV_CPU_ADD("maincpu", 8085A,8000000)       /* Sound CPU? */
123   MDRV_CPU_PROGRAM_MAP(readmem,writemem)
120   MDRV_CPU_PROGRAM_MAP(rcorsair_map,0)
124121//  MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
125122
126123   MDRV_SCREEN_ADD("screen", RASTER)
src/mame/drivers/slotcarn.c
r4679r4680
145145
146146static MC6845_ON_VSYNC_CHANGED(vsync_changed)
147147{
148   cpu_set_input_line(device->machine->cpu[0], 0, vsync ? ASSERT_LINE : CLEAR_LINE);
148   cputag_set_input_line(device->machine, "maincpu", 0, vsync ? ASSERT_LINE : CLEAR_LINE);
149149}
150150
151151static const mc6845_interface mc6845_intf =
r4679r4680
532532
533533static MACHINE_START(merit)
534534{
535   ram_palette = auto_malloc(RAM_PALETTE_SIZE);
535   ram_palette = auto_alloc_array(machine, UINT8, RAM_PALETTE_SIZE);
536536   state_save_register_global_pointer(machine, ram_palette, RAM_PALETTE_SIZE);
537537}
538538
src/mame/drivers/tbowl.c
r4679r4680
6868   bankaddress = 0x10000 + ((data & 0xf8) << 8);
6969
7070
71   memory_set_bankptr(space->machine, 2,&RAM[bankaddress]);
71   memory_set_bankptr(space->machine, 2, &RAM[bankaddress]);
7272}
7373
7474/*** Shared Ram Handlers
r4679r4680
8787
8888static WRITE8_HANDLER( tbowl_sound_command_w )
8989{
90   soundlatch_w(space,offset,data);
91   cpu_set_input_line(space->machine->cpu[2],INPUT_LINE_NMI,PULSE_LINE);
90   soundlatch_w(space, offset, data);
91   cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
9292}
9393
9494
r4679r4680
110110   AM_RANGE(0xc000, 0xdfff) AM_RAM_WRITE(tbowl_bgvideoram_w) AM_BASE(&tbowl_bgvideoram)
111111   AM_RANGE(0xe000, 0xefff) AM_RAM_WRITE(tbowl_txvideoram_w) AM_BASE(&tbowl_txvideoram)
112112//  AM_RANGE(0xf000, 0xf000) AM_WRITE(unknown_write) * written during start-up, not again */
113   AM_RANGE(0xf000, 0xf7ff) AM_READWRITE(SMH_BANK1, SMH_ROM)
113   AM_RANGE(0xf000, 0xf7ff) AM_READWRITE(SMH_BANK(1), SMH_ROM)
114114   AM_RANGE(0xf800, 0xfbff) AM_READWRITE(shared_r, shared_w) AM_BASE(&shared_ram) /* check */
115115   AM_RANGE(0xfc00, 0xfc00) AM_READ_PORT("P1") AM_WRITE(tbowlb_bankswitch_w)
116116   AM_RANGE(0xfc01, 0xfc01) AM_READ_PORT("P2")
r4679r4680
141141static WRITE8_HANDLER ( tbowl_trigger_nmi )
142142{
143143   /* trigger NMI on 6206B's Cpu? (guess but seems to work..) */
144   cpu_set_input_line(space->machine->cpu[0], INPUT_LINE_NMI, PULSE_LINE);
144   cputag_set_input_line(space->machine, "maincpu", INPUT_LINE_NMI, PULSE_LINE);
145145}
146146
147147static ADDRESS_MAP_START( 6206C_map, ADDRESS_SPACE_PROGRAM, 8 )
r4679r4680
150150   AM_RANGE(0xc000, 0xd7ff) AM_WRITE(SMH_RAM)
151151   AM_RANGE(0xd800, 0xdfff) AM_WRITE(SMH_RAM) AM_BASE(&tbowl_spriteram)
152152   AM_RANGE(0xe000, 0xefff) AM_RAM_WRITE(paletteram_xxxxBBBBRRRRGGGG_be_w) AM_BASE(&paletteram) // 2x palettes, one for each monitor?
153   AM_RANGE(0xf000, 0xf7ff) AM_READWRITE(SMH_BANK2, SMH_ROM)
153   AM_RANGE(0xf000, 0xf7ff) AM_READWRITE(SMH_BANK(2), SMH_ROM)
154154   AM_RANGE(0xf800, 0xfbff) AM_READWRITE(shared_r, shared_w)
155155   AM_RANGE(0xfc00, 0xfc00) AM_WRITE(tbowlc_bankswitch_w)
156156   AM_RANGE(0xfc01, 0xfc01) AM_WRITENOP /* ? */
r4679r4680
444444
445445static void irqhandler(const device_config *device, int linestate)
446446{
447   cpu_set_input_line(device->machine->cpu[2],0,linestate);
447   cputag_set_input_line(device->machine, "audiocpu", 0, linestate);
448448}
449449
450450static const ym3812_interface ym3812_config =
src/mame/drivers/battlane.c
r4679r4680
5959    /*
6060    if (~battlane_cpu_control & 0x08)
6161    {
62        cpu_set_input_line(space->machine->cpu[0], INPUT_LINE_NMI, PULSE_LINE);
63        cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_NMI, PULSE_LINE);
62        cputag_set_input_line(space->machine, "maincpu", INPUT_LINE_NMI, PULSE_LINE);
63        cputag_set_input_line(space->machine, "sub", INPUT_LINE_NMI, PULSE_LINE);
6464    }
6565    */
6666
r4679r4680
6868        CPU2's SWI will trigger an 6809 IRQ on the master by resetting 0x04
6969        Master will respond by setting the bit back again
7070    */
71    cpu_set_input_line(space->machine->cpu[0], M6809_IRQ_LINE,  data & 0x04 ? CLEAR_LINE : HOLD_LINE);
71    cputag_set_input_line(space->machine, "maincpu", M6809_IRQ_LINE,  data & 0x04 ? CLEAR_LINE : HOLD_LINE);
7272
7373   /*
7474    Slave function call (e.g. ROM test):
r4679r4680
8686    FA96: 27 FA       BEQ   $FA92   ; Wait for bit to be set
8787    */
8888
89   cpu_set_input_line(space->machine->cpu[1], M6809_IRQ_LINE, data & 0x02 ? CLEAR_LINE : HOLD_LINE);
89   cputag_set_input_line(space->machine, "sub", M6809_IRQ_LINE, data & 0x02 ? CLEAR_LINE : HOLD_LINE);
9090}
9191
9292static ADDRESS_MAP_START( battlane_map, ADDRESS_SPACE_PROGRAM, 8 )
r4679r4680
110110   if (~battlane_cpu_control & 0x08)
111111   {
112112      cpu_set_input_line(device, INPUT_LINE_NMI, PULSE_LINE);
113      cpu_set_input_line(device->machine->cpu[1], INPUT_LINE_NMI, PULSE_LINE);
113      cputag_set_input_line(device->machine, "sub", INPUT_LINE_NMI, PULSE_LINE);
114114   }
115115}
116116
r4679r4680
242242
243243static void irqhandler(const device_config *device, int irq)
244244{
245   cpu_set_input_line(device->machine->cpu[0], M6809_FIRQ_LINE, irq ? ASSERT_LINE : CLEAR_LINE);
245   cputag_set_input_line(device->machine, "maincpu", M6809_FIRQ_LINE, irq ? ASSERT_LINE : CLEAR_LINE);
246246}
247247
248248static const ym3526_interface ym3526_config =
src/mame/drivers/atarigt.c
r4679r4680
5656
5757static void update_interrupts(running_machine *machine)
5858{
59   cpu_set_input_line(machine->cpu[0], 3, atarigen_sound_int_state    ? ASSERT_LINE : CLEAR_LINE);
60   cpu_set_input_line(machine->cpu[0], 4, atarigen_video_int_state    ? ASSERT_LINE : CLEAR_LINE);
61   cpu_set_input_line(machine->cpu[0], 6, atarigen_scanline_int_state ? ASSERT_LINE : CLEAR_LINE);
59   cputag_set_input_line(machine, "maincpu", 3, atarigen_sound_int_state    ? ASSERT_LINE : CLEAR_LINE);
60   cputag_set_input_line(machine, "maincpu", 4, atarigen_video_int_state    ? ASSERT_LINE : CLEAR_LINE);
61   cputag_set_input_line(machine, "maincpu", 6, atarigen_scanline_int_state ? ASSERT_LINE : CLEAR_LINE);
6262}
6363
6464
r4679r4680
7979
8080static void cage_irq_callback(running_machine *machine, int reason)
8181{
82   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
82   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
8383
8484   if (reason)
85      atarigen_sound_int_gen(machine->cpu[0]);
85      atarigen_sound_int_gen(cputag_get_cpu(machine, "maincpu"));
8686   else
8787      atarigen_sound_int_ack_w(space,0,0,0xffff);
8888}
r4679r4680
12501250   protection_w = tmek_protection_w;
12511251
12521252   /* temp hack */
1253   memory_install_write32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xd72000, 0xd75fff, 0, 0, tmek_pf_w);
1253   memory_install_write32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xd72000, 0xd75fff, 0, 0, tmek_pf_w);
12541254}
12551255
12561256
src/mame/drivers/bigfghtr.c
r4679r4680
274274
275275static VIDEO_EOF( bigfghtr )
276276{
277   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
278   buffer_spriteram16_w(space,0,0,0xffff);
277   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
278   buffer_spriteram16_w(space, 0, 0, 0xffff);
279279}
280280
281281
r4679r4680
624624
625625GAME( 1989, skyrobo,        0, bigfghtr, bigfghtr, skyrobo,  ROT0, "Nichibutsu", "Sky Robo",GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION)
626626GAME( 1989, bigfghtr, skyrobo, bigfghtr, bigfghtr, bigfghtr, ROT0, "Nichibutsu", "Tatakae! Big Fighter",GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION)
627
src/mame/drivers/genesis.c
r4679r4680
1515#include "cpu/z80/z80.h"
1616#include "cpu/m68000/m68000.h"
1717#include "sound/2612intf.h"
18#include "sound/sn76496.h"
19
1820#include "genesis.h"
1921
2022#define MASTER_CLOCK      53693100
r4679r4680
7274/* call this whenever the interrupt state has changed */
7375static void update_interrupts(running_machine *machine)
7476{
75   cpu_set_input_line(machine->cpu[0], 2, irq2_int ? ASSERT_LINE : CLEAR_LINE);
76   cpu_set_input_line(machine->cpu[0], 4, scanline_int ? ASSERT_LINE : CLEAR_LINE);
77   cpu_set_input_line(machine->cpu[0], 6, vblank_int ? ASSERT_LINE : CLEAR_LINE);
77   cputag_set_input_line(machine, "maincpu", 2, irq2_int ? ASSERT_LINE : CLEAR_LINE);
78   cputag_set_input_line(machine, "maincpu", 4, scanline_int ? ASSERT_LINE : CLEAR_LINE);
79   cputag_set_input_line(machine, "maincpu", 6, vblank_int ? ASSERT_LINE : CLEAR_LINE);
7880}
7981
8082
r4679r4680
151153MACHINE_RESET( genesis )
152154{
153155   /* C2 doesn't have a Z80, so we can't just assume */
154   if (machine->cpu[1] != NULL && cpu_get_type(machine->cpu[1]) == CPU_Z80)
156   if (cputag_get_cpu(machine, "genesis_snd_z80") != NULL && cpu_get_type(cputag_get_cpu(machine, "genesis_snd_z80")) == CPU_Z80)
155157   {
156158       /* the following ensures that the Z80 begins without running away from 0 */
157159      /* 0x76 is just a forced 'halt' as soon as the CPU is initially run */
158160       genesis_z80_ram[0] = 0x76;
159161      genesis_z80_ram[0x38] = 0x76;
160162
161      cpu_set_input_line(machine->cpu[1], INPUT_LINE_HALT, ASSERT_LINE);
163      cputag_set_input_line(machine, "genesis_snd_z80", INPUT_LINE_HALT, ASSERT_LINE);
162164
163165      z80running = 0;
164166   }
r4679r4680
206208      if (data == 0x100)
207209      {
208210         z80running = 0;
209         cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_HALT, ASSERT_LINE);   /* halt Z80 */
211         cputag_set_input_line(space->machine, "genesis_snd_z80", INPUT_LINE_HALT, ASSERT_LINE);   /* halt Z80 */
210212         /* logerror("z80 stopped by 68k BusReq\n"); */
211213      }
212214      else
r4679r4680
214216         z80running = 1;
215217//          memory_set_bankptr(space->machine, 1, &genesis_z80_ram[0]);
216218
217         cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_HALT, CLEAR_LINE);
219         cputag_set_input_line(space->machine, "genesis_snd_z80", INPUT_LINE_HALT, CLEAR_LINE);
218220         /* logerror("z80 started, BusReq ends\n"); */
219221      }
220222      return;
221223   case 0x100:                  /* Z80 CPU Reset */
222224      if (data == 0x00)
223225      {
224         cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_HALT, ASSERT_LINE);
225         cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_RESET, PULSE_LINE);
226         cputag_set_input_line(space->machine, "genesis_snd_z80", INPUT_LINE_HALT, ASSERT_LINE);
227         cputag_set_input_line(space->machine, "genesis_snd_z80", INPUT_LINE_RESET, PULSE_LINE);
226228
227         cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_HALT, ASSERT_LINE);
229         cputag_set_input_line(space->machine, "genesis_snd_z80", INPUT_LINE_HALT, ASSERT_LINE);
228230         /* logerror("z80 reset, ram is %p\n", &genesis_z80_ram[0]); */
229231         z80running = 0;
230232         return;
r4679r4680
465467}
466468
467469#if 0
468static ADDRESS_MAP_START( genesis_readmem, ADDRESS_SPACE_PROGRAM, 16 )
469   AM_RANGE(0x000000, 0x3fffff) AM_READ(SMH_ROM)               /* Cartridge Program Rom */
470   AM_RANGE(0xa10000, 0xa1001f) AM_READ(genesis_io_r)            /* Genesis Input */
471   AM_RANGE(0xa00000, 0xa0ffff) AM_READ(genesis_68k_to_z80_r)
472   AM_RANGE(0xc00000, 0xc0001f) AM_READ(genesis_vdp_r)            /* VDP Access */
473   AM_RANGE(0xfe0000, 0xfeffff) AM_READ(SMH_BANK3)            /* Main Ram */
474   AM_RANGE(0xff0000, 0xffffff) AM_READ(SMH_RAM)               /* Main Ram */
475ADDRESS_MAP_END
476
477
478static ADDRESS_MAP_START( genesis_writemem, ADDRESS_SPACE_PROGRAM, 16 )
479   AM_RANGE(0x000000, 0x3fffff) AM_WRITE(SMH_ROM)               /* Cartridge Program Rom */
480   AM_RANGE(0xa10000, 0xa1001f) AM_WRITE(genesis_io_w) AM_BASE(&genesis_io_ram)            /* Genesis Input */
470static ADDRESS_MAP_START( genesis_map, ADDRESS_SPACE_PROGRAM, 16 )
471   AM_RANGE(0x000000, 0x3fffff) AM_ROM                                                /* Cartridge Program Rom */
472   AM_RANGE(0xa00000, 0xa0ffff) AM_READWRITE(genesis_68k_to_z80_r, genesis_68k_to_z80_w)
473   AM_RANGE(0xa10000, 0xa1001f) AM_READWRITE(genesis_io_r, genesis_io_w) AM_BASE(&genesis_io_ram)   /* Genesis Input */
481474   AM_RANGE(0xa11000, 0xa11203) AM_WRITE(genesis_ctrl_w)
482   AM_RANGE(0xa00000, 0xa0ffff) AM_WRITE(genesis_68k_to_z80_w)
483   AM_RANGE(0xc00000, 0xc0001f) AM_WRITE(genesis_vdp_w)            /* VDP Access */
484   AM_RANGE(0xfe0000, 0xfeffff) AM_WRITE(SMH_BANK3)            /* Main Ram */
485   AM_RANGE(0xff0000, 0xffffff) AM_WRITE(SMH_RAM) AM_BASE(&genesis_68k_ram)/* Main Ram */
475   AM_RANGE(0xc00000, 0xc0001f) AM_READWRITE(genesis_vdp_r, genesis_vdp_w)                     /* VDP Access */
476   AM_RANGE(0xfe0000, 0xfeffff) AM_RAMBANK(3)                                          /* Main Ram */
477   AM_RANGE(0xff0000, 0xffffff) AM_RAM AM_BASE(&genesis_68k_ram)                           /* Main Ram */
486478ADDRESS_MAP_END
487479#endif
488480
r4679r4680
586578
587579
588580#if 0
589static ADDRESS_MAP_START( genesis_z80_readmem, ADDRESS_SPACE_PROGRAM, 8 )
590    AM_RANGE(0x0000, 0x1fff) AM_READ(SMH_BANK1)
591    AM_RANGE(0x2000, 0x3fff) AM_READ(SMH_BANK2) /* mirror */
592   AM_RANGE(0x4000, 0x7fff) AM_READ(genesis_z80_r)
581static ADDRESS_MAP_START( genesis_z80_map, ADDRESS_SPACE_PROGRAM, 8 )
582    AM_RANGE(0x0000, 0x1fff) AM_RAMBANK(1) AM_BASE(&genesis_z80_ram)
583    AM_RANGE(0x2000, 0x3fff) AM_RAMBANK(2)   /* mirror */
584   AM_RANGE(0x4000, 0x7fff) AM_READWRITE(genesis_z80_r, genesis_z80_w)
593585   AM_RANGE(0x8000, 0xffff) AM_READ(genesis_z80_bank_r)
594ADDRESS_MAP_END
595
596static ADDRESS_MAP_START( genesis_z80_writemem, ADDRESS_SPACE_PROGRAM, 8 )
597   AM_RANGE(0x0000, 0x1fff) AM_WRITE(SMH_BANK1) AM_BASE(&genesis_z80_ram)
598    AM_RANGE(0x2000, 0x3fff) AM_WRITE(SMH_BANK2) /* mirror */
599   AM_RANGE(0x4000, 0x7fff) AM_WRITE(genesis_z80_w)
600586 // AM_RANGE(0x8000, 0xffff) AM_WRITE(genesis_z80_bank_w)
601587ADDRESS_MAP_END
602588
603589static MACHINE_DRIVER_START( genesis_base )
604590   /*basic machine hardware */
605591   MDRV_CPU_ADD("maincpu", M68000, MASTER_CLOCK / 7)
606   MDRV_CPU_PROGRAM_MAP(genesis_readmem, genesis_writemem)
592   MDRV_CPU_PROGRAM_MAP(genesis_map,0)
607593   MDRV_CPU_VBLANK_INT("screen", genesis_vblank_interrupt)
608594
609595   MDRV_CPU_ADD("soundcpu", Z80, MASTER_CLOCK / 15)
610   MDRV_CPU_PROGRAM_MAP(genesis_z80_readmem, genesis_z80_writemem)
596   MDRV_CPU_PROGRAM_MAP(genesis_z80_map,0)
611597   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold) /* from vdp at scanline 0xe0 */
612598
613599   MDRV_QUANTUM_TIME(HZ(6000))
src/mame/drivers/thepit.c
r4679r4680
10461046static DRIVER_INIT( rtriv )
10471047{
10481048   // Set-up the weirdest questions read ever done
1049   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x4000, 0x4fff, 0, 0, rtriv_question_r);
1049   memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x4000, 0x4fff, 0, 0, rtriv_question_r);
10501050}
10511051
10521052
src/mame/drivers/trvmadns.c
r4679r4680
184184   {
185185      if(cpu_get_previouspc(space->cpu)==0x29e9)// || cpu_get_previouspc(space->cpu)==0x1b3f) //29f5
186186      {
187         cpu_set_input_line(space->machine->cpu[0], 0, HOLD_LINE);
187         cputag_set_input_line(space->machine, "maincpu", 0, HOLD_LINE);
188188      }
189189//      else
190190//          printf("%x \n", cpu_get_previouspc(space->cpu));
r4679r4680
198198
199199static ADDRESS_MAP_START( cpu_map, ADDRESS_SPACE_PROGRAM, 8 )
200200   AM_RANGE(0x0000, 0x5fff) AM_ROM
201   AM_RANGE(0x6000, 0x6fff) AM_READ(SMH_BANK1)
202   AM_RANGE(0x7000, 0x7fff) AM_READ(SMH_BANK2)
201   AM_RANGE(0x6000, 0x6fff) AM_READ(SMH_BANK(1))
202   AM_RANGE(0x7000, 0x7fff) AM_READ(SMH_BANK(2))
203203   AM_RANGE(0x6000, 0x7fff) AM_WRITE(trvmadns_gfxram_w) AM_BASE(&trvmadns_gfxram)
204204   AM_RANGE(0x8000, 0x87ff) AM_RAM
205205   AM_RANGE(0xc000, 0xc01f) AM_RAM_WRITE(paletteram_xxxxBBBBRRRRGGGG_le_w) AM_BASE(&paletteram)
src/mame/drivers/cloud9.c
r4679r4680
141141   /* assert the IRQ if not already asserted */
142142   if (!irq_state)
143143   {
144      cpu_set_input_line(machine->cpu[0], 0, ASSERT_LINE);
144      cputag_set_input_line(machine, "maincpu", 0, ASSERT_LINE);
145145      irq_state = 1;
146146   }
147147
r4679r4680
202202   schedule_next_irq(machine, 0-64);
203203
204204   /* allocate backing memory for the NVRAM */
205   generic_nvram = auto_malloc(generic_nvram_size);
205   generic_nvram = auto_alloc_array(machine, UINT8, generic_nvram_size);
206206
207207   /* setup for save states */
208208   state_save_register_global(machine, irq_state);
r4679r4680
212212
213213static MACHINE_RESET( cloud9 )
214214{
215   cpu_set_input_line(machine->cpu[0], 0, CLEAR_LINE);
215   cputag_set_input_line(machine, "maincpu", 0, CLEAR_LINE);
216216   irq_state = 0;
217217}
218218
r4679r4680
228228{
229229   if (irq_state)
230230   {
231      cpu_set_input_line(space->machine->cpu[0], 0, CLEAR_LINE);
231      cputag_set_input_line(space->machine, "maincpu", 0, CLEAR_LINE);
232232      irq_state = 0;
233233   }
234234}
r4679r4680
303303static ADDRESS_MAP_START( cloud9_map, ADDRESS_SPACE_PROGRAM, 8 )
304304   AM_RANGE(0x0000, 0x0001) AM_WRITE(cloud9_bitmode_addr_w)
305305   AM_RANGE(0x0002, 0x0002) AM_READWRITE(cloud9_bitmode_r, cloud9_bitmode_w)
306   AM_RANGE(0x0000, 0x4fff) AM_READWRITE(SMH_BANK1, cloud9_videoram_w)
306   AM_RANGE(0x0000, 0x4fff) AM_READWRITE(SMH_BANK(1), cloud9_videoram_w)
307307   AM_RANGE(0x5000, 0x53ff) AM_RAM AM_BASE(&spriteram)
308308   AM_RANGE(0x5400, 0x547f) AM_WRITE(watchdog_reset_w)
309309   AM_RANGE(0x5480, 0x54ff) AM_WRITE(irq_ack_w)
src/mame/drivers/rpunch.c
r4679r4680
147147static void ym2151_irq_gen(const device_config *device, int state)
148148{
149149   ym2151_irq = state;
150   cpu_set_input_line(device->machine->cpu[1], 0, (ym2151_irq | sound_busy) ? ASSERT_LINE : CLEAR_LINE);
150   cputag_set_input_line(device->machine, "audiocpu", 0, (ym2151_irq | sound_busy) ? ASSERT_LINE : CLEAR_LINE);
151151}
152152
153153
r4679r4680
181181{
182182   sound_busy = 1;
183183   sound_data = param;
184   cpu_set_input_line(machine->cpu[1], 0, (ym2151_irq | sound_busy) ? ASSERT_LINE : CLEAR_LINE);
184   cputag_set_input_line(machine, "audiocpu", 0, (ym2151_irq | sound_busy) ? ASSERT_LINE : CLEAR_LINE);
185185}
186186
187187
r4679r4680
195195static READ8_HANDLER( sound_command_r )
196196{
197197   sound_busy = 0;
198   cpu_set_input_line(space->machine->cpu[1], 0, (ym2151_irq | sound_busy) ? ASSERT_LINE : CLEAR_LINE);
198   cputag_set_input_line(space->machine, "audiocpu", 0, (ym2151_irq | sound_busy) ? ASSERT_LINE : CLEAR_LINE);
199199   return sound_data;
200200}
201201
src/mame/drivers/bingoc.c
r4679r4680
7777static WRITE16_HANDLER( main_sound_latch_w )
7878{
7979   soundlatch_w(space,0,data&0xff);
80   cpu_set_input_line(space->machine->cpu[1],INPUT_LINE_NMI,PULSE_LINE);
80   cputag_set_input_line(space->machine, "soundcpu", INPUT_LINE_NMI, PULSE_LINE);
8181}
8282#endif
8383
r4679r4680
180180ROM_END
181181
182182GAME( 1989, bingoc,  0,    bingoc, bingoc,  0, ROT0, "Sega", "Bingo Circus (Rev. A 891001)", GAME_NOT_WORKING )
183
src/mame/drivers/changela.c
r4679r4680
130130}
131131
132132
133static ADDRESS_MAP_START( mcu_readmem, ADDRESS_SPACE_PROGRAM, 8 )
133static ADDRESS_MAP_START( mcu_map, ADDRESS_SPACE_PROGRAM, 8 )
134134   ADDRESS_MAP_GLOBAL_MASK(0x7ff)
135   AM_RANGE(0x0000, 0x0000) AM_READ(changela_68705_portA_r)
136   AM_RANGE(0x0001, 0x0001) AM_READ(changela_68705_portB_r)
137   AM_RANGE(0x0002, 0x0002) AM_READ(changela_68705_portC_r)
135   AM_RANGE(0x0000, 0x0000) AM_READWRITE(changela_68705_portA_r, changela_68705_portA_w)
136   AM_RANGE(0x0001, 0x0001) AM_READWRITE(changela_68705_portB_r, changela_68705_portB_w)
137   AM_RANGE(0x0002, 0x0002) AM_READWRITE(changela_68705_portC_r, changela_68705_portC_w)
138138
139   AM_RANGE(0x0000, 0x007f) AM_READ(SMH_RAM)
140   AM_RANGE(0x0080, 0x07ff) AM_READ(SMH_ROM)
141ADDRESS_MAP_END
142
143static ADDRESS_MAP_START( mcu_writemem, ADDRESS_SPACE_PROGRAM, 8 )
144   ADDRESS_MAP_GLOBAL_MASK(0x7ff)
145   AM_RANGE(0x0000, 0x0000) AM_WRITE(changela_68705_portA_w)
146   AM_RANGE(0x0001, 0x0001) AM_WRITE(changela_68705_portB_w)
147   AM_RANGE(0x0002, 0x0002) AM_WRITE(changela_68705_portC_w)
148139   AM_RANGE(0x0004, 0x0004) AM_WRITE(changela_68705_ddrA_w)
149140   AM_RANGE(0x0005, 0x0005) AM_WRITE(changela_68705_ddrB_w)
150141   AM_RANGE(0x0006, 0x0006) AM_WRITE(changela_68705_ddrC_w)
151142
152   AM_RANGE(0x0000, 0x007f) AM_WRITE(SMH_RAM)
153   AM_RANGE(0x0080, 0x07ff) AM_WRITE(SMH_ROM)
143   AM_RANGE(0x0000, 0x007f) AM_RAM
144   AM_RANGE(0x0080, 0x07ff) AM_ROM
154145ADDRESS_MAP_END
155146
156147
r4679r4680
250241}
251242
252243
253static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 )
254   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
255   AM_RANGE(0x8000, 0x83ff) AM_READ(SMH_RAM)            /* OBJ0 RAM */
256   AM_RANGE(0x9000, 0x97ff) AM_READ(SMH_RAM)            /* OBJ1 RAM */
257   AM_RANGE(0xb000, 0xbfff) AM_READ(SMH_ROM)
244static ADDRESS_MAP_START( changela_map, ADDRESS_SPACE_PROGRAM, 8 )
245   AM_RANGE(0x0000, 0x7fff) AM_ROM
246   AM_RANGE(0x8000, 0x83ff) AM_RAM AM_BASE(&spriteram) /* OBJ0 RAM */
247   AM_RANGE(0x9000, 0x97ff) AM_RAM AM_BASE(&videoram)   /* OBJ1 RAM */
248   AM_RANGE(0xa000, 0xa07f) AM_WRITE(changela_colors_w) AM_BASE(&colorram)   /* Color 93419 RAM 64x9(nine!!!) bits A0-used as the 8-th bit data input (d0-d7->normal, a0->d8) */
249   AM_RANGE(0xb000, 0xbfff) AM_ROM
258250
259   AM_RANGE(0xc000, 0xc7ff) AM_READ(changela_mem_device_r)         /* RAM4 (River Bed RAM); RAM5 (Tree RAM) */
251   AM_RANGE(0xc000, 0xc7ff) AM_READWRITE(changela_mem_device_r, changela_mem_device_w)   /* RAM4 (River Bed RAM); RAM5 (Tree RAM) */
260252
261   AM_RANGE(0xd000, 0xd000) AM_DEVREAD("ay1", ay8910_r)
262   AM_RANGE(0xd010, 0xd010) AM_DEVREAD("ay2", ay8910_r)
263
264   /* LS139 - U24 */
265   AM_RANGE(0xd024, 0xd024) AM_READ(changela_24_r)
266   AM_RANGE(0xd025, 0xd025) AM_READ(changela_25_r)
267   AM_RANGE(0xd028, 0xd028) AM_READ(mcu_r)
268   AM_RANGE(0xd02c, 0xd02c) AM_READ(changela_2c_r)
269   AM_RANGE(0xd02d, 0xd02d) AM_READ(changela_2d_r)
270
271   AM_RANGE(0xd030, 0xd030) AM_READ(changela_30_r)
272   AM_RANGE(0xd031, 0xd031) AM_READ(changela_31_r)
273
274   AM_RANGE(0xf000, 0xf7ff) AM_READ(SMH_RAM)   /* RAM2 (Processor RAM) */
275ADDRESS_MAP_END
276
277
278static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 )
279   AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM)             /* Processor ROM */
280   AM_RANGE(0x8000, 0x83ff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram)    /* OBJ0 RAM (A10 = GND )*/
281   AM_RANGE(0x9000, 0x97ff) AM_WRITE(SMH_RAM) AM_BASE(&videoram)      /* OBJ1 RAM */
282   AM_RANGE(0xa000, 0xa07f) AM_WRITE(changela_colors_w) AM_BASE(&colorram)      /* Color 93419 RAM 64x9(nine!!!) bits A0-used as the 8-th bit data input (d0-d7->normal, a0->d8) */
283   AM_RANGE(0xb000, 0xbfff) AM_WRITE(SMH_ROM)            /* Processor ROM */
284
285   AM_RANGE(0xc000, 0xc7ff) AM_WRITE(changela_mem_device_w)         /* River-Tree RAMs, slope ROM, tree ROM */
286
287253   /* LS138 - U16 */
288254   AM_RANGE(0xc800, 0xc800) AM_WRITENOP            /* not connected */
289255   AM_RANGE(0xc900, 0xc900) AM_WRITE(changela_mem_device_select_w)   /* selects the memory device to be accessible at 0xc000-0xc7ff */
290256   AM_RANGE(0xca00, 0xca00) AM_WRITE(changela_slope_rom_addr_hi_w)
291257   AM_RANGE(0xcb00, 0xcb00) AM_WRITE(changela_slope_rom_addr_lo_w)
292258
293   AM_RANGE(0xd000, 0xd001) AM_DEVWRITE("ay1", ay8910_address_data_w)
294   AM_RANGE(0xd010, 0xd011) AM_DEVWRITE("ay2", ay8910_address_data_w)
259   AM_RANGE(0xd000, 0xd001) AM_DEVREADWRITE("ay1", ay8910_r, ay8910_address_data_w)
260   AM_RANGE(0xd010, 0xd011) AM_DEVREADWRITE("ay2", ay8910_r, ay8910_address_data_w)
295261
296262   /* LS259 - U44 */
297263   AM_RANGE(0xd020, 0xd020) AM_WRITE(changela_collision_reset_0)
298264   AM_RANGE(0xd021, 0xd022) AM_WRITE(changela_coin_counter_w)
299265//AM_RANGE(0xd023, 0xd023) AM_WRITENOP
300   AM_RANGE(0xd024, 0xd024) AM_WRITE(mcu_PC0_w)
301   AM_RANGE(0xd025, 0xd025) AM_WRITE(changela_collision_reset_1)
266
267   /* LS139 - U24 */
268   AM_RANGE(0xd024, 0xd024) AM_READWRITE(changela_24_r, mcu_PC0_w)
269   AM_RANGE(0xd025, 0xd025) AM_READWRITE(changela_25_r, changela_collision_reset_1)
302270   AM_RANGE(0xd026, 0xd026) AM_WRITENOP
271   AM_RANGE(0xd028, 0xd028) AM_READ(mcu_r)
272   AM_RANGE(0xd02c, 0xd02c) AM_READ(changela_2c_r)
273   AM_RANGE(0xd02d, 0xd02d) AM_READ(changela_2d_r)
303274
304   AM_RANGE(0xd030, 0xd030) AM_WRITE(mcu_w)
305   AM_RANGE(0xe000, 0xe000) AM_WRITE(watchdog_reset_w)      /* Watchdog */
306   AM_RANGE(0xf000, 0xf7ff) AM_WRITE(SMH_RAM)            /* Processor RAM */
275   AM_RANGE(0xd030, 0xd030) AM_READWRITE(changela_30_r, mcu_w)
276   AM_RANGE(0xd031, 0xd031) AM_READ(changela_31_r)
277
278   AM_RANGE(0xe000, 0xe000) AM_WRITE(watchdog_reset_w)   /* Watchdog */
279
280   AM_RANGE(0xf000, 0xf7ff) AM_RAM   /* RAM2 (Processor RAM) */
307281ADDRESS_MAP_END
308282
309283
r4679r4680
477451   cpu_set_input_line_and_vector(device, 0, HOLD_LINE, vector);
478452
479453   /* it seems the V8 == Vblank and it is connected to the INT on the 68705 */
480   //so we should cause an INT on the cpu 1 here, as well.
454   //so we should cause an INT on the MCU cpu here, as well.
481455   //but only once per frame !
482456   if (vector == 0xdf) /* only on vblank */
483      generic_pulse_irq_line(device->machine->cpu[1], 0);
457      generic_pulse_irq_line(cputag_get_cpu(device->machine, "mcu"), 0);
484458
485459}
486460
487461static MACHINE_DRIVER_START( changela )
488462
489463   MDRV_CPU_ADD("maincpu", Z80,5000000)
490   MDRV_CPU_PROGRAM_MAP(readmem,writemem)
464   MDRV_CPU_PROGRAM_MAP(changela_map,0)
491465   MDRV_CPU_VBLANK_INT_HACK(chl_interrupt,4)
492466
493467   MDRV_CPU_ADD("mcu", M68705,2500000)
494   MDRV_CPU_PROGRAM_MAP(mcu_readmem,mcu_writemem)
468   MDRV_CPU_PROGRAM_MAP(mcu_map,0)
495469
496470   MDRV_MACHINE_RESET(changela)
497471
src/mame/drivers/crimfght.c
r4679r4680
3636static WRITE8_HANDLER( crimfght_sh_irqtrigger_w )
3737{
3838   soundlatch_w(space,offset,data);
39   cpu_set_input_line_and_vector(space->machine->cpu[1],0,HOLD_LINE,0xff);
39   cputag_set_input_line_and_vector(space->machine, "audiocpu", 0, HOLD_LINE, 0xff);
4040}
4141
4242static WRITE8_DEVICE_HANDLER( crimfght_snd_bankswitch_w )
r4679r4680
5252
5353/********************************************/
5454
55static ADDRESS_MAP_START( crimfght_readmem, ADDRESS_SPACE_PROGRAM, 8 )
56   AM_RANGE(0x0000, 0x03ff) AM_READ(SMH_BANK1)         /* banked RAM */
57   AM_RANGE(0x0400, 0x1fff) AM_READ(SMH_RAM)         /* RAM */
55static ADDRESS_MAP_START( crimfght_map, ADDRESS_SPACE_PROGRAM, 8 )
56   AM_RANGE(0x0000, 0x03ff) AM_RAMBANK(1)               /* banked RAM */
57   AM_RANGE(0x0400, 0x1fff) AM_RAM                                    /* RAM */
5858   AM_RANGE(0x3f80, 0x3f80) AM_READ_PORT("SYSTEM")
5959   AM_RANGE(0x3f81, 0x3f81) AM_READ_PORT("P1")
6060   AM_RANGE(0x3f82, 0x3f82) AM_READ_PORT("P2")
r4679r4680
6363   AM_RANGE(0x3f85, 0x3f85) AM_READ_PORT("P3")
6464   AM_RANGE(0x3f86, 0x3f86) AM_READ_PORT("P4")
6565   AM_RANGE(0x3f87, 0x3f87) AM_READ_PORT("DSW1")
66   AM_RANGE(0x3f88, 0x3f88) AM_READ(watchdog_reset_r)   /* watchdog reset */
67   AM_RANGE(0x2000, 0x5fff) AM_READ(K052109_051960_r)   /* video RAM + sprite RAM */
68   AM_RANGE(0x6000, 0x7fff) AM_READ(SMH_BANK2)         /* banked ROM */
69   AM_RANGE(0x8000, 0xffff) AM_READ(SMH_ROM)         /* ROM */
70ADDRESS_MAP_END
71
72static ADDRESS_MAP_START( crimfght_writemem, ADDRESS_SPACE_PROGRAM, 8 )
73   AM_RANGE(0x0000, 0x03ff) AM_WRITE(SMH_BANK1)               /* banked RAM */
74   AM_RANGE(0x0400, 0x1fff) AM_WRITE(SMH_RAM)               /* RAM */
75   AM_RANGE(0x3f88, 0x3f88) AM_WRITE(crimfght_coin_w)         /* coin counters */
66   AM_RANGE(0x3f88, 0x3f88) AM_READWRITE(watchdog_reset_r, crimfght_coin_w)   /* watchdog reset */
7667   AM_RANGE(0x3f8c, 0x3f8c) AM_WRITE(crimfght_sh_irqtrigger_w)   /* cause interrupt on audio CPU? */
77   AM_RANGE(0x2000, 0x5fff) AM_WRITE(K052109_051960_w)         /* video RAM + sprite RAM */
78   AM_RANGE(0x6000, 0x7fff) AM_WRITE(SMH_ROM)               /* banked ROM */
79   AM_RANGE(0x8000, 0xffff) AM_WRITE(SMH_ROM)               /* ROM */
68   AM_RANGE(0x2000, 0x5fff) AM_READWRITE(K052109_051960_r, K052109_051960_w)   /* video RAM + sprite RAM */
69   AM_RANGE(0x6000, 0x7fff) AM_ROMBANK(2)                  /* banked ROM */
70   AM_RANGE(0x8000, 0xffff) AM_ROM                                    /* ROM */
8071ADDRESS_MAP_END
8172
82static ADDRESS_MAP_START( crimfght_readmem_sound, ADDRESS_SPACE_PROGRAM, 8 )
83   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)            /* ROM 821l01.h4 */
84   AM_RANGE(0x8000, 0x87ff) AM_READ(SMH_RAM)            /* RAM */
85   AM_RANGE(0xa000, 0xa001) AM_DEVREAD("ym", ym2151_r)   /* YM2151 */
86   AM_RANGE(0xc000, 0xc000) AM_READ(soundlatch_r)         /* soundlatch_r */
87   AM_RANGE(0xe000, 0xe00d) AM_DEVREAD("konami", k007232_r)   /* 007232 registers */
73static ADDRESS_MAP_START( crimfght_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
74   AM_RANGE(0x0000, 0x7fff) AM_ROM                                    /* ROM 821l01.h4 */
75   AM_RANGE(0x8000, 0x87ff) AM_RAM                                    /* RAM */
76   AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)         /* YM2151 */
77   AM_RANGE(0xc000, 0xc000) AM_READ(soundlatch_r)                        /* soundlatch_r */
78   AM_RANGE(0xe000, 0xe00d) AM_DEVREADWRITE("konami", k007232_r, k007232_w)   /* 007232 registers */
8879ADDRESS_MAP_END
8980
90static ADDRESS_MAP_START( crimfght_writemem_sound, ADDRESS_SPACE_PROGRAM, 8 )
91   AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM)               /* ROM 821l01.h4 */
92   AM_RANGE(0x8000, 0x87ff) AM_WRITE(SMH_RAM)               /* RAM */
93   AM_RANGE(0xa000, 0xa001) AM_DEVWRITE("ym", ym2151_w)   /* YM2151 */
94   AM_RANGE(0xe000, 0xe00d) AM_DEVWRITE("konami", k007232_w)      /* 007232 registers */
95ADDRESS_MAP_END
96
9781/***************************************************************************
9882
9983    Input Ports
r4679r4680
232216
233217   /* basic machine hardware */
234218   MDRV_CPU_ADD("maincpu", KONAMI, 3000000)      /* ? */
235   MDRV_CPU_PROGRAM_MAP(crimfght_readmem,crimfght_writemem)
219   MDRV_CPU_PROGRAM_MAP(crimfght_map,0)
236220   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
237221
238222   MDRV_CPU_ADD("audiocpu", Z80, 3579545)   /* verified with PCB */
239   MDRV_CPU_PROGRAM_MAP(crimfght_readmem_sound,crimfght_writemem_sound)
223   MDRV_CPU_PROGRAM_MAP(crimfght_sound_map,0)
240224
241225   MDRV_MACHINE_RESET(crimfght)
242226
r4679r4680
360344   /* bit 5 = select work RAM or palette */
361345   if (lines & 0x20)
362346   {
363      memory_install_readwrite8_handler(cpu_get_address_space(device, ADDRESS_SPACE_PROGRAM), 0x0000, 0x03ff, 0, 0, SMH_BANK3, paletteram_xBBBBBGGGGGRRRRR_be_w);
347      memory_install_readwrite8_handler(cpu_get_address_space(device, ADDRESS_SPACE_PROGRAM), 0x0000, 0x03ff, 0, 0, (read8_space_func)SMH_BANK(3), paletteram_xBBBBBGGGGGRRRRR_be_w);
364348      memory_set_bankptr(device->machine, 3, paletteram);
365349   }
366350   else
367      memory_install_readwrite8_handler(cpu_get_address_space(device, ADDRESS_SPACE_PROGRAM), 0x0000, 0x03ff, 0, 0, SMH_BANK1, SMH_BANK1);                        /* RAM */
351      memory_install_readwrite8_handler(cpu_get_address_space(device, ADDRESS_SPACE_PROGRAM), 0x0000, 0x03ff, 0, 0, (read8_space_func)SMH_BANK(1), (write8_space_func)SMH_BANK(1));                        /* RAM */
368352
369353   /* bit 6 = enable char ROM reading through the video RAM */
370354   K052109_set_RMRD_line((lines & 0x40) ? ASSERT_LINE : CLEAR_LINE);
r4679r4680
377361{
378362   UINT8 *RAM = memory_region(machine, "maincpu");
379363
380   konami_configure_set_lines(machine->cpu[0], crimfght_banking);
364   konami_configure_set_lines(cputag_get_cpu(machine, "maincpu"), crimfght_banking);
381365
382366   /* init the default bank */
383367   memory_set_bankptr(machine,  2, &RAM[0x10000] );
src/mame/drivers/rabbit.c
r4679r4680
339339{
340340   /* the tilemaps are bigger than the regions the cpu can see, need to allocate the ram here */
341341   /* or maybe not for this game/hw .... */
342   rabbit_tilemap_ram[0] = auto_malloc(0x20000);
343   rabbit_tilemap_ram[1] = auto_malloc(0x20000);
344   rabbit_tilemap_ram[2] = auto_malloc(0x20000);
345   rabbit_tilemap_ram[3] = auto_malloc(0x20000);
346   memset(rabbit_tilemap_ram[0], 0, 0x20000);
347   memset(rabbit_tilemap_ram[1], 0, 0x20000);
348   memset(rabbit_tilemap_ram[2], 0, 0x20000);
349   memset(rabbit_tilemap_ram[3], 0, 0x20000);
342   rabbit_tilemap_ram[0] = auto_alloc_array_clear(machine, UINT32, 0x20000/4);
343   rabbit_tilemap_ram[1] = auto_alloc_array_clear(machine, UINT32, 0x20000/4);
344   rabbit_tilemap_ram[2] = auto_alloc_array_clear(machine, UINT32, 0x20000/4);
345   rabbit_tilemap_ram[3] = auto_alloc_array_clear(machine, UINT32, 0x20000/4);
350346
351347   rabbit_tilemap[0] = tilemap_create(machine, get_rabbit_tilemap0_tile_info,tilemap_scan_rows,16, 16, 128,32);
352348   rabbit_tilemap[1] = tilemap_create(machine, get_rabbit_tilemap1_tile_info,tilemap_scan_rows,16, 16, 128,32);
r4679r4680
356352   tilemap_set_transparent_pen(rabbit_tilemap[1],0x0);
357353   tilemap_set_transparent_pen(rabbit_tilemap[2],0x0);
358354   tilemap_set_transparent_pen(rabbit_tilemap[3],0x0);
359   rabbit_sprite_bitmap = auto_bitmap_alloc(0x1000,0x1000,video_screen_get_format(machine->primary_screen));
355   rabbit_sprite_bitmap = auto_bitmap_alloc(machine,0x1000,0x1000,video_screen_get_format(machine->primary_screen));
360356   rabbit_sprite_clip.min_x = 0;
361357   rabbit_sprite_clip.max_x = 0x1000-1;
362358   rabbit_sprite_clip.min_y = 0;
r4679r4680
483479   return mame_rand(space->machine);
484480}
485481
486static ADDRESS_MAP_START( rabbit_readmem, ADDRESS_SPACE_PROGRAM, 32 )
487   AM_RANGE(0x000000, 0x1fffff) AM_READ(SMH_ROM)
488   AM_RANGE(0x200000, 0x200003) AM_READ_PORT("INPUTS")
489   AM_RANGE(0x400010, 0x400013) AM_READ(randomrabbits) // gfx chip status?
490   AM_RANGE(0x400980, 0x400983) AM_READ(randomrabbits) // sound chip status?
491   AM_RANGE(0x400984, 0x400987) AM_READ(randomrabbits) // sound chip status?
492   AM_RANGE(0x440000, 0x47ffff) AM_READ(SMH_BANK1) // roms read from here during testing
493   /* tilemaps */
494   AM_RANGE(0x480000, 0x483fff) AM_READ(rabbit_tilemap0_r)
495   AM_RANGE(0x484000, 0x487fff) AM_READ(rabbit_tilemap1_r)
496   AM_RANGE(0x488000, 0x48bfff) AM_READ(rabbit_tilemap2_r)
497   AM_RANGE(0x48c000, 0x48ffff) AM_READ(rabbit_tilemap3_r)
498   AM_RANGE(0x494000, 0x49ffff) AM_READ(SMH_RAM)
499   AM_RANGE(0x4a0000, 0x4affff) AM_READ(SMH_RAM) /* palette */
500   AM_RANGE(0xff0000, 0xffffff) AM_READ(SMH_RAM)
501ADDRESS_MAP_END
502
503482/* rom bank is used when testing roms, not currently hooked up */
504483static WRITE32_HANDLER ( rabbit_rombank_w )
505484{
r4679r4680
593572
594573static TIMER_CALLBACK( rabbit_blit_done )
595574{
596   cpu_set_input_line(machine->cpu[0], rabbit_bltirqlevel, HOLD_LINE);
575   cputag_set_input_line(machine, "maincpu", rabbit_bltirqlevel, HOLD_LINE);
597576}
598577
599578static void rabbit_do_blit(running_machine *machine)
r4679r4680
718697   }
719698}
720699
721static ADDRESS_MAP_START( rabbit_writemem, ADDRESS_SPACE_PROGRAM, 32 )
700static ADDRESS_MAP_START( rabbit_map, ADDRESS_SPACE_PROGRAM, 32 )
701   AM_RANGE(0x000000, 0x1fffff) AM_ROM
722702   AM_RANGE(0x000000, 0x000003) AM_WRITENOP // bug in code / emulation?
723703   AM_RANGE(0x000010, 0x000013) AM_WRITENOP // bug in code / emulation?
724704   AM_RANGE(0x000024, 0x000027) AM_WRITENOP // bug in code / emulation?
725   AM_RANGE(0x00719C, 0x00719F) AM_WRITENOP // bug in code / emulation?
726   AM_RANGE(0x000000, 0x1fffff) AM_WRITE(SMH_ROM)
727   AM_RANGE(0x200000, 0x200003) AM_WRITE(rabbit_eeprom_write)
705   AM_RANGE(0x00719c, 0x00719f) AM_WRITENOP // bug in code / emulation?
706   AM_RANGE(0x200000, 0x200003) AM_READ_PORT("INPUTS") AM_WRITE(rabbit_eeprom_write)
707   AM_RANGE(0x400010, 0x400013) AM_READ(randomrabbits) // gfx chip status?
708   AM_RANGE(0x400980, 0x400983) AM_READ(randomrabbits) // sound chip status?
709   AM_RANGE(0x400984, 0x400987) AM_READ(randomrabbits) // sound chip status?
728710   /* this lot are probably gfxchip/blitter etc. related */
729   AM_RANGE(0x400010, 0x400013) AM_WRITE(SMH_RAM) AM_BASE( &rabbit_viewregs0 )
730   AM_RANGE(0x400100, 0x400117) AM_WRITE(SMH_RAM) AM_BASE( &rabbit_tilemap_regs[0] ) // tilemap regs1
731   AM_RANGE(0x400120, 0x400137) AM_WRITE(SMH_RAM) AM_BASE( &rabbit_tilemap_regs[1] ) // tilemap regs2
732   AM_RANGE(0x400140, 0x400157) AM_WRITE(SMH_RAM) AM_BASE( &rabbit_tilemap_regs[2] ) // tilemap regs3
733   AM_RANGE(0x400160, 0x400177) AM_WRITE(SMH_RAM) AM_BASE( &rabbit_tilemap_regs[3] ) // tilemap regs4
734   AM_RANGE(0x400200, 0x40021b) AM_WRITE(SMH_RAM) AM_BASE( &rabbit_spriteregs ) // sprregs?
711   AM_RANGE(0x400010, 0x400013) AM_WRITEONLY AM_BASE( &rabbit_viewregs0 )
712   AM_RANGE(0x400100, 0x400117) AM_WRITEONLY AM_BASE( &rabbit_tilemap_regs[0] ) // tilemap regs1
713   AM_RANGE(0x400120, 0x400137) AM_WRITEONLY AM_BASE( &rabbit_tilemap_regs[1] ) // tilemap regs2
714   AM_RANGE(0x400140, 0x400157) AM_WRITEONLY AM_BASE( &rabbit_tilemap_regs[2] ) // tilemap regs3
715   AM_RANGE(0x400160, 0x400177) AM_WRITEONLY AM_BASE( &rabbit_tilemap_regs[3] ) // tilemap regs4
716   AM_RANGE(0x400200, 0x40021b) AM_WRITEONLY AM_BASE( &rabbit_spriteregs ) // sprregs?
735717   AM_RANGE(0x400300, 0x400303) AM_WRITE(rabbit_rombank_w) // used during rom testing, rombank/area select + something else?
736   AM_RANGE(0x400400, 0x400413) AM_WRITE(SMH_RAM) AM_BASE( &rabbit_viewregs6 ) // some global controls? (brightness etc.?)
737   AM_RANGE(0x400500, 0x400503) AM_WRITE(SMH_RAM) AM_BASE( &rabbit_viewregs7 )
718   AM_RANGE(0x400400, 0x400413) AM_WRITEONLY AM_BASE( &rabbit_viewregs6 ) // some global controls? (brightness etc.?)
719   AM_RANGE(0x400500, 0x400503) AM_WRITEONLY AM_BASE( &rabbit_viewregs7 )
738720   AM_RANGE(0x400700, 0x40070f) AM_WRITE(rabbit_blitter_w) AM_BASE( &rabbit_blitterregs )
739   AM_RANGE(0x400800, 0x40080f) AM_WRITE(SMH_RAM) AM_BASE( &rabbit_viewregs9 ) // never changes?
721   AM_RANGE(0x400800, 0x40080f) AM_WRITEONLY AM_BASE( &rabbit_viewregs9 ) // never changes?
740722   AM_RANGE(0x400900, 0x40098f) AM_WRITE(rabbit_audio_w)
741723   /* hmm */
742   AM_RANGE(0x479700, 0x479713) AM_WRITE(SMH_RAM) AM_BASE( &rabbit_viewregs10 )
724   AM_RANGE(0x479700, 0x479713) AM_WRITEONLY AM_BASE( &rabbit_viewregs10 )
725
726   AM_RANGE(0x440000, 0x47ffff) AM_ROMBANK(1) // roms read from here during testing
743727   /* tilemaps */
744   AM_RANGE(0x480000, 0x483fff) AM_WRITE(rabbit_tilemap0_w)
745   AM_RANGE(0x484000, 0x487fff) AM_WRITE(rabbit_tilemap1_w)
746   AM_RANGE(0x488000, 0x48bfff) AM_WRITE(rabbit_tilemap2_w)
747   AM_RANGE(0x48c000, 0x48ffff) AM_WRITE(rabbit_tilemap3_w)
748   AM_RANGE(0x494000, 0x497fff) AM_WRITE(SMH_RAM) AM_BASE(&rabbit_spriteram) // sprites?
749   AM_RANGE(0x4a0000, 0x4affff) AM_WRITE(rabbit_paletteram_dword_w) AM_BASE(&paletteram32)
750   AM_RANGE(0xff0000, 0xffffff) AM_WRITE(SMH_RAM)
728   AM_RANGE(0x480000, 0x483fff) AM_READWRITE(rabbit_tilemap0_r,rabbit_tilemap0_w)
729   AM_RANGE(0x484000, 0x487fff) AM_READWRITE(rabbit_tilemap1_r,rabbit_tilemap1_w)
730   AM_RANGE(0x488000, 0x48bfff) AM_READWRITE(rabbit_tilemap2_r,rabbit_tilemap2_w)
731   AM_RANGE(0x48c000, 0x48ffff) AM_READWRITE(rabbit_tilemap3_r,rabbit_tilemap3_w)
732   AM_RANGE(0x494000, 0x497fff) AM_RAM AM_BASE(&rabbit_spriteram) // sprites?
733   AM_RANGE(0x4a0000, 0x4affff) AM_RAM_WRITE(rabbit_paletteram_dword_w) AM_BASE(&paletteram32)
734   AM_RANGE(0xff0000, 0xffffff) AM_RAM
751735ADDRESS_MAP_END
752736
753737/* tmmjprd has a different memory map */
754738
755static ADDRESS_MAP_START( tmmjprd_readmem, ADDRESS_SPACE_PROGRAM, 32 )
756   AM_RANGE(0x000000, 0x1fffff) AM_READ(SMH_ROM)
757   AM_RANGE(0x200010, 0x200013) AM_READ(randomrabbits) // gfx chip status?
758   AM_RANGE(0x200980, 0x200983) AM_READ(randomrabbits) // sound chip status?
759   AM_RANGE(0x200984, 0x200987) AM_READ(randomrabbits) // sound chip status?
760   AM_RANGE(0x280000, 0x283fff) AM_READ(rabbit_tilemap0_r)
761   AM_RANGE(0x284000, 0x287fff) AM_READ(rabbit_tilemap1_r)
762   AM_RANGE(0x288000, 0x28bfff) AM_READ(rabbit_tilemap2_r)
763   AM_RANGE(0x28c000, 0x28ffff) AM_READ(rabbit_tilemap3_r)
764   AM_RANGE(0x290000, 0x29ffff) AM_READ(SMH_RAM)
765   AM_RANGE(0x400000, 0x400003) AM_READ_PORT("INPUTS")
766   AM_RANGE(0xf00000, 0xffffff) AM_READ(SMH_RAM)
767ADDRESS_MAP_END
768
769739static WRITE32_HANDLER( tmmjprd_paletteram_dword_w )
770740{
771741   int r,g,b;
r4679r4680
778748   palette_set_color(space->machine,(offset^0xff)+0x2000,MAKE_RGB(r,g,b));
779749}
780750
781
782static ADDRESS_MAP_START( tmmjprd_writemem, ADDRESS_SPACE_PROGRAM, 32 )
783   AM_RANGE(0x000000, 0x1fffff) AM_WRITE(SMH_ROM)
784/* check these are used .. */
785//  AM_RANGE(0x200010, 0x200013) AM_WRITE(SMH_RAM) AM_BASE( &rabbit_viewregs0 )
786   AM_RANGE(0x200100, 0x200117) AM_WRITE(SMH_RAM) AM_BASE( &rabbit_tilemap_regs[0] ) // tilemap regs1
787   AM_RANGE(0x200120, 0x200137) AM_WRITE(SMH_RAM) AM_BASE( &rabbit_tilemap_regs[1] ) // tilemap regs2
788   AM_RANGE(0x200140, 0x200157) AM_WRITE(SMH_RAM) AM_BASE( &rabbit_tilemap_regs[2] ) // tilemap regs3
789   AM_RANGE(0x200160, 0x200177) AM_WRITE(SMH_RAM) AM_BASE( &rabbit_tilemap_regs[3] ) // tilemap regs4
790   AM_RANGE(0x200200, 0x20021b) AM_WRITE(SMH_RAM) AM_BASE( &rabbit_spriteregs ) // sprregs?
751static ADDRESS_MAP_START( tmmjprd_map, ADDRESS_SPACE_PROGRAM, 32 )
752   AM_RANGE(0x000000, 0x1fffff) AM_ROM
753   AM_RANGE(0x200010, 0x200013) AM_READ(randomrabbits) // gfx chip status?
754   AM_RANGE(0x200980, 0x200983) AM_READ(randomrabbits) // sound chip status?
755   AM_RANGE(0x200984, 0x200987) AM_READ(randomrabbits) // sound chip status?
756   /* check these are used .. */
757//  AM_RANGE(0x200010, 0x200013) AM_WRITEONLY AM_BASE( &rabbit_viewregs0 )
758   AM_RANGE(0x200100, 0x200117) AM_WRITEONLY AM_BASE( &rabbit_tilemap_regs[0] ) // tilemap regs1
759   AM_RANGE(0x200120, 0x200137) AM_WRITEONLY AM_BASE( &rabbit_tilemap_regs[1] ) // tilemap regs2
760   AM_RANGE(0x200140, 0x200157) AM_WRITEONLY AM_BASE( &rabbit_tilemap_regs[2] ) // tilemap regs3
761   AM_RANGE(0x200160, 0x200177) AM_WRITEONLY AM_BASE( &rabbit_tilemap_regs[3] ) // tilemap regs4
762   AM_RANGE(0x200200, 0x20021b) AM_WRITEONLY AM_BASE( &rabbit_spriteregs ) // sprregs?
791763//  AM_RANGE(0x200300, 0x200303) AM_WRITE(rabbit_rombank_w) // used during rom testing, rombank/area select + something else?
792//  AM_RANGE(0x200400, 0x200413) AM_WRITE(SMH_RAM) AM_BASE( &rabbit_viewregs6 ) // some global controls? (brightness etc.?)
793//  AM_RANGE(0x200500, 0x200503) AM_WRITE(SMH_RAM) AM_BASE( &rabbit_viewregs7 )
764//  AM_RANGE(0x200400, 0x200413) AM_WRITEONLY AM_BASE( &rabbit_viewregs6 ) // some global controls? (brightness etc.?)
765//  AM_RANGE(0x200500, 0x200503) AM_WRITEONLY AM_BASE( &rabbit_viewregs7 )
794766//  AM_RANGE(0x200700, 0x20070f) AM_WRITE(rabbit_blitter_w) AM_BASE( &rabbit_blitterregs )
795//  AM_RANGE(0x200800, 0x20080f) AM_WRITE(SMH_RAM) AM_BASE( &rabbit_viewregs9 ) // never changes?
767//  AM_RANGE(0x200800, 0x20080f) AM_WRITEONLY AM_BASE( &rabbit_viewregs9 ) // never changes?
796768//  AM_RANGE(0x200900, 0x20098f) AM_WRITE(rabbit_audio_w)
797769   /* hmm */
798//  AM_RANGE(0x279700, 0x279713) AM_WRITE(SMH_RAM) AM_BASE( &rabbit_viewregs10 )
770//  AM_RANGE(0x279700, 0x279713) AM_WRITEONLY AM_BASE( &rabbit_viewregs10 )
799771   /* tilemaps */
800   AM_RANGE(0x280000, 0x283fff) AM_WRITE(rabbit_tilemap0_w)
801   AM_RANGE(0x284000, 0x287fff) AM_WRITE(rabbit_tilemap1_w)
802   AM_RANGE(0x288000, 0x28bfff) AM_WRITE(rabbit_tilemap2_w)
803   AM_RANGE(0x28c000, 0x28ffff) AM_WRITE(rabbit_tilemap3_w)
772   AM_RANGE(0x280000, 0x283fff) AM_READWRITE(rabbit_tilemap0_r,rabbit_tilemap0_w)
773   AM_RANGE(0x284000, 0x287fff) AM_READWRITE(rabbit_tilemap1_r,rabbit_tilemap1_w)
774   AM_RANGE(0x288000, 0x28bfff) AM_READWRITE(rabbit_tilemap2_r,rabbit_tilemap2_w)
775   AM_RANGE(0x28c000, 0x28ffff) AM_READWRITE(rabbit_tilemap3_r,rabbit_tilemap3_w)
804776   /* ?? is palette ram shared with sprites in this case or just a different map */
805   AM_RANGE(0x290000, 0x29bfff) AM_WRITE(SMH_RAM) AM_BASE(&rabbit_spriteram)
806   AM_RANGE(0x29c000, 0x29ffff) AM_WRITE(tmmjprd_paletteram_dword_w) AM_BASE(&paletteram32)
807   AM_RANGE(0x400000, 0x400003) AM_WRITE(rabbit_eeprom_write)
808   AM_RANGE(0xf00000, 0xffffff) AM_WRITE(SMH_RAM)
777   AM_RANGE(0x290000, 0x29bfff) AM_RAM AM_BASE(&rabbit_spriteram)
778   AM_RANGE(0x29c000, 0x29ffff) AM_RAM_WRITE(tmmjprd_paletteram_dword_w) AM_BASE(&paletteram32)
779
780   AM_RANGE(0x400000, 0x400003) AM_READ_PORT("INPUTS") AM_WRITE(rabbit_eeprom_write)
781   AM_RANGE(0xf00000, 0xffffff) AM_RAM
809782ADDRESS_MAP_END
810783
784
811785static INPUT_PORTS_START( rabbit )
812786   PORT_START("INPUTS")
813787   PORT_BIT( 0x00000001, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM(eeprom_bit_r, NULL)   // as per code at 4d932
r4679r4680
10481022
10491023static MACHINE_DRIVER_START( rabbit )
10501024   MDRV_CPU_ADD("maincpu",M68EC020,24000000) /* 24 MHz */
1051   MDRV_CPU_PROGRAM_MAP(rabbit_readmem,rabbit_writemem)
1025   MDRV_CPU_PROGRAM_MAP(rabbit_map,0)
10521026   MDRV_CPU_VBLANK_INT_HACK(rabbit_interrupts,262)
10531027   /* (rabbit) */
10541028/*  lev 1 : 0x64 : 0000 027c -
r4679r4680
11081082
11091083   /* the tilemaps are bigger than the regions the cpu can see, need to allocate the ram here */
11101084   /* or maybe not for this game/hw .... */
1111   rabbit_tilemap_ram[0] = auto_malloc(0x20000);
1112   rabbit_tilemap_ram[1] = auto_malloc(0x20000);
1113   rabbit_tilemap_ram[2] = auto_malloc(0x20000);
1114   rabbit_tilemap_ram[3] = auto_malloc(0x20000);
1115   memset(rabbit_tilemap_ram[0], 0, 0x20000);
1116   memset(rabbit_tilemap_ram[1], 0, 0x20000);
1117   memset(rabbit_tilemap_ram[2], 0, 0x20000);
1118   memset(rabbit_tilemap_ram[3], 0, 0x20000);
1085   rabbit_tilemap_ram[0] = auto_alloc_array_clear(machine, UINT32, 0x20000/4);
1086   rabbit_tilemap_ram[1] = auto_alloc_array_clear(machine, UINT32, 0x20000/4);
1087   rabbit_tilemap_ram[2] = auto_alloc_array_clear(machine, UINT32, 0x20000/4);
1088   rabbit_tilemap_ram[3] = auto_alloc_array_clear(machine, UINT32, 0x20000/4);
11191089
11201090   rabbit_tilemap[0] = tilemap_create(machine, get_tmmjprd_tilemap0_tile_info,tilemap_scan_rows, 8, 8, 64, 64);
11211091   rabbit_tilemap[1] = tilemap_create(machine, get_tmmjprd_tilemap1_tile_info,tilemap_scan_rows,16, 16, 64, 64);
r4679r4680
11251095   tilemap_set_transparent_pen(rabbit_tilemap[1],0x0);
11261096   tilemap_set_transparent_pen(rabbit_tilemap[2],0x0);
11271097   tilemap_set_transparent_pen(rabbit_tilemap[3],0x0);
1128   rabbit_sprite_bitmap = auto_bitmap_alloc(0x1000,0x1000,video_screen_get_format(machine->primary_screen));
1098   rabbit_sprite_bitmap = auto_bitmap_alloc(machine,0x1000,0x1000,video_screen_get_format(machine->primary_screen));
11291099   rabbit_sprite_clip.min_x = 0;
11301100   rabbit_sprite_clip.max_x = 0x1000-1;
11311101   rabbit_sprite_clip.min_y = 0;
r4679r4680
11771147static MACHINE_DRIVER_START( tmmjprd )
11781148   MDRV_IMPORT_FROM(rabbit)
11791149   MDRV_CPU_MODIFY("maincpu")
1180   MDRV_CPU_PROGRAM_MAP(tmmjprd_readmem,tmmjprd_writemem)
1150   MDRV_CPU_PROGRAM_MAP(tmmjprd_map,0)
11811151   MDRV_CPU_VBLANK_INT_HACK(tmmjprd_interrupt,2)
11821152
11831153   MDRV_VIDEO_START(tmmjprd)
src/mame/drivers/asuka.c
r4679r4680
243243
244244static TIMER_CALLBACK( cadash_interrupt5 )
245245{
246   cpu_set_input_line(machine->cpu[0], 5, HOLD_LINE);
246   cputag_set_input_line(machine, "maincpu", 5, HOLD_LINE);
247247}
248248
249249static INTERRUPT_GEN( cadash_interrupt )
r4679r4680
755755
756756static void irq_handler(const device_config *device, int irq)
757757{
758   cpu_set_input_line(device->machine->cpu[1],0,irq ? ASSERT_LINE : CLEAR_LINE);
758   cputag_set_input_line(device->machine, "audiocpu", 0, irq ? ASSERT_LINE : CLEAR_LINE);
759759}
760760
761761static const ym2610_interface ym2610_config =
src/mame/drivers/triplhnt.c
r4679r4680
3232{
3333   triplhnt_hit_code = code;
3434
35   cpu_set_input_line(machine->cpu[0], 0, HOLD_LINE);
35   cputag_set_input_line(machine, "maincpu", 0, HOLD_LINE);
3636}
3737
3838
src/mame/drivers/pooyan.c
r4679r4680
4444{
4545   irq_enable = data & 1;
4646   if (!irq_enable)
47      cpu_set_input_line(space->machine->cpu[0], INPUT_LINE_NMI, CLEAR_LINE);
47      cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, CLEAR_LINE);
4848}
4949
5050
src/mame/drivers/hvyunit.c
r4679r4680
310310
311311static WRITE8_HANDLER( trigger_nmi_on_sound_cpu2 )
312312{
313   soundlatch_w(space,0,data);
314   cpu_set_input_line(space->machine->cpu[2], INPUT_LINE_NMI, PULSE_LINE);
313   soundlatch_w(space, 0, data);
314   cputag_set_input_line(space->machine, "suoundcpu", INPUT_LINE_NMI, PULSE_LINE);
315315}
316316
317317
318318static WRITE8_HANDLER( trigger_nmi_on_sub_cpu)
319319{
320   cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_NMI, PULSE_LINE);
320   cputag_set_input_line(space->machine, "sub", INPUT_LINE_NMI, PULSE_LINE);
321321}
322322
323323static WRITE8_HANDLER( main_bankswitch_w )
r4679r4680
345345
346346static ADDRESS_MAP_START( main_memory, ADDRESS_SPACE_PROGRAM, 8 )
347347   AM_RANGE(0x0000, 0x7fff) AM_ROM
348   AM_RANGE(0x8000, 0xbfff) AM_READ(SMH_BANK1)
348   AM_RANGE(0x8000, 0xbfff) AM_READ(SMH_BANK(1))
349349   AM_RANGE(0xc000, 0xcfff) AM_READWRITE( pandora_spriteram_r, pandora_spriteram_w )
350350   AM_RANGE(0xd000, 0xdfff) AM_RAM
351351   AM_RANGE(0xe000, 0xefff) AM_RAM AM_SHARE(1)
r4679r4680
381381
382382static ADDRESS_MAP_START( sub_memory, ADDRESS_SPACE_PROGRAM, 8 )
383383   AM_RANGE(0x0000, 0x7fff) AM_ROM
384   AM_RANGE(0x8000, 0xbfff) AM_READ(SMH_BANK2)
384   AM_RANGE(0x8000, 0xbfff) AM_READ(SMH_BANK(2))
385385   AM_RANGE(0xc000, 0xc3ff) AM_RAM_WRITE(hu_videoram_w) AM_BASE(&videoram)
386386   AM_RANGE(0xc400, 0xc7ff) AM_RAM_WRITE(hu_colorram_w) AM_BASE(&colorram)
387387   AM_RANGE(0xd000, 0xd1ff) AM_RAM_WRITE(paletteram_xxxxRRRRGGGGBBBB_split2_w) AM_BASE(&paletteram_2)
r4679r4680
418418
419419static ADDRESS_MAP_START( sound_memory, ADDRESS_SPACE_PROGRAM, 8 )
420420   AM_RANGE(0x0000, 0x7fff) AM_ROM
421   AM_RANGE(0x8000, 0xbfff) AM_READ(SMH_BANK3)
421   AM_RANGE(0x8000, 0xbfff) AM_READ(SMH_BANK(3))
422422   AM_RANGE(0xc000, 0xc7ff) AM_RAM
423423ADDRESS_MAP_END
424424
r4679r4680
693693GAME( 1988, hvyunit, 0,        hvyunit, hvyunit, 0, ROT0, "Kaneko / Taito", "Heavy Unit (World)" ,GAME_NOT_WORKING )
694694GAME( 1988, hvyunitj, hvyunit, hvyunit, hvyunit, 0, ROT0, "Kaneko / Taito", "Heavy Unit (Japan, Newer)" ,GAME_NOT_WORKING )
695695GAME( 1988, hvyunito, hvyunit, hvyunit, hvyunit, 0, ROT0, "Kaneko / Taito", "Heavy Unit (Japan, Older)" ,GAME_NOT_WORKING )
696
697
src/mame/drivers/backfire.c
r4679r4680
4848static VIDEO_START(backfire)
4949{
5050   /* allocate the ram as 16-bit (we do it here because the CPU is 32-bit) */
51   deco16_pf1_data = auto_malloc(0x2000);
52   deco16_pf2_data = auto_malloc(0x2000);
53   deco16_pf3_data = auto_malloc(0x2000);
54   deco16_pf4_data = auto_malloc(0x2000);
55   deco16_pf1_rowscroll = auto_malloc(0x0800);
56   deco16_pf2_rowscroll = auto_malloc(0x0800);
57   deco16_pf3_rowscroll = auto_malloc(0x0800);
58   deco16_pf4_rowscroll = auto_malloc(0x0800);
59   deco16_pf12_control = auto_malloc(0x10);
60   deco16_pf34_control = auto_malloc(0x10);
51   deco16_pf1_data = auto_alloc_array(machine, UINT16, 0x2000/2);
52   deco16_pf2_data = auto_alloc_array(machine, UINT16, 0x2000/2);
53   deco16_pf3_data = auto_alloc_array(machine, UINT16, 0x2000/2);
54   deco16_pf4_data = auto_alloc_array(machine, UINT16, 0x2000/2);
55   deco16_pf1_rowscroll = auto_alloc_array(machine, UINT16, 0x0800/2);
56   deco16_pf2_rowscroll = auto_alloc_array(machine, UINT16, 0x0800/2);
57   deco16_pf3_rowscroll = auto_alloc_array(machine, UINT16, 0x0800/2);
58   deco16_pf4_rowscroll = auto_alloc_array(machine, UINT16, 0x0800/2);
59   deco16_pf12_control = auto_alloc_array(machine, UINT16, 0x10/2);
60   deco16_pf34_control =auto_alloc_array(machine,  UINT16, 0x10/2);
6161
6262   /* and register the allocated ram so that save states still work */
6363   state_save_register_global_pointer(machine, deco16_pf1_data, 0x2000/2);
r4679r4680
8383   deco16_set_tilemap_bank_callback(2, backfire_bank_callback);
8484   deco16_set_tilemap_bank_callback(3, backfire_bank_callback);
8585
86   backfire_left =  auto_bitmap_alloc(80*8, 32*8, BITMAP_FORMAT_INDEXED16);
87   backfire_right = auto_bitmap_alloc(80*8, 32*8, BITMAP_FORMAT_INDEXED16);
86   backfire_left =  auto_bitmap_alloc(machine, 80*8, 32*8, BITMAP_FORMAT_INDEXED16);
87   backfire_right = auto_bitmap_alloc(machine, 80*8, 32*8, BITMAP_FORMAT_INDEXED16);
8888}
8989
9090static void draw_sprites(running_machine *machine,bitmap_t *bitmap,const rectangle *cliprect, UINT32 *backfire_spriteram32, int region)
r4679r4680
628628{
629629   UINT8 *rom = memory_region(machine, "ymz");
630630   int length = 0x200000; // only the first rom is swapped on backfire!
631   UINT8 *buf1 = malloc_or_die(length);
631   UINT8 *buf1 = alloc_array_or_die(UINT8, length);
632632   UINT32 x;
633633
634634   for (x=0;x<length;x++)
r4679r4680
666666   deco56_decrypt_gfx(machine, "gfx1"); /* 141 */
667667   deco56_decrypt_gfx(machine, "gfx2"); /* 141 */
668668   deco156_decrypt(machine);
669   cpu_set_clockscale(machine->cpu[0], 4.0f); /* core timings aren't accurate */
669   cpu_set_clockscale(cputag_get_cpu(machine, "maincpu"), 4.0f); /* core timings aren't accurate */
670670   descramble_sound(machine);
671   memory_install_read32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x0170018, 0x017001b, 0, 0, backfire_speedup_r );
671   memory_install_read32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x0170018, 0x017001b, 0, 0, backfire_speedup_r );
672672}
673673
674674GAME( 1995, backfire, 0,        backfire,      backfire, backfire, ROT0, "Data East Corporation", "Backfire! (set 1)", 0 )
src/mame/drivers/cubeqst.c
r4679r4680
3535#define CUBEQST_HBLANK      320
3636#define CUBEQST_VCOUNT      280
3737
38enum cpu_indices
39{
40   MAIN_CPU   = 0,
41   ROTATE_CPU = 1,
42   LINE_CPU   = 2,
43   SOUND_CPU  = 3,
44};
4538
46
4739/*************************************
4840 *
4941 *  Statics
r4679r4680
7264static VIDEO_START( cubeqst )
7365{
7466   video_field = 0;
75   depth_buffer = auto_malloc(512);
67   depth_buffer = auto_alloc_array(machine, UINT8, 512);
7668}
7769
7870/* TODO: Use resistor values */
r4679r4680
8072{
8173   int i;
8274
83   colormap = auto_malloc(65536 * sizeof(colormap[0]));
75   colormap = auto_alloc_array(machine, rgb_t, 65536);
8476   for (i = 0; i < 65536; ++i)
8577   {
8678      UINT8 a, r, g, b, y;
r4679r4680
118110   for (y = cliprect->min_y; y <= cliprect->max_y; ++y)
119111   {
120112      int i;
121      int num_entries = cubeqcpu_get_ptr_ram_val(screen->machine->cpu[LINE_CPU], y);
122      UINT32 *stk_ram = cubeqcpu_get_stack_ram(screen->machine->cpu[LINE_CPU]);
113      int num_entries = cubeqcpu_get_ptr_ram_val(cputag_get_cpu(screen->machine, "line_cpu"), y);
114      UINT32 *stk_ram = cubeqcpu_get_stack_ram(cputag_get_cpu(screen->machine, "line_cpu"));
123115      UINT32 *dest = BITMAP_ADDR32(bitmap, y, 0);
124116      UINT32 pen;
125117
r4679r4680
248240
249241static TIMER_CALLBACK( delayed_bank_swap )
250242{
251   cubeqcpu_swap_line_banks(machine->cpu[LINE_CPU]);
243   cubeqcpu_swap_line_banks(cputag_get_cpu(machine, "line_cpu"));
252244
253245   /* TODO: This is a little dubious */
254   cubeqcpu_clear_stack(machine->cpu[LINE_CPU]);
246   cubeqcpu_clear_stack(cputag_get_cpu(machine, "line_cpu"));
255247}
256248
257249
r4679r4680
383375
384376static READ16_HANDLER( read_rotram )
385377{
386   return cubeqcpu_rotram_r(space->machine->cpu[ROTATE_CPU], offset, mem_mask);
378   return cubeqcpu_rotram_r(cputag_get_cpu(space->machine, "rotate_cpu"), offset, mem_mask);
387379}
388380
389381static WRITE16_HANDLER( write_rotram )
390382{
391   cubeqcpu_rotram_w(space->machine->cpu[ROTATE_CPU], offset, data, mem_mask);
383   cubeqcpu_rotram_w(cputag_get_cpu(space->machine, "rotate_cpu"), offset, data, mem_mask);
392384}
393385
394386static READ16_HANDLER( read_sndram )
395387{
396   return cubeqcpu_sndram_r(space->machine->cpu[SOUND_CPU], offset, mem_mask);
388   return cubeqcpu_sndram_r(cputag_get_cpu(space->machine, "sound_cpu"), offset, mem_mask);
397389}
398390
399391static WRITE16_HANDLER( write_sndram )
400392{
401   cubeqcpu_sndram_w(space->machine->cpu[SOUND_CPU], offset, data, mem_mask);
393   cubeqcpu_sndram_w(cputag_get_cpu(space->machine, "sound_cpu"), offset, data, mem_mask);
402394}
403395
404396static ADDRESS_MAP_START( m68k_program_map, ADDRESS_SPACE_PROGRAM, 16 )
src/mame/drivers/rollerg.c
r4679r4680
6161
6262static WRITE8_HANDLER( soundirq_w )
6363{
64   cpu_set_input_line_and_vector(space->machine->cpu[1],0,HOLD_LINE,0xff);
64   cputag_set_input_line_and_vector(space->machine, "audiocpu", 0, HOLD_LINE, 0xff);
6565}
6666
6767static TIMER_CALLBACK( nmi_callback )
6868{
69   cpu_set_input_line(machine->cpu[1], INPUT_LINE_NMI, ASSERT_LINE);
69   cputag_set_input_line(machine, "audiocpu", INPUT_LINE_NMI, ASSERT_LINE);
7070}
7171
7272static WRITE8_HANDLER( sound_arm_nmi_w )
7373{
74   cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_NMI, CLEAR_LINE);
74   cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, CLEAR_LINE);
7575   timer_set(space->machine, ATTOTIME_IN_USEC(50), NULL,0,nmi_callback);   /* kludge until the K053260 is emulated correctly */
7676}
7777
r4679r4680
8080   return 0x7f;
8181}
8282
83static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 )
84   AM_RANGE(0x0020, 0x0020) AM_READ(watchdog_reset_r)
85   AM_RANGE(0x0030, 0x0031) AM_DEVREAD("konami", rollerg_sound_r)   /* K053260 */
83static ADDRESS_MAP_START( rollerg_map, ADDRESS_SPACE_PROGRAM, 8 )
84   AM_RANGE(0x0010, 0x0010) AM_WRITE(rollerg_0010_w)
85   AM_RANGE(0x0020, 0x0020) AM_READWRITE(watchdog_reset_r,watchdog_reset_w)
86   AM_RANGE(0x0030, 0x0031) AM_DEVREADWRITE("konami", rollerg_sound_r,k053260_w)   /* K053260 */
87   AM_RANGE(0x0040, 0x0040) AM_WRITE(soundirq_w)
8688   AM_RANGE(0x0050, 0x0050) AM_READ_PORT("P1")
8789   AM_RANGE(0x0051, 0x0051) AM_READ_PORT("P2")
8890   AM_RANGE(0x0052, 0x0052) AM_READ_PORT("DSW3")
8991   AM_RANGE(0x0053, 0x0053) AM_READ_PORT("DSW1")
9092   AM_RANGE(0x0060, 0x0060) AM_READ_PORT("DSW2")
9193   AM_RANGE(0x0061, 0x0061) AM_READ(pip_r)            /* ????? */
92   AM_RANGE(0x0300, 0x030f) AM_READ(K053244_r)
93   AM_RANGE(0x0800, 0x0fff) AM_READ(rollerg_K051316_r)
94   AM_RANGE(0x1000, 0x17ff) AM_READ(K053245_r)
95   AM_RANGE(0x1800, 0x1fff) AM_READ(SMH_RAM)
96   AM_RANGE(0x2000, 0x3aff) AM_READ(SMH_RAM)
97   AM_RANGE(0x4000, 0x7fff) AM_READ(SMH_BANK1)
98   AM_RANGE(0x8000, 0xffff) AM_READ(SMH_ROM)
99ADDRESS_MAP_END
100
101static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 )
102   AM_RANGE(0x0010, 0x0010) AM_WRITE(rollerg_0010_w)
103   AM_RANGE(0x0020, 0x0020) AM_WRITE(watchdog_reset_w)
104   AM_RANGE(0x0030, 0x0031) AM_DEVWRITE("konami", k053260_w)
105   AM_RANGE(0x0040, 0x0040) AM_WRITE(soundirq_w)
10694   AM_RANGE(0x0100, 0x010f) AM_WRITENOP   /* 053252? */
10795   AM_RANGE(0x0200, 0x020f) AM_WRITE(K051316_ctrl_0_w)
108   AM_RANGE(0x0300, 0x030f) AM_WRITE(K053244_w)
109   AM_RANGE(0x0800, 0x0fff) AM_WRITE(K051316_0_w)
110   AM_RANGE(0x1000, 0x17ff) AM_WRITE(K053245_w)
111   AM_RANGE(0x1800, 0x1fff) AM_WRITE(paletteram_xBBBBBGGGGGRRRRR_be_w) AM_BASE(&paletteram)
112   AM_RANGE(0x2000, 0x3aff) AM_WRITE(SMH_RAM)
113   AM_RANGE(0x4000, 0xffff) AM_WRITE(SMH_ROM)
96   AM_RANGE(0x0300, 0x030f) AM_READWRITE(K053244_r,K053244_w)
97   AM_RANGE(0x0800, 0x0fff) AM_READWRITE(rollerg_K051316_r,K051316_0_w)
98   AM_RANGE(0x1000, 0x17ff) AM_READWRITE(K053245_r,K053245_w)
99   AM_RANGE(0x1800, 0x1fff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_be_w) AM_BASE(&paletteram)
100   AM_RANGE(0x2000, 0x3aff) AM_RAM
101   AM_RANGE(0x4000, 0x7fff) AM_ROMBANK(1)
102   AM_RANGE(0x8000, 0xffff) AM_ROM
114103ADDRESS_MAP_END
115104
116static ADDRESS_MAP_START( readmem_sound, ADDRESS_SPACE_PROGRAM, 8 )
117   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
118   AM_RANGE(0x8000, 0x87ff) AM_READ(SMH_RAM)
119   AM_RANGE(0xa000, 0xa02f) AM_DEVREAD("konami", k053260_r)
120   AM_RANGE(0xc000, 0xc001) AM_DEVREAD("ym", ym3812_r)
121ADDRESS_MAP_END
122
123static ADDRESS_MAP_START( writemem_sound, ADDRESS_SPACE_PROGRAM, 8 )
124   AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM)
125   AM_RANGE(0x8000, 0x87ff) AM_WRITE(SMH_RAM)
126   AM_RANGE(0xa000, 0xa02f) AM_DEVWRITE("konami", k053260_w)
127   AM_RANGE(0xc000, 0xc001) AM_DEVWRITE("ym", ym3812_w)
105static ADDRESS_MAP_START( rollerg_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
106   AM_RANGE(0x0000, 0x7fff) AM_ROM
107   AM_RANGE(0x8000, 0x87ff) AM_RAM
108   AM_RANGE(0xa000, 0xa02f) AM_DEVREADWRITE("konami", k053260_r,k053260_w)
109   AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ym", ym3812_r,ym3812_w)
128110   AM_RANGE(0xfc00, 0xfc00) AM_WRITE(sound_arm_nmi_w)
129111ADDRESS_MAP_END
130112
r4679r4680
239221
240222   /* basic machine hardware */
241223   MDRV_CPU_ADD("maincpu", KONAMI, 3000000)      /* ? */
242   MDRV_CPU_PROGRAM_MAP(readmem,writemem)
224   MDRV_CPU_PROGRAM_MAP(rollerg_map,0)
243225   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
244226
245227   MDRV_CPU_ADD("audiocpu", Z80, 3579545)
246   MDRV_CPU_PROGRAM_MAP(readmem_sound,writemem_sound)
228   MDRV_CPU_PROGRAM_MAP(rollerg_sound_map,0)
247229                        /* NMIs are generated by the 053260 */
248230   MDRV_MACHINE_RESET(rollerg)
249231
r4679r4680
341323
342324static MACHINE_RESET( rollerg )
343325{
344   konami_configure_set_lines(machine->cpu[0], rollerg_banking);
326   konami_configure_set_lines(cputag_get_cpu(machine, "maincpu"), rollerg_banking);
345327
346328   readzoomroms = 0;
347329}
src/mame/drivers/sidepckt.c
r4679r4680
3232
3333static WRITE8_HANDLER( sound_cpu_command_w )
3434{
35    soundlatch_w(space,offset,data);
36    cpu_set_input_line(space->machine->cpu[1],INPUT_LINE_NMI,PULSE_LINE);
35    soundlatch_w(space, offset, data);
36    cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
3737}
3838
3939static READ8_HANDLER( sidepckt_i8751_r )
r4679r4680
4848   static const int table_3[]={0xbd,0x73,0x80,0xbd,0x73,0xa7,0xbd,0x73,0xe0,0x7e,0x72,0x56,0xff,0xff,0xff,0xff};
4949   static int current_ptr=0,current_table=0,in_math=0,math_param;
5050
51   cpu_set_input_line(space->machine->cpu[0],M6809_FIRQ_LINE,HOLD_LINE); /* i8751 triggers FIRQ on main cpu */
51   cputag_set_input_line(space->machine, "maincpu", M6809_FIRQ_LINE, HOLD_LINE); /* i8751 triggers FIRQ on main cpu */
5252
5353   /* This function takes multiple parameters */
5454   if (in_math==1) {
r4679r4680
8989   static const int table_3[]={0xbd,0x71,0xc8,0xbd,0x71,0xef,0xbd,0x72,0x28,0x7e,0x70,0x9e,0xff,0xff,0xff,0xff};
9090   static int current_ptr=0,current_table=0,in_math,math_param;
9191
92   cpu_set_input_line(space->machine->cpu[0],M6809_FIRQ_LINE,HOLD_LINE); /* i8751 triggers FIRQ on main cpu */
92   cputag_set_input_line(space->machine, "maincpu", M6809_FIRQ_LINE, HOLD_LINE); /* i8751 triggers FIRQ on main cpu */
9393
9494   /* This function takes multiple parameters */
9595   if (in_math==1) {
r4679r4680
125125
126126/******************************************************************************/
127127
128static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 )
129   AM_RANGE(0x0000, 0x0fff) AM_READ(SMH_RAM)
130   AM_RANGE(0x1000, 0x13ff) AM_READ(SMH_RAM)
131   AM_RANGE(0x1800, 0x1bff) AM_READ(SMH_RAM)
132   AM_RANGE(0x2000, 0x20ff) AM_READ(SMH_RAM)
128static ADDRESS_MAP_START( sidepckt_map, ADDRESS_SPACE_PROGRAM, 8 )
129   AM_RANGE(0x0000, 0x0fff) AM_RAM
130   AM_RANGE(0x1000, 0x13ff) AM_RAM_WRITE(sidepckt_videoram_w) AM_BASE(&videoram) AM_SIZE(&videoram_size)
131   AM_RANGE(0x1400, 0x17ff) AM_RAM // ???
132   AM_RANGE(0x1800, 0x1bff) AM_RAM_WRITE(sidepckt_colorram_w) AM_BASE(&colorram)
133   AM_RANGE(0x1c00, 0x1fff) AM_RAM // ???
134   AM_RANGE(0x2000, 0x20ff) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
135   AM_RANGE(0x2100, 0x24ff) AM_RAM // ???
133136   AM_RANGE(0x3000, 0x3000) AM_READ_PORT("P1")
134137   AM_RANGE(0x3001, 0x3001) AM_READ_PORT("P2")
135138   AM_RANGE(0x3002, 0x3002) AM_READ_PORT("DSW1")
136139   AM_RANGE(0x3003, 0x3003) AM_READ_PORT("DSW2")
137   AM_RANGE(0x3014, 0x3014) AM_READ(sidepckt_i8751_r)
138   AM_RANGE(0x4000, 0xffff) AM_READ(SMH_ROM)
139ADDRESS_MAP_END
140
141static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 )
142   AM_RANGE(0x0000, 0x0fff) AM_WRITE(SMH_RAM)
143   AM_RANGE(0x1000, 0x13ff) AM_WRITE(sidepckt_videoram_w) AM_BASE(&videoram) AM_SIZE(&videoram_size)
144   AM_RANGE(0x1800, 0x1bff) AM_WRITE(sidepckt_colorram_w) AM_BASE(&colorram)
145   AM_RANGE(0x2000, 0x20ff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
146140   AM_RANGE(0x3004, 0x3004) AM_WRITE(sound_cpu_command_w)
147   AM_RANGE(0x300c, 0x300c) AM_WRITE(sidepckt_flipscreen_w)
148   AM_RANGE(0x3018, 0x3018) AM_WRITE(sidepckt_i8751_w)
149   AM_RANGE(0x4000, 0xffff) AM_WRITE(SMH_ROM)
141   AM_RANGE(0x300c, 0x300c) AM_READNOP AM_WRITE(sidepckt_flipscreen_w)
142//  AM_RANGE(0x3014, 0x3014) //i8751 read
143//  AM_RANGE(0x3018, 0x3018) //i8751 write
144   AM_RANGE(0x4000, 0xffff) AM_ROM
150145ADDRESS_MAP_END
151146
152static ADDRESS_MAP_START( j_writemem, ADDRESS_SPACE_PROGRAM, 8 )
153   AM_RANGE(0x0000, 0x0fff) AM_WRITE(SMH_RAM)
154   AM_RANGE(0x1000, 0x13ff) AM_WRITE(sidepckt_videoram_w) AM_BASE(&videoram) AM_SIZE(&videoram_size)
155   AM_RANGE(0x1800, 0x1bff) AM_WRITE(sidepckt_colorram_w) AM_BASE(&colorram)
156   AM_RANGE(0x2000, 0x20ff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram) AM_SIZE(&spriteram_size)
157   AM_RANGE(0x3004, 0x3004) AM_WRITE(sound_cpu_command_w)
158   AM_RANGE(0x300c, 0x300c) AM_WRITE(sidepckt_flipscreen_w)
159   AM_RANGE(0x3018, 0x3018) AM_WRITE(sidepctj_i8751_w)
160   AM_RANGE(0x4000, 0xffff) AM_WRITE(SMH_ROM)
147static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 )
148   AM_RANGE(0x0000, 0x0fff) AM_RAM
149   AM_RANGE(0x1000, 0x1001) AM_DEVWRITE("ym1", ym2203_w)
150   AM_RANGE(0x2000, 0x2001) AM_DEVWRITE("ym2", ym3526_w)
151   AM_RANGE(0x3000, 0x3000) AM_READ(soundlatch_r)
152   AM_RANGE(0x8000, 0xffff) AM_ROM
161153ADDRESS_MAP_END
162154
163static ADDRESS_MAP_START( sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
164    AM_RANGE(0x0000, 0x0fff) AM_READ(SMH_RAM)
165    AM_RANGE(0x3000, 0x3000) AM_READ(soundlatch_r)
166    AM_RANGE(0x8000, 0xffff) AM_READ(SMH_ROM)
167ADDRESS_MAP_END
168155
169static ADDRESS_MAP_START( sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
170    AM_RANGE(0x0000, 0x0fff) AM_WRITE(SMH_RAM)
171    AM_RANGE(0x1000, 0x1001) AM_DEVWRITE("ym1", ym2203_w)
172    AM_RANGE(0x2000, 0x2001) AM_DEVWRITE("ym2", ym3526_w)
173    AM_RANGE(0x8000, 0xffff) AM_WRITE(SMH_ROM)
174ADDRESS_MAP_END
175
176156/******************************************************************************/
177157
178158static INPUT_PORTS_START( sidepckt )
r4679r4680
277257/* handler called by the 3526 emulator when the internal timers cause an IRQ */
278258static void irqhandler(const device_config *device, int linestate)
279259{
280   cpu_set_input_line(device->machine->cpu[1],0,linestate);
260   cputag_set_input_line(device->machine, "audiocpu", 0, linestate);
281261}
282262
283263static const ym3526_interface ym3526_config =
r4679r4680
291271
292272   /* basic machine hardware */
293273   MDRV_CPU_ADD("maincpu", M6809, 2000000)        /* 2 MHz */
294   MDRV_CPU_PROGRAM_MAP(readmem,writemem)
274   MDRV_CPU_PROGRAM_MAP(sidepckt_map,0)
295275   MDRV_CPU_VBLANK_INT("screen", nmi_line_pulse)
296276
297277   MDRV_CPU_ADD("audiocpu", M6502, 1500000)        /* 1.5 MHz */
298   MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem)
278   MDRV_CPU_PROGRAM_MAP(sound_map,0)
299279                        /* NMIs are triggered by the main cpu */
300280
301281   /* video hardware */
r4679r4680
325305MACHINE_DRIVER_END
326306
327307
328static MACHINE_DRIVER_START( sidepctj )
329
330   /* basic machine hardware */
331   MDRV_CPU_ADD("maincpu", M6809, 2000000)        /* 2 MHz */
332   MDRV_CPU_PROGRAM_MAP(readmem,j_writemem)
333   MDRV_CPU_VBLANK_INT("screen", nmi_line_pulse)
334
335   MDRV_CPU_ADD("audiocpu", M6502, 1500000)        /* 1.5 MHz */
336   MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem)
337                        /* NMIs are triggered by the main cpu */
338
339   /* video hardware */
340   MDRV_SCREEN_ADD("screen", RASTER)
341   MDRV_SCREEN_REFRESH_RATE(58)
342   MDRV_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */  /* VERIFY:  May be 55 or 56 */)
343   MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
344   MDRV_SCREEN_SIZE(32*8, 32*8)
345   MDRV_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
346
347   MDRV_GFXDECODE(sidepckt)
348   MDRV_PALETTE_LENGTH(256)
349
350   MDRV_PALETTE_INIT(sidepckt)
351   MDRV_VIDEO_START(sidepckt)
352   MDRV_VIDEO_UPDATE(sidepckt)
353
354   /* sound hardware */
355   MDRV_SPEAKER_STANDARD_MONO("mono")
356
357   MDRV_SOUND_ADD("ym1", YM2203, 1500000)
358   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
359
360   MDRV_SOUND_ADD("ym2", YM3526, 3000000)
361   MDRV_SOUND_CONFIG(ym3526_config)
362   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
363MACHINE_DRIVER_END
364
365308/***************************************************************************
366309
367310  Game driver(s)
r4679r4680
375318    ROM_REGION( 0x10000, "audiocpu", 0 )
376319    ROM_LOAD( "dh04.bin",     0x08000, 0x8000, CRC(d076e62e) SHA1(720ff1a6a58697b4a9c7c4f31c24a2cf8a04900a) )
377320
321    ROM_REGION( 0x10000, "mcu", 0 ) //i8751 MCU
322    ROM_LOAD( "i8751.mcu",     0x00000, 0x8000, NO_DUMP )
323
378324    ROM_REGION( 0x18000, "gfx1", ROMREGION_DISPOSE )
379325    ROM_LOAD( "sp_07.bin",    0x00000, 0x8000, CRC(9d6f7969) SHA1(583852be0861a89c63ce09eb39146ec379b9e12d) ) /* characters */
380326    ROM_LOAD( "sp_06.bin",    0x08000, 0x8000, CRC(580e4e43) SHA1(de152a5d4fbc52d80e3eb9af17835ecb6258d45e) )
r4679r4680
397343    ROM_REGION( 0x10000, "audiocpu", 0 )
398344    ROM_LOAD( "dh04.bin",     0x08000, 0x8000, CRC(d076e62e) SHA1(720ff1a6a58697b4a9c7c4f31c24a2cf8a04900a) )
399345
346    ROM_REGION( 0x10000, "mcu", 0 ) //i8751 MCU
347    ROM_LOAD( "i8751.mcu",     0x00000, 0x8000, NO_DUMP )
348
400349    ROM_REGION( 0x18000, "gfx1", ROMREGION_DISPOSE )
401350    ROM_LOAD( "dh07.bin",     0x00000, 0x8000, CRC(7d0ce858) SHA1(3a158f218a762e6841d2611f41ace67a1afefb35) ) /* characters */
402351    ROM_LOAD( "dh06.bin",     0x08000, 0x8000, CRC(b86ddf72) SHA1(7596dd1b646971d8df1bc4fd157ccf161a712d59) )
r4679r4680
436385ROM_END
437386
438387
388static DRIVER_INIT( sidepckt )
389{
390   memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x3014, 0x3014, 0, 0, sidepckt_i8751_r );
391   memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x3018, 0x3018, 0, 0, sidepckt_i8751_w  );
392}
439393
440GAME( 1986, sidepckt, 0,        sidepckt, sidepckt, 0, ROT0, "Data East Corporation", "Side Pocket (World)", 0 )
441GAME( 1986, sidepctj, sidepckt, sidepctj, sidepckt, 0, ROT0, "Data East Corporation", "Side Pocket (Japan)", 0 )
442GAME( 1986, sidepctb, sidepckt, sidepckt, sidepckt, 0, ROT0, "bootleg", "Side Pocket (bootleg)", 0 )
394static DRIVER_INIT( sidepctj )
395{
396   memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x3014, 0x3014, 0, 0, sidepckt_i8751_r );
397   memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x3018, 0x3018, 0, 0, sidepctj_i8751_w  );
398}
399
400
401GAME( 1986, sidepckt, 0,        sidepckt, sidepckt, sidepckt, ROT0, "Data East Corporation", "Side Pocket (World)", 0 )
402GAME( 1986, sidepctj, sidepckt, sidepckt, sidepckt, sidepctj, ROT0, "Data East Corporation", "Side Pocket (Japan)", 0 )
403GAME( 1986, sidepctb, sidepckt, sidepckt, sidepckt, 0,        ROT0, "bootleg", "Side Pocket (bootleg)", 0 )
src/mame/drivers/starwars.c
r4679r4680
5656   /* ESB-specific */
5757   if (starwars_is_esb)
5858   {
59      const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
59      const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
6060
6161      /* reset the slapstic */
6262      slapstic_reset();
r4679r4680
8181
8282static WRITE8_HANDLER( irq_ack_w )
8383{
84   cpu_set_input_line(space->machine->cpu[0], M6809_IRQ_LINE, CLEAR_LINE);
84   cputag_set_input_line(space->machine, "maincpu", M6809_IRQ_LINE, CLEAR_LINE);
8585}
8686
8787
r4679r4680
496496static DRIVER_INIT( starwars )
497497{
498498   /* X2212 nvram */
499   generic_nvram = auto_malloc(generic_nvram_size);
499   generic_nvram = auto_alloc_array(machine, UINT8, generic_nvram_size);
500500
501501   /* prepare the mathbox */
502502   starwars_is_esb = 0;
r4679r4680
513513   UINT8 *rom = memory_region(machine, "maincpu");
514514
515515   /* X2212 nvram */
516   generic_nvram = auto_malloc(generic_nvram_size);
516   generic_nvram = auto_alloc_array(machine, UINT8, generic_nvram_size);
517517
518518   /* init the slapstic */
519519   slapstic_init(machine, 101);
r4679r4680
521521   slapstic_base = &rom[0x08000];
522522
523523   /* install an opcode base handler */
524   memory_set_direct_update_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), esb_setdirect);
524   memory_set_direct_update_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), esb_setdirect);
525525
526526   /* install read/write handlers for it */
527   memory_install_readwrite8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x8000, 0x9fff, 0, 0, esb_slapstic_r, esb_slapstic_w);
527   memory_install_readwrite8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x8000, 0x9fff, 0, 0, esb_slapstic_r, esb_slapstic_w);
528528
529529   /* install additional banking */
530   memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0xa000, 0xffff, 0, 0, SMH_BANK2);
530   memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xa000, 0xffff, 0, 0, (read8_space_func)SMH_BANK(2));
531531
532532   /* prepare the matrix processor */
533533   starwars_is_esb = 1;
src/mame/drivers/wolfpack.c
r4679r4680
3535{
3636   int scanline = param;
3737
38   cpu_set_input_line(machine->cpu[0], INPUT_LINE_NMI, PULSE_LINE);
38   cputag_set_input_line(machine, "maincpu", INPUT_LINE_NMI, PULSE_LINE);
3939
4040   scanline += 64;
4141
src/mame/drivers/pirates.c
r4679r4680
155155       602e and 62a6 */
156156   /* For Genix, see 6576 for setting values and 67c2,d3b4 and dbc2 for tests. */
157157
158   if (cpu_get_pc(field->port->machine->cpu[0]) == 0x6134)
158   if (cpu_get_pc(cputag_get_cpu(field->port->machine, "main")) == 0x6134)
159159   {
160160      bit = prot & 1;
161161      prot = (prot >> 1) | (bit << 7);
162162   }
163   else if (cpu_get_pc(field->port->machine->cpu[0]) == 0x6020)
163   else if (cputag_get_cpu(field->port->machine, "main")) == 0x6020)
164164      bit = 0;
165   else if (cpu_get_pc(field->port->machine->cpu[0]) == 0x6168)
165   else if (cputag_get_cpu(field->port->machine, "main")) == 0x6168)
166166      bit = 0;
167   else if (cpu_get_pc(field->port->machine->cpu[0]) == 0x61cc)
167   else if (cputag_get_cpu(field->port->machine, "main")) == 0x61cc)
168168      bit = 1;
169169   else
170170#endif
r4679r4680
177177
178178/* Memory Maps */
179179
180static ADDRESS_MAP_START( pirates_readmem, ADDRESS_SPACE_PROGRAM, 16 )
181   AM_RANGE(0x000000, 0x0fffff) AM_READ(SMH_ROM)
182   AM_RANGE(0x100000, 0x10ffff) AM_READ(SMH_RAM)
180static ADDRESS_MAP_START( pirates_map, ADDRESS_SPACE_PROGRAM, 16 )
181   AM_RANGE(0x000000, 0x0fffff) AM_ROM
182   AM_RANGE(0x100000, 0x10ffff) AM_RAM // main ram
183183   AM_RANGE(0x300000, 0x300001) AM_READ_PORT("INPUTS")
184184   AM_RANGE(0x400000, 0x400001) AM_READ_PORT("SYSTEM")
185//  AM_RANGE(0x500000, 0x5007ff) AM_READ(SMH_RAM)
186   AM_RANGE(0x800000, 0x803fff) AM_READ(SMH_RAM)
187//  AM_RANGE(0x900000, 0x903fff) AM_READ(SMH_RAM)
188   AM_RANGE(0xa00000, 0xa00001) AM_DEVREAD8("oki", okim6295_r, 0x00ff)
189ADDRESS_MAP_END
190
191static ADDRESS_MAP_START( pirates_writemem, ADDRESS_SPACE_PROGRAM, 16 )
192   AM_RANGE(0x000000, 0x0fffff) AM_WRITE(SMH_ROM)
193   AM_RANGE(0x100000, 0x10ffff) AM_WRITE(SMH_RAM) // main ram
194   AM_RANGE(0x500000, 0x5007ff) AM_WRITE(SMH_RAM) AM_BASE(&pirates_spriteram)
195//  AM_RANGE(0x500800, 0x50080f) AM_WRITE(SMH_RAM)
185//  AM_RANGE(0x500000, 0x5007ff) AM_RAM
186   AM_RANGE(0x500000, 0x5007ff) AM_WRITEONLY AM_BASE(&pirates_spriteram)
187//  AM_RANGE(0x500800, 0x50080f) AM_WRITENOP
196188   AM_RANGE(0x600000, 0x600001) AM_WRITE(pirates_out_w)
197   AM_RANGE(0x700000, 0x700001) AM_WRITE(SMH_RAM) AM_BASE(&pirates_scroll)   // scroll reg
198   AM_RANGE(0x800000, 0x803fff) AM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE(&paletteram16)
199   AM_RANGE(0x900000, 0x90017f) AM_WRITE(SMH_RAM)  // more of tilemaps ?
200   AM_RANGE(0x900180, 0x90137f) AM_WRITE(pirates_tx_tileram_w) AM_BASE(&pirates_tx_tileram)
201   AM_RANGE(0x901380, 0x902a7f) AM_WRITE(pirates_fg_tileram_w) AM_BASE(&pirates_fg_tileram)
202//  AM_RANGE(0x902580, 0x902a7f) AM_WRITE(SMH_RAM)  // more of tilemaps ?
203   AM_RANGE(0x902a80, 0x904187) AM_WRITE(pirates_bg_tileram_w) AM_BASE(&pirates_bg_tileram)
204//  AM_RANGE(0x903c80, 0x904187) AM_WRITE(SMH_RAM)  // more of tilemaps ?
205   AM_RANGE(0xa00000, 0xa00001) AM_DEVWRITE8("oki", okim6295_w, 0x00ff)
189   AM_RANGE(0x700000, 0x700001) AM_WRITEONLY AM_BASE(&pirates_scroll)   // scroll reg
190   AM_RANGE(0x800000, 0x803fff) AM_RAM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE(&paletteram16)
191   AM_RANGE(0x900000, 0x90017f) AM_RAM  // more of tilemaps ?
192   AM_RANGE(0x900180, 0x90137f) AM_RAM_WRITE(pirates_tx_tileram_w) AM_BASE(&pirates_tx_tileram)
193   AM_RANGE(0x901380, 0x902a7f) AM_RAM_WRITE(pirates_fg_tileram_w) AM_BASE(&pirates_fg_tileram)
194//  AM_RANGE(0x902580, 0x902a7f) AM_RAM  // more of tilemaps ?
195   AM_RANGE(0x902a80, 0x904187) AM_RAM_WRITE(pirates_bg_tileram_w) AM_BASE(&pirates_bg_tileram)
196//  AM_RANGE(0x903c80, 0x904187) AM_RAM  // more of tilemaps ?
197   AM_RANGE(0xa00000, 0xa00001) AM_DEVREADWRITE8("oki", okim6295_r,okim6295_w, 0x00ff)
206198ADDRESS_MAP_END
207199
208200
209
210201/* Input Ports */
211202
212203static INPUT_PORTS_START( pirates )
r4679r4680
286277
287278static MACHINE_DRIVER_START( pirates )
288279   MDRV_CPU_ADD("maincpu", M68000, 16000000) /* 16mhz */
289   MDRV_CPU_PROGRAM_MAP(pirates_readmem,pirates_writemem)
280   MDRV_CPU_PROGRAM_MAP(pirates_map,0)
290281   MDRV_CPU_VBLANK_INT("screen", irq1_line_hold)
291282
292283   MDRV_NVRAM_HANDLER(pirates)
r4679r4680
370361
371362    rom_size = memory_region_length(machine, "maincpu");
372363
373    buf = malloc_or_die(rom_size);
364    buf = alloc_array_or_die(UINT16, rom_size/2);
374365
375366    rom = (UINT16 *)memory_region(machine, "maincpu");
376367    memcpy (buf, rom, rom_size);
r4679r4680
399390
400391    rom_size = memory_region_length(machine, "gfx1");
401392
402    buf = malloc_or_die(rom_size);
393    buf = alloc_array_or_die(UINT8, rom_size);
403394
404395    rom = memory_region(machine, "gfx1");
405396    memcpy (buf, rom, rom_size);
r4679r4680
423414
424415    rom_size = memory_region_length(machine, "gfx2");
425416
426    buf = malloc_or_die(rom_size);
417    buf = alloc_array_or_die(UINT8, rom_size);
427418
428419    rom = memory_region(machine, "gfx2");
429420    memcpy (buf, rom, rom_size);
r4679r4680
448439
449440    rom_size = memory_region_length(machine, "oki");
450441
451    buf = malloc_or_die(rom_size);
442    buf = alloc_array_or_die(UINT8, rom_size);
452443
453444    rom = memory_region(machine, "oki");
454445    memcpy (buf, rom, rom_size);
r4679r4680
486477
487478   /* If this value is increased then something has gone wrong and the protection failed */
488479   /* Write-protect it for now */
489   memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x109e98, 0x109e9b, 0, 0, genix_prot_r );
480   memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x109e98, 0x109e9b, 0, 0, genix_prot_r );
490481}
491482
492483
src/mame/drivers/tankbatt.c
r4679r4680
106106   tankbatt_sound_enable = !data;
107107   if (data != 0)
108108   {
109      cpu_set_input_line(space->machine->cpu[0], 0, CLEAR_LINE);
110      cpu_set_input_line(space->machine->cpu[0], INPUT_LINE_NMI, CLEAR_LINE);
109      cputag_set_input_line(space->machine, "maincpu", 0, CLEAR_LINE);
110      cputag_set_input_line(space->machine, "maincpu", INPUT_LINE_NMI, CLEAR_LINE);
111111   }
112112   /* hack - turn off the engine noise if the normal game nmi's are disabled */
113113   if (data) sample_stop (devtag_get_device(space->machine, "samples"), 2);
r4679r4680
119119   tankbatt_nmi_enable = data;
120120   if (data != 0)
121121   {
122      cpu_set_input_line(space->machine->cpu[0], 0, CLEAR_LINE);
123      cpu_set_input_line(space->machine->cpu[0], INPUT_LINE_NMI, CLEAR_LINE);
122      cputag_set_input_line(space->machine, "maincpu", 0, CLEAR_LINE);
123      cputag_set_input_line(space->machine, "maincpu", INPUT_LINE_NMI, CLEAR_LINE);
124124   }
125125//  interrupt_enable_w (offset, data);
126126}
src/mame/drivers/exerion.c
r4679r4680
3939static INPUT_CHANGED( coin_inserted )
4040{
4141   /* coin insertion causes an NMI */
42   cpu_set_input_line(field->port->machine->cpu[0], INPUT_LINE_NMI, newval ? CLEAR_LINE : ASSERT_LINE);
42   cputag_set_input_line(field->port->machine, "maincpu", INPUT_LINE_NMI, newval ? CLEAR_LINE : ASSERT_LINE);
4343}
4444
4545
r4679r4680
417417   UINT8 *src, *dst, *temp;
418418
419419   /* allocate some temporary space */
420   temp = malloc_or_die(0x10000);
420   temp = alloc_array_or_die(UINT8, 0x10000);
421421
422422   /* make a temporary copy of the character data */
423423   src = temp;
src/mame/drivers/mosaic.c
r4679r4680
9696
9797
9898
99static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 )
100   AM_RANGE(0x00000, 0x0ffff) AM_READ(SMH_ROM)
101   AM_RANGE(0x20000, 0x21fff) AM_READ(SMH_RAM)
102   AM_RANGE(0x22000, 0x23fff) AM_READ(SMH_RAM)
103   AM_RANGE(0x24000, 0x241ff) AM_READ(SMH_RAM)
99static ADDRESS_MAP_START( mosaic_map, ADDRESS_SPACE_PROGRAM, 8 )
100   AM_RANGE(0x00000, 0x0ffff) AM_ROM
101   AM_RANGE(0x20000, 0x21fff) AM_RAM
102   AM_RANGE(0x22000, 0x22fff) AM_RAM_WRITE(mosaic_bgvideoram_w) AM_BASE(&mosaic_bgvideoram)
103   AM_RANGE(0x23000, 0x23fff) AM_RAM_WRITE(mosaic_fgvideoram_w) AM_BASE(&mosaic_fgvideoram)
104   AM_RANGE(0x24000, 0x241ff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_le_w) AM_BASE(&paletteram)
104105ADDRESS_MAP_END
105106
106static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 )
107   AM_RANGE(0x00000, 0x0ffff) AM_WRITE(SMH_ROM)
108   AM_RANGE(0x20000, 0x21fff) AM_WRITE(SMH_RAM)
109   AM_RANGE(0x22000, 0x22fff) AM_WRITE(mosaic_bgvideoram_w) AM_BASE(&mosaic_bgvideoram)
110   AM_RANGE(0x23000, 0x23fff) AM_WRITE(mosaic_fgvideoram_w) AM_BASE(&mosaic_fgvideoram)
111   AM_RANGE(0x24000, 0x241ff) AM_WRITE(paletteram_xRRRRRGGGGGBBBBB_le_w) AM_BASE(&paletteram)
107static ADDRESS_MAP_START( gfire2_map, ADDRESS_SPACE_PROGRAM, 8 )
108   AM_RANGE(0x00000, 0x0ffff) AM_ROM
109   AM_RANGE(0x10000, 0x17fff) AM_RAM
110   AM_RANGE(0x22000, 0x22fff) AM_RAM_WRITE(mosaic_bgvideoram_w) AM_BASE(&mosaic_bgvideoram)
111   AM_RANGE(0x23000, 0x23fff) AM_RAM_WRITE(mosaic_fgvideoram_w) AM_BASE(&mosaic_fgvideoram)
112   AM_RANGE(0x24000, 0x241ff) AM_RAM_WRITE(paletteram_xRRRRRGGGGGBBBBB_le_w) AM_BASE(&paletteram)
112113ADDRESS_MAP_END
113114
114static ADDRESS_MAP_START( gfire2_readmem, ADDRESS_SPACE_PROGRAM, 8 )
115   AM_RANGE(0x00000, 0x0ffff) AM_READ(SMH_ROM)
116   AM_RANGE(0x10000, 0x17fff) AM_READ(SMH_RAM)
117   AM_RANGE(0x22000, 0x23fff) AM_READ(SMH_RAM)
118   AM_RANGE(0x24000, 0x241ff) AM_READ(SMH_RAM)
119ADDRESS_MAP_END
120
121static ADDRESS_MAP_START( gfire2_writemem, ADDRESS_SPACE_PROGRAM, 8 )
122   AM_RANGE(0x00000, 0x0ffff) AM_WRITE(SMH_ROM)
123   AM_RANGE(0x10000, 0x17fff) AM_WRITE(SMH_RAM)
124   AM_RANGE(0x22000, 0x22fff) AM_WRITE(mosaic_bgvideoram_w) AM_BASE(&mosaic_bgvideoram)
125   AM_RANGE(0x23000, 0x23fff) AM_WRITE(mosaic_fgvideoram_w) AM_BASE(&mosaic_fgvideoram)
126   AM_RANGE(0x24000, 0x241ff) AM_WRITE(paletteram_xRRRRRGGGGGBBBBB_le_w) AM_BASE(&paletteram)
127ADDRESS_MAP_END
128
129
130static ADDRESS_MAP_START( io_map, ADDRESS_SPACE_IO, 8 )
115static ADDRESS_MAP_START( mosaic_io_map, ADDRESS_SPACE_IO, 8 )
131116   ADDRESS_MAP_GLOBAL_MASK(0xff)
132117   AM_RANGE(0x00, 0x3f) AM_WRITENOP   /* Z180 internal registers */
133118   AM_RANGE(0x30, 0x30) AM_READNOP   /* Z180 internal registers */
r4679r4680
275260
276261static MACHINE_DRIVER_START( mosaic )
277262   MDRV_CPU_ADD("maincpu", Z180, 7000000)   /* ??? */
278   MDRV_CPU_PROGRAM_MAP(readmem,writemem)
279   MDRV_CPU_IO_MAP(io_map,0)
263   MDRV_CPU_PROGRAM_MAP(mosaic_map,0)
264   MDRV_CPU_IO_MAP(mosaic_io_map,0)
280265   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
281266
282267   /* video hardware */
r4679r4680
304289static MACHINE_DRIVER_START( gfire2 )
305290   MDRV_IMPORT_FROM(mosaic)
306291   MDRV_CPU_MODIFY("maincpu")
307   MDRV_CPU_PROGRAM_MAP(gfire2_readmem,gfire2_writemem)
292   MDRV_CPU_PROGRAM_MAP(gfire2_map,0)
308293   MDRV_CPU_IO_MAP(gfire2_io_map,0)
309294MACHINE_DRIVER_END
310295
src/mame/drivers/segas18.c
r4679r4680
9292
9393static const segaic16_memory_map_entry rom_171_shad_info[] =
9494{
95   { 0x3d/2, 0x00000, 0x04000, 0xffc000,      ~0, misc_io_r,      misc_io_w,             NULL,                  "I/O space" },
96   { 0x39/2, 0x00000, 0x02000, 0xffe000,      ~0, SMH_BANK10,     segaic16_paletteram_w, &paletteram16,         "color RAM" },
97   { 0x35/2, 0x00000, 0x10000, 0xfe0000,      ~0, SMH_BANK11,     segaic16_tileram_0_w,  &segaic16_tileram_0,   "tile RAM" },
98   { 0x35/2, 0x10000, 0x01000, 0xfef000,      ~0, SMH_BANK12,     segaic16_textram_0_w,  &segaic16_textram_0,   "text RAM" },
99   { 0x31/2, 0x00000, 0x00800, 0xfff800,      ~0, SMH_BANK13,     SMH_BANK13,            &segaic16_spriteram_0, "object RAM" },
100   { 0x2d/2, 0x00000, 0x04000, 0xffc000,      ~0, SMH_BANK14,     SMH_BANK14,            &workram,              "work RAM" },
101   { 0x29/2, 0x00000, 0x10000, 0xff0000,      ~0, NULL,           NULL,                  NULL,                  "????" },
102   { 0x25/2, 0x00000, 0x00010, 0xfffff0,      ~0, genesis_vdp_r,  genesis_vdp_w,         NULL,                  "VDP" },
103   { 0x21/2, 0x00000, 0x80000, 0xf80000, 0x00000, SMH_BANK17,     SMH_UNMAP,             NULL,                  "ROM 0" },
95   { 0x3d/2, 0x00000, 0x04000, 0xffc000,      ~0, misc_io_r,                       misc_io_w,                        NULL,                  "I/O space" },
96   { 0x39/2, 0x00000, 0x02000, 0xffe000,      ~0, (read16_space_func)SMH_BANK(10), segaic16_paletteram_w,            &paletteram16,         "color RAM" },
97   { 0x35/2, 0x00000, 0x10000, 0xfe0000,      ~0, (read16_space_func)SMH_BANK(11), segaic16_tileram_0_w,             &segaic16_tileram_0,   "tile RAM" },
98   { 0x35/2, 0x10000, 0x01000, 0xfef000,      ~0, (read16_space_func)SMH_BANK(12), segaic16_textram_0_w,             &segaic16_textram_0,   "text RAM" },
99   { 0x31/2, 0x00000, 0x00800, 0xfff800,      ~0, (read16_space_func)SMH_BANK(13), (write16_space_func)SMH_BANK(13), &segaic16_spriteram_0, "object RAM" },
100   { 0x2d/2, 0x00000, 0x04000, 0xffc000,      ~0, (read16_space_func)SMH_BANK(14), (write16_space_func)SMH_BANK(14), &workram,              "work RAM" },
101   { 0x29/2, 0x00000, 0x10000, 0xff0000,      ~0, NULL,                            NULL,                             NULL,                  "????" },
102   { 0x25/2, 0x00000, 0x00010, 0xfffff0,      ~0, genesis_vdp_r,                   genesis_vdp_w,                    NULL,                  "VDP" },
103   { 0x21/2, 0x00000, 0x80000, 0xf80000, 0x00000, (read16_space_func)SMH_BANK(17), (write16_space_func)SMH_UNMAP,    NULL,                  "ROM 0" },
104104   { 0 }
105105};
106106
107107static const segaic16_memory_map_entry rom_171_5874_info[] =
108108{
109   { 0x3d/2, 0x00000, 0x04000, 0xffc000,      ~0, misc_io_r,      misc_io_w,             NULL,                  "I/O space" },
110   { 0x39/2, 0x00000, 0x02000, 0xffe000,      ~0, SMH_BANK10,     segaic16_paletteram_w, &paletteram16,         "color RAM" },
111   { 0x35/2, 0x00000, 0x10000, 0xfe0000,      ~0, SMH_BANK11,     segaic16_tileram_0_w,  &segaic16_tileram_0,   "tile RAM" },
112   { 0x35/2, 0x10000, 0x01000, 0xfef000,      ~0, SMH_BANK12,     segaic16_textram_0_w,  &segaic16_textram_0,   "text RAM" },
113   { 0x31/2, 0x00000, 0x00800, 0xfff800,      ~0, SMH_BANK13,     SMH_BANK13,            &segaic16_spriteram_0, "object RAM" },
114   { 0x2d/2, 0x00000, 0x04000, 0xffc000,      ~0, SMH_BANK14,     SMH_BANK14,            &workram,              "work RAM" },
115   { 0x29/2, 0x00000, 0x00010, 0xfffff0,      ~0, genesis_vdp_r,  genesis_vdp_w,         NULL,                  "VDP" },
116   { 0x25/2, 0x00000, 0x80000, 0xf80000, 0x80000, SMH_BANK16,     SMH_UNMAP,             NULL,                  "ROM 1" },
117   { 0x21/2, 0x00000, 0x80000, 0xf80000, 0x00000, SMH_BANK17,     SMH_UNMAP,             NULL,                  "ROM 0" },
109   { 0x3d/2, 0x00000, 0x04000, 0xffc000,      ~0, misc_io_r,                       misc_io_w,                        NULL,                  "I/O space" },
110   { 0x39/2, 0x00000, 0x02000, 0xffe000,      ~0, (read16_space_func)SMH_BANK(10), segaic16_paletteram_w,            &paletteram16,         "color RAM" },
111   { 0x35/2, 0x00000, 0x10000, 0xfe0000,      ~0, (read16_space_func)SMH_BANK(11), segaic16_tileram_0_w,             &segaic16_tileram_0,   "tile RAM" },
112   { 0x35/2, 0x10000, 0x01000, 0xfef000,      ~0, (read16_space_func)SMH_BANK(12), segaic16_textram_0_w,             &segaic16_textram_0,   "text RAM" },
113   { 0x31/2, 0x00000, 0x00800, 0xfff800,      ~0, (read16_space_func)SMH_BANK(13), (write16_space_func)SMH_BANK(13), &segaic16_spriteram_0, "object RAM" },
114   { 0x2d/2, 0x00000, 0x04000, 0xffc000,      ~0, (read16_space_func)SMH_BANK(14), (write16_space_func)SMH_BANK(14), &workram,              "work RAM" },
115   { 0x29/2, 0x00000, 0x00010, 0xfffff0,      ~0, genesis_vdp_r,                   genesis_vdp_w,                    NULL,                  "VDP" },
116   { 0x25/2, 0x00000, 0x80000, 0xf80000, 0x80000, (read16_space_func)SMH_BANK(16), (write16_space_func)SMH_UNMAP,    NULL,                  "ROM 1" },
117   { 0x21/2, 0x00000, 0x80000, 0xf80000, 0x00000, (read16_space_func)SMH_BANK(17), (write16_space_func)SMH_UNMAP,    NULL,                  "ROM 0" },
118118   { 0 }
119119};
120120
121121static const segaic16_memory_map_entry rom_171_5987_info[] =
122122{
123   { 0x3d/2, 0x00000, 0x04000, 0xffc000,      ~0, misc_io_r,      misc_io_w,             NULL,                  "I/O space" },
124   { 0x39/2, 0x00000, 0x02000, 0xffe000,      ~0, SMH_BANK10,     segaic16_paletteram_w, &paletteram16,         "color RAM" },
125   { 0x35/2, 0x00000, 0x10000, 0xfe0000,      ~0, SMH_BANK11,     segaic16_tileram_0_w,  &segaic16_tileram_0,   "tile RAM" },
126   { 0x35/2, 0x10000, 0x01000, 0xfef000,      ~0, SMH_BANK12,     segaic16_textram_0_w,  &segaic16_textram_0,   "text RAM" },
127   { 0x31/2, 0x00000, 0x00800, 0xfff800,      ~0, SMH_BANK13,     SMH_BANK13,            &segaic16_spriteram_0, "object RAM" },
128   { 0x2d/2, 0x00000, 0x04000, 0xffc000,      ~0, SMH_BANK14,     SMH_BANK14,            &workram,              "work RAM" },
129   { 0x29/2, 0x00000, 0x00010, 0xfffff0,      ~0, genesis_vdp_r,  genesis_vdp_w,         NULL,                  "VDP" },
130   { 0x25/2, 0x00000, 0x80000, 0xf80000, 0x80000, SMH_BANK16,     rom_5987_bank_w,       NULL,                  "ROM 1/banking" },
131   { 0x21/2, 0x00000, 0x100000,0xf00000, 0x00000, SMH_BANK17,     SMH_UNMAP,             NULL,                  "ROM 0" },
123   { 0x3d/2, 0x00000, 0x04000, 0xffc000,      ~0, misc_io_r,                       misc_io_w,                        NULL,                  "I/O space" },
124   { 0x39/2, 0x00000, 0x02000, 0xffe000,      ~0, (read16_space_func)SMH_BANK(10), segaic16_paletteram_w,            &paletteram16,         "color RAM" },
125   { 0x35/2, 0x00000, 0x10000, 0xfe0000,      ~0, (read16_space_func)SMH_BANK(11), segaic16_tileram_0_w,             &segaic16_tileram_0,   "tile RAM" },
126   { 0x35/2, 0x10000, 0x01000, 0xfef000,      ~0, (read16_space_func)SMH_BANK(12), segaic16_textram_0_w,             &segaic16_textram_0,   "text RAM" },
127   { 0x31/2, 0x00000, 0x00800, 0xfff800,      ~0, (read16_space_func)SMH_BANK(13), (write16_space_func)SMH_BANK(13), &segaic16_spriteram_0, "object RAM" },
128   { 0x2d/2, 0x00000, 0x04000, 0xffc000,      ~0, (read16_space_func)SMH_BANK(14), (write16_space_func)SMH_BANK(14), &workram,              "work RAM" },
129   { 0x29/2, 0x00000, 0x00010, 0xfffff0,      ~0, genesis_vdp_r,                   genesis_vdp_w,                    NULL,                  "VDP" },
130   { 0x25/2, 0x00000, 0x80000, 0xf80000, 0x80000, (read16_space_func)SMH_BANK(16), rom_5987_bank_w,                  NULL,                  "ROM 1/banking" },
131   { 0x21/2, 0x00000, 0x100000,0xf00000, 0x00000, (read16_space_func)SMH_BANK(17), (write16_space_func)SMH_UNMAP,    NULL,                  "ROM 0" },
132132   { 0 }
133133};
134134
r4679r4680
149149
150150static void sound_w(running_machine *machine, UINT8 data)
151151{
152   const address_space *space = cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM);
152   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
153153   soundlatch_w(space, 0, data & 0xff);
154   cpu_set_input_line(machine->cpu[1], INPUT_LINE_NMI, PULSE_LINE);
154   cputag_set_input_line(machine, "soundcpu", INPUT_LINE_NMI, PULSE_LINE);
155155}
156156
157157
r4679r4680
167167   rom_board = _rom_board;
168168
169169   /* allocate memory for regions not autmatically assigned */
170   segaic16_spriteram_0 = auto_malloc(0x00800);
171   paletteram16         = auto_malloc(0x04000);
172   segaic16_tileram_0   = auto_malloc(0x10000);
173   segaic16_textram_0   = auto_malloc(0x01000);
174   workram              = auto_malloc(0x04000);
170   segaic16_spriteram_0 = auto_alloc_array(machine, UINT16, 0x00800/2);
171   paletteram16         = auto_alloc_array(machine, UINT16, 0x04000/2);
172   segaic16_tileram_0   = auto_alloc_array(machine, UINT16, 0x10000/2);
173   segaic16_textram_0   = auto_alloc_array(machine, UINT16, 0x01000/2);
174   workram              = auto_alloc_array(machine, UINT16, 0x04000/2);
175175
176176   /* init the memory mapper */
177177   segaic16_memory_mapper_init(cputag_get_cpu(machine, "maincpu"), region_info_list[rom_board], sound_w, sound_r);
r4679r4680
202202{
203203   segaic16_memory_mapper_reset(machine);
204204   segaic16_tilemap_reset(machine, 0);
205   fd1094_machine_init(machine->cpu[0]);
205   fd1094_machine_init(cputag_get_cpu(machine, "maincpu"));
206206
207207   /* if we are running with a real live 8751, we need to boost the interleave at startup */
208   if (machine->cpu[2] != NULL && cpu_get_type(machine->cpu[2]) == CPU_I8751)
208   if (cputag_get_cpu(machine, "mcu") != NULL && cpu_get_type(cputag_get_cpu(machine, "mcu")) == CPU_I8751)
209209      timer_call_after_resynch(machine, NULL, 0, boost_interleave);
210210}
211211
r4679r4680
561561static WRITE8_HANDLER( mcu_data_w )
562562{
563563   mcu_data = data;
564   cpu_set_input_line(space->machine->cpu[2], MCS51_INT1_LINE, HOLD_LINE);
564   cputag_set_input_line(space->machine, "mcu", MCS51_INT1_LINE, HOLD_LINE);
565565}
566566
567567
src/mame/drivers/ltcasino.c
r4679r4680
5454}
5555
5656
57static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 )
58   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_RAM)
59   AM_RANGE(0x8000, 0xcfff) AM_READ(SMH_ROM)
60   AM_RANGE(0xd000, 0xd7ff) AM_READ(SMH_RAM)
61   AM_RANGE(0xd800, 0xdfff) AM_READ(SMH_RAM)
57static ADDRESS_MAP_START( ltcasino_map, ADDRESS_SPACE_PROGRAM, 8 )
58   AM_RANGE(0x0000, 0x7fff) AM_RAM
59   AM_RANGE(0x8000, 0xcfff) AM_ROM
60   AM_RANGE(0xd000, 0xd7ff) AM_RAM_WRITE(ltcasino_tile_num_w) AM_BASE(&ltcasino_tile_num_ram)
61   AM_RANGE(0xd800, 0xdfff) AM_RAM
62   AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(ltcasino_tile_atr_w) AM_BASE(&ltcasino_tile_atr_ram)
63   AM_RANGE(0xe800, 0xebff) AM_RAM
6264
63   AM_RANGE(0xe000, 0xe7ff) AM_READ(SMH_RAM)
64   AM_RANGE(0xe800, 0xebff) AM_READ(SMH_RAM)
65
6665   AM_RANGE(0xec00, 0xec00) AM_READ_PORT("IN0")
6766   AM_RANGE(0xec01, 0xec01) AM_READ_PORT("IN1")
6867   AM_RANGE(0xec02, 0xec02) AM_READ_PORT("IN2")
r4679r4680
7271
7372   AM_RANGE(0xec20, 0xec20) AM_DEVREAD("ay", ay8910_r)
7473   AM_RANGE(0xec21, 0xec21) AM_READ_PORT("BUTTONS") //ltcasino -> pc: F3F3 (A in service) and F3FD (B in service)
74   AM_RANGE(0xec20, 0xec21) AM_DEVWRITE("ay", ay8910_data_address_w)
7575   AM_RANGE(0xec3e, 0xec3e) AM_READNOP //not used
76
77   AM_RANGE(0xf000, 0xffff) AM_READ(SMH_ROM)
76   AM_RANGE(0xec30, 0xec3f) AM_RAM
77   AM_RANGE(0xf000, 0xffff) AM_ROM
7878ADDRESS_MAP_END
7979
80static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 )
81   AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_RAM)
82   AM_RANGE(0x8000, 0xcfff) AM_WRITE(SMH_ROM)
8380
84   AM_RANGE(0xd000, 0xd7ff) AM_WRITE(ltcasino_tile_num_w) AM_BASE(&ltcasino_tile_num_ram)
85   AM_RANGE(0xd800, 0xdfff) AM_WRITE(SMH_RAM)
86   AM_RANGE(0xe000, 0xe7ff) AM_WRITE(ltcasino_tile_atr_w) AM_BASE(&ltcasino_tile_atr_ram)
87   AM_RANGE(0xe800, 0xebff) AM_WRITE(SMH_RAM)
88
89   AM_RANGE(0xec20, 0xec21) AM_DEVWRITE("ay", ay8910_data_address_w)
90
91   AM_RANGE(0xec30, 0xec3f) AM_WRITE(SMH_RAM)
92   AM_RANGE(0xf000, 0xffff) AM_WRITE(SMH_ROM)
93ADDRESS_MAP_END
94
95
9681static INPUT_PORTS_START( ltcasino )
9782   PORT_START("IN0") /* Q in service */
9883   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_CODE(KEYCODE_Z) PORT_NAME("Hold 1")
r4679r4680
648633static MACHINE_DRIVER_START( ltcasino )
649634   /* basic machine hardware */
650635   MDRV_CPU_ADD("maincpu", M6502,2000000)       /* ? MHz */
651   MDRV_CPU_PROGRAM_MAP(readmem,writemem)
636   MDRV_CPU_PROGRAM_MAP(ltcasino_map,0)
652637   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
653638
654639   /* video hardware */
src/mame/drivers/crospang.c
r4679r4680
6363
6464/* main cpu */
6565
66static ADDRESS_MAP_START( crospang_readmem, ADDRESS_SPACE_PROGRAM, 16 )
67   AM_RANGE(0x000000, 0x0fffff) AM_READ(SMH_ROM)
68   AM_RANGE(0x120000, 0x1207ff) AM_READ(SMH_RAM)
69   AM_RANGE(0x122000, 0x1227ff) AM_READ(SMH_RAM)
70   AM_RANGE(0x200000, 0x2005ff) AM_READ(SMH_RAM)
71   AM_RANGE(0x210000, 0x2107ff) AM_READ(SMH_RAM)
72   AM_RANGE(0x280000, 0x280001) AM_READ_PORT("P1_P2")
73   AM_RANGE(0x280002, 0x280003) AM_READ_PORT("COIN")
74   AM_RANGE(0x280004, 0x280005) AM_READ_PORT("DSW")
75   AM_RANGE(0x320000, 0x32ffff) AM_READ(SMH_RAM)
76ADDRESS_MAP_END
77
78static ADDRESS_MAP_START( crospang_writemem, ADDRESS_SPACE_PROGRAM, 16 )
79   AM_RANGE(0x000000, 0x0fffff) AM_WRITENOP // writes to rom quite often
66static ADDRESS_MAP_START( crospang_map, ADDRESS_SPACE_PROGRAM, 16 )
67   AM_RANGE(0x000000, 0x0fffff) AM_READ(SMH_ROM) AM_WRITENOP // writes to rom quite often
8068   AM_RANGE(0x100000, 0x100001) AM_WRITENOP
8169   AM_RANGE(0x100002, 0x100003) AM_WRITE(crospang_fg_scrolly_w)
8270   AM_RANGE(0x100004, 0x100005) AM_WRITE(crospang_bg_scrollx_w)
8371   AM_RANGE(0x100006, 0x100007) AM_WRITE(crospang_bg_scrolly_w)
8472   AM_RANGE(0x100008, 0x100009) AM_WRITE(crospang_fg_scrollx_w)
8573   AM_RANGE(0x10000e, 0x10000f) AM_WRITENOP
86   AM_RANGE(0x120000, 0x1207ff) AM_WRITE(crospang_fg_videoram_w) AM_BASE(&crospang_fg_videoram)
87   AM_RANGE(0x122000, 0x1227ff) AM_WRITE(crospang_bg_videoram_w) AM_BASE(&crospang_bg_videoram)
88   AM_RANGE(0x200000, 0x2005ff) AM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE(&paletteram16)
89   AM_RANGE(0x210000, 0x2107ff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)
74   AM_RANGE(0x120000, 0x1207ff) AM_RAM_WRITE(crospang_fg_videoram_w) AM_BASE(&crospang_fg_videoram)
75   AM_RANGE(0x122000, 0x1227ff) AM_RAM_WRITE(crospang_bg_videoram_w) AM_BASE(&crospang_bg_videoram)
76   AM_RANGE(0x200000, 0x2005ff) AM_RAM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE(&paletteram16)
77   AM_RANGE(0x210000, 0x2107ff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)
9078   AM_RANGE(0x270000, 0x270001) AM_WRITE(crospang_soundlatch_w)
91   AM_RANGE(0x320000, 0x32ffff) AM_WRITE(SMH_RAM)
92ADDRESS_MAP_END
93
94static ADDRESS_MAP_START( bestri_readmem, ADDRESS_SPACE_PROGRAM, 16 )
95   AM_RANGE(0x000000, 0x0fffff) AM_READ(SMH_ROM)
96   AM_RANGE(0x120000, 0x1207ff) AM_READ(SMH_RAM)
97   AM_RANGE(0x122000, 0x1227ff) AM_READ(SMH_RAM)
98   AM_RANGE(0x200000, 0x2005ff) AM_READ(SMH_RAM)
99   AM_RANGE(0x210000, 0x2107ff) AM_READ(SMH_RAM)
10079   AM_RANGE(0x280000, 0x280001) AM_READ_PORT("P1_P2")
10180   AM_RANGE(0x280002, 0x280003) AM_READ_PORT("COIN")
10281   AM_RANGE(0x280004, 0x280005) AM_READ_PORT("DSW")
103   AM_RANGE(0x3a0000, 0x3affff) AM_READ(SMH_RAM)
82   AM_RANGE(0x320000, 0x32ffff) AM_RAM
10483ADDRESS_MAP_END
10584
106static ADDRESS_MAP_START( bestri_writemem, ADDRESS_SPACE_PROGRAM, 16 )
107   AM_RANGE(0x000000, 0x0fffff) AM_WRITENOP // writes to rom quite often
85static ADDRESS_MAP_START( bestri_map, ADDRESS_SPACE_PROGRAM, 16 )
86   AM_RANGE(0x000000, 0x0fffff) AM_READ(SMH_ROM) AM_WRITENOP // writes to rom quite often
10887
10988   AM_RANGE(0x100004, 0x100005) AM_WRITE(bestri_fg_scrollx_w)
11089   AM_RANGE(0x100006, 0x100007) AM_WRITE(bestri_fg_scrolly_w)
r4679r4680
11291   AM_RANGE(0x10000c, 0x10000d) AM_WRITE(bestri_bg_scrollx_w)
11392   AM_RANGE(0x10000e, 0x10000f) AM_WRITE(bestri_tilebank_w)
11493
115   AM_RANGE(0x120000, 0x1207ff) AM_WRITE(crospang_fg_videoram_w) AM_BASE(&crospang_fg_videoram)
116   AM_RANGE(0x122000, 0x1227ff) AM_WRITE(crospang_bg_videoram_w) AM_BASE(&crospang_bg_videoram)
117   AM_RANGE(0x200000, 0x2005ff) AM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE(&paletteram16)
118   AM_RANGE(0x210000, 0x2107ff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)
94   AM_RANGE(0x120000, 0x1207ff) AM_RAM_WRITE(crospang_fg_videoram_w) AM_BASE(&crospang_fg_videoram)
95   AM_RANGE(0x122000, 0x1227ff) AM_RAM_WRITE(crospang_bg_videoram_w) AM_BASE(&crospang_bg_videoram)
96   AM_RANGE(0x200000, 0x2005ff) AM_RAM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE(&paletteram16)
97   AM_RANGE(0x210000, 0x2107ff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)
11998   AM_RANGE(0x270000, 0x270001) AM_WRITE(crospang_soundlatch_w)
12099   AM_RANGE(0x270004, 0x270005) AM_WRITENOP
100   AM_RANGE(0x280000, 0x280001) AM_READ_PORT("P1_P2")
101   AM_RANGE(0x280002, 0x280003) AM_READ_PORT("COIN")
102   AM_RANGE(0x280004, 0x280005) AM_READ_PORT("DSW")
121103
122
123
124   AM_RANGE(0x3a0000, 0x3affff) AM_WRITE(SMH_RAM)
104   AM_RANGE(0x3a0000, 0x3affff) AM_RAM
125105ADDRESS_MAP_END
126106
127107/* sound cpu */
128108
129static ADDRESS_MAP_START( crospang_sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
130   AM_RANGE(0x0000, 0xbfff) AM_READ(SMH_ROM)
131   AM_RANGE(0xc000, 0xc7ff) AM_READ(SMH_RAM)
109static ADDRESS_MAP_START( crospang_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
110   AM_RANGE(0x0000, 0xbfff) AM_ROM
111   AM_RANGE(0xc000, 0xc7ff) AM_RAM
132112ADDRESS_MAP_END
133113
134static ADDRESS_MAP_START( crospang_sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
135   AM_RANGE(0x0000, 0xbfff) AM_WRITE(SMH_ROM)
136   AM_RANGE(0xc000, 0xc7ff) AM_WRITE(SMH_RAM)
137ADDRESS_MAP_END
138
139114static ADDRESS_MAP_START( crospang_sound_io_map, ADDRESS_SPACE_IO, 8 )
140115   ADDRESS_MAP_GLOBAL_MASK(0xff)
141116   AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ym", ym3812_r, ym3812_w)
r4679r4680
317292
318293static void irqhandler(const device_config *device, int linestate)
319294{
320   cpu_set_input_line(device->machine->cpu[1],0,linestate);
295   cputag_set_input_line(device->machine, "audiocpu", 0, linestate);
321296}
322297
323298static const ym3812_interface ym3812_config =
r4679r4680
329304
330305   /* basic machine hardware */
331306   MDRV_CPU_ADD("maincpu", M68000, 14318180/2)
332   MDRV_CPU_PROGRAM_MAP(crospang_readmem,crospang_writemem)
307   MDRV_CPU_PROGRAM_MAP(crospang_map,0)
333308   MDRV_CPU_VBLANK_INT("screen", irq6_line_hold)
334309
335310   MDRV_CPU_ADD("audiocpu", Z80, 14318180/4)
336   MDRV_CPU_PROGRAM_MAP(crospang_sound_readmem,crospang_sound_writemem)
311   MDRV_CPU_PROGRAM_MAP(crospang_sound_map,0)
337312   MDRV_CPU_IO_MAP(crospang_sound_io_map,0)
338313
339314   /* video hardware */
r4679r4680
366341
367342   /* basic machine hardware */
368343   MDRV_CPU_ADD("maincpu", M68000, 14318180/2)
369   MDRV_CPU_PROGRAM_MAP(bestri_readmem,bestri_writemem)
344   MDRV_CPU_PROGRAM_MAP(bestri_map,0)
370345   MDRV_CPU_VBLANK_INT("screen", irq6_line_hold)
371346
372347   MDRV_CPU_ADD("audiocpu", Z80, 14318180/4)
373   MDRV_CPU_PROGRAM_MAP(crospang_sound_readmem,crospang_sound_writemem)
348   MDRV_CPU_PROGRAM_MAP(crospang_sound_map,0)
374349   MDRV_CPU_IO_MAP(crospang_sound_io_map,0)
375350
376351   /* video hardware */
src/mame/drivers/royalmah.c
r4679r4680
422422static ADDRESS_MAP_START( royalmah_map, ADDRESS_SPACE_PROGRAM, 8 )
423423   AM_RANGE( 0x0000, 0x6fff ) AM_READWRITE( SMH_ROM, royalmah_rom_w )
424424   AM_RANGE( 0x7000, 0x7fff ) AM_RAM AM_BASE(&generic_nvram) AM_SIZE(&generic_nvram_size)
425   AM_RANGE( 0x8000, 0xffff ) AM_READ( SMH_BANK1 )   // banked ROMs not present in royalmah
425   AM_RANGE( 0x8000, 0xffff ) AM_READ( SMH_BANK(1) )   // banked ROMs not present in royalmah
426426   AM_RANGE( 0x8000, 0xffff ) AM_WRITE( SMH_RAM ) AM_BASE(&videoram)
427427ADDRESS_MAP_END
428428
r4679r4680
432432   AM_RANGE( 0x7000, 0x77ff ) AM_RAM AM_BASE(&generic_nvram) AM_SIZE(&generic_nvram_size)
433433   AM_RANGE( 0x7800, 0x7fff ) AM_RAM
434434   AM_RANGE( 0x8000, 0x8000 ) AM_READ( mjapinky_dsw_r )
435   AM_RANGE( 0x8000, 0xffff ) AM_READ( SMH_BANK1 )
435   AM_RANGE( 0x8000, 0xffff ) AM_READ( SMH_BANK(1) )
436436   AM_RANGE( 0x8000, 0xffff ) AM_WRITE( SMH_RAM ) AM_BASE(&videoram)
437437ADDRESS_MAP_END
438438
r4679r4680
666666
667667static WRITE8_HANDLER( jansou_sound_w )
668668{
669   soundlatch_w(space,0,data);
670   cpu_set_input_line(space->machine->cpu[1], INPUT_LINE_NMI, PULSE_LINE);
669   soundlatch_w(space, 0, data);
670   cputag_set_input_line(space->machine, "audiocpu", INPUT_LINE_NMI, PULSE_LINE);
671671}
672672
673673
r4679r4680
709709   AM_RANGE( 0x0000, 0x5fff) AM_ROM
710710   AM_RANGE( 0x6000, 0x6fff ) AM_RAMBANK(3)   // nvram
711711   AM_RANGE( 0x7000, 0x7fff ) AM_RAMBANK(2)   // banked nvram
712   AM_RANGE( 0x8000, 0xffff ) AM_READ(SMH_BANK1)
712   AM_RANGE( 0x8000, 0xffff ) AM_READ(SMH_BANK(1))
713713   AM_RANGE( 0x8000, 0xffff ) AM_WRITE(SMH_RAM) AM_BASE(&videoram)
714714ADDRESS_MAP_END
715715
r4679r4680
981981   AM_RANGE( 0x6ff1, 0x6ff1 ) AM_WRITE( mjderngr_palbank_w )
982982   AM_RANGE( 0x6ff3, 0x6ff3 ) AM_WRITE( mjtensin_6ff3_w )
983983   AM_RANGE( 0x7000, 0x7fff ) AM_RAM AM_BASE(&generic_nvram) AM_SIZE(&generic_nvram_size)
984   AM_RANGE( 0x8000, 0xffff ) AM_READ( SMH_BANK1 )
984   AM_RANGE( 0x8000, 0xffff ) AM_READ( SMH_BANK(1) )
985985   AM_RANGE( 0x8000, 0xffff ) AM_WRITE( SMH_RAM ) AM_BASE(&videoram)
986986ADDRESS_MAP_END
987987
r4679r4680
10511051   AM_RANGE( 0x7fe3, 0x7fe3 ) AM_WRITE( cafetime_7fe3_w )
10521052   AM_RANGE( 0x7fe4, 0x7fe4 ) AM_READ( cafetime_7fe4_r )
10531053   AM_RANGE( 0x7ff0, 0x7fff ) AM_DEVREADWRITE("rtc", msm6242_r, msm6242_w)
1054   AM_RANGE( 0x8000, 0xffff ) AM_READ( SMH_BANK1 )
1054   AM_RANGE( 0x8000, 0xffff ) AM_READ( SMH_BANK(1) )
10551055   AM_RANGE( 0x8000, 0xffff ) AM_WRITE( SMH_RAM ) AM_BASE(&videoram)
10561056ADDRESS_MAP_END
10571057
r4679r4680
46024602static DRIVER_INIT( janptr96 )
46034603{
46044604   generic_nvram_size = 0x1000 * 9;
4605   generic_nvram = auto_malloc( generic_nvram_size );
4605   generic_nvram = auto_alloc_array(machine, UINT8, generic_nvram_size );
46064606
46074607   memory_set_bankptr(machine, 3,generic_nvram);
46084608}
src/mame/drivers/coolridr.c
r4679r4680
239239static MACHINE_RESET ( coolridr )
240240{
241241
242//  cpu_set_input_line(machine->cpu[0], INPUT_LINE_HALT, ASSERT_LINE);
243   cpu_set_input_line(machine->cpu[1], INPUT_LINE_HALT, ASSERT_LINE);
242//  cputag_set_input_line(machine, "maincpu", INPUT_LINE_HALT, ASSERT_LINE);
243   cputag_set_input_line(machine, "soundcpu", INPUT_LINE_HALT, ASSERT_LINE);
244244
245245}
246246
r4679r4680
322322
323323static DRIVER_INIT( coolridr )
324324{
325   memory_install_read32_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x60d88a4, 0x060d88a7, 0, 0, coolridr_hack_r );
325   memory_install_read32_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x60d88a4, 0x060d88a7, 0, 0, coolridr_hack_r );
326326}
327327
328328GAME( 1995, coolridr,    0, coolridr,    0,    coolridr, ROT0,  "Sega", "Cool Riders",GAME_NOT_WORKING|GAME_NO_SOUND )
src/mame/drivers/darkmist.c
r4679r4680
6060
6161static ADDRESS_MAP_START( memmap, ADDRESS_SPACE_PROGRAM, 8 )
6262   AM_RANGE(0x0000, 0x7fff) AM_ROM
63   AM_RANGE(0x8000, 0xbfff) AM_READ(SMH_BANK1)
63   AM_RANGE(0x8000, 0xbfff) AM_READ(SMH_BANK(1))
6464   AM_RANGE(0xc801, 0xc801) AM_READ_PORT("P1")
6565   AM_RANGE(0xc802, 0xc802) AM_READ_PORT("P2")
6666   AM_RANGE(0xc803, 0xc803) AM_READ_PORT("START")
r4679r4680
336336
337337static void decrypt_gfx(running_machine *machine)
338338{
339   UINT8 *buf = malloc_or_die(0x40000);
339   UINT8 *buf = alloc_array_or_die(UINT8, 0x40000);
340340   UINT8 *rom;
341341   int size;
342342   int i;
r4679r4680
426426   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
427427   int i, len;
428428   UINT8 *ROM = memory_region(machine, "maincpu");
429   UINT8 *buffer = malloc_or_die(0x10000);
430   UINT8 *decrypt = auto_malloc(0x8000);
429   UINT8 *buffer = alloc_array_or_die(UINT8, 0x10000);
430   UINT8 *decrypt = auto_alloc_array(machine, UINT8, 0x8000);
431431
432432   decrypt_gfx(machine);
433433
src/mame/drivers/mquake.c
r4679r4680
3838   /* swap the write handlers between ROM and bank 1 based on the bit */
3939   if ((data & 1) == 0)
4040      /* overlay disabled, map RAM on 0x000000 */
41      memory_install_write16_handler(cpu_get_address_space(device->machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x000000, 0x07ffff, 0, 0, SMH_BANK1);
41      memory_install_write16_handler(cputag_get_address_space(device->machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x000000, 0x07ffff, 0, 0, (write16_space_func)SMH_BANK(1));
4242
4343   else
4444      /* overlay enabled, map Amiga system ROM on 0x000000 */
45      memory_install_write16_handler(cpu_get_address_space(device->machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x000000, 0x07ffff, 0, 0, SMH_UNMAP);
45      memory_install_write16_handler(cputag_get_address_space(device->machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x000000, 0x07ffff, 0, 0, (write16_space_func)SMH_UNMAP);
4646}
4747
4848
src/mame/drivers/funybubl.c
r4679r4680
6363
6464static WRITE8_HANDLER ( funybubl_vidram_bank_w )
6565{
66   if ((data&1) == 0)
67      memory_set_bankptr(space->machine, 1,&funybubl_banked_videoram[0x000000]);
66   if ((data & 1) == 0)
67      memory_set_bankptr(space->machine, 1, &funybubl_banked_videoram[0x000000]);
6868   else
69      memory_set_bankptr(space->machine, 1,&funybubl_banked_videoram[0x001000]);
69      memory_set_bankptr(space->machine, 1 ,&funybubl_banked_videoram[0x001000]);
7070}
7171
7272static WRITE8_HANDLER ( funybubl_cpurombank_w )
7373{
7474   UINT8 *rom = memory_region(space->machine, "maincpu");
7575
76      memory_set_bankptr(space->machine, 2,&rom[0x10000+0x4000*(data&0x3f)]);
76      memory_set_bankptr(space->machine, 2, &rom[0x10000 + 0x4000 * (data & 0x3f)]);
7777}
7878
7979
8080
8181static WRITE8_HANDLER( funybubl_soundcommand_w )
8282{
83   soundlatch_w(space,0,data);
84   cpu_set_input_line(space->machine->cpu[1],0, HOLD_LINE);
83   soundlatch_w(space, 0, data);
84   cputag_set_input_line(space->machine, "audiocpu", 0, HOLD_LINE);
8585}
8686
8787static WRITE8_DEVICE_HANDLER( funybubl_oki_bank_sw )
r4679r4680
9090}
9191
9292
93static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 )
94   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
95   AM_RANGE(0x8000, 0xbfff) AM_READ(SMH_BANK2)   // banked port 1?
96   AM_RANGE(0xc400, 0xc7ff) AM_READ(SMH_RAM)
97   AM_RANGE(0xc800, 0xcfff) AM_READ(SMH_RAM)
98   AM_RANGE(0xd000, 0xdfff) AM_READ(SMH_BANK1)   // banked port 0?
99   AM_RANGE(0xe000, 0xffff) AM_READ(SMH_RAM)
93static ADDRESS_MAP_START( funybubl_map, ADDRESS_SPACE_PROGRAM, 8 )
94   AM_RANGE(0x0000, 0x7fff) AM_ROM
95   AM_RANGE(0x8000, 0xbfff) AM_ROMBANK(2) // banked port 1?
96   AM_RANGE(0xc400, 0xcfff) AM_RAM_WRITE(funybubl_paldatawrite) AM_BASE(&funybubl_paletteram) // palette
97   AM_RANGE(0xd000, 0xdfff) AM_RAMBANK(1) // banked port 0?
98   AM_RANGE(0xe000, 0xffff) AM_RAM
10099ADDRESS_MAP_END
101100
102static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 )
103   AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM)
104   AM_RANGE(0x8000, 0xbfff) AM_WRITE(SMH_ROM)
105   AM_RANGE(0xc400, 0xcfff) AM_WRITE(funybubl_paldatawrite) AM_BASE(&funybubl_paletteram) // palette
106   AM_RANGE(0xd000, 0xdfff) AM_WRITE(SMH_BANK1)   // banked port 0?
107   AM_RANGE(0xe000, 0xffff) AM_WRITE(SMH_RAM)
108ADDRESS_MAP_END
109
110101static ADDRESS_MAP_START( io_map, ADDRESS_SPACE_IO, 8 )
111102   ADDRESS_MAP_GLOBAL_MASK(0xff)
112103   AM_RANGE(0x00, 0x00) AM_READ_PORT("SYSTEM") AM_WRITE(funybubl_vidram_bank_w)   // vidram bank
r4679r4680
120111
121112/* Sound CPU */
122113
123static ADDRESS_MAP_START( soundreadmem, ADDRESS_SPACE_PROGRAM, 8 )
124   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
125   AM_RANGE(0x8000, 0x87ff) AM_READ(SMH_RAM)
126   AM_RANGE(0x9800, 0x9800) AM_DEVREAD("oki", okim6295_r)
114static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 )
115   AM_RANGE(0x0000, 0x7fff) AM_ROM
116   AM_RANGE(0x8000, 0x87ff) AM_RAM
117   AM_RANGE(0x9000, 0x9000) AM_DEVWRITE("oki", funybubl_oki_bank_sw)
118   AM_RANGE(0x9800, 0x9800) AM_DEVREADWRITE("oki", okim6295_r, okim6295_w)
127119   AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_r)
128120ADDRESS_MAP_END
129121
130static ADDRESS_MAP_START( soundwritemem, ADDRESS_SPACE_PROGRAM, 8 )
131   AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM)
132   AM_RANGE(0x8000, 0x87ff) AM_WRITE(SMH_RAM)
133   AM_RANGE(0x9000, 0x9000) AM_DEVWRITE("oki", funybubl_oki_bank_sw)
134   AM_RANGE(0x9800, 0x9800) AM_DEVWRITE("oki", okim6295_w)
135ADDRESS_MAP_END
136122
137123
138
139124static INPUT_PORTS_START( funybubl )
140125   PORT_START("SYSTEM")   /* System inputs */
141126   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
r4679r4680
228213
229214static DRIVER_INIT( funybubl )
230215{
231   funybubl_banked_videoram = auto_malloc (0x2000);
216   funybubl_banked_videoram = auto_alloc_array(machine, UINT8, 0x2000);
232217
233218   memory_set_bankptr(machine, 1,&funybubl_banked_videoram[0x000000]);
234219}
r4679r4680
238223static MACHINE_DRIVER_START( funybubl )
239224   /* basic machine hardware */
240225   MDRV_CPU_ADD("maincpu", Z80,12000000/2)       /* 6 MHz?? */
241   MDRV_CPU_PROGRAM_MAP(readmem,writemem)
226   MDRV_CPU_PROGRAM_MAP(funybubl_map,0)
242227   MDRV_CPU_IO_MAP(io_map,0)
243228   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
244229
245230   MDRV_CPU_ADD("audiocpu", Z80,8000000/2)       /* 4 MHz?? */
246   MDRV_CPU_PROGRAM_MAP(soundreadmem,soundwritemem)
231   MDRV_CPU_PROGRAM_MAP(sound_map,0)
247232
248233   /* video hardware */
249234   MDRV_SCREEN_ADD("screen", RASTER)
src/mame/drivers/shisen.c
r4679r4680
4848
4949
5050
51static ADDRESS_MAP_START( readmem, ADDRESS_SPACE_PROGRAM, 8 )
52   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
53   AM_RANGE(0x8000, 0xbfff) AM_READ(SMH_BANK1)
54   AM_RANGE(0xc800, 0xcaff) AM_READ(SMH_RAM)
55   AM_RANGE(0xd000, 0xffff) AM_READ(SMH_RAM)
51static ADDRESS_MAP_START( shisen_map, ADDRESS_SPACE_PROGRAM, 8 )
52   AM_RANGE(0x0000, 0x7fff) AM_ROM
53   AM_RANGE(0x8000, 0xbfff) AM_ROMBANK(1)
54   AM_RANGE(0xc800, 0xcaff) AM_RAM_WRITE(sichuan2_paletteram_w) AM_BASE(&paletteram)
55   AM_RANGE(0xd000, 0xdfff) AM_RAM_WRITE(sichuan2_videoram_w) AM_BASE(&videoram)
56   AM_RANGE(0xe000, 0xffff) AM_RAM
5657ADDRESS_MAP_END
5758
58static ADDRESS_MAP_START( writemem, ADDRESS_SPACE_PROGRAM, 8 )
59   AM_RANGE(0x0000, 0xbfff) AM_WRITE(SMH_ROM)
60   AM_RANGE(0xc800, 0xcaff) AM_WRITE(sichuan2_paletteram_w) AM_BASE(&paletteram)
61   AM_RANGE(0xd000, 0xdfff) AM_WRITE(sichuan2_videoram_w) AM_BASE(&videoram)
62   AM_RANGE(0xe000, 0xffff) AM_WRITE(SMH_RAM)
63ADDRESS_MAP_END
64
65static ADDRESS_MAP_START( io_map, ADDRESS_SPACE_IO, 8 )
59static ADDRESS_MAP_START( shisen_io_map, ADDRESS_SPACE_IO, 8 )
6660   ADDRESS_MAP_GLOBAL_MASK(0xff)
6761   AM_RANGE(0x00, 0x00) AM_READWRITE(sichuan2_dsw1_r, sichuan2_coin_w)
6862   AM_RANGE(0x01, 0x01) AM_READ_PORT("DSW2") AM_WRITE(m72_sound_command_byte_w)
r4679r4680
7165   AM_RANGE(0x04, 0x04) AM_READ_PORT("COIN")
7266ADDRESS_MAP_END
7367
74static ADDRESS_MAP_START( sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
75   AM_RANGE(0x0000, 0x3fff) AM_READ(SMH_ROM)
76   AM_RANGE(0xfd00, 0xffff) AM_READ(SMH_RAM)
68static ADDRESS_MAP_START( shisen_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
69   AM_RANGE(0x0000, 0x3fff) AM_ROM
70   AM_RANGE(0xfd00, 0xffff) AM_RAM
7771ADDRESS_MAP_END
7872
79static ADDRESS_MAP_START( sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
80   AM_RANGE(0x0000, 0x3fff) AM_WRITE(SMH_ROM)
81   AM_RANGE(0xfd00, 0xffff) AM_WRITE(SMH_RAM)
82ADDRESS_MAP_END
83
84static ADDRESS_MAP_START( sound_io_map, ADDRESS_SPACE_IO, 8 )
73static ADDRESS_MAP_START( shisen_sound_io_map, ADDRESS_SPACE_IO, 8 )
8574   ADDRESS_MAP_GLOBAL_MASK(0xff)
8675   AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ym", ym2151_r, ym2151_w)
8776   AM_RANGE(0x80, 0x80) AM_READ(soundlatch_r)
r4679r4680
230219
231220   /* basic machine hardware */
232221   MDRV_CPU_ADD("maincpu", Z80, 6000000)   /* 6 MHz ? */
233   MDRV_CPU_PROGRAM_MAP(readmem,writemem)
234   MDRV_CPU_IO_MAP(io_map,0)
222   MDRV_CPU_PROGRAM_MAP(shisen_map,0)
223   MDRV_CPU_IO_MAP(shisen_io_map,0)
235224   MDRV_CPU_VBLANK_INT("screen", irq0_line_hold)
236225
237226   MDRV_CPU_ADD("soundcpu", Z80, 3579645)
238   MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem)
239   MDRV_CPU_IO_MAP(sound_io_map,0)
227   MDRV_CPU_PROGRAM_MAP(shisen_sound_map,0)
228   MDRV_CPU_IO_MAP(shisen_sound_io_map,0)
240229   MDRV_CPU_VBLANK_INT_HACK(nmi_line_pulse,128)   /* clocked by V1? (Vigilante) */
241230                        /* IRQs are generated by main Z80 and YM2151 */
242231
r4679r4680
261250
262251   MDRV_SOUND_ADD("ym", YM2151, 3579545)
263252   MDRV_SOUND_CONFIG(ym2151_config)
264   MDRV_SOUND_ROUTE(0, "lspeaker", 1.0)
265   MDRV_SOUND_ROUTE(1, "rspeaker", 1.0)
253   MDRV_SOUND_ROUTE(0, "lspeaker", 0.5)
254   MDRV_SOUND_ROUTE(1, "rspeaker", 0.5)
266255
267256   MDRV_SOUND_ADD("dac", DAC, 0)
268   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.50)
269   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.50)
257   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.25)
258   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.25)
270259MACHINE_DRIVER_END
271260
272261
src/mame/drivers/tutankhm.c
r4679r4680
4949{
5050   irq_enable = data & 1;
5151   if (!irq_enable)
52      cpu_set_input_line(space->machine->cpu[0], 0, CLEAR_LINE);
52      cputag_set_input_line(space->machine, "maincpu", 0, CLEAR_LINE);
5353}
5454
5555
src/mame/drivers/nmk16.c
r4679r4680
320320
321321/***************************************************************************/
322322
323static ADDRESS_MAP_START( vandyke_readmem, ADDRESS_SPACE_PROGRAM, 16 )
324   AM_RANGE(0x000000, 0x03ffff) AM_READ(SMH_ROM)
323static ADDRESS_MAP_START( vandyke_map, ADDRESS_SPACE_PROGRAM, 16 )
324   AM_RANGE(0x000000, 0x03ffff) AM_ROM
325325   AM_RANGE(0x080000, 0x080001) AM_READ_PORT("IN0")
326326   AM_RANGE(0x080002, 0x080003) AM_READ_PORT("IN1")
327327   AM_RANGE(0x080008, 0x080009) AM_READ_PORT("DSW1")
328328   AM_RANGE(0x08000a, 0x08000b) AM_READ_PORT("DSW2")
329329   AM_RANGE(0x08000e, 0x08000f) AM_READ(NMK004_r)
330   AM_RANGE(0x088000, 0x0887ff) AM_READ(SMH_RAM)
331   AM_RANGE(0x090000, 0x093fff) AM_READ(nmk_bgvideoram_r)
332   AM_RANGE(0x09d000, 0x09d7ff) AM_READ(nmk_txvideoram_r)
333   AM_RANGE(0x0f0000, 0x0fffff) AM_RAM AM_BASE(&nmk16_mainram)
334ADDRESS_MAP_END
335
336static ADDRESS_MAP_START( vandyke_writemem, ADDRESS_SPACE_PROGRAM, 16 )
337   AM_RANGE(0x000000, 0x03ffff) AM_WRITE(SMH_ROM)
338330   AM_RANGE(0x080016, 0x080017) AM_WRITENOP   /* IRQ enable? */
339331   AM_RANGE(0x080018, 0x080019) AM_WRITE(nmk_tilebank_w)
340332   AM_RANGE(0x08001e, 0x08001f) AM_WRITE(NMK004_w)
341   AM_RANGE(0x088000, 0x0887ff) AM_WRITE(paletteram16_RRRRGGGGBBBBRGBx_word_w) AM_BASE(&paletteram16)
333   AM_RANGE(0x088000, 0x0887ff) AM_RAM_WRITE(paletteram16_RRRRGGGGBBBBRGBx_word_w) AM_BASE(&paletteram16)
342334   AM_RANGE(0x08c000, 0x08c007) AM_WRITE(vandyke_scroll_w)
343   AM_RANGE(0x090000, 0x093fff) AM_WRITE(nmk_bgvideoram_w) AM_BASE(&nmk_bgvideoram)
344   AM_RANGE(0x094000, 0x097fff) AM_WRITE(SMH_RAM) /* what is this */
345   AM_RANGE(0x09d000, 0x09d7ff) AM_WRITE(nmk_txvideoram_w) AM_BASE(&nmk_txvideoram)
335   AM_RANGE(0x090000, 0x093fff) AM_RAM_WRITE(nmk_bgvideoram_w) AM_BASE(&nmk_bgvideoram)
336   AM_RANGE(0x094000, 0x097fff) AM_RAM /* what is this? */
337   AM_RANGE(0x09d000, 0x09d7ff) AM_RAM_WRITE(nmk_txvideoram_w) AM_BASE(&nmk_txvideoram)
338   AM_RANGE(0x0f0000, 0x0fffff) AM_RAM AM_BASE(&nmk16_mainram)
346339ADDRESS_MAP_END
347340
348
349static ADDRESS_MAP_START( manybloc_readmem, ADDRESS_SPACE_PROGRAM, 16 )
350   AM_RANGE(0x000000, 0x03ffff) AM_READ(SMH_ROM)
341static ADDRESS_MAP_START( manybloc_map, ADDRESS_SPACE_PROGRAM, 16 )
342   AM_RANGE(0x000000, 0x03ffff) AM_ROM
351343   AM_RANGE(0x080000, 0x080001) AM_READ_PORT("IN0")
352344   AM_RANGE(0x080002, 0x080003) AM_READ_PORT("IN1")
353345   AM_RANGE(0x080004, 0x080005) AM_READ_PORT("DSW1")
354   AM_RANGE(0x08001e, 0x08001f) AM_READ(soundlatch2_word_r)
355   AM_RANGE(0x088000, 0x0883ff) AM_READ(SMH_RAM)
356   AM_RANGE(0x090000, 0x093fff) AM_READ(nmk_bgvideoram_r)
357   AM_RANGE(0x09c000, 0x09cfff) AM_READ(SMH_RAM)
358   AM_RANGE(0x09d000, 0x09d7ff) AM_READ(nmk_txvideoram_r)
359   AM_RANGE(0x0f0000, 0x0fffff) AM_RAM AM_BASE(&nmk16_mainram)
360ADDRESS_MAP_END
361
362static ADDRESS_MAP_START( manybloc_writemem, ADDRESS_SPACE_PROGRAM, 16 )
363   AM_RANGE(0x000000, 0x03ffff) AM_WRITE(SMH_ROM)
364346   AM_RANGE(0x080010, 0x080011) AM_WRITENOP         /* See notes at the top of the driver */
365347   AM_RANGE(0x080012, 0x080013) AM_WRITENOP         /* See notes at the top of the driver */
366348   AM_RANGE(0x080014, 0x080015) AM_WRITE(nmk_flipscreen_w)
367349   AM_RANGE(0x08001c, 0x08001d) AM_WRITENOP         /* See notes at the top of the driver */
368   AM_RANGE(0x08001e, 0x08001f) AM_WRITE(soundlatch_word_w)
369   AM_RANGE(0x088000, 0x0883ff) AM_WRITE(paletteram16_RRRRGGGGBBBBRGBx_word_w) AM_BASE(&paletteram16)
370   AM_RANGE(0x090000, 0x093fff) AM_WRITE(nmk_bgvideoram_w) AM_BASE(&nmk_bgvideoram)
371   AM_RANGE(0x09c000, 0x09cfff) AM_WRITE(manybloc_scroll_w) AM_BASE(&gunnail_scrollram)
372   AM_RANGE(0x09d000, 0x09d7ff) AM_WRITE(nmk_txvideoram_w) AM_BASE(&nmk_txvideoram)
350   AM_RANGE(0x08001e, 0x08001f) AM_READWRITE(soundlatch2_word_r,soundlatch_word_w)
351   AM_RANGE(0x088000, 0x0883ff) AM_RAM_WRITE(paletteram16_RRRRGGGGBBBBRGBx_word_w) AM_BASE(&paletteram16)
352   AM_RANGE(0x090000, 0x093fff) AM_RAM_WRITE(nmk_bgvideoram_w) AM_BASE(&nmk_bgvideoram)
353   AM_RANGE(0x09c000, 0x09cfff) AM_RAM_WRITE(manybloc_scroll_w) AM_BASE(&gunnail_scrollram)
354   AM_RANGE(0x09d000, 0x09d7ff) AM_RAM_WRITE(nmk_txvideoram_w) AM_BASE(&nmk_txvideoram)
355   AM_RANGE(0x0f0000, 0x0fffff) AM_RAM AM_BASE(&nmk16_mainram)
373356ADDRESS_MAP_END
374357
375static ADDRESS_MAP_START( tharrier_sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
376   AM_RANGE(0x0000, 0xbfff) AM_READ(SMH_ROM)
377   AM_RANGE(0xc000, 0xc7ff) AM_READ(SMH_RAM)
378   AM_RANGE(0xf000, 0xf000) AM_READ(soundlatch_r)
379   AM_RANGE(0xf400, 0xf400) AM_DEVREAD("oki1", okim6295_r)
380   AM_RANGE(0xf500, 0xf500) AM_DEVREAD("oki2", okim6295_r)
381ADDRESS_MAP_END
382
383static ADDRESS_MAP_START( tharrier_sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
384   AM_RANGE(0x0000, 0xbfff) AM_WRITE(SMH_ROM)
385   AM_RANGE(0xc000, 0xc7ff) AM_WRITE(SMH_RAM)
386   AM_RANGE(0xf000, 0xf000) AM_WRITE(soundlatch2_w)
387   AM_RANGE(0xf400, 0xf400) AM_DEVWRITE("oki1", okim6295_w)
388   AM_RANGE(0xf500, 0xf500) AM_DEVWRITE("oki2", okim6295_w)
389   AM_RANGE(0xf600, 0xf600) AM_WRITE(tharrier_oki6295_bankswitch_0_w)
390   AM_RANGE(0xf700, 0xf700) AM_WRITE(tharrier_oki6295_bankswitch_1_w)
391ADDRESS_MAP_END
392
393static ADDRESS_MAP_START( tharrier_sound_io_map, ADDRESS_SPACE_IO, 8 )
394   ADDRESS_MAP_GLOBAL_MASK(0xff)
395   AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ym", ym2203_r, ym2203_w)
396ADDRESS_MAP_END
397
398static ADDRESS_MAP_START( tharrier_readmem, ADDRESS_SPACE_PROGRAM, 16 )
399   AM_RANGE(0x000000, 0x03ffff) AM_READ(SMH_ROM)
358static ADDRESS_MAP_START( tharrier_map, ADDRESS_SPACE_PROGRAM, 16 )
359   AM_RANGE(0x000000, 0x03ffff) AM_ROM
400360   AM_RANGE(0x080000, 0x080001) AM_READ_PORT("IN0")
401361   AM_RANGE(0x080002, 0x080003) AM_READ(tharrier_mcu_r) // AM_READ_PORT("IN1")
402362   AM_RANGE(0x080004, 0x080005) AM_READ_PORT("DSW1")
403363   AM_RANGE(0x08000e, 0x08000f) AM_READ(soundlatch2_word_r)   /* from Z80 */
404   AM_RANGE(0x080202, 0x080203) AM_READ_PORT("IN2")
405
406   AM_RANGE(0x088000, 0x0883ff) AM_READ(SMH_RAM)
407   AM_RANGE(0x090000, 0x093fff) AM_READ(nmk_bgvideoram_r)
408   AM_RANGE(0x09d000, 0x09d7ff) AM_READ(nmk_txvideoram_r)
409   AM_RANGE(0x0f0000, 0x0fffff) AM_RAM_WRITE(nmk16_mainram_strange_w) AM_BASE(&nmk16_mainram)
410ADDRESS_MAP_END
411
412static ADDRESS_MAP_START( tharrier_writemem, ADDRESS_SPACE_PROGRAM, 16 )
413   AM_RANGE(0x000000, 0x03ffff) AM_WRITE(SMH_ROM)
414364   AM_RANGE(0x080010, 0x080011) AM_WRITE(tharrier_mcu_control_w)
415365   AM_RANGE(0x080012, 0x080013) AM_WRITENOP
416366//  AM_RANGE(0x080014, 0x080015) AM_WRITE(nmk_flipscreen_w)
417367//  AM_RANGE(0x080018, 0x080019) AM_WRITE(nmk_tilebank_w)
418368   AM_RANGE(0x08001e, 0x08001f) AM_WRITE(soundlatch_word_w)
419   AM_RANGE(0x088000, 0x0883ff) AM_WRITE(paletteram16_RRRRGGGGBBBBRGBx_word_w) AM_BASE(&paletteram16)
369   AM_RANGE(0x080202, 0x080203) AM_READ_PORT("IN2")
370   AM_RANGE(0x088000, 0x0883ff) AM_RAM_WRITE(paletteram16_RRRRGGGGBBBBRGBx_word_w) AM_BASE(&paletteram16)
420371//  AM_RANGE(0x08c000, 0x08c007) AM_WRITE(nmk_scroll_w)
421   AM_RANGE(0x090000, 0x093fff) AM_WRITE(nmk_bgvideoram_w) AM_BASE(&nmk_bgvideoram)
422   AM_RANGE(0x09c000, 0x09c7ff) AM_WRITENOP /* Unused txvideoram area? */
423   AM_RANGE(0x09d000, 0x09d7ff) AM_WRITE(nmk_txvideoram_w) AM_BASE(&nmk_txvideoram)
372   AM_RANGE(0x090000, 0x093fff) AM_RAM_WRITE(nmk_bgvideoram_w) AM_BASE(&nmk_bgvideoram)
373   AM_RANGE(0x09c000, 0x09c7ff) AM_RAM /* Unused txvideoram area? */
374   AM_RANGE(0x09d000, 0x09d7ff) AM_RAM_WRITE(nmk_txvideoram_w) AM_BASE(&nmk_txvideoram)
375   AM_RANGE(0x0f0000, 0x0fffff) AM_RAM_WRITE(nmk16_mainram_strange_w) AM_BASE(&nmk16_mainram)
424376ADDRESS_MAP_END
425377
378static ADDRESS_MAP_START( tharrier_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
379   AM_RANGE(0x0000, 0xbfff) AM_ROM
380   AM_RANGE(0xc000, 0xc7ff) AM_RAM
381   AM_RANGE(0xf000, 0xf000) AM_READWRITE(soundlatch_r,soundlatch2_w)
382   AM_RANGE(0xf400, 0xf400) AM_DEVREADWRITE("oki1", okim6295_r,okim6295_w)
383   AM_RANGE(0xf500, 0xf500) AM_DEVREADWRITE("oki2", okim6295_r,okim6295_w)
384   AM_RANGE(0xf600, 0xf600) AM_WRITE(tharrier_oki6295_bankswitch_0_w)
385   AM_RANGE(0xf700, 0xf700) AM_WRITE(tharrier_oki6295_bankswitch_1_w)
386ADDRESS_MAP_END
387
388static ADDRESS_MAP_START( tharrier_sound_io_map, ADDRESS_SPACE_IO, 8 )
389   ADDRESS_MAP_GLOBAL_MASK(0xff)
390   AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ym", ym2203_r, ym2203_w)
391ADDRESS_MAP_END
392
426393//Read input port 1 030c8/  BAD
427394//3478  GOOD
428395
r4679r4680
479446ADDRESS_MAP_END
480447
481448
482static ADDRESS_MAP_START( acrobatm_readmem, ADDRESS_SPACE_PROGRAM, 16 )
483   AM_RANGE(0x00000, 0x3ffff) AM_READ(SMH_ROM)
484
449static ADDRESS_MAP_START( acrobatm_map, ADDRESS_SPACE_PROGRAM, 16 )
450   AM_RANGE(0x00000, 0x3ffff) AM_ROM
485451   AM_RANGE(0x80000, 0x8ffff) AM_RAM AM_BASE(&nmk16_mainram)
486
487452   AM_RANGE(0xc0000, 0xc0001) AM_READ_PORT("IN0")
488453   AM_RANGE(0xc0002, 0xc0003) AM_READ_PORT("IN1")
489454   AM_RANGE(0xc0008, 0xc0009) AM_READ_PORT("DSW1")
490455   AM_RANGE(0xc000a, 0xc000b) AM_READ_PORT("DSW2")
491456   AM_RANGE(0xc000e, 0xc000f) AM_READ(NMK004_r)
492   AM_RANGE(0xc4000, 0xc45ff) AM_READ(SMH_RAM)
493   AM_RANGE(0xcc000, 0xcffff) AM_READ(nmk_bgvideoram_r)
494   AM_RANGE(0xd4000, 0xd47ff) AM_READ(nmk_txvideoram_r)
495ADDRESS_MAP_END
496
497static ADDRESS_MAP_START( acrobatm_writemem, ADDRESS_SPACE_PROGRAM, 16 )
498   AM_RANGE(0x00000, 0x3ffff) AM_WRITE(SMH_ROM)
499457   AM_RANGE(0xc0014, 0xc0015) AM_WRITE(nmk_flipscreen_w)
500458   AM_RANGE(0xc0016, 0xc0017) AM_WRITENOP
501459   AM_RANGE(0xc0018, 0xc0019) AM_WRITE(nmk_tilebank_w)
502460   AM_RANGE(0xc001e, 0xc001f) AM_WRITE(NMK004_w)
503   AM_RANGE(0xc4000, 0xc45ff) AM_WRITE(paletteram16_RRRRGGGGBBBBxxxx_word_w) AM_BASE(&paletteram16)
504   AM_RANGE(0xc8000, 0xc8007) AM_WRITE(nmk_scroll_w)
505   AM_RANGE(0xcc000, 0xcffff) AM_WRITE(nmk_bgvideoram_w) AM_BASE(&nmk_bgvideoram)
506   AM_RANGE(0xd4000, 0xd47ff) AM_WRITE(nmk_txvideoram_w) AM_BASE(&nmk_txvideoram)
461   AM_RANGE(0xc4000, 0xc45ff) AM_RAM_WRITE(paletteram16_RRRRGGGGBBBBxxxx_word_w) AM_BASE(&paletteram16)
462   AM_RANGE(0xc8000, 0xc8007) AM_RAM_WRITE(nmk_scroll_w)
463   AM_RANGE(0xcc000, 0xcffff) AM_RAM_WRITE(nmk_bgvideoram_w) AM_BASE(&nmk_bgvideoram)
464   AM_RANGE(0xd4000, 0xd47ff) AM_RAM_WRITE(nmk_txvideoram_w) AM_BASE(&nmk_txvideoram)
507465ADDRESS_MAP_END
508466
509static ADDRESS_MAP_START( bioship_readmem, ADDRESS_SPACE_PROGRAM, 16 )
510   AM_RANGE(0x000000, 0x03ffff) AM_READ(SMH_ROM)
467static ADDRESS_MAP_START( bioship_map, ADDRESS_SPACE_PROGRAM, 16 )
468   AM_RANGE(0x000000, 0x03ffff) AM_ROM
511469   AM_RANGE(0x080000, 0x080001) AM_READ_PORT("IN0")
512470   AM_RANGE(0x080002, 0x080003) AM_READ_PORT("IN1")
513471   AM_RANGE(0x080008, 0x080009) AM_READ_PORT("DSW1")
514472   AM_RANGE(0x08000a, 0x08000b) AM_READ_PORT("DSW2")
515473   AM_RANGE(0x08000e, 0x08000f) AM_READ(NMK004_r)
516   AM_RANGE(0x088000, 0x0887ff) AM_READ(SMH_RAM)
517   AM_RANGE(0x090000, 0x093fff) AM_READ(nmk_bgvideoram_r)
518   AM_RANGE(0x09c000, 0x09c7ff) AM_READ(nmk_txvideoram_r)
519   AM_RANGE(0x0f0000, 0x0fffff) AM_RAM AM_BASE(&nmk16_mainram)
520ADDRESS_MAP_END
521
522static ADDRESS_MAP_START( bioship_writemem, ADDRESS_SPACE_PROGRAM, 16 )
523   AM_RANGE(0x000000, 0x03ffff) AM_WRITE(SMH_ROM)
524474//  AM_RANGE(0x080014, 0x080015) AM_WRITE(nmk_flipscreen_w)
525475   AM_RANGE(0x08001e, 0x08001f) AM_WRITE(NMK004_w)
526476   AM_RANGE(0x084000, 0x084001) AM_WRITE(bioship_bank_w)
527   AM_RANGE(0x088000, 0x0887ff) AM_WRITE(paletteram16_RRRRGGGGBBBBRGBx_word_w) AM_BASE(&paletteram16)
528   AM_RANGE(0x08c000, 0x08c007) AM_WRITE(bioshipbg_scroll_w)
529   AM_RANGE(0x08c010, 0x08c017) AM_WRITE(bioship_scroll_w)
530   AM_RANGE(0x090000, 0x093fff) AM_WRITE(nmk_bgvideoram_w) AM_BASE(&nmk_bgvideoram)
531   AM_RANGE(0x09c000, 0x09c7ff) AM_WRITE(nmk_txvideoram_w) AM_BASE(&nmk_txvideoram)
477   AM_RANGE(0x088000, 0x0887ff) AM_RAM_WRITE(paletteram16_RRRRGGGGBBBBRGBx_word_w) AM_BASE(&paletteram16)
478   AM_RANGE(0x08c000, 0x08c007) AM_RAM_WRITE(bioshipbg_scroll_w)
479   AM_RANGE(0x08c010, 0x08c017) AM_RAM_WRITE(bioship_scroll_w)
480   AM_RANGE(0x090000, 0x093fff) AM_RAM_WRITE(nmk_bgvideoram_w) AM_BASE(&nmk_bgvideoram)
481   AM_RANGE(0x09c000, 0x09c7ff) AM_RAM_WRITE(nmk_txvideoram_w) AM_BASE(&nmk_txvideoram)
482   AM_RANGE(0x0f0000, 0x0fffff) AM_RAM AM_BASE(&nmk16_mainram)
532483ADDRESS_MAP_END
533484
534485/******************************************************************************************
r4679r4680
920871   mcu_run(timer->machine,0);
921872}
922873
923static ADDRESS_MAP_START( tdragon_readmem, ADDRESS_SPACE_PROGRAM, 16 )
924   AM_RANGE(0x000000, 0x03ffff) AM_READ(SMH_ROM)
874static ADDRESS_MAP_START( tdragon_map, ADDRESS_SPACE_PROGRAM, 16 )
875   AM_RANGE(0x000000, 0x03ffff) AM_ROM
925876   AM_RANGE(0x044022, 0x044023) AM_READNOP  /* No Idea */
926//  AM_RANGE(0x0b0000, 0x0b7fff) AM_READ(SMH_RAM) /* Work RAM */
927//  AM_RANGE(0x0b8000, 0x0b8fff) AM_READ(SMH_RAM) /* Sprite RAM */
928//  AM_RANGE(0x0b9000, 0x0bdfff) AM_READ(SMH_RAM) /* Work RAM */
929//  AM_RANGE(0x0be000, 0x0befff) AM_READ(SMH_RAM) /* Work RAM */
930//  AM_RANGE(0x0bf000, 0x0bffff) AM_READ(SMH_RAM) /* Work RAM */
877//  AM_RANGE(0x0b0000, 0x0b7fff) AM_RAM    /* Work RAM */
878//  AM_RANGE(0x0b8000, 0x0b8fff) AM_RAM AM_BASE(&spriteram16) AM_SIZE(&spriteram_size) /* Sprite RAM */
879//  AM_RANGE(0x0b9000, 0x0bdfff) AM_RAM AM_BASE(&nmk16_mcu_work_ram)   /* Work RAM */
880//  AM_RANGE(0x0be000, 0x0befff) AM_READWRITE(mcu_shared_r,tdragon_mcu_shared_w) AM_BASE(&nmk16_mcu_shared_ram)  /* Work RAM */
881//  AM_RANGE(0x0bf000, 0x0bffff) AM_RAM    /* Work RAM */
931882   AM_RANGE(0x0b0000, 0x0bffff) AM_RAM_WRITE( tdragon_mainram_w ) AM_BASE(&nmk16_mainram)
932
933
934   AM_RANGE(0x0c8000, 0x0c87ff) AM_READ(SMH_RAM)  /* Palette RAM */
935883   AM_RANGE(0x0c0000, 0x0c0001) AM_READ_PORT("IN0")
936884   AM_RANGE(0x0c0002, 0x0c0003) AM_READ_PORT("IN1")
937885   AM_RANGE(0x0c0008, 0x0c0009) AM_READ_PORT("DSW1")
938886   AM_RANGE(0x0c000a, 0x0c000b) AM_READ_PORT("DSW2")
939887   AM_RANGE(0x0c000e, 0x0c000f) AM_READ(NMK004_r)
940   AM_RANGE(0x0cc000, 0x0cffff) AM_READ(nmk_bgvideoram_r)
941   AM_RANGE(0x0d0000, 0x0d07ff) AM_READ(nmk_txvideoram_r)
942ADDRESS_MAP_END
943
944static ADDRESS_MAP_START( tdragon_writemem, ADDRESS_SPACE_PROGRAM, 16 )
945   AM_RANGE(0x000000, 0x03ffff) AM_WRITE(SMH_ROM)
946//  AM_RANGE(0x0b0000, 0x0b7fff) AM_WRITE(SMH_RAM)    /* Work RAM */
947//  AM_RANGE(0x0b8000, 0x0b8fff) AM_WRITE(SMH_RAM) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size) /* Sprite RAM */
948//  AM_RANGE(0x0b9000, 0x0bdfff) AM_WRITE(SMH_RAM) AM_BASE(&nmk16_mcu_work_ram)   /* Work RAM */
949//  AM_RANGE(0x0be000, 0x0befff) AM_READWRITE(mcu_shared_r,tdragon_mcu_shared_w) AM_BASE(&nmk16_mcu_shared_ram)  /* Work RAM */
950//  AM_RANGE(0x0bf000, 0x0bffff) AM_WRITE(SMH_RAM)    /* Work RAM */
951888   AM_RANGE(0x0c0014, 0x0c0015) AM_WRITE(nmk_flipscreen_w) /* Maybe */
952889   AM_RANGE(0x0c0018, 0x0c0019) AM_WRITE(nmk_tilebank_w) /* Tile Bank ? */
953890   AM_RANGE(0x0c001e, 0x0c001f) AM_WRITE(NMK004_w)
954   AM_RANGE(0x0c4000, 0x0c4007) AM_WRITE(nmk_scroll_w)
955   AM_RANGE(0x0c8000, 0x0c87ff) AM_WRITE(paletteram16_RRRRGGGGBBBBRGBx_word_w) AM_BASE(&paletteram16)
956   AM_RANGE(0x0cc000, 0x0cffff) AM_WRITE(nmk_bgvideoram_w) AM_BASE(&nmk_bgvideoram)
957   AM_RANGE(0x0d0000, 0x0d07ff) AM_WRITE(nmk_txvideoram_w) AM_BASE(&nmk_txvideoram)
891   AM_RANGE(0x0c4000, 0x0c4007) AM_RAM_WRITE(nmk_scroll_w)
892   AM_RANGE(0x0c8000, 0x0c87ff) AM_RAM_WRITE(paletteram16_RRRRGGGGBBBBRGBx_word_w) AM_BASE(&paletteram16)
893   AM_RANGE(0x0cc000, 0x0cffff) AM_RAM_WRITE(nmk_bgvideoram_w) AM_BASE(&nmk_bgvideoram)
894   AM_RANGE(0x0d0000, 0x0d07ff) AM_RAM_WRITE(nmk_txvideoram_w) AM_BASE(&nmk_txvideoram)
958895ADDRESS_MAP_END
959896
960static ADDRESS_MAP_START( tdragonb_writemem, ADDRESS_SPACE_PROGRAM, 16 )
961   AM_RANGE(0x000000, 0x03ffff) AM_WRITE(SMH_ROM)
897static ADDRESS_MAP_START( tdragonb_map, ADDRESS_SPACE_PROGRAM, 16 )
898   AM_RANGE(0x000000, 0x03ffff) AM_ROM
899   AM_RANGE(0x044022, 0x044023) AM_READNOP  /* No Idea */
962900   AM_RANGE(0x0b0000, 0x0bffff) AM_RAM AM_BASE(&nmk16_mainram)
901   AM_RANGE(0x0c0000, 0x0c0001) AM_READ_PORT("IN0")
902   AM_RANGE(0x0c0002, 0x0c0003) AM_READ_PORT("IN1")
903   AM_RANGE(0x0c0008, 0x0c0009) AM_READ_PORT("DSW1")
904   AM_RANGE(0x0c000a, 0x0c000b) AM_READ_PORT("DSW2")
963905   AM_RANGE(0x0c0014, 0x0c0015) AM_WRITE(nmk_flipscreen_w) /* Maybe */
964906   AM_RANGE(0x0c0018, 0x0c0019) AM_WRITE(nmk_tilebank_w) /* Tile Bank ? */
965907   AM_RANGE(0x0c001e, 0x0c001f) AM_WRITE(seibu_main_mustb_w)
966   AM_RANGE(0x0c4000, 0x0c4007) AM_WRITE(nmk_scroll_w)
967   AM_RANGE(0x0c8000, 0x0c87ff) AM_WRITE(paletteram16_RRRRGGGGBBBBRGBx_word_w) AM_BASE(&paletteram16)
968   AM_RANGE(0x0cc000, 0x0cffff) AM_WRITE(nmk_bgvideoram_w) AM_BASE(&nmk_bgvideoram)
969   AM_RANGE(0x0d0000, 0x0d07ff) AM_WRITE(nmk_txvideoram_w) AM_BASE(&nmk_txvideoram)
908   AM_RANGE(0x0c4000, 0x0c4007) AM_RAM_WRITE(nmk_scroll_w)
909   AM_RANGE(0x0c8000, 0x0c87ff) AM_RAM_WRITE(paletteram16_RRRRGGGGBBBBRGBx_word_w) AM_BASE(&paletteram16)
910   AM_RANGE(0x0cc000, 0x0cffff) AM_RAM_WRITE(nmk_bgvideoram_w) AM_BASE(&nmk_bgvideoram)
911   AM_RANGE(0x0d0000, 0x0d07ff) AM_RAM_WRITE(nmk_txvideoram_w) AM_BASE(&nmk_txvideoram)
970912ADDRESS_MAP_END
971913
972static ADDRESS_MAP_START( ssmissin_readmem, ADDRESS_SPACE_PROGRAM, 16 )
973   AM_RANGE(0x000000, 0x03ffff) AM_READ(SMH_ROM)
914static ADDRESS_MAP_START( ssmissin_map, ADDRESS_SPACE_PROGRAM, 16 )
915   AM_RANGE(0x000000, 0x03ffff) AM_ROM
974916   AM_RANGE(0x0b0000, 0x0bffff) AM_RAM AM_BASE(&nmk16_mainram)
975   AM_RANGE(0x0c8000, 0x0c87ff) AM_READ(SMH_RAM)  /* Palette RAM */
976917   AM_RANGE(0x0c0000, 0x0c0001) AM_READ_PORT("IN0")
977918   AM_RANGE(0x0c0004, 0x0c0005) AM_READ_PORT("IN1")
978919   AM_RANGE(0x0c0006, 0x0c0007) AM_READ_PORT("DSW1")
979920//  AM_RANGE(0x0c000e, 0x0c000f) AM_READ(??)
980   AM_RANGE(0x0cc000, 0x0cffff) AM_READ(nmk_bgvideoram_r)
981   AM_RANGE(0x0d0000, 0x0d07ff) AM_READ(nmk_txvideoram_r)
982   AM_RANGE(0x0d0800, 0x0d0fff) AM_READ(nmk_txvideoram_r)
983   AM_RANGE(0x0d1000, 0x0d17ff) AM_READ(nmk_txvideoram_r)
984ADDRESS_MAP_END
985
986static ADDRESS_MAP_START( ssmissin_writemem, ADDRESS_SPACE_PROGRAM, 16 )
987   AM_RANGE(0x000000, 0x03ffff) AM_WRITE(SMH_ROM)
988921   AM_RANGE(0x0c0014, 0x0c0015) AM_WRITE(nmk_flipscreen_w) /* Maybe */
989922   AM_RANGE(0x0c0018, 0x0c0019) AM_WRITE(nmk_tilebank_w) /* Tile Bank ? */
990923   AM_RANGE(0x0c001e, 0x0c001f) AM_WRITE(ssmissin_sound_w)
991   AM_RANGE(0x0c4000, 0x0c4007) AM_WRITE(nmk_scroll_w)
992   AM_RANGE(0x0c8000, 0x0c87ff) AM_WRITE(paletteram16_RRRRGGGGBBBBRGBx_word_w) AM_BASE(&paletteram16)
993   AM_RANGE(0x0cc000, 0x0cffff) AM_WRITE(nmk_bgvideoram_w) AM_BASE(&nmk_bgvideoram)
994   AM_RANGE(0x0d0000, 0x0d07ff) AM_WRITE(nmk_txvideoram_w) AM_BASE(&nmk_txvideoram)
995   AM_RANGE(0x0d0800, 0x0d0fff) AM_WRITE(nmk_txvideoram_w) //mirror for airattck
996   AM_RANGE(0x0d1000, 0x0d17ff) AM_WRITE(nmk_txvideoram_w) //mirror for airattck
924   AM_RANGE(0x0c4000, 0x0c4007) AM_RAM_WRITE(nmk_scroll_w)
925   AM_RANGE(0x0c8000, 0x0c87ff) AM_RAM_WRITE(paletteram16_RRRRGGGGBBBBRGBx_word_w) AM_BASE(&paletteram16)
926   AM_RANGE(0x0cc000, 0x0cffff) AM_RAM_WRITE(nmk_bgvideoram_w) AM_BASE(&nmk_bgvideoram)
927   AM_RANGE(0x0d0000, 0x0d07ff) AM_RAM_WRITE(nmk_txvideoram_w) AM_BASE(&nmk_txvideoram)
928   AM_RANGE(0x0d0800, 0x0d0fff) AM_RAM_WRITE(nmk_txvideoram_w) //mirror for airattck
929   AM_RANGE(0x0d1000, 0x0d17ff) AM_RAM_WRITE(nmk_txvideoram_w) //mirror for airattck
997930ADDRESS_MAP_END
998931
999
1000
1001static ADDRESS_MAP_START( ssmissin_sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
1002   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
1003   AM_RANGE(0x8000, 0x87ff) AM_READ(SMH_RAM)
1004   AM_RANGE(0x9800, 0x9800) AM_DEVREAD("oki1", okim6295_r)
932static ADDRESS_MAP_START( ssmissin_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
933   AM_RANGE(0x0000, 0x7fff) AM_ROM
934   AM_RANGE(0x8000, 0x87ff) AM_RAM
935   AM_RANGE(0x9000, 0x9000) AM_WRITE(ssmissin_soundbank_w)
936   AM_RANGE(0x9800, 0x9800) AM_DEVREADWRITE("oki1", okim6295_r,okim6295_w)
1005937   AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_r)
1006938ADDRESS_MAP_END
1007939
1008static ADDRESS_MAP_START( ssmissin_sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
1009   AM_RANGE(0x0000, 0x7fff) AM_WRITE(SMH_ROM)
1010   AM_RANGE(0x8000, 0x87ff) AM_WRITE(SMH_RAM)
1011   AM_RANGE(0x9000, 0x9000) AM_WRITE(ssmissin_soundbank_w)
1012   AM_RANGE(0x9800, 0x9800) AM_DEVWRITE("oki1", okim6295_w)
1013ADDRESS_MAP_END
1014
1015
1016static ADDRESS_MAP_START( strahl_readmem, ADDRESS_SPACE_PROGRAM, 16 )
1017   AM_RANGE(0x00000, 0x3ffff) AM_READ(SMH_ROM)
940static ADDRESS_MAP_START( strahl_map, ADDRESS_SPACE_PROGRAM, 16 )
941   AM_RANGE(0x00000, 0x3ffff) AM_ROM
1018942   AM_RANGE(0x80000, 0x80001) AM_READ_PORT("IN0")
1019943   AM_RANGE(0x80002, 0x80003) AM_READ_PORT("IN1")
1020944   AM_RANGE(0x80008, 0x80009) AM_READ_PORT("DSW1")
1021945   AM_RANGE(0x8000a, 0x8000b) AM_READ_PORT("DSW2")
1022946   AM_RANGE(0x8000e, 0x8000f) AM_READ(NMK004_r)
1023   AM_RANGE(0x8c000, 0x8c7ff) AM_READ(SMH_RAM)
1024   AM_RANGE(0x90000, 0x93fff) AM_READ(nmk_bgvideoram_r)
1025   AM_RANGE(0x94000, 0x97fff) AM_READ(nmk_fgvideoram_r)
1026   AM_RANGE(0x9c000, 0x9c7ff) AM_READ(nmk_txvideoram_r)
1027   AM_RANGE(0xf0000, 0xfffff) AM_RAM AM_BASE(&nmk16_mainram)
1028ADDRESS_MAP_END
1029
1030static ADDRESS_MAP_START( strahl_writemem, ADDRESS_SPACE_PROGRAM, 16 )
1031   AM_RANGE(0x00000, 0x3ffff) AM_WRITE(SMH_ROM)
1032947   AM_RANGE(0x80014, 0x80015) AM_WRITE(nmk_flipscreen_w)
1033948   AM_RANGE(0x80016, 0x80017) AM_WRITENOP   /* IRQ enable? */
1034949   AM_RANGE(0x8001e, 0x8001f) AM_WRITE(NMK004_w)
1035   AM_RANGE(0x84000, 0x84007) AM_WRITE(nmk_scroll_w)
1036   AM_RANGE(0x88000, 0x88007) AM_WRITE(nmk_scroll_2_w)
1037   AM_RANGE(0x8c000, 0x8c7ff) AM_WRITE(paletteram16_RRRRGGGGBBBBxxxx_word_w) AM_BASE(&paletteram16)
1038   AM_RANGE(0x90000, 0x93fff) AM_WRITE(nmk_bgvideoram_w) AM_BASE(&nmk_bgvideoram)
1039   AM_RANGE(0x94000, 0x97fff) AM_WRITE(nmk_fgvideoram_w) AM_BASE(&nmk_fgvideoram)
1040   AM_RANGE(0x9c000, 0x9c7ff) AM_WRITE(nmk_txvideoram_w) AM_BASE(&nmk_txvideoram)
950   AM_RANGE(0x84000, 0x84007) AM_RAM_WRITE(nmk_scroll_w)
951   AM_RANGE(0x88000, 0x88007) AM_RAM_WRITE(nmk_scroll_2_w)
952   AM_RANGE(0x8c000, 0x8c7ff) AM_RAM_WRITE(paletteram16_RRRRGGGGBBBBxxxx_word_w) AM_BASE(&paletteram16)
953   AM_RANGE(0x90000, 0x93fff) AM_RAM_WRITE(nmk_bgvideoram_w) AM_BASE(&nmk_bgvideoram)
954   AM_RANGE(0x94000, 0x97fff) AM_RAM_WRITE(nmk_fgvideoram_w) AM_BASE(&nmk_fgvideoram)
955   AM_RANGE(0x9c000, 0x9c7ff) AM_RAM_WRITE(nmk_txvideoram_w) AM_BASE(&nmk_txvideoram)
956   AM_RANGE(0xf0000, 0xfffff) AM_RAM AM_BASE(&nmk16_mainram)
1041957ADDRESS_MAP_END
1042958
1043static ADDRESS_MAP_START( macross_readmem, ADDRESS_SPACE_PROGRAM, 16 )
1044   AM_RANGE(0x000000, 0x07ffff) AM_READ(SMH_ROM)
959static ADDRESS_MAP_START( macross_map, ADDRESS_SPACE_PROGRAM, 16 )
960   AM_RANGE(0x000000, 0x07ffff) AM_ROM
1045961   AM_RANGE(0x080000, 0x080001) AM_READ_PORT("IN0")
1046962   AM_RANGE(0x080002, 0x080003) AM_READ_PORT("IN1")
1047963   AM_RANGE(0x080008, 0x080009) AM_READ_PORT("DSW1")
1048964   AM_RANGE(0x08000a, 0x08000b) AM_READ_PORT("DSW2")
1049965   AM_RANGE(0x08000e, 0x08000f) AM_READ(NMK004_r)
1050   AM_RANGE(0x088000, 0x0887ff) AM_READ(SMH_RAM)
1051   AM_RANGE(0x090000, 0x093fff) AM_READ(nmk_bgvideoram_r)
1052   AM_RANGE(0x09c000, 0x09c7ff) AM_READ(nmk_txvideoram_r)
1053   AM_RANGE(0x0f0000, 0x0fffff) AM_RAM_WRITE(nmk16_mainram_strange_w) AM_BASE(&nmk16_mainram)
1054ADDRESS_MAP_END
1055
1056static ADDRESS_MAP_START( macross_writemem, ADDRESS_SPACE_PROGRAM, 16 )
1057   AM_RANGE(0x000000, 0x07ffff) AM_WRITE(SMH_ROM)
1058966   AM_RANGE(0x080014, 0x080015) AM_WRITE(nmk_flipscreen_w)
1059967   AM_RANGE(0x080016, 0x080017) AM_WRITENOP   /* IRQ enable? */
1060968   AM_RANGE(0x080018, 0x080019) AM_WRITE(nmk_tilebank_w)
1061969   AM_RANGE(0x08001e, 0x08001f) AM_WRITE(NMK004_w)
1062   AM_RANGE(0x088000, 0x0887ff) AM_WRITE(paletteram16_RRRRGGGGBBBBRGBx_word_w) AM_BASE(&paletteram16)
1063   AM_RANGE(0x08c000, 0x08c007) AM_WRITE(nmk_scroll_w)
1064   AM_RANGE(0x090000, 0x093fff) AM_WRITE(nmk_bgvideoram_w) AM_BASE(&nmk_bgvideoram)
1065   AM_RANGE(0x09c000, 0x09c7ff) AM_WRITE(nmk_txvideoram_w) AM_BASE(&nmk_txvideoram)
970   AM_RANGE(0x088000, 0x0887ff) AM_RAM_WRITE(paletteram16_RRRRGGGGBBBBRGBx_word_w) AM_BASE(&paletteram16)
971   AM_RANGE(0x08c000, 0x08c007) AM_RAM_WRITE(nmk_scroll_w)
972   AM_RANGE(0x090000, 0x093fff) AM_RAM_WRITE(nmk_bgvideoram_w) AM_BASE(&nmk_bgvideoram)
973   AM_RANGE(0x09c000, 0x09c7ff) AM_RAM_WRITE(nmk_txvideoram_w) AM_BASE(&nmk_txvideoram)
974   AM_RANGE(0x0f0000, 0x0fffff) AM_RAM_WRITE(nmk16_mainram_strange_w) AM_BASE(&nmk16_mainram)
1066975ADDRESS_MAP_END
1067976
1068977static ADDRESS_MAP_START( gunnail_map, ADDRESS_SPACE_PROGRAM, 16 )
r4679r4680
1085994   AM_RANGE(0x0f0000, 0x0fffff) AM_RAM AM_BASE(&nmk16_mainram)
1086995ADDRESS_MAP_END
1087996
1088static ADDRESS_MAP_START( macross2_readmem, ADDRESS_SPACE_PROGRAM, 16 )
1089   AM_RANGE(0x000000, 0x07ffff) AM_READ(SMH_ROM)
997static ADDRESS_MAP_START( macross2_map, ADDRESS_SPACE_PROGRAM, 16 )
998   AM_RANGE(0x000000, 0x07ffff) AM_ROM
1090999   AM_RANGE(0x100000, 0x100001) AM_READ_PORT("IN0")
10911000   AM_RANGE(0x100002, 0x100003) AM_READ_PORT("IN1")
10921001   AM_RANGE(0x100008, 0x100009) AM_READ_PORT("DSW1")
10931002   AM_RANGE(0x10000a, 0x10000b) AM_READ_PORT("DSW2")
10941003   AM_RANGE(0x10000e, 0x10000f) AM_READ(soundlatch2_word_r)   /* from Z80 */
1095   AM_RANGE(0x120000, 0x1207ff) AM_READ(SMH_RAM)
1096   AM_RANGE(0x140000, 0x14ffff) AM_READ(nmk_bgvideoram_r)
1097   AM_RANGE(0x170000, 0x170fff) AM_READ(nmk_txvideoram_r)
1098   AM_RANGE(0x171000, 0x171fff) AM_READ(nmk_txvideoram_r)   /* mirror */
1099   AM_RANGE(0x1f0000, 0x1fffff) AM_RAM AM_BASE(&nmk16_mainram)
1100ADDRESS_MAP_END
1101
1102static ADDRESS_MAP_START( macross2_writemem, ADDRESS_SPACE_PROGRAM, 16 )
1103   AM_RANGE(0x000000, 0x07ffff) AM_WRITE(SMH_ROM)
11041004   AM_RANGE(0x100014, 0x100015) AM_WRITE(nmk_flipscreen_w)
11051005   AM_RANGE(0x100016, 0x100017) AM_WRITE(macross2_sound_reset_w)   /* Z80 reset */
11061006   AM_RANGE(0x100018, 0x100019) AM_WRITE(nmk_tilebank_w)
11071007   AM_RANGE(0x10001e, 0x10001f) AM_WRITE(macross2_sound_command_w)   /* to Z80 */
1108   AM_RANGE(0x120000, 0x1207ff) AM_WRITE(paletteram16_RRRRGGGGBBBBRGBx_word_w) AM_BASE(&paletteram16)
1109   AM_RANGE(0x130000, 0x130007) AM_WRITE(nmk_scroll_w)
1008   AM_RANGE(0x120000, 0x1207ff) AM_RAM_WRITE(paletteram16_RRRRGGGGBBBBRGBx_word_w) AM_BASE(&paletteram16)
1009   AM_RANGE(0x130000, 0x130007) AM_RAM_WRITE(nmk_scroll_w)
11101010   AM_RANGE(0x130008, 0x1307ff) AM_WRITENOP   /* 0 only? */
1111   AM_RANGE(0x140000, 0x14ffff) AM_WRITE(nmk_bgvideoram_w) AM_BASE(&nmk_bgvideoram)
1112   AM_RANGE(0x170000, 0x170fff) AM_WRITE(nmk_txvideoram_w) AM_BASE(&nmk_txvideoram)
1113   AM_RANGE(0x171000, 0x171fff) AM_WRITE(nmk_txvideoram_w)   /* mirror */
1011   AM_RANGE(0x140000, 0x14ffff) AM_RAM_WRITE(nmk_bgvideoram_w) AM_BASE(&nmk_bgvideoram)
1012   AM_RANGE(0x170000, 0x170fff) AM_RAM_WRITE(nmk_txvideoram_w) AM_BASE(&nmk_txvideoram)
1013   AM_RANGE(0x171000, 0x171fff) AM_RAM_WRITE(nmk_txvideoram_w)   /* mirror */
1014   AM_RANGE(0x1f0000, 0x1fffff) AM_RAM AM_BASE(&nmk16_mainram)
11141015ADDRESS_MAP_END
11151016
1116static ADDRESS_MAP_START( raphero_writemem, ADDRESS_SPACE_PROGRAM, 16 )
1117   AM_RANGE(0x000000, 0x07ffff) AM_WRITE(SMH_ROM)
1017static ADDRESS_MAP_START( raphero_map, ADDRESS_SPACE_PROGRAM, 16 )
1018   AM_RANGE(0x000000, 0x07ffff) AM_ROM
1019   AM_RANGE(0x100000, 0x100001) AM_READ_PORT("IN0")
1020   AM_RANGE(0x100002, 0x100003) AM_READ_PORT("IN1")
1021   AM_RANGE(0x100008, 0x100009) AM_READ_PORT("DSW1")
1022   AM_RANGE(0x10000a, 0x10000b) AM_READ_PORT("DSW2")
1023   AM_RANGE(0x10000e, 0x10000f) AM_READ(soundlatch2_word_r)   /* from Z80 */
11181024   AM_RANGE(0x100014, 0x100015) AM_WRITE(nmk_flipscreen_w)
1119   AM_RANGE(0x100016, 0x100017) AM_WRITENOP   /* IRQ eanble? */
1025   AM_RANGE(0x100016, 0x100017) AM_WRITENOP   /* IRQ enable or z80 sound reset like in Macross 2? */
11201026   AM_RANGE(0x100018, 0x100019) AM_WRITE(nmk_tilebank_w)
1121   AM_RANGE(0x10001e, 0x10001f) AM_WRITE(macross2_sound_command_w)   /* to sound cpu */
1122   AM_RANGE(0x120000, 0x1207ff) AM_WRITE(paletteram16_RRRRGGGGBBBBRGBx_word_w) AM_BASE(&paletteram16)
1123   AM_RANGE(0x130000, 0x1307ff) AM_WRITE(nmk_scroll_3_w) AM_BASE(&gunnail_scrollram)
1124   AM_RANGE(0x140000, 0x14ffff) AM_WRITE(nmk_bgvideoram_w) AM_BASE(&nmk_bgvideoram)
1125   AM_RANGE(0x170000, 0x170fff) AM_WRITE(nmk_txvideoram_w) AM_BASE(&nmk_txvideoram)
1126   AM_RANGE(0x171000, 0x171fff) AM_WRITE(nmk_txvideoram_w)   /* mirror */
1027   AM_RANGE(0x10001e, 0x10001f) AM_WRITE(macross2_sound_command_w)   /* to Z80 */
1028   AM_RANGE(0x120000, 0x1207ff) AM_RAM_WRITE(paletteram16_RRRRGGGGBBBBRGBx_word_w) AM_BASE(&paletteram16)
1029   AM_RANGE(0x130000, 0x1307ff) AM_RAM_WRITE(nmk_scroll_3_w) AM_BASE(&gunnail_scrollram)
1030   AM_RANGE(0x140000, 0x14ffff) AM_RAM_WRITE(nmk_bgvideoram_w) AM_BASE(&nmk_bgvideoram)
1031   AM_RANGE(0x170000, 0x170fff) AM_RAM_WRITE(nmk_txvideoram_w) AM_BASE(&nmk_txvideoram)
1032   AM_RANGE(0x171000, 0x171fff) AM_RAM_WRITE(nmk_txvideoram_w)   /* mirror */
1033   AM_RANGE(0x1f0000, 0x1fffff) AM_RAM AM_BASE(&nmk16_mainram)
11271034ADDRESS_MAP_END
11281035
11291036#if 0
r4679r4680
11481055
11491056static ADDRESS_MAP_START( raphero_sound_mem_map, ADDRESS_SPACE_PROGRAM, 8 )
11501057   AM_RANGE( 0x0000, 0x7fff ) AM_ROM
1151   AM_RANGE( 0x8000, 0xbfff ) AM_READ( SMH_BANK1 )
1058   AM_RANGE( 0x8000, 0xbfff ) AM_READ( SMH_BANK(1) )
11521059   AM_RANGE( 0xc000, 0xc001 ) AM_DEVREADWRITE("ym", ym2203_r, ym2203_w )
11531060   AM_RANGE( 0xc800, 0xc800 ) AM_DEVREADWRITE( "oki1", okim6295_r, okim6295_w )
11541061   AM_RANGE( 0xc808, 0xc808 ) AM_DEVREADWRITE( "oki2", okim6295_r, okim6295_w )
r4679r4680
11591066   AM_RANGE( 0xe000, 0xffff ) AM_RAM
11601067ADDRESS_MAP_END
11611068
1162static ADDRESS_MAP_START( macross2_sound_readmem, ADDRESS_SPACE_PROGRAM, 8 )
1163   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
1164   AM_RANGE(0x8000, 0xbfff) AM_READ(SMH_BANK1)   /* banked ROM */
1069static ADDRESS_MAP_START( macross2_sound_map, ADDRESS_SPACE_PROGRAM, 8 )
1070   AM_RANGE(0x0000, 0x7fff) AM_ROM
1071   AM_RANGE(0x8000, 0xbfff) AM_ROMBANK(1)   /* banked ROM */
11651072   AM_RANGE(0xa000, 0xa000) AM_READNOP   /* IRQ ack? watchdog? */
1166   AM_RANGE(0xc000, 0xdfff) AM_READ(SMH_RAM)
1167   AM_RANGE(0xf000, 0xf000) AM_READ(soundlatch_r)   /* from 68000 */
1168ADDRESS_MAP_END
1169
1170static ADDRESS_MAP_START( macross2_sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
1171   AM_RANGE(0x0000, 0xbfff) AM_WRITE(SMH_ROM)
1172   AM_RANGE(0xc000, 0xdfff) AM_WRITE(SMH_RAM)
1073   AM_RANGE(0xc000, 0xdfff) AM_RAM
11731074   AM_RANGE(0xe001, 0xe001) AM_WRITE(macross2_sound_bank_w)
1174   AM_RANGE(0xf000, 0xf000) AM_WRITE(soundlatch2_w)   /* to 68000 */
1075   AM_RANGE(0xf000, 0xf000) AM_READWRITE(soundlatch_r,soundlatch2_w)   /* from 68000 */
11751076ADDRESS_MAP_END
11761077
11771078static ADDRESS_MAP_START( macross2_sound_io_map, ADDRESS_SPACE_IO, 8 )
r4679r4680
11821083   AM_RANGE(0x90, 0x97) AM_WRITE(NMK112_okibank_w)
11831084ADDRESS_MAP_END
11841085
1185static ADDRESS_MAP_START( bjtwin_readmem, ADDRESS_SPACE_PROGRAM, 16 )
1186   AM_RANGE(0x000000, 0x07ffff) AM_READ(SMH_ROM)
1086static ADDRESS_MAP_START( bjtwin_map, ADDRESS_SPACE_PROGRAM, 16 )
1087   AM_RANGE(0x000000, 0x07ffff) AM_ROM
11871088   AM_RANGE(0x080000, 0x080001) AM_READ_PORT("IN0")
11881089   AM_RANGE(0x080002, 0x080003) AM_READ_PORT("IN1")
11891090   AM_RANGE(0x080008, 0x080009) AM_READ_PORT("DSW1")
11901091   AM_RANGE(0x08000a, 0x08000b) AM_READ_PORT("DSW2")
1191   AM_RANGE(0x084000, 0x084001) AM_DEVREAD8("oki1", okim6295_r, 0x00ff)
1192   AM_RANGE(0x084010, 0x084011) AM_DEVREAD8("oki2", okim6295_r, 0x00ff)
1193   AM_RANGE(0x088000, 0x0887ff) AM_READ(SMH_RAM)
1194   AM_RANGE(0x09c000, 0x09cfff) AM_READ(nmk_bgvideoram_r)
1195   AM_RANGE(0x09d000, 0x09dfff) AM_READ(nmk_bgvideoram_r)   /* mirror */
1196ADDRESS_MAP_END
1197
1198static ADDRESS_MAP_START( bjtwin_writemem, ADDRESS_SPACE_PROGRAM, 16 )
1199   AM_RANGE(0x000000, 0x07ffff) AM_WRITE(SMH_ROM)
12001092   AM_RANGE(0x080014, 0x080015) AM_WRITE(nmk_flipscreen_w)
1201   AM_RANGE(0x084000, 0x084001) AM_DEVWRITE8("oki1", okim6295_w, 0x00ff)
1202   AM_RANGE(0x084010, 0x084011) AM_DEVWRITE8("oki2", okim6295_w, 0x00ff)
1093   AM_RANGE(0x084000, 0x084001) AM_DEVREADWRITE8("oki1", okim6295_r,okim6295_w, 0x00ff)
1094   AM_RANGE(0x084010, 0x084011) AM_DEVREADWRITE8("oki2", okim6295_r,okim6295_w, 0x00ff)
12031095   AM_RANGE(0x084020, 0x08402f) AM_WRITE(NMK112_okibank_lsb_w)
1204   AM_RANGE(0x088000, 0x0887ff) AM_WRITE(paletteram16_RRRRGGGGBBBBRGBx_word_w) AM_BASE(&paletteram16)
12051096   AM_RANGE(0x094000, 0x094001) AM_WRITE(nmk_tilebank_w)
12061097   AM_RANGE(0x094002, 0x094003) AM_WRITENOP   /* IRQ enable? */
1207   AM_RANGE(0x09c000, 0x09cfff) AM_WRITE(nmk_bgvideoram_w) AM_BASE(&nmk_bgvideoram)
1208   AM_RANGE(0x09d000, 0x09dfff) AM_WRITE(nmk_bgvideoram_w)   /* mirror */
1098   AM_RANGE(0x088000, 0x0887ff) AM_RAM_WRITE(paletteram16_RRRRGGGGBBBBRGBx_word_w) AM_BASE(&paletteram16)
1099   AM_RANGE(0x09c000, 0x09cfff) AM_RAM_WRITE(nmk_bgvideoram_w) AM_BASE(&nmk_bgvideoram)
1100   AM_RANGE(0x09d000, 0x09dfff) AM_RAM_WRITE(nmk_bgvideoram_w)   /* mirror */
12091101   AM_RANGE(0x0f0000, 0x0fffff) AM_RAM AM_BASE(&nmk16_mainram)
12101102ADDRESS_MAP_END
12111103
1212
12131104static INPUT_PORTS_START( vandyke )
12141105   PORT_START("IN0")
12151106   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
r4679r4680
35963487
35973488   /* basic machine hardware */
35983489   MDRV_CPU_ADD("maincpu", M68000, 10000000) /* 10 MHz */
3599   MDRV_CPU_PROGRAM_MAP(tharrier_readmem,tharrier_writemem)
3490   MDRV_CPU_PROGRAM_MAP(tharrier_map,0)
36003491   MDRV_CPU_VBLANK_INT_HACK(nmk_interrupt,2)
36013492   MDRV_CPU_PERIODIC_INT(irq1_line_hold,112)/* ???????? */
36023493
36033494   MDRV_CPU_ADD("audiocpu", Z80, 3000000)
3604   MDRV_CPU_PROGRAM_MAP(tharrier_sound_readmem,tharrier_sound_writemem)
3495   MDRV_CPU_PROGRAM_MAP(tharrier_sound_map,0)
36053496   MDRV_CPU_IO_MAP(tharrier_sound_io_map,0)
36063497
36073498   MDRV_MACHINE_RESET(mustang_sound)
r4679r4680
36453536
36463537   /* basic machine hardware */
36473538   MDRV_CPU_ADD("maincpu", M68000, 10000000) /* 10? MHz - check */
3648   MDRV_CPU_PROGRAM_MAP(manybloc_readmem,manybloc_writemem)
3539   MDRV_CPU_PROGRAM_MAP(manybloc_map,0)
36493540   MDRV_CPU_VBLANK_INT_HACK(nmk_interrupt,2)
36503541   MDRV_CPU_PERIODIC_INT(irq1_line_hold,56)/* this needs to equal the framerate on this, rather than being double it .. */
36513542
36523543   MDRV_CPU_ADD("audiocpu", Z80, 3000000)
3653   MDRV_CPU_PROGRAM_MAP(tharrier_sound_readmem,tharrier_sound_writemem)
3544   MDRV_CPU_PROGRAM_MAP(tharrier_sound_map,0)
36543545   MDRV_CPU_IO_MAP(tharrier_sound_io_map,0)
36553546
36563547   /* video hardware */
r4679r4680
38183709
38193710   /* basic machine hardware */
38203711   MDRV_CPU_ADD("maincpu", M68000, BIOSHIP_CRYSTAL1 ) /* 10.0 MHz (verified) */
3821   MDRV_CPU_PROGRAM_MAP(bioship_readmem,bioship_writemem)
3712   MDRV_CPU_PROGRAM_MAP(bioship_map,0)
38223713   MDRV_CPU_VBLANK_INT_HACK(nmk_interrupt,2)
38233714   MDRV_CPU_PERIODIC_INT(irq1_line_hold,112)/* ???????? */
38243715
r4679r4680
38623753
38633754   /* basic machine hardware */
38643755   MDRV_CPU_ADD("maincpu", M68000, XTAL_10MHz) /* 68000p12 running at 10Mhz, verified on pcb */
3865   MDRV_CPU_PROGRAM_MAP(vandyke_readmem,vandyke_writemem)
3756   MDRV_CPU_PROGRAM_MAP(vandyke_map,0)
38663757   MDRV_CPU_VBLANK_INT_HACK(nmk_interrupt,2)
38673758   MDRV_CPU_PERIODIC_INT(irq1_line_hold,112)/* ???????? */
38683759
r4679r4680
39063797
39073798   /* basic machine hardware */
39083799   MDRV_CPU_ADD("maincpu", M68000, 10000000) /* 10 MHz ? */
3909   MDRV_CPU_PROGRAM_MAP(vandyke_readmem,vandyke_writemem)
3800   MDRV_CPU_PROGRAM_MAP(vandyke_map,0)
39103801   MDRV_CPU_VBLANK_INT_HACK(nmk_interrupt,2)
39113802   MDRV_CPU_PERIODIC_INT(irq1_line_hold,112)/* ???????? */
39123803
r4679r4680
39423833
39433834   /* basic machine hardware */
39443835   MDRV_CPU_ADD("maincpu", M68000, 10000000) /* 10 MHz (verified on pcb) */
3945   MDRV_CPU_PROGRAM_MAP(acrobatm_readmem,acrobatm_writemem)
3836   MDRV_CPU_PROGRAM_MAP(acrobatm_map,0)
39463837   MDRV_CPU_VBLANK_INT_HACK(nmk_interrupt,2)
39473838   MDRV_CPU_PERIODIC_INT(irq1_line_hold,112)/* ???????? */
39483839
r4679r4680
39883879
39893880   /* basic machine hardware */
39903881   MDRV_CPU_ADD("maincpu", M68000, 10000000)
3991   MDRV_CPU_PROGRAM_MAP(tdragon_readmem,tdragonb_writemem)
3882   MDRV_CPU_PROGRAM_MAP(tdragonb_map,0)
39923883   //MDRV_CPU_VBLANK_INT("screen", irq4_line_hold)
39933884   MDRV_CPU_VBLANK_INT_HACK(nmk_interrupt,2)
39943885   MDRV_CPU_PERIODIC_INT(irq1_line_hold,112)/* ?? drives music */
r4679r4680
40203911
40213912   /* basic machine hardware */
40223913   MDRV_CPU_ADD("maincpu", M68000, XTAL_8MHz) /* verified on pcb */
4023   MDRV_CPU_PROGRAM_MAP(tdragon_readmem,tdragon_writemem)
3914   MDRV_CPU_PROGRAM_MAP(tdragon_map,0)
40243915   MDRV_CPU_VBLANK_INT_HACK(nmk_interrupt,2)
40253916   //MDRV_CPU_VBLANK_INT("screen", irq4_line_hold)
40263917   MDRV_CPU_PERIODIC_INT(irq1_line_hold,112)/* ?? drives music */
r4679r4680
40663957
40673958   /* basic machine hardware */
40683959   MDRV_CPU_ADD("maincpu", M68000, 8000000) /* 8 Mhz */
4069   MDRV_CPU_PROGRAM_MAP(ssmissin_readmem,ssmissin_writemem)
3960   MDRV_CPU_PROGRAM_MAP(ssmissin_map,0)
40703961   MDRV_CPU_VBLANK_INT("screen", irq4_line_hold)
40713962   MDRV_CPU_PERIODIC_INT(irq1_line_hold,112) /* input related */
40723963
40733964   MDRV_CPU_ADD("audiocpu", Z80, 8000000/2) /* 4 Mhz */
4074   MDRV_CPU_PROGRAM_MAP(ssmissin_sound_readmem,ssmissin_sound_writemem)
3965   MDRV_CPU_PROGRAM_MAP(ssmissin_sound_map,0)
40753966
40763967   MDRV_MACHINE_RESET(nmk16)
40773968
r4679r4680
41033994
41043995   /* basic machine hardware */
41053996   MDRV_CPU_ADD("maincpu", M68000, 12000000) /* 12 MHz ? */
4106   MDRV_CPU_PROGRAM_MAP(strahl_readmem,strahl_writemem)
3997   MDRV_CPU_PROGRAM_MAP(strahl_map,0)
41073998   MDRV_CPU_VBLANK_INT_HACK(nmk_interrupt,2)
41083999   MDRV_CPU_PERIODIC_INT(irq1_line_hold,112)/* ???????? */
41094000
r4679r4680
41944085
41954086   /* basic machine hardware */
41964087   MDRV_CPU_ADD("maincpu", M68000, 10000000) /* 10 MHz ? */
4197   MDRV_CPU_PROGRAM_MAP(macross_readmem,macross_writemem)
4088   MDRV_CPU_PROGRAM_MAP(macross_map,0)
41984089   MDRV_CPU_VBLANK_INT("screen", irq4_line_hold)
41994090   MDRV_CPU_PERIODIC_INT(irq1_line_hold,112)/* ???????? */
42004091
r4679r4680
42844175
42854176   /* basic machine hardware */
42864177   MDRV_CPU_ADD("maincpu", M68000, 10000000) /* 10 MHz ? */
4287   MDRV_CPU_PROGRAM_MAP(macross2_readmem,macross2_writemem)
4178   MDRV_CPU_PROGRAM_MAP(macross2_map,0)
42884179   MDRV_CPU_VBLANK_INT("screen", irq4_line_hold)
42894180   MDRV_CPU_PERIODIC_INT(irq1_line_hold,112)/* ???????? */
42904181
42914182   MDRV_CPU_ADD("audiocpu", Z80, 4000000) /* 4 MHz ? */
4292   MDRV_CPU_PROGRAM_MAP(macross2_sound_readmem,macross2_sound_writemem)
4183   MDRV_CPU_PROGRAM_MAP(macross2_sound_map,0)
42934184   MDRV_CPU_IO_MAP(macross2_sound_io_map,0)
42944185
42954186   MDRV_MACHINE_RESET(nmk16)
r4679r4680
43294220
43304221   /* basic machine hardware */
43314222   MDRV_CPU_ADD("maincpu", M68000, 10000000) /* 10 MHz  */
4332   MDRV_CPU_PROGRAM_MAP(macross2_readmem,macross2_writemem)
4223   MDRV_CPU_PROGRAM_MAP(macross2_map,0)
43334224   MDRV_CPU_VBLANK_INT("screen", irq4_line_hold)
43344225   MDRV_CPU_PERIODIC_INT(irq1_line_hold,112)/* ???????? */
43354226
43364227   MDRV_CPU_ADD("audiocpu", Z80, 4000000) /* 4 MHz  */
4337   MDRV_CPU_PROGRAM_MAP(macross2_sound_readmem,macross2_sound_writemem)
4228   MDRV_CPU_PROGRAM_MAP(macross2_sound_map,0)
43384229   MDRV_CPU_IO_MAP(macross2_sound_io_map,0)
43394230
43404231   MDRV_MACHINE_RESET(nmk16)
r4679r4680
43744265
43754266   /* basic machine hardware */
43764267   MDRV_CPU_ADD("maincpu", M68000, 14000000) /* 14 MHz measured */
4377   MDRV_CPU_PROGRAM_MAP(macross2_readmem,raphero_writemem)
4268   MDRV_CPU_PROGRAM_MAP(raphero_map,0)
43784269   MDRV_CPU_VBLANK_INT("screen", irq4_line_hold)
43794270   MDRV_CPU_PERIODIC_INT(irq1_line_hold,112)/* ???????? */
43804271
r4679r4680
44184309
44194310   /* basic machine hardware */
44204311   MDRV_CPU_ADD("maincpu", M68000, 10000000) /* verified on pcb */
4421   MDRV_CPU_PROGRAM_MAP(bjtwin_readmem,bjtwin_writemem)
4312   MDRV_CPU_PROGRAM_MAP(bjtwin_map,0)
44224313   MDRV_CPU_VBLANK_INT("screen", irq4_line_hold)
44234314   MDRV_CPU_PERIODIC_INT(irq1_line_hold,112)/* ?? drives music */
44244315
r4679r4680
46934584static DRIVER_INIT (vandykeb)
46944585{
46954586   memory_install_read16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x08000e, 0x08000f, 0, 0, vandykeb_r );
4696   memory_install_write16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x08001e, 0x08001f, 0, 0, SMH_NOP );
4587   memory_install_write16_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x08001e, 0x08001f, 0, 0, (write16_space_func)SMH_NOP );
46974588}
46984589
46994590
r4679r4680
50914982   int i;
50924983   UINT8 *RAM = memory_region( machine, "maincpu" );
50934984   size_t  size = memory_region_length( machine, "maincpu" );
5094   UINT8 *buffer = malloc_or_die( size );
4985   UINT8 *buffer = alloc_array_or_die(UINT8, size );
50954986
50964987      memcpy( buffer, RAM, size );
50974988      for( i = 0; i < size; i++ )
src/mame/drivers/m10.c
r4679r4680
131131static WRITE8_DEVICE_HANDLER(ic8j1_output_changed)
132132{
133133   LOG(("ic8j1: %d %d\n", data, video_screen_get_vpos(device->machine->primary_screen)));
134   cpu_set_input_line(device->machine->cpu[0], 0, !data ? CLEAR_LINE : ASSERT_LINE);
134   cputag_set_input_line(device->machine, "maincpu", 0, !data ? CLEAR_LINE : ASSERT_LINE);
135135}
136136
137137static WRITE8_DEVICE_HANDLER(ic8j2_output_changed)
r4679r4680
191191
192192static MACHINE_RESET( irem )
193193{
194   m10_state *state = machine->driver_data;
194   m10_state *state = (m10_state *)machine->driver_data;
195195
196196   state_save_register_global(machine, state->bottomline);
197197   state_save_register_global(machine, state->flip);
r4679r4680
225225static WRITE8_HANDLER( m10_ctrl_w )
226226{
227227   const device_config *samples = devtag_get_device(space->machine, "samples");
228   m10_state *state = space->machine->driver_data;
228   m10_state *state = (m10_state *)space->machine->driver_data;
229229
230230#if DEBUG
231231   if (data & 0x40)
r4679r4680
302302
303303static WRITE8_HANDLER( m11_ctrl_w )
304304{
305   m10_state *state = space->machine->driver_data;
305   m10_state *state = (m10_state *)space->machine->driver_data;
306306
307307#if DEBUG
308308   if (data & 0x4C)
r4679r4680
335335
336336static WRITE8_HANDLER( m15_ctrl_w )
337337{
338   m10_state *state = space->machine->driver_data;
338   m10_state *state = (m10_state *)space->machine->driver_data;
339339
340340#if DEBUG
341341   if (data & 0xF0)
r4679r4680
475475static READ8_HANDLER( m11_a700_r )
476476{
477477      //LOG(("rd:%d\n",video_screen_get_vpos(space->machine->primary_screen)));
478   //cpu_set_input_line(space->machine->cpu[0], 0, CLEAR_LINE);
478   //cputag_set_input_line(space->machine, "maincpu", 0, CLEAR_LINE);
479479   LOG(("clear\n"));
480480   ttl74123_clear_w(devtag_get_device(space->machine, "ic8j1"), 0, 0);
481481   ttl74123_clear_w(devtag_get_device(space->machine, "ic8j1"), 0, 1);
r4679r4680
491491static INPUT_CHANGED( coin_inserted )
492492{
493493   /* coin insertion causes an NMI */
494   cpu_set_input_line(field->port->machine->cpu[0], INPUT_LINE_NMI, newval ? ASSERT_LINE : CLEAR_LINE);
494   cputag_set_input_line(field->port->machine, "maincpu", INPUT_LINE_NMI, newval ? ASSERT_LINE : CLEAR_LINE);
495495}
496496
497497
r4679r4680
499499{
500500    if (param==0)
501501    {
502       cpu_set_input_line(machine->cpu[0], 0, ASSERT_LINE);
502       cputag_set_input_line(machine, "maincpu", 0, ASSERT_LINE);
503503       timer_set(machine, video_screen_get_time_until_pos(machine->primary_screen, IREMM10_VBSTART+16, 0), NULL, 1,interrupt_callback);
504504    }
505505    if (param==1)
506506    {
507       cpu_set_input_line(machine->cpu[0], 0, ASSERT_LINE);
507       cputag_set_input_line(machine, "maincpu", 0, ASSERT_LINE);
508508       timer_set(machine, video_screen_get_time_until_pos(machine->primary_screen, IREMM10_VBSTART+24, 0), NULL, 2,interrupt_callback);
509509    }
510510    if (param==-1)
511       cpu_set_input_line(machine->cpu[0], 0, CLEAR_LINE);
511       cputag_set_input_line(machine, "maincpu", 0, CLEAR_LINE);
512512
513513}
514514
r4679r4680
916916static DRIVER_INIT( andromed )
917917{
918918   int i;
919   m10_state *state = machine->driver_data;
919   m10_state *state = (m10_state *)machine->driver_data;
920920
921921   for (i=0x1c00;i<0x2000;i++)
922922      state->rom[i]=0x60;
r4679r4680
925925static DRIVER_INIT( ipminva1 )
926926{
927927   int i;
928   m10_state *state = machine->driver_data;
928   m10_state *state = (m10_state *)machine->driver_data;
929929
930930   for (i=0x1400;i<0x17ff;i++)
931931      state->rom[i]=0x60;
src/tools/src2html.c
r4679r4680
181181static int output_file(file_type type, int srcrootlen, int dstrootlen, const astring *srcfile, const astring *dstfile, int link_to_file, const astring *tempheader, const astring *tempfooter);
182182
183183/* HTML helpers */
184static core_file *create_file_and_output_header(const astring *filename, const astring *template, const astring *path);
185static void output_footer_and_close_file(core_file *file, const astring *template, const astring *path);
184static core_file *create_file_and_output_header(const astring *filename, const astring *templatefile, const astring *path);
185static void output_footer_and_close_file(core_file *file, const astring *templatefile, const astring *path);
186186
187187/* path helpers */
188188static const astring *normalized_subpath(const astring *path, int start);
r4679r4680
216216      /* include path? */
217217      if (arg[0] == '-' && arg[1] == 'I')
218218      {
219         *incpathhead = malloc(sizeof(**incpathhead));
219         *incpathhead = (include_path *)malloc(sizeof(**incpathhead));
220220         if (*incpathhead != NULL)
221221         {
222222            (*incpathhead)->next = NULL;
r4679r4680
252252   /* read the template file into an astring */
253253   if (core_fload(astring_c(tempfilename), &buffer, &bufsize) == FILERR_NONE)
254254   {
255      tempheader = astring_dupch(buffer, bufsize);
255      tempheader = astring_dupch((const char *)buffer, bufsize);
256256      free(buffer);
257257   }
258258
r4679r4680
353353      while ((entry = osd_readdir(dir)) != NULL)
354354         if (entry->type == entry_type && entry->name[0] != '.')
355355         {
356            list_entry *lentry = malloc(sizeof(*lentry));
356            list_entry *lentry = (list_entry *)malloc(sizeof(*lentry));
357357            lentry->name = astring_dupc(entry->name);
358358            lentry->next = list;
359359            list = lentry;
r4679r4680
368368         continue;
369369
370370      /* allocate memory for sorting */
371      listarray = malloc(sizeof(list_entry *) * found);
371      listarray = (list_entry **)malloc(sizeof(list_entry *) * found);
372372      found = 0;
373373      for (curlist = list; curlist != NULL; curlist = curlist->next)
374374         listarray[found++] = curlist;
r4679r4680
734734    HTML file with a standard header
735735-------------------------------------------------*/
736736
737static core_file *create_file_and_output_header(const astring *filename, const astring *template, const astring *path)
737static core_file *create_file_and_output_header(const astring *filename, const astring *templatefile, const astring *path)
738738{
739739   astring *modified;
740740   core_file *file;
r4679r4680
744744      return NULL;
745745
746746   /* print a header */
747   modified = astring_dup(template);
747   modified = astring_dup(templatefile);
748748   astring_replacec(modified, 0, "<!--PATH-->", astring_c(path));
749749   core_fwrite(file, astring_c(modified), astring_len(modified));
750750
r4679r4680
759759    standard footer to an HTML file and close it
760760-------------------------------------------------*/
761761
762static void output_footer_and_close_file(core_file *file, const astring *template, const astring *path)
762static void output_footer_and_close_file(core_file *file, const astring *templatefile, const astring *path)
763763{
764764   astring *modified;
765765
766   modified = astring_dup(template);
766   modified = astring_dup(templatefile);
767767   astring_replacec(modified, 0, "<!--PATH-->", astring_c(path));
768768   core_fwrite(file, astring_c(modified), astring_len(modified));
769769   astring_free(modified);
src/tools/jedutil.c
r4679r4680
9999   fseek(file, 0, SEEK_END);
100100   srcbuflen = ftell(file);
101101   fseek(file, 0, SEEK_SET);
102   srcbuf = malloc(srcbuflen);
102   srcbuf = (UINT8 *)malloc(srcbuflen);
103103   if (!srcbuf)
104104   {
105105      fprintf(stderr, "Unable to allocate %d bytes for the source!\n", (int)srcbuflen);
r4679r4680
243243
244244      /* generate the output */
245245      dstbuflen = jedbin_output(&jed, NULL, 0);
246      dstbuf = malloc(dstbuflen);
246      dstbuf = (UINT8 *)malloc(dstbuflen);
247247      if (!dstbuf)
248248      {
249249         fprintf(stderr, "Unable to allocate %d bytes for the target buffer!\n", (int)dstbuflen);
r4679r4680
270270
271271      /* generate the output */
272272      dstbuflen = jed_output(&jed, NULL, 0);
273      dstbuf = malloc(dstbuflen);
273      dstbuf = (UINT8 *)malloc(dstbuflen);
274274      if (!dstbuf)
275275      {
276276         fprintf(stderr, "Unable to allocate %d bytes for the target buffer!\n", (int)dstbuflen);
src/tools/ldverify.c
r4679r4680
123123
124124static int read_avi(void *file, int frame, bitmap_t *bitmap, INT16 *lsound, INT16 *rsound, int *samples)
125125{
126   const avi_movie_info *aviinfo = avi_get_movie_info(file);
126   const avi_movie_info *aviinfo = avi_get_movie_info((avi_file *)file);
127127   UINT32 firstsample = ((UINT64)aviinfo->audio_samplerate * (UINT64)frame * (UINT64)aviinfo->video_sampletime + aviinfo->video_timescale - 1) / (UINT64)aviinfo->video_timescale;
128128   UINT32 lastsample = ((UINT64)aviinfo->audio_samplerate * (UINT64)(frame + 1) * (UINT64)aviinfo->video_sampletime + aviinfo->video_timescale - 1) / (UINT64)aviinfo->video_timescale;
129129   avi_error avierr;
130130
131131   /* read the frame */
132   avierr = avi_read_video_frame_yuy16(file, frame, bitmap);
132   avierr = avi_read_video_frame_yuy16((avi_file *)file, frame, bitmap);
133133   if (avierr != AVIERR_NONE)
134134      return FALSE;
135135
136136   /* read the samples */
137   avierr = avi_read_sound_samples(file, 0, firstsample, lastsample - firstsample, lsound);
138   avierr = avi_read_sound_samples(file, 1, firstsample, lastsample - firstsample, rsound);
137   avierr = avi_read_sound_samples((avi_file *)file, 0, firstsample, lastsample - firstsample, lsound);
138   avierr = avi_read_sound_samples((avi_file *)file, 1, firstsample, lastsample - firstsample, rsound);
139139   if (avierr != AVIERR_NONE)
140140      return FALSE;
141141   *samples = lastsample - firstsample;
r4679r4680
149149
150150static void close_avi(void *file)
151151{
152   avi_close(file);
152   avi_close((avi_file *)file);
153153}
154154
155155
r4679r4680
247247      avconfig.audio[1] = &rsound[*samples];
248248
249249      /* configure the decompressor for this frame */
250      chd_codec_config(file, AV_CODEC_DECOMPRESS_CONFIG, &avconfig);
250      chd_codec_config((chd_file *)file, AV_CODEC_DECOMPRESS_CONFIG, &avconfig);
251251
252252      /* read the frame */
253      chderr = chd_read(file, frame * interlace_factor + fieldnum, NULL);
253      chderr = chd_read((chd_file *)file, frame * interlace_factor + fieldnum, NULL);
254254      if (chderr != CHDERR_NONE)
255255         return FALSE;
256256
r4679r4680
267267
268268static void close_chd(void *file)
269269{
270   chd_close(file);
270   chd_close((chd_file *)file);
271271}
272272
273273
r4679r4680
723723   }
724724
725725   /* allocate sound buffers */
726   lsound = malloc(info.samplerate * sizeof(*lsound));
727   rsound = malloc(info.samplerate * sizeof(*rsound));
726   lsound = (INT16 *)malloc(info.samplerate * sizeof(*lsound));
727   rsound = (INT16 *)malloc(info.samplerate * sizeof(*rsound));
728728   if (lsound == NULL || rsound == NULL)
729729   {
730730      isavi ? close_avi(file) : close_chd(file);
src/tools/regrep.c
r4679r4680
151151static summary_file *sort_file_list(void);
152152
153153/* HTML helpers */
154static core_file *create_file_and_output_header(const astring *filename, const astring *template, const astring *title);
155static void output_footer_and_close_file(core_file *file, const astring *template, const astring *title);
154static core_file *create_file_and_output_header(const astring *filename, const astring *templatefile, const astring *title);
155static void output_footer_and_close_file(core_file *file, const astring *templatefile, const astring *title);
156156
157157/* report generators */
158158static void output_report(const astring *dirname, const astring *tempheader, const astring *tempfooter, summary_file *filelist);
r4679r4680
240240   /* read the template file into an astring */
241241   if (core_fload(astring_c(tempfilename), &buffer, &bufsize) == FILERR_NONE)
242242   {
243      tempheader = astring_dupch(buffer, bufsize);
243      tempheader = astring_dupch((const char *)buffer, bufsize);
244244      free(buffer);
245245   }
246246
r4679r4680
299299            return file;
300300
301301    /* didn't find one -- allocate */
302    file = malloc(sizeof(*file));
302    file = (summary_file *)malloc(sizeof(*file));
303303    if (file == NULL)
304304        return NULL;
305305    memset(file, 0, sizeof(*file));
r4679r4680
376376            char *dirname = trim_string(linestart + 4);
377377
378378            /* allocate a copy of the string */
379            lists[index].dir = malloc(strlen(dirname) + 1);
379            lists[index].dir = (char *)malloc(strlen(dirname) + 1);
380380            if (lists[index].dir == NULL)
381381               goto error;
382382            strcpy(lists[index].dir, dirname);
r4679r4680
413413            if (curfile->textsize[index] + (curptr - linestart) + 1 >= curfile->textalloc[index])
414414            {
415415               curfile->textalloc[index] = curfile->textsize[index] + (curptr - linestart) + 256;
416               curfile->text[index] = realloc(curfile->text[index], curfile->textalloc[index]);
416               curfile->text[index] = (char *)realloc(curfile->text[index], curfile->textalloc[index]);
417417               if (curfile->text[index] == NULL)
418418               {
419419                  fprintf(stderr, "Unable to allocate memory for text\n");
r4679r4680
542542             numfiles++;
543543
544544   /* allocate an array of files */
545   filearray = malloc(numfiles * sizeof(*filearray));
545   filearray = (summary_file **)malloc(numfiles * sizeof(*filearray));
546546   if (filearray == NULL)
547547   {
548548      fprintf(stderr, "Out of memory!\n");
r4679r4680
584584    HTML file with a standard header
585585-------------------------------------------------*/
586586
587static core_file *create_file_and_output_header(const astring *filename, const astring *template, const astring *title)
587static core_file *create_file_and_output_header(const astring *filename, const astring *templatefile, const astring *title)
588588{
589589   astring *modified;
590590   core_file *file;
r4679r4680
594594      return NULL;
595595
596596   /* print a header */
597   modified = astring_dup(template);
597   modified = astring_dup(templatefile);
598598   astring_replacec(modified, 0, "<!--TITLE-->", astring_c(title));
599599   core_fwrite(file, astring_c(modified), astring_len(modified));
600600
r4679r4680
609609    standard footer to an HTML file and close it
610610-------------------------------------------------*/
611611
612static void output_footer_and_close_file(core_file *file, const astring *template, const astring *title)
612static void output_footer_and_close_file(core_file *file, const astring *templatefile, const astring *title)
613613{
614614   astring *modified;
615615
616   modified = astring_dup(template);
616   modified = astring_dup(templatefile);
617617   astring_replacec(modified, 0, "<!--TITLE-->", astring_c(title));
618618   core_fwrite(file, astring_c(modified), astring_len(modified));
619619   astring_free(modified);
r4679r4680
904904         /* load the source image */
905905         pngerr = png_read_bitmap(file, &bitmaps[bitmapcount++]);
906906         core_fclose(file);
907         if (pngerr != FILERR_NONE)
907         if (pngerr != PNGERR_NONE)
908908            goto error;
909909      }
910910
r4679r4680
976976      goto error;
977977   pngerr = png_write_bitmap(file, NULL, finalbitmap, 0, NULL);
978978   core_fclose(file);
979   if (pngerr != FILERR_NONE)
979   if (pngerr != PNGERR_NONE)
980980      goto error;
981981
982982   /* if we get here, we are error free */
src/tools/ldresample.c
r4679r4680
129129   }
130130
131131   /* allocate sound buffers */
132   info->lsound = malloc(info->samplerate * sizeof(*info->lsound));
133   info->rsound = malloc(info->samplerate * sizeof(*info->rsound));
132   info->lsound = (INT16 *)malloc(info->samplerate * sizeof(*info->lsound));
133   info->rsound = (INT16 *)malloc(info->samplerate * sizeof(*info->rsound));
134134   if (info->lsound == NULL || info->rsound == NULL)
135135   {
136136      fprintf(stderr, "Out of memory allocating sound buffers of %d bytes\n", (INT32)(info->samplerate * sizeof(*info->rsound)));
src/tools/chdman.c
r4679r4680
519519   outputfile = argv[3];
520520
521521   /* allocate a cache */
522   cache = malloc(hunksize);
522   cache = (UINT8 *)malloc(hunksize);
523523   if (cache == NULL)
524524   {
525525      fprintf(stderr, "Out of memory allocating temporary buffer\n");
r4679r4680
933933   /* allocate space for the frame data */
934934   if (height == 524/2 || height == 624/2)
935935   {
936      ldframedata = malloc(numframes * VBI_PACKED_BYTES);
936      ldframedata = (UINT8 *)malloc(numframes * VBI_PACKED_BYTES);
937937      if (ldframedata == NULL)
938938      {
939939         fprintf(stderr, "Out of memory allocating frame metadata\n");
r4679r4680
961961   avconfig.channels = channels;
962962   for (chnum = 0; chnum < channels; chnum++)
963963   {
964      avconfig.audio[chnum] = malloc(max_samples_per_frame * 2);
964      avconfig.audio[chnum] = (INT16 *)malloc(max_samples_per_frame * 2);
965965      if (avconfig.audio[chnum] == NULL)
966966      {
967967         fprintf(stderr, "Out of memory allocating temporary audio buffer\n");
r4679r4680
11431143   }
11441144
11451145   /* alloc and zero buffer*/
1146   cache = malloc(hunksize);
1146   cache = (UINT8 *)malloc(hunksize);
11471147   if (cache == NULL)
11481148   {
11491149      fprintf(stderr, "Error allocating memory buffer\n");
r4679r4680
16081608   avconfig.actsamples = &numsamples;
16091609   for (chnum = 0; chnum < channels; chnum++)
16101610   {
1611      avconfig.audio[chnum] = malloc(avconfig.maxsamples * 2);
1611      avconfig.audio[chnum] = (INT16 *)malloc(avconfig.maxsamples * 2);
16121612      if (avconfig.audio[chnum] == NULL)
16131613      {
16141614         fprintf(stderr, "Out of memory allocating temporary audio buffer\n");
r4679r4680
19541954   avconfig.video = &fakebitmap;
19551955
19561956   /* allocate memory for VBI data */
1957   vbidata = malloc(header.totalhunks * VBI_PACKED_BYTES);
1957   vbidata = (UINT8 *)malloc(header.totalhunks * VBI_PACKED_BYTES);
19581958   if (vbidata == NULL)
19591959   {
19601960      fprintf(stderr, "Out of memory allocating VBI data\n");
r4679r4680
27622762   /* if it's text, strip any trailing Ctrl-Z and CR/LF and add a trailing NULL */
27632763   if (param)
27642764   {
2765      metadata = realloc(metadata, metalength + 1);
2765      metadata = (UINT8 *)realloc(metadata, metalength + 1);
27662766      if (metadata == NULL)
27672767      {
27682768         fprintf(stderr, "Out of memory preparing metadata\n");
r4679r4680
28382838
28392839   /* get the header */
28402840   header = chd_get_header(chd);
2841   cache = malloc(header->hunkbytes);
2841   cache = (UINT8 *)malloc(header->hunkbytes);
28422842   if (cache == NULL)
28432843   {
28442844      err = CHDERR_OUT_OF_MEMORY;
r4679r4680
29092909
29102910   /* get the header */
29112911   header = chd_get_header(chd);
2912   cache = malloc(header->hunkbytes);
2912   cache = (UINT8 *)malloc(header->hunkbytes);
29132913   if (cache == NULL)
29142914   {
29152915      err = CHDERR_OUT_OF_MEMORY;
r4679r4680
29182918
29192919   /* get the source CHD header */
29202920   source_header = chd_get_header(source);
2921   source_cache = malloc(source_header->hunkbytes);
2921   source_cache = (UINT8 *)malloc(source_header->hunkbytes);
29222922   if (source_cache == NULL)
29232923   {
29242924      err = CHDERR_OUT_OF_MEMORY;
r4679r4680
31663166      { "-addmetatext",   do_addmeta, TRUE },
31673167      { "-addmetabin",    do_addmeta, FALSE },
31683168   };
3169   extern char build_version[];
3169   extern const char build_version[];
31703170   int i;
31713171
31723172   /* print the header */
src/tools/romcmp.c
r4679r4680
405405   else fullname[0] = 0;
406406   strcat(fullname,file->name);
407407
408   if ((file->buf = malloc(file->size)) == 0)
408   if ((file->buf = (unsigned char *)malloc(file->size)) == 0)
409409   {
410410      printf("%s: out of memory!\n",file->name);
411411      return;
r4679r4680
522522            else
523523               strcpy(file->name,zipent->filename);
524524            file->size = zipent->uncompressed_length;
525            if ((file->buf = malloc(file->size)) == 0)
525            if ((file->buf = (unsigned char *)malloc(file->size)) == 0)
526526               printf("%s: out of memory!\n",file->name);
527527            else
528528            {
src/osd/windows/output.c
r4679r4680
228228      }
229229
230230   // add us to the end
231   *client = (registered_client *)malloc_or_die(sizeof(**client));
231   *client = alloc_or_die(registered_client);
232232   (*client)->next = NULL;
233233   (*client)->id = id;
234234   (*client)->hwnd = hwnd;
r4679r4680
287287
288288   // allocate memory for the message
289289   datalen = sizeof(*temp) + strlen(name);
290   temp = (copydata_id_string *)malloc_or_die(datalen);
290   temp = (copydata_id_string *)alloc_array_or_die(UINT8, datalen);
291291   temp->id = id;
292292   strcpy(temp->string, name);
293293
src/osd/windows/windows.mak
r4679r4680
207207# add the windows libraries
208208LIBS += -luser32 -lgdi32 -lddraw -ldsound -ldxguid -lwinmm -ladvapi32 -lcomctl32 -lshlwapi
209209
210ifdef CPP_COMPILE
211LIBS += -lsupc++
212endif
213
210214ifeq ($(DIRECTINPUT),8)
211215LIBS += -ldinput8
212216CCOMFLAGS += -DDIRECTINPUT_VERSION=0x0800
src/osd/windows/winprefix.h
r4679r4680
1313#include <stdlib.h>
1414#include <malloc.h>
1515
16#ifdef __cplusplus
17extern "C" {
18#endif
19
1620// override malloc/calloc/realloc/free to track file/line
1721void *malloc_file_line(size_t size, const char *file, int line);
1822void *calloc_file_line(size_t size, size_t count, const char *FILE, int line);
1923void *realloc_file_line(void *memory, size_t size, const char *file, int line);
2024void free_file_line(void *memory, const char *file, int line);
2125
26#ifdef __cplusplus
27};
28#endif
29
2230#undef malloc
2331#define malloc(x) malloc_file_line(x, __FILE__, __LINE__)
2432#undef calloc
src/osd/windows/drawgdi.c
r4679r4680
8989   int i;
9090
9191   // allocate memory for our structures
92   gdi = (gdi_info *)malloc_or_die(sizeof(*gdi));
93   memset(gdi, 0, sizeof(*gdi));
92   gdi = alloc_clear_or_die(gdi_info);
9493   window->drawdata = gdi;
9594
9695   // fill in the bitmap info header
src/osd/windows/d3d8intf.c
r4679r4680
104104   }
105105
106106   // allocate an object to hold our data
107   d3dptr = (d3d *)malloc_or_die(sizeof(*d3dptr));
107   d3dptr = alloc_or_die(d3d);
108108   d3dptr->version = 8;
109109   d3dptr->d3dobj = d3d8;
110110   d3dptr->dllhandle = dllhandle;
src/osd/windows/d3d9intf.c
r4679r4680
102102   }
103103
104104   // allocate an object to hold our data
105   d3dptr = (d3d *)malloc_or_die(sizeof(*d3dptr));
105   d3dptr = alloc_or_die(d3d);
106106   d3dptr->version = 9;
107107   d3dptr->d3dobj = d3d9;
108108   d3dptr->dllhandle = dllhandle;
src/osd/windows/input.c
r4679r4680
794794   device_info *devinfo;
795795
796796   // allocate memory for the device object
797   devinfo = (device_info *)malloc_or_die(sizeof(*devinfo));
798   memset(devinfo, 0, sizeof(*devinfo));
797   devinfo = alloc_clear_or_die(device_info);
799798   devinfo->head = devlist_head_ptr;
800799   devinfo->machine = machine;
801800
r4679r4680
12671266      return utf8_from_tstring(namestring);
12681267
12691268   // otherwise, allocate space to add the suffix
1270   combined = (TCHAR *)malloc_or_die(sizeof(TCHAR) * (_tcslen(namestring) + 1 + _tcslen(suffix) + 1));
1269   combined = alloc_array_or_die(TCHAR, _tcslen(namestring) + 1 + _tcslen(suffix) + 1);
12711270   _tcscpy(combined, namestring);
12721271   _tcscat(combined, TEXT(" "));
12731272   _tcscat(combined, suffix);
r4679r4680
16521651      goto error;
16531652   if (device_count == 0)
16541653      goto error;
1655   devlist = (RAWINPUTDEVICELIST *)malloc_or_die(device_count * sizeof(*devlist));
1654   devlist = alloc_array_or_die(RAWINPUTDEVICELIST, device_count);
16561655   if ((*get_rawinput_device_list)(devlist, &device_count, sizeof(*devlist)) == -1)
16571656      goto error;
16581657
r4679r4680
17321731   // determine the length of the device name, allocate it, and fetch it
17331732   if ((*get_rawinput_device_info)(device->hDevice, RIDI_DEVICENAME, NULL, &name_length) != 0)
17341733      goto error;
1735   tname = (TCHAR *)malloc_or_die(name_length * sizeof(*tname));
1734   tname = alloc_array_or_die(TCHAR, name_length);
17361735   if ((*get_rawinput_device_info)(device->hDevice, RIDI_DEVICENAME, tname, &name_length) == -1)
17371736      goto error;
17381737
r4679r4680
17961795      return name;
17971796
17981797   // allocate a temporary string and concatenate the base path plus the name
1799   regpath = (TCHAR *)malloc_or_die(sizeof(*regpath) * (_tcslen(basepath) + 1 + _tcslen(name)));
1798   regpath = alloc_array_or_die(TCHAR, _tcslen(basepath) + 1 + _tcslen(name));
18001799   _tcscpy(regpath, basepath);
18011800   chdst = regpath + _tcslen(regpath);
18021801
r4679r4680
19081907      chsrc++;
19091908   else
19101909      chsrc = regstring;
1911   name = (TCHAR *)malloc_or_die(sizeof(*name) * (_tcslen(chsrc) + 1));
1910   name = alloc_array_or_die(TCHAR, _tcslen(chsrc) + 1);
19121911   _tcscpy(name, chsrc);
19131912
19141913exit:
r4679r4680
21292128      return NULL;
21302129
21312130   // allocate a buffer
2132   buffer = (TCHAR *)malloc_or_die(datalen + sizeof(*buffer));
2131   buffer = alloc_array_or_die(TCHAR, datalen + sizeof(*buffer));
21332132   buffer[datalen / sizeof(*buffer)] = 0;
21342133
21352134   // now get the actual data
src/osd/windows/ledutil.c
r4679r4680
381381      return 1;
382382
383383   // allocate memory
384   entry = malloc(sizeof(*entry));
384   entry = (id_map_entry *)malloc(sizeof(*entry));
385385   if (entry == NULL)
386386      return 0;
387387
388   string = malloc(strlen(data->string) + 1);
388   string = (char *)malloc(strlen(data->string) + 1);
389389   if (string == NULL)
390390   {
391391      free(entry);
src/osd/windows/debugwin.c
r4679r4680
503503   RECT work_bounds;
504504
505505   // allocate memory
506   info = (debugwin_info *)malloc_or_die(sizeof(*info));
507   memset(info, 0, sizeof(*info));
506   info = alloc_clear_or_die(debugwin_info);
508507
509508   // create the window
510509   info->handler = handler;
r4679r4680
22422241
22432242                     /* if it doesn't exist, add a new one */
22442243                     if (bpindex == -1)
2245                        sprintf(command, "bpset %X", address);
2244                        sprintf(command, "bpset 0x%X", address);
22462245                     else
2247                        sprintf(command, "bpclear %X", bpindex);
2246                        sprintf(command, "bpclear 0x%X", bpindex);
22482247                     debug_console_execute_command(info->machine, command, 1);
22492248                  }
22502249               }
src/osd/windows/drawdd.c
r4679r4680
249249   dd_info *dd;
250250
251251   // allocate memory for our structures
252   dd = (dd_info *)malloc_or_die(sizeof(*dd));
253   memset(dd, 0, sizeof(*dd));
252   dd = alloc_clear_or_die(dd_info);
254253   window->drawdata = dd;
255254
256255   // configure the adapter for the mode we want
src/osd/windows/video.c
r4679r4680
255255   assert(result);
256256
257257   // allocate a new monitor info
258   monitor = (win_monitor_info *)malloc_or_die(sizeof(*monitor));
259   memset(monitor, 0, sizeof(*monitor));
258   monitor = alloc_clear_or_die(win_monitor_info);
260259
261260   // copy in the data
262261   monitor->handle = handle;
r4679r4680
439438static void load_effect_overlay(running_machine *machine, const char *filename)
440439{
441440   const device_config *screen;
442   char *tempstr = (char *)malloc_or_die(strlen(filename) + 5);
441   char *tempstr = alloc_array_or_die(char, strlen(filename) + 5);
443442   char *dest;
444443
445444   // append a .PNG extension
src/osd/windows/window.c
r4679r4680
582582   assert(GetCurrentThreadId() == main_threadid);
583583
584584   // allocate a new window object
585   window = (win_window_info *)malloc_or_die(sizeof(*window));
586   memset(window, 0, sizeof(*window));
585   window = alloc_clear_or_die(win_window_info);
587586   window->maxwidth = config->width;
588587   window->maxheight = config->height;
589588   window->refresh = config->refresh;
src/osd/windows/winalloc.c
r4679r4680
155155      rounded_size = ((size + PAGE_SIZE - 1) / PAGE_SIZE) * PAGE_SIZE;
156156
157157      // reserve that much memory, plus two guard pages
158      page_base = VirtualAlloc(NULL, rounded_size + 2 * PAGE_SIZE, MEM_RESERVE, PAGE_NOACCESS);
158      page_base = (UINT8 *)VirtualAlloc(NULL, rounded_size + 2 * PAGE_SIZE, MEM_RESERVE, PAGE_NOACCESS);
159159      if (page_base == NULL)
160160         return NULL;
161161
162162      // now allow access to everything but the first and last pages
163      page_base = VirtualAlloc(page_base + PAGE_SIZE, rounded_size, MEM_COMMIT, PAGE_READWRITE);
163      page_base = (UINT8 *)VirtualAlloc(page_base + PAGE_SIZE, rounded_size, MEM_COMMIT, PAGE_READWRITE);
164164      if (page_base == NULL)
165165         return NULL;
166166
src/osd/windows/drawd3d.c
r4679r4680
500500   d3d_info *d3d;
501501
502502   // allocate memory for our structures
503   d3d = (d3d_info *)malloc_or_die(sizeof(*d3d));
504   memset(d3d, 0, sizeof(*d3d));
503   d3d = alloc_clear_or_die(d3d_info);
505504   window->drawdata = d3d;
506505
507506   // experimental: load a PNG to use for vector rendering; it is treated
r4679r4680
16581657   HRESULT result;
16591658
16601659   // allocate a new texture
1661   texture = (texture_info *)malloc_or_die(sizeof(*texture));
1662   memset(texture, 0, sizeof(*texture));
1660   texture = alloc_clear_or_die(texture_info);
16631661
16641662   // fill in the core data
16651663   texture->hash = texture_compute_hash(texsource, flags);
src/emu/romload.h
r4679r4680
328328chd_file *get_disk_handle(const char *region);
329329
330330/* set a pointer to the CHD file associated with the given region */
331void set_disk_handle(const char *region, mame_file *file, chd_file *chd);
331void set_disk_handle(running_machine *machine, const char *region, mame_file *file, chd_file *chd);
332332
333333
334334#endif   /* __ROMLOAD_H__ */
src/emu/config.c
r4679r4680
9292   config_type **ptype;
9393
9494   /* allocate a new type */
95   newtype = (config_type *)auto_malloc(sizeof(*newtype));
95   newtype = auto_alloc(machine, config_type);
9696   newtype->next = NULL;
9797   newtype->name = nodename;
9898   newtype->load = load;
src/emu/debug/debugcpu.c
r4679r4680
158158   int regnum;
159159
160160   /* allocate and reset globals */
161   machine->debugcpu_data = global = (debugcpu_private *)auto_malloc(sizeof(*global));
162   memset(global, 0, sizeof(*global));
161   machine->debugcpu_data = global = auto_alloc_clear(machine, debugcpu_private);
163162   global->execution_state = EXECUTION_STATE_STOPPED;
164163   global->bpindex = 1;
165164   global->wpindex = 1;
r4679r4680
190189      cpu_debug_data *info;
191190
192191      /* allocate some information */
193      info = (cpu_debug_data *)auto_malloc(sizeof(*info));
194      memset(info, 0, sizeof(*info));
192      info = auto_alloc_clear(machine, cpu_debug_data);
195193      classheader->debug = info;
196194
197195      /* reset the PC data */
r4679r4680
983981   assert_always(device != NULL, "debug_cpu_breakpoint_set() called with invalid cpu!");
984982
985983   /* allocate breakpoint */
986   bp = (debug_cpu_breakpoint *)malloc_or_die(sizeof(*bp));
984   bp = alloc_or_die(debug_cpu_breakpoint);
987985   bp->index = global->bpindex++;
988986   bp->enabled = TRUE;
989987   bp->address = address;
r4679r4680
991989   bp->action = NULL;
992990   if (action != NULL)
993991   {
994      bp->action = (char *)malloc_or_die(strlen(action) + 1);
992      bp->action = alloc_array_or_die(char, strlen(action) + 1);
995993      strcpy(bp->action, action);
996994   }
997995
r4679r4680
10871085{
10881086   debugcpu_private *global = space->machine->debugcpu_data;
10891087   cpu_debug_data *info = cpu_get_debug_data(space->cpu);
1090   debug_cpu_watchpoint *wp = (debug_cpu_watchpoint *)malloc_or_die(sizeof(*wp));
1088   debug_cpu_watchpoint *wp = alloc_or_die(debug_cpu_watchpoint);
10911089
10921090   /* fill in the structure */
10931091   wp->index = global->wpindex++;
r4679r4680
10991097   wp->action = NULL;
11001098   if (action != NULL)
11011099   {
1102      wp->action = (char *)malloc_or_die(strlen(action) + 1);
1100      wp->action = alloc_array_or_die(char, strlen(action) + 1);
11031101      strcpy(wp->action, action);
11041102   }
11051103
r4679r4680
12451243   info->trace.trace_over_target = ~0;
12461244   if (action != NULL)
12471245   {
1248      info->trace.action = (char *)malloc_or_die(strlen(action) + 1);
1246      info->trace.action = alloc_array_or_die(char, strlen(action) + 1);
12491247      strcpy(info->trace.action, action);
12501248   }
12511249
r4679r4680
13131311   if (numspots > 0)
13141312   {
13151313      /* allocate memory for hotspots */
1316      info->hotspots = (debug_hotspot_entry *)malloc_or_die(sizeof(*info->hotspots) * numspots);
1314      info->hotspots = alloc_array_or_die(debug_hotspot_entry, numspots);
13171315      memset(info->hotspots, 0xff, sizeof(*info->hotspots) * numspots);
13181316
13191317      /* fill in the info */
src/emu/debug/debugvw.c
r4679r4680
342342   debugvw_private *global;
343343
344344   /* allocate memory for our globals */
345   global = machine->debugvw_data = (debugvw_private *)auto_malloc(sizeof(*machine->debugvw_data));
346   memset(global, 0, sizeof(*global));
345   global = machine->debugvw_data = auto_alloc_clear(machine, debugvw_private);
347346
348347   /* register for some manual cleanup */
349348   add_exit_callback(machine, debug_view_exit);
r4679r4680
10531052
10541053      /* determine the string and allocate a subview large enough */
10551054      astring_printf(tempstring, "CPU '%s' (%s)", cpu->tag, cpu_get_name(cpu));
1056      subview = (registers_subview_item *)auto_malloc(sizeof(*subview) + astring_len(tempstring));
1057      memset(subview, 0, sizeof(*subview));
1055      subview = (registers_subview_item *)auto_alloc_array_clear(machine, UINT8, sizeof(*subview) + astring_len(tempstring));
10581056
10591057      /* populate the subview */
10601058      subview->next = NULL;
r4679r4680
15231521
15241522         /* determine the string and allocate a subview large enough */
15251523         astring_printf(tempstring, "CPU '%s' (%s)", cpu->tag, cpu_get_name(cpu));
1526         subview = (disasm_subview_item *)auto_malloc(sizeof(*subview) + astring_len(tempstring));
1527         memset(subview, 0, sizeof(*subview));
1524         subview = (disasm_subview_item *)auto_alloc_array_clear(machine, UINT8, sizeof(*subview) + astring_len(tempstring));
15281525
15291526         /* populate the subview */
15301527         subview->next = NULL;
r4679r4680
18811878      /* allocate address array */
18821879      if (dasmdata->byteaddress != NULL)
18831880         free(dasmdata->byteaddress);
1884      dasmdata->byteaddress = (offs_t *)malloc_or_die(sizeof(dasmdata->byteaddress[0]) * dasmdata->allocated.y);
1881      dasmdata->byteaddress = alloc_array_or_die(offs_t, dasmdata->allocated.y);
18851882
18861883      /* allocate disassembly buffer */
18871884      if (dasmdata->dasm != NULL)
18881885         free(dasmdata->dasm);
1889      dasmdata->dasm = (char *)malloc_or_die(sizeof(dasmdata->dasm[0]) * dasmdata->allocated.x * dasmdata->allocated.y);
1886      dasmdata->dasm = alloc_array_or_die(char, dasmdata->allocated.x * dasmdata->allocated.y);
18901887   }
18911888
18921889   /* iterate over lines */
r4679r4680
24462443
24472444            /* determine the string and allocate a subview large enough */
24482445            astring_printf(tempstring, "CPU '%s' (%s) %s memory", cpu->tag, cpu_get_name(cpu), space->name);
2449            subview = (memory_subview_item *)auto_malloc(sizeof(*subview) + astring_len(tempstring));
2450            memset(subview, 0, sizeof(*subview));
2446            subview = (memory_subview_item *)auto_alloc_array_clear(machine, UINT8, sizeof(*subview) + astring_len(tempstring));
24512447
24522448            /* populate the subview */
24532449            subview->next = NULL;
r4679r4680
24762472
24772473         /* determine the string and allocate a subview large enough */
24782474         astring_printf(tempstring, "Region '%s'", rgntag);
2479         subview = (memory_subview_item *)auto_malloc(sizeof(*subview) + astring_len(tempstring));
2480         memset(subview, 0, sizeof(*subview));
2475         subview = (memory_subview_item *)auto_alloc_array_clear(machine, UINT8, sizeof(*subview) + astring_len(tempstring));
24812476
24822477         /* populate the subview */
24832478         subview->next = NULL;
r4679r4680
25142509
25152510         /* determine the string and allocate a subview large enough */
25162511         astring_printf(tempstring, "%s", strrchr(name, '/') + 1);
2517         subview = (memory_subview_item *)auto_malloc(sizeof(*subview) + astring_len(tempstring));
2518         memset(subview, 0, sizeof(*subview));
2512         subview = (memory_subview_item *)auto_alloc_array_clear(machine, UINT8, sizeof(*subview) + astring_len(tempstring));
25192513
25202514         /* populate the subview */
25212515         subview->next = NULL;
src/emu/debug/debugcon.c
r4679r4680
404404   assert_always(mame_get_phase(machine) == MAME_PHASE_INIT, "Can only call debug_console_register_command() at init time!");
405405   assert_always((machine->debug_flags & DEBUG_FLAG_ENABLED) != 0, "Cannot call debug_console_register_command() when debugger is not running");
406406
407   cmd = (debug_command *)auto_malloc(sizeof(*cmd));
408   memset(cmd, 0, sizeof(*cmd));
407   cmd = auto_alloc_clear(machine, debug_command);
409408
410409   /* fill in the command */
411410   strcpy(cmd->command, command);
src/emu/debug/debugcmt.c
r4679r4680
110110   if (numcpu > 0)
111111   {
112112      /* allocate enough comment groups for the total # of cpu's */
113      debug_comments = (comment_group*) auto_malloc(numcpu * sizeof(comment_group));
114      memset(debug_comments, 0, numcpu * sizeof(comment_group));
113      debug_comments = auto_alloc_array_clear(machine, comment_group, numcpu);
115114
116115      /* automatically load em up */
117116      debug_comment_load(machine);
r4679r4680
137136   int match = 0;
138137
139138   /* Create a new item to insert into the list */
140   debug_comment *insert_me = (debug_comment*) malloc_or_die(sizeof(debug_comment));
139   debug_comment *insert_me = alloc_or_die(debug_comment);
141140   insert_me->color = color;
142141   insert_me->is_valid = 1;
143142   insert_me->address = addr;
src/emu/cpu/h83002/h8_16.c
r4679r4680
291291   case 16: // IRQ4
292292   case 17: // IRQ5
293293      if (h8->per_regs[0xF8]&0x10) res = 1; break;
294   case 53: // SCI0 Rx
295      if (h8->per_regs[0xB2]&0x40) res = 1; break;
296   case 57: // SCI1 Rx
297      if (h8->per_regs[0xBA]&0x40) res = 1; break;
294298   }
295299   return res;
296300}
src/emu/cpu/h83002/h8_8.c
r4679r4680
7373   return h8_disasm(buffer, pc, oprom, opram, 0xffff);
7474}
7575
76static void h8_300_InterruptRequest(h83xx_state *h8, UINT8 source)
76static void h8_300_InterruptRequest(h83xx_state *h8, UINT8 source, UINT8 mode)
7777{
78   if(source>31)
78   if (source>31)
7979   {
80      h8->h8_IRQrequestH |= (1<<(source-32));
80      if (mode)
81      {
82         h8->h8_IRQrequestH |= (1<<(source-32));
83      }
84      else
85      {
86         h8->h8_IRQrequestH &= ~(1<<(source-32));
87      }
8188   }
8289   else
8390   {
84      h8->h8_IRQrequestL |= (1<<source);
91      if (mode)
92      {
93         h8->h8_IRQrequestL |= (1<<source);
94      }
95      else
96      {
97         h8->h8_IRQrequestL &= ~(1<<source);
98      }
8599   }
86100}
87101
r4679r4680
267281      h8_set_ccr(h8, h8_get_ccr(h8) | 0x40);
268282   h8->pc = h8_mem_read16(h8, vectornr * 2) & 0xffff;
269283
270   // I couldn't find timing info for exceptions, so this is a guess (based on JSR/BSR)
271   H8_IFETCH_TIMING(2);
272   H8_STACK_TIMING(2);
284   // these timings are still approximations but much better than before
285   H8_IFETCH_TIMING(8);   // 24 cycles
286   H8_STACK_TIMING(3);   // 12 cycles
273287}
274288
275289static int h8_get_priority(h83xx_state *h8, UINT8 bit)
r4679r4680
277291   int res = 0;
278292   switch(bit)
279293   {
280   case 12: // IRQ0
281      if (h8->per_regs[0xF8]&0x80) res = 1; break;
282   case 13: // IRQ1
283      if (h8->per_regs[0xF8]&0x40) res = 1; break;
284   case 14: // IRQ2
285   case 15: // IRQ3
286      if (h8->per_regs[0xF8]&0x20) res = 1; break;
287   case 16: // IRQ4
288   case 17: // IRQ5
289      if (h8->per_regs[0xF8]&0x10) res = 1; break;
294   case 3: // NMI
295      res = 2; break;
296   case 4: // IRQ0
297      if (h8->per_regs[0xc7]&0x01) res = 1; break;
298   case 5: // IRQ1
299      if (h8->per_regs[0xc7]&0x02) res = 1; break;
300   case 6: // IRQ2
301      if (h8->per_regs[0xc7]&0x04) res = 1; break;
302   case 7: // IRQ3
303      if (h8->per_regs[0xc7]&0x08) res = 1; break;
304   case 8: // IRQ4
305      if (h8->per_regs[0xc7]&0x10) res = 1; break;
306   case 9: // IRQ5
307      if (h8->per_regs[0xc7]&0x20) res = 1; break;
308   case 10: // IRQ6
309      if (h8->per_regs[0xc7]&0x40) res = 1; break;
310   case 11: // IRQ7
311      if (h8->per_regs[0xc7]&0x80) res = 1; break;
312   case 28: // SCI0 Rx
313      if (h8->per_regs[0xda]&0x40) res = 1; break;
314   case 32: // SCI1 Rx
315      if (h8->per_regs[0x8a]&0x40) res = 1; break;
290316   }
291317   return res;
292318}
293319
294320static void h8_check_irqs(h83xx_state *h8)
295321{
296   int lv = -1;
322   int lv = 0;
297323
298   if (h8->h8iflag == 0)
324   if (h8->h8iflag != 0)
299325   {
300      lv = 0;
326      lv = 2;
301327   }
302328
303329   // any interrupts wanted and can accept ?
r4679r4680
312338            if (h8_get_priority(h8, bit) >= lv)
313339            {
314340               // mask off
315               h8->h8_IRQrequestL &= ~(1<<bit);
316341               source = bit;
317342            }
318343         }
r4679r4680
325350            if (h8_get_priority(h8, bit + 32) >= lv)
326351            {
327352               // mask off
328               h8->h8_IRQrequestH &= ~(1<<bit);
329353               source = bit + 32;
330354            }
331355         }
r4679r4680
367391   case CPUINFO_INT_REGISTER + H8_E6:         h8->regs[6] = info->i;                     break;
368392   case CPUINFO_INT_REGISTER + H8_E7:         h8->regs[7] = info->i;                     break;
369393
370   case CPUINFO_INT_INPUT_STATE + H8_NMI:      if (info->i) h8_300_InterruptRequest(h8, 3);      break;
371   case CPUINFO_INT_INPUT_STATE + H8_IRQ0:      if (info->i) h8_300_InterruptRequest(h8, 4);      break;
372   case CPUINFO_INT_INPUT_STATE + H8_IRQ1:      if (info->i) h8_300_InterruptRequest(h8, 5);      break;
373   case CPUINFO_INT_INPUT_STATE + H8_IRQ2:      if (info->i) h8_300_InterruptRequest(h8, 6);      break;
374   case CPUINFO_INT_INPUT_STATE + H8_IRQ3:      if (info->i) h8_300_InterruptRequest(h8, 7);      break;
375   case CPUINFO_INT_INPUT_STATE + H8_IRQ4:      if (info->i) h8_300_InterruptRequest(h8, 8);      break;
376   case CPUINFO_INT_INPUT_STATE + H8_IRQ5:      if (info->i) h8_300_InterruptRequest(h8, 9);      break;
377   case CPUINFO_INT_INPUT_STATE + H8_IRQ6:      if (info->i) h8_300_InterruptRequest(h8, 10);      break;
378   case CPUINFO_INT_INPUT_STATE + H8_IRQ7:      if (info->i) h8_300_InterruptRequest(h8, 11);      break;
394   case CPUINFO_INT_INPUT_STATE + H8_NMI:      h8_300_InterruptRequest(h8, 3, info->i);      break;
395   case CPUINFO_INT_INPUT_STATE + H8_IRQ0:      h8_300_InterruptRequest(h8, 4, info->i);      break;
396   case CPUINFO_INT_INPUT_STATE + H8_IRQ1:      h8_300_InterruptRequest(h8, 5, info->i);      break;
397   case CPUINFO_INT_INPUT_STATE + H8_IRQ2:      h8_300_InterruptRequest(h8, 6, info->i);      break;
398   case CPUINFO_INT_INPUT_STATE + H8_IRQ3:      h8_300_InterruptRequest(h8, 7, info->i);      break;
399   case CPUINFO_INT_INPUT_STATE + H8_IRQ4:      h8_300_InterruptRequest(h8, 8, info->i);      break;
400   case CPUINFO_INT_INPUT_STATE + H8_IRQ5:      h8_300_InterruptRequest(h8, 9, info->i);      break;
401   case CPUINFO_INT_INPUT_STATE + H8_IRQ6:      h8_300_InterruptRequest(h8, 10, info->i);      break;
402   case CPUINFO_INT_INPUT_STATE + H8_IRQ7:      h8_300_InterruptRequest(h8, 11, info->i);      break;
379403
380   case CPUINFO_INT_INPUT_STATE + H8_SCI_0_RX:   if (info->i) h8_300_InterruptRequest(h8, 28);      break;
381   case CPUINFO_INT_INPUT_STATE + H8_SCI_1_RX:   if (info->i) h8_300_InterruptRequest(h8, 32);      break;
404   case CPUINFO_INT_INPUT_STATE + H8_SCI_0_RX:   h8_300_InterruptRequest(h8, 28, info->i);      break;
405   case CPUINFO_INT_INPUT_STATE + H8_SCI_1_RX:   h8_300_InterruptRequest(h8, 32, info->i);      break;
382406
383407   default:
384408      fatalerror("h8_set_info unknown request %x", state);
src/emu/cpu/h83002/h8ops.h
r4679r4680
12581258      if(opcode == 0x5670)
12591259      {
12601260         // restore CCR
1261         udata16 = h8_mem_read16(h8, h8_getreg32(h8, H8_SP));
1261         udata8 = (UINT8)h8_mem_read16(h8, h8_getreg32(h8, H8_SP));
12621262         h8_setreg32(h8, H8_SP, h8_getreg32(h8, H8_SP)+2);
12631263
12641264         // check if PC is 16 or 24/32 bits wide
r4679r4680
12791279            h8->pc = udata32;
12801280         }
12811281         // must do this last, because set_ccr() does a check_irq()
1282         h8_set_ccr(h8, (UINT8)udata16);
1282         h8_set_ccr(h8, udata8);
12831283         H8_IFETCH_TIMING(2);
12841284         H8_STACK_TIMING(2);
12851285         H8_IOP_TIMING(2);
src/emu/cpu/m68000/m68000.h
r4679r4680
6161   M68K_GENPCBASE = REG_GENPCBASE
6262};
6363
64enum
65{
66   CPUINFO_FCT_M68K_RESET_CALLBACK = CPUINFO_FCT_CPU_SPECIFIC,
67   CPUINFO_FCT_M68K_CMPILD_CALLBACK,
68   CPUINFO_FCT_M68K_RTE_CALLBACK,
69   CPUINFO_FCT_M68K_TAS_CALLBACK
70};
71
7264typedef void (*m68k_bkpt_ack_func)(const device_config *device, UINT32 data);
7365typedef void (*m68k_reset_func)(const device_config *device);
7466typedef void (*m68k_cmpild_func)(const device_config *device, UINT32 data, UINT8 reg);
r4679r4680
9486
9587unsigned int m68k_disassemble_raw(char* str_buff, unsigned int pc, const unsigned char* opdata, const unsigned char* argdata, unsigned int cpu_type);
9688
89void m68k_set_reset_callback(const device_config *device, m68k_reset_func callback);
90void m68k_set_cmpild_callback(const device_config *device, m68k_cmpild_func callback);
91void m68k_set_rte_callback(const device_config *device, m68k_rte_func callback);
92void m68k_set_tas_callback(const device_config *device, m68k_tas_func callback);
93
9794#endif /* __M68000_H__ */
src/emu/cpu/m68000/m68kcpu.c
r4679r4680
757757      case CPUINFO_INT_INPUT_STATE + INPUT_LINE_NMI:
758758         set_irq_line(m68k, state - CPUINFO_INT_INPUT_STATE, info->i);
759759         break;
760
761      /* --- the following bits of info are set as pointers to data or functions --- */
762      case CPUINFO_FCT_M68K_RESET_CALLBACK:      m68k->reset_instr_callback = (m68k_reset_func)info->f; break;
763      case CPUINFO_FCT_M68K_CMPILD_CALLBACK:      m68k->cmpild_instr_callback = (m68k_cmpild_func)info->f; break;
764      case CPUINFO_FCT_M68K_RTE_CALLBACK:         m68k->rte_instr_callback = (m68k_rte_func)info->f; break;
765      case CPUINFO_FCT_M68K_TAS_CALLBACK:         m68k->tas_instr_callback = (m68k_tas_func)info->f; break;
766760   }
767761}
768762
r4679r4680
980974
981975
982976
977
978void m68k_set_reset_callback(const device_config *device, m68k_reset_func callback)
979{
980   m68ki_cpu_core *m68k = get_safe_token(device);
981   m68k->reset_instr_callback = callback;
982}
983
984void m68k_set_cmpild_callback(const device_config *device, m68k_cmpild_func callback)
985{
986   m68ki_cpu_core *m68k = get_safe_token(device);
987   m68k->cmpild_instr_callback = callback;
988}
989
990void m68k_set_rte_callback(const device_config *device, m68k_rte_func callback)
991{
992   m68ki_cpu_core *m68k = get_safe_token(device);
993   m68k->rte_instr_callback = callback;
994}
995
996void m68k_set_tas_callback(const device_config *device, m68k_tas_func callback)
997{
998   m68ki_cpu_core *m68k = get_safe_token(device);
999   m68k->tas_instr_callback = callback;
1000}
1001
1002
9831003/****************************************************************************
9841004 * 68000 section
9851005 ****************************************************************************/
src/emu/cpu/tms34010/tms34010.c
r4679r4680
704704   timer_adjust_oneshot(tms->scantimer, attotime_zero, 0);
705705
706706   /* allocate the shiftreg */
707   tms->shiftreg = (UINT16 *)auto_malloc(SHIFTREG_SIZE);
707   tms->shiftreg = auto_alloc_array(device->machine, UINT16, SHIFTREG_SIZE/2);
708708
709709   state_save_register_device_item(device, 0, tms->pc);
710710   state_save_register_device_item(device, 0, tms->st);
src/emu/cpu/m37710/m37710.c
r4679r4680
6262
6363/* interrupt control mapping */
6464
65extern const int m37710_irq_levels[M37710_LINE_MAX];
6566const int m37710_irq_levels[M37710_LINE_MAX] =
6667{
6768   // maskable
src/emu/cpu/m37710/m37710op.h
r4679r4680
27212721OP(249, OP_RLA   ( IMM         ) ) /* RLA imm     */
27222722OP(2c2, OP_LDT   ( IMM         ) ) /* LDT imm     */
27232723
2724extern TABLE_OPCODES;
27242725TABLE_OPCODES =
27252726{
27262727   O(00),O(01),O(02),O(03),O(04),O(05),O(06),O(07),
r4679r4680
27572758   O(f8),O(f9),O(fa),O(fb),O(fc),O(fd),O(fe),O(ff)
27582759};
27592760
2761extern TABLE_OPCODES2;
27602762TABLE_OPCODES2 =
27612763{
27622764   O(200),O(101),O(200),O(103),O(200),O(105),O(200),O(107),
r4679r4680
27932795   O(200),O(200),O(200),O(200),O(200),O(200),O(200),O(200)
27942796};
27952797
2798extern TABLE_OPCODES3;
27962799TABLE_OPCODES3 =
27972800{
27982801   O(200),O(200),O(200),O(203),O(200),O(205),O(200),O(200),
src/emu/cpu/sharc/sharc.c
r4679r4680
445445
446446   build_opcode_table();
447447
448   cpustate->internal_ram = (UINT16 *)auto_malloc(2 * 0x10000 * sizeof(UINT16));      // 2x 128KB
448   cpustate->internal_ram = auto_alloc_array(device->machine, UINT16, 2 * 0x10000);      // 2x 128KB
449449   cpustate->internal_ram_block0 = &cpustate->internal_ram[0];
450450   cpustate->internal_ram_block1 = &cpustate->internal_ram[0x20000/2];
451451
src/emu/cpu/z180/z180.c
r4679r4680
20672067   int oldval, newval, val;
20682068   UINT8 *padd, *padc, *psub, *psbc;
20692069   /* allocate big flag arrays once */
2070   SZHVC_add = (UINT8 *)auto_malloc(2*256*256);
2071   SZHVC_sub = (UINT8 *)auto_malloc(2*256*256);
2070   SZHVC_add = auto_alloc_array(device->machine, UINT8, 2*256*256);
2071   SZHVC_sub = auto_alloc_array(device->machine, UINT8, 2*256*256);
20722072   padd = &SZHVC_add[   0*256];
20732073   padc = &SZHVC_add[256*256];
20742074   psub = &SZHVC_sub[   0*256];
src/emu/cpu/drcfe.c
r4679r4680
9797   if (desc != NULL)
9898      drcfe->desc_free_list = desc->next;
9999   else
100      desc = (opcode_desc *)malloc_or_die(sizeof(*desc));
100      desc = alloc_or_die(opcode_desc);
101101   return desc;
102102}
103103
r4679r4680
128128   drcfe_state *drcfe;
129129
130130   /* allocate some memory to hold the state */
131   drcfe = (drcfe_state *)malloc_or_die(sizeof(*drcfe));
132   memset(drcfe, 0, sizeof(*drcfe));
131   drcfe = alloc_clear_or_die(drcfe_state);
133132
134133   /* allocate the description array */
135   drcfe->desc_array = (opcode_desc **)malloc_or_die((config->window_end + config->window_start + 2) * sizeof(*drcfe->desc_array));
136   memset(drcfe->desc_array, 0, (config->window_end + config->window_start + 2) * sizeof(*drcfe->desc_array));
134   drcfe->desc_array = alloc_array_clear_or_die(opcode_desc *, config->window_end + config->window_start + 2);
137135
138136   /* copy in configuration information */
139137   drcfe->window_start = config->window_start;
src/emu/cpu/cubeqcpu/cubeqcpu.c
r4679r4680
326326   cpustate->program = memory_find_address_space(device, ADDRESS_SPACE_PROGRAM);
327327
328328   /* Allocate RAM shared with 68000 */
329   cpustate->sram = (UINT16 *)auto_malloc(4096);
329   cpustate->sram = auto_alloc_array(device->machine, UINT16, 4096/2);
330330
331331   cquestsnd_state_register(device);
332332}
r4679r4680
392392   memset(cpustate, 0, sizeof(*cpustate));
393393
394394   /* Allocate RAM */
395   cpustate->dram = (UINT16 *)auto_malloc(16384 * sizeof(UINT16));  /* Shared with 68000 */
396   cpustate->sram = (UINT16 *)auto_malloc(2048 * sizeof(UINT16));   /* Private */
395   cpustate->dram = auto_alloc_array(device->machine, UINT16, 16384);  /* Shared with 68000 */
396   cpustate->sram = auto_alloc_array(device->machine, UINT16, 2048);   /* Private */
397397
398398   cpustate->device = device;
399399   cpustate->lindevice = cputag_get_cpu(device->machine, rotconfig->lin_cpu_tag);
r4679r4680
475475   memset(cpustate, 0, sizeof(*cpustate));
476476
477477   /* Allocate RAM */
478   cpustate->sram = (UINT16 *)auto_malloc(4096 * sizeof(UINT16));      /* Shared with rotate CPU */
479   cpustate->ptr_ram = (UINT8 *)auto_malloc(1024);                    /* Pointer RAM */
480   cpustate->e_stack = (UINT32 *)auto_malloc(32768 * sizeof(UINT32));  /* Stack DRAM: 32kx20 */
481   cpustate->o_stack = (UINT32 *)auto_malloc(32768 * sizeof(UINT32));  /* Stack DRAM: 32kx20 */
478   cpustate->sram = auto_alloc_array(device->machine, UINT16, 4096);      /* Shared with rotate CPU */
479   cpustate->ptr_ram = auto_alloc_array(device->machine, UINT8, 1024);                    /* Pointer RAM */
480   cpustate->e_stack = auto_alloc_array(device->machine, UINT32, 32768);  /* Stack DRAM: 32kx20 */
481   cpustate->o_stack = auto_alloc_array(device->machine, UINT32, 32768);  /* Stack DRAM: 32kx20 */
482482
483483   cpustate->device = device;
484484   cpustate->rotdevice = cputag_get_cpu(device->machine, linconfig->rot_cpu_tag);
src/emu/cpu/x86log.c
r4679r4680
9191   x86log_context *log;
9292
9393   /* allocate the log */
94   log = (x86log_context *)malloc_or_die(sizeof(*log));
95   memset(log, 0, sizeof(*log));
94   log = alloc_clear_or_die(x86log_context);
9695
9796   /* allocate the filename */
9897   log->filename = astring_dupc(filename);
src/emu/cpu/se3208/se3208.c
r4679r4680
17051705{
17061706   int i;
17071707   if(!OpTable)
1708      OpTable=(_OP *)malloc_or_die(sizeof(_OP)*0x10000);
1708      OpTable=alloc_array_or_die(_OP, 0x10000);
17091709   for(i=0;i<0x10000;++i)
17101710      OpTable[i]=DecodeOp(i);
17111711}
src/emu/cpu/i860/i860dec.c
r4679r4680
309309
310310/* This is the external interface for asserting/deasserting pins on
311311   the i860.  */
312void i860_set_pin (i860s *cpustate, int pin, int val)
312void i860_set_pin (const device_config *device, int pin, int val)
313313{
314   i860s *cpustate = get_safe_token(device);
314315   if (pin == DEC_PIN_BUS_HOLD)
315316      cpustate->pin_bus_hold = val;
316317   else if (pin == DEC_PIN_RESET)
src/emu/cpu/i860/i860.c
r4679r4680
3131   cpustate->device = device;
3232   cpustate->program = memory_find_address_space(device, ADDRESS_SPACE_PROGRAM);
3333   reset_i860(cpustate);
34   i860_set_pin(cpustate, DEC_PIN_BUS_HOLD, 0);
35   i860_set_pin(cpustate, DEC_PIN_RESET, 0);
34   i860_set_pin(device, DEC_PIN_BUS_HOLD, 0);
35   i860_set_pin(device, DEC_PIN_RESET, 0);
3636   cpustate->single_stepping = 0;
3737
3838   state_save_register_device_item_array(device, 0, cpustate->iregs);
src/emu/cpu/i860/i860.h
r4679r4680
198198
199199/* This is the external interface for asserting/deasserting a pin on
200200   the i860.  */
201extern void i860_set_pin(i860_state_t*, int, int);
201extern void i860_set_pin(const device_config *, int, int);
202202
203203/* Hard or soft reset.  */
204204extern void reset_i860(i860_state_t*);
src/emu/cpu/mcs51/mcs51dasm.c
r4679r4680
282282
283283static const char *get_data_address( const char **mem_names, UINT8 arg )
284284{
285   static char buffer[32];
285   static char buffer_array[4][32];
286   static int whichbuf;
287   char *buffer = &buffer_array[++whichbuf % 4][0];
286288
287289   if (mem_names[arg] == NULL)
288290      sprintf(buffer,"$%02X",arg);
src/emu/cpu/i386/i386.c
r4679r4680
391391   }
392392}
393393
394static void build_cycle_table(void)
394static void build_cycle_table(running_machine *machine)
395395{
396396   int i, j;
397397   for (j=0; j < X86_NUM_CPUS; j++)
398398   {
399      cycle_table_rm[j] = (UINT8 *)auto_malloc(sizeof(UINT8) * CYCLES_NUM_OPCODES);
400      cycle_table_pm[j] = (UINT8 *)auto_malloc(sizeof(UINT8) * CYCLES_NUM_OPCODES);
399      cycle_table_rm[j] = auto_alloc_array(machine, UINT8, CYCLES_NUM_OPCODES);
400      cycle_table_pm[j] = auto_alloc_array(machine, UINT8, CYCLES_NUM_OPCODES);
401401
402402      for (i=0; i < sizeof(x86_cycle_table)/sizeof(X86_CYCLE_TABLE); i++)
403403      {
r4679r4680
507507   static const int regs32[8] = {EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI};
508508   i386_state *cpustate = get_safe_token(device);
509509
510   build_cycle_table();
510   build_cycle_table(device->machine);
511511
512512   for( i=0; i < 256; i++ ) {
513513      int c=0;
src/emu/cpu/mc68hc11/mc68hc11.c
r4679r4680
356356   }
357357
358358   cpustate->internal_ram_size = 1280;      /* FIXME: this is for MC68HC11M0 */
359   cpustate->internal_ram = (UINT8 *)auto_malloc(cpustate->internal_ram_size);
359   cpustate->internal_ram = auto_alloc_array(device->machine, UINT8, cpustate->internal_ram_size);
360360
361361   cpustate->reg_position = 0;
362362   cpustate->ram_position = 0x100;
src/emu/cpu/tlcs900/tlcs900.c
r4679r4680
99TODO:
1010- review cycle counts
1111- implement the remaining internal mcu features
12- add support for 900 and 900/M modes
12- at support for 900 and 900/M modes
1313
1414*******************************************************************/
1515
src/emu/cpu/drcbec.c
r4679r4680
283283
284284static UINT64 immediate_zero = 0;
285285
286extern const drcbe_interface drcbe_c_be_interface;
286287const drcbe_interface drcbe_c_be_interface =
287288{
288289   drcbec_alloc,
src/emu/cpu/cop400/cop400.c
r4679r4680
897897   cpustate->d_mask = d_mask;
898898   cpustate->in_mask = in_mask;
899899
900   /* set clock divider */
901
902   device_set_info_int(device, CPUINFO_INT_CLOCK_DIVIDER, cpustate->intf->cki);
903
904900   /* allocate serial timer */
905901
906902   cpustate->serial_timer = timer_alloc(device->machine, serial_tick, cpustate);
r4679r4680
13601356static CPU_GET_INFO( cop400 )
13611357{
13621358   cop400_state *cpustate = (device != NULL && device->token != NULL) ? get_safe_token(device) : NULL;
1359   cop400_interface *intf = (device != NULL && device->static_config != NULL) ? (cop400_interface *)device->static_config : NULL;
13631360
13641361   switch (state)
13651362   {
r4679r4680
13691366      case CPUINFO_INT_DEFAULT_IRQ_VECTOR:         info->i = 0;                                 break;
13701367      case CPUINFO_INT_ENDIANNESS:               info->i = ENDIANNESS_LITTLE;                     break;
13711368      case CPUINFO_INT_CLOCK_MULTIPLIER:            info->i = 1;                                 break;
1372      case CPUINFO_INT_CLOCK_DIVIDER:               info->i = 16;                                 break;
1369      case CPUINFO_INT_CLOCK_DIVIDER:               info->i = (intf != NULL) ? intf->cki : 16;            break;
13731370      case CPUINFO_INT_MIN_INSTRUCTION_BYTES:         info->i = 1;                                 break;
13741371      case CPUINFO_INT_MAX_INSTRUCTION_BYTES:         info->i = 2;                                 break;
13751372      case CPUINFO_INT_MIN_CYCLES:               info->i = 1;                                 break;
src/emu/cpu/jaguar/jaguar.c
r4679r4680
367367   }
368368
369369   /* fill in the mirror table */
370   mirror_table = (UINT16 *)malloc_or_die(65536 * sizeof(mirror_table[0]));
370   mirror_table = alloc_array_or_die(UINT16, 65536);
371371   for (i = 0; i < 65536; i++)
372372      mirror_table[i] = ((i >> 15) & 0x0001) | ((i >> 13) & 0x0002) |
373373                        ((i >> 11) & 0x0004) | ((i >> 9)  & 0x0008) |
r4679r4680
379379                        ((i << 13) & 0x4000) | ((i << 15) & 0x8000);
380380
381381   /* fill in the condition table */
382   condition_table = (UINT8 *)malloc_or_die(32 * 8 * sizeof(condition_table[0]));
382   condition_table = alloc_array_or_die(UINT8, 32 * 8);
383383   for (i = 0; i < 8; i++)
384384      for (j = 0; j < 32; j++)
385385      {
src/emu/cpu/i8085/i8085.c
r4679r4680
182182   I8085_STATE_ENTRY(GENPC, "%04X", PC.w.l, 0xffff, CPUSTATE_NOSHOW)
183183//  I8085_STATE_ENTRY(GENPCBASE, "%04X", prvpc.w.l, 0xffff, CPUSTATE_NOSHOW)
184184
185   I8085_STATE_ENTRY(SP,  "%04X", PC.w.l, 0xffff, 0)
186   I8085_STATE_ENTRY(GENSP, "%04X", PC.w.l, 0xffff, CPUSTATE_NOSHOW)
185   I8085_STATE_ENTRY(SP,  "%04X", SP.w.l, 0xffff, 0)
186   I8085_STATE_ENTRY(GENSP, "%04X", SP.w.l, 0xffff, CPUSTATE_NOSHOW)
187187
188188   I8085_STATE_ENTRY(A, "%02X", AF.b.l, 0xff, CPUSTATE_NOSHOW)
189189   I8085_STATE_ENTRY(B, "%02X", BC.b.h, 0xff, CPUSTATE_NOSHOW)
src/emu/cpu/vtlb.c
r4679r4680
6060   vtlb_state *vtlb;
6161
6262   /* allocate memory for the core structure */
63   vtlb = (vtlb_state *)malloc_or_die(sizeof(*vtlb));
64   memset(vtlb, 0, sizeof(*vtlb));
63   vtlb = alloc_clear_or_die(vtlb_state);
6564
6665   /* fill in CPU information */
6766   vtlb->device = cpu;
r4679r4680
7877   assert(vtlb->addrwidth > vtlb->pageshift);
7978
8079   /* allocate the entry array */
81   vtlb->live = (offs_t *)malloc_or_die(sizeof(vtlb->live[0]) * (fixed_entries + dynamic_entries));
82   memset(vtlb->live, 0, sizeof(vtlb->live[0]) * (fixed_entries + dynamic_entries));
80   vtlb->live = alloc_array_clear_or_die(offs_t, fixed_entries + dynamic_entries);
8381   state_save_register_device_item_pointer(cpu, space, vtlb->live, fixed_entries + dynamic_entries);
8482
8583   /* allocate the lookup table */
86   vtlb->table = (vtlb_entry *)malloc_or_die(sizeof(vtlb->table[0]) << (vtlb->addrwidth - vtlb->pageshift));
87   memset(vtlb->table, 0, sizeof(vtlb->table[0]) << (vtlb->addrwidth - vtlb->pageshift));
84   vtlb->table = alloc_array_clear_or_die(vtlb_entry, 1 << (vtlb->addrwidth - vtlb->pageshift));
8885   state_save_register_device_item_pointer(cpu, space, vtlb->table, 1 << (vtlb->addrwidth - vtlb->pageshift));
8986
9087   /* allocate the fixed page count array */
9188   if (fixed_entries > 0)
9289   {
93      vtlb->fixedpages = (int *)malloc_or_die(sizeof(vtlb->fixedpages[0]) * fixed_entries);
94      memset(vtlb->fixedpages, 0, sizeof(vtlb->fixedpages[0]) * fixed_entries);
90      vtlb->fixedpages = alloc_array_clear_or_die(int, fixed_entries);
9591      state_save_register_device_item_pointer(cpu, space, vtlb->fixedpages, fixed_entries);
9692   }
9793   return vtlb;
src/emu/cpu/sh2/sh2comn.c
r4679r4680
712712   sh2->dma_timer[1] = timer_alloc(device->machine, sh2_dmac_callback, sh2);
713713   timer_adjust_oneshot(sh2->dma_timer[1], attotime_never, 0);
714714
715   sh2->m = (UINT32 *)auto_malloc(0x200);
715   sh2->m = auto_alloc_array(device->machine, UINT32, 0x200/4);
716716
717717   if(conf)
718718   {
src/emu/cpu/sh2/sh2.c
r4679r4680
22472247static CPU_INIT( sh2 )
22482248{
22492249   /* allocate the core memory */
2250   sh2 = auto_malloc(sizeof(SH2));
2251   memset(sh2, 0, sizeof(SH2));
2250   sh2 = auto_alloc_clear(device->machine, SH2);
22522251
22532252   /* initialize the common core parts */
22542253   sh2_common_init(sh2, device, irqcallback);
src/emu/cpu/sh4/sh4.c
r4679r4680
36463646      case CPUINFO_STR_REGISTER + SH4_XF14:         sh4->xf[14] = info->i; break;
36473647      case CPUINFO_STR_REGISTER + SH4_XF15:         sh4->xf[15] = info->i; break;
36483648#endif
3649
3650      case CPUINFO_INT_SH4_IRLn_INPUT:            sh4_set_irln_input(device, info->i); break;
3651      case CPUINFO_INT_SH4_FRT_INPUT:               sh4_set_frt_input(device, info->i); break;
3652
3653      /* --- the following bits of info are set as pointers to data or functions --- */
3654      case CPUINFO_FCT_SH4_FTCSR_READ_CALLBACK:      sh4->ftcsr_read_callback = (void (*) (UINT32 ))info->f; break;
3655      case CPUINFO_PTR_SH4_EXTERNAL_DDT_DMA:         sh4_dma_ddt(sh4, (struct sh4_ddt_dma *)info->f); break;
36563649   }
36573650}
36583651
3652void sh4_set_ftcsr_callback(const device_config *device, sh4_ftcsr_callback callback)
3653{
3654   SH4 *sh4 = get_safe_token(device);
3655   sh4->ftcsr_read_callback = callback;
3656}
3657
3658
36593659#if 0
36603660/*When OC index mode is off (CCR.OIX = 0)*/
36613661static ADDRESS_MAP_START( sh4_internal_map, ADDRESS_SPACE_PROGRAM, 64 )
r4679r4680
39233923      case CPUINFO_STR_REGISTER + SH4_XF14:         sprintf(info->s, "XF14 :%08X %f", FP_XS(14),(double)FP_XFS(14)); break;
39243924      case CPUINFO_STR_REGISTER + SH4_XF15:         sprintf(info->s, "XF15 :%08X %f", FP_XS(15),(double)FP_XFS(15)); break; //%01.2e
39253925#endif
3926      case CPUINFO_FCT_SH4_FTCSR_READ_CALLBACK:      info->f = (genf*)sh4->ftcsr_read_callback; break;
3927
39283926   }
39293927}
src/emu/cpu/sh4/sh4comn.h
r4679r4680
144144void sh4_swap_fp_registers(SH4 *sh4);
145145void sh4_default_exception_priorities(SH4 *sh4); // setup default priorities for exceptions
146146void sh4_parse_configuration(SH4 *sh4, const struct sh4_config *conf);
147void sh4_dma_ddt(SH4 *sh4, struct sh4_ddt_dma *s);
148147void sh4_set_irq_line(SH4 *sh4, int irqline, int state); // set state of external interrupt line
149void sh4_set_frt_input(const device_config *device, int state);
150void sh4_set_irln_input(const device_config *device, int value);
151148#ifdef LSB_FIRST
152149void sh4_swap_fp_couples(SH4 *sh4);
153150#endif
src/emu/cpu/sh4/sh4.h
r4679r4680
5656
5757enum
5858{
59   CPUINFO_INT_SH4_IRLn_INPUT = CPUINFO_INT_CPU_SPECIFIC,
60   CPUINFO_INT_SH4_FRT_INPUT
61};
62
63enum
64{
65   CPUINFO_FCT_SH4_FTCSR_READ_CALLBACK = CPUINFO_FCT_CPU_SPECIFIC,
66   CPUINFO_PTR_SH4_EXTERNAL_DDT_DMA = CPUINFO_PTR_CPU_SPECIFIC,
67};
68
69enum
70{
7159   SH4_IOPORT_16=8*0,
7260   SH4_IOPORT_4=8*1,
7361   // future use
r4679r4680
10189   int mode;
10290};
10391
92typedef void (*sh4_ftcsr_callback)(UINT32);
93
10494extern CPU_GET_INFO( sh4 );
10595#define CPU_SH4 CPU_GET_INFO_NAME( sh4 )
10696
r4679r4680
10999
110100extern unsigned DasmSH4( char *dst, unsigned pc, UINT16 opcode );
111101
102void sh4_set_frt_input(const device_config *device, int state);
103void sh4_set_irln_input(const device_config *device, int value);
104void sh4_set_ftcsr_callback(const device_config *device, sh4_ftcsr_callback callback);
105void sh4_dma_ddt(const device_config *device, struct sh4_ddt_dma *s);
106
112107#endif /* __SH4_H__ */
113108
src/emu/cpu/sh4/sh4comn.c
r4679r4680
11821182   sh4->rtc_timer = timer_alloc(device->machine, sh4_rtc_timer_callback, sh4);
11831183   timer_adjust_oneshot(sh4->rtc_timer, attotime_never, 0);
11841184
1185   sh4->m = (UINT32 *)auto_malloc(16384*4);
1185   sh4->m = auto_alloc_array(device->machine, UINT32, 16384);
11861186}
11871187
1188void sh4_dma_ddt(SH4 *sh4, struct sh4_ddt_dma *s)
1188void sh4_dma_ddt(const device_config *device, struct sh4_ddt_dma *s)
11891189{
1190UINT32 chcr;
1191UINT32 *p32bits;
1192UINT64 *p32bytes;
1193UINT32 pos,len,siz;
1190   SH4 *sh4 = get_safe_token(device);
1191   UINT32 chcr;
1192   UINT32 *p32bits;
1193   UINT64 *p32bytes;
1194   UINT32 pos,len,siz;
11941195
11951196   if (sh4->dma_timer_active[s->channel])
11961197      return;
src/emu/cpu/g65816/g65816.c
r4679r4680
396396      case CPUINFO_INT_REGISTER + G65816_E:         g65816_set_reg(cpustate, G65816_E, info->i);      break;
397397      case CPUINFO_INT_REGISTER + G65816_NMI_STATE:   g65816_set_reg(cpustate, G65816_NMI_STATE, info->i); break;
398398      case CPUINFO_INT_REGISTER + G65816_IRQ_STATE:   g65816_set_reg(cpustate, G65816_IRQ_STATE, info->i); break;
399
400      /* --- the following bits of info are set as pointers to data or functions --- */
401      case CPUINFO_FCT_G65816_READVECTOR_CALLBACK:   READ_VECTOR = (read8_space_func) info->f;   break;
402399   }
403400}
404401
405402
406403
404void g65816_set_read_vector_callback(const device_config *device, read8_space_func read_vector)
405{
406   g65816i_cpu_struct *cpustate = get_safe_token(device);
407   READ_VECTOR = read_vector;
408}
409
407410/**************************************************************************
408411 * Generic get_info
409412 **************************************************************************/
r4679r4680
470473      case CPUINFO_FCT_BURN:                     info->burn = NULL;                  break;
471474      case CPUINFO_FCT_DISASSEMBLE:               info->disassemble = CPU_DISASSEMBLE_NAME(g65816);      break;
472475      case CPUINFO_PTR_INSTRUCTION_COUNTER:         info->icount = &cpustate->ICount;         break;
473      case CPUINFO_FCT_G65816_READVECTOR_CALLBACK:   info->f = (genf *) READ_VECTOR;         break;
474476
475477      case CPUINFO_FCT_READOP:                  info->readop = CPU_READOP_NAME(g65816);         break;
476478
src/emu/cpu/g65816/g65816op.h
r4679r4680
22532253
22542254
22552255
2256extern TABLE_OPCODES;
22562257TABLE_OPCODES =
22572258{
22582259   O(00),O(01),O(02),O(03),O(04),O(05),O(06),O(07),
src/emu/cpu/g65816/g65816.h
r4679r4680
5858   G65816_NMI_STATE, G65816_IRQ_STATE
5959};
6060
61enum
62{
63   CPUINFO_FCT_G65816_READVECTOR_CALLBACK = CPUINFO_FCT_CPU_SPECIFIC
64};
65
6661/* Main interface function */
6762CPU_GET_INFO( g65816 );
6863#define CPU_G65816 CPU_GET_INFO_NAME( g65816 )
6964
65void g65816_set_read_vector_callback(const device_config *device, read8_space_func read_vector);
7066
7167
7268/* ======================================================================== */
src/emu/cpu/mips/r3000.c
r4679r4680
301301   r3000_state *r3000 = get_safe_token(device);
302302
303303   /* allocate memory */
304   r3000->icache = (UINT32 *)auto_malloc(configdata->icache);
305   r3000->dcache = (UINT32 *)auto_malloc(configdata->dcache);
304   r3000->icache = auto_alloc_array(device->machine, UINT32, configdata->icache/4);
305   r3000->dcache = auto_alloc_array(device->machine, UINT32, configdata->dcache/4);
306306
307307   r3000->icache_size = configdata->icache;
308308   r3000->dcache_size = configdata->dcache;
src/emu/cpu/mips/psx.c
r4679r4680
13161316   }
13171317   else
13181318   {
1319      memory_install_readwrite32_handler( space, 0x1f800000, 0x1f8003ff, 0, 0, (read32_space_func)SMH_BANK32, (write32_space_func)SMH_BANK32 );
1319      memory_install_readwrite32_handler( space, 0x1f800000, 0x1f8003ff, 0, 0, (read32_space_func)SMH_BANK(32), (write32_space_func)SMH_BANK(32) );
13201320
13211321      memory_set_bankptr(space->machine,  32, psxcpu->dcache );
13221322   }
src/emu/cpu/mips/mips3.c
r4679r4680
21372137static CPU_INIT( r4600be )
21382138{
21392139   size_t memsize = mips3com_init(&mips3.core, MIPS3_TYPE_R4600, TRUE, device, index, clock, irqcallback, NULL);
2140   void *memory = auto_malloc(memsize);
2140   void *memory = auto_alloc_array(device->machine, UINT8, memsize);
21412141   mips3com_init(&mips3.core, MIPS3_TYPE_R4600, TRUE, index, clock, irqcallback, memory);
21422142}
21432143
21442144static CPU_INIT( r4600le )
21452145{
21462146   size_t memsize = mips3com_init(&mips3.core, MIPS3_TYPE_R4600, FALSE, device, index, clock, irqcallback, NULL);
2147   void *memory = auto_malloc(memsize);
2147   void *memory = auto_alloc_array(device->machine, UINT8, memsize);
21482148   mips3com_init(&mips3.core, MIPS3_TYPE_R4600, FALSE, index, clock, irqcallback, memory);
21492149}
21502150
r4679r4680
21932193static CPU_INIT( r4650be )
21942194{
21952195   size_t memsize = mips3com_init(&mips3.core, MIPS3_TYPE_R4650, TRUE, device, index, clock, irqcallback, NULL);
2196   void *memory = auto_malloc(memsize);
2196   void *memory = auto_alloc_array(device->machine, UINT8, memsize);
21972197   mips3com_init(&mips3.core, MIPS3_TYPE_R4650, TRUE, index, clock, irqcallback, memory);
21982198}
21992199
22002200static CPU_INIT( r4650le )
22012201{
22022202   size_t memsize = mips3com_init(&mips3.core, MIPS3_TYPE_R4650, FALSE, device, index, clock, irqcallback, NULL);
2203   void *memory = auto_malloc(memsize);
2203   void *memory = auto_alloc_array(device->machine, UINT8, memsize);
22042204   mips3com_init(&mips3.core, MIPS3_TYPE_R4650, FALSE, index, clock, irqcallback, memory);
22052205}
22062206
r4679r4680
22492249static CPU_INIT( r4700be )
22502250{
22512251   size_t memsize = mips3com_init(&mips3.core, MIPS3_TYPE_R4700, TRUE, device, index, clock, irqcallback, NULL);
2252   void *memory = auto_malloc(memsize);
2252   void *memory = auto_alloc_array(device->machine, UINT8, memsize);
22532253   mips3com_init(&mips3.core, MIPS3_TYPE_R4700, TRUE, index, clock, irqcallback, memory);
22542254}
22552255
22562256static CPU_INIT( r4700le )
22572257{
22582258   size_t memsize = mips3com_init(&mips3.core, MIPS3_TYPE_R4700, FALSE, device, index, clock, irqcallback, NULL);
2259   void *memory = auto_malloc(memsize);
2259   void *memory = auto_alloc_array(device->machine, UINT8, memsize);
22602260   mips3com_init(&mips3.core, MIPS3_TYPE_R4700, FALSE, index, clock, irqcallback, memory);
22612261}
22622262
r4679r4680
23062306static CPU_INIT( r5000be )
23072307{
23082308   size_t memsize = mips3com_init(&mips3.core, MIPS3_TYPE_R5000, TRUE, device, index, clock, irqcallback, NULL);
2309   void *memory = auto_malloc(memsize);
2309   void *memory = auto_alloc_array(device->machine, UINT8, memsize);
23102310   mips3com_init(&mips3.core, MIPS3_TYPE_R5000, TRUE, index, clock, irqcallback, memory);
23112311}
23122312
23132313static CPU_INIT( r5000le )
23142314{
23152315   size_t memsize = mips3com_init(&mips3.core, MIPS3_TYPE_R5000, FALSE, device, index, clock, irqcallback, NULL);
2316   void *memory = auto_malloc(memsize);
2316   void *memory = auto_alloc_array(device->machine, UINT8, memsize);
23172317   mips3com_init(&mips3.core, MIPS3_TYPE_R5000, FALSE, index, clock, irqcallback, memory);
23182318}
23192319
r4679r4680
23622362static CPU_INIT( qed5271be )
23632363{
23642364   size_t memsize = mips3com_init(&mips3.core, MIPS3_TYPE_QED5271, TRUE, device, index, clock, irqcallback, NULL);
2365   void *memory = auto_malloc(memsize);
2365   void *memory = auto_alloc_array(device->machine, UINT8, memsize);
23662366   mips3com_init(&mips3.core, MIPS3_TYPE_QED5271, TRUE, index, clock, irqcallback, memory);
23672367}
23682368
23692369static CPU_INIT( qed5271le )
23702370{
23712371   size_t memsize = mips3com_init(&mips3.core, MIPS3_TYPE_QED5271, FALSE, device, index, clock, irqcallback, NULL);
2372   void *memory = auto_malloc(memsize);
2372   void *memory = auto_alloc_array(device->machine, UINT8, memsize);
23732373   mips3com_init(&mips3.core, MIPS3_TYPE_QED5271, FALSE, index, clock, irqcallback, memory);
23742374}
23752375
r4679r4680
24182418static CPU_INIT( rm7000be )
24192419{
24202420   size_t memsize = mips3com_init(&mips3.core, MIPS3_TYPE_RM7000, TRUE, device, index, clock, irqcallback, NULL);
2421   void *memory = auto_malloc(memsize);
2421   void *memory = auto_alloc_array(device->machine, UINT8, memsize);
24222422   mips3com_init(&mips3.core, MIPS3_TYPE_RM7000, TRUE, index, clock, irqcallback, memory);
24232423}
24242424
24252425static CPU_INIT( rm7000le )
24262426{
24272427   size_t memsize = mips3com_init(&mips3.core, MIPS3_TYPE_RM7000, FALSE, device, index, clock, irqcallback, NULL);
2428   void *memory = auto_malloc(memsize);
2428   void *memory = auto_alloc_array(device->machine, UINT8, memsize);
24292429   mips3com_init(&mips3.core, MIPS3_TYPE_RM7000, FALSE, index, clock, irqcallback, memory);
24302430}
24312431
src/emu/cpu/z80/z80daisy.c
r4679r4680
2929   /* create a linked list of devices */
3030   for ( ; daisy->devname != NULL; daisy++)
3131   {
32      *tailptr = (z80_daisy_state *)auto_malloc(sizeof(**tailptr));
32      *tailptr = auto_alloc(cpudevice->machine, z80_daisy_state);
3333      (*tailptr)->next = NULL;
3434      (*tailptr)->device = devtag_get_device(cpudevice->machine, device_inherit_tag(tempstring, cpudevice->tag, daisy->devname));
3535      if ((*tailptr)->device == NULL)
src/emu/cpu/esrip/esrip.c
r4679r4680
260260   cpustate->draw = _config->draw;
261261
262262   /* Allocate image pointer table RAM */
263   cpustate->ipt_ram = (UINT16 *)auto_malloc(IPT_RAM_SIZE);
263   cpustate->ipt_ram = auto_alloc_array(device->machine, UINT16, IPT_RAM_SIZE/2);
264264
265265   cpustate->device = device;
266266   cpustate->program = memory_find_address_space(device, ADDRESS_SPACE_PROGRAM);
267267
268268   /* Create the instruction decode lookup table */
269   cpustate->optable = (UINT8 *)auto_malloc(65536);
269   cpustate->optable = auto_alloc_array(device->machine, UINT8, 65536);
270270   make_ops(cpustate);
271271
272272   /* Register stuff for state saving */
src/emu/cpu/asap/asap.c
r4679r4680
217217static void jsr_c0(asap_state *);
218218static void trapf(asap_state *);
219219
220static void (*const opcodetable[32][4])(asap_state *) =
220typedef void (*asap_ophandler)(asap_state *);
221
222static const asap_ophandler opcodetable[32][4] =
221223{
222224   {   trap0,      trap0,      trap0,      trap0      },
223225   {   NULL,      NULL,      NULL,      NULL      },
r4679r4680
407409    INITIALIZATION AND SHUTDOWN
408410***************************************************************************/
409411
410static void init_tables(void)
412static void init_tables(running_machine *machine)
411413{
412414   /* allocate opcode table */
413415   if (!opcode)
414      opcode = (void (**)(asap_state *))auto_malloc(32 * 32 * 2 * sizeof(void *));
416      opcode = auto_alloc_array(machine, asap_ophandler, 32 * 32 * 2);
415417
416418   /* fill opcode table */
417419   if (opcode)
r4679r4680
439441   asap_state *asap = get_safe_token(device);
440442   int i;
441443
442   init_tables();
444   init_tables(device->machine);
443445   for (i = 0; i < REGBASE; i++)
444446      asap->src2val[i] = i;
445447   asap->irq_callback = irqcallback;
src/emu/cpu/tms32025/tms32025.c
r4679r4680
17191719{
17201720   tms32025_state *cpustate = get_safe_token(device);
17211721
1722   cpustate->intRAM = (UINT16 *)auto_malloc(0x800*2);
1722   cpustate->intRAM = auto_alloc_array(device->machine, UINT16, 0x800);
17231723   cpustate->irq_callback = irqcallback;
17241724   cpustate->device = device;
17251725   cpustate->program = memory_find_address_space(device, ADDRESS_SPACE_PROGRAM);
src/emu/cpu/mb86233/mb86233.c
r4679r4680
118118      cpustate->fifo_write_cb = _config->fifo_write_cb;
119119   }
120120
121   cpustate->RAM = (UINT32 *)auto_malloc(2 * 0x200 * sizeof(UINT32));      /* 2x 2KB */
121   cpustate->RAM = auto_alloc_array(device->machine, UINT32, 2 * 0x200);      /* 2x 2KB */
122122   memset( cpustate->RAM, 0, 2 * 0x200 * sizeof(UINT32) );
123123   cpustate->ARAM = &cpustate->RAM[0];
124124   cpustate->BRAM = &cpustate->RAM[0x200];
src/emu/cpu/drcbex86.c
r4679r4680
222222***************************************************************************/
223223
224224/* globally-accessible interface to the backend */
225extern const drcbe_interface drcbe_x86_be_interface;
225226const drcbe_interface drcbe_x86_be_interface =
226227{
227228   drcbex86_alloc,
src/emu/cpu/konami/konami.c
r4679r4680
504504}
505505
506506
507void konami_configure_set_lines(const device_config *device, konami_set_lines_func func)
508{
509   konami_state *cpustate = get_safe_token(device);
510   cpustate->setlines_callback = func;
511}
512
513
507514/**************************************************************************
508515 * Generic set_info
509516 **************************************************************************/
r4679r4680
529536      case CPUINFO_INT_REGISTER + KONAMI_X:         X = info->i;                     break;
530537      case CPUINFO_INT_REGISTER + KONAMI_Y:         Y = info->i;                     break;
531538      case CPUINFO_INT_REGISTER + KONAMI_DP:         DP = info->i;                     break;
532
533      /* --- the following bits of info are set as pointers to data or functions --- */
534      case CPUINFO_FCT_KONAMI_SETLINES_CALLBACK:      cpustate->setlines_callback = (konami_set_lines_func)info->f; break;
535539   }
536540}
537541
r4679r4680
595599      case CPUINFO_FCT_BURN:                     info->burn = NULL;                        break;
596600      case CPUINFO_FCT_DISASSEMBLE:               info->disassemble = CPU_DISASSEMBLE_NAME(konami);break;
597601      case CPUINFO_PTR_INSTRUCTION_COUNTER:         info->icount = &cpustate->icount;            break;
598      case CPUINFO_FCT_KONAMI_SETLINES_CALLBACK:      info->f = (genf *)cpustate->setlines_callback;   break;
599602
600603      /* --- the following bits of info are returned as NULL-terminated strings --- */
601604      case CPUINFO_STR_NAME:                     strcpy(info->s, "KONAMI");            break;
src/emu/cpu/konami/konami.h
r4679r4680
1515   KONAMI_DP
1616};
1717
18enum
19{
20   CPUINFO_FCT_KONAMI_SETLINES_CALLBACK = CPUINFO_FCT_CPU_SPECIFIC
21};
22
2318#define KONAMI_SETLINES_CALLBACK(name) void name(const device_config *device, int lines)
2419
2520#define KONAMI_IRQ_LINE   0   /* IRQ line number */
r4679r4680
3126
3227CPU_DISASSEMBLE( konami );
3328
29void konami_configure_set_lines(const device_config *device, konami_set_lines_func func);
3430
35INLINE void konami_configure_set_lines(const device_config *device, konami_set_lines_func func)
36{
37   device_set_info_fct(device, CPUINFO_FCT_KONAMI_SETLINES_CALLBACK, (genf *)func);
38}
3931
4032#endif /* __KONAMI_H__ */
src/emu/streams.c
r4679r4680
165165***************************************************************************/
166166
167167static STATE_POSTLOAD( stream_postload );
168static void allocate_resample_buffers(streams_private *strdata, sound_stream *stream);
169static void allocate_output_buffers(streams_private *strdata, sound_stream *stream);
170static void recompute_sample_rate_data(streams_private *strdata, sound_stream *stream);
168static void allocate_resample_buffers(running_machine *machine, sound_stream *stream);
169static void allocate_output_buffers(running_machine *machine, sound_stream *stream);
170static void recompute_sample_rate_data(running_machine *machine, sound_stream *stream);
171171static void generate_samples(sound_stream *stream, int samples);
172172static stream_sample_t *generate_resampled_data(stream_input *input, UINT32 numsamples);
173173
r4679r4680
218218   streams_private *strdata;
219219
220220   /* allocate memory for our private data */
221   strdata = (streams_private *)auto_malloc(sizeof(*strdata));
222   memset(strdata, 0, sizeof(*strdata));
221   strdata = auto_alloc_clear(machine, streams_private);
223222
224223   /* reset globals */
225224   strdata->stream_tailptr = &strdata->stream_head;
r4679r4680
311310         stream->new_sample_rate = 0;
312311
313312         /* recompute all the data */
314         recompute_sample_rate_data(strdata, stream);
313         recompute_sample_rate_data(machine, stream);
315314
316315         /* reset our sample indexes to the current time */
317316         stream->output_sampindex = (INT64)stream->output_sampindex * (INT64)stream->sample_rate / old_rate;
r4679r4680
343342   char statetag[30];
344343
345344   /* allocate memory */
346   stream = (sound_stream *)auto_malloc(sizeof(*stream));
347   memset(stream, 0, sizeof(*stream));
345   stream = auto_alloc_clear(device->machine, sound_stream);
348346
349347   VPRINTF(("stream_create(%d, %d, %d) => %p\n", inputs, outputs, sample_rate, stream));
350348
r4679r4680
365363   /* allocate space for the inputs */
366364   if (inputs > 0)
367365   {
368      stream->input = (stream_input *)auto_malloc(inputs * sizeof(*stream->input));
369      memset(stream->input, 0, inputs * sizeof(*stream->input));
370      stream->input_array = (stream_sample_t **)auto_malloc(inputs * sizeof(*stream->input_array));
371      memset(stream->input_array, 0, inputs * sizeof(*stream->input_array));
366      stream->input = auto_alloc_array_clear(device->machine, stream_input, inputs);
367      stream->input_array = auto_alloc_array_clear(device->machine, stream_sample_t *, inputs);
372368   }
373369
374370   /* initialize the state of each input */
r4679r4680
382378   /* allocate space for the outputs */
383379   if (outputs > 0)
384380   {
385      stream->output = (stream_output *)auto_malloc(outputs * sizeof(*stream->output));
386      memset(stream->output, 0, outputs * sizeof(*stream->output));
387      stream->output_array = (stream_sample_t **)auto_malloc(outputs * sizeof(*stream->output_array));
388      memset(stream->output_array, 0, outputs * sizeof(*stream->output_array));
381      stream->output = auto_alloc_array_clear(device->machine, stream_output, outputs);
382      stream->output_array = auto_alloc_array_clear(device->machine, stream_sample_t *, outputs);
389383   }
390384
391385   /* initialize the state of each output */
r4679r4680
402396
403397   /* force an update to the sample rates; this will cause everything to be recomputed
404398       and will generate the initial resample buffers for our inputs */
405   recompute_sample_rate_data(strdata, stream);
399   recompute_sample_rate_data(device->machine, stream);
406400
407401   /* set up the initial output buffer positions now that we have data */
408402   stream->output_base_sampindex = -stream->max_samples_per_update;
r4679r4680
497491      input->source->dependents++;
498492
499493   /* update sample rates now that we know the input */
500   recompute_sample_rate_data(stream->device->machine->streams_data, stream);
494   recompute_sample_rate_data(stream->device->machine, stream);
501495}
502496
503497
r4679r4680
702696   int outputnum;
703697
704698   /* recompute the same rate information */
705   recompute_sample_rate_data(strdata, stream);
699   recompute_sample_rate_data(machine, stream);
706700
707701   /* make sure our output buffers are fully cleared */
708702   for (outputnum = 0; outputnum < stream->outputs; outputnum++)
r4679r4680
720714    resample buffer sizes and expand if necessary
721715-------------------------------------------------*/
722716
723static void allocate_resample_buffers(streams_private *strdata, sound_stream *stream)
717static void allocate_resample_buffers(running_machine *machine, sound_stream *stream)
724718{
725719   /* compute the target number of samples */
726720   INT32 bufsize = 2 * stream->max_samples_per_update;
r4679r4680
737731      for (inputnum = 0; inputnum < stream->inputs; inputnum++)
738732      {
739733         stream_input *input = &stream->input[inputnum];
740         input->resample = (stream_sample_t *)auto_realloc(input->resample, stream->resample_bufalloc * sizeof(input->resample[0]));
734         input->resample = auto_extend_array(machine, input->resample, stream_sample_t, stream->resample_bufalloc);
741735      }
742736   }
743737}
r4679r4680
748742    output buffer sizes and expand if necessary
749743-------------------------------------------------*/
750744
751static void allocate_output_buffers(streams_private *strdata, sound_stream *stream)
745static void allocate_output_buffers(running_machine *machine, sound_stream *stream)
752746{
753747   /* compute the target number of samples */
754748   INT32 bufsize = OUTPUT_BUFFER_UPDATES * stream->max_samples_per_update;
r4679r4680
767761      for (outputnum = 0; outputnum < stream->outputs; outputnum++)
768762      {
769763         stream_output *output = &stream->output[outputnum];
770         output->buffer = (stream_sample_t *)auto_realloc(output->buffer, stream->output_bufalloc * sizeof(output->buffer[0]));
764         output->buffer = auto_extend_array(machine, output->buffer, stream_sample_t, stream->output_bufalloc);
771765         memset(&output->buffer[oldsize], 0, (stream->output_bufalloc - oldsize) * sizeof(output->buffer[0]));
772766      }
773767   }
r4679r4680
780774    by this stream
781775-------------------------------------------------*/
782776
783static void recompute_sample_rate_data(streams_private *strdata, sound_stream *stream)
777static void recompute_sample_rate_data(running_machine *machine, sound_stream *stream)
784778{
779   streams_private *strdata = machine->streams_data;
785780   int inputnum;
786781
787782   /* recompute the timing parameters */
r4679r4680
789784   stream->max_samples_per_update = (strdata->update_attoseconds + stream->attoseconds_per_sample - 1) / stream->attoseconds_per_sample;
790785
791786   /* update resample and output buffer sizes */
792   allocate_resample_buffers(strdata, stream);
793   allocate_output_buffers(strdata, stream);
787   allocate_resample_buffers(machine, stream);
788   allocate_output_buffers(machine, stream);
794789
795790   /* iterate over each input */
796791   for (inputnum = 0; inputnum < stream->inputs; inputnum++)
src/emu/video/resnet.c
r4679r4680
260260
261261   /* parse input parameters */
262262
263   o  = (double *)malloc_or_die( sizeof(double) * (1<<MAX_RES_PER_NET) *  MAX_NETS);
264   os = (double *)malloc_or_die( sizeof(double) * (1<<MAX_RES_PER_NET) *  MAX_NETS);
263   o  = alloc_array_or_die(double, (1<<MAX_RES_PER_NET) *  MAX_NETS);
264   os = alloc_array_or_die(double, (1<<MAX_RES_PER_NET) *  MAX_NETS);
265265
266266   networks_no = 0;
267267   for (n = 0; n < MAX_NETS; n++)
r4679r4680
700700   int i,j,k;
701701   rgb_t *rgb;
702702
703   rgb = (rgb_t *)malloc_or_die((rdi->end - rdi->start + 1)*sizeof(rgb_t));
703   rgb = alloc_array_or_die(rgb_t, rdi->end - rdi->start + 1);
704704   for (i=rdi->start; i<=rdi->end; i++)
705705   {
706706      UINT8 t[3] = {0,0,0};
src/emu/video/tms9928a.c
r4679r4680
200200
201201    /* Video RAM */
202202    tms.vramsize = intf->vram;
203    tms.vMem = (UINT8*) auto_malloc (intf->vram);
204    memset (tms.vMem, 0, intf->vram);
203    tms.vMem = auto_alloc_array_clear(machine, UINT8, intf->vram);
205204
206205    /* Sprite back buffer */
207    tms.dBackMem = (UINT8*)auto_malloc (IMAGE_SIZE);
206    tms.dBackMem = auto_alloc_array(machine, UINT8, IMAGE_SIZE);
208207
209208    /* back bitmap */
210    tms.tmpbmp = auto_bitmap_alloc (256, 192, video_screen_get_format(machine->primary_screen));
209    tms.tmpbmp = auto_bitmap_alloc (machine, 256, 192, video_screen_get_format(machine->primary_screen));
211210
212211    TMS9928A_reset ();
213212    tms.LimitSprites = 1;
src/emu/video/tms34061.c
r4679r4680
8484   tms34061.vrammask = tms34061.intf.vramsize - 1;
8585
8686   /* allocate memory for VRAM */
87   tms34061.vram = (UINT8 *)auto_malloc(tms34061.intf.vramsize + 256 * 2);
88   memset(tms34061.vram, 0, tms34061.intf.vramsize + 256 * 2);
87   tms34061.vram = auto_alloc_array_clear(machine, UINT8, tms34061.intf.vramsize + 256 * 2);
8988   /* not really a save state, just there for debugging purposes */
9089   state_save_register_global_pointer(machine, tms34061.vram, tms34061.intf.vramsize);
9190
9291   /* allocate memory for latch RAM */
93   tms34061.latchram = (UINT8 *)auto_malloc(tms34061.intf.vramsize + 256 * 2);
94   memset(tms34061.latchram, 0, tms34061.intf.vramsize + 256 * 2);
92   tms34061.latchram = auto_alloc_array_clear(machine, UINT8, tms34061.intf.vramsize + 256 * 2);
9593
9694   /* add some buffer space for VRAM and latch RAM */
9795   tms34061.vram += 256;
src/emu/video/v9938.c
r4679r4680
164164   PALETTE_INIT_CALL(v9938);
165165
166166   /* set up YJK table */
167      pal_indYJK = (UINT16 *)auto_malloc(0x20000 * sizeof(UINT16));
167   pal_indYJK = auto_alloc_array(machine, UINT16, 0x20000);
168168
169169   LOG(("Building YJK table for V9958 screens, may take a while ... \n"));
170170   i = 0;
r4679r4680
494494   vdp->size_old = -1;
495495
496496   /* allocate VRAM */
497   vdp->vram = (UINT8 *)auto_malloc (0x20000);
498   memset (vdp->vram, 0, 0x20000);
497   vdp->vram = auto_alloc_array_clear(machine, UINT8, 0x20000);
499498   if (vdp->vram_size < 0x20000)
500499   {
501500      /* set unavailable RAM to 0xff */
r4679r4680
504503
505504   /* do we have expanded memory? */
506505   if (vdp->vram_size > 0x20000)
507   {
508      vdp->vram_exp = (UINT8 *)auto_malloc (0x10000);
509      memset (vdp->vram_exp, 0, 0x10000);
510   }
506      vdp->vram_exp = auto_alloc_array_clear(machine, UINT8, 0x10000);
511507   else
512508      vdp->vram_exp = NULL;
513509
src/emu/video/vector.c
r4679r4680
184184   vector_index = 0;
185185
186186   /* allocate memory for tables */
187   vector_list = (point *)auto_malloc (MAX_POINTS * sizeof (vector_list[0]));
187   vector_list = auto_alloc_array(machine, point, MAX_POINTS);
188188}
189189
190190
src/emu/video/voodoo.c
r4679r4680
44714471
44724472   /* create a multiprocessor work queue */
44734473   v->poly = poly_alloc(device->machine, 64, sizeof(poly_extra_data), 0);
4474   v->thread_stats = (stats_block *)auto_malloc(sizeof(v->thread_stats[0]) * WORK_MAX_THREADS);
4474   v->thread_stats = auto_alloc_array(device->machine, stats_block, WORK_MAX_THREADS);
44754475
44764476   /* create a table of precomputed 1/n and log2(n) values */
44774477   /* n ranges from 1.0000 to 2.0000 */
r4679r4680
45654565   if (config->type <= VOODOO_2)
45664566   {
45674567      /* separate FB/TMU memory */
4568      fbmem = auto_malloc(config->fbmem << 20);
4569      tmumem[0] = auto_malloc(config->tmumem0 << 20);
4570      tmumem[1] = (config->tmumem1 != 0) ? auto_malloc(config->tmumem1 << 20) : NULL;
4568      fbmem = auto_alloc_array(device->machine, UINT8, config->fbmem << 20);
4569      tmumem[0] = auto_alloc_array(device->machine, UINT8, config->tmumem0 << 20);
4570      tmumem[1] = (config->tmumem1 != 0) ? auto_alloc_array(device->machine, UINT8, config->tmumem1 << 20) : NULL;
45714571   }
45724572   else
45734573   {
45744574      /* shared memory */
4575      tmumem[0] = tmumem[1] = fbmem = auto_malloc(config->fbmem << 20);
4575      tmumem[0] = tmumem[1] = fbmem = auto_alloc_array(device->machine, UINT8, config->fbmem << 20);
45764576      tmumem0 = config->fbmem;
45774577   }
45784578
r4679r4680
46434643
46444644
46454645/*-------------------------------------------------
4646    device set info callback
4647-------------------------------------------------*/
4648
4649static DEVICE_SET_INFO( voodoo )
4650{
4651   switch (state)
4652   {
4653      /* no parameters to set */
4654   }
4655}
4656
4657
4658/*-------------------------------------------------
46594646    device get info callback
46604647-------------------------------------------------*/
46614648
r4679r4680
46704657      case DEVINFO_INT_CLASS:               info->i = DEVICE_CLASS_VIDEO;         break;
46714658
46724659      /* --- the following bits of info are returned as pointers to data or functions --- */
4673      case DEVINFO_FCT_SET_INFO:            info->set_info = DEVICE_SET_INFO_NAME(voodoo); break;
46744660      case DEVINFO_FCT_START:               info->start = DEVICE_START_NAME(voodoo); break;
46754661      case DEVINFO_FCT_STOP:               info->stop = DEVICE_STOP_NAME(voodoo); break;
46764662      case DEVINFO_FCT_RESET:               info->reset = DEVICE_RESET_NAME(voodoo);break;
src/emu/video/generic.c
r4679r4680
367367
368368    Spriteram size _must_ be declared in the memory map:
369369
370    { 0x120000, 0x1207ff, SMH_BANK2, &spriteram, &spriteram_size },
370    { 0x120000, 0x1207ff, SMH_BANK(2), &spriteram, &spriteram_size },
371371
372372    Then the video driver must draw the sprites from the buffered_spriteram
373373pointer.  The function buffer_spriteram_w() is used to simulate hardware
r4679r4680
706706                                      pal4bit(((data >> 4) & 0x0c) | i));
707707}
708708
709/*-------------------------------------------------
710    II-BB-GG-RR writes
711-------------------------------------------------*/
709712
713WRITE8_HANDLER( paletteram_IIBBGGRR_w )
714{
715   int i = (data >> 6) & 3;
710716
717   paletteram[offset] = data;
718   palette_set_color_rgb(space->machine, offset, pal4bit(((data << 2) & 0x0c) | i),
719                                      pal4bit(((data >> 0) & 0x0c) | i),
720                                      pal4bit(((data >> 2) & 0x0c) | i));
721}
722
723
724
711725/***************************************************************************
712726    4-4-4 RGB PALETTE WRITE HANDLERS
713727***************************************************************************/
src/emu/video/generic.h
r4679r4680
145145WRITE8_HANDLER( paletteram_BBGGGRRR_w );
146146WRITE8_HANDLER( paletteram_RRRGGGBB_w );
147147WRITE8_HANDLER( paletteram_BBGGRRII_w );
148WRITE8_HANDLER( paletteram_IIBBGGRR_w );
148149
149150/* 4-4-4 RGB palette write handlers */
150151WRITE8_HANDLER( paletteram_xxxxBBBBGGGGRRRR_le_w );
src/emu/video/s2636.c
r4679r4680
117117 *
118118 *************************************/
119119
120s2636_t *s2636_config(UINT8 *work_ram, int screen_height, int screen_width, int y_offset, int x_offset)
120s2636_t *s2636_config(running_machine *machine, UINT8 *work_ram, int screen_height, int screen_width, int y_offset, int x_offset)
121121{
122122   s2636_t *s2636;
123123
124124   /* allocate the object that holds the state */
125   s2636 = (s2636_t *)auto_malloc(sizeof(*s2636));
125   s2636 = auto_alloc(machine, s2636_t);
126126
127127   s2636->work_ram = work_ram;
128128   s2636->y_offset = y_offset;
129129   s2636->x_offset = x_offset;
130130
131   s2636->bitmap = auto_bitmap_alloc(screen_width, screen_height, BITMAP_FORMAT_INDEXED16);
132   s2636->collision_bitmap = auto_bitmap_alloc(screen_width, screen_height, BITMAP_FORMAT_INDEXED16);
131   s2636->bitmap = auto_bitmap_alloc(machine, screen_width, screen_height, BITMAP_FORMAT_INDEXED16);
132   s2636->collision_bitmap = auto_bitmap_alloc(machine, screen_width, screen_height, BITMAP_FORMAT_INDEXED16);
133133
134134   return s2636;
135135}
src/emu/video/poly.c
r4679r4680
333333   poly_manager *poly;
334334
335335   /* allocate the manager itself */
336   poly = (poly_manager *)malloc_or_die(sizeof(*poly));
337   memset(poly, 0, sizeof(*poly));
336   poly = alloc_clear_or_die(poly_manager);
338337   poly->flags = flags;
339338
340339   /* allocate polygons */
r4679r4680
13141313   *itemsize = ((*itemsize + CACHE_LINE_SIZE - 1) / CACHE_LINE_SIZE) * CACHE_LINE_SIZE;
13151314
13161315   /* allocate the array */
1317   ptrarray = (void **)malloc_or_die(sizeof(*ptrarray) * itemcount);
1318   memset(ptrarray, 0, sizeof(*ptrarray) * itemcount);
1316   ptrarray = alloc_array_clear_or_die(void *, itemcount);
13191317
13201318   /* allocate the actual items */
1321   ptrarray[0] = malloc_or_die(*itemsize * itemcount);
1322   memset(ptrarray[0], 0, *itemsize * itemcount);
1319   ptrarray[0] = alloc_array_clear_or_die(UINT8, *itemsize * itemcount);
13231320
13241321   /* initialize the pointer array */
13251322   for (itemnum = 1; itemnum < itemcount; itemnum++)
src/emu/video/mc6845.c
r4679r4680
885885}
886886
887887
888static DEVICE_SET_INFO( mc6845 )
889{
890   switch (state)
891   {
892      /* no parameters to set */
893   }
894}
895
896
897888DEVICE_GET_INFO( mc6845 )
898889{
899890   switch (state)
r4679r4680
904895      case DEVINFO_INT_CLASS:                     info->i = DEVICE_CLASS_PERIPHERAL;         break;
905896
906897      /* --- the following bits of info are returned as pointers to functions --- */
907      case DEVINFO_FCT_SET_INFO:                  info->set_info = DEVICE_SET_INFO_NAME(mc6845); break;
908898      case DEVINFO_FCT_START:                     info->start = DEVICE_START_NAME(mc6845);   break;
909899      case DEVINFO_FCT_STOP:                     /* Nothing */                        break;
910900      case DEVINFO_FCT_RESET:                     info->reset = DEVICE_RESET_NAME(mc6845);   break;
src/emu/video/s2636.h
r4679r4680
1414#define S2636_IS_PIXEL_DRAWN(p)      (((p) & 0x08) ? TRUE : FALSE)
1515#define S2636_PIXEL_COLOR(p)      ((p) & 0x07)
1616
17s2636_t *s2636_config(UINT8 *work_ram, int screen_height, int screen_width, int y_offset, int x_offset);
17s2636_t *s2636_config(running_machine *machine, UINT8 *work_ram, int screen_height, int screen_width, int y_offset, int x_offset);
1818
1919/* returns a BITMAP_FORMAT_INDEXED16 bitmap the size of the screen
2020   D0-D2 of each pixel is the pixel color
src/emu/tilemap.c
r4679r4680
303303      tilemap_tailptr  = &tilemap_list;
304304      tilemap_instance = 0;
305305
306      priority_bitmap = auto_bitmap_alloc(screen_width, screen_height, BITMAP_FORMAT_INDEXED8);
306      priority_bitmap = auto_bitmap_alloc(machine, screen_width, screen_height, BITMAP_FORMAT_INDEXED8);
307307      add_exit_callback(machine, tilemap_exit);
308308   }
309309}
r4679r4680
324324   int group;
325325
326326   /* allocate the tilemap itself */
327   tmap = (tilemap *)malloc_or_die(sizeof(*tmap));
328   memset(tmap, 0, sizeof(*tmap));
327   tmap = alloc_clear_or_die(tilemap);
329328
330329   /* fill in the basic metrics */
331330   tmap->machine = machine;
r4679r4680
354353   /* initialize scroll information */
355354   tmap->scrollrows = 1;
356355   tmap->scrollcols = 1;
357   tmap->rowscroll = (INT32 *)malloc_or_die(tmap->height * sizeof(*tmap->rowscroll));
358   memset(tmap->rowscroll, 0, tmap->height * sizeof(*tmap->rowscroll));
359   tmap->colscroll = (INT32 *)malloc_or_die(tmap->width * sizeof(*tmap->colscroll));
360   memset(tmap->colscroll, 0, tmap->width * sizeof(*tmap->colscroll));
356   tmap->rowscroll = alloc_array_clear_or_die(INT32, tmap->height);
357   tmap->colscroll = alloc_array_clear_or_die(INT32, tmap->width);
361358
362359   /* allocate the pixel data cache */
363360   tmap->pixmap = bitmap_alloc(tmap->width, tmap->height, BITMAP_FORMAT_INDEXED16);
364361
365362   /* allocate transparency mapping data */
366   tmap->tileflags = (UINT8 *)malloc_or_die(tmap->max_logical_index);
363   tmap->tileflags = alloc_array_or_die(UINT8, tmap->max_logical_index);
367364   tmap->flagsmap = bitmap_alloc(tmap->width, tmap->height, BITMAP_FORMAT_INDEXED8);
368   tmap->pen_to_flags = (UINT8 *)malloc_or_die(sizeof(tmap->pen_to_flags[0]) * MAX_PEN_TO_FLAGS * TILEMAP_NUM_GROUPS);
369   memset(tmap->pen_to_flags, 0, sizeof(tmap->pen_to_flags[0]) * MAX_PEN_TO_FLAGS * TILEMAP_NUM_GROUPS);
365   tmap->pen_to_flags = alloc_array_clear_or_die(UINT8, MAX_PEN_TO_FLAGS * TILEMAP_NUM_GROUPS);
370366   for (group = 0; group < TILEMAP_NUM_GROUPS; group++)
371367      tilemap_map_pens_to_layer(tmap, group, 0, 0, TILEMAP_PIXEL_LAYER0);
372368
r4679r4680
11571153   tmap->max_memory_index++;
11581154
11591155   /* allocate the necessary mappings */
1160   tmap->memory_to_logical = (tilemap_logical_index *)malloc_or_die(tmap->max_memory_index * sizeof(*tmap->memory_to_logical));
1161   tmap->logical_to_memory = (tilemap_memory_index *)malloc_or_die(tmap->max_logical_index * sizeof(*tmap->logical_to_memory));
1156   tmap->memory_to_logical = alloc_array_or_die(tilemap_logical_index, tmap->max_memory_index);
1157   tmap->logical_to_memory = alloc_array_or_die(tilemap_memory_index, tmap->max_logical_index);
11621158
11631159   /* update the mappings */
11641160   mappings_update(tmap);
src/emu/uiinput.c
r4679r4680
7676void ui_input_init(running_machine *machine)
7777{
7878   /* create the private data */
79   machine->ui_input_data = (ui_input_private *)auto_malloc(sizeof(*machine->ui_input_data));
80   memset(machine->ui_input_data, 0, sizeof(*machine->ui_input_data));
79   machine->ui_input_data = auto_alloc_clear(machine, ui_input_private);
8180   machine->ui_input_data->current_mouse_x = -1;
8281   machine->ui_input_data->current_mouse_y = -1;
8382
src/emu/uimenu.c
r4679r4680
448448   ui_menu *menu;
449449
450450   /* allocate and clear memory for the menu and the state */
451   menu = (ui_menu *)malloc_or_die(sizeof(*menu));
452   memset(menu, 0, sizeof(*menu));
451   menu = alloc_clear_or_die(ui_menu);
453452
454453   /* initialize the state */
455454   menu->machine = machine;
r4679r4680
652651         (*menu->destroy_state)(menu, menu->state);
653652      free(menu->state);
654653   }
655   menu->state = malloc_or_die(size);
654   menu->state = alloc_array_clear_or_die(UINT8, size);
656655   menu->destroy_state = destroy_state;
657   memset(menu->state, 0, size);
658656
659657   return menu->state;
660658}
r4679r4680
681679      }
682680
683681   /* allocate a new pool */
684   pool = (ui_menu_pool *)malloc_or_die(sizeof(*pool) + UI_MENU_POOL_SIZE);
685   memset(pool, 0, sizeof(*pool));
682   pool = (ui_menu_pool *)alloc_array_clear_or_die(UINT8, sizeof(*pool) + UI_MENU_POOL_SIZE);
686683
687684   /* wire it up */
688685   pool->next = menu->pool;
r4679r4680
15141511
15151512   /* add crosshair options menu */
15161513   if (crosshair_get_usage(machine))
1517      ui_menu_item_append(menu, "Crosshair Options", NULL, 0, menu_crosshair);
1514      ui_menu_item_append(menu, "Crosshair Options", NULL, 0, (void *)menu_crosshair);
15181515
15191516   /* add cheat menu */
15201517   if (options_get_bool(mame_options(), OPTION_CHEAT) && cheat_get_next_menu_entry(machine, NULL, NULL, NULL, NULL) != NULL)
r4679r4680
30803077   if (event != NULL && event->itemref != NULL)
30813078   {
30823079      crosshair_user_settings settings;
3083      crosshair_item_data *data = event->itemref;
3080      crosshair_item_data *data = (crosshair_item_data *)event->itemref;
30843081      int changed = FALSE;
30853082      int set_def = FALSE;
30863083      int newval = data->cur;
r4679r4680
31963193         if (settings.mode == CROSSHAIR_VISIBILITY_AUTO) use_auto = TRUE;
31973194
31983195         /* CROSSHAIR_ITEM_VIS - allocate a data item and fill it */
3199         data = ui_menu_pool_alloc(menu, sizeof(*data));
3196         data = (crosshair_item_data *)ui_menu_pool_alloc(menu, sizeof(*data));
32003197         data->type = CROSSHAIR_ITEM_VIS;
32013198         data->player = player;
32023199         data->min = CROSSHAIR_VISIBILITY_OFF;
r4679r4680
32153212         ui_menu_item_append(menu, temp_text, vis_text[settings.mode], flags, data);
32163213
32173214         /* CROSSHAIR_ITEM_PIC - allocate a data item and fill it */
3218         data = ui_menu_pool_alloc(menu, sizeof(*data));
3215         data = (crosshair_item_data *)ui_menu_pool_alloc(menu, sizeof(*data));
32193216         data->type = CROSSHAIR_ITEM_PIC;
32203217         data->player = player;
32213218         data->last_name[0] = 0;
r4679r4680
33023299      crosshair_get_user_settings(machine, 0, &settings);
33033300
33043301      /* CROSSHAIR_ITEM_AUTO_TIME - allocate a data item and fill it */
3305      data = ui_menu_pool_alloc(menu, sizeof(*data));
3302      data = (crosshair_item_data *)ui_menu_pool_alloc(menu, sizeof(*data));
33063303      data->type = CROSSHAIR_ITEM_AUTO_TIME;
33073304      data->min = CROSSHAIR_VISIBILITY_AUTOTIME_MIN;
33083305      data->max = CROSSHAIR_VISIBILITY_AUTOTIME_MAX;
src/emu/audit.c
r4679r4680
8888   if (records > 0)
8989   {
9090      /* allocate memory for the records */
91      *audit = (audit_record *)malloc_or_die(sizeof(**audit) * records);
92      memset(*audit, 0, sizeof(**audit) * records);
91      *audit = alloc_array_clear_or_die(audit_record, records);
9392      record = *audit;
9493
9594      /* iterate over ROM sources and regions */
r4679r4680
174173      goto skip;
175174
176175   /* allocate memory for the records */
177   *audit = (audit_record *)malloc_or_die(sizeof(**audit) * records);
178   memset(*audit, 0, sizeof(**audit) * records);
176   *audit = alloc_array_clear_or_die(audit_record, records);
179177   record = *audit;
180178
181179   /* now iterate over sample entries */
src/emu/video.c
r4679r4680
434434   assert_always(spriteram_size != 0, "Video buffers spriteram but spriteram_size is 0");
435435
436436   /* allocate memory for the back buffer */
437   buffered_spriteram = (UINT8 *)auto_malloc(spriteram_size);
437   buffered_spriteram = auto_alloc_array(machine, UINT8, spriteram_size);
438438
439439   /* register for saving it */
440440   state_save_register_global_pointer(machine, buffered_spriteram, spriteram_size);
r4679r4680
443443   if (spriteram_2_size)
444444   {
445445      /* allocate memory */
446      buffered_spriteram_2 = (UINT8 *)auto_malloc(spriteram_2_size);
446      buffered_spriteram_2 = auto_alloc_array(machine, UINT8, spriteram_2_size);
447447
448448      /* register for saving it */
449449      state_save_register_global_pointer(machine, buffered_spriteram_2, spriteram_2_size);
r4679r4680
13021302
13031303
13041304/*-------------------------------------------------
1305    video_screen_set_info - device set info
1306    callback
1307-------------------------------------------------*/
1308
1309static DEVICE_SET_INFO( video_screen )
1310{
1311   switch (state)
1312   {
1313      /* no parameters to set */
1314   }
1315}
1316
1317
1318/*-------------------------------------------------
13191305    video_screen_get_info - device get info
13201306    callback
13211307-------------------------------------------------*/
r4679r4680
13301316      case DEVINFO_INT_CLASS:               info->i = DEVICE_CLASS_VIDEO;         break;
13311317
13321318      /* --- the following bits of info are returned as pointers to data or functions --- */
1333      case DEVINFO_FCT_SET_INFO:            info->set_info = DEVICE_SET_INFO_NAME(video_screen); break;
13341319      case DEVINFO_FCT_START:               info->start = DEVICE_START_NAME(video_screen); break;
13351320      case DEVINFO_FCT_STOP:               info->stop = DEVICE_STOP_NAME(video_screen); break;
13361321      case DEVINFO_FCT_RESET:               /* Nothing */                     break;
src/emu/memory.c
r4679r4680
441441         return;
442442
443443   /* allocate a new entry and fill it */
444   (*refptr) = (bank_reference *)malloc_or_die(sizeof(**refptr));
444   (*refptr) = alloc_or_die(bank_reference);
445445   (*refptr)->next = NULL;
446446   (*refptr)->space = space;
447447}
r4679r4680
712712   add_exit_callback(machine, memory_exit);
713713
714714   /* allocate our private data */
715   memdata = machine->memory_data = (memory_private *)auto_malloc(sizeof(*machine->memory_data));
716   memset(memdata, 0, sizeof(*memdata));
715   memdata = machine->memory_data = auto_alloc_clear(machine, memory_private);
717716
718717   /* build up the cpudata array with info about all CPUs and address spaces */
719718   memory_init_spaces(machine);
r4679r4680
769768   const addrmap_token *internal_map;
770769   address_map *map;
771770
772   map = (address_map *)malloc_or_die(sizeof(*map));
773   memset(map, 0, sizeof(*map));
771   map = alloc_clear_or_die(address_map);
774772
775773   /* append the internal CPU map (first so it takes priority) */
776774   internal_map = (const addrmap_token *)device_get_info_ptr(device, CPUINFO_PTR_INTERNAL_MEMORY_MAP + spacenum);
r4679r4680
14941492   int spacenum;
14951493
14961494   /* create a global watchpoint-filled table */
1497   memdata->wptable = (UINT8 *)auto_malloc(1 << LEVEL1_BITS);
1495   memdata->wptable = auto_alloc_array(machine, UINT8, 1 << LEVEL1_BITS);
14981496   memset(memdata->wptable, STATIC_WATCHPOINT, 1 << LEVEL1_BITS);
14991497
15001498   /* loop over CPUs */
r4679r4680
15021500      for (spacenum = 0; spacenum < ADDRESS_SPACES; spacenum++)
15031501         if (cpu_get_addrbus_width(device, spacenum) > 0)
15041502         {
1505            address_space *space = (address_space *)malloc_or_die(sizeof(*space));
1503            address_space *space = alloc_clear_or_die(address_space);
15061504            int logbits = cpu_get_logaddr_width(device, spacenum);
15071505            int ashift = cpu_get_addrbus_shift(device, spacenum);
15081506            int abits = cpu_get_addrbus_width(device, spacenum);
r4679r4680
15161514               logbits = abits;
15171515
15181516            /* determine the address and data bits */
1519            memset(space, 0, sizeof(*space));
15201517            space->machine = machine;
15211518            space->cpu = device;
15221519            space->name = address_space_names[spacenum];
r4679r4680
15361533            space->log_unmap = TRUE;
15371534
15381535            /* allocate subtable information; we malloc this manually because it will be realloc'ed */
1539            space->read.subtable = (subtable_data *)auto_malloc(sizeof(*space->read.subtable) * SUBTABLE_COUNT);
1540            memset(space->read.subtable, 0, sizeof(*space->read.subtable) * SUBTABLE_COUNT);
1541            space->write.subtable = (subtable_data *)auto_malloc(sizeof(*space->write.subtable) * SUBTABLE_COUNT);
1542            memset(space->write.subtable, 0, sizeof(*space->write.subtable) * SUBTABLE_COUNT);
1536            space->read.subtable = auto_alloc_array_clear(machine, subtable_data, SUBTABLE_COUNT);
1537            space->write.subtable = auto_alloc_array_clear(machine, subtable_data, SUBTABLE_COUNT);
15431538
15441539            /* allocate the handler table */
1545            space->read.handlers[0] = (handler_data *)auto_malloc(sizeof(*space->read.handlers[0]) * ARRAY_LENGTH(space->read.handlers));
1546            memset(space->read.handlers[0], 0, sizeof(*space->read.handlers[0]) * ARRAY_LENGTH(space->read.handlers));
1547            space->write.handlers[0] = (handler_data *)auto_malloc(sizeof(*space->write.handlers[0]) * ARRAY_LENGTH(space->write.handlers));
1548            memset(space->write.handlers[0], 0, sizeof(*space->write.handlers[0]) * ARRAY_LENGTH(space->write.handlers));
1540            space->read.handlers[0] = auto_alloc_array_clear(machine, handler_data, ARRAY_LENGTH(space->read.handlers));
1541            space->write.handlers[0] = auto_alloc_array_clear(machine, handler_data, ARRAY_LENGTH(space->write.handlers));
15491542            for (entrynum = 1; entrynum < ARRAY_LENGTH(space->read.handlers); entrynum++)
15501543            {
15511544               space->read.handlers[entrynum] = space->read.handlers[0] + entrynum;
r4679r4680
15681561            space->write.handlers[STATIC_WATCHPOINT]->bytemask = ~0;
15691562
15701563            /* allocate memory; these aren't auto-malloc'ed as we need to expand them */
1571            space->read.table = (UINT8 *)malloc_or_die(1 << LEVEL1_BITS);
1572            space->write.table = (UINT8 *)malloc_or_die(1 << LEVEL1_BITS);
1564            space->read.table = alloc_array_or_die(UINT8, 1 << LEVEL1_BITS);
1565            space->write.table = alloc_array_or_die(UINT8, 1 << LEVEL1_BITS);
15731566
15741567            /* initialize everything to unmapped */
15751568            memset(space->read.table, STATIC_UNMAP, 1 << LEVEL1_BITS);
r4679r4680
20592052
20602053         /* start a new range */
20612054         case ADDRMAP_TOKEN_RANGE:
2062            entry = *entryptr = (address_map_entry *)malloc_or_die(sizeof(**entryptr));
2055            entry = *entryptr = alloc_clear_or_die(address_map_entry);
20632056            entryptr = &entry->next;
2064            memset(entry, 0, sizeof(*entry));
20652057            TOKEN_GET_UINT64_UNPACK2(tokens, entry->addrstart, 32, entry->addrend, 32);
20662058            break;
20672059
r4679r4680
30303022   if (range != NULL)
30313023      space->direct.freerangelist = range->next;
30323024   else
3033      range = (direct_range *)malloc_or_die(sizeof(*range));
3025      range = alloc_or_die(direct_range);
30343026
30353027   /* fill in the range */
30363028   table_derive_range(&space->read, byteaddress, &range->bytestart, &range->byteend);
r4679r4680
31023094      bytestoalloc += byteend - bytestart + 1;
31033095
31043096   /* allocate and clear the memory */
3105   block = (memory_block *)malloc_or_die(bytestoalloc);
3106   memset(block, 0, bytestoalloc);
3097   block = (memory_block *)alloc_array_clear_or_die(UINT8, bytestoalloc);
31073098   if (allocatemem)
31083099      memory = block + 1;
31093100
src/emu/video.h
r4679r4680
5252#define video_screen_get_format(screen)   (((screen_config *)(screen)->inline_config)->format)
5353
5454/* allocates a bitmap that has the same dimensions and format as the passed in screen */
55#define video_screen_auto_bitmap_alloc(screen)   auto_bitmap_alloc(video_screen_get_width(screen), video_screen_get_height(screen), video_screen_get_format(screen))
55#define video_screen_auto_bitmap_alloc(screen)   auto_bitmap_alloc(screen->machine, video_screen_get_width(screen), video_screen_get_height(screen), video_screen_get_format(screen))
5656
5757
5858
src/emu/memory.h
r4679r4680
442442#define SMH_ROM                     ((void *)STATIC_ROM)
443443#define SMH_NOP                     ((void *)STATIC_NOP)
444444#define SMH_UNMAP                  ((void *)STATIC_UNMAP)
445#define SMH_BANK(n)                  ((void *)(STATIC_BANK1 + (n) - 1))
446#define SMH_BANK1                  SMH_BANK(1)
447#define SMH_BANK2                  SMH_BANK(2)
448#define SMH_BANK3                  SMH_BANK(3)
449#define SMH_BANK4                  SMH_BANK(4)
450#define SMH_BANK5                  SMH_BANK(5)
451#define SMH_BANK6                  SMH_BANK(6)
452#define SMH_BANK7                  SMH_BANK(7)
453#define SMH_BANK8                  SMH_BANK(8)
454#define SMH_BANK9                  SMH_BANK(9)
455#define SMH_BANK10                  SMH_BANK(10)
456#define SMH_BANK11                  SMH_BANK(11)
457#define SMH_BANK12                  SMH_BANK(12)
458#define SMH_BANK13                  SMH_BANK(13)
459#define SMH_BANK14                  SMH_BANK(14)
460#define SMH_BANK15                  SMH_BANK(15)
461#define SMH_BANK16                  SMH_BANK(16)
462#define SMH_BANK17                  SMH_BANK(17)
463#define SMH_BANK18                  SMH_BANK(18)
464#define SMH_BANK19                  SMH_BANK(19)
465#define SMH_BANK20                  SMH_BANK(20)
466#define SMH_BANK21                  SMH_BANK(21)
467#define SMH_BANK22                  SMH_BANK(22)
468#define SMH_BANK23                  SMH_BANK(23)
469#define SMH_BANK24                  SMH_BANK(24)
470#define SMH_BANK25                  SMH_BANK(25)
471#define SMH_BANK26                  SMH_BANK(26)
472#define SMH_BANK27                  SMH_BANK(27)
473#define SMH_BANK28                  SMH_BANK(28)
474#define SMH_BANK29                  SMH_BANK(29)
475#define SMH_BANK30                  SMH_BANK(30)
476#define SMH_BANK31                  SMH_BANK(31)
477#define SMH_BANK32                  SMH_BANK(32)
445#define SMH_BANK(n)                  ((void *)(FPTR)(STATIC_BANK1 + (n) - 1))
478446
479447
480448/* helper macro for merging data with the memory mask */
src/emu/restrack.c
r4679r4680
197197    freeing memory
198198-------------------------------------------------*/
199199
200void *auto_malloc_file_line(size_t size, const char *file, int line)
200void *auto_malloc_file_line(running_machine *machine, size_t size, const char *file, int line)
201201{
202202   void *result = pool_malloc_file_line(current_pool(), size, file, line);
203203#ifdef MAME_DEBUG
r4679r4680
212212    freeing memory
213213-------------------------------------------------*/
214214
215void *auto_realloc_file_line(void *ptr, size_t size, const char *file, int line)
215void *auto_realloc_file_line(running_machine *machine, void *ptr, size_t size, const char *file, int line)
216216{
217217   object_pool *pool = current_pool();
218218   if (ptr != NULL)
r4679r4680
236236    string
237237-------------------------------------------------*/
238238
239char *auto_strdup_file_line(const char *str, const char *file, int line)
239char *auto_strdup_file_line(running_machine *machine, const char *str, const char *file, int line)
240240{
241241   return pool_strdup_file_line(current_pool(), str, file, line);
242242}
r4679r4680
247247    auto-freeing string if str is null
248248-------------------------------------------------*/
249249
250char *auto_strdup_allow_null_file_line(const char *str, const char *file, int line)
250char *auto_strdup_allow_null_file_line(running_machine *machine, const char *str, const char *file, int line)
251251{
252   return (str != NULL) ? auto_strdup_file_line(str, file, line) : NULL;
252   return (str != NULL) ? auto_strdup_file_line(machine, str, file, line) : NULL;
253253}
254254
255255
r4679r4680
258258    auto-freeing astring
259259-------------------------------------------------*/
260260
261astring *auto_astring_alloc_file_line(const char *file, int line)
261astring *auto_astring_alloc_file_line(running_machine *machine, const char *file, int line)
262262{
263263   return (astring *)restrack_register_object(OBJTYPE_ASTRING, astring_alloc(), 0, file, line);
264264}
r4679r4680
269269    auto-freeing bitmap
270270-------------------------------------------------*/
271271
272bitmap_t *auto_bitmap_alloc_file_line(int width, int height, bitmap_format format, const char *file, int line)
272bitmap_t *auto_bitmap_alloc_file_line(running_machine *machine, int width, int height, bitmap_format format, const char *file, int line)
273273{
274274   return (bitmap_t *)restrack_register_object(OBJTYPE_BITMAP, bitmap_alloc(width, height, format), width * height, file, line);
275275}
src/emu/mame.c
r4679r4680
458458   assert_always(mame_get_phase(machine) == MAME_PHASE_INIT, "Can only call add_frame_callback at init time!");
459459
460460   /* allocate memory */
461   cb = (callback_item *)malloc_or_die(sizeof(*cb));
461   cb = alloc_or_die(callback_item);
462462
463463   /* add us to the end of the list */
464464   cb->func.frame = callback;
r4679r4680
481481   assert_always(mame_get_phase(machine) == MAME_PHASE_INIT, "Can only call add_reset_callback at init time!");
482482
483483   /* allocate memory */
484   cb = (callback_item *)malloc_or_die(sizeof(*cb));
484   cb = alloc_or_die(callback_item);
485485
486486   /* add us to the end of the list */
487487   cb->func.reset = callback;
r4679r4680
504504   assert_always(mame_get_phase(machine) == MAME_PHASE_INIT, "Can only call add_pause_callback at init time!");
505505
506506   /* allocate memory */
507   cb = (callback_item *)malloc_or_die(sizeof(*cb));
507   cb = alloc_or_die(callback_item);
508508
509509   /* add us to the end of the list */
510510   cb->func.pause = callback;
r4679r4680
527527   assert_always(mame_get_phase(machine) == MAME_PHASE_INIT, "Can only call add_exit_callback at init time!");
528528
529529   /* allocate memory */
530   cb = (callback_item *)malloc_or_die(sizeof(*cb));
530   cb = alloc_or_die(callback_item);
531531
532532   /* add us to the head of the list */
533533   cb->func.exit = callback;
r4679r4680
782782          fatalerror("memory_region_alloc called with duplicate region name \"%s\"\n", name);
783783
784784   /* allocate the region */
785   info = (region_info *)malloc_or_die(sizeof(*info) + length);
785   info = (region_info *)alloc_array_or_die(UINT8, sizeof(*info) + length);
786786   info->next = NULL;
787787   info->name = astring_dupc(name);
788788   info->length = length;
r4679r4680
12471247
12481248   assert_always(mame_get_phase(machine) == MAME_PHASE_INIT, "Can only call add_logerror_callback at init time!");
12491249
1250   cb = (callback_item *)auto_malloc(sizeof(*cb));
1250   cb = auto_alloc(machine, callback_item);
12511251   cb->func.log = callback;
12521252   cb->next = NULL;
12531253
src/emu/inptport.c
r4679r4680
630630   time_t basetime;
631631
632632   /* allocate memory for our data structure */
633   machine->input_port_data = (input_port_private *)auto_malloc(sizeof(*machine->input_port_data));
634   memset(machine->input_port_data, 0, sizeof(*machine->input_port_data));
633   machine->input_port_data = auto_alloc_clear(machine, input_port_private);
635634   portdata = machine->input_port_data;
636635
637636   /* add an exit callback and a frame callback */
r4679r4680
15061505   for (typenum = 0; typenum < ARRAY_LENGTH(core_types); typenum++)
15071506   {
15081507      /* allocate memory for the state and link it to the end of the list */
1509      *stateptr = (input_type_state *)auto_malloc(sizeof(**stateptr));
1510      memset(*stateptr, 0, sizeof(**stateptr));
1508      *stateptr = auto_alloc_clear(machine, input_type_state);
15111509
15121510      /* copy the type description and link the previous description to it */
15131511      (*stateptr)->typedesc = core_types[typenum];
r4679r4680
15561554      input_port_state *portstate;
15571555
15581556      /* allocate a new input_port_info structure */
1559      portstate = (input_port_state *)auto_malloc(sizeof(*portstate));
1560      memset(portstate, 0, sizeof(*portstate));
1557      portstate = auto_alloc_clear(machine, input_port_state);
15611558      ((input_port_config *)port)->state = portstate;
15621559      ((input_port_config *)port)->machine = machine;
15631560
r4679r4680
15731570         int seqtype;
15741571
15751572         /* allocate a new input_field_info structure */
1576         fieldstate = (input_field_state *)auto_malloc(sizeof(*fieldstate));
1577         memset(fieldstate, 0, sizeof(*fieldstate));
1573         fieldstate = auto_alloc_clear(machine, input_field_state);
15781574         ((input_field_config *)field)->state = fieldstate;
15791575
15801576         /* fill in the basic values */
r4679r4680
16191615            astring *name = mess_get_keyboard_key_name(field);
16201616            if (name != NULL)
16211617            {
1622               field->state->name = auto_strdup(astring_c(name));
1618               field->state->name = auto_strdup(machine, astring_c(name));
16231619               astring_free(name);
16241620            }
16251621         }
r4679r4680
17201716   input_port_value mask;
17211717
17221718   /* allocate memory */
1723   info = (callback_field_info *)auto_malloc(sizeof(*info));
1724   memset(info, 0, sizeof(*info));
1719   info = auto_alloc_clear(field->port->machine, callback_field_info);
17251720
17261721   /* fill in the data */
17271722   info->field = field;
r4679r4680
17431738   input_port_value mask;
17441739
17451740   /* allocate memory */
1746   state = (analog_field_state *)auto_malloc(sizeof(*state));
1747   memset(state, 0, sizeof(*state));
1741   state = auto_alloc_clear(field->port->machine, analog_field_state);
17481742
17491743   /* compute the shift amount and number of bits */
17501744   for (mask = field->mask; !(mask & 1); mask >>= 1)
r4679r4680
29582952   input_port_config *config;
29592953
29602954   /* allocate memory */
2961   config = (input_port_config *)malloc_or_die(sizeof(*config));
2962   memset(config, 0, sizeof(*config));
2955   config = alloc_clear_or_die(input_port_config);
29632956
29642957   /* add it to the tail */
29652958   for (tailptr = listhead; *tailptr != NULL; tailptr = &(*tailptr)->next) ;
r4679r4680
30203013   int seqtype;
30213014
30223015   /* allocate memory */
3023   config = (input_field_config *)malloc_or_die(sizeof(*config));
3024   memset(config, 0, sizeof(*config));
3016   config = alloc_clear_or_die(input_field_config);
30253017
30263018   /* fill in the basic field values */
30273019   config->port = port;
r4679r4680
31283120   input_setting_config *config;
31293121
31303122   /* allocate memory */
3131   config = (input_setting_config *)malloc_or_die(sizeof(*config));
3132   memset(config, 0, sizeof(*config));
3123   config = alloc_clear_or_die(input_setting_config);
31333124
31343125   /* fill in the basic setting values */
31353126   config->field = field;
r4679r4680
31883179      const char *comma, *colon, *number;
31893180
31903181      /* allocate a new entry */
3191      *tailptr = (input_field_diplocation *)malloc_or_die(sizeof(**tailptr));
3192      memset(*tailptr, 0, sizeof(**tailptr));
3182      *tailptr = alloc_clear_or_die(input_field_diplocation);
31933183      entries++;
31943184
31953185      /* find the end of this entry */
r4679r4680
32083198      /* allocate and copy the name if it is present */
32093199      if (colon != NULL)
32103200      {
3211         (*tailptr)->swname = lastname = (char *)malloc_or_die(colon - tempbuf + 1);
3201         (*tailptr)->swname = lastname = alloc_array_or_die(char, colon - tempbuf + 1);
32123202         strncpy(lastname, tempbuf, colon - tempbuf);
32133203         lastname[colon - tempbuf] = 0;
32143204         number = colon + 1;
r4679r4680
32233213            error_buf_append(errorbuf, errorbuflen, "Switch location '%s' missing switch name!\n", location);
32243214            lastname = (char *)"UNK";
32253215         }
3226         (*tailptr)->swname = namecopy = (char *)malloc_or_die(strlen(lastname) + 1);
3216         (*tailptr)->swname = namecopy = alloc_array_or_die(char, strlen(lastname) + 1);
32273217         strcpy(namecopy, lastname);
32283218      }
32293219
r4679r4680
34553445      int remapnum;
34563446
34573447      /* allocate tables */
3458      oldtable = (input_code *)malloc_or_die(count * sizeof(*oldtable));
3459      newtable = (input_code *)malloc_or_die(count * sizeof(*newtable));
3448      oldtable = alloc_array_or_die(input_code, count);
3449      newtable = alloc_array_or_die(input_code, count);
34603450
34613451      /* build up the remap table */
34623452      count = 0;
src/emu/rendfont.c
r4679r4680
141141   render_font *font;
142142
143143   /* allocate and clear memory */
144   font = (render_font *)malloc_or_die(sizeof(*font));
145   memset(font, 0, sizeof(*font));
144   font = alloc_clear_or_die(render_font);
146145
147146   /* attempt to load the cached version of the font first */
148147   if (filename != NULL && render_font_load_cached_bdf(font, filename) == 0)
r4679r4680
150149
151150   /* if we failed, clean up and realloc */
152151   render_font_free(font);
153   font = (render_font *)malloc_or_die(sizeof(*font));
154   memset(font, 0, sizeof(*font));
152   font = alloc_clear_or_die(render_font);
155153
156154   /* load the raw data instead */
157155   filerr = mame_fopen_ram(font_uismall, sizeof(font_uismall), OPEN_FLAG_READ, &ramfile);
r4679r4680
434432
435433   /* determine the file size and allocate memory */
436434   font->rawsize = mame_fsize(file);
437   data = (char *)malloc_or_die(font->rawsize + 1);
435   data = alloc_array_clear_or_die(char, font->rawsize + 1);
438436
439437   /* read and hash the first chunk */
440438   bytes = mame_fread(file, data, MIN(CACHED_BDF_HASH_SIZE, font->rawsize));
r4679r4680
583581
584582            /* if we don't have a subtable yet, make one */
585583            if (font->chars[charnum / 256] == NULL)
586            {
587               font->chars[charnum / 256] = (render_font_char *)malloc_or_die(256 * sizeof(font->chars[0][0]));
588               memset(font->chars[charnum / 256], 0, 256 * sizeof(font->chars[0][0]));
589            }
584               font->chars[charnum / 256] = alloc_array_clear_or_die(render_font_char, 256);
590585
591586            /* fill in the entry */
592587            ch = &font->chars[charnum / 256][charnum % 256];
r4679r4680
642637      goto error;
643638
644639   /* now read the rest of the data */
645   data = (UINT8 *)malloc_or_die(filesize - CACHED_HEADER_SIZE);
640   data = alloc_array_or_die(UINT8, filesize - CACHED_HEADER_SIZE);
646641   bytes_read = mame_fread(file, data, filesize - CACHED_HEADER_SIZE);
647642   if (bytes_read != filesize - CACHED_HEADER_SIZE)
648643      goto error;
r4679r4680
657652
658653      /* if we don't have a subtable yet, make one */
659654      if (font->chars[chnum / 256] == NULL)
660      {
661         font->chars[chnum / 256] = (render_font_char *)malloc_or_die(256 * sizeof(font->chars[0][0]));
662         memset(font->chars[chnum / 256], 0, 256 * sizeof(font->chars[0][0]));
663      }
655         font->chars[chnum / 256] = alloc_array_clear_or_die(render_font_char, 256);
664656
665657      /* fill in the entry */
666658      ch = &font->chars[chnum / 256][chnum % 256];
r4679r4680
728720   }
729721
730722   /* allocate an array to hold the character data */
731   chartable = (UINT8 *)malloc_or_die(numchars * CACHED_CHAR_SIZE);
732   memset(chartable, 0, numchars * CACHED_CHAR_SIZE);
723   chartable = alloc_array_clear_or_die(UINT8, numchars * CACHED_CHAR_SIZE);
733724
734725   /* allocate a temp buffer to compress into */
735   tempbuffer = (UINT8 *)malloc_or_die(65536);
726   tempbuffer = alloc_array_or_die(UINT8, 65536);
736727
737728   /* write the header */
738729   dest = tempbuffer;
src/emu/devintrf.c
r4679r4680
111111   configlen = (UINT32)devtype_get_info_int(type, DEVINFO_INT_INLINE_CONFIG_BYTES);
112112
113113   /* allocate a new device */
114   device = (device_config *)malloc_or_die(sizeof(*device) + strlen(tag) + configlen);
114   device = (device_config *)alloc_array_or_die(UINT8, sizeof(*device) + strlen(tag) + configlen);
115115
116116   /* populate device relationships */
117117   device->next = NULL;
r4679r4680
122122   /* populate device properties */
123123   device->type = type;
124124   device->devclass = (device_class)(INT32)devtype_get_info_int(type, DEVINFO_INT_CLASS);
125   device->set_info = (device_set_info_func)devtype_get_info_fct(type, DEVINFO_FCT_SET_INFO);
126125   device->execute = NULL;
127126
128127   /* populate device configuration */
r4679r4680
555554         fatalerror("Device %s specifies a 0 token length!\n", device_get_name(device));
556555
557556      /* allocate memory for the token */
558      device->token = malloc_or_die(device->tokenbytes);
559      memset(device->token, 0, device->tokenbytes);
557      device->token = alloc_array_clear_or_die(UINT8, device->tokenbytes);
560558
561559      /* fill in the remaining runtime fields */
562560      device->execute = (device_execute_func)device_get_info_fct(device, DEVINFO_FCT_EXECUTE);
r4679r4680
856854
857855
858856/***************************************************************************
859    DEVICE INFORMATION SETTERS
857    DEFAULT HANDLERS
860858***************************************************************************/
861859
862860/*-------------------------------------------------
863    device_set_info_int - set an integer state
864    value for an allocated device
865-------------------------------------------------*/
866
867void device_set_info_int(const device_config *device, UINT32 state, INT64 data)
868{
869   deviceinfo info;
870
871   assert(device != NULL);
872   assert(device->token != NULL);
873   assert(device->type != NULL);
874   assert(state >= DEVINFO_INT_FIRST && state <= DEVINFO_INT_LAST);
875
876   /* set the value */
877   info.i = data;
878   (*device->set_info)(device, state, &info);
879}
880
881
882/*-------------------------------------------------
883    device_set_info_ptr - set a pointer state
884    value for an allocated device
885-------------------------------------------------*/
886
887void device_set_info_ptr(const device_config *device, UINT32 state, void *data)
888{
889   deviceinfo info;
890
891   assert(device != NULL);
892   assert(device->token != NULL);
893   assert(device->type != NULL);
894   assert(state >= DEVINFO_PTR_FIRST && state <= DEVINFO_PTR_LAST);
895
896   /* set the value */
897   info.p = data;
898   (*device->set_info)(device, state, &info);
899}
900
901
902/*-------------------------------------------------
903    device_set_info_fct - set a function pointer
904    state value for an allocated device
905-------------------------------------------------*/
906
907void device_set_info_fct(const device_config *device, UINT32 state, genf *data)
908{
909   deviceinfo info;
910
911   assert(device != NULL);
912   assert(device->token != NULL);
913   assert(device->type != NULL);
914   assert(state >= DEVINFO_FCT_FIRST && state <= DEVINFO_FCT_LAST);
915
916   /* set the value */
917   info.f = data;
918   (*device->set_info)(device, state, &info);
919}
920
921
922
923/***************************************************************************
924    DEVICE INFORMATION SETTERS
925***************************************************************************/
926
927/*-------------------------------------------------
928861    set_default_string - compute a default string
929862    if none is provided
930863-------------------------------------------------*/
src/emu/machine/timekpr.c
r4679r4680
308308   c->month = make_bcd( systime.local_time.month + 1 );
309309   c->year = make_bcd( systime.local_time.year % 100 );
310310   c->century = make_bcd( systime.local_time.year / 100 );
311   c->data = (UINT8 *)auto_malloc( c->size );
311   c->data = auto_alloc_array( device->machine, UINT8, c->size );
312312
313313   c->default_data = device->region;
314314   if (c->default_data != NULL)
r4679r4680
447447}
448448
449449/*-------------------------------------------------
450    device set info callback
451-------------------------------------------------*/
452
453static DEVICE_SET_INFO(timekeeper)
454{
455   switch (state)
456   {
457      /* no parameters to set */
458   }
459}
460
461/*-------------------------------------------------
462450    device get info callback
463451-------------------------------------------------*/
464452
r4679r4680
472460      case DEVINFO_INT_CLASS:               info->i = DEVICE_CLASS_PERIPHERAL; break;
473461
474462      /* --- the following bits of info are returned as pointers to data or functions --- */
475      case DEVINFO_FCT_SET_INFO:            info->set_info = DEVICE_SET_INFO_NAME(timekeeper); break;
476463      case DEVINFO_FCT_START:               info->start = DEVICE_START_NAME(timekeeper); break;
477464      case DEVINFO_FCT_STOP:               /* nothing */ break;
478465      case DEVINFO_FCT_RESET:               info->reset = DEVICE_RESET_NAME(timekeeper); break;
src/emu/machine/x76f100.c
r4679r4680
8484
8585   if( data == NULL )
8686   {
87      data = (UINT8 *)auto_malloc(
87      data = auto_alloc_array( machine, UINT8,
8888         SIZE_RESPONSE_TO_RESET +
8989         SIZE_READ_PASSWORD +
9090         SIZE_WRITE_PASSWORD +
src/emu/machine/6526cia.c
r4679r4680
861861
862862
863863/*-------------------------------------------------
864    DEVICE_SET_INFO( cia6526 )
865-------------------------------------------------*/
866
867static DEVICE_SET_INFO( cia6526 )
868{
869   switch (state)
870   {
871      /* no parameters to set */
872   }
873}
874
875
876/*-------------------------------------------------
877864    DEVICE_GET_INFO( cia6526r1 )
878865-------------------------------------------------*/
879866
r4679r4680
887874      case DEVINFO_INT_CLASS:                     info->i = DEVICE_CLASS_PERIPHERAL;         break;
888875
889876      /* --- the following bits of info are returned as pointers to data or functions --- */
890      case DEVINFO_FCT_SET_INFO:                  info->set_info = DEVICE_SET_INFO_NAME(cia6526); break;
891877      case DEVINFO_FCT_START:                     info->start = DEVICE_START_NAME(cia);      break;
892878      case DEVINFO_FCT_STOP:                     /* Nothing */                        break;
893879      case DEVINFO_FCT_RESET:                     info->reset = DEVICE_RESET_NAME(cia);      break;
src/emu/machine/74123.c
r4679r4680
217217}
218218
219219
220static DEVICE_SET_INFO( ttl74123 )
221{
222   switch (state)
223   {
224      /* no parameters to set */
225   }
226}
227
228
229220DEVICE_GET_INFO( ttl74123 )
230221{
231222   switch (state)
r4679r4680
236227      case DEVINFO_INT_CLASS:                     info->i = DEVICE_CLASS_PERIPHERAL;               break;
237228
238229      /* --- the following bits of info are returned as pointers to data or functions --- */
239      case DEVINFO_FCT_SET_INFO:                  info->set_info = DEVICE_SET_INFO_NAME(ttl74123);    break;
240230      case DEVINFO_FCT_START:                     info->start = DEVICE_START_NAME(ttl74123);         break;
241231      case DEVINFO_FCT_STOP:                     /* Nothing */                              break;
242232      case DEVINFO_FCT_RESET:                     info->reset = DEVICE_RESET_NAME(ttl74123);         break;
src/emu/machine/idectrl.c
r4679r4680
18801880
18811881
18821882/*-------------------------------------------------
1883    device set info callback
1884-------------------------------------------------*/
1885
1886static DEVICE_SET_INFO( ide_controller )
1887{
1888   switch (state)
1889   {
1890      /* no parameters to set */
1891   }
1892}
1893
1894
1895/*-------------------------------------------------
18961883    device get info callback
18971884-------------------------------------------------*/
18981885
r4679r4680
19061893      case DEVINFO_INT_CLASS:               info->i = DEVICE_CLASS_PERIPHERAL;      break;
19071894
19081895      /* --- the following bits of info are returned as pointers to data or functions --- */
1909      case DEVINFO_FCT_SET_INFO:            info->set_info = DEVICE_SET_INFO_NAME(ide_controller); break;
19101896      case DEVINFO_FCT_START:               info->start = DEVICE_START_NAME(ide_controller); break;
19111897      case DEVINFO_FCT_STOP:               info->stop = DEVICE_STOP_NAME(ide_controller); break;
19121898      case DEVINFO_FCT_RESET:               info->reset = DEVICE_RESET_NAME(ide_controller);break;
src/emu/machine/6821pia.c
r4679r4680
13191319
13201320
13211321/*-------------------------------------------------
1322    DEVICE_SET_INFO( pia )
1323-------------------------------------------------*/
1324
1325static DEVICE_SET_INFO( pia )
1326{
1327   switch(state)
1328   {
1329   }
1330}
1331
1332
1333/*-------------------------------------------------
13341322    DEVICE_GET_INFO( pia6821 )
13351323-------------------------------------------------*/
13361324
r4679r4680
13441332      case DEVINFO_INT_CLASS:                     info->i = DEVICE_CLASS_PERIPHERAL;         break;
13451333
13461334      /* --- the following bits of info are returned as pointers to data or functions --- */
1347      case DEVINFO_FCT_SET_INFO:                  info->set_info = DEVICE_SET_INFO_NAME(pia); break;
13481335      case DEVINFO_FCT_START:                     info->start = DEVICE_START_NAME(pia);      break;
13491336      case DEVINFO_FCT_STOP:                     /* Nothing */                        break;
13501337      case DEVINFO_FCT_RESET:                     info->reset = DEVICE_RESET_NAME(pia);      break;
src/emu/machine/68681.c
r4679r4680
607607}
608608
609609/*-------------------------------------------------
610    device set info callback
611-------------------------------------------------*/
612
613static DEVICE_SET_INFO(duart68681)
614{
615   switch (state)
616   {
617      /* no parameters to set */
618   }
619}
620
621/*-------------------------------------------------
622610    device get info callback
623611-------------------------------------------------*/
624612
r4679r4680
632620      case DEVINFO_INT_CLASS:               info->i = DEVICE_CLASS_PERIPHERAL;      break;
633621
634622      /* --- the following bits of info are returned as pointers to data or functions --- */
635      case DEVINFO_FCT_SET_INFO:            info->set_info = DEVICE_SET_INFO_NAME(duart68681); break;
636623      case DEVINFO_FCT_START:               info->start = DEVICE_START_NAME(duart68681); break;
637624      case DEVINFO_FCT_STOP:               /* nothing */ break;
638625      case DEVINFO_FCT_RESET:               info->reset = DEVICE_RESET_NAME(duart68681);break;
src/emu/machine/6532riot.c
r4679r4680
491491}
492492
493493
494static DEVICE_SET_INFO( riot6532 )
495{
496   switch (state)
497   {
498      /* no parameters to set */
499   }
500}
501
502
503494DEVICE_GET_INFO( riot6532 )
504495{
505496   switch (state)
r4679r4680
510501      case DEVINFO_INT_CLASS:                     info->i = DEVICE_CLASS_PERIPHERAL;      break;
511502
512503      /* --- the following bits of info are returned as pointers to data or functions --- */
513      case DEVINFO_FCT_SET_INFO:                  info->set_info = DEVICE_SET_INFO_NAME(riot6532); break;
514504      case DEVINFO_FCT_START:                     info->start = DEVICE_START_NAME(riot6532);break;
515505      case DEVINFO_FCT_STOP:                     /* Nothing */                     break;
516506      case DEVINFO_FCT_RESET:                     info->reset = DEVICE_RESET_NAME(riot6532);break;
src/emu/machine/6522via.c
r4679r4680
11331133
11341134
11351135/*-------------------------------------------------
1136    DEVICE_SET_INFO( via6522 )
1137-------------------------------------------------*/
1138
1139static DEVICE_SET_INFO( via6522 )
1140{
1141   switch (state)
1142   {
1143      /* no parameters to set */
1144   }
1145}
1146
1147
1148/*-------------------------------------------------
11491136    DEVICE_GET_INFO( via6522 )
11501137-------------------------------------------------*/
11511138
r4679r4680
11591146      case DEVINFO_INT_CLASS:                     info->i = DEVICE_CLASS_PERIPHERAL;         break;
11601147
11611148      /* --- the following bits of info are returned as pointers to data or functions --- */
1162      case DEVINFO_FCT_SET_INFO:                  info->set_info = DEVICE_SET_INFO_NAME(via6522); break;
11631149      case DEVINFO_FCT_START:                     info->start = DEVICE_START_NAME(via6522);   break;
11641150      case DEVINFO_FCT_STOP:                     /* Nothing */                        break;
11651151      case DEVINFO_FCT_RESET:                     info->reset = DEVICE_RESET_NAME(via6522);   break;
src/emu/machine/z80dma.c
r4679r4680
481481}
482482
483483
484static DEVICE_SET_INFO( z80dma )
485{
486   switch (state)
487   {
488      /* no parameters to set */
489   }
490}
491
492
493484DEVICE_GET_INFO( z80dma )
494485{
495486   switch (state)
r4679r4680
500491      case DEVINFO_INT_CLASS:                     info->i = DEVICE_CLASS_PERIPHERAL;      break;
501492
502493      /* --- the following bits of info are returned as pointers to data or functions --- */
503      case DEVINFO_FCT_SET_INFO:                  info->set_info = DEVICE_SET_INFO_NAME(z80dma); break;
504494      case DEVINFO_FCT_START:                     info->start = DEVICE_START_NAME(z80dma);break;
505495      case DEVINFO_FCT_STOP:                     /* Nothing */                     break;
506496      case DEVINFO_FCT_RESET:                     info->reset = DEVICE_RESET_NAME(z80dma);break;
src/emu/machine/8255ppi.c
r4679r4680
552552}
553553
554554
555static DEVICE_SET_INFO( ppi8255 ) {
556   switch ( state ) {
557      /* no parameters to set */
558   }
559}
560
561
562555DEVICE_GET_INFO(ppi8255) {
563556   switch ( state ) {
564557      /* --- the following bits of info are returned as 64-bit signed integers --- */
r4679r4680
567560      case DEVINFO_INT_CLASS:                  info->i = DEVICE_CLASS_PERIPHERAL;         break;
568561
569562      /* --- the following bits of info are returned as pointers to data or functions --- */
570      case DEVINFO_FCT_SET_INFO:               info->set_info = DEVICE_SET_INFO_NAME(ppi8255);   break;
571563      case DEVINFO_FCT_START:                  info->start = DEVICE_START_NAME(ppi8255);   break;
572564      case DEVINFO_FCT_STOP:                  /* nothing */                        break;
573565      case DEVINFO_FCT_RESET:                  info->reset = DEVICE_RESET_NAME(ppi8255);   break;
src/emu/machine/x76f041.c
r4679r4680
115115
116116   if( data == NULL )
117117   {
118      data = (UINT8 *)auto_malloc(
118      data = auto_alloc_array( machine, UINT8,
119119         SIZE_RESPONSE_TO_RESET +
120120         SIZE_READ_PASSWORD +
121121         SIZE_WRITE_PASSWORD +
src/emu/machine/smc91c9x.c
r4679r4680
590590
591591
592592/*-------------------------------------------------
593    device set info callback
594-------------------------------------------------*/
595
596static DEVICE_SET_INFO( smc91c9x )
597{
598   switch (state)
599   {
600      /* no parameters to set */
601   }
602}
603
604
605/*-------------------------------------------------
606593    device get info callback
607594-------------------------------------------------*/
608595
r4679r4680
616603      case DEVINFO_INT_CLASS:               info->i = DEVICE_CLASS_PERIPHERAL;      break;
617604
618605      /* --- the following bits of info are returned as pointers to data or functions --- */
619      case DEVINFO_FCT_SET_INFO:            info->set_info = DEVICE_SET_INFO_NAME(smc91c9x); break;
620606      case DEVINFO_FCT_START:               info->start = DEVICE_START_NAME(smc91c9x); break;
621607      case DEVINFO_FCT_RESET:               info->reset = DEVICE_RESET_NAME(smc91c9x);break;
622608
src/emu/machine/8257dma.c
r4679r4680
397397}
398398
399399
400static DEVICE_SET_INFO( dma8257 )
401{
402   switch (state)
403   {
404      /* no parameters to set */
405   }
406}
407
408
409400DEVICE_GET_INFO( dma8257 )
410401{
411402   switch (state)
r4679r4680
416407      case DEVINFO_INT_CLASS:                     info->i = DEVICE_CLASS_PERIPHERAL;      break;
417408
418409      /* --- the following bits of info are returned as pointers to data or functions --- */
419      case DEVINFO_FCT_SET_INFO:                  info->set_info = DEVICE_SET_INFO_NAME(dma8257); break;
420410      case DEVINFO_FCT_START:                     info->start = DEVICE_START_NAME(dma8257);break;
421411      case DEVINFO_FCT_STOP:                     /* Nothing */                     break;
422412      case DEVINFO_FCT_RESET:                     info->reset = DEVICE_RESET_NAME(dma8257);break;
src/emu/machine/z80pio.c
r4679r4680
580580}
581581
582582
583static DEVICE_SET_INFO( z80pio )
584{
585   switch (state)
586   {
587      /* no parameters to set */
588   }
589}
590
591
592583DEVICE_GET_INFO( z80pio )
593584{
594585   switch (state)
r4679r4680
599590      case DEVINFO_INT_CLASS:                     info->i = DEVICE_CLASS_PERIPHERAL;      break;
600591
601592      /* --- the following bits of info are returned as pointers to data or functions --- */
602      case DEVINFO_FCT_SET_INFO:                  info->set_info = DEVICE_SET_INFO_NAME(z80pio); break;
603593      case DEVINFO_FCT_START:                     info->start = DEVICE_START_NAME(z80pio);break;
604594      case DEVINFO_FCT_STOP:                     /* Nothing */                     break;
605595      case DEVINFO_FCT_RESET:                     info->reset = DEVICE_RESET_NAME(z80pio);break;
src/emu/machine/i2cmem.c
r4679r4680
5353   int shift;
5454   int devsel;
5555   int byteaddr;
56   unsigned char *data;
56   UINT8 *data;
5757   int data_size;
58   unsigned char *page;
58   UINT8 *page;
5959   int page_offset;
6060   int page_size;
6161};
r4679r4680
7171
7272static struct i2cmem_chip i2cmem[ I2CMEM_MAXCHIP ];
7373
74void i2cmem_init( running_machine *machine, int chip, int slave_address, int page_size, int data_size, unsigned char *data )
74void i2cmem_init( running_machine *machine, int chip, int slave_address, int page_size, int data_size, UINT8 *data )
7575{
7676   struct i2cmem_chip *c;
77   unsigned char *page = NULL;
77   UINT8 *page = NULL;
7878
7979   if( chip >= I2CMEM_MAXCHIP )
8080   {
r4679r4680
8686
8787   if( data == NULL )
8888   {
89      data = (unsigned char *)auto_malloc( data_size );
89      data = auto_alloc_array( machine, UINT8, data_size );
9090   }
9191
9292   if( page_size > 0 )
9393   {
94      page = (unsigned char *)auto_malloc( page_size );
94      page = auto_alloc_array( machine, UINT8, page_size );
9595   }
9696
9797   c->slave_address = slave_address;
src/emu/machine/eepromdev.c
r4679r4680
361361
362362static DEVICE_NVRAM( eeprom )
363363{
364   const eeprom_config *config = device->inline_config;
364   const eeprom_config *config = (const eeprom_config *)device->inline_config;
365365
366366   if (read_or_write)
367367      eepromdev_save(device, file);
r4679r4680
384384   assert(device->machine != NULL);
385385   assert(device->machine->config != NULL);
386386
387   config = device->inline_config;
387   config = (const eeprom_config *)device->inline_config;
388388
389389   c->intf = config->pinterface;
390390
r4679r4680
422422{
423423}
424424
425static DEVICE_SET_INFO(eeprom)
426{
427   switch (state)
428   {
429      /* no parameters to set */
430   }
431}
432
433425DEVICE_GET_INFO(eeprom)
434426{
435427   switch (state)
r4679r4680
440432      case DEVINFO_INT_CLASS:               info->i = DEVICE_CLASS_PERIPHERAL; break;
441433
442434      /* --- the following bits of info are returned as pointers to data or functions --- */
443      case DEVINFO_FCT_SET_INFO:            info->set_info = DEVICE_SET_INFO_NAME(eeprom); break;
444435      case DEVINFO_FCT_START:               info->start = DEVICE_START_NAME(eeprom); break;
445436      case DEVINFO_FCT_STOP:               /* nothing */ break;
446437      case DEVINFO_FCT_RESET:               info->reset = DEVICE_RESET_NAME(eeprom); break;
src/emu/machine/f3853.c
r4679r4680
208208}
209209
210210
211static DEVICE_SET_INFO( f3853 )
212{
213   switch ( state )
214   {
215   }
216}
217
218
219211DEVICE_GET_INFO( f3853 )
220212{
221213   switch ( state )
r4679r4680
226218      case DEVINFO_INT_CLASS:                  info->i = DEVICE_CLASS_PERIPHERAL;            break;
227219
228220      /* --- the following bits of info are returned as pointers to data or functions --- */
229      case DEVINFO_FCT_SET_INFO:               info->set_info = DEVICE_SET_INFO_NAME(f3853);   break;
230221      case DEVINFO_FCT_START:                  info->start = DEVICE_START_NAME(f3853);         break;
231222      case DEVINFO_FCT_STOP:                  /* nothing */                           break;
232223      case DEVINFO_FCT_RESET:                  info->reset = DEVICE_RESET_NAME(f3853);         break;
src/emu/machine/msm6242.c
r4679r4680
162162}
163163
164164
165static DEVICE_SET_INFO( msm6242 )
166{
167   switch (state)
168   {
169      /* no parameters to set */
170   }
171}
172
173
174165DEVICE_GET_INFO( msm6242 )
175166{
176167   switch (state)
r4679r4680
181172      case DEVINFO_INT_CLASS:                     info->i = DEVICE_CLASS_TIMER;            break;
182173
183174      /* --- the following bits of info are returned as pointers to data or functions --- */
184      case DEVINFO_FCT_SET_INFO:                  info->set_info = DEVICE_SET_INFO_NAME(msm6242); break;
185175      case DEVINFO_FCT_START:                     info->start = DEVICE_START_NAME(msm6242);   break;
186176      case DEVINFO_FCT_STOP:                     /* Nothing */                        break;
187177      case DEVINFO_FCT_RESET:                     /* Nothing */                        break;
src/emu/machine/6850acia.c
r4679r4680
819819
820820
821821/*-------------------------------------------------
822    DEVICE_SET_INFO( acia6850 )
823-------------------------------------------------*/
824
825static DEVICE_SET_INFO( acia6850 )
826{
827   switch (state)
828   {
829      /* no parameters to set */
830   }
831}
832
833
834/*-------------------------------------------------
835822    DEVICE_GET_INFO( acia6850 )
836823-------------------------------------------------*/
837824
r4679r4680
845832      case DEVINFO_INT_CLASS:                     info->i = DEVICE_CLASS_PERIPHERAL;            break;
846833
847834      /* --- the following bits of info are returned as pointers to data or functions --- */
848      case DEVINFO_FCT_SET_INFO:                  info->set_info = DEVICE_SET_INFO_NAME(acia6850); break;
849835      case DEVINFO_FCT_START:                     info->start = DEVICE_START_NAME(acia6850);      break;
850836      case DEVINFO_FCT_STOP:                     /* Nothing */                           break;
851837      case DEVINFO_FCT_RESET:                     info->reset = DEVICE_RESET_NAME(acia6850);      break;
src/emu/machine/wd33c93.c
r4679r4680
798798   /* allocate a timer for commands */
799799   scsi_data.cmd_timer = timer_alloc(machine, wd33c93_complete_cb, NULL);
800800
801   scsi_data.temp_input = (UINT8 *)auto_malloc( TEMP_INPUT_LEN );
801   scsi_data.temp_input = auto_alloc_array( machine, UINT8, TEMP_INPUT_LEN );
802802
803803//  state_save_register_item_array(machine, "wd33c93", NULL, 0, scsi_data);
804804}
src/emu/machine/pic8259.c
r4679r4680
427427}
428428
429429
430static DEVICE_SET_INFO( pic8259 ) {
431   switch ( state ) {
432      /* no parameters to set */
433   }
434}
435
436
437430DEVICE_GET_INFO( pic8259 ) {
438431   switch ( state ) {
439432      /* --- the following bits of info are returned as 64-bit signed integers --- */
r4679r4680
442435      case DEVINFO_INT_CLASS:                  info->i = DEVICE_CLASS_PERIPHERAL;         break;
443436
444437      /* --- the following bits of info are returned as pointers to data or functions --- */
445      case DEVINFO_FCT_SET_INFO:               info->set_info = DEVICE_SET_INFO_NAME(pic8259);   break;
446438      case DEVINFO_FCT_START:                  info->start = DEVICE_START_NAME(pic8259);   break;
447439      case DEVINFO_FCT_STOP:                  /* nothing */                        break;
448440      case DEVINFO_FCT_RESET:                  info->reset = DEVICE_RESET_NAME(pic8259);   break;
src/emu/machine/laserdsc.h
r4679r4680
2525/* types of players supported */
2626enum
2727{
28   LASERDISC_TYPE_UNKNOWN,
2829   LASERDISC_TYPE_PIONEER_PR7820,         /* Pioneer PR-7820 */
2930   LASERDISC_TYPE_PIONEER_PR8210,         /* Pioneer PR-8210 / LD-V1100 */
3031   LASERDISC_TYPE_SIMUTREK_SPECIAL,      /* Pioneer PR-8210 with mods */
r4679r4680
5455#define LASERDISC_CODE_LINE18      18         /* 24-bit line 18 code */
5556#define LASERDISC_CODE_LINE1718      1718      /* 24-bit best of line 17/18 code */
5657
57/* device configuration */
58enum
59{
60   LDINFO_INT_TYPE = DEVINFO_INT_DEVICE_SPECIFIC
61};
6258
6359
64
6560/***************************************************************************
6661    TYPE DEFINITIONS
6762***************************************************************************/
r4679r4680
228223#define SOUND_LASERDISC DEVICE_GET_INFO_NAME(laserdisc_sound)
229224DEVICE_GET_INFO( laserdisc_sound );
230225
226/* type setter */
227int laserdisc_get_type(const device_config *device);
228void laserdisc_set_type(const device_config *device, int type);
231229
230
232231#endif    /* __LASERDSC_H__ */
src/emu/machine/ldcore.c
r4679r4680
13491349      ldcore->chdtracks = totalhunks / 2;
13501350
13511351      /* allocate memory for the precomputed per-frame metadata */
1352      ldcore->vbidata = (UINT8 *)auto_malloc(totalhunks * VBI_PACKED_BYTES);
1352      ldcore->vbidata = auto_alloc_array(device->machine, UINT8, totalhunks * VBI_PACKED_BYTES);
13531353      err = chd_get_metadata(ldcore->disc, AV_LD_METADATA_TAG, 0, ldcore->vbidata, totalhunks * VBI_PACKED_BYTES, &vbilength, NULL, NULL);
13541354      if (err != CHDERR_NONE || vbilength != totalhunks * VBI_PACKED_BYTES)
13551355         fatalerror("Precomputed VBI metadata missing or incorrect size");
r4679r4680
13781378      frame_data *frame = &ldcore->frame[index];
13791379
13801380      /* first allocate a YUY16 bitmap at 2x the height */
1381      frame->bitmap = auto_bitmap_alloc(ldcore->width, ldcore->height * 2, BITMAP_FORMAT_YUY16);
1381      frame->bitmap = auto_bitmap_alloc(device->machine, ldcore->width, ldcore->height * 2, BITMAP_FORMAT_YUY16);
13821382      fillbitmap_yuy16(frame->bitmap, 40, 109, 240);
13831383
13841384      /* make a copy of the bitmap that clips out the VBI and horizontal blanking areas */
1385      frame->visbitmap = (bitmap_t *)auto_malloc(sizeof(*frame->visbitmap));
1385      frame->visbitmap = auto_alloc(device->machine, bitmap_t);
13861386      *frame->visbitmap = *frame->bitmap;
13871387      frame->visbitmap->base = BITMAP_ADDR16(frame->visbitmap, 44, frame->bitmap->width * 8 / 720);
13881388      frame->visbitmap->height -= 44;
r4679r4680
13901390   }
13911391
13921392   /* allocate an empty frame of the same size */
1393   ldcore->emptyframe = auto_bitmap_alloc(ldcore->width, ldcore->height * 2, BITMAP_FORMAT_YUY16);
1393   ldcore->emptyframe = auto_bitmap_alloc(device->machine, ldcore->width, ldcore->height * 2, BITMAP_FORMAT_YUY16);
13941394   fillbitmap_yuy16(ldcore->emptyframe, 0, 128, 128);
13951395
13961396   /* allocate texture for rendering */
r4679r4680
14101410   if (ldcore->config.overwidth > 0 && ldcore->config.overheight > 0 && ldcore->config.overupdate != NULL)
14111411   {
14121412      ldcore->overenable = TRUE;
1413      ldcore->overbitmap[0] = auto_bitmap_alloc(ldcore->config.overwidth, ldcore->config.overheight, (bitmap_format)ldcore->config.overformat);
1414      ldcore->overbitmap[1] = auto_bitmap_alloc(ldcore->config.overwidth, ldcore->config.overheight, (bitmap_format)ldcore->config.overformat);
1413      ldcore->overbitmap[0] = auto_bitmap_alloc(device->machine, ldcore->config.overwidth, ldcore->config.overheight, (bitmap_format)ldcore->config.overformat);
1414      ldcore->overbitmap[1] = auto_bitmap_alloc(device->machine, ldcore->config.overwidth, ldcore->config.overheight, (bitmap_format)ldcore->config.overformat);
14151415      ldcore->overtex = render_texture_alloc(NULL, NULL);
14161416      if (ldcore->overtex == NULL)
14171417         fatalerror("Out of memory allocating overlay texture");
r4679r4680
14351435   /* allocate audio buffers */
14361436   ldcore->audiomaxsamples = ((UINT64)ldcore->samplerate * 1000000 + ldcore->fps_times_1million - 1) / ldcore->fps_times_1million;
14371437   ldcore->audiobufsize = ldcore->audiomaxsamples * 4;
1438   ldcore->audiobuffer[0] = (INT16 *)auto_malloc(ldcore->audiobufsize * sizeof(ldcore->audiobuffer[0][0]));
1439   ldcore->audiobuffer[1] = (INT16 *)auto_malloc(ldcore->audiobufsize * sizeof(ldcore->audiobuffer[1][0]));
1438   ldcore->audiobuffer[0] = auto_alloc_array(device->machine, INT16, ldcore->audiobufsize);
1439   ldcore->audiobuffer[1] = auto_alloc_array(device->machine, INT16, ldcore->audiobufsize);
14401440}
14411441
14421442
r4679r4680
14701470   ld->device = device;
14711471
14721472   /* allocate memory for the core state */
1473   ld->core = (ldcore_data *)auto_malloc(sizeof(*ld->core));
1474   memset(ld->core, 0, sizeof(*ld->core));
1473   ld->core = auto_alloc_clear(device->machine, ldcore_data);
14751474   ldcore = ld->core;
14761475
14771476   /* determine the maximum player-specific state size and allocate it */
14781477   statesize = 0;
14791478   for (index = 0; index < ARRAY_LENGTH(player_interfaces); index++)
14801479      statesize = MAX(statesize, player_interfaces[index]->statesize);
1481   ld->player = (ldplayer_data *)auto_malloc(statesize);
1482   memset(ld->player, 0, statesize);
1480   ld->player = (ldplayer_data *)auto_alloc_array_clear(device->machine, UINT8, statesize);
14831481
14841482   /* copy config data to the live state */
14851483   ldcore->config = *config;
r4679r4680
15781576    device set info callback
15791577-------------------------------------------------*/
15801578
1581static DEVICE_SET_INFO( laserdisc )
1579int laserdisc_get_type(const device_config *device)
15821580{
15831581   laserdisc_state *ld = get_safe_token(device);
1584   switch (state)
1582   if (ld->core != NULL)
1583      return ld->core->config.type;
1584   return LASERDISC_TYPE_UNKNOWN;
1585}
1586
1587void laserdisc_set_type(const device_config *device, int type)
1588{
1589   laserdisc_state *ld = get_safe_token(device);
1590   if (ld->core != NULL && ld->core->config.type != type)
15851591   {
1586      /* --- the following bits of info are set as 64-bit signed integers --- */
1587      case LDINFO_INT_TYPE:
1588         if (ld != NULL && ld->core != NULL && ld->core->config.type != info->i)
1589         {
1590            ld->core->config.type = info->i;
1591            device_reset(device);
1592         }
1593         break;
1592      ld->core->config.type = type;
1593      device_reset(device);
15941594   }
15951595}
15961596
r4679r4680
16321632      case DEVINFO_INT_TOKEN_BYTES:         info->i = sizeof(laserdisc_state);               break;
16331633      case DEVINFO_INT_INLINE_CONFIG_BYTES:   info->i = sizeof(laserdisc_config);               break;
16341634      case DEVINFO_INT_CLASS:               info->i = DEVICE_CLASS_VIDEO;                  break;
1635      case LDINFO_INT_TYPE:               info->i = config->type;                        break;
16361635
16371636      /* --- the following bits of info are returned as pointers --- */
16381637      case DEVINFO_PTR_ROM_REGION:         info->romregion = (intf != NULL) ? intf->romregion : NULL; break;
16391638      case DEVINFO_PTR_MACHINE_CONFIG:      info->machine_config = (intf != NULL) ? intf->machine_config : NULL; break;
16401639
16411640      /* --- the following bits of info are returned as pointers to data or functions --- */
1642      case DEVINFO_FCT_SET_INFO:            info->set_info = DEVICE_SET_INFO_NAME(laserdisc);    break;
16431641      case DEVINFO_FCT_START:               info->start = DEVICE_START_NAME(laserdisc);       break;
16441642      case DEVINFO_FCT_STOP:               info->stop = DEVICE_STOP_NAME(laserdisc);          break;
16451643      case DEVINFO_FCT_RESET:               info->reset = DEVICE_RESET_NAME(laserdisc);         break;
src/emu/machine/intelfsh.c
r4679r4680
125125   }
126126   if( data == NULL )
127127   {
128      data = auto_malloc( c->size );
128      data = auto_alloc_array( machine, UINT8, c->size );
129129      memset( data, 0xff, c->size );
130130   }
131131
src/emu/machine/x2212.c
r4679r4680
8888   assert(device->machine != NULL);
8989   assert(device->machine->config != NULL);
9090
91   c->sram = (UINT8 *)auto_malloc( SIZE_DATA );
92   c->e2prom = (UINT8 *)auto_malloc( SIZE_DATA );
91   c->sram = auto_alloc_array( device->machine, UINT8, SIZE_DATA );
92   c->e2prom = auto_alloc_array( device->machine, UINT8, SIZE_DATA );
9393   c->store = 1;
9494   c->array_recall = 1;
9595
r4679r4680
144144}
145145
146146/*-------------------------------------------------
147    device set info callback
148-------------------------------------------------*/
149
150static DEVICE_SET_INFO(x2212)
151{
152   switch (state)
153   {
154      /* no parameters to set */
155   }
156}
157
158/*-------------------------------------------------
159147    device get info callback
160148-------------------------------------------------*/
161149
r4679r4680
169157      case DEVINFO_INT_CLASS:               info->i = DEVICE_CLASS_PERIPHERAL; break;
170158
171159      /* --- the following bits of info are returned as pointers to data or functions --- */
172      case DEVINFO_FCT_SET_INFO:            info->set_info = DEVICE_SET_INFO_NAME(x2212); break;
173160      case DEVINFO_FCT_START:               info->start = DEVICE_START_NAME(x2212); break;
174161      case DEVINFO_FCT_STOP:               /* nothing */ break;
175162      case DEVINFO_FCT_RESET:               info->reset = DEVICE_RESET_NAME(x2212); break;
src/emu/machine/at28c16.c
r4679r4680
137137   assert(device->machine != NULL);
138138   assert(device->machine->config != NULL);
139139
140   c->data = (UINT8 *)auto_malloc( SIZE_DATA );
141   c->id = (UINT8 *)auto_malloc( SIZE_ID );
140   c->data = auto_alloc_array( device->machine, UINT8, SIZE_DATA );
141   c->id = auto_alloc_array( device->machine, UINT8, SIZE_ID );
142142   c->a9_12v = 0;
143143   c->oe_12v = 0;
144144   c->last_write = -1;
r4679r4680
205205}
206206
207207/*-------------------------------------------------
208    device set info callback
209-------------------------------------------------*/
210
211static DEVICE_SET_INFO(at28c16)
212{
213   switch (state)
214   {
215      /* no parameters to set */
216   }
217}
218
219/*-------------------------------------------------
220208    device get info callback
221209-------------------------------------------------*/
222210
r4679r4680
230218      case DEVINFO_INT_CLASS:               info->i = DEVICE_CLASS_PERIPHERAL; break;
231219
232220      /* --- the following bits of info are returned as pointers to data or functions --- */
233      case DEVINFO_FCT_SET_INFO:            info->set_info = DEVICE_SET_INFO_NAME(at28c16); break;
234221      case DEVINFO_FCT_START:               info->start = DEVICE_START_NAME(at28c16); break;
235222      case DEVINFO_FCT_STOP:               /* nothing */ break;
236223      case DEVINFO_FCT_RESET:               info->reset = DEVICE_RESET_NAME(at28c16); break;
src/emu/machine/scsi.c
r4679r4680
105105
106106SCSIInstance *SCSIMalloc( running_machine *machine, const SCSIClass *scsiClass )
107107{
108   SCSIInstance *scsiInstance = (SCSIInstance *) malloc_or_die( SCSISizeof( scsiClass ) );
108   SCSIInstance *scsiInstance = alloc_or_die(SCSIInstance);
109109   scsiInstance->scsiClass = scsiClass;
110110   scsiInstance->machine = machine;
111111   return scsiInstance;
src/emu/machine/latch8.c
r4679r4680
235235}
236236
237237
238static DEVICE_SET_INFO( latch8 )
239{
240   switch (state)
241   {
242      /* no parameters to set */
243   }
244}
245
246
247238DEVICE_GET_INFO( latch8 )
248239{
249240   switch (state)
r4679r4680
254245      case DEVINFO_INT_CLASS:                     info->i = DEVICE_CLASS_PERIPHERAL;      break;
255246
256247      /* --- the following bits of info are returned as pointers to data or functions --- */
257      case DEVINFO_FCT_SET_INFO:                  info->set_info = DEVICE_SET_INFO_NAME(latch8); break;
258248      case DEVINFO_FCT_START:                     info->start = DEVICE_START_NAME(latch8);break;
259249      case DEVINFO_FCT_STOP:                     /* Nothing */                     break;
260250      case DEVINFO_FCT_RESET:                     info->reset = DEVICE_RESET_NAME(latch8);break;
src/emu/machine/8237dma.c
r4679r4680
417417}
418418
419419
420static DEVICE_SET_INFO( dma8237 ) {
421   switch ( state ) {
422      /* no parameters to set */
423   }
424}
425
426
427420DEVICE_GET_INFO( dma8237 ) {
428421   switch ( state ) {
429422      /* --- the following bits of info are returned as 64-bit signed integers --- */
r4679r4680
432425      case DEVINFO_INT_CLASS:                  info->i = DEVICE_CLASS_PERIPHERAL;         break;
433426
434427      /* --- the following bits of info are returned as pointers to data or functions --- */
435      case DEVINFO_FCT_SET_INFO:               info->set_info = DEVICE_SET_INFO_NAME(dma8237);   break;
436428      case DEVINFO_FCT_START:                  info->start = DEVICE_START_NAME(dma8237);   break;
437429      case DEVINFO_FCT_STOP:                  /* nothing */                        break;
438430      case DEVINFO_FCT_RESET:                  info->reset = DEVICE_RESET_NAME(dma8237);   break;
src/emu/machine/cdp1852.c
r4679r4680
218218      case DEVINFO_INT_CLASS:                     info->i = DEVICE_CLASS_PERIPHERAL;         break;
219219
220220      /* --- the following bits of info are returned as pointers to data or functions --- */
221      case DEVINFO_FCT_SET_INFO:                  /* Nothing */                        break;
222221      case DEVINFO_FCT_START:                     info->start = DEVICE_START_NAME(cdp1852);   break;
223222      case DEVINFO_FCT_STOP:                     /* Nothing */                        break;
224223      case DEVINFO_FCT_RESET:                     info->reset = DEVICE_RESET_NAME(cdp1852);   break;
src/emu/machine/z80sio.c
r4679r4680
811811}
812812
813813
814static DEVICE_SET_INFO( z80sio )
815{
816   switch (state)
817   {
818      /* no parameters to set */
819   }
820}
821
822
823814DEVICE_GET_INFO( z80sio )
824815{
825816   switch (state)
r4679r4680
830821      case DEVINFO_INT_CLASS:                     info->i = DEVICE_CLASS_PERIPHERAL;      break;
831822
832823      /* --- the following bits of info are returned as pointers to data or functions --- */
833      case DEVINFO_FCT_SET_INFO:                  info->set_info = DEVICE_SET_INFO_NAME(z80sio); break;
834824      case DEVINFO_FCT_START:                     info->start = DEVICE_START_NAME(z80sio);break;
835825      case DEVINFO_FCT_STOP:                     /* Nothing */                     break;
836826      case DEVINFO_FCT_RESET:                     info->reset = DEVICE_RESET_NAME(z80sio);break;
src/emu/machine/microtch.c
r4679r4680
9191      {
9292         ty = 0x4000 - ty;
9393
94         microtouch_send_format_table_packet(0xc0, tx, ty);
94         microtouch_send_format_table_packet(0xc8, tx, ty);
9595         microtouch.last_touch_state = 1;
9696         microtouch.last_x = tx;
9797         microtouch.last_y = ty;
r4679r4680
102102      if ( microtouch.last_touch_state == 1 )
103103      {
104104         microtouch.last_touch_state = 0;
105         microtouch_send_format_table_packet(0x80, microtouch.last_x, microtouch.last_y);
105         microtouch_send_format_table_packet(0x88, microtouch.last_x, microtouch.last_y);
106106      }
107107   }
108108};
src/emu/machine/pci.c
r4679r4680
241241
242242
243243/*-------------------------------------------------
244    device set info callback
245-------------------------------------------------*/
246
247static DEVICE_SET_INFO( pci_bus )
248{
249   switch (state)
250   {
251      /* no parameters to set */
252   }
253}
254
255
256/*-------------------------------------------------
257244    device get info callback
258245-------------------------------------------------*/
259246
r4679r4680
267254      case DEVINFO_INT_CLASS:               info->i = DEVICE_CLASS_PERIPHERAL;      break;
268255
269256      /* --- the following bits of info are returned as pointers to data or functions --- */
270      case DEVINFO_FCT_SET_INFO:            info->set_info = DEVICE_SET_INFO_NAME(pci_bus); break;
271257      case DEVINFO_FCT_START:               info->start = DEVICE_START_NAME(pci_bus); break;
272258      case DEVINFO_FCT_RESET:               info->reset = DEVICE_RESET_NAME(pci_bus);break;
273259
src/emu/machine/i2cmemdev.c
r4679r4680
375375   assert( device->machine != NULL );
376376   assert( device->machine->config != NULL );
377377
378   config = device->inline_config;
378   config = (const i2cmem_config *)device->inline_config;
379379
380380   c->scl = 0;
381381   c->sdaw = 0;
r4679r4680
393393
394394   if( config != NULL )
395395   {
396      c->data = auto_malloc( config->data_size );
397      if( config->data != NULL )
398         memcpy(c->data, config->data, config->data_size);
396      c->data = auto_alloc_array( device->machine, UINT8, config->data_size );
397      memcpy(c->data, config->data, config->data_size);
399398
400399      if( config->page_size > 0 )
401         page = auto_malloc( config->page_size );
400         page = auto_alloc_array( device->machine, UINT8, config->page_size );
402401
403402      c->slave_address = config->slave_address;
404403      c->data_size = config->data_size;
r4679r4680
432431
433432static DEVICE_NVRAM( i2cmem )
434433{
435   const i2cmem_config *config = device->inline_config;
434   const i2cmem_config *config = (const i2cmem_config *)device->inline_config;
436435   i2cmem_state *c = get_safe_token( device );
437436
438437   if( read_or_write )
r4679r4680
451450}
452451
453452/*-------------------------------------------------
454    device set info callback
455-------------------------------------------------*/
456
457static DEVICE_SET_INFO( i2cmem )
458{
459   switch ( state )
460   {
461      /* no parameters to set */
462   }
463}
464
465/*-------------------------------------------------
466453    device get info callback
467454-------------------------------------------------*/
468455
r4679r4680
476463      case DEVINFO_INT_CLASS:               info->i = DEVICE_CLASS_PERIPHERAL; break;
477464
478465      /* --- the following bits of info are returned as pointers to data or functions --- */
479      case DEVINFO_FCT_SET_INFO:            info->set_info = DEVICE_SET_INFO_NAME( i2cmem ); break;
480466      case DEVINFO_FCT_START:               info->start = DEVICE_START_NAME( i2cmem ); break;
481467      case DEVINFO_FCT_STOP:               /* nothing */ break;
482468      case DEVINFO_FCT_RESET:               info->reset = DEVICE_RESET_NAME( i2cmem ); break;
src/emu/machine/z80ctc.c
r4679r4680
516516}
517517
518518
519static DEVICE_SET_INFO( z80ctc )
520{
521   switch (state)
522   {
523      /* no parameters to set */
524   }
525}
526
527
528519DEVICE_GET_INFO( z80ctc )
529520{
530521   switch (state)
r4679r4680
535526      case DEVINFO_INT_CLASS:                     info->i = DEVICE_CLASS_PERIPHERAL;      break;
536527
537528      /* --- the following bits of info are returned as pointers to data or functions --- */
538      case DEVINFO_FCT_SET_INFO:                  info->set_info = DEVICE_SET_INFO_NAME(z80ctc); break;
539529      case DEVINFO_FCT_START:                     info->start = DEVICE_START_NAME(z80ctc);break;
540530      case DEVINFO_FCT_STOP:                     /* Nothing */                     break;
541531      case DEVINFO_FCT_RESET:                     info->reset = DEVICE_RESET_NAME(z80ctc);break;
src/emu/machine/pit8253.c
r4679r4680
11191119}
11201120
11211121
1122static DEVICE_SET_INFO( pit8253 ) {
1123   switch ( state ) {
1124      /* no parameters to set */
1125   }
1126}
1127
1128
11291122DEVICE_GET_INFO( pit8253 ) {
11301123   switch ( state ) {
11311124      /* --- the following bits of info are returned as 64-bit signed integers --- */
r4679r4680
11341127      case DEVINFO_INT_CLASS:                  info->i = DEVICE_CLASS_PERIPHERAL;         break;
11351128
11361129      /* --- the following bits of info are returned as pointers to data or functions --- */
1137      case DEVINFO_FCT_SET_INFO:               info->set_info = DEVICE_SET_INFO_NAME(pit8253);   break;
11381130      case DEVINFO_FCT_START:                  info->start = DEVICE_START_NAME(pit8253);   break;
11391131      case DEVINFO_FCT_STOP:                  /* nothing */                        break;
11401132      case DEVINFO_FCT_RESET:                  info->reset = DEVICE_RESET_NAME(pit8253);   break;
src/emu/machine/mc146818.c
r4679r4680
199199
200200void mc146818_init(running_machine *machine, MC146818_TYPE type)
201201{
202   mc146818 = (struct mc146818_chip *)auto_malloc(sizeof(*mc146818));
203   memset(mc146818, 0, sizeof(*mc146818));
202   mc146818 = auto_alloc_clear(machine, struct mc146818_chip);
204203   mc146818->type = type;
205204   mc146818->last_refresh = timer_get_time(machine);
206205    timer_pulse(machine, ATTOTIME_IN_HZ(1), NULL, 0, mc146818_timer);
src/emu/restrack.h
r4679r4680
5959
6060
6161/* allocate memory and fatalerror if there's a problem */
62#define malloc_or_die(s)         malloc_or_die_file_line(s, __FILE__, __LINE__)
62#define alloc_or_die(t)               ((t *)malloc_or_die_file_line(sizeof(t), __FILE__, __LINE__))
63#define alloc_clear_or_die(t)         ((t *)memset(malloc_or_die_file_line(sizeof(t), __FILE__, __LINE__), 0, sizeof(t)))
64#define alloc_array_or_die(t, c)      ((t *)malloc_or_die_file_line((c) * sizeof(t), __FILE__, __LINE__))
65#define alloc_array_clear_or_die(t, c)    ((t *)memset(malloc_or_die_file_line((c) * sizeof(t), __FILE__, __LINE__), 0, (c) * sizeof(t)))
6366void *malloc_or_die_file_line(size_t size, const char *file, int line) ATTR_MALLOC;
6467
68
6569/* allocate memory that will be freed at the next end_resource_tracking */
66#define auto_malloc(s)            auto_malloc_file_line(s, __FILE__, __LINE__)
67void *auto_malloc_file_line(size_t size, const char *file, int line) ATTR_MALLOC;
70#define auto_alloc(m, t)            ((t *)auto_malloc_file_line(m, sizeof(t), __FILE__, __LINE__))
71#define auto_alloc_clear(m, t)         ((t *)memset(auto_malloc_file_line(m, sizeof(t), __FILE__, __LINE__), 0, sizeof(t)))
72#define auto_alloc_array(m, t, c)      ((t *)auto_malloc_file_line(m, (c) * sizeof(t), __FILE__, __LINE__))
73#define auto_alloc_array_clear(m, t, c) ((t *)memset(auto_malloc_file_line(m, (c) * sizeof(t), __FILE__, __LINE__), 0, (c) * sizeof(t)))
74void *auto_malloc_file_line(running_machine *machine, size_t size, const char *file, int line) ATTR_MALLOC;
6875
6976/* allocate memory that will be freed at the next end_resource_tracking */
70#define auto_realloc(p, s)         auto_realloc_file_line(p, s, __FILE__, __LINE__)
71void *auto_realloc_file_line(void *ptr, size_t size, const char *file, int line) ATTR_MALLOC;
77#define auto_extend_array(m, p, t, c)   ((t *)auto_realloc_file_line(m, p, (c) * sizeof(t), __FILE__, __LINE__))
78void *auto_realloc_file_line(running_machine *machine, void *ptr, size_t size, const char *file, int line) ATTR_MALLOC;
7279
7380/* allocate memory and duplicate a string that will be freed at the next end_resource_tracking */
74#define auto_strdup(s)            auto_strdup_file_line(s, __FILE__, __LINE__)
75char *auto_strdup_file_line(const char *str, const char *file, int line) ATTR_MALLOC;
81#define auto_strdup(m, s)            auto_strdup_file_line(m, s, __FILE__, __LINE__)
82char *auto_strdup_file_line(running_machine *machine, const char *str, const char *file, int line) ATTR_MALLOC;
7683
7784/* auto_strdup() variant that tolerates NULL */
78#define auto_strdup_allow_null(s)   auto_strdup_allow_null_file_line(s, __FILE__, __LINE__)
79char *auto_strdup_allow_null_file_line(const char *str, const char *file, int line) ATTR_MALLOC;
85#define auto_strdup_allow_null(m, s)   auto_strdup_allow_null_file_line(m, s, __FILE__, __LINE__)
86char *auto_strdup_allow_null_file_line(running_machine *machine, const char *str, const char *file, int line) ATTR_MALLOC;
8087
8188/* allocate a bitmap that will be freed at the next end_resource_tracking */
82#define auto_astring_alloc()      auto_astring_alloc_file_line(__FILE__, __LINE__)
83astring *auto_astring_alloc_file_line(const char *file, int line);
89#define auto_astring_alloc(m)         auto_astring_alloc_file_line(m, __FILE__, __LINE__)
90astring *auto_astring_alloc_file_line(running_machine *machine, const char *file, int line);
8491
8592/* allocate a bitmap that will be freed at the next end_resource_tracking */
86#define auto_bitmap_alloc(w,h,f)   auto_bitmap_alloc_file_line(w, h, f, __FILE__, __LINE__)
87bitmap_t *auto_bitmap_alloc_file_line(int width, int height, bitmap_format format, const char *file, int line);
93#define auto_bitmap_alloc(m, w, h, f)   auto_bitmap_alloc_file_line(m, w, h, f, __FILE__, __LINE__)
94bitmap_t *auto_bitmap_alloc_file_line(running_machine *machine, int width, int height, bitmap_format format, const char *file, int line);
8895
8996
9097#endif /* __RESTRACK_H__ */
src/emu/devintrf.h
r4679r4680
6868   /* --- the following bits of info are returned as pointers to functions --- */
6969   DEVINFO_FCT_FIRST = 0x20000,
7070
71      DEVINFO_FCT_SET_INFO = DEVINFO_FCT_FIRST,      /* R/O: device_set_info_func */
72      DEVINFO_FCT_START,                        /* R/O: device_start_func */
71      DEVINFO_FCT_START = DEVINFO_FCT_FIRST,         /* R/O: device_start_func */
7372      DEVINFO_FCT_STOP,                        /* R/O: device_stop_func */
7473      DEVINFO_FCT_RESET,                        /* R/O: device_reset_func */
7574      DEVINFO_FCT_EXECUTE,                     /* R/O: device_execute_func */
r4679r4680
105104#define DEVICE_GET_INFO(name)      void DEVICE_GET_INFO_NAME(name)(const device_config *device, UINT32 state, deviceinfo *info)
106105#define DEVICE_GET_INFO_CALL(name)   DEVICE_GET_INFO_NAME(name)(device, state, info)
107106
108#define DEVICE_SET_INFO_NAME(name)   device_set_info_##name
109#define DEVICE_SET_INFO(name)      void DEVICE_SET_INFO_NAME(name)(const device_config *device, UINT32 state, const deviceinfo *info)
110#define DEVICE_SET_INFO_CALL(name)   DEVICE_SET_INFO_NAME(name)(device, state, info)
111
112107#define DEVICE_START_NAME(name)      device_start_##name
113108#define DEVICE_START(name)         void DEVICE_START_NAME(name)(const device_config *device)
114109#define DEVICE_START_CALL(name)      DEVICE_START_NAME(name)(device)
r4679r4680
148143#define devtag_get_info_fct(mach,tag,state)               device_get_info_fct(devtag_get_device(mach, tag), state)
149144#define devtag_get_info_string(mach,tag,state)            device_get_info_string(devtag_get_device(mach, tag), state)
150145
151#define devtag_set_info_int(mach,tag,state,data)         device_set_info_int(devtag_get_device(mach, tag), state, data)
152#define devtag_set_info_ptr(mach,tag,state,data)         device_set_info_ptr(devtag_get_device(mach, tag), state, data)
153#define devtag_set_info_fct(mach,tag,state,data)         device_set_info_fct(devtag_get_device(mach, tag), state, data)
154146
155
156147/* shorthand for getting standard data about device types */
157148#define devtype_get_name(type)                        devtype_get_info_string(type, DEVINFO_STR_NAME)
158149#define devtype_get_family(type)                      devtype_get_info_string(type, DEVINFO_STR_FAMILY)
r4679r4680
189180
190181/* device interface function types */
191182typedef void (*device_get_info_func)(const device_config *device, UINT32 state, deviceinfo *info);
192typedef void (*device_set_info_func)(const device_config *device, UINT32 state, const deviceinfo *info);
193183typedef void (*device_start_func)(const device_config *device);
194184typedef void (*device_stop_func)(const device_config *device);
195185typedef INT32 (*device_execute_func)(const device_config *device, INT32 clocks);
r4679r4680
211201   genf *              f;                  /* generic function pointers */
212202   char *               s;                  /* generic strings */
213203
214   device_set_info_func    set_info;            /* DEVINFO_FCT_SET_INFO */
215204   device_start_func      start;               /* DEVINFO_FCT_START */
216205   device_stop_func      stop;               /* DEVINFO_FCT_STOP */
217206   device_reset_func      reset;               /* DEVINFO_FCT_RESET */
r4679r4680
236225   /* device properties (always valid) */
237226   device_type            type;               /* device type */
238227   device_class         devclass;            /* device class */
239   device_set_info_func    set_info;            /* quick pointer to set_info callback */
240228
241229   /* device configuration (always valid) */
242230   UINT32               clock;               /* device clock */
r4679r4680
369357const char *devtype_get_info_string(device_type type, UINT32 state);
370358
371359
372
373/* ----- device information setters ----- */
374
375/* set an integer state value for an allocated device */
376void device_set_info_int(const device_config *device, UINT32 state, INT64 data);
377
378/* set a pointer state value for an allocated device */
379void device_set_info_ptr(const device_config *device, UINT32 state, void *data);
380
381/* set a function pointer state value for an allocated device */
382void device_set_info_fct(const device_config *device, UINT32 state, genf *data);
383
384
385360#endif   /* __DEVINTRF_H__ */
src/emu/cpuexec.c
r4679r4680
223223   attotime min_quantum;
224224
225225   /* allocate global state */
226   machine->cpuexec_data = (cpuexec_private *)auto_malloc(sizeof(*machine->cpuexec_data));
227   memset(machine->cpuexec_data, 0, sizeof(*machine->cpuexec_data));
226   machine->cpuexec_data = auto_alloc_clear(machine, cpuexec_private);
228227
229228   /* set the core scheduling quantum */
230229   min_quantum = machine->config->minimum_quantum;
r4679r4680
627626    cpu_set_info - device set info callback
628627-------------------------------------------------*/
629628
630static DEVICE_SET_INFO( cpu )
629void cpu_set_info(const device_config *device, UINT32 state, UINT64 value)
631630{
632631   cpu_class_header *header = cpu_get_class_header(device);
633632   cpu_set_info_func set_info;
r4679r4680
652651            {
653652               if (state >= CPUINFO_INT_REGISTER && state <= CPUINFO_INT_REGISTER_LAST)
654653               {
655                  set_register_value(device, classdata->state->baseptr, classdata->regstate[state - CPUINFO_INT_REGISTER], info->i);
654                  set_register_value(device, classdata->state->baseptr, classdata->regstate[state - CPUINFO_INT_REGISTER], value);
656655                  return;
657656               }
658657            }
659658         }
660659
661660         /* integer data */
661         assert(state >= DEVINFO_INT_FIRST && state <= DEVINFO_INT_LAST);
662662         if (state >= DEVINFO_INT_FIRST && state <= DEVINFO_INT_LAST)
663663         {
664            cinfo.i = info->i;
664            cinfo.i = value;
665665            (*set_info)(device, state, &cinfo);
666666         }
667
668         /* pointer data */
669         else if ((state >= DEVINFO_PTR_FIRST && state <= DEVINFO_PTR_LAST) ||
670                (state >= DEVINFO_FCT_FIRST && state <= DEVINFO_FCT_LAST) ||
671                (state >= DEVINFO_STR_FIRST && state <= DEVINFO_STR_LAST))
672         {
673            cinfo.p = info->p;
674            (*set_info)(device, state, &cinfo);
675         }
676667         break;
677668   }
678669}
r4679r4680
701692      case DEVINFO_INT_CLASS:               info->i = DEVICE_CLASS_CPU_CHIP;         break;
702693
703694      /* --- the following bits of info are returned as pointers to data or functions --- */
704      case DEVINFO_FCT_SET_INFO:            info->set_info = DEVICE_SET_INFO_NAME(cpu); break;
705695      case DEVINFO_FCT_START:               info->start = DEVICE_START_NAME(cpu);       break;
706696      case DEVINFO_FCT_STOP:               info->stop = DEVICE_STOP_NAME(cpu);       break;
707697      case DEVINFO_FCT_RESET:               info->reset = DEVICE_RESET_NAME(cpu);       break;
r4679r4680
15151505         switch (state)
15161506         {
15171507            case PULSE_LINE:
1518               device_set_info_int(device, CPUINFO_INT_INPUT_STATE + param, ASSERT_LINE);
1519               device_set_info_int(device, CPUINFO_INT_INPUT_STATE + param, CLEAR_LINE);
1508               cpu_set_info(device, CPUINFO_INT_INPUT_STATE + param, ASSERT_LINE);
1509               cpu_set_info(device, CPUINFO_INT_INPUT_STATE + param, CLEAR_LINE);
15201510               break;
15211511
15221512            case HOLD_LINE:
15231513            case ASSERT_LINE:
1524               device_set_info_int(device, CPUINFO_INT_INPUT_STATE + param, ASSERT_LINE);
1514               cpu_set_info(device, CPUINFO_INT_INPUT_STATE + param, ASSERT_LINE);
15251515               break;
15261516
15271517            case CLEAR_LINE:
1528               device_set_info_int(device, CPUINFO_INT_INPUT_STATE + param, CLEAR_LINE);
1518               cpu_set_info(device, CPUINFO_INT_INPUT_STATE + param, CLEAR_LINE);
15291519               break;
15301520
15311521            default:
r4679r4680
15621552   if (inputline->curstate == HOLD_LINE)
15631553   {
15641554      LOG(("->set_irq_line('%s',%d,%d)\n", device->tag, irqline, CLEAR_LINE));
1565      device_set_info_int(device, CPUINFO_INT_INPUT_STATE + irqline, CLEAR_LINE);
1555      cpu_set_info(device, CPUINFO_INT_INPUT_STATE + irqline, CLEAR_LINE);
15661556      inputline->curstate = CLEAR_LINE;
15671557   }
15681558
src/emu/rendlay.c
r4679r4680
217217
218218INLINE const char *copy_string(const char *string)
219219{
220   char *newstring = (char *)malloc_or_die(strlen(string) + 1);
220   char *newstring = alloc_array_or_die(char, strlen(string) + 1);
221221   strcpy(newstring, string);
222222   return newstring;
223223}
r4679r4680
15091509      return NULL;
15101510
15111511   /* allocate the layout group object first */
1512   file = (layout_file *)malloc_or_die(sizeof(*file));
1513   memset(file, 0, sizeof(*file));
1512   file = alloc_clear_or_die(layout_file);
15141513
15151514   /* find the layout node */
15161515   mamelayoutnode = xml_get_sibling(rootnode->child, "mamelayout");
r4679r4680
15791578   int first;
15801579
15811580   /* allocate a new element */
1582   element = (layout_element *)malloc_or_die(sizeof(*element));
1583   memset(element, 0, sizeof(*element));
1581   element = alloc_clear_or_die(layout_element);
15841582
15851583   /* extract the name */
15861584   name = xml_get_attribute_string_with_subst(config, elemnode, "name", NULL);
r4679r4680
16421640   }
16431641
16441642   /* allocate an array of element textures for the states */
1645   element->elemtex = (element_texture *)malloc_or_die((element->maxstate + 1) * sizeof(element->elemtex[0]));
1643   element->elemtex = alloc_array_or_die(element_texture, element->maxstate + 1);
16461644   for (state = 0; state <= element->maxstate; state++)
16471645   {
16481646      element->elemtex[state].element = element;
r4679r4680
16681666   element_component *component;
16691667
16701668   /* allocate memory for the component */
1671   component = (element_component *)malloc_or_die(sizeof(*component));
1672   memset(component, 0, sizeof(*component));
1669   component = alloc_clear_or_die(element_component);
16731670
16741671   /* fetch common data */
16751672   component->state = xml_get_attribute_int_with_subst(config, compnode, "state", -1);
r4679r4680
16991696
17001697      /* allocate a copy of the string */
17011698      component->type = COMPONENT_TYPE_TEXT;
1702      string = (char *)malloc_or_die(strlen(text) + 1);
1699      string = alloc_array_or_die(char, strlen(text) + 1);
17031700      strcpy(string, text);
17041701      component->string = string;
17051702   }
r4679r4680
17561753   int layer;
17571754
17581755   /* first allocate memory */
1759   view = (layout_view *)malloc_or_die(sizeof(*view));
1760   memset(view, 0, sizeof(*view));
1756   view = alloc_clear_or_die(layout_view);
17611757
17621758   /* allocate a copy of the name */
17631759   view->name = copy_string(xml_get_attribute_string_with_subst(config, viewnode, "name", ""));
r4679r4680
18101806   const char *name;
18111807
18121808   /* allocate a new item */
1813   item = (view_item *)malloc_or_die(sizeof(*item));
1814   memset(item, 0, sizeof(*item));
1809   item = alloc_clear_or_die(view_item);
18151810
18161811   /* allocate a copy of the output name */
18171812   item->output_name = copy_string(xml_get_attribute_string_with_subst(config, itemnode, "name", ""));
src/emu/cpuintrf.h
r4679r4680
349349#define cpu_get_flags_string(cpu)         device_get_info_string(cpu, CPUINFO_STR_FLAGS)
350350#define cpu_get_irq_string(cpu, irq)      device_get_info_string(cpu, CPUINFO_STR_IRQ_STATE + (irq))
351351#define cpu_get_reg_string(cpu, reg)      device_get_info_string(cpu, CPUINFO_STR_REGISTER + (reg))
352#define cpu_set_reg(cpu, reg, val)         device_set_info_int(cpu, CPUINFO_INT_REGISTER + (reg), (val))
353352
353#define cpu_set_reg(cpu, reg, val)         cpu_set_info(cpu, CPUINFO_INT_REGISTER + (reg), (val))
354354
355355
356
356357/***************************************************************************
357358    TYPE DEFINITIONS
358359***************************************************************************/
r4679r4680
448449};
449450
450451
452void cpu_set_info(const device_config *device, UINT32 state, UINT64 value);
451453
452454#endif   /* __CPUINTRF_H__ */
src/emu/output.c
r4679r4680
7878
7979INLINE const char *copy_string(const char *string)
8080{
81   char *newstring = (char *)malloc_or_die(strlen(string) + 1);
81   char *newstring = alloc_array_or_die(char, strlen(string) + 1);
8282   strcpy(newstring, string);
8383   return newstring;
8484}
r4679r4680
118118
119119INLINE output_item *create_new_item(const char *outname, INT32 value)
120120{
121   output_item *item = (output_item *)malloc_or_die(sizeof(*item));
121   output_item *item = alloc_or_die(output_item);
122122   UINT32 hash = get_hash(outname);
123123
124124   /* fill in the data */
r4679r4680
343343   /* find the end of the list and add to it */
344344   while (*headptr != NULL)
345345      headptr = &(*headptr)->next;
346   *headptr = (output_notify *)malloc_or_die(sizeof(**headptr));
346   *headptr = alloc_or_die(output_notify);
347347
348348   /* fill in the new record */
349349   (*headptr)->next = NULL;
src/emu/sound/sp0256.c
r4679r4680
12011201    /* -------------------------------------------------------------------- */
12021202    /*  Allocate a scratch buffer for generating ~10kHz samples.             */
12031203    /* -------------------------------------------------------------------- */
1204    sp->scratch = (INT16 *)malloc_or_die(SCBUF_SIZE * sizeof(INT16));
1204    sp->scratch = auto_alloc_array(device->machine, INT16, SCBUF_SIZE);
12051205    sp->sc_head = sp->sc_tail = 0;
12061206
12071207    /* -------------------------------------------------------------------- */
r4679r4680
12201220   sp0256_bitrevbuff(sp->rom, 0, 0xffff);
12211221}
12221222
1223static DEVICE_STOP( sp0256 )
1224{
1225   sp0256_state *sp = get_safe_token(device);
1226   free( sp->scratch );
1227}
1228
12291223static void sp0256_reset(sp0256_state *sp)
12301224{
12311225   /* ---------------------------------------------------------------- */
r4679r4680
13641358
13651359      /* --- the following bits of info are returned as pointers to data or functions --- */
13661360      case DEVINFO_FCT_START:                     info->start = DEVICE_START_NAME( sp0256 );         break;
1367      case DEVINFO_FCT_STOP:                     info->stop = DEVICE_STOP_NAME( sp0256 );         break;
13681361      case DEVINFO_FCT_RESET:                     info->reset = DEVICE_RESET_NAME( sp0256 );         break;
13691362
13701363      /* --- the following bits of info are returned as NULL-terminated strings --- */
src/emu/sound/tms5110.c
r4679r4680
181181{
182182   struct tms5110 *tms;
183183
184   tms = (struct tms5110 *)malloc_or_die(sizeof(*tms));
185   memset(tms, 0, sizeof(*tms));
184   tms = alloc_clear_or_die(struct tms5110);
186185
187186   tms->device = device;
188187   tms5110_set_variant(tms, variant);
src/emu/sound/k051649.c
r4679r4680
6565}
6666
6767/* build a table to divide by the number of voices */
68static void make_mixer_table(k051649_state *info, int voices)
68static void make_mixer_table(running_machine *machine, k051649_state *info, int voices)
6969{
7070   int count = voices * 256;
7171   int i;
7272   int gain = 8;
7373
7474   /* allocate memory */
75   info->mixer_table = (INT16 *)auto_malloc(512 * voices * sizeof(INT16));
75   info->mixer_table = auto_alloc_array(machine, INT16, 512 * voices);
7676
7777   /* find the middle of the table */
7878   info->mixer_lookup = info->mixer_table + (256 * voices);
r4679r4680
145145   info->mclock = device->clock;
146146
147147   /* allocate a buffer to mix into - 1 second's worth should be more than enough */
148   info->mixer_buffer = (short *)auto_malloc(2 * sizeof(short) * info->rate);
148   info->mixer_buffer = auto_alloc_array(device->machine, short, 2 * info->rate);
149149
150150   /* build the mixer table */
151   make_mixer_table(info, 5);
151   make_mixer_table(device->machine, info, 5);
152152}
153153
154154static DEVICE_RESET( k051649 )
src/emu/sound/k054539.c
r4679r4680
455455   info->k054539_flags |= K054539_UPDATE_AT_KEYON; //* make it default until proven otherwise
456456
457457   // Real size of 0x4000, the addon is to simplify the reverb buffer computations
458   info->ram = (unsigned char *)auto_malloc(0x4000*2+device->clock/50*2);
458   info->ram = auto_alloc_array(device->machine, unsigned char, 0x4000*2+device->clock/50*2);
459459   info->reverb_pos = 0;
460460   info->cur_ptr = 0;
461461   memset(info->ram, 0, 0x4000*2+device->clock/50*2);
src/emu/sound/c140.c
r4679r4680
496496   }
497497
498498   /* allocate a pair of buffers to mix into - 1 second's worth should be more than enough */
499   info->mixer_buffer_left = (INT16 *)auto_malloc(2 * sizeof(INT16)*info->sample_rate );
499   info->mixer_buffer_left = auto_alloc_array(device->machine, INT16, 2 * info->sample_rate);
500500   info->mixer_buffer_right = info->mixer_buffer_left + info->sample_rate;
501501}
502502
src/emu/sound/qsound.c
r4679r4680
239239         ch=(ch+1)&0x0f;   /* strange ... */
240240         chip->channel[ch].bank=(value&0x7f)<<16;
241241#ifdef MAME_DEBUG
242         if (!value & 0x8000)
242         if (!(value & 0x8000))
243243            popmessage("Register3=%04x",value);
244244#endif
245245
src/emu/sound/cem3394.c
r4679r4680
344344   chip->filter_zero_freq = intf->filter_zero_freq;
345345
346346   /* allocate memory for a mixer buffer and external buffer (1 second should do it!) */
347   chip->mixer_buffer = (INT16 *)auto_malloc(chip->sample_rate * sizeof(INT16));
348   chip->external_buffer = (INT16 *)auto_malloc(chip->sample_rate * sizeof(INT16));
347   chip->mixer_buffer = auto_alloc_array(device->machine, INT16, chip->sample_rate);
348   chip->external_buffer = auto_alloc_array(device->machine, INT16, chip->sample_rate);
349349
350350   state_save_register_device_item_array(device, 0, chip->values);
351351   state_save_register_device_item(device, 0, chip->wave_select);
src/emu/sound/sidvoice.c
r4679r4680
2626
2727static const UINT32 noiseSeed = 0x7ffff8;
2828
29void sidInitMixerEngine(void)
29void sidInitMixerEngine(running_machine *machine)
3030{
3131   UINT16 uk;
3232   INT32 si, sj    ;
r4679r4680
3434   /* 8-bit volume modulation tables. */
3535   float filterAmpl = 0.7f;
3636
37   ampMod1x8=(INT8*) auto_malloc(256*256);
37   ampMod1x8=auto_alloc_array(machine, INT8, 256*256);
3838
3939   uk = 0;
4040   for ( si = 0; si < 256; si++ )
src/emu/sound/sidvoice.h
r4679r4680
107107INT8 sidWaveCalcNormal(sidOperator* pVoice);
108108
109109void sidInitWaveformTables(SIDTYPE type);
110void sidInitMixerEngine(void);
110void sidInitMixerEngine(running_machine *machine);
111111
112112#if 0
113113extern ptr2sidVoidFunc sid6581ModeNormalTable[16];
src/emu/sound/ymz280b.c
r4679r4680
659659   chip->stream = stream_create(device, 0, 2, INTERNAL_SAMPLE_RATE, chip, ymz280b_update);
660660
661661   /* allocate memory */
662   chip->scratch = (INT16 *)auto_malloc(sizeof(chip->scratch[0]) * MAX_SAMPLE_CHUNK);
662   chip->scratch = auto_alloc_array(device->machine, INT16, MAX_SAMPLE_CHUNK);
663663
664664   /* state save */
665665   {
src/emu/sound/k005289.c
r4679r4680
7171}
7272
7373/* build a table to divide by the number of voices */
74static void make_mixer_table(k005289_state *info, int voices)
74static void make_mixer_table(running_machine *machine, k005289_state *info, int voices)
7575{
7676   int count = voices * 128;
7777   int i;
7878   int gain = 16;
7979
8080   /* allocate memory */
81   info->mixer_table = (INT16 *)auto_malloc(256 * voices * sizeof(INT16));
81   info->mixer_table = auto_alloc_array(machine, INT16, 256 * voices);
8282
8383   /* find the middle of the table */
8484   info->mixer_lookup = info->mixer_table + (128 * voices);
r4679r4680
171171   info->mclock = device->clock;
172172
173173   /* allocate a pair of buffers to mix into - 1 second's worth should be more than enough */
174   info->mixer_buffer = (short *)auto_malloc(2 * sizeof(short) * info->rate);
174   info->mixer_buffer = auto_alloc_array(device->machine, short, 2 * info->rate);
175175
176176   /* build the mixer table */
177   make_mixer_table(info, 2);
177   make_mixer_table(device->machine, info, 2);
178178
179179   info->sound_prom = device->region;
180180
src/emu/sound/votrax.c
r4679r4680
3030   int    volume;
3131   sound_stream *    channel;
3232
33   struct loaded_sample *sample;
33   loaded_sample *sample;
3434   UINT32      pos;
3535   UINT32      frac;
3636   UINT32      step;
r4679r4680
116116   votrax_state *votrax = get_safe_token(device);
117117
118118   votrax->device = device;
119   votrax->samples = readsamples(VotraxTable,"votrax");
119   votrax->samples = readsamples(device->machine,VotraxTable,"votrax");
120120   votrax->frequency = 8000;
121121   votrax->volume = 230;
122122
src/emu/sound/aica.c
r4679r4680
647647   }
648648
649649   AICALFO_Init(device->machine);
650   AICA->buffertmpl=(signed int*) auto_malloc(44100*sizeof(signed int));
651   AICA->buffertmpr=(signed int*) auto_malloc(44100*sizeof(signed int));
652   memset(AICA->buffertmpl,0,44100*sizeof(signed int));
653   memset(AICA->buffertmpr,0,44100*sizeof(signed int));
650   AICA->buffertmpl=auto_alloc_array_clear(device->machine, signed int, 44100);
651   AICA->buffertmpr=auto_alloc_array_clear(device->machine, signed int, 44100);
654652
655653   // no "pend"
656654   AICA[0].udata.data[0xa0/2] = 0;
src/emu/sound/sn76496.c
r4679r4680
3232  23/04/2007 : Lord Nightmare
3333  Major update, implement all three different noise generation algorithms and a
3434  set_variant call to discern among them.
35 
35
3636  28/04/2009 : Lord Nightmare
3737  Add READY line readback; cleaned up struct a bit. Cleaned up comments.
3838  Add more TODOs. Fixed some unsaved savestate related stuff.
3939
4040  TODO: * Implement a function for setting stereo regs for the game gear.
41        Requires making the core support both mono and stereo, and have
42        a select register which determines which channels go where.
43      * Implement the TMS9919 and SN94624, which are earlier versions,
44        possibly lacking the /8 clock divider, of the SN76489, and hence
45        would have a max clock of 500Khz and 4 clocks per sample, as
46        opposed to max of 4Mhz and 32 clocks per sample on the SN76489A
47      * Implement the T6W28; has registers in a weird order, needs writes
48        to be 'sanitized' first. Also is stereo, similar to game gear.
49      * Implement the NCR 7496; Is probably 100% compatible with SN76496,
50        but the whitenoise taps could be different. Needs someone with a
51        Tandy 1200 or whatever it was which uses this to run some tests.
52      * Factor out common code so that the SAA1099 can share some code.
41          Requires making the core support both mono and stereo, and have
42          a select register which determines which channels go where.
43        * Implement the TMS9919 and SN94624, which are earlier versions,
44          possibly lacking the /8 clock divider, of the SN76489, and hence
45          would have a max clock of 500Khz and 4 clocks per sample, as
46          opposed to max of 4Mhz and 32 clocks per sample on the SN76489A
47        * Implement the T6W28; has registers in a weird order, needs writes
48          to be 'sanitized' first. Also is stereo, similar to game gear.
49        * Implement the NCR 7496; Is probably 100% compatible with SN76496,
50          but the whitenoise taps could be different. Needs someone with a
51          Tandy 1200 or whatever it was which uses this to run some tests.
52        * Factor out common code so that the SAA1099 can share some code.
5353***************************************************************************/
5454
5555#include "sndintrf.h"
r4679r4680
111111   /* update the output buffer before changing the registers */
112112   stream_update(R->Channel);
113113
114   /* set number of cycles until READY is active; this is always one 'sample', i.e. it equals the clock divider exactly; until the clock divider is fully supported, we delay until one sample has played */
114   /* set number of cycles until READY is active; this is always one
115           'sample', i.e. it equals the clock divider exactly; until the
116           clock divider is fully supported, we delay until one sample has
117           played. The fact that this below is '2' and not '1' is because
118           of a ?race condition? in the mess crvision driver, where after
119           any sample is played at all, no matter what, the cycles_to_ready
120           ends up never being not ready, unless this value is greater than
121           1. Once the full clock divider stuff is written, this should no
122           longer be an issue. */
115123   R->CyclestoREADY = 2;
116124
117125   if (data & 0x80)
r4679r4680
154162            /* N/512,N/1024,N/2048,Tone #3 output */
155163            R->Period[3] = ((n&3) == 3) ? 2 * R->Period[2] : (STEP << (5+(n&3)));
156164                 /* Reset noise shifter */
157            R->RNG = R->FeedbackMask;
165            R->RNG = R->FeedbackMask;
158166            R->Output[3] = R->RNG & 1;
159167         }
160168         break;
r4679r4680
171179
172180
173181   /* If the volume is 0, increase the counter; this is more or less
174   a speedup hack for when silence is to be output */
182    a speedup hack for when silence is to be output */
175183   for (i = 0;i < 4;i++)
176184   {
177185      if (R->Volume[i] == 0)
178186      {
179         /* note that I do count += samples, NOT count = samples + 1.
180         You might think it's the same since the volume is 0, but doing
181         the latter could cause interferencies when the program is
182         rapidly modulating the volume. */
187         /* note that I do count += samples, NOT count = samples + 1.
188            You might think it's the same since the volume is 0, but doing
189            the latter could cause interferencies when the program is
190            rapidly modulating the volume. */
183191         if (R->Count[i] <= samples*STEP) R->Count[i] += samples*STEP;
184192      }
185193   }
r4679r4680
189197      int vol[4];
190198      unsigned int out;
191199      int left;
192     
200
193201      /* decrement Cycles to READY by one */
194202      if (R->CyclestoREADY >0) R->CyclestoREADY--;
195203
r4679r4680
201209      {
202210         if (R->Output[i]) vol[i] += R->Count[i];
203211         R->Count[i] -= STEP;
204         /* Period[i] is the half period of the square wave. Here, in each
205         loop I add Period[i] twice, so that at the end of the loop the
206         square wave is in the same status (0 or 1) it was at the start.
207         vol[i] is also incremented by Period[i], since the wave has been 1
208         exactly half of the time, regardless of the initial position.
209         If we exit the loop in the middle, Output[i] has to be inverted
210         and vol[i] incremented only if the exit status of the square
211         wave is 1. */
212         /* Period[i] is the half period of the square wave. Here, in each
213            loop I add Period[i] twice, so that at the end of the loop the
214            square wave is in the same status (0 or 1) it was at the start.
215            vol[i] is also incremented by Period[i], since the wave has been 1
216            exactly half of the time, regardless of the initial position.
217            If we exit the loop in the middle, Output[i] has to be inverted
218            and vol[i] incremented only if the exit status of the square
219            wave is 1. */
212220         while (R->Count[i] <= 0)
213221         {
214222            R->Count[i] += R->Period[i];
src/emu/sound/wave.c
r4679r4680
3434   state = cassette_get_state(image);
3535
3636   state &= CASSETTE_MASK_UISTATE | CASSETTE_MASK_MOTOR | CASSETTE_MASK_SPEAKER;
37   
37
3838   if (image_exists(image) && (ALWAYS_PLAY_SOUND || (state == (CASSETTE_PLAY | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED))))
3939   {
4040      cassette = cassette_get_image(image);
src/emu/sound/sid.c
r4679r4680
166166   float resDyMin;
167167   float resDy;
168168
169   filterTable = auto_malloc(sizeof(*filterTable) * 0x800);
170   bandPassParam = auto_malloc(sizeof(*bandPassParam) * 0x800);
169   filterTable = auto_alloc_array(machine, float, 0x800);
170   bandPassParam = auto_alloc_array(machine, float, 0x800);
171171
172172   uk = 0;
173173   for ( rk = 0; rk < 0x800; rk++ )
r4679r4680
233233
234234   This->filter.Enabled = TRUE;
235235
236   sidInitMixerEngine();
236   sidInitMixerEngine(This->device->machine);
237237   filterTableInit(This->device->machine);
238238
239239   sidInitWaveformTables(This->type);
src/emu/sound/ymf271.c
r4679r4680
15681568   return 0;
15691569}
15701570
1571static void init_tables(void)
1571static void init_tables(running_machine *machine)
15721572{
15731573   int i,j;
15741574
15751575   for (i=0; i < ARRAY_LENGTH(wavetable); i++)
15761576   {
1577      wavetable[i] = (INT16 *)auto_malloc(SIN_LEN * sizeof(INT16));
1577      wavetable[i] = auto_alloc_array(machine, INT16, SIN_LEN);
15781578   }
15791579
15801580   for (i=0; i < SIN_LEN; i++)
r4679r4680
16521652      alfo_table[3][i] = (i < (LFO_LENGTH/2)) ? ALFO_MAX-tri_wave : tri_wave;
16531653   }
16541654
1655   mix = (INT32 *)auto_malloc(48000*2*sizeof(*mix));
1655   mix = auto_alloc_array(machine, INT32, 48000*2);
16561656}
16571657
16581658static void init_state(YMF271Chip *chip, const device_config *device)
r4679r4680
17411741   devcb_resolve_read8(&chip->ext_mem_read, ext_read, device);
17421742   devcb_resolve_write8(&chip->ext_mem_write, ext_write, device);
17431743
1744   init_tables();
1744   init_tables(device->machine);
17451745   init_state(chip, device);
17461746}
17471747
src/emu/sound/ay8910.c
r4679r4680
743743   ay8910_context *info = (ay8910_context *)infoptr;
744744
745745   if (info == NULL)
746   {
747      info = (ay8910_context *)auto_malloc(sizeof(*info));
748      memset(info, 0, sizeof(*info));
749   }
746      info = auto_alloc_clear(device->machine, ay8910_context);
747
750748   info->device = device;
751749   info->intf = intf;
752750   devcb_resolve_read8(&info->portAread, &intf->portAread, device);
src/emu/sound/cdda.c
r4679r4680
5959   cdda_info *info = get_safe_token(device);
6060
6161   /* allocate an audio cache */
62   info->audio_cache = (UINT8 *)auto_malloc( CD_MAX_SECTOR_DATA * MAX_SECTORS );
62   info->audio_cache = auto_alloc_array( device->machine, UINT8, CD_MAX_SECTOR_DATA * MAX_SECTORS );
6363
6464   intf = (const struct CDDAinterface *)device->static_config;
6565
src/emu/sound/discrete.c
r4679r4680
292292   discrete_log("discrete_start() - Sanity check counted %d nodes", info->node_count);
293293
294294   /* allocate memory for the array of actual nodes */
295   info->node_list = (node_description *)auto_malloc(info->node_count * sizeof(info->node_list[0]));
296   memset(info->node_list, 0, info->node_count * sizeof(info->node_list[0]));
295   info->node_list = auto_alloc_array_clear(device->machine, node_description, info->node_count);
297296
298297   /* allocate memory for the node execution order array */
299   info->running_order = (node_description **)auto_malloc(info->node_count * sizeof(info->running_order[0]));
300   memset(info->running_order, 0, info->node_count * sizeof(info->running_order[0]));
298   info->running_order = auto_alloc_array_clear(device->machine, node_description *, info->node_count);
301299
302300   /* allocate memory to hold pointers to nodes by index */
303   info->indexed_node = (node_description **)auto_malloc(DISCRETE_MAX_NODES * sizeof(info->indexed_node[0]));
304   memset(info->indexed_node, 0, DISCRETE_MAX_NODES * sizeof(info->indexed_node[0]));
301   info->indexed_node = auto_alloc_array_clear(device->machine, node_description *, DISCRETE_MAX_NODES);
305302
306303   /* initialize the node data */
307304   init_nodes(info, intf, device);
r4679r4680
605602
606603      /* allocate memory if necessary */
607604      if (node->module.contextsize)
608      {
609         node->context = auto_malloc(node->module.contextsize);
610         memset(node->context, 0, node->module.contextsize);
611      }
605         node->context = auto_alloc_array_clear(device->machine, UINT8, node->module.contextsize);
612606
613607      /* if we are an stream input node, track that */
614608      if (block->type == DSS_INPUT_STREAM)
src/emu/sound/samples.c
r4679r4680
2525   const device_config *device;
2626   int         numchannels;   /* how many channels */
2727   sample_channel *channel;/* array of channels */
28   struct loaded_samples *samples;/* array of samples */
28   loaded_samples *samples;/* array of samples */
2929};
3030
3131
r4679r4680
5050    read_wav_sample - read a WAV file as a sample
5151-------------------------------------------------*/
5252
53static int read_wav_sample(mame_file *f, struct loaded_sample *sample)
53static int read_wav_sample(running_machine *machine, mame_file *f, loaded_sample *sample)
5454{
5555   unsigned long offset = 0;
5656   UINT32 length, rate, filesize;
r4679r4680
153153      unsigned char *tempptr;
154154      int sindex;
155155
156      sample->data = (INT16 *)auto_malloc(sizeof(*sample->data) * length);
156      sample->data = auto_alloc_array(machine, INT16, length);
157157      mame_fread(f, sample->data, length);
158158
159159      /* convert 8-bit data to signed samples */
r4679r4680
164164   else
165165   {
166166      /* 16-bit data is fine as-is */
167      sample->data = (INT16 *)auto_malloc(sizeof(*sample->data) * (length/2));
167      sample->data = auto_alloc_array(machine, INT16, length/2);
168168      mame_fread(f, sample->data, length);
169169      sample->length /= 2;
170170      if (ENDIANNESS_NATIVE != ENDIANNESS_LITTLE)
r4679r4680
179179    readsamples - load all samples
180180-------------------------------------------------*/
181181
182struct loaded_samples *readsamples(const char *const *samplenames, const char *basename)
182loaded_samples *readsamples(running_machine *machine, const char *const *samplenames, const char *basename)
183183{
184   struct loaded_samples *samples;
184   loaded_samples *samples;
185185   int skipfirst = 0;
186186   int i;
187187
r4679r4680
201201      return NULL;
202202
203203   /* allocate the array */
204   samples = (struct loaded_samples *)auto_malloc(sizeof(struct loaded_samples) + (i-1) * sizeof(struct loaded_sample));
205   memset(samples, 0, sizeof(struct loaded_samples) + (i-1) * sizeof(struct loaded_sample));
204   samples = (loaded_samples *)auto_alloc_array_clear(machine, UINT8, sizeof(loaded_samples) + (i-1) * sizeof(loaded_sample));
206205   samples->total = i;
207206
208207   /* load the samples */
r4679r4680
223222         }
224223         if (filerr == FILERR_NONE)
225224         {
226            read_wav_sample(f, &samples->sample[i]);
225            read_wav_sample(machine, f, &samples->sample[i]);
227226            mame_fclose(f);
228227         }
229228
r4679r4680
243242{
244243    samples_info *info = get_safe_token(device);
245244    sample_channel *chan;
246    struct loaded_sample *sample;
245    loaded_sample *sample;
247246
248247   /* if samples are disabled, just return quietly */
249248   if (info->samples == NULL)
r4679r4680
450449      /* attach any samples that were loaded and playing */
451450      if (chan->source_num >= 0 && chan->source_num < info->samples->total)
452451      {
453         struct loaded_sample *sample = &info->samples->sample[chan->source_num];
452         loaded_sample *sample = &info->samples->sample[chan->source_num];
454453         chan->source = sample->data;
455454         chan->source_length = sample->length;
456455         if (!sample->data)
r4679r4680
482481
483482   /* read audio samples */
484483   if (intf->samplenames)
485      info->samples = readsamples(intf->samplenames,device->machine->gamedrv->name);
484      info->samples = readsamples(device->machine, intf->samplenames,device->machine->gamedrv->name);
486485
487486   /* allocate channels */
488487   info->numchannels = intf->channels;
489488   assert(info->numchannels < MAX_CHANNELS);
490   info->channel = (sample_channel *)auto_malloc(sizeof(*info->channel) * info->numchannels);
489   info->channel = auto_alloc_array(device->machine, sample_channel, info->numchannels);
491490   for (i = 0; i < info->numchannels; i++)
492491   {
493492       info->channel[i].stream = stream_create(device, 0, 1, device->machine->sample_rate, &info->channel[i], sample_update_sound);
src/emu/sound/scsp.c
r4679r4680
648648   }
649649
650650   LFO_Init(device->machine);
651   SCSP->buffertmpl=(signed int*) auto_malloc(44100*sizeof(signed int));
652   SCSP->buffertmpr=(signed int*) auto_malloc(44100*sizeof(signed int));
653   memset(SCSP->buffertmpl,0,44100*sizeof(signed int));
654   memset(SCSP->buffertmpr,0,44100*sizeof(signed int));
651   SCSP->buffertmpl=auto_alloc_array_clear(device->machine, signed int, 44100);
652   SCSP->buffertmpr=auto_alloc_array_clear(device->machine, signed int, 44100);
655653
656654   // no "pend"
657655   SCSP[0].udata.data[0x20/2] = 0;
src/emu/sound/samples.h
r4679r4680
33#ifndef __SAMPLES_H__
44#define __SAMPLES_H__
55
6struct loaded_sample
6typedef struct _loaded_sample loaded_sample;
7struct _loaded_sample
78{
89    int         length;         /* length in samples */
910    int         frequency;      /* frequency of the sample */
1011    INT16 *     data;           /* 16-bit signed data */
1112};
1213
13struct loaded_samples
14typedef struct _loaded_samples loaded_samples;
15struct _loaded_samples
1416{
1517    int         total;          /* number of samples */
16    struct loaded_sample sample[1]; /* array of samples */
18    loaded_sample sample[1]; /* array of samples */
1719};
1820
1921typedef struct _samples_interface samples_interface;
r4679r4680
3840
3941/* helper function that reads samples from disk - this can be used by other */
4042/* drivers as well (e.g. a sound chip emulator needing drum samples) */
41struct loaded_samples *readsamples(const char *const *samplenames, const char *name);
43loaded_samples *readsamples(running_machine *machine, const char *const *samplenames, const char *name);
4244
4345DEVICE_GET_INFO( samples );
4446#define SOUND_SAMPLES DEVICE_GET_INFO_NAME( samples )
src/emu/sound/ics2115.c
r4679r4680
459459   chip->rom = device->region;
460460   chip->timer[0].timer = timer_alloc(device->machine, timer_cb_0, chip);
461461   chip->timer[1].timer = timer_alloc(device->machine, timer_cb_1, chip);
462   chip->ulaw = (INT16 *)auto_malloc(256*sizeof(INT16));
462   chip->ulaw = auto_alloc_array(device->machine, INT16, 256);
463463   chip->stream = stream_create(device, 0, 2, 33075, chip, update);
464464
465465   for(i=0; i<256; i++) {
src/emu/sound/dmadac.c
r4679r4680
106106   dmadac_state *info = get_safe_token(device);
107107
108108   /* allocate a clear a buffer */
109   info->buffer = (INT16 *)auto_malloc(sizeof(info->buffer[0]) * BUFFER_SIZE);
110   memset(info->buffer, 0, sizeof(info->buffer[0]) * BUFFER_SIZE);
109   info->buffer = auto_alloc_array_clear(device->machine, INT16, BUFFER_SIZE);
111110
112111   /* reset the state */
113112   info->volume = 0x100;
src/emu/sound/filter.c
r4679r4680
22#include "filter.h"
33
44static filter* filter_alloc(void) {
5   filter* f = (filter *)malloc_or_die(sizeof(filter));
5   filter* f = alloc_or_die(filter);
66   return f;
77}
88
r4679r4680
2020
2121filter_state* filter_state_alloc(void) {
2222   int i;
23        filter_state* s = (filter_state *)malloc_or_die(sizeof(filter_state));
23        filter_state* s = alloc_or_die(filter_state);
2424   s->prev_mac = 0;
2525   for(i=0;i<FILTER_ORDER_MAX;++i)
2626      s->xprev[i] = 0;
src/emu/sound/es5506.c
r4679r4680
194194   int i;
195195
196196   /* allocate ulaw lookup table */
197   chip->ulaw_lookup = (INT16 *)auto_malloc(sizeof(chip->ulaw_lookup[0]) << ULAW_MAXBITS);
197   chip->ulaw_lookup = auto_alloc_array(chip->device->machine, INT16, 1 << ULAW_MAXBITS);
198198
199199   /* generate ulaw lookup table */
200200   for (i = 0; i < (1 << ULAW_MAXBITS); i++)
r4679r4680
213213   }
214214
215215   /* allocate volume lookup table */
216   chip->volume_lookup = (UINT16 *)auto_malloc(sizeof(chip->volume_lookup[0]) * 4096);
216   chip->volume_lookup = auto_alloc_array(chip->device->machine, UINT16, 4096);
217217
218218   /* generate ulaw lookup table */
219219   for (i = 0; i < 4096; i++)
r4679r4680
842842   if (LOG_COMMANDS && !eslog)
843843      eslog = fopen("es.log", "w");
844844
845   /* compute the tables */
846   compute_tables(chip);
847
848845   /* create the stream */
849846   chip->stream = stream_create(device, 0, 2, device->clock / (16*32), chip, es5506_update);
850847
r4679r4680
860857   chip->irq_callback = intf->irq_callback;
861858   chip->irqv = 0x80;
862859
860   /* compute the tables */
861   compute_tables(chip);
862
863863   /* init the voices */
864864   accum_mask = (sndtype == SOUND_ES5506) ? 0xffffffff : 0x7fffffff;
865865   for (j = 0; j < 32; j++)
r4679r4680
873873   }
874874
875875   /* allocate memory */
876   chip->scratch = (INT32 *)auto_malloc(sizeof(chip->scratch[0]) * 2 * MAX_SAMPLE_CHUNK);
876   chip->scratch = auto_alloc_array(device->machine, INT32, 2 * MAX_SAMPLE_CHUNK);
877877
878878   /* success */
879879}
src/emu/sound/ymf278b.c
r4679r4680
676676   chip->irq_line = CLEAR_LINE;
677677   chip->clock = device->clock;
678678
679   mix = (INT32 *)auto_malloc(44100*2*sizeof(*mix));
679   mix = auto_alloc_array(device->machine, INT32, 44100*2);
680680}
681681
682682static DEVICE_START( ymf278b )
src/emu/sound/psx.c
r4679r4680
3535#define SAMPLES_PER_BLOCK ( 28 )
3636#define PITCH_SHIFT ( 12 )
3737
38typedef enum { e_attack = 0, e_decay, e_sustain, e_sustainEnd, e_release, e_releaseend } sound_envstate;
39
3840struct psxinfo
3941{
4042   const psx_spu_interface *intf;
r4679r4680
6668   UINT16 m_p_n_pitch[ MAX_CHANNEL ];
6769   UINT16 m_p_n_address[ MAX_CHANNEL ];
6870   UINT16 m_p_n_envelopestate[ MAX_CHANNEL ];
69   enum envstate { e_attack = 0, e_decay, e_sustain, e_sustainEnd, e_release, e_releaseend } m_envstate;
71   sound_envstate m_envstate;
7072   UINT16 m_p_n_attackdecaysustain[ MAX_CHANNEL ];
7173   UINT16 m_p_n_sustainrelease[ MAX_CHANNEL ];
7274   UINT16 m_p_n_adsrvolume[ MAX_CHANNEL ];
r4679r4680
329331      chip->m_p_n_effect[ n_effect ] = 0;
330332   }
331333
332   chip->m_p_n_spuram = (UINT16 *)auto_malloc( SPU_RAM_SIZE );
334   chip->m_p_n_spuram = auto_alloc_array( device->machine, UINT16, SPU_RAM_SIZE/2 );
333335
334336   state_save_register_device_item( device, 0, chip->m_n_mainvolumeleft );
335337   state_save_register_device_item( device, 0, chip->m_n_mainvolumeright );
src/emu/sound/k053260.c
r4679r4680
233233   for ( i = 0; i < 0x30; i++ )
234234      ic->regs[i] = 0;
235235
236   ic->delta_table = ( UINT32 * )auto_malloc( 0x1000 * sizeof( UINT32 ) );
236   ic->delta_table = auto_alloc_array( device->machine, UINT32, 0x1000 );
237237
238238   ic->channel = stream_create( device, 0, 2, rate, ic, k053260_update );
239239
src/emu/sound/segapcm.c
r4679r4680
9393   segapcm_state *spcm = get_safe_token(device);
9494
9595   spcm->rom = (const UINT8 *)device->region;
96   spcm->ram = (UINT8 *)auto_malloc(0x800);
96   spcm->ram = auto_alloc_array(device->machine, UINT8, 0x800);
9797
9898   memset(spcm->ram, 0xff, 0x800);
9999
src/emu/sound/namco.c
r4679r4680
117117
118118
119119/* build the decoded waveform table */
120static void build_decoded_waveform(namco_sound *chip, UINT8 *rgnbase)
120static void build_decoded_waveform(running_machine *machine, namco_sound *chip, UINT8 *rgnbase)
121121{
122122   INT16 *p;
123123   int size;
r4679r4680
139139      size = 32 * 8;      /* 32 samples, 8 waveforms */
140140   }
141141
142   p = (INT16 *)auto_malloc(size * MAX_VOLUME * sizeof (INT16));
142   p = auto_alloc_array(machine, INT16, size * MAX_VOLUME);
143143
144144   for (v = 0; v < MAX_VOLUME; v++)
145145   {
r4679r4680
388388   logerror("Namco: freq fractional bits = %d: internal freq = %d, output freq = %d\n", chip->f_fracbits, chip->namco_clock, chip->sample_rate);
389389
390390   /* build the waveform table */
391   build_decoded_waveform(chip, device->region);
391   build_decoded_waveform(device->machine, chip, device->region);
392392
393393   /* get stream channels */
394394   if (intf->stereo)
src/emu/sound/tms5220.c
r4679r4680
179179{
180180   struct tms5220 *tms;
181181
182   tms = (struct tms5220 *)malloc_or_die(sizeof(*tms));
183   memset(tms, 0, sizeof(*tms));
182   tms = alloc_clear_or_die(struct tms5220);
184183
185184   tms->device = device;
186185   state_save_register_device_item_array(device, 0, tms->fifo);
src/emu/inputseq.c
r4679r4680
511511
512512int input_seq_from_tokens(const char *string, input_seq *seq)
513513{
514   char *strcopy = (char *)malloc_or_die(strlen(string) + 1);
514   char *strcopy = alloc_array_or_die(char, strlen(string) + 1);
515515   char *str = strcopy;
516516   int result = FALSE;
517517
src/emu/ui.c
r4679r4680
9898static UINT32 handler_load_save(running_machine *machine, UINT32 state);
9999
100100/* slider controls */
101static slider_state *slider_alloc(const char *title, INT32 minval, INT32 defval, INT32 maxval, INT32 incval, slider_update update, void *arg);
101static slider_state *slider_alloc(running_machine *machine, const char *title, INT32 minval, INT32 defval, INT32 maxval, INT32 incval, slider_update update, void *arg);
102102static slider_state *slider_init(running_machine *machine);
103103static INT32 slider_volume(running_machine *machine, void *arg, astring *string, INT32 newval);
104104static INT32 slider_mixervol(running_machine *machine, void *arg, astring *string, INT32 newval);
r4679r4680
13971397    slider_alloc - allocate a new slider entry
13981398-------------------------------------------------*/
13991399
1400static slider_state *slider_alloc(const char *title, INT32 minval, INT32 defval, INT32 maxval, INT32 incval, slider_update update, void *arg)
1400static slider_state *slider_alloc(running_machine *machine, const char *title, INT32 minval, INT32 defval, INT32 maxval, INT32 incval, slider_update update, void *arg)
14011401{
14021402   int size = sizeof(slider_state) + strlen(title);
1403   slider_state *state = (slider_state *)auto_malloc(size);
1404   memset(state, 0, size);
1403   slider_state *state = (slider_state *)auto_alloc_array_clear(machine, UINT8, size);
14051404
14061405   state->minval = minval;
14071406   state->defval = defval;
r4679r4680
14311430   int numitems, item;
14321431
14331432   /* add overall volume */
1434   *tailptr = slider_alloc("Master Volume", -32, 0, 0, 1, slider_volume, NULL);
1433   *tailptr = slider_alloc(machine, "Master Volume", -32, 0, 0, 1, slider_volume, NULL);
14351434   tailptr = &(*tailptr)->next;
14361435
14371436   /* add per-channel volume */
r4679r4680
14451444         maxval = 2 * defval;
14461445
14471446      astring_printf(string, "%s Volume", sound_get_user_gain_name(machine, item));
1448      *tailptr = slider_alloc(astring_c(string), 0, defval, maxval, 20, slider_mixervol, (void *)(FPTR)item);
1447      *tailptr = slider_alloc(machine, astring_c(string), 0, defval, maxval, 20, slider_mixervol, (void *)(FPTR)item);
14491448      tailptr = &(*tailptr)->next;
14501449   }
14511450
r4679r4680
14551454         if (field->type == IPT_ADJUSTER)
14561455         {
14571456            void *param = (void *)field;
1458            *tailptr = slider_alloc(field->name, 0, field->defvalue, 100, 1, slider_adjuster, param);
1457            *tailptr = slider_alloc(machine, field->name, 0, field->defvalue, 100, 1, slider_adjuster, param);
14591458            tailptr = &(*tailptr)->next;
14601459         }
14611460
r4679r4680
14661465         if (machine->cpu[item] != NULL)
14671466         {
14681467            astring_printf(string, "Overclock CPU %s", machine->cpu[item]->tag);
1469            *tailptr = slider_alloc(astring_c(string), 10, 1000, 2000, 1, slider_overclock, (void *)(FPTR)item);
1468            *tailptr = slider_alloc(machine, astring_c(string), 10, 1000, 2000, 1, slider_overclock, (void *)(FPTR)item);
14701469            tailptr = &(*tailptr)->next;
14711470         }
14721471   }
r4679r4680
14851484      if (options_get_bool(mame_options(), OPTION_CHEAT))
14861485      {
14871486         astring_printf(string, "%s Refresh Rate", slider_get_screen_desc(device));
1488         *tailptr = slider_alloc(astring_c(string), -10000, 0, 10000, 1000, slider_refresh, param);
1487         *tailptr = slider_alloc(machine, astring_c(string), -10000, 0, 10000, 1000, slider_refresh, param);
14891488         tailptr = &(*tailptr)->next;
14901489      }
14911490
14921491      /* add standard brightness/contrast/gamma controls per-screen */
14931492      astring_printf(string, "%s Brightness", slider_get_screen_desc(device));
1494      *tailptr = slider_alloc(astring_c(string), 100, 1000, 2000, 10, slider_brightness, param);
1493      *tailptr = slider_alloc(machine, astring_c(string), 100, 1000, 2000, 10, slider_brightness, param);
14951494      tailptr = &(*tailptr)->next;
14961495      astring_printf(string, "%s Contrast", slider_get_screen_desc(device));
1497      *tailptr = slider_alloc(astring_c(string), 100, 1000, 2000, 50, slider_contrast, param);
1496      *tailptr = slider_alloc(machine, astring_c(string), 100, 1000, 2000, 50, slider_contrast, param);
14981497      tailptr = &(*tailptr)->next;
14991498      astring_printf(string, "%s Gamma", slider_get_screen_desc(device));
1500      *tailptr = slider_alloc(astring_c(string), 100, 1000, 3000, 50, slider_gamma, param);
1499      *tailptr = slider_alloc(machine, astring_c(string), 100, 1000, 3000, 50, slider_gamma, param);
15011500      tailptr = &(*tailptr)->next;
15021501
15031502      /* add scale and offset controls per-screen */
15041503      astring_printf(string, "%s Horiz Stretch", slider_get_screen_desc(device));
1505      *tailptr = slider_alloc(astring_c(string), 500, (defxscale == 0) ? 1000 : defxscale, 1500, 2, slider_xscale, param);
1504      *tailptr = slider_alloc(machine, astring_c(string), 500, (defxscale == 0) ? 1000 : defxscale, 1500, 2, slider_xscale, param);
15061505      tailptr = &(*tailptr)->next;
15071506      astring_printf(string, "%s Horiz Position", slider_get_screen_desc(device));
1508      *tailptr = slider_alloc(astring_c(string), -500, defxoffset, 500, 2, slider_xoffset, param);
1507      *tailptr = slider_alloc(machine, astring_c(string), -500, defxoffset, 500, 2, slider_xoffset, param);
15091508      tailptr = &(*tailptr)->next;
15101509      astring_printf(string, "%s Vert Stretch", slider_get_screen_desc(device));
1511      *tailptr = slider_alloc(astring_c(string), 500, (defyscale == 0) ? 1000 : defyscale, 1500, 2, slider_yscale, param);
1510      *tailptr = slider_alloc(machine, astring_c(string), 500, (defyscale == 0) ? 1000 : defyscale, 1500, 2, slider_yscale, param);
15121511      tailptr = &(*tailptr)->next;
15131512      astring_printf(string, "%s Vert Position", slider_get_screen_desc(device));
1514      *tailptr = slider_alloc(astring_c(string), -500, defyoffset, 500, 2, slider_yoffset, param);
1513      *tailptr = slider_alloc(machine, astring_c(string), -500, defyoffset, 500, 2, slider_yoffset, param);
15151514      tailptr = &(*tailptr)->next;
15161515   }
15171516
r4679r4680
15281527
15291528         /* add scale and offset controls per-overlay */
15301529         astring_printf(string, "%s Horiz Stretch", slider_get_laserdisc_desc(device));
1531         *tailptr = slider_alloc(astring_c(string), 500, (defxscale == 0) ? 1000 : defxscale, 1500, 2, slider_overxscale, param);
1530         *tailptr = slider_alloc(machine, astring_c(string), 500, (defxscale == 0) ? 1000 : defxscale, 1500, 2, slider_overxscale, param);
15321531         tailptr = &(*tailptr)->next;
15331532         astring_printf(string, "%s Horiz Position", slider_get_laserdisc_desc(device));
1534         *tailptr = slider_alloc(astring_c(string), -500, defxoffset, 500, 2, slider_overxoffset, param);
1533         *tailptr = slider_alloc(machine, astring_c(string), -500, defxoffset, 500, 2, slider_overxoffset, param);
15351534         tailptr = &(*tailptr)->next;
15361535         astring_printf(string, "%s Vert Stretch", slider_get_laserdisc_desc(device));
1537         *tailptr = slider_alloc(astring_c(string), 500, (defyscale == 0) ? 1000 : defyscale, 1500, 2, slider_overyscale, param);
1536         *tailptr = slider_alloc(machine, astring_c(string), 500, (defyscale == 0) ? 1000 : defyscale, 1500, 2, slider_overyscale, param);
15381537         tailptr = &(*tailptr)->next;
15391538         astring_printf(string, "%s Vert Position", slider_get_laserdisc_desc(device));
1540         *tailptr = slider_alloc(astring_c(string), -500, defyoffset, 500, 2, slider_overyoffset, param);
1539         *tailptr = slider_alloc(machine, astring_c(string), -500, defyoffset, 500, 2, slider_overyoffset, param);
15411540         tailptr = &(*tailptr)->next;
15421541      }
15431542   }
r4679r4680
15481547      if (scrconfig->type == SCREEN_TYPE_VECTOR)
15491548      {
15501549         /* add flicker control */
1551         *tailptr = slider_alloc("Vector Flicker", 0, 0, 1000, 10, slider_flicker, NULL);
1550         *tailptr = slider_alloc(machine, "Vector Flicker", 0, 0, 1000, 10, slider_flicker, NULL);
15521551         tailptr = &(*tailptr)->next;
1553         *tailptr = slider_alloc("Beam Width", 10, 100, 1000, 10, slider_beam, NULL);
1552         *tailptr = slider_alloc(machine, "Beam Width", 10, 100, 1000, 10, slider_beam, NULL);
15541553         tailptr = &(*tailptr)->next;
15551554         break;
15561555      }
r4679r4680
15641563         {
15651564            void *param = (void *)field;
15661565            astring_printf(string, "Crosshair Scale %s", (field->crossaxis == CROSSHAIR_AXIS_X) ? "X" : "Y");
1567            *tailptr = slider_alloc(astring_c(string), -3000, 1000, 3000, 100, slider_crossscale, param);
1566            *tailptr = slider_alloc(machine, astring_c(string), -3000, 1000, 3000, 100, slider_crossscale, param);
15681567            tailptr = &(*tailptr)->next;
15691568            astring_printf(string, "Crosshair Offset %s", (field->crossaxis == CROSSHAIR_AXIS_X) ? "X" : "Y");
1570            *tailptr = slider_alloc(astring_c(string), -3000, 0, 3000, 100, slider_crossoffset, param);
1569            *tailptr = slider_alloc(machine, astring_c(string), -3000, 0, 3000, 100, slider_crossoffset, param);
15711570            tailptr = &(*tailptr)->next;
15721571         }
15731572#endif
r4679r4680
19951994#ifdef MAME_DEBUG
19961995static INT32 slider_crossscale(running_machine *machine, void *arg, astring *string, INT32 newval)
19971996{
1998   input_field_config *field = arg;
1997   input_field_config *field = (input_field_config *)arg;
19991998
20001999   if (newval != SLIDER_NOCHANGE)
20012000      field->crossscale = (float)newval * 0.001f;
r4679r4680
20142013#ifdef MAME_DEBUG
20152014static INT32 slider_crossoffset(running_machine *machine, void *arg, astring *string, INT32 newval)
20162015{
2017   input_field_config *field = arg;
2016   input_field_config *field = (input_field_config *)arg;
20182017
20192018   if (newval != SLIDER_NOCHANGE)
20202019      field->crossoffset = (float)newval * 0.001f;
src/emu/debugger.c
r4679r4680
7575
7676      /* allocate a new entry for our global list */
7777      add_exit_callback(machine, debugger_exit);
78      entry = (machine_entry *)malloc_or_die(sizeof(*entry));
78      entry = alloc_or_die(machine_entry);
7979      entry->next = machine_list;
8080      entry->machine = machine;
8181      machine_list = entry;
src/emu/sound.c
r4679r4680
202202   VPRINTF(("total speakers = %d\n", speaker_output_count(machine->config)));
203203
204204   /* allocate memory for mix buffers */
205   leftmix = (INT32 *)auto_malloc(machine->sample_rate * sizeof(*leftmix));
206   rightmix = (INT32 *)auto_malloc(machine->sample_rate * sizeof(*rightmix));
207   finalmix = (INT16 *)auto_malloc(machine->sample_rate * sizeof(*finalmix));
205   leftmix = auto_alloc_array(machine, INT32, machine->sample_rate);
206   rightmix = auto_alloc_array(machine, INT32, machine->sample_rate);
207   finalmix = auto_alloc_array(machine, INT16, machine->sample_rate);
208208
209209   /* allocate a global timer for sound timing */
210210   sound_update_timer = timer_alloc(machine, sound_update, NULL);
r4679r4680
341341
342342         /* allocate a new route */
343343         for (routeptr = &config->routelist; *routeptr != NULL; routeptr = &(*routeptr)->next) ;
344         *routeptr = (sound_route *)malloc_or_die(sizeof(**routeptr));
344         *routeptr = alloc_or_die(sound_route);
345345         (*routeptr)->next = NULL;
346346         (*routeptr)->output = output;
347347         (*routeptr)->input = input;
r4679r4680
387387
388388      /* --- the following bits of info are returned as pointers to data or functions --- */
389389      case DEVINFO_FCT_START:               info->start = DEVICE_START_NAME(sound);    break;
390      case DEVINFO_FCT_SET_INFO:            info->set_info = NULL;                  break;
391390      case DEVINFO_FCT_CUSTOM_CONFIG:         info->custom_config = DEVICE_CUSTOM_CONFIG_NAME(sound);   break;
392391
393392      /* --- the following bits of info are returned as NULL-terminated strings --- */
r4679r4680
452451      {
453452         info->mixer_stream = stream_create(curspeak, info->inputs, 1, machine->sample_rate, info, mixer_update);
454453         state_save_register_postload(machine, mixer_postload, info->mixer_stream);
455         info->input = (speaker_input *)auto_malloc(info->inputs * sizeof(*info->input));
454         info->input = auto_alloc_array(machine, speaker_input, info->inputs);
456455         info->inputs = 0;
457456      }
458457      else
r4679r4680
491490                  /* fill in the input data on this speaker */
492491                  speakerinfo->input[speakerinfo->inputs].gain = route->gain;
493492                  speakerinfo->input[speakerinfo->inputs].default_gain = route->gain;
494                  speakerinfo->input[speakerinfo->inputs].name = auto_strdup(astring_c(tempstring));
493                  speakerinfo->input[speakerinfo->inputs].name = auto_strdup(machine, astring_c(tempstring));
495494
496495                  /* connect the output to the input */
497496                  if (stream_device_output_to_stream_output(sound, outputnum, &stream, &streamoutput))
r4679r4680
861860static DEVICE_STOP( speaker_output )
862861{
863862#ifdef MAME_DEBUG
864   speaker_info *info = device->token;
863   speaker_info *info = (speaker_info *)device->token;
865864
866865   /* log the maximum sample values for all speakers */
867866   if (info->max_sample > 0)
src/emu/driver.c
r4679r4680
114114      int shufnum;
115115
116116      /* allocate a temporary list */
117      templist = (const game_driver **)malloc_or_die(driver_list_get_count(driverlist) * sizeof(*templist));
117      templist = alloc_array_or_die(const game_driver *, driver_list_get_count(driverlist));
118118
119119      /* build up a list of valid entries */
120120      for (drvnum = driver_count = 0; driverlist[drvnum] != NULL; drvnum++)
r4679r4680
145145   }
146146
147147   /* allocate some temp memory */
148   penalty = (int *)malloc_or_die(matches * sizeof(*penalty));
148   penalty = alloc_array_or_die(int, matches);
149149
150150   /* initialize everyone's states */
151151   for (matchnum = 0; matchnum < matches; matchnum++)
src/emu/input.c
r4679r4680
423423static int joystick_map_parse(const char *mapstring, joystick_map *map);
424424static void joystick_map_print(const char *header, const char *origstring, const joystick_map *map);
425425static void input_code_reset_axes(void);
426static int input_code_check_axis(input_device_item *item, input_code code);
426427
427428
428429
r4679r4680
730731   assert(devclass != DEVICE_CLASS_INVALID && devclass < DEVICE_CLASS_MAXIMUM);
731732
732733   /* allocate a new device */
733   devlist->list = (input_device *)auto_realloc(devlist->list, (devlist->count + 1) * sizeof(devlist->list[0]));
734   devlist->list = auto_extend_array(machine, devlist->list, input_device, devlist->count + 1);
734735   device = &devlist->list[devlist->count++];
735736   memset(device, 0, sizeof(*device));
736737
737738   /* fill in the data */
738739   device->machine = machine;
739   device->name = astring_cpyc(auto_astring_alloc(), name);
740   device->name = astring_cpyc(auto_astring_alloc(machine), name);
740741   device->devclass = devclass;
741742   device->devindex = devlist->count - 1;
742743   device->internal = internal;
r4679r4680
779780   assert(device->item[itemid] == NULL);
780781
781782   /* allocate a new item and copy data into it */
782   item = (input_device_item *)auto_malloc(sizeof(*item));
783   memset(item, 0, sizeof(*item));
783   item = auto_alloc_clear(device->machine, input_device_item);
784784   device->item[itemid] = item;
785785   device->maxitem = MAX(device->maxitem, itemid);
786786
787787   /* copy in the data passed in from the item list */
788788   item->devclass = device->devclass;
789789   item->devindex = device->devindex;
790   item->name = astring_cpyc(auto_astring_alloc(), name);
790   item->name = astring_cpyc(auto_astring_alloc(device->machine), name);
791791   item->token = NULL;
792792   item->internal = internal;
793793   item->itemclass = input_item_standard_class(device->devclass, itemid_std);
r4679r4680
798798   if (itemid > ITEM_ID_MAXIMUM)
799799   {
800800      /* copy the item name, removing spaces/underscores and making all caps */
801      item->token = astring_toupper(astring_cpyc(auto_astring_alloc(), name));
801      item->token = astring_toupper(astring_cpyc(auto_astring_alloc(device->machine), name));
802802      astring_delchr(item->token, ' ');
803803      astring_delchr(item->token, '_');
804804   }
r4679r4680
999999            if (item != NULL)
10001000            {
10011001               input_code code = device_item_to_code(device, itemid);
1002               INT32 curval, diff;
10031002
10041003               /* if the item is natively a switch, poll it */
10051004               if (item->itemclass == ITEM_CLASS_SWITCH)
r4679r4680
10101009                      continue;
10111010               }
10121011
1013               /* poll the current value */
1014               curval = input_code_value(code);
1015
1016               /* if we've already reported this one, don't bother */
1017               if (item->memory == INVALID_AXIS_VALUE)
1012               /* skip if there is not enough axis movement */
1013               if (!input_code_check_axis(item, code))
10181014                  continue;
10191015
1020               /* compute the diff against memory */
1021               diff = curval - item->memory;
1022               if (diff < 0)
1023                  diff = -diff;
1024
1025               /* for absolute axes, look for 25% of maximum */
1026               if (item->itemclass == ITEM_CLASS_ABSOLUTE)
1027               {
1028                   if (diff > (INPUT_ABSOLUTE_MAX - INPUT_ABSOLUTE_MIN) / 4)
1029                      item->memory = INVALID_AXIS_VALUE;
1030                   else
1031                       continue;
1032               }
1033
1034               /* for relative axes, look for ~20 pixels movement */
1035               else if (item->itemclass == ITEM_CLASS_RELATIVE)
1036               {
1037                   if (diff > 20 * INPUT_RELATIVE_PER_PIXEL)
1038                      item->memory = INVALID_AXIS_VALUE;
1039                  else
1040                      continue;
1041               }
1042
10431016               /* otherwise, poll axes digitally */
10441017               code = INPUT_CODE_SET_ITEMCLASS(code, ITEM_CLASS_SWITCH);
10451018
r4679r4680
11241097
11251098
11261099/*-------------------------------------------------
1100    input_code_check_axis - see if axis has
1101    move far enough
1102-------------------------------------------------*/
1103
1104static int input_code_check_axis(input_device_item *item, input_code code)
1105{
1106   INT32 curval, diff;
1107
1108   /* poll the current value */
1109   curval = input_code_value(code);
1110
1111   /* if we've already reported this one, don't bother */
1112   if (item->memory == INVALID_AXIS_VALUE)
1113      return FALSE;
1114
1115    /* ignore min/max for lightguns */
1116    /* so the selection will not be affected by a gun going out of range */
1117    if ((INPUT_CODE_DEVCLASS(code) == DEVICE_CLASS_LIGHTGUN)
1118        && (INPUT_CODE_ITEMID(code) == ITEM_ID_XAXIS || INPUT_CODE_ITEMID(code) == ITEM_ID_YAXIS)
1119        && (curval == INPUT_ABSOLUTE_MAX || curval == INPUT_ABSOLUTE_MIN))
1120        return FALSE;
1121
1122   /* compute the diff against memory */
1123   diff = curval - item->memory;
1124   if (diff < 0)
1125      diff = -diff;
1126
1127   /* for absolute axes, look for 25% of maximum */
1128   if (item->itemclass == ITEM_CLASS_ABSOLUTE && diff > (INPUT_ABSOLUTE_MAX - INPUT_ABSOLUTE_MIN) / 4)
1129   {
1130      item->memory = INVALID_AXIS_VALUE;
1131      return TRUE;
1132   }
1133
1134   /* for relative axes, look for ~20 pixels movement */
1135   if (item->itemclass == ITEM_CLASS_RELATIVE && diff > 20 * INPUT_RELATIVE_PER_PIXEL)
1136   {
1137      item->memory = INVALID_AXIS_VALUE;
1138      return TRUE;
1139   }
1140
1141    return FALSE;
1142}
1143
1144
1145/*-------------------------------------------------
11271146    input_code_reset_axes - reset axes memory
11281147-------------------------------------------------*/
11291148
r4679r4680
11951214            if (item != NULL)
11961215            {
11971216               input_code code = device_item_to_code(device, itemid);
1198               INT32 curval, diff;
11991217
1200               /* skip any switches or already-reported axes */
1218               /* skip any switches */
12011219               if (item->itemclass == ITEM_CLASS_SWITCH)
12021220                  continue;
12031221
1204               /* poll the current value */
1205               curval = input_code_value(code);
1206
1207               /* if we've already reported this one, don't bother */
1208               if (item->memory == INVALID_AXIS_VALUE)
1209                  continue;
1210
1211               /* compute the diff against memory */
1212               diff = curval - item->memory;
1213               if (diff < 0)
1214                  diff = -diff;
1215
1216               /* for absolute axes, look for 25% of maximum */
1217               if (item->itemclass == ITEM_CLASS_ABSOLUTE && diff > (INPUT_ABSOLUTE_MAX - INPUT_ABSOLUTE_MIN) / 4)
1218               {
1219                  item->memory = INVALID_AXIS_VALUE;
1222               /* check if there is enough axis movement */
1223               if (input_code_check_axis(item, code))
12201224                  return code;
1221               }
1222
1223               /* for relative axes, look for ~20 pixels movement */
1224               if (item->itemclass == ITEM_CLASS_RELATIVE && diff > 20 * INPUT_RELATIVE_PER_PIXEL)
1225               {
1226                  item->memory = INVALID_AXIS_VALUE;
1227                  return code;
1228               }
12291225            }
12301226         }
12311227      }
src/emu/driver.h
r4679r4680
189189   GAMEL(YEAR,NAME,PARENT,MACHINE,INPUT,INIT,MONITOR,COMPANY,FULLNAME,FLAGS,((const char *)0))
190190
191191#define GAMEL(YEAR,NAME,PARENT,MACHINE,INPUT,INIT,MONITOR,COMPANY,FULLNAME,FLAGS,LAYOUT)   \
192const game_driver driver_##NAME =               \
192extern const game_driver driver_##NAME;      \
193const game_driver driver_##NAME =         \
193194{                                 \
194195   __FILE__,                        \
195196   #PARENT,                        \
src/emu/drawgfx.c
r4679r4680
9090   gfx_element *gfx;
9191
9292   /* allocate memory for the gfx_element structure */
93   gfx = (gfx_element *)malloc_or_die(sizeof(*gfx));
94   memset(gfx, 0, sizeof(*gfx));
93   gfx = alloc_clear_or_die(gfx_element);
9594
9695   /* fill in the data */
9796   gfx->width = width;
r4679r4680
120119      }
121120      else
122121      {
123         UINT32 *buffer = (UINT32 *)malloc_or_die(sizeof(buffer[0]) * gfx->layout.width);
122         UINT32 *buffer = alloc_array_or_die(UINT32, gfx->layout.width);
124123         memcpy(buffer, gfx->layout.extxoffs, sizeof(gfx->layout.extxoffs[0]) * gfx->layout.width);
125124         gfx->layout.extxoffs = buffer;
126125      }
r4679r4680
135134      }
136135      else
137136      {
138         UINT32 *buffer = (UINT32 *)malloc_or_die(sizeof(buffer[0]) * gfx->layout.height);
137         UINT32 *buffer = alloc_array_or_die(UINT32, gfx->layout.height);
139138         memcpy(buffer, gfx->layout.extyoffs, sizeof(gfx->layout.extyoffs[0]) * gfx->layout.height);
140139         gfx->layout.extyoffs = buffer;
141140      }
r4679r4680
143142
144143   /* allocate a pen usage array for entries with 32 pens or less */
145144   if (gfx->color_depth <= 32)
146      gfx->pen_usage = (UINT32 *)malloc_or_die(gfx->total_elements * sizeof(*gfx->pen_usage));
145      gfx->pen_usage = alloc_array_or_die(UINT32, gfx->total_elements);
147146
148147   /* allocate a dirty array */
149   gfx->dirty = (UINT8 *)malloc_or_die(gfx->total_elements * sizeof(*gfx->dirty));
148   gfx->dirty = alloc_array_or_die(UINT8, gfx->total_elements);
150149   memset(gfx->dirty, 1, gfx->total_elements * sizeof(*gfx->dirty));
151150
152151   /* raw graphics case */
r4679r4680
173172      gfx->char_modulo = gfx->line_modulo * gfx->origheight;
174173
175174      /* allocate memory for the data */
176      gfx->gfxdata = (UINT8 *)malloc_or_die(gfx->total_elements * gfx->char_modulo);
175      gfx->gfxdata = alloc_array_or_die(UINT8, gfx->total_elements * gfx->char_modulo);
177176   }
178177
179178   return gfx;
src/emu/drawgfx.h
r4679r4680
8282#define STEP8(START,STEP)      STEP4(START,STEP),STEP4((START)+4*(STEP),STEP)
8383#define STEP16(START,STEP)      STEP8(START,STEP),STEP8((START)+8*(STEP),STEP)
8484#define STEP32(START,STEP)      STEP16(START,STEP),STEP16((START)+16*(STEP),STEP)
85#define STEP64(START,STEP)      STEP32(START,STEP),STEP32((START)+32*(STEP),STEP)
86#define STEP128(START,STEP)      STEP64(START,STEP),STEP64((START)+64*(STEP),STEP)
87#define STEP256(START,STEP)      STEP128(START,STEP),STEP128((START)+128*(STEP),STEP)
88#define STEP512(START,STEP)      STEP256(START,STEP),STEP256((START)+256*(STEP),STEP)
89#define STEP1024(START,STEP)   STEP512(START,STEP),STEP512((START)+512*(STEP),STEP)
90#define STEP2048(START,STEP)   STEP1024(START,STEP),STEP1024((START)+1024*(STEP),STEP)
8591
92
8693/* these macros are used for declaring gfx_decode_entry_entry info arrays. */
8794#define GFXDECODE_EXTERN( name ) extern const gfx_decode_entry gfxdecodeinfo_##name[]
8895#define GFXDECODE_START( name ) const gfx_decode_entry gfxdecodeinfo_##name[] = {
src/emu/render.c
r4679r4680
343343   if (result != NULL)
344344      container_item_free_list = result->next;
345345   else
346      result = (container_item *)malloc_or_die(sizeof(*result));
346      result = alloc_or_die(container_item);
347347
348348   memset(result, 0, sizeof(*result));
349349   return result;
r4679r4680
375375   if (result != NULL)
376376      render_primitive_free_list = result->next;
377377   else
378      result = (render_primitive *)malloc_or_die(sizeof(*result));
378      result = alloc_or_die(render_primitive);
379379
380380   /* clear to 0 */
381381   memset(result, 0, sizeof(*result));
r4679r4680
426426   if (ref != NULL)
427427      render_ref_free_list = ref->next;
428428   else
429      ref = (render_ref *)malloc_or_die(sizeof(*ref));
429      ref = alloc_or_die(render_ref);
430430
431431   /* set the refptr and link us into the list */
432432   ref->refptr = refptr;
r4679r4680
10731073   int listnum;
10741074
10751075   /* allocate memory for the target */
1076   target = (render_target *)malloc_or_die(sizeof(*target));
1077   memset(target, 0, sizeof(*target));
1076   target = alloc_clear_or_die(render_target);
10781077
10791078   /* add it to the end of the list */
10801079   for (nextptr = &targetlist; *nextptr != NULL; nextptr = &(*nextptr)->next) ;
r4679r4680
24332432      int texnum;
24342433
24352434      /* allocate a new group */
2436      texture = (render_texture *)malloc_or_die(sizeof(*texture) * TEXTURE_GROUP_SIZE);
2437      memset(texture, 0, sizeof(*texture) * TEXTURE_GROUP_SIZE);
2435      texture = alloc_array_clear_or_die(render_texture, TEXTURE_GROUP_SIZE);
24382436
24392437      /* add them to the list */
24402438      for (texnum = 0; texnum < TEXTURE_GROUP_SIZE; texnum++)
r4679r4680
27702768   int color;
27712769
27722770   /* allocate and clear memory */
2773   container = (render_container *)malloc_or_die(sizeof(*container));
2774   memset(container, 0, sizeof(*container));
2771   container = alloc_clear_or_die(render_container);
27752772
27762773   /* default values */
27772774   container->brightness = 1.0f;
src/emu/clifront.c
r4679r4680
440440
441441int cli_info_listbrothers(core_options *options, const char *gamename)
442442{
443   UINT8 *didit = (UINT8 *)malloc_or_die(driver_list_get_count(drivers));
443   UINT8 *didit = alloc_array_or_die(UINT8, driver_list_get_count(drivers));
444444   astring *filename = astring_alloc();
445445   int drvindex, count = 0;
446446
src/emu/state.c
r4679r4680
165165
166166void state_init(running_machine *machine)
167167{
168   machine->state_data = (state_private *)auto_malloc(sizeof(*machine->state_data));
169   memset(machine->state_data, 0, sizeof(*machine->state_data));
168   machine->state_data = auto_alloc_clear(machine, state_private);
170169}
171170
172171
r4679r4680
264263
265264   /* didn't find one; allocate a new one */
266265   next = *entryptr;
267   *entryptr = (state_entry *)malloc_or_die(sizeof(**entryptr));
268   memset(*entryptr, 0, sizeof(**entryptr));
266   *entryptr = alloc_clear_or_die(state_entry);
269267
270268   /* fill in the rest */
271269   (*entryptr)->next      = next;
r4679r4680
314312         fatalerror("Duplicate save state function (%p, %p)", param, func);
315313
316314   /* allocate a new entry */
317   *cbptr = (state_callback *)malloc_or_die(sizeof(state_callback));
315   *cbptr = alloc_or_die(state_callback);
318316
319317   /* fill it in */
320318   (*cbptr)->next         = NULL;
r4679r4680
345343         fatalerror("Duplicate save state function (%p, %p)", param, func);
346344
347345   /* allocate a new entry */
348   *cbptr = (state_callback *)malloc_or_die(sizeof(state_callback));
346   *cbptr = alloc_or_die(state_callback);
349347
350348   /* fill it in */
351349   (*cbptr)->next          = NULL;
src/emu/timer.c
r4679r4680
300300   int i;
301301
302302   /* allocate global data */
303   global = machine->timer_data = (timer_private *)auto_malloc(sizeof(*global));
304   memset(global, 0, sizeof(*global));
303   global = machine->timer_data = auto_alloc_clear(machine, timer_private);
305304
306305   /* we need to wait until the first call to timer_cyclestorun before using real CPU times */
307306   global->exec.basetime = attotime_zero;
r4679r4680
704703void timer_device_adjust_oneshot(const device_config *timer, attotime duration, INT32 param)
705704{
706705#ifdef MAME_DEBUG
707   timer_config *config = timer->inline_config;
706   timer_config *config = (timer_config *)timer->inline_config;
708707
709708   /* doesn't make sense for scanline timers */
710709   assert(config->type != TIMER_TYPE_SCANLINE);
r4679r4680
757756{
758757   timer_state *state = get_safe_token(timer);
759758#ifdef MAME_DEBUG
760   timer_config *config = timer->inline_config;
759   timer_config *config = (timer_config *)timer->inline_config;
761760
762761   /* doesn't make sense for scanline timers */
763762   assert(config->type != TIMER_TYPE_SCANLINE);
r4679r4680
821820{
822821   timer_state *state = get_safe_token(timer);
823822#ifdef MAME_DEBUG
824   timer_config *config = timer->inline_config;
823   timer_config *config = (timer_config *)timer->inline_config;
825824
826825   /* doesn't make sense for scanline timers */
827826   assert(config->type != TIMER_TYPE_SCANLINE);
r4679r4680
891890{
892891   timer_state *state = get_safe_token(timer);
893892#ifdef MAME_DEBUG
894   timer_config *config = timer->inline_config;
893   timer_config *config = (timer_config *)timer->inline_config;
895894
896895   /* doesn't make sense for scanline timers */
897896   assert(config->type != TIMER_TYPE_SCANLINE);
r4679r4680
916915{
917916   timer_state *state = get_safe_token(timer);
918917#ifdef MAME_DEBUG
919   timer_config *config = timer->inline_config;
918   timer_config *config = (timer_config *)timer->inline_config;
920919
921920   /* doesn't make sense for scanline timers */
922921   assert(config->type != TIMER_TYPE_SCANLINE);
r4679r4680
12731272
12741273
12751274/*-------------------------------------------------
1276    timer_set_info - device set info callback
1277-------------------------------------------------*/
1278
1279static DEVICE_SET_INFO( timer )
1280{
1281   switch (state)
1282   {
1283      /* no parameters to set */
1284   }
1285}
1286
1287
1288/*-------------------------------------------------
12891275    timer_get_info - device get info callback
12901276-------------------------------------------------*/
12911277
r4679r4680
12991285      case DEVINFO_INT_CLASS:               info->i = DEVICE_CLASS_TIMER;         break;
13001286
13011287      /* --- the following bits of info are returned as pointers to data or functions --- */
1302      case DEVINFO_FCT_SET_INFO:            info->set_info = DEVICE_SET_INFO_NAME(timer); break;
13031288      case DEVINFO_FCT_START:               info->start = DEVICE_START_NAME(timer); break;
13041289      case DEVINFO_FCT_STOP:               /* Nothing */                     break;
13051290      case DEVINFO_FCT_RESET:               /* Nothing */                     break;
src/emu/mconfig.c
r4679r4680
6969   machine_config *config;
7070
7171   /* allocate a new configuration object */
72   config = (machine_config *)malloc_or_die(sizeof(*config));
73   memset(config, 0, sizeof(*config));
72   config = alloc_clear_or_die(machine_config);
7473
7574   /* parse tokens into the config */
7675   machine_config_detokenize(config, tokens, NULL, 0);
src/emu/emupal.c
r4679r4680
9595
9696void palette_init(running_machine *machine)
9797{
98   palette_private *palette = (palette_private *)auto_malloc(sizeof(*palette));
98   palette_private *palette = auto_alloc_clear(machine, palette_private);
9999   const device_config *device = video_screen_first(machine->config);
100100   bitmap_format format;
101101
r4679r4680
113113   add_exit_callback(machine, palette_exit);
114114
115115   /* reset all our data */
116   memset(palette, 0, sizeof(*palette));
117116   palette->format = format;
118117
119118   /* determine the color mode */
r4679r4680
146145
147146      /* set up save/restore of the palette */
148147      numcolors = palette_get_num_colors(machine->palette);
149      palette->save_pen = (pen_t *)auto_malloc(sizeof(*palette->save_pen) * numcolors);
150      palette->save_bright = (float *)auto_malloc(sizeof(*palette->save_bright) * numcolors);
148      palette->save_pen = auto_alloc_array(machine, pen_t, numcolors);
149      palette->save_bright = auto_alloc_array(machine, float, numcolors);
151150      state_save_register_global_pointer(machine, palette->save_pen, numcolors);
152151      state_save_register_global_pointer(machine, palette->save_bright, numcolors);
153152      state_save_register_presave(machine, palette_presave, palette);
r4679r4680
330329   assert(palettesize > 0);
331330
332331   /* allocate the colortable */
333   ctable = (colortable_t *)auto_malloc(sizeof(*ctable));
334   memset(ctable, 0, sizeof(*ctable));
332   ctable = auto_alloc_clear(machine, colortable_t);
335333
336334   /* fill in the basics */
337335   ctable->machine = machine;
r4679r4680
339337   ctable->palentries = palettesize;
340338
341339   /* allocate the raw colortable */
342   ctable->raw = (UINT16 *)auto_malloc(ctable->entries * sizeof(*ctable->raw));
340   ctable->raw = auto_alloc_array(machine, UINT16, ctable->entries);
343341   for (index = 0; index < ctable->entries; index++)
344342      ctable->raw[index] = index % ctable->palentries;
345343   state_save_register_global_pointer(machine, ctable->raw, ctable->entries);
346344
347345   /* allocate the palette */
348   ctable->palette = (rgb_t *)auto_malloc(ctable->palentries * sizeof(*ctable->palette));
346   ctable->palette = auto_alloc_array(machine, rgb_t, ctable->palentries);
349347   for (index = 0; index < ctable->palentries; index++)
350348      ctable->palette[index] = MAKE_ARGB(0x80,0xff,0xff,0xff);
351349   state_save_register_global_pointer(machine, ctable->palette, ctable->palentries);
r4679r4680
660658   {
661659      case BITMAP_FORMAT_INDEXED16:
662660         /* create a dummy 1:1 mapping */
663         machine->pens = pentable = (pen_t *)auto_malloc((total_colors + 2) * sizeof(machine->pens[0]));
661         machine->pens = pentable = auto_alloc_array(machine, pen_t, total_colors + 2);
664662         for (i = 0; i < total_colors + 2; i++)
665663            pentable[i] = i;
666664         break;
r4679r4680
690688   /* if we have shadows, allocate shadow tables */
691689   if (machine->config->video_attributes & VIDEO_HAS_SHADOWS)
692690   {
693      pen_t *table = (pen_t *)auto_malloc(65536 * sizeof(*table));
691      pen_t *table = auto_alloc_array(machine, pen_t, 65536);
694692      int i;
695693
696694      /* palettized mode gets a single 64k table in slots 0 and 2 */
r4679r4680
713711   /* if we have hilights, allocate shadow tables */
714712   if (machine->config->video_attributes & VIDEO_HAS_HIGHLIGHTS)
715713   {
716      pen_t *table = (pen_t *)auto_malloc(65536 * sizeof(*table));
714      pen_t *table = auto_alloc_array(machine, pen_t, 65536);
717715      int i;
718716
719717      /* palettized mode gets a single 64k table in slots 1 and 3 */
src/emu/cheat.c
r4679r4680
371371   add_exit_callback(machine, cheat_exit);
372372
373373   /* allocate memory */
374   cheatinfo = (cheat_private *)auto_malloc(sizeof(*cheatinfo));
375   memset(cheatinfo, 0, sizeof(*cheatinfo));
374   cheatinfo = auto_alloc_clear(machine, cheat_private);
376375   machine->cheat_data = cheatinfo;
377376
378377   /* load the cheat file */
r4679r4680
10611060   }
10621061
10631062   /* allocate memory for the cheat */
1064   cheat = (cheat_entry *)malloc_or_die(sizeof(*cheat) + (tempcount - 1) * sizeof(cheat->tempvar));
1065   memset(cheat, 0, sizeof(*cheat) + (tempcount - 1) * sizeof(cheat->tempvar));
1063   cheat = (cheat_entry *)alloc_array_clear_or_die(UINT8, sizeof(*cheat) + (tempcount - 1) * sizeof(cheat->tempvar));
10661064   cheat->numtemp = tempcount;
10671065
10681066   /* get the description */
r4679r4680
12321230   cheat_parameter *param;
12331231
12341232   /* allocate memory for it */
1235   param = (cheat_parameter *)malloc_or_die(sizeof(*param));
1236   memset(param, 0, sizeof(*param));
1233   param = alloc_clear_or_die(cheat_parameter);
12371234
12381235   /* read the core attributes */
12391236   param->minval = xml_get_attribute_int(paramnode, "min", 0);
r4679r4680
12501247      parameter_item *curitem;
12511248
12521249      /* allocate memory for it */
1253      curitem = (parameter_item *)malloc_or_die(sizeof(*curitem));
1254      memset(curitem, 0, sizeof(*curitem));
1250      curitem = alloc_clear_or_die(parameter_item);
12551251
12561252      /* check for NULL text */
12571253      if (itemnode->value == NULL || itemnode->value[0] == 0)
r4679r4680
13611357   const char *state;
13621358
13631359   /* allocate memory for it */
1364   script = (cheat_script *)malloc_or_die(sizeof(*script));
1365   memset(script, 0, sizeof(*script));
1360   script = alloc_clear_or_die(cheat_script);
13661361
13671362   /* read the core attributes */
13681363   script->state = SCRIPT_STATE_RUN;
r4679r4680
14761471   EXPRERR experr;
14771472
14781473   /* allocate memory for it */
1479   entry = (script_entry *)malloc_or_die(sizeof(*entry));
1480   memset(entry, 0, sizeof(*entry));
1474   entry = alloc_clear_or_die(script_entry);
14811475
14821476   /* read the condition if present */
14831477   expression = xml_get_attribute_string(entrynode, "condition", NULL);
r4679r4680
15461540         output_argument *curarg;
15471541
15481542         /* allocate memory for it */
1549         curarg = (output_argument *)malloc_or_die(sizeof(*curarg));
1550         memset(curarg, 0, sizeof(*curarg));
1543         curarg = alloc_clear_or_die(output_argument);
15511544
15521545         /* first extract attributes */
15531546         curarg->count = xml_get_attribute_int(argnode, "count", 1);
src/emu/validity.c
r4679r4680
233233
234234   /* determine how many total bytes we need */
235235   total_bytes = sizeof(*table) + entries * sizeof(table->entry[0]) + hashsize * sizeof(table->hash[0]);
236   table = (quark_table *)auto_malloc(total_bytes);
236   table = (quark_table *)alloc_array_or_die(UINT8, total_bytes);
237237
238238   /* fill in the details */
239239   table->entries = entries;
r4679r4680
292292}
293293
294294
295/*-------------------------------------------------
296    quark_tables_free - free allocated tables
297-------------------------------------------------*/
295298
299static void quark_tables_free(void)
300{
301   if (source_table != NULL)
302      free(source_table);
303   source_table = NULL;
304
305   if (name_table != NULL)
306      free(name_table);
307   name_table = NULL;
308
309   if (description_table != NULL)
310      free(description_table);
311   description_table = NULL;
312
313   if (roms_table != NULL)
314      free(roms_table);
315   roms_table = NULL;
316
317   if (defstr_table != NULL)
318      free(defstr_table);
319   defstr_table = NULL;
320}
321
322
323
296324/***************************************************************************
297325    VALIDATION FUNCTIONS
298326***************************************************************************/
r4679r4680
17181746
17191747   end_resource_tracking();
17201748   exit_resource_tracking();
1749   quark_tables_free();
17211750
17221751   return error;
17231752}
src/emu/romload.c
r4679r4680
115115    file associated with the given region
116116-------------------------------------------------*/
117117
118void set_disk_handle(const char *region, mame_file *file, chd_file *chdfile)
118void set_disk_handle(running_machine *machine, const char *region, mame_file *file, chd_file *chdfile)
119119{
120120   open_chd chd = { 0 };
121121
r4679r4680
125125   chd.origfile = file;
126126
127127   /* we're okay, add to the list of disks */
128   *chd_list_tailptr = (open_chd *)auto_malloc(sizeof(**chd_list_tailptr));
128   *chd_list_tailptr = auto_alloc(machine, open_chd);
129129   **chd_list_tailptr = chd;
130130   chd_list_tailptr = &(*chd_list_tailptr)->next;
131131}
r4679r4680
757757
758758   /* use a temporary buffer for complex loads */
759759   tempbufsize = MIN(TEMPBUFFER_MAX_SIZE, numbytes);
760   tempbuf = (UINT8 *)malloc_or_die(tempbufsize);
760   tempbuf = alloc_array_or_die(UINT8, tempbufsize);
761761
762762   /* chunky reads for complex loads */
763763   skip += groupsize;
r4679r4680
12251225
12261226         /* we're okay, add to the list of disks */
12271227         LOG(("Assigning to handle %d\n", DISK_GETINDEX(romp)));
1228         *chd_list_tailptr = (open_chd *)auto_malloc(sizeof(**chd_list_tailptr));
1228         *chd_list_tailptr = auto_alloc(romdata->machine, open_chd);
12291229         **chd_list_tailptr = chd;
12301230         chd_list_tailptr = &(*chd_list_tailptr)->next;
12311231      }
src/mess/uimess.c
r4679r4680
9090void ui_mess_init(running_machine *machine)
9191{
9292   /* allocate memory for our data structure */
93   machine->ui_mess_data = auto_malloc(sizeof(*machine->ui_mess_data));
94   memset(machine->ui_mess_data, 0, sizeof(*machine->ui_mess_data));
93   machine->ui_mess_data = auto_alloc_clear(machine, ui_mess_private);
9594
9695   /* retrieve options */
9796   machine->ui_mess_data->use_natural_keyboard = options_get_bool(mame_options(), OPTION_NATURAL_KEYBOARD);
src/mess/mess.c
r4679r4680
8787   /* if we have RAM, allocate it */
8888   if (mess_ram_size > 0)
8989   {
90      mess_ram = (UINT8 *) auto_malloc(mess_ram_size);
90      mess_ram = auto_alloc_array_clear(machine, UINT8, mess_ram_size);
9191      memset(mess_ram, mess_ram_default_value, mess_ram_size);
9292
9393      state_save_register_item(machine, "mess", NULL, 0, mess_ram_size);
src/mess/tools/castool/stubs.c
r4679r4680
220220    freeing memory
221221-------------------------------------------------*/
222222
223void *auto_malloc_file_line(size_t size, const char *file, int line)
223void *auto_malloc_file_line(running_machine *machine, size_t size, const char *file, int line)
224224{
225225   void *result = pool_malloc_file_line(current_pool(), size, file, line);
226226#ifdef MAME_DEBUG
r4679r4680
235235    freeing memory
236236-------------------------------------------------*/
237237
238void *auto_realloc_file_line(void *ptr, size_t size, const char *file, int line)
238void *auto_realloc_file_line(running_machine *machine, void *ptr, size_t size, const char *file, int line)
239239{
240240   object_pool *pool = current_pool();
241241   if (ptr != NULL)
r4679r4680
259259    string
260260-------------------------------------------------*/
261261
262char *auto_strdup_file_line(const char *str, const char *file, int line)
262char *auto_strdup_file_line(running_machine *machine, const char *str, const char *file, int line)
263263{
264264   return pool_strdup_file_line(current_pool(), str, file, line);
265265}
r4679r4680
270270    auto-freeing string if str is null
271271-------------------------------------------------*/
272272
273char *auto_strdup_allow_null_file_line(const char *str, const char *file, int line)
273char *auto_strdup_allow_null_file_line(running_machine *machine, const char *str, const char *file, int line)
274274{
275   return (str != NULL) ? auto_strdup_file_line(str, file, line) : NULL;
275   return (str != NULL) ? auto_strdup_file_line(machine, str, file, line) : NULL;
276276}
277277
278278
r4679r4680
281281    auto-freeing astring
282282-------------------------------------------------*/
283283
284astring *auto_astring_alloc_file_line(const char *file, int line)
284astring *auto_astring_alloc_file_line(running_machine *machine, const char *file, int line)
285285{
286286   return (astring *)restrack_register_object(OBJTYPE_ASTRING, astring_alloc(), 0, file, line);
287287}
r4679r4680
310310}
311311
312312
313void *malloc_or_die_file_line(size_t size, const char *file, int line)
314{
315   return malloc(size);
316}
src/mess/audio/mac.c
r4679r4680
104104   mac_sound *token = get_token(device);
105105
106106   memset(token, 0, sizeof(*token));
107   token->snd_cache = auto_malloc(SND_CACHE_SIZE * sizeof(*token->snd_cache));
107   token->snd_cache = auto_alloc_array(device->machine, UINT8, SND_CACHE_SIZE);
108108   token->mac_stream = stream_create(device, 0, 1, MAC_SAMPLE_RATE, 0, mac_sound_update);
109109}
110110
src/mess/audio/vic6560.c
r4679r4680
236236   /* buffer for fastest played sample for 5 second
237237    * so we have enough data for min 5 second */
238238   noisesize = NOISE_FREQUENCY_MAX * NOISE_BUFFER_SIZE_SEC;
239   noise = (INT8*) auto_malloc (noisesize * sizeof (noise[0]));
239   noise = auto_alloc_array(device->machine, INT8, noisesize);
240240   {
241241      int noiseshift = 0x7ffff8;
242242      char data;
r4679r4680
271271
272272   if (tonesize > 0)
273273   {
274      tone = (INT16*) auto_malloc (tonesize * sizeof (tone[0]));
274      tone = auto_alloc_array(device->machine, INT16, tonesize);
275275
276276      for (i = 0; i < tonesize; i++)
277277      {
src/mess/audio/lynx.c
r4679r4680
306306   }
307307}
308308
309static void lynx_audio_init(void)
309static void lynx_audio_init(running_machine *machine)
310310{
311311   int i;
312   shift_mask = (int *) auto_malloc(512 * sizeof(int));
312   shift_mask = auto_alloc_array(machine, int, 512);
313313   assert(shift_mask);
314314
315   shift_xor = (int *) auto_malloc(4096 * sizeof(int));
315   shift_xor = auto_alloc_array(machine, int, 4096);
316316   assert(shift_xor);
317317
318318   for (i=0; i<512; i++)
r4679r4680
361361
362362   usec_per_sample = 1000000 / device->machine->sample_rate;
363363
364   lynx_audio_init();
364   lynx_audio_init(device->machine);
365365}
366366
367367
r4679r4680
371371
372372    usec_per_sample = 1000000 / device->machine->sample_rate;
373373
374    lynx_audio_init();
374    lynx_audio_init(device->machine);
375375}
376376
377377
src/mess/audio/ted7360.c
r4679r4680
162162   /* buffer for fastest played sample for 5 second
163163    * so we have enough data for min 5 second */
164164   noisesize = NOISE_FREQUENCY_MAX * NOISE_BUFFER_SIZE_SEC;
165   noise = (UINT8*) auto_malloc (noisesize * sizeof (noise[0]));
165   noise = auto_alloc_array(device->machine, UINT8, noisesize);
166166
167167   {
168168      int noiseshift = 0x7ffff8;
src/mess/image.c
r4679r4680
190190   /* allocate the private structure */
191191   private_size = sizeof(*machine->images_data) + ((count - 1)
192192      * sizeof(machine->images_data->slots[0]));
193   machine->images_data = (images_private *) auto_malloc(private_size);
193   machine->images_data = (images_private *) auto_alloc_array_clear(machine, char, private_size);
194194   memset(machine->images_data, '\0', private_size);
195195
196196   /* some setup */
r4679r4680
229229      for (i = 0; i < format_count; i++)
230230      {
231231         /* allocate a new format */
232         format = auto_malloc(sizeof(*format));
233         memset(format, 0, sizeof(*format));
232         format = auto_alloc_clear(machine, image_device_format);
234233
235234         /* populate it */
236235         format->index      = i;
237         format->name      = auto_strdup(device_get_info_string(slot->dev, DEVINFO_STR_IMAGE_CREATE_OPTNAME + i));
238         format->description   = auto_strdup(device_get_info_string(slot->dev, DEVINFO_STR_IMAGE_CREATE_OPTDESC + i));
239         format->extensions   = auto_strdup(device_get_info_string(slot->dev, DEVINFO_STR_IMAGE_CREATE_OPTEXTS + i));
236         format->name      = auto_strdup(machine, device_get_info_string(slot->dev, DEVINFO_STR_IMAGE_CREATE_OPTNAME + i));
237         format->description   = auto_strdup(machine, device_get_info_string(slot->dev, DEVINFO_STR_IMAGE_CREATE_OPTDESC + i));
238         format->extensions   = auto_strdup(machine, device_get_info_string(slot->dev, DEVINFO_STR_IMAGE_CREATE_OPTEXTS + i));
240239         format->optspec      = device_get_info_ptr(slot->dev, DEVINFO_PTR_IMAGE_CREATE_OPTSPEC + i);
241240
242241         /* and append it to the list */
r4679r4680
11421141   *dest = '\0';
11431142   size = (UINT32) image_length(image);
11441143
1145   buf = (UINT8 *) malloc_or_die(size);
1144   buf = alloc_array_or_die(UINT8, size);
11461145
11471146   /* read the file */
11481147   image_fseek(image, 0, SEEK_SET);
src/mess/video/vic6560.c
r4679r4680
141141   int width = video_screen_get_width(screen);
142142   int height = video_screen_get_height(screen);
143143
144   vic6560_bitmap = auto_bitmap_alloc(width, height, BITMAP_FORMAT_INDEXED16);
144   vic6560_bitmap = auto_bitmap_alloc(machine, width, height, BITMAP_FORMAT_INDEXED16);
145145}
146146
147147WRITE8_HANDLER ( vic6560_port_w )
src/mess/video/pdp1.c
r4679r4680
5656VIDEO_START( pdp1 )
5757{
5858   /* alloc bitmaps for our private fun */
59   panel_bitmap = auto_bitmap_alloc(panel_window_width, panel_window_height, BITMAP_FORMAT_INDEXED16);
60   typewriter_bitmap = auto_bitmap_alloc(typewriter_window_width, typewriter_window_height, BITMAP_FORMAT_INDEXED16);
59   panel_bitmap = auto_bitmap_alloc(machine, panel_window_width, panel_window_height, BITMAP_FORMAT_INDEXED16);
60   typewriter_bitmap = auto_bitmap_alloc(machine, typewriter_window_width, typewriter_window_height, BITMAP_FORMAT_INDEXED16);
6161
6262   /* set up out bitmaps */
6363   pdp1_draw_panel_backdrop(machine, panel_bitmap);
r4679r4680
6565   bitmap_fill(typewriter_bitmap, &typewriter_bitmap_bounds, pen_typewriter_bg);
6666
6767   /* initialize CRT */
68   video_start_crt(pen_crt_num_levels, crt_window_offset_x, crt_window_offset_y, crt_window_width, crt_window_height);
68   video_start_crt(machine, pen_crt_num_levels, crt_window_offset_x, crt_window_offset_y, crt_window_width, crt_window_height);
6969}
7070
7171
src/mess/video/cpschngr.c
r4679r4680
573573      palette_set_color(machine,i,MAKE_RGB(0,0,0));
574574   }
575575
576   cps1_buffered_obj = auto_malloc (cps1_obj_size);
577   memset(cps1_buffered_obj, 0x00, cps1_obj_size);
576   cps1_buffered_obj = auto_alloc_array_clear(machine, UINT16, cps1_obj_size / sizeof(UINT16));
578577
579578   memset(cps1_gfxram, 0, cps1_gfxram_size);   /* Clear GFX RAM */
580579   memset(cps1_cps_a_regs, 0, 0x40);   /* Clear CPS-A registers */
src/mess/video/apple2gs.c
r4679r4680
1919{
2020   apple2gs_bordercolor = 0;
2121   apple2_video_start(machine, apple2gs_slowmem, 0x20000, 0, 8);
22   apple2gs_legacy_gfx = auto_bitmap_alloc(560, 192, BITMAP_FORMAT_INDEXED16);
22   apple2gs_legacy_gfx = auto_bitmap_alloc(machine, 560, 192, BITMAP_FORMAT_INDEXED16);
2323
2424   state_save_register_item(machine, "BORDERCLR", NULL, 0, apple2gs_bordercolor);
2525}
src/mess/video/apple3.c
r4679r4680
7171   int i, j;
7272   UINT32 v;
7373
74   char_mem = auto_malloc(0x800);
74   char_mem = auto_alloc_array(machine, UINT8, 0x800);
7575   memset(char_mem, 0, 0x800);
7676
77   hgr_map = auto_malloc(192 * sizeof(*hgr_map));
77   hgr_map = auto_alloc_array(machine, UINT32, 192);
7878   for (i = 0; i < 24; i++)
7979   {
8080      v = text_map[i] - 0x0400;
src/mess/video/i82720.c
r4679r4680
14141414   gdc_mess.mode = intf->mode;
14151415
14161416   /* Video RAM */
1417   gdc_mess.vram = (UINT16*)auto_malloc (gdc_mess.vramsize * sizeof(UINT16) );
1418   memset (gdc_mess.vram, 0, gdc_mess.vramsize*sizeof(UINT16) );
1417   gdc_mess.vram = auto_alloc_array_clear(machine, UINT16, gdc_mess.vramsize);
14191418
14201419   /* back bitmap */
14211420
1422   gdc_mess.tmpbmp = auto_bitmap_alloc (640, 400, BITMAP_FORMAT_INDEXED16);
1421   gdc_mess.tmpbmp = auto_bitmap_alloc (machine, 640, 400, BITMAP_FORMAT_INDEXED16);
14231422   gdc_fifo_reset(&gdc);
14241423   videoram_size = gdc_mess.vramsize;
14251424
src/mess/video/cdp1862.c
r4679r4680
142142   assert(cdp1862->screen != NULL);
143143
144144   /* allocate the temporary bitmap */
145   cdp1862->bitmap = auto_bitmap_alloc(video_screen_get_width(cdp1862->screen), video_screen_get_height(cdp1862->screen), video_screen_get_format(cdp1862->screen));
145   cdp1862->bitmap = auto_bitmap_alloc(device->machine, video_screen_get_width(cdp1862->screen), video_screen_get_height(cdp1862->screen), video_screen_get_format(cdp1862->screen));
146146
147147   /* initialize the palette */
148148   cdp1862_init_palette(device);
src/mess/video/pocketc.c
r4679r4680
5252VIDEO_START( pocketc )
5353{
5454    videoram_size = 6 * 2 + 24;
55    videoram = (UINT8*)auto_malloc (videoram_size);
55    videoram = auto_alloc_array(machine, UINT8, videoram_size);
5656}
5757
5858
src/mess/video/newport.c
r4679r4680
181181   nREX3_DrawMode1 = 0x3002f001;
182182   nREX3_DCBMode = 0x00000780;
183183   nREX3_Kludge_SkipLine = 0;
184   video_base = auto_malloc( (1280+64) * (1024+64) * 4 );
185   memset( video_base, 0x00, (1280+64) * (1024+64) * 4 );
184   video_base = auto_alloc_array_clear(machine, UINT32, (1280+64) * (1024+64));
186185}
187186
188187VIDEO_UPDATE( newport )
src/mess/video/pc_vga.c
r4679r4680
616616         else
617617         {
618618            memory_set_bankptr(machine,1, vga.memory);
619            memory_install_read8_handler(space,  0xa0000, 0xbffff, 0, 0, SMH_BANK1 );
620            memory_install_write8_handler(space, 0xa0000, 0xbffff, 0, 0, SMH_BANK1 );
619            memory_install_read8_handler(space,  0xa0000, 0xbffff, 0, 0, SMH_BANK(1) );
620            memory_install_write8_handler(space, 0xa0000, 0xbffff, 0, 0, SMH_BANK(1) );
621621         }
622622         break;
623623
r4679r4680
635635         else
636636         {
637637            memory_set_bankptr(machine,1, vga.memory);
638            memory_install_read64_handler(space,  0xa0000, 0xbffff, 0, 0, SMH_BANK1 );
639            memory_install_write64_handler(space, 0xa0000, 0xbffff, 0, 0, SMH_BANK1 );
638            memory_install_read64_handler(space,  0xa0000, 0xbffff, 0, 0, SMH_BANK(1) );
639            memory_install_write64_handler(space, 0xa0000, 0xbffff, 0, 0, SMH_BANK(1) );
640640         }
641641         break;
642642
r4679r4680
11241124      vga.svga_intf.crtc_regcount = 0x19;
11251125   }
11261126
1127   vga.memory         = (UINT8 *) auto_malloc(vga.svga_intf.vram_size);
1128   vga.fontdirty      = (UINT8 *) auto_malloc(0x800);
1129   vga.sequencer.data   = (UINT8 *) auto_malloc(vga.svga_intf.seq_regcount);
1130   vga.crtc.data      = (UINT8 *) auto_malloc(vga.svga_intf.crtc_regcount);
1131   vga.gc.data         = (UINT8 *) auto_malloc(vga.svga_intf.gc_regcount);
1127   vga.memory         = auto_alloc_array(machine, UINT8, vga.svga_intf.vram_size);
1128   vga.fontdirty      = auto_alloc_array(machine, UINT8, 0x800);
1129   vga.sequencer.data   = auto_alloc_array(machine, UINT8, vga.svga_intf.seq_regcount);
1130   vga.crtc.data      = auto_alloc_array(machine, UINT8, vga.svga_intf.crtc_regcount);
1131   vga.gc.data         = auto_alloc_array(machine, UINT8, vga.svga_intf.gc_regcount);
11321132   memset(vga.memory, '\0', vga.svga_intf.vram_size);
11331133   memset(vga.fontdirty, '\0', 0x800);
11341134   memset(vga.sequencer.data, '\0', vga.svga_intf.seq_regcount);
src/mess/video/tmc600.c
r4679r4680
129129
130130   /* allocate memory */
131131
132   state->page_ram = auto_malloc(TMC600_PAGE_RAM_SIZE);
133   state->color_ram = auto_malloc(TMC600_PAGE_RAM_SIZE);
132   state->page_ram = auto_alloc_array(machine, UINT8, TMC600_PAGE_RAM_SIZE);
133   state->color_ram = auto_alloc_array(machine, UINT8, TMC600_PAGE_RAM_SIZE);
134134
135135   /* find devices */
136136
src/mess/video/advision.c
r4679r4680
2222   advision_state *state = machine->driver_data;
2323
2424    state->video_hpos = 0;
25   state->display = auto_malloc(8 * 8 * 256);
25   state->display = auto_alloc_array(machine, UINT8, 8 * 8 * 256);
2626   memset(state->display, 0, 8 * 8 * 256);
2727}
2828
src/mess/video/abc800.c
r4679r4680
203203   
204204   /* allocate memory */
205205
206   state->charram = auto_malloc(ABC800M_CHAR_RAM_SIZE);
206   state->charram = auto_alloc_array(machine, UINT8, ABC800M_CHAR_RAM_SIZE);
207207
208208   /* find devices */
209209
r4679r4680
229229   
230230   /* allocate memory */
231231
232   state->charram = auto_malloc(ABC800C_CHAR_RAM_SIZE);
232   state->charram = auto_alloc_array(machine, UINT8, ABC800C_CHAR_RAM_SIZE);
233233
234234   /* find memory regions */
235235
src/mess/video/aim65.c
r4679r4680
131131
132132   /*
133133    videoram_size = 600 * 10 * 2;
134    printerRAM = (UINT16*)auto_malloc (videoram_size );
134    printerRAM = auto_alloc_array(machine, UINT16, videoram_size / 2);
135135    memset(printerRAM, 0, videoram_size);
136136    printer_x = 0;
137137    printer_y = 0;
src/mess/video/arcadia.c
r4679r4680
350350      const device_config *screen = video_screen_first(machine->config);
351351      int width = video_screen_get_width(screen);
352352      int height = video_screen_get_height(screen);
353      arcadia_video.bitmap = auto_bitmap_alloc(width, height, BITMAP_FORMAT_INDEXED16);
353      arcadia_video.bitmap = auto_bitmap_alloc(machine, width, height, BITMAP_FORMAT_INDEXED16);
354354   }
355355}
356356
src/mess/video/m6847.c
r4679r4680
18241824   v = &variants[cfg->type];
18251825
18261826   /* allocate instance */
1827   m6847 = auto_malloc(sizeof(*m6847));
1828   memset(m6847, 0, sizeof(*m6847));
1827   m6847 = auto_alloc_clear(machine, m6847_vdg);
18291828   set_dirty();
18301829
18311830   /* copy configuration */
src/mess/video/cgenie.c
r4679r4680
3434
3535   VIDEO_START_CALL(generic_bitmapped);
3636
37    dlybitmap = auto_bitmap_alloc(width, height, BITMAP_FORMAT_INDEXED16);
37    dlybitmap = auto_bitmap_alloc(machine, width, height, BITMAP_FORMAT_INDEXED16);
3838}
3939
4040/***************************************************************************
src/mess/video/x68k.c
r4679r4680
10441044{
10451045   int gfx_index;
10461046
1047   x68k_text_bitmap = auto_bitmap_alloc(1024,1024,BITMAP_FORMAT_INDEXED16);
1048   x68k_gfx_big_bitmap = auto_bitmap_alloc(1024,1024,BITMAP_FORMAT_INDEXED16);
1049   x68k_gfx_0_bitmap_16 = auto_bitmap_alloc(512,512,BITMAP_FORMAT_INDEXED16);
1050   x68k_gfx_1_bitmap_16 = auto_bitmap_alloc(512,512,BITMAP_FORMAT_INDEXED16);
1051   x68k_gfx_2_bitmap_16 = auto_bitmap_alloc(512,512,BITMAP_FORMAT_INDEXED16);
1052   x68k_gfx_3_bitmap_16 = auto_bitmap_alloc(512,512,BITMAP_FORMAT_INDEXED16);
1053   x68k_gfx_0_bitmap_256 = auto_bitmap_alloc(512,512,BITMAP_FORMAT_INDEXED16);
1054   x68k_gfx_1_bitmap_256 = auto_bitmap_alloc(512,512,BITMAP_FORMAT_INDEXED16);
1055   x68k_gfx_0_bitmap_65536 = auto_bitmap_alloc(512,512,BITMAP_FORMAT_INDEXED16);
1047   x68k_text_bitmap = auto_bitmap_alloc(machine, 1024,1024,BITMAP_FORMAT_INDEXED16);
1048   x68k_gfx_big_bitmap = auto_bitmap_alloc(machine, 1024,1024,BITMAP_FORMAT_INDEXED16);
1049   x68k_gfx_0_bitmap_16 = auto_bitmap_alloc(machine, 512,512,BITMAP_FORMAT_INDEXED16);
1050   x68k_gfx_1_bitmap_16 = auto_bitmap_alloc(machine, 512,512,BITMAP_FORMAT_INDEXED16);
1051   x68k_gfx_2_bitmap_16 = auto_bitmap_alloc(machine, 512,512,BITMAP_FORMAT_INDEXED16);
1052   x68k_gfx_3_bitmap_16 = auto_bitmap_alloc(machine, 512,512,BITMAP_FORMAT_INDEXED16);
1053   x68k_gfx_0_bitmap_256 = auto_bitmap_alloc(machine, 512,512,BITMAP_FORMAT_INDEXED16);
1054   x68k_gfx_1_bitmap_256 = auto_bitmap_alloc(machine, 512,512,BITMAP_FORMAT_INDEXED16);
1055   x68k_gfx_0_bitmap_65536 = auto_bitmap_alloc(machine, 512,512,BITMAP_FORMAT_INDEXED16);
10561056
10571057   for (gfx_index = 0; gfx_index < MAX_GFX_ELEMENTS; gfx_index++)
10581058      if (machine->gfx[gfx_index] == 0)
src/mess/video/spectrum.c
r4679r4680
3232   spectrum_frame_number = 0;
3333   spectrum_flash_invert = 0;
3434   
35   EventList_Initialise(30000);
35   EventList_Initialise(machine, 30000);
3636
3737   retrace_cycles = SPEC_RETRACE_CYCLES;
3838   
r4679r4680
4444   spectrum_frame_number = 0;
4545   spectrum_flash_invert = 0;
4646
47   EventList_Initialise(30000);
47   EventList_Initialise(machine, 30000);
4848   
4949   retrace_cycles = SPEC128_RETRACE_CYCLES;
5050}
src/mess/video/tx0.c
r4679r4680
4242VIDEO_START( tx0 )
4343{
4444   /* alloc bitmaps for our private fun */
45   panel_bitmap = auto_bitmap_alloc(panel_window_width, panel_window_height, BITMAP_FORMAT_INDEXED16);
46   typewriter_bitmap = auto_bitmap_alloc(typewriter_window_width, typewriter_window_height, BITMAP_FORMAT_INDEXED16);
45   panel_bitmap = auto_bitmap_alloc(machine, panel_window_width, panel_window_height, BITMAP_FORMAT_INDEXED16);
46   typewriter_bitmap = auto_bitmap_alloc(machine, typewriter_window_width, typewriter_window_height, BITMAP_FORMAT_INDEXED16);
4747
4848   /* set up out bitmaps */
4949   tx0_draw_panel_backdrop(machine, panel_bitmap);
r4679r4680
5151   bitmap_fill(typewriter_bitmap, &typewriter_bitmap_bounds, pen_typewriter_bg);
5252
5353   /* initialize CRT */
54   video_start_crt(pen_crt_num_levels, crt_window_offset_x, crt_window_offset_y, crt_window_width, crt_window_height);
54   video_start_crt(machine, pen_crt_num_levels, crt_window_offset_x, crt_window_offset_y, crt_window_width, crt_window_height);
5555}
5656
5757
src/mess/video/crtc6845.c
r4679r4680
108108   struct mscrtc6845 *crtc;
109109   int idx;
110110
111   crtc = auto_malloc(sizeof(struct mscrtc6845));
112   memset(crtc, 0, sizeof(*crtc));
111   crtc = auto_alloc_clear(machine, struct mscrtc6845);
113112   crtc->cursor_time = attotime_to_double(timer_get_time(machine));
114113   crtc->config = *config;
115114   mscrtc6845 = crtc;
src/mess/video/pc8801.c
r4679r4680
100100   int width = video_screen_get_width(screen);
101101   int height = video_screen_get_height(screen);
102102
103   wbm1 = auto_bitmap_alloc(width, height, BITMAP_FORMAT_INDEXED16);
104   wbm2 = auto_bitmap_alloc(width, height, BITMAP_FORMAT_INDEXED16);
103   wbm1 = auto_bitmap_alloc(machine, width, height, BITMAP_FORMAT_INDEXED16);
104   wbm2 = auto_bitmap_alloc(machine, width, height, BITMAP_FORMAT_INDEXED16);
105105   pc8801_is_24KHz=hireso;
106106   crtcON=0;
107107   textON=1;
r4679r4680
112112   dmac_addr[2]=dmac_size[2]=0;
113113   dmac_flag=dmac_status=0;
114114
115   gVRAM = (UINT8*) auto_malloc(0xc000);
116   pc88sr_textRAM = (UINT8*) auto_malloc(0x1000);
117   attr_tmp = auto_malloc(sizeof(unsigned short)*80*25);
118   attr_old = auto_malloc(sizeof(unsigned short)*80*100);
119   text_old = auto_malloc(sizeof(unsigned short)*80*100);
120   graph_dirty = auto_malloc(80*100);
115   gVRAM = auto_alloc_array(machine, UINT8, 0xc000);
116   pc88sr_textRAM = auto_alloc_array(machine, UINT8, 0x1000);
117   attr_tmp = auto_alloc_array(machine, UINT16, 80*25);
118   attr_old = auto_alloc_array(machine, UINT16, 80*100);
119   text_old = auto_alloc_array(machine, UINT16, 80*100);
120   graph_dirty = auto_alloc_array(machine, char, 80*100);
121121
122122   memset(gVRAM,0,0xc000);
123123   memset(pc88sr_textRAM,0,0x1000);
r4679r4680
279279    switch(selected_vram) {
280280#define XXX(n) \
281281    case (n+1): \
282      rh5 = SMH_BANK5; \
283      rh6 = SMH_BANK6; \
282      rh5 = SMH_BANK(5); \
283      rh6 = SMH_BANK(6); \
284284      wh5 = write_gvram##n##_bank5; \
285285      wh6 = write_gvram##n##_bank6; \
286286      memory_set_bankptr(machine, 5, gVRAM + 0x4000*n ); \
src/mess/video/mekd2.c
r4679r4680
4646VIDEO_START( mekd2 )
4747{
4848    videoram_size = 6 * 2 + 24;
49    videoram = (UINT8*)auto_malloc (videoram_size);
49    videoram = auto_alloc_array(machine, UINT8, videoram_size);
5050}
5151
5252
src/mess/video/channelf.c
r4679r4680
4242VIDEO_START( channelf )
4343{
4444   videoram_size = 0x2000;
45   videoram = auto_malloc(videoram_size);
45   videoram = auto_alloc_array(machine, UINT8, videoram_size);
4646}
4747
4848static int recalc_palette_offset(int reg1, int reg2)
src/mess/video/pc_mda.c
r4679r4680
105105   switch(buswidth)
106106   {
107107      case 8:
108         memory_install_read8_handler(space, 0xb0000, 0xb0fff, 0, 0x07000, SMH_BANK11 );
108         memory_install_read8_handler(space, 0xb0000, 0xb0fff, 0, 0x07000, SMH_BANK(11) );
109109         memory_install_write8_handler(space, 0xb0000, 0xb0fff, 0, 0x07000, pc_video_videoram_w );
110110         memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x3b0, 0x3bf, 0, 0, pc_MDA_r );
111111         memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x3b0, 0x3bf, 0, 0, pc_MDA_w );
r4679r4680
121121   mda.chr_gen = memory_region( machine, "gfx1" );
122122
123123   videoram_size = 0x1000;   /* This is actually 0x1000 in reality */
124   videoram = auto_malloc(videoram_size);
124   videoram = auto_alloc_array(machine, UINT8, videoram_size);
125125   memory_set_bankptr(machine,11, videoram);
126126}
127127
r4679r4680
455455   switch(buswidth)
456456   {
457457   case 8:
458      memory_install_read8_handler(space, 0xb0000, 0xbffff, 0, 0, SMH_BANK11 );
458      memory_install_read8_handler(space, 0xb0000, 0xbffff, 0, 0, SMH_BANK(11) );
459459      memory_install_write8_handler(space, 0xb0000, 0xbffff, 0, 0, pc_video_videoram_w );
460460      memory_install_read8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x3b0, 0x3bf, 0, 0, pc_hercules_r );
461461      memory_install_write8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_IO), 0x3b0, 0x3bf, 0, 0, pc_hercules_w );
r4679r4680
471471   mda.chr_gen = memory_region( machine, "gfx1" );
472472
473473   videoram_size = 0x10000;
474   videoram = auto_malloc(videoram_size);
474   videoram = auto_alloc_array(machine, UINT8, videoram_size);
475475   memory_set_bankptr(machine,11, videoram);
476476}
477477
src/mess/video/vdc8563.c
r4679r4680
207207
208208VIDEO_START( vdc8563 )
209209{
210   vdc.ram=(UINT8*) auto_malloc(0x20000);
211   vdc.dirty=vdc.ram+0x10000;
210   vdc.ram = auto_alloc_array(machine, UINT8, 0x20000);
211   vdc.dirty = vdc.ram + 0x10000;
212212}
213213
214214#define CHAR_WIDTH (((vdc.reg[0x16]&0xf0)>>4)+1)
src/mess/video/coco3.c
r4679r4680
802802   const UINT8 *rom;
803803
804804   /* allocate video */
805   video = auto_malloc(sizeof(*video));
806   memset(video, 0, sizeof(*video));
805   video = auto_alloc_clear(machine, coco3_video);
807806   coco3_set_dirty();
808807
809808   /* initialize palette */
src/mess/video/pc_cga.c
r4679r4680
307307
308308   The correct value for hue will usually be a multiple of 128.
309309*/
310static void ntsc_decoder_init(struct ntsc_decoder *ntsc, int period, int hue)
310static void ntsc_decoder_init(running_machine *machine, struct ntsc_decoder *ntsc, int period, int hue)
311311{
312312   int j;
313313
314314   ntsc->period = period;
315   ntsc->I_filter = auto_malloc(period * sizeof(int));
316   ntsc->Q_filter = auto_malloc(period * sizeof(int));
317   ntsc->Y_buffer = auto_malloc(period * sizeof(int));
318   ntsc->I_buffer = auto_malloc(period * sizeof(int));
319   ntsc->Q_buffer = auto_malloc(period * sizeof(int));
315   ntsc->I_filter = auto_alloc_array(machine, int, period);
316   ntsc->Q_filter = auto_alloc_array(machine, int, period);
317   ntsc->Y_buffer = auto_alloc_array(machine, int, period);
318   ntsc->I_buffer = auto_alloc_array(machine, int, period);
319   ntsc->Q_buffer = auto_alloc_array(machine, int, period);
320320   ntsc_clear(ntsc);
321321   for (j=0;j<period;++j)
322322   {
r4679r4680
476476   switch(buswidth)
477477   {
478478      case 8:
479         memory_install_read8_handler(space, 0xb8000, 0xbbfff, 0, 0x04000, SMH_BANK11 );
479         memory_install_read8_handler(space, 0xb8000, 0xbbfff, 0, 0x04000, SMH_BANK(11) );
480480         memory_install_write8_handler(space, 0xb8000, 0xbbfff, 0, 0x04000, pc_video_videoram_w );
481481         memory_install_read8_handler(spaceio, 0x3d0, 0x3df, 0, 0, pc_cga8_r );
482482         memory_install_write8_handler(spaceio, 0x3d0, 0x3df, 0, 0, pc_cga8_w );
483483         break;
484484
485485      case 16:
486         memory_install_read16_handler(space, 0xb8000, 0xbbfff, 0, 0x04000, SMH_BANK11 );
486         memory_install_read16_handler(space, 0xb8000, 0xbbfff, 0, 0x04000, SMH_BANK(11) );
487487         memory_install_write16_handler(space, 0xb8000, 0xbbfff, 0, 0x04000, pc_video_videoram16le_w );
488488         memory_install_read16_handler(spaceio, 0x3d0, 0x3df, 0, 0, pc_cga16le_r );
489489         memory_install_write16_handler(spaceio, 0x3d0, 0x3df, 0, 0, pc_cga16le_w );
490490         break;
491491
492492      case 32:
493         memory_install_read32_handler(space, 0xb8000, 0xbbfff, 0, 0x04000, SMH_BANK11 );
493         memory_install_read32_handler(space, 0xb8000, 0xbbfff, 0, 0x04000, SMH_BANK(11) );
494494         memory_install_write32_handler(space, 0xb8000, 0xbbfff, 0, 0x04000, pc_video_videoram32_w );
495495         memory_install_read32_handler(spaceio, 0x3d0, 0x3df, 0, 0, pc_cga32le_r );
496496         memory_install_write32_handler(spaceio, 0x3d0, 0x3df, 0, 0, pc_cga32le_w );
r4679r4680
503503
504504   videoram_size = 0x4000;
505505
506   videoram = auto_malloc(videoram_size);
506   videoram = auto_alloc_array(machine, UINT8, videoram_size);
507507
508508   memory_set_bankptr(machine,11, videoram);
509509
510510   internal_pc_cga_video_start(machine, M6845_PERSONALITY_GENUINE);
511511
512   ntsc_decoder_init( &ntsc, 8, 256 );
512   ntsc_decoder_init( machine, &ntsc, 8, 256 );
513513}
514514
515515
r4679r4680
16371637static VIDEO_START( pc1512 )
16381638{
16391639   videoram_size = 0x10000;
1640   videoram = auto_malloc( videoram_size );
1640   videoram = auto_alloc_array(machine, UINT8, videoram_size );
16411641   memory_set_bankptr(machine,1,videoram + videoram_offset[0]);
16421642
16431643   memset( &pc1512, 0, sizeof ( pc1512 ) );
src/mess/video/microtan.c
r4679r4680
4444   bg_tilemap = tilemap_create(machine, get_bg_tile_info, tilemap_scan_rows,
4545      8, 16, 32, 16);
4646
47   microtan_chunky_buffer = auto_malloc(videoram_size);
47   microtan_chunky_buffer = auto_alloc_array(machine, UINT8, videoram_size);
4848   memset(microtan_chunky_buffer, 0, videoram_size);
4949   microtan_chunky_graphics = 0;
5050}
src/mess/video/smsvdp.c
r4679r4680
223223   */
224224   smsvdp.VRAM = memory_region_alloc( machine, "gfx1", VRAM_SIZE, ROM_REQUIRED );
225225   smsvdp.CRAM = memory_region_alloc( machine, "gfx2", MAX_CRAM_SIZE, ROM_REQUIRED );
226   smsvdp.line_buffer = auto_malloc( 256 * 5 * sizeof(int) );
226   smsvdp.line_buffer = auto_alloc_array(machine, int, 256 * 5);
227227   memset( smsvdp.line_buffer, 0, 256 * 5 * sizeof(int) );
228228
229229   /* Clear RAM */
r4679r4680
235235
236236   smsvdp.cram_mask = ( IS_GAMEGEAR_VDP && ! smsvdp.gg_sms_mode ) ? ( GG_CRAM_SIZE - 1 ) : ( SMS_CRAM_SIZE - 1 );
237237
238   smsvdp.collision_buffer = auto_malloc(SMS_X_PIXELS);
238   smsvdp.collision_buffer = auto_alloc_array(machine, UINT8, SMS_X_PIXELS);
239239
240240   /* Make temp bitmap for rendering */
241   tmpbitmap = auto_bitmap_alloc(width, height, BITMAP_FORMAT_INDEXED32);
241   tmpbitmap = auto_bitmap_alloc(machine, width, height, BITMAP_FORMAT_INDEXED32);
242242
243   smsvdp.prev_bitmap = auto_bitmap_alloc(width, height, BITMAP_FORMAT_INDEXED32);
243   smsvdp.prev_bitmap = auto_bitmap_alloc(machine, width, height, BITMAP_FORMAT_INDEXED32);
244244
245245   set_display_settings( machine );
246246
src/mess/video/pc_ega.c
r4679r4680
616616   switch(buswidth)
617617   {
618618      case 8:
619         memory_install_read8_handler(space, 0xa0000, 0xaffff, 0, 0, SMH_BANK11 );
620         memory_install_read8_handler(space, 0xb0000, 0xb7fff, 0, 0, SMH_BANK12 );
621         memory_install_read8_handler(space, 0xb8000, 0xbffff, 0, 0, SMH_BANK13 );
619         memory_install_read8_handler(space, 0xa0000, 0xaffff, 0, 0, SMH_BANK(11) );
620         memory_install_read8_handler(space, 0xb0000, 0xb7fff, 0, 0, SMH_BANK(12) );
621         memory_install_read8_handler(space, 0xb8000, 0xbffff, 0, 0, SMH_BANK(13) );
622622         memory_install_write8_handler(space, 0xa0000, 0xbffff, 0, 0, pc_ega_videoram_w );
623623         memory_install_read8_handler(spaceio, 0x3b0, 0x3bb, 0, 0, pc_ega8_3b0_r );
624624         memory_install_write8_handler(spaceio, 0x3b0, 0x3bb, 0, 0, pc_ega8_3b0_w );
r4679r4680
629629         break;
630630
631631      case 16:
632         memory_install_read16_handler(space, 0xa0000, 0xaffff, 0, 0, SMH_BANK11 );
633         memory_install_read16_handler(space, 0xb0000, 0xb7fff, 0, 0, SMH_BANK12 );
634         memory_install_read16_handler(space, 0xb8000, 0xbffff, 0, 0, SMH_BANK13 );
632         memory_install_read16_handler(space, 0xa0000, 0xaffff, 0, 0, SMH_BANK(11) );
633         memory_install_read16_handler(space, 0xb0000, 0xb7fff, 0, 0, SMH_BANK(12) );
634         memory_install_read16_handler(space, 0xb8000, 0xbffff, 0, 0, SMH_BANK(13) );
635635         memory_install_write16_handler(space, 0xa0000, 0xbffff, 0, 0, pc_ega_videoram16le_w );
636636         memory_install_read16_handler(spaceio, 0x3b0, 0x3bb, 0, 0, pc_ega16le_3b0_r );
637637         memory_install_write16_handler(spaceio, 0x3b0, 0x3bb, 0, 0, pc_ega16le_3b0_w );
r4679r4680
642642         break;
643643
644644      case 32:
645         memory_install_read32_handler(space, 0xa0000, 0xaffff, 0, 0, SMH_BANK11 );
646         memory_install_read32_handler(space, 0xb0000, 0xb7fff, 0, 0, SMH_BANK12 );
647         memory_install_read32_handler(space, 0xb8000, 0xbffff, 0, 0, SMH_BANK13 );
645         memory_install_read32_handler(space, 0xa0000, 0xaffff, 0, 0, SMH_BANK(11) );
646         memory_install_read32_handler(space, 0xb0000, 0xb7fff, 0, 0, SMH_BANK(12) );
647         memory_install_read32_handler(space, 0xb8000, 0xbffff, 0, 0, SMH_BANK(13) );
648648         memory_install_write32_handler(space, 0xa0000, 0xbffff, 0, 0, pc_ega_videoram32le_w );
649649         memory_install_read32_handler(spaceio, 0x3b0, 0x3bb, 0, 0, pc_ega32le_3b0_r );
650650         memory_install_write32_handler(spaceio, 0x3b0, 0x3bb, 0, 0, pc_ega32le_3b0_w );
src/mess/video/special.c
r4679r4680
8989
9090VIDEO_START( specimx )
9191{   
92   specimx_colorram = auto_malloc (0x3000);
92   specimx_colorram = auto_alloc_array(machine, UINT8, 0x3000);
9393   memset(specimx_colorram,0x70,0x3000);
9494}
9595
src/mess/video/cdp1864.c
r4679r4680
430430   assert(cdp1864->screen != NULL);
431431
432432   /* allocate the temporary bitmap */
433   cdp1864->bitmap = auto_bitmap_alloc(video_screen_get_width(cdp1864->screen), video_screen_get_height(cdp1864->screen), video_screen_get_format(cdp1864->screen));
433   cdp1864->bitmap = auto_bitmap_alloc(device->machine, video_screen_get_width(cdp1864->screen), video_screen_get_height(cdp1864->screen), video_screen_get_format(cdp1864->screen));
434434   bitmap_fill(cdp1864->bitmap, 0, CDP1864_BACKGROUND_COLOR_SEQUENCE[cdp1864->bgcolor] + 8);
435435
436436   /* initialize the palette */
src/mess/video/ssystem3.c
r4679r4680
5454{
5555   // artwork seams to need this
5656    videoram_size = 6 * 2 + 24;
57    videoram = (UINT8*) auto_malloc (videoram_size);
57    videoram = auto_alloc_array(machine, UINT8, videoram_size);
5858}
5959
6060
src/mess/video/avigo.c
r4679r4680
115115   avigo_screen_column = 0;
116116
117117   /* allocate video memory */
118   avigo_video_memory = auto_malloc(((AVIGO_SCREEN_WIDTH>>3)*AVIGO_SCREEN_HEIGHT));
118   avigo_video_memory = auto_alloc_array(machine, UINT8, ((AVIGO_SCREEN_WIDTH>>3)*AVIGO_SCREEN_HEIGHT));
119119   machine->gfx[0] = stylus_pointer = gfx_element_alloc(machine, &pointerlayout, pointermask, machine->config->total_colors / 16, 0);
120120
121121   stylus_pointer->total_colors = 3;
src/mess/video/vic6567.c
r4679r4680
715715   int width = video_screen_get_width(screen);
716716   int height = video_screen_get_height(screen);
717717
718   vic2.bitmap = auto_bitmap_alloc(width, height, BITMAP_FORMAT_INDEXED16);
718   vic2.bitmap = auto_bitmap_alloc(machine, width, height, BITMAP_FORMAT_INDEXED16);
719719
720720   if (vic2.vic3) {
721      vic2.screen[0] = (UINT8*)auto_malloc (sizeof (UINT8) * 216 * 656 / 8);
721      vic2.screen[0] = auto_alloc_array(machine, UINT8, 216 * 656 / 8);
722722
723723      for (i = 1; i < 216; i++)
724724         vic2.screen[i] = vic2.screen[i - 1] + 656 / 8;
725725   } else {
726      vic2.screen[0] = (UINT8*)auto_malloc (sizeof (UINT8) * 216 * 336 / 8);
726      vic2.screen[0] = auto_alloc_array(machine, UINT8, 216 * 336 / 8);
727727
728728      for (i = 1; i < 216; i++)
729729         vic2.screen[i] = vic2.screen[i - 1] + 336 / 8;
src/mess/video/comx35.c
r4679r4680
103103
104104   // allocate memory
105105
106   state->pageram = auto_malloc(COMX35_PAGERAM_SIZE);
107   state->charram = auto_malloc(COMX35_CHARRAM_SIZE);
108   state->videoram = auto_malloc(COMX35_VIDEORAM_SIZE);
106   state->pageram = auto_alloc_array(machine, UINT8, COMX35_PAGERAM_SIZE);
107   state->charram = auto_alloc_array(machine, UINT8, COMX35_CHARRAM_SIZE);
108   state->videoram = auto_alloc_array(machine, UINT8, COMX35_VIDEORAM_SIZE);
109109
110110   // register for save state
111111
src/mess/video/abc802.c
r4679r4680
219219   
220220   /* allocate memory */
221221
222   state->charram = auto_malloc(ABC802_CHAR_RAM_SIZE);
222   state->charram = auto_alloc_array(machine, UINT8, ABC802_CHAR_RAM_SIZE);
223223
224224   /* find devices */
225225
src/mess/video/odyssey2.c
r4679r4680
614614   control_status = 0;
615615   iff = 0;
616616
617   tmp_bitmap = auto_bitmap_alloc( width, height, video_screen_get_format(screen) );
617   tmp_bitmap = auto_bitmap_alloc( machine, width, height, video_screen_get_format(screen) );
618618
619619   i824x_line_timer = timer_alloc(machine,  i824x_scanline_callback, NULL );
620620   timer_adjust_periodic( i824x_line_timer, video_screen_get_time_until_pos(machine->primary_screen, 1, I824X_START_ACTIVE_SCAN ), 0, video_screen_get_scan_period( machine->primary_screen ) );
src/mess/video/apple2.c
r4679r4680
382382   a2_videoram = vram;
383383
384384   /* 2^3 dependent pixels * 2 color sets * 2 offsets */
385   hires_artifact_map = auto_malloc(sizeof(UINT16) * 8 * 2 * 2);
385   hires_artifact_map = auto_alloc_array(machine, UINT16, 8 * 2 * 2);
386386
387387   /* 2^4 dependent pixels */
388   dhires_artifact_map = auto_malloc(sizeof(UINT16) * 16);
388   dhires_artifact_map = auto_alloc_array(machine, UINT16, 16);
389389
390390   /* build hires artifact map */
391391   for (i = 0; i < 8; i++)
src/mess/video/abc806.c
r4679r4680
450450
451451   /* allocate memory */
452452
453   state->charram = auto_malloc(ABC806_CHAR_RAM_SIZE);
454   state->colorram = auto_malloc(ABC806_ATTR_RAM_SIZE);
453   state->charram = auto_alloc_array(machine, UINT8, ABC806_CHAR_RAM_SIZE);
454   state->colorram = auto_alloc_array(machine, UINT8, ABC806_ATTR_RAM_SIZE);
455455
456456   /* register for state saving */
457457
src/mess/video/tms3556.c
r4679r4680
239239
240240   tms3556 core init (called at video init time)
241241*/
242void tms3556_init(int vram_size)
242void tms3556_init(running_machine *machine, int vram_size)
243243{
244244   memset(&vdp, 0, sizeof (vdp));
245245
246246   vdp.vram_size = vram_size;
247247
248248   /* allocate VRAM */
249   vdp.vram = auto_malloc(0x10000);
249   vdp.vram = auto_alloc_array(machine, UINT8, 0x10000);
250250   memset (vdp.vram, 0, 0x10000);
251251   if (vdp.vram_size < 0x10000)
252252   {
src/mess/video/crt.c
r4679r4680
6161
6262   video init
6363*/
64int video_start_crt(int num_levels, int offset_x, int offset_y, int width, int height)
64int video_start_crt(running_machine *machine, int num_levels, int offset_x, int offset_y, int width, int height)
6565{
6666   int i;
6767
r4679r4680
7272   window_height = height;
7373
7474   /* alloc the arrays */
75   list = auto_malloc(window_width * window_height * sizeof(point));
75   list = auto_alloc_array(machine, point, window_width * window_height);
7676
77   list_head = auto_malloc(window_height * sizeof(int));
77   list_head = auto_alloc_array(machine, int, window_height);
7878
7979   /* fill with black and set up list as empty */
8080   for (i=0; i<(window_width * window_height); i++)
src/mess/video/ti85.c
r4679r4680
145145      return;
146146   }
147147
148   ti85_frames = (UINT8 *) auto_malloc(ti_number_of_frames*ti_video_memory_size*sizeof (UINT8));
149   memset (ti85_frames, 0, sizeof(UINT8)*ti_number_of_frames*ti_video_memory_size);
148   ti85_frames = auto_alloc_array_clear(machine, UINT8, ti_number_of_frames*ti_video_memory_size);
150149}
151150
152151VIDEO_START( ti85 )
src/mess/video/tms3556.h
r4679r4680
77READ8_HANDLER(tms3556_reg_r);
88WRITE8_HANDLER(tms3556_reg_w);
99
10extern void tms3556_init(int vram_size);
10extern void tms3556_init(running_machine *machine, int vram_size);
1111extern void tms3556_reset(void);
1212extern void tms3556_interrupt(void);
1313
src/mess/video/ted7360.c
r4679r4680
956956   /* cursorelement->colortable = cursorcolortable; */
957957   cursorcolortable[1] = 1;
958958   cursorelement->total_colors = 2;
959   ted7360_bitmap = auto_bitmap_alloc(width, height, BITMAP_FORMAT_INDEXED16);
959   ted7360_bitmap = auto_bitmap_alloc(machine, width, height, BITMAP_FORMAT_INDEXED16);
960960}
961961
962962static void ted7360_draw_character (running_machine *machine, int ybegin, int yend, int ch, int yoff, int xoff,
src/mess/video/crt.h
r4679r4680
1212
1313/*----------- defined in video/crt.c -----------*/
1414
15int video_start_crt(int num_levels, int offset_x, int offset_y, int width, int height);
15int video_start_crt(running_machine *machine, int num_levels, int offset_x, int offset_y, int width, int height);
1616void crt_plot(int x, int y);
1717VIDEO_EOF( crt );
1818VIDEO_UPDATE( crt );
src/mess/video/hd66421.c
r4679r4680
126126{
127127   _logerror( 0, ("video_start_hd66421\n"));
128128   memset( &lcd, 0, sizeof( lcd));
129   lcd.ram = auto_malloc( HD66421_RAM_SIZE);
129   lcd.ram = auto_alloc_array(machine, UINT8, HD66421_RAM_SIZE);
130130   hd66421_state_save(machine);
131131}
132132
src/mess/video/pecom.c
r4679r4680
101101
102102   /* allocate memory */
103103
104   state->page_ram = auto_malloc(PECOM_PAGE_RAM_SIZE);
105   state->charram = auto_malloc(0x800);
104   state->page_ram = auto_alloc_array(machine, UINT8, PECOM_PAGE_RAM_SIZE);
105   state->charram = auto_alloc_array(machine, UINT8, 0x800);
106106
107107   /* find devices */
108108
src/mess/video/vc4000.c
r4679r4680
101101      if ((i&0x18)==0x18) background_collision[i]|=0x10;
102102   }
103103
104   vc4000_video.bitmap = auto_bitmap_alloc(width, height, BITMAP_FORMAT_INDEXED16);
104   vc4000_video.bitmap = auto_bitmap_alloc(machine, width, height, BITMAP_FORMAT_INDEXED16);
105105}
106106
107107#define STICKCENTRE   (105)
src/mess/video/733_asr.c
r4679r4680
174174   int height = video_screen_get_height(screen);
175175   const rectangle *visarea = video_screen_get_visible_area(screen);
176176
177   asr[unit].bitmap = auto_bitmap_alloc(width, height, BITMAP_FORMAT_INDEXED16);
177   asr[unit].bitmap = auto_bitmap_alloc(machine, width, height, BITMAP_FORMAT_INDEXED16);
178178
179179   bitmap_fill(asr[unit].bitmap, visarea, 0);
180180
src/mess/video/cdp1861.c
r4679r4680
255255   assert(cdp1861->screen != NULL);
256256
257257   /* allocate the temporary bitmap */
258   cdp1861->bitmap = auto_bitmap_alloc(video_screen_get_width(cdp1861->screen), video_screen_get_height(cdp1861->screen), video_screen_get_format(cdp1861->screen));
258   cdp1861->bitmap = auto_bitmap_alloc(device->machine, video_screen_get_width(cdp1861->screen), video_screen_get_height(cdp1861->screen), video_screen_get_format(cdp1861->screen));
259259
260260   /* create the timers */
261261   cdp1861->int_timer = timer_alloc(device->machine, cdp1861_int_tick, (void *)device);
src/mess/video/k1ge.c
r4679r4680
833833   k1ge->hblank_on_timer = timer_alloc( device->machine, k1ge_hblank_on_timer_callback, (void *) device );
834834   k1ge->screen = devtag_get_device( device->machine, k1ge->intf->screen_tag );
835835   k1ge->vram = memory_region( device->machine, k1ge->intf->vram_tag );
836   k1ge->bitmap = auto_bitmap_alloc( video_screen_get_width(k1ge->screen), video_screen_get_height(k1ge->screen), video_screen_get_format(k1ge->screen) );
836   k1ge->bitmap = auto_bitmap_alloc( device->machine, video_screen_get_width(k1ge->screen), video_screen_get_height(k1ge->screen), video_screen_get_format(k1ge->screen) );
837837   k1ge->draw = k1ge_draw;
838838}
839839
src/mess/video/kc.c
r4679r4680
577577}
578578#endif
579579
580static void kc85_common_vh_start(void)
580static void kc85_common_vh_start(running_machine *machine)
581581{
582582   kc85_blink_state = 0;
583   EventList_Initialise(30000);
583   EventList_Initialise(machine, 30000);
584584}
585585
586586static unsigned char *kc85_4_display_video_ram;
r4679r4680
589589
590590VIDEO_START( kc85_4 )
591591{
592   kc85_common_vh_start();
592   kc85_common_vh_start(machine);
593593
594    kc85_4_video_ram = auto_malloc(
594    kc85_4_video_ram = auto_alloc_array(machine, UINT8,
595595        (KC85_4_SCREEN_COLOUR_RAM_SIZE*2) +
596596        (KC85_4_SCREEN_PIXEL_RAM_SIZE*2));
597597
r4679r4680
694694
695695VIDEO_START( kc85_3 )
696696{
697   kc85_common_vh_start();
697   kc85_common_vh_start(machine);
698698}
699699
700700
src/mess/includes/msx_slot.h
r4679r4680
149149   int slot_type;
150150   int mem_type;
151151   char name[32];
152   int (*init)(slot_state*, int page, UINT8 *mem, int size);
152   int (*init)(running_machine *machine, slot_state*, int page, UINT8 *mem, int size);
153153   void (*reset)(running_machine *machine, slot_state*);
154154   void (*map)(running_machine *machine, slot_state*, int page);
155155   void (*write)(running_machine *machine, slot_state*, UINT16, UINT8);
r4679r4680
215215};
216216
217217#define MSX_SLOT_INIT(nm)          static int \
218   slot_##nm##_init (slot_state *state, int page, UINT8 *mem, int size)
218   slot_##nm##_init (running_machine *machine, slot_state *state, int page, UINT8 *mem, int size)
219219#define MSX_SLOT_MAP(nm)         \
220220   static void slot_##nm##_map (running_machine *machine, slot_state *state, int page)
221221#define MSX_SLOT_WRITE(nm)         \
src/mess/messdriv.c
r4679r4680
100100   DRIVER( vsaturn )   /* JVC V-Saturn                              */
101101   DRIVER( hisaturn )   /* Hitachi HiSaturn                           */
102102
103   DRIVER( dcjp )      /* 1998 Sega Dreamcast (Japan) */
104   DRIVER( dc )      /* 1999 Sega Dreamcast (USA) */
105   DRIVER( dceu )      /* 1999 Sega Dreamcast (Europe) */
106   DRIVER( dcdev )      /* 1998 Sega HKT-0120 Sega Dreamcast Development Box */
103//0131u1   DRIVER( dcjp )      /* 1998 Sega Dreamcast (Japan) */
104//0131u1   DRIVER( dc )      /* 1999 Sega Dreamcast (USA) */
105//0131u1   DRIVER( dceu )      /* 1999 Sega Dreamcast (Europe) */
106//0131u1   DRIVER( dcdev )      /* 1998 Sega HKT-0120 Sega Dreamcast Development Box */
107107
108108   /* BALLY */
109109   DRIVER( astrocde )   /* Bally Astrocade                           */
r4679r4680
216216   DRIVER( z88 )      /*                                       */
217217
218218   /* AMSTRAD */
219   DRIVER( cpc464 )   /* Amstrad (Schneider in Germany) 1984            */
220   DRIVER( cpc664 )   /* Amstrad (Schneider in Germany) 1985            */
221   DRIVER( cpc6128 )   /* Amstrad (Schneider in Germany) 1985            */
222   DRIVER( cpc6128s )   /* Amstrad (Schneider in Germany) 1985            */
223   DRIVER( cpc6128f )   /* Amstrad (Schneider in Germany) 1985 (AZERTY)      */
224   DRIVER( cpc464p )   /* Amstrad CPC464  Plus - 1990                  */
225   DRIVER( cpc6128p )   /* Amstrad CPC6128 Plus - 1990                  */
226   DRIVER( gx4000 )   /* Amstrad GX4000 - 1990                     */
227   DRIVER( kccomp )   /* VEB KC compact                           */
228   DRIVER( al520ex )   /* Patisonic Aleste 520EX (1993)               */
229   DRIVER( pcw8256 )   /* 198? PCW8256                              */
230   DRIVER( pcw8512 )   /* 198? PCW8512                              */
231   DRIVER( pcw9256 )   /* 198? PCW9256                              */
232   DRIVER( pcw9512 )   /* 198? PCW9512 (+)                           */
233   DRIVER( pcw10 )    /* 198? PCW10                              */
234   DRIVER( pcw16 )      /* 1995 PCW16                              */
235   DRIVER( nc100 )      /* 1992 NC100                              */
236   DRIVER( nc200 )      /* 1993 NC200                              */
219//0131u1   DRIVER( cpc464 )   /* Amstrad (Schneider in Germany) 1984            */
220//0131u1   DRIVER( cpc664 )   /* Amstrad (Schneider in Germany) 1985            */
221//0131u1   DRIVER( cpc6128 )   /* Amstrad (Schneider in Germany) 1985            */
222//0131u1   DRIVER( cpc6128s )   /* Amstrad (Schneider in Germany) 1985            */
223//0131u1   DRIVER( cpc6128f )   /* Amstrad (Schneider in Germany) 1985 (AZERTY)      */
224//0131u1   DRIVER( cpc464p )   /* Amstrad CPC464  Plus - 1990                  */
225//0131u1   DRIVER( cpc6128p )   /* Amstrad CPC6128 Plus - 1990                  */
226//0131u1   DRIVER( gx4000 )   /* Amstrad GX4000 - 1990                     */
227//0131u1   DRIVER( kccomp )   /* VEB KC compact                           */
228//0131u1   DRIVER( al520ex )   /* Patisonic Aleste 520EX (1993)               */
229//0131u1   DRIVER( pcw8256 )   /* 198? PCW8256                              */
230//0131u1   DRIVER( pcw8512 )   /* 198? PCW8512                              */
231//0131u1   DRIVER( pcw9256 )   /* 198? PCW9256                              */
232//0131u1   DRIVER( pcw9512 )   /* 198? PCW9512 (+)                           */
233//0131u1   DRIVER( pcw10 )    /* 198? PCW10                              */
234//0131u1   DRIVER( pcw16 )      /* 1995 PCW16                              */
235//0131u1   DRIVER( nc100 )      /* 1992 NC100                              */
236//0131u1   DRIVER( nc200 )      /* 1993 NC200                              */
237237
238238   /* APPLE */
239   DRIVER( apple1 )   /* Jul 1976 Apple 1                           */
240   DRIVER( apple2 )   /* Apr 1977 Apple ][                        */
241   DRIVER( apple2p )   /* Jun 1979 Apple ][+                        */
242   DRIVER( apple2jp )   /* ??? ???? Apple ][j+                        */
243   DRIVER( apple2e )   /* Jan 1983 Apple //e                        */
244   DRIVER( apple2ee )   /* Mar 1985 Apple //e Enhanced                  */
245   DRIVER( apple2ep )   /* Jan 1987 Apple //e Platinum                  */
246   DRIVER( apple2c )   /* Apr 1984 Apple //c                        */
247   DRIVER( apple2c0 )   /* ??? 1985 Apple //c (3.5 ROM)                  */
248   DRIVER( apple2c3 )   /* Sep 1986 Apple //c (Original Mem. Exp.)         */
249   DRIVER( apple2c4 )   /* ??? 198? Apple //c (rev 4)                  */
250   DRIVER( apple2cp )   /* Sep 1988 Apple //c+                        */
251   DRIVER( apple2gsr0 )   /* Sep 1986 Apple IIgs ROM00               */
252   DRIVER( apple2gsr1 )   /* Sep 1987 Apple IIgs ROM01               */
253   DRIVER( apple2gs )   /* Aug 1989 Apple IIgs ROM03                  */
254   DRIVER( apple2gsr3p )   /* ??? 198? Apple IIgs ROM03 prototype         */
255   DRIVER( apple2gsr4p )   /* ??? 1989 Apple IIgs ROM04 prototype         */
256   DRIVER( apple3 )   /* May 1980 Apple ///                        */
239//0131u1   DRIVER( apple1 )   /* Jul 1976 Apple 1                           */
240//0131u1   DRIVER( apple2 )   /* Apr 1977 Apple ][                        */
241//0131u1   DRIVER( apple2p )   /* Jun 1979 Apple ][+                        */
242//0131u1   DRIVER( apple2jp )   /* ??? ???? Apple ][j+                        */
243//0131u1   DRIVER( apple2e )   /* Jan 1983 Apple //e                        */
244//0131u1   DRIVER( apple2ee )   /* Mar 1985 Apple //e Enhanced                  */
245//0131u1   DRIVER( apple2ep )   /* Jan 1987 Apple //e Platinum                  */
246//0131u1   DRIVER( apple2c )   /* Apr 1984 Apple //c                        */
247//0131u1   DRIVER( apple2c0 )   /* ??? 1985 Apple //c (3.5 ROM)                  */
248//0131u1   DRIVER( apple2c3 )   /* Sep 1986 Apple //c (Original Mem. Exp.)         */
249//0131u1   DRIVER( apple2c4 )   /* ??? 198? Apple //c (rev 4)                  */
250//0131u1   DRIVER( apple2cp )   /* Sep 1988 Apple //c+                        */
251//0131u1   DRIVER( apple2gsr0 )   /* Sep 1986 Apple IIgs ROM00               */
252//0131u1   DRIVER( apple2gsr1 )   /* Sep 1987 Apple IIgs ROM01               */
253//0131u1   DRIVER( apple2gs )   /* Aug 1989 Apple IIgs ROM03                  */
254//0131u1   DRIVER( apple2gsr3p )   /* ??? 198? Apple IIgs ROM03 prototype         */
255//0131u1   DRIVER( apple2gsr4p )   /* ??? 1989 Apple IIgs ROM04 prototype         */
256//0131u1   DRIVER( apple3 )   /* May 1980 Apple ///                        */
257257               /* Dec 1983 Apple ///+                        */
258   DRIVER( ace100 )   /* ??? 1982 Franklin Ace 100                  */
259   DRIVER( laser128 )   /* ??? 1987 Laser 128                        */
260   DRIVER( las128ex )   /* ??? 1987 Laser 128 EX                     */
261   DRIVER( las3000 )   /* ??? 1983 Laser 3000                        */
262   DRIVER( ivelultr )   /* Ivasim Ivel Ultra                        */
258//0131u1   DRIVER( ace100 )   /* ??? 1982 Franklin Ace 100                  */
259//0131u1   DRIVER( laser128 )   /* ??? 1987 Laser 128                        */
260//0131u1   DRIVER( las128ex )   /* ??? 1987 Laser 128 EX                     */
261//0131u1   DRIVER( las3000 )   /* ??? 1983 Laser 3000                        */
262//0131u1   DRIVER( ivelultr )   /* Ivasim Ivel Ultra                        */
263263
264264/*
265265 * Lisa              January          1983
266266 * Lisa 2              January          1984
267267 * Macintosh XL        January          1985
268268 */
269   DRIVER( lisa2 )      /* 1984 Apple Lisa 2                        */
270   DRIVER( lisa210 )   /* 1984 Apple Lisa 2/10                        */
271   DRIVER( macxl )      /* 1984 Apple Macintosh XL                     */
269//0131u1   DRIVER( lisa2 )      /* 1984 Apple Lisa 2                        */
270//0131u1   DRIVER( lisa210 )   /* 1984 Apple Lisa 2/10                        */
271//0131u1   DRIVER( macxl )      /* 1984 Apple Macintosh XL                     */
272272/*
273273 * Macintosh         January            1984
274274 * Macintosh 512k      July?            1984
r4679r4680
277277 * Macintosh SE         March            1987
278278 * Macintosh II         March            1987
279279 */
280    DRIVER( mac128k )   /* 1984 Apple Macintosh                        */
281   DRIVER( mac512k )   /* 1985 Apple Macintosh 512k                  */
282   DRIVER( mac512ke )   /* 1986 Apple Macintosh 512ke                  */
283   DRIVER( macplus )   /* 1986 Apple Macintosh Plus                  */
284   DRIVER( macse )      /* 1987 Apple Macintosh SE                     */
285   DRIVER( macclasc )   /* 1990 Apple Macintosh Classic                  */
280//0131u1    DRIVER( mac128k )   /* 1984 Apple Macintosh                        */
281//0131u1   DRIVER( mac512k )   /* 1985 Apple Macintosh 512k                  */
282//0131u1   DRIVER( mac512ke )   /* 1986 Apple Macintosh 512ke                  */
283//0131u1   DRIVER( macplus )   /* 1986 Apple Macintosh Plus                  */
284//0131u1   DRIVER( macse )      /* 1987 Apple Macintosh SE                     */
285//0131u1   DRIVER( macclasc )   /* 1990 Apple Macintosh Classic                  */
286286//   DRIVER( maclc )      /* 1990 Apple Macintosh LC                     */
287287
288288   /* ATARI */
r4679r4680
315315   DRIVER( sym1 )      /* Synertek SYM-1                           */
316316   DRIVER( aim65 )      /* Rockwell AIM65                           */
317317
318   DRIVER( pet2001 )   /* PET 2001                                 */
319   DRIVER( pet2001n )   /* PET 2001-N                              */
320   DRIVER( pet2001b )   /* PET 2001-B                              */
321   DRIVER( cbm30 )      /* CBM 30xx                                 */
322   DRIVER( cbm30b )   /* CBM 30xx (Business keyboard)                  */
323   DRIVER( cbm30nor )   /* CBM 30xx (Norway, Business keyboard)            */
324   DRIVER( pet40on )   /* PET 40xx (Basic 4, no CRTC, Normal keyboard)      */
325   DRIVER( pet40ob )   /* PET 40xx (Basic 4, no CRTC, Business keyboard)   */
326   DRIVER( pet40n )   /* PET 40xx (Basic 4, CRTC 60Hz, 40 columns)      */
327   DRIVER( pet40b )   /* PET 40xx (Basic 4, CRTC 60Hz, 80 columns)      */
328   DRIVER( cbm40o )   /* CBM 40xx (Basic 4, no CRTC, Normal keyboard)      */
329   DRIVER( cbm40ob )   /* CBM 40xx (Basic 4, no CRTC, Business keyboard)   */
330   DRIVER( cbm40n )   /* CBM 40xx (Basic 4, CRTC 50Hz, 40 columns)      */
331   DRIVER( cbm40b )   /* CBM 40xx (Basic 4, CRTC 50Hz, 80 columns)      */
332   DRIVER( pet80 )      /* PET 80xx (Basic 4, CRTC 60Hz, 80 columns)      */
333   DRIVER( cbm80 )      /* CBM 80xx (Basic 4, CRTC 50Hz, 80 columns)      */
334   DRIVER( cbm80ger )   /* CBM 80xx (Germany, Basic 4, CRTC 50Hz, 80 cols)   */
335   DRIVER( cbm80hun )   /* CBM 80xx (Hungary, Basic 4, CRTC 50Hz, 80 cols)   */
336   DRIVER( cbm80swe )   /* CBM 80xx (Sweden, Basic 4, CRTC 50Hz, 80 cols)   */
337   DRIVER( cbm8296 )   /* CBM 8296 (Basic 4, CRTC 50Hz, 80 columns)      */
338   DRIVER( cbm8296d )   /* CBM 8296D                              */
339   DRIVER( superpet )   /* SuperPET                                 */
340   DRIVER( sp9000 )   /* CBM SP9000 / MiniMainFrame 9000               */
341   DRIVER( mmf9000s )   /* MiniMainFrame 9000 (Sweden)                  */
318//0131u1   DRIVER( pet2001 )   /* PET 2001                                 */
319//0131u1   DRIVER( pet2001n )   /* PET 2001-N                              */
320//0131u1   DRIVER( pet2001b )   /* PET 2001-B                              */
321//0131u1   DRIVER( cbm30 )      /* CBM 30xx                                 */
322//0131u1   DRIVER( cbm30b )   /* CBM 30xx (Business keyboard)                  */
323//0131u1   DRIVER( cbm30nor )   /* CBM 30xx (Norway, Business keyboard)            */
324//0131u1   DRIVER( pet40on )   /* PET 40xx (Basic 4, no CRTC, Normal keyboard)      */
325//0131u1   DRIVER( pet40ob )   /* PET 40xx (Basic 4, no CRTC, Business keyboard)   */
326//0131u1   DRIVER( pet40n )   /* PET 40xx (Basic 4, CRTC 60Hz, 40 columns)      */
327//0131u1   DRIVER( pet40b )   /* PET 40xx (Basic 4, CRTC 60Hz, 80 columns)      */
328//0131u1   DRIVER( cbm40o )   /* CBM 40xx (Basic 4, no CRTC, Normal keyboard)      */
329//0131u1   DRIVER( cbm40ob )   /* CBM 40xx (Basic 4, no CRTC, Business keyboard)   */
330//0131u1   DRIVER( cbm40n )   /* CBM 40xx (Basic 4, CRTC 50Hz, 40 columns)      */
331//0131u1   DRIVER( cbm40b )   /* CBM 40xx (Basic 4, CRTC 50Hz, 80 columns)      */
332//0131u1   DRIVER( pet80 )      /* PET 80xx (Basic 4, CRTC 60Hz, 80 columns)      */
333//0131u1   DRIVER( cbm80 )      /* CBM 80xx (Basic 4, CRTC 50Hz, 80 columns)      */
334//0131u1   DRIVER( cbm80ger )   /* CBM 80xx (Germany, Basic 4, CRTC 50Hz, 80 cols)   */
335//0131u1   DRIVER( cbm80hun )   /* CBM 80xx (Hungary, Basic 4, CRTC 50Hz, 80 cols)   */
336//0131u1   DRIVER( cbm80swe )   /* CBM 80xx (Sweden, Basic 4, CRTC 50Hz, 80 cols)   */
337//0131u1   DRIVER( cbm8296 )   /* CBM 8296 (Basic 4, CRTC 50Hz, 80 columns)      */
338//0131u1   DRIVER( cbm8296d )   /* CBM 8296D                              */
339//0131u1   DRIVER( superpet )   /* SuperPET                                 */
340//0131u1   DRIVER( sp9000 )   /* CBM SP9000 / MiniMainFrame 9000               */
341//0131u1   DRIVER( mmf9000s )   /* MiniMainFrame 9000 (Sweden)                  */
342342
343   DRIVER( vic1001 )   /* Commodore VIC-1001 (Japan)                  */
344   DRIVER( vic20 )      /* Commodore VIC 20 (NTSC)                     */
345   DRIVER( vic20cr )   /* Commodore VIC 20CR (NTSC)                  */
346   DRIVER( vic20i )   /* Commodore VIC 20 (NTSC, IEEE488 Interface)      */
347   DRIVER( vic20v )   /* Commodore VIC 20 (NTSC, VC1540)               */
348   DRIVER( vic20pal )   /* Commodore VIC 20 (PAL)                     */
349   DRIVER( vic20crp )   /* Commodore VIC 20CR (PAL)                     */
350   DRIVER( vic20plv )   /* Commodore VIC 20 (PAL, VC1541)               */
351   DRIVER( vc20 )      /* Commodore VIC 20 (PAL, Germany)               */
352   DRIVER( vc20v )      /* Commodore VIC 20 (PAL, VC1541)               */
353   DRIVER( vic20swe )   /* Commodore VIC 20 (Swedish Expanson Kit)         */
343//0131u1   DRIVER( vic1001 )   /* Commodore VIC-1001 (Japan)                  */
344//0131u1   DRIVER( vic20 )      /* Commodore VIC 20 (NTSC)                     */
345//0131u1   DRIVER( vic20cr )   /* Commodore VIC 20CR (NTSC)                  */
346//0131u1   DRIVER( vic20i )   /* Commodore VIC 20 (NTSC, IEEE488 Interface)      */
347//0131u1   DRIVER( vic20v )   /* Commodore VIC 20 (NTSC, VC1540)               */
348//0131u1   DRIVER( vic20pal )   /* Commodore VIC 20 (PAL)                     */
349//0131u1   DRIVER( vic20crp )   /* Commodore VIC 20CR (PAL)                     */
350//0131u1   DRIVER( vic20plv )   /* Commodore VIC 20 (PAL, VC1541)               */
351//0131u1   DRIVER( vc20 )      /* Commodore VIC 20 (PAL, Germany)               */
352//0131u1   DRIVER( vc20v )      /* Commodore VIC 20 (PAL, VC1541)               */
353//0131u1   DRIVER( vic20swe )   /* Commodore VIC 20 (Swedish Expanson Kit)         */
354354
355   DRIVER( max )      /* Commodore Max Machine (Japan)               */
356   DRIVER( c64 )      /* Commodore 64 (NTSC)                        */
357   DRIVER( c64pal )   /* Commodore 64 (PAL)                        */
358   DRIVER( c64jpn )   /* Commodore 64 (Japan)                        */
359   DRIVER( c64swe )   /* Commodore 64 (Sweden)                     */
360   DRIVER( vic64s )   /* Commodore VIC 64S (Sweden)                  */
361   DRIVER( pet64 )      /* Commodore PET 64                           */
362   DRIVER( cbm4064 )   /* Commodore CBM 4064                        */
363   DRIVER( edu64 )      /* Commodore Educator 64                     */
364   DRIVER( sx64 )      /* Commodore SX-64 Executive Machine (PAL)         */
365   DRIVER( vip64 )      /* Commodore VIP64 (SX64, PAL, Swedish)            */
355//0131u1   DRIVER( max )      /* Commodore Max Machine (Japan)               */
356//0131u1   DRIVER( c64 )      /* Commodore 64 (NTSC)                        */
357//0131u1   DRIVER( c64pal )   /* Commodore 64 (PAL)                        */
358//0131u1   DRIVER( c64jpn )   /* Commodore 64 (Japan)                        */
359//0131u1   DRIVER( c64swe )   /* Commodore 64 (Sweden)                     */
360//0131u1   DRIVER( vic64s )   /* Commodore VIC 64S (Sweden)                  */
361//0131u1   DRIVER( pet64 )      /* Commodore PET 64                           */
362//0131u1   DRIVER( cbm4064 )   /* Commodore CBM 4064                        */
363//0131u1   DRIVER( edu64 )      /* Commodore Educator 64                     */
364//0131u1   DRIVER( sx64 )      /* Commodore SX-64 Executive Machine (PAL)         */
365//0131u1   DRIVER( vip64 )      /* Commodore VIP64 (SX64, PAL, Swedish)            */
366366//   DRIVER( dx64 )      /* Commodore DX-64 - Prototype                  */
367   DRIVER( c64c )      /* Commodore 64C (NTSC)                        */
368   DRIVER( c64cpal )   /* Commodore 64C (PAL)                        */
369   DRIVER( c64g )      /* Commodore 64G (PAL)                        */
370   DRIVER( c64gs )      /* Commodore 64 Games System                  */
367//0131u1   DRIVER( c64c )      /* Commodore 64C (NTSC)                        */
368//0131u1   DRIVER( c64cpal )   /* Commodore 64C (PAL)                        */
369//0131u1   DRIVER( c64g )      /* Commodore 64G (PAL)                        */
370//0131u1   DRIVER( c64gs )      /* Commodore 64 Games System                  */
371371
372   DRIVER( b500 )      /* Commodore B500                           */
373   DRIVER( b128 )      /* Commodore B128                           */
374   DRIVER( b256 )      /* Commodore B256                           */
375   DRIVER( cbm610 )   /* Commodore CBM 610                        */
376   DRIVER( cbm620 )   /* Commodore CBM 620                        */
377   DRIVER( cbm620hu )   /* Commodore CBM 620 (Hungary)                  */
378   DRIVER( b128hp )   /* Commodore B128HP                           */
379   DRIVER( b256hp )   /* Commodore B256HP                           */
380   DRIVER( bx256hp )   /* Commodore BX256HP                        */
381   DRIVER( cbm710 )   /* Commodore CBM 710                        */
382   DRIVER( cbm720 )   /* Commodore CBM 720                        */
383   DRIVER( cbm720se )   /* Commodore CBM 720 (Sweden / Finland)            */
384   DRIVER( p500 )      /* Commodore P500 (proto, a.k.a. C128-40, PET-II)   */
372//0131u1   DRIVER( b500 )      /* Commodore B500                           */
373//0131u1   DRIVER( b128 )      /* Commodore B128                           */
374//0131u1   DRIVER( b256 )      /* Commodore B256                           */
375//0131u1   DRIVER( cbm610 )   /* Commodore CBM 610                        */
376//0131u1   DRIVER( cbm620 )   /* Commodore CBM 620                        */
377//0131u1   DRIVER( cbm620hu )   /* Commodore CBM 620 (Hungary)                  */
378//0131u1   DRIVER( b128hp )   /* Commodore B128HP                           */
379//0131u1   DRIVER( b256hp )   /* Commodore B256HP                           */
380//0131u1   DRIVER( bx256hp )   /* Commodore BX256HP                        */
381//0131u1   DRIVER( cbm710 )   /* Commodore CBM 710                        */
382//0131u1   DRIVER( cbm720 )   /* Commodore CBM 720                        */
383//0131u1   DRIVER( cbm720se )   /* Commodore CBM 720 (Sweden / Finland)            */
384//0131u1   DRIVER( p500 )      /* Commodore P500 (proto, a.k.a. C128-40, PET-II)   */
385385
386   DRIVER( c16 )      /* Commodore 16                              */
387   DRIVER( c16c )      /* Commodore 16  c1551                        */
388   DRIVER( c16v )      /* Commodore 16  vc1541                        */
389   DRIVER( c16hun )   /* Commodore 16 Novotrade (Hungarian Character Set)   */
390   DRIVER( c116 )      /* Commodore 116                           */
391   DRIVER( c116c )      /* Commodore 116  c1551                        */
392   DRIVER( c116v )      /* Commodore 116  vc1541                     */
393   DRIVER( plus4 )      /* Commodore +4                              */
394   DRIVER( plus4c )   /* Commodore +4  c1551                        */
395   DRIVER( plus4v )   /* Commodore +4  vc1541                        */
396   DRIVER( c232 )      /* Commodore 232 - Prototype                  */
397   DRIVER( c264 )      /* Commodore 264 - Prototype                  */
398   DRIVER( c364 )      /* Commodore V364 - Prototype                  */
386//0131u1   DRIVER( c16 )      /* Commodore 16                              */
387//0131u1   DRIVER( c16c )      /* Commodore 16  c1551                        */
388//0131u1   DRIVER( c16v )      /* Commodore 16  vc1541                        */
389//0131u1   DRIVER( c16hun )   /* Commodore 16 Novotrade (Hungarian Character Set)   */
390//0131u1   DRIVER( c116 )      /* Commodore 116                           */
391//0131u1   DRIVER( c116c )      /* Commodore 116  c1551                        */
392//0131u1   DRIVER( c116v )      /* Commodore 116  vc1541                     */
393//0131u1   DRIVER( plus4 )      /* Commodore +4                              */
394//0131u1   DRIVER( plus4c )   /* Commodore +4  c1551                        */
395//0131u1   DRIVER( plus4v )   /* Commodore +4  vc1541                        */
396//0131u1   DRIVER( c232 )      /* Commodore 232 - Prototype                  */
397//0131u1   DRIVER( c264 )      /* Commodore 264 - Prototype                  */
398//0131u1   DRIVER( c364 )      /* Commodore V364 - Prototype                  */
399399
400   DRIVER( c128 )      /* Commodore 128 - NTSC                        */
401   DRIVER( c128cr )   /* Commodore 128CR - NTSC (proto?)               */
402   DRIVER( c128fin )   /* Commodore 128 - PAL (Finnish)               */
403   DRIVER( c128fra )   /* Commodore 128 - PAL (French)                  */
404   DRIVER( c128ger )   /* Commodore 128 - PAL (German)                  */
405   DRIVER( c128nor )   /* Commodore 128 - PAL (Norwegian)               */
406   DRIVER( c128d )      /* Commodore 128D - PAL                        */
407   DRIVER( c128dpr )   /* Commodore 128D - NTSC (proto)               */
408   DRIVER( c128dcr )   /* Commodore 128DCR - NTSC                     */
409   DRIVER( c128drde )   /* Commodore 128DCR - PAL (German)               */
410   DRIVER( c128drit )   /* Commodore 128DCR - PAL (Italian)               */
411   DRIVER( c128drsw )   /* Commodore 128DCR - PAL (Swedish)               */
400//0131u1   DRIVER( c128 )      /* Commodore 128 - NTSC                        */
401//0131u1   DRIVER( c128cr )   /* Commodore 128CR - NTSC (proto?)               */
402//0131u1   DRIVER( c128fin )   /* Commodore 128 - PAL (Finnish)               */
403//0131u1   DRIVER( c128fra )   /* Commodore 128 - PAL (French)                  */
404//0131u1   DRIVER( c128ger )   /* Commodore 128 - PAL (German)                  */
405//0131u1   DRIVER( c128nor )   /* Commodore 128 - PAL (Norwegian)               */
406//0131u1   DRIVER( c128d )      /* Commodore 128D - PAL                        */
407//0131u1   DRIVER( c128dpr )   /* Commodore 128D - NTSC (proto)               */
408//0131u1   DRIVER( c128dcr )   /* Commodore 128DCR - NTSC                     */
409//0131u1   DRIVER( c128drde )   /* Commodore 128DCR - PAL (German)               */
410//0131u1   DRIVER( c128drit )   /* Commodore 128DCR - PAL (Italian)               */
411//0131u1   DRIVER( c128drsw )   /* Commodore 128DCR - PAL (Swedish)               */
412412
413   DRIVER( a500n )      /* Commodore Amiga 500 - NTSC                  */
414   DRIVER( a500p )      /* Commodore Amiga 500 - PAL                  */
415   DRIVER( a1000n )   /* Commodore Amiga 1000 - NTSC                  */
416   DRIVER( a1000p )   /* Commodore Amiga 1000 - PAL                  */
417   DRIVER( cdtv )      /* Commodore CDTV                           */
418   DRIVER( a1200n )   /* Commodore Amiga 1200 - NTSC                  */
419   DRIVER( a1200p )   /* Commodore Amiga 1200 - PAL                  */
420   DRIVER( cd32 )      /* Commodore Amiga CD32                        */
413//0131u1   DRIVER( a500n )      /* Commodore Amiga 500 - NTSC                  */
414//0131u1   DRIVER( a500p )      /* Commodore Amiga 500 - PAL                  */
415//0131u1   DRIVER( a1000n )   /* Commodore Amiga 1000 - NTSC                  */
416//0131u1   DRIVER( a1000p )   /* Commodore Amiga 1000 - PAL                  */
417//0131u1   DRIVER( cdtv )      /* Commodore CDTV                           */
418//0131u1   DRIVER( a1200n )   /* Commodore Amiga 1200 - NTSC                  */
419//0131u1   DRIVER( a1200p )   /* Commodore Amiga 1200 - PAL                  */
420//0131u1   DRIVER( cd32 )      /* Commodore Amiga CD32                        */
421421
422   DRIVER( c65 )      /* 1991 C65 / C64DX (Prototype, NTSC)            */
423   DRIVER( c64dx )      /* 1991 C65 / C64DX (Prototype, German PAL)         */
422//0131u1   DRIVER( c65 )      /* 1991 C65 / C64DX (Prototype, NTSC)            */
423//0131u1   DRIVER( c64dx )      /* 1991 C65 / C64DX (Prototype, German PAL)         */
424424
425425   /* EPSON */
426426   DRIVER( px4 )      /* 1985 Epson PX-4                           */
r4679r4680
475475   DRIVER( osborne1 )   /* 1981 Osborne-1                           */
476476
477477   /* SINCLAIR RESEARCH */
478   DRIVER( zx80 )      /* 1980 Sinclair ZX-80                        */
479   DRIVER( zx81 )      /* 1981 Sinclair ZX-81                        */
480   DRIVER( ts1000 )   /* 1982 Timex Sinclair 1000                     */
481   DRIVER( ts1500 )   /* Timex Sinclair 1500                        */
482   DRIVER( ringo470 )   /* Ringo 470                              */
483   DRIVER( pc8300 )   /* Your Computer - PC8300                     */
484   DRIVER( pow3000 )   /* Creon Enterprises - Power 3000               */
485   DRIVER( lambda )   /* Lambda 8300                              */
486   DRIVER( tk85 )      /* Microdigital TK85                         */
478//0131u1   DRIVER( zx80 )      /* 1980 Sinclair ZX-80                        */
479//0131u1   DRIVER( zx81 )      /* 1981 Sinclair ZX-81                        */
480//0131u1   DRIVER( ts1000 )   /* 1982 Timex Sinclair 1000                     */
481//0131u1   DRIVER( ts1500 )   /* Timex Sinclair 1500                        */
482//0131u1   DRIVER( ringo470 )   /* Ringo 470                              */
483//0131u1   DRIVER( pc8300 )   /* Your Computer - PC8300                     */
484//0131u1   DRIVER( pow3000 )   /* Creon Enterprises - Power 3000               */
485//0131u1   DRIVER( lambda )   /* Lambda 8300                              */
486//0131u1   DRIVER( tk85 )      /* Microdigital TK85                         */
487487
488   DRIVER( spectrum )/* 1982 ZX Spectrum                           */
489   DRIVER( spec80k ) /* 1987 ZX Spectrum 80k                     */
490   DRIVER( specide ) /* 1995 ZX Spectrum IDE                     */
491   DRIVER( inves )      /* 1986 Inves Spectrum 48K+                     */
492   DRIVER( tk90x )      /* 1985 TK90x Color Computer                  */
493   DRIVER( tk95 )      /* 1986 TK95 Color Computer                     */
494   DRIVER( tc2048 )   /* 198? TC2048                              */
495   DRIVER( ts2068 )   /* 1983 TS2068                              */
496   DRIVER( uk2086 )   /* 1986 UK2086                              */
488//0131u1   DRIVER( spectrum )/* 1982 ZX Spectrum                           */
489//0131u1   DRIVER( spec80k ) /* 1987 ZX Spectrum 80k                     */
490//0131u1   DRIVER( specide ) /* 1995 ZX Spectrum IDE                     */
491//0131u1   DRIVER( inves )      /* 1986 Inves Spectrum 48K+                     */
492//0131u1   DRIVER( tk90x )      /* 1985 TK90x Color Computer                  */
493//0131u1   DRIVER( tk95 )      /* 1986 TK95 Color Computer                     */
494//0131u1   DRIVER( tc2048 )   /* 198? TC2048                              */
495//0131u1   DRIVER( ts2068 )   /* 1983 TS2068                              */
496//0131u1   DRIVER( uk2086 )   /* 1986 UK2086                              */
497497
498   DRIVER( spec128 )     /* 1986 ZX Spectrum 128                        */
499   DRIVER( specpls2 )   /* 1986 ZX Spectrum +2                        */
500   DRIVER( specpl2a )   /* 1987 ZX Spectrum +2a                        */
501   DRIVER( specpls3 )   /* 1987 ZX Spectrum +3                        */
502   DRIVER( specpl3e )   /* 2000 ZX Spectrum +3e                        */
503   DRIVER( sp3e8bit )   /* 2002 ZX Spectrum +3e   8bit IDE         */
504   DRIVER( sp3ezcf )     /* 2002 ZX Spectrum +3e   ZXCF               */
505   DRIVER( sp3eata )     /* 2002 ZX Spectrum +3e   ZXATASP           */
506   DRIVER( scorpion )
507   DRIVER( pentagon )
498//0131u1   DRIVER( spec128 )     /* 1986 ZX Spectrum 128                        */
499//0131u1   DRIVER( specpls2 )   /* 1986 ZX Spectrum +2                        */
500//0131u1   DRIVER( specpl2a )   /* 1987 ZX Spectrum +2a                        */
501//0131u1   DRIVER( specpls3 )   /* 1987 ZX Spectrum +3                        */
502//0131u1   DRIVER( specpl3e )   /* 2000 ZX Spectrum +3e                        */
503//0131u1   DRIVER( sp3e8bit )   /* 2002 ZX Spectrum +3e   8bit IDE         */
504//0131u1   DRIVER( sp3ezcf )     /* 2002 ZX Spectrum +3e   ZXCF               */
505//0131u1   DRIVER( sp3eata )     /* 2002 ZX Spectrum +3e   ZXATASP           */
506//0131u1   DRIVER( scorpion )
507//0131u1   DRIVER( pentagon )
508508
509   DRIVER( ql )      /* 1984 Sinclair QL   (UK)                     */
510   DRIVER( ql_us )      /* 1984 Sinclair QL   (USA)                     */
511   DRIVER( ql_es )      /* 1984 Sinclair QL   (Spain)                     */
512   DRIVER( ql_fr )      /* 1984 Sinclair QL   (France)                  */
513   DRIVER( ql_de )      /* 1984 Sinclair QL   (Germany)                  */
514   DRIVER( ql_it )      /* 1984 Sinclair QL   (Italy)                     */
515   DRIVER( ql_se )      /* 1984 Sinclair QL   (Sweden)                  */
516   DRIVER( ql_dk )      /* 1984 Sinclair QL   (Denmark)                  */
517   DRIVER( ql_gr )      /* 1984 Sinclair QL   (Greece)                  */
509//0131u1   DRIVER( ql )      /* 1984 Sinclair QL   (UK)                     */
510//0131u1   DRIVER( ql_us )      /* 1984 Sinclair QL   (USA)                     */
511//0131u1   DRIVER( ql_es )      /* 1984 Sinclair QL   (Spain)                     */
512//0131u1   DRIVER( ql_fr )      /* 1984 Sinclair QL   (France)                  */
513//0131u1   DRIVER( ql_de )      /* 1984 Sinclair QL   (Germany)                  */
514//0131u1   DRIVER( ql_it )      /* 1984 Sinclair QL   (Italy)                     */
515//0131u1   DRIVER( ql_se )      /* 1984 Sinclair QL   (Sweden)                  */
516//0131u1   DRIVER( ql_dk )      /* 1984 Sinclair QL   (Denmark)                  */
517//0131u1   DRIVER( ql_gr )      /* 1984 Sinclair QL   (Greece)                  */
518518//   DRIVER( tonto )
519519//   DRIVER( megaopd )
520520
r4679r4680
679679   DRIVER( laser700 )   /* 1984? Laser 700                           */
680680
681681   /* TANGERINE */
682   DRIVER( microtan )   /* 1979 Microtan 65                           */
682//0131u1   DRIVER( microtan )   /* 1979 Microtan 65                           */
683683
684   DRIVER( oric1 )      /* 1983 Oric 1                              */
685   DRIVER( orica )      /* 1984 Oric Atmos                           */
686   DRIVER( prav8d )   /* 1985 Pravetz 8D                           */
687   DRIVER( prav8dd )   /* 1989 Pravetz 8D (Disk ROM)                  */
688   DRIVER( telstrat )   /* ??? Oric Telestrat/Stratos                  */
684//0131u1   DRIVER( oric1 )      /* 1983 Oric 1                              */
685//0131u1   DRIVER( orica )      /* 1984 Oric Atmos                           */
686//0131u1   DRIVER( prav8d )   /* 1985 Pravetz 8D                           */
687//0131u1   DRIVER( prav8dd )   /* 1989 Pravetz 8D (Disk ROM)                  */
688//0131u1   DRIVER( telstrat )   /* ??? Oric Telestrat/Stratos                  */
689689
690690   /* PHILIPS */
691691   DRIVER( p2000t )   /* 1980 P2000T                              */
r4679r4680
882882   DRIVER( c2717 )      /* Consul 2717 (PMD-85.2 clone)            */
883883
884884   /* Microkey */
885   DRIVER( primoa32 )   /* Primo A-32                              */
886   DRIVER( primoa48 )   /* Primo A-48                              */
887   DRIVER( primoa64 )   /* Primo A-64                              */
888   DRIVER( primob32 )   /* Primo B-32                              */
889   DRIVER( primob48 )   /* Primo B-48                              */
890   DRIVER( primob64 )   /* Primo B-64                              */
891   DRIVER( primoc64 )   /* Primo C-64                              */
885//0131u1   DRIVER( primoa32 )   /* Primo A-32                              */
886//0131u1   DRIVER( primoa48 )   /* Primo A-48                              */
887//0131u1   DRIVER( primoa64 )   /* Primo A-64                              */
888//0131u1   DRIVER( primob32 )   /* Primo B-32                              */
889//0131u1   DRIVER( primob48 )   /* Primo B-48                              */
890//0131u1   DRIVER( primob64 )   /* Primo B-64                              */
891//0131u1   DRIVER( primoc64 )   /* Primo C-64                              */
892892
893893   /* Team Concepts */
894894   /* CPU not known, else should be easy, look into drivers/comquest.c */
r4679r4680
963963   DRIVER( gamecom )   /* Tiger Game.com                           */
964964
965965   /* Thomson */
966   DRIVER( t9000 )      /* 1980 Thomson T9000 (TO7 prototype)            */
967   DRIVER( to7 )      /* 1982 Thomson TO7                           */
968   DRIVER( to770 )      /* 1984 Thomson TO7/70                        */
969   DRIVER( to770a )   /* 198? Thomson TO7/70 arabic version            */
970   DRIVER( mo5 )      /* 1984 Thomson MO5                           */
971   DRIVER( mo5e )      /* 1986 Thomson MO5E (export version)            */
972   DRIVER( to9 )      /* 1985 Thomson T09                           */
973   DRIVER( to8 )      /* 1986 Thomson T08                           */
974   DRIVER( to8d )      /* 1987 Thomson T08D                        */
975   DRIVER( to9p )      /* 1986 Thomson T09+                        */
976   DRIVER( mo6 )      /* 1986 Thomson MO6                           */
977   DRIVER( mo5nr )      /* 1986 Thomson MO5 NR                        */
978   DRIVER( pro128 )   /* 1986 Olivetti Prodest PC 128                  */
966//0131u1   DRIVER( t9000 )      /* 1980 Thomson T9000 (TO7 prototype)            */
967//0131u1   DRIVER( to7 )      /* 1982 Thomson TO7                           */
968//0131u1   DRIVER( to770 )      /* 1984 Thomson TO7/70                        */
969//0131u1   DRIVER( to770a )   /* 198? Thomson TO7/70 arabic version            */
970//0131u1   DRIVER( mo5 )      /* 1984 Thomson MO5                           */
971//0131u1   DRIVER( mo5e )      /* 1986 Thomson MO5E (export version)            */
972//0131u1   DRIVER( to9 )      /* 1985 Thomson T09                           */
973//0131u1   DRIVER( to8 )      /* 1986 Thomson T08                           */
974//0131u1   DRIVER( to8d )      /* 1987 Thomson T08D                        */
975//0131u1   DRIVER( to9p )      /* 1986 Thomson T09+                        */
976//0131u1   DRIVER( mo6 )      /* 1986 Thomson MO6                           */
977//0131u1   DRIVER( mo5nr )      /* 1986 Thomson MO5 NR                        */
978//0131u1   DRIVER( pro128 )   /* 1986 Olivetti Prodest PC 128                  */
979979
980980   /* Cybiko, Inc. */
981981//   DRIVER( cybikov1 )   /* Cybiko Wireless Intertainment System - Classic V1 */
r4679r4680
10821082  /* Spectrum clones */
10831083
10841084  /* ICE-Felix */
1085   DRIVER( hc85 )    /* 1985 HC-85                                */
1086   DRIVER( hc90 )    /* 1990 HC-90                                */
1087   DRIVER( hc91 )    /* 1991 HC-91                                */
1088   DRIVER( hc128 )   /* 1991 HC-128                             */
1089   DRIVER( hc2000 )  /* 1992 HC-2000                             */
1085//0131u1   DRIVER( hc85 )    /* 1985 HC-85                                */
1086//0131u1   DRIVER( hc90 )    /* 1990 HC-90                                */
1087//0131u1   DRIVER( hc91 )    /* 1991 HC-91                                */
1088//0131u1   DRIVER( hc128 )   /* 1991 HC-128                             */
1089//0131u1   DRIVER( hc2000 )  /* 1992 HC-2000                             */
10901090
1091   DRIVER( cip01 )   /* 1987 CIP-01                             */
1092   DRIVER( cip03 )   /* 1988 CIP-03                             */
1093   DRIVER( jet )     /* 1990 JET                                */
1091//0131u1   DRIVER( cip01 )   /* 1987 CIP-01                             */
1092//0131u1   DRIVER( cip03 )   /* 1988 CIP-03                             */
1093//0131u1   DRIVER( jet )     /* 1990 JET                                */
10941094
10951095  /* Didaktik Skalica */
1096   DRIVER( dgama87)  /* 1987 Didaktik Gama 87          */
1097   DRIVER( dgama88)  /* 1988 Didaktik Gama 88          */
1098   DRIVER( dgama89)  /* 1989 Didaktik Gama 89          */
1099   DRIVER( didakt90) /* 1990 Didaktik Skalica 90       */
1100   DRIVER( didakm91) /* 1991 Didaktik M 91             */
1101   DRIVER( didaktk)  /* 1992 Didaktik Kompakt          */
1102   DRIVER( didakm93) /* 1993 Didaktik M 93             */
1096//0131u1   DRIVER( dgama87)  /* 1987 Didaktik Gama 87          */
1097//0131u1   DRIVER( dgama88)  /* 1988 Didaktik Gama 88          */
1098//0131u1   DRIVER( dgama89)  /* 1989 Didaktik Gama 89          */
1099//0131u1   DRIVER( didakt90) /* 1990 Didaktik Skalica 90       */
1100//0131u1   DRIVER( didakm91) /* 1991 Didaktik M 91             */
1101//0131u1   DRIVER( didaktk)  /* 1992 Didaktik Kompakt          */
1102//0131u1   DRIVER( didakm93) /* 1993 Didaktik M 93             */
11031103
1104   DRIVER( mistrum ) /* 1988 Mistrum                              */
1104//0131u1   DRIVER( mistrum ) /* 1988 Mistrum                              */
11051105
11061106   /* Russian clones */
1107   DRIVER( blitz )     /* 1990 Blic                     */
1108   DRIVER( byte )      /* 1990 Byte                     */
1109   DRIVER( orizon )    /* 199? Orizon-Micro             */
1110   DRIVER( quorum48 )  /* 1993 Kvorum 48K               */
1111   DRIVER( magic6 )    /* 1993 Magic 6                  */
1112   DRIVER( compani1 )  /* 1990 Kompanion 1              */
1107//0131u1   DRIVER( blitz )     /* 1990 Blic                     */
1108//0131u1   DRIVER( byte )      /* 1990 Byte                     */
1109//0131u1   DRIVER( orizon )    /* 199? Orizon-Micro             */
1110//0131u1   DRIVER( quorum48 )  /* 1993 Kvorum 48K               */
1111//0131u1   DRIVER( magic6 )    /* 1993 Magic 6                  */
1112//0131u1   DRIVER( compani1 )  /* 1990 Kompanion 1              */
11131113
11141114   /* Kramer */
11151115   DRIVER(kramermc) /* 1987 Kramer MC            */
src/mess/artworkx.c
r4679r4680
5454         len += strlen(strs[i]) + 1;
5555   }
5656
57   override_artfile = auto_malloc(len);
57   override_artfile = auto_alloc_array(img->machine, char, len);
5858   override_artfile[len - 1] = '\0';
5959
6060   /* now actually concatenate the strings */
src/mess/machine/strata.c
r4679r4680
8080   strata[id].mode = FM_NORMAL;
8181   strata[id].status = 0x80;
8282   strata[id].master_lock = 0;
83   strata[id].data_ptr = auto_malloc(FEEPROM_SIZE + WRBUF_SIZE + PROT_REGS_SIZE + BLOCKLOCK_SIZE);
83   strata[id].data_ptr = auto_alloc_array(machine, UINT8, FEEPROM_SIZE + WRBUF_SIZE + PROT_REGS_SIZE + BLOCKLOCK_SIZE);
8484   strata[id].wrbuf = strata[id].data_ptr + FEEPROM_SIZE;
8585   strata[id].prot_regs = strata[id].wrbuf + WRBUF_SIZE;
8686   strata[id].blocklock = strata[id].prot_regs + PROT_REGS_SIZE;
src/mess/machine/pdp1.c
r4679r4680
322322   };
323323
324324   /* set up memory regions */
325   pdp1_memory = auto_malloc(0x40000);
325   pdp1_memory = auto_alloc_array(machine, int, 0x40000 / sizeof(int));
326326
327327   /* set up our font */
328328   dst = memory_region(machine, "gfx1");
src/mess/machine/ataricrt.c
r4679r4680
3737   /* install RAM */
3838   ram_top = MIN(mess_ram_size, ram_size) - 1;
3939   memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM),
40      0x0000, ram_top, 0, 0, SMH_BANK2);
40      0x0000, ram_top, 0, 0, SMH_BANK(2));
4141   memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM),
42      0x0000, ram_top, 0, 0, SMH_BANK2);
42      0x0000, ram_top, 0, 0, SMH_BANK(2));
4343   memory_set_bankptr(machine, 2, mess_ram);
4444}
4545
r4679r4680
7272   }
7373
7474   memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x8000, 0xbfff, 0, 0,
75      read_addr ? SMH_BANK1 : SMH_NOP);
75      read_addr ? SMH_BANK(1) : SMH_NOP);
7676   memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x8000, 0xbfff, 0, 0,
77      write_addr ? SMH_BANK1 : SMH_NOP);
77      write_addr ? SMH_BANK(1) : SMH_NOP);
7878   if (read_addr)
7979      memory_set_bankptr(machine, 1, read_addr);
8080   if (write_addr)
r4679r4680
114114   /* install RAM */
115115   ram_top = MIN(mess_ram_size, ram_size) - 1;
116116   memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM),
117      0x0000, ram_top, 0, 0, SMH_BANK2);
117      0x0000, ram_top, 0, 0, SMH_BANK(2));
118118   memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM),
119      0x0000, ram_top, 0, 0, SMH_BANK2);
119      0x0000, ram_top, 0, 0, SMH_BANK(2));
120120   memory_set_bankptr(machine, 2, mess_ram);
121121
122122   /* cartridge */
src/mess/machine/hp48.c
r4679r4680
11471147   /* internal RAM */
11481148   ram_size = HP48_GX_MODEL ? (128 * 1024) : (32 * 1024);
11491149   generic_nvram_size = 2 * ram_size;
1150   generic_nvram = auto_malloc( generic_nvram_size );
1150   generic_nvram = auto_alloc_array(machine, UINT8, generic_nvram_size);
11511151   ram = (UINT8*) generic_nvram;
11521152
11531153   /* ROM load */
11541154   rom_size = HP48_S_SERIES ? (256 * 1024) : (512 * 1024);
1155   rom = auto_malloc( 2 * rom_size );
1155   rom = auto_alloc_array(machine, UINT8, 2 * rom_size);
11561156   hp48_decode_nibble( rom, memory_region( machine, "maincpu" ), rom_size );
11571157
11581158   /* init state */
r4679r4680
11741174
11751175   /* internal RAM */
11761176   hp48_modules[1].off_mask = 2 * ram_size - 1;
1177   hp48_modules[1].read     = SMH_BANK1;
1178   hp48_modules[1].write    = SMH_BANK1;
1177   hp48_modules[1].read     = SMH_BANK(1);
1178   hp48_modules[1].write    = SMH_BANK(1);
11791179   hp48_modules[1].data     = ram;
11801180
11811181   if ( HP48_G_SERIES )
r4679r4680
11881188
11891189   /* ROM */
11901190   hp48_modules[5].off_mask = 2 * rom_size - 1;
1191   hp48_modules[5].read     = SMH_BANK5;
1191   hp48_modules[5].read     = SMH_BANK(5);
11921192   hp48_modules[5].write    = SMH_NOP;
11931193   hp48_modules[5].data     = rom;
11941194
src/mess/machine/apple3.c
r4679r4680
390390   }
391391   else
392392   {
393      memory_install_read8_handler(space, 0xC000, 0xC0FF, 0, 0, SMH_BANK8);
393      memory_install_read8_handler(space, 0xC000, 0xC0FF, 0, 0, SMH_BANK(8));
394394      if (via_0_a & 0x08)
395395         memory_install_write8_handler(space, 0xC000, 0xC0FF, 0, 0, SMH_UNMAP);
396396      else
397         memory_install_write8_handler(space, 0xC000, 0xC0FF, 0, 0, SMH_BANK8);
397         memory_install_write8_handler(space, 0xC000, 0xC0FF, 0, 0, SMH_BANK(8));
398398      apple3_setbank(machine,8, ~0, 0x4000);
399399   }
400400
r4679r4680
406406   }
407407   else
408408   {
409      memory_install_read8_handler(space, 0xC100, 0xC4FF, 0, 0, SMH_BANK9);
409      memory_install_read8_handler(space, 0xC100, 0xC4FF, 0, 0, SMH_BANK(9));
410410      if (via_0_a & 0x08)
411411         memory_install_write8_handler(space, 0xC100, 0xC4FF, 0, 0, SMH_UNMAP);
412412      else
413         memory_install_write8_handler(space, 0xC100, 0xC4FF, 0, 0, SMH_BANK9);
413         memory_install_write8_handler(space, 0xC100, 0xC4FF, 0, 0, SMH_BANK(9));
414414      apple3_setbank(machine,9, ~0, 0x4100);
415415   }
416416
417417   /* install bank 10 (C500-C7FF) */
418   memory_install_read8_handler(space, 0xC500, 0xC7FF, 0, 0, SMH_BANK10);
418   memory_install_read8_handler(space, 0xC500, 0xC7FF, 0, 0, SMH_BANK(10));
419419   if (via_0_a & 0x08)
420420      memory_install_write8_handler(space, 0xC500, 0xC7FF, 0, 0, SMH_UNMAP);
421421   else
422      memory_install_write8_handler(space, 0xC500, 0xC7FF, 0, 0, SMH_BANK10);
422      memory_install_write8_handler(space, 0xC500, 0xC7FF, 0, 0, SMH_BANK(10));
423423   apple3_setbank(machine,10, ~0, 0x4500);
424424
425425   /* install bank 11 (C800-CFFF) */
r4679r4680
430430   }
431431   else
432432   {
433      memory_install_read8_handler(space, 0xC800, 0xCFFF, 0, 0, SMH_BANK11);
433      memory_install_read8_handler(space, 0xC800, 0xCFFF, 0, 0, SMH_BANK(11));
434434      if (via_0_a & 0x08)
435435         memory_install_write8_handler(space, 0xC800, 0xCFFF, 0, 0, SMH_UNMAP);
436436      else
437         memory_install_write8_handler(space, 0xC800, 0xCFFF, 0, 0, SMH_BANK11);
437         memory_install_write8_handler(space, 0xC800, 0xCFFF, 0, 0, SMH_BANK(11));
438438      apple3_setbank(machine,11, ~0, 0x4800);
439439   }
440440
441441   /* install bank 6 (D000-EFFF) */
442   memory_install_read8_handler(space, 0xD000, 0xEFFF, 0, 0, SMH_BANK6);
442   memory_install_read8_handler(space, 0xD000, 0xEFFF, 0, 0, SMH_BANK(6));
443443   if (via_0_a & 0x08)
444444      memory_install_write8_handler(space, 0xD000, 0xEFFF, 0, 0, SMH_UNMAP);
445445   else
446      memory_install_write8_handler(space, 0xD000, 0xEFFF, 0, 0, SMH_BANK6);
446      memory_install_write8_handler(space, 0xD000, 0xEFFF, 0, 0, SMH_BANK(6));
447447   apple3_setbank(machine,6, ~0, 0x5000);
448448
449449   /* install bank 7 (F000-FFFF) */
450   memory_install_read8_handler(space, 0xF000, 0xFFFF, 0, 0, SMH_BANK7);
450   memory_install_read8_handler(space, 0xF000, 0xFFFF, 0, 0, SMH_BANK(7));
451451   if (via_0_a & 0x09)
452452      memory_install_write8_handler(space, 0xF000, 0xFFFF, 0, 0, SMH_UNMAP);
453453   else
454      memory_install_write8_handler(space, 0xF000, 0xFFFF, 0, 0, SMH_BANK7);
454      memory_install_write8_handler(space, 0xF000, 0xFFFF, 0, 0, SMH_BANK(7));
455455   if (via_0_a & 0x01)
456456      memory_set_bankptr(machine,7, memory_region(machine, "maincpu"));
457457   else
src/mess/machine/c65.c
r4679r4680
461461      expansion_ram_end = 0x80000 + (mess_ram_size - 128*1024) - 1;
462462
463463      memory_install_read8_handler(space, expansion_ram_begin, expansion_ram_end,
464         0, 0, (data == 0x00) ? SMH_BANK16 : SMH_NOP);
464         0, 0, (data == 0x00) ? SMH_BANK(16) : SMH_NOP);
465465      memory_install_write8_handler(space, expansion_ram_begin, expansion_ram_end,
466         0, 0, (data == 0x00) ? SMH_BANK16 : SMH_NOP);
466         0, 0, (data == 0x00) ? SMH_BANK(16) : SMH_NOP);
467467
468468      if (data == 0x00)
469469         memory_set_bankptr(space->machine, 16, mess_ram + 128*1024);
r4679r4680
613613      {
614614         memory_set_bankptr (machine, 8, c64_colorram + 0x400);
615615         memory_set_bankptr (machine, 9, c64_colorram + 0x400);
616         rh = SMH_BANK8;
617         wh = SMH_BANK9;
616         rh = SMH_BANK(8);
617         wh = SMH_BANK(9);
618618      }
619619      else
620620      {
r4679r4680
713713      }
714714      else
715715      {
716         rh8 = SMH_BANK8;
717         wh9 = SMH_BANK9;
716         rh8 = SMH_BANK(8);
717         wh9 = SMH_BANK(9);
718718         memory_set_bankptr (machine, 8, c64_colorram+0x400);
719719         memory_set_bankptr (machine, 9, c64_colorram+0x400);
720720      }
r4679r4680
724724   else
725725   {
726726      c65_io_on = 0;
727      rh4 = SMH_BANK4;
728      wh5 = SMH_BANK5;
727      rh4 = SMH_BANK(4);
728      wh5 = SMH_BANK(5);
729729      memory_set_bankptr(machine, 5, c64_memory+0xd000);
730730      memory_set_bankptr(machine, 7, c64_memory+0xd800);
731731      memory_set_bankptr(machine, 9, c64_memory+0xdc00);
r4679r4680
804804
805805static void c65_common_driver_init (running_machine *machine)
806806{
807   c64_memory = auto_malloc(0x10000);
808   memset(c64_memory, 0, 0x10000);
807   c64_memory = auto_alloc_array_clear(machine, UINT8, 0x10000);
809808   memory_set_bankptr(machine, 11, c64_memory + 0x00000);
810809   memory_set_bankptr(machine, 12, c64_memory + 0x08000);
811810   memory_set_bankptr(machine, 13, c64_memory + 0x0a000);
src/mess/machine/at45dbxx.c
r4679r4680
100100      case TYPE_AT45DB161 : flash->pages = 4096; flash->page_size = 528; flash->devid = 0x28; break;
101101   }
102102   flash->size = flash->pages * flash->page_size;
103   flash->data = auto_malloc( flash->size);
104   flash->buffer1 = auto_malloc( flash->page_size);
105   flash->buffer2 = auto_malloc( flash->page_size);
103   flash->data = auto_alloc_array(device->machine, UINT8, flash->size);
104   flash->buffer1 = auto_alloc_array(device->machine, UINT8, flash->page_size);
105   flash->buffer2 = auto_alloc_array(device->machine, UINT8, flash->page_size);
106106   
107107   // data
108108   state_save_register_item_pointer(device->machine, "at45dbxx", device->tag, 0, flash->data, flash->size);
src/mess/machine/msx_slot.c
r4679r4680
4040   case 4:
4141      memory_set_bankptr (machine,4, mem);
4242      memory_set_bankptr (machine,5, mem + 0x1ff8);
43      memory_install_read8_handler(space, 0x7ff8, 0x7fff, 0, 0, SMH_BANK5);
43      memory_install_read8_handler(space, 0x7ff8, 0x7fff, 0, 0, SMH_BANK(5));
4444      break;
4545   case 5:
4646      memory_set_bankptr (machine,6, mem);
4747      memory_set_bankptr (machine,7, mem + 0x1800);
48      memory_install_read8_handler(space, 0x9800, 0x9fff, 0, 0, SMH_BANK7);
48      memory_install_read8_handler(space, 0x9800, 0x9fff, 0, 0, SMH_BANK(7));
4949      break;
5050   case 6:
5151      memory_set_bankptr (machine,8, mem);
5252      memory_set_bankptr (machine,9, mem + 0x1800);
53      memory_install_read8_handler(space, 0xb800, 0xbfff, 0, 0, SMH_BANK9);
53      memory_install_read8_handler(space, 0xb800, 0xbfff, 0, 0, SMH_BANK(9));
5454      break;
5555   case 7:
5656      memory_set_bankptr (machine,10, mem);
r4679r4680
105105
106106MSX_SLOT_INIT(ram)
107107{
108   state->mem = auto_malloc (size);
108   state->mem = auto_alloc_array(machine, UINT8, size);
109109   memset (state->mem, 0, size);
110110   state->type = SLOT_RAM;
111111   state->start_page = page;
r4679r4680
151151              "1mb, 2mb or 4mb\n");
152152      return 1;
153153   }
154   state->mem = auto_malloc (size);
154   state->mem = auto_alloc_array(machine, UINT8, size);
155155   memset (state->mem, 0, size);
156156
157157#ifdef MONMSX
r4679r4680
384384      msx_cpu_setbank (machine, 5, state->mem + state->banks[2] * 0x2000);
385385      msx_cpu_setbank (machine, 6, state->mem + state->banks[3] * 0x2000);
386386      memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x9800, 0x9fff, 0, 0,
387            state->cart.scc.active ? konami_scc_bank5 : SMH_BANK7);
387            state->cart.scc.active ? konami_scc_bank5 : SMH_BANK(7));
388388      break;
389389   case 3:
390390      msx_cpu_setbank (machine, 7, state->mem + state->banks[0] * 0x2000);
r4679r4680
618618   static const char sramfile[] = "ascii8";
619619   int banks;
620620
621   state->cart.sram.mem = auto_malloc (0x2000);
621   state->cart.sram.mem = auto_alloc_array(machine, UINT8, 0x2000);
622622   if (size > 0x100000)
623623   {
624624      logerror ("ascii8_sram: warning: truncating to 1mb\n");
r4679r4680
783783   static const char sramfile[] = "ascii16";
784784   int banks;
785785
786   state->cart.sram.mem = auto_malloc (0x4000);
786   state->cart.sram.mem = auto_alloc_array(machine, UINT8, 0x4000);
787787
788788   if (size > 0x200000)
789789   {
r4679r4680
10461046   state->size = size;
10471047   state->mem = mem;
10481048
1049   p = auto_malloc (0x4000);
1049   p = auto_alloc_array(machine, UINT8, 0x4000);
10501050   memset (p, 0, 0x4000);
10511051   state->cart.sram.mem = p;
10521052   if (!state->sramfile)
r4679r4680
16181618   if (!strncmp ((char*)mem + 0x18, "PAC2", 4))
16191619   {
16201620      state->cart.fmpac.sram_support = 1;
1621      p = auto_malloc (0x4000);
1621      p = auto_alloc_array(machine, UINT8, 0x4000);
16221622      memset (p, 0, 0x2000);
16231623      memset (p + 0x2000, 0xff, 0x2000);
16241624      state->cart.fmpac.mem = p;
r4679r4680
21572157{
21582158   UINT8 *p;
21592159
2160   p = auto_malloc (0x20000);
2160   p = auto_alloc_array(machine, UINT8, 0x20000);
21612161   memset (p, 0, 0x20000);
21622162
21632163   state->mem = p;
r4679r4680
22622262      msx_cpu_setbank (machine, 5, state->mem + state->banks[2] * 0x2000);
22632263      msx_cpu_setbank (machine, 6, state->mem + state->banks[3] * 0x2000);
22642264      memory_install_read8_handler(space, 0x9800, 0x9fff, 0, 0,
2265         state->cart.sccp.scc_active ? soundcartridge_scc : SMH_BANK7);
2265         state->cart.sccp.scc_active ? soundcartridge_scc : SMH_BANK(7));
22662266      memory_install_read8_handler(space, 0xb800, 0xbfff, 0, 0,
2267         state->cart.sccp.sccp_active ? soundcartridge_sccp : SMH_BANK9);
2267         state->cart.sccp.sccp_active ? soundcartridge_sccp : SMH_BANK(9));
22682268      break;
22692269   case 3:
22702270      msx_cpu_setbank (machine, 7, state->mem + state->banks[0] * 0x2000);
src/mess/machine/pc1350.c
r4679r4680
122122   
123123   timer_set(machine, ATTOTIME_IN_SEC(1), NULL, 0, pc1350_power_up);
124124
125   memory_install_read8_handler(space, 0x6000, 0x6fff, 0, 0, SMH_BANK1);
126   memory_install_write8_handler(space, 0x6000, 0x6fff, 0, 0, SMH_BANK1);
125   memory_install_read8_handler(space, 0x6000, 0x6fff, 0, 0, SMH_BANK(1));
126   memory_install_write8_handler(space, 0x6000, 0x6fff, 0, 0, SMH_BANK(1));
127127   memory_set_bankptr(machine, 1, &mess_ram[0x0000]);
128128
129129   if (mess_ram_size >= 0x3000)
130130   {
131      memory_install_read8_handler(space, 0x4000, 0x5fff, 0, 0, SMH_BANK2);
132      memory_install_write8_handler(space, 0x4000, 0x5fff, 0, 0, SMH_BANK2);
131      memory_install_read8_handler(space, 0x4000, 0x5fff, 0, 0, SMH_BANK(2));
132      memory_install_write8_handler(space, 0x4000, 0x5fff, 0, 0, SMH_BANK(2));
133133      memory_set_bankptr(machine, 2, &mess_ram[0x1000]);
134134   }
135135   else
r4679r4680
140140
141141   if (mess_ram_size >= 0x5000)
142142   {
143      memory_install_read8_handler(space, 0x2000, 0x3fff, 0, 0, SMH_BANK3);
144      memory_install_write8_handler(space, 0x2000, 0x3fff, 0, 0, SMH_BANK3);
143      memory_install_read8_handler(space, 0x2000, 0x3fff, 0, 0, SMH_BANK(3));
144      memory_install_write8_handler(space, 0x2000, 0x3fff, 0, 0, SMH_BANK(3));
145145      memory_set_bankptr(machine, 3, &mess_ram[0x3000]);
146146   }
147147   else
src/mess/machine/gb.c
r4679r4680
319319   memory_set_bankptr(machine, 5, ROMMap[ROMBank00] ? ROMMap[ROMBank00] : gb_dummy_rom_bank );
320320   memory_set_bankptr(machine, 10, ROMMap[ROMBank00] ? ROMMap[ROMBank00] + 0x0100 : gb_dummy_rom_bank + 0x0100 );
321321
322   sgb_tile_data = auto_malloc( 0x2000 );
322   sgb_tile_data = auto_alloc_array_clear(machine, UINT8, 0x2000 );
323323   memset( sgb_tile_data, 0, 0x2000 );
324324
325325   /* Initialize the Sound Registers */
r4679r4680
14571457{
14581458   int I;
14591459
1460   gb_dummy_rom_bank = auto_malloc( 0x4000 );
1460   gb_dummy_rom_bank = auto_alloc_array( device->machine, UINT8, 0x4000 );
14611461   memset( gb_dummy_rom_bank, 0xFF, 0x4000 );
14621462
1463   gb_dummy_ram_bank = auto_malloc( 0x2000 );
1463   gb_dummy_ram_bank = auto_alloc_array( device->machine, UINT8, 0x2000 );
14641464   memset( gb_dummy_ram_bank, 0x00, 0x2000 );
14651465
14661466   for(I = 0; I < MAX_ROMBANK; I++)
r4679r4680
16321632   }
16331633
16341634   /* Claim memory */
1635   gb_cart = auto_malloc( filesize );
1635   gb_cart = auto_alloc_array( image->machine, UINT8, filesize );
16361636
16371637   /* Read cartridge */
16381638   if ( image_fread( image, gb_cart, filesize ) != filesize )
r4679r4680
18671867   if (RAMBanks && MBCType)
18681868   {
18691869      /* Claim memory */
1870      gb_cart_ram = auto_malloc( RAMBanks * 0x2000 );
1870      gb_cart_ram = auto_alloc_array( image->machine, UINT8, RAMBanks * 0x2000 );
18711871
18721872      for (I = 0; I < RAMBanks; I++)
18731873      {
r4679r4680
18891889   /* If there's an RTC claim memory to store the RTC contents */
18901890   if ( CartType & TIMER )
18911891   {
1892      MBC3RTCData = auto_malloc( 0x2000 );
1892      MBC3RTCData = auto_alloc_array(image->machine, UINT8, 0x2000 );
18931893   }
18941894
18951895   if ( MBCType == MBC_TAMA5 )
18961896   {
1897      MBC3RTCData = auto_malloc( 0x2000 );
1897      MBC3RTCData = auto_alloc_array(image->machine, UINT8, 0x2000 );
18981898      memset( gbTama5Memory, 0xFF, sizeof(gbTama5Memory) );
18991899   }
19001900
r4679r4680
21742174   }
21752175
21762176   /* Claim memory */
2177   gb_cart = auto_malloc( filesize );
2177   gb_cart = auto_alloc_array(image->machine, UINT8, filesize);
21782178
21792179   /* Read cartridge */
21802180   if (image_fread (image, gb_cart, filesize) != filesize)
src/mess/machine/gamecom.c
r4679r4680
8282   /* intialize the empty dummy bank */
8383   if ( dummy_bank == NULL )
8484   {
85      dummy_bank = auto_malloc( 8 * 1024 );
85      dummy_bank = auto_alloc_array(machine, UINT8, 8 * 1024 );
8686   }
8787   memset( dummy_bank, 0xff, 8 * 1024 );
8888   cartridge = NULL;
r4679r4680
662662   /* allocate memory on first load of a cartridge */
663663   if ( cartridge1 == NULL )
664664   {
665      cartridge1 = auto_malloc( 2048 * 1024 );
665      cartridge1 = auto_alloc_array(image->machine, UINT8, 2048 * 1024 );
666666   }
667667   filesize = image_length( image );
668668   switch( filesize )
src/mess/machine/smartmed.c
r4679r4680
157157   smartmedia[id].page_total_size = get_UINT32BE(custom_header.page_total_size);
158158   smartmedia[id].num_pages = get_UINT32BE(custom_header.num_pages);
159159   smartmedia[id].log2_pages_per_block = get_UINT32BE(custom_header.log2_pages_per_block);
160   smartmedia[id].data_ptr = auto_malloc(smartmedia[id].page_total_size*smartmedia[id].num_pages);
160   smartmedia[id].data_ptr = auto_alloc_array(image->machine, UINT8, smartmedia[id].page_total_size*smartmedia[id].num_pages);
161161   smartmedia[id].mode = SM_M_INIT;
162162   smartmedia[id].pointer_mode = SM_PM_A;
163163   smartmedia[id].page_addr = 0;
r4679r4680
166166   if (!image_is_writable(image))
167167      smartmedia[id].status |= 0x80;
168168   smartmedia[id].accumulated_status = 0;
169   smartmedia[id].pagereg = auto_malloc(smartmedia[id].page_total_size);
169   smartmedia[id].pagereg = auto_alloc_array(image->machine, UINT8, smartmedia[id].page_total_size);
170170   smartmedia[id].id[0] = smartmedia[id].id[1] = 0;
171171
172172   image_fread(image, smartmedia[id].id, 2);
r4679r4680
202202   smartmedia[id].byte_addr = 0;
203203   smartmedia[id].status = 0x40;
204204   smartmedia[id].accumulated_status = 0;
205   smartmedia[id].pagereg = auto_malloc(smartmedia[id].page_total_size);
205   smartmedia[id].pagereg = auto_alloc_array(image->machine, UINT8, smartmedia[id].page_total_size);
206206   smartmedia[id].id[0] = smartmedia[id].id[1] = 0;
207207   smartmedia[id].mp_opcode = 0;
208208
src/mess/machine/radio86.c
r4679r4680
4040DRIVER_INIT(radioram)
4141{
4242   DRIVER_INIT_CALL(radio86);
43   radio_ram_disk = auto_malloc(0x20000);
43   radio_ram_disk = auto_alloc_array(machine, UINT8, 0x20000);
4444   memset(radio_ram_disk,0,0x20000);
4545}
4646static READ8_DEVICE_HANDLER (radio86_8255_portb_r2 )
src/mess/machine/advision.c
r4679r4680
3131   /* configure EA banking */
3232   memory_configure_bank(machine, 1, 0, 1, memory_region(machine, "bios"), 0);
3333   memory_configure_bank(machine, 1, 1, 1, memory_region(machine, I8048_TAG), 0);
34   memory_install_readwrite8_handler(cputag_get_address_space(machine, I8048_TAG, ADDRESS_SPACE_PROGRAM), 0x0000, 0x03ff, 0, 0, SMH_BANK1, SMH_BANK1);
34   memory_install_readwrite8_handler(cputag_get_address_space(machine, I8048_TAG, ADDRESS_SPACE_PROGRAM), 0x0000, 0x03ff, 0, 0, SMH_BANK(1), SMH_BANK(1));
3535   memory_set_bank(machine, 1, 0);
3636}
3737
r4679r4680
4040   advision_state *state = machine->driver_data;
4141
4242   /* allocate external RAM */
43   state->extram = auto_malloc(0x400);
43   state->extram = auto_alloc_array(machine, UINT8, 0x400);
4444
4545   /* enable internal ROM */
4646   cputag_set_input_line(machine, I8048_TAG, MCS48_INPUT_EA, CLEAR_LINE);
src/mess/machine/b2m.c
r4679r4680
6363   UINT8 *rom;
6464   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
6565   
66   memory_install_write8_handler(space, 0x0000, 0x27ff, 0, 0, SMH_BANK1);
67   memory_install_write8_handler(space, 0x2800, 0x2fff, 0, 0, SMH_BANK2);
68   memory_install_write8_handler(space, 0x3000, 0x6fff, 0, 0, SMH_BANK3);
69   memory_install_write8_handler(space, 0x7000, 0xdfff, 0, 0, SMH_BANK4);
70   memory_install_write8_handler(space, 0xe000, 0xffff, 0, 0, SMH_BANK5);
66   memory_install_write8_handler(space, 0x0000, 0x27ff, 0, 0, SMH_BANK(1));
67   memory_install_write8_handler(space, 0x2800, 0x2fff, 0, 0, SMH_BANK(2));
68   memory_install_write8_handler(space, 0x3000, 0x6fff, 0, 0, SMH_BANK(3));
69   memory_install_write8_handler(space, 0x7000, 0xdfff, 0, 0, SMH_BANK(4));
70   memory_install_write8_handler(space, 0xe000, 0xffff, 0, 0, SMH_BANK(5));
7171
7272   rom = memory_region(machine, "maincpu");
7373   switch(bank) {
src/mess/machine/aim65.c
r4679r4680
171171   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
172172
173173   /* Init RAM */
174   memory_install_readwrite8_handler(space, 0, mess_ram_size - 1, 0, 0, SMH_BANK1, SMH_BANK1);
174   memory_install_readwrite8_handler(space, 0, mess_ram_size - 1, 0, 0, SMH_BANK(1), SMH_BANK(1));
175175   memory_set_bankptr(machine, 1, mess_ram);
176176
177177   if (mess_ram_size < 4 * 1024)
src/mess/machine/vc1541.c
r4679r4680
14981498   offset_init (format);
14991499
15001500   /* Claim memory */
1501   temp_copy = auto_malloc(filesize);
1501   temp_copy = auto_alloc_array(machine, UINT8, filesize);
15021502
15031503   if ((image_fread( image, temp_copy, filesize ) != filesize) || !filesize)
15041504      return INIT_FAIL;
src/mess/machine/pmd85.c
r4679r4680
5959   }
6060   else
6161   {
62      memory_install_write8_handler(space, 0x0000, 0x0fff, 0, 0, SMH_BANK1);
63      memory_install_write8_handler(space, 0x1000, 0x1fff, 0, 0, SMH_BANK2);
64      memory_install_write8_handler(space, 0x2000, 0x2fff, 0, 0, SMH_BANK3);
65      memory_install_write8_handler(space, 0x3000, 0x3fff, 0, 0, SMH_BANK4);
66      memory_install_write8_handler(space, 0x4000, 0x7fff, 0, 0, SMH_BANK5);
62      memory_install_write8_handler(space, 0x0000, 0x0fff, 0, 0, SMH_BANK(1));
63      memory_install_write8_handler(space, 0x1000, 0x1fff, 0, 0, SMH_BANK(2));
64      memory_install_write8_handler(space, 0x2000, 0x2fff, 0, 0, SMH_BANK(3));
65      memory_install_write8_handler(space, 0x3000, 0x3fff, 0, 0, SMH_BANK(4));
66      memory_install_write8_handler(space, 0x4000, 0x7fff, 0, 0, SMH_BANK(5));
6767
68      memory_install_read8_handler(space, 0x1000, 0x1fff, 0, 0, SMH_BANK2);
69      memory_install_read8_handler(space, 0x3000, 0x3fff, 0, 0, SMH_BANK4);
68      memory_install_read8_handler(space, 0x1000, 0x1fff, 0, 0, SMH_BANK(2));
69      memory_install_read8_handler(space, 0x3000, 0x3fff, 0, 0, SMH_BANK(4));
7070
7171      memory_set_bankptr(machine, 1, mess_ram);
7272      memory_set_bankptr(machine, 2, mess_ram + 0x1000);
r4679r4680
101101   }
102102   else
103103   {
104      memory_install_write8_handler(space, 0x0000, 0x0fff, 0, 0, SMH_BANK1);
105      memory_install_write8_handler(space, 0x2000, 0x2fff, 0, 0, SMH_BANK3);
104      memory_install_write8_handler(space, 0x0000, 0x0fff, 0, 0, SMH_BANK(1));
105      memory_install_write8_handler(space, 0x2000, 0x2fff, 0, 0, SMH_BANK(3));
106106
107107      memory_set_bankptr(machine, 1, mess_ram);
108108      memory_set_bankptr(machine, 2, mess_ram + 0x1000);
r4679r4680
169169   }
170170   else
171171   {
172      memory_install_write8_handler(space, 0x0000, 0x0fff, 0, 0, SMH_BANK1);
173      memory_install_write8_handler(space, 0x1000, 0x33ff, 0, 0, SMH_BANK2);
174      memory_install_write8_handler(space, 0x3400, 0x3fff, 0, 0, SMH_BANK3);
172      memory_install_write8_handler(space, 0x0000, 0x0fff, 0, 0, SMH_BANK(1));
173      memory_install_write8_handler(space, 0x1000, 0x33ff, 0, 0, SMH_BANK(2));
174      memory_install_write8_handler(space, 0x3400, 0x3fff, 0, 0, SMH_BANK(3));
175175
176176      memory_set_bankptr(machine, 1, mess_ram);
177177      memory_set_bankptr(machine, 2, mess_ram + 0x1000);
r4679r4680
197197   }
198198   else
199199   {
200      memory_install_write8_handler(space, 0x0000, 0x3fff, 0, 0, SMH_BANK1);
200      memory_install_write8_handler(space, 0x0000, 0x3fff, 0, 0, SMH_BANK(1));
201201
202202      memory_set_bankptr(machine, 1, mess_ram);
203203      memory_set_bankptr(machine, 2, mess_ram + 0x4000);
r4679r4680
220220   }
221221   else
222222   {
223      memory_install_write8_handler(space, 0x0000, 0x3fff, 0, 0, SMH_BANK1);
223      memory_install_write8_handler(space, 0x0000, 0x3fff, 0, 0, SMH_BANK(1));
224224      memory_set_bankptr(machine, 1, mess_ram);
225225      memory_set_bankptr(machine, 2, mess_ram + 0x4000);
226226   }
src/mess/machine/sst39vfx.c
r4679r4680
6565      case TYPE_SST39VF020  : flash->size = 256 * 1024; break;
6666      case TYPE_SST39VF400A : flash->size = 512 * 1024; break;
6767   }
68   flash->data = auto_malloc( flash->size);
68   flash->data = auto_alloc_array(device->machine, UINT8, flash->size);
6969#ifdef LSB_FIRST
7070   if (config->cpu_endianess != ENDIANNESS_LITTLE) flash->swap = config->cpu_datawidth / 8; else flash->swap = 0;
7171#else
src/mess/machine/c128.c
r4679r4680
233233   }
234234   else
235235   {
236      rh = SMH_BANK5;
236      rh = SMH_BANK(5);
237237      c128_write_io = 0;
238238      if ((!charen && (loram || hiram)))
239239         memory_set_bankptr (machine, 13, c64_chargen);
r4679r4680
476476      else
477477      {
478478         c128_write_io = 0;
479         rh = SMH_BANK13;
479         rh = SMH_BANK(13);
480480      }
481481      c128_set_m8502_read_handler(machine, 0xd000, 0xdfff, rh);
482482
src/mess/machine/ay3600.c
r4679r4680
322322int AY3600_init(running_machine *machine)
323323{
324324   /* Init the key remapping table */
325   ay3600_keys = auto_malloc(AY3600_KEYS_LENGTH * sizeof(*ay3600_keys));
326   memset(ay3600_keys, 0, AY3600_KEYS_LENGTH * sizeof(*ay3600_keys));
325   ay3600_keys = auto_alloc_array_clear(machine, unsigned int, AY3600_KEYS_LENGTH);
327326
328327   /* We poll the keyboard periodically to scan the keys.  This is
329328   actually consistent with how the AY-3600 keyboard controller works. */
src/mess/machine/pet.c
r4679r4680
418418      }
419419      else
420420      {
421         rh = SMH_BANK7;
421         rh = SMH_BANK(7);
422422         if (!(data & 2))
423            wh = SMH_BANK7;
423            wh = SMH_BANK(7);
424424         else
425425            wh = SMH_NOP;
426426      }
427427      memory_install_read8_handler(space, 0xe800, 0xefff, 0, 0, rh);
428428      memory_install_write8_handler(space, 0xe800, 0xefff, 0, 0, wh);
429429
430      memory_install_write8_handler(space, 0xc000, 0xe7ff, 0, 0, (data & 2) == 0 ? SMH_BANK6 : SMH_NOP);
431      memory_install_write8_handler(space, 0xf000, 0xffef, 0, 0, (data & 2) == 0 ? SMH_BANK8 : SMH_NOP);
432      memory_install_write8_handler(space, 0xfff1, 0xffff, 0, 0, (data & 2) == 0 ? SMH_BANK9 : SMH_NOP);
430      memory_install_write8_handler(space, 0xc000, 0xe7ff, 0, 0, (data & 2) == 0 ? SMH_BANK(6) : SMH_NOP);
431      memory_install_write8_handler(space, 0xf000, 0xffef, 0, 0, (data & 2) == 0 ? SMH_BANK(8) : SMH_NOP);
432      memory_install_write8_handler(space, 0xfff1, 0xffff, 0, 0, (data & 2) == 0 ? SMH_BANK(9) : SMH_NOP);
433433
434434      if (data & 0x20)
435435      {
r4679r4680
440440      else
441441      {
442442         if (!(data & 1))
443            wh = SMH_BANK1;
443            wh = SMH_BANK(1);
444444         else
445445            wh = SMH_NOP;
446446      }
447447      memory_install_write8_handler(space, 0x8000, 0x8fff, 0, 0, wh);
448448
449      memory_install_write8_handler(space, 0x9000, 0x9fff, 0, 0, (data & 1) == 0 ? SMH_BANK2 : SMH_NOP);
450      memory_install_write8_handler(space, 0xa000, 0xafff, 0, 0, (data & 1) == 0 ? SMH_BANK3 : SMH_NOP);
451      memory_install_write8_handler(space, 0xb000, 0xbfff, 0, 0, (data & 1) == 0 ? SMH_BANK4 : SMH_NOP);
449      memory_install_write8_handler(space, 0x9000, 0x9fff, 0, 0, (data & 1) == 0 ? SMH_BANK(2) : SMH_NOP);
450      memory_install_write8_handler(space, 0xa000, 0xafff, 0, 0, (data & 1) == 0 ? SMH_BANK(3) : SMH_NOP);
451      memory_install_write8_handler(space, 0xb000, 0xbfff, 0, 0, (data & 1) == 0 ? SMH_BANK(4) : SMH_NOP);
452452
453453
454454      if (data & 4)
r4679r4680
595595   state->superpet = 0;
596596   state->cbm8096 = 0;
597597
598   memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x0000, mess_ram_size - 1, 0, 0, SMH_BANK10);
599   memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x0000, mess_ram_size - 1, 0, 0, SMH_BANK10);
598   memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x0000, mess_ram_size - 1, 0, 0, SMH_BANK(10));
599   memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x0000, mess_ram_size - 1, 0, 0, SMH_BANK(10));
600600   memory_set_bankptr (machine, 10, pet_memory);
601601
602602   if (mess_ram_size < 0x8000)
r4679r4680
658658   pet_common_driver_init(machine);
659659   state->superpet = 1;
660660
661   superpet_memory = auto_malloc(0x10000);
661   superpet_memory = auto_alloc_array(machine, UINT8, 0x10000);
662662
663663   memory_configure_bank(machine, 1, 0, 16, superpet_memory, 0x1000);
664664   memory_set_bank(machine, 1, 0);
src/mess/machine/c16.c
r4679r4680
521521      memory_set_bankptr (machine, 6, mess_ram + (0x8000 % mess_ram_size));
522522      memory_set_bankptr (machine, 7, mess_ram + (0xc000 % mess_ram_size));
523523
524      memory_install_write8_handler(space, 0xff20, 0xff3d, 0, 0, SMH_BANK10);
525      memory_install_write8_handler(space, 0xff40, 0xffff, 0, 0, SMH_BANK11);
524      memory_install_write8_handler(space, 0xff20, 0xff3d, 0, 0, SMH_BANK(10));
525      memory_install_write8_handler(space, 0xff40, 0xffff, 0, 0, SMH_BANK(11));
526526      memory_set_bankptr (machine, 10, mess_ram + (0xff20 % mess_ram_size));
527527      memory_set_bankptr (machine, 11, mess_ram + (0xff40 % mess_ram_size));
528528
r4679r4680
530530   }
531531   else
532532   {
533      memory_install_write8_handler(space, 0x4000, 0xfcff, 0, 0, SMH_BANK10);
533      memory_install_write8_handler(space, 0x4000, 0xfcff, 0, 0, SMH_BANK(10));
534534      memory_set_bankptr (machine, 10, mess_ram + (0x4000 % mess_ram_size));
535535
536536      ted7360_set_dma (ted7360_dma_read, ted7360_dma_read_rom);
src/mess/machine/oric.c
r4679r4680
468468
469469   memory_install_read8_handler(space, 0x0300, 0x030f, 0, 0, oric_IO_r);
470470   memory_install_read8_device_handler(space, fdc, 0x0310, 0x031f, 0, 0, applefdc_r);
471   memory_install_read8_handler(space, 0x0320, 0x03ff, 0, 0, SMH_BANK4);
471   memory_install_read8_handler(space, 0x0320, 0x03ff, 0, 0, SMH_BANK(4));
472472
473473   memory_install_write8_handler(space, 0x0300, 0x030f, 0, 0, oric_IO_w);
474474   memory_install_write8_device_handler(space, fdc, 0x0310, 0x031f, 0, 0, applefdc_w);
r4679r4680
484484   {
485485      switch(i) {
486486      case 1:
487         memory_install_read8_handler(space, 0xc000, 0xdfff, 0, 0, rd ? SMH_BANK1 : SMH_NOP);
488         memory_install_write8_handler(space, 0xc000, 0xdfff, 0, 0, wr ? SMH_BANK5 : SMH_UNMAP);
487         memory_install_read8_handler(space, 0xc000, 0xdfff, 0, 0, rd ? SMH_BANK(1) : SMH_NOP);
488         memory_install_write8_handler(space, 0xc000, 0xdfff, 0, 0, wr ? SMH_BANK(5) : SMH_UNMAP);
489489         break;
490490      case 2:
491         memory_install_read8_handler(space, 0xe000, 0xf7ff, 0, 0, rd ? SMH_BANK2 : SMH_NOP);
492         memory_install_write8_handler(space, 0xe000, 0xf7ff, 0, 0, wr ? SMH_BANK6 : SMH_UNMAP);
491         memory_install_read8_handler(space, 0xe000, 0xf7ff, 0, 0, rd ? SMH_BANK(2) : SMH_NOP);
492         memory_install_write8_handler(space, 0xe000, 0xf7ff, 0, 0, wr ? SMH_BANK(6) : SMH_UNMAP);
493493         break;
494494      case 3:
495         memory_install_read8_handler(space, 0xf800, 0xffff, 0, 0, rd ? SMH_BANK3 : SMH_NOP);
495         memory_install_read8_handler(space, 0xf800, 0xffff, 0, 0, rd ? SMH_BANK(3) : SMH_NOP);
496496         break;
497497      }
498498   }
r4679r4680
562562
563563   memory_install_read8_handler(space, 0x0300, 0x030f, 0, 0, oric_IO_r);
564564   memory_install_read8_device_handler(space, fdc, 0x0310, 0x031f, 0, 0, applefdc_r);
565   memory_install_read8_handler(space, 0x0320, 0x03ff, 0, 0, SMH_BANK4);
565   memory_install_read8_handler(space, 0x0320, 0x03ff, 0, 0, SMH_BANK(4));
566566
567567   memory_install_write8_handler(space, 0x0300, 0x030f, 0, 0, oric_IO_w);
568568   memory_install_write8_device_handler(space, fdc, 0x0310, 0x031f, 0, 0, applefdc_w);
r4679r4680
11101110
11111111   oric_is_telestrat = 0;
11121112
1113   oric_ram_0x0c000 = auto_malloc(16384);
1113   oric_ram_0x0c000 = auto_alloc_array(machine, char, 16384);
11141114}
11151115
11161116
r4679r4680
13391339   {
13401340      case TELESTRAT_MEM_BLOCK_RAM:
13411341      {
1342         rh = SMH_BANK1;
1343         wh = SMH_BANK2;
1342         rh = SMH_BANK(1);
1343         wh = SMH_BANK(2);
13441344         memory_set_bankptr(machine, 1, mem_block->ptr);
13451345         memory_set_bankptr(machine, 2, mem_block->ptr);
13461346      }
r4679r4680
13481348
13491349      case TELESTRAT_MEM_BLOCK_ROM:
13501350      {
1351         rh = SMH_BANK1;
1351         rh = SMH_BANK(1);
13521352         wh = SMH_NOP;
13531353         memory_set_bankptr(machine, 1, mem_block->ptr);
13541354      }
r4679r4680
14671467
14681468   /* initialise overlay ram */
14691469   telestrat_blocks[0].MemType = TELESTRAT_MEM_BLOCK_RAM;
1470   telestrat_blocks[0].ptr = (unsigned char *) auto_malloc(16384);
1470   telestrat_blocks[0].ptr = auto_alloc_array(machine, UINT8, 16384);
14711471
14721472   telestrat_blocks[1].MemType = TELESTRAT_MEM_BLOCK_RAM;
1473   telestrat_blocks[1].ptr = (unsigned char *) auto_malloc(16384);
1473   telestrat_blocks[1].ptr = auto_alloc_array(machine, UINT8, 16384);
14741474   telestrat_blocks[2].MemType = TELESTRAT_MEM_BLOCK_RAM;
1475   telestrat_blocks[2].ptr = (unsigned char *) auto_malloc(16384);
1475   telestrat_blocks[2].ptr = auto_alloc_array(machine, UINT8, 16384);
14761476
14771477   /* initialise default cartridge */
14781478   telestrat_blocks[3].MemType = TELESTRAT_MEM_BLOCK_ROM;
14791479   telestrat_blocks[3].ptr = memory_region(machine, "maincpu")+0x010000;
14801480
14811481   telestrat_blocks[4].MemType = TELESTRAT_MEM_BLOCK_RAM;
1482   telestrat_blocks[4].ptr = (unsigned char *) auto_malloc(16384);
1482   telestrat_blocks[4].ptr = auto_alloc_array(machine, UINT8, 16384);
14831483
14841484   /* initialise default cartridge */
14851485   telestrat_blocks[5].MemType = TELESTRAT_MEM_BLOCK_ROM;
src/mess/machine/vector06.c
r4679r4680
214214   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
215215   
216216   cpu_set_irq_callback(cputag_get_cpu(machine, "maincpu"), vector06_irq_callback);
217   memory_install_read8_handler (space, 0x0000, 0x7fff, 0, 0, SMH_BANK1);
218   memory_install_write8_handler(space, 0x0000, 0x7fff, 0, 0, SMH_BANK2);
219   memory_install_read8_handler (space, 0x8000, 0xffff, 0, 0, SMH_BANK3);
220   memory_install_write8_handler(space, 0x8000, 0xffff, 0, 0, SMH_BANK4);
217   memory_install_read8_handler (space, 0x0000, 0x7fff, 0, 0, SMH_BANK(1));
218   memory_install_write8_handler(space, 0x0000, 0x7fff, 0, 0, SMH_BANK(2));
219   memory_install_read8_handler (space, 0x8000, 0xffff, 0, 0, SMH_BANK(3));
220   memory_install_write8_handler(space, 0x8000, 0xffff, 0, 0, SMH_BANK(4));
221221
222222   memory_set_bankptr(machine, 1, memory_region(machine, "maincpu") + 0x10000);
223223   memory_set_bankptr(machine, 2, mess_ram + 0x0000);
src/mess/machine/99_usbsm.c
r4679r4680
7474*/
7575void ti99_usbsm_init(running_machine *machine)
7676{
77   ti99_usbsm_RAM = auto_malloc(0x100000);
77   ti99_usbsm_RAM = auto_alloc_array(machine, UINT16, 0x100000/2);
7878}
7979
8080/*
src/mess/machine/electron.c
r4679r4680
214214         }
215215         else
216216         {
217            memory_install_read8_handler( space, 0x8000, 0xbfff, 0, 0, SMH_BANK2 );
217            memory_install_read8_handler( space, 0x8000, 0xbfff, 0, 0, SMH_BANK(2) );
218218         }
219219         memory_set_bank(space->machine, 2, electron_ula.rompage);
220220      }
src/mess/machine/pc_hdc.c
r4679r4680
184184   hdc_control = 0;
185185   hdc_set_irq = hdc_set_irq_func;
186186
187   buffer = auto_malloc(17*4*512);
187   buffer = auto_alloc_array(machine, UINT8, 17*4*512);
188188
189189   /* init for all boards */
190190   for (i = 0; i < MAX_BOARD; i++)
src/mess/machine/orion.c
r4679r4680
339339   bank_select = (orionz80_dispatcher & 0x0c) >> 2;
340340   segment_select = orionz80_dispatcher & 0x03;
341341   
342   memory_install_write8_handler(space, 0x0000, 0x3fff, 0, 0, SMH_BANK1);
342   memory_install_write8_handler(space, 0x0000, 0x3fff, 0, 0, SMH_BANK(1));
343343   if ((orionz80_dispatcher & 0x80)==0)
344344   { // dispatcher on
345345      memory_set_bankptr(machine, 1, mess_ram + 0x10000 * bank_select + segment_select * 0x4000 );     
r4679r4680
397397   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
398398   
399399   memory_install_write8_handler(space, 0x0000, 0x3fff, 0, 0, SMH_UNMAP);
400   memory_install_write8_handler(space, 0x4000, 0xefff, 0, 0, SMH_BANK2);
401   memory_install_write8_handler(space, 0xf000, 0xf3ff, 0, 0, SMH_BANK3);
400   memory_install_write8_handler(space, 0x4000, 0xefff, 0, 0, SMH_BANK(2));
401   memory_install_write8_handler(space, 0xf000, 0xf3ff, 0, 0, SMH_BANK(3));
402402
403403   memory_install_write8_handler(space, 0xf400, 0xf4ff, 0, 0, orion128_system_w);
404404   memory_install_write8_handler(space, 0xf500, 0xf5ff, 0, 0, orion128_romdisk_w);
r4679r4680
503503   {
504504      page = orionpro_128_page & 7;
505505   }
506   memory_install_write8_handler(space, 0x0000, 0x1fff, 0, 0, SMH_BANK1);
507   memory_install_write8_handler(space, 0x2000, 0x3fff, 0, 0, SMH_BANK2);
508   memory_install_write8_handler(space, 0x4000, 0x7fff, 0, 0, SMH_BANK3);
509   memory_install_write8_handler(space, 0x8000, 0xbfff, 0, 0, SMH_BANK4);
510   memory_install_write8_handler(space, 0xc000, 0xefff, 0, 0, SMH_BANK5);
511   memory_install_write8_handler(space, 0xf000, 0xf3ff, 0, 0, SMH_BANK6);
512   memory_install_write8_handler(space, 0xf400, 0xf7ff, 0, 0, SMH_BANK7);
513   memory_install_write8_handler(space, 0xf800, 0xffff, 0, 0, SMH_BANK8);
506   memory_install_write8_handler(space, 0x0000, 0x1fff, 0, 0, SMH_BANK(1));
507   memory_install_write8_handler(space, 0x2000, 0x3fff, 0, 0, SMH_BANK(2));
508   memory_install_write8_handler(space, 0x4000, 0x7fff, 0, 0, SMH_BANK(3));
509   memory_install_write8_handler(space, 0x8000, 0xbfff, 0, 0, SMH_BANK(4));
510   memory_install_write8_handler(space, 0xc000, 0xefff, 0, 0, SMH_BANK(5));
511   memory_install_write8_handler(space, 0xf000, 0xf3ff, 0, 0, SMH_BANK(6));
512   memory_install_write8_handler(space, 0xf400, 0xf7ff, 0, 0, SMH_BANK(7));
513   memory_install_write8_handler(space, 0xf800, 0xffff, 0, 0, SMH_BANK(8));
514514   
515515   
516516   if ((orionpro_dispatcher & 0x01)==0x00)
src/mess/machine/amigakbd.c
r4679r4680
101101void amigakbd_init( running_machine *machine )
102102{
103103   /* allocate a keyboard buffer */
104   key_buf = auto_malloc( KEYBOARD_BUFFER_SIZE );
104   key_buf = auto_alloc_array(machine, UINT8, KEYBOARD_BUFFER_SIZE );
105105   key_buf_pos = 0;
106106   key_cur_pos = 0;
107107   kbd_timer = timer_alloc(machine, kbd_update_callback, NULL);
src/mess/machine/abcbus.c
r4679r4680
2121   /* create a linked list of devices */
2222   for ( ; daisy->devtype != NULL; daisy++)
2323   {
24      *tailptr = auto_malloc(sizeof(**tailptr));
24      *tailptr = auto_alloc(machine, abcbus_daisy_state);
2525      (*tailptr)->next = NULL;
2626      (*tailptr)->device = devtag_get_device(machine, device_inherit_tag(tempstring, cputag, daisy->devname));
2727      if ((*tailptr)->device == NULL)
src/mess/machine/a7800.c
r4679r4680
8787   memory_set_bankptr(machine, 7, &ROM[0x2000]);      /* MAINRAM */
8888
8989   /* Brutal hack put in as a consequence of new memory system; fix this */
90   memory_install_read8_handler(space, 0x0480, 0x04FF, 0, 0, SMH_BANK10);
91   memory_install_write8_handler(space, 0x0480, 0x04FF, 0, 0, SMH_BANK10);
90   memory_install_read8_handler(space, 0x0480, 0x04FF, 0, 0, SMH_BANK(10));
91   memory_install_write8_handler(space, 0x0480, 0x04FF, 0, 0, SMH_BANK(10));
9292   memory_set_bankptr(machine, 10, ROM + 0x0480);
93   memory_install_read8_handler(space, 0x1800, 0x27FF, 0, 0, SMH_BANK11);
94   memory_install_write8_handler(space, 0x1800, 0x27FF, 0, 0, SMH_BANK11);
93   memory_install_read8_handler(space, 0x1800, 0x27FF, 0, 0, SMH_BANK(11));
94   memory_install_write8_handler(space, 0x1800, 0x27FF, 0, 0, SMH_BANK(11));
9595   memory_set_bankptr(machine, 11, ROM + 0x1800);
9696}
9797
r4679r4680
207207   a7800_cart_bkup = NULL;
208208
209209   /* Allocate memory for BIOS bank switching */
210   a7800_bios_bkup = (UINT8*) auto_malloc(0x4000);
211   a7800_cart_bkup = (UINT8*) auto_malloc(0x4000);
210   a7800_bios_bkup = auto_alloc_array(device->machine, UINT8, 0x4000);
211   a7800_cart_bkup = auto_alloc_array(device->machine, UINT8, 0x4000);
212212
213213   /* save the BIOS so we can switch it in and out */
214214   memcpy( a7800_bios_bkup, memory + 0xC000, 0x4000 );
src/mess/machine/nascom1.c
r4679r4680
322322
323323   case 16 * 1024:
324324      memory_install_readwrite8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM),
325         0x1400, 0x4fff, 0, 0, SMH_BANK1, SMH_BANK1);
325         0x1400, 0x4fff, 0, 0, SMH_BANK(1), SMH_BANK(1));
326326      memory_install_readwrite8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM),
327327         0x5000, 0xafff, 0, 0, SMH_NOP, SMH_NOP);
328328      memory_set_bankptr(machine, 1, mess_ram);
r4679r4680
330330
331331   case 32 * 1024:
332332      memory_install_readwrite8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM),
333         0x1400, 0x8fff, 0, 0, SMH_BANK1, SMH_BANK1);
333         0x1400, 0x8fff, 0, 0, SMH_BANK(1), SMH_BANK(1));
334334      memory_install_readwrite8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM),
335335         0x9000, 0xafff, 0, 0, SMH_NOP, SMH_NOP);
336336      memory_set_bankptr(machine, 1, mess_ram);
r4679r4680
338338
339339   case 40 * 1024:
340340      memory_install_readwrite8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM),
341         0x1400, 0xafff, 0, 0, SMH_BANK1, SMH_BANK1);
341         0x1400, 0xafff, 0, 0, SMH_BANK(1), SMH_BANK(1));
342342      memory_set_bankptr(machine, 1, mess_ram);
343343      break;
344344   }
src/mess/machine/amigacrt.c
r4679r4680
142142   }
143143
144144   /* setup the cart ram */
145   ar_ram = auto_malloc(0x4000);
145   ar_ram = auto_alloc_array(machine, UINT8, 0x4000);
146146   memset(ar_ram, 0, 0x4000);
147147
148148   /* Install ROM */
149   memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xf00000, 0xf7ffff, 0, 0, SMH_BANK2);
149   memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xf00000, 0xf7ffff, 0, 0, SMH_BANK(2));
150150   memory_install_write16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xf00000, 0xf7ffff, 0, 0, SMH_ROM);
151151
152152   /* Install RAM */
153   memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x9fc000, 0x9fffff, 0, 0, SMH_BANK3);
154   memory_install_write16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x9fc000, 0x9fffff, 0, 0, SMH_BANK3);
153   memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x9fc000, 0x9fffff, 0, 0, SMH_BANK(3));
154   memory_install_write16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x9fc000, 0x9fffff, 0, 0, SMH_BANK(3));
155155
156156   /* Configure Banks */
157157   memory_set_bankptr(machine, 2, memory_region(machine, "user2"));
r4679r4680
236236         }
237237
238238         /* overlay disabled, map RAM on 0x000000 */
239         memory_install_write16_handler(space, 0x000000, amiga_chip_ram_size - 1, 0, mirror_mask, SMH_BANK1);
239         memory_install_write16_handler(space, 0x000000, amiga_chip_ram_size - 1, 0, mirror_mask, SMH_BANK(1));
240240      }
241241   }
242242
r4679r4680
350350   }
351351
352352   /* setup the cart ram */
353   ar_ram = auto_malloc(0x10000);
353   ar_ram = auto_alloc_array_clear(machine, UINT8,0x10000);
354354
355   memset(ar_ram, 0, 0x10000);
356
357355   if ( ar3 )
358356   {
359357      mirror = 0;
r4679r4680
361359   }
362360
363361   /* Install ROM */
364   memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x400000, 0x400000+size, 0, mirror, SMH_BANK2);
362   memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x400000, 0x400000+size, 0, mirror, SMH_BANK(2));
365363   memory_install_write16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x400000, 0x400000+size, 0, mirror, SMH_ROM);
366364
367365   /* Install RAM */
368   memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x440000, 0x44ffff, 0, 0, SMH_BANK3);
369   memory_install_write16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x440000, 0x44ffff, 0, 0, SMH_BANK3);
366   memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x440000, 0x44ffff, 0, 0, SMH_BANK(3));
367   memory_install_write16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x440000, 0x44ffff, 0, 0, SMH_BANK(3));
370368
371369   /* Install Custom chip monitor */
372370//   memory_install_read16_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xdff000, 0xdff1ff, 0, 0, amiga_ar23_custom_r);
src/mess/machine/osborne1.c
r4679r4680
518518{
519519   memset( &osborne1, 0, sizeof( osborne1 ) );
520520
521   osborne1.empty_4K = auto_malloc( 0x1000 );
521   osborne1.empty_4K = auto_alloc_array(machine, UINT8, 0x1000 );
522522   memset( osborne1.empty_4K, 0xFF, 0x1000 );
523523
524524   /* Configure the 6850 ACIA */
src/mess/machine/vtech1.c
r4679r4680
9393      case 22 * 1024:
9494      case 32 * 1024:
9595         /* install 16KB memory expansion */
96         memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), base, base + 0x3fff, 0, 0, SMH_BANK2);
97         memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), base, base + 0x3fff, 0, 0, SMH_BANK2);
96         memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), base, base + 0x3fff, 0, 0, SMH_BANK(2));
97         memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), base, base + 0x3fff, 0, 0, SMH_BANK(2));
9898         memory_configure_bank(machine, 2, 0, 1, mess_ram + base - 0x7800, 0);
9999         memory_set_bank(machine, 2, 0);
100100
r4679r4680
107107         /* 64KB/4MB memory expansion */
108108
109109         /* install fixed first bank */
110         memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x8000, 0xbfff, 0, 0, SMH_BANK2);
111         memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x8000, 0xbfff, 0, 0, SMH_BANK2);
110         memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x8000, 0xbfff, 0, 0, SMH_BANK(2));
111         memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x8000, 0xbfff, 0, 0, SMH_BANK(2));
112112         memory_configure_bank(machine, 2, 0, 1, mess_ram + 0x800, 0);
113113         memory_set_bank(machine, 2, 0);
114114
115115         /* install the others, dynamically banked in */
116         memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xc000, 0xffff, 0, 0, SMH_BANK3);
117         memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xc000, 0xffff, 0, 0, SMH_BANK3);
116         memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xc000, 0xffff, 0, 0, SMH_BANK(3));
117         memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xc000, 0xffff, 0, 0, SMH_BANK(3));
118118         memory_configure_bank(machine, 3, 0, (mess_ram_size - 0x4800) / 0x4000, mess_ram + 0x4800, 0x4000);
119119         memory_set_bank(machine, 3, 0);
120120         break;
src/mess/machine/amstrad.c
r4679r4680
14011401      return pc;
14021402}
14031403
1404static void multiface_init(void)
1404static void multiface_init(running_machine *machine)
14051405{
14061406   /* after a reset the multiface is visible */
14071407   multiface_flags = MULTIFACE_VISIBLE;
14081408
14091409   /* allocate ram */
1410   multiface_ram = (unsigned char *)auto_malloc(8192);
1410   multiface_ram = auto_alloc_array(machine, UINT8, 8192);
14111411}
14121412
14131413/* call when a system reset is done */
r4679r4680
16621662      }
16631663      else
16641664      {
1665         memory_install_read8_handler(space, 0x4000, 0x5fff, 0, 0, SMH_BANK3);
1666         memory_install_read8_handler(space, 0x6000, 0x7fff, 0, 0, SMH_BANK4);
1667         memory_install_write8_handler(space, 0x4000, 0x5fff, 0, 0, SMH_BANK11);
1668         memory_install_write8_handler(space, 0x6000, 0x7fff, 0, 0, SMH_BANK12);
1665         memory_install_read8_handler(space, 0x4000, 0x5fff, 0, 0, SMH_BANK(3));
1666         memory_install_read8_handler(space, 0x6000, 0x7fff, 0, 0, SMH_BANK(4));
1667         memory_install_write8_handler(space, 0x4000, 0x5fff, 0, 0, SMH_BANK(11));
1668         memory_install_write8_handler(space, 0x6000, 0x7fff, 0, 0, SMH_BANK(12));
16691669      }
16701670
16711671      if(AmstradCPC_RamBanks[0] != NULL)
r4679r4680
32283228   amstrad_GateArray_RamConfiguration = 0;
32293229   amstrad_CRTC_HS_Counter = 2;
32303230
3231   memory_install_read8_handler(space, 0x0000, 0x1fff, 0, 0, SMH_BANK1);
3232   memory_install_read8_handler(space, 0x2000, 0x3fff, 0, 0, SMH_BANK2);
3231   memory_install_read8_handler(space, 0x0000, 0x1fff, 0, 0, SMH_BANK(1));
3232   memory_install_read8_handler(space, 0x2000, 0x3fff, 0, 0, SMH_BANK(2));
32333233
3234   memory_install_read8_handler(space, 0x4000, 0x5fff, 0, 0, SMH_BANK3);
3235   memory_install_read8_handler(space, 0x6000, 0x7fff, 0, 0, SMH_BANK4);
3234   memory_install_read8_handler(space, 0x4000, 0x5fff, 0, 0, SMH_BANK(3));
3235   memory_install_read8_handler(space, 0x6000, 0x7fff, 0, 0, SMH_BANK(4));
32363236
3237   memory_install_read8_handler(space, 0x8000, 0x9fff, 0, 0, SMH_BANK5);
3238   memory_install_read8_handler(space, 0xa000, 0xbfff, 0, 0, SMH_BANK6);
3237   memory_install_read8_handler(space, 0x8000, 0x9fff, 0, 0, SMH_BANK(5));
3238   memory_install_read8_handler(space, 0xa000, 0xbfff, 0, 0, SMH_BANK(6));
32393239
3240   memory_install_read8_handler(space, 0xc000, 0xdfff, 0, 0, SMH_BANK7);
3241   memory_install_read8_handler(space, 0xe000, 0xffff, 0, 0, SMH_BANK8);
3240   memory_install_read8_handler(space, 0xc000, 0xdfff, 0, 0, SMH_BANK(7));
3241   memory_install_read8_handler(space, 0xe000, 0xffff, 0, 0, SMH_BANK(8));
32423242
3243   memory_install_write8_handler(space, 0x0000, 0x1fff, 0, 0, SMH_BANK9);
3244   memory_install_write8_handler(space, 0x2000, 0x3fff, 0, 0, SMH_BANK10);
3243   memory_install_write8_handler(space, 0x0000, 0x1fff, 0, 0, SMH_BANK(9));
3244   memory_install_write8_handler(space, 0x2000, 0x3fff, 0, 0, SMH_BANK(10));
32453245
3246   memory_install_write8_handler(space, 0x4000, 0x5fff, 0, 0, SMH_BANK11);
3247   memory_install_write8_handler(space, 0x6000, 0x7fff, 0, 0, SMH_BANK12);
3246   memory_install_write8_handler(space, 0x4000, 0x5fff, 0, 0, SMH_BANK(11));
3247   memory_install_write8_handler(space, 0x6000, 0x7fff, 0, 0, SMH_BANK(12));
32483248
3249   memory_install_write8_handler(space, 0x8000, 0x9fff, 0, 0, SMH_BANK13);
3250   memory_install_write8_handler(space, 0xa000, 0xbfff, 0, 0, SMH_BANK14);
3249   memory_install_write8_handler(space, 0x8000, 0x9fff, 0, 0, SMH_BANK(13));
3250   memory_install_write8_handler(space, 0xa000, 0xbfff, 0, 0, SMH_BANK(14));
32513251
3252   memory_install_write8_handler(space, 0xc000, 0xdfff, 0, 0, SMH_BANK15);
3253   memory_install_write8_handler(space, 0xe000, 0xffff, 0, 0, SMH_BANK16);
3252   memory_install_write8_handler(space, 0xc000, 0xdfff, 0, 0, SMH_BANK(15));
3253   memory_install_write8_handler(space, 0xe000, 0xffff, 0, 0, SMH_BANK(16));
32543254
32553255   device_reset(cputag_get_cpu(space->machine, "maincpu"));
32563256   if ( amstrad_system_type == SYSTEM_CPC || amstrad_system_type == SYSTEM_ALESTE )
r4679r4680
33043304   amstrad_reset_machine(machine);
33053305//   amstrad_init_palette(machine);
33063306
3307   multiface_init();
3307   multiface_init(machine);
33083308
33093309}
33103310
src/mess/machine/sms.c
r4679r4680
10121012   /* Create a new memory region to hold the ROM. */
10131013   /* Make sure the region holds only complete (0x4000) rom banks */
10141014   sms_cartridge[index].size = (size&0x3FFF) ? (((size>>14)+1)<<14) : size;
1015   sms_cartridge[index].ROM = auto_malloc( sms_cartridge[index].size );
1015   sms_cartridge[index].ROM = auto_alloc_array(image->machine, UINT8, sms_cartridge[index].size );
10161016
1017   sms_cartridge[index].cartSRAM = auto_malloc( NVRAM_SIZE );
1017   sms_cartridge[index].cartSRAM = auto_alloc_array(image->machine, UINT8, NVRAM_SIZE );
10181018
10191019   /* Load ROM banks */
10201020   size = image_fread(image, sms_cartridge[index].ROM, size);
r4679r4680
10621062       {
10631063         sms_cartridge[index].features |= CF_ONCART_RAM;
10641064         sms_cartridge[index].ram_size = 0x2000;
1065         sms_cartridge[index].cartRAM = auto_malloc( sms_cartridge[index].ram_size );
1065         sms_cartridge[index].cartRAM = auto_alloc_array(image->machine, UINT8, sms_cartridge[index].ram_size );
10661066      }
10671067   }
10681068   else
r4679r4680
10961096   if ( sms_cartridge[index].features & CF_CODEMASTERS_MAPPER )
10971097   {
10981098      sms_cartridge[index].ram_size = 0x10000;
1099      sms_cartridge[index].cartRAM = auto_malloc( sms_cartridge[index].ram_size );
1099      sms_cartridge[index].cartRAM = auto_alloc_array(image->machine, UINT8, sms_cartridge[index].ram_size );
11001100      sms_cartridge[index].ram_page = 0;
11011101   }
11021102
src/mess/machine/llc.c
r4679r4680
124124   memory_install_write8_handler(space, 0x6000, 0xbfff, 0, 0, SMH_UNMAP);
125125   memory_set_bankptr(machine, 3, memory_region(machine, "maincpu") + 0x6000);   
126126
127   memory_install_write8_handler(space, 0xc000, 0xffff, 0, 0, SMH_BANK4);
127   memory_install_write8_handler(space, 0xc000, 0xffff, 0, 0, SMH_BANK(4));
128128   memory_set_bankptr(machine, 4, mess_ram + 0xc000);   
129129
130130}
r4679r4680
133133{   
134134   const address_space *mem_space = cputag_get_address_space(space->machine, "maincpu", ADDRESS_SPACE_PROGRAM);
135135   
136   memory_install_write8_handler(mem_space, 0x0000, 0xbfff, 0, 0, SMH_BANK1);
136   memory_install_write8_handler(mem_space, 0x0000, 0xbfff, 0, 0, SMH_BANK(1));
137137   memory_set_bankptr(space->machine, 1, mess_ram);
138138
139   memory_install_write8_handler(mem_space, 0x4000, 0x5fff, 0, 0, SMH_BANK2);
139   memory_install_write8_handler(mem_space, 0x4000, 0x5fff, 0, 0, SMH_BANK(2));
140140   memory_set_bankptr(space->machine, 2, mess_ram + 0x4000);   
141141
142   memory_install_write8_handler(mem_space, 0x6000, 0xbfff, 0, 0, SMH_BANK3);
142   memory_install_write8_handler(mem_space, 0x6000, 0xbfff, 0, 0, SMH_BANK(3));
143143   memory_set_bankptr(space->machine, 3, mess_ram + 0x6000);   
144144
145   memory_install_write8_handler(mem_space, 0xc000, 0xffff, 0, 0, SMH_BANK4);
145   memory_install_write8_handler(mem_space, 0xc000, 0xffff, 0, 0, SMH_BANK(4));
146146   memory_set_bankptr(space->machine, 4, mess_ram + 0xc000);   
147147
148148}
r4679r4680
155155      memory_install_write8_handler(mem_space, 0x4000, 0x5fff, 0, 0, SMH_UNMAP);
156156      memory_set_bankptr(space->machine, 2, memory_region(space->machine, "maincpu") + 0x10000);         
157157   } else {
158      memory_install_write8_handler(mem_space, 0x4000, 0x5fff, 0, 0, SMH_BANK2);
158      memory_install_write8_handler(mem_space, 0x4000, 0x5fff, 0, 0, SMH_BANK(2));
159159      memory_set_bankptr(space->machine, 2, mess_ram + 0x4000);   
160160   }
161161   
src/mess/machine/comx35.c
r4679r4680
370370      break;
371371
372372   case BANK_FLOPPY:
373      memory_install_readwrite8_handler(program, 0xc000, 0xdfff, 0, 0, SMH_BANK1, SMH_UNMAP);
373      memory_install_readwrite8_handler(program, 0xc000, 0xdfff, 0, 0, SMH_BANK(1), SMH_UNMAP);
374374      break;
375375
376376   case BANK_PRINTER_PARALLEL:
377      memory_install_readwrite8_handler(program, 0xc000, 0xc7ff, 0, 0, SMH_BANK1, SMH_UNMAP);
377      memory_install_readwrite8_handler(program, 0xc000, 0xc7ff, 0, 0, SMH_BANK(1), SMH_UNMAP);
378378      memory_install_readwrite8_handler(program, 0xc800, 0xdfff, 0, 0, SMH_UNMAP, SMH_UNMAP);
379379      break;
380380
381381   case BANK_PRINTER_PARALLEL_FM:
382      memory_install_readwrite8_handler(program, 0xc000, 0xcfff, 0, 0, SMH_BANK1, SMH_UNMAP);
382      memory_install_readwrite8_handler(program, 0xc000, 0xcfff, 0, 0, SMH_BANK(1), SMH_UNMAP);
383383      memory_install_readwrite8_handler(program, 0xd000, 0xdfff, 0, 0, SMH_UNMAP, SMH_UNMAP);
384384      break;
385385
386386   case BANK_PRINTER_SERIAL:
387      memory_install_readwrite8_handler(program, 0xc000, 0xc7ff, 0, 0, SMH_BANK1, SMH_UNMAP);
387      memory_install_readwrite8_handler(program, 0xc000, 0xc7ff, 0, 0, SMH_BANK(1), SMH_UNMAP);
388388      memory_install_readwrite8_handler(program, 0xc800, 0xdfff, 0, 0, SMH_UNMAP, SMH_UNMAP);
389389      break;
390390
391391   case BANK_PRINTER_THERMAL:
392      memory_install_readwrite8_handler(program, 0xc000, 0xcfff, 0, 0, SMH_BANK1, SMH_UNMAP);
392      memory_install_readwrite8_handler(program, 0xc000, 0xcfff, 0, 0, SMH_BANK(1), SMH_UNMAP);
393393      memory_install_readwrite8_handler(program, 0xd000, 0xdfff, 0, 0, SMH_UNMAP, SMH_UNMAP);
394394      break;
395395
r4679r4680
401401      {
402402         const device_config *mc6845 = devtag_get_device(machine, MC6845_TAG);
403403
404         memory_install_readwrite8_handler(program, 0xc000, 0xc7ff, 0, 0, SMH_BANK1, SMH_UNMAP); // ROM
404         memory_install_readwrite8_handler(program, 0xc000, 0xc7ff, 0, 0, SMH_BANK(1), SMH_UNMAP); // ROM
405405         memory_install_readwrite8_handler(program, 0xc800, 0xcfff, 0, 0, SMH_UNMAP, SMH_UNMAP);
406406         memory_install_readwrite8_handler(program, 0xd000, 0xd7ff, 0, 0, comx35_videoram_r, comx35_videoram_w);
407407         memory_install_readwrite8_device_handler(program, mc6845, 0xd800, 0xd800, 0, 0, SMH_UNMAP, mc6845_address_w);
r4679r4680
414414      {
415415         bank = BANK_RAMCARD + state->rambank;
416416
417         memory_install_readwrite8_handler(program, 0xc000, 0xdfff, 0, 0, SMH_BANK1, SMH_BANK1);
417         memory_install_readwrite8_handler(program, 0xc000, 0xdfff, 0, 0, SMH_BANK(1), SMH_BANK(1));
418418      }
419419      break;
420420   }
r4679r4680
569569
570570   /* BASIC ROM banking */
571571
572   memory_install_readwrite8_handler(program, 0x1000, 0x17ff, 0, 0, SMH_BANK2, SMH_UNMAP);
572   memory_install_readwrite8_handler(program, 0x1000, 0x17ff, 0, 0, SMH_BANK(2), SMH_UNMAP);
573573   memory_configure_bank(machine, 2, 0, 1, memory_region(machine, CDP1802_TAG) + 0x1000, 0); // normal ROM
574574   memory_configure_bank(machine, 2, 1, 1, memory_region(machine, CDP1802_TAG) + 0xe000, 0); // expansion box ROM
575575
r4679r4680
578578
579579   if (expansion_box_installed(machine))
580580   {
581      memory_install_readwrite8_handler(program, 0xe000, 0xefff, 0, 0, SMH_BANK3, SMH_UNMAP);
581      memory_install_readwrite8_handler(program, 0xe000, 0xefff, 0, 0, SMH_BANK(3), SMH_UNMAP);
582582      memory_set_bank(machine, 2, 1);
583583   }
584584   else
src/mess/machine/z1013.c
r4679r4680
5858
5959SNAPSHOT_LOAD( z1013 )
6060{
61   UINT8* data= auto_malloc(snapshot_size);
61   UINT8* data= auto_alloc_array(image->machine, UINT8, snapshot_size);
6262   UINT16 startaddr,endaddr,runaddr;
6363
6464   image_fread(image, data, snapshot_size);
src/mess/machine/trs80.c
r4679r4680
602602   else
603603   {
604604      memory_install_readwrite8_handler (mem, 0x0000, 0x3fff, 0, 0, SMH_UNMAP, SMH_UNMAP);
605       memory_install_read8_handler (mem, 0x0000, 0x2fff, 0, 0, SMH_BANK1);
605       memory_install_read8_handler (mem, 0x0000, 0x2fff, 0, 0, SMH_BANK(1));
606606      memory_set_bankptr(mem->machine, 1, memory_region(mem->machine, "maincpu"));
607607      memory_install_readwrite8_handler (mem, 0x37e0, 0x37e3, 0, 0, trs80_irq_status_r, trs80_motor_w);
608608      memory_install_readwrite8_handler (mem, 0x37e8, 0x37eb, 0, 0, trs80_printer_r, trs80_printer_w);
src/mess/machine/odyssey2.c
r4679r4680
4949{
5050   int i;
5151   UINT8 *gfx = memory_region(machine, "gfx1");
52   ram        = auto_malloc(256);
52   ram        = auto_alloc_array(machine, UINT8, 256);
5353
5454   for (i = 0; i < 256; i++)
5555    {
src/mess/machine/primo.c
r4679r4680
6161         memory_set_bankptr(machine,1, memory_region(machine, "maincpu")+0x14000);
6262         break;
6363      case 0x02:   /* RAM */
64         memory_install_write8_handler(space, 0x0000, 0x3fff, 0, 0, SMH_BANK1);
64         memory_install_write8_handler(space, 0x0000, 0x3fff, 0, 0, SMH_BANK(1));
6565         memory_set_bankptr(machine,1, memory_region(machine, "maincpu"));
6666         break;
6767      case 0x03:   /* EPROM extension 2 */
src/mess/machine/ti85.c
r4679r4680
144144   {
145145      memory_set_bankptr(machine, 2, ti86_ram + 0x004000*(ti85_memory_page_0x4000&0x07));
146146      memory_set_bankptr(machine, 6, ti86_ram + 0x004000*(ti85_memory_page_0x4000&0x07));
147      wh = SMH_BANK6;
147      wh = SMH_BANK(6);
148148   }
149149   else
150150   {
r4679r4680
157157   {
158158      memory_set_bankptr(machine, 3, ti86_ram + 0x004000*(ti86_memory_page_0x8000&0x07));
159159      memory_set_bankptr(machine, 7, ti86_ram + 0x004000*(ti86_memory_page_0x8000&0x07));
160      wh = SMH_BANK7;
160      wh = SMH_BANK(7);
161161   }
162162   else
163163   {
r4679r4680
262262   ti85_interrupt_speed = 0;
263263   ti85_port4_bit0 = 0;
264264
265   ti86_ram = auto_malloc(128*1024);
265   ti86_ram = auto_alloc_array(machine, UINT8, 128*1024);
266266   {
267267      memory_install_write8_handler(space, 0x0000, 0x3fff, 0, 0, SMH_UNMAP);
268268
r4679r4680
688688
689689   if (file_size != 0)
690690   {
691      file_data = (UINT8*) auto_malloc(file_size);
691      file_data = auto_alloc_array(image->machine, UINT8, file_size);
692692      image_fread(image, file_data, file_size);
693693
694694      if(!ti85_convert_file_data_to_serial_stream(file_data, file_size, &ti85_serial_stream, (char*)image->machine->gamedrv->name))
src/mess/machine/svi318.c
r4679r4680
637637   cpu_set_input_line_vector(cputag_get_cpu(machine, "maincpu"), 0, 0xff);
638638
639639   /* memory */
640   svi.empty_bank = auto_malloc (0x8000);
640   svi.empty_bank = auto_alloc_array(machine, UINT8, 0x8000);
641641   memset (svi.empty_bank, 0xff, 0x8000);
642642}
643643
src/mess/machine/galaxy.c
r4679r4680
137137   {
138138      case GALAXY_SNAPSHOT_V1_SIZE:
139139      case GALAXY_SNAPSHOT_V2_SIZE:
140         snapshot_data = auto_malloc(snapshot_size);
140         snapshot_data = auto_alloc_array(image->machine, UINT8, snapshot_size);
141141         break;
142142      default:
143143         return INIT_FAIL;
r4679r4680
158158DRIVER_INIT( galaxy )
159159{
160160   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
161   memory_install_read8_handler( space, 0x2800, 0x2800 + mess_ram_size - 1, 0, 0, SMH_BANK1);
162   memory_install_write8_handler(space, 0x2800, 0x2800 + mess_ram_size - 1, 0, 0, SMH_BANK1);
161   memory_install_read8_handler( space, 0x2800, 0x2800 + mess_ram_size - 1, 0, 0, SMH_BANK(1));
162   memory_install_write8_handler(space, 0x2800, 0x2800 + mess_ram_size - 1, 0, 0, SMH_BANK(1));
163163   memory_set_bankptr(machine, 1, mess_ram);
164164
165165   if (mess_ram_size < (6 + 48) * 1024)
r4679r4680
178178   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
179179   
180180   /* ROM 2 enable/disable */
181   memory_install_read8_handler(space, 0x1000, 0x1fff, 0, 0, input_port_read(machine, "ROM2") ? SMH_BANK10 : SMH_NOP);
181   memory_install_read8_handler(space, 0x1000, 0x1fff, 0, 0, input_port_read(machine, "ROM2") ? SMH_BANK(10) : SMH_NOP);
182182   memory_install_write8_handler(space, 0x1000, 0x1fff, 0, 0, SMH_NOP);
183183   memory_set_bankptr(machine,10, memory_region(machine, "maincpu") + 0x1000);
184184
r4679r4680
206206   ROM[0x03fa] = 0x00;
207207   ROM[0x03fb] = 0xe0;
208208
209   memory_install_read8_handler(space, 0xe000, 0xefff, 0, 0, SMH_BANK11);
209   memory_install_read8_handler(space, 0xe000, 0xefff, 0, 0, SMH_BANK(11));
210210   memory_install_write8_handler(space, 0xe000, 0xefff, 0, 0, SMH_NOP);
211211   memory_set_bankptr(machine,11, memory_region(machine, "maincpu") + 0xe000);
212212   galaxy_interrupts_enabled = TRUE;
src/mess/machine/vtech2.c
r4679r4680
8282/* read banked memory (plain ROM/RAM) */
8383static const read8_space_func mra_bank_hard[4] =
8484{
85    SMH_BANK1,  /* mapped in 0000-3fff */
86    SMH_BANK2,  /* mapped in 4000-7fff */
87    SMH_BANK3,  /* mapped in 8000-bfff */
88    SMH_BANK4   /* mapped in c000-ffff */
85    SMH_BANK(1),  /* mapped in 0000-3fff */
86    SMH_BANK(2),  /* mapped in 4000-7fff */
87    SMH_BANK(3),  /* mapped in 8000-bfff */
88    SMH_BANK(4)   /* mapped in c000-ffff */
8989};
9090
9191/* write banked memory (plain ROM/RAM) */
9292static const write8_space_func mwa_bank_hard[4] =
9393{
94    SMH_BANK1,  /* mapped in 0000-3fff */
95    SMH_BANK2,  /* mapped in 4000-7fff */
96    SMH_BANK3,  /* mapped in 8000-bfff */
97    SMH_BANK4   /* mapped in c000-ffff */
94    SMH_BANK(1),  /* mapped in 0000-3fff */
95    SMH_BANK(2),  /* mapped in 4000-7fff */
96    SMH_BANK(3),  /* mapped in 8000-bfff */
97    SMH_BANK(4)   /* mapped in c000-ffff */
9898};
9999
100100DRIVER_INIT(laser)
src/mess/machine/wswan.c
r4679r4680
217217   }
218218}
219219
220static void wswan_setup_bios( void )
220static void wswan_setup_bios( running_machine *machine )
221221{
222222   if ( ws_bios_bank == NULL )
223223   {
224      ws_bios_bank = auto_malloc( 0x10000 );
224      ws_bios_bank = auto_alloc_array(machine, UINT8, 0x10000 );
225225      memcpy( ws_bios_bank + 0xffc0, ws_fake_bios_code, 0x40 );
226226   }
227227}
r4679r4680
244244{
245245   const address_space *space = cputag_get_address_space( machine, "maincpu", ADDRESS_SPACE_PROGRAM );
246246
247   wswan_setup_bios();
247   wswan_setup_bios(machine);
248248
249249   /* Intialize ports */
250250   memcpy( ws_portram, ws_portram_init, 256 );
r4679r4680
13791379
13801380   for( ii = 0; ii < ROMBanks; ii++ )
13811381   {
1382      if( (ROMMap[ii] = auto_malloc( 0x10000 )) )
1382      if( (ROMMap[ii] = auto_alloc_array(image->machine, UINT8, 0x10000 )) )
13831383      {
13841384         if( image_fread( image, ROMMap[ii], 0x10000 ) != 0x10000 )
13851385         {
r4679r4680
14271427
14281428   if ( eeprom.size != 0 )
14291429   {
1430      eeprom.data = auto_malloc( eeprom.size );
1430      eeprom.data = auto_alloc_array(image->machine, UINT8, eeprom.size );
14311431      image_battery_load( image, eeprom.data, eeprom.size );
14321432      eeprom.page = eeprom.data;
14331433   }
src/mess/machine/zx.c
r4679r4680
5151{
5252   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
5353
54   memory_install_readwrite8_handler(space, 0x4000, 0x4000 + mess_ram_size - 1, 0, 0, SMH_BANK1, zx_ram_w);
54   memory_install_readwrite8_handler(space, 0x4000, 0x4000 + mess_ram_size - 1, 0, 0, SMH_BANK(1), zx_ram_w);
5555   memory_set_bankptr(machine, 1, memory_region(machine, "maincpu") + 0x4000);
5656}
5757
src/mess/machine/nec765.c
r4679r4680
22632263   fdc->command_timer = timer_alloc(device->machine, nec765_continue_command, (void*)device);
22642264
22652265   fdc->nec765_flags &= NEC765_FDD_READY;
2266   fdc->data_buffer = auto_malloc(32*1024);
2266   fdc->data_buffer = auto_alloc_array(device->machine, char, 32*1024);
22672267
22682268
22692269   // register for state saving
src/mess/machine/apple2gs.c
r4679r4680
16581658   apple2_memmap_config cfg;
16591659
16601660   /* allocate memory for E00000-E1FFFF */
1661   apple2gs_slowmem = auto_malloc(128*1024);
1662   memset(apple2gs_slowmem, 0, 128*1024);
1661   apple2gs_slowmem = auto_alloc_array_clear(machine, UINT8, 128*1024);
16631662
16641663   state_save_register_item_array(machine, "APPLE2GS_SLOWMEM", NULL, 0, apple2gs_slowmem);
16651664
16661665   /* install expanded memory */
1667   memory_install_read8_handler(space, 0x010000, mess_ram_size - 1, 0, 0, SMH_BANK1);
1668   memory_install_write8_handler(space, 0x010000, mess_ram_size - 1, 0, 0, SMH_BANK1);
1666   memory_install_read8_handler(space, 0x010000, mess_ram_size - 1, 0, 0, SMH_BANK(1));
1667   memory_install_write8_handler(space, 0x010000, mess_ram_size - 1, 0, 0, SMH_BANK(1));
16691668   memory_set_bankptr(machine,1, mess_ram + 0x010000);
16701669
16711670   /* install hi memory */
1672   memory_install_read8_handler(space, 0xe00000, 0xe1ffff, 0, 0, SMH_BANK2);
1671   memory_install_read8_handler(space, 0xe00000, 0xe1ffff, 0, 0, SMH_BANK(2));
16731672   memory_install_write8_handler(space, 0xe00000, 0xe1ffff, 0, 0, apple2gs_slowmem_w);
16741673   memory_install_write8_handler(space, 0xe00400, 0xe007ff, 0, 0, apple2gs_E004xx_w);
16751674   memory_install_write8_handler(space, 0xe02000, 0xe03fff, 0, 0, apple2gs_E02xxx_w);
r4679r4680
16801679   /* install alternate ROM bank */
16811680   begin = 0x1000000 - memory_region_length(machine, "maincpu");
16821681   end = 0xffffff;
1683   memory_install_read8_handler(space, begin, end, 0, 0, SMH_BANK3);
1682   memory_install_read8_handler(space, begin, end, 0, 0, SMH_BANK(3));
16841683   memory_set_bankptr(machine,3, memory_region(machine, "maincpu"));
16851684
16861685   /* install new xxC000-xxCFFF handlers */
r4679r4680
17391738   apple2_init_common(machine);
17401739
17411740   /* set up Apple IIgs vectoring */
1742   device_set_info_fct(cputag_get_cpu(machine, "maincpu"), CPUINFO_FCT_G65816_READVECTOR_CALLBACK, (genf *) apple2gs_read_vector);
1741   g65816_set_read_vector_callback(cputag_get_cpu(machine, "maincpu"), apple2gs_read_vector);
17431742
17441743   /* setup globals */
17451744   apple2gs_cur_slot6_image = NULL;
src/mess/machine/mpc105.c
r4679r4680
207207
208208
209209
210void mpc105_init(int bank_base)
210void mpc105_init(running_machine *machine, int bank_base)
211211{
212212   /* setup PCI */
213   mpc105 = (struct mpc105_info *) auto_malloc(sizeof(*mpc105));
213   mpc105 = auto_alloc(machine, struct mpc105_info);
214214   memset(mpc105, '\0', sizeof(*mpc105));
215215   mpc105->bank_base = bank_base;
216216}
src/mess/machine/mpc105.h
r4679r4680
1111
1212#define MPC105_MEMORYBANK_COUNT      8
1313
14void mpc105_init(int bank_base);
14void mpc105_init(running_machine *machine, int bank_base);
1515UINT32 mpc105_pci_read(const device_config *busdevice, const device_config *device, int function, int offset, UINT32 mem_mask);
1616void mpc105_pci_write(const device_config *busdevice, const device_config *device, int function, int offset, UINT32 data, UINT32 mem_mask);
1717
src/mess/machine/i8271.c
r4679r4680
15611561   i8271->data_timer = timer_alloc(device->machine, i8271_data_timer_callback, (void *)device);
15621562   i8271->command_complete_timer = timer_alloc(device->machine, i8271_timed_command_complete_callback, (void *)device);
15631563   i8271->drive = 0;
1564   i8271->pExecutionPhaseData = auto_malloc(0x4000);
1564   i8271->pExecutionPhaseData = auto_alloc_array(device->machine, char, 0x4000);
15651565
15661566   // register for state saving
15671567   //state_save_register_item(device->machine, "i8271", device->tag, 0, i8271->number);
src/mess/machine/nes.c
r4679r4680
8282
8383   /* Brutal hack put in as a consequence of the new memory system; we really
8484    * need to fix the NES code */
85   memory_install_read8_handler(space, 0x0000, 0x07ff, 0, 0x1800, SMH_BANK10);
86   memory_install_write8_handler(space, 0x0000, 0x07ff, 0, 0x1800, SMH_BANK10);
85   memory_install_read8_handler(space, 0x0000, 0x07ff, 0, 0x1800, SMH_BANK(10));
86   memory_install_write8_handler(space, 0x0000, 0x07ff, 0, 0x1800, SMH_BANK(10));
8787   memory_set_bankptr(machine, 10, nes.rom);
8888
8989   nes_battery_ram = nes.wram;
r4679r4680
9797         if we are loading a cart image identified as mapper 20 (probably wrong mapper...) we need to alloc
9898         memory for the bank 2 pointer */
9999         if (nes_fds.data == NULL)
100            nes_fds.data = auto_malloc( 0x8000 );
100            nes_fds.data = auto_alloc_array(machine, UINT8, 0x8000 );
101101         memory_install_read8_handler(space, 0x4030, 0x403f, 0, 0, fds_r);
102         memory_install_read8_handler(space, 0x6000, 0xdfff, 0, 0, SMH_BANK2);
103         memory_install_read8_handler(space, 0xe000, 0xffff, 0, 0, SMH_BANK1);
102         memory_install_read8_handler(space, 0x6000, 0xdfff, 0, 0, SMH_BANK(2));
103         memory_install_read8_handler(space, 0xe000, 0xffff, 0, 0, SMH_BANK(1));
104104
105105         memory_install_write8_handler(space, 0x4020, 0x402f, 0, 0, fds_w);
106         memory_install_write8_handler(space, 0x6000, 0xdfff, 0, 0, SMH_BANK2);
106         memory_install_write8_handler(space, 0x6000, 0xdfff, 0, 0, SMH_BANK(2));
107107
108108         memory_set_bankptr(machine, 1, &nes.rom[0xe000]);
109109         memory_set_bankptr(machine, 2, nes_fds.data );
r4679r4680
119119         break;
120120      default:
121121         nes.slow_banking = 0;
122         memory_install_read8_handler(space, 0x6000, 0x7fff, 0, 0, SMH_BANK5);
123         memory_install_read8_handler(space, 0x8000, 0x9fff, 0, 0, SMH_BANK1);
124         memory_install_read8_handler(space, 0xa000, 0xbfff, 0, 0, SMH_BANK2);
125         memory_install_read8_handler(space, 0xc000, 0xdfff, 0, 0, SMH_BANK3);
126         memory_install_read8_handler(space, 0xe000, 0xffff, 0, 0, SMH_BANK4);
122         memory_install_read8_handler(space, 0x6000, 0x7fff, 0, 0, SMH_BANK(5));
123         memory_install_read8_handler(space, 0x8000, 0x9fff, 0, 0, SMH_BANK(1));
124         memory_install_read8_handler(space, 0xa000, 0xbfff, 0, 0, SMH_BANK(2));
125         memory_install_read8_handler(space, 0xc000, 0xdfff, 0, 0, SMH_BANK(3));
126         memory_install_read8_handler(space, 0xe000, 0xffff, 0, 0, SMH_BANK(4));
127127
128128         memory_install_write8_handler(space, 0x6000, 0x7fff, 0, 0, nes_mid_mapper_w);
129129         memory_install_write8_handler(space, 0x8000, 0xffff, 0, 0, nes_mapper_w);
src/mess/machine/msx.c
r4679r4680
262262      state->sramfile = sramfile;
263263   }
264264
265   if (msx_slot_list[type].init (state, 0, mem, size_aligned)) {
265   if (msx_slot_list[type].init (image->machine, state, 0, mem, size_aligned)) {
266266      return INIT_FAIL;
267267   }
268268   if (msx_slot_list[type].loadsram) {
r4679r4680
824824   slot_state *st;
825825   UINT8 *mem = NULL;
826826
827   msx1.empty = (UINT8*)auto_malloc (0x4000);
827   msx1.empty = auto_alloc_array(machine, UINT8, 0x4000);
828828   memset (msx1.empty, 0xff, 0x4000);
829829
830830   for (prim=0; prim<4; prim++) {
r4679r4680
912912               mem = NULL;
913913               break;
914914            }
915            st = (slot_state*)auto_malloc (sizeof (slot_state));
915            st = auto_alloc_clear (machine, slot_state);
916916            memset (st, 0, sizeof (slot_state));
917917
918            if (slot->init (st, layout->slot_page, mem, size)) {
918            if (slot->init (machine, st, layout->slot_page, mem, size)) {
919919               continue;
920920            }
921921         }
src/mess/machine/mz700.c
r4679r4680
8888   mz->mz700_mode = TRUE;
8989
9090   videoram_size = 0x800;
91   videoram = auto_malloc(videoram_size);
92   colorram = auto_malloc(0x800);
91   videoram = auto_alloc_array(machine, UINT8, videoram_size);
92   colorram = auto_alloc_array(machine, UINT8, 0x800);
9393}
9494
9595DRIVER_INIT( mz800 )
r4679r4680
100100
101101   /* video ram */
102102   videoram_size = 0x4000;
103   videoram = auto_malloc(videoram_size);
103   videoram = auto_alloc_array(machine, UINT8, videoram_size);
104104   colorram = videoram + 0x800;
105105
106106   /* character generator ram */
107   mz->cgram = auto_malloc(0x1000);
107   mz->cgram = auto_alloc_array(machine, UINT8, 0x1000);
108108}
109109
110110MACHINE_START( mz700 )
src/mess/machine/lisa.c
r4679r4680
11011101   lisa_features.has_double_sided_floppy = 0;
11021102   lisa_features.has_mac_xl_video = 0;
11031103   
1104   bad_parity_table = auto_malloc(0x40000);  /* 1 bit per byte of CPU RAM */
1104   bad_parity_table = auto_alloc_array(machine, UINT8, 0x40000);  /* 1 bit per byte of CPU RAM */
11051105}
11061106
11071107DRIVER_INIT( lisa210 )
r4679r4680
11141114   lisa_features.has_double_sided_floppy = 0;
11151115   lisa_features.has_mac_xl_video = 0;
11161116   
1117   bad_parity_table = auto_malloc(0x40000);  /* 1 bit per byte of CPU RAM */
1117   bad_parity_table = auto_alloc_array(machine, UINT8, 0x40000);  /* 1 bit per byte of CPU RAM */
11181118}
11191119
11201120DRIVER_INIT( mac_xl )
r4679r4680
11271127   lisa_features.has_double_sided_floppy = 0;
11281128   lisa_features.has_mac_xl_video = 1;
11291129   
1130   bad_parity_table = auto_malloc(0x40000);  /* 1 bit per byte of CPU RAM */
1130   bad_parity_table = auto_alloc_array(machine, UINT8, 0x40000);  /* 1 bit per byte of CPU RAM */
11311131}
11321132
11331133MACHINE_RESET( lisa )
r4679r4680
11421142   memory_set_direct_update_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), lisa_OPbaseoverride);
11431143   memory_set_direct_update_handler(cputag_get_address_space(machine, "fdccpu",  ADDRESS_SPACE_PROGRAM), lisa_fdc_OPbaseoverride);
11441144
1145   devtag_set_info_fct(machine, "maincpu", CPUINFO_FCT_M68K_RESET_CALLBACK, (genf *)/*lisa_reset_instr_callback*/NULL);
1145   m68k_set_reset_callback(devtag_get_device(machine, "maincpu"), /*lisa_reset_instr_callback*/NULL);
11461146
11471147   /* init MMU */
11481148
src/mess/machine/sym1.c
r4679r4680
193193   logerror("SYM1 VIA2 W 0x%02x\n", data);
194194
195195   memory_install_write8_handler(cpu0space, 0xa600, 0xa67f, 0, 0,
196      ((input_port_read(device->machine, "WP") & 0x01) && !(data & 0x01)) ? SMH_NOP : SMH_BANK5);
196      ((input_port_read(device->machine, "WP") & 0x01) && !(data & 0x01)) ? SMH_NOP : SMH_BANK(5));
197197
198198   memory_install_write8_handler(cpu0space, 0x0400, 0x07ff, 0, 0,
199      ((input_port_read(device->machine, "WP") & 0x02) && !(data & 0x02)) ? SMH_NOP : SMH_BANK2);
199      ((input_port_read(device->machine, "WP") & 0x02) && !(data & 0x02)) ? SMH_NOP : SMH_BANK(2));
200200
201201   memory_install_write8_handler(cpu0space, 0x0800, 0x0bff, 0, 0,
202      ((input_port_read(device->machine, "WP") & 0x04) && !(data & 0x04)) ? SMH_NOP : SMH_BANK3);
202      ((input_port_read(device->machine, "WP") & 0x04) && !(data & 0x04)) ? SMH_NOP : SMH_BANK(3));
203203
204204   memory_install_write8_handler(cpu0space, 0x0c00, 0x0fff, 0, 0,
205      ((input_port_read(device->machine, "WP") & 0x08) && !(data & 0x08)) ? SMH_NOP : SMH_BANK4);
205      ((input_port_read(device->machine, "WP") & 0x08) && !(data & 0x08)) ? SMH_NOP : SMH_BANK(4));
206206}
207207
208208
r4679r4680
285285   /* make 0xf800 to 0xffff point to the last half of the monitor ROM
286286      so that the CPU can find its reset vectors */
287287   memory_install_readwrite8_handler(cputag_get_address_space( machine, "maincpu", ADDRESS_SPACE_PROGRAM ),
288         0xf800, 0xffff, 0, 0, SMH_BANK1, SMH_NOP);
288         0xf800, 0xffff, 0, 0, SMH_BANK(1), SMH_NOP);
289289   memory_set_bankptr(machine, 1, sym1_monitor + 0x800);
290290   device_reset(cputag_get_cpu(machine, "maincpu"));
291291}
src/mess/machine/lynx.c
r4679r4680
17951795    * when these are safe in the cpu */
17961796   lynx_memory_config = data;
17971797
1798   memory_install_read8_handler(space, 0xfc00, 0xfcff, 0, 0, (data & 1) ? SMH_BANK1 : suzy_read);
1799   memory_install_write8_handler(space, 0xfc00, 0xfcff, 0, 0, (data & 1) ? SMH_BANK1 : suzy_write);
1800   memory_install_read8_handler(space, 0xfd00, 0xfdff, 0, 0, (data & 2) ? SMH_BANK2 : mikey_read);
1801   memory_install_write8_handler(space, 0xfd00, 0xfdff, 0, 0, (data & 2) ? SMH_BANK2 : mikey_write);
1798   memory_install_read8_handler(space, 0xfc00, 0xfcff, 0, 0, (data & 1) ? SMH_BANK(1) : suzy_read);
1799   memory_install_write8_handler(space, 0xfc00, 0xfcff, 0, 0, (data & 1) ? SMH_BANK(1) : suzy_write);
1800   memory_install_read8_handler(space, 0xfd00, 0xfdff, 0, 0, (data & 2) ? SMH_BANK(2) : mikey_read);
1801   memory_install_write8_handler(space, 0xfd00, 0xfdff, 0, 0, (data & 2) ? SMH_BANK(2) : mikey_write);
18021802
18031803   if (data & 1)
18041804      memory_set_bankptr(space->machine, 1, lynx_mem_fc00);
src/mess/machine/cgenie.c
r4679r4680
132132   {
133133      if ( input_port_read(machine, "DSW0") & 0x80 )
134134      {
135         memory_install_read8_handler(space, 0xc000, 0xdfff, 0, 0, SMH_BANK10);
135         memory_install_read8_handler(space, 0xc000, 0xdfff, 0, 0, SMH_BANK(10));
136136         memory_install_write8_handler(space, 0xc000, 0xdfff, 0, 0, SMH_NOP);
137137         memory_set_bankptr(machine, 10, &ROM[0x0c000]);
138138         logerror("cgenie DOS enabled\n");
r4679r4680
198198      memset(gfx + i * 8, i, 8);
199199
200200   /* set up RAM */
201   memory_install_read8_handler(space, 0x4000, 0x4000 + mess_ram_size - 1, 0, 0, SMH_BANK1);
201   memory_install_read8_handler(space, 0x4000, 0x4000 + mess_ram_size - 1, 0, 0, SMH_BANK(1));
202202   memory_install_write8_handler(space, 0x4000, 0x4000 + mess_ram_size - 1, 0, 0, cgenie_videoram_w);
203203   videoram = mess_ram;
204204   memory_set_bankptr(machine, 1, mess_ram);
src/mess/machine/ondra.c
r4679r4680
5151      memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x0000, 0x3fff, 0, 0, SMH_UNMAP);
5252      memory_set_bankptr(machine, 1, mem + 0x010000);
5353   } else {
54      memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x0000, 0x3fff, 0, 0, SMH_BANK1);
54      memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x0000, 0x3fff, 0, 0, SMH_BANK(1));
5555      memory_set_bankptr(machine, 1, mess_ram + 0x0000);
5656   }
5757   memory_set_bankptr(machine, 2, mess_ram + 0x4000);
5858   if (ondra_bank2_status==0) {
59      memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xe000, 0xffff, 0, 0, SMH_BANK3);
60      memory_install_read8_handler (cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xe000, 0xffff, 0, 0, SMH_BANK3);
59      memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xe000, 0xffff, 0, 0, SMH_BANK(3));
60      memory_install_read8_handler (cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xe000, 0xffff, 0, 0, SMH_BANK(3));
6161      memory_set_bankptr(machine, 3, mess_ram + 0xe000);
6262   } else {
6363      memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xe000, 0xffff, 0, 0, SMH_UNMAP);
src/mess/machine/kaypro.c
r4679r4680
5555   if (data & 0x80)
5656   {
5757      memory_install_readwrite8_handler (mem, 0x0000, 0x3fff, 0, 0, SMH_UNMAP, SMH_UNMAP);
58      memory_install_read8_handler (mem, 0x0000, 0x0fff, 0, 0, SMH_BANK1);
58      memory_install_read8_handler (mem, 0x0000, 0x0fff, 0, 0, SMH_BANK(1));
5959      memory_set_bankptr(mem->machine, 1, memory_region(mem->machine, "maincpu"));
6060      memory_install_readwrite8_handler (mem, 0x3000, 0x3fff, 0, 0, kaypro_videoram_r, kaypro_videoram_w);
6161   }
6262   else
6363   {
6464      memory_install_readwrite8_handler (mem, 0x0000, 0x3fff, 0, 0, SMH_UNMAP, SMH_UNMAP);
65       memory_install_readwrite8_handler (mem, 0x0000, 0x3fff, 0, 0, SMH_BANK2, SMH_BANK3);
65       memory_install_readwrite8_handler (mem, 0x0000, 0x3fff, 0, 0, SMH_BANK(2), SMH_BANK(3));
6666      memory_set_bankptr(mem->machine, 2, memory_region(mem->machine, "rambank"));
6767      memory_set_bankptr(mem->machine, 3, memory_region(mem->machine, "rambank"));
6868   }
r4679r4680
163163   if (data & 0x80)
164164   {
165165      memory_install_readwrite8_handler (mem, 0x0000, 0x3fff, 0, 0, SMH_UNMAP, SMH_UNMAP);
166      memory_install_read8_handler (mem, 0x0000, 0x1fff, 0, 0, SMH_BANK1);
166      memory_install_read8_handler (mem, 0x0000, 0x1fff, 0, 0, SMH_BANK(1));
167167      memory_set_bankptr(mem->machine, 1, memory_region(mem->machine, "maincpu"));
168168   }
169169   else
170170   {
171171      memory_install_readwrite8_handler (mem, 0x0000, 0x3fff, 0, 0, SMH_UNMAP, SMH_UNMAP);
172       memory_install_readwrite8_handler (mem, 0x0000, 0x3fff, 0, 0, SMH_BANK2, SMH_BANK3);
172       memory_install_readwrite8_handler (mem, 0x0000, 0x3fff, 0, 0, SMH_BANK(2), SMH_BANK(3));
173173      memory_set_bankptr(mem->machine, 2, memory_region(mem->machine, "rambank"));
174174      memory_set_bankptr(mem->machine, 3, memory_region(mem->machine, "rambank"));
175175   }
src/mess/machine/pc_turbo.c
r4679r4680
4242{
4343   struct pc_turbo_info *ti;
4444
45   ti = auto_malloc(sizeof(struct pc_turbo_info));
45   ti = auto_alloc(machine, struct pc_turbo_info);
4646   ti->cpunum = cpunum;
4747   ti->port = port;
4848   ti->mask = mask;
src/mess/machine/i82439tx.c
r4679r4680
213213void intel82439tx_init(running_machine *machine)
214214{
215215   /* setup PCI */
216   i82439tx = auto_malloc(sizeof(*i82439tx));
216   i82439tx = auto_alloc(machine, struct intel82439tx_info);
217217   memset(i82439tx, 0, sizeof(*i82439tx));
218218   i82439tx->regs[0x00] = 0x14020000;
219219   i82439tx->regs[0x01] = 0x01520000;
src/mess/machine/lviv.c
r4679r4680
168168   {
169169      startup_mem_map = 0;
170170
171      memory_install_write8_handler(cpuspace, 0x0000, 0x3fff, 0, 0, SMH_BANK1);
172      memory_install_write8_handler(cpuspace, 0x4000, 0x7fff, 0, 0, SMH_BANK2);
173      memory_install_write8_handler(cpuspace, 0x8000, 0xbfff, 0, 0, SMH_BANK3);
171      memory_install_write8_handler(cpuspace, 0x0000, 0x3fff, 0, 0, SMH_BANK(1));
172      memory_install_write8_handler(cpuspace, 0x4000, 0x7fff, 0, 0, SMH_BANK(2));
173      memory_install_write8_handler(cpuspace, 0x8000, 0xbfff, 0, 0, SMH_BANK(3));
174174      memory_install_write8_handler(cpuspace, 0xC000, 0xffff, 0, 0, SMH_UNMAP);
175175
176176      memory_set_bankptr(space->machine,1, mess_ram);
src/mess/machine/pc8801.c
r4679r4680
400400      else
401401      {
402402         /* r/w mode */
403         memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x0000, 0x5fff, 0, 0, SMH_BANK1);
404         memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x6000, 0x7fff, 0, 0, SMH_BANK2);
403         memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x0000, 0x5fff, 0, 0, SMH_BANK(1));
404         memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x6000, 0x7fff, 0, 0, SMH_BANK(2));
405405         if(ext_w!=ext_r) logerror("differnt between read and write bank of extension memory.\n");
406406      }
407407   }
r4679r4680
411411      if(RAMmode)
412412      {
413413         /* RAM */
414         memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x0000, 0x5fff, 0, 0, SMH_BANK1);
415         memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x6000, 0x7fff, 0, 0, SMH_BANK2);
414         memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x0000, 0x5fff, 0, 0, SMH_BANK(1));
415         memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x6000, 0x7fff, 0, 0, SMH_BANK(2));
416416         memory_set_bankptr(machine, 1, pc8801_mainRAM + 0x0000);
417417         memory_set_bankptr(machine, 2, pc8801_mainRAM + 0x6000);
418418      }
r4679r4680
443443   }
444444
445445   /* 0x8000 to 0xffff */
446   memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x8000, 0x83ff, 0, 0, (RAMmode || ROMmode) ? SMH_BANK3 : pc8801_read_textwindow);
447   memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x8000, 0x83ff, 0, 0, (RAMmode || ROMmode) ? SMH_BANK3 : pc8801_write_textwindow);
446   memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x8000, 0x83ff, 0, 0, (RAMmode || ROMmode) ? SMH_BANK(3) : pc8801_read_textwindow);
447   memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x8000, 0x83ff, 0, 0, (RAMmode || ROMmode) ? SMH_BANK(3) : pc8801_write_textwindow);
448448
449449   memory_set_bankptr(machine, 4, pc8801_mainRAM + 0x8400);
450450
r4679r4680
455455   }
456456   else
457457   {
458      memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xc000, 0xefff, 0, 0, SMH_BANK5);
459      memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xc000, 0xefff, 0, 0, SMH_BANK5);
460      memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xf000, 0xffff, 0, 0, SMH_BANK6);
461      memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xf000, 0xffff, 0, 0, SMH_BANK6);
458      memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xc000, 0xefff, 0, 0, SMH_BANK(5));
459      memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xc000, 0xefff, 0, 0, SMH_BANK(5));
460      memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xf000, 0xffff, 0, 0, SMH_BANK(6));
461      memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xf000, 0xffff, 0, 0, SMH_BANK(6));
462462
463463      memory_set_bankptr(machine, 5, pc8801_mainRAM + 0xc000);
464464      if(maptvram)
r4679r4680
565565   port71_save=0xff;
566566   port32_save=0x80;
567567   mainROM = memory_region(machine, "maincpu");
568   pc8801_mainRAM = (UINT8 *) auto_malloc (0x10000);
568   pc8801_mainRAM = auto_alloc_array(machine, UINT8, 0x10000);
569569   memset(pc8801_mainRAM, 0, 0x10000);
570570
571571   extmem_ctrl[0]=extmem_ctrl[1]=0;
r4679r4680
631631      return;
632632    }
633633    if(num80!=0 || num88!=0 || numIO!=0) {
634      extRAM=malloc_or_die(num80*0x8000+num88*0x20000+numIO*0x100000);
634      extRAM=alloc_array_or_die(UINT8, num80*0x8000+num88*0x20000+numIO*0x100000);
635635      e=extRAM;
636636      for(i=0;i<num80;i++) {
637637   ext_bank_80[i]=e;
src/mess/machine/mc10.c
r4679r4680
4343   mc10_keyboard_strobe = 0x00;
4444
4545   memory_install_readwrite8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM),
46         0x4000,   0x4000 + mess_ram_size - 1,   0, 0, SMH_BANK1, SMH_BANK1);
46         0x4000,   0x4000 + mess_ram_size - 1,   0, 0, SMH_BANK(1), SMH_BANK(1));
4747   memory_set_bankptr(machine, 1, mess_ram);
4848
4949   state_save_register_global(machine, mc10_bfff);
src/mess/machine/partner.c
r4679r4680
166166   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
167167   UINT8 *rom = memory_region(machine, "maincpu");
168168   
169   memory_install_write8_handler(space, 0x0000, 0x07ff, 0, 0, SMH_BANK1);
170   memory_install_write8_handler(space, 0x0800, 0x3fff, 0, 0, SMH_BANK2);
171   memory_install_write8_handler(space, 0x4000, 0x5fff, 0, 0, SMH_BANK3);
172   memory_install_write8_handler(space, 0x6000, 0x7fff, 0, 0, SMH_BANK4);
173   memory_install_write8_handler(space, 0x8000, 0x9fff, 0, 0, SMH_BANK5);
174   memory_install_write8_handler(space, 0xa000, 0xb7ff, 0, 0, SMH_BANK6);
175   memory_install_write8_handler(space, 0xb800, 0xbfff, 0, 0, SMH_BANK7);
176   memory_install_write8_handler(space, 0xc000, 0xc7ff, 0, 0, SMH_BANK8);
177   memory_install_write8_handler(space, 0xc800, 0xcfff, 0, 0, SMH_BANK9);
178   memory_install_write8_handler(space, 0xd000, 0xd7ff, 0, 0, SMH_BANK10);
169   memory_install_write8_handler(space, 0x0000, 0x07ff, 0, 0, SMH_BANK(1));
170   memory_install_write8_handler(space, 0x0800, 0x3fff, 0, 0, SMH_BANK(2));
171   memory_install_write8_handler(space, 0x4000, 0x5fff, 0, 0, SMH_BANK(3));
172   memory_install_write8_handler(space, 0x6000, 0x7fff, 0, 0, SMH_BANK(4));
173   memory_install_write8_handler(space, 0x8000, 0x9fff, 0, 0, SMH_BANK(5));
174   memory_install_write8_handler(space, 0xa000, 0xb7ff, 0, 0, SMH_BANK(6));
175   memory_install_write8_handler(space, 0xb800, 0xbfff, 0, 0, SMH_BANK(7));
176   memory_install_write8_handler(space, 0xc000, 0xc7ff, 0, 0, SMH_BANK(8));
177   memory_install_write8_handler(space, 0xc800, 0xcfff, 0, 0, SMH_BANK(9));
178   memory_install_write8_handler(space, 0xd000, 0xd7ff, 0, 0, SMH_BANK(10));
179179   memory_install_write8_handler(space, 0xdc00, 0xddff, 0, 0, SMH_UNMAP);
180   memory_install_read8_handler (space, 0xdc00, 0xddff, 0, 0, SMH_BANK11);
180   memory_install_read8_handler (space, 0xdc00, 0xddff, 0, 0, SMH_BANK(11));
181181   memory_install_write8_handler(space, 0xe000, 0xe7ff, 0, 0, SMH_UNMAP);
182182   memory_install_write8_handler(space, 0xe800, 0xffff, 0, 0, SMH_UNMAP);
183183
src/mess/machine/pc_fdc.c
r4679r4680
104104   const device_config *img;
105105
106106   /* initialize fdc structure */
107   fdc = auto_malloc(sizeof(*fdc));
108   memset(fdc, 0, sizeof(*fdc));
107   fdc = auto_alloc_clear(machine, struct pc_fdc);
109108
110109   /* copy specified interface */
111110   if (iface)
src/mess/machine/apple1.c
r4679r4680
147147   const address_space* space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
148148   /* Set up the handlers for MESS's dynamically-sized RAM. */
149149   memory_install_read8_handler(space,
150                         0x0000, mess_ram_size - 1, 0, 0, SMH_BANK1);
150                         0x0000, mess_ram_size - 1, 0, 0, SMH_BANK(1));
151151   memory_install_write8_handler(space,
152                          0x0000, mess_ram_size - 1, 0, 0, SMH_BANK1);
152                          0x0000, mess_ram_size - 1, 0, 0, SMH_BANK(1));
153153   memory_set_bankptr(machine,1, mess_ram);
154154
155155   /* Poll the keyboard input ports periodically.  These include both
src/mess/machine/bebox.c
r4679r4680
590590{
591591   const address_space *space = cputag_get_address_space(machine, "ppc1", ADDRESS_SPACE_PROGRAM);
592592
593   read64_space_func rh64 = (rh == SMH_BANK4) ? SMH_BANK4 : bebox_vga_memory_r;
594   write64_space_func wh64 = (wh == SMH_BANK4) ? SMH_BANK4 : bebox_vga_memory_w;
593   read64_space_func rh64 = (rh == SMH_BANK(4)) ? SMH_BANK(4) : bebox_vga_memory_r;
594   write64_space_func wh64 = (wh == SMH_BANK(4)) ? SMH_BANK(4) : bebox_vga_memory_w;
595595
596596   bebox_vga_memory_rh = rh;
597597   bebox_vga_memory_wh = wh;
r4679r4680
11031103   offs_t vram_begin;
11041104   offs_t vram_end;
11051105
1106   mpc105_init(0);
1106   mpc105_init(machine, 0);
11071107
11081108   /* set up boot and flash ROM */
11091109   memory_set_bankptr(machine, 2, memory_region(machine, "user2"));
11101110   intelflash_init(machine, 0, FLASH_FUJITSU_29F016A, memory_region(machine, "user1"));
11111111
11121112   /* install MESS managed RAM */
1113   memory_install_read64_handler(space_0, 0, mess_ram_size - 1, 0, 0x02000000, SMH_BANK3);
1114   memory_install_write64_handler(space_0, 0, mess_ram_size - 1, 0, 0x02000000, SMH_BANK3);
1115   memory_install_read64_handler(space_1, 0, mess_ram_size - 1, 0, 0x02000000, SMH_BANK3);
1116   memory_install_write64_handler(space_1, 0, mess_ram_size - 1, 0, 0x02000000, SMH_BANK3);
1113   memory_install_read64_handler(space_0, 0, mess_ram_size - 1, 0, 0x02000000, SMH_BANK(3));
1114   memory_install_write64_handler(space_0, 0, mess_ram_size - 1, 0, 0x02000000, SMH_BANK(3));
1115   memory_install_read64_handler(space_1, 0, mess_ram_size - 1, 0, 0x02000000, SMH_BANK(3));
1116   memory_install_write64_handler(space_1, 0, mess_ram_size - 1, 0, 0x02000000, SMH_BANK(3));
11171117   memory_set_bankptr(machine, 3, mess_ram);
11181118
11191119   mc146818_init(machine, MC146818_STANDARD);
r4679r4680
11461146         /* bcctr 0x14, 0 */
11471147         U64(0x4E80042000000000)
11481148      };
1149      memory_install_read64_handler(space_1, 0x9421FFF0, 0x9421FFFF, 0, 0, SMH_BANK1);
1149      memory_install_read64_handler(space_1, 0x9421FFF0, 0x9421FFFF, 0, 0, SMH_BANK(1));
11501150      memory_set_bankptr(machine, 1, ops);
11511151   }
11521152}
src/mess/machine/mtx.c
r4679r4680
226226   else if (ram_page + 1 == mess_ram_size/0x8000)
227227   {
228228      memory_install_readwrite8_handler(cputag_get_address_space(space->machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x4000, 0x7fff, 0, 0, SMH_NOP, SMH_NOP);
229      memory_install_readwrite8_handler(cputag_get_address_space(space->machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x8000, 0xbfff, 0, 0, SMH_BANK4, SMH_BANK4);
229      memory_install_readwrite8_handler(cputag_get_address_space(space->machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x8000, 0xbfff, 0, 0, SMH_BANK(4), SMH_BANK(4));
230230      memory_set_bank(space->machine, 4, ram_page);
231231   }
232232   else
233233   {
234      memory_install_readwrite8_handler(cputag_get_address_space(space->machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x4000, 0x7fff, 0, 0, SMH_BANK3, SMH_BANK3);
235      memory_install_readwrite8_handler(cputag_get_address_space(space->machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x8000, 0xbfff, 0, 0, SMH_BANK4, SMH_BANK4);
234      memory_install_readwrite8_handler(cputag_get_address_space(space->machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x4000, 0x7fff, 0, 0, SMH_BANK(3), SMH_BANK(3));
235      memory_install_readwrite8_handler(cputag_get_address_space(space->machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x8000, 0xbfff, 0, 0, SMH_BANK(4), SMH_BANK(4));
236236      memory_set_bank(space->machine, 3, ram_page);
237237      memory_set_bank(space->machine, 4, ram_page);
238238   }
src/mess/machine/special.c
r4679r4680
164164static void specimx_set_bank(running_machine *machine, int i,int data)
165165{
166166   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
167   memory_install_write8_handler(space, 0xc000, 0xffbf, 0, 0, SMH_BANK3);
168   memory_install_write8_handler(space, 0xffc0, 0xffdf, 0, 0, SMH_BANK4);
167   memory_install_write8_handler(space, 0xc000, 0xffbf, 0, 0, SMH_BANK(3));
168   memory_install_write8_handler(space, 0xffc0, 0xffdf, 0, 0, SMH_BANK(4));
169169   memory_set_bankptr(machine, 4, mess_ram + 0xffc0);
170170   switch(i)
171171   {
172172      case 0 :           
173            memory_install_write8_handler(space, 0x0000, 0x8fff, 0, 0, SMH_BANK1);
173            memory_install_write8_handler(space, 0x0000, 0x8fff, 0, 0, SMH_BANK(1));
174174            memory_install_write8_handler(space, 0x9000, 0xbfff, 0, 0, video_memory_w);
175175         
176176            memory_set_bankptr(machine, 1, mess_ram);
r4679r4680
178178            memory_set_bankptr(machine, 3, mess_ram + 0xc000);           
179179            break;
180180      case 1 :
181            memory_install_write8_handler(space, 0x0000, 0x8fff, 0, 0, SMH_BANK1);
182            memory_install_write8_handler(space, 0x9000, 0xbfff, 0, 0, SMH_BANK2);
181            memory_install_write8_handler(space, 0x0000, 0x8fff, 0, 0, SMH_BANK(1));
182            memory_install_write8_handler(space, 0x9000, 0xbfff, 0, 0, SMH_BANK(2));
183183         
184184            memory_set_bankptr(machine, 1, mess_ram + 0x10000);
185185            memory_set_bankptr(machine, 2, mess_ram + 0x19000);
r4679r4680
345345   UINT8 *mem = memory_region(machine, "maincpu");
346346   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);   
347347   
348   memory_install_write8_handler(space, 0x0000, 0x3fff, 0, 0, SMH_BANK1);
349   memory_install_write8_handler(space, 0x4000, 0x8fff, 0, 0, SMH_BANK2);
350   memory_install_write8_handler(space, 0x9000, 0xbfff, 0, 0, SMH_BANK3);
351   memory_install_write8_handler(space, 0xc000, 0xefff, 0, 0, SMH_BANK4);
352   memory_install_write8_handler(space, 0xf000, 0xf7ff, 0, 0, SMH_BANK5);
353   memory_install_write8_handler(space, 0xf800, 0xffff, 0, 0, SMH_BANK6);
348   memory_install_write8_handler(space, 0x0000, 0x3fff, 0, 0, SMH_BANK(1));
349   memory_install_write8_handler(space, 0x4000, 0x8fff, 0, 0, SMH_BANK(2));
350   memory_install_write8_handler(space, 0x9000, 0xbfff, 0, 0, SMH_BANK(3));
351   memory_install_write8_handler(space, 0xc000, 0xefff, 0, 0, SMH_BANK(4));
352   memory_install_write8_handler(space, 0xf000, 0xf7ff, 0, 0, SMH_BANK(5));
353   memory_install_write8_handler(space, 0xf800, 0xffff, 0, 0, SMH_BANK(6));
354354   
355355   switch(bank1)
356356   {
src/mess/machine/zx8302.c
r4679r4680
698698   /* allocate microdrive images */
699699   for (i = 0; i < 8; i++)
700700   {
701      zx8302->mdv_image[i] = auto_malloc(MDV_IMAGE_LENGTH);
701      zx8302->mdv_image[i] = auto_alloc_array(machine, UINT8, MDV_IMAGE_LENGTH);
702702   }
703703
704704   /* create the timers */
src/mess/machine/snescart.c
r4679r4680
124124   UINT8 ii;
125125   UINT8 *battery_ram, *ptr;
126126
127   battery_ram = malloc_or_die(snes_cart.sram_max);
127   battery_ram = alloc_array_or_die(UINT8, snes_cart.sram_max);
128128   ptr = battery_ram;
129129   image_battery_load(devtag_get_device(machine, "cart"), battery_ram, snes_cart.sram_max);
130130
r4679r4680
170170   UINT8 ii;
171171   UINT8 *battery_ram, *ptr;
172172
173   battery_ram = malloc_or_die(snes_cart.sram_max);
173   battery_ram = alloc_array_or_die(UINT8, snes_cart.sram_max);
174174   ptr = battery_ram;
175175
176176   if (snes_cart.mode == SNES_MODE_20)
r4679r4680
341341   int total_blocks, read_blocks;
342342   UINT32 offset;
343343   UINT8 header[512];
344   UINT8 *temp_buffer = auto_malloc(0x410000);
344   UINT8 *temp_buffer = auto_alloc_array(machine, UINT8, 0x410000);
345345   UINT8 valid_mode20, valid_mode21, valid_mode25;
346346
347347   memory_region_alloc(machine, "maincpu", 0x1000000, 0);
src/mess/machine/apple2.c
r4679r4680
116116   {
117117      for (i = 0; apple2_mem_config.memmap[i].end; i++)
118118         ;
119      apple2_current_meminfo = auto_malloc(i * sizeof(*apple2_current_meminfo));
119      apple2_current_meminfo = auto_alloc_array(machine, apple2_meminfo, i);
120120      full_update = 1;
121121   }
122122
r4679r4680
13051305    * IIc plus; I have not found any official documentation but the BIOS
13061306    * clearly uses this area as writeable memory */
13071307   if (!strcmp(machine->gamedrv->name, "apple2cp"))
1308      apple2cp_ce00_ram = auto_malloc(0x200);
1308      apple2cp_ce00_ram = auto_alloc_array(machine, UINT8, 0x200);
13091309
13101310   apple2_init_common(machine);
13111311
src/mess/machine/c64.c
r4679r4680
11021102{
11031103   c64_port_data = 0x17;
11041104
1105   c64_io_mirror = auto_malloc( 0x1000 );
1105   c64_io_mirror = auto_alloc_array(machine, UINT8, 0x1000 );
11061106   c64_common_init_machine (machine);
11071107
11081108   if (is_c128(machine))
src/mess/machine/genesis.c
r4679r4680
12041204      if (!(genesis_sram_end & 1))
12051205         genesis_sram_end += 1;
12061206     
1207      genesis_sram = malloc_or_die(genesis_sram_end - genesis_sram_start);
1207      genesis_sram = alloc_array_or_die(UINT16, (genesis_sram_end - genesis_sram_start) / sizeof(UINT16));
12081208      image_battery_load(devtag_get_device(image->machine, "cart"), genesis_sram, genesis_sram_end - genesis_sram_start);
12091209
12101210      megadriv_backupram = (UINT16*)ROM + ((genesis_sram_start & 0x3fffff) / 2);
src/mess/machine/pc.c
r4679r4680
12331233    for (i = 0; i < 256; i++)
12341234      gfx[i] = i;
12351235
1236   memory_install_read16_handler( space, 0xb8000, 0xbbfff, 0, 0x0C000, SMH_BANK1 );
1236   memory_install_read16_handler( space, 0xb8000, 0xbbfff, 0, 0x0C000, SMH_BANK(1) );
12371237   memory_install_write16_handler( space, 0xb8000, 0xbbfff, 0, 0x0C000, pc1512_videoram16le_w );
12381238
12391239   memory_install_read16_handler( io_space, 0x3d0, 0x3df, 0, 0, pc1512_16le_r );
src/mess/machine/pecom.c
r4679r4680
4242   pecom_state *state = machine->driver_data;
4343   
4444   memory_install_write8_handler(space, 0x0000, 0x3fff, 0, 0, SMH_UNMAP);
45   memory_install_write8_handler(space, 0x4000, 0x7fff, 0, 0, SMH_BANK2);
45   memory_install_write8_handler(space, 0x4000, 0x7fff, 0, 0, SMH_BANK(2));
4646   memory_install_write8_handler(space, 0xf000, 0xf7ff, 0, 0, SMH_UNMAP);
4747   memory_install_write8_handler(space, 0xf800, 0xffff, 0, 0, SMH_UNMAP);
48   memory_install_read8_handler (space, 0xf000, 0xf7ff, 0, 0, SMH_BANK3);
49   memory_install_read8_handler (space, 0xf800, 0xffff, 0, 0, SMH_BANK4);
48   memory_install_read8_handler (space, 0xf000, 0xf7ff, 0, 0, SMH_BANK(3));
49   memory_install_read8_handler (space, 0xf800, 0xffff, 0, 0, SMH_BANK(4));
5050   memory_set_bankptr(machine, 1, rom + 0x8000);   
5151   memory_set_bankptr(machine, 2, mess_ram + 0x4000);
5252   memory_set_bankptr(machine, 3, rom + 0xf000);
r4679r4680
6565   const device_config *cdp1869 = devtag_get_device(space->machine, CDP1869_TAG);
6666   const address_space *space2 = cputag_get_address_space(space->machine, "maincpu", ADDRESS_SPACE_PROGRAM);
6767   UINT8 *rom = memory_region(space->machine, "maincpu");
68   memory_install_write8_handler(cputag_get_address_space(space->machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x0000, 0x3fff, 0, 0, SMH_BANK1);
68   memory_install_write8_handler(cputag_get_address_space(space->machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x0000, 0x3fff, 0, 0, SMH_BANK(1));
6969   memory_set_bankptr(space->machine, 1, mess_ram + 0x0000);
7070     
7171   if (data==2)
r4679r4680
7979   {
8080      memory_install_write8_handler(space2, 0xf000, 0xf7ff, 0, 0, SMH_UNMAP);
8181      memory_install_write8_handler(space2, 0xf800, 0xffff, 0, 0, SMH_UNMAP);
82      memory_install_read8_handler (space2, 0xf000, 0xf7ff, 0, 0, SMH_BANK3);
83      memory_install_read8_handler (space2, 0xf800, 0xffff, 0, 0, SMH_BANK4);
82      memory_install_read8_handler (space2, 0xf000, 0xf7ff, 0, 0, SMH_BANK(3));
83      memory_install_read8_handler (space2, 0xf800, 0xffff, 0, 0, SMH_BANK(4));
8484      memory_set_bankptr(space->machine, 3, rom + 0xf000);
8585      memory_set_bankptr(space->machine, 4, rom + 0xf800);
8686   }
src/mess/machine/pce.c
r4679r4680
205205   /* Check for Populous */
206206   if ( ! memcmp( ROM + 0x1F26, "POPULOUS", 8 ) )
207207   {
208      cartridge_ram = auto_malloc( 0x8000 );
208      cartridge_ram = auto_alloc_array(image->machine, UINT8, 0x8000 );
209209      memory_set_bankptr( image->machine, 2, cartridge_ram );
210210      memory_install_write8_handler(cputag_get_address_space(image->machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x080000, 0x087FFF, 0, 0, pce_cartridge_ram_w );
211211   }
r4679r4680
218218      if ( ! memcmp( ROM + 0x29D1, "VER. 3.", 7 ) || ! memcmp( ROM + 0x29C4, "VER. 3.", 7 ) )
219219      {
220220         pce_sys3_card = 1;
221         cartridge_ram = auto_malloc( 0x30000 );
221         cartridge_ram = auto_alloc_array(image->machine, UINT8, 0x30000 );
222222         memory_set_bankptr( image->machine, 4, cartridge_ram );
223223         memory_install_write8_handler(cputag_get_address_space(image->machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x0D0000, 0x0FFFFF, 0, 0, pce_cartridge_ram_w );
224224      }
r4679r4680
915915   memset( &pce_cd, 0, sizeof(pce_cd) );
916916
917917   /* Initialize BRAM */
918   pce_cd.bram = auto_malloc( PCE_BRAM_SIZE * 2 );
918   pce_cd.bram = auto_alloc_array(machine, UINT8, PCE_BRAM_SIZE * 2 );
919919   memset( pce_cd.bram, 0, PCE_BRAM_SIZE );
920920   memset( pce_cd.bram + PCE_BRAM_SIZE, 0xFF, PCE_BRAM_SIZE );
921921   pce_cd.bram_locked = 1;
922922   pce_set_cd_bram(machine);
923923
924924   /* set up adpcm related things */
925   pce_cd.adpcm_ram = auto_malloc( PCE_ADPCM_RAM_SIZE );
925   pce_cd.adpcm_ram = auto_alloc_array(machine, UINT8, PCE_ADPCM_RAM_SIZE );
926926   memset( pce_cd.adpcm_ram, 0, PCE_ADPCM_RAM_SIZE );
927927   pce_cd.adpcm_clock_divider = 1;
928928
929929   /* Set up cd command buffer */
930   pce_cd.command_buffer = auto_malloc( PCE_CD_COMMAND_BUFFER_SIZE );
930   pce_cd.command_buffer = auto_alloc_array(machine, UINT8, PCE_CD_COMMAND_BUFFER_SIZE );
931931   memset( pce_cd.command_buffer, 0, PCE_CD_COMMAND_BUFFER_SIZE );
932932   pce_cd.command_buffer_index = 0;
933933
934   pce_cd.data_buffer = auto_malloc( 8192 );
934   pce_cd.data_buffer = auto_alloc_array(machine, UINT8, 8192 );
935935   memset( pce_cd.data_buffer, 0, 8192 );
936936   pce_cd.data_buffer_size = 0;
937937   pce_cd.data_buffer_index = 0;
938938
939   pce_cd.subcode_buffer = auto_malloc( 96 );
939   pce_cd.subcode_buffer = auto_alloc_array(machine, UINT8, 96 );
940940
941941   device = devtag_get_device(machine, "cdrom");
942942   if ( device )
src/mess/machine/ti99_4x.c
r4679r4680
26302630   int i;
26312631
26322632   /* Not required at run-time */
2633   /*memory_install_read16_handler(space, 0x2000, 0x2fff, SMH_BANK3);
2634   memory_install_write16_handler(space, 0x2000, 0x2fff, SMH_BANK3);
2635   memory_install_read16_handler(space, 0x3000, 0x3fff, SMH_BANK4);
2636   memory_install_write16_handler(space, 0x3000, 0x3fff, SMH_BANK4);
2637   memory_install_read16_handler(space, 0xa000, 0xafff, SMH_BANK5);
2638   memory_install_write16_handler(space, 0xa000, 0xafff, SMH_BANK5);
2639   memory_install_read16_handler(space, 0xb000, 0xbfff, SMH_BANK6);
2640   memory_install_write16_handler(space, 0xb000, 0xbfff, SMH_BANK6);
2641   memory_install_read16_handler(space, 0xc000, 0xcfff, SMH_BANK7);
2642   memory_install_write16_handler(space, 0xc000, 0xcfff, SMH_BANK7);
2643   memory_install_read16_handler(space, 0xd000, 0xdfff, SMH_BANK8);
2644   memory_install_write16_handler(space, 0xd000, 0xdfff, SMH_BANK8);
2645   memory_install_read16_handler(space, 0xe000, 0xefff, SMH_BANK9);
2646   memory_install_write16_handler(space, 0xe000, 0xefff, SMH_BANK9);
2647   memory_install_read16_handler(space, 0xf000, 0xffff, SMH_BANK10);
2648   memory_install_write16_handler(space, 0xf000, 0xffff, SMH_BANK10);*/
2633   /*memory_install_read16_handler(space, 0x2000, 0x2fff, SMH_BANK(3));
2634   memory_install_write16_handler(space, 0x2000, 0x2fff, SMH_BANK(3));
2635   memory_install_read16_handler(space, 0x3000, 0x3fff, SMH_BANK(4));
2636   memory_install_write16_handler(space, 0x3000, 0x3fff, SMH_BANK(4));
2637   memory_install_read16_handler(space, 0xa000, 0xafff, SMH_BANK(5));
2638   memory_install_write16_handler(space, 0xa000, 0xafff, SMH_BANK(5));
2639   memory_install_read16_handler(space, 0xb000, 0xbfff, SMH_BANK(6));
2640   memory_install_write16_handler(space, 0xb000, 0xbfff, SMH_BANK(6));
2641   memory_install_read16_handler(space, 0xc000, 0xcfff, SMH_BANK(7));
2642   memory_install_write16_handler(space, 0xc000, 0xcfff, SMH_BANK(7));
2643   memory_install_read16_handler(space, 0xd000, 0xdfff, SMH_BANK(8));
2644   memory_install_write16_handler(space, 0xd000, 0xdfff, SMH_BANK(8));
2645   memory_install_read16_handler(space, 0xe000, 0xefff, SMH_BANK(9));
2646   memory_install_write16_handler(space, 0xe000, 0xefff, SMH_BANK(9));
2647   memory_install_read16_handler(space, 0xf000, 0xffff, SMH_BANK(10));
2648   memory_install_write16_handler(space, 0xf000, 0xffff, SMH_BANK(10));*/
26492649
26502650   ti99_peb_set_16bit_card_handlers(0x1e00, & ti99_4p_mapper_handlers);
26512651
src/mess/machine/pc1251.c
r4679r4680
131131   // 4 kb memory feedback 512 bytes too few???
132132   // 11 kb ram: program stored at 8000
133133#if 1
134   memory_install_write8_handler(space, 0x8000, 0xc7ff, 0, 0, SMH_BANK1);
134   memory_install_write8_handler(space, 0x8000, 0xc7ff, 0, 0, SMH_BANK(1));
135135   memory_set_bankptr(machine, 1, memory_region(machine, "maincpu") + 0x8000);
136136#else
137137   if ((input_port_read(machine, "DSW0") & 0xc0) == 0xc0)
src/mess/machine/pk8020.c
r4679r4680
2323{
2424   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);   
2525   
26   memory_install_read8_handler (space, 0x0000, 0x1fff, 0, 0, SMH_BANK1);
26   memory_install_read8_handler (space, 0x0000, 0x1fff, 0, 0, SMH_BANK(1));
2727   memory_install_write8_handler(space, 0x0000, 0x7fff, 0, 0, SMH_UNMAP);
28   memory_install_read8_handler (space, 0x2000, 0x37ff, 0, 0, SMH_BANK2);
28   memory_install_read8_handler (space, 0x2000, 0x37ff, 0, 0, SMH_BANK(2));
2929   memory_install_write8_handler(space, 0x2000, 0x37ff, 0, 0, SMH_UNMAP);
3030
3131
32   memory_install_read8_handler (space, 0x4000, 0x5fff, 0, 0, SMH_BANK7);
33   memory_install_read8_handler (space, 0x6000, 0x7fff, 0, 0, SMH_BANK8);
34   memory_install_read8_handler (space, 0x8000, 0xbeff, 0, 0, SMH_BANK9);
35   memory_install_read8_handler (space, 0xbf00, 0xbfff, 0, 0, SMH_BANK10);
36   memory_install_read8_handler (space, 0xc000, 0xf7ff, 0, 0, SMH_BANK11);
37   memory_install_read8_handler (space, 0xf800, 0xf9ff, 0, 0, SMH_BANK12);
38   memory_install_read8_handler (space, 0xfa00, 0xfaff, 0, 0, SMH_BANK13);
39   memory_install_read8_handler (space, 0xfb00, 0xfbff, 0, 0, SMH_BANK14);
40   memory_install_read8_handler (space, 0xfc00, 0xfdff, 0, 0, SMH_BANK15);
41   memory_install_read8_handler (space, 0xfe00, 0xfeff, 0, 0, SMH_BANK16);
42   memory_install_read8_handler (space, 0xff00, 0xffff, 0, 0, SMH_BANK17);
32   memory_install_read8_handler (space, 0x4000, 0x5fff, 0, 0, SMH_BANK(7));
33   memory_install_read8_handler (space, 0x6000, 0x7fff, 0, 0, SMH_BANK(8));
34   memory_install_read8_handler (space, 0x8000, 0xbeff, 0, 0, SMH_BANK(9));
35   memory_install_read8_handler (space, 0xbf00, 0xbfff, 0, 0, SMH_BANK(10));
36   memory_install_read8_handler (space, 0xc000, 0xf7ff, 0, 0, SMH_BANK(11));
37   memory_install_read8_handler (space, 0xf800, 0xf9ff, 0, 0, SMH_BANK(12));
38   memory_install_read8_handler (space, 0xfa00, 0xfaff, 0, 0, SMH_BANK(13));
39   memory_install_read8_handler (space, 0xfb00, 0xfbff, 0, 0, SMH_BANK(14));
40   memory_install_read8_handler (space, 0xfc00, 0xfdff, 0, 0, SMH_BANK(15));
41   memory_install_read8_handler (space, 0xfe00, 0xfeff, 0, 0, SMH_BANK(16));
42   memory_install_read8_handler (space, 0xff00, 0xffff, 0, 0, SMH_BANK(17));
4343
44   memory_install_write8_handler(space, 0x4000, 0x5fff, 0, 0, SMH_BANK7);
45   memory_install_write8_handler(space, 0x6000, 0x7fff, 0, 0, SMH_BANK8);
46   memory_install_write8_handler(space, 0x8000, 0xbeff, 0, 0, SMH_BANK9);
47   memory_install_write8_handler(space, 0xbf00, 0xbfff, 0, 0, SMH_BANK10);
48   memory_install_write8_handler(space, 0xc000, 0xf7ff, 0, 0, SMH_BANK11);
49   memory_install_write8_handler(space, 0xf800, 0xf9ff, 0, 0, SMH_BANK12);
50   memory_install_write8_handler(space, 0xfa00, 0xfaff, 0, 0, SMH_BANK13);
51   memory_install_write8_handler(space, 0xfb00, 0xfbff, 0, 0, SMH_BANK14);
52   memory_install_write8_handler(space, 0xfc00, 0xfdff, 0, 0, SMH_BANK15);
53   memory_install_write8_handler(space, 0xfe00, 0xfeff, 0, 0, SMH_BANK16);
54   memory_install_write8_handler(space, 0xff00, 0xffff, 0, 0, SMH_BANK17);
44   memory_install_write8_handler(space, 0x4000, 0x5fff, 0, 0, SMH_BANK(7));
45   memory_install_write8_handler(space, 0x6000, 0x7fff, 0, 0, SMH_BANK(8));
46   memory_install_write8_handler(space, 0x8000, 0xbeff, 0, 0, SMH_BANK(9));
47   memory_install_write8_handler(space, 0xbf00, 0xbfff, 0, 0, SMH_BANK(10));
48   memory_install_write8_handler(space, 0xc000, 0xf7ff, 0, 0, SMH_BANK(11));
49   memory_install_write8_handler(space, 0xf800, 0xf9ff, 0, 0, SMH_BANK(12));
50   memory_install_write8_handler(space, 0xfa00, 0xfaff, 0, 0, SMH_BANK(13));
51   memory_install_write8_handler(space, 0xfb00, 0xfbff, 0, 0, SMH_BANK(14));
52   memory_install_write8_handler(space, 0xfc00, 0xfdff, 0, 0, SMH_BANK(15));
53   memory_install_write8_handler(space, 0xfe00, 0xfeff, 0, 0, SMH_BANK(16));
54   memory_install_write8_handler(space, 0xff00, 0xffff, 0, 0, SMH_BANK(17));
5555
5656   memory_set_bankptr(machine, 1, memory_region(machine,"maincpu") + 0x10000);
5757   memory_set_bankptr(machine, 2, memory_region(machine,"maincpu") + 0x12000);
src/mess/machine/kc.c
r4679r4680
11471147
11481148      memory_set_bankptr(machine, 3, mem_ptr);
11491149      memory_set_bankptr(machine, 4, mem_ptr+0x02800);
1150      memory_install_read8_handler(space, 0x8000, 0xa7ff, 0, 0, SMH_BANK3);
1151      memory_install_read8_handler(space, 0xa800, 0xbfff, 0, 0, SMH_BANK4);
1150      memory_install_read8_handler(space, 0x8000, 0xa7ff, 0, 0, SMH_BANK(3));
1151      memory_install_read8_handler(space, 0xa800, 0xbfff, 0, 0, SMH_BANK(4));
11521152
11531153      /* write protect RAM8 ? */
11541154      if ((kc85_pio_data[1] & (1<<6))==0)
r4679r4680
11621162         LOG(("RAM8 write enabled\n"));
11631163
11641164         /* ram8 is enabled and write enabled */
1165         memory_install_write8_handler(space, 0x8000, 0xa7ff, 0, 0, SMH_BANK9);
1166         memory_install_write8_handler(space, 0xa800, 0xbfff, 0, 0, SMH_BANK10);
1165         memory_install_write8_handler(space, 0x8000, 0xa7ff, 0, 0, SMH_BANK(9));
1166         memory_install_write8_handler(space, 0xa800, 0xbfff, 0, 0, SMH_BANK(10));
11671167         memory_set_bankptr(machine, 9, mem_ptr);
11681168         memory_set_bankptr(machine, 10, mem_ptr+0x02800);
11691169      }
r4679r4680
11861186
11871187      memory_set_bankptr(machine, 3, ram_page);
11881188      memory_set_bankptr(machine, 9, ram_page);
1189      memory_install_read8_handler(space, 0x8000, 0xa7ff, 0, 0, SMH_BANK3);
1190      memory_install_write8_handler(space, 0x8000, 0xa7ff, 0, 0, SMH_BANK9);
1189      memory_install_read8_handler(space, 0x8000, 0xa7ff, 0, 0, SMH_BANK(3));
1190      memory_install_write8_handler(space, 0x8000, 0xa7ff, 0, 0, SMH_BANK(9));
11911191
11921192      ram_page = kc85_4_get_video_ram_base(0, 0);
11931193
11941194      memory_set_bankptr(machine, 4, ram_page + 0x2800);
11951195      memory_set_bankptr(machine, 10, ram_page + 0x2800);
1196      memory_install_read8_handler(space, 0xa800, 0xbfff, 0, 0, SMH_BANK4);
1197      memory_install_write8_handler(space, 0xa800, 0xbfff, 0, 0, SMH_BANK10);
1196      memory_install_read8_handler(space, 0xa800, 0xbfff, 0, 0, SMH_BANK(4));
1197      memory_install_write8_handler(space, 0xa800, 0xbfff, 0, 0, SMH_BANK(10));
11981198   }
11991199}
12001200
r4679r4680
12091209      LOG(("ram0 enabled\n"));
12101210
12111211      /* yes; set address of bank */
1212      memory_install_read8_handler(space, 0x0000, 0x3fff, 0, 0, SMH_BANK1);
1212      memory_install_read8_handler(space, 0x0000, 0x3fff, 0, 0, SMH_BANK(1));
12131213      memory_set_bankptr(machine, 1, mess_ram);
12141214
12151215      /* write protect ram? */
r4679r4680
12261226         LOG(("ram0 write enabled\n"));
12271227
12281228         /* ram is enabled and write enabled; and set address of bank */
1229         memory_install_write8_handler(space, 0x0000, 0x3fff, 0, 0, SMH_BANK7);
1229         memory_install_write8_handler(space, 0x0000, 0x3fff, 0, 0, SMH_BANK(7));
12301230         memory_set_bankptr(machine, 7, mess_ram);
12311231      }
12321232   }
r4679r4680
12561256      mem_ptr = mess_ram + 0x04000;
12571257
12581258      /* yes */
1259      rh = SMH_BANK2;
1259      rh = SMH_BANK(2);
12601260      /* set address of bank */
12611261      memory_set_bankptr(machine, 2, mem_ptr);
12621262
r4679r4680
12741274         LOG(("ram4 write enabled\n"));
12751275
12761276         /* ram is enabled and write enabled */
1277         wh = SMH_BANK8;
1277         wh = SMH_BANK(8);
12781278         /* set address of bank */
12791279         memory_set_bankptr(machine, 8, mem_ptr);
12801280      }
r4679r4680
13041304      LOG(("CAOS rom 0x0c000\n"));
13051305
13061306      memory_set_bankptr(machine, 5,memory_region(machine, "maincpu") + 0x012000);
1307      rh = SMH_BANK5;
1307      rh = SMH_BANK(5);
13081308   }
13091309   else if (kc85_pio_data[0] & (1<<7))
13101310   {
r4679r4680
13121312           LOG(("BASIC rom 0x0c000\n"));
13131313
13141314        memory_set_bankptr(machine, 5, memory_region(machine, "maincpu") + 0x010000);
1315      rh = SMH_BANK5;
1315      rh = SMH_BANK(5);
13161316   }
13171317   else
13181318   {
r4679r4680
13211321         LOG(("module rom at 0xc000\n"));
13221322
13231323         memory_set_bankptr(machine, 5, kc85_module_rom);
1324         rh = SMH_BANK5;
1324         rh = SMH_BANK(5);
13251325      }
13261326      else
13271327      {
r4679r4680
13461346      LOG(("CAOS rom 0x0e000\n"));
13471347      /* read will access the rom */
13481348      memory_set_bankptr(machine, 6,memory_region(machine, "maincpu") + 0x013000);
1349      rh = SMH_BANK6;
1349      rh = SMH_BANK(6);
13501350   }
13511351   else
13521352   {
r4679r4680
14621462      LOG(("BASIC rom 0x0c000\n"));
14631463
14641464      memory_set_bankptr(machine, 4, memory_region(machine, "maincpu") + 0x010000);
1465      rh = SMH_BANK4;
1465      rh = SMH_BANK(4);
14661466   }
14671467   else
14681468   {
r4679r4680
14851485      LOG(("CAOS rom 0x0e000\n"));
14861486
14871487      memory_set_bankptr(machine, 5,memory_region(machine, "maincpu") + 0x012000);
1488        rh = SMH_BANK5;
1488        rh = SMH_BANK(5);
14891489   }
14901490   else
14911491   {
r4679r4680
14971497}
14981498
14991499/* update status of memory area 0x0000-0x03fff */
1500/* SMH_BANK1 is used for read operations and SMH_BANK6 is used
1500/* SMH_BANK(1) is used for read operations and SMH_BANK(6) is used
15011501for write operations */
15021502static void kc85_3_update_0x00000(running_machine *machine)
15031503{
r4679r4680
15111511      LOG(("ram0 enabled\n"));
15121512
15131513      /* yes */
1514      rh = SMH_BANK1;
1514      rh = SMH_BANK(1);
15151515      /* set address of bank */
15161516      memory_set_bankptr(machine, 1, mess_ram);
15171517
r4679r4680
15291529         LOG(("ram0 write enabled\n"));
15301530
15311531         /* ram is enabled and write enabled */
1532         wh = SMH_BANK6;
1532         wh = SMH_BANK(6);
15331533         /* set address of bank */
15341534         memory_set_bankptr(machine, 6, mess_ram);
15351535      }
r4679r4680
15481548}
15491549
15501550/* update status of memory area 0x08000-0x0ffff */
1551/* SMH_BANK3 is used for read, SMH_BANK8 is used for write */
1551/* SMH_BANK(3) is used for read, SMH_BANK(8) is used for write */
15521552static void kc85_3_update_0x08000(running_machine *machine)
15531553{
15541554   const address_space *space = cputag_get_address_space( machine, "maincpu", ADDRESS_SPACE_PROGRAM );
r4679r4680
15651565      memory_set_bankptr(machine, 3, ram_page);
15661566      memory_set_bankptr(machine, 8, ram_page);
15671567
1568      rh = SMH_BANK3;
1569      wh = SMH_BANK8;
1568      rh = SMH_BANK(3);
1569      wh = SMH_BANK(8);
15701570    }
15711571    else if (kc85_pio_data[1] & (1<<5))
15721572    {
r4679r4680
15751575      ram_page = mess_ram + 0x04000;
15761576
15771577      memory_set_bankptr(machine, 3, ram_page);
1578      rh = SMH_BANK3;
1578      rh = SMH_BANK(3);
15791579
15801580      /* write protect RAM8 ? */
15811581      if ((kc85_pio_data[1] & (1<<6))==0)
r4679r4680
15881588      {
15891589         LOG(("RAM8 write enabled\n"));
15901590         /* ram8 is enabled and write enabled */
1591         wh = SMH_BANK8;
1591         wh = SMH_BANK(8);
15921592         memory_set_bankptr(machine, 8,ram_page);
15931593      }
15941594    }
src/mess/mess.mak
r4679r4680
240240   $(MESSOBJ)/acorn.a \
241241   $(MESSOBJ)/advision.a \
242242   $(MESSOBJ)/amiga.a \
243   $(MESSOBJ)/amstrad.a \
244243   $(MESSOBJ)/apexc.a \
245244   $(MESSOBJ)/apf.a \
246   $(MESSOBJ)/apple.a \
247245   $(MESSOBJ)/aquarius.a \
248246   $(MESSOBJ)/arcadia.a \
249247   $(MESSOBJ)/ascii.a \
r4679r4680
256254   $(MESSOBJ)/be.a \
257255   $(MESSOBJ)/bk.a \
258256   $(MESSOBJ)/bondwell.a \
259   $(MESSOBJ)/cbm.a \
260   $(MESSOBJ)/cbmshare.a \
261257   $(MESSOBJ)/cdi.a \
262258   $(MESSOBJ)/cgenie.a \
263259   $(MESSOBJ)/coco.a \
r4679r4680
325321   $(MESSOBJ)/pk8020.a \
326322   $(MESSOBJ)/pmd85.a \
327323   $(MESSOBJ)/pp01.a \
328   $(MESSOBJ)/primo.a \
329324   $(MESSOBJ)/radio.a \
330325   $(MESSOBJ)/rca.a \
326   $(MESSOBJ)/robotron.a \
331327   $(MESSOBJ)/rockwell.a \
332   $(MESSOBJ)/robotron.a \
333328   $(MESSOBJ)/samcoupe.a \
334329   $(MESSOBJ)/samsung.a \
335330   $(MESSOBJ)/sapi1.a \
336331   $(MESSOBJ)/sega.a \
337332   $(MESSOBJ)/sgi.a \
338333   $(MESSOBJ)/sharp.a \
339   $(MESSOBJ)/sinclair.a \
340334   $(MESSOBJ)/snk.a \
341335   $(MESSOBJ)/sony.a \
342336   $(MESSOBJ)/sord.a \
r4679r4680
346340   $(MESSOBJ)/svi.a \
347341   $(MESSOBJ)/svision.a \
348342   $(MESSOBJ)/synertec.a \
349   $(MESSOBJ)/tangerin.a \
350343   $(MESSOBJ)/tatung.a \
351344   $(MESSOBJ)/teamconc.a \
352345   $(MESSOBJ)/tec1.a \
353346   $(MESSOBJ)/telmac.a \
354   $(MESSOBJ)/thomson.a \
355347   $(MESSOBJ)/ti85.a \
356348   $(MESSOBJ)/ti99.a \
357349   $(MESSOBJ)/tiger.a \
r4679r4680
368360   $(MESSOBJ)/skeleton.a \
369361   $(MESSOBJ)/shared.a \
370362
363#   $(MESSOBJ)/amstrad.a \
364#   $(MESSOBJ)/apple.a \
365#   $(MESSOBJ)/cbm.a \
366#   $(MESSOBJ)/cbmshare.a \
367#   $(MESSOBJ)/primo.a \
368#   $(MESSOBJ)/sinclair.a \
369#   $(MESSOBJ)/tangerin.a \
370#   $(MESSOBJ)/thomson.a \
371371
372372
373373
src/mess/devices/ti99cart.c
r4679r4680
11911191         break;
11921192
11931193      /* --- the following bits of info are returned as pointers to functions --- */
1194      case DEVINFO_FCT_SET_INFO:
1195         /* Nothing */
1196         break;
11971194      case DEVINFO_FCT_START:
11981195         info->start = DEVICE_START_NAME(ti99_pcb_std);
11991196         break;
r4679r4680
23592356   MDRV_CARTSLOT_UNLOAD(ti99_cartridge)
23602357MACHINE_DRIVER_END
23612358
2362static DEVICE_SET_INFO(ti99_multicart)
2363{
2364//   printf("device_set_info(ti99-cart)");
2365}
23662359
2367
23682360DEVICE_GET_INFO(ti99_multicart)
23692361{
23702362   switch (state)
r4679r4680
23952387         strcpy(info->s, __FILE__);
23962388         break;
23972389      /* --- the following bits of info are returned as pointers to functions --- */
2398      case DEVINFO_FCT_SET_INFO:
2399         info->set_info = DEVICE_SET_INFO_NAME(ti99_multicart);
2400         break;         
24012390      case DEVINFO_FCT_START:
24022391         info->start = DEVICE_START_NAME(ti99_multicart);
24032392         break;
src/mess/devices/bitbngr.c
r4679r4680
8686   const bitbanger_config *config = get_config(device);
8787
8888   bi = get_token(device);
89   bi->pulses = (double *) auto_malloc(config->maximum_pulses * sizeof(double));
90   bi->factored_pulses = (int *) auto_malloc(config->maximum_pulses * sizeof(int));
89   bi->pulses = auto_alloc_array(device->machine, double, config->maximum_pulses);
90   bi->factored_pulses = auto_alloc_array(device->machine, int, config->maximum_pulses);
9191   bi->last_pulse_time = 0.0;
9292   bi->recorded_pulses = 0;
9393   bi->value = config->initial_value;
src/mess/devices/thomflop.c
r4679r4680
505505#define QDD_MAXBUF ( THOM_QDD_SIZE_ID + THOM_QDD_SIZE_DATA ) * 512
506506
507507
508static struct
508static struct _to7qdd
509509{
510510   /* MC6852 registers */
511511   UINT8 status;
r4679r4680
868868{
869869   LOG(( "to7_qdd_init: CQ 90-028 controller\n" ));
870870
871   to7qdd = auto_malloc( sizeof( *to7qdd ) );
872   assert( to7qdd );
871   to7qdd = auto_alloc(machine, struct _to7qdd);
873872
874873   state_save_register_global( machine, to7qdd->status );
875874   state_save_register_global( machine, to7qdd->ctrl1 );
r4679r4680
913912#define THOM_MAXBUF ( THOM_QDD_SIZE_ID + THOM_QDD_SIZE_DATA ) * 512
914913
915914
916static struct
915static struct _thmfc1
917916{
918917
919918   UINT8   op;
r4679r4680
15571556{
15581557   LOG(( "thmfc_floppy_init: THMFC1 controller\n" ));
15591558
1560   thmfc1 = auto_malloc( sizeof( *thmfc1 ) );
1561   assert( thmfc1 );
1559   thmfc1 = auto_alloc(machine, struct _thmfc1);
15621560
15631561   thmfc_floppy_cmd = timer_alloc( machine, thmfc_floppy_cmd_complete_cb, NULL );
15641562
src/mess/inputx.c
r4679r4680
533533   chars
534534-------------------------------------------------*/
535535
536static mess_input_code *build_codes(const input_port_config *portconfig)
536static mess_input_code *build_codes(running_machine *machine, const input_port_config *portconfig)
537537{
538538   mess_input_code *codes = NULL;
539539   const input_port_config *ports[NUM_SIMUL_KEYS];
r4679r4680
545545   if (code_count > 0)
546546   {
547547      /* allocate the codes */
548      codes = auto_malloc(sizeof(*codes) * (code_count + 1));
549      memset(codes, 0, sizeof(*codes) * (code_count + 1));
550
548      codes = auto_alloc_array_clear(machine, mess_input_code, code_count + 1);
549   
551550      /* and populate them */
552551      scan_keys(portconfig, codes, ports, fields, 0, 0);
553552   }
r4679r4680
650649static void setup_keybuffer(running_machine *machine)
651650{
652651   inputx_timer = timer_alloc(machine, inputx_timerproc, NULL);
653   keybuffer = auto_malloc(sizeof(key_buffer));
654   memset(keybuffer, 0, sizeof(*keybuffer));
652   keybuffer = auto_alloc_clear(machine, key_buffer);
655653   add_exit_callback(machine, clear_keybuffer);
656654}
657655
r4679r4680
675673   /* posting keys directly only makes sense for a computer */
676674   if (machine->gamedrv->flags & GAME_COMPUTER)
677675   {
678      codes = build_codes(machine->portconfig);
676      codes = build_codes(machine, machine->portconfig);
679677      setup_keybuffer(machine);
680678   }
681679}
src/mess/osd/winui/swconfig.c
r4679r4680
1717   software_config *config;
1818
1919   // allocate the software_config
20   config = malloc_or_die(sizeof(*config));
21   memset(config, 0, sizeof(*config));
20   config = alloc_clear_or_die(software_config);
2221
2322   // allocate the machine config
2423   config->mconfig = machine_config_alloc_with_mess_devices(drivers[driver_index]);
src/mess/eventlst.c
r4679r4680
2323can be setup as:
2424
2525Number_of_CPU_Cycles_In_A_Frame/Minimum_Number_Of_Cycles_Per_Instruction */
26void EventList_Initialise(int NumEntries)
26void EventList_Initialise(running_machine *machine, int NumEntries)
2727{
28   pEventListBuffer = auto_malloc(sizeof(EVENT_LIST_ITEM)*NumEntries);
28   pEventListBuffer = auto_alloc_array(machine, char, NumEntries);
2929   TotalEvents = NumEntries;
3030   CyclesPerFrame = 0;
3131   EventList_Reset();
src/mess/eventlst.h
r4679r4680
88   int Event_Time;
99} EVENT_LIST_ITEM;
1010
11void   EventList_Initialise(int NumEntries);
11void   EventList_Initialise(running_machine *machine, int NumEntries);
1212void    EventList_Reset(void);
1313void    EventList_AddItem(int ID, int Data,int Time);
1414void    EventList_SetOffsetStartTime(int StartTime);
src/mess/mscommon.c
r4679r4680
6565   char_width = machine->gfx[gfx]->width;
6666   char_height = machine->gfx[gfx]->height;
6767
68   term = (struct terminal *) auto_malloc(sizeof(struct terminal) - sizeof(term->mem)
68   term = (struct terminal *) auto_alloc_array(machine, char, sizeof(struct terminal) - sizeof(term->mem)
6969      + (num_cols * num_rows * sizeof(termchar_t)));
7070
7171   term->tm = tilemap_create(machine, terminal_gettileinfo, tilemap_scan_rows,
src/mess/formats/uef_cas.c
r4679r4680
114114      if ( in_ptr == NULL ) {
115115         goto cleanup;
116116      }
117      gz_ptr = (UINT8*) auto_malloc( inflate_size );
117      gz_ptr = malloc( inflate_size );
118118
119119      d_stream.zalloc = 0;
120120      d_stream.zfree = 0;
src/mess/formats/tzx_cas.c
r4679r4680
8585   int pos = sizeof(TZX_HEADER) + 2;
8686   int max_block_count = INITIAL_MAX_BLOCK_COUNT;
8787
88   blocks = auto_malloc( max_block_count * sizeof(UINT8*) );
88   blocks = alloc_array_clear_or_die(UINT8*, max_block_count);
8989   block_count = 0;
9090
9191   while( pos < caslen ) {
r4679r4680
9797         int   old_max_block_count = max_block_count;
9898
9999         max_block_count = max_block_count + BLOCK_COUNT_INCREMENTS;
100         blocks = auto_malloc( max_block_count * sizeof(UINT8*) );
100         blocks = auto_alloc_array(NULL /*machine*/, UINT8*, max_block_count);   // SHOULD NOT BE USING auto_alloc_array()
101101         memcpy( blocks, old_blocks, old_max_block_count * sizeof(UINT8*) );
102102      }
103103
r4679r4680
183183
184184      block_count++;
185185   }
186   free(blocks);
186187}
187188
188189INLINE int millisec_to_samplecount( int millisec ) {
src/mess/formats/csw_cas.c
r4679r4680
9393   //from here on down for now I am assuming it is compressed csw file.
9494   in_ptr = (UINT8*) casdata+0x34+HeaderExtensionLength;
9595
96   gz_ptr = (UINT8*) auto_malloc( 8 );
96   gz_ptr = malloc( 8 );
9797
9898
9999   d_stream.next_in = (unsigned char *)in_ptr;
r4679r4680
211211   //from here on down for now I am assuming it is compressed csw file.
212212   in_ptr = (UINT8*) bytes+0x34+HeaderExtensionLength;
213213
214   gz_ptr = (UINT8*) auto_malloc( 8 );
214   gz_ptr = malloc( 8 );
215215
216216
217217   d_stream.next_in = (unsigned char *)in_ptr;
src/mess/formats/thom_cas.c
r4679r4680
122122   }
123123
124124   to7_k7_bitsize = 0;
125   to7_k7_bits = auto_malloc( bitmax );
125   to7_k7_bits = auto_alloc_array(machine, UINT8, bitmax );
126126
127127/* store one period */
128128#if K7_SPEED_HACK
r4679r4680
157157      }                     \
158158      if ( to7_k7_bitsize + 1 >= bitmax )         \
159159      {                     \
160         UINT8* a = auto_malloc( bitmax * 2);      \
160         UINT8* a = auto_alloc_array(machine, UINT8, bitmax * 2);      \
161161         memcpy ( a, to7_k7_bits, bitmax );      \
162162         bitmax *= 2;               \
163163         to7_k7_bits = a;            \
src/mess/drivers/vip.c
r4679r4680
281281   switch (mess_ram_size)
282282   {
283283   case 1 * 1024:
284      memory_install_readwrite8_handler(program, 0x0000, 0x03ff, 0, 0x7c00, SMH_BANK1, SMH_BANK1);
284      memory_install_readwrite8_handler(program, 0x0000, 0x03ff, 0, 0x7c00, SMH_BANK(1), SMH_BANK(1));
285285      break;
286286
287287   case 2 * 1024:
288      memory_install_readwrite8_handler(program, 0x0000, 0x07ff, 0, 0x7800, SMH_BANK1, SMH_BANK1);
288      memory_install_readwrite8_handler(program, 0x0000, 0x07ff, 0, 0x7800, SMH_BANK(1), SMH_BANK(1));
289289      break;
290290
291291   case 4 * 1024:
292      memory_install_readwrite8_handler(program, 0x0000, 0x0fff, 0, 0x7000, SMH_BANK1, SMH_BANK1);
292      memory_install_readwrite8_handler(program, 0x0000, 0x0fff, 0, 0x7000, SMH_BANK(1), SMH_BANK(1));
293293      break;
294294
295295   case 32 * 1024:
296      memory_install_readwrite8_handler(program, 0x0000, 0x7fff, 0, 0, SMH_BANK1, SMH_BANK1);
296      memory_install_readwrite8_handler(program, 0x0000, 0x7fff, 0, 0, SMH_BANK(1), SMH_BANK(1));
297297      break;
298298   }
299299}
r4679r4680
582582
583583   /* ROM banking */
584584
585   memory_install_readwrite8_handler(cputag_get_address_space(machine, CDP1802_TAG, ADDRESS_SPACE_PROGRAM), 0x8000, 0x81ff, 0, 0x7e00, SMH_BANK2, SMH_UNMAP);
585   memory_install_readwrite8_handler(cputag_get_address_space(machine, CDP1802_TAG, ADDRESS_SPACE_PROGRAM), 0x8000, 0x81ff, 0, 0x7e00, SMH_BANK(2), SMH_UNMAP);
586586   memory_configure_bank(machine, 2, 0, 1, memory_region(machine, CDP1802_TAG) + 0x8000, 0);
587587   memory_set_bank(machine, 2, 0);
588588
r4679r4680
595595
596596   /* allocate color RAM */
597597   
598   state->colorram = auto_malloc(VP590_COLOR_RAM_SIZE);
598   state->colorram = auto_alloc_array(machine, UINT8, VP590_COLOR_RAM_SIZE);
599599
600600   /* enable power LED */
601601
r4679r4680
662662
663663   /* enable ROM mirror at 0x0000 */
664664
665   memory_install_readwrite8_handler(program, 0x0000, 0x01ff, 0, 0x7e00, SMH_BANK1, SMH_UNMAP);
665   memory_install_readwrite8_handler(program, 0x0000, 0x01ff, 0, 0x7e00, SMH_BANK(1), SMH_UNMAP);
666666   memory_set_bank(machine, 1, VIP_BANK_ROM);
667667}
668668
src/mess/drivers/comquest.c
r4679r4680
5959#endif
6060
6161static ADDRESS_MAP_START( comquest_mem , ADDRESS_SPACE_PROGRAM, 8)
62//  { 0x0000, 0x7fff, SMH_BANK1 },
62//  { 0x0000, 0x7fff, SMH_BANK(1) },
6363   AM_RANGE(0x0000, 0x7fff) AM_ROM
6464   AM_RANGE(0x8000, 0xffff) AM_READWRITE(SMH_ROM, SMH_RAM)
6565//  { 0x8000, 0xffff, SMH_RAM }, // batterie buffered
src/mess/drivers/dgn_beta.c
r4679r4680
135135*/
136136
137137static ADDRESS_MAP_START( dgnbeta_map, ADDRESS_SPACE_PROGRAM, 8 )
138   AM_RANGE(0x0000, 0x0FFF)    AM_READWRITE(SMH_BANK1      ,SMH_BANK1)
139   AM_RANGE(0x1000, 0x1FFF)    AM_READWRITE(SMH_BANK2      ,SMH_BANK2)
140   AM_RANGE(0x2000, 0x2FFF)    AM_READWRITE(SMH_BANK3      ,SMH_BANK3)
141   AM_RANGE(0x3000, 0x3FFF)    AM_READWRITE(SMH_BANK4      ,SMH_BANK4)
142   AM_RANGE(0x4000, 0x4FFF)    AM_READWRITE(SMH_BANK5      ,SMH_BANK5)
143   AM_RANGE(0x5000, 0x5FFF)    AM_READWRITE(SMH_BANK6      ,SMH_BANK6)
144   AM_RANGE(0x6000, 0x6FFF)    AM_READWRITE(SMH_BANK7      ,SMH_BANK7) AM_BASE(&videoram) AM_SIZE(&videoram_size)
145   AM_RANGE(0x7000, 0x7FFF)    AM_READWRITE(SMH_BANK8      ,SMH_BANK8)
146   AM_RANGE(0x8000, 0x8FFF)    AM_READWRITE(SMH_BANK9      ,SMH_BANK9)
147   AM_RANGE(0x9000, 0x9FFF)    AM_READWRITE(SMH_BANK10   ,SMH_BANK10)
148   AM_RANGE(0xA000, 0xAFFF)    AM_READWRITE(SMH_BANK11   ,SMH_BANK11)
149   AM_RANGE(0xB000, 0xBFFF)    AM_READWRITE(SMH_BANK12   ,SMH_BANK12)
150   AM_RANGE(0xC000, 0xCFFF)    AM_READWRITE(SMH_BANK13   ,SMH_BANK13)
151   AM_RANGE(0xD000, 0xDFFF)    AM_READWRITE(SMH_BANK14   ,SMH_BANK14)
152   AM_RANGE(0xE000, 0xEFFF)    AM_READWRITE(SMH_BANK15   ,SMH_BANK15)
153   AM_RANGE(0xF000, 0xFBFF)    AM_READWRITE(SMH_BANK16   ,SMH_BANK16)
138   AM_RANGE(0x0000, 0x0FFF)    AM_READWRITE(SMH_BANK(1)      ,SMH_BANK(1))
139   AM_RANGE(0x1000, 0x1FFF)    AM_READWRITE(SMH_BANK(2)      ,SMH_BANK(2))
140   AM_RANGE(0x2000, 0x2FFF)    AM_READWRITE(SMH_BANK(3)      ,SMH_BANK(3))
141   AM_RANGE(0x3000, 0x3FFF)    AM_READWRITE(SMH_BANK(4)      ,SMH_BANK(4))
142   AM_RANGE(0x4000, 0x4FFF)    AM_READWRITE(SMH_BANK(5)      ,SMH_BANK(5))
143   AM_RANGE(0x5000, 0x5FFF)    AM_READWRITE(SMH_BANK(6)      ,SMH_BANK(6))
144   AM_RANGE(0x6000, 0x6FFF)    AM_READWRITE(SMH_BANK(7)      ,SMH_BANK(7)) AM_BASE(&videoram) AM_SIZE(&videoram_size)
145   AM_RANGE(0x7000, 0x7FFF)    AM_READWRITE(SMH_BANK(8)      ,SMH_BANK(8))
146   AM_RANGE(0x8000, 0x8FFF)    AM_READWRITE(SMH_BANK(9)      ,SMH_BANK(9))
147   AM_RANGE(0x9000, 0x9FFF)    AM_READWRITE(SMH_BANK(10)   ,SMH_BANK(10))
148   AM_RANGE(0xA000, 0xAFFF)    AM_READWRITE(SMH_BANK(11)   ,SMH_BANK(11))
149   AM_RANGE(0xB000, 0xBFFF)    AM_READWRITE(SMH_BANK(12)   ,SMH_BANK(12))
150   AM_RANGE(0xC000, 0xCFFF)    AM_READWRITE(SMH_BANK(13)   ,SMH_BANK(13))
151   AM_RANGE(0xD000, 0xDFFF)    AM_READWRITE(SMH_BANK(14)   ,SMH_BANK(14))
152   AM_RANGE(0xE000, 0xEFFF)    AM_READWRITE(SMH_BANK(15)   ,SMH_BANK(15))
153   AM_RANGE(0xF000, 0xFBFF)    AM_READWRITE(SMH_BANK(16)   ,SMH_BANK(16))
154154   AM_RANGE(0xfC00, 0xfC1F)   AM_READWRITE(SMH_NOP      ,SMH_NOP)
155155   AM_RANGE(0xFC20, 0xFC23)   AM_DEVREADWRITE("pia_0", pia6821_r, pia6821_w)
156156   AM_RANGE(0xFC24, 0xFC27)   AM_DEVREADWRITE("pia_1", pia6821_r, pia6821_w)
r4679r4680
164164   AM_RANGE(0xfce4, 0xfdff)   AM_READWRITE(SMH_NOP      ,SMH_NOP)
165165   AM_RANGE(0xFE00, 0xFE0F)   AM_READWRITE(dgn_beta_page_r   ,dgn_beta_page_w)
166166   AM_RANGE(0xfe10, 0xfEff)   AM_READWRITE(SMH_NOP      ,SMH_NOP)
167   AM_RANGE(0xFF00, 0xFFFF)    AM_READWRITE(SMH_BANK17   ,SMH_BANK17)
167   AM_RANGE(0xFF00, 0xFFFF)    AM_READWRITE(SMH_BANK(17)   ,SMH_BANK(17))
168168
169169ADDRESS_MAP_END
170170
src/mess/drivers/ami1200.c
r4679r4680
5858      /* swap the write handlers between ROM and bank 1 based on the bit */
5959      if ((data & 1) == 0)
6060         /* overlay disabled, map RAM on 0x000000 */
61         memory_install_write32_handler(space, 0x000000, 0x1fffff, 0, 0, SMH_BANK1);
61         memory_install_write32_handler(space, 0x000000, 0x1fffff, 0, 0, SMH_BANK(1));
6262      else
6363         /* overlay enabled, map Amiga system ROM on 0x000000 */
6464         memory_install_write32_handler(space, 0x000000, 0x1fffff, 0, 0, SMH_UNMAP);
src/mess/drivers/c65.c
r4679r4680
7676
7777static ADDRESS_MAP_START( c65_mem , ADDRESS_SPACE_PROGRAM, 8)
7878   AM_RANGE(0x00000, 0x07fff) AM_RAMBANK(11)
79   AM_RANGE(0x08000, 0x09fff) AM_READWRITE(SMH_BANK1, SMH_BANK12)
80   AM_RANGE(0x0a000, 0x0bfff) AM_READWRITE(SMH_BANK2, SMH_BANK13)
81   AM_RANGE(0x0c000, 0x0cfff) AM_READWRITE(SMH_BANK3, SMH_BANK14)
82   AM_RANGE(0x0d000, 0x0d7ff) AM_READWRITE(SMH_BANK4, SMH_BANK5)
83   AM_RANGE(0x0d800, 0x0dbff) AM_READWRITE(SMH_BANK6, SMH_BANK7)
84   AM_RANGE(0x0dc00, 0x0dfff) AM_READWRITE(SMH_BANK8, SMH_BANK9)
85   AM_RANGE(0x0e000, 0x0ffff) AM_READWRITE(SMH_BANK10, SMH_BANK15)
79   AM_RANGE(0x08000, 0x09fff) AM_READWRITE(SMH_BANK(1), SMH_BANK(12))
80   AM_RANGE(0x0a000, 0x0bfff) AM_READWRITE(SMH_BANK(2), SMH_BANK(13))
81   AM_RANGE(0x0c000, 0x0cfff) AM_READWRITE(SMH_BANK(3), SMH_BANK(14))
82   AM_RANGE(0x0d000, 0x0d7ff) AM_READWRITE(SMH_BANK(4), SMH_BANK(5))
83   AM_RANGE(0x0d800, 0x0dbff) AM_READWRITE(SMH_BANK(6), SMH_BANK(7))
84   AM_RANGE(0x0dc00, 0x0dfff) AM_READWRITE(SMH_BANK(8), SMH_BANK(9))
85   AM_RANGE(0x0e000, 0x0ffff) AM_READWRITE(SMH_BANK(10), SMH_BANK(15))
8686   AM_RANGE(0x10000, 0x1f7ff) AM_RAM
8787   AM_RANGE(0x1f800, 0x1ffff) AM_RAM AM_BASE( &c64_colorram)
8888
src/mess/drivers/atari.c
r4679r4680
736736   if( new_mmu & 0x01 )
737737   {
738738      logerror("%s MMU BIOS ROM\n", machine->gamedrv->name);
739      rbank3 = SMH_BANK3;
739      rbank3 = SMH_BANK(3);
740740      wbank3 = SMH_UNMAP;
741741      base3 = memory_region(machine, "maincpu") + 0x14000;  /* 8K lo BIOS */
742      rbank4 = SMH_BANK4;
742      rbank4 = SMH_BANK(4);
743743      wbank4 = SMH_UNMAP;
744744      base4 = memory_region(machine, "maincpu") + 0x15800;  /* 4K FP ROM + 8K hi BIOS */
745745   }
746746   else
747747   {
748748      logerror("%s MMU BIOS RAM\n", machine->gamedrv->name);
749      rbank3 = SMH_BANK3;
750      wbank3 = SMH_BANK3;
749      rbank3 = SMH_BANK(3);
750      wbank3 = SMH_BANK(3);
751751      base3 = memory_region(machine, "maincpu") + 0x0c000;  /* 8K RAM */
752      rbank4 = SMH_BANK4;
753      wbank4 = SMH_BANK4;
752      rbank4 = SMH_BANK(4);
753      wbank4 = SMH_BANK(4);
754754      base4 = memory_region(machine, "maincpu") + 0x0d800;  /* 4K RAM + 8K RAM */
755755   }
756756   memory_install_readwrite8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xc000, 0xcfff, 0, 0, rbank3, wbank3);
r4679r4680
762762   if( new_mmu & 0x02 )
763763   {
764764      logerror("%s MMU BASIC RAM\n", machine->gamedrv->name);
765      rbank1 = SMH_BANK1;
766      wbank1 = SMH_BANK1;
765      rbank1 = SMH_BANK(1);
766      wbank1 = SMH_BANK(1);
767767      base1 = memory_region(machine, "maincpu") + 0x0a000;  /* 8K RAM */
768768   }
769769   else
770770   {
771771      logerror("%s MMU BASIC ROM\n", machine->gamedrv->name);
772      rbank1 = SMH_BANK1;
772      rbank1 = SMH_BANK(1);
773773      wbank1 = SMH_UNMAP;
774774      base1 = memory_region(machine, "maincpu") + 0x10000;  /* 8K BASIC */
775775   }
r4679r4680
780780   if( new_mmu & 0x80 )
781781   {
782782      logerror("%s MMU SELFTEST RAM\n", machine->gamedrv->name);
783      rbank2 = SMH_BANK2;
784      wbank2 = SMH_BANK2;
783      rbank2 = SMH_BANK(2);
784      wbank2 = SMH_BANK(2);
785785      base2 = memory_region(machine, "maincpu") + 0x05000;  /* 0x0800 bytes */
786786   }
787787   else
788788   {
789789      logerror("%s MMU SELFTEST ROM\n", machine->gamedrv->name);
790      rbank2 = SMH_BANK2;
790      rbank2 = SMH_BANK(2);
791791      wbank2 = SMH_UNMAP;
792792      base2 = memory_region(machine, "maincpu") + 0x15000;  /* 0x0800 bytes */
793793   }
r4679r4680
806806   if( new_mmu & 0x01 )
807807   {
808808      logerror("%s MMU BIOS ROM\n", machine->gamedrv->name);
809      rbank3 = SMH_BANK3;
809      rbank3 = SMH_BANK(3);
810810      wbank3 = SMH_UNMAP;
811811      base3 = memory_region(machine, "maincpu") + 0x14000;  /* 8K lo BIOS */
812      rbank4 = SMH_BANK4;
812      rbank4 = SMH_BANK(4);
813813      wbank4 = SMH_UNMAP;
814814      base4 = memory_region(machine, "maincpu") + 0x15800;  /* 4K FP ROM + 8K hi BIOS */
815815   }
816816   else
817817   {
818818      logerror("%s MMU BIOS RAM\n", machine->gamedrv->name);
819      rbank3 = SMH_BANK3;
820      wbank3 = SMH_BANK3;
819      rbank3 = SMH_BANK(3);
820      wbank3 = SMH_BANK(3);
821821      base3 = memory_region(machine, "maincpu") + 0x0c000;  /* 8K RAM */
822      rbank4 = SMH_BANK4;
823      wbank4 = SMH_BANK4;
822      rbank4 = SMH_BANK(4);
823      wbank4 = SMH_BANK(4);
824824      base4 = memory_region(machine, "maincpu") + 0x0d800;  /* 4K RAM + 8K RAM */
825825   }
826826   memory_install_readwrite8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xc000, 0xcfff, 0, 0, rbank3, wbank3);
r4679r4680
832832   if( new_mmu & 0x80 )
833833   {
834834      logerror("%s MMU SELFTEST RAM\n", machine->gamedrv->name);
835      rbank2 = SMH_BANK2;
836      wbank2 = SMH_BANK2;
835      rbank2 = SMH_BANK(2);
836      wbank2 = SMH_BANK(2);
837837      base2 = memory_region(machine, "maincpu") + 0x05000;  /* 0x0800 bytes */
838838   }
839839   else
840840   {
841841      logerror("%s MMU SELFTEST ROM\n", machine->gamedrv->name);
842      rbank2 = SMH_BANK2;
842      rbank2 = SMH_BANK(2);
843843      wbank2 = SMH_UNMAP;
844844      base2 = memory_region(machine, "maincpu") + 0x15000;  /* 0x0800 bytes */
845845   }
r4679r4680
12921292{
12931293   UINT8 *rom = memory_region(machine, "maincpu");
12941294
1295   memory_install_readwrite8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xa000, 0xbfff, 0, 0, SMH_BANK1, SMH_UNMAP);
1296   memory_install_readwrite8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x5000, 0x57ff, 0, 0, SMH_BANK2, SMH_UNMAP);
1297   memory_install_readwrite8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xc000, 0xcfff, 0, 0, SMH_BANK3, SMH_UNMAP);
1298   memory_install_readwrite8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xd800, 0xffff, 0, 0, SMH_BANK4, SMH_UNMAP);
1295   memory_install_readwrite8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xa000, 0xbfff, 0, 0, SMH_BANK(1), SMH_UNMAP);
1296   memory_install_readwrite8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x5000, 0x57ff, 0, 0, SMH_BANK(2), SMH_UNMAP);
1297   memory_install_readwrite8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xc000, 0xcfff, 0, 0, SMH_BANK(3), SMH_UNMAP);
1298   memory_install_readwrite8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xd800, 0xffff, 0, 0, SMH_BANK(4), SMH_UNMAP);
12991299   memory_set_bankptr(machine, 1, rom + 0x10000);
13001300   memory_set_bankptr(machine, 2, rom + 0x15000);
13011301   memory_set_bankptr(machine, 3, rom + 0x14000);
src/mess/drivers/nc.c
r4679r4680
331331
332332
333333static const read8_space_func nc_bankhandler_r[]={
334SMH_BANK1, SMH_BANK2, SMH_BANK3, SMH_BANK4};
334SMH_BANK(1), SMH_BANK(2), SMH_BANK(3), SMH_BANK(4)};
335335
336336static const write8_space_func nc_bankhandler_w[]={
337SMH_BANK5, SMH_BANK6, SMH_BANK7, SMH_BANK8};
337SMH_BANK(5), SMH_BANK(6), SMH_BANK(7), SMH_BANK(8)};
338338
339339static void nc_refresh_memory_bank_config(running_machine *machine, int bank)
340340{
r4679r4680
605605}
606606
607607static ADDRESS_MAP_START(nc_map, ADDRESS_SPACE_PROGRAM, 8 )
608   AM_RANGE(0x0000, 0x3fff) AM_READWRITE(SMH_BANK1, SMH_BANK5)
609   AM_RANGE(0x4000, 0x7fff) AM_READWRITE(SMH_BANK2, SMH_BANK6)
610   AM_RANGE(0x8000, 0xbfff) AM_READWRITE(SMH_BANK3, SMH_BANK7)
611   AM_RANGE(0xc000, 0xffff) AM_READWRITE(SMH_BANK4, SMH_BANK8)
608   AM_RANGE(0x0000, 0x3fff) AM_READWRITE(SMH_BANK(1), SMH_BANK(5))
609   AM_RANGE(0x4000, 0x7fff) AM_READWRITE(SMH_BANK(2), SMH_BANK(6))
610   AM_RANGE(0x8000, 0xbfff) AM_READWRITE(SMH_BANK(3), SMH_BANK(7))
611   AM_RANGE(0xc000, 0xffff) AM_READWRITE(SMH_BANK(4), SMH_BANK(8))
612612ADDRESS_MAP_END
613613
614614
src/mess/drivers/adam.c
r4679r4680
195195#include "formats/adam_dsk.h"
196196
197197static ADDRESS_MAP_START( adam_mem, ADDRESS_SPACE_PROGRAM, 8)
198   AM_RANGE(0x00000, 0x01fff) AM_READWRITE( SMH_BANK1, SMH_BANK6 )
199   AM_RANGE(0x02000, 0x03fff) AM_READWRITE( SMH_BANK2, SMH_BANK7 )
200   AM_RANGE(0x04000, 0x05fff) AM_READWRITE( SMH_BANK3, SMH_BANK8 )
201   AM_RANGE(0x06000, 0x07fff) AM_READWRITE( SMH_BANK4, SMH_BANK9 )
202   AM_RANGE(0x08000, 0x0ffff) AM_READWRITE( SMH_BANK5, adam_common_writes_w )
198   AM_RANGE(0x00000, 0x01fff) AM_READWRITE( SMH_BANK(1), SMH_BANK(6) )
199   AM_RANGE(0x02000, 0x03fff) AM_READWRITE( SMH_BANK(2), SMH_BANK(7) )
200   AM_RANGE(0x04000, 0x05fff) AM_READWRITE( SMH_BANK(3), SMH_BANK(8) )
201   AM_RANGE(0x06000, 0x07fff) AM_READWRITE( SMH_BANK(4), SMH_BANK(9) )
202   AM_RANGE(0x08000, 0x0ffff) AM_READWRITE( SMH_BANK(5), adam_common_writes_w )
203203ADDRESS_MAP_END
204204
205205static ADDRESS_MAP_START ( adam_io, ADDRESS_SPACE_IO, 8)
src/mess/drivers/mbee.c
r4679r4680
111111   AM_RANGE(0x1000, 0x3fff) AM_RAM
112112   AM_RANGE(0x4000, 0x7fff) AM_WRITENOP   /* Needed because quickload to here will crash MESS otherwise */
113113   AM_RANGE(0x8000, 0xefff) AM_ROM
114   AM_RANGE(0xf000, 0xf7ff) AM_READWRITE(SMH_BANK2, mbee_videoram_w) AM_SIZE(&videoram_size)
115   AM_RANGE(0xf800, 0xffff) AM_READWRITE(SMH_BANK3, mbee_pcg_w)
114   AM_RANGE(0xf000, 0xf7ff) AM_READWRITE(SMH_BANK(2), mbee_videoram_w) AM_SIZE(&videoram_size)
115   AM_RANGE(0xf800, 0xffff) AM_READWRITE(SMH_BANK(3), mbee_pcg_w)
116116ADDRESS_MAP_END
117117
118118static ADDRESS_MAP_START(mbeeic_mem, ADDRESS_SPACE_PROGRAM, 8)
r4679r4680
120120   AM_RANGE(0x0000, 0x0fff) AM_RAMBANK(1)
121121   AM_RANGE(0x1000, 0x7fff) AM_RAM
122122   AM_RANGE(0x8000, 0xefff) AM_ROM
123   AM_RANGE(0xf000, 0xf7ff) AM_READWRITE(SMH_BANK2, mbee_videoram_w) AM_SIZE(&videoram_size)
124   AM_RANGE(0xf800, 0xffff) AM_READWRITE(SMH_BANK3, mbee_pcg_color_w)
123   AM_RANGE(0xf000, 0xf7ff) AM_READWRITE(SMH_BANK(2), mbee_videoram_w) AM_SIZE(&videoram_size)
124   AM_RANGE(0xf800, 0xffff) AM_READWRITE(SMH_BANK(3), mbee_pcg_color_w)
125125ADDRESS_MAP_END
126126
127127static ADDRESS_MAP_START(mbeepc85_mem, ADDRESS_SPACE_PROGRAM, 8)
r4679r4680
131131   AM_RANGE(0x8000, 0xbfff) AM_ROM
132132   AM_RANGE(0xc000, 0xdfff) AM_ROMBANK(4)
133133   AM_RANGE(0xe000, 0xefff) AM_ROMBANK(5)
134   AM_RANGE(0xf000, 0xf7ff) AM_READWRITE(SMH_BANK2, mbee_videoram_w) AM_SIZE(&videoram_size)
135   AM_RANGE(0xf800, 0xffff) AM_READWRITE(SMH_BANK3, mbee_pcg_color_w)
134   AM_RANGE(0xf000, 0xf7ff) AM_READWRITE(SMH_BANK(2), mbee_videoram_w) AM_SIZE(&videoram_size)
135   AM_RANGE(0xf800, 0xffff) AM_READWRITE(SMH_BANK(3), mbee_pcg_color_w)
136136ADDRESS_MAP_END
137137
138138static ADDRESS_MAP_START(mbee56_mem, ADDRESS_SPACE_PROGRAM, 8)
r4679r4680
140140   AM_RANGE(0x0000, 0x0fff) AM_RAMBANK(1)
141141   AM_RANGE(0x1000, 0xdfff) AM_RAM
142142   AM_RANGE(0xe000, 0xefff) AM_ROM
143   AM_RANGE(0xf000, 0xf7ff) AM_READWRITE(SMH_BANK2, mbee_videoram_w) AM_SIZE(&videoram_size)
144   AM_RANGE(0xf800, 0xffff) AM_READWRITE(SMH_BANK3, mbee_pcg_color_w)
143   AM_RANGE(0xf000, 0xf7ff) AM_READWRITE(SMH_BANK(2), mbee_videoram_w) AM_SIZE(&videoram_size)
144   AM_RANGE(0xf800, 0xffff) AM_READWRITE(SMH_BANK(3), mbee_pcg_color_w)
145145ADDRESS_MAP_END
146146
147147
src/mess/drivers/pentagon.c
r4679r4680
9292{
9393   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
9494
95   memory_install_read8_handler(space, 0x0000, 0x3fff, 0, 0, SMH_BANK1);
95   memory_install_read8_handler(space, 0x0000, 0x3fff, 0, 0, SMH_BANK(1));
9696   memory_install_write8_handler(space, 0x0000, 0x3fff, 0, 0, SMH_UNMAP);
9797
9898   betadisk_enable();
src/mess/drivers/coco.c
r4679r4680
119119   AM_RANGE(0xff80, 0xff85) AM_DEVREADWRITE("vhd", coco_vhd_io_r, coco_vhd_io_w)
120120   AM_RANGE(0xff90, 0xff9f) AM_READWRITE(coco3_gime_r,         coco3_gime_w)
121121   AM_RANGE(0xffa0, 0xffaf) AM_READWRITE(coco3_mmu_r,         coco3_mmu_w)
122   AM_RANGE(0xffb0, 0xffbf) AM_READWRITE(SMH_BANK10,         coco3_palette_w)
122   AM_RANGE(0xffb0, 0xffbf) AM_READWRITE(SMH_BANK(10),         coco3_palette_w)
123123   AM_RANGE(0xffc0, 0xffdf) AM_DEVWRITE("sam", sam6883_w)
124124   AM_RANGE(0xffe0, 0xffef) AM_NOP
125125   AM_RANGE(0xfff0, 0xffff) AM_ROM AM_REGION("maincpu", 0x7ff0)
src/mess/drivers/spc1000.c
r4679r4680
2020
2121static ADDRESS_MAP_START(spc1000_mem, ADDRESS_SPACE_PROGRAM, 8)
2222   ADDRESS_MAP_UNMAP_HIGH
23   AM_RANGE( 0x0000, 0x7fff ) AM_READWRITE(SMH_BANK1, SMH_BANK2)
24   AM_RANGE( 0x8000, 0xffff ) AM_READWRITE(SMH_BANK3, SMH_BANK4)
23   AM_RANGE( 0x0000, 0x7fff ) AM_READWRITE(SMH_BANK(1), SMH_BANK(2))
24   AM_RANGE( 0x8000, 0xffff ) AM_READWRITE(SMH_BANK(3), SMH_BANK(4))
2525ADDRESS_MAP_END
2626
2727static WRITE8_HANDLER(spc1000_iplk_w)
r4679r4680
187187{
188188   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);
189189
190   memory_install_read8_handler(space, 0x0000, 0x7fff, 0, 0, SMH_BANK1);
191   memory_install_read8_handler(space, 0x8000, 0xffff, 0, 0, SMH_BANK3);
190   memory_install_read8_handler(space, 0x0000, 0x7fff, 0, 0, SMH_BANK(1));
191   memory_install_read8_handler(space, 0x8000, 0xffff, 0, 0, SMH_BANK(3));
192192
193   memory_install_write8_handler(space, 0x0000, 0x7fff, 0, 0, SMH_BANK2);
194   memory_install_write8_handler(space, 0x8000, 0xffff, 0, 0, SMH_BANK4);
193   memory_install_write8_handler(space, 0x0000, 0x7fff, 0, 0, SMH_BANK(2));
194   memory_install_write8_handler(space, 0x8000, 0xffff, 0, 0, SMH_BANK(4));
195195
196196   memory_set_bankptr(machine, 1, memory_region(machine, "maincpu"));
197197   memory_set_bankptr(machine, 2, mess_ram);
r4679r4680
228228{
229229   m6847_config cfg;
230230
231   spc1000_video_ram = auto_malloc (0x2000);
231   spc1000_video_ram = auto_alloc_array (machine, UINT8, 0x2000);
232232
233233   memset(&cfg, 0, sizeof(cfg));
234234   cfg.type = M6847_VERSION_M6847T1_NTSC;
src/mess/drivers/z88.c
r4679r4680
299299}
300300
301301static ADDRESS_MAP_START(z88_mem, ADDRESS_SPACE_PROGRAM, 8 )
302   AM_RANGE(0x0000, 0x1fff) AM_READWRITE(SMH_BANK1, SMH_BANK6)
303   AM_RANGE(0x2000, 0x3fff) AM_READWRITE(SMH_BANK2, SMH_BANK7)
304   AM_RANGE(0x4000, 0x7fff) AM_READWRITE(SMH_BANK3, SMH_BANK8)
305   AM_RANGE(0x8000, 0xbfff) AM_READWRITE(SMH_BANK4, SMH_BANK9)
306   AM_RANGE(0xc000, 0xffff) AM_READWRITE(SMH_BANK5, SMH_BANK10)
302   AM_RANGE(0x0000, 0x1fff) AM_READWRITE(SMH_BANK(1), SMH_BANK(6))
303   AM_RANGE(0x2000, 0x3fff) AM_READWRITE(SMH_BANK(2), SMH_BANK(7))
304   AM_RANGE(0x4000, 0x7fff) AM_READWRITE(SMH_BANK(3), SMH_BANK(8))
305   AM_RANGE(0x8000, 0xbfff) AM_READWRITE(SMH_BANK(4), SMH_BANK(9))
306   AM_RANGE(0xc000, 0xffff) AM_READWRITE(SMH_BANK(5), SMH_BANK(10))
307307ADDRESS_MAP_END
308308
309309static void blink_pb_w(int offset, int data, int reg_index)
src/mess/drivers/pcw16.c
r4679r4680
157157}
158158
159159static ADDRESS_MAP_START(pcw16_map, ADDRESS_SPACE_PROGRAM, 8 )
160   AM_RANGE(0x0000, 0x3fff) AM_READWRITE(SMH_BANK1, SMH_BANK5)
161   AM_RANGE(0x4000, 0x7fff) AM_READWRITE(SMH_BANK2, SMH_BANK6)
162   AM_RANGE(0x8000, 0xbfff) AM_READWRITE(SMH_BANK3, SMH_BANK7)
163   AM_RANGE(0xc000, 0xffff) AM_READWRITE(SMH_BANK4, SMH_BANK8)
160   AM_RANGE(0x0000, 0x3fff) AM_READWRITE(SMH_BANK(1), SMH_BANK(5))
161   AM_RANGE(0x4000, 0x7fff) AM_READWRITE(SMH_BANK(2), SMH_BANK(6))
162   AM_RANGE(0x8000, 0xbfff) AM_READWRITE(SMH_BANK(3), SMH_BANK(7))
163   AM_RANGE(0xc000, 0xffff) AM_READWRITE(SMH_BANK(4), SMH_BANK(8))
164164ADDRESS_MAP_END
165165
166166
r4679r4680
173173
174174static const write8_space_func pcw16_write_handler_dram[4] =
175175{
176   SMH_BANK5,
177   SMH_BANK6,
178   SMH_BANK7,
179   SMH_BANK8
176   SMH_BANK(5),
177   SMH_BANK(6),
178   SMH_BANK(7),
179   SMH_BANK(8)
180180};
181181
182182static const read8_space_func pcw16_read_handler_dram[4] =
183183{
184   SMH_BANK1,
185   SMH_BANK2,
186   SMH_BANK3,
187   SMH_BANK4
184   SMH_BANK(1),
185   SMH_BANK(2),
186   SMH_BANK(3),
187   SMH_BANK(4)
188188};
189189/*******************************************/
190190
src/mess/drivers/msx.c
r4679r4680
296296#include "sound/2413intf.h"
297297
298298static ADDRESS_MAP_START (msx_memory_map, ADDRESS_SPACE_PROGRAM, 8)
299   AM_RANGE( 0x0000, 0x1fff) AM_READWRITE( SMH_BANK1, msx_page0_w )
300   AM_RANGE( 0x2000, 0x3fff) AM_READWRITE( SMH_BANK2, msx_page0_1_w )
301   AM_RANGE( 0x4000, 0x5fff) AM_READWRITE( SMH_BANK3, msx_page1_w )
302   AM_RANGE( 0x6000, 0x7ff7) AM_READWRITE( SMH_BANK4, msx_page1_1_w )
303   AM_RANGE( 0x7ff8, 0x7fff) AM_READWRITE( SMH_BANK5, msx_page1_2_w )
304   AM_RANGE( 0x8000, 0x97ff) AM_READWRITE( SMH_BANK6, msx_page2_w )
305   AM_RANGE( 0x9800, 0x9fff) AM_READWRITE( SMH_BANK7, msx_page2_1_w )
306   AM_RANGE( 0xa000, 0xb7ff) AM_READWRITE( SMH_BANK8, msx_page2_2_w )
307   AM_RANGE( 0xb800, 0xbfff) AM_READWRITE( SMH_BANK9, msx_page2_3_w )
308   AM_RANGE( 0xc000, 0xdfff) AM_READWRITE( SMH_BANK10, msx_page3_w )
309   AM_RANGE( 0xe000, 0xfffe) AM_READWRITE( SMH_BANK11, msx_page3_1_w )
299   AM_RANGE( 0x0000, 0x1fff) AM_READWRITE( SMH_BANK(1), msx_page0_w )
300   AM_RANGE( 0x2000, 0x3fff) AM_READWRITE( SMH_BANK(2), msx_page0_1_w )
301   AM_RANGE( 0x4000, 0x5fff) AM_READWRITE( SMH_BANK(3), msx_page1_w )
302   AM_RANGE( 0x6000, 0x7ff7) AM_READWRITE( SMH_BANK(4), msx_page1_1_w )
303   AM_RANGE( 0x7ff8, 0x7fff) AM_READWRITE( SMH_BANK(5), msx_page1_2_w )
304   AM_RANGE( 0x8000, 0x97ff) AM_READWRITE( SMH_BANK(6), msx_page2_w )
305   AM_RANGE( 0x9800, 0x9fff) AM_READWRITE( SMH_BANK(7), msx_page2_1_w )
306   AM_RANGE( 0xa000, 0xb7ff) AM_READWRITE( SMH_BANK(8), msx_page2_2_w )
307   AM_RANGE( 0xb800, 0xbfff) AM_READWRITE( SMH_BANK(9), msx_page2_3_w )
308   AM_RANGE( 0xc000, 0xdfff) AM_READWRITE( SMH_BANK(10), msx_page3_w )
309   AM_RANGE( 0xe000, 0xfffe) AM_READWRITE( SMH_BANK(11), msx_page3_1_w )
310310   AM_RANGE( 0xffff, 0xffff) AM_READWRITE( msx_sec_slot_r, msx_sec_slot_w )
311311ADDRESS_MAP_END
312312
src/mess/drivers/tmc600.c
r4679r4680
281281   switch (mess_ram_size)
282282   {
283283   case 8*1024:
284      memory_install_readwrite8_handler(program, 0x6000, 0x7fff, 0, 0, SMH_BANK1, SMH_BANK1);
284      memory_install_readwrite8_handler(program, 0x6000, 0x7fff, 0, 0, SMH_BANK(1), SMH_BANK(1));
285285      memory_install_readwrite8_handler(program, 0x8000, 0xbfff, 0, 0, SMH_UNMAP, SMH_UNMAP);
286286      break;
287287
288288   case 16*1024:
289      memory_install_readwrite8_handler(program, 0x6000, 0x9fff, 0, 0, SMH_BANK1, SMH_BANK1);
289      memory_install_readwrite8_handler(program, 0x6000, 0x9fff, 0, 0, SMH_BANK(1), SMH_BANK(1));
290290      memory_install_readwrite8_handler(program, 0xa000, 0xbfff, 0, 0, SMH_UNMAP, SMH_UNMAP);
291291      break;
292292
293293   case 24*1024:
294      memory_install_readwrite8_handler(program, 0x6000, 0xbfff, 0, 0, SMH_BANK1, SMH_BANK1);
294      memory_install_readwrite8_handler(program, 0x6000, 0xbfff, 0, 0, SMH_BANK(1), SMH_BANK(1));
295295      break;
296296   }
297297
src/mess/drivers/lynx.c
r4679r4680
1818   AM_RANGE(0x0000, 0xfbff) AM_RAM AM_BASE(&lynx_mem_0000)
1919   AM_RANGE(0xfc00, 0xfcff) AM_RAM AM_BASE(&lynx_mem_fc00)
2020   AM_RANGE(0xfd00, 0xfdff) AM_RAM AM_BASE(&lynx_mem_fd00)
21   AM_RANGE(0xfe00, 0xfff7) AM_READWRITE(SMH_BANK3, SMH_RAM) AM_BASE(&lynx_mem_fe00) AM_SIZE(&lynx_mem_fe00_size)
21   AM_RANGE(0xfe00, 0xfff7) AM_READWRITE(SMH_BANK(3), SMH_RAM) AM_BASE(&lynx_mem_fe00) AM_SIZE(&lynx_mem_fe00_size)
2222   AM_RANGE(0xfff8, 0xfff8) AM_RAM
2323   AM_RANGE(0xfff9, 0xfff9) AM_READWRITE(lynx_memory_config_r, lynx_memory_config_w)
24   AM_RANGE(0xfffa, 0xffff) AM_READWRITE(SMH_BANK4, SMH_RAM) AM_BASE(&lynx_mem_fffa)
24   AM_RANGE(0xfffa, 0xffff) AM_READWRITE(SMH_BANK(4), SMH_RAM) AM_BASE(&lynx_mem_fffa)
2525ADDRESS_MAP_END
2626
2727static INPUT_PORTS_START( lynx )
src/mess/drivers/aquarius.c
r4679r4680
348348
349349static MACHINE_START( aquarius )
350350{
351   decrypt_rom = auto_malloc(16*1024);
351   decrypt_rom = auto_alloc_array(machine, UINT8, 16*1024);
352352}
353353
354354static MACHINE_RESET( aquarius )
r4679r4680
362362      break;
363363
364364   case 8 * 1024: // 4K expansion
365      memory_install_readwrite8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x4000, 0x4fff, 0, 0, SMH_BANK1, SMH_BANK1);
365      memory_install_readwrite8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x4000, 0x4fff, 0, 0, SMH_BANK(1), SMH_BANK(1));
366366      memory_install_readwrite8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x5000, 0xbfff, 0, 0, SMH_UNMAP, SMH_UNMAP);
367367      break;
368368
369369   case 20 * 1024: // 16K expansion
370      memory_install_readwrite8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x4000, 0x8fff, 0, 0, SMH_BANK1, SMH_BANK1);
370      memory_install_readwrite8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x4000, 0x8fff, 0, 0, SMH_BANK(1), SMH_BANK(1));
371371      memory_install_readwrite8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x9000, 0xbfff, 0, 0, SMH_UNMAP, SMH_UNMAP);
372372      break;
373373
374374   case 36 * 1024: // 32K expansion (prototype)
375      memory_install_readwrite8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x4000, 0xbfff, 0, 0, SMH_BANK1, SMH_BANK1);
375      memory_install_readwrite8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x4000, 0xbfff, 0, 0, SMH_BANK(1), SMH_BANK(1));
376376      break;
377377   }
378378
r4679r4680
398398   switch (size)
399399   {
400400   case 8 * 1024:
401      memory_install_readwrite8_handler(cputag_get_address_space(image->machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xc000, 0xdfff, 0, 0x2000, SMH_BANK2, SMH_UNMAP);
401      memory_install_readwrite8_handler(cputag_get_address_space(image->machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xc000, 0xdfff, 0, 0x2000, SMH_BANK(2), SMH_UNMAP);
402402      break;
403403
404404   case 16 * 1024:
405      memory_install_readwrite8_handler(cputag_get_address_space(image->machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xc000, 0xffff, 0, 0, SMH_BANK2, SMH_UNMAP);
405      memory_install_readwrite8_handler(cputag_get_address_space(image->machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xc000, 0xffff, 0, 0, SMH_BANK(2), SMH_UNMAP);
406406      break;
407407   }
408408
src/mess/drivers/scorpion.c
r4679r4680
200200
201201   if ((scorpion_256_port_1ffd_data & 0x01)==0x01)
202202   {
203      memory_install_write8_handler(space, 0x0000, 0x3fff, 0, 0, SMH_BANK1);
203      memory_install_write8_handler(space, 0x0000, 0x3fff, 0, 0, SMH_BANK(1));
204204      memory_set_bankptr(machine, 1, mess_ram+(8<<14));   
205205      logerror("RAM\n");   
206206   }
r4679r4680
301301{   
302302   const address_space *space = cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM);   
303303   
304   memory_install_read8_handler (space, 0x0000, 0x3fff, 0, 0, SMH_BANK1);
304   memory_install_read8_handler (space, 0x0000, 0x3fff, 0, 0, SMH_BANK(1));
305305   
306306   betadisk_disable();
307307   betadisk_clear_status();
src/mess/drivers/specpls3.c
r4679r4680
275275         ram_data = mess_ram + (memory_selection[0] << 14);
276276         memory_set_bankptr(machine, 1, ram_data);
277277         /* allow writes to 0x0000-0x03fff */
278         memory_install_write8_handler(space, 0x0000, 0x3fff, 0, 0, SMH_BANK1);
278         memory_install_write8_handler(space, 0x0000, 0x3fff, 0, 0, SMH_BANK(1));
279279
280280         ram_data = mess_ram + (memory_selection[1] << 14);
281281         memory_set_bankptr(machine, 2, ram_data);
src/mess/drivers/abc80.c
r4679r4680
498498      break;
499499
500500   case 32*1024:
501      memory_install_readwrite8_handler(cputag_get_address_space(machine, Z80_TAG, ADDRESS_SPACE_PROGRAM), 0x8000, 0xbfff, 0, 0, SMH_BANK1, SMH_BANK1);
501      memory_install_readwrite8_handler(cputag_get_address_space(machine, Z80_TAG, ADDRESS_SPACE_PROGRAM), 0x8000, 0xbfff, 0, 0, SMH_BANK(1), SMH_BANK(1));
502502      break;
503503   }
504504
src/mess/drivers/pmd85.c
r4679r4680
192192/* memory w/r functions */
193193
194194static ADDRESS_MAP_START( pmd85_mem , ADDRESS_SPACE_PROGRAM, 8)
195   AM_RANGE(0x0000, 0x0fff) AM_READWRITE(SMH_BANK1, SMH_BANK1)
196   AM_RANGE(0x1000, 0x1fff) AM_READWRITE(SMH_BANK2, SMH_BANK2)
197   AM_RANGE(0x2000, 0x2fff) AM_READWRITE(SMH_BANK3, SMH_BANK3)
198   AM_RANGE(0x3000, 0x3fff) AM_READWRITE(SMH_BANK4, SMH_BANK4)
199   AM_RANGE(0x4000, 0x7fff) AM_READWRITE(SMH_BANK5, SMH_BANK5)
200   AM_RANGE(0x8000, 0x8fff) AM_READWRITE(SMH_BANK6, SMH_ROM)
195   AM_RANGE(0x0000, 0x0fff) AM_READWRITE(SMH_BANK(1), SMH_BANK(1))
196   AM_RANGE(0x1000, 0x1fff) AM_READWRITE(SMH_BANK(2), SMH_BANK(2))
197   AM_RANGE(0x2000, 0x2fff) AM_READWRITE(SMH_BANK(3), SMH_BANK(3))
198   AM_RANGE(0x3000, 0x3fff) AM_READWRITE(SMH_BANK(4), SMH_BANK(4))
199   AM_RANGE(0x4000, 0x7fff) AM_READWRITE(SMH_BANK(5), SMH_BANK(5))
200   AM_RANGE(0x8000, 0x8fff) AM_READWRITE(SMH_BANK(6), SMH_ROM)
201201   AM_RANGE(0x9000, 0x9fff) AM_READWRITE(SMH_NOP,   SMH_NOP)
202   AM_RANGE(0xa000, 0xafff) AM_READWRITE(SMH_BANK7, SMH_ROM)
202   AM_RANGE(0xa000, 0xafff) AM_READWRITE(SMH_BANK(7), SMH_ROM)
203203   AM_RANGE(0xb000, 0xbfff) AM_READWRITE(SMH_NOP,   SMH_NOP)
204   AM_RANGE(0xc000, 0xffff) AM_READWRITE(SMH_BANK8, SMH_BANK8)
204   AM_RANGE(0xc000, 0xffff) AM_READWRITE(SMH_BANK(8), SMH_BANK(8))
205205ADDRESS_MAP_END
206206
207207static ADDRESS_MAP_START( pmd852a_mem , ADDRESS_SPACE_PROGRAM, 8)
208   AM_RANGE(0x0000, 0x0fff) AM_READWRITE(SMH_BANK1, SMH_BANK1)
209   AM_RANGE(0x1000, 0x1fff) AM_READWRITE(SMH_BANK2, SMH_BANK2)
210   AM_RANGE(0x2000, 0x2fff) AM_READWRITE(SMH_BANK3, SMH_BANK3)
211   AM_RANGE(0x3000, 0x3fff) AM_READWRITE(SMH_BANK4, SMH_BANK4)
212   AM_RANGE(0x4000, 0x7fff) AM_READWRITE(SMH_BANK5, SMH_BANK5)
213   AM_RANGE(0x8000, 0x8fff) AM_READWRITE(SMH_BANK6, SMH_ROM)
214   AM_RANGE(0x9000, 0x9fff) AM_READWRITE(SMH_BANK7, SMH_BANK7)
215   AM_RANGE(0xa000, 0xafff) AM_READWRITE(SMH_BANK8, SMH_ROM)
216   AM_RANGE(0xb000, 0xbfff) AM_READWRITE(SMH_BANK9, SMH_BANK9)
217   AM_RANGE(0xc000, 0xffff) AM_READWRITE(SMH_BANK10, SMH_BANK10)
208   AM_RANGE(0x0000, 0x0fff) AM_READWRITE(SMH_BANK(1), SMH_BANK(1))
209   AM_RANGE(0x1000, 0x1fff) AM_READWRITE(SMH_BANK(2), SMH_BANK(2))
210   AM_RANGE(0x2000, 0x2fff) AM_READWRITE(SMH_BANK(3), SMH_BANK(3))
211   AM_RANGE(0x3000, 0x3fff) AM_READWRITE(SMH_BANK(4), SMH_BANK(4))
212   AM_RANGE(0x4000, 0x7fff) AM_READWRITE(SMH_BANK(5), SMH_BANK(5))
213   AM_RANGE(0x8000, 0x8fff) AM_READWRITE(SMH_BANK(6), SMH_ROM)
214   AM_RANGE(0x9000, 0x9fff) AM_READWRITE(SMH_BANK(7), SMH_BANK(7))
215   AM_RANGE(0xa000, 0xafff) AM_READWRITE(SMH_BANK(8), SMH_ROM)
216   AM_RANGE(0xb000, 0xbfff) AM_READWRITE(SMH_BANK(9), SMH_BANK(9))
217   AM_RANGE(0xc000, 0xffff) AM_READWRITE(SMH_BANK(10), SMH_BANK(10))
218218ADDRESS_MAP_END
219219
220220static ADDRESS_MAP_START( pmd853_mem , ADDRESS_SPACE_PROGRAM, 8)
221   AM_RANGE(0x0000, 0x1fff) AM_READWRITE(SMH_BANK1, SMH_BANK9)
222   AM_RANGE(0x2000, 0x3fff) AM_READWRITE(SMH_BANK2, SMH_BANK10)
223   AM_RANGE(0x4000, 0x5fff) AM_READWRITE(SMH_BANK3, SMH_BANK11)
224   AM_RANGE(0x6000, 0x7fff) AM_READWRITE(SMH_BANK4, SMH_BANK12)
225   AM_RANGE(0x8000, 0x9fff) AM_READWRITE(SMH_BANK5, SMH_BANK13)
226   AM_RANGE(0xa000, 0xbfff) AM_READWRITE(SMH_BANK6, SMH_BANK14)
227   AM_RANGE(0xc000, 0xdfff) AM_READWRITE(SMH_BANK7, SMH_BANK15)
228   AM_RANGE(0xe000, 0xffff) AM_READWRITE(SMH_BANK8, SMH_BANK16)
221   AM_RANGE(0x0000, 0x1fff) AM_READWRITE(SMH_BANK(1), SMH_BANK(9))
222   AM_RANGE(0x2000, 0x3fff) AM_READWRITE(SMH_BANK(2), SMH_BANK(10))
223   AM_RANGE(0x4000, 0x5fff) AM_READWRITE(SMH_BANK(3), SMH_BANK(11))
224   AM_RANGE(0x6000, 0x7fff) AM_READWRITE(SMH_BANK(4), SMH_BANK(12))
225   AM_RANGE(0x8000, 0x9fff) AM_READWRITE(SMH_BANK(5), SMH_BANK(13))
226   AM_RANGE(0xa000, 0xbfff) AM_READWRITE(SMH_BANK(6), SMH_BANK(14))
227   AM_RANGE(0xc000, 0xdfff) AM_READWRITE(SMH_BANK(7), SMH_BANK(15))
228   AM_RANGE(0xe000, 0xffff) AM_READWRITE(SMH_BANK(8), SMH_BANK(16))
229229ADDRESS_MAP_END
230230
231231static ADDRESS_MAP_START( alfa_mem , ADDRESS_SPACE_PROGRAM, 8)
232   AM_RANGE(0x0000, 0x0fff) AM_READWRITE(SMH_BANK1, SMH_BANK1)
233   AM_RANGE(0x1000, 0x33ff) AM_READWRITE(SMH_BANK2, SMH_BANK2)
234   AM_RANGE(0x3400, 0x3fff) AM_READWRITE(SMH_BANK3, SMH_BANK3)
235   AM_RANGE(0x4000, 0x7fff) AM_READWRITE(SMH_BANK4, SMH_BANK4)
236   AM_RANGE(0x8000, 0x8fff) AM_READWRITE(SMH_BANK5, SMH_ROM)
237   AM_RANGE(0x9000, 0xb3ff) AM_READWRITE(SMH_BANK6, SMH_ROM)
232   AM_RANGE(0x0000, 0x0fff) AM_READWRITE(SMH_BANK(1), SMH_BANK(1))
233   AM_RANGE(0x1000, 0x33ff) AM_READWRITE(SMH_BANK(2), SMH_BANK(2))
234   AM_RANGE(0x3400, 0x3fff) AM_READWRITE(SMH_BANK(3), SMH_BANK(3))
235   AM_RANGE(0x4000, 0x7fff) AM_READWRITE(SMH_BANK(4), SMH_BANK(4))
236   AM_RANGE(0x8000, 0x8fff) AM_READWRITE(SMH_BANK(5), SMH_ROM)
237   AM_RANGE(0x9000, 0xb3ff) AM_READWRITE(SMH_BANK(6), SMH_ROM)
238238   AM_RANGE(0xb400, 0xbfff) AM_READWRITE(SMH_NOP,   SMH_NOP)
239   AM_RANGE(0xc000, 0xffff) AM_READWRITE(SMH_BANK7, SMH_BANK7)
239   AM_RANGE(0xc000, 0xffff) AM_READWRITE(SMH_BANK(7), SMH_BANK(7))
240240ADDRESS_MAP_END
241241
242242static ADDRESS_MAP_START( mato_mem , ADDRESS_SPACE_PROGRAM, 8)
243   AM_RANGE(0x0000, 0x3fff) AM_READWRITE(SMH_BANK1, SMH_BANK1)
244   AM_RANGE(0x4000, 0x7fff) AM_READWRITE(SMH_BANK2, SMH_BANK2)
245   AM_RANGE(0x8000, 0xbfff) AM_READWRITE(SMH_BANK3, SMH_ROM)
246   AM_RANGE(0xc000, 0xffff) AM_READWRITE(SMH_BANK4, SMH_BANK4)
243   AM_RANGE(0x0000, 0x3fff) AM_READWRITE(SMH_BANK(1), SMH_BANK(1))
244   AM_RANGE(0x4000, 0x7fff) AM_READWRITE(SMH_BANK(2), SMH_BANK(2))
245   AM_RANGE(0x8000, 0xbfff) AM_READWRITE(SMH_BANK(3), SMH_ROM)
246   AM_RANGE(0xc000, 0xffff) AM_READWRITE(SMH_BANK(4), SMH_BANK(4))
247247ADDRESS_MAP_END
248248
249249static ADDRESS_MAP_START( c2717_mem , ADDRESS_SPACE_PROGRAM, 8)
250   AM_RANGE(0x0000, 0x3fff) AM_READWRITE(SMH_BANK1, SMH_BANK1)
251   AM_RANGE(0x4000, 0x7fff) AM_READWRITE(SMH_BANK2, SMH_BANK2)
252   AM_RANGE(0x8000, 0xbfff) AM_READWRITE(SMH_BANK3, SMH_ROM)
253   AM_RANGE(0xc000, 0xffff) AM_READWRITE(SMH_BANK4, SMH_BANK4)
250   AM_RANGE(0x0000, 0x3fff) AM_READWRITE(SMH_BANK(1), SMH_BANK(1))
251   AM_RANGE(0x4000, 0x7fff) AM_READWRITE(SMH_BANK(2), SMH_BANK(2))
252   AM_RANGE(0x8000, 0xbfff) AM_READWRITE(SMH_BANK(3), SMH_ROM)
253   AM_RANGE(0xc000, 0xffff) AM_READWRITE(SMH_BANK(4), SMH_BANK(4))
254254ADDRESS_MAP_END
255255
256256/* keyboard input */
src/mess/drivers/apexc.c
r4679r4680
491491   const device_config *screen = video_screen_first(machine->config);
492492   int width = video_screen_get_width(screen);
493493   int height = video_screen_get_height(screen);
494   apexc_bitmap = auto_bitmap_alloc(width, height, BITMAP_FORMAT_INDEXED16);
494   apexc_bitmap = auto_bitmap_alloc(machine, width, height, BITMAP_FORMAT_INDEXED16);
495495   bitmap_fill(apexc_bitmap, &/*machine->visible_area*/teletyper_window, 0);
496496}
497497
src/mess/drivers/x68k.c
r4679r4680
24582458{
24592459   unsigned char* rom = memory_region(machine, "maincpu");
24602460   unsigned char* user2 = memory_region(machine, "user2");
2461   x68k_gvram = auto_malloc(0x080000);
2462   memset(x68k_gvram,0,0x080000);
2463   x68k_tvram = auto_malloc(0x080000);
2464   memset(x68k_tvram,0,0x80000);
2465   sram = auto_malloc(0x4000);
2466   memset(sram,0,0x4000);
2461   x68k_gvram = auto_alloc_array(machine, UINT16, 0x080000/sizeof(UINT16));
2462   x68k_tvram = auto_alloc_array(machine, UINT16, 0x080000/sizeof(UINT16));
2463   sram = auto_alloc_array(machine, UINT16, 0x4000/sizeof(UINT16));
24672464
2468   x68k_spritereg = auto_malloc(0x8000);
2469   memset(x68k_spritereg,0,0x8000);
2465   x68k_spritereg = auto_alloc_array_clear(machine, UINT16, 0x8000/sizeof(UINT16));
24702466
24712467#ifdef USE_PREDEFINED_SRAM
24722468   {
src/mess/drivers/atarist.c
r4679r4680
14481448   switch (mess_ram_size)
14491449   {
14501450   case 256 * 1024:
1451      memory_install_readwrite16_handler(program, 0x000008, 0x03ffff, 0, 0, SMH_BANK1, SMH_BANK1);
1451      memory_install_readwrite16_handler(program, 0x000008, 0x03ffff, 0, 0, SMH_BANK(1), SMH_BANK(1));
14521452      memory_install_readwrite16_handler(program, 0x040000, 0x3fffff, 0, 0, SMH_UNMAP, SMH_UNMAP);
14531453      break;
14541454   case 512 * 1024:
1455      memory_install_readwrite16_handler(program, 0x000008, 0x07ffff, 0, 0, SMH_BANK1, SMH_BANK1);
1455      memory_install_readwrite16_handler(program, 0x000008, 0x07ffff, 0, 0, SMH_BANK(1), SMH_BANK(1));
14561456      memory_install_readwrite16_handler(program, 0x080000, 0x3fffff, 0, 0, SMH_UNMAP, SMH_UNMAP);
14571457      break;
14581458   case 1024 * 1024:
1459      memory_install_readwrite16_handler(program, 0x000008, 0x0fffff, 0, 0, SMH_BANK1, SMH_BANK1);
1459      memory_install_readwrite16_handler(program, 0x000008, 0x0fffff, 0, 0, SMH_BANK(1), SMH_BANK(1));
14601460      memory_install_readwrite16_handler(program, 0x100000, 0x3fffff, 0, 0, SMH_UNMAP, SMH_UNMAP);
14611461      break;
14621462   case 2048 * 1024:
1463      memory_install_readwrite16_handler(program, 0x000008, 0x1fffff, 0, 0, SMH_BANK1, SMH_BANK1);
1463      memory_install_readwrite16_handler(program, 0x000008, 0x1fffff, 0, 0, SMH_BANK(1), SMH_BANK(1));
14641464      memory_install_readwrite16_handler(program, 0x200000, 0x3fffff, 0, 0, SMH_UNMAP, SMH_UNMAP);
14651465      break;
14661466   case 4096 * 1024:
1467      memory_install_readwrite16_handler(program, 0x000008, 0x1fffff, 0, 0, SMH_BANK1, SMH_BANK1);
1468      memory_install_readwrite16_handler(program, 0x200000, 0x3fffff, 0, 0, SMH_BANK2, SMH_BANK2);
1467      memory_install_readwrite16_handler(program, 0x000008, 0x1fffff, 0, 0, SMH_BANK(1), SMH_BANK(1));
1468      memory_install_readwrite16_handler(program, 0x200000, 0x3fffff, 0, 0, SMH_BANK(2), SMH_BANK(2));
14691469      break;
14701470   }
14711471
r4679r4680
16421642   switch (mess_ram_size)
16431643   {
16441644   case 1024 * 1024:
1645      memory_install_readwrite16_handler(program, 0x000008, 0x07ffff, 0, 0x080000, SMH_BANK1, SMH_BANK1);
1645      memory_install_readwrite16_handler(program, 0x000008, 0x07ffff, 0, 0x080000, SMH_BANK(1), SMH_BANK(1));
16461646      memory_install_readwrite16_handler(program, 0x100000, 0x3fffff, 0, 0, SMH_UNMAP, SMH_UNMAP);
16471647      break;
16481648   case 4096 * 1024:
1649      memory_install_readwrite16_handler(program, 0x000008, 0x1fffff, 0, 0, SMH_BANK1, SMH_BANK1);
1650      memory_install_readwrite16_handler(program, 0x200000, 0x3fffff, 0, 0, SMH_BANK2, SMH_BANK2);
1649      memory_install_readwrite16_handler(program, 0x000008, 0x1fffff, 0, 0, SMH_BANK(1), SMH_BANK(1));
1650      memory_install_readwrite16_handler(program, 0x200000, 0x3fffff, 0, 0, SMH_BANK(2), SMH_BANK(2));
16511651      break;
16521652   }
16531653
r4679r4680
17821782   {
17831783      if (image_fread(image, ptr, filesize) == filesize)
17841784      {
1785         memory_install_readwrite16_handler(cputag_get_address_space(image->machine, M68000_TAG, ADDRESS_SPACE_PROGRAM), 0xfa0000, 0xfbffff, 0, 0, SMH_BANK3, SMH_BANK3);
1785         memory_install_readwrite16_handler(cputag_get_address_space(image->machine, M68000_TAG, ADDRESS_SPACE_PROGRAM), 0xfa0000, 0xfbffff, 0, 0, SMH_BANK(3), SMH_BANK(3));
17861786
17871787         return INIT_PASS;
17881788      }
src/mess/drivers/sg1000.c
r4679r4680
185185// SF-7000
186186
187187static ADDRESS_MAP_START( sf7000_map, ADDRESS_SPACE_PROGRAM, 8 )
188   AM_RANGE(0x0000, 0x3fff) AM_READWRITE(SMH_BANK1, SMH_BANK2)
188   AM_RANGE(0x0000, 0x3fff) AM_READWRITE(SMH_BANK(1), SMH_BANK(2))
189189   AM_RANGE(0x4000, 0xffff) AM_RAM
190190ADDRESS_MAP_END
191191
r4679r4680
735735   switch (size)
736736   {
737737   case 40 * 1024:
738      memory_install_readwrite8_handler(program, 0x8000, 0x9fff, 0, 0, SMH_BANK1, SMH_UNMAP);
738      memory_install_readwrite8_handler(program, 0x8000, 0x9fff, 0, 0, SMH_BANK(1), SMH_UNMAP);
739739      memory_configure_bank(machine, 1, 0, 1, memory_region(machine, Z80_TAG) + 0x8000, 0);
740740      memory_set_bank(machine, 1, 0);
741741      break;
742742
743743   case 48 * 1024:
744      memory_install_readwrite8_handler(program, 0x8000, 0xbfff, 0, 0, SMH_BANK1, SMH_UNMAP);
744      memory_install_readwrite8_handler(program, 0x8000, 0xbfff, 0, 0, SMH_BANK(1), SMH_UNMAP);
745745      memory_configure_bank(machine, 1, 0, 1, memory_region(machine, Z80_TAG) + 0x8000, 0);
746746      memory_set_bank(machine, 1, 0);
747747      break;
r4679r4680
755755      }
756756      else if (IS_CARTRIDGE_THE_CASTLE(ptr))
757757      {
758         memory_install_readwrite8_handler(program, 0x8000, 0x9fff, 0, 0, SMH_BANK1, SMH_BANK1);
758         memory_install_readwrite8_handler(program, 0x8000, 0x9fff, 0, 0, SMH_BANK(1), SMH_BANK(1));
759759      }
760760      break;
761761   }
r4679r4680
776776   sg1000_map_cartridge_memory(image->machine, ptr, size);
777777
778778   /* work RAM banking */
779   memory_install_readwrite8_handler(program, 0xc000, 0xc3ff, 0, 0x3c00, SMH_BANK2, SMH_BANK2);
779   memory_install_readwrite8_handler(program, 0xc000, 0xc3ff, 0, 0x3c00, SMH_BANK(2), SMH_BANK(2));
780780
781781   return INIT_PASS;
782782}
r4679r4680
790790
791791   if (IS_CARTRIDGE_BASIC_LEVEL_III(ptr))
792792   {
793      memory_install_readwrite8_handler(program, 0x8000, 0xbfff, 0, 0, SMH_BANK1, SMH_BANK1);
794      memory_install_readwrite8_handler(program, 0xc000, 0xffff, 0, 0, SMH_BANK2, SMH_BANK2);
793      memory_install_readwrite8_handler(program, 0x8000, 0xbfff, 0, 0, SMH_BANK(1), SMH_BANK(1));
794      memory_install_readwrite8_handler(program, 0xc000, 0xffff, 0, 0, SMH_BANK(2), SMH_BANK(2));
795795   }
796796   else if (IS_CARTRIDGE_MUSIC_EDITOR(ptr))
797797   {
798      memory_install_readwrite8_handler(program, 0x8000, 0x9fff, 0, 0, SMH_BANK1, SMH_BANK1);
799      memory_install_readwrite8_handler(program, 0xc000, 0xc7ff, 0, 0x3800, SMH_BANK2, SMH_BANK2);
798      memory_install_readwrite8_handler(program, 0x8000, 0x9fff, 0, 0, SMH_BANK(1), SMH_BANK(1));
799      memory_install_readwrite8_handler(program, 0xc000, 0xc7ff, 0, 0x3800, SMH_BANK(2), SMH_BANK(2));
800800   }
801801   else
802802   {
803803      /* regular cartridges */
804      memory_install_readwrite8_handler(program, 0xc000, 0xc7ff, 0, 0x3800, SMH_BANK2, SMH_BANK2);
804      memory_install_readwrite8_handler(program, 0xc000, 0xc7ff, 0, 0x3800, SMH_BANK(2), SMH_BANK(2));
805805   }
806806}
807807
src/mess/drivers/ip22.c
r4679r4680
11351135}
11361136
11371137static ADDRESS_MAP_START( ip225015_map, ADDRESS_SPACE_PROGRAM, 32 )
1138   AM_RANGE( 0x00000000, 0x0007ffff ) AM_READWRITE( SMH_BANK1, SMH_BANK1 )   /* mirror of first 512k of main RAM */
1138   AM_RANGE( 0x00000000, 0x0007ffff ) AM_READWRITE( SMH_BANK(1), SMH_BANK(1) )   /* mirror of first 512k of main RAM */
11391139   AM_RANGE( 0x08000000, 0x0fffffff ) AM_SHARE(1) AM_BASE( &ip22_mainram ) AM_RAM_WRITE(ip22_write_ram)      /* 128 MB of main RAM */
11401140   AM_RANGE( 0x1f0f0000, 0x1f0f1fff ) AM_READWRITE( newport_rex3_r, newport_rex3_w )
11411141   AM_RANGE( 0x1fa00000, 0x1fa1ffff ) AM_READWRITE( mc_r, mc_w )
src/mess/drivers/c128.c
r4679r4680
212212 */
213213static ADDRESS_MAP_START(c128_z80_mem , ADDRESS_SPACE_PROGRAM, 8)
214214#if 1
215   AM_RANGE(0x0000, 0x0fff) AM_READWRITE(SMH_BANK10, c128_write_0000)
216   AM_RANGE(0x1000, 0xbfff) AM_READWRITE(SMH_BANK11, c128_write_1000)
215   AM_RANGE(0x0000, 0x0fff) AM_READWRITE(SMH_BANK(10), c128_write_0000)
216   AM_RANGE(0x1000, 0xbfff) AM_READWRITE(SMH_BANK(11), c128_write_1000)
217217   AM_RANGE(0xc000, 0xffff) AM_RAM
218218#else
219219   /* best to do reuse bankswitching numbers */
220   AM_RANGE(0x0000, 0x03ff) AM_READWRITE(SMH_BANK10, SMH_BANK1)
221   AM_RANGE(0x0400, 0x0fff) AM_READWRITE(SMH_BANK11, SMH_BANK2)
220   AM_RANGE(0x0000, 0x03ff) AM_READWRITE(SMH_BANK(10), SMH_BANK(1))
221   AM_RANGE(0x0400, 0x0fff) AM_READWRITE(SMH_BANK(11), SMH_BANK(2))
222222   AM_RANGE(0x1000, 0x1fff) AM_RAMBANK(3)
223223   AM_RANGE(0x2000, 0x3fff) AM_RAMBANK(4)
224224   AM_RANGE(0x4000, 0xbfff) AM_RAMBANK(5)
r4679r4680
267267   AM_RANGE(0x1000, 0x1fff) AM_RAMBANK(5)
268268   AM_RANGE(0x2000, 0x3fff) AM_RAMBANK(6)
269269
270   AM_RANGE(0x4000, 0x7fff) AM_READWRITE( SMH_BANK7, c128_write_4000 )
271   AM_RANGE(0x8000, 0x9fff) AM_READWRITE( SMH_BANK8, c128_write_8000 )
272   AM_RANGE(0xa000, 0xbfff) AM_READWRITE( SMH_BANK9, c128_write_a000 )
270   AM_RANGE(0x4000, 0x7fff) AM_READWRITE( SMH_BANK(7), c128_write_4000 )
271   AM_RANGE(0x8000, 0x9fff) AM_READWRITE( SMH_BANK(8), c128_write_8000 )
272   AM_RANGE(0xa000, 0xbfff) AM_READWRITE( SMH_BANK(9), c128_write_a000 )
273273
274   AM_RANGE(0xc000, 0xcfff) AM_READWRITE( SMH_BANK12, c128_write_c000 )
275   AM_RANGE(0xd000, 0xdfff) AM_READWRITE( SMH_BANK13, c128_write_d000 )
276   AM_RANGE(0xe000, 0xfeff) AM_READWRITE( SMH_BANK14, c128_write_e000 )
277   AM_RANGE(0xff00, 0xff04) AM_READWRITE( SMH_BANK15, c128_write_ff00 )      /* mmu c128 modus */
278   AM_RANGE(0xff05, 0xffff) AM_READWRITE( SMH_BANK16, c128_write_ff05 )
274   AM_RANGE(0xc000, 0xcfff) AM_READWRITE( SMH_BANK(12), c128_write_c000 )
275   AM_RANGE(0xd000, 0xdfff) AM_READWRITE( SMH_BANK(13), c128_write_d000 )
276   AM_RANGE(0xe000, 0xfeff) AM_READWRITE( SMH_BANK(14), c128_write_e000 )
277   AM_RANGE(0xff00, 0xff04) AM_READWRITE( SMH_BANK(15), c128_write_ff00 )      /* mmu c128 modus */
278   AM_RANGE(0xff05, 0xffff) AM_READWRITE( SMH_BANK(16), c128_write_ff05 )
279279ADDRESS_MAP_END
280280
281281
src/mess/drivers/lviv.c
r4679r4680
299299/* memory w/r functions */
300300
301301static ADDRESS_MAP_START(lviv_mem , ADDRESS_SPACE_PROGRAM, 8)
302   AM_RANGE(0x0000, 0x3fff) AM_READWRITE(SMH_BANK1, SMH_BANK1)
303   AM_RANGE(0x4000, 0x7fff) AM_READWRITE(SMH_BANK2, SMH_BANK2)
304   AM_RANGE(0x8000, 0xbfff) AM_READWRITE(SMH_BANK3, SMH_BANK3)
305   AM_RANGE(0xc000, 0xffff) AM_READWRITE(SMH_BANK4, SMH_BANK4)
302   AM_RANGE(0x0000, 0x3fff) AM_READWRITE(SMH_BANK(1), SMH_BANK(1))
303   AM_RANGE(0x4000, 0x7fff) AM_READWRITE(SMH_BANK(2), SMH_BANK(2))
304   AM_RANGE(0x8000, 0xbfff) AM_READWRITE(SMH_BANK(3), SMH_BANK(3))
305   AM_RANGE(0xc000, 0xffff) AM_READWRITE(SMH_BANK(4), SMH_BANK(4))
306306ADDRESS_MAP_END
307307
308308
src/mess/drivers/timex.c
r4679r4680
231231   {
232232      if (ts2068_port_ff_data & 0x80)
233233      {
234            rh = SMH_BANK1;
234            rh = SMH_BANK(1);
235235            wh = SMH_UNMAP;
236236            memory_set_bankptr(machine, 1, ExROM);
237237            logerror("0000-1fff EXROM\n");
r4679r4680
241241         if (timex_cart_type == TIMEX_CART_DOCK)
242242         {
243243            memory_set_bankptr(machine, 1, DOCK);
244            rh = SMH_BANK1;
244            rh = SMH_BANK(1);
245245            if (timex_cart_chunks&0x01)
246               wh = SMH_BANK9;
246               wh = SMH_BANK(9);
247247            else
248248               wh = SMH_UNMAP;
249249         }
r4679r4680
259259   {
260260      ChosenROM = memory_region(machine, "maincpu") + 0x010000;
261261      memory_set_bankptr(machine, 1, ChosenROM);
262      rh = SMH_BANK1;
262      rh = SMH_BANK(1);
263263      wh = SMH_UNMAP;
264264      logerror("0000-1fff HOME\n");
265265   }
r4679r4680
271271      if (ts2068_port_ff_data & 0x80)
272272      {
273273         memory_set_bankptr(machine, 2, ExROM);
274         rh = SMH_BANK2;
274         rh = SMH_BANK(2);
275275         wh = SMH_UNMAP;
276276         logerror("2000-3fff EXROM\n");
277277      }
r4679r4680
280280         if (timex_cart_type == TIMEX_CART_DOCK)
281281         {
282282            memory_set_bankptr(machine, 2, DOCK+0x2000);
283            rh = SMH_BANK2;
283            rh = SMH_BANK(2);
284284            if (timex_cart_chunks&0x02)
285               wh = SMH_BANK10;
285               wh = SMH_BANK(10);
286286            else
287287               wh = SMH_UNMAP;
288288         }
r4679r4680
298298   {
299299      ChosenROM = memory_region(machine, "maincpu") + 0x012000;
300300      memory_set_bankptr(machine, 2, ChosenROM);
301      rh = SMH_BANK2;
301      rh = SMH_BANK(2);
302302      wh = SMH_UNMAP;
303303      logerror("2000-3fff HOME\n");
304304   }
r4679r4680
310310      if (ts2068_port_ff_data & 0x80)
311311      {
312312         memory_set_bankptr(machine, 3, ExROM);
313         rh = SMH_BANK3;
313         rh = SMH_BANK(3);
314314         wh = SMH_UNMAP;
315315         logerror("4000-5fff EXROM\n");
316316      }
r4679r4680
319319         if (timex_cart_type == TIMEX_CART_DOCK)
320320         {
321321            memory_set_bankptr(machine, 3, DOCK+0x4000);
322            rh = SMH_BANK3;
322            rh = SMH_BANK(3);
323323            if (timex_cart_chunks&0x04)
324               wh = SMH_BANK11;
324               wh = SMH_BANK(11);
325325            else
326326               wh = SMH_UNMAP;
327327         }
r4679r4680
337337   {
338338      memory_set_bankptr(machine, 3, mess_ram);
339339      memory_set_bankptr(machine, 11, mess_ram);
340      rh = SMH_BANK3;
341      wh = SMH_BANK11;
340      rh = SMH_BANK(3);
341      wh = SMH_BANK(11);
342342      logerror("4000-5fff RAM\n");
343343   }
344344   memory_install_read8_handler(space, 0x4000, 0x5fff, 0, 0, rh);
r4679r4680
349349      if (ts2068_port_ff_data & 0x80)
350350      {
351351         memory_set_bankptr(machine, 4, ExROM);
352         rh = SMH_BANK4;
352         rh = SMH_BANK(4);
353353         wh = SMH_UNMAP;
354354         logerror("6000-7fff EXROM\n");
355355      }
r4679r4680
358358            if (timex_cart_type == TIMEX_CART_DOCK)
359359            {
360360               memory_set_bankptr(machine, 4, DOCK+0x6000);
361               rh = SMH_BANK4;
361               rh = SMH_BANK(4);
362362               if (timex_cart_chunks&0x08)
363                  wh = SMH_BANK12;
363                  wh = SMH_BANK(12);
364364               else
365365                  wh = SMH_UNMAP;
366366            }
r4679r4680
376376   {
377377      memory_set_bankptr(machine, 4, mess_ram + 0x2000);
378378      memory_set_bankptr(machine, 12, mess_ram + 0x2000);
379      rh = SMH_BANK4;
380      wh = SMH_BANK12;
379      rh = SMH_BANK(4);
380      wh = SMH_BANK(12);
381381      logerror("6000-7fff RAM\n");
382382   }
383383   memory_install_read8_handler(space, 0x6000, 0x7fff, 0, 0, rh);
r4679r4680
388388      if (ts2068_port_ff_data & 0x80)
389389      {
390390         memory_set_bankptr(machine, 5, ExROM);
391         rh = SMH_BANK5;
391         rh = SMH_BANK(5);
392392         wh = SMH_UNMAP;
393393         logerror("8000-9fff EXROM\n");
394394      }
r4679r4680
397397         if (timex_cart_type == TIMEX_CART_DOCK)
398398         {
399399            memory_set_bankptr(machine, 5, DOCK+0x8000);
400            rh = SMH_BANK5;
400            rh = SMH_BANK(5);
401401            if (timex_cart_chunks&0x10)
402               wh = SMH_BANK13;
402               wh = SMH_BANK(13);
403403            else
404404               wh = SMH_UNMAP;
405405         }
r4679r4680
415415   {
416416      memory_set_bankptr(machine, 5, mess_ram + 0x4000);
417417      memory_set_bankptr(machine, 13, mess_ram + 0x4000);
418      rh = SMH_BANK5;
419      wh = SMH_BANK13;
418      rh = SMH_BANK(5);
419      wh = SMH_BANK(13);
420420      logerror("8000-9fff RAM\n");
421421   }
422422   memory_install_read8_handler(space, 0x8000, 0x9fff, 0, 0,rh);
r4679r4680
427427      if (ts2068_port_ff_data & 0x80)
428428      {
429429         memory_set_bankptr(machine, 6, ExROM);
430         rh = SMH_BANK6;
430         rh = SMH_BANK(6);
431431         wh = SMH_UNMAP;
432432         logerror("a000-bfff EXROM\n");
433433      }
r4679r4680
436436         if (timex_cart_type == TIMEX_CART_DOCK)
437437         {
438438            memory_set_bankptr(machine, 6, DOCK+0xa000);
439            rh = SMH_BANK6;
439            rh = SMH_BANK(6);
440440            if (timex_cart_chunks&0x20)
441               wh = SMH_BANK14;
441               wh = SMH_BANK(14);
442442            else
443443               wh = SMH_UNMAP;
444444         }
r4679r4680
454454   {
455455      memory_set_bankptr(machine, 6, mess_ram + 0x6000);
456456      memory_set_bankptr(machine, 14, mess_ram + 0x6000);
457      rh = SMH_BANK6;
458      wh = SMH_BANK14;
457      rh = SMH_BANK(6);
458      wh = SMH_BANK(14);
459459      logerror("a000-bfff RAM\n");
460460   }
461461   memory_install_read8_handler(space, 0xa000, 0xbfff, 0, 0, rh);
r4679r4680
466466      if (ts2068_port_ff_data & 0x80)
467467      {
468468         memory_set_bankptr(machine, 7, ExROM);
469         rh = SMH_BANK7;
469         rh = SMH_BANK(7);
470470         wh = SMH_UNMAP;
471471         logerror("c000-dfff EXROM\n");
472472      }
r4679r4680
475475         if (timex_cart_type == TIMEX_CART_DOCK)
476476         {
477477            memory_set_bankptr(machine, 7, DOCK+0xc000);
478            rh = SMH_BANK7;
478            rh = SMH_BANK(7);
479479            if (timex_cart_chunks&0x40)
480               wh = SMH_BANK15;
480               wh = SMH_BANK(15);
481481            else
482482               wh = SMH_UNMAP;
483483         }
r4679r4680
493493   {
494494      memory_set_bankptr(machine, 7, mess_ram + 0x8000);
495495      memory_set_bankptr(machine, 15, mess_ram + 0x8000);
496      rh = SMH_BANK7;
497      wh = SMH_BANK15;
496      rh = SMH_BANK(7);
497      wh = SMH_BANK(15);
498498      logerror("c000-dfff RAM\n");
499499   }
500500   memory_install_read8_handler(space, 0xc000, 0xdfff, 0, 0, rh);
r4679r4680
505505      if (ts2068_port_ff_data & 0x80)
506506      {
507507         memory_set_bankptr(machine, 8, ExROM);
508         rh = SMH_BANK8;
508         rh = SMH_BANK(8);
509509         wh = SMH_UNMAP;
510510         logerror("e000-ffff EXROM\n");
511511      }
r4679r4680
514514         if (timex_cart_type == TIMEX_CART_DOCK)
515515         {
516516            memory_set_bankptr(machine, 8, DOCK+0xe000);
517            rh = SMH_BANK8;
517            rh = SMH_BANK(8);
518518            if (timex_cart_chunks&0x80)
519               wh = SMH_BANK16;
519               wh = SMH_BANK(16);
520520            else
521521               wh = SMH_UNMAP;
522522         }
r4679r4680
532532   {
533533      memory_set_bankptr(machine, 8, mess_ram + 0xa000);
534534      memory_set_bankptr(machine, 16, mess_ram + 0xa000);
535      rh = SMH_BANK8;
536      wh = SMH_BANK16;
535      rh = SMH_BANK(8);
536      wh = SMH_BANK(16);
537537      logerror("e000-ffff RAM\n");
538538   }
539539   memory_install_read8_handler(space, 0xe000, 0xffff, 0, 0, rh);
r4679r4680
552552ADDRESS_MAP_END
553553
554554static ADDRESS_MAP_START (ts2068_mem, ADDRESS_SPACE_PROGRAM, 8)
555   AM_RANGE(0x0000, 0x1fff) AM_READWRITE( SMH_BANK1, SMH_BANK9 )
556   AM_RANGE(0x2000, 0x3fff) AM_READWRITE( SMH_BANK2, SMH_BANK10 )
557   AM_RANGE(0x4000, 0x5fff) AM_READWRITE( SMH_BANK3, SMH_BANK11 )
558   AM_RANGE(0x6000, 0x7fff) AM_READWRITE( SMH_BANK4, SMH_BANK12 )
559   AM_RANGE(0x8000, 0x9fff) AM_READWRITE( SMH_BANK5, SMH_BANK13 )
560   AM_RANGE(0xa000, 0xbfff) AM_READWRITE( SMH_BANK6, SMH_BANK14 )
561   AM_RANGE(0xc000, 0xdfff) AM_READWRITE( SMH_BANK7, SMH_BANK15 )
562   AM_RANGE(0xe000, 0xffff) AM_READWRITE( SMH_BANK8, SMH_BANK16 )
555   AM_RANGE(0x0000, 0x1fff) AM_READWRITE( SMH_BANK(1), SMH_BANK(9) )
556   AM_RANGE(0x2000, 0x3fff) AM_READWRITE( SMH_BANK(2), SMH_BANK(10) )
557   AM_RANGE(0x4000, 0x5fff) AM_READWRITE( SMH_BANK(3), SMH_BANK(11) )
558   AM_RANGE(0x6000, 0x7fff) AM_READWRITE( SMH_BANK(4), SMH_BANK(12) )
559   AM_RANGE(0x8000, 0x9fff) AM_READWRITE( SMH_BANK(5), SMH_BANK(13) )
560   AM_RANGE(0xa000, 0xbfff) AM_READWRITE( SMH_BANK(6), SMH_BANK(14) )
561   AM_RANGE(0xc000, 0xdfff) AM_READWRITE( SMH_BANK(7), SMH_BANK(15) )
562   AM_RANGE(0xe000, 0xffff) AM_READWRITE( SMH_BANK(8), SMH_BANK(16) )
563563ADDRESS_MAP_END
564564
565565
r4679r4680
593593
594594static ADDRESS_MAP_START (tc2048_mem, ADDRESS_SPACE_PROGRAM, 8)
595595   AM_RANGE( 0x0000, 0x3fff) AM_ROM
596   AM_RANGE( 0x4000, 0xffff) AM_READWRITE( SMH_BANK1, SMH_BANK2 )
596   AM_RANGE( 0x4000, 0xffff) AM_READWRITE( SMH_BANK(1), SMH_BANK(2) )
597597ADDRESS_MAP_END
598598
599599static MACHINE_RESET( tc2048 )
src/mess/drivers/a2600.c
r4679r4680
12551255   {
12561256      static const read8_space_func handler[] =
12571257      {
1258         SMH_BANK1,
1259         SMH_BANK2,
1260         SMH_BANK3,
1261         SMH_BANK4,
1258         SMH_BANK(1),
1259         SMH_BANK(2),
1260         SMH_BANK(3),
1261         SMH_BANK(4),
12621262      };
12631263
12641264      memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM),
r4679r4680
18431843      memory_install_read8_handler(space, 0x1fe0, 0x1fe7, 0, 0, modeE7_switch_r);
18441844      memory_install_write8_handler(space, 0x1fe8, 0x1feb, 0, 0, modeE7_RAM_switch_w);
18451845      memory_install_read8_handler(space, 0x1fe8, 0x1feb, 0, 0, modeE7_RAM_switch_r);
1846      memory_install_write8_handler(space, 0x1800, 0x18ff, 0, 0, SMH_BANK9);
1847      memory_install_read8_handler(space, 0x1900, 0x19ff, 0, 0, SMH_BANK9);
1846      memory_install_write8_handler(space, 0x1800, 0x18ff, 0, 0, SMH_BANK(9));
1847      memory_install_read8_handler(space, 0x1900, 0x19ff, 0, 0, SMH_BANK(9));
18481848      memory_set_bankptr(machine, 9, extra_RAM + 4 * 256 );
18491849      break;
18501850
r4679r4680
19161916
19171917   if (banking_mode == modeFA)
19181918   {
1919      memory_install_write8_handler(space, 0x1000, 0x10ff, 0, 0, SMH_BANK9);
1920      memory_install_read8_handler(space, 0x1100, 0x11ff, 0, 0, SMH_BANK9);
1919      memory_install_write8_handler(space, 0x1000, 0x10ff, 0, 0, SMH_BANK(9));
1920      memory_install_read8_handler(space, 0x1100, 0x11ff, 0, 0, SMH_BANK(9));
19211921
19221922      memory_set_bankptr(machine,9, extra_RAM);
19231923   }
19241924
19251925   if (banking_mode == modeCV)
19261926   {
1927      memory_install_write8_handler(space, 0x1400, 0x17ff, 0, 0, SMH_BANK9);
1928      memory_install_read8_handler(space, 0x1000, 0x13ff, 0, 0, SMH_BANK9);
1927      memory_install_write8_handler(space, 0x1400, 0x17ff, 0, 0, SMH_BANK(9));
1928      memory_install_read8_handler(space, 0x1000, 0x13ff, 0, 0, SMH_BANK(9));
19291929
19301930      memory_set_bankptr(machine,9, extra_RAM);
19311931   }
19321932
19331933   if (chip)
19341934   {
1935      memory_install_write8_handler(space, 0x1000, 0x107f, 0, 0, SMH_BANK9);
1936      memory_install_read8_handler(space, 0x1080, 0x10ff, 0, 0, SMH_BANK9);
1935      memory_install_write8_handler(space, 0x1000, 0x107f, 0, 0, SMH_BANK(9));
1936      memory_install_read8_handler(space, 0x1080, 0x10ff, 0, 0, SMH_BANK(9));
19371937
19381938      memory_set_bankptr(machine,9, extra_RAM);
19391939   }
src/mess/drivers/pet.c
r4679r4680
438438   AM_RANGE(0xe880, 0xe880) AM_DEVWRITE("crtc", mc6845_address_w)
439439   AM_RANGE(0xe881, 0xe881) AM_DEVREADWRITE("crtc", mc6845_register_r, mc6845_register_w)
440440#endif
441   AM_RANGE(0xf000, 0xffff) AM_READ(SMH_BANK8)
442   AM_RANGE(0xf000, 0xffef) AM_WRITE(SMH_BANK8)
443   AM_RANGE(0xfff1, 0xffff) AM_WRITE(SMH_BANK9)
441   AM_RANGE(0xf000, 0xffff) AM_READ(SMH_BANK(8))
442   AM_RANGE(0xf000, 0xffef) AM_WRITE(SMH_BANK(8))
443   AM_RANGE(0xfff1, 0xffff) AM_WRITE(SMH_BANK(9))
444444ADDRESS_MAP_END
445445
446446
src/mess/drivers/c16.c
r4679r4680
176176
177177static ADDRESS_MAP_START(c16_map, ADDRESS_SPACE_PROGRAM, 8)
178178   AM_RANGE(0x0000, 0x3fff) AM_RAMBANK(9)
179   AM_RANGE(0x4000, 0x7fff) AM_READWRITE(SMH_BANK1, SMH_BANK5)      /* only ram memory configuration */
180   AM_RANGE(0x8000, 0xbfff) AM_READWRITE(SMH_BANK2, SMH_BANK6)
181   AM_RANGE(0xc000, 0xfbff) AM_READ(SMH_BANK3)
182   AM_RANGE(0xfc00, 0xfcff) AM_READ(SMH_BANK4)
183   AM_RANGE(0xc000, 0xfcff) AM_WRITE(SMH_BANK7)
179   AM_RANGE(0x4000, 0x7fff) AM_READWRITE(SMH_BANK(1), SMH_BANK(5))      /* only ram memory configuration */
180   AM_RANGE(0x8000, 0xbfff) AM_READWRITE(SMH_BANK(2), SMH_BANK(6))
181   AM_RANGE(0xc000, 0xfbff) AM_READ(SMH_BANK(3))
182   AM_RANGE(0xfc00, 0xfcff) AM_READ(SMH_BANK(4))
183   AM_RANGE(0xc000, 0xfcff) AM_WRITE(SMH_BANK(7))
184184   AM_RANGE(0xfd10, 0xfd1f) AM_READ(c16_fd1x_r)
185185   AM_RANGE(0xfd30, 0xfd3f) AM_READWRITE(c16_6529_port_r, c16_6529_port_w)      /* 6529 keyboard matrix */
186186   AM_RANGE(0xfdd0, 0xfddf) AM_WRITE(c16_select_roms) /* rom chips selection */
187187   AM_RANGE(0xff00, 0xff1f) AM_READWRITE(ted7360_port_r, ted7360_port_w)
188   AM_RANGE(0xff20, 0xffff) AM_READ(SMH_BANK8)
188   AM_RANGE(0xff20, 0xffff) AM_READ(SMH_BANK(8))
189189   AM_RANGE(0xff3e, 0xff3e) AM_WRITE(c16_switch_to_rom)
190190   AM_RANGE(0xff3f, 0xff3f) AM_WRITE(c16_switch_to_ram)
191191#if 0
r4679r4680
201201ADDRESS_MAP_END
202202
203203static ADDRESS_MAP_START(plus4_map, ADDRESS_SPACE_PROGRAM, 8)
204   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_BANK9)
205   AM_RANGE(0x8000, 0xbfff) AM_READ(SMH_BANK2)
206   AM_RANGE(0xc000, 0xfbff) AM_READ(SMH_BANK3)
207   AM_RANGE(0xfc00, 0xfcff) AM_READ(SMH_BANK4)
208   AM_RANGE(0x0000, 0xfcff) AM_WRITE(SMH_BANK9)
204   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_BANK(9))
205   AM_RANGE(0x8000, 0xbfff) AM_READ(SMH_BANK(2))
206   AM_RANGE(0xc000, 0xfbff) AM_READ(SMH_BANK(3))
207   AM_RANGE(0xfc00, 0xfcff) AM_READ(SMH_BANK(4))
208   AM_RANGE(0x0000, 0xfcff) AM_WRITE(SMH_BANK(9))
209209   AM_RANGE(0xfd00, 0xfd0f) AM_READWRITE(c16_6551_port_r, c16_6551_port_w)
210210   AM_RANGE(0xfd10, 0xfd1f) AM_READWRITE(plus4_6529_port_r, plus4_6529_port_w)
211211   AM_RANGE(0xfd30, 0xfd3f) AM_READWRITE(c16_6529_port_r, c16_6529_port_w) /* 6529 keyboard matrix */
r4679r4680
216216   AM_RANGE(0xfee0, 0xfeff) AM_READWRITE(c16_iec8_port_r, c16_iec8_port_w)      /*configured in c16_common_init */
217217#endif
218218   AM_RANGE(0xff00, 0xff1f) AM_READWRITE(ted7360_port_r, ted7360_port_w)
219   AM_RANGE(0xff20, 0xffff) AM_READ(SMH_BANK8)
219   AM_RANGE(0xff20, 0xffff) AM_READ(SMH_BANK(8))
220220   AM_RANGE(0xff20, 0xff3d) AM_WRITE(SMH_RAM)
221221   AM_RANGE(0xff3e, 0xff3e) AM_WRITE(c16_switch_to_rom)
222222   AM_RANGE(0xff3f, 0xff3f) AM_WRITE(c16_switch_to_ram)
r4679r4680
224224ADDRESS_MAP_END
225225
226226static ADDRESS_MAP_START(c364_map , ADDRESS_SPACE_PROGRAM, 8)
227   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_BANK9)
228   AM_RANGE(0x8000, 0xbfff) AM_READ(SMH_BANK2)
229   AM_RANGE(0xc000, 0xfbff) AM_READ(SMH_BANK3)
230   AM_RANGE(0xfc00, 0xfcff) AM_READ(SMH_BANK4)
231   AM_RANGE(0x0000, 0xfcff) AM_WRITE(SMH_BANK9)
227   AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_BANK(9))
228   AM_RANGE(0x8000, 0xbfff) AM_READ(SMH_BANK(2))
229   AM_RANGE(0xc000, 0xfbff) AM_READ(SMH_BANK(3))
230   AM_RANGE(0xfc00, 0xfcff) AM_READ(SMH_BANK(4))
231   AM_RANGE(0x0000, 0xfcff) AM_WRITE(SMH_BANK(9))
232232   AM_RANGE(0xfd00, 0xfd0f) AM_READWRITE(c16_6551_port_r, c16_6551_port_w)
233233   AM_RANGE(0xfd10, 0xfd1f) AM_READWRITE(plus4_6529_port_r, plus4_6529_port_w)
234234   AM_RANGE(0xfd20, 0xfd2f) AM_READWRITE(c364_speech_r, c364_speech_w)
r4679r4680
240240   AM_RANGE(0xfee0, 0xfeff) AM_READWRITE(c16_iec8_port_r, c16_iec8_port_w)      /*configured in c16_common_init */
241241#endif
242242   AM_RANGE(0xff00, 0xff1f) AM_READWRITE(ted7360_port_r, ted7360_port_w)
243   AM_RANGE(0xff20, 0xffff) AM_READ(SMH_BANK8)
243   AM_RANGE(0xff20, 0xffff) AM_READ(SMH_BANK(8))
244244   AM_RANGE(0xff20, 0xff3d) AM_WRITE(SMH_RAM)
245245   AM_RANGE(0xff3e, 0xff3e) AM_WRITE(c16_switch_to_rom)
246246   AM_RANGE(0xff3f, 0xff3f) AM_WRITE(c16_switch_to_ram)
src/mess/drivers/pcw.c
r4679r4680
239239    setup of the memory below.
240240*/
241241static ADDRESS_MAP_START(pcw_map, ADDRESS_SPACE_PROGRAM, 8 )
242   AM_RANGE(0x0000, 0x3fff) AM_READWRITE(SMH_BANK1, SMH_BANK5)
243   AM_RANGE(0x4000, 0x7fff) AM_READWRITE(SMH_BANK2, SMH_BANK6)
244   AM_RANGE(0x8000, 0xbfff) AM_READWRITE(SMH_BANK3, SMH_BANK7)
245   AM_RANGE(0xc000, 0xffff) AM_READWRITE(SMH_BANK4, SMH_BANK8)
242   AM_RANGE(0x0000, 0x3fff) AM_READWRITE(SMH_BANK(1), SMH_BANK(5))
243   AM_RANGE(0x4000, 0x7fff) AM_READWRITE(SMH_BANK(2), SMH_BANK(6))
244   AM_RANGE(0x8000, 0xbfff) AM_READWRITE(SMH_BANK(3), SMH_BANK(7))
245   AM_RANGE(0xc000, 0xffff) AM_READWRITE(SMH_BANK(4), SMH_BANK(8))
246246ADDRESS_MAP_END
247247
248248
src/mess/drivers/bw2.c
r4679r4680
103103   switch (state->bank)
104104   {
105105   case BANK_RAM1:
106      memory_install_readwrite8_handler(cputag_get_address_space(machine, Z80_TAG, ADDRESS_SPACE_PROGRAM), 0x0000, 0x7fff, 0, 0, SMH_BANK1, SMH_BANK1);
106      memory_install_readwrite8_handler(cputag_get_address_space(machine, Z80_TAG, ADDRESS_SPACE_PROGRAM), 0x0000, 0x7fff, 0, 0, SMH_BANK(1), SMH_BANK(1));
107107      break;
108108
109109   case BANK_VRAM:
110      memory_install_readwrite8_handler(cputag_get_address_space(machine, Z80_TAG, ADDRESS_SPACE_PROGRAM), 0x0000, 0x3fff, 0, 0x4000, SMH_BANK1, SMH_BANK1);
110      memory_install_readwrite8_handler(cputag_get_address_space(machine, Z80_TAG, ADDRESS_SPACE_PROGRAM), 0x0000, 0x3fff, 0, 0x4000, SMH_BANK(1), SMH_BANK(1));
111111      break;
112112
113113   case BANK_RAM2:
r4679r4680
121121      }
122122      else
123123      {
124         memory_install_readwrite8_handler(cputag_get_address_space(machine, Z80_TAG, ADDRESS_SPACE_PROGRAM), 0x0000, 0x7fff, 0, 0, SMH_BANK1, SMH_BANK1);
124         memory_install_readwrite8_handler(cputag_get_address_space(machine, Z80_TAG, ADDRESS_SPACE_PROGRAM), 0x0000, 0x7fff, 0, 0, SMH_BANK(1), SMH_BANK(1));
125125      }
126126      break;
127127
128128   case BANK_ROM:
129      memory_install_readwrite8_handler(cputag_get_address_space(machine, Z80_TAG, ADDRESS_SPACE_PROGRAM), 0x0000, 0x7fff, 0, 0, SMH_BANK1, SMH_UNMAP);
129      memory_install_readwrite8_handler(cputag_get_address_space(machine, Z80_TAG, ADDRESS_SPACE_PROGRAM), 0x0000, 0x7fff, 0, 0, SMH_BANK(1), SMH_UNMAP);
130130      break;
131131   }
132132
r4679r4680
179179   {
180180   case BANK_RAM1:
181181   case BANK_RAMCARD_RAM:
182      memory_install_readwrite8_handler(cputag_get_address_space(machine, Z80_TAG, ADDRESS_SPACE_PROGRAM), 0x0000, 0x7fff, 0, 0, SMH_BANK1, SMH_BANK1);
182      memory_install_readwrite8_handler(cputag_get_address_space(machine, Z80_TAG, ADDRESS_SPACE_PROGRAM), 0x0000, 0x7fff, 0, 0, SMH_BANK(1), SMH_BANK(1));
183183      break;
184184
185185   case BANK_VRAM:
186      memory_install_readwrite8_handler(cputag_get_address_space(machine, Z80_TAG, ADDRESS_SPACE_PROGRAM), 0x0000, 0x3fff, 0, 0x4000, SMH_BANK1, SMH_BANK1);
186      memory_install_readwrite8_handler(cputag_get_address_space(machine, Z80_TAG, ADDRESS_SPACE_PROGRAM), 0x0000, 0x3fff, 0, 0x4000, SMH_BANK(1), SMH_BANK(1));
187187      break;
188188
189189   case BANK_RAM3:
r4679r4680
195195      }
196196      else
197197      {
198         memory_install_readwrite8_handler(cputag_get_address_space(machine, Z80_TAG, ADDRESS_SPACE_PROGRAM), 0x0000, 0x7fff, 0, 0, SMH_BANK1, SMH_BANK1);
198         memory_install_readwrite8_handler(cputag_get_address_space(machine, Z80_TAG, ADDRESS_SPACE_PROGRAM), 0x0000, 0x7fff, 0, 0, SMH_BANK(1), SMH_BANK(1));
199199      }
200200      break;
201201
202202   case BANK_RAMCARD_ROM:
203      memory_install_readwrite8_handler(cputag_get_address_space(machine, Z80_TAG, ADDRESS_SPACE_PROGRAM), 0x0000, 0x3fff, 0, 0x4000, SMH_BANK1, SMH_UNMAP);
203      memory_install_readwrite8_handler(cputag_get_address_space(machine, Z80_TAG, ADDRESS_SPACE_PROGRAM), 0x0000, 0x3fff, 0, 0x4000, SMH_BANK(1), SMH_UNMAP);
204204      break;
205205
206206   case BANK_ROM:
207      memory_install_readwrite8_handler(cputag_get_address_space(machine, Z80_TAG, ADDRESS_SPACE_PROGRAM), 0x0000, 0x7fff, 0, 0, SMH_BANK1, SMH_UNMAP);
207      memory_install_readwrite8_handler(cputag_get_address_space(machine, Z80_TAG, ADDRESS_SPACE_PROGRAM), 0x0000, 0x7fff, 0, 0, SMH_BANK(1), SMH_UNMAP);
208208      break;
209209   }
210210
r4679r4680
224224   }
225225   else
226226   {
227      memory_install_readwrite8_handler(cputag_get_address_space(space->machine, Z80_TAG, ADDRESS_SPACE_PROGRAM), 0x0000, 0x7fff, 0, 0, SMH_BANK1, SMH_BANK1);
227      memory_install_readwrite8_handler(cputag_get_address_space(space->machine, Z80_TAG, ADDRESS_SPACE_PROGRAM), 0x0000, 0x7fff, 0, 0, SMH_BANK(1), SMH_BANK(1));
228228   }
229229
230230   memory_configure_bank(space->machine, 1, BANK_RAMCARD_RAM, 1, state->ramcard_ram + bank_offset, 0);
r4679r4680
563563   bw2_state *state = machine->driver_data;
564564
565565   /* allocate work memory */
566   state->work_ram = auto_malloc(mess_ram_size);
566   state->work_ram = auto_alloc_array(machine, UINT8, mess_ram_size);
567567
568568   /* allocate video memory */
569   state->video_ram = auto_malloc(BW2_VIDEORAM_SIZE);
569   state->video_ram = auto_alloc_array(machine, UINT8, BW2_VIDEORAM_SIZE);
570570
571571   /* allocate RAMcard memory */
572   state->ramcard_ram = auto_malloc(BW2_RAMCARD_SIZE);
572   state->ramcard_ram = auto_alloc_array(machine, UINT8, BW2_RAMCARD_SIZE);
573573}
574574
575575static MACHINE_START( bw2 )
src/mess/drivers/osi.c
r4679r4680
679679   switch (mess_ram_size)
680680   {
681681   case 4*1024:
682      memory_install_readwrite8_handler(program, 0x0000, 0x0fff, 0, 0, SMH_BANK1, SMH_BANK1);
682      memory_install_readwrite8_handler(program, 0x0000, 0x0fff, 0, 0, SMH_BANK(1), SMH_BANK(1));
683683      memory_install_readwrite8_handler(program, 0x1000, 0x1fff, 0, 0, SMH_UNMAP, SMH_UNMAP);
684684      break;
685685
686686   case 8*1024:
687      memory_install_readwrite8_handler(program, 0x0000, 0x1fff, 0, 0, SMH_BANK1, SMH_BANK1);
687      memory_install_readwrite8_handler(program, 0x0000, 0x1fff, 0, 0, SMH_BANK(1), SMH_BANK(1));
688688      break;
689689   }
690690
r4679r4680
706706   switch (mess_ram_size)
707707   {
708708   case 8*1024:
709      memory_install_readwrite8_handler(program, 0x0000, 0x1fff, 0, 0, SMH_BANK1, SMH_BANK1);
709      memory_install_readwrite8_handler(program, 0x0000, 0x1fff, 0, 0, SMH_BANK(1), SMH_BANK(1));
710710      memory_install_readwrite8_handler(program, 0x2000, 0x4fff, 0, 0, SMH_UNMAP, SMH_UNMAP);
711711      break;
712712
713713   case 20*1024:
714      memory_install_readwrite8_handler(program, 0x0000, 0x4fff, 0, 0, SMH_BANK1, SMH_BANK1);
714      memory_install_readwrite8_handler(program, 0x0000, 0x4fff, 0, 0, SMH_BANK(1), SMH_BANK(1));
715715      break;
716716   }
717717
src/mess/drivers/oric.c
r4679r4680
4646    covered by the roms for these interfaces, can be accessed
4747    if it is enabled.
4848
49    SMH_BANK1,SMH_BANK2 and SMH_BANK3 are used for a 16k rom.
50    SMH_BANK2 and SMH_BANK3 are used for a 8k rom.
51    SMH_BANK3 is used for a 2k rom.
49    SMH_BANK(1),SMH_BANK(2) and SMH_BANK(3) are used for a 16k rom.
50    SMH_BANK(2) and SMH_BANK(3) are used for a 8k rom.
51    SMH_BANK(3) is used for a 2k rom.
5252
5353    0x0300-0x03ff is I/O access. It is not defined below because the
5454    memory is setup dynamically depending on hardware that has been selected (microdisc, jasmin, apple2) etc.
r4679r4680
5858
5959static ADDRESS_MAP_START(oric_mem, ADDRESS_SPACE_PROGRAM, 8)
6060    AM_RANGE( 0x0000, 0xbfff) AM_RAM AM_BASE( &oric_ram )
61    AM_RANGE( 0xc000, 0xdfff) AM_READWRITE( SMH_BANK1, SMH_BANK5 )
62   AM_RANGE( 0xe000, 0xf7ff) AM_READWRITE( SMH_BANK2, SMH_BANK6 )
63   AM_RANGE( 0xf800, 0xffff) AM_READWRITE( SMH_BANK3, SMH_BANK7 )
61    AM_RANGE( 0xc000, 0xdfff) AM_READWRITE( SMH_BANK(1), SMH_BANK(5) )
62   AM_RANGE( 0xe000, 0xf7ff) AM_READWRITE( SMH_BANK(2), SMH_BANK(6) )
63   AM_RANGE( 0xf800, 0xffff) AM_READWRITE( SMH_BANK(3), SMH_BANK(7) )
6464ADDRESS_MAP_END
6565
6666/*
r4679r4680
7373   AM_RANGE( 0x031c, 0x031f) AM_DEVREADWRITE("acia",  acia_6551_r, acia_6551_w )
7474   AM_RANGE( 0x0320, 0x032f) AM_DEVREADWRITE("via6522_1", via_r, via_w)
7575   AM_RANGE( 0x0400, 0xbfff) AM_RAM
76   AM_RANGE( 0xc000, 0xffff) AM_READWRITE( SMH_BANK1, SMH_BANK2 )
76   AM_RANGE( 0xc000, 0xffff) AM_READWRITE( SMH_BANK(1), SMH_BANK(2) )
7777ADDRESS_MAP_END
7878
7979
src/mess/drivers/atom.c
r4679r4680
107107   AM_RANGE(0x0a05, 0x7fff) AM_RAM
108108   AM_RANGE(0x8000, 0x97ff) AM_RAM AM_BASE(&videoram) AM_SIZE(&videoram_size) /* VDG 6847 */
109109   AM_RANGE(0x9800, 0x9fff) AM_RAM
110   AM_RANGE(0xa000, 0xafff) AM_READ(SMH_BANK1)   /* eprom data from eprom box */
110   AM_RANGE(0xa000, 0xafff) AM_READ(SMH_BANK(1))   /* eprom data from eprom box */
111111   AM_RANGE(0xb000, 0xb003) AM_DEVREADWRITE("ppi8255", ppi8255_r, ppi8255_w)
112112   AM_RANGE(0xb800, 0xbbff) AM_DEVREADWRITE("via6522_0", via_r, via_w)
113113   AM_RANGE(0xbfff, 0xbfff) AM_READWRITE(atom_eprom_box_r, atom_eprom_box_w)
src/mess/drivers/rt1715.c
r4679r4680
2525
2626/* Address maps */
2727static ADDRESS_MAP_START(rt1715_mem, ADDRESS_SPACE_PROGRAM, 8)
28   AM_RANGE( 0x0000, 0x07ff ) AM_READWRITE(SMH_BANK1, SMH_BANK3)
29  AM_RANGE( 0x0800, 0xffff ) AM_READWRITE(SMH_BANK2, SMH_BANK2)
28   AM_RANGE( 0x0000, 0x07ff ) AM_READWRITE(SMH_BANK(1), SMH_BANK(3))
29  AM_RANGE( 0x0800, 0xffff ) AM_READWRITE(SMH_BANK(2), SMH_BANK(2))
3030ADDRESS_MAP_END
3131
3232static ADDRESS_MAP_START( rt1715_io , ADDRESS_SPACE_IO, 8)
src/mess/drivers/vector06.c
r4679r4680
2020
2121/* Address maps */
2222static ADDRESS_MAP_START(vector06_mem, ADDRESS_SPACE_PROGRAM, 8)
23   AM_RANGE( 0x0000, 0x7fff ) AM_READWRITE(SMH_BANK1, SMH_BANK2)
24     AM_RANGE( 0x8000, 0xffff ) AM_READWRITE(SMH_BANK3, SMH_BANK4)
23   AM_RANGE( 0x0000, 0x7fff ) AM_READWRITE(SMH_BANK(1), SMH_BANK(2))
24     AM_RANGE( 0x8000, 0xffff ) AM_READWRITE(SMH_BANK(3), SMH_BANK(4))
2525ADDRESS_MAP_END
2626
2727static ADDRESS_MAP_START( vector06_io , ADDRESS_SPACE_IO, 8)
src/mess/drivers/ql.c
r4679r4680
546546      break;
547547
548548   case 192*1024:
549      memory_install_readwrite8_handler(program, 0x040000, 0x04ffff, 0, 0, SMH_BANK2, SMH_BANK2);
549      memory_install_readwrite8_handler(program, 0x040000, 0x04ffff, 0, 0, SMH_BANK(2), SMH_BANK(2));
550550      memory_install_readwrite8_handler(program, 0x050000, 0x0fffff, 0, 0, SMH_UNMAP, SMH_UNMAP);
551551      break;
552552
553553   case 256*1024:
554      memory_install_readwrite8_handler(program, 0x040000, 0x05ffff, 0, 0, SMH_BANK2, SMH_BANK2);
554      memory_install_readwrite8_handler(program, 0x040000, 0x05ffff, 0, 0, SMH_BANK(2), SMH_BANK(2));
555555      memory_install_readwrite8_handler(program, 0x060000, 0x0fffff, 0, 0, SMH_UNMAP, SMH_UNMAP);
556556      break;
557557
558558   case 384*1024:
559      memory_install_readwrite8_handler(program, 0x040000, 0x07ffff, 0, 0, SMH_BANK2, SMH_BANK2);
559      memory_install_readwrite8_handler(program, 0x040000, 0x07ffff, 0, 0, SMH_BANK(2), SMH_BANK(2));
560560      memory_install_readwrite8_handler(program, 0x080000, 0x0fffff, 0, 0, SMH_UNMAP, SMH_UNMAP);
561561      break;
562562
563563   case 640*1024:
564      memory_install_readwrite8_handler(program, 0x040000, 0x0bffff, 0, 0, SMH_BANK2, SMH_BANK2);
564      memory_install_readwrite8_handler(program, 0x040000, 0x0bffff, 0, 0, SMH_BANK(2), SMH_BANK(2));
565565      memory_install_readwrite8_handler(program, 0x0c0000, 0x0fffff, 0, 0, SMH_UNMAP, SMH_UNMAP);
566566      break;
567567
568568   case 896*1024:
569      memory_install_readwrite8_handler(program, 0x040000, 0x0fffff, 0, 0, SMH_BANK2, SMH_BANK2);
569      memory_install_readwrite8_handler(program, 0x040000, 0x0fffff, 0, 0, SMH_BANK(2), SMH_BANK(2));
570570      break;
571571   }
572572
r4679r4680
600600   {
601601      if (image_fread(image, ptr, filesize) == filesize)
602602      {
603         memory_install_readwrite8_handler(cputag_get_address_space(image->machine, M68008_TAG, ADDRESS_SPACE_PROGRAM), 0x00c000, 0x00ffff, 0, 0, SMH_BANK1, SMH_UNMAP);
603         memory_install_readwrite8_handler(cputag_get_address_space(image->machine, M68008_TAG, ADDRESS_SPACE_PROGRAM), 0x00c000, 0x00ffff, 0, 0, SMH_BANK(1), SMH_UNMAP);
604604
605605         return INIT_PASS;
606606      }
src/mess/drivers/saturn.c
r4679r4680
22022202   minit_boost_timeslice = attotime_zero;
22032203   sinit_boost_timeslice = attotime_zero;
22042204
2205   smpc_ram = auto_malloc (0x80);
2206   stv_scu = auto_malloc (0x100);
2207   scsp_regs = auto_malloc (0x1000);
2205   smpc_ram = auto_alloc_array(machine, UINT8, 0x80);
2206   stv_scu = auto_alloc_array(machine, UINT32, 0x100/4);
2207   scsp_regs = auto_alloc_array(machine, UINT16, 0x1000/2);
22082208
22092209   smpc_ram[0x23] = DectoBCD(systime.local_time.year / 100);
22102210   smpc_ram[0x25] = DectoBCD(systime.local_time.year % 100);
src/mess/drivers/amiga.c
r4679r4680
465465      }
466466
467467      /* overlay disabled, map RAM on 0x000000 */
468      memory_install_write16_handler(cputag_get_address_space(device->machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x000000, amiga_chip_ram_size - 1, 0, mirror_mask, SMH_BANK1);
468      memory_install_write16_handler(cputag_get_address_space(device->machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x000000, amiga_chip_ram_size - 1, 0, mirror_mask, SMH_BANK(1));
469469
470470      amiga_cart_check_overlay(device->machine);
471471   }
src/mess/drivers/abc80x.c
r4679r4680
215215   if (state->fetch_charram)
216216   {
217217      /* HR video RAM selected */
218      memory_install_readwrite8_handler(program, 0x0000, 0x3fff, 0, 0, SMH_BANK1, SMH_BANK1);
218      memory_install_readwrite8_handler(program, 0x0000, 0x3fff, 0, 0, SMH_BANK(1), SMH_BANK(1));
219219   }
220220   else
221221   {
222222      /* BASIC ROM selected */
223      memory_install_readwrite8_handler(program, 0x0000, 0x3fff, 0, 0, SMH_BANK1, SMH_UNMAP);
223      memory_install_readwrite8_handler(program, 0x0000, 0x3fff, 0, 0, SMH_BANK(1), SMH_UNMAP);
224224   }
225225
226226   memory_set_bank(machine, 1, state->fetch_charram);
r4679r4680
234234   if (state->lrs)
235235   {
236236      /* ROM and video RAM selected */
237      memory_install_readwrite8_handler(program, 0x0000, 0x77ff, 0, 0, SMH_BANK1, SMH_BANK1);
237      memory_install_readwrite8_handler(program, 0x0000, 0x77ff, 0, 0, SMH_BANK(1), SMH_BANK(1));
238238      memory_install_readwrite8_handler(program, 0x7800, 0x7fff, 0, 0, abc802_charram_r, abc802_charram_w);
239239   }
240240   else
241241   {
242242      /* low RAM selected */
243      memory_install_readwrite8_handler(program, 0x0000, 0x7fff, 0, 0, SMH_BANK1, SMH_BANK1);
243      memory_install_readwrite8_handler(program, 0x0000, 0x7fff, 0, 0, SMH_BANK(1), SMH_BANK(1));
244244   }
245245
246246   memory_set_bank(machine, 1, state->lrs);
r4679r4680
10501050
10511051   /* configure memory */
10521052
1053   state->videoram = auto_malloc(ABC800_VIDEO_RAM_SIZE);
1053   state->videoram = auto_alloc_array(machine, UINT8, ABC800_VIDEO_RAM_SIZE);
10541054
10551055   memory_configure_bank(machine, 1, 0, 1, memory_region(machine, Z80_TAG), 0);
10561056   memory_configure_bank(machine, 1, 1, 1, state->videoram, 0);
r4679r4680
11391139
11401140   /* setup memory banking */
11411141
1142   state->videoram = auto_malloc(videoram_size);
1142   state->videoram = auto_alloc_array(machine, UINT8, videoram_size);
11431143
11441144   for (bank = 1; bank <= 16; bank++)
11451145   {
src/mess/drivers/tmc2000e.c
r4679r4680
253253
254254   /* allocate color RAM */
255255
256   state->colorram = auto_malloc(TMC2000E_COLORRAM_SIZE);
256   state->colorram = auto_alloc_array(machine, UINT8, TMC2000E_COLORRAM_SIZE);
257257
258258   /* find devices */
259259
src/mess/drivers/tmc1800.c
r4679r4680
205205   switch (mess_ram_size)
206206   {
207207   case 4 * 1024:
208      memory_install_readwrite8_handler(cputag_get_address_space(device->machine, CDP1802_TAG, ADDRESS_SPACE_PROGRAM), 0x0000, 0x0fff, 0, 0x7000, SMH_BANK1, SMH_BANK1);
208      memory_install_readwrite8_handler(cputag_get_address_space(device->machine, CDP1802_TAG, ADDRESS_SPACE_PROGRAM), 0x0000, 0x0fff, 0, 0x7000, SMH_BANK(1), SMH_BANK(1));
209209      break;
210210
211211   case 16 * 1024:
212      memory_install_readwrite8_handler(cputag_get_address_space(device->machine, CDP1802_TAG, ADDRESS_SPACE_PROGRAM), 0x0000, 0x3fff, 0, 0x4000, SMH_BANK1, SMH_BANK1);
212      memory_install_readwrite8_handler(cputag_get_address_space(device->machine, CDP1802_TAG, ADDRESS_SPACE_PROGRAM), 0x0000, 0x3fff, 0, 0x4000, SMH_BANK(1), SMH_BANK(1));
213213      break;
214214
215215   case 32 * 1024:
216      memory_install_readwrite8_handler(cputag_get_address_space(device->machine, CDP1802_TAG, ADDRESS_SPACE_PROGRAM), 0x0000, 0x7fff, 0, 0, SMH_BANK1, SMH_BANK1);
216      memory_install_readwrite8_handler(cputag_get_address_space(device->machine, CDP1802_TAG, ADDRESS_SPACE_PROGRAM), 0x0000, 0x7fff, 0, 0, SMH_BANK(1), SMH_BANK(1));
217217      break;
218218   }
219219
r4679r4680
224224   switch (bank)
225225   {
226226   case TMC2000_BANK_MONITOR:
227      memory_install_readwrite8_handler(cputag_get_address_space(device->machine, CDP1802_TAG, ADDRESS_SPACE_PROGRAM), 0x8000, 0x81ff, 0, 0x7e00, SMH_BANK2, SMH_UNMAP);
227      memory_install_readwrite8_handler(cputag_get_address_space(device->machine, CDP1802_TAG, ADDRESS_SPACE_PROGRAM), 0x8000, 0x81ff, 0, 0x7e00, SMH_BANK(2), SMH_UNMAP);
228228      break;
229229
230230   case TMC2000_BANK_COLORRAM: // write-only
231      memory_install_readwrite8_handler(cputag_get_address_space(device->machine, CDP1802_TAG, ADDRESS_SPACE_PROGRAM), 0x8000, 0x81ff, 0, 0x7e00, SMH_UNMAP, SMH_BANK2);
231      memory_install_readwrite8_handler(cputag_get_address_space(device->machine, CDP1802_TAG, ADDRESS_SPACE_PROGRAM), 0x8000, 0x81ff, 0, 0x7e00, SMH_UNMAP, SMH_BANK(2));
232232      break;
233233   }
234234
r4679r4680
243243
244244   memory_set_bank(device->machine, 1, OSCNANO_BANK_RAM);
245245
246   memory_install_readwrite8_handler(cputag_get_address_space(device->machine, CDP1802_TAG, ADDRESS_SPACE_PROGRAM), 0x0000, 0x0fff, 0, 0x7000, SMH_BANK1, SMH_BANK1);
246   memory_install_readwrite8_handler(cputag_get_address_space(device->machine, CDP1802_TAG, ADDRESS_SPACE_PROGRAM), 0x0000, 0x0fff, 0, 0x7000, SMH_BANK(1), SMH_BANK(1));
247247
248248   /* write to CDP1864 tone latch */
249249
r4679r4680
780780
781781   /* ROM/colorram banking */
782782
783   state->colorram = auto_malloc(TMC2000_COLORRAM_SIZE);
783   state->colorram = auto_alloc_array(machine, UINT8, TMC2000_COLORRAM_SIZE);
784784
785785   memory_configure_bank(machine, 2, TMC2000_BANK_MONITOR, 1, memory_region(machine, CDP1802_TAG) + 0x8000, 0);
786786   memory_configure_bank(machine, 2, TMC2000_BANK_COLORRAM, 1, state->colorram, 0);
r4679r4680
816816
817817   memory_set_bank(machine, 1, TMC2000_BANK_ROM);
818818
819   memory_install_readwrite8_handler(cputag_get_address_space(machine, CDP1802_TAG, ADDRESS_SPACE_PROGRAM), 0x0000, 0x01ff, 0, 0x7e00, SMH_BANK1, SMH_UNMAP);
819   memory_install_readwrite8_handler(cputag_get_address_space(machine, CDP1802_TAG, ADDRESS_SPACE_PROGRAM), 0x0000, 0x01ff, 0, 0x7e00, SMH_BANK(1), SMH_UNMAP);
820820
821821   /* enable monitor */
822822
823823   memory_set_bank(machine, 2, TMC2000_BANK_MONITOR);
824824
825   memory_install_readwrite8_handler(cputag_get_address_space(machine, CDP1802_TAG, ADDRESS_SPACE_PROGRAM), 0x8000, 0x81ff, 0, 0x7e00, SMH_BANK2, SMH_UNMAP);
825   memory_install_readwrite8_handler(cputag_get_address_space(machine, CDP1802_TAG, ADDRESS_SPACE_PROGRAM), 0x8000, 0x81ff, 0, 0x7e00, SMH_BANK(2), SMH_UNMAP);
826826}
827827
828828// OSCOM Nano
r4679r4680
867867
868868   memory_set_bank(machine, 1, OSCNANO_BANK_ROM);
869869
870   memory_install_readwrite8_handler(cputag_get_address_space(machine, CDP1802_TAG, ADDRESS_SPACE_PROGRAM), 0x0000, 0x01ff, 0, 0x7e00, SMH_BANK1, SMH_BANK1);
870   memory_install_readwrite8_handler(cputag_get_address_space(machine, CDP1802_TAG, ADDRESS_SPACE_PROGRAM), 0x0000, 0x01ff, 0, 0x7e00, SMH_BANK(1), SMH_BANK(1));
871871}
872872
873873/* Machine Drivers */
src/mess/drivers/a7800.c
r4679r4680
3333static ADDRESS_MAP_START( a7800_mem, ADDRESS_SPACE_PROGRAM, 8 )
3434   AM_RANGE(0x0000, 0x001f) AM_MIRROR(0x300) AM_READWRITE(a7800_TIA_r, a7800_TIA_w)
3535   AM_RANGE(0x0020, 0x003f) AM_MIRROR(0x300) AM_READWRITE(a7800_MARIA_r, a7800_MARIA_w)
36   AM_RANGE(0x0040, 0x00ff) AM_READWRITE(SMH_BANK5, a7800_RAM0_w)   /* RAM (6116 block 0) */
36   AM_RANGE(0x0040, 0x00ff) AM_READWRITE(SMH_BANK(5), a7800_RAM0_w)   /* RAM (6116 block 0) */
3737   AM_RANGE(0x0140, 0x01ff) AM_RAMBANK(6)   /* RAM (6116 block 1) */
3838   AM_RANGE(0x0280, 0x02ff) AM_DEVREADWRITE("riot", riot6532_r, riot6532_w)
3939   AM_RANGE(0x0480, 0x04ff) AM_MIRROR(0x100) AM_RAM   /* RIOT RAM */
src/mess/drivers/newbrain.c
r4679r4680
14381438   MACHINE_START_CALL(newbrain);
14391439
14401440   /* allocate expansion RAM */
1441   state->eim_ram = auto_malloc(NEWBRAIN_EIM_RAM_SIZE);
1441   state->eim_ram = auto_alloc_array(machine, UINT8, NEWBRAIN_EIM_RAM_SIZE);
14421442
14431443   /* find devices */
14441444   state->z80ctc = devtag_get_device(machine, Z80CTC_TAG);
src/mess/drivers/einstein.c
r4679r4680
267267};
268268
269269/* 80 column card init */
270static void   einstein_80col_init(void)
270static void   einstein_80col_init(running_machine *machine)
271271{
272272   /* 2K RAM */
273   einstein_80col_ram = auto_malloc(2048);
273   einstein_80col_ram = auto_alloc_array(machine, char, 2048);
274274
275275   einstein_80col_state=(1<<2)|(1<<1);
276276}
r4679r4680
784784
785785
786786static ADDRESS_MAP_START( einstein_mem , ADDRESS_SPACE_PROGRAM, 8)
787   AM_RANGE(0x0000, 0x01fff) AM_READWRITE(SMH_BANK1, SMH_BANK3)
788   AM_RANGE(0x2000, 0x0ffff) AM_READWRITE(SMH_BANK2, SMH_BANK4)
787   AM_RANGE(0x0000, 0x01fff) AM_READWRITE(SMH_BANK(1), SMH_BANK(3))
788   AM_RANGE(0x2000, 0x0ffff) AM_READWRITE(SMH_BANK(2), SMH_BANK(4))
789789ADDRESS_MAP_END
790790
791791
r4679r4680
14001400static MACHINE_RESET( einstein2 )
14011401{
14021402   MACHINE_RESET_CALL(einstein);
1403   einstein_80col_init();
1403   einstein_80col_init(machine);
14041404}
14051405
14061406static INPUT_PORTS_START(einstein)
src/mess/drivers/exelv.c
r4679r4680
6464static VIDEO_START( exelv )
6565{
6666   VIDEO_START_CALL( generic_bitmapped );
67   tms3556_init(/*0x8000*/0x10000);   /* tms3556 with 32 kb of video RAM */
67   tms3556_init(machine, /*0x8000*/0x10000);   /* tms3556 with 32 kb of video RAM */
6868}
6969
7070static MACHINE_RESET( exelv )
src/mess/drivers/osborne1.c
r4679r4680
4848
4949
5050static ADDRESS_MAP_START( osborne1_mem, ADDRESS_SPACE_PROGRAM, 8 )
51   AM_RANGE( 0x0000, 0x0FFF ) AM_READWRITE( SMH_BANK1, osborne1_0000_w )
52   AM_RANGE( 0x1000, 0x1FFF ) AM_READWRITE( SMH_BANK2, osborne1_1000_w )
51   AM_RANGE( 0x0000, 0x0FFF ) AM_READWRITE( SMH_BANK(1), osborne1_0000_w )
52   AM_RANGE( 0x1000, 0x1FFF ) AM_READWRITE( SMH_BANK(2), osborne1_1000_w )
5353   AM_RANGE( 0x2000, 0x2FFF ) AM_READWRITE( osborne1_2000_r, osborne1_2000_w )
54   AM_RANGE( 0x3000, 0x3FFF ) AM_READWRITE( SMH_BANK3, osborne1_3000_w )
54   AM_RANGE( 0x3000, 0x3FFF ) AM_READWRITE( SMH_BANK(3), osborne1_3000_w )
5555   AM_RANGE( 0x4000, 0xEFFF ) AM_RAM
56   AM_RANGE( 0xF000, 0xFFFF ) AM_READWRITE( SMH_BANK4, osborne1_videoram_w )
56   AM_RANGE( 0xF000, 0xFFFF ) AM_READWRITE( SMH_BANK(4), osborne1_videoram_w )
5757ADDRESS_MAP_END
5858
5959
src/mess/drivers/amstrad.c
r4679r4680
160160pages the memory in 8k blocks! The ROM can
161161be paged into bank 0 and bank 3. */
162162static ADDRESS_MAP_START(amstrad_mem, ADDRESS_SPACE_PROGRAM, 8)
163   AM_RANGE(0x00000, 0x01fff) AM_READWRITE(SMH_BANK1, SMH_BANK9)
164   AM_RANGE(0x02000, 0x03fff) AM_READWRITE(SMH_BANK2, SMH_BANK10)
165   AM_RANGE(0x04000, 0x05fff) AM_READWRITE(SMH_BANK3, SMH_BANK11)
166   AM_RANGE(0x06000, 0x07fff) AM_READWRITE(SMH_BANK4, SMH_BANK12)
167   AM_RANGE(0x08000, 0x09fff) AM_READWRITE(SMH_BANK5, SMH_BANK13)
168   AM_RANGE(0x0a000, 0x0bfff) AM_READWRITE(SMH_BANK6, SMH_BANK14)
169   AM_RANGE(0x0c000, 0x0dfff) AM_READWRITE(SMH_BANK7, SMH_BANK15)
170   AM_RANGE(0x0e000, 0x0ffff) AM_READWRITE(SMH_BANK8, SMH_BANK16)
163   AM_RANGE(0x00000, 0x01fff) AM_READWRITE(SMH_BANK(1), SMH_BANK(9))
164   AM_RANGE(0x02000, 0x03fff) AM_READWRITE(SMH_BANK(2), SMH_BANK(10))
165   AM_RANGE(0x04000, 0x05fff) AM_READWRITE(SMH_BANK(3), SMH_BANK(11))
166   AM_RANGE(0x06000, 0x07fff) AM_READWRITE(SMH_BANK(4), SMH_BANK(12))
167   AM_RANGE(0x08000, 0x09fff) AM_READWRITE(SMH_BANK(5), SMH_BANK(13))
168   AM_RANGE(0x0a000, 0x0bfff) AM_READWRITE(SMH_BANK(6), SMH_BANK(14))
169   AM_RANGE(0x0c000, 0x0dfff) AM_READWRITE(SMH_BANK(7), SMH_BANK(15))
170   AM_RANGE(0x0e000, 0x0ffff) AM_READWRITE(SMH_BANK(8), SMH_BANK(16))
171171ADDRESS_MAP_END
172172
173173/* I've handled the I/O ports in this way, because the ports
src/mess/drivers/kyocera.c
r4679r4680
105105      }
106106
107107      if (!optional_rom)
108         memory_install_readwrite8_handler(space_program, 0x0000, 0x7fff, 0, 0, SMH_BANK1, read_only ? SMH_UNMAP : SMH_BANK1);
108         memory_install_readwrite8_handler(space_program, 0x0000, 0x7fff, 0, 0, SMH_BANK(1), read_only ? SMH_UNMAP : SMH_BANK(1));
109109   }
110110
111111   if (((data >> 2) & 0x03) != ram_page)
r4679r4680
157157      {
158158         case 0:
159159            memory_set_bankptr(space_program->machine, 1, rom + 0x10000);
160            memory_install_readwrite8_handler(space_program, 0x0000, 0x7fff, 0, 0, SMH_BANK1, SMH_UNMAP);
161            memory_install_readwrite8_handler(space_program, 0x8000, 0x9fff, 0, 0, SMH_BANK2, SMH_UNMAP);
160            memory_install_readwrite8_handler(space_program, 0x0000, 0x7fff, 0, 0, SMH_BANK(1), SMH_UNMAP);
161            memory_install_readwrite8_handler(space_program, 0x8000, 0x9fff, 0, 0, SMH_BANK(2), SMH_UNMAP);
162162            break;
163163         case 1:
164164            memory_set_bankptr(space_program->machine, 1, rom + 0x1a000);   /* Multiplan */
165            memory_install_readwrite8_handler(space_program, 0x0000, 0x7fff, 0, 0, SMH_BANK1, SMH_UNMAP);
165            memory_install_readwrite8_handler(space_program, 0x0000, 0x7fff, 0, 0, SMH_BANK(1), SMH_UNMAP);
166166            memory_install_readwrite8_handler(space_program, 0x8000, 0x9fff, 0, 0, SMH_UNMAP, SMH_UNMAP);
167167            break;
168168         case 2: /* Optional ROM, not implemented yet */
r4679r4680
850850{
851851   UINT8 *rom = memory_region(machine, I8085_TAG);
852852
853   memory_install_readwrite8_handler(cputag_get_address_space(machine, I8085_TAG, ADDRESS_SPACE_PROGRAM), 0x0000, 0x7fff, 0, 0, SMH_BANK1, SMH_UNMAP);
854   memory_install_readwrite8_handler(cputag_get_address_space(machine, I8085_TAG, ADDRESS_SPACE_PROGRAM), 0x8000, 0xffff, 0, 0, SMH_BANK2, SMH_BANK2);
853   memory_install_readwrite8_handler(cputag_get_address_space(machine, I8085_TAG, ADDRESS_SPACE_PROGRAM), 0x0000, 0x7fff, 0, 0, SMH_BANK(1), SMH_UNMAP);
854   memory_install_readwrite8_handler(cputag_get_address_space(machine, I8085_TAG, ADDRESS_SPACE_PROGRAM), 0x8000, 0xffff, 0, 0, SMH_BANK(2), SMH_BANK(2));
855855
856856   memory_set_bankptr(machine, 1, rom + 0x10000);
857857   memory_set_bankptr(machine, 2, mess_ram);
r4679r4680
861861{
862862   UINT8 *rom = memory_region(machine, I8085_TAG);
863863
864   memory_install_readwrite8_handler(cputag_get_address_space(machine, I8085_TAG, ADDRESS_SPACE_PROGRAM), 0x0000, 0x7fff, 0, 0, SMH_BANK1, SMH_UNMAP);
865   memory_install_readwrite8_handler(cputag_get_address_space(machine, I8085_TAG, ADDRESS_SPACE_PROGRAM), 0x8000, 0x9fff, 0, 0, SMH_BANK2, SMH_UNMAP);
866   memory_install_readwrite8_handler(cputag_get_address_space(machine, I8085_TAG, ADDRESS_SPACE_PROGRAM), 0xa000, 0xffff, 0, 0, SMH_BANK3, SMH_BANK3);
864   memory_install_readwrite8_handler(cputag_get_address_space(machine, I8085_TAG, ADDRESS_SPACE_PROGRAM), 0x0000, 0x7fff, 0, 0, SMH_BANK(1), SMH_UNMAP);
865   memory_install_readwrite8_handler(cputag_get_address_space(machine, I8085_TAG, ADDRESS_SPACE_PROGRAM), 0x8000, 0x9fff, 0, 0, SMH_BANK(2), SMH_UNMAP);
866   memory_install_readwrite8_handler(cputag_get_address_space(machine, I8085_TAG, ADDRESS_SPACE_PROGRAM), 0xa000, 0xffff, 0, 0, SMH_BANK(3), SMH_BANK(3));
867867
868868   memory_set_bankptr(machine, 1, rom + 0x10000);
869869   memory_set_bankptr(machine, 2, rom + 0x18000);
src/mess/drivers/sms.c
r4679r4680
7474   AM_RANGE(0x0000, 0x03FF) AM_ROMBANK(1)               /* First 0x0400 part always points to first page */
7575   AM_RANGE(0x0400, 0x3FFF) AM_ROMBANK(2)               /* switchable rom bank */
7676   AM_RANGE(0x4000, 0x7FFF) AM_ROMBANK(3)               /* switchable rom bank */
77   AM_RANGE(0x8000, 0x9FFF) AM_READWRITE(SMH_BANK4, sms_cartram_w)   /* ROM bank / on-cart RAM */
78   AM_RANGE(0xA000, 0xBFFF) AM_READWRITE(SMH_BANK5, sms_cartram2_w)   /* ROM bank / on-cart RAM */
77   AM_RANGE(0x8000, 0x9FFF) AM_READWRITE(SMH_BANK(4), sms_cartram_w)   /* ROM bank / on-cart RAM */
78   AM_RANGE(0xA000, 0xBFFF) AM_READWRITE(SMH_BANK(5), sms_cartram2_w)   /* ROM bank / on-cart RAM */
7979   AM_RANGE(0xC000, 0xDFFB) AM_MIRROR(0x2000) AM_RAM         /* RAM (mirror at 0xE000) */
8080   AM_RANGE(0xDFFC, 0xDFFF) AM_RAM                  /* RAM "underneath" frame registers */
8181   AM_RANGE(0xFFFC, 0xFFFF) AM_READWRITE(sms_mapper_r, sms_mapper_w)   /* Bankswitch control */
src/mess/drivers/avigo.c
r4679r4680
333333      /* ram */
334334      case 0x01:
335335         addr = mess_ram + ((avigo_ram_bank_l & 0x07)<<14);
336         avigo_setbank(machine, 2, addr, SMH_BANK3, SMH_BANK7);
336         avigo_setbank(machine, 2, addr, SMH_BANK(3), SMH_BANK(7));
337337         break;
338338
339339      /* %111 */
r4679r4680
455455
456456
457457static ADDRESS_MAP_START( avigo_mem , ADDRESS_SPACE_PROGRAM, 8)
458   AM_RANGE(0x0000, 0x3fff) AM_READWRITE( SMH_BANK1, SMH_BANK5 )
459   AM_RANGE(0x4000, 0x7fff) AM_READWRITE( SMH_BANK2, SMH_BANK6 )
460   AM_RANGE(0x8000, 0xbfff) AM_READWRITE( SMH_BANK3, SMH_BANK7 )
461   AM_RANGE(0xc000, 0xffff) AM_READWRITE( SMH_BANK4, SMH_BANK8 )
458   AM_RANGE(0x0000, 0x3fff) AM_READWRITE( SMH_BANK(1), SMH_BANK(5) )
459   AM_RANGE(0x4000, 0x7fff) AM_READWRITE( SMH_BANK(2), SMH_BANK(6) )
460   AM_RANGE(0x8000, 0xbfff) AM_READWRITE( SMH_BANK(3), SMH_BANK(7) )
461   AM_RANGE(0xc000, 0xffff) AM_READWRITE( SMH_BANK(4), SMH_BANK(8) )
462462ADDRESS_MAP_END
463463
464464
src/mess/drivers/cybiko.c
r4679r4680
9090// 256 kbyte ram + 256 kbyte memory mapped flash
9191static ADDRESS_MAP_START( cybikov2_mem, ADDRESS_SPACE_PROGRAM, 16 )
9292   AM_RANGE_SL( 0x000000, 0x008000) AM_ROM
93   AM_RANGE_SL( 0x100000, 0x040000) AM_READ( SMH_BANK2) AM_MIRROR( 0x0C0000)
93   AM_RANGE_SL( 0x100000, 0x040000) AM_READ( SMH_BANK(2)) AM_MIRROR( 0x0C0000)
9494//  AM_RANGE_SL( 0x200000, 0x040000) AM_RAM AM_MIRROR( 0x1C0000)
9595   AM_RANGE_SL( 0x600000, 0x000002) AM_READWRITE( cybiko_lcd_r, cybiko_lcd_w)
9696   AM_RANGE_SL( 0xE00000, 0x1FDC00) AM_READ( cybiko_key_r)
r4679r4680
102102   AM_RANGE_SL( 0x100000, 0x000002) AM_READWRITE( cybiko_lcd_r, cybiko_lcd_w)
103103   AM_RANGE_SL( 0x200000, 0x000004) AM_WRITE( cybiko_unk1_w)
104104//  AM_RANGE_SL( 0x400000, 0x200000) AM_RAM
105   AM_RANGE_SL( 0x600000, 0x080000) AM_READ( SMH_BANK2)
105   AM_RANGE_SL( 0x600000, 0x080000) AM_READ( SMH_BANK(2))
106106   AM_RANGE_SL( 0x7FF800, 0x000800) AM_READ( cybiko_unk2_r)
107107   AM_RANGE_SL( 0xE00000, 0x1FDC00) AM_READ( cybiko_key_r)
108108ADDRESS_MAP_END
src/mess/drivers/pp01.c
r4679r4680
1414
1515/* Address maps */
1616static ADDRESS_MAP_START(pp01_mem, ADDRESS_SPACE_PROGRAM, 8)
17   AM_RANGE(0x0000, 0x3fff) AM_READWRITE(SMH_BANK1, SMH_BANK1)
18   AM_RANGE(0x4000, 0x7fff) AM_READWRITE(SMH_BANK2, SMH_BANK2)
19   AM_RANGE(0x8000, 0xbfff) AM_READWRITE(SMH_BANK3, SMH_ROM)
20   AM_RANGE(0xc000, 0xffff) AM_READWRITE(SMH_BANK4, SMH_BANK4)
17   AM_RANGE(0x0000, 0x3fff) AM_READWRITE(SMH_BANK(1), SMH_BANK(1))
18   AM_RANGE(0x4000, 0x7fff) AM_READWRITE(SMH_BANK(2), SMH_BANK(2))
19   AM_RANGE(0x8000, 0xbfff) AM_READWRITE(SMH_BANK(3), SMH_ROM)
20   AM_RANGE(0xc000, 0xffff) AM_READWRITE(SMH_BANK(4), SMH_BANK(4))
2121ADDRESS_MAP_END
2222
2323static ADDRESS_MAP_START( pp01_io, ADDRESS_SPACE_IO, 8 )
src/mess/drivers/ti85.c
r4679r4680
178178/* memory w/r functions */
179179
180180static ADDRESS_MAP_START( ti81_mem , ADDRESS_SPACE_PROGRAM, 8)
181   AM_RANGE(0x0000, 0x3fff) AM_READWRITE( SMH_BANK1, SMH_BANK3 )
182   AM_RANGE(0x4000, 0x7fff) AM_READWRITE( SMH_BANK2, SMH_BANK4 )
181   AM_RANGE(0x0000, 0x3fff) AM_READWRITE( SMH_BANK(1), SMH_BANK(3) )
182   AM_RANGE(0x4000, 0x7fff) AM_READWRITE( SMH_BANK(2), SMH_BANK(4) )
183183   AM_RANGE(0x8000, 0xffff) AM_RAM
184184ADDRESS_MAP_END
185185
186186static ADDRESS_MAP_START( ti85_mem , ADDRESS_SPACE_PROGRAM, 8)
187   AM_RANGE(0x0000, 0x3fff) AM_READWRITE( SMH_BANK1, SMH_BANK3 )
188   AM_RANGE(0x4000, 0x7fff) AM_READWRITE( SMH_BANK2, SMH_BANK4 )
187   AM_RANGE(0x0000, 0x3fff) AM_READWRITE( SMH_BANK(1), SMH_BANK(3) )
188   AM_RANGE(0x4000, 0x7fff) AM_READWRITE( SMH_BANK(2), SMH_BANK(4) )
189189   AM_RANGE(0x8000, 0xffff) AM_RAM
190190ADDRESS_MAP_END
191191
192192static ADDRESS_MAP_START( ti86_mem , ADDRESS_SPACE_PROGRAM, 8)
193   AM_RANGE(0x0000, 0x3fff) AM_READWRITE( SMH_BANK1, SMH_BANK5 )
194   AM_RANGE(0x4000, 0x7fff) AM_READWRITE( SMH_BANK2, SMH_BANK6 )
195   AM_RANGE(0x8000, 0xbfff) AM_READWRITE( SMH_BANK3, SMH_BANK7 )
196   AM_RANGE(0xc000, 0xffff) AM_READWRITE( SMH_BANK4, SMH_BANK8 )
193   AM_RANGE(0x0000, 0x3fff) AM_READWRITE( SMH_BANK(1), SMH_BANK(5) )
194   AM_RANGE(0x4000, 0x7fff) AM_READWRITE( SMH_BANK(2), SMH_BANK(6) )
195   AM_RANGE(0x8000, 0xbfff) AM_READWRITE( SMH_BANK(3), SMH_BANK(7) )
196   AM_RANGE(0xc000, 0xffff) AM_READWRITE( SMH_BANK(4), SMH_BANK(8) )
197197ADDRESS_MAP_END
198198
199199/* keyboard input */
src/mess/drivers/c64.c
r4679r4680
357357
358358static ADDRESS_MAP_START(c64_mem, ADDRESS_SPACE_PROGRAM, 8)
359359   AM_RANGE(0x0000, 0x7fff) AM_RAM AM_BASE(&c64_memory)
360   AM_RANGE(0x8000, 0x9fff) AM_READWRITE(SMH_BANK1, SMH_BANK2)      /* ram or external roml */
360   AM_RANGE(0x8000, 0x9fff) AM_READWRITE(SMH_BANK(1), SMH_BANK(2))      /* ram or external roml */
361361   AM_RANGE(0xa000, 0xbfff) AM_ROMBANK(3) AM_WRITEONLY            /* ram or basic rom or external romh */
362362   AM_RANGE(0xc000, 0xcfff) AM_RAM
363363   AM_RANGE(0xd000, 0xdfff) AM_READWRITE(c64_ioarea_r, c64_ioarea_w)
364   AM_RANGE(0xe000, 0xffff) AM_READWRITE(SMH_BANK4, SMH_BANK5)      /* ram or kernel rom or external romh */
364   AM_RANGE(0xe000, 0xffff) AM_READWRITE(SMH_BANK(4), SMH_BANK(5))      /* ram or kernel rom or external romh */
365365ADDRESS_MAP_END
366366
367367
src/mess/drivers/svi318.c
r4679r4680
2727#include "sv328806.lh"
2828
2929static ADDRESS_MAP_START( svi318_mem, ADDRESS_SPACE_PROGRAM, 8 )
30   AM_RANGE( 0x0000, 0x7fff) AM_READWRITE( SMH_BANK1, svi318_writemem1 )
31   AM_RANGE( 0x8000, 0xbfff) AM_READWRITE( SMH_BANK2, svi318_writemem2 )
32   AM_RANGE( 0xc000, 0xffff) AM_READWRITE( SMH_BANK3, svi318_writemem3 )
30   AM_RANGE( 0x0000, 0x7fff) AM_READWRITE( SMH_BANK(1), svi318_writemem1 )
31   AM_RANGE( 0x8000, 0xbfff) AM_READWRITE( SMH_BANK(2), svi318_writemem2 )
32   AM_RANGE( 0xc000, 0xffff) AM_READWRITE( SMH_BANK(3), svi318_writemem3 )
3333ADDRESS_MAP_END
3434
3535static ADDRESS_MAP_START( svi328_806_mem, ADDRESS_SPACE_PROGRAM, 8 )
36   AM_RANGE( 0x0000, 0x7fff) AM_READWRITE( SMH_BANK1, svi318_writemem1 )
37   AM_RANGE( 0x8000, 0xbfff) AM_READWRITE( SMH_BANK2, svi318_writemem2 )
38   AM_RANGE( 0xc000, 0xefff) AM_READWRITE( SMH_BANK3, svi318_writemem3 )
39   AM_RANGE( 0xf000, 0xffff) AM_READWRITE( SMH_BANK4, svi318_writemem4 )
36   AM_RANGE( 0x0000, 0x7fff) AM_READWRITE( SMH_BANK(1), svi318_writemem1 )
37   AM_RANGE( 0x8000, 0xbfff) AM_READWRITE( SMH_BANK(2), svi318_writemem2 )
38   AM_RANGE( 0xc000, 0xefff) AM_READWRITE( SMH_BANK(3), svi318_writemem3 )
39   AM_RANGE( 0xf000, 0xffff) AM_READWRITE( SMH_BANK(4), svi318_writemem4 )
4040ADDRESS_MAP_END
4141
4242static ADDRESS_MAP_START( svi318_io, ADDRESS_SPACE_IO, 8 )
src/mess/drivers/vc4000.c
r4679r4680
193193
194194   if (size > 0x1000)   /* 6k rom + 1k ram - Chess2 only */
195195   {
196      memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1000, 0x15ff, 0, 0, SMH_BANK1);   /* extra rom */
196      memory_install_read8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1000, 0x15ff, 0, 0, SMH_BANK(1));   /* extra rom */
197197      memory_set_bankptr(machine, 1, memory_region(machine, "maincpu") + 0x1000);
198198
199      memory_install_readwrite8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1800, 0x1bff, 0, 0, SMH_BANK3, SMH_BANK4);   /* ram */
199      memory_install_readwrite8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1800, 0x1bff, 0, 0, SMH_BANK(3), SMH_BANK(4));   /* ram */
200200      memory_set_bankptr(machine, 3, memory_region(machine, "maincpu") + 0x1800);
201201      memory_set_bankptr(machine, 4, memory_region(machine, "maincpu") + 0x1800);
202202   }
203203   else
204204   if (size > 0x0800)   /* some 4k roms have 1k of mirrored ram */
205205   {
206      memory_install_readwrite8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1000, 0x15ff, 0, 0x800, SMH_BANK1, SMH_BANK2); /* ram */
206      memory_install_readwrite8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x1000, 0x15ff, 0, 0x800, SMH_BANK(1), SMH_BANK(2)); /* ram */
207207      memory_set_bankptr(machine, 1, memory_region(machine, "maincpu") + 0x1000);
208208      memory_set_bankptr(machine, 2, memory_region(machine, "maincpu") + 0x1000);
209209   }
src/mess/drivers/bbc.c
r4679r4680
9292static ADDRESS_MAP_START(bbca_mem, ADDRESS_SPACE_PROGRAM, 8)
9393   ADDRESS_MAP_UNMAP_LOW                                 /*  Hardware marked with a 1 is not present in a Model A        */
9494
95   AM_RANGE(0x0000, 0x3fff) AM_READWRITE(SMH_BANK1      , bbc_memorya1_w         )   /*    0000-3fff                 Regular Ram                     */
96   AM_RANGE(0x4000, 0x7fff) AM_READWRITE(SMH_BANK3      , bbc_memorya1_w         )   /*    4000-7fff                 Repeat of the Regular Ram       */
95   AM_RANGE(0x0000, 0x3fff) AM_READWRITE(SMH_BANK(1)      , bbc_memorya1_w         )   /*    0000-3fff                 Regular Ram                     */
96   AM_RANGE(0x4000, 0x7fff) AM_READWRITE(SMH_BANK(3)      , bbc_memorya1_w         )   /*    4000-7fff                 Repeat of the Regular Ram       */
9797
98   AM_RANGE(0x8000, 0xbfff) AM_READWRITE(SMH_BANK4      , SMH_ROM         )   /*    8000-bfff                 Paged ROM                       */
98   AM_RANGE(0x8000, 0xbfff) AM_READWRITE(SMH_BANK(4)      , SMH_ROM         )   /*    8000-bfff                 Paged ROM                       */
9999
100   AM_RANGE(0xc000, 0xfbff) AM_READWRITE(SMH_BANK7       , SMH_ROM         )   /*    c000-fbff                 OS ROM                          */
100   AM_RANGE(0xc000, 0xfbff) AM_READWRITE(SMH_BANK(7)       , SMH_ROM         )   /*    c000-fbff                 OS ROM                          */
101101
102102   AM_RANGE(0xfc00, 0xfdff) AM_READ     (return8_FF                          )   /*    fc00-fdff                 FRED & JIM Pages                */
103103
r4679r4680
125125static ADDRESS_MAP_START(bbcb_mem, ADDRESS_SPACE_PROGRAM, 8)
126126   ADDRESS_MAP_UNMAP_LOW
127127
128   AM_RANGE(0x0000, 0x3fff) AM_READWRITE(SMH_BANK1      , bbc_memorya1_w         )   /*    0000-3fff                 Regular Ram                     */
129   AM_RANGE(0x4000, 0x7fff) AM_READWRITE(SMH_BANK3      , bbc_memoryb3_w         )   /*    4000-7fff                 Repeat of the Regular Ram       */
128   AM_RANGE(0x0000, 0x3fff) AM_READWRITE(SMH_BANK(1)      , bbc_memorya1_w         )   /*    0000-3fff                 Regular Ram                     */
129   AM_RANGE(0x4000, 0x7fff) AM_READWRITE(SMH_BANK(3)      , bbc_memoryb3_w         )   /*    4000-7fff                 Repeat of the Regular Ram       */
130130
131131
132   AM_RANGE(0x8000, 0xbfff) AM_READWRITE(SMH_BANK4       , bbc_memoryb4_w         )   /*    8000-bfff                 Paged ROM                       */
132   AM_RANGE(0x8000, 0xbfff) AM_READWRITE(SMH_BANK(4)       , bbc_memoryb4_w         )   /*    8000-bfff                 Paged ROM                       */
133133
134   AM_RANGE(0xc000, 0xfbff) AM_READWRITE(SMH_BANK7       , SMH_ROM          )   /*    c000-fbff                 OS ROM                          */
134   AM_RANGE(0xc000, 0xfbff) AM_READWRITE(SMH_BANK(7)       , SMH_ROM          )   /*    c000-fbff                 OS ROM                          */
135135
136136   AM_RANGE(0xfc00, 0xfdff) AM_READWRITE(bbc_opus_read     , bbc_opus_write   )   /*    fc00-fdff                 OPUS Disc Controller            */
137137
r4679r4680
159159static ADDRESS_MAP_START(bbcbp_mem, ADDRESS_SPACE_PROGRAM, 8)
160160   ADDRESS_MAP_UNMAP_LOW
161161
162   AM_RANGE(0x0000, 0x2fff) AM_READWRITE(SMH_BANK1      , bbc_memorybp1_w      )   /*    0000-2fff                 Regular Ram                     */
162   AM_RANGE(0x0000, 0x2fff) AM_READWRITE(SMH_BANK(1)      , bbc_memorybp1_w      )   /*    0000-2fff                 Regular Ram                     */
163163
164   AM_RANGE(0x3000, 0x7fff) AM_READWRITE(SMH_BANK2      , bbc_memorybp2_w      )   /*    3000-7fff                 Video/Shadow Ram                */
164   AM_RANGE(0x3000, 0x7fff) AM_READWRITE(SMH_BANK(2)      , bbc_memorybp2_w      )   /*    3000-7fff                 Video/Shadow Ram                */
165165
166   AM_RANGE(0x8000, 0xafff) AM_READWRITE(SMH_BANK4      , bbc_memorybp4_w      )   /*    8000-afff                 Paged ROM or 12K of RAM         */
167   AM_RANGE(0xb000, 0xbfff) AM_READWRITE(SMH_BANK6      , SMH_ROM         )   /*    b000-bfff                 Rest of paged ROM area          */
166   AM_RANGE(0x8000, 0xafff) AM_READWRITE(SMH_BANK(4)      , bbc_memorybp4_w      )   /*    8000-afff                 Paged ROM or 12K of RAM         */
167   AM_RANGE(0xb000, 0xbfff) AM_READWRITE(SMH_BANK(6)      , SMH_ROM         )   /*    b000-bfff                 Rest of paged ROM area          */
168168
169   AM_RANGE(0xc000, 0xfbff) AM_READWRITE(SMH_BANK7      , SMH_ROM         )   /*    c000-fbff                 OS ROM                          */
169   AM_RANGE(0xc000, 0xfbff) AM_READWRITE(SMH_BANK(7)      , SMH_ROM         )   /*    c000-fbff                 OS ROM                          */
170170
171171   AM_RANGE(0xfc00, 0xfdff) AM_READ    (return8_FF                     )   /*    fc00-fdff                 FRED & JIM Pages                */
172172
r4679r4680
195195static ADDRESS_MAP_START(bbcbp128_mem, ADDRESS_SPACE_PROGRAM, 8)
196196   ADDRESS_MAP_UNMAP_LOW
197197
198   AM_RANGE(0x0000, 0x2fff) AM_READWRITE(SMH_BANK1      , bbc_memorybp1_w      )   /*    0000-2fff                 Regular Ram                     */
198   AM_RANGE(0x0000, 0x2fff) AM_READWRITE(SMH_BANK(1)      , bbc_memorybp1_w      )   /*    0000-2fff                 Regular Ram                     */
199199
200   AM_RANGE(0x3000, 0x7fff) AM_READWRITE(SMH_BANK2      , bbc_memorybp2_w      )   /*    3000-7fff                 Video/Shadow Ram                */
200   AM_RANGE(0x3000, 0x7fff) AM_READWRITE(SMH_BANK(2)      , bbc_memorybp2_w      )   /*    3000-7fff                 Video/Shadow Ram                */
201201
202   AM_RANGE(0x8000, 0xafff) AM_READWRITE(SMH_BANK4      , bbc_memorybp4_128_w   )   /*    8000-afff                 Paged ROM or 12K of RAM         */
203   AM_RANGE(0xb000, 0xbfff) AM_READWRITE(SMH_BANK6      , bbc_memorybp6_128_w   )   /*    b000-bfff                 Rest of paged ROM area          */
202   AM_RANGE(0x8000, 0xafff) AM_READWRITE(SMH_BANK(4)      , bbc_memorybp4_128_w   )   /*    8000-afff                 Paged ROM or 12K of RAM         */
203   AM_RANGE(0xb000, 0xbfff) AM_READWRITE(SMH_BANK(6)      , bbc_memorybp6_128_w   )   /*    b000-bfff                 Rest of paged ROM area          */
204204
205   AM_RANGE(0xc000, 0xfbff) AM_READWRITE(SMH_BANK7      , SMH_ROM         )   /*    c000-fbff                 OS ROM                          */
205   AM_RANGE(0xc000, 0xfbff) AM_READWRITE(SMH_BANK(7)      , SMH_ROM         )   /*    c000-fbff                 OS ROM                          */
206206
207207   AM_RANGE(0xfc00, 0xfdff) AM_READ    (return8_FF                     )   /*    fc00-fdff                 FRED & JIM Pages                */
208208
r4679r4680
255255
256256static ADDRESS_MAP_START(bbcm_mem, ADDRESS_SPACE_PROGRAM, 8)
257257
258   AM_RANGE(0x0000, 0x2fff) AM_READWRITE(SMH_BANK1      , bbc_memorybm1_w      )   /*    0000-2fff                 Regular Ram                     */
258   AM_RANGE(0x0000, 0x2fff) AM_READWRITE(SMH_BANK(1)      , bbc_memorybm1_w      )   /*    0000-2fff                 Regular Ram                     */
259259
260   AM_RANGE(0x3000, 0x7fff) AM_READWRITE(SMH_BANK2      , bbc_memorybm2_w      )   /*    3000-7fff                 Video/Shadow Ram                */
260   AM_RANGE(0x3000, 0x7fff) AM_READWRITE(SMH_BANK(2)      , bbc_memorybm2_w      )   /*    3000-7fff                 Video/Shadow Ram                */
261261
262   AM_RANGE(0x8000, 0x8fff) AM_READWRITE(SMH_BANK4      , bbc_memorybm4_w      )   /*    8000-8fff                 Paged ROM/RAM or 4K of RAM ANDY */
263   AM_RANGE(0x9000, 0xbfff) AM_READWRITE(SMH_BANK5      , bbc_memorybm5_w      )   /*    9000-bfff                 Rest of paged ROM/RAM area      */
262   AM_RANGE(0x8000, 0x8fff) AM_READWRITE(SMH_BANK(4)      , bbc_memorybm4_w      )   /*    8000-8fff                 Paged ROM/RAM or 4K of RAM ANDY */
263   AM_RANGE(0x9000, 0xbfff) AM_READWRITE(SMH_BANK(5)      , bbc_memorybm5_w      )   /*    9000-bfff                 Rest of paged ROM/RAM area      */
264264
265   AM_RANGE(0xc000, 0xdfff) AM_READWRITE(SMH_BANK7      , bbc_memorybm7_w      )   /*    c000-dfff                 OS ROM or 8K of RAM       HAZEL */
265   AM_RANGE(0xc000, 0xdfff) AM_READWRITE(SMH_BANK(7)      , bbc_memorybm7_w      )   /*    c000-dfff                 OS ROM or 8K of RAM       HAZEL */
266266   AM_RANGE(0xe000, 0xfbff) AM_ROM AM_REGION("user1", 0x42000)            /*    e000-fbff                 OS ROM                          */
267267
268   AM_RANGE(0xfc00, 0xfeff) AM_READWRITE(SMH_BANK8         , bbcm_w         )   /*    this is now processed directly because it can be ROM or hardware */
268   AM_RANGE(0xfc00, 0xfeff) AM_READWRITE(SMH_BANK(8)         , bbcm_w         )   /*    this is now processed directly because it can be ROM or hardware */
269269
270270   //AM_RANGE(0xfc00, 0xfeff) AM_READWRITE(bbcm_r         , bbcm_w         )   /*    this is now processed directly because it can be ROM or hardware */
271271   /*
272    AM_RANGE(0xfc00, 0xfdff) AM_READWRITE(SMH_BANK2        , SMH_ROM          )       fc00-fdff                   FRED & JIM Pages
272    AM_RANGE(0xfc00, 0xfdff) AM_READWRITE(SMH_BANK(2)        , SMH_ROM          )       fc00-fdff                   FRED & JIM Pages
273273
274274                                                                                          fe00-feff                 Shiela Address Page
275275    AM_RANGE(0xfe00, 0xfe07) AM_READWRITE(BBC_6845_r        , BBC_6845_w        )         fe00-fe07  6845 CRTC      Video controller
src/mess/drivers/vtech2.c
r4679r4680
7373#include "formats/vt_cas.h"
7474
7575static ADDRESS_MAP_START(vtech2_mem, ADDRESS_SPACE_PROGRAM, 8 )
76   AM_RANGE(0x0000, 0x3fff) AM_READWRITE(SMH_BANK1, SMH_BANK1)
77   AM_RANGE(0x4000, 0x7fff) AM_READWRITE(SMH_BANK2, SMH_BANK2)
78   AM_RANGE(0x8000, 0xbfff) AM_READWRITE(SMH_BANK3, SMH_BANK3)
79   AM_RANGE(0xc000, 0xffff) AM_READWRITE(SMH_BANK4, SMH_BANK4)
76   AM_RANGE(0x0000, 0x3fff) AM_READWRITE(SMH_BANK(1), SMH_BANK(1))
77   AM_RANGE(0x4000, 0x7fff) AM_READWRITE(SMH_BANK(2), SMH_BANK(2))
78   AM_RANGE(0x8000, 0xbfff) AM_READWRITE(SMH_BANK(3), SMH_BANK(3))
79   AM_RANGE(0xc000, 0xffff) AM_READWRITE(SMH_BANK(4), SMH_BANK(4))
8080ADDRESS_MAP_END
8181
8282static ADDRESS_MAP_START(vtech2_io, ADDRESS_SPACE_IO, 8)
src/mess/drivers/kc.c
r4679r4680
118118ADDRESS_MAP_END
119119
120120static ADDRESS_MAP_START(kc85_4_mem, ADDRESS_SPACE_PROGRAM, 8)
121   AM_RANGE(0x0000, 0x3fff) AM_READWRITE(SMH_BANK1, SMH_BANK7)
122   AM_RANGE(0x4000, 0x7fff) AM_READWRITE(SMH_BANK2, SMH_BANK8)
123   AM_RANGE(0x8000, 0xa7ff) AM_READWRITE(SMH_BANK3, SMH_BANK9)
121   AM_RANGE(0x0000, 0x3fff) AM_READWRITE(SMH_BANK(1), SMH_BANK(7))
122   AM_RANGE(0x4000, 0x7fff) AM_READWRITE(SMH_BANK(2), SMH_BANK(8))
123   AM_RANGE(0x8000, 0xa7ff) AM_READWRITE(SMH_BANK(3), SMH_BANK(9))
124124//  AM_RANGE(0xa800, 0xbfff) AM_RAM
125   AM_RANGE(0xa800, 0xbfff) AM_READWRITE(SMH_BANK4, SMH_BANK10)
126   AM_RANGE(0xc000, 0xdfff) AM_READ(SMH_BANK5)
127   AM_RANGE(0xe000, 0xffff) AM_READ(SMH_BANK6)
125   AM_RANGE(0xa800, 0xbfff) AM_READWRITE(SMH_BANK(4), SMH_BANK(10))
126   AM_RANGE(0xc000, 0xdfff) AM_READ(SMH_BANK(5))
127   AM_RANGE(0xe000, 0xffff) AM_READ(SMH_BANK(6))
128128ADDRESS_MAP_END
129129
130130static ADDRESS_MAP_START(kc85_3_mem, ADDRESS_SPACE_PROGRAM, 8)
131   AM_RANGE(0x0000, 0x3fff) AM_READWRITE(SMH_BANK1, SMH_BANK6)
132   AM_RANGE(0x4000, 0x7fff) AM_READWRITE(SMH_BANK2, SMH_BANK7)
133   AM_RANGE(0x8000, 0xbfff) AM_READWRITE(SMH_BANK3, SMH_BANK8)
134   AM_RANGE(0xc000, 0xdfff) AM_READ(SMH_BANK4)
135   AM_RANGE(0xe000, 0xffff) AM_READ(SMH_BANK5)
131   AM_RANGE(0x0000, 0x3fff) AM_READWRITE(SMH_BANK(1), SMH_BANK(6))
132   AM_RANGE(0x4000, 0x7fff) AM_READWRITE(SMH_BANK(2), SMH_BANK(7))
133   AM_RANGE(0x8000, 0xbfff) AM_READWRITE(SMH_BANK(3), SMH_BANK(8))
134   AM_RANGE(0xc000, 0xdfff) AM_READ(SMH_BANK(4))
135   AM_RANGE(0xe000, 0xffff) AM_READ(SMH_BANK(5))
136136ADDRESS_MAP_END
137137
138138static READ8_HANDLER(kc85_3_port_r)
src/ldplayer/ldplayer.c
r4679r4680
122122               chderr = chd_open_file(mame_core_file(image_file), CHD_OPEN_READ, NULL, &image_chd);
123123               if (chderr == CHDERR_NONE)
124124               {
125                  set_disk_handle("laserdisc", image_file, image_chd);
125                  set_disk_handle(device->machine, "laserdisc", image_file, image_chd);
126126                  filename = astring_dupc(dir->name);
127127                  add_exit_callback(device->machine, free_string);
128128                  break;
docs/messnew.txt
r4679r4680
9292
9393Source Changes:
9494----------------
95- The core is based on MAME 0.131u1.  This incorporates all features of the
96  update to this core.  [MAME team]
97
9598- Converted the WAVE sound device to stereo. [Curt Coder]
9699
97100

Previous 15994 Revisions Next


© 1998-2018 The MESS Team