summaryrefslogtreecommitdiffstats
path: root/src/mame
diff options
context:
space:
mode:
authorGravatarGravatar Aaron Giles <aaron@aarongiles.com>2007-12-17 15:19:59 +0000
committerGravatarGravatar Aaron Giles <aaron@aarongiles.com>2007-12-17 15:19:59 +0000
commit7b77f1218624ea26dbb2efd85a19f795f5d4e02e (patch) (github)
tree19209304095572b4fd61c2a2d6a5aa75c4e471ad /src/mame
parent3da7f476068b3ffef713218ba2fc1bd5030f2c38 (diff)
downloadmame-7b77f1218624ea26dbb2efd85a19f795f5d4e02e.tar.bz2
mame-7b77f1218624ea26dbb2efd85a19f795f5d4e02e.zip
Initial checkin of MAME 0.121.mame0121
Diffstat (limited to 'src/mame')
-rw-r--r--src/mame/audio/8080bw.c1112
-rw-r--r--src/mame/audio/amiga.c280
-rw-r--r--src/mame/audio/asteroid.c323
-rw-r--r--src/mame/audio/astinvad.c138
-rw-r--r--src/mame/audio/astrof.c255
-rw-r--r--src/mame/audio/atarifb.c208
-rw-r--r--src/mame/audio/atarijsa.c939
-rw-r--r--src/mame/audio/atarijsa.h72
-rw-r--r--src/mame/audio/attckufo.c262
-rw-r--r--src/mame/audio/avalnche.c128
-rw-r--r--src/mame/audio/aztarac.c55
-rw-r--r--src/mame/audio/berzerk.c146
-rw-r--r--src/mame/audio/blockade.c71
-rw-r--r--src/mame/audio/bsktball.c135
-rw-r--r--src/mame/audio/bzone.c285
-rw-r--r--src/mame/audio/cage.c668
-rw-r--r--src/mame/audio/cage.h20
-rw-r--r--src/mame/audio/canyon.c212
-rw-r--r--src/mame/audio/carnival.c317
-rw-r--r--src/mame/audio/cchasm.c188
-rw-r--r--src/mame/audio/cclimber.c91
-rw-r--r--src/mame/audio/cinemat.c1608
-rw-r--r--src/mame/audio/circus.c279
-rw-r--r--src/mame/audio/cliffhgr.c50
-rw-r--r--src/mame/audio/cps3.c156
-rw-r--r--src/mame/audio/crbaloon.c80
-rw-r--r--src/mame/audio/cyberbal.c166
-rw-r--r--src/mame/audio/dcs.c2312
-rw-r--r--src/mame/audio/dcs.h34
-rw-r--r--src/mame/audio/depthch.c93
-rw-r--r--src/mame/audio/dkong.c1174
-rw-r--r--src/mame/audio/dragrace.c191
-rw-r--r--src/mame/audio/exidy.c851
-rw-r--r--src/mame/audio/exidy440.c981
-rw-r--r--src/mame/audio/fghtbskt.c27
-rw-r--r--src/mame/audio/firetrk.c707
-rw-r--r--src/mame/audio/flower.c285
-rw-r--r--src/mame/audio/galaga.c373
-rw-r--r--src/mame/audio/galaxian.c533
-rw-r--r--src/mame/audio/geebee.c130
-rw-r--r--src/mame/audio/gomoku.c267
-rw-r--r--src/mame/audio/gorf.c186
-rw-r--r--src/mame/audio/gottlieb.c313
-rw-r--r--src/mame/audio/gotya.c79
-rw-r--r--src/mame/audio/grchamp.c62
-rw-r--r--src/mame/audio/gridlee.c172
-rw-r--r--src/mame/audio/gyruss.c87
-rw-r--r--src/mame/audio/harddriv.c398
-rw-r--r--src/mame/audio/hitme.c80
-rw-r--r--src/mame/audio/invinco.c113
-rw-r--r--src/mame/audio/irem.c179
-rw-r--r--src/mame/audio/irem.h9
-rw-r--r--src/mame/audio/jaguar.c475
-rw-r--r--src/mame/audio/laserbat.c107
-rw-r--r--src/mame/audio/leland.c2150
-rw-r--r--src/mame/audio/llander.c95
-rw-r--r--src/mame/audio/m72.c208
-rw-r--r--src/mame/audio/m72.h20
-rw-r--r--src/mame/audio/mario.c64
-rw-r--r--src/mame/audio/mcr.c950
-rw-r--r--src/mame/audio/mcr.h72
-rw-r--r--src/mame/audio/meadows.c125
-rw-r--r--src/mame/audio/mw8080bw.c4064
-rw-r--r--src/mame/audio/n8080.c605
-rw-r--r--src/mame/audio/namco54.c132
-rw-r--r--src/mame/audio/namco54.h20
-rw-r--r--src/mame/audio/namcoc7x.c175
-rw-r--r--src/mame/audio/namcoc7x.h56
-rw-r--r--src/mame/audio/nitedrvr.c146
-rw-r--r--src/mame/audio/orbit.c130
-rw-r--r--src/mame/audio/phoenix.c425
-rw-r--r--src/mame/audio/pleiads.c658
-rw-r--r--src/mame/audio/polepos.c344
-rw-r--r--src/mame/audio/polyplay.c72
-rw-r--r--src/mame/audio/poolshrk.c177
-rw-r--r--src/mame/audio/pulsar.c189
-rw-r--r--src/mame/audio/qix.c78
-rw-r--r--src/mame/audio/redalert.c121
-rw-r--r--src/mame/audio/redbaron.c213
-rw-r--r--src/mame/audio/rockola.c943
-rw-r--r--src/mame/audio/scramble.c254
-rw-r--r--src/mame/audio/segag80r.c992
-rw-r--r--src/mame/audio/segag80v.c326
-rw-r--r--src/mame/audio/segasnd.c938
-rw-r--r--src/mame/audio/segasnd.h22
-rw-r--r--src/mame/audio/seibu.c585
-rw-r--r--src/mame/audio/seibu.h181
-rw-r--r--src/mame/audio/senjyo.c88
-rw-r--r--src/mame/audio/skydiver.c146
-rw-r--r--src/mame/audio/snes.c1348
-rw-r--r--src/mame/audio/spacefb.c96
-rw-r--r--src/mame/audio/spiders.c207
-rw-r--r--src/mame/audio/sprint2.c405
-rw-r--r--src/mame/audio/sprint4.c308
-rw-r--r--src/mame/audio/sprint4.h31
-rw-r--r--src/mame/audio/starwars.c247
-rw-r--r--src/mame/audio/subs.c146
-rw-r--r--src/mame/audio/suna8.c45
-rw-r--r--src/mame/audio/system16.c115
-rw-r--r--src/mame/audio/t5182.c289
-rw-r--r--src/mame/audio/t5182.h14
-rw-r--r--src/mame/audio/taito_en.c273
-rw-r--r--src/mame/audio/taito_en.h28
-rw-r--r--src/mame/audio/taitosnd.c295
-rw-r--r--src/mame/audio/taitosnd.h27
-rw-r--r--src/mame/audio/tank8.c267
-rw-r--r--src/mame/audio/targ.c161
-rw-r--r--src/mame/audio/tiamc1.c314
-rw-r--r--src/mame/audio/timeplt.c138
-rw-r--r--src/mame/audio/timeplt.h6
-rw-r--r--src/mame/audio/toaplan2.c146
-rw-r--r--src/mame/audio/trackfld.c131
-rw-r--r--src/mame/audio/triplhnt.c186
-rw-r--r--src/mame/audio/turbo.c737
-rw-r--r--src/mame/audio/vicdual.c570
-rw-r--r--src/mame/audio/videopin.c99
-rw-r--r--src/mame/audio/warpwarp.c221
-rw-r--r--src/mame/audio/williams.c647
-rw-r--r--src/mame/audio/williams.h22
-rw-r--r--src/mame/audio/wiping.c249
-rw-r--r--src/mame/audio/wow.c181
-rw-r--r--src/mame/audio/zaxxon.c262
-rw-r--r--src/mame/drivers/1942.c442
-rw-r--r--src/mame/drivers/1943.c464
-rw-r--r--src/mame/drivers/1945kiii.c309
-rw-r--r--src/mame/drivers/20pacgal.c289
-rw-r--r--src/mame/drivers/2mindril.c258
-rw-r--r--src/mame/drivers/39in1.c58
-rw-r--r--src/mame/drivers/40love.c1307
-rw-r--r--src/mame/drivers/4enraya.c216
-rw-r--r--src/mame/drivers/8080bw.c3246
-rw-r--r--src/mame/drivers/88games.c563
-rw-r--r--src/mame/drivers/ace.c363
-rw-r--r--src/mame/drivers/acefruit.c704
-rw-r--r--src/mame/drivers/acommand.c587
-rw-r--r--src/mame/drivers/actfancr.c692
-rw-r--r--src/mame/drivers/adp.c239
-rw-r--r--src/mame/drivers/aeroboto.c355
-rw-r--r--src/mame/drivers/aerofgt.c2492
-rw-r--r--src/mame/drivers/afega.c1928
-rw-r--r--src/mame/drivers/airbustr.c763
-rw-r--r--src/mame/drivers/ajax.c439
-rw-r--r--src/mame/drivers/aladbl.c164
-rw-r--r--src/mame/drivers/aleck64.c552
-rw-r--r--src/mame/drivers/alg.c863
-rw-r--r--src/mame/drivers/aliens.c542
-rw-r--r--src/mame/drivers/alpha68k.c3410
-rw-r--r--src/mame/drivers/ambush.c285
-rw-r--r--src/mame/drivers/amidar.c608
-rw-r--r--src/mame/drivers/ampoker.c1011
-rw-r--r--src/mame/drivers/amspdwy.c399
-rw-r--r--src/mame/drivers/angelkds.c766
-rw-r--r--src/mame/drivers/appoooh.c622
-rw-r--r--src/mame/drivers/aquarium.c444
-rw-r--r--src/mame/drivers/arabian.c441
-rw-r--r--src/mame/drivers/arcadecl.c435
-rw-r--r--src/mame/drivers/arcadia.c736
-rw-r--r--src/mame/drivers/argus.c1163
-rw-r--r--src/mame/drivers/arkanoid.c1177
-rw-r--r--src/mame/drivers/armedf.c1429
-rw-r--r--src/mame/drivers/artmagic.c903
-rw-r--r--src/mame/drivers/ashnojoe.c422
-rw-r--r--src/mame/drivers/asterix.c395
-rw-r--r--src/mame/drivers/asteroid.c948
-rw-r--r--src/mame/drivers/astinvad.c373
-rw-r--r--src/mame/drivers/astrocde.c1786
-rw-r--r--src/mame/drivers/astrof.c1043
-rw-r--r--src/mame/drivers/asuka.c1426
-rw-r--r--src/mame/drivers/atarifb.c782
-rw-r--r--src/mame/drivers/atarig1.c976
-rw-r--r--src/mame/drivers/atarig42.c788
-rw-r--r--src/mame/drivers/atarigt.c1136
-rw-r--r--src/mame/drivers/atarigx2.c2118
-rw-r--r--src/mame/drivers/atarisy1.c2246
-rw-r--r--src/mame/drivers/atarisy2.c3422
-rw-r--r--src/mame/drivers/ataxx.c848
-rw-r--r--src/mame/drivers/atetris.c504
-rw-r--r--src/mame/drivers/attckufo.c172
-rw-r--r--src/mame/drivers/avalnche.c297
-rw-r--r--src/mame/drivers/aztarac.c248
-rw-r--r--src/mame/drivers/backfire.c701
-rw-r--r--src/mame/drivers/badlands.c537
-rw-r--r--src/mame/drivers/bagman.c957
-rw-r--r--src/mame/drivers/balsente.c2470
-rw-r--r--src/mame/drivers/bankp.c377
-rw-r--r--src/mame/drivers/baraduke.c614
-rw-r--r--src/mame/drivers/batman.c349
-rw-r--r--src/mame/drivers/battlane.c382
-rw-r--r--src/mame/drivers/battlera.c375
-rw-r--r--src/mame/drivers/battlex.c298
-rw-r--r--src/mame/drivers/battlnts.c492
-rw-r--r--src/mame/drivers/bbusters.c938
-rw-r--r--src/mame/drivers/beaminv.c376
-rw-r--r--src/mame/drivers/beathead.c549
-rw-r--r--src/mame/drivers/beezer.c170
-rw-r--r--src/mame/drivers/berzerk.c896
-rw-r--r--src/mame/drivers/bestleag.c375
-rw-r--r--src/mame/drivers/bfcobra.c1622
-rw-r--r--src/mame/drivers/bfm_sc2.c3446
-rw-r--r--src/mame/drivers/bigevglf.c593
-rw-r--r--src/mame/drivers/bigfghtr.c626
-rw-r--r--src/mame/drivers/bigstrkb.c293
-rw-r--r--src/mame/drivers/bionicc.c550
-rw-r--r--src/mame/drivers/bishi.c345
-rw-r--r--src/mame/drivers/bishjan.c489
-rw-r--r--src/mame/drivers/bking2.c707
-rw-r--r--src/mame/drivers/bladestl.c522
-rw-r--r--src/mame/drivers/blktiger.c451
-rw-r--r--src/mame/drivers/blmbycar.c569
-rw-r--r--src/mame/drivers/blockade.c584
-rw-r--r--src/mame/drivers/blockhl.c360
-rw-r--r--src/mame/drivers/blockout.c497
-rw-r--r--src/mame/drivers/bloodbro.c724
-rw-r--r--src/mame/drivers/blstroid.c440
-rw-r--r--src/mame/drivers/blueprnt.c406
-rw-r--r--src/mame/drivers/bmcbowl.c553
-rw-r--r--src/mame/drivers/bnstars.c1489
-rw-r--r--src/mame/drivers/bogeyman.c291
-rw-r--r--src/mame/drivers/bombjack.c443
-rw-r--r--src/mame/drivers/boogwing.c478
-rw-r--r--src/mame/drivers/bottom9.c629
-rw-r--r--src/mame/drivers/boxer.c356
-rw-r--r--src/mame/drivers/brkthru.c680
-rw-r--r--src/mame/drivers/bsktball.c334
-rw-r--r--src/mame/drivers/btime.c1884
-rw-r--r--src/mame/drivers/btoads.c387
-rw-r--r--src/mame/drivers/bublbobl.c1353
-rw-r--r--src/mame/drivers/buggychl.c543
-rw-r--r--src/mame/drivers/bwidow.c923
-rw-r--r--src/mame/drivers/bwing.c628
-rw-r--r--src/mame/drivers/bzone.c840
-rw-r--r--src/mame/drivers/cabal.c863
-rw-r--r--src/mame/drivers/calorie.c472
-rw-r--r--src/mame/drivers/canyon.c325
-rw-r--r--src/mame/drivers/capbowl.c509
-rw-r--r--src/mame/drivers/cardline.c250
-rw-r--r--src/mame/drivers/carjmbre.c252
-rw-r--r--src/mame/drivers/carpolo.c325
-rw-r--r--src/mame/drivers/carrera.c338
-rw-r--r--src/mame/drivers/cave.c4511
-rw-r--r--src/mame/drivers/cball.c249
-rw-r--r--src/mame/drivers/cbasebal.c324
-rw-r--r--src/mame/drivers/cbuster.c591
-rw-r--r--src/mame/drivers/ccastles.c660
-rw-r--r--src/mame/drivers/cchasm.c286
-rw-r--r--src/mame/drivers/cclimber.c1643
-rw-r--r--src/mame/drivers/centiped.c1846
-rw-r--r--src/mame/drivers/chaknpop.c358
-rw-r--r--src/mame/drivers/cham24.c298
-rw-r--r--src/mame/drivers/champbas.c446
-rw-r--r--src/mame/drivers/champbwl.c385
-rw-r--r--src/mame/drivers/changela.c572
-rw-r--r--src/mame/drivers/cheekyms.c183
-rw-r--r--src/mame/drivers/cherrym.c430
-rw-r--r--src/mame/drivers/cherrym2.c428
-rw-r--r--src/mame/drivers/chinagat.c845
-rw-r--r--src/mame/drivers/chinsan.c535
-rw-r--r--src/mame/drivers/chqflag.c485
-rw-r--r--src/mame/drivers/cidelsa.c754
-rw-r--r--src/mame/drivers/cinemat.c1505
-rw-r--r--src/mame/drivers/circus.c542
-rw-r--r--src/mame/drivers/circusc.c520
-rw-r--r--src/mame/drivers/cischeat.c3214
-rw-r--r--src/mame/drivers/citycon.c368
-rw-r--r--src/mame/drivers/clayshoo.c344
-rw-r--r--src/mame/drivers/cliffhgr.c842
-rw-r--r--src/mame/drivers/cloak.c604
-rw-r--r--src/mame/drivers/cloud9.c555
-rw-r--r--src/mame/drivers/clshroad.c526
-rw-r--r--src/mame/drivers/cninja.c1841
-rw-r--r--src/mame/drivers/cntsteer.c970
-rw-r--r--src/mame/drivers/coinmstr.c823
-rw-r--r--src/mame/drivers/cojag.c1579
-rw-r--r--src/mame/drivers/combatsc.c934
-rw-r--r--src/mame/drivers/comebaby.c106
-rw-r--r--src/mame/drivers/commando.c548
-rw-r--r--src/mame/drivers/compgolf.c311
-rw-r--r--src/mame/drivers/contra.c456
-rw-r--r--src/mame/drivers/coolpool.c997
-rw-r--r--src/mame/drivers/coolridr.c253
-rw-r--r--src/mame/drivers/cop01.c618
-rw-r--r--src/mame/drivers/copsnrob.c324
-rw-r--r--src/mame/drivers/cosmic.c1529
-rw-r--r--src/mame/drivers/couple.c552
-rw-r--r--src/mame/drivers/cowrace.c220
-rw-r--r--src/mame/drivers/cps1.c7471
-rw-r--r--src/mame/drivers/cps2.c7444
-rw-r--r--src/mame/drivers/cps3.c3286
-rw-r--r--src/mame/drivers/crbaloon.c418
-rw-r--r--src/mame/drivers/crgolf.c607
-rw-r--r--src/mame/drivers/crimfght.c529
-rw-r--r--src/mame/drivers/crospang.c672
-rw-r--r--src/mame/drivers/crshrace.c757
-rw-r--r--src/mame/drivers/crystal.c926
-rw-r--r--src/mame/drivers/cshooter.c762
-rw-r--r--src/mame/drivers/csk.c714
-rw-r--r--src/mame/drivers/cubocd32.c400
-rw-r--r--src/mame/drivers/cultures.c452
-rw-r--r--src/mame/drivers/cvs.c1483
-rw-r--r--src/mame/drivers/cyberbal.c1045
-rw-r--r--src/mame/drivers/cybertnk.c690
-rw-r--r--src/mame/drivers/dacholer.c422
-rw-r--r--src/mame/drivers/dambustr.c271
-rw-r--r--src/mame/drivers/darius.c1266
-rw-r--r--src/mame/drivers/darkhors.c684
-rw-r--r--src/mame/drivers/darkmist.c500
-rw-r--r--src/mame/drivers/darkseal.c509
-rw-r--r--src/mame/drivers/dassault.c872
-rw-r--r--src/mame/drivers/dblewing.c646
-rw-r--r--src/mame/drivers/dbz.c585
-rw-r--r--src/mame/drivers/dcheese.c612
-rw-r--r--src/mame/drivers/dcon.c421
-rw-r--r--src/mame/drivers/dday.c364
-rw-r--r--src/mame/drivers/ddayjlc.c578
-rw-r--r--src/mame/drivers/ddealer.c269
-rw-r--r--src/mame/drivers/ddenlovr.c8511
-rw-r--r--src/mame/drivers/ddragon.c1914
-rw-r--r--src/mame/drivers/ddragon3.c815
-rw-r--r--src/mame/drivers/ddrible.c428
-rw-r--r--src/mame/drivers/ddz.c94
-rw-r--r--src/mame/drivers/deadang.c411
-rw-r--r--src/mame/drivers/dec0.c2382
-rw-r--r--src/mame/drivers/dec8.c3437
-rw-r--r--src/mame/drivers/deco156.c703
-rw-r--r--src/mame/drivers/deco32.c3288
-rw-r--r--src/mame/drivers/deco_mlc.c749
-rw-r--r--src/mame/drivers/decocass.c1187
-rw-r--r--src/mame/drivers/deniam.c492
-rw-r--r--src/mame/drivers/destroyr.c385
-rw-r--r--src/mame/drivers/dgpix.c606
-rw-r--r--src/mame/drivers/dietgo.c368
-rw-r--r--src/mame/drivers/discoboy.c569
-rw-r--r--src/mame/drivers/diverboy.c258
-rw-r--r--src/mame/drivers/djboy.c1046
-rw-r--r--src/mame/drivers/djmain.c1967
-rw-r--r--src/mame/drivers/dkong.c2962
-rw-r--r--src/mame/drivers/dlair.c1103
-rw-r--r--src/mame/drivers/dmndrby.c290
-rw-r--r--src/mame/drivers/docastle.c1068
-rw-r--r--src/mame/drivers/dogfgt.c349
-rw-r--r--src/mame/drivers/dominob.c306
-rw-r--r--src/mame/drivers/dooyong.c2013
-rw-r--r--src/mame/drivers/dorachan.c266
-rw-r--r--src/mame/drivers/dotrikun.c106
-rw-r--r--src/mame/drivers/dragrace.c375
-rw-r--r--src/mame/drivers/dreamwld.c524
-rw-r--r--src/mame/drivers/drgnmst.c529
-rw-r--r--src/mame/drivers/dribling.c377
-rw-r--r--src/mame/drivers/drmicro.c302
-rw-r--r--src/mame/drivers/drtomy.c306
-rw-r--r--src/mame/drivers/dunhuang.c730
-rw-r--r--src/mame/drivers/dwarfd.c782
-rw-r--r--src/mame/drivers/dynadice.c263
-rw-r--r--src/mame/drivers/dynax.c6070
-rw-r--r--src/mame/drivers/dynduke.c524
-rw-r--r--src/mame/drivers/egghunt.c443
-rw-r--r--src/mame/drivers/embargo.c279
-rw-r--r--src/mame/drivers/enigma2.c671
-rw-r--r--src/mame/drivers/eolith.c879
-rw-r--r--src/mame/drivers/eolith16.c258
-rw-r--r--src/mame/drivers/eolithsp.c101
-rw-r--r--src/mame/drivers/epos.c620
-rw-r--r--src/mame/drivers/eprom.c600
-rw-r--r--src/mame/drivers/equites.c1445
-rw-r--r--src/mame/drivers/ertictac.c456
-rw-r--r--src/mame/drivers/esd16.c980
-rw-r--r--src/mame/drivers/esh.c378
-rw-r--r--src/mame/drivers/espial.c443
-rw-r--r--src/mame/drivers/ettrivia.c380
-rw-r--r--src/mame/drivers/exctsccr.c615
-rw-r--r--src/mame/drivers/exedexes.c353
-rw-r--r--src/mame/drivers/exerion.c489
-rw-r--r--src/mame/drivers/exidy.c1469
-rw-r--r--src/mame/drivers/exidy440.c2087
-rw-r--r--src/mame/drivers/expro02.c490
-rw-r--r--src/mame/drivers/exprraid.c619
-rw-r--r--src/mame/drivers/exterm.c565
-rw-r--r--src/mame/drivers/exzisus.c413
-rw-r--r--src/mame/drivers/f-32.c244
-rw-r--r--src/mame/drivers/f1gp.c791
-rw-r--r--src/mame/drivers/fantland.c1123
-rw-r--r--src/mame/drivers/fastfred.c908
-rw-r--r--src/mame/drivers/fastlane.c340
-rw-r--r--src/mame/drivers/fcombat.c476
-rw-r--r--src/mame/drivers/fcrash.c387
-rw-r--r--src/mame/drivers/fgoal.c460
-rw-r--r--src/mame/drivers/filetto.c794
-rw-r--r--src/mame/drivers/finalizr.c508
-rw-r--r--src/mame/drivers/findout.c683
-rw-r--r--src/mame/drivers/firebeat.c2413
-rw-r--r--src/mame/drivers/firetrap.c784
-rw-r--r--src/mame/drivers/firetrk.c1213
-rw-r--r--src/mame/drivers/fitfight.c1007
-rw-r--r--src/mame/drivers/flkatck.c348
-rw-r--r--src/mame/drivers/flower.c363
-rw-r--r--src/mame/drivers/flstory.c1020
-rw-r--r--src/mame/drivers/flyball.c311
-rw-r--r--src/mame/drivers/foodf.c496
-rw-r--r--src/mame/drivers/fortecar.c177
-rw-r--r--src/mame/drivers/freekick.c1056
-rw-r--r--src/mame/drivers/frogger.c369
-rw-r--r--src/mame/drivers/fromanc2.c967
-rw-r--r--src/mame/drivers/fromance.c1390
-rw-r--r--src/mame/drivers/funkybee.c413
-rw-r--r--src/mame/drivers/funkyjet.c472
-rw-r--r--src/mame/drivers/funworld.c2031
-rw-r--r--src/mame/drivers/funybubl.c345
-rw-r--r--src/mame/drivers/fuukifg2.c783
-rw-r--r--src/mame/drivers/fuukifg3.c741
-rw-r--r--src/mame/drivers/gaelco.c1337
-rw-r--r--src/mame/drivers/gaelco2.c1384
-rw-r--r--src/mame/drivers/gaelco3d.c1156
-rw-r--r--src/mame/drivers/gaiden.c1537
-rw-r--r--src/mame/drivers/galaga.c3124
-rw-r--r--src/mame/drivers/galaxia.c190
-rw-r--r--src/mame/drivers/galaxian.c7070
-rw-r--r--src/mame/drivers/galivan.c1046
-rw-r--r--src/mame/drivers/galpani2.c888
-rw-r--r--src/mame/drivers/galpani3.c436
-rw-r--r--src/mame/drivers/galpanic.c1355
-rw-r--r--src/mame/drivers/galspnbl.c399
-rw-r--r--src/mame/drivers/gamecstl.c524
-rw-r--r--src/mame/drivers/gameplan.c1583
-rw-r--r--src/mame/drivers/gaplus.c1060
-rw-r--r--src/mame/drivers/gauntlet.c1730
-rw-r--r--src/mame/drivers/gberet.c695
-rw-r--r--src/mame/drivers/gbusters.c455
-rw-r--r--src/mame/drivers/gcpinbal.c444
-rw-r--r--src/mame/drivers/gdrawpkr.c700
-rw-r--r--src/mame/drivers/genesis.c814
-rw-r--r--src/mame/drivers/getrivia.c751
-rw-r--r--src/mame/drivers/ghosteo.c581
-rw-r--r--src/mame/drivers/gijoe.c462
-rw-r--r--src/mame/drivers/ginganin.c482
-rw-r--r--src/mame/drivers/gladiatr.c1047
-rw-r--r--src/mame/drivers/glass.c342
-rw-r--r--src/mame/drivers/gng.c646
-rw-r--r--src/mame/drivers/go2000.c205
-rw-r--r--src/mame/drivers/goal92.c416
-rw-r--r--src/mame/drivers/goindol.c448
-rw-r--r--src/mame/drivers/goldstar.c468
-rw-r--r--src/mame/drivers/gomoku.c231
-rw-r--r--src/mame/drivers/good.c316
-rw-r--r--src/mame/drivers/goodejan.c390
-rw-r--r--src/mame/drivers/gotcha.c394
-rw-r--r--src/mame/drivers/gottlieb.c2323
-rw-r--r--src/mame/drivers/gotya.c286
-rw-r--r--src/mame/drivers/gpworld.c499
-rw-r--r--src/mame/drivers/gradius3.c526
-rw-r--r--src/mame/drivers/grchamp.c790
-rw-r--r--src/mame/drivers/gridlee.c501
-rw-r--r--src/mame/drivers/groundfx.c523
-rw-r--r--src/mame/drivers/gstream.c471
-rw-r--r--src/mame/drivers/gstriker.c669
-rw-r--r--src/mame/drivers/gsword.c965
-rw-r--r--src/mame/drivers/gticlub.c1041
-rw-r--r--src/mame/drivers/gtipoker.c87
-rw-r--r--src/mame/drivers/gumbo.c462
-rw-r--r--src/mame/drivers/gunbustr.c451
-rw-r--r--src/mame/drivers/gundealr.c578
-rw-r--r--src/mame/drivers/gunpey.c169
-rw-r--r--src/mame/drivers/gunsmoke.c528
-rw-r--r--src/mame/drivers/gyruss.c560
-rw-r--r--src/mame/drivers/hal21.c975
-rw-r--r--src/mame/drivers/halleys.c2259
-rw-r--r--src/mame/drivers/hanaawas.c265
-rw-r--r--src/mame/drivers/hanaroku.c283
-rw-r--r--src/mame/drivers/harddriv.c3958
-rw-r--r--src/mame/drivers/hcastle.c424
-rw-r--r--src/mame/drivers/hexa.c204
-rw-r--r--src/mame/drivers/hexion.c341
-rw-r--r--src/mame/drivers/higemaru.c234
-rw-r--r--src/mame/drivers/hitme.c575
-rw-r--r--src/mame/drivers/hnayayoi.c772
-rw-r--r--src/mame/drivers/hng64.c1858
-rw-r--r--src/mame/drivers/holeland.c524
-rw-r--r--src/mame/drivers/homedata.c1871
-rw-r--r--src/mame/drivers/homerun.c254
-rw-r--r--src/mame/drivers/hornet.c1527
-rw-r--r--src/mame/drivers/hotblock.c220
-rw-r--r--src/mame/drivers/hshavoc.c327
-rw-r--r--src/mame/drivers/hyhoo.c343
-rw-r--r--src/mame/drivers/hyperspt.c660
-rw-r--r--src/mame/drivers/hyprduel.c889
-rw-r--r--src/mame/drivers/igs_180.c356
-rw-r--r--src/mame/drivers/igs_blit.c3022
-rw-r--r--src/mame/drivers/igs_m027.c601
-rw-r--r--src/mame/drivers/igs_m68.c316
-rw-r--r--src/mame/drivers/ikki.c296
-rw-r--r--src/mame/drivers/imolagp.c530
-rw-r--r--src/mame/drivers/intrscti.c137
-rw-r--r--src/mame/drivers/inufuku.c476
-rw-r--r--src/mame/drivers/iqblock.c610
-rw-r--r--src/mame/drivers/irobot.c395
-rw-r--r--src/mame/drivers/ironhors.c534
-rw-r--r--src/mame/drivers/istellar.c406
-rw-r--r--src/mame/drivers/itech32.c3949
-rw-r--r--src/mame/drivers/itech8.c2736
-rw-r--r--src/mame/drivers/jack.c1478
-rw-r--r--src/mame/drivers/jackal.c397
-rw-r--r--src/mame/drivers/jackpool.c234
-rw-r--r--src/mame/drivers/jailbrek.c420
-rw-r--r--src/mame/drivers/jalmah.c1955
-rw-r--r--src/mame/drivers/jchan.c872
-rw-r--r--src/mame/drivers/jcross.c344
-rw-r--r--src/mame/drivers/jedi.c611
-rw-r--r--src/mame/drivers/jollyjgr.c452
-rw-r--r--src/mame/drivers/jongkyo.c656
-rw-r--r--src/mame/drivers/jpmimpct.c1029
-rw-r--r--src/mame/drivers/jrpacman.c387
-rw-r--r--src/mame/drivers/junofrst.c455
-rw-r--r--src/mame/drivers/kaneko16.c3591
-rw-r--r--src/mame/drivers/kangaroo.c531
-rw-r--r--src/mame/drivers/karnov.c1029
-rw-r--r--src/mame/drivers/kchamp.c743
-rw-r--r--src/mame/drivers/kickgoal.c811
-rw-r--r--src/mame/drivers/kingobox.c900
-rw-r--r--src/mame/drivers/kingpin.c222
-rw-r--r--src/mame/drivers/kinst.c951
-rw-r--r--src/mame/drivers/kinstb.c286
-rw-r--r--src/mame/drivers/klax.c375
-rw-r--r--src/mame/drivers/kncljoe.c309
-rw-r--r--src/mame/drivers/koikoi.c312
-rw-r--r--src/mame/drivers/konamigq.c513
-rw-r--r--src/mame/drivers/konamigv.c903
-rw-r--r--src/mame/drivers/konamigx.c3665
-rw-r--r--src/mame/drivers/konamim2.c1132
-rw-r--r--src/mame/drivers/kopunch.c241
-rw-r--r--src/mame/drivers/ksayakyu.c320
-rw-r--r--src/mame/drivers/ksys573.c4423
-rw-r--r--src/mame/drivers/kyugo.c1278
-rw-r--r--src/mame/drivers/labyrunr.c337
-rw-r--r--src/mame/drivers/ladybug.c986
-rw-r--r--src/mame/drivers/ladyfrog.c341
-rw-r--r--src/mame/drivers/laserbas.c237
-rw-r--r--src/mame/drivers/laserbat.c943
-rw-r--r--src/mame/drivers/lasso.c1037
-rw-r--r--src/mame/drivers/lastduel.c804
-rw-r--r--src/mame/drivers/lastfght.c511
-rw-r--r--src/mame/drivers/lazercmd.c859
-rw-r--r--src/mame/drivers/legionna.c4391
-rw-r--r--src/mame/drivers/leland.c2575
-rw-r--r--src/mame/drivers/lemmings.c346
-rw-r--r--src/mame/drivers/lethal.c916
-rw-r--r--src/mame/drivers/lethalj.c764
-rw-r--r--src/mame/drivers/lgp.c462
-rw-r--r--src/mame/drivers/liberate.c963
-rw-r--r--src/mame/drivers/liberatr.c501
-rw-r--r--src/mame/drivers/limenko.c905
-rw-r--r--src/mame/drivers/littlerb.c392
-rw-r--r--src/mame/drivers/lkage.c568
-rw-r--r--src/mame/drivers/lockon.c762
-rw-r--r--src/mame/drivers/looping.c796
-rw-r--r--src/mame/drivers/lordgun.c745
-rw-r--r--src/mame/drivers/lsasquad.c806
-rw-r--r--src/mame/drivers/ltcasino.c727
-rw-r--r--src/mame/drivers/lucky8.c429
-rw-r--r--src/mame/drivers/lvcards.c589
-rw-r--r--src/mame/drivers/lwings.c1462
-rw-r--r--src/mame/drivers/m107.c676
-rw-r--r--src/mame/drivers/m62.c2629
-rw-r--r--src/mame/drivers/m72.c3530
-rw-r--r--src/mame/drivers/m79amb.c205
-rw-r--r--src/mame/drivers/m90.c1213
-rw-r--r--src/mame/drivers/m92.c2064
-rw-r--r--src/mame/drivers/m92.h242
-rw-r--r--src/mame/drivers/macrossp.c692
-rw-r--r--src/mame/drivers/macs.c617
-rw-r--r--src/mame/drivers/madalien.c776
-rw-r--r--src/mame/drivers/madmotor.c388
-rw-r--r--src/mame/drivers/magic10.c478
-rw-r--r--src/mame/drivers/magicfly.c715
-rw-r--r--src/mame/drivers/magmax.c457
-rw-r--r--src/mame/drivers/mainevt.c1031
-rw-r--r--src/mame/drivers/mainsnk.c493
-rw-r--r--src/mame/drivers/malzak.c558
-rw-r--r--src/mame/drivers/mappy.c2166
-rw-r--r--src/mame/drivers/marineb.c855
-rw-r--r--src/mame/drivers/marinedt.c646
-rw-r--r--src/mame/drivers/mario.c595
-rw-r--r--src/mame/drivers/markham.c280
-rw-r--r--src/mame/drivers/marvins.c771
-rw-r--r--src/mame/drivers/mastboy.c979
-rw-r--r--src/mame/drivers/matmania.c664
-rw-r--r--src/mame/drivers/maxaflex.c544
-rw-r--r--src/mame/drivers/mayumi.c327
-rw-r--r--src/mame/drivers/mazerbla.c1676
-rw-r--r--src/mame/drivers/mcatadv.c731
-rw-r--r--src/mame/drivers/mcr.c2588
-rw-r--r--src/mame/drivers/mcr3.c1575
-rw-r--r--src/mame/drivers/mcr68.c1428
-rw-r--r--src/mame/drivers/meadows.c851
-rw-r--r--src/mame/drivers/mediagx.c1058
-rw-r--r--src/mame/drivers/megadriv.c4851
-rw-r--r--src/mame/drivers/megadriv.h25
-rw-r--r--src/mame/drivers/megaplay.c1078
-rw-r--r--src/mame/drivers/megasys1.c3986
-rw-r--r--src/mame/drivers/megatech.c1319
-rw-r--r--src/mame/drivers/megazone.c616
-rw-r--r--src/mame/drivers/meijinsn.c367
-rw-r--r--src/mame/drivers/merit.c1230
-rw-r--r--src/mame/drivers/meritm.c321
-rw-r--r--src/mame/drivers/mermaid.c393
-rw-r--r--src/mame/drivers/metlclsh.c460
-rw-r--r--src/mame/drivers/metro.c5946
-rw-r--r--src/mame/drivers/mexico86.c611
-rw-r--r--src/mame/drivers/mgolf.c346
-rw-r--r--src/mame/drivers/mhavoc.c811
-rw-r--r--src/mame/drivers/micro3d.c1130
-rw-r--r--src/mame/drivers/midas.c587
-rw-r--r--src/mame/drivers/midtunit.c1298
-rw-r--r--src/mame/drivers/midvunit.c1438
-rw-r--r--src/mame/drivers/midwunit.c1207
-rw-r--r--src/mame/drivers/midxunit.c292
-rw-r--r--src/mame/drivers/midyunit.c2106
-rw-r--r--src/mame/drivers/midzeus.c823
-rw-r--r--src/mame/drivers/mikie.c365
-rw-r--r--src/mame/drivers/miniboy7.c314
-rw-r--r--src/mame/drivers/minivadr.c103
-rw-r--r--src/mame/drivers/mirage.c447
-rw-r--r--src/mame/drivers/mirax.c237
-rw-r--r--src/mame/drivers/missb2.c456
-rw-r--r--src/mame/drivers/missile.c1115
-rw-r--r--src/mame/drivers/mitchell.c2432
-rw-r--r--src/mame/drivers/mjkjidai.c425
-rw-r--r--src/mame/drivers/mjsister.c362
-rw-r--r--src/mame/drivers/mjsiyoub.c130
-rw-r--r--src/mame/drivers/mlanding.c444
-rw-r--r--src/mame/drivers/mnight.c476
-rw-r--r--src/mame/drivers/model1.c1629
-rw-r--r--src/mame/drivers/model2.c4013
-rw-r--r--src/mame/drivers/model3.c4660
-rw-r--r--src/mame/drivers/mogura.c253
-rw-r--r--src/mame/drivers/mole.c242
-rw-r--r--src/mame/drivers/momoko.c336
-rw-r--r--src/mame/drivers/moo.c942
-rw-r--r--src/mame/drivers/mosaic.c382
-rw-r--r--src/mame/drivers/mouser.c305
-rw-r--r--src/mame/drivers/mpatrol.c588
-rw-r--r--src/mame/drivers/mpu4.c1406
-rw-r--r--src/mame/drivers/mpu4drvr.c1950
-rw-r--r--src/mame/drivers/mquake.c464
-rw-r--r--src/mame/drivers/mrdo.c407
-rw-r--r--src/mame/drivers/mrflea.c421
-rw-r--r--src/mame/drivers/mrjong.c270
-rw-r--r--src/mame/drivers/ms32.c2268
-rw-r--r--src/mame/drivers/msisaac.c611
-rw-r--r--src/mame/drivers/mugsmash.c492
-rw-r--r--src/mame/drivers/multigam.c336
-rw-r--r--src/mame/drivers/munchmo.c379
-rw-r--r--src/mame/drivers/murogem.c262
-rw-r--r--src/mame/drivers/mustache.c316
-rw-r--r--src/mame/drivers/mw8080bw.c3109
-rw-r--r--src/mame/drivers/mwarr.c543
-rw-r--r--src/mame/drivers/mystston.c336
-rw-r--r--src/mame/drivers/mystwarr.c2147
-rw-r--r--src/mame/drivers/n8080.c650
-rw-r--r--src/mame/drivers/namcofl.c556
-rw-r--r--src/mame/drivers/namcoic.c1742
-rw-r--r--src/mame/drivers/namcona1.c1842
-rw-r--r--src/mame/drivers/namconb1.c1412
-rw-r--r--src/mame/drivers/namcond1.c412
-rw-r--r--src/mame/drivers/namcos1.c2367
-rw-r--r--src/mame/drivers/namcos10.c515
-rw-r--r--src/mame/drivers/namcos11.c1681
-rw-r--r--src/mame/drivers/namcos12.c2179
-rw-r--r--src/mame/drivers/namcos2.c4769
-rw-r--r--src/mame/drivers/namcos21.c2582
-rw-r--r--src/mame/drivers/namcos22.c4391
-rw-r--r--src/mame/drivers/namcos23.c1097
-rw-r--r--src/mame/drivers/namcos86.c1616
-rw-r--r--src/mame/drivers/naomi.c1888
-rw-r--r--src/mame/drivers/naughtyb.c789
-rw-r--r--src/mame/drivers/nbmj8688.c4236
-rw-r--r--src/mame/drivers/nbmj8891.c4169
-rw-r--r--src/mame/drivers/nbmj8991.c2505
-rw-r--r--src/mame/drivers/nbmj9195.c5054
-rw-r--r--src/mame/drivers/nemesis.c3001
-rw-r--r--src/mame/drivers/neodrvr.c7303
-rw-r--r--src/mame/drivers/neogeo.c1297
-rw-r--r--src/mame/drivers/news.c177
-rw-r--r--src/mame/drivers/ninjakd2.c703
-rw-r--r--src/mame/drivers/ninjakid.c336
-rw-r--r--src/mame/drivers/ninjaw.c976
-rw-r--r--src/mame/drivers/nitedrvr.c226
-rw-r--r--src/mame/drivers/niyanpai.c988
-rw-r--r--src/mame/drivers/nmg5.c1503
-rw-r--r--src/mame/drivers/nmk16.c5195
-rw-r--r--src/mame/drivers/nova2001.c270
-rw-r--r--src/mame/drivers/nss.c666
-rw-r--r--src/mame/drivers/nwk-tr.c1173
-rw-r--r--src/mame/drivers/nycaptor.c1309
-rw-r--r--src/mame/drivers/nyny.c777
-rw-r--r--src/mame/drivers/offtwall.c516
-rw-r--r--src/mame/drivers/ohmygod.c415
-rw-r--r--src/mame/drivers/ojankohs.c1197
-rw-r--r--src/mame/drivers/olibochu.c451
-rw-r--r--src/mame/drivers/omegaf.c885
-rw-r--r--src/mame/drivers/omegrace.c575
-rw-r--r--src/mame/drivers/oneshot.c498
-rw-r--r--src/mame/drivers/onetwo.c334
-rw-r--r--src/mame/drivers/opwolf.c816
-rw-r--r--src/mame/drivers/orbit.c326
-rw-r--r--src/mame/drivers/othldrby.c291
-rw-r--r--src/mame/drivers/othunder.c916
-rw-r--r--src/mame/drivers/overdriv.c503
-rw-r--r--src/mame/drivers/pacland.c596
-rw-r--r--src/mame/drivers/pacman.c5460
-rw-r--r--src/mame/drivers/pandoras.c487
-rw-r--r--src/mame/drivers/pangofun.c161
-rw-r--r--src/mame/drivers/panicr.c540
-rw-r--r--src/mame/drivers/paradise.c940
-rw-r--r--src/mame/drivers/parodius.c425
-rw-r--r--src/mame/drivers/pasha2.c464
-rw-r--r--src/mame/drivers/pass.c333
-rw-r--r--src/mame/drivers/pastelg.c263
-rw-r--r--src/mame/drivers/pbaction.c425
-rw-r--r--src/mame/drivers/pcktgal.c475
-rw-r--r--src/mame/drivers/pengo.c709
-rw-r--r--src/mame/drivers/peplus.c1138
-rw-r--r--src/mame/drivers/pgm.c4070
-rw-r--r--src/mame/drivers/phoenix.c1255
-rw-r--r--src/mame/drivers/pingpong.c617
-rw-r--r--src/mame/drivers/pipedrm.c769
-rw-r--r--src/mame/drivers/pipeline.c427
-rw-r--r--src/mame/drivers/pirates.c495
-rw-r--r--src/mame/drivers/pitnrun.c404
-rw-r--r--src/mame/drivers/pkscram.c328
-rw-r--r--src/mame/drivers/pktgaldx.c471
-rw-r--r--src/mame/drivers/pkunwar.c253
-rw-r--r--src/mame/drivers/playch10.c1746
-rw-r--r--src/mame/drivers/playmark.c1525
-rw-r--r--src/mame/drivers/plygonet.c824
-rw-r--r--src/mame/drivers/pmpoker.c1220
-rw-r--r--src/mame/drivers/pntnpuzl.c488
-rw-r--r--src/mame/drivers/pokechmp.c320
-rw-r--r--src/mame/drivers/polepos.c1715
-rw-r--r--src/mame/drivers/policetr.c746
-rw-r--r--src/mame/drivers/polyplay.c374
-rw-r--r--src/mame/drivers/poolshrk.c259
-rw-r--r--src/mame/drivers/pooyan.c360
-rw-r--r--src/mame/drivers/popeye.c709
-rw-r--r--src/mame/drivers/popper.c370
-rw-r--r--src/mame/drivers/portrait.c357
-rw-r--r--src/mame/drivers/powerbal.c593
-rw-r--r--src/mame/drivers/powerins.c685
-rw-r--r--src/mame/drivers/ppmast93.c400
-rw-r--r--src/mame/drivers/prehisle.c415
-rw-r--r--src/mame/drivers/progolf.c298
-rw-r--r--src/mame/drivers/psikyo.c2329
-rw-r--r--src/mame/drivers/psikyo4.c1120
-rw-r--r--src/mame/drivers/psikyosh.c1304
-rw-r--r--src/mame/drivers/psychic5.c622
-rw-r--r--src/mame/drivers/pturn.c527
-rw-r--r--src/mame/drivers/puckpkmn.c294
-rw-r--r--src/mame/drivers/punchout.c1226
-rw-r--r--src/mame/drivers/pushman.c643
-rw-r--r--src/mame/drivers/qdrmfgp.c807
-rw-r--r--src/mame/drivers/qix.c1222
-rw-r--r--src/mame/drivers/quantum.c342
-rw-r--r--src/mame/drivers/quasar.c523
-rw-r--r--src/mame/drivers/quizdna.c594
-rw-r--r--src/mame/drivers/quizo.c252
-rw-r--r--src/mame/drivers/quizpani.c298
-rw-r--r--src/mame/drivers/r2dtank.c585
-rw-r--r--src/mame/drivers/rabbit.c1291
-rw-r--r--src/mame/drivers/raiden.c528
-rw-r--r--src/mame/drivers/raiden2.c2305
-rw-r--r--src/mame/drivers/raiders5.c296
-rw-r--r--src/mame/drivers/rainbow.c823
-rw-r--r--src/mame/drivers/rallyx.c1235
-rw-r--r--src/mame/drivers/rampart.c547
-rw-r--r--src/mame/drivers/rastan.c576
-rw-r--r--src/mame/drivers/rbmk.c556
-rw-r--r--src/mame/drivers/rcasino.c346
-rw-r--r--src/mame/drivers/rcorsair.c160
-rw-r--r--src/mame/drivers/realbrk.c1083
-rw-r--r--src/mame/drivers/redalert.c553
-rw-r--r--src/mame/drivers/redclash.c526
-rw-r--r--src/mame/drivers/relief.c508
-rw-r--r--src/mame/drivers/renegade.c956
-rw-r--r--src/mame/drivers/retofinv.c529
-rw-r--r--src/mame/drivers/rmhaihai.c743
-rw-r--r--src/mame/drivers/rockola.c1611
-rw-r--r--src/mame/drivers/rockrage.c425
-rw-r--r--src/mame/drivers/rocnrope.c358
-rw-r--r--src/mame/drivers/rohga.c1450
-rw-r--r--src/mame/drivers/rollerg.c362
-rw-r--r--src/mame/drivers/rollrace.c435
-rw-r--r--src/mame/drivers/rotaryf.c181
-rw-r--r--src/mame/drivers/route16.c964
-rw-r--r--src/mame/drivers/royalmah.c4263
-rw-r--r--src/mame/drivers/rpunch.c876
-rw-r--r--src/mame/drivers/runaway.c436
-rw-r--r--src/mame/drivers/rungun.c660
-rw-r--r--src/mame/drivers/safarir.c322
-rw-r--r--src/mame/drivers/sandscrp.c475
-rw-r--r--src/mame/drivers/sangho.c338
-rw-r--r--src/mame/drivers/sauro.c484
-rw-r--r--src/mame/drivers/sbasketb.c392
-rw-r--r--src/mame/drivers/sbowling.c374
-rw-r--r--src/mame/drivers/sbrkout.c329
-rw-r--r--src/mame/drivers/sbugger.c293
-rw-r--r--src/mame/drivers/scobra.c2252
-rw-r--r--src/mame/drivers/scotrsht.c289
-rw-r--r--src/mame/drivers/scramble.c3466
-rw-r--r--src/mame/drivers/scregg.c402
-rw-r--r--src/mame/drivers/sderby.c343
-rw-r--r--src/mame/drivers/seattle.c2945
-rw-r--r--src/mame/drivers/segac2.c2205
-rw-r--r--src/mame/drivers/segae.c2398
-rw-r--r--src/mame/drivers/segae.h27
-rw-r--r--src/mame/drivers/segag80r.c1598
-rw-r--r--src/mame/drivers/segag80v.c1435
-rw-r--r--src/mame/drivers/segahang.c1683
-rw-r--r--src/mame/drivers/segald.c568
-rw-r--r--src/mame/drivers/segaorun.c1765
-rw-r--r--src/mame/drivers/segas16a.c3203
-rw-r--r--src/mame/drivers/segas16b.c6253
-rw-r--r--src/mame/drivers/segas18.c2264
-rw-r--r--src/mame/drivers/segas32.c4049
-rw-r--r--src/mame/drivers/segaxbd.c2435
-rw-r--r--src/mame/drivers/segaybd.c1809
-rw-r--r--src/mame/drivers/seibuspi.c3063
-rw-r--r--src/mame/drivers/seicross.c599
-rw-r--r--src/mame/drivers/sengokmj.c343
-rw-r--r--src/mame/drivers/senjyo.c967
-rw-r--r--src/mame/drivers/seta.c9093
-rw-r--r--src/mame/drivers/seta2.c2156
-rw-r--r--src/mame/drivers/sf.c1149
-rw-r--r--src/mame/drivers/sfkick.c157
-rw-r--r--src/mame/drivers/sg1000a.c340
-rw-r--r--src/mame/drivers/sgladiat.c301
-rw-r--r--src/mame/drivers/shadfrce.c653
-rw-r--r--src/mame/drivers/shangha3.c680
-rw-r--r--src/mame/drivers/shanghai.c1177
-rw-r--r--src/mame/drivers/shangkid.c999
-rw-r--r--src/mame/drivers/shaolins.c304
-rw-r--r--src/mame/drivers/shisen.c420
-rw-r--r--src/mame/drivers/shootout.c476
-rw-r--r--src/mame/drivers/shougi.c444
-rw-r--r--src/mame/drivers/shuuz.c375
-rw-r--r--src/mame/drivers/sidearms.c1222
-rw-r--r--src/mame/drivers/sidepckt.c444
-rw-r--r--src/mame/drivers/silkroad.c470
-rw-r--r--src/mame/drivers/simpl156.c1247
-rw-r--r--src/mame/drivers/simpsons.c479
-rw-r--r--src/mame/drivers/skullxbo.c630
-rw-r--r--src/mame/drivers/skyarmy.c311
-rw-r--r--src/mame/drivers/skychut.c442
-rw-r--r--src/mame/drivers/skydiver.c422
-rw-r--r--src/mame/drivers/skyfox.c436
-rw-r--r--src/mame/drivers/skykid.c553
-rw-r--r--src/mame/drivers/skylncr.c500
-rw-r--r--src/mame/drivers/skyraid.c318
-rw-r--r--src/mame/drivers/slapfght.c1696
-rw-r--r--src/mame/drivers/slapshot.c751
-rw-r--r--src/mame/drivers/sliver.c594
-rw-r--r--src/mame/drivers/smstrv.c310
-rw-r--r--src/mame/drivers/snk.c4497
-rw-r--r--src/mame/drivers/snk68.c1215
-rw-r--r--src/mame/drivers/snowbros.c2776
-rw-r--r--src/mame/drivers/solomon.c303
-rw-r--r--src/mame/drivers/sonson.c343
-rw-r--r--src/mame/drivers/spacefb.c567
-rw-r--r--src/mame/drivers/spaceg.c478
-rw-r--r--src/mame/drivers/spbactn.c443
-rw-r--r--src/mame/drivers/spcforce.c370
-rw-r--r--src/mame/drivers/spdodgeb.c604
-rw-r--r--src/mame/drivers/speedatk.c320
-rw-r--r--src/mame/drivers/speedbal.c292
-rw-r--r--src/mame/drivers/speedspn.c377
-rw-r--r--src/mame/drivers/speglsht.c331
-rw-r--r--src/mame/drivers/spiders.c792
-rw-r--r--src/mame/drivers/splash.c949
-rw-r--r--src/mame/drivers/sprcros2.c418
-rw-r--r--src/mame/drivers/sprint2.c693
-rw-r--r--src/mame/drivers/sprint4.c480
-rw-r--r--src/mame/drivers/sprint8.c591
-rw-r--r--src/mame/drivers/spy.c656
-rw-r--r--src/mame/drivers/srmp2.c1386
-rw-r--r--src/mame/drivers/srmp5.c683
-rw-r--r--src/mame/drivers/srmp6.c791
-rw-r--r--src/mame/drivers/srumbler.c445
-rw-r--r--src/mame/drivers/ssf2md.c33
-rw-r--r--src/mame/drivers/ssfindo.c722
-rw-r--r--src/mame/drivers/sshangha.c440
-rw-r--r--src/mame/drivers/ssingles.c285
-rw-r--r--src/mame/drivers/sslam.c973
-rw-r--r--src/mame/drivers/ssozumo.c331
-rw-r--r--src/mame/drivers/sspeedr.c263
-rw-r--r--src/mame/drivers/ssrj.c225
-rw-r--r--src/mame/drivers/sstrangr.c288
-rw-r--r--src/mame/drivers/ssv.c4696
-rw-r--r--src/mame/drivers/st0016.c661
-rw-r--r--src/mame/drivers/stactics.c313
-rw-r--r--src/mame/drivers/stadhero.c357
-rw-r--r--src/mame/drivers/starcrus.c242
-rw-r--r--src/mame/drivers/starfire.c422
-rw-r--r--src/mame/drivers/starshp1.c427
-rw-r--r--src/mame/drivers/starwars.c616
-rw-r--r--src/mame/drivers/statriv2.c922
-rw-r--r--src/mame/drivers/steaser.c123
-rw-r--r--src/mame/drivers/stepstag.c185
-rw-r--r--src/mame/drivers/stfight.c808
-rw-r--r--src/mame/drivers/stlforce.c423
-rw-r--r--src/mame/drivers/strnskil.c541
-rw-r--r--src/mame/drivers/stv.c3766
-rw-r--r--src/mame/drivers/stvinit.c1404
-rw-r--r--src/mame/drivers/subs.c291
-rw-r--r--src/mame/drivers/suna16.c1342
-rw-r--r--src/mame/drivers/suna8.c2415
-rw-r--r--src/mame/drivers/supbtime.c513
-rw-r--r--src/mame/drivers/supdrapo.c311
-rw-r--r--src/mame/drivers/superchs.c510
-rw-r--r--src/mame/drivers/superdq.c431
-rw-r--r--src/mame/drivers/superqix.c1305
-rw-r--r--src/mame/drivers/supertnk.c487
-rw-r--r--src/mame/drivers/suprgolf.c383
-rw-r--r--src/mame/drivers/suprloco.c298
-rw-r--r--src/mame/drivers/suprnova.c1607
-rw-r--r--src/mame/drivers/suprridr.c414
-rw-r--r--src/mame/drivers/suprslam.c396
-rw-r--r--src/mame/drivers/surpratk.c353
-rw-r--r--src/mame/drivers/system1.c4768
-rw-r--r--src/mame/drivers/system16.c2807
-rw-r--r--src/mame/drivers/system18.c1582
-rw-r--r--src/mame/drivers/system24.c2439
-rw-r--r--src/mame/drivers/tagteam.c376
-rw-r--r--src/mame/drivers/tail2nos.c378
-rw-r--r--src/mame/drivers/taito_b.c4028
-rw-r--r--src/mame/drivers/taito_f2.c5965
-rw-r--r--src/mame/drivers/taito_f3.c3589
-rw-r--r--src/mame/drivers/taito_h.c795
-rw-r--r--src/mame/drivers/taito_l.c3068
-rw-r--r--src/mame/drivers/taito_x.c1362
-rw-r--r--src/mame/drivers/taito_z.c4226
-rw-r--r--src/mame/drivers/taitoair.c747
-rw-r--r--src/mame/drivers/taitojc.c1642
-rw-r--r--src/mame/drivers/taitosj.c2711
-rw-r--r--src/mame/drivers/taitowlf.c537
-rw-r--r--src/mame/drivers/talbot.c280
-rw-r--r--src/mame/drivers/tank8.c544
-rw-r--r--src/mame/drivers/tankbatt.c334
-rw-r--r--src/mame/drivers/tankbust.c458
-rw-r--r--src/mame/drivers/taotaido.c446
-rw-r--r--src/mame/drivers/targeth.c235
-rw-r--r--src/mame/drivers/tarzan.c125
-rw-r--r--src/mame/drivers/tatsumi.c882
-rw-r--r--src/mame/drivers/tattack.c264
-rw-r--r--src/mame/drivers/taxidrvr.c447
-rw-r--r--src/mame/drivers/tbowl.c804
-rw-r--r--src/mame/drivers/tceptor.c698
-rw-r--r--src/mame/drivers/tcl.c200
-rw-r--r--src/mame/drivers/tecmo.c850
-rw-r--r--src/mame/drivers/tecmo16.c708
-rw-r--r--src/mame/drivers/tecmosys.c692
-rw-r--r--src/mame/drivers/tehkanwc.c1051
-rw-r--r--src/mame/drivers/tempest.c806
-rw-r--r--src/mame/drivers/terracre.c1021
-rw-r--r--src/mame/drivers/tetrisp2.c1638
-rw-r--r--src/mame/drivers/tetriunk.c245
-rw-r--r--src/mame/drivers/thayers.c514
-rw-r--r--src/mame/drivers/thedeep.c497
-rw-r--r--src/mame/drivers/thepit.c1058
-rw-r--r--src/mame/drivers/thief.c683
-rw-r--r--src/mame/drivers/thoop2.c241
-rw-r--r--src/mame/drivers/thunderj.c466
-rw-r--r--src/mame/drivers/thunderx.c1064
-rw-r--r--src/mame/drivers/tiamc1.c334
-rw-r--r--src/mame/drivers/tickee.c444
-rw-r--r--src/mame/drivers/tigeroad.c809
-rw-r--r--src/mame/drivers/timelimt.c372
-rw-r--r--src/mame/drivers/timeplt.c470
-rw-r--r--src/mame/drivers/tmaster.c573
-rw-r--r--src/mame/drivers/tmnt.c4378
-rw-r--r--src/mame/drivers/tnzs.c2142
-rw-r--r--src/mame/drivers/toaplan1.c2439
-rw-r--r--src/mame/drivers/toaplan2.c4738
-rw-r--r--src/mame/drivers/toki.c801
-rw-r--r--src/mame/drivers/toobin.c636
-rw-r--r--src/mame/drivers/topshoot.c310
-rw-r--r--src/mame/drivers/topspeed.c879
-rw-r--r--src/mame/drivers/toratora.c456
-rw-r--r--src/mame/drivers/tourtabl.c255
-rw-r--r--src/mame/drivers/toypop.c689
-rw-r--r--src/mame/drivers/tp84.c628
-rw-r--r--src/mame/drivers/trackfld.c1380
-rw-r--r--src/mame/drivers/travrusa.c521
-rw-r--r--src/mame/drivers/triplhnt.c376
-rw-r--r--src/mame/drivers/troangel.c295
-rw-r--r--src/mame/drivers/truco.c190
-rw-r--r--src/mame/drivers/trucocl.c202
-rw-r--r--src/mame/drivers/trvmadns.c334
-rw-r--r--src/mame/drivers/trvquest.c334
-rw-r--r--src/mame/drivers/tryout.c250
-rw-r--r--src/mame/drivers/tsamurai.c1297
-rw-r--r--src/mame/drivers/ttchamp.c330
-rw-r--r--src/mame/drivers/tubep.c1247
-rw-r--r--src/mame/drivers/tugboat.c468
-rw-r--r--src/mame/drivers/tumbleb.c3716
-rw-r--r--src/mame/drivers/tumblep.c422
-rw-r--r--src/mame/drivers/tunhunt.c441
-rw-r--r--src/mame/drivers/turbo.c1600
-rw-r--r--src/mame/drivers/turbosub.c464
-rw-r--r--src/mame/drivers/tutankhm.c435
-rw-r--r--src/mame/drivers/twin16.c1534
-rw-r--r--src/mame/drivers/twincobr.c1090
-rw-r--r--src/mame/drivers/twins.c314
-rw-r--r--src/mame/drivers/tx1.c1412
-rw-r--r--src/mame/drivers/ultraman.c350
-rw-r--r--src/mame/drivers/ultratnk.c351
-rw-r--r--src/mame/drivers/ultrsprt.c344
-rw-r--r--src/mame/drivers/undrfire.c741
-rw-r--r--src/mame/drivers/unico.c1138
-rw-r--r--src/mame/drivers/upscope.c395
-rw-r--r--src/mame/drivers/usgames.c452
-rw-r--r--src/mame/drivers/vamphalf.c1387
-rw-r--r--src/mame/drivers/vaportra.c830
-rw-r--r--src/mame/drivers/vastar.c443
-rw-r--r--src/mame/drivers/vball.c547
-rw-r--r--src/mame/drivers/vegaeo.c270
-rw-r--r--src/mame/drivers/vegas.c2601
-rw-r--r--src/mame/drivers/vendetta.c876
-rw-r--r--src/mame/drivers/vertigo.c236
-rw-r--r--src/mame/drivers/vicdual.c3248
-rw-r--r--src/mame/drivers/victory.c441
-rw-r--r--src/mame/drivers/videopin.c416
-rw-r--r--src/mame/drivers/vigilant.c980
-rw-r--r--src/mame/drivers/vindictr.c561
-rw-r--r--src/mame/drivers/viper.c1047
-rw-r--r--src/mame/drivers/vmetal.c499
-rw-r--r--src/mame/drivers/volfied.c381
-rw-r--r--src/mame/drivers/vroulet.c303
-rw-r--r--src/mame/drivers/vsnes.c2852
-rw-r--r--src/mame/drivers/vulgus.c409
-rw-r--r--src/mame/drivers/wallc.c340
-rw-r--r--src/mame/drivers/wardner.c677
-rw-r--r--src/mame/drivers/warpwarp.c1090
-rw-r--r--src/mame/drivers/warriorb.c757
-rw-r--r--src/mame/drivers/wc90.c493
-rw-r--r--src/mame/drivers/wc90b.c471
-rw-r--r--src/mame/drivers/wecleman.c1478
-rw-r--r--src/mame/drivers/welltris.c882
-rw-r--r--src/mame/drivers/wgp.c1302
-rw-r--r--src/mame/drivers/wheelfir.c683
-rw-r--r--src/mame/drivers/williams.c2768
-rw-r--r--src/mame/drivers/wilytowr.c731
-rw-r--r--src/mame/drivers/wink.c416
-rw-r--r--src/mame/drivers/wiping.c412
-rw-r--r--src/mame/drivers/witch.c859
-rw-r--r--src/mame/drivers/wiz.c1078
-rw-r--r--src/mame/drivers/wldarrow.c464
-rw-r--r--src/mame/drivers/wolfpack.c425
-rw-r--r--src/mame/drivers/wrally.c337
-rw-r--r--src/mame/drivers/wwfsstar.c625
-rw-r--r--src/mame/drivers/wwfwfest.c602
-rw-r--r--src/mame/drivers/xain.c725
-rw-r--r--src/mame/drivers/xexex.c657
-rw-r--r--src/mame/drivers/xmen.c917
-rw-r--r--src/mame/drivers/xorworld.c276
-rw-r--r--src/mame/drivers/xtheball.c415
-rw-r--r--src/mame/drivers/xxmissio.c357
-rw-r--r--src/mame/drivers/xybots.c405
-rw-r--r--src/mame/drivers/xyonix.c293
-rw-r--r--src/mame/drivers/yamato.c728
-rw-r--r--src/mame/drivers/yard.c367
-rw-r--r--src/mame/drivers/yiear.c347
-rw-r--r--src/mame/drivers/yumefuda.c449
-rw-r--r--src/mame/drivers/yunsun16.c833
-rw-r--r--src/mame/drivers/yunsung8.c710
-rw-r--r--src/mame/drivers/zac2650.c402
-rw-r--r--src/mame/drivers/zaccaria.c872
-rw-r--r--src/mame/drivers/zaxxon.c1520
-rw-r--r--src/mame/drivers/zerozone.c267
-rw-r--r--src/mame/drivers/zn.c4657
-rw-r--r--src/mame/drivers/zodiack.c629
-rw-r--r--src/mame/drivers/zr107.c788
-rw-r--r--src/mame/etc/fd1094dp.c587
-rw-r--r--src/mame/etc/jrcrypt.c537
-rw-r--r--src/mame/includes/8080bw.h86
-rw-r--r--src/mame/includes/amiga.h417
-rw-r--r--src/mame/includes/appoooh.h16
-rw-r--r--src/mame/includes/arabian.h19
-rw-r--r--src/mame/includes/arcadecl.h13
-rw-r--r--src/mame/includes/arkanoid.h50
-rw-r--r--src/mame/includes/artmagic.h22
-rw-r--r--src/mame/includes/asteroid.h48
-rw-r--r--src/mame/includes/astinvad.h25
-rw-r--r--src/mame/includes/astrocde.h57
-rw-r--r--src/mame/includes/astrof.h16
-rw-r--r--src/mame/includes/atari.h665
-rw-r--r--src/mame/includes/atarifb.h56
-rw-r--r--src/mame/includes/atarig1.h16
-rw-r--r--src/mame/includes/atarig42.h19
-rw-r--r--src/mame/includes/atarigt.h22
-rw-r--r--src/mame/includes/atarigx2.h18
-rw-r--r--src/mame/includes/atarisy1.h20
-rw-r--r--src/mame/includes/atarisy2.h21
-rw-r--r--src/mame/includes/atetris.h15
-rw-r--r--src/mame/includes/attckufo.h20
-rw-r--r--src/mame/includes/avalnche.h15
-rw-r--r--src/mame/includes/aztarac.h26
-rw-r--r--src/mame/includes/badlands.h12
-rw-r--r--src/mame/includes/balsente.h81
-rw-r--r--src/mame/includes/batman.h14
-rw-r--r--src/mame/includes/beathead.h24
-rw-r--r--src/mame/includes/berzerk.h16
-rw-r--r--src/mame/includes/blockade.h17
-rw-r--r--src/mame/includes/blstroid.h14
-rw-r--r--src/mame/includes/bsktball.h42
-rw-r--r--src/mame/includes/btoads.h40
-rw-r--r--src/mame/includes/bzone.h28
-rw-r--r--src/mame/includes/canyon.h36
-rw-r--r--src/mame/includes/capbowl.h18
-rw-r--r--src/mame/includes/carpolo.h48
-rw-r--r--src/mame/includes/cave.h48
-rw-r--r--src/mame/includes/ccastles.h27
-rw-r--r--src/mame/includes/cchasm.h30
-rw-r--r--src/mame/includes/cclimber.h45
-rw-r--r--src/mame/includes/centiped.h32
-rw-r--r--src/mame/includes/cinemat.h47
-rw-r--r--src/mame/includes/circus.h34
-rw-r--r--src/mame/includes/cloak.h15
-rw-r--r--src/mame/includes/cloud9.h25
-rw-r--r--src/mame/includes/cninja.h12
-rw-r--r--src/mame/includes/copsnrob.h20
-rw-r--r--src/mame/includes/cps1.h92
-rw-r--r--src/mame/includes/cps3.h15
-rw-r--r--src/mame/includes/crbaloon.h30
-rw-r--r--src/mame/includes/crgolf.h25
-rw-r--r--src/mame/includes/crshrace.h12
-rw-r--r--src/mame/includes/cubocd32.h17
-rw-r--r--src/mame/includes/cyberbal.h42
-rw-r--r--src/mame/includes/dc.h42
-rw-r--r--src/mame/includes/dcheese.h25
-rw-r--r--src/mame/includes/dec0.h72
-rw-r--r--src/mame/includes/deco16ic.h59
-rw-r--r--src/mame/includes/deco32.h38
-rw-r--r--src/mame/includes/decocrpt.h5
-rw-r--r--src/mame/includes/decoprot.h26
-rw-r--r--src/mame/includes/dkong.h124
-rw-r--r--src/mame/includes/docastle.h23
-rw-r--r--src/mame/includes/dogfgt.h14
-rw-r--r--src/mame/includes/dragrace.h36
-rw-r--r--src/mame/includes/dribling.h16
-rw-r--r--src/mame/includes/dynax.h111
-rw-r--r--src/mame/includes/eolithsp.h6
-rw-r--r--src/mame/includes/epos.h10
-rw-r--r--src/mame/includes/eprom.h12
-rw-r--r--src/mame/includes/espial.h80
-rw-r--r--src/mame/includes/exerion.h31
-rw-r--r--src/mame/includes/exidy.h88
-rw-r--r--src/mame/includes/exidy440.h75
-rw-r--r--src/mame/includes/exterm.h18
-rw-r--r--src/mame/includes/f1gp.h24
-rw-r--r--src/mame/includes/fastfred.h32
-rw-r--r--src/mame/includes/fgoal.h15
-rw-r--r--src/mame/includes/firetrk.h78
-rw-r--r--src/mame/includes/foodf.h13
-rw-r--r--src/mame/includes/fromance.h30
-rw-r--r--src/mame/includes/gaelco3d.h24
-rw-r--r--src/mame/includes/galaga.h98
-rw-r--r--src/mame/includes/galaxian.h238
-rw-r--r--src/mame/includes/gauntlet.h15
-rw-r--r--src/mame/includes/gcpinbal.h11
-rw-r--r--src/mame/includes/genesis.h101
-rw-r--r--src/mame/includes/grchamp.h63
-rw-r--r--src/mame/includes/gridlee.h29
-rw-r--r--src/mame/includes/gstriker.h72
-rw-r--r--src/mame/includes/harddriv.h245
-rw-r--r--src/mame/includes/hitme.h18
-rw-r--r--src/mame/includes/homedata.h32
-rw-r--r--src/mame/includes/iqblock.h13
-rw-r--r--src/mame/includes/irobot.h36
-rw-r--r--src/mame/includes/itech32.h50
-rw-r--r--src/mame/includes/itech8.h44
-rw-r--r--src/mame/includes/jaguar.h65
-rw-r--r--src/mame/includes/jedi.h22
-rw-r--r--src/mame/includes/jpmimpct.h18
-rw-r--r--src/mame/includes/kaneko16.h135
-rw-r--r--src/mame/includes/kangaroo.h24
-rw-r--r--src/mame/includes/klax.h12
-rw-r--r--src/mame/includes/kyugo.h33
-rw-r--r--src/mame/includes/lasso.h33
-rw-r--r--src/mame/includes/lazercmd.h24
-rw-r--r--src/mame/includes/leland.h150
-rw-r--r--src/mame/includes/lemmings.h10
-rw-r--r--src/mame/includes/lethalj.h15
-rw-r--r--src/mame/includes/liberatr.h22
-rw-r--r--src/mame/includes/lwings.h17
-rw-r--r--src/mame/includes/m107.h18
-rw-r--r--src/mame/includes/m72.h40
-rw-r--r--src/mame/includes/m92.h25
-rw-r--r--src/mame/includes/mcr.h123
-rw-r--r--src/mame/includes/meadows.h24
-rw-r--r--src/mame/includes/megasys1.h195
-rw-r--r--src/mame/includes/mhavoc.h43
-rw-r--r--src/mame/includes/midtunit.h64
-rw-r--r--src/mame/includes/midvunit.h37
-rw-r--r--src/mame/includes/midwunit.h52
-rw-r--r--src/mame/includes/midyunit.h64
-rw-r--r--src/mame/includes/midzeus.h22
-rw-r--r--src/mame/includes/mw8080bw.h173
-rw-r--r--src/mame/includes/n64.h73
-rw-r--r--src/mame/includes/n8080.h32
-rw-r--r--src/mame/includes/nam_cust.h28
-rw-r--r--src/mame/includes/namcoic.h175
-rw-r--r--src/mame/includes/namcona1.h40
-rw-r--r--src/mame/includes/namconb1.h28
-rw-r--r--src/mame/includes/namcond1.h30
-rw-r--r--src/mame/includes/namcos2.h246
-rw-r--r--src/mame/includes/namcos21.h23
-rw-r--r--src/mame/includes/namcos22.h83
-rw-r--r--src/mame/includes/nb1413m3.h263
-rw-r--r--src/mame/includes/neogeo.h154
-rw-r--r--src/mame/includes/news.h10
-rw-r--r--src/mame/includes/nitedrvr.h39
-rw-r--r--src/mame/includes/offtwall.h10
-rw-r--r--src/mame/includes/orbit.h37
-rw-r--r--src/mame/includes/pacman.h73
-rw-r--r--src/mame/includes/paradise.h21
-rw-r--r--src/mame/includes/phoenix.h55
-rw-r--r--src/mame/includes/polepos.h12
-rw-r--r--src/mame/includes/policetr.h21
-rw-r--r--src/mame/includes/poolshrk.h28
-rw-r--r--src/mame/includes/psikyosh.h29
-rw-r--r--src/mame/includes/psx.h60
-rw-r--r--src/mame/includes/qix.h68
-rw-r--r--src/mame/includes/rampart.h18
-rw-r--r--src/mame/includes/realbrk.h21
-rw-r--r--src/mame/includes/relief.h10
-rw-r--r--src/mame/includes/rescap.h11
-rw-r--r--src/mame/includes/sbrkout.h26
-rw-r--r--src/mame/includes/segag80r.h68
-rw-r--r--src/mame/includes/segag80v.h23
-rw-r--r--src/mame/includes/segas32.h81
-rw-r--r--src/mame/includes/seta.h81
-rw-r--r--src/mame/includes/shuuz.h10
-rw-r--r--src/mame/includes/skullxbo.h17
-rw-r--r--src/mame/includes/skydiver.h45
-rw-r--r--src/mame/includes/slapstic.h18
-rw-r--r--src/mame/includes/snes.h540
-rw-r--r--src/mame/includes/snk.h48
-rw-r--r--src/mame/includes/spacefb.h54
-rw-r--r--src/mame/includes/spiders.h15
-rw-r--r--src/mame/includes/sprint2.h44
-rw-r--r--src/mame/includes/sprint8.h17
-rw-r--r--src/mame/includes/st0016.h57
-rw-r--r--src/mame/includes/starfire.h31
-rw-r--r--src/mame/includes/starshp1.h67
-rw-r--r--src/mame/includes/starwars.h46
-rw-r--r--src/mame/includes/subs.h47
-rw-r--r--src/mame/includes/suprridr.h24
-rw-r--r--src/mame/includes/system16.h279
-rw-r--r--src/mame/includes/system24.h23
-rw-r--r--src/mame/includes/taito_f2.h55
-rw-r--r--src/mame/includes/taito_f3.h65
-rw-r--r--src/mame/includes/taitoipt.h379
-rw-r--r--src/mame/includes/tank8.h48
-rw-r--r--src/mame/includes/tatsumi.h67
-rw-r--r--src/mame/includes/taxidrvr.h10
-rw-r--r--src/mame/includes/thedeep.h12
-rw-r--r--src/mame/includes/thunderj.h14
-rw-r--r--src/mame/includes/tickee.h18
-rw-r--r--src/mame/includes/tnzs.h39
-rw-r--r--src/mame/includes/toaplan1.h86
-rw-r--r--src/mame/includes/toobin.h16
-rw-r--r--src/mame/includes/triplhnt.h41
-rw-r--r--src/mame/includes/tubep.h25
-rw-r--r--src/mame/includes/turbo.h100
-rw-r--r--src/mame/includes/twincobr.h88
-rw-r--r--src/mame/includes/ultratnk.h17
-rw-r--r--src/mame/includes/unico.h23
-rw-r--r--src/mame/includes/vertigo.h26
-rw-r--r--src/mame/includes/vicdual.h75
-rw-r--r--src/mame/includes/videopin.h32
-rw-r--r--src/mame/includes/vindictr.h14
-rw-r--r--src/mame/includes/warpwarp.h35
-rw-r--r--src/mame/includes/williams.h125
-rw-r--r--src/mame/includes/wwfwfest.h12
-rw-r--r--src/mame/includes/xybots.h10
-rw-r--r--src/mame/includes/zaxxon.h44
-rw-r--r--src/mame/layout/abaseb.lay72
-rw-r--r--src/mame/layout/ampoker.lay112
-rw-r--r--src/mame/layout/atarifb.lay72
-rw-r--r--src/mame/layout/atarifb4.lay88
-rw-r--r--src/mame/layout/avalnche.lay34
-rw-r--r--src/mame/layout/bfm_sc2.lay911
-rw-r--r--src/mame/layout/buckrog.lay142
-rw-r--r--src/mame/layout/bzone.lay22
-rw-r--r--src/mame/layout/cardline.lay112
-rw-r--r--src/mame/layout/circus.lay34
-rw-r--r--src/mame/layout/clowns.lay35
-rw-r--r--src/mame/layout/connect4.lay598
-rw-r--r--src/mame/layout/copsnrob.lay26
-rw-r--r--src/mame/layout/crash.lay34
-rw-r--r--src/mame/layout/darius.lay70
-rw-r--r--src/mame/layout/deadeye.lay42
-rw-r--r--src/mame/layout/dlair.lay83
-rw-r--r--src/mame/layout/firebeat.lay11
-rw-r--r--src/mame/layout/funworld.lay99
-rw-r--r--src/mame/layout/geebee.lay84
-rw-r--r--src/mame/layout/gldncrwn.lay187
-rw-r--r--src/mame/layout/goldnpkr.lay124
-rw-r--r--src/mame/layout/gypsyjug.lay46
-rw-r--r--src/mame/layout/invad2ct.lay54
-rw-r--r--src/mame/layout/invaders.lay30
-rw-r--r--src/mame/layout/invrvnge.lay26
-rw-r--r--src/mame/layout/lazercmd.lay38
-rw-r--r--src/mame/layout/maxaflex.lay75
-rw-r--r--src/mame/layout/mpu4.lay940
-rw-r--r--src/mame/layout/nbmj8688.lay70
-rw-r--r--src/mame/layout/paradice.lay172
-rw-r--r--src/mame/layout/peplus.lay119
-rw-r--r--src/mame/layout/pepp0158.lay119
-rw-r--r--src/mame/layout/pepp0188.lay119
-rw-r--r--src/mame/layout/peset038.lay119
-rw-r--r--src/mame/layout/pmpoker.lay86
-rw-r--r--src/mame/layout/pokio.lay190
-rw-r--r--src/mame/layout/pottnpkr.lay72
-rw-r--r--src/mame/layout/pyramid.lay157
-rw-r--r--src/mame/layout/quintoon.lay172
-rw-r--r--src/mame/layout/rocknms.lay39
-rw-r--r--src/mame/layout/sbrkout.lay42
-rw-r--r--src/mame/layout/sidewndr.lay61
-rw-r--r--src/mame/layout/sigmapkr.lay112
-rw-r--r--src/mame/layout/slots.lay187
-rw-r--r--src/mame/layout/sltblgpo.lay157
-rw-r--r--src/mame/layout/sltblgtk.lay187
-rw-r--r--src/mame/layout/solarq.lay26
-rw-r--r--src/mame/layout/sos.lay26
-rw-r--r--src/mame/layout/sspeedr.lay199
-rw-r--r--src/mame/layout/starcas.lay30
-rw-r--r--src/mame/layout/subroc3d.lay93
-rw-r--r--src/mame/layout/tenpindx.lay188
-rw-r--r--src/mame/layout/tinv2650.lay30
-rw-r--r--src/mame/layout/turbo.lay202
-rw-r--r--src/mame/layout/videopin.lay99
-rw-r--r--src/mame/machine/acitya.c205
-rw-r--r--src/mame/machine/ajax.c222
-rw-r--r--src/mame/machine/amiga.c1761
-rw-r--r--src/mame/machine/arkanoid.c597
-rw-r--r--src/mame/machine/asic65.c750
-rw-r--r--src/mame/machine/asic65.h18
-rw-r--r--src/mame/machine/asteroid.c193
-rw-r--r--src/mame/machine/atari.c982
-rw-r--r--src/mame/machine/atari_vg.c68
-rw-r--r--src/mame/machine/atari_vg.h13
-rw-r--r--src/mame/machine/atarifb.c304
-rw-r--r--src/mame/machine/atarigen.c1500
-rw-r--r--src/mame/machine/atarigen.h289
-rw-r--r--src/mame/machine/bagman.c242
-rw-r--r--src/mame/machine/balsente.c1251
-rw-r--r--src/mame/machine/beezer.c143
-rw-r--r--src/mame/machine/bfm_bd1.c567
-rw-r--r--src/mame/machine/bfm_bd1.h22
-rw-r--r--src/mame/machine/bigevglf.c107
-rw-r--r--src/mame/machine/bonzeadv.c467
-rw-r--r--src/mame/machine/bsktball.c169
-rw-r--r--src/mame/machine/btime.c93
-rw-r--r--src/mame/machine/bublbobl.c498
-rw-r--r--src/mame/machine/buggychl.c148
-rw-r--r--src/mame/machine/carpolo.c585
-rw-r--r--src/mame/machine/cchasm.c15
-rw-r--r--src/mame/machine/cchip.c184
-rw-r--r--src/mame/machine/cclimber.c142
-rw-r--r--src/mame/machine/chaknpop.c166
-rw-r--r--src/mame/machine/copsnrob.c59
-rw-r--r--src/mame/machine/cps2crpt.c978
-rw-r--r--src/mame/machine/cubocd32.c892
-rw-r--r--src/mame/machine/daikaiju.c351
-rw-r--r--src/mame/machine/dc.c95
-rw-r--r--src/mame/machine/dec0.c623
-rw-r--r--src/mame/machine/deco102.c93
-rw-r--r--src/mame/machine/deco156.c133
-rw-r--r--src/mame/machine/decocass.c2159
-rw-r--r--src/mame/machine/decocass.h113
-rw-r--r--src/mame/machine/decocrpt.c670
-rw-r--r--src/mame/machine/decoprot.c1772
-rw-r--r--src/mame/machine/docastle.c82
-rw-r--r--src/mame/machine/drakton.c113
-rw-r--r--src/mame/machine/equites.c444
-rw-r--r--src/mame/machine/exctsccr.c340
-rw-r--r--src/mame/machine/fd1089.c6611
-rw-r--r--src/mame/machine/fd1094.c843
-rw-r--r--src/mame/machine/fd1094.h19
-rw-r--r--src/mame/machine/fddebug.c2427
-rw-r--r--src/mame/machine/flstory.c271
-rw-r--r--src/mame/machine/gaelco2.c245
-rw-r--r--src/mame/machine/galaxian.c563
-rw-r--r--src/mame/machine/gaplus.c69
-rw-r--r--src/mame/machine/harddriv.c1941
-rw-r--r--src/mame/machine/irem_cpu.c807
-rw-r--r--src/mame/machine/irem_cpu.h19
-rw-r--r--src/mame/machine/irobot.c1023
-rw-r--r--src/mame/machine/jackal.c79
-rw-r--r--src/mame/machine/jumpshot.c56
-rw-r--r--src/mame/machine/kabuki.c214
-rw-r--r--src/mame/machine/kaneko16.c893
-rw-r--r--src/mame/machine/kanekotb.h3673
-rw-r--r--src/mame/machine/konami.c67
-rw-r--r--src/mame/machine/konamigx.c2247
-rw-r--r--src/mame/machine/konamigx.h103
-rw-r--r--src/mame/machine/konamiic.c122
-rw-r--r--src/mame/machine/konamiic.h10
-rw-r--r--src/mame/machine/konppc.c697
-rw-r--r--src/mame/machine/konppc.h44
-rw-r--r--src/mame/machine/leland.c1494
-rw-r--r--src/mame/machine/lkage.c139
-rw-r--r--src/mame/machine/lsasquad.c192
-rw-r--r--src/mame/machine/m68kfmly.c236
-rw-r--r--src/mame/machine/m68kfmly.h18
-rw-r--r--src/mame/machine/maniach.c136
-rw-r--r--src/mame/machine/mathbox.c285
-rw-r--r--src/mame/machine/mathbox.h12
-rw-r--r--src/mame/machine/mb14241.c50
-rw-r--r--src/mame/machine/mb14241.h16
-rw-r--r--src/mame/machine/mc8123.c498
-rw-r--r--src/mame/machine/mc8123.h5
-rw-r--r--src/mame/machine/mcr.c1026
-rw-r--r--src/mame/machine/meters.c113
-rw-r--r--src/mame/machine/meters.h33
-rw-r--r--src/mame/machine/mexico86.c334
-rw-r--r--src/mame/machine/mhavoc.c362
-rw-r--r--src/mame/machine/midtunit.c629
-rw-r--r--src/mame/machine/midwayic.c1098
-rw-r--r--src/mame/machine/midwayic.h55
-rw-r--r--src/mame/machine/midwunit.c668
-rw-r--r--src/mame/machine/midyunit.c578
-rw-r--r--src/mame/machine/model1.c2171
-rw-r--r--src/mame/machine/model3.c363
-rw-r--r--src/mame/machine/mspacman.c195
-rw-r--r--src/mame/machine/mw8080bw.c125
-rw-r--r--src/mame/machine/n64.c1752
-rw-r--r--src/mame/machine/namco50.c338
-rw-r--r--src/mame/machine/namco50.h23
-rw-r--r--src/mame/machine/namcoio.c1081
-rw-r--r--src/mame/machine/namcoio.h53
-rw-r--r--src/mame/machine/namcond1.c113
-rw-r--r--src/mame/machine/namcos1.c1430
-rw-r--r--src/mame/machine/namcos2.c849
-rw-r--r--src/mame/machine/nb1413m3.c708
-rw-r--r--src/mame/machine/neoboot.c1001
-rw-r--r--src/mame/machine/neocrypt.c1365
-rw-r--r--src/mame/machine/neoprot.c525
-rw-r--r--src/mame/machine/nitedrvr.c283
-rw-r--r--src/mame/machine/nmk004.c1076
-rw-r--r--src/mame/machine/nmk004.h4
-rw-r--r--src/mame/machine/nmk112.c59
-rw-r--r--src/mame/machine/nmk112.h9
-rw-r--r--src/mame/machine/nycaptor.c127
-rw-r--r--src/mame/machine/opwolf.c751
-rw-r--r--src/mame/machine/pacplus.c56
-rw-r--r--src/mame/machine/pckeybrd.c1264
-rw-r--r--src/mame/machine/pckeybrd.h35
-rw-r--r--src/mame/machine/pcshare.c572
-rw-r--r--src/mame/machine/pcshare.h29
-rw-r--r--src/mame/machine/pgmcrypt.c611
-rw-r--r--src/mame/machine/pgmprot.c891
-rw-r--r--src/mame/machine/pgmy2ks.c2122
-rw-r--r--src/mame/machine/pitnrun.c158
-rw-r--r--src/mame/machine/playch10.c905
-rw-r--r--src/mame/machine/psx.c1650
-rw-r--r--src/mame/machine/qix.c605
-rw-r--r--src/mame/machine/rainbow.c831
-rw-r--r--src/mame/machine/retofinv.c137
-rw-r--r--src/mame/machine/s16fd.c198
-rw-r--r--src/mame/machine/s24fd.c149
-rw-r--r--src/mame/machine/sbrkout.c110
-rw-r--r--src/mame/machine/scramble.c946
-rw-r--r--src/mame/machine/scudsp.c1278
-rw-r--r--src/mame/machine/scudsp.h9
-rw-r--r--src/mame/machine/segacrpt.c1422
-rw-r--r--src/mame/machine/segacrpt.h35
-rw-r--r--src/mame/machine/segag80.c347
-rw-r--r--src/mame/machine/segaic16.c702
-rw-r--r--src/mame/machine/segaic16.h56
-rw-r--r--src/mame/machine/segas32.c400
-rw-r--r--src/mame/machine/seibuspi.c388
-rw-r--r--src/mame/machine/simpsons.c146
-rw-r--r--src/mame/machine/slapfght.c251
-rw-r--r--src/mame/machine/slapstic.c1174
-rw-r--r--src/mame/machine/slikshot.c697
-rw-r--r--src/mame/machine/snes.c1911
-rw-r--r--src/mame/machine/snesdsp1.c1268
-rw-r--r--src/mame/machine/spisprit.c281
-rw-r--r--src/mame/machine/stactics.c94
-rw-r--r--src/mame/machine/starwars.c480
-rw-r--r--src/mame/machine/steppers.c746
-rw-r--r--src/mame/machine/steppers.h40
-rw-r--r--src/mame/machine/stfight.c244
-rw-r--r--src/mame/machine/strtheat.c194
-rw-r--r--src/mame/machine/stvcd.c1856
-rw-r--r--src/mame/machine/stvcd.h17
-rw-r--r--src/mame/machine/stvprot.c480
-rw-r--r--src/mame/machine/stvprot.h8
-rw-r--r--src/mame/machine/subs.c186
-rw-r--r--src/mame/machine/system16.c69
-rw-r--r--src/mame/machine/system24.c109
-rw-r--r--src/mame/machine/tait8741.c553
-rw-r--r--src/mame/machine/tait8741.h50
-rw-r--r--src/mame/machine/taitosj.c349
-rw-r--r--src/mame/machine/tatsumi.c373
-rw-r--r--src/mame/machine/theglobp.c259
-rw-r--r--src/mame/machine/ticket.c190
-rw-r--r--src/mame/machine/ticket.h38
-rw-r--r--src/mame/machine/tnzs.c782
-rw-r--r--src/mame/machine/toaplan1.c341
-rw-r--r--src/mame/machine/twincobr.c394
-rw-r--r--src/mame/machine/tx1.c679
-rw-r--r--src/mame/machine/vertigo.c228
-rw-r--r--src/mame/machine/volfied.c495
-rw-r--r--src/mame/machine/vsnes.c1361
-rw-r--r--src/mame/machine/williams.c919
-rw-r--r--src/mame/machine/wrally.c154
-rw-r--r--src/mame/machine/xevious.c185
-rw-r--r--src/mame/machine/znsec.c181
-rw-r--r--src/mame/machine/znsec.h5
-rw-r--r--src/mame/machine/zs01.c697
-rw-r--r--src/mame/machine/zs01.h25
-rw-r--r--src/mame/mame.mak1719
-rw-r--r--src/mame/mamedriv.c7863
-rw-r--r--src/mame/tiny.c56
-rw-r--r--src/mame/tiny.mak90
-rw-r--r--src/mame/video/1942.c248
-rw-r--r--src/mame/video/1943.c249
-rw-r--r--src/mame/video/20pacgal.c203
-rw-r--r--src/mame/video/40love.c350
-rw-r--r--src/mame/video/4enraya.c40
-rw-r--r--src/mame/video/8080bw.c478
-rw-r--r--src/mame/video/88games.c100
-rw-r--r--src/mame/video/actfancr.c311
-rw-r--r--src/mame/video/aeroboto.c210
-rw-r--r--src/mame/video/aerofgt.c745
-rw-r--r--src/mame/video/afega.c381
-rw-r--r--src/mame/video/airbustr.c151
-rw-r--r--src/mame/video/ajax.c115
-rw-r--r--src/mame/video/aliens.c86
-rw-r--r--src/mame/video/alpha68k.c560
-rw-r--r--src/mame/video/ambush.c173
-rw-r--r--src/mame/video/amiga.c971
-rw-r--r--src/mame/video/ampoker.c120
-rw-r--r--src/mame/video/amspdwy.c150
-rw-r--r--src/mame/video/angelkds.c302
-rw-r--r--src/mame/video/antic.c592
-rw-r--r--src/mame/video/appoooh.c339
-rw-r--r--src/mame/video/aquarium.c183
-rw-r--r--src/mame/video/arabian.c394
-rw-r--r--src/mame/video/arcadecl.c123
-rw-r--r--src/mame/video/argus.c1625
-rw-r--r--src/mame/video/arkanoid.c120
-rw-r--r--src/mame/video/armedf.c355
-rw-r--r--src/mame/video/artmagic.c359
-rw-r--r--src/mame/video/ashnojoe.c222
-rw-r--r--src/mame/video/asterix.c119
-rw-r--r--src/mame/video/astinvad.c148
-rw-r--r--src/mame/video/astrocde.c1106
-rw-r--r--src/mame/video/asuka.c93
-rw-r--r--src/mame/video/atari.c1568
-rw-r--r--src/mame/video/atarifb.c190
-rw-r--r--src/mame/video/atarig1.c221
-rw-r--r--src/mame/video/atarig42.c266
-rw-r--r--src/mame/video/atarigt.c681
-rw-r--r--src/mame/video/atarigx2.c259
-rw-r--r--src/mame/video/atarimo.c1092
-rw-r--r--src/mame/video/atarimo.h133
-rw-r--r--src/mame/video/atarirle.c1760
-rw-r--r--src/mame/video/atarirle.h97
-rw-r--r--src/mame/video/atarisy1.c664
-rw-r--r--src/mame/video/atarisy2.c371
-rw-r--r--src/mame/video/atetris.c67
-rw-r--r--src/mame/video/attckufo.c171
-rw-r--r--src/mame/video/avgdvg.c1523
-rw-r--r--src/mame/video/avgdvg.h29
-rw-r--r--src/mame/video/aztarac.c95
-rw-r--r--src/mame/video/badlands.c147
-rw-r--r--src/mame/video/bagman.c153
-rw-r--r--src/mame/video/balsente.c239
-rw-r--r--src/mame/video/bankp.c205
-rw-r--r--src/mame/video/baraduke.c350
-rw-r--r--src/mame/video/batman.c311
-rw-r--r--src/mame/video/battlane.c250
-rw-r--r--src/mame/video/battlera.c413
-rw-r--r--src/mame/video/battlex.c120
-rw-r--r--src/mame/video/battlnts.c67
-rw-r--r--src/mame/video/bbusters.c299
-rw-r--r--src/mame/video/beathead.c232
-rw-r--r--src/mame/video/beezer.c70
-rw-r--r--src/mame/video/bfm_adr2.c510
-rw-r--r--src/mame/video/bfm_adr2.h24
-rw-r--r--src/mame/video/bigevglf.c95
-rw-r--r--src/mame/video/bigstrkb.c145
-rw-r--r--src/mame/video/bionicc.c232
-rw-r--r--src/mame/video/bishi.c96
-rw-r--r--src/mame/video/bking2.c364
-rw-r--r--src/mame/video/bladestl.c75
-rw-r--r--src/mame/video/blktiger.c248
-rw-r--r--src/mame/video/blmbycar.c259
-rw-r--r--src/mame/video/blockade.c35
-rw-r--r--src/mame/video/blockhl.c67
-rw-r--r--src/mame/video/blockout.c138
-rw-r--r--src/mame/video/bloodbro.c278
-rw-r--r--src/mame/video/blstroid.c180
-rw-r--r--src/mame/video/blueprnt.c133
-rw-r--r--src/mame/video/bogeyman.c155
-rw-r--r--src/mame/video/bombjack.c140
-rw-r--r--src/mame/video/boogwing.c203
-rw-r--r--src/mame/video/bosco.c338
-rw-r--r--src/mame/video/bottom9.c97
-rw-r--r--src/mame/video/boxer.c89
-rw-r--r--src/mame/video/brkthru.c283
-rw-r--r--src/mame/video/bsktball.c63
-rw-r--r--src/mame/video/btime.c659
-rw-r--r--src/mame/video/btoads.c487
-rw-r--r--src/mame/video/bublbobl.c98
-rw-r--r--src/mame/video/buggychl.c275
-rw-r--r--src/mame/video/bwing.c304
-rw-r--r--src/mame/video/cabal.c149
-rw-r--r--src/mame/video/canyon.c97
-rw-r--r--src/mame/video/capbowl.c197
-rw-r--r--src/mame/video/carjmbre.c148
-rw-r--r--src/mame/video/carpolo.c833
-rw-r--r--src/mame/video/cave.c1544
-rw-r--r--src/mame/video/cbasebal.c187
-rw-r--r--src/mame/video/cbuster.c161
-rw-r--r--src/mame/video/ccastles.c366
-rw-r--r--src/mame/video/cchasm.c136
-rw-r--r--src/mame/video/cclimber.c935
-rw-r--r--src/mame/video/centiped.c520
-rw-r--r--src/mame/video/chaknpop.c286
-rw-r--r--src/mame/video/champbas.c151
-rw-r--r--src/mame/video/changela.c836
-rw-r--r--src/mame/video/cheekyms.c180
-rw-r--r--src/mame/video/chqflag.c87
-rw-r--r--src/mame/video/cinemat.c254
-rw-r--r--src/mame/video/circus.c272
-rw-r--r--src/mame/video/circusc.c199
-rw-r--r--src/mame/video/cischeat.c1375
-rw-r--r--src/mame/video/citycon.c170
-rw-r--r--src/mame/video/cloak.c231
-rw-r--r--src/mame/video/cloud9.c332
-rw-r--r--src/mame/video/clshroad.c359
-rw-r--r--src/mame/video/cninja.c526
-rw-r--r--src/mame/video/combatsc.c640
-rw-r--r--src/mame/video/commando.c140
-rw-r--r--src/mame/video/compgolf.c132
-rw-r--r--src/mame/video/contra.c281
-rw-r--r--src/mame/video/cop01.c226
-rw-r--r--src/mame/video/copsnrob.c159
-rw-r--r--src/mame/video/cosmic.c667
-rw-r--r--src/mame/video/cps1.c1955
-rw-r--r--src/mame/video/crbaloon.c167
-rw-r--r--src/mame/video/crgolf.c236
-rw-r--r--src/mame/video/crimfght.c86
-rw-r--r--src/mame/video/crospang.c210
-rw-r--r--src/mame/video/crshrace.c220
-rw-r--r--src/mame/video/csk.c273
-rw-r--r--src/mame/video/cvs.c639
-rw-r--r--src/mame/video/cyberbal.c411
-rw-r--r--src/mame/video/darius.c155
-rw-r--r--src/mame/video/darkmist.c225
-rw-r--r--src/mame/video/darkseal.c311
-rw-r--r--src/mame/video/dassault.c196
-rw-r--r--src/mame/video/dbz.c194
-rw-r--r--src/mame/video/dc.c48
-rw-r--r--src/mame/video/dcheese.c331
-rw-r--r--src/mame/video/dcon.c329
-rw-r--r--src/mame/video/dday.c379
-rw-r--r--src/mame/video/ddragon.c247
-rw-r--r--src/mame/video/ddragon3.c224
-rw-r--r--src/mame/video/ddrible.c247
-rw-r--r--src/mame/video/deadang.c158
-rw-r--r--src/mame/video/dec0.c720
-rw-r--r--src/mame/video/dec8.c823
-rw-r--r--src/mame/video/deco16ic.c1050
-rw-r--r--src/mame/video/deco32.c1633
-rw-r--r--src/mame/video/deco_mlc.c532
-rw-r--r--src/mame/video/decocass.c714
-rw-r--r--src/mame/video/deniam.c401
-rw-r--r--src/mame/video/destroyr.c90
-rw-r--r--src/mame/video/dietgo.c93
-rw-r--r--src/mame/video/digdug.c322
-rw-r--r--src/mame/video/diverboy.c53
-rw-r--r--src/mame/video/djboy.c83
-rw-r--r--src/mame/video/djmain.c194
-rw-r--r--src/mame/video/dkong.c891
-rw-r--r--src/mame/video/docastle.c225
-rw-r--r--src/mame/video/dogfgt.c243
-rw-r--r--src/mame/video/dooyong.c875
-rw-r--r--src/mame/video/dotrikun.c56
-rw-r--r--src/mame/video/dragrace.c81
-rw-r--r--src/mame/video/drgnmst.c209
-rw-r--r--src/mame/video/dribling.c85
-rw-r--r--src/mame/video/drmicro.c166
-rw-r--r--src/mame/video/dynax.c1341
-rw-r--r--src/mame/video/dynduke.c248
-rw-r--r--src/mame/video/eolith.c74
-rw-r--r--src/mame/video/epos.c95
-rw-r--r--src/mame/video/eprom.c270
-rw-r--r--src/mame/video/equites.c681
-rw-r--r--src/mame/video/esd16.c380
-rw-r--r--src/mame/video/espial.c243
-rw-r--r--src/mame/video/exctsccr.c247
-rw-r--r--src/mame/video/exedexes.c254
-rw-r--r--src/mame/video/exerion.c408
-rw-r--r--src/mame/video/exidy.c502
-rw-r--r--src/mame/video/exidy440.c463
-rw-r--r--src/mame/video/exprraid.c143
-rw-r--r--src/mame/video/exterm.c114
-rw-r--r--src/mame/video/exzisus.c229
-rw-r--r--src/mame/video/f1gp.c562
-rw-r--r--src/mame/video/fantland.c133
-rw-r--r--src/mame/video/fastfred.c407
-rw-r--r--src/mame/video/fastlane.c144
-rw-r--r--src/mame/video/fcombat.c236
-rw-r--r--src/mame/video/fgoal.c131
-rw-r--r--src/mame/video/finalizr.c266
-rw-r--r--src/mame/video/firetrap.c296
-rw-r--r--src/mame/video/firetrk.c468
-rw-r--r--src/mame/video/fitfight.c167
-rw-r--r--src/mame/video/flkatck.c163
-rw-r--r--src/mame/video/flower.c204
-rw-r--r--src/mame/video/flstory.c252
-rw-r--r--src/mame/video/flyball.c95
-rw-r--r--src/mame/video/foodf.c155
-rw-r--r--src/mame/video/freekick.c157
-rw-r--r--src/mame/video/fromanc2.c487
-rw-r--r--src/mame/video/fromance.c471
-rw-r--r--src/mame/video/funkybee.c175
-rw-r--r--src/mame/video/funkyjet.c90
-rw-r--r--src/mame/video/funworld.c128
-rw-r--r--src/mame/video/funybubl.c116
-rw-r--r--src/mame/video/fuukifg2.c353
-rw-r--r--src/mame/video/fuukifg3.c388
-rw-r--r--src/mame/video/gaelco.c254
-rw-r--r--src/mame/video/gaelco2.c510
-rw-r--r--src/mame/video/gaelco3d.c535
-rw-r--r--src/mame/video/gaiden.c577
-rw-r--r--src/mame/video/galaga.c610
-rw-r--r--src/mame/video/galaxian.c2243
-rw-r--r--src/mame/video/galivan.c443
-rw-r--r--src/mame/video/galpani2.c204
-rw-r--r--src/mame/video/galpanic.c136
-rw-r--r--src/mame/video/galspnbl.c144
-rw-r--r--src/mame/video/gaplus.c415
-rw-r--r--src/mame/video/gauntlet.c230
-rw-r--r--src/mame/video/gberet.c212
-rw-r--r--src/mame/video/gbusters.c77
-rw-r--r--src/mame/video/gcpinbal.c356
-rw-r--r--src/mame/video/gdrawpkr.c90
-rw-r--r--src/mame/video/genesis.c1382
-rw-r--r--src/mame/video/gijoe.c156
-rw-r--r--src/mame/video/ginganin.c290
-rw-r--r--src/mame/video/gladiatr.c309
-rw-r--r--src/mame/video/glass.c211
-rw-r--r--src/mame/video/gng.c160
-rw-r--r--src/mame/video/goal92.c187
-rw-r--r--src/mame/video/goindol.c143
-rw-r--r--src/mame/video/goldstar.c200
-rw-r--r--src/mame/video/gomoku.c235
-rw-r--r--src/mame/video/goodejan.c104
-rw-r--r--src/mame/video/gotcha.c135
-rw-r--r--src/mame/video/gottlieb.c221
-rw-r--r--src/mame/video/gotya.c192
-rw-r--r--src/mame/video/gradius3.c190
-rw-r--r--src/mame/video/grchamp.c552
-rw-r--r--src/mame/video/gridlee.c212
-rw-r--r--src/mame/video/groundfx.c283
-rw-r--r--src/mame/video/gstriker.c609
-rw-r--r--src/mame/video/gsword.c220
-rw-r--r--src/mame/video/gtia.c1135
-rw-r--r--src/mame/video/gtia.h156
-rw-r--r--src/mame/video/gticlub.c1033
-rw-r--r--src/mame/video/gticlub.h12
-rw-r--r--src/mame/video/gumbo.c51
-rw-r--r--src/mame/video/gunbustr.c254
-rw-r--r--src/mame/video/gundealr.c143
-rw-r--r--src/mame/video/gunsmoke.c216
-rw-r--r--src/mame/video/gyruss.c218
-rw-r--r--src/mame/video/hanaawas.c118
-rw-r--r--src/mame/video/harddriv.c489
-rw-r--r--src/mame/video/hcastle.c231
-rw-r--r--src/mame/video/hexa.c75
-rw-r--r--src/mame/video/hexion.c168
-rw-r--r--src/mame/video/higemaru.c140
-rw-r--r--src/mame/video/hnayayoi.c274
-rw-r--r--src/mame/video/hng64.c2083
-rw-r--r--src/mame/video/holeland.c196
-rw-r--r--src/mame/video/homedata.c882
-rw-r--r--src/mame/video/homerun.c114
-rw-r--r--src/mame/video/hyhoo.c247
-rw-r--r--src/mame/video/hyperspt.c189
-rw-r--r--src/mame/video/hyprduel.c680
-rw-r--r--src/mame/video/ikki.c201
-rw-r--r--src/mame/video/inufuku.c263
-rw-r--r--src/mame/video/iqblock.c103
-rw-r--r--src/mame/video/irobot.c390
-rw-r--r--src/mame/video/ironhors.c262
-rw-r--r--src/mame/video/itech32.c1486
-rw-r--r--src/mame/video/itech8.c670
-rw-r--r--src/mame/video/jack.c179
-rw-r--r--src/mame/video/jackal.c217
-rw-r--r--src/mame/video/jagblit.c480
-rw-r--r--src/mame/video/jagblit.h139
-rw-r--r--src/mame/video/jagobj.c986
-rw-r--r--src/mame/video/jaguar.c881
-rw-r--r--src/mame/video/jailbrek.c136
-rw-r--r--src/mame/video/jalblend.c180
-rw-r--r--src/mame/video/jcross.c194
-rw-r--r--src/mame/video/jedi.c394
-rw-r--r--src/mame/video/jpmimpct.c151
-rw-r--r--src/mame/video/kan_panb.c275
-rw-r--r--src/mame/video/kan_panb.h4
-rw-r--r--src/mame/video/kan_pand.c258
-rw-r--r--src/mame/video/kan_pand.h11
-rw-r--r--src/mame/video/kaneko16.c1057
-rw-r--r--src/mame/video/kangaroo.c308
-rw-r--r--src/mame/video/karnov.c261
-rw-r--r--src/mame/video/kchamp.c139
-rw-r--r--src/mame/video/kickgoal.c257
-rw-r--r--src/mame/video/kingobox.c297
-rw-r--r--src/mame/video/klax.c133
-rw-r--r--src/mame/video/kncljoe.c260
-rw-r--r--src/mame/video/konamigx.c498
-rw-r--r--src/mame/video/konamiic.c8340
-rw-r--r--src/mame/video/konamiic.h454
-rw-r--r--src/mame/video/kopunch.c124
-rw-r--r--src/mame/video/ksayakyu.c116
-rw-r--r--src/mame/video/kyugo.c232
-rw-r--r--src/mame/video/labyrunr.c242
-rw-r--r--src/mame/video/ladybug.c475
-rw-r--r--src/mame/video/ladyfrog.c155
-rw-r--r--src/mame/video/lasso.c403
-rw-r--r--src/mame/video/lastduel.c253
-rw-r--r--src/mame/video/lazercmd.c85
-rw-r--r--src/mame/video/legionna.c450
-rw-r--r--src/mame/video/leland.c573
-rw-r--r--src/mame/video/lemmings.c199
-rw-r--r--src/mame/video/lethal.c146
-rw-r--r--src/mame/video/lethalj.c200
-rw-r--r--src/mame/video/liberate.c419
-rw-r--r--src/mame/video/liberatr.c377
-rw-r--r--src/mame/video/lkage.c210
-rw-r--r--src/mame/video/lordgun.c305
-rw-r--r--src/mame/video/lsasquad.c221
-rw-r--r--src/mame/video/lvcards.c115
-rw-r--r--src/mame/video/lwings.c293
-rw-r--r--src/mame/video/m107.c320
-rw-r--r--src/mame/video/m3raster.c283
-rw-r--r--src/mame/video/m62.c893
-rw-r--r--src/mame/video/m72.c597
-rw-r--r--src/mame/video/m79amb.c42
-rw-r--r--src/mame/video/m90.c261
-rw-r--r--src/mame/video/m92.c471
-rw-r--r--src/mame/video/macrossp.c414
-rw-r--r--src/mame/video/madmotor.c297
-rw-r--r--src/mame/video/magmax.c373
-rw-r--r--src/mame/video/mainevt.c115
-rw-r--r--src/mame/video/mainsnk.c205
-rw-r--r--src/mame/video/malzak.c230
-rw-r--r--src/mame/video/mappy.c590
-rw-r--r--src/mame/video/marineb.c472
-rw-r--r--src/mame/video/mario.c157
-rw-r--r--src/mame/video/markham.c139
-rw-r--r--src/mame/video/marvins.c434
-rw-r--r--src/mame/video/matmania.c358
-rw-r--r--src/mame/video/mayumi.c47
-rw-r--r--src/mame/video/mcatadv.c273
-rw-r--r--src/mame/video/mcr.c417
-rw-r--r--src/mame/video/mcr3.c292
-rw-r--r--src/mame/video/mcr68.c335
-rw-r--r--src/mame/video/meadows.c113
-rw-r--r--src/mame/video/megasys1.c1022
-rw-r--r--src/mame/video/megazone.c222
-rw-r--r--src/mame/video/mermaid.c197
-rw-r--r--src/mame/video/metlclsh.c256
-rw-r--r--src/mame/video/metro.c934
-rw-r--r--src/mame/video/mexico86.c249
-rw-r--r--src/mame/video/midtunit.c842
-rw-r--r--src/mame/video/midvunit.c573
-rw-r--r--src/mame/video/midyunit.c623
-rw-r--r--src/mame/video/midzeus.c1157
-rw-r--r--src/mame/video/mikie.c171
-rw-r--r--src/mame/video/mitchell.c288
-rw-r--r--src/mame/video/mjkjidai.c141
-rw-r--r--src/mame/video/mjsister.c111
-rw-r--r--src/mame/video/mnight.c206
-rw-r--r--src/mame/video/model1.c1535
-rw-r--r--src/mame/video/model2.c2773
-rw-r--r--src/mame/video/model2rd.c191
-rw-r--r--src/mame/video/model3.c1512
-rw-r--r--src/mame/video/mole.c59
-rw-r--r--src/mame/video/momoko.c324
-rw-r--r--src/mame/video/moo.c169
-rw-r--r--src/mame/video/mosaic.c87
-rw-r--r--src/mame/video/mouser.c190
-rw-r--r--src/mame/video/mpatrol.c391
-rw-r--r--src/mame/video/mrdo.c240
-rw-r--r--src/mame/video/mrflea.c97
-rw-r--r--src/mame/video/mrjong.c139
-rw-r--r--src/mame/video/ms32.c510
-rw-r--r--src/mame/video/msisaac.c251
-rw-r--r--src/mame/video/mugsmash.c155
-rw-r--r--src/mame/video/munchmo.c197
-rw-r--r--src/mame/video/mustache.c143
-rw-r--r--src/mame/video/mw8080bw.c391
-rw-r--r--src/mame/video/mystston.c172
-rw-r--r--src/mame/video/mystwarr.c555
-rw-r--r--src/mame/video/n64.c3479
-rw-r--r--src/mame/video/n8080.c405
-rw-r--r--src/mame/video/namcofl.c184
-rw-r--r--src/mame/video/namcona1.c667
-rw-r--r--src/mame/video/namconb1.c289
-rw-r--r--src/mame/video/namcos1.c420
-rw-r--r--src/mame/video/namcos2.c496
-rw-r--r--src/mame/video/namcos21.c489
-rw-r--r--src/mame/video/namcos22.c2485
-rw-r--r--src/mame/video/namcos86.c400
-rw-r--r--src/mame/video/naughtyb.c332
-rw-r--r--src/mame/video/nbmj8688.c747
-rw-r--r--src/mame/video/nbmj8891.c569
-rw-r--r--src/mame/video/nbmj8991.c385
-rw-r--r--src/mame/video/nbmj9195.c526
-rw-r--r--src/mame/video/nemesis.c459
-rw-r--r--src/mame/video/neogeo.c931
-rw-r--r--src/mame/video/news.c103
-rw-r--r--src/mame/video/ninjakd2.c158
-rw-r--r--src/mame/video/ninjakid.c302
-rw-r--r--src/mame/video/ninjaw.c169
-rw-r--r--src/mame/video/nitedrvr.c81
-rw-r--r--src/mame/video/niyanpai.c454
-rw-r--r--src/mame/video/nmk16.c884
-rw-r--r--src/mame/video/nova2001.c194
-rw-r--r--src/mame/video/nycaptor.c309
-rw-r--r--src/mame/video/offtwall.c118
-rw-r--r--src/mame/video/ohmygod.c114
-rw-r--r--src/mame/video/ojankohs.c333
-rw-r--r--src/mame/video/omegaf.c615
-rw-r--r--src/mame/video/oneshot.c198
-rw-r--r--src/mame/video/orbit.c109
-rw-r--r--src/mame/video/othldrby.c224
-rw-r--r--src/mame/video/othunder.c346
-rw-r--r--src/mame/video/overdriv.c87
-rw-r--r--src/mame/video/pacland.c407
-rw-r--r--src/mame/video/pacman.c603
-rw-r--r--src/mame/video/pandoras.c167
-rw-r--r--src/mame/video/paradise.c324
-rw-r--r--src/mame/video/parodius.c98
-rw-r--r--src/mame/video/pass.c66
-rw-r--r--src/mame/video/pastelg.c303
-rw-r--r--src/mame/video/pbaction.c134
-rw-r--r--src/mame/video/pcktgal.c100
-rw-r--r--src/mame/video/pgm.c352
-rw-r--r--src/mame/video/phoenix.c338
-rw-r--r--src/mame/video/pingpong.c156
-rw-r--r--src/mame/video/pirates.c117
-rw-r--r--src/mame/video/pitnrun.c291
-rw-r--r--src/mame/video/pktgaldx.c158
-rw-r--r--src/mame/video/pkunwar.c117
-rw-r--r--src/mame/video/playch10.c174
-rw-r--r--src/mame/video/playmark.c477
-rw-r--r--src/mame/video/plygonet.c93
-rw-r--r--src/mame/video/pokechmp.c74
-rw-r--r--src/mame/video/polepos.c532
-rw-r--r--src/mame/video/policetr.c370
-rw-r--r--src/mame/video/polyplay.c71
-rw-r--r--src/mame/video/poolshrk.c55
-rw-r--r--src/mame/video/pooyan.c134
-rw-r--r--src/mame/video/popeye.c388
-rw-r--r--src/mame/video/popper.c244
-rw-r--r--src/mame/video/portrait.c171
-rw-r--r--src/mame/video/powerins.c373
-rw-r--r--src/mame/video/ppu2c0x.c1578
-rw-r--r--src/mame/video/ppu2c0x.h129
-rw-r--r--src/mame/video/prehisle.c154
-rw-r--r--src/mame/video/psikyo.c599
-rw-r--r--src/mame/video/psikyo4.c144
-rw-r--r--src/mame/video/psikyosh.c1158
-rw-r--r--src/mame/video/psx.c3925
-rw-r--r--src/mame/video/psychic5.c467
-rw-r--r--src/mame/video/punchout.c438
-rw-r--r--src/mame/video/pushman.c119
-rw-r--r--src/mame/video/qdrmfgp.c69
-rw-r--r--src/mame/video/qix.c334
-rw-r--r--src/mame/video/quasar.c283
-rw-r--r--src/mame/video/quizdna.c202
-rw-r--r--src/mame/video/quizpani.c91
-rw-r--r--src/mame/video/raiden.c164
-rw-r--r--src/mame/video/raiders5.c233
-rw-r--r--src/mame/video/rallyx.c581
-rw-r--r--src/mame/video/rampart.c212
-rw-r--r--src/mame/video/rastan.c222
-rw-r--r--src/mame/video/realbrk.c638
-rw-r--r--src/mame/video/redalert.c304
-rw-r--r--src/mame/video/redclash.c417
-rw-r--r--src/mame/video/relief.c173
-rw-r--r--src/mame/video/renegade.c143
-rw-r--r--src/mame/video/retofinv.c247
-rw-r--r--src/mame/video/rockola.c310
-rw-r--r--src/mame/video/rockrage.c95
-rw-r--r--src/mame/video/rocnrope.c130
-rw-r--r--src/mame/video/rohga.c545
-rw-r--r--src/mame/video/rollerg.c76
-rw-r--r--src/mame/video/rollrace.c170
-rw-r--r--src/mame/video/route16.c195
-rw-r--r--src/mame/video/rpunch.c291
-rw-r--r--src/mame/video/runaway.c159
-rw-r--r--src/mame/video/rungun.c130
-rw-r--r--src/mame/video/sauro.c217
-rw-r--r--src/mame/video/sbasketb.c173
-rw-r--r--src/mame/video/sbrkout.c58
-rw-r--r--src/mame/video/sbugger.c60
-rw-r--r--src/mame/video/scotrsht.c169
-rw-r--r--src/mame/video/sderby.c142
-rw-r--r--src/mame/video/segag80r.c865
-rw-r--r--src/mame/video/segag80v.c343
-rw-r--r--src/mame/video/segahang.c93
-rw-r--r--src/mame/video/segaic16.c3588
-rw-r--r--src/mame/video/segaic16.h89
-rw-r--r--src/mame/video/segaic24.c895
-rw-r--r--src/mame/video/segaic24.h45
-rw-r--r--src/mame/video/segaorun.c122
-rw-r--r--src/mame/video/segas16a.c70
-rw-r--r--src/mame/video/segas16b.c82
-rw-r--r--src/mame/video/segas18.c257
-rw-r--r--src/mame/video/segas32.c2847
-rw-r--r--src/mame/video/segasyse.c563
-rw-r--r--src/mame/video/segaxbd.c102
-rw-r--r--src/mame/video/segaybd.c75
-rw-r--r--src/mame/video/seibuspi.c665
-rw-r--r--src/mame/video/seicross.c149
-rw-r--r--src/mame/video/sengokmj.c129
-rw-r--r--src/mame/video/senjyo.c411
-rw-r--r--src/mame/video/seta.c965
-rw-r--r--src/mame/video/seta2.c390
-rw-r--r--src/mame/video/sf.c240
-rw-r--r--src/mame/video/shadfrce.c180
-rw-r--r--src/mame/video/shangha3.c268
-rw-r--r--src/mame/video/shangkid.c298
-rw-r--r--src/mame/video/shaolins.c195
-rw-r--r--src/mame/video/shisen.c65
-rw-r--r--src/mame/video/shootout.c175
-rw-r--r--src/mame/video/shuuz.c140
-rw-r--r--src/mame/video/sidearms.c363
-rw-r--r--src/mame/video/sidepckt.c149
-rw-r--r--src/mame/video/silkroad.c189
-rw-r--r--src/mame/video/simpl156.c156
-rw-r--r--src/mame/video/simpsons.c181
-rw-r--r--src/mame/video/skullxbo.c309
-rw-r--r--src/mame/video/skychut.c138
-rw-r--r--src/mame/video/skydiver.c212
-rw-r--r--src/mame/video/skyfox.c294
-rw-r--r--src/mame/video/skykid.c273
-rw-r--r--src/mame/video/skyraid.c159
-rw-r--r--src/mame/video/slapfght.c254
-rw-r--r--src/mame/video/slapshot.c633
-rw-r--r--src/mame/video/snes.c2208
-rw-r--r--src/mame/video/snk.c631
-rw-r--r--src/mame/video/snk68.c299
-rw-r--r--src/mame/video/solomon.c107
-rw-r--r--src/mame/video/sonson.c171
-rw-r--r--src/mame/video/spacefb.c471
-rw-r--r--src/mame/video/spbactn.c281
-rw-r--r--src/mame/video/spcforce.c55
-rw-r--r--src/mame/video/spdodgeb.c221
-rw-r--r--src/mame/video/speedatk.c109
-rw-r--r--src/mame/video/speedbal.c135
-rw-r--r--src/mame/video/speedspn.c113
-rw-r--r--src/mame/video/splash.c292
-rw-r--r--src/mame/video/sprcros2.c169
-rw-r--r--src/mame/video/sprint2.c196
-rw-r--r--src/mame/video/sprint4.c163
-rw-r--r--src/mame/video/sprint8.c157
-rw-r--r--src/mame/video/spy.c84
-rw-r--r--src/mame/video/srmp2.c462
-rw-r--r--src/mame/video/srumbler.c174
-rw-r--r--src/mame/video/sshangha.c258
-rw-r--r--src/mame/video/sslam.c216
-rw-r--r--src/mame/video/ssozumo.c181
-rw-r--r--src/mame/video/sspeedr.c274
-rw-r--r--src/mame/video/ssrj.c292
-rw-r--r--src/mame/video/ssv.c1169
-rw-r--r--src/mame/video/st0016.c685
-rw-r--r--src/mame/video/stactics.c878
-rw-r--r--src/mame/video/stadhero.c169
-rw-r--r--src/mame/video/starcrus.c572
-rw-r--r--src/mame/video/starfire.c276
-rw-r--r--src/mame/video/starshp1.c432
-rw-r--r--src/mame/video/stfight.c300
-rw-r--r--src/mame/video/stlforce.c196
-rw-r--r--src/mame/video/strnskil.c148
-rw-r--r--src/mame/video/stvvdp1.c2147
-rw-r--r--src/mame/video/stvvdp2.c6291
-rw-r--r--src/mame/video/subs.c163
-rw-r--r--src/mame/video/suna16.c245
-rw-r--r--src/mame/video/suna8.c449
-rw-r--r--src/mame/video/supbtime.c103
-rw-r--r--src/mame/video/superchs.c251
-rw-r--r--src/mame/video/superqix.c260
-rw-r--r--src/mame/video/suprloco.c277
-rw-r--r--src/mame/video/suprnova.c973
-rw-r--r--src/mame/video/suprridr.c212
-rw-r--r--src/mame/video/suprslam.c174
-rw-r--r--src/mame/video/surpratk.c99
-rw-r--r--src/mame/video/sys16spr.c188
-rw-r--r--src/mame/video/system1.c904
-rw-r--r--src/mame/video/system1.h50
-rw-r--r--src/mame/video/system16.c1147
-rw-r--r--src/mame/video/system24.c54
-rw-r--r--src/mame/video/tagteam.c187
-rw-r--r--src/mame/video/tail2nos.c214
-rw-r--r--src/mame/video/taito_b.c635
-rw-r--r--src/mame/video/taito_f2.c1442
-rw-r--r--src/mame/video/taito_f3.c3321
-rw-r--r--src/mame/video/taito_h.c502
-rw-r--r--src/mame/video/taito_l.c352
-rw-r--r--src/mame/video/taito_z.c1032
-rw-r--r--src/mame/video/taitoair.c420
-rw-r--r--src/mame/video/taitoic.c5263
-rw-r--r--src/mame/video/taitoic.h234
-rw-r--r--src/mame/video/taitojc.c644
-rw-r--r--src/mame/video/taitosj.c934
-rw-r--r--src/mame/video/tank8.c275
-rw-r--r--src/mame/video/tankbatt.c110
-rw-r--r--src/mame/video/tankbust.c253
-rw-r--r--src/mame/video/taotaido.c241
-rw-r--r--src/mame/video/targeth.c150
-rw-r--r--src/mame/video/tatsumi.c997
-rw-r--r--src/mame/video/taxidrvr.c157
-rw-r--r--src/mame/video/tbowl.c250
-rw-r--r--src/mame/video/tceptor.c597
-rw-r--r--src/mame/video/tecmo.c252
-rw-r--r--src/mame/video/tecmo16.c507
-rw-r--r--src/mame/video/tehkanwc.c200
-rw-r--r--src/mame/video/terracre.c224
-rw-r--r--src/mame/video/tetrisp2.c797
-rw-r--r--src/mame/video/thedeep.c236
-rw-r--r--src/mame/video/thepit.c312
-rw-r--r--src/mame/video/thief.c314
-rw-r--r--src/mame/video/thoop2.c242
-rw-r--r--src/mame/video/thunderj.c296
-rw-r--r--src/mame/video/thunderx.c91
-rw-r--r--src/mame/video/tia.c2004
-rw-r--r--src/mame/video/tia.h26
-rw-r--r--src/mame/video/tiamc1.c210
-rw-r--r--src/mame/video/tickee.c121
-rw-r--r--src/mame/video/tigeroad.c170
-rw-r--r--src/mame/video/timelimt.c152
-rw-r--r--src/mame/video/timeplt.c224
-rw-r--r--src/mame/video/tmnt.c815
-rw-r--r--src/mame/video/tnzs.c236
-rw-r--r--src/mame/video/toaplan1.c1246
-rw-r--r--src/mame/video/toaplan2.c1619
-rw-r--r--src/mame/video/toki.c321
-rw-r--r--src/mame/video/toobin.c270
-rw-r--r--src/mame/video/topspeed.c199
-rw-r--r--src/mame/video/toypop.c236
-rw-r--r--src/mame/video/tp84.c289
-rw-r--r--src/mame/video/trackfld.c230
-rw-r--r--src/mame/video/travrusa.c332
-rw-r--r--src/mame/video/triplhnt.c148
-rw-r--r--src/mame/video/troangel.c239
-rw-r--r--src/mame/video/truco.c54
-rw-r--r--src/mame/video/trucocl.c82
-rw-r--r--src/mame/video/tryout.c263
-rw-r--r--src/mame/video/tsamurai.c277
-rw-r--r--src/mame/video/tubep.c926
-rw-r--r--src/mame/video/tumbleb.c840
-rw-r--r--src/mame/video/tumblep.c100
-rw-r--r--src/mame/video/tunhunt.c412
-rw-r--r--src/mame/video/turbo.c1094
-rw-r--r--src/mame/video/tutankhm.c164
-rw-r--r--src/mame/video/twin16.c463
-rw-r--r--src/mame/video/twincobr.c521
-rw-r--r--src/mame/video/tx1.c406
-rw-r--r--src/mame/video/ultraman.c135
-rw-r--r--src/mame/video/ultratnk.c164
-rw-r--r--src/mame/video/undrfire.c371
-rw-r--r--src/mame/video/unico.c412
-rw-r--r--src/mame/video/usgames.c74
-rw-r--r--src/mame/video/vaportra.c187
-rw-r--r--src/mame/video/vastar.c229
-rw-r--r--src/mame/video/vball.c191
-rw-r--r--src/mame/video/vendetta.c124
-rw-r--r--src/mame/video/vertigo.c656
-rw-r--r--src/mame/video/vicdual.c151
-rw-r--r--src/mame/video/victory.c1231
-rw-r--r--src/mame/video/videopin.c116
-rw-r--r--src/mame/video/vigilant.c342
-rw-r--r--src/mame/video/vindictr.c303
-rw-r--r--src/mame/video/volfied.c139
-rw-r--r--src/mame/video/vrender0.c522
-rw-r--r--src/mame/video/vrender0.h2
-rw-r--r--src/mame/video/vsnes.c76
-rw-r--r--src/mame/video/vulgus.c229
-rw-r--r--src/mame/video/warpwarp.c269
-rw-r--r--src/mame/video/warriorb.c138
-rw-r--r--src/mame/video/wc90.c386
-rw-r--r--src/mame/video/wc90b.c151
-rw-r--r--src/mame/video/wecleman.c1132
-rw-r--r--src/mame/video/welltris.c250
-rw-r--r--src/mame/video/wgp.c774
-rw-r--r--src/mame/video/williams.c777
-rw-r--r--src/mame/video/wiping.c219
-rw-r--r--src/mame/video/wiz.c301
-rw-r--r--src/mame/video/wolfpack.c327
-rw-r--r--src/mame/video/wrally.c172
-rw-r--r--src/mame/video/wwfsstar.c225
-rw-r--r--src/mame/video/wwfwfest.c284
-rw-r--r--src/mame/video/xain.c275
-rw-r--r--src/mame/video/xevious.c518
-rw-r--r--src/mame/video/xexex.c143
-rw-r--r--src/mame/video/xmen.c258
-rw-r--r--src/mame/video/xorworld.c115
-rw-r--r--src/mame/video/xxmissio.c201
-rw-r--r--src/mame/video/xybots.c166
-rw-r--r--src/mame/video/xyonix.c63
-rw-r--r--src/mame/video/yard.c281
-rw-r--r--src/mame/video/ygv608.c1801
-rw-r--r--src/mame/video/ygv608.h342
-rw-r--r--src/mame/video/yiear.c150
-rw-r--r--src/mame/video/yunsun16.c237
-rw-r--r--src/mame/video/yunsung8.c206
-rw-r--r--src/mame/video/zac2650.c242
-rw-r--r--src/mame/video/zaccaria.c291
-rw-r--r--src/mame/video/zaxxon.c487
-rw-r--r--src/mame/video/zerozone.c50
-rw-r--r--src/mame/video/zodiack.c219
2229 files changed, 1381381 insertions, 0 deletions
diff --git a/src/mame/audio/8080bw.c b/src/mame/audio/8080bw.c
new file mode 100644
index 00000000000..929fff1efc2
--- /dev/null
+++ b/src/mame/audio/8080bw.c
@@ -0,0 +1,1112 @@
+/* 8080bw.c *********************************
+ */
+#include "driver.h"
+#include "8080bw.h"
+#include "mw8080bw.h"
+#include "sound/samples.h"
+#include "sound/sn76477.h"
+#include "sound/discrete.h"
+#include "sound/speaker.h"
+
+
+static emu_timer *schaser_effect_555_timer;
+static attotime schaser_effect_555_time_remain;
+static int schaser_effect_555_is_low;
+static int schaser_explosion;
+static UINT8 port_1_last = 0;
+static UINT8 port_2_last = 0;
+static UINT8 port_3_last = 0;
+
+
+/*******************************************************/
+/* */
+/* Midway "Space Invaders Part II" */
+/* */
+/*******************************************************/
+
+WRITE8_HANDLER( invadpt2_sh_port_1_w )
+{
+ UINT8 rising_bits = data & ~port_1_last;
+
+ SN76477_enable_w(0, !(data & 0x01)); /* SAUCER SOUND */
+
+ if (rising_bits & 0x02) sample_start_n(0, 0, 0, 0); /* MISSLE SOUND */
+ if (rising_bits & 0x04) sample_start_n(0, 1, 1, 0); /* EXPLOSION */
+ if (rising_bits & 0x08) sample_start_n(0, 2, 2, 0); /* INVADER HIT */
+ if (rising_bits & 0x10) sample_start_n(0, 5, 8, 0); /* BONUS MISSILE BASE */
+
+ c8080bw_screen_red_w(data & 0x04);
+
+ sound_global_enable(data & 0x20);
+
+ port_1_last = data;
+
+}
+
+WRITE8_HANDLER( invadpt2_sh_port_2_w )
+{
+ /* FLEET (movement)
+
+ DO = 20K + 20K
+ D1 = 68K
+ D2 = 82K
+ D3 = 100K */
+
+ UINT8 rising_bits = data & ~port_2_last;
+
+ if (rising_bits & 0x01) sample_start_n(0, 4, 3, 0); /* FLEET */
+ if (rising_bits & 0x02) sample_start_n(0, 4, 4, 0); /* FLEET */
+ if (rising_bits & 0x04) sample_start_n(0, 4, 5, 0); /* FLEET */
+ if (rising_bits & 0x08) sample_start_n(0, 4, 6, 0); /* FLEET */
+ if (rising_bits & 0x10) sample_start_n(0, 3, 7, 0); /* SAUCER HIT */
+
+ c8080bw_flip_screen_w(data & 0x20);
+
+ port_2_last = data;
+}
+
+
+/*******************************************************/
+/* */
+/* Sanritsu "Space War" */
+/* */
+/*******************************************************/
+
+WRITE8_HANDLER( spcewars_sh_port_w )
+{
+ UINT8 rising_bits = data & ~port_1_last;
+
+ SN76477_enable_w(0, !(data & 0x01)); /* Saucer Sound */
+
+ if (rising_bits & 0x02) sample_start(0, 0, 0); /* Shot Sound */
+ if (rising_bits & 0x04) sample_start(1, 1, 0); /* Base Hit */
+ if (rising_bits & 0x08) sample_start(2, 2, 0); /* Invader Hit */
+
+ speaker_level_w(0, (data & 0x10) ? 1 : 0); /* Various bitstream tunes */
+
+ port_1_last = data;
+}
+
+
+/*******************************************************/
+/* */
+/* lrescue, grescue, lrescuem, desterth */
+/* */
+/*******************************************************/
+
+static const char *lrescue_sample_names[] =
+{
+ "*lrescue",
+ "alienexplosion.wav",
+ "rescueshipexplosion.wav",
+ "beamgun.wav",
+ "thrust.wav",
+ "bonus2.wav",
+ "bonus3.wav",
+ "shootingstar.wav",
+ "stepl.wav",
+ "steph.wav",
+ 0
+};
+
+struct Samplesinterface lrescue_samples_interface =
+{
+ 4, /* 4 channels */
+ lrescue_sample_names
+};
+
+WRITE8_HANDLER( lrescue_sh_port_1_w )
+{
+ UINT8 rising_bits = data & ~port_1_last;
+
+ if (rising_bits & 0x01) sample_start(0, 3, 0); /* Thrust */
+ if (rising_bits & 0x02) sample_start(1, 2, 0); /* Shot Sound */
+ if (rising_bits & 0x04) sample_start(0, 1, 0); /* Death */
+ if (rising_bits & 0x08) sample_start(1, 0, 0); /* Alien Hit */
+ if (rising_bits & 0x10) sample_start(2, 5, 0); /* Bonus Ship (not confirmed) */
+
+ sound_global_enable(data & 0x20);
+
+ c8080bw_screen_red_w(data & 0x04);
+
+ port_1_last = data;
+}
+
+WRITE8_HANDLER( lrescue_sh_port_2_w )
+{
+ UINT8 rising_bits = data & ~port_2_last;
+
+ if (rising_bits & 0x01) sample_start(1, 8, 0); /* Footstep high tone */
+ if (rising_bits & 0x02) sample_start(1, 7, 0); /* Footstep low tone */
+ if (rising_bits & 0x04) sample_start(1, 4, 0); /* Bonus when counting men saved */
+
+ speaker_level_w(0, (data & 0x08) ? 1 : 0); /* Bitstream tunes - endlevel and bonus1 */
+
+ if (rising_bits & 0x10) sample_start(3, 6, 0); /* Shooting Star and Rescue Ship sounds */
+ if (~data & 0x10 && port_2_last & 0x10) sample_stop (3); /* This makes the rescue ship sound beep on and off */
+
+ c8080bw_flip_screen_w(data & 0x20);
+
+ port_2_last = data;
+}
+
+
+/*******************************************************/
+/* */
+/* Cosmo */
+/* */
+/*******************************************************/
+
+WRITE8_HANDLER( cosmo_sh_port_2_w )
+{
+ /* inverted flip screen bit */
+ invadpt2_sh_port_2_w(offset, data ^ 0x20);
+}
+
+
+/*******************************************************/
+/* */
+/* Taito "Balloon Bomber" */
+/* The sounds are not the correct ones */
+/* */
+/*******************************************************/
+
+WRITE8_HANDLER( ballbomb_sh_port_1_w )
+{
+ UINT8 rising_bits = data & ~port_1_last;
+
+ if (rising_bits & 0x01) sample_start(1, 2, 0); /* Hit a balloon */
+ if (rising_bits & 0x02) sample_start(2, 0, 0); /* Shot Sound */
+ if (rising_bits & 0x04) sample_start(2, 1, 0); /* Base Hit */
+ if (rising_bits & 0x08) sample_start(1, 7, 0); /* Hit a Bomb */
+ if (rising_bits & 0x10) sample_start(3, 8, 0); /* Bonus Base at 1500 points */
+
+ sound_global_enable(data & 0x20);
+
+ c8080bw_screen_red_w(data & 0x04);
+
+ port_1_last = data;
+}
+
+WRITE8_HANDLER( ballbomb_sh_port_2_w )
+{
+ UINT8 rising_bits = data & ~port_2_last;
+
+ if (data & 0x01) sample_start(0, 7, 0); /* Indicates plane will drop bombs */
+ if (data & 0x04) sample_start(0, 4, 0); /* Plane is dropping new balloons at start of level */
+ if (rising_bits & 0x10) sample_start(2, 2, 0); /* Balloon hit and bomb drops */
+
+ c8080bw_flip_screen_w(data & 0x20);
+
+ port_2_last = data;
+}
+
+
+
+/*******************************************************/
+/* */
+/* Taito "Indian Battle" */
+/* Sept 2005, D.R. */
+/*******************************************************/
+static const discrete_dac_r1_ladder indianbt_music_dac =
+ {3, {0, RES_K(47), RES_K(12)}, 0, 0, 0, CAP_U(0.1)};
+
+#define INDIANBT_MUSIC_CLK (7680.0*2*2*2)
+
+/* Nodes - Inputs */
+#define INDIANBT_MUSIC_DATA NODE_01
+/* Nodes - Sounds */
+#define INDIANBT_MUSIC NODE_11
+
+DISCRETE_SOUND_START(indianbt)
+
+ DISCRETE_INPUT_DATA (INDIANBT_MUSIC_DATA)
+
+/******************************************************************************
+ *
+ * Music Generator
+ *
+ ******************************************************************************/
+ DISCRETE_NOTE(NODE_20, 1, INDIANBT_MUSIC_CLK, INDIANBT_MUSIC_DATA, 255, 5, DISC_CLK_IS_FREQ)
+
+ // Convert count to 7492 output
+ DISCRETE_TRANSFORM2(NODE_21, 1, NODE_20, 2, "01>0+")
+
+ DISCRETE_DAC_R1(NODE_22, 1, NODE_21, DEFAULT_TTL_V_LOGIC_1, &indianbt_music_dac)
+
+/******************************************************************************
+ *
+ * Final Mixing and Output
+ *
+ ******************************************************************************/
+ DISCRETE_CRFILTER(NODE_90, 1, NODE_22, RES_K(10), CAP_U(0.1))
+
+ DISCRETE_OUTPUT(NODE_90, 21000)
+
+DISCRETE_SOUND_END
+
+WRITE8_HANDLER( indianbt_sh_port_1_w )
+{
+ /* bit 4 occurs every 5.25 seconds during gameplay */
+
+ UINT8 rising_bits = data & ~port_1_last;
+
+ if (rising_bits & 0x01) sample_start(1, 7, 0); /* Death */
+ if (rising_bits & 0x02) sample_start(0, 1, 0); /* Shot Sound */
+ if (rising_bits & 0x04) sample_start(2, 3, 0); /* Move */
+ if (rising_bits & 0x08) sample_start(3, 2, 0); /* Hit */
+
+ sound_global_enable(data & 0x20);
+
+ c8080bw_screen_red_w(data & 0x01);
+
+ port_1_last = data;
+}
+
+WRITE8_HANDLER( indianbt_sh_port_2_w )
+{
+ UINT8 rising_bits = data & ~port_2_last;
+
+ if (rising_bits & 0x01) sample_start(4, 0, 0); /* Bird dropped an egg, Lasso used */
+ if (rising_bits & 0x02) sample_start(4, 2, 0); /* Egg hatches, egg shot */
+ if (rising_bits & 0x08) sample_start(5, 0, 0); /* Grabber, Lasso caught something */
+ if (rising_bits & 0x10) sample_start(3, 7, 0); /* Lasso sound */
+
+ port_2_last = data;
+}
+
+WRITE8_HANDLER( indianbt_sh_port_3_w )
+{
+ discrete_sound_w(INDIANBT_MUSIC_DATA, data);
+}
+
+
+/*******************************************************************/
+/* */
+/* Taito "Polaris" */
+/* */
+/* D.R. */
+/* The R/C values in the schematic may have no bearing in reality. */
+/* I have noted some differences from a real board. */
+/* */
+/*******************************************************************/
+
+static const discrete_lfsr_desc polaris_lfsr={
+ DISC_CLK_IS_FREQ,
+ 17, /* Bit Length */
+ 0, /* Reset Value */
+ 4, /* Use Bit 4 as XOR input 0 */
+ 16, /* Use Bit 16 as XOR input 1 */
+ DISC_LFSR_XOR, /* Feedback stage1 is XOR */
+ DISC_LFSR_OR, /* Feedback stage2 is just stage 1 output OR with external feed */
+ DISC_LFSR_REPLACE, /* Feedback stage3 replaces the shifted register contents */
+ 0x000001, /* Everything is shifted into the first bit only */
+ 0, /* Output is not inverted */
+ 12 /* Output bit */
+};
+
+static const discrete_dac_r1_ladder polaris_music_dac =
+ {2, {RES_K(47), RES_K(12), 0,0,0,0,0,0}, 0, 0, 0, CAP_P(180)};
+
+static const discrete_op_amp_filt_info polaris_music_op_amp_filt_info =
+ {RES_K(580), 0, 0, RES_M(2.2), RES_M(1), CAP_U(.01), 0, 0, 0, 12, 0};
+
+static const discrete_op_amp_filt_info polaris_nol_op_amp_filt_info =
+ {560, RES_K(6.8), RES_K(1002), RES_M(2.2), RES_M(1), CAP_U(.22), CAP_U(.22), CAP_U(1), 0, 12, 0};
+
+static const discrete_op_amp_filt_info polaris_noh_op_amp_filt_info =
+ {560, RES_K(6.8), RES_K(1002), RES_M(2.2), RES_M(1), CAP_U(.001), CAP_U(.001), CAP_U(.01), 0, 12, 0};
+
+static const discrete_op_amp_osc_info polaris_sonar_vco_info =
+ {DISC_OP_AMP_OSCILLATOR_VCO_1 | DISC_OP_AMP_IS_NORTON | DISC_OP_AMP_OSCILLATOR_OUT_CAP, RES_M(1), RES_K(680), RES_K(680), RES_M(1), RES_M(1), RES_K(120), RES_M(1), 0, CAP_P(180), 12};
+
+static const discrete_op_amp_tvca_info polaris_sonar_tvca_info =
+ { RES_M(2.7), RES_K(680), 0, RES_K(680), RES_K(1), RES_K(120), RES_K(560), 0, 0, 0, 0, CAP_U(1), 0, 0, 12, 12, 12, 12, DISC_OP_AMP_TRIGGER_FUNCTION_NONE, DISC_OP_AMP_TRIGGER_FUNCTION_NONE, DISC_OP_AMP_TRIGGER_FUNCTION_TRG1, DISC_OP_AMP_TRIGGER_FUNCTION_TRG0_INV, DISC_OP_AMP_TRIGGER_FUNCTION_NONE, DISC_OP_AMP_TRIGGER_FUNCTION_NONE};
+
+static const discrete_op_amp_osc_info polaris_boat_mod_info =
+ {DISC_OP_AMP_OSCILLATOR_1 | DISC_OP_AMP_IS_NORTON | DISC_OP_AMP_OSCILLATOR_OUT_CAP, RES_M(1), RES_K(10), RES_K(100), RES_K(120), RES_M(1), 0, 0, 0, CAP_U(.22), 12};
+
+static const discrete_op_amp_osc_info polaris_boat_vco_info =
+ {DISC_OP_AMP_OSCILLATOR_VCO_1 | DISC_OP_AMP_IS_NORTON | DISC_OP_AMP_OSCILLATOR_OUT_CAP, RES_M(1), RES_K(680), RES_K(680), RES_M(1), RES_M(1), 0, 0, 0, CAP_P(180), 12};
+
+static const discrete_op_amp_tvca_info polaris_shot_tvca_info =
+ { RES_M(2.7), RES_K(680), RES_K(680), RES_K(680), RES_K(1), 0, RES_K(680), 0, 0, 0, 0, CAP_U(1), 0, 0, 12, 12, 12, 12, DISC_OP_AMP_TRIGGER_FUNCTION_TRG0_INV, DISC_OP_AMP_TRIGGER_FUNCTION_TRG0, DISC_OP_AMP_TRIGGER_FUNCTION_TRG0, DISC_OP_AMP_TRIGGER_FUNCTION_NONE, DISC_OP_AMP_TRIGGER_FUNCTION_NONE, DISC_OP_AMP_TRIGGER_FUNCTION_NONE};
+
+static const discrete_op_amp_tvca_info polaris_shiphit_tvca_info =
+ { RES_M(2.7), RES_K(680), RES_K(680), RES_K(680), RES_K(1), 0, RES_K(680), 0, 0, 0, 0, CAP_U(1), 0, 0, 12, 12, 12, 12, DISC_OP_AMP_TRIGGER_FUNCTION_TRG0_INV, DISC_OP_AMP_TRIGGER_FUNCTION_NONE, DISC_OP_AMP_TRIGGER_FUNCTION_TRG0, DISC_OP_AMP_TRIGGER_FUNCTION_NONE, DISC_OP_AMP_TRIGGER_FUNCTION_NONE, DISC_OP_AMP_TRIGGER_FUNCTION_NONE};
+
+static const discrete_op_amp_tvca_info polaris_exp_tvca_info =
+ { RES_M(2.7), RES_K(680), 0, RES_K(680), RES_K(1), 0, RES_K(680), 0, 0, 0, 0, CAP_U(.33), 0, 0, 12, 12, 12, 12, DISC_OP_AMP_TRIGGER_FUNCTION_NONE, DISC_OP_AMP_TRIGGER_FUNCTION_NONE, DISC_OP_AMP_TRIGGER_FUNCTION_TRG0, DISC_OP_AMP_TRIGGER_FUNCTION_NONE, DISC_OP_AMP_TRIGGER_FUNCTION_NONE, DISC_OP_AMP_TRIGGER_FUNCTION_NONE};
+
+// The schematic shows a .22uF cap but Guru's board has a 1uF
+static const discrete_op_amp_tvca_info polaris_hit_tvca_info =
+ { RES_M(2.7), RES_K(1360), RES_K(1360), RES_K(680), RES_K(1), 0, RES_K(680), 0, 0, 0, 0, CAP_U(1), 0, 0, 12, 12, 12, 12, DISC_OP_AMP_TRIGGER_FUNCTION_TRG0, DISC_OP_AMP_TRIGGER_FUNCTION_TRG1, DISC_OP_AMP_TRIGGER_FUNCTION_TRG01_NAND, DISC_OP_AMP_TRIGGER_FUNCTION_NONE, DISC_OP_AMP_TRIGGER_FUNCTION_NONE, DISC_OP_AMP_TRIGGER_FUNCTION_NONE};
+
+// The schematic shows a 1uF cap but Guru's board has a 2.2uF
+static const discrete_integrate_info polaris_plane_integrate_info =
+ {DISC_INTEGRATE_OP_AMP_2 | DISC_OP_AMP_IS_NORTON, RES_K(1001), RES_K(1001), RES_K(101), CAP_U(2.2), 12, 12, DISC_OP_AMP_TRIGGER_FUNCTION_TRG0, DISC_OP_AMP_TRIGGER_FUNCTION_TRG0_INV, DISC_OP_AMP_TRIGGER_FUNCTION_TRG1_INV};
+
+// A bit of a cheat. The schematic show the cap as 47p, but that makes the frequency too high.
+// Guru's board has a .01 cap, which would make the freq sub-sonic using the other schematic values.
+// I will use 2000p until the proper values can be confirmed.
+static const discrete_op_amp_osc_info polaris_plane_vco_info =
+ {DISC_OP_AMP_OSCILLATOR_VCO_1 | DISC_OP_AMP_IS_NORTON | DISC_OP_AMP_OSCILLATOR_OUT_CAP, RES_M(1), RES_K(680), RES_K(680), RES_M(1), RES_M(1), RES_K(100), RES_K(10), RES_K(100), CAP_U(0.002), 12};
+
+static const discrete_mixer_desc polaris_mixer_vr1_desc =
+ {DISC_MIXER_IS_RESISTOR,
+ {RES_K(66), RES_K(43), RES_K(20), RES_K(43)},
+ {0}, // no variable resistors
+ {CAP_U(1), CAP_U(1), CAP_U(1), CAP_U(1)},
+ 0, RES_K(50), 0, 0, 0, 1};
+
+static const discrete_mixer_desc polaris_mixer_vr2_desc =
+ {DISC_MIXER_IS_RESISTOR,
+ {RES_K(66), RES_K(110)},
+ {0}, // no variable resistors
+ {CAP_U(1), CAP_U(1)},
+ 0, RES_K(50), 0, 0, 0, 1};
+
+// Note: the final gain leaves the explosions (SX3) at a level
+// where they clip. From the schematics, this is how they wanted it.
+// This makes them have more bass and distortion.
+static const discrete_mixer_desc polaris_mixer_vr4_desc =
+ {DISC_MIXER_IS_RESISTOR,
+ {RES_K(22), RES_K(20), RES_K(22), RES_K(22)},
+ {0}, // no variable resistors
+ {0, CAP_U(1), 0, 0},
+ 0, RES_K(50), 0, CAP_U(1), 0, 40000};
+
+/* Nodes - Inputs */
+#define POLARIS_MUSIC_DATA NODE_01
+#define POLARIS_SX0_EN NODE_02
+#define POLARIS_SX1_EN NODE_03
+#define POLARIS_SX2_EN NODE_04
+#define POLARIS_SX3_EN NODE_05
+#define POLARIS_SX5_EN NODE_06
+#define POLARIS_SX6_EN NODE_07
+#define POLARIS_SX7_EN NODE_08
+#define POLARIS_SX9_EN NODE_09
+#define POLARIS_SX10_EN NODE_10
+/* Nodes - Sounds */
+#define POLARIS_MUSIC NODE_11
+#define POLARIS_NOISE_LO NODE_12
+#define POLARIS_NOISE_LO_FILT NODE_13
+#define POLARIS_NOISE_HI_FILT NODE_14
+#define POLARIS_SHOTSND NODE_15
+#define POLARIS_SHIP_HITSND NODE_16
+#define POLARIS_SHIPSND NODE_17
+#define POLARIS_EXPLOSIONSND NODE_18
+#define POLARIS_PLANESND NODE_19
+#define POLARIS_HITSND NODE_20
+#define POLARIS_SONARSND NODE_21
+/* Nodes - Adjust */
+#define POLARIS_ADJ_VR1 NODE_23
+#define POLARIS_ADJ_VR2 NODE_24
+#define POLARIS_ADJ_VR3 NODE_25
+
+DISCRETE_SOUND_START(polaris)
+
+ /************************************************/
+ /* Polaris sound system: 8 Sound Sources */
+ /* */
+ /* Relative volumes are adjustable */
+ /* */
+ /************************************************/
+
+ /************************************************/
+ /* Input register mapping for polaris */
+ /************************************************/
+ DISCRETE_INPUT_DATA (POLARIS_MUSIC_DATA)
+ DISCRETE_INPUT_LOGIC(POLARIS_SX0_EN)
+ DISCRETE_INPUT_LOGIC(POLARIS_SX1_EN)
+ DISCRETE_INPUT_LOGIC(POLARIS_SX2_EN)
+ DISCRETE_INPUT_LOGIC(POLARIS_SX3_EN)
+ DISCRETE_INPUT_LOGIC(POLARIS_SX5_EN)
+ DISCRETE_INPUT_LOGIC(POLARIS_SX6_EN)
+ DISCRETE_INPUT_LOGIC(POLARIS_SX7_EN)
+ DISCRETE_INPUT_LOGIC(POLARIS_SX9_EN)
+ DISCRETE_INPUT_LOGIC(POLARIS_SX10_EN)
+
+ /* We will cheat and just use the controls to scale the amplitude. */
+ /* It is the same as taking the (0 to 50k)/50k */
+ DISCRETE_ADJUSTMENT_TAG(POLARIS_ADJ_VR1, 1, 0, 1, DISC_LINADJ, "VR1")
+ DISCRETE_ADJUSTMENT_TAG(POLARIS_ADJ_VR2, 1, 0, 1, DISC_LINADJ, "VR2")
+ /* Extra cheating for VR3. We will include the resistor scaling. */
+ DISCRETE_ADJUSTMENT_TAG(POLARIS_ADJ_VR3, 1, 0, 0.5376, DISC_LINADJ, "VR3")
+
+/******************************************************************************
+ *
+ * Music Generator
+ *
+ * This is a simulation of the following circuit:
+ * 555 Timer (Ra = 1k, Rb = 1k, C =.01uF) running at 48kHz. Connected to a
+ * 1 bit counter (/2) for 24kHz. But I will use the frequency measured by Guru.
+ * This is then sent to a preloadable 8 bit counter (4G & 4H), which loads the
+ * value from Port 2 when overflowing from 0xFF to 0x00. Therefore it divides
+ * by 2 (Port 2 = FE) to 256 (Port 2 = 00).
+ * This goes to a 2 bit counter (5H) which has a 47k resistor on Q0 and a 12k on Q1.
+ * This creates a sawtooth ramp of: 0%, 12/59%, 47/59%, 100% then back to 0%
+ *
+ * Note that there is no music disable line. When there is no music, the game
+ * sets the oscillator to 0Hz. (Port 2 = FF)
+ *
+ ******************************************************************************/
+ DISCRETE_NOTE(NODE_30, 1, 23396, POLARIS_MUSIC_DATA, 255, 3, DISC_CLK_IS_FREQ)
+ DISCRETE_DAC_R1(NODE_31, 1, NODE_30, DEFAULT_TTL_V_LOGIC_1, &polaris_music_dac)
+ DISCRETE_OP_AMP_FILTER(NODE_32, 1, NODE_31, 0, DISC_OP_AMP_FILTER_IS_HIGH_PASS_0 | DISC_OP_AMP_IS_NORTON, &polaris_music_op_amp_filt_info)
+ DISCRETE_MULTIPLY(POLARIS_MUSIC, 1, NODE_32, POLARIS_ADJ_VR3)
+
+/******************************************************************************
+ *
+ * Background Sonar Sound
+ *
+ * This is a background sonar that plays at all times during the game.
+ * It is a VCO triangle wave genarator, that uses the Low frequency filtered
+ * noise source to modulate the frequency.
+ * This is then amplitude modulated, by some fancy clocking scheme.
+ * It is disabled during SX3. (No sonar when you die.)
+ *
+ * 5L pin 6 divides 60Hz by 16. This clocks the sonar.
+ * 5K pin 9 is inverted by 5F, and then the 0.1uF;1M;270k;1S1588 diode circuit
+ * makes a one shot pulse of approx. 15ms to keep the noise working.
+ *
+ ******************************************************************************/
+ DISCRETE_SQUAREWFIX(NODE_40, 1, 60.0/16, 1, 50, 1.0/2, 0) // IC 5L, pin 6
+ DISCRETE_COUNTER(NODE_41, 1, 0, NODE_40, 31, 1, 0, DISC_CLK_ON_F_EDGE) // IC 5L & 5F
+ DISCRETE_TRANSFORM2(NODE_42, 1, NODE_41, 4, "01&") // IC 5L, pin 9
+ DISCRETE_TRANSFORM2(NODE_43, 1, NODE_41, 16, "01&!") // IC 5F, pin 8
+ DISCRETE_ONESHOT(NODE_44, NODE_43, 1, 0.0015, DISC_ONESHOT_REDGE | DISC_ONESHOT_NORETRIG | DISC_OUT_ACTIVE_HIGH)
+
+ DISCRETE_LOGIC_OR(NODE_45, 1, NODE_42, POLARIS_SX3_EN)
+ DISCRETE_LOGIC_DFLIPFLOP(NODE_46, 1, 1, 1, NODE_40, NODE_45)
+
+ DISCRETE_OP_AMP_VCO1(NODE_47, 1, POLARIS_NOISE_LO_FILT, &polaris_sonar_vco_info)
+ DISCRETE_OP_AMP_TRIG_VCA(POLARIS_SONARSND, NODE_45, NODE_46, 0, NODE_47, 0, &polaris_sonar_tvca_info)
+
+/******************************************************************************
+ *
+ * Noise sources
+ *
+ * The frequencies for the noise sources were Measured by Guru.
+ *
+ * The output of the shift register is buffered by an op-amp which limits
+ * the output to 0V and (12V - OP_AMP_NORTON_VBE)
+ *
+ ******************************************************************************/
+ DISCRETE_LFSR_NOISE(POLARIS_NOISE_LO, 1, 1, 800.8, (12.0 - OP_AMP_NORTON_VBE), NODE_44, (12.0 - OP_AMP_NORTON_VBE)/2, &polaris_lfsr) // Unfiltered Lo noise. 7K pin 4.
+ // Filtered Lo noise. 7K pin 5.
+ DISCRETE_OP_AMP_FILTER(POLARIS_NOISE_LO_FILT, 1, POLARIS_NOISE_LO, 0, DISC_OP_AMP_FILTER_IS_BAND_PASS_0 | DISC_OP_AMP_IS_NORTON, &polaris_nol_op_amp_filt_info)
+
+ DISCRETE_LFSR_NOISE(NODE_50, 1, 1, 23396, (12.0 - OP_AMP_NORTON_VBE), NODE_44, (12.0 - OP_AMP_NORTON_VBE)/2, &polaris_lfsr) // 7K pin 10
+ // Filtered Hi noise. 6B pin 10. - This does not really do much. Sample rates of 98k+ are needed for this high of filtering.
+ DISCRETE_OP_AMP_FILTER(POLARIS_NOISE_HI_FILT, 1, NODE_50, 0, DISC_OP_AMP_FILTER_IS_BAND_PASS_0 | DISC_OP_AMP_IS_NORTON, &polaris_noh_op_amp_filt_info)
+
+/******************************************************************************
+ *
+ * Shot - SX0 (When player shoots)
+ *
+ * When Enabled it makes a low frequency RC filtered noise. As soon as it
+ * disables, it switches to a high frequency RC filtered noise with the volume
+ * decaying based on the RC values of 680k and 1uF.
+ *
+ ******************************************************************************/
+ DISCRETE_OP_AMP_TRIG_VCA(POLARIS_SHOTSND, POLARIS_SX0_EN, 0, 0, POLARIS_NOISE_HI_FILT, POLARIS_NOISE_LO_FILT, &polaris_shot_tvca_info)
+
+/******************************************************************************
+ *
+ * Ship Hit - SX1 (When sub is hit)
+ *
+ * When Enabled it makes a low frequency RC filtered noise. As soon as it
+ * disables, it's volume starts decaying based on the RC values of 680k and
+ * 1uF. Also as it decays, a decaying high frequency RC filtered noise is
+ * mixed in.
+ *
+ ******************************************************************************/
+ DISCRETE_OP_AMP_TRIG_VCA(POLARIS_SHIP_HITSND, POLARIS_SX1_EN, 0, 0, POLARIS_NOISE_HI_FILT, POLARIS_NOISE_LO_FILT, &polaris_shiphit_tvca_info)
+
+/******************************************************************************
+ *
+ * Ship - SX2 (When boat moves across screen)
+ *
+ * This uses a 5.75Hz |\|\ sawtooth to modulate the frequency of a
+ * voltage controlled triangle wave oscillator. *
+ *
+ ******************************************************************************/
+ DISCRETE_OP_AMP_OSCILLATOR(NODE_60, 1, &polaris_boat_mod_info)
+ DISCRETE_OP_AMP_VCO1(POLARIS_SHIPSND, POLARIS_SX2_EN, NODE_60, &polaris_boat_vco_info)
+
+/******************************************************************************
+ *
+ * Explosion - SX3 (When player, boat or boss plane is hit)
+ *
+ * When Enabled it makes a low frequency noise. As soon as it disables, it's
+ * volume starts decaying based on the RC values of 680k and 0.33uF. The
+ * final output is RC filtered.
+ *
+ * Note that when this is triggered, the sonar sound clock is disabled.
+ *
+ ******************************************************************************/
+ DISCRETE_OP_AMP_TRIG_VCA(NODE_70, POLARIS_SX3_EN, 0, 0, POLARIS_NOISE_LO, 0, &polaris_exp_tvca_info)
+
+ DISCRETE_RCFILTER(NODE_71, 1, NODE_70, 560.0, CAP_U(.22))
+ DISCRETE_RCFILTER(POLARIS_EXPLOSIONSND, 1, NODE_71, RES_K(6.8), CAP_U(.22))
+
+/******************************************************************************
+ *
+ * Plane Down - SX6
+ * Plane Up - SX7
+ *
+ * The oscillator is enabled when SX7 goes high. When SX6 is enabled the
+ * frequency lowers. When SX6 is disabled the frequency ramps back up.
+ * Also some NOISE_HI_FILT is mixed in so the frequency varies some.
+ *
+ ******************************************************************************/
+ DISCRETE_INTEGRATE(NODE_80, POLARIS_SX6_EN, POLARIS_SX7_EN, &polaris_plane_integrate_info)
+ DISCRETE_OP_AMP_VCO2(POLARIS_PLANESND, POLARIS_SX7_EN, NODE_80, POLARIS_NOISE_HI_FILT, &polaris_plane_vco_info)
+
+/******************************************************************************
+ *
+ * HIT - SX9 & SX10
+ *
+ * Following the schematic, 3 different sounds are produced.
+ * SX10 SX9 Effect
+ * 0 0 no sound
+ * 0 1 NOISE_HI_FILT while enabled
+ * 1 0 NOISE_LO_FILT while enabled (When a regular plane is hit)
+ * 1 1 NOISE_HI_FILT & NOISE_LO_FILT decaying imediately @ 680k, 0.22uF
+ *
+ ******************************************************************************/
+ DISCRETE_OP_AMP_TRIG_VCA(POLARIS_HITSND, POLARIS_SX10_EN, POLARIS_SX9_EN, 0, POLARIS_NOISE_LO_FILT, POLARIS_NOISE_HI_FILT, &polaris_hit_tvca_info)
+
+/******************************************************************************
+ *
+ * Final Mixing and Output
+ *
+ ******************************************************************************/
+ DISCRETE_MIXER4(NODE_90, 1, POLARIS_SHOTSND, POLARIS_SONARSND, POLARIS_HITSND, POLARIS_PLANESND, &polaris_mixer_vr1_desc)
+ DISCRETE_MULTIPLY(NODE_91, 1, NODE_90, POLARIS_ADJ_VR1)
+ DISCRETE_MIXER2(NODE_92, 1, POLARIS_SHIPSND, POLARIS_SHIP_HITSND, &polaris_mixer_vr2_desc)
+ DISCRETE_MULTIPLY(NODE_93, 1, NODE_92, POLARIS_ADJ_VR2)
+ DISCRETE_MIXER4(NODE_94, POLARIS_SX5_EN, NODE_91, POLARIS_EXPLOSIONSND, NODE_93, POLARIS_MUSIC, &polaris_mixer_vr4_desc)
+
+ DISCRETE_OUTPUT(NODE_94, 1)
+
+DISCRETE_SOUND_END
+
+WRITE8_HANDLER( polaris_sh_port_1_w )
+{
+ discrete_sound_w(POLARIS_MUSIC_DATA, data);
+}
+
+WRITE8_HANDLER( polaris_sh_port_2_w )
+{
+ /* 0x01 - SX0 - Shot */
+ discrete_sound_w(POLARIS_SX0_EN, data & 0x01);
+
+ /* 0x02 - SX1 - Ship Hit (Sub) */
+ discrete_sound_w(POLARIS_SX1_EN, data & 0x02);
+
+ /* 0x04 - SX2 - Ship */
+ discrete_sound_w(POLARIS_SX2_EN, data & 0x04);
+
+ /* 0x08 - SX3 - Explosion */
+ discrete_sound_w(POLARIS_SX3_EN, data & 0x08);
+
+ /* 0x10 - SX4 */
+
+ /* 0x20 - SX5 - Sound Enable */
+ discrete_sound_w(POLARIS_SX5_EN, data & 0x20);
+}
+
+WRITE8_HANDLER( polaris_sh_port_3_w )
+{
+ coin_lockout_global_w(data & 0x04); /* SX8 */
+
+ c8080bw_flip_screen_w(data & 0x20); /* SX11 */
+
+ /* 0x01 - SX6 - Plane Down */
+ discrete_sound_w(POLARIS_SX6_EN, data & 0x01);
+
+ /* 0x02 - SX7 - Plane Up */
+ discrete_sound_w(POLARIS_SX7_EN, data & 0x02);
+
+ /* 0x08 - SX9 - Hit */
+ discrete_sound_w(POLARIS_SX9_EN, data & 0x08);
+
+ /* 0x10 - SX10 - Hit */
+ discrete_sound_w(POLARIS_SX10_EN, data & 0x10);
+}
+
+
+/*******************************************************/
+/* */
+/* Taito "Space Chaser" */
+/* */
+/* The SN76477 still needs to be routed to the */
+/* discrete system for filtering. */
+/*******************************************************/
+
+/*
+ * The dot sound is a square wave clocked by either the
+ * the 8V or 4V signals
+ *
+ * The frequencies are (for the 8V signal):
+ *
+ * 19.968 MHz crystal / 2 (Qa of 74160 #10) -> 9.984MHz
+ * / 2 (7474 #14) -> 4.992MHz
+ * / 256+16 (74161 #5 and #8) -> 18352.94Hz
+ * / 8 (8V) -> 2294.12 Hz
+ * / 2 the final freq. is 2 toggles -> 1147.06Hz
+ *
+ * for 4V, it's double at 2294.12Hz
+ */
+#define SCHASER_HSYNC 18352.94
+#define SCHASER_4V SCHASER_HSYNC /2 /4
+#define SCHASER_8V SCHASER_HSYNC /2 /8
+
+struct SN76477interface schaser_sn76477_interface =
+{
+ RES_K( 47), /* 4 noise_res */
+ RES_K(330), /* 5 filter_res */
+ CAP_P(470), /* 6 filter_cap */
+ RES_M(2.2), /* 7 decay_res */
+ CAP_U(1.0), /* 8 attack_decay_cap */
+ RES_K(4.7), /* 10 attack_res */
+ 0, /* 11 amplitude_res (variable) */
+ RES_K(33), /* 12 feedback_res */
+ 0, /* 16 vco_voltage */
+ CAP_U(0.1), /* 17 vco_cap */
+ RES_K(39), /* 18 vco_res */
+ 5.0, /* 19 pitch_voltage */
+ RES_K(120), /* 20 slf_res */
+ CAP_U(1.0), /* 21 slf_cap */
+ CAP_U(0.1), /* 23 oneshot_cap */
+ RES_K(220), /* 24 oneshot_res */
+ 1, /* 22 vco */
+ 0, /* 26 mixer A */
+ 0, /* 25 mixer B */
+ 0, /* 27 mixer C */
+ 1, /* 1 envelope 1 */
+ 0, /* 28 envelope 2 */
+ 1 /* 9 enable (variable) */
+};
+
+/* Nodes - Inputs */
+#define SCHASER_DOT_EN NODE_01
+#define SCHASER_DOT_SEL NODE_02
+#define SCHASER_EXP_STREAM NODE_03
+#define SCHASER_MUSIC_BIT NODE_04
+#define SCHASER_SND_EN NODE_05
+/* Nodes - Adjusters */
+#define SCHASER_VR1 NODE_07
+#define SCHASER_VR2 NODE_08
+#define SCHASER_VR3 NODE_09
+/* Nodes - Sounds */
+#define SCHASER_DOT_SND NODE_10
+#define SCHASER_EXP_SND NODE_11
+#define SCHASER_MUSIC_SND NODE_12
+
+DISCRETE_SOUND_START(schaser)
+ /************************************************/
+ /* Input register mapping for schaser */
+ /************************************************/
+ DISCRETE_INPUT_LOGIC (SCHASER_DOT_EN)
+ DISCRETE_INPUT_LOGIC (SCHASER_DOT_SEL)
+// Change the constant to the stream input when working.
+ DISCRETE_CONSTANT(SCHASER_EXP_STREAM, 0)
+// DISCRETE_INPUTX_STREAM(SCHASER_EXP_STREAM, 5.0/36764, 0)
+ DISCRETE_INPUTX_LOGIC (SCHASER_MUSIC_BIT, DEFAULT_TTL_V_LOGIC_1, 0, 0.0)
+ DISCRETE_INPUT_LOGIC (SCHASER_SND_EN)
+
+ /************************************************/
+ /* Volume adjusters. */
+ /* We will set them to adjust the realitive */
+ /* gains. */
+ /************************************************/
+ DISCRETE_ADJUSTMENT_TAG(SCHASER_VR1, 1, 0, RES_K(50)/(RES_K(50) + RES_K(470)), DISC_LINADJ, "VR1")
+ DISCRETE_ADJUSTMENT_TAG(SCHASER_VR2, 1, 0, RES_K(50)/(RES_K(50) + 560 + RES_K(6.8) + RES_K(2)), DISC_LINADJ, "VR2")
+ DISCRETE_ADJUSTMENT_TAG(SCHASER_VR3, 1, 0, RES_K(50)/(RES_K(50) + 560 + RES_K(6.8) + RES_K(10)), DISC_LINADJ, "VR3")
+
+ /************************************************/
+ /* Dot selection just selects between 4V and 8V */
+ /************************************************/
+ DISCRETE_SQUAREWFIX(NODE_20, 1, SCHASER_4V, DEFAULT_TTL_V_LOGIC_1, 50, 0, 0)
+ DISCRETE_SQUAREWFIX(NODE_21, 1, SCHASER_8V, DEFAULT_TTL_V_LOGIC_1, 50, 0, 0)
+ DISCRETE_SWITCH(NODE_22, SCHASER_DOT_EN, SCHASER_DOT_SEL, NODE_20, NODE_21)
+ DISCRETE_RCFILTER(NODE_23, 1, NODE_22, 560, CAP_U(.1))
+ DISCRETE_RCFILTER(NODE_24, 1, NODE_23, RES_K(6.8) + 560, CAP_U(.1))
+ DISCRETE_MULTIPLY(SCHASER_DOT_SND, 1, NODE_24, SCHASER_VR3)
+
+ /************************************************/
+ /* Explosion/Effect filtering */
+ /************************************************/
+ DISCRETE_RCFILTER(NODE_30, 1, SCHASER_EXP_STREAM, 560, CAP_U(.1))
+ DISCRETE_RCFILTER(NODE_31, 1, NODE_30, RES_K(6.8) + 560, CAP_U(.1))
+ DISCRETE_CRFILTER(NODE_32, 1, NODE_31, RES_K(6.8) + 560 + RES_K(2) + RES_K(50), CAP_U(1))
+ DISCRETE_MULTIPLY(SCHASER_EXP_SND, 1, NODE_32, SCHASER_VR2)
+
+ /************************************************/
+ /* Music is just a 1 bit DAC */
+ /************************************************/
+ DISCRETE_CRFILTER(NODE_40, 1, SCHASER_MUSIC_BIT, RES_K(470) + RES_K(50), CAP_U(.01))
+ DISCRETE_MULTIPLY(SCHASER_MUSIC_SND, 1, NODE_40, SCHASER_VR1)
+
+ /************************************************/
+ /* Final mix with gain */
+ /************************************************/
+ DISCRETE_ADDER3(NODE_90, SCHASER_SND_EN, SCHASER_DOT_SND, SCHASER_EXP_SND, SCHASER_MUSIC_SND)
+
+ DISCRETE_OUTPUT(NODE_90, 60000)
+DISCRETE_SOUND_END
+
+static const double schaser_effect_rc[8] =
+{
+ 0,
+ (RES_K(82) + RES_K(20)) * CAP_U(1),
+ (RES_K(39) + RES_K(20)) * CAP_U(1),
+ (1.0/ (1.0/RES_K(82) + 1.0/RES_K(39)) + RES_K(20)) * CAP_U(1),
+ (RES_K(15) + RES_K(20)) * CAP_U(1),
+ (1.0/ (1.0/RES_K(82) + 1.0/RES_K(15)) + RES_K(20)) * CAP_U(1),
+ (1.0/ (1.0/RES_K(39) + 1.0/RES_K(15)) + RES_K(20)) * CAP_U(1),
+ (1.0/ (1.0/RES_K(82) + 1.0/RES_K(39) + 1.0/RES_K(15)) + RES_K(20)) * CAP_U(1)
+};
+
+WRITE8_HANDLER( schaser_sh_port_1_w )
+{
+ static int last_effect = 0;
+ int effect;
+
+ /* bit 0 - Dot Sound Enable (SX0)
+ bit 1 - Dot Sound Pitch (SX1)
+ bit 2 - Effect Sound A (SX2)
+ bit 3 - Effect Sound B (SX3)
+ bit 4 - Effect Sound C (SX4)
+ bit 5 - Explosion (SX5) */
+
+ discrete_sound_w(SCHASER_DOT_EN, data & 0x01);
+ discrete_sound_w(SCHASER_DOT_SEL, data & 0x02);
+
+ /* The effect is a variable rate 555 timer. A diode/resistor array is used to
+ * select the frequency. Because of the diode voltage drop, we can not use the
+ * standard 555 time formulas. Also, when effect=0, the charge resistor
+ * is disconnected. This causes the charge on the cap to slowly bleed off, but
+ * but the bleed time is so long, that we can just cheat and put the time on hold
+ * when effect = 0. */
+ effect = (data >> 2) & 0x07;
+ if (last_effect != effect)
+ {
+ if (effect)
+ {
+ if (attotime_compare(schaser_effect_555_time_remain, attotime_zero) != 0)
+ {
+ /* timer re-enabled, use up remaining 555 high time */
+ timer_adjust(schaser_effect_555_timer, schaser_effect_555_time_remain, effect, attotime_zero);
+ }
+ else if (!schaser_effect_555_is_low)
+ {
+ /* set 555 high time */
+ attotime new_time = attotime_make(0, ATTOSECONDS_PER_SECOND * .8873 * schaser_effect_rc[effect]);
+ timer_adjust(schaser_effect_555_timer, new_time, effect, attotime_zero);
+ }
+ }
+ else
+ {
+ /* disable effect - stops at end of low cycle */
+ if (!schaser_effect_555_is_low)
+ {
+ schaser_effect_555_time_remain = timer_timeleft(schaser_effect_555_timer);
+ timer_adjust(schaser_effect_555_timer, attotime_never, 0, attotime_never);
+ }
+ }
+ last_effect = effect;
+ }
+
+ schaser_explosion = (data >> 5) & 0x01;
+ if (schaser_explosion)
+ {
+ SN76477_amplitude_res_w(0, 1.0 / (1.0/RES_K(200) + 1.0/RES_K(68)));
+ }
+ else
+ {
+ SN76477_amplitude_res_w(0, RES_K(200));
+ }
+ SN76477_enable_w(0, !(schaser_effect_555_is_low || schaser_explosion));
+ SN76477_one_shot_cap_voltage_w(0, !(schaser_effect_555_is_low || schaser_explosion) ? 0 : SN76477_EXTERNAL_VOLTAGE_DISCONNECT);
+ SN76477_mixer_b_w(0, schaser_explosion);
+}
+
+WRITE8_HANDLER( schaser_sh_port_2_w )
+{
+ /* bit 0 - Music (DAC) (SX6)
+ bit 1 - Sound Enable (SX7)
+ bit 2 - Coin Lockout (SX8)
+ bit 3 - Field Control A (SX9)
+ bit 4 - Field Control B (SX10)
+ bit 5 - Flip Screen */
+
+ discrete_sound_w(SCHASER_MUSIC_BIT, data & 0x01);
+
+ discrete_sound_w(SCHASER_SND_EN, data & 0x02);
+ sound_global_enable(data & 0x02);
+
+ coin_lockout_global_w(data & 0x04);
+
+ schaser_background_control_w(data & 0x18);
+
+ c8080bw_flip_screen_w(data & 0x20);
+}
+
+
+static TIMER_CALLBACK( schaser_effect_555_cb )
+{
+ int effect = param;
+ attotime new_time;
+ /* Toggle 555 output */
+ schaser_effect_555_is_low = !schaser_effect_555_is_low;
+ schaser_effect_555_time_remain = attotime_zero;
+
+ if (schaser_effect_555_is_low)
+ new_time = attotime_div(PERIOD_OF_555_ASTABLE(0, RES_K(20), CAP_U(1)), 2);
+ else
+ {
+ if (effect)
+ new_time = attotime_make(0, ATTOSECONDS_PER_SECOND * .8873 * schaser_effect_rc[effect]);
+ else
+ new_time = attotime_never;
+ }
+ timer_adjust(schaser_effect_555_timer, new_time, effect, attotime_zero);
+ SN76477_enable_w(0, !(schaser_effect_555_is_low || schaser_explosion));
+ SN76477_one_shot_cap_voltage_w(0, !(schaser_effect_555_is_low || schaser_explosion) ? 0 : SN76477_EXTERNAL_VOLTAGE_DISCONNECT);
+}
+
+
+MACHINE_START( schaser )
+{
+ schaser_effect_555_timer = timer_alloc(schaser_effect_555_cb);
+
+ machine_start_mw8080bw(machine);
+}
+
+
+MACHINE_RESET( schaser )
+{
+ schaser_effect_555_is_low = 0;
+ timer_adjust(schaser_effect_555_timer, attotime_never, 0, attotime_never);
+ schaser_sh_port_1_w(0, 0);
+ schaser_sh_port_2_w(0, 0);
+ schaser_effect_555_time_remain = attotime_zero;
+
+ machine_reset_mw8080bw(machine);
+}
+
+
+/****************************************************/
+/* Rolling Crash / Moon Base */
+/* - Moon Base uses same ports and bits as invaders */
+/* - Press Left or Right to choose game to play */
+/****************************************************/
+
+WRITE8_HANDLER( rollingc_sh_port_w )
+{
+ UINT8 rising_bits = data & ~port_3_last;
+
+ if (rising_bits & 0x02) sample_start(4, 0, 0); /* Steering */
+ if (rising_bits & 0x04) sample_start(0, 1, 0); /* Collision */
+ if (rising_bits & 0x10) sample_start(1, 8, 0); /* Computer car is starting to move */
+
+ port_3_last = data;
+}
+
+
+/*************************************************************************************/
+/* Invader's Revenge preliminary sound */
+/* Correct samples not available */
+/* Notes: */
+/* Init sequence: 0x01 (20 times), 0x40 (20 times), 0x4c, 0x40, 0x44, 0x40 (9 times).*/
+/* Player 1 start sequence: 0x0c, 0x20, 0x22. */
+/* Start of Attract mode: 0x04. */
+/* Unknown codes: 0x28, 0x2a, 0x0c, 0x34, 0x2c, 0x2e, 0x1c. */
+/*************************************************************************************/
+
+
+WRITE8_HANDLER( invrvnge_sh_port_w )
+{
+ switch (data)
+ {
+ case 0x06:
+ sample_start(1, 0, 0); /* Shoot */
+ break;
+
+ case 0x14:
+ sample_start(2, 2, 0); /* Hit Alien */
+ break;
+
+ case 0x16:
+ sample_start(2, 5, 0); /* Hit Asteroid */
+ break;
+
+ case 0x1e:
+ sample_start(3, 1, 0); /* Death (followed by 0x0a byte), also bit 4 of port 5 */
+ break;
+
+ case 0x18: /* Fuel Low */
+ case 0x30: /* Fuel bar filling up */
+ sample_start(4, 7, 0);
+ break;
+
+ case 0x02: /* Coin */
+ case 0x24: /* Alien dropping to steal fuel */
+ case 0x26: /* Alien lifting with fuel */
+ case 0x32: /* UFO drops a bomb */
+ break;
+
+ case 0x3a: /* Thrust, Docking, extra ship? */
+ sample_start(0, 8, 0);
+ break;
+ }
+}
+
+
+/*****************************************/
+/* Lupin III preliminary sound */
+/* Correct samples not available */
+/*****************************************/
+
+WRITE8_HANDLER( lupin3_sh_port_1_w )
+{
+ UINT8 rising_bits = data & ~port_1_last;
+
+ if (rising_bits & 0x01) sample_start(0, 6, 0); /* Walking, get money */
+
+ SN76477_enable_w(0, data & 0x02 ? 0:1); /* Helicopter */
+
+ if (rising_bits & 0x04) sample_start(0, 7, 0); /* Translocate */
+ if (rising_bits & 0x08) sample_start(0, 1, 0); /* Jail */
+ if (rising_bits & 0x10) sample_start(3, 8, 0); /* Bonus Man */
+
+ port_1_last = data;
+}
+
+WRITE8_HANDLER( lupin3_sh_port_2_w )
+{
+ UINT8 rising_bits = data & ~port_2_last;
+
+ if (rising_bits & 0x01) sample_start(0, 3, 0); /* Lands on top of building, wife kicks man */
+ if (rising_bits & 0x02) sample_start(1, 2, 0); /* deposit money, start intermission, end game */
+ if (rising_bits & 0x04) sample_start(2, 5, 0); /* deposit money, start intermission, Slides down rope */
+ if (rising_bits & 0x08) sample_start(3, 0, 0); /* start intermission, end game */
+ //if (rising_bits & 0x10) sample_start(3, 9, 0); /* Dog barking */
+
+ c8080bw_flip_screen_w(data & 0x20);
+
+ port_2_last = data;
+}
+
+
+/*****************************************/
+/* Space Chaser (CV) preliminary sound */
+/* Much more work needs to be done */
+/*****************************************/
+
+WRITE8_HANDLER( schasrcv_sh_port_1_w )
+{
+
+ /* bit 2 = 2nd speedup
+ bit 3 = 1st speedup
+ Death is a stream of ff's with some fe's thrown in */
+
+ UINT8 rising_bits = data & ~port_1_last;
+
+ if (rising_bits & 0x02) sample_start(1, 6, 0); /* Ran over a dot */
+ if (rising_bits & 0x10) sample_start(0, 1, 0); /* Death */
+
+ port_1_last = data;
+}
+
+WRITE8_HANDLER( schasrcv_sh_port_2_w )
+{
+ speaker_level_w(0, (data & 0x01) ? 1 : 0); /* End-of-Level */
+
+ sound_global_enable(data & 0x10);
+
+ c8080bw_flip_screen_w(data & 0x20);
+}
+
+
+/*******************************************************************/
+/* Yosakdon preliminary sound */
+/* No information available as what the correct sounds are */
+/*******************************************************************/
+
+WRITE8_HANDLER( yosakdon_sh_port_1_w )
+{
+ UINT8 rising_bits = data & ~port_1_last;
+
+ if (rising_bits & 0x01) sample_start(0, 3, 0); /* Game Over */
+ if (rising_bits & 0x02) sample_start(2, 0, 0); /* Bird dead */
+ if (rising_bits & 0x04) sample_start(0, 1, 0); /* Rifle being fired */
+ if (rising_bits & 0x08) sample_start(1, 2, 0); /* Man dead */
+ if (rising_bits & 0x10) sample_start(5, 8, 0); /* Bonus Man? */
+
+ sound_global_enable(data & 0x20);
+
+ port_1_last = data;
+}
+
+WRITE8_HANDLER( yosakdon_sh_port_2_w )
+{
+ UINT8 rising_bits = data & ~port_2_last;
+
+ if (rising_bits & 0x01) sample_start(1, 6, 0); /* Ready? , Game Over */
+ if (rising_bits & 0x04) sample_start(3, 7, 0); /* Big bird dead */
+
+ SN76477_enable_w(0, data & 0x08 ? 0:1); /* Big bird */
+
+ if (rising_bits & 0x10) sample_start(2, 7, 0); /* Game Over */
+
+ c8080bw_flip_screen_w(data & 0x20);
+
+ port_2_last = data;
+}
+
+
+/*****************************************/
+/* shuttlei preliminary sound */
+/* Proper samples are unavailable */
+/*****************************************/
+
+WRITE8_HANDLER( shuttlei_sh_port_1_w )
+{
+ /* bit 3 is high while you are alive and playing */
+
+ UINT8 rising_bits = data & ~port_1_last;
+
+ if (rising_bits & 0x01) sample_start(4, 4, 0); /* Fleet move */
+ if (rising_bits & 0x02) sample_start(5, 8, 0); /* Extra Tank */
+
+ SN76477_enable_w(0, data & 0x04 ? 0:1); /* UFO */
+
+ port_1_last = data;
+}
+
+WRITE8_HANDLER( shuttlei_sh_port_2_w )
+{
+ switch (data)
+ {
+ case 0x23:
+ sample_start(2, 2, 0); /* Hit */
+ break;
+
+ case 0x2b:
+ sample_start(0, 0, 0); /* Shoot */
+ break;
+
+ case 0xa3:
+ sample_start(3, 7, 0); /* Hit UFO */
+ break;
+
+ case 0xab:
+ sample_start(1, 1, 0); /* Death */
+ break;
+ }
+}
diff --git a/src/mame/audio/amiga.c b/src/mame/audio/amiga.c
new file mode 100644
index 00000000000..1fd3e647061
--- /dev/null
+++ b/src/mame/audio/amiga.c
@@ -0,0 +1,280 @@
+/***************************************************************************
+
+ Amiga Computer / Arcadia Game System
+
+ Driver by:
+
+ Ernesto Corvi & Mariusz Wojcieszek
+
+***************************************************************************/
+
+#include "driver.h"
+#include "streams.h"
+#include "includes/amiga.h"
+#include "cpu/m68000/m68000.h"
+
+
+/*************************************
+ *
+ * Debugging
+ *
+ *************************************/
+
+#define LOG(x)
+//#define LOG(x) logerror x
+
+
+
+/*************************************
+ *
+ * Constants
+ *
+ *************************************/
+
+#define CLOCK_DIVIDER 16
+
+
+
+/*************************************
+ *
+ * Type definitions
+ *
+ *************************************/
+
+typedef struct _audio_channel audio_channel;
+struct _audio_channel
+{
+ emu_timer * irq_timer;
+ UINT32 curlocation;
+ UINT16 curlength;
+ UINT16 curticks;
+ UINT8 index;
+ UINT8 dmaenabled;
+ UINT8 manualmode;
+ INT8 latched;
+};
+
+
+typedef struct _amiga_audio amiga_audio;
+struct _amiga_audio
+{
+ audio_channel channel[4];
+ sound_stream * stream;
+};
+
+
+
+/*************************************
+ *
+ * Globals
+ *
+ *************************************/
+
+static amiga_audio *audio_state;
+
+
+
+/*************************************
+ *
+ * DMA reload/IRQ signalling
+ *
+ *************************************/
+
+static TIMER_CALLBACK( signal_irq )
+{
+ amiga_custom_w(REG_INTREQ, 0x8000 | (0x80 << param), 0);
+}
+
+
+static void dma_reload(audio_channel *chan)
+{
+ chan->curlocation = CUSTOM_REG_LONG(REG_AUD0LCH + chan->index * 8);
+ chan->curlength = CUSTOM_REG(REG_AUD0LEN + chan->index * 8);
+ timer_adjust(chan->irq_timer, ATTOTIME_IN_HZ(15750), chan->index, attotime_zero);
+ LOG(("dma_reload(%d): offs=%05X len=%04X\n", chan->index, chan->curlocation, chan->curlength));
+}
+
+
+
+/*************************************
+ *
+ * Manual mode data writer
+ *
+ *************************************/
+
+void amiga_audio_data_w(int which, UINT16 data)
+{
+ audio_state->channel[which].manualmode = TRUE;
+}
+
+
+
+/*************************************
+ *
+ * Stream updater
+ *
+ *************************************/
+
+void amiga_audio_update(void)
+{
+ stream_update(audio_state->stream);
+}
+
+
+
+static void amiga_stream_update(void *param, stream_sample_t **inputs, stream_sample_t **outputs, int length)
+{
+ amiga_audio *audio = param;
+ int channum, sampoffs = 0;
+
+ /* if all DMA off, disable all channels */
+ if (!(CUSTOM_REG(REG_DMACON) & 0x0200))
+ {
+ audio->channel[0].dmaenabled =
+ audio->channel[1].dmaenabled =
+ audio->channel[2].dmaenabled =
+ audio->channel[3].dmaenabled = FALSE;
+
+ /* clear the sample data to 0 */
+ for (channum = 0; channum < 4; channum++)
+ memset(outputs[channum], 0, sizeof(stream_sample_t) * length);
+ return;
+ }
+
+ length *= CLOCK_DIVIDER;
+
+ /* update the DMA states on each channel and reload if fresh */
+ for (channum = 0; channum < 4; channum++)
+ {
+ audio_channel *chan = &audio->channel[channum];
+ if (!chan->dmaenabled && ((CUSTOM_REG(REG_DMACON) >> channum) & 1))
+ dma_reload(chan);
+ chan->dmaenabled = (CUSTOM_REG(REG_DMACON) >> channum) & 1;
+ }
+
+ /* loop until done */
+ while (length > 0)
+ {
+ int nextper, nextvol;
+ int ticks = length;
+
+ /* determine the number of ticks we can do in this chunk */
+ if (ticks > audio->channel[0].curticks)
+ ticks = audio->channel[0].curticks;
+ if (ticks > audio->channel[1].curticks)
+ ticks = audio->channel[1].curticks;
+ if (ticks > audio->channel[2].curticks)
+ ticks = audio->channel[2].curticks;
+ if (ticks > audio->channel[3].curticks)
+ ticks = audio->channel[3].curticks;
+
+ /* loop over channels */
+ nextper = nextvol = -1;
+ for (channum = 0; channum < 4; channum++)
+ {
+ int volume = (nextvol == -1) ? CUSTOM_REG(REG_AUD0VOL + channum * 8) : nextvol;
+ int period = (nextper == -1) ? CUSTOM_REG(REG_AUD0PER + channum * 8) : nextper;
+ audio_channel *chan = &audio->channel[channum];
+ stream_sample_t sample;
+ int i;
+
+ /* normalize the volume value */
+ volume = (volume & 0x40) ? 64 : (volume & 0x3f);
+ volume *= 4;
+
+ /* are we modulating the period of the next channel? */
+ if ((CUSTOM_REG(REG_ADKCON) >> channum) & 0x10)
+ {
+ nextper = CUSTOM_REG(REG_AUD0DAT + channum * 8);
+ nextvol = -1;
+ sample = 0;
+ }
+
+ /* are we modulating the volume of the next channel? */
+ else if ((CUSTOM_REG(REG_ADKCON) >> channum) & 0x01)
+ {
+ nextper = -1;
+ nextvol = CUSTOM_REG(REG_AUD0DAT + channum * 8);
+ sample = 0;
+ }
+
+ /* otherwise, we are generating data */
+ else
+ {
+ nextper = nextvol = -1;
+ sample = chan->latched * volume;
+ }
+
+ /* fill the buffer with the sample */
+ for (i = 0; i < ticks; i += CLOCK_DIVIDER)
+ outputs[channum][(sampoffs + i) / CLOCK_DIVIDER] = sample;
+
+ /* account for the ticks; if we hit 0, advance */
+ chan->curticks -= ticks;
+ if (chan->curticks == 0)
+ {
+ /* reset the clock and ensure we're above the minimum ticks */
+ chan->curticks = period;
+ if (chan->curticks < 124)
+ chan->curticks = 124;
+
+ /* move forward one byte; if we move to an even byte, fetch new */
+ if (chan->dmaenabled || chan->manualmode)
+ chan->curlocation++;
+ if (chan->dmaenabled && !(chan->curlocation & 1))
+ {
+ CUSTOM_REG(REG_AUD0DAT + channum * 8) = amiga_chip_ram_r(chan->curlocation);
+ if (chan->curlength != 0)
+ chan->curlength--;
+
+ /* if we run out of data, reload the dma */
+ if (chan->curlength == 0)
+ dma_reload(chan);
+ }
+
+ /* latch the next byte of the sample */
+ if (!(chan->curlocation & 1))
+ chan->latched = CUSTOM_REG(REG_AUD0DAT + channum * 8) >> 8;
+ else
+ chan->latched = CUSTOM_REG(REG_AUD0DAT + channum * 8) >> 0;
+
+ /* if we're in manual mode, signal an interrupt once we latch the low byte */
+ if (!chan->dmaenabled && chan->manualmode && (chan->curlocation & 1))
+ {
+ signal_irq(Machine, channum);
+ chan->manualmode = FALSE;
+ }
+ }
+ }
+
+ /* bump ourselves forward by the number of ticks */
+ sampoffs += ticks;
+ length -= ticks;
+ }
+}
+
+
+
+/*************************************
+ *
+ * Sound system startup
+ *
+ *************************************/
+
+void *amiga_sh_start(int clock, const struct CustomSound_interface *config)
+{
+ int i;
+
+ /* allocate a new audio state */
+ audio_state = auto_malloc(sizeof(*audio_state));
+ memset(audio_state, 0, sizeof(*audio_state));
+ for (i = 0; i < 4; i++)
+ {
+ audio_state->channel[i].index = i;
+ audio_state->channel[i].irq_timer = timer_alloc(signal_irq);
+ }
+
+ /* create the stream */
+ audio_state->stream = stream_create(0, 4, clock / CLOCK_DIVIDER, audio_state, amiga_stream_update);
+ return audio_state;
+}
diff --git a/src/mame/audio/asteroid.c b/src/mame/audio/asteroid.c
new file mode 100644
index 00000000000..1497e888d9e
--- /dev/null
+++ b/src/mame/audio/asteroid.c
@@ -0,0 +1,323 @@
+/*****************************************************************************
+ *
+ * Asteroids Analog Sound system interface
+ *
+ *****************************************************************************/
+
+#include <math.h>
+#include "driver.h"
+#include "sound/discrete.h"
+#include "includes/asteroid.h"
+
+/************************************************************************/
+/* Asteroids Sound System Analog emulation by K.Wilkins Nov 2000 */
+/* Questions/Suggestions to mame@dysfunction.demon.co.uk */
+/************************************************************************/
+
+static const discrete_lfsr_desc asteroid_lfsr =
+{
+ DISC_CLK_IS_FREQ,
+ 16, /* Bit Length */
+ 0, /* Reset Value */
+ 6, /* Use Bit 6 as XOR input 0 */
+ 14, /* Use Bit 14 as XOR input 1 */
+ DISC_LFSR_XNOR, /* Feedback stage1 is XNOR */
+ DISC_LFSR_OR, /* Feedback stage2 is just stage 1 output OR with external feed */
+ DISC_LFSR_REPLACE, /* Feedback stage3 replaces the shifted register contents */
+ 0x000001, /* Everything is shifted into the first bit only */
+ 0, /* Output is already inverted by XNOR */
+ 16 /* Output bit is feedback bit */
+};
+
+static const discrete_dac_r1_ladder asteroid_thump_dac1 =
+{
+ 4, // size of ladder
+ {RES_K(220), RES_K(100), RES_K(47), RES_K(22)}, //R44-R47
+ 4.3, // 5v - diode junction
+ RES_K(6.8), // R49
+ RES_K(47), // R44
+ CAP_U(0.01) // C27
+};
+
+static const discrete_555_cc_desc asteroid_thump_555cc =
+{
+ DISC_555_OUT_SQW | DISC_555_OUT_AC | DISCRETE_555_CC_TO_CAP,
+ 5, // B+ voltage of 555
+ DEFAULT_555_VALUES,
+ 5, // B+ voltage of the Constant Current source
+ 0.8 // VBE 2N3906 (Si)
+};
+
+#define ASTEROID_SAUCER_SND_EN NODE_01
+#define ASTEROID_SAUCER_FIRE_EN NODE_02
+#define ASTEROID_SAUCER_SEL NODE_03
+#define ASTEROID_THRUST_EN NODE_04
+#define ASTEROID_SHIP_FIRE_EN NODE_05
+#define ASTEROID_LIFE_EN NODE_06
+#define ASTEROID_NOISE_RESET NODE_07
+
+#define ASTEROID_THUMP_EN NODE_08
+#define ASTEROID_THUMP_DATA NODE_09
+#define ASTEROID_EXPLODE_DATA NODE_10
+#define ASTEROID_EXPLODE_PITCH NODE_11
+
+#define ASTEROID_NOISE NODE_20
+#define ASTEROID_THUMP_SND NODE_21
+#define ASTEROID_SAUCER_SND NODE_22
+#define ASTEROID_LIFE_SND NODE_23
+#define ASTEROID_SAUCER_FIRE_SND NODE_24
+#define ASTEROID_SHIP_FIRE_SND NODE_25
+#define ASTEROID_EXPLODE_SND NODE_26
+#define ASTEROID_THRUST_SND NODE_27
+
+DISCRETE_SOUND_START(asteroid)
+ /************************************************/
+ /* Asteroid Effects Relataive Gain Table */
+ /* */
+ /* Effect V-ampIn Gain ratio Relative */
+ /* Thump 5 1/47 131.6 */
+ /* Saucer 2.4 1/39 76.1 */
+ /* Life 3.8 1/47 100.0 */
+ /* Saucer Fire 5-0.6 1/(100+10) 49.5 */
+ /* Ship Fire 5-0.6 1/(100+2.7) 53.0 */
+ /* Explode 3.8 1/4.7 1000.0 */
+ /* Thrust 3.8 1/4.7 600.0 */
+ /* NOTE: Thrust gain has to be tweaked, due to */
+ /* the filter stage. */
+ /************************************************/
+
+ /* NODE GAIN OFFSET INIT */
+ DISCRETE_INPUT_LOGIC (ASTEROID_SAUCER_SND_EN)
+ DISCRETE_INPUT_LOGIC (ASTEROID_SAUCER_FIRE_EN)
+ DISCRETE_INPUT_LOGIC (ASTEROID_SAUCER_SEL)
+ DISCRETE_INPUT_LOGIC (ASTEROID_THRUST_EN)
+ DISCRETE_INPUT_LOGIC (ASTEROID_SHIP_FIRE_EN)
+ DISCRETE_INPUT_LOGIC (ASTEROID_LIFE_EN)
+ DISCRETE_INPUT_PULSE (ASTEROID_NOISE_RESET, 1)
+
+ DISCRETE_INPUT_LOGIC (ASTEROID_THUMP_EN)
+ DISCRETE_INPUT_DATA (ASTEROID_THUMP_DATA)
+
+ DISCRETE_INPUTX_DATA (ASTEROID_EXPLODE_DATA, 1000.0/15.0, 0.0, 0)
+ DISCRETE_INPUTX_DATA (ASTEROID_EXPLODE_PITCH, 1, 0, 12)
+
+ /************************************************/
+ /* Thump circuit is based on a VCO with the */
+ /* VCO control fed from the 4 low order bits */
+ /* from /THUMP bit 4 controls the osc enable. */
+ /* A resistor ladder network is used to convert */
+ /* the 4 bit value to an analog value. */
+ /* */
+ /* The VCO is implemented with a 555 timer and */
+ /* an RC filter to perform smoothing on the */
+ /* output */
+ /************************************************/
+ DISCRETE_DAC_R1(NODE_30, 1, ASTEROID_THUMP_DATA, 3.5, &asteroid_thump_dac1) // CMOS
+ DISCRETE_555_CC(NODE_31, ASTEROID_THUMP_EN, NODE_30, RES_K(22), CAP_U(0.22), 0, 0, RES_K(18), &asteroid_thump_555cc)
+ DISCRETE_RCFILTER(NODE_32, 1, NODE_31, RES_K(3.3), CAP_U(0.1))
+ DISCRETE_GAIN(ASTEROID_THUMP_SND, NODE_32, 30)
+
+ /************************************************/
+ /* The SAUCER sound is based on two VCOs, a */
+ /* slow VCO feed the input to a higher freq VCO */
+ /* with the SAUCERSEL switch being used to move */
+ /* the frequency ranges of both VCOs */
+ /* */
+ /* The slow VCO is implemented with a 555 timer */
+ /* and a 566 is used for the higher VCO. */
+ /* */
+ /* The sound can be tweaked with the gain and */
+ /* adder constants in the 2 lines below */
+ /************************************************/
+ // SAUCER_SEL = 1 - larger saucer
+ DISCRETE_MULTADD(NODE_40, 1, ASTEROID_SAUCER_SEL, -2.5, 8.25) // Saucer Warble rate (5.75 or 8.25Hz)
+ DISCRETE_TRIANGLEWAVE(NODE_41, 1, NODE_40, 920.0, 920.0/2, 0) // (amount of warble)
+
+ DISCRETE_TRANSFORM4(NODE_42, 1, ASTEROID_SAUCER_SEL, -250, NODE_41, 750, "01*2+3+") // Large saucer is 250hz lower
+
+ DISCRETE_TRIANGLEWAVE(NODE_43, ASTEROID_SAUCER_SND_EN, NODE_42, 76.1, 0, 0)
+ DISCRETE_RCFILTER(ASTEROID_SAUCER_SND, 1, NODE_43, 1, 1.0e-5)
+
+ /************************************************/
+ /* The Ship Fire sound is produced by a 555 */
+ /* based VCO where the frequency rapidly decays */
+ /* with time. */
+ /************************************************/
+ DISCRETE_RAMP(NODE_50, ASTEROID_SHIP_FIRE_EN, ASTEROID_SHIP_FIRE_EN, (820.0-110.0)/0.28, 820.0, 110.0, 0) /* Decay - Freq */
+ DISCRETE_RCDISC(NODE_51, ASTEROID_SHIP_FIRE_EN, 53.0-7.0, 2700.0*3, 1e-5) /* Decay - Amplitude */
+ DISCRETE_ADDER2(NODE_52, 1, NODE_51, 7.0) /* Amplitude */
+ DISCRETE_TRANSFORM3(NODE_53, ASTEROID_SHIP_FIRE_EN, 4500, NODE_50, 67, "01/2+") /* Duty */
+ DISCRETE_SQUAREWAVE(NODE_54, ASTEROID_SHIP_FIRE_EN, NODE_50, NODE_52, NODE_53, 0, 0)
+ DISCRETE_RCFILTER(ASTEROID_SHIP_FIRE_SND, 1, NODE_54, 1, 1.0e-5)
+
+ /************************************************/
+ /* The Saucer Fire sound is produced by a 555 */
+ /* based VCO where the frequency rapidly decays */
+ /* with time. */
+ /************************************************/
+ DISCRETE_RAMP(NODE_60, ASTEROID_SAUCER_FIRE_EN, ASTEROID_SAUCER_FIRE_EN, (830.0-630.0)/0.28, 830.0, 630.0, 0) /* Decay - Freq */
+ DISCRETE_RCDISC(NODE_61, ASTEROID_SAUCER_FIRE_EN, 49.5-7.0, 10000.0*3, 1e-5) /* Decay - Amplitude */
+ DISCRETE_ADDER2(NODE_62, 1, NODE_61, 7.0) /* Amplitude */
+ DISCRETE_TRANSFORM3(NODE_63, ASTEROID_SAUCER_FIRE_EN, 4500, NODE_60, 67, "01/2+") /* Duty */
+ DISCRETE_SQUAREWAVE(NODE_64, ASTEROID_SAUCER_FIRE_EN, NODE_60, NODE_62, NODE_63, 0, 0)
+ DISCRETE_RCFILTER(ASTEROID_SAUCER_FIRE_SND, 1, NODE_64, 2, 1.0e-5)
+
+ /************************************************/
+ /* Thrust noise is a gated noise source */
+ /* fed into a filter network */
+ /* It is an RC lowpass, followed by a */
+ /* Sallen-Key bandpass, followed by an active */
+ /* lowpass. */
+ /************************************************/
+ DISCRETE_LFSR_NOISE(ASTEROID_NOISE, ASTEROID_NOISE_RESET, ASTEROID_NOISE_RESET, 12000.0, 1.0, 0, 0, &asteroid_lfsr)
+
+ DISCRETE_GAIN(NODE_70, ASTEROID_NOISE, 600.0*7.6)
+ DISCRETE_RCFILTER(NODE_71, ASTEROID_THRUST_EN, NODE_70, 2200, 1e-6)
+ /* TBD - replace this line with a Sallen-Key Bandpass macro */
+ DISCRETE_FILTER2(NODE_72, 1, NODE_71, 89.5, (1.0 / 7.6), DISC_FILTER_BANDPASS)
+ /* TBD - replace this line with a Active Lowpass macro */
+ DISCRETE_FILTER1(ASTEROID_THRUST_SND, 1, NODE_72, 160, DISC_FILTER_LOWPASS)
+
+ /************************************************/
+ /* Explosion generation circuit, pitch and vol */
+ /* are variable. */
+ /* The pitch divides using an overflow counter. */
+ /* Meaning the duty cycle varies. The on time */
+ /* is always the same (one 12Khz cycle). But */
+ /* the off time varies. /12 = 11 off cycles */
+ /* Then it is ANDed with the 12kHz to make a */
+ /* shorter pulse. There is no real reason to */
+ /* do this, as the D-Latch already triggers on */
+ /* the rising edge. So we won't add the extra */
+ /* nodes. */
+ /************************************************/
+ DISCRETE_DIVIDE(NODE_80, 1, 12000, ASTEROID_EXPLODE_PITCH) /* Frequency */
+ DISCRETE_DIVIDE(NODE_81, 1, 100, ASTEROID_EXPLODE_PITCH) /* Duty */
+ DISCRETE_SQUAREWFIX(NODE_82, 1, NODE_80, 1.0, NODE_81, 1.0/2, 0) /* Pitch clock */
+ DISCRETE_SAMPLHOLD(NODE_83, 1, ASTEROID_NOISE, NODE_82, DISC_SAMPHOLD_REDGE)
+ DISCRETE_MULTIPLY(NODE_84, 1, NODE_83, ASTEROID_EXPLODE_DATA)
+ DISCRETE_RCFILTER(ASTEROID_EXPLODE_SND, 1, NODE_84, 3042, 1e-6)
+
+ /************************************************/
+ /* Life enable is just 3KHz tone from the clock */
+ /* generation cct according to schematics */
+ /************************************************/
+ DISCRETE_SQUAREWFIX(ASTEROID_LIFE_SND, ASTEROID_LIFE_EN, 3000, 100.0, 50.0, 0, 0)
+
+ /************************************************/
+ /* Combine all 7 sound sources with a double */
+ /* adder circuit */
+ /************************************************/
+ DISCRETE_ADDER4(NODE_90, 1, ASTEROID_THUMP_SND, ASTEROID_SAUCER_SND, ASTEROID_SHIP_FIRE_SND, ASTEROID_SAUCER_FIRE_SND)
+ DISCRETE_ADDER4(NODE_91, 1, ASTEROID_THRUST_SND, ASTEROID_EXPLODE_SND, ASTEROID_LIFE_SND, NODE_90)
+
+ DISCRETE_OUTPUT(NODE_91, 65534.0 / (131.6+76.1+49.5+53.0+1000.0+600.0)) // Take the output from the mixer
+DISCRETE_SOUND_END
+
+
+DISCRETE_SOUND_START(astdelux)
+ /************************************************/
+ /* Asteroid delux sound hardware is mostly done */
+ /* in the Pokey chip except for the thrust and */
+ /* explosion sounds that are a direct lift of */
+ /* the asteroids hardware hence is a clone of */
+ /* the circuit above apart from gain scaling. */
+ /* */
+ /* Note that the thrust enable signal is invert */
+ /************************************************/
+ /* NODE GAIN OFFSET INIT */
+ DISCRETE_INPUT_LOGIC (ASTEROID_THRUST_EN)
+ DISCRETE_INPUT_PULSE (ASTEROID_NOISE_RESET, 1)
+
+ DISCRETE_INPUTX_DATA (ASTEROID_EXPLODE_DATA, 1000.0/15.0, 0.0, 0)
+ DISCRETE_INPUTX_DATA (ASTEROID_EXPLODE_PITCH, 1, 0, 12)
+
+ /************************************************/
+ /* Thrust noise is a gated noise source */
+ /* fed into a filter network */
+ /* It is an RC lowpass, followed by a */
+ /* Sallen-Key bandpass, followed by an active */
+ /* lowpass. */
+ /************************************************/
+ DISCRETE_LFSR_NOISE(ASTEROID_NOISE, ASTEROID_NOISE_RESET, ASTEROID_NOISE_RESET, 12000.0, 1.0, 0, 0, &asteroid_lfsr)
+
+ DISCRETE_GAIN(NODE_70, ASTEROID_NOISE, 1000.0*7.6)
+ DISCRETE_RCFILTER(NODE_71, ASTEROID_THRUST_EN, NODE_70, 2200, 1e-6)
+ /* TBD - replace this line with a Sallen-Key Bandpass macro */
+ DISCRETE_FILTER2(NODE_72, 1, NODE_71, 89.5, (1.0 / 7.6), DISC_FILTER_BANDPASS)
+ /* TBD - replace this line with a Active Lowpass macro */
+ DISCRETE_FILTER1(ASTEROID_THRUST_SND, 1, NODE_72, 160, DISC_FILTER_LOWPASS)
+
+ /************************************************/
+ /* Explosion generation circuit, pitch and vol */
+ /* are variable. */
+ /* The pitch divides using an overflow counter. */
+ /* Meaning the duty cycle varies. The on time */
+ /* is always the same (one 12Khz cycle). But */
+ /* the off time varies. /12 = 11 off cycles */
+ /* Then it is ANDed with the 12kHz to make a */
+ /* shorter pulse. There is no real reason to */
+ /* do this, as the D-Latch already triggers on */
+ /* the rising edge. So we won't add the extra */
+ /* nodes. */
+ /************************************************/
+ DISCRETE_DIVIDE(NODE_80, 1, 12000, ASTEROID_EXPLODE_PITCH) /* Frequency */
+ DISCRETE_DIVIDE(NODE_81, 1, 100, ASTEROID_EXPLODE_PITCH) /* Duty */
+ DISCRETE_SQUAREWFIX(NODE_82, 1, NODE_80, 1.0, NODE_81, 1.0/2, 0) /* Pitch clock */
+ DISCRETE_SAMPLHOLD(NODE_83, 1, ASTEROID_NOISE, NODE_82, DISC_SAMPHOLD_REDGE)
+ DISCRETE_MULTIPLY(NODE_84, 1, NODE_83, ASTEROID_EXPLODE_DATA)
+ DISCRETE_RCFILTER(ASTEROID_EXPLODE_SND, 1, NODE_84, 3042, 1e-6)
+
+ /************************************************/
+ /* Combine all 7 sound sources with a double */
+ /* adder circuit */
+ /************************************************/
+ DISCRETE_ADDER2(NODE_90, 1, ASTEROID_THRUST_SND, ASTEROID_EXPLODE_SND)
+
+ DISCRETE_OUTPUT(NODE_90, 65534.0/(1000+600)) // Take the output from the mixer
+DISCRETE_SOUND_END
+
+
+WRITE8_HANDLER( asteroid_explode_w )
+{
+ discrete_sound_w(ASTEROID_EXPLODE_DATA,(data&0x3c)>>2); // Volume
+ /* We will modify the pitch data to send the divider value. */
+ switch ((data&0xc0))
+ {
+ case 0x00:
+ data = 12;
+ break;
+ case 0x40:
+ data = 6;
+ break;
+ case 0x80:
+ data = 3;
+ break;
+ case 0xc0:
+ data = 5;
+ break;
+ }
+ discrete_sound_w(ASTEROID_EXPLODE_PITCH, data);
+}
+
+WRITE8_HANDLER( asteroid_thump_w )
+{
+ discrete_sound_w(ASTEROID_THUMP_EN, data & 0x10);
+ discrete_sound_w(ASTEROID_THUMP_DATA, data & 0x0f);
+}
+
+WRITE8_HANDLER( asteroid_sounds_w )
+{
+ discrete_sound_w(ASTEROID_SAUCER_SND_EN + offset, data & 0x80);
+}
+
+WRITE8_HANDLER( astdelux_sounds_w )
+{
+ /* Only ever activates the thrusters in Astdelux */
+ discrete_sound_w(ASTEROID_THRUST_EN, data & 0x80);
+}
+
+WRITE8_HANDLER( asteroid_noise_reset_w )
+{
+ discrete_sound_w(ASTEROID_NOISE_RESET, 0);
+}
diff --git a/src/mame/audio/astinvad.c b/src/mame/audio/astinvad.c
new file mode 100644
index 00000000000..47d384d9710
--- /dev/null
+++ b/src/mame/audio/astinvad.c
@@ -0,0 +1,138 @@
+/***********************************
+ updated: 1997-04-09 08:46 TT
+ updated 20-3-1998 LT Added colour changes on base explosion
+ updated 02-6-1998 HJB copied from 8080bw and removed unneeded code
+ *
+ * Author : Tormod Tjaberg
+ * Created : 1997-04-09
+ * Description : Sound routines for the 'astinvad' games
+ *
+ * The samples were taken from Michael Strutt's (mstrutt@pixie.co.za)
+ * excellent space invader emulator and converted to signed samples so
+ * they would work under SEAL. The port info was also gleaned from
+ * his emulator. These sounds should also work on all the invader games.
+ *
+ */
+
+#include "driver.h"
+#include "sound/samples.h"
+#include "includes/astinvad.h"
+
+static const char *astinvad_sample_names[] =
+{
+ "*invaders",
+ "0.wav",
+ "1.wav",
+ "2.wav",
+ "3.wav",
+ "4.wav",
+ "5.wav",
+ "6.wav",
+ "7.wav",
+ "8.wav",
+ 0
+};
+
+/* sample sound IDs - must match sample file name table above */
+enum
+{
+ SND_UFO = 0,
+ SND_SHOT,
+ SND_BASEHIT,
+ SND_INVADERHIT,
+ SND_FLEET1,
+ SND_FLEET2,
+ SND_FLEET3,
+ SND_FLEET4,
+ SND_UFOHIT
+};
+
+
+struct Samplesinterface astinvad_samples_interface =
+{
+ 6, /* channels */
+ astinvad_sample_names
+};
+
+
+WRITE8_HANDLER( astinvad_sound1_w )
+{
+ static int state;
+
+ int bitsGoneHi = data & ~state;
+
+ sound_global_enable(data & 0x20);
+
+ if (!(data & 1))
+ {
+ sample_stop(0);
+ }
+
+ if (bitsGoneHi & 0x01) sample_start(0, SND_UFO, 1);
+ if (bitsGoneHi & 0x02) sample_start(1, SND_SHOT, 0);
+ if (bitsGoneHi & 0x04) sample_start(2, SND_BASEHIT, 0);
+ if (bitsGoneHi & 0x08) sample_start(3, SND_INVADERHIT, 0);
+
+ astinvad_set_screen_red(data & 0x04);
+
+ state = data;
+}
+
+
+WRITE8_HANDLER( astinvad_sound2_w )
+{
+ static int state;
+
+ int bitsGoneHi = data & ~state;
+
+ if (bitsGoneHi & 0x01) sample_start(5, SND_FLEET1, 0);
+ if (bitsGoneHi & 0x02) sample_start(5, SND_FLEET2, 0);
+ if (bitsGoneHi & 0x04) sample_start(5, SND_FLEET3, 0);
+ if (bitsGoneHi & 0x08) sample_start(5, SND_FLEET4, 0);
+ if (bitsGoneHi & 0x10) sample_start(4, SND_UFOHIT, 0);
+
+ flip_screen_set(readinputport(3) & data & 0x20);
+
+ state = data;
+}
+
+
+WRITE8_HANDLER( spaceint_sound1_w )
+{
+ static int state;
+
+ int bitsGoneHi = data & ~state;
+
+ if (!(data & 0x08))
+ {
+ sample_stop(0);
+ }
+
+ if (bitsGoneHi & 0x01) sample_start(1, SND_SHOT, 0);
+ if (bitsGoneHi & 0x02) sample_start(2, SND_BASEHIT, 0);
+ if (bitsGoneHi & 0x04) sample_start(4, SND_UFOHIT, 0);
+ if (bitsGoneHi & 0x08) sample_start(0, SND_UFO, 1);
+
+ if (bitsGoneHi & 0x10) sample_start(5, SND_FLEET1, 0);
+ if (bitsGoneHi & 0x20) sample_start(5, SND_FLEET2, 0);
+ if (bitsGoneHi & 0x40) sample_start(5, SND_FLEET3, 0);
+ if (bitsGoneHi & 0x80) sample_start(5, SND_FLEET4, 0);
+
+ state = data;
+}
+
+
+WRITE8_HANDLER( spaceint_sound2_w )
+{
+ static int state;
+
+ int bitsGoneHi = data & ~state;
+
+ sound_global_enable(data & 0x02);
+
+ if (bitsGoneHi & 0x04) sample_start(3, SND_INVADERHIT, 0);
+
+ flip_screen_set(readinputport(3) & data & 0x80);
+
+ state = data;
+}
diff --git a/src/mame/audio/astrof.c b/src/mame/audio/astrof.c
new file mode 100644
index 00000000000..6e480a2d8a9
--- /dev/null
+++ b/src/mame/audio/astrof.c
@@ -0,0 +1,255 @@
+/***************************************************************************
+
+ Astro Fighter hardware
+
+****************************************************************************/
+
+#include "driver.h"
+#include "sound/samples.h"
+#include "sound/sn76477.h"
+#include "includes/astrof.h"
+
+
+
+/*************************************
+ *
+ * Globals
+ *
+ *************************************/
+
+static UINT8 port_1_last;
+static UINT8 port_2_last;
+static UINT8 astrof_start_explosion;
+static UINT8 astrof_death_playing;
+static UINT8 astrof_bosskill_playing;
+
+
+
+/*************************************
+ *
+ * Machine setup
+ *
+ *************************************/
+
+
+MACHINE_START( astrof_audio )
+{
+ /* setup for save states */
+ state_save_register_global(port_1_last);
+ state_save_register_global(port_2_last);
+ state_save_register_global(astrof_start_explosion);
+ state_save_register_global(astrof_death_playing);
+ state_save_register_global(astrof_bosskill_playing);
+}
+
+
+
+/*************************************
+ *
+ * Astro Fighter
+ *
+ *************************************/
+
+#define SAMPLE_FIRE 0
+#define SAMPLE_EKILLED 1
+#define SAMPLE_WAVE 2
+#define SAMPLE_BOSSFIRE 6
+#define SAMPLE_FUEL 7
+#define SAMPLE_DEATH 8
+#define SAMPLE_BOSSHIT 9
+#define SAMPLE_BOSSKILL 10
+
+#define CHANNEL_FIRE 0
+#define CHANNEL_EXPLOSION 1
+#define CHANNEL_WAVE 2 /* background humm */
+#define CHANNEL_BOSSFIRE 2 /* there is no background humm on the boss level */
+#define CHANNEL_FUEL 3
+
+
+WRITE8_HANDLER( astrof_audio_1_w )
+{
+ UINT8 rising_bits = data & ~port_1_last;
+
+ if (astrof_death_playing)
+ astrof_death_playing = sample_playing(CHANNEL_EXPLOSION);
+
+ if (astrof_bosskill_playing)
+ astrof_bosskill_playing = sample_playing(CHANNEL_EXPLOSION);
+
+ /* D2 - explosion */
+ if (rising_bits & 0x04)
+ {
+ /* I *know* that the effect select port will be written shortly
+ after this one, so this works */
+ astrof_start_explosion = 1;
+ }
+
+ /* D0,D1,D3 - background noise */
+ if ((data & 0x08) && (~port_1_last & 0x08))
+ {
+ int sample = SAMPLE_WAVE + (data & 3);
+ sample_start(CHANNEL_WAVE, sample, 1);
+ }
+
+ if ((~data & 0x08) && (port_1_last & 0x08))
+ sample_stop(CHANNEL_WAVE);
+
+ /* D4 - boss laser */
+ if ((rising_bits & 0x10) && !astrof_bosskill_playing)
+ sample_start(CHANNEL_BOSSFIRE, SAMPLE_BOSSFIRE, 0);
+
+ /* D5 - fire */
+ if ((rising_bits & 0x20) && !astrof_bosskill_playing)
+ sample_start(CHANNEL_FIRE, SAMPLE_FIRE, 0);
+
+ /* D6 - don't know. Probably something to do with the explosion sounds */
+
+ /* D7 - sound enable bit */
+ sound_global_enable(data & 0x80);
+
+ port_1_last = data;
+}
+
+
+WRITE8_HANDLER( astrof_audio_2_w )
+{
+ UINT8 rising_bits = data & ~port_2_last;
+
+ /* D0-D2 - explosion select (triggered by D2 of the other port */
+ if (astrof_start_explosion)
+ {
+ /* this is really a compound effect, made up of I believe 3 sound
+ effects, but since our sample contains them all, disable playing
+ the other effects while the explosion is playing */
+logerror("Explosion: %x\n", data);
+ if (data & 0x04)
+ {
+ if (!astrof_bosskill_playing)
+ {
+ sample_start(CHANNEL_EXPLOSION, SAMPLE_BOSSKILL, 0);
+
+ astrof_bosskill_playing = 1;
+ }
+ }
+ else if (data & 0x02)
+ sample_start(CHANNEL_EXPLOSION, SAMPLE_BOSSHIT, 0);
+ else if (data & 0x01)
+ sample_start(CHANNEL_EXPLOSION, SAMPLE_EKILLED, 0);
+ else
+ {
+ if (!astrof_death_playing)
+ {
+ sample_start(CHANNEL_EXPLOSION, SAMPLE_DEATH, 0);
+
+ astrof_death_playing = 1;
+ }
+ }
+
+ astrof_start_explosion = 0;
+ }
+
+ /* D3 - low fuel warning */
+ if (rising_bits & 0x08)
+ sample_start(CHANNEL_FUEL, SAMPLE_FUEL, 0);
+
+ port_2_last = data;
+}
+
+
+static const char *astrof_sample_names[] =
+{
+ "*astrof",
+ "fire.wav",
+ "ekilled.wav",
+ "wave1.wav",
+ "wave2.wav",
+ "wave3.wav",
+ "wave4.wav",
+ "bossfire.wav",
+ "fuel.wav",
+ "death.wav",
+ "bosshit.wav",
+ "bosskill.wav",
+ 0
+};
+
+
+static struct Samplesinterface astrof_samples_interface =
+{
+ 4, /* 4 channels */
+ astrof_sample_names
+};
+
+
+
+MACHINE_DRIVER_START( astrof_audio )
+ MDRV_SPEAKER_STANDARD_MONO("mono")
+ MDRV_SOUND_ADD_TAG("samples", SAMPLES, 0)
+ MDRV_SOUND_CONFIG(astrof_samples_interface)
+ MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
+MACHINE_DRIVER_END
+
+
+
+/*************************************
+ *
+ * Tomahawk
+ *
+ *************************************/
+
+WRITE8_HANDLER( tomahawk_audio_w )
+{
+ /* D0 - sonar */
+
+ /* D1 - UFO explosion */
+
+ /* D2 - morse */
+
+ /* D3 - missile */
+
+ /* D4 - UFO */
+
+ /* D5 - UFO under water */
+ SN76477_enable_w(0, (~data >> 5) & 0x01);
+
+ /* D6 - explosion */
+
+ /* D7 - sound enable bit */
+ sound_global_enable(data & 0x80);
+}
+
+
+static struct SN76477interface tomahawk_sn76477_interface =
+{
+ 0, /* 4 noise_res (N/C) */
+ 0, /* 5 filter_res (N/C) */
+ 0, /* 6 filter_cap (N/C) */
+ 0, /* 7 decay_res (N/C) */
+ 0, /* 8 attack_decay_cap (N/C) */
+ 0, /* 10 attack_res (N/C) */
+ RES_K(47), /* 11 amplitude_res */
+ RES_K(47), /* 12 feedback_res */
+ 0, /* 16 vco_voltage (N/C) */
+ CAP_U(0.033), /* 17 vco_cap */
+ RES_K(33), /* 18 vco_res */
+ 5.0, /* 19 pitch_voltage */
+ RES_K(47), /* 20 slf_res */
+ CAP_U(2.2), /* 21 slf_cap */
+ 0, /* 23 oneshot_cap (N/C) */
+ 0, /* 24 oneshot_res (N/C) */
+ 1, /* 22 vco */
+ 0, /* 26 mixer A */
+ 0, /* 25 mixer B */
+ 0, /* 27 mixer C */
+ 0, /* 1 envelope 1 */
+ 0, /* 28 envelope 2 */
+ 1 /* 9 enable (variable) */
+};
+
+
+MACHINE_DRIVER_START( tomahawk_audio )
+ MDRV_SPEAKER_STANDARD_MONO("mono")
+ MDRV_SOUND_ADD(SN76477, 0)
+ MDRV_SOUND_CONFIG(tomahawk_sn76477_interface)
+ MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_DRIVER_END
diff --git a/src/mame/audio/atarifb.c b/src/mame/audio/atarifb.c
new file mode 100644
index 00000000000..56f7e02dc16
--- /dev/null
+++ b/src/mame/audio/atarifb.c
@@ -0,0 +1,208 @@
+/*************************************************************************
+
+ audio\atarifb.c
+
+*************************************************************************/
+
+#include "driver.h"
+#include "atarifb.h"
+#include "sound/discrete.h"
+
+
+/************************************************************************/
+/* atarifb Sound System Analog emulation */
+/* */
+/* Complete re-write Dec 2004, D. Renaud */
+/************************************************************************/
+
+static const discrete_555_desc atarifbWhistl555 =
+{
+ DISC_555_OUT_CAP | DISC_555_OUT_DC,
+ 5, // B+ voltage of 555
+ DEFAULT_555_VALUES
+};
+
+static const discrete_lfsr_desc atarifb_lfsr =
+{
+ DISC_CLK_IS_FREQ,
+ 16, /* Bit Length */
+ 0, /* Reset Value */
+ 0, /* Use Bit 0 as XOR input 0 */
+ 14, /* Use Bit 14 as XOR input 1 */
+ DISC_LFSR_XNOR, /* Feedback stage1 is XNOR */
+ DISC_LFSR_OR, /* Feedback stage2 is just stage 1 output OR with external feed */
+ DISC_LFSR_REPLACE, /* Feedback stage3 replaces the shifted register contents */
+ 0x000001, /* Everything is shifted into the first bit only */
+ 0, /* Output is already inverted by XNOR */
+ 16 /* Output bit is feedback bit */
+};
+
+static const discrete_dac_r1_ladder atarifb_crowd_r1_ladder =
+{
+ 4,
+ {RES_K(390), RES_K(220), RES_K(100), RES_K(56)}, // r17, r16, r14, r15
+ 0, 0, // no bias
+ 0, // no rGnd
+ CAP_U(0.1) // c32
+};
+
+static const discrete_op_amp_filt_info atarifb_crowd_filt =
+{
+ 1.0/(1.0/RES_K(390) + 1.0/RES_K(220) + 1.0/RES_K(100) + 1.0/RES_K(56)), // r17, r16, r14, r15
+ 0, 0, 0,
+ RES_K(330), // r35
+ CAP_U(.01), // c33
+ CAP_U(.01), // c44
+ 0,
+ 5, 12, 0
+};
+
+static const discrete_mixer_desc atarifb_mixer =
+{
+ DISC_MIXER_IS_OP_AMP,
+ {RES_K(47), RES_K(47), RES_K(220)}, // r71, r70, r73
+ {0}, // no rNodes
+ {CAP_U(.01), CAP_U(.01), CAP_U(.01)}, // c53, c52, c51
+ 0,
+ RES_K(47), // r74
+ CAP_U(.001), // c54
+ CAP_U(0.1), // c57
+ 5,
+ 40000
+};
+
+/* Nodes - Sounds */
+#define ATARIFB_NOISE NODE_10
+#define ATARIFB_HIT_SND ATARIFB_HIT_EN
+#define ATARIFB_WHISTLE_SND NODE_12
+#define ATARIFB_CROWD_SND NODE_13
+
+DISCRETE_SOUND_START(atarifb)
+ /************************************************/
+ /* Input register mapping for atarifb */
+ /************************************************/
+ /* NODE GAIN OFFSET INIT */
+ DISCRETE_INPUT_LOGIC (ATARIFB_WHISTLE_EN)
+ DISCRETE_INPUT_DATA (ATARIFB_CROWD_DATA)
+ /* Hit is a trigger fed directly to the amp */
+ DISCRETE_INPUTX_LOGIC(ATARIFB_HIT_EN, DEFAULT_TTL_V_LOGIC_1, 0, 0.0)
+ DISCRETE_INPUT_NOT (ATARIFB_ATTRACT_EN)
+ DISCRETE_INPUT_LOGIC (ATARIFB_NOISE_EN)
+