summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/includes
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/includes')
-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
203 files changed, 11127 insertions, 0 deletions
diff --git a/src/mame/includes/8080bw.h b/src/mame/includes/8080bw.h
new file mode 100644
index 00000000000..b451b5a7a5e
--- /dev/null
+++ b/src/mame/includes/8080bw.h
@@ -0,0 +1,86 @@
+/*************************************************************************
+
+ 8080bw.h
+
+*************************************************************************/
+
+#include "sound/discrete.h"
+
+
+#define CABINET_PORT_TAG "CAB"
+
+
+/*----------- defined in drivers/8080bw.c -----------*/
+
+UINT8 polaris_get_cloud_pos(void);
+
+
+/*----------- defined in audio/8080bw.c -----------*/
+
+WRITE8_HANDLER( invadpt2_sh_port_1_w );
+WRITE8_HANDLER( invadpt2_sh_port_2_w );
+
+WRITE8_HANDLER( spcewars_sh_port_w );
+
+WRITE8_HANDLER( lrescue_sh_port_1_w );
+WRITE8_HANDLER( lrescue_sh_port_2_w );
+extern struct Samplesinterface lrescue_samples_interface;
+
+WRITE8_HANDLER( cosmo_sh_port_2_w );
+
+WRITE8_HANDLER( ballbomb_sh_port_1_w );
+WRITE8_HANDLER( ballbomb_sh_port_2_w );
+
+WRITE8_HANDLER( indianbt_sh_port_1_w );
+WRITE8_HANDLER( indianbt_sh_port_2_w );
+WRITE8_HANDLER( indianbt_sh_port_3_w );
+DISCRETE_SOUND_EXTERN( indianbt );
+
+WRITE8_HANDLER( polaris_sh_port_1_w );
+WRITE8_HANDLER( polaris_sh_port_2_w );
+WRITE8_HANDLER( polaris_sh_port_3_w );
+DISCRETE_SOUND_EXTERN( polaris );
+
+MACHINE_RESET( schaser );
+MACHINE_START( schaser );
+WRITE8_HANDLER( schaser_sh_port_1_w );
+WRITE8_HANDLER( schaser_sh_port_2_w );
+extern struct SN76477interface schaser_sn76477_interface;
+DISCRETE_SOUND_EXTERN( schaser );
+
+WRITE8_HANDLER( rollingc_sh_port_w );
+
+WRITE8_HANDLER( invrvnge_sh_port_w );
+
+WRITE8_HANDLER( lupin3_sh_port_1_w );
+WRITE8_HANDLER( lupin3_sh_port_2_w );
+
+WRITE8_HANDLER( schasrcv_sh_port_1_w );
+WRITE8_HANDLER( schasrcv_sh_port_2_w );
+
+WRITE8_HANDLER( yosakdon_sh_port_1_w );
+WRITE8_HANDLER( yosakdon_sh_port_2_w );
+
+WRITE8_HANDLER( shuttlei_sh_port_1_w );
+WRITE8_HANDLER( shuttlei_sh_port_2_w );
+
+
+/*----------- defined in video/8080bw.c -----------*/
+
+extern UINT8 *c8080bw_colorram;
+
+void c8080bw_flip_screen_w(int data);
+void c8080bw_screen_red_w(int data);
+void schaser_background_control_w(int data);
+
+VIDEO_UPDATE( invadpt2 );
+VIDEO_UPDATE( ballbomb );
+VIDEO_UPDATE( schaser );
+VIDEO_UPDATE( schasrcv );
+VIDEO_UPDATE( rollingc );
+VIDEO_UPDATE( polaris );
+VIDEO_UPDATE( lupin3 );
+VIDEO_UPDATE( cosmo );
+VIDEO_UPDATE( indianbt );
+VIDEO_UPDATE( shuttlei );
+VIDEO_UPDATE( sflush );
diff --git a/src/mame/includes/amiga.h b/src/mame/includes/amiga.h
new file mode 100644
index 00000000000..9b4b56d0e17
--- /dev/null
+++ b/src/mame/includes/amiga.h
@@ -0,0 +1,417 @@
+/***************************************************************************
+Amiga Computer / Arcadia Game System
+
+Driver by:
+
+Ernesto Corvi & Mariusz Wojcieszek
+
+***************************************************************************/
+
+#ifndef __AMIGA_H__
+#define __AMIGA_H__
+
+#include "sound/custom.h"
+
+
+/* A bit of a trick here: some registers are 32-bit. In order to efficiently */
+/* read them on both big-endian and little-endian systems, we store the custom */
+/* registers in 32-bit natural order. This means we need to XOR the register */
+/* address with 1 on little-endian systems. */
+#define CUSTOM_REG(x) (amiga_custom_regs[BYTE_XOR_BE(x)])
+#define CUSTOM_REG_SIGNED(x) ((INT16)CUSTOM_REG(x))
+#define CUSTOM_REG_LONG(x) (*(UINT32 *)&amiga_custom_regs[x])
+
+/*
+ A = Angus
+ D = Denise
+ P = Paula
+
+ R = read-only
+ ER = early read
+ W = write-only
+ S = strobe
+*/
+#define REG_BLTDDAT (0x000/2) /* ER A Blitter destination early read (dummy address) */
+#define REG_DMACONR (0x002/2) /* R A P DMA control (and blitter status) read */
+#define REG_VPOSR (0x004/2) /* R A Read vert most signif. bit (and frame flop) */
+#define REG_VHPOSR (0x006/2) /* R A Read vert and horiz. position of beam */
+#define REG_DSKDATR (0x008/2) /* ER P Disk data early read (dummy address) */
+#define REG_JOY0DAT (0x00A/2) /* R D Joystick-mouse 0 data (vert,horiz) */
+#define REG_JOY1DAT (0x00C/2) /* R D Joystick-mouse 1 data (vert,horiz) */
+#define REG_CLXDAT (0x00E/2) /* R D Collision data register (read and clear) */
+#define REG_ADKCONR (0x010/2) /* R P Audio, disk control register read */
+#define REG_POT0DAT (0x012/2) /* R P Pot counter pair 0 data (vert,horiz) */
+#define REG_POT1DAT (0x014/2) /* R P Pot counter pair 1 data (vert,horiz) */
+#define REG_POTGOR (0x016/2) /* R P Pot port data read (formerly POTINP) */
+#define REG_SERDATR (0x018/2) /* R P Serial port data and status read */
+#define REG_DSKBYTR (0x01A/2) /* R P Disk data byte and status read */
+#define REG_INTENAR (0x01C/2) /* R P Interrupt enable bits read */
+#define REG_INTREQR (0x01E/2) /* R P Interrupt request bits read */
+#define REG_DSKPTH (0x020/2) /* W A Disk pointer (high 3 bits) */
+#define REG_DSKPTL (0x022/2) /* W A Disk pointer (low 15 bits) */
+#define REG_DSKLEN (0x024/2) /* W P Disk length */
+#define REG_DSKDAT (0x026/2) /* W P Disk DMA data write */
+#define REG_REFPTR (0x028/2) /* W A Refresh pointer */
+#define REG_VPOSW (0x02A/2) /* W A Write vert most signif. bit (and frame flop) */
+#define REG_VHPOSW (0x02C/2) /* W A Write vert and horiz position of beam */
+#define REG_COPCON (0x02E/2) /* W A Coprocessor control register (CDANG) */
+#define REG_SERDAT (0x030/2) /* W P Serial port data and stop bits write */
+#define REG_SERPER (0x032/2) /* W P Serial port period and control */
+#define REG_POTGO (0x034/2) /* W P Pot port data write and start */
+#define REG_JOYTEST (0x036/2) /* W D Write to all 4 joystick-mouse counters at once */
+#define REG_STREQU (0x038/2) /* S D Strobe for horiz sync with VB and EQU */
+#define REG_STRVBL (0x03A/2) /* S D Strobe for horiz sync with VB (vert. blank) */
+#define REG_STRHOR (0x03C/2) /* S D P Strobe for horiz sync */
+#define REG_STRLONG (0x03E/2) /* S D Strobe for identification of long horiz. line. */
+#define REG_BLTCON0 (0x040/2) /* W A Blitter control register 0 */
+#define REG_BLTCON1 (0x042/2) /* W A Blitter control register 1 */
+#define REG_BLTAFWM (0x044/2) /* W A Blitter first word mask for source A */
+#define REG_BLTALWM (0x046/2) /* W A Blitter last word mask for source A */
+#define REG_BLTCPTH (0x048/2) /* W A Blitter pointer to source C (high 3 bits) */
+#define REG_BLTCPTL (0x04A/2) /* W A Blitter pointer to source C (low 15 bits) */
+#define REG_BLTBPTH (0x04C/2) /* W A Blitter pointer to source B (high 3 bits) */
+#define REG_BLTBPTL (0x04E/2) /* W A Blitter pointer to source B (low 15 bits) */
+#define REG_BLTAPTH (0x050/2) /* W A Blitter pointer to source A (high 3 bits) */
+#define REG_BLTAPTL (0x052/2) /* W A Blitter pointer to source A (low 15 bits) */
+#define REG_BLTDPTH (0x054/2) /* W A Blitter pointer to destination D (high 3 bits) */
+#define REG_BLTDPTL (0x056/2) /* W A Blitter pointer to destination D (low 15 bits) */
+#define REG_BLTSIZE (0x058/2) /* W A Blitter start and size (window width, height) */
+#define REG_BLTCON0L (0x05A/2) /* W A Blitter control 0, lower 8 bits (minterms) */
+#define REG_BLTSIZV (0x05C/2) /* W A Blitter V size (for 15 bit vertical size) (ECS) */
+#define REG_BLTSIZH (0x05E/2) /* W A Blitter H size and start (for 11 bit H size) (ECS) */
+#define REG_BLTCMOD (0x060/2) /* W A Blitter modulo for source C */
+#define REG_BLTBMOD (0x062/2) /* W A Blitter modulo for source B */
+#define REG_BLTAMOD (0x064/2) /* W A Blitter modulo for source A */
+#define REG_BLTDMOD (0x066/2) /* W A Blitter modulo for destination D */
+#define REG_BLTCDAT (0x070/2) /* W A Blitter source C data register */
+#define REG_BLTBDAT (0x072/2) /* W A Blitter source B data reglster */
+#define REG_BLTADAT (0x074/2) /* W A Blitter source A data register */
+#define REG_DENISEID (0x07C/2) /* R D Denise ID: OCS = 0xFF, ECS = 0xFC, AGA = 0xF8 */
+#define REG_DSRSYNC (0x07E/2) /* W P Disk sync pattern register for disk read */
+#define REG_COP1LCH (0x080/2) /* W A Coprocessor first location register (high 3 bits) */
+#define REG_COP1LCL (0x082/2) /* W A Coprocessor first location register (low 15 bits) */
+#define REG_COP2LCH (0x084/2) /* W A Coprocessor second location register (high 3 bits) */
+#define REG_COP2LCL (0x086/2) /* W A Coprocessor second location register (low 15 bits) */
+#define REG_COPJMP1 (0x088/2) /* S A Coprocessor restart at first location */
+#define REG_COPJMP2 (0x08A/2) /* S A Coprocessor restart at second location */
+#define REG_COPINS (0x08C/2) /* W A Coprocessor instruction fetch identify */
+#define REG_DIWSTRT (0x08E/2) /* W A Display window start (upper left vert-horiz position) */
+#define REG_DIWSTOP (0x090/2) /* W A Display window stop (lower right vert.-horiz. position) */
+#define REG_DDFSTRT (0x092/2) /* W A Display bit plane data fetch start (horiz. position) */
+#define REG_DDFSTOP (0x094/2) /* W A Display bit plane data fetch stop (horiz. position) */
+#define REG_DMACON (0x096/2) /* W A D P DMA control write (clear or set) */
+#define REG_CLXCON (0x098/2) /* W D Collision control */
+#define REG_INTENA (0x09A/2) /* W P Interrupt enable bits (clear or set bits) */
+#define REG_INTREQ (0x09C/2) /* W P Interrupt request bits (clear or set bits) */
+#define REG_ADKCON (0x09E/2) /* W P Audio, disk, UART control */
+#define REG_AUD0LCH (0x0A0/2) /* W A Audio channel 0 location (high 3 bits) */
+#define REG_AUD0LCL (0x0A2/2) /* W A Audio channel 0 location (low 15 bits) */
+#define REG_AUD0LEN (0x0A4/2) /* W P Audio channel 0 length */
+#define REG_AUD0PER (0x0A6/2) /* W P Audio channel 0 period */
+#define REG_AUD0VOL (0x0A8/2) /* W P Audio channel 0 volume */
+#define REG_AUD0DAT (0x0AA/2) /* W P Audio channel 0 data */
+#define REG_AUD1LCH (0x0B0/2) /* W A Audio channel 1 location (high 3 bits) */
+#define REG_AUD1LCL (0x0B2/2) /* W A Audio channel 1 location (low 15 bits) */
+#define REG_AUD1LEN (0x0B4/2) /* W P Audio channel 1 length */
+#define REG_AUD1PER (0x0B6/2) /* W P Audio channel 1 period */
+#define REG_AUD1VOL (0x0B8/2) /* W P Audio channel 1 volume */
+#define REG_AUD1DAT (0x0BA/2) /* W P Audio channel 1 data */
+#define REG_AUD2LCH (0x0C0/2) /* W A Audio channel 2 location (high 3 bits) */
+#define REG_AUD2LCL (0x0C2/2) /* W A Audio channel 2 location (low 15 bits) */
+#define REG_AUD2LEN (0x0C4/2) /* W P Audio channel 2 length */
+#define REG_AUD2PER (0x0C6/2) /* W P Audio channel 2 period */
+#define REG_AUD2VOL (0x0C8/2) /* W P Audio channel 2 volume */
+#define REG_AUD2DAT (0x0CA/2) /* W P Audio channel 2 data */
+#define REG_AUD3LCH (0x0D0/2) /* W A Audio channel 3 location (high 3 bits) */
+#define REG_AUD3LCL (0x0D2/2) /* W A Audio channel 3 location (low 15 bits) */
+#define REG_AUD3LEN (0x0D4/2) /* W P Audio channel 3 length */
+#define REG_AUD3PER (0x0D6/2) /* W P Audio channel 3 period */
+#define REG_AUD3VOL (0x0D8/2) /* W P Audio channel 3 volume */
+#define REG_AUD3DAT (0x0DA/2) /* W P Audio channel 3 data */
+#define REG_BPL1PTH (0x0E0/2) /* W A Bit plane 1 pointer (high 3 bits) */
+#define REG_BPL1PTL (0x0E2/2) /* W A Bit plane 1 pointer (low 15 bits) */
+#define REG_BPL2PTH (0x0E4/2) /* W A Bit plane 2 pointer (high 3 bits) */
+#define REG_BPL2PTL (0x0E6/2) /* W A Bit plane 2 pointer (low 15 bits) */
+#define REG_BPL3PTH (0x0E8/2) /* W A Bit plane 3 pointer (high 3 bits) */
+#define REG_BPL3PTL (0x0EA/2) /* W A Bit plane 3 pointer (low 15 bits) */
+#define REG_BPL4PTH (0x0EC/2) /* W A Bit plane 4 pointer (high 3 bits) */
+#define REG_BPL4PTL (0x0EE/2) /* W A Bit plane 4 pointer (low 15 bits) */
+#define REG_BPL5PTH (0x0F0/2) /* W A Bit plane 5 pointer (high 3 bits) */
+#define REG_BPL5PTL (0x0F2/2) /* W A Bit plane 5 pointer (low 15 bits) */
+#define REG_BPL6PTH (0x0F4/2) /* W A Bit plane 6 pointer (high 3 bits) */
+#define REG_BPL6PTL (0x0F6/2) /* W A Bit plane 6 pointer (low 15 bits) */
+#define REG_BPLCON0 (0x100/2) /* W A D Bit plane control register (misc. control bits) */
+#define REG_BPLCON1 (0x102/2) /* W D Bit plane control reg. (scroll value PF1, PF2) */
+#define REG_BPLCON2 (0x104/2) /* W D Bit plane control reg. (priority control) */
+#define REG_BPL1MOD (0x108/2) /* W A Bit plane modulo (odd planes) */
+#define REG_BPL2MOD (0x10A/2) /* W A Bit Plane modulo (even planes) */
+#define REG_BPL1DAT (0x110/2) /* W D Bit plane 1 data (parallel-to-serial convert) */
+#define REG_BPL2DAT (0x112/2) /* W D Bit plane 2 data (parallel-to-serial convert) */
+#define REG_BPL3DAT (0x114/2) /* W D Bit plane 3 data (parallel-to-serial convert) */
+#define REG_BPL4DAT (0x116/2) /* W D Bit plane 4 data (parallel-to-serial convert) */
+#define REG_BPL5DAT (0x118/2) /* W D Bit plane 5 data (parallel-to-serial convert) */
+#define REG_BPL6DAT (0x11A/2) /* W D Bit plane 6 data (parallel-to-serial convert) */
+#define REG_SPR0PTH (0x120/2) /* W A Sprite 0 pointer (high 3 bits) */
+#define REG_SPR0PTL (0x122/2) /* W A Sprite 0 pointer (low 15 bits) */
+#define REG_SPR1PTH (0x124/2) /* W A Sprite 1 pointer (high 3 bits) */
+#define REG_SPR1PTL (0x126/2) /* W A Sprite 1 pointer (low 15 bits) */
+#define REG_SPR2PTH (0x128/2) /* W A Sprite 2 pointer (high 3 bits) */
+#define REG_SPR2PTL (0x12A/2) /* W A Sprite 2 pointer (low 15 bits) */
+#define REG_SPR3PTH (0x12C/2) /* W A Sprite 3 pointer (high 3 bits) */
+#define REG_SPR3PTL (0x12E/2) /* W A Sprite 3 pointer (low 15 bits) */
+#define REG_SPR4PTH (0x130/2) /* W A Sprite 4 pointer (high 3 bits) */
+#define REG_SPR4PTL (0x132/2) /* W A Sprite 4 pointer (low 15 bits) */
+#define REG_SPR5PTH (0x134/2) /* W A Sprite 5 pointer (high 3 bits) */
+#define REG_SPR5PTL (0x136/2) /* W A Sprite 5 pointer (low 15 bits) */
+#define REG_SPR6PTH (0x138/2) /* W A Sprite 6 pointer (high 3 bits) */
+#define REG_SPR6PTL (0x13A/2) /* W A Sprite 6 pointer (low 15 bits) */
+#define REG_SPR7PTH (0x13C/2) /* W A Sprite 7 pointer (high 3 bits) */
+#define REG_SPR7PTL (0x13E/2) /* W A Sprite 7 pointer (low 15 bits) */
+#define REG_SPR0POS (0x140/2) /* W A D Sprite 0 vert-horiz start position data */
+#define REG_SPR0CTL (0x142/2) /* W A D Sprite 0 vert stop position and control data */
+#define REG_SPR0DATA (0x144/2) /* W D Sprite 0 image data register A */
+#define REG_SPR0DATB (0x146/2) /* W D Sprite 0 image data register B */
+#define REG_SPR1POS (0x148/2) /* W A D Sprite 1 vert-horiz start position data */
+#define REG_SPR1CTL (0x14A/2) /* W A D Sprite 1 vert stop position and control data */
+#define REG_SPR1DATA (0x14C/2) /* W D Sprite 1 image data register A */
+#define REG_SPR1DATB (0x14E/2) /* W D Sprite 1 image data register B */
+#define REG_SPR2POS (0x150/2) /* W A D Sprite 2 vert-horiz start position data */
+#define REG_SPR2CTL (0x152/2) /* W A D Sprite 2 vert stop position and control data */
+#define REG_SPR2DATA (0x154/2) /* W D Sprite 2 image data register A */
+#define REG_SPR2DATB (0x156/2) /* W D Sprite 2 image data register B */
+#define REG_SPR3POS (0x158/2) /* W A D Sprite 3 vert-horiz start position data */
+#define REG_SPR3CTL (0x15A/2) /* W A D Sprite 3 vert stop position and control data */
+#define REG_SPR3DATA (0x15C/2) /* W D Sprite 3 image data register A */
+#define REG_SPR3DATB (0x15E/2) /* W D Sprite 3 image data register B */
+#define REG_SPR4POS (0x160/2) /* W A D Sprite 4 vert-horiz start position data */
+#define REG_SPR4CTL (0x162/2) /* W A D Sprite 4 vert stop position and control data */
+#define REG_SPR4DATA (0x164/2) /* W D Sprite 4 image data register A */
+#define REG_SPR4DATB (0x166/2) /* W D Sprite 4 image data register B */
+#define REG_SPR5POS (0x168/2) /* W A D Sprite 5 vert-horiz start position data */
+#define REG_SPR5CTL (0x16A/2) /* W A D Sprite 5 vert stop position and control data */
+#define REG_SPR5DATA (0x16C/2) /* W D Sprite 5 image data register A */
+#define REG_SPR5DATB (0x16E/2) /* W D Sprite 5 image data register B */
+#define REG_SPR6POS (0x170/2) /* W A D Sprite 6 vert-horiz start position data */
+#define REG_SPR6CTL (0x172/2) /* W A D Sprite 6 vert stop position and control data */
+#define REG_SPR6DATA (0x174/2) /* W D Sprite 6 image data register A */
+#define REG_SPR6DATB (0x176/2) /* W D Sprite 6 image data register B */
+#define REG_SPR7POS (0x178/2) /* W A D Sprite 7 vert-horiz start position data */
+#define REG_SPR7CTL (0x17A/2) /* W A D Sprite 7 vert stop position and control data */
+#define REG_SPR7DATA (0x17C/2) /* W D Sprite 7 image data register A */
+#define REG_SPR7DATB (0x17E/2) /* W D Sprite 7 image data register B */
+#define REG_COLOR00 (0x180/2) /* W D Color table 00 */
+#define REG_COLOR01 (0x182/2) /* W D Color table 01 */
+#define REG_COLOR02 (0x184/2) /* W D Color table 02 */
+#define REG_COLOR03 (0x186/2) /* W D Color table 03 */
+#define REG_COLOR04 (0x188/2) /* W D Color table 04 */
+#define REG_COLOR05 (0x18A/2) /* W D Color table 05 */
+#define REG_COLOR06 (0x18C/2) /* W D Color table 06 */
+#define REG_COLOR07 (0x18E/2) /* W D Color table 07 */
+#define REG_COLOR08 (0x190/2) /* W D Color table 08 */
+#define REG_COLOR09 (0x192/2) /* W D Color table 09 */
+#define REG_COLOR10 (0x194/2) /* W D Color table 10 */
+#define REG_COLOR11 (0x196/2) /* W D Color table 11 */
+#define REG_COLOR12 (0x198/2) /* W D Color table 12 */
+#define REG_COLOR13 (0x19A/2) /* W D Color table 13 */
+#define REG_COLOR14 (0x19C/2) /* W D Color table 14 */
+#define REG_COLOR15 (0x19E/2) /* W D Color table 15 */
+#define REG_COLOR16 (0x1A0/2) /* W D Color table 16 */
+#define REG_COLOR17 (0x1A2/2) /* W D Color table 17 */
+#define REG_COLOR18 (0x1A4/2) /* W D Color table 18 */
+#define REG_COLOR19 (0x1A6/2) /* W D Color table 19 */
+#define REG_COLOR20 (0x1A8/2) /* W D Color table 20 */
+#define REG_COLOR21 (0x1AA/2) /* W D Color table 21 */
+#define REG_COLOR22 (0x1AC/2) /* W D Color table 22 */
+#define REG_COLOR23 (0x1AE/2) /* W D Color table 23 */
+#define REG_COLOR24 (0x1B0/2) /* W D Color table 24 */
+#define REG_COLOR25 (0x1B2/2) /* W D Color table 25 */
+#define REG_COLOR26 (0x1B4/2) /* W D Color table 26 */
+#define REG_COLOR27 (0x1B6/2) /* W D Color table 27 */
+#define REG_COLOR28 (0x1B8/2) /* W D Color table 28 */
+#define REG_COLOR29 (0x1BA/2) /* W D Color table 29 */
+#define REG_COLOR30 (0x1BC/2) /* W D Color table 30 */
+#define REG_COLOR31 (0x1BE/2) /* W D Color table 31 */
+
+/* DMACON bit layout */
+#define DMACON_AUD0EN 0x0001
+#define DMACON_AUD1EN 0x0002
+#define DMACON_AUD2EN 0x0004
+#define DMACON_AUD3EN 0x0008
+#define DMACON_DSKEN 0x0010
+#define DMACON_SPREN 0x0020
+#define DMACON_BLTEN 0x0040
+#define DMACON_COPEN 0x0080
+#define DMACON_BPLEN 0x0100
+#define DMACON_DMAEN 0x0200
+#define DMACON_BLTPRI 0x0400
+#define DMACON_RSVED1 0x0800
+#define DMACON_RSVED2 0x1000
+#define DMACON_BZERO 0x2000
+#define DMACON_BBUSY 0x4000
+#define DMACON_SETCLR 0x8000
+
+/* BPLCON0 bit layout */
+#define BPLCON0_RSVED1 0x0001
+#define BPLCON0_ERSY 0x0002
+#define BPLCON0_LACE 0x0004
+#define BPLCON0_LPEN 0x0008
+#define BPLCON0_RSVED2 0x0010
+#define BPLCON0_RSVED3 0x0020
+#define BPLCON0_RSVED4 0x0040
+#define BPLCON0_RSVED5 0x0080
+#define BPLCON0_GAUD 0x0100
+#define BPLCON0_COLOR 0x0200
+#define BPLCON0_DBLPF 0x0400
+#define BPLCON0_HOMOD 0x0800
+#define BPLCON0_BPU0 0x1000
+#define BPLCON0_BPU1 0x2000
+#define BPLCON0_BPU2 0x4000
+#define BPLCON0_HIRES 0x8000
+
+/* INTENA/INTREQ bit layout */
+#define INTENA_TBE 0x0001
+#define INTENA_DSKBLK 0x0002
+#define INTENA_SOFT 0x0004
+#define INTENA_PORTS 0x0008
+#define INTENA_COPER 0x0010
+#define INTENA_VERTB 0x0020
+#define INTENA_BLIT 0x0040
+#define INTENA_AUD0 0x0080
+#define INTENA_AUD1 0x0100
+#define INTENA_AUD2 0x0200
+#define INTENA_AUD3 0x0400
+#define INTENA_RBF 0x0800
+#define INTENA_DSKSYN 0x1000
+#define INTENA_EXTER 0x2000
+#define INTENA_INTEN 0x4000
+#define INTENA_SETCLR 0x8000
+
+#define MAX_PLANES 6 /* 0 to 6, inclusive ( but we count from 0 to 5 ) */
+
+/* Clock speeds */
+#define AMIGA_68000_NTSC_CLOCK 7159090 /* Hz */
+#define AMIGA_68000_PAL_CLOCK 7093790 /* Hz */
+#define AMIGA_68EC020_NTSC_CLOCK 14318180 /* Hz */
+#define AMIGA_68EC020_PAL_CLOCK 14187580 /* Hz */
+#define CDTV_CLOCK_X1 28636363 /* Hz */
+#define CDTV_CLOCK_X5 28375160 /* Hz */
+
+
+#define ANGUS_CHIP_RAM_MASK 0x07fffe
+#define FAT_ANGUS_CHIP_RAM_MASK 0x0ffffe
+#define ECS_CHIP_RAM_MASK 0x1ffffe
+#define AGA_CHIP_RAM_MASK 0x1ffffe
+
+#define FLAGS_AGA_CHIPSET (1 << 0)
+
+typedef struct _amiga_machine_interface amiga_machine_interface;
+struct _amiga_machine_interface
+{
+ UINT32 chip_ram_mask;
+
+ UINT8 (*cia_0_portA_r)(void);
+ UINT8 (*cia_0_portB_r)(void);
+ void (*cia_0_portA_w)(UINT8 data);
+ void (*cia_0_portB_w)(UINT8 data);
+
+ UINT8 (*cia_1_portA_r)(void);
+ UINT8 (*cia_1_portB_r)(void);
+ void (*cia_1_portA_w)(UINT8 data);
+ void (*cia_1_portB_w)(UINT8 data);
+
+ UINT16 (*joy0dat_r)(void);
+ UINT16 (*joy1dat_r)(void);
+ void (*potgo_w)(UINT16 data);
+
+ UINT16 (*dskbytr_r)(void);
+ void (*dsklen_w)(UINT16 data);
+
+ void (*serdat_w)(UINT16 data);
+
+ void (*scanline0_callback)(void);
+ void (*reset_callback)(void);
+ void (*nmi_callback)(void);
+
+ UINT32 flags;
+};
+
+#define IS_AGA(intf) ( intf->chip_ram_mask == AGA_CHIP_RAM_MASK && (( intf->flags & FLAGS_AGA_CHIPSET) != 0))
+#define IS_ECS(intf) ( intf->chip_ram_mask == ECS_CHIP_RAM_MASK && (( intf->flags & FLAGS_AGA_CHIPSET) == 0))
+#define IS_ECS_OR_AGA(intf) ( intf->chip_ram_mask == ECS_CHIP_RAM_MASK)
+
+typedef struct _amiga_autoconfig_device amiga_autoconfig_device;
+struct _amiga_autoconfig_device
+{
+ UINT8 link_memory; /* link into free memory list */
+ UINT8 rom_vector_valid; /* ROM vector offset valid */
+ UINT8 multi_device; /* multiple devices on card */
+ UINT8 size; /* number of 64k pages */
+ UINT16 product_number; /* product number */
+ UINT8 prefer_8meg; /* prefer 8MB address space */
+ UINT8 can_shutup; /* can be shut up */
+ UINT16 mfr_number; /* manufacturers number */
+ UINT32 serial_number; /* serial number */
+ UINT16 rom_vector; /* ROM vector offset */
+ UINT8 (*int_control_r)(void); /* interrupt control read */
+ void (*int_control_w)(UINT8 data); /* interrupt control write */
+ void (*install)(offs_t base); /* memory installation */
+ void (*uninstall)(offs_t base); /* memory uninstallation */
+};
+
+
+/*----------- defined in machine/amiga.c -----------*/
+
+extern UINT16 *amiga_chip_ram;
+extern UINT32 *amiga_chip_ram32;
+extern size_t amiga_chip_ram_size;
+
+extern UINT16 *amiga_custom_regs;
+extern UINT16 *amiga_expansion_ram;
+extern UINT16 *amiga_autoconfig_mem;
+
+extern const char *amiga_custom_names[0x100];
+
+extern UINT16 (*amiga_chip_ram_r)(offs_t offset);
+extern void (*amiga_chip_ram_w)(offs_t offset, UINT16 data);
+
+void amiga_machine_config(const amiga_machine_interface *intf);
+
+MACHINE_RESET( amiga );
+INTERRUPT_GEN( amiga_scanline_callback );
+
+UINT32 amiga_joystick_convert(void *param);
+
+READ16_HANDLER( amiga_cia_r );
+WRITE16_HANDLER( amiga_cia_w );
+
+READ16_HANDLER( amiga_custom_r );
+WRITE16_HANDLER( amiga_custom_w );
+
+void amiga_serial_in_w(UINT16 data);
+attotime amiga_get_serial_char_period(void);
+
+void amiga_add_autoconfig(amiga_autoconfig_device *device);
+READ16_HANDLER( amiga_autoconfig_r );
+WRITE16_HANDLER( amiga_autoconfig_w );
+
+
+/*----------- defined in audio/amiga.c -----------*/
+
+void *amiga_sh_start(int clock, const struct CustomSound_interface *config);
+void amiga_audio_update(void);
+void amiga_audio_data_w(int which, UINT16 data);
+
+
+/*----------- defined in video/amiga.c -----------*/
+
+PALETTE_INIT( amiga );
+VIDEO_START( amiga );
+
+UINT32 amiga_gethvpos(void);
+void copper_setpc(UINT32 pc);
+void amiga_set_genlock_color(UINT16 color);
+void amiga_render_scanline(int scanline);
+void amiga_sprite_dma_reset(int which);
+void amiga_sprite_enable_comparitor(int which, int enable);
+
+#endif /* __AMIGA_H__ */
diff --git a/src/mame/includes/appoooh.h b/src/mame/includes/appoooh.h
new file mode 100644
index 00000000000..402877da86b
--- /dev/null
+++ b/src/mame/includes/appoooh.h
@@ -0,0 +1,16 @@
+/* ----------- defined in video/appoooh.c -----------*/
+
+extern UINT8 *appoooh_fg_videoram,*appoooh_fg_colorram;
+extern UINT8 *appoooh_bg_videoram,*appoooh_bg_colorram;
+WRITE8_HANDLER( appoooh_fg_videoram_w );
+WRITE8_HANDLER( appoooh_fg_colorram_w );
+WRITE8_HANDLER( appoooh_bg_videoram_w );
+WRITE8_HANDLER( appoooh_bg_colorram_w );
+PALETTE_INIT( appoooh );
+PALETTE_INIT( robowres );
+WRITE8_HANDLER( appoooh_scroll_w );
+WRITE8_HANDLER( appoooh_out_w );
+VIDEO_START( appoooh );
+VIDEO_UPDATE( appoooh );
+VIDEO_UPDATE( robowres );
+
diff --git a/src/mame/includes/arabian.h b/src/mame/includes/arabian.h
new file mode 100644
index 00000000000..154cbf8d623
--- /dev/null
+++ b/src/mame/includes/arabian.h
@@ -0,0 +1,19 @@
+/***************************************************************************
+
+ Sun Electronics Arabian hardware
+
+ driver by Dan Boris
+
+***************************************************************************/
+
+/*----------- defined in video/arabian.c -----------*/
+
+extern UINT8 arabian_video_control;
+extern UINT8 arabian_flip_screen;
+
+PALETTE_INIT( arabian );
+VIDEO_START( arabian );
+VIDEO_UPDATE( arabian );
+
+WRITE8_HANDLER( arabian_blitter_w );
+WRITE8_HANDLER( arabian_videoram_w );
diff --git a/src/mame/includes/arcadecl.h b/src/mame/includes/arcadecl.h
new file mode 100644
index 00000000000..931336bca5f
--- /dev/null
+++ b/src/mame/includes/arcadecl.h
@@ -0,0 +1,13 @@
+/*************************************************************************
+
+ Atari Arcade Classics hardware (prototypes)
+
+*************************************************************************/
+
+#include "rampart.h"
+
+
+/*----------- defined in video/arcadecl.c -----------*/
+
+VIDEO_START( arcadecl );
+VIDEO_UPDATE( arcadecl );
diff --git a/src/mame/includes/arkanoid.h b/src/mame/includes/arkanoid.h
new file mode 100644
index 00000000000..c5b2a2e2ae8
--- /dev/null
+++ b/src/mame/includes/arkanoid.h
@@ -0,0 +1,50 @@
+/* This it the best way to allow game specific kludges until the system is fully understood */
+enum {
+ ARKUNK=0, /* unknown bootlegs for inclusion of possible new sets */
+ ARKANGC,
+ ARKANGC2,
+ ARKBLOCK,
+ ARKBLOC2,
+ ARKGCBL,
+ PADDLE2
+};
+
+
+/*----------- defined in drivers/arkanoid.c -----------*/
+
+extern int arkanoid_bootleg_id;
+
+
+/*----------- defined in video/arkanoid.c -----------*/
+
+extern WRITE8_HANDLER( arkanoid_videoram_w );
+
+extern WRITE8_HANDLER( arkanoid_d008_w );
+
+extern VIDEO_START( arkanoid );
+extern VIDEO_UPDATE( arkanoid );
+
+
+/*----------- defined in machine/arkanoid.c -----------*/
+
+extern MACHINE_START( arkanoid );
+extern MACHINE_RESET( arkanoid );
+
+extern READ8_HANDLER( arkanoid_Z80_mcu_r );
+extern WRITE8_HANDLER( arkanoid_Z80_mcu_w );
+
+extern READ8_HANDLER( arkanoid_68705_portA_r );
+extern WRITE8_HANDLER( arkanoid_68705_portA_w );
+extern WRITE8_HANDLER( arkanoid_68705_ddrA_w );
+
+extern READ8_HANDLER( arkanoid_68705_portC_r );
+extern WRITE8_HANDLER( arkanoid_68705_portC_w );
+extern WRITE8_HANDLER( arkanoid_68705_ddrC_w );
+
+extern READ8_HANDLER( arkanoid_68705_input_0_r );
+extern READ8_HANDLER( arkanoid_input_2_r );
+
+extern READ8_HANDLER( arkanoid_bootleg_f002_r );
+extern WRITE8_HANDLER( arkanoid_bootleg_d018_w );
+extern READ8_HANDLER( arkanoid_bootleg_d008_r );
+
diff --git a/src/mame/includes/artmagic.h b/src/mame/includes/artmagic.h
new file mode 100644
index 00000000000..0d59a816182
--- /dev/null
+++ b/src/mame/includes/artmagic.h
@@ -0,0 +1,22 @@
+/*************************************************************************
+
+ Art & Magic hardware
+
+**************************************************************************/
+
+/*----------- defined in video/artmagic.c -----------*/
+
+extern UINT16 *artmagic_vram0;
+extern UINT16 *artmagic_vram1;
+
+extern int artmagic_xor[16], artmagic_is_stoneball;
+
+VIDEO_START( artmagic );
+
+void artmagic_to_shiftreg(offs_t address, UINT16 *data);
+void artmagic_from_shiftreg(offs_t address, UINT16 *data);
+
+READ16_HANDLER( artmagic_blitter_r );
+WRITE16_HANDLER( artmagic_blitter_w );
+
+void artmagic_scanline(running_machine *machine, int screen, mame_bitmap *bitmap, int scanline, const tms34010_display_params *params);
diff --git a/src/mame/includes/asteroid.h b/src/mame/includes/asteroid.h
new file mode 100644
index 00000000000..8d049d2236a
--- /dev/null
+++ b/src/mame/includes/asteroid.h
@@ -0,0 +1,48 @@
+/*************************************************************************
+
+ Atari Asteroids hardware
+
+*************************************************************************/
+
+#include "sound/discrete.h"
+
+/*----------- defined in machine/asteroid.c -----------*/
+
+INTERRUPT_GEN( asteroid_interrupt );
+INTERRUPT_GEN( asterock_interrupt );
+INTERRUPT_GEN( llander_interrupt );
+
+READ8_HANDLER( asteroid_IN0_r );
+READ8_HANDLER( asteroib_IN0_r );
+READ8_HANDLER( asterock_IN0_r );
+READ8_HANDLER( asteroid_IN1_r );
+READ8_HANDLER( asteroid_DSW1_r );
+
+WRITE8_HANDLER( asteroid_bank_switch_w );
+WRITE8_HANDLER( astdelux_bank_switch_w );
+WRITE8_HANDLER( astdelux_led_w );
+
+MACHINE_RESET( asteroid );
+
+READ8_HANDLER( llander_IN0_r );
+
+extern UINT8 *asteroid_ram1, *asteroid_ram2;
+
+/*----------- defined in audio/asteroid.c -----------*/
+
+DISCRETE_SOUND_EXTERN( asteroid );
+DISCRETE_SOUND_EXTERN( astdelux );
+
+WRITE8_HANDLER( asteroid_explode_w );
+WRITE8_HANDLER( asteroid_thump_w );
+WRITE8_HANDLER( asteroid_sounds_w );
+WRITE8_HANDLER( asteroid_noise_reset_w );
+WRITE8_HANDLER( astdelux_sounds_w );
+
+
+/*----------- defined in audio/llander.c -----------*/
+
+DISCRETE_SOUND_EXTERN( llander );
+
+WRITE8_HANDLER( llander_snd_reset_w );
+WRITE8_HANDLER( llander_sounds_w );
diff --git a/src/mame/includes/astinvad.h b/src/mame/includes/astinvad.h
new file mode 100644
index 00000000000..731df1cf877
--- /dev/null
+++ b/src/mame/includes/astinvad.h
@@ -0,0 +1,25 @@
+#include "sound/samples.h"
+
+/*----------- defined in video/astinvad.c -----------*/
+
+VIDEO_UPDATE( astinvad );
+VIDEO_UPDATE( spcking2 );
+VIDEO_UPDATE( spaceint );
+
+VIDEO_START( spaceint );
+
+WRITE8_HANDLER( spaceint_videoram_w );
+WRITE8_HANDLER( spaceint_color_w);
+
+void astinvad_set_screen_red(int data);
+
+
+/*----------- defined in audio/astinvad.c -----------*/
+
+extern struct Samplesinterface astinvad_samples_interface;
+
+WRITE8_HANDLER( astinvad_sound1_w );
+WRITE8_HANDLER( astinvad_sound2_w );
+WRITE8_HANDLER( spaceint_sound1_w );
+WRITE8_HANDLER( spaceint_sound2_w );
+
diff --git a/src/mame/includes/astrocde.h b/src/mame/includes/astrocde.h
new file mode 100644
index 00000000000..5e89a5a7d03
--- /dev/null
+++ b/src/mame/includes/astrocde.h
@@ -0,0 +1,57 @@
+/***************************************************************************
+
+ Bally Astrocade-based hardware
+
+***************************************************************************/
+
+#include "sound/custom.h"
+
+#define ASTROCADE_CLOCK (14318180/2)
+
+#define AC_SOUND_PRESENT (0x01)
+#define AC_LIGHTPEN_INTS (0x02)
+#define AC_STARS (0x04)
+
+
+/*----------- defined in video/astrocde.c -----------*/
+
+extern UINT8 astrocade_video_config;
+extern UINT8 astrocade_sparkle[4];
+
+PALETTE_INIT( astrocde );
+PALETTE_INIT( profpac );
+
+VIDEO_START( astrocde );
+VIDEO_START( profpac );
+
+VIDEO_UPDATE( astrocde );
+VIDEO_UPDATE( profpac );
+
+void astrocade_trigger_lightpen(UINT8 vfeedback, UINT8 hfeedback);
+
+WRITE8_HANDLER( astrocade_pattern_board_w );
+READ8_HANDLER( astrocade_data_chip_register_r );
+WRITE8_HANDLER( astrocade_data_chip_register_w );
+WRITE8_HANDLER( astrocade_funcgen_w );
+
+READ8_HANDLER( profpac_videoram_r );
+WRITE8_HANDLER( profpac_videoram_w );
+READ8_HANDLER( profpac_intercept_r );
+WRITE8_HANDLER( profpac_page_select_w );
+WRITE8_HANDLER( profpac_screenram_ctrl_w );
+
+
+/*----------- defined in audio/wow.c -----------*/
+
+extern const char *wow_sample_names[];
+
+READ8_HANDLER( wow_speech_r );
+UINT32 wow_speech_status_r(void *param);
+
+
+/*----------- defined in audio/gorf.c -----------*/
+
+extern const char *gorf_sample_names[];
+
+READ8_HANDLER( gorf_speech_r );
+UINT32 gorf_speech_status_r(void *param);
diff --git a/src/mame/includes/astrof.h b/src/mame/includes/astrof.h
new file mode 100644
index 00000000000..e8a1fee69d5
--- /dev/null
+++ b/src/mame/includes/astrof.h
@@ -0,0 +1,16 @@
+/***************************************************************************
+
+ Astro Fighter hardware
+
+****************************************************************************/
+
+
+/*----------- defined in audio/astrof.c -----------*/
+
+MACHINE_START( astrof_audio );
+MACHINE_DRIVER_EXTERN( astrof_audio );
+WRITE8_HANDLER( astrof_audio_1_w );
+WRITE8_HANDLER( astrof_audio_2_w );
+
+MACHINE_DRIVER_EXTERN( tomahawk_audio );
+WRITE8_HANDLER( tomahawk_audio_w );
diff --git a/src/mame/includes/atari.h b/src/mame/includes/atari.h
new file mode 100644
index 00000000000..98fac97c203
--- /dev/null
+++ b/src/mame/includes/atari.h
@@ -0,0 +1,665 @@
+/******************************************************************************
+
+ Atari 400/800
+
+ ANTIC video controller
+ GTIA graphics television interface adapter
+
+ Juergen Buchmueller, June 1998
+
+******************************************************************************/
+
+#ifndef ATARI_H
+#define ATARI_H
+
+/*----------- defined in machine/atari.c -----------*/
+
+typedef struct {
+ int serout_count;
+ int serout_offs;
+ UINT8 serout_buff[512];
+ UINT8 serout_chksum;
+ int serout_delay;
+
+ int serin_count;
+ int serin_offs;
+ UINT8 serin_buff[512];
+ UINT8 serin_chksum;
+ int serin_delay;
+} ATARI_FDC;
+extern ATARI_FDC atari_fdc;
+
+MACHINE_START( a400 );
+MACHINE_START( a800 );
+MACHINE_START( a600xl );
+MACHINE_START( a800xl );
+MACHINE_START( a5200 );
+
+#ifdef MESS
+DEVICE_LOAD( a800_floppy );
+
+DEVICE_LOAD( a800_cart );
+DEVICE_UNLOAD( a800_cart );
+
+DEVICE_LOAD( a800xl_cart );
+DEVICE_UNLOAD( a800xl_cart );
+
+DEVICE_LOAD( a5200_cart );
+DEVICE_UNLOAD( a5200_cart );
+#endif
+
+ READ8_HANDLER ( atari_serin_r );
+WRITE8_HANDLER ( atari_serout_w );
+void atari_interrupt_cb(int mask);
+
+void a800_handle_keyboard(void);
+void a5200_handle_keypads(void);
+
+/* video */
+
+/* Enable this to make the video code use readmem16 to retrieve data */
+/* Otherwise the RAM memory array is accessed and thus, if a display list would */
+/* point to memory mapped IO, the result is different from a real machine */
+#define ACCURATE_ANTIC_READMEM 1
+
+
+#define CYCLES_PER_LINE 114 /* total number of cpu cycles per scanline (incl. hblank) */
+#define CYCLES_REFRESH 9 /* number of cycles lost for ANTICs RAM refresh using DMA */
+#define CYCLES_HSTART 32 /* where does the ANTIC DMA fetch start */
+#define CYCLES_DLI_NMI 7 /* number of cycles until the CPU recognizes a DLI */
+#define CYCLES_HSYNC 104 /* where does the HSYNC position of a scanline start */
+
+#define VBL_END 8 /* vblank ends in this scanline */
+#define VDATA_START 11 /* video display begins in this scanline */
+#define VDATA_END 244 /* video display ends in this scanline */
+#define VBL_START 248 /* vblank starts in this scanline */
+
+/* total number of lines per frame (incl. vblank) */
+#define TOTAL_LINES_60HZ 262
+#define TOTAL_LINES_50HZ 312
+
+/* frame rates */
+#define FRAME_RATE_50HZ (double)1789790/114/TOTAL_LINES_50HZ
+#define FRAME_RATE_60HZ (double)1789790/114/TOTAL_LINES_60HZ
+
+#define HWIDTH 48 /* total characters per line */
+#define HCHARS 44 /* visible characters per line */
+#define VHEIGHT 32
+#define VCHARS (VDATA_END-VDATA_START+7)/8
+#define BUF_OFFS0 (HWIDTH-HCHARS)/2
+#define MIN_X ((HWIDTH-42)/2)*8
+#define MAX_X MIN_X+42*8-1
+#define MIN_Y VDATA_START
+#define MAX_Y VDATA_END-8-1
+
+#define PMOFFSET 32 /* # of pixels to adjust p/m hpos */
+
+#define VPAGE 0xf000 /* 4K page mask for video data src */
+#define VOFFS 0x0fff /* 4K offset mask for video data src */
+#define DPAGE 0xfc00 /* 1K page mask for display list */
+#define DOFFS 0x03ff /* 1K offset mask for display list */
+
+#define DLI_NMI 0x80 /* 10000000b bit mask for display list interrupt */
+#define VBL_NMI 0x40 /* 01000000b bit mask for vertical blank interrupt */
+
+#define ANTIC_DLI 0x80 /* 10000000b cmds with display list intr */
+#define ANTIC_LMS 0x40 /* 01000000b cmds with load memory scan */
+#define ANTIC_VSCR 0x20 /* 00100000b cmds with vertical scroll */
+#define ANTIC_HSCR 0x10 /* 00010000b cmds with horizontal scroll */
+#define ANTIC_MODE 0x0f /* 00001111b cmd mode mask */
+
+#define DMA_ANTIC 0x20 /* 00100000b ANTIC DMA enable */
+#define DMA_PM_DBLLINE 0x10 /* 00010000b double line player/missile */
+#define DMA_PLAYER 0x08 /* 00001000b player DMA enable */
+#define DMA_MISSILE 0x04 /* 00000100b missile DMA enable */
+
+#define OFS_MIS_SINGLE 3*256 /* offset missiles single line DMA */
+#define OFS_PL0_SINGLE 4*256 /* offset player 0 single line DMA */
+#define OFS_PL1_SINGLE 5*256 /* offset player 1 single line DMA */
+#define OFS_PL2_SINGLE 6*256 /* offset player 2 single line DMA */
+#define OFS_PL3_SINGLE 7*256 /* offset player 3 single line DMA */
+
+#define OFS_MIS_DOUBLE 3*128 /* offset missiles double line DMA */
+#define OFS_PL0_DOUBLE 4*128 /* offset player 0 double line DMA */
+#define OFS_PL1_DOUBLE 5*128 /* offset player 1 double line DMA */
+#define OFS_PL2_DOUBLE 6*128 /* offset player 2 double line DMA */
+#define OFS_PL3_DOUBLE 7*128 /* offset player 3 double line DMA */
+
+#define PFD 0x00 /* 00000000b playfield default color */
+
+#define PBK 0x00 /* 00000000b playfield background */
+#define PF0 0x01 /* 00000001b playfield color #0 */
+#define PF1 0x02 /* 00000010b playfield color #1 */
+#define PF2 0x04 /* 00000100b playfield color #2 */
+#define PF3 0x08 /* 00001000b playfield color #3 */
+#define PL0 0x11 /* 00010001b player #0 */
+#define PL1 0x12 /* 00010010b player #1 */
+#define PL2 0x14 /* 00010100b player #2 */
+#define PL3 0x18 /* 00011000b player #3 */
+#define MI0 0x21 /* 00100001b missile #0 */
+#define MI1 0x22 /* 00100010b missile #1 */
+#define MI2 0x24 /* 00100100b missile #2 */
+#define MI3 0x28 /* 00101000b missile #3 */
+#define T00 0x40 /* 01000000b text mode pixels 00 */
+#define P000 0x48 /* 01001000b player #0 pixels 00 */
+#define P100 0x4a /* 01001010b player #1 pixels 00 */
+#define P200 0x4c /* 01001100b player #2 pixels 00 */
+#define P300 0x4e /* 01001110b player #3 pixels 00 */
+#define P400 0x4f /* 01001111b missiles pixels 00 */
+#define T01 0x50 /* 01010000b text mode pixels 01 */
+#define P001 0x58 /* 01011000b player #0 pixels 01 */
+#define P101 0x5a /* 01011010b player #1 pixels 01 */
+#define P201 0x5c /* 01011100b player #2 pixels 01 */
+#define P301 0x5e /* 01011110b player #3 pixels 01 */
+#define P401 0x5f /* 01011111b missiles pixels 01 */
+#define T10 0x60 /* 01100000b text mode pixels 10 */
+#define P010 0x68 /* 01101000b player #0 pixels 10 */
+#define P110 0x6a /* 01101010b player #1 pixels 10 */
+#define P210 0x6c /* 01101100b player #2 pixels 10 */
+#define P310 0x6e /* 01101110b player #3 pixels 10 */
+#define P410 0x6f /* 01101111b missiles pixels 10 */
+#define T11 0x70 /* 01110000b text mode pixels 11 */
+#define P011 0x78 /* 01111000b player #0 pixels 11 */
+#define P111 0x7a /* 01111010b player #1 pixels 11 */
+#define P211 0x7c /* 01111100b player #2 pixels 11 */
+#define P311 0x7e /* 01111110b player #3 pixels 11 */
+#define P411 0x7f /* 01111111b missiles pixels 11 */
+#define G00 0x80 /* 10000000b hires gfx pixels 00 */
+#define G01 0x90 /* 10010000b hires gfx pixels 01 */
+#define G10 0xa0 /* 10100000b hires gfx pixels 10 */
+#define G11 0xb0 /* 10110000b hires gfx pixels 11 */
+#define GT1 0xc0 /* 11000000b gtia mode 1 */
+#define GT2 0xd0 /* 11010000b gtia mode 2 */
+#define GT3 0xe0 /* 11100000b gtia mode 3 */
+#define ILL 0xfe /* 11111110b illegal priority */
+#define EOR 0xff /* 11111111b EOR mode color */
+
+#define LUM 0x0f /* 00001111b luminance bits */
+#define HUE 0xf0 /* 11110000b hue bits */
+
+#define TRIGGER_VBLANK 64715
+#define TRIGGER_STEAL 64716
+#define TRIGGER_HSYNC 64717
+
+#define GTIA_MISSILE 0x01
+#define GTIA_PLAYER 0x02
+#define GTIA_TRIGGER 0x04
+
+#ifdef LSB_FIRST
+
+/* make a UINT32 from four bytes */
+#define MKD(b0,b1,b2,b3) ((b0)|((b1)<<8)|((b2)<<16)|((b3)<<24))
+
+#define BYTE0 0x000000ff
+#define BYTE1 0x0000ff00
+#define BYTE2 0x00ff0000
+#define BYTE3 0xff000000
+
+#else
+
+/* make a UINT32 from four bytes */
+#define MKD(b0,b1,b2,b3) (((b0)<<24)|((b1)<<16)|((b2)<<8)|(b3))
+
+#define BYTE0 0xff000000
+#define BYTE1 0x00ff0000
+#define BYTE2 0x0000ff00
+#define BYTE3 0x000000ff
+
+#endif
+
+/* make a qUINT16 from eight bytes */
+#define MKQ(b0,b1,b2,b3,b4,b5,b6,b7) MKD(b0,b1,b2,b3), MKD(b4,b5,b6,b7)
+
+/* make two UINT32s from 4 bytes by doubling them */
+#define MKDD(b0,b1,b2,b3) MKD(b0,b0,b1,b1), MKD(b2,b2,b3,b3)
+
+/* make a four UINT32s from 4 bytes by quadrupling them */
+#define MKQD(b0,b1,b2,b3) MKD(b0,b0,b0,b0), MKD(b1,b1,b1,b1), MKD(b2,b2,b2,b2), MKD(b3,b3,b3,b3)
+
+/*****************************************************************************
+ * If your memcpy does not expand too well if you use it with constant
+ * size_t field, you might want to define these macros somehow different.
+ * NOTE: dst is not necessarily UINT32 aligned (because of horz scrolling)!
+ *****************************************************************************/
+#define COPY4(dst,s1) *dst++ = s1
+#define COPY8(dst,s1,s2) *dst++ = s1; *dst++ = s2
+#define COPY16(dst,s1,s2,s3,s4) *dst++ = s1; *dst++ = s2; *dst++ = s3; *dst++ = s4
+
+typedef struct {
+ UINT8 antic00; /* 00 nothing */
+ UINT8 antic01; /* 01 nothing */
+ UINT8 antic02; /* 02 nothing */
+ UINT8 antic03; /* 03 nothing */
+ UINT8 antic04; /* 04 nothing */
+ UINT8 antic05; /* 05 nothing */
+ UINT8 antic06; /* 06 nothing */
+ UINT8 antic07; /* 07 nothing */
+ UINT8 antic08; /* 08 nothing */
+ UINT8 antic09; /* 09 nothing */
+ UINT8 antic0a; /* 0a nothing */
+ UINT8 vcount; /* 0b vertical (scanline) counter */
+ UINT8 penh; /* 0c light pen horizontal pos */
+ UINT8 penv; /* 0d light pen vertical pos */
+ UINT8 antic0e; /* 0e nothing */
+ UINT8 nmist; /* 0f NMI status */
+} ANTIC_R; /* read registers */
+
+typedef struct {
+ UINT8 dmactl; /* 00 write DMA control */
+ UINT8 chactl; /* 01 write character control */
+ UINT8 dlistl; /* 02 display list low */
+ UINT8 dlisth; /* 03 display list high */
+ UINT8 hscrol; /* 04 horz scroll */
+ UINT8 vscrol; /* 05 vert scroll */
+ UINT8 pmbasl; /* 06 player/missile base addr low */
+ UINT8 pmbash; /* 07 player/missile base addr high */
+ UINT8 chbasl; /* 08 character generator base addr low */
+ UINT8 chbash; /* 09 character generator base addr high */
+ UINT8 wsync; /* 0a wait for hsync */
+ UINT8 antic0b; /* 0b nothing */
+ UINT8 antic0c; /* 0c nothing */
+ UINT8 antic0d; /* 0d nothing */
+ UINT8 nmien; /* 0e NMI enable */
+ UINT8 nmires; /* 0f NMI reset */
+} ANTIC_W; /* write registers */
+
+/* per scanline buffer for video data (and optimization variables) */
+typedef struct {
+ UINT32 cmd; /* antic command for this scanline */
+ UINT16 data[HWIDTH]; /* graphics data buffer (text through chargen) */
+} VIDEO;
+
+typedef struct {
+ UINT32 cmd; /* currently executed display list command */
+ UINT32 steal_cycles; /* steal how many cpu cycles for this line ? */
+ UINT32 vscrol_old; /* old vscrol value */
+ UINT32 hscrol_old; /* old hscrol value */
+ INT32 modelines; /* number of lines for current ANTIC mode */
+ UINT32 chbase; /* character mode source base */
+ UINT32 chand; /* character and mask (chactl) */
+ UINT32 chxor; /* character xor mask (chactl) */
+ UINT32 scanline; /* current scan line */
+ UINT32 pfwidth; /* playfield width */
+ UINT32 dpage; /* display list address page */
+ UINT32 doffs; /* display list offset into page */
+ UINT32 vpage; /* video data source page */
+ UINT32 voffs; /* video data offset into page */
+ UINT32 pmbase_s; /* p/m graphics single line source base */
+ UINT32 pmbase_d; /* p/m graphics double line source base */
+ ANTIC_R r; /* ANTIC read registers */
+ ANTIC_W w; /* ANTIC write registers */
+ UINT8 cclock[256+32]; /* color clock buffer filled by ANTIC */
+ UINT8 pmbits[256+32]; /* player missile buffer filled by GTIA */
+ UINT16 color_lookup[256]; /* color lookup table */
+ UINT8 *prio_table[64]; /* player/missile priority tables */
+ VIDEO *video[312]; /* video buffer */
+ UINT32 *cclk_expand; /* shared buffer for the following: */
+ UINT32 *pf_21; /* 1cclk 2 color txt 2,3 */
+ UINT32 *pf_x10b; /* 1cclk 4 color txt 4,5, gfx D,E */
+ UINT32 *pf_3210b2; /* 1cclk 5 color txt 6,7, gfx 9,B,C */
+ UINT32 *pf_210b4; /* 4cclk 4 color gfx 8 */
+ UINT32 *pf_210b2; /* 2cclk 4 color gfx A */
+ UINT32 *pf_1b; /* 1cclk hires gfx F */
+ UINT32 *pf_gtia1; /* 1cclk gtia mode 1 */
+ UINT32 *pf_gtia2; /* 1cclk gtia mode 2 */
+ UINT32 *pf_gtia3; /* 1cclk gtia mode 3 */
+ UINT8 *used_colors; /* shared buffer for the following: */
+ UINT8 *uc_21; /* used colors for txt (2,3) */
+ UINT8 *uc_x10b; /* used colors for txt 4,5, gfx D,E */
+ UINT8 *uc_3210b2; /* used colors for txt 6,7, gfx 9,B,C */
+ UINT8 *uc_210b4; /* used colors for gfx 8 */
+ UINT8 *uc_210b2; /* used colors for gfx A */
+ UINT8 *uc_1b; /* used colors for gfx F */
+ UINT8 *uc_g1; /* used colors for gfx GTIA 1 */
+ UINT8 *uc_g2; /* used colors for gfx GTIA 2 */
+ UINT8 *uc_g3; /* used colors for gfx GTIA 3 */
+} ANTIC;
+
+#if ACCURATE_ANTIC_READMEM
+#define RDANTIC() cpunum_read_byte(0, antic.dpage+antic.doffs)
+#define RDVIDEO(o) cpunum_read_byte(0, antic.vpage+((antic.voffs+(o))&VOFFS))
+#define RDCHGEN(o) cpunum_read_byte(0, antic.chbase+(o))
+#define RDPMGFXS(o) cpunum_read_byte(0, antic.pmbase_s+(o)+(antic.scanline>>1))
+#define RDPMGFXD(o) cpunum_read_byte(0, antic.pmbase_d+(o)+antic.scanline)
+#else
+#define RDANTIC() (memory_region(REGION_CPU1))[antic.dpage+antic.doffs]
+#define RDVIDEO(o) (memory_region(REGION_CPU1))[antic.vpage+((antic.voffs+(o))&VOFFS)]
+#define RDCHGEN(o) (memory_region(REGION_CPU1))[antic.chbase+(o)]
+#define RDPMGFXS(o) (memory_region(REGION_CPU1))[antic.pmbase_s+(o)+(antic.scanline>>1)]
+#define RDPMGFXD(o) (memory_region(REGION_CPU1))[antic.pmbase_d+(o)+antic.scanline]
+#endif
+
+#define PREPARE() \
+ UINT32 *dst = (UINT32 *)&antic.cclock[PMOFFSET]
+
+#define PREPARE_TXT2(width) \
+ UINT32 *dst = (UINT32 *)&antic.cclock[PMOFFSET]; \
+ int i; \
+ for( i = 0; i < width; i++ ) \
+ { \
+ UINT16 ch = RDVIDEO(i) << 3; \
+ if( ch & 0x400 ) \
+ { \
+ ch = RDCHGEN((ch & 0x3f8) + antic.w.chbasl); \
+ ch = (ch ^ antic.chxor) & antic.chand; \
+ } \
+ else \
+ { \
+ ch = RDCHGEN(ch + antic.w.chbasl); \
+ } \
+ video->data[i] = ch; \
+ }
+
+#define PREPARE_TXT3(width) \
+ UINT32 *dst = (UINT32 *)&antic.cclock[PMOFFSET]; \
+ int i; \
+ for( i = 0; i < width; i++ ) \
+ { \
+ UINT16 ch = RDVIDEO(i) << 3; \
+ if( ch & 0x400 ) \
+ { \
+ ch &= 0x3f8; \
+ if( (ch & 0x300) == 0x300 ) \
+ { \
+ if (antic.w.chbasl < 2) /* first two lines empty */ \
+ ch = 0x00; \
+ else /* lines 2..7 are standard, 8&9 are 0&1 */ \
+ ch = RDCHGEN(ch + (antic.w.chbasl & 7)); \
+ } \
+ else \
+ { \
+ if (antic.w.chbasl > 7) /* last two lines empty */ \
+ ch = 0x00; \
+ else /* lines 0..7 are standard */ \
+ ch = RDCHGEN(ch + antic.w.chbasl); \
+ } \
+ ch = (ch ^ antic.chxor) & antic.chand; \
+ } \
+ else \
+ { \
+ if( (ch & 0x300) == 0x300 ) \
+ { \
+ if (antic.w.chbasl < 2) /* first two lines empty */ \
+ ch = 0x00; \
+ else /* lines 2..7 are standard, 8&9 are 0&1 */ \
+ ch = RDCHGEN(ch + (antic.w.chbasl & 7)); \
+ } \
+ else \
+ { \
+ if (antic.w.chbasl > 7) /* last two lines empty */ \
+ ch = 0x00; \
+ else /* lines 0..7 are standard */ \
+ ch = RDCHGEN(ch + antic.w.chbasl); \
+ } \
+ } \
+ video->data[i] = ch; \
+ }
+
+#define PREPARE_TXT45(width,shift) \
+ UINT32 *dst = (UINT32 *)&antic.cclock[PMOFFSET]; \
+ int i; \
+ for( i = 0; i < width; i++ ) \
+ { \
+ UINT16 ch = RDVIDEO(i) << 3; \
+ ch = ((ch>>2)&0x100)|RDCHGEN((ch&0x3f8)+(antic.w.chbasl>>shift)); \
+ video->data[i] = ch; \
+ }
+
+
+#define PREPARE_TXT67(width,shift) \
+ UINT32 *dst = (UINT32 *)&antic.cclock[PMOFFSET]; \
+ int i; \
+ for( i = 0; i < width; i++ ) \
+ { \
+ UINT16 ch = RDVIDEO(i) << 3; \
+ ch = (ch&0x600)|(RDCHGEN((ch&0x1f8)+(antic.w.chbasl>>shift))<<1); \
+ video->data[i] = ch; \
+ }
+
+#define PREPARE_GFX8(width) \
+ UINT32 *dst = (UINT32 *)&antic.cclock[PMOFFSET]; \
+ int i; \
+ for( i = 0; i < width; i++ ) \
+ video->data[i] = RDVIDEO(i) << 2
+
+#define PREPARE_GFX9BC(width) \
+ UINT32 *dst = (UINT32 *)&antic.cclock[PMOFFSET]; \
+ int i; \
+ for( i = 0; i < width; i++ ) \
+ video->data[i] = RDVIDEO(i) << 1
+
+#define PREPARE_GFXA(width) \
+ UINT32 *dst = (UINT32 *)&antic.cclock[PMOFFSET]; \
+ int i; \
+ for( i = 0; i < width; i++ ) \
+ video->data[i] = RDVIDEO(i) << 1
+
+#define PREPARE_GFXDE(width) \
+ UINT32 *dst = (UINT32 *)&antic.cclock[PMOFFSET]; \
+ int i; \
+ for( i = 0; i < width; i++ ) \
+ video->data[i] = RDVIDEO(i)
+
+#define PREPARE_GFXF(width) \
+ UINT32 *dst = (UINT32 *)&antic.cclock[PMOFFSET]; \
+ int i; \
+ for( i = 0; i < width; i++ ) \
+ video->data[i] = RDVIDEO(i)
+
+#define PREPARE_GFXG1(width) \
+ UINT32 *dst = (UINT32 *)&antic.cclock[PMOFFSET]; \
+ int i; \
+ for( i = 0; i < width; i++ ) \
+ video->data[i] = RDVIDEO(i)
+
+#define PREPARE_GFXG2(width) \
+ UINT32 *dst = (UINT32 *)&antic.cclock[PMOFFSET]; \
+ int i; \
+ for( i = 0; i < width; i++ ) \
+ video->data[i] = RDVIDEO(i)
+
+#define PREPARE_GFXG3(width) \
+ UINT32 *dst = (UINT32 *)&antic.cclock[PMOFFSET]; \
+ int i; \
+ for( i = 0; i < width; i++ ) \
+ video->data[i] = RDVIDEO(i)
+
+/******************************************************************
+ * common end of a single antic/gtia mode emulation function
+ ******************************************************************/
+#define POST() \
+ --antic.modelines
+
+#define POST_GFX(width) \
+ antic.steal_cycles += width; \
+ if( --antic.modelines == 0 ) \
+ antic.voffs = (antic.voffs + width) & VOFFS
+
+#define POST_TXT(width) \
+ antic.steal_cycles += width; \
+ if( --antic.modelines == 0 ) \
+ antic.voffs = (antic.voffs + width) & VOFFS; \
+ else \
+ if( antic.w.chactl & 4 ) \
+ antic.w.chbasl--; \
+ else \
+ antic.w.chbasl++
+
+/* erase a number of color clocks to background color PBK */
+#define ERASE4 { \
+ *dst++ = (PBK << 24) | (PBK << 16) | (PBK << 8) | PBK; \
+ *dst++ = (PBK << 24) | (PBK << 16) | (PBK << 8) | PBK; \
+ *dst++ = (PBK << 24) | (PBK << 16) | (PBK << 8) | PBK; \
+ *dst++ = (PBK << 24) | (PBK << 16) | (PBK << 8) | PBK; \
+ }
+
+#define ZAP48() \
+ dst = (UINT32 *)&antic.cclock[PMOFFSET]; \
+ dst[ 0] = (PBK << 24) | (PBK << 16) | (PBK << 8) | PBK; \
+ dst[ 1] = (PBK << 24) | (PBK << 16) | (PBK << 8) | PBK; \
+ dst[ 2] = (PBK << 24) | (PBK << 16) | (PBK << 8) | PBK; \
+ dst[45] = (PBK << 24) | (PBK << 16) | (PBK << 8) | PBK; \
+ dst[46] = (PBK << 24) | (PBK << 16) | (PBK << 8) | PBK; \
+ dst[47] = (PBK << 24) | (PBK << 16) | (PBK << 8) | PBK
+
+#define ERASE8 \
+ ERASE4; \
+ ERASE4
+
+#define REP08(FUNC) \
+ ERASE8; \
+ FUNC( 0); FUNC( 1); FUNC( 2); FUNC( 3); \
+ FUNC( 4); FUNC( 5); FUNC( 6); FUNC( 7); \
+ ERASE8
+
+#define REP10(FUNC) \
+ ERASE4; \
+ FUNC( 0); FUNC( 1); FUNC( 2); FUNC( 3); \
+ FUNC( 4); FUNC( 5); FUNC( 6); FUNC( 7); \
+ FUNC( 8); FUNC( 9); \
+ ERASE4
+
+#define REP12(FUNC) \
+ FUNC( 0); FUNC( 1); FUNC( 2); FUNC( 3); \
+ FUNC( 4); FUNC( 5); FUNC( 6); FUNC( 7); \
+ FUNC( 8); FUNC( 9); FUNC(10); FUNC(11)
+
+#define REP16(FUNC) \
+ ERASE8; \
+ FUNC( 0); FUNC( 1); FUNC( 2); FUNC( 3); \
+ FUNC( 4); FUNC( 5); FUNC( 6); FUNC( 7); \
+ FUNC( 8); FUNC( 9); FUNC(10); FUNC(11); \
+ FUNC(12); FUNC(13); FUNC(14); FUNC(15); \
+ ERASE8
+
+#define REP20(FUNC) \
+ ERASE4; \
+ FUNC( 0); FUNC( 1); FUNC( 2); FUNC( 3); \
+ FUNC( 4); FUNC( 5); FUNC( 6); FUNC( 7); \
+ FUNC( 8); FUNC( 9); FUNC(10); FUNC(11); \
+ FUNC(12); FUNC(13); FUNC(14); FUNC(15); \
+ FUNC(16); FUNC(17); FUNC(18); FUNC(19); \
+ ERASE4
+
+#define REP24(FUNC) \
+ FUNC( 0); FUNC( 1); FUNC( 2); FUNC( 3); \
+ FUNC( 4); FUNC( 5); FUNC( 6); FUNC( 7); \
+ FUNC( 8); FUNC( 9); FUNC(10); FUNC(11); \
+ FUNC(12); FUNC(13); FUNC(14); FUNC(15); \
+ FUNC(16); FUNC(17); FUNC(18); FUNC(19); \
+ FUNC(20); FUNC(21); FUNC(22); FUNC(23)
+
+#define REP32(FUNC) \
+ ERASE8; \
+ FUNC( 0); FUNC( 1); FUNC( 2); FUNC( 3); \
+ FUNC( 4); FUNC( 5); FUNC( 6); FUNC( 7); \
+ FUNC( 8); FUNC( 9); FUNC(10); FUNC(11); \
+ FUNC(12); FUNC(13); FUNC(14); FUNC(15); \
+ FUNC(16); FUNC(17); FUNC(18); FUNC(19); \
+ FUNC(20); FUNC(21); FUNC(22); FUNC(23); \
+ FUNC(24); FUNC(25); FUNC(26); FUNC(27); \
+ FUNC(28); FUNC(29); FUNC(30); FUNC(31); \
+ ERASE8
+
+#define REP40(FUNC) \
+ ERASE4; \
+ FUNC( 0); FUNC( 1); FUNC( 2); FUNC( 3); \
+ FUNC( 4); FUNC( 5); FUNC( 6); FUNC( 7); \
+ FUNC( 8); FUNC( 9); FUNC(10); FUNC(11); \
+ FUNC(12); FUNC(13); FUNC(14); FUNC(15); \
+ FUNC(16); FUNC(17); FUNC(18); FUNC(19); \
+ FUNC(20); FUNC(21); FUNC(22); FUNC(23); \
+ FUNC(24); FUNC(25); FUNC(26); FUNC(27); \
+ FUNC(28); FUNC(29); FUNC(30); FUNC(31); \
+ FUNC(32); FUNC(33); FUNC(34); FUNC(35); \
+ FUNC(36); FUNC(37); FUNC(38); FUNC(39); \
+ ERASE4
+
+#define REP48(FUNC) \
+ FUNC( 0); FUNC( 1); FUNC( 2); FUNC( 3); \
+ FUNC( 4); FUNC( 5); FUNC( 6); FUNC( 7); \
+ FUNC( 8); FUNC( 9); FUNC(10); FUNC(11); \
+ FUNC(12); FUNC(13); FUNC(14); FUNC(15); \
+ FUNC(16); FUNC(17); FUNC(18); FUNC(19); \
+ FUNC(20); FUNC(21); FUNC(22); FUNC(23); \
+ FUNC(24); FUNC(25); FUNC(26); FUNC(27); \
+ FUNC(28); FUNC(29); FUNC(30); FUNC(31); \
+ FUNC(32); FUNC(33); FUNC(34); FUNC(35); \
+ FUNC(36); FUNC(37); FUNC(38); FUNC(39); \
+ FUNC(40); FUNC(41); FUNC(42); FUNC(43); \
+ FUNC(44); FUNC(45); FUNC(46); FUNC(47);
+
+typedef void (*renderer_function)(VIDEO *video);
+
+/*----------- defined in video/antic.c -----------*/
+
+extern ANTIC antic;
+
+void antic_reset(void);
+
+ READ8_HANDLER ( atari_antic_r );
+WRITE8_HANDLER ( atari_antic_w );
+
+void antic_mode_0_xx(VIDEO *video);
+void antic_mode_2_32(VIDEO *video);
+void antic_mode_2_40(VIDEO *video);
+void antic_mode_2_48(VIDEO *video);
+void antic_mode_3_32(VIDEO *video);
+void antic_mode_3_40(VIDEO *video);
+void antic_mode_3_48(VIDEO *video);
+void antic_mode_4_32(VIDEO *video);
+void antic_mode_4_40(VIDEO *video);
+void antic_mode_4_48(VIDEO *video);
+void antic_mode_5_32(VIDEO *video);
+void antic_mode_5_40(VIDEO *video);
+void antic_mode_5_48(VIDEO *video);
+void antic_mode_6_32(VIDEO *video);
+void antic_mode_6_40(VIDEO *video);
+void antic_mode_6_48(VIDEO *video);
+void antic_mode_7_32(VIDEO *video);
+void antic_mode_7_40(VIDEO *video);
+void antic_mode_7_48(VIDEO *video);
+void antic_mode_8_32(VIDEO *video);
+void antic_mode_8_40(VIDEO *video);
+void antic_mode_8_48(VIDEO *video);
+void antic_mode_9_32(VIDEO *video);
+void antic_mode_9_40(VIDEO *video);
+void antic_mode_9_48(VIDEO *video);
+void antic_mode_a_32(VIDEO *video);
+void antic_mode_a_40(VIDEO *video);
+void antic_mode_a_48(VIDEO *video);
+void antic_mode_b_32(VIDEO *video);
+void antic_mode_b_40(VIDEO *video);
+void antic_mode_b_48(VIDEO *video);
+void antic_mode_c_32(VIDEO *video);
+void antic_mode_c_40(VIDEO *video);
+void antic_mode_c_48(VIDEO *video);
+void antic_mode_d_32(VIDEO *video);
+void antic_mode_d_40(VIDEO *video);
+void antic_mode_d_48(VIDEO *video);
+void antic_mode_e_32(VIDEO *video);
+void antic_mode_e_40(VIDEO *video);
+void antic_mode_e_48(VIDEO *video);
+void antic_mode_f_32(VIDEO *video);
+void antic_mode_f_40(VIDEO *video);
+void antic_mode_f_48(VIDEO *video);
+
+/*----------- defined in video/atari.c -----------*/
+
+extern char atari_frame_message[64+1];
+extern int atari_frame_counter;
+
+extern VIDEO_START( atari );
+extern VIDEO_UPDATE( atari );
+
+void a400_interrupt(void);
+void a800_interrupt(void);
+void a800xl_interrupt(void);
+void a5200_interrupt(void);
+
+/*----------- defined in drivers/maxaflex.c -----------*/
+
+int atari_input_disabled(void);
+
+#endif /* ATARI_H */
+
diff --git a/src/mame/includes/atarifb.h b/src/mame/includes/atarifb.h
new file mode 100644
index 00000000000..78f179af64b
--- /dev/null
+++ b/src/mame/includes/atarifb.h
@@ -0,0 +1,56 @@
+/*************************************************************************
+
+ Atari Football hardware
+
+*************************************************************************/
+
+#include "sound/discrete.h"
+
+#define GAME_IS_FOOTBALL (atarifb_game == 1)
+#define GAME_IS_FOOTBALL4 (atarifb_game == 2)
+#define GAME_IS_BASEBALL (atarifb_game == 3)
+#define GAME_IS_SOCCER (atarifb_game == 4)
+
+/* Discrete Sound Input Nodes */
+#define ATARIFB_WHISTLE_EN NODE_01
+#define ATARIFB_CROWD_DATA NODE_02
+#define ATARIFB_ATTRACT_EN NODE_03
+#define ATARIFB_NOISE_EN NODE_04
+#define ATARIFB_HIT_EN NODE_05
+
+
+/*----------- defined in drivers/atarifb.c -----------*/
+
+extern int atarifb_game;
+
+
+/*----------- defined in machine/atarifb.c -----------*/
+
+WRITE8_HANDLER( atarifb_out1_w );
+WRITE8_HANDLER( atarifb_out2_w );
+WRITE8_HANDLER( atarifb_out3_w );
+READ8_HANDLER( atarifb_in0_r );
+READ8_HANDLER( atarifb_in2_r );
+READ8_HANDLER( atarifb4_in0_r );
+READ8_HANDLER( atarifb4_in2_r );
+
+
+/*----------- defined in audio/atarifb.c -----------*/
+
+DISCRETE_SOUND_EXTERN( atarifb );
+DISCRETE_SOUND_EXTERN( abaseb );
+
+
+/*----------- defined in video/atarifb.c -----------*/
+
+extern size_t atarifb_alphap1_vram_size;
+extern size_t atarifb_alphap2_vram_size;
+extern UINT8 *atarifb_alphap1_vram;
+extern UINT8 *atarifb_alphap2_vram;
+extern UINT8 *atarifb_scroll_register;
+
+WRITE8_HANDLER( atarifb_scroll_w );
+WRITE8_HANDLER( atarifb_alphap1_vram_w );
+WRITE8_HANDLER( atarifb_alphap2_vram_w );
+
+VIDEO_UPDATE( atarifb );
diff --git a/src/mame/includes/atarig1.h b/src/mame/includes/atarig1.h
new file mode 100644
index 00000000000..844e13c5a47
--- /dev/null
+++ b/src/mame/includes/atarig1.h
@@ -0,0 +1,16 @@
+/*************************************************************************
+
+ Atari G1 hardware
+
+*************************************************************************/
+
+/*----------- defined in video/atarig1.c -----------*/
+
+WRITE16_HANDLER( atarig1_mo_control_w );
+
+VIDEO_START( atarig1 );
+VIDEO_UPDATE( atarig1 );
+
+void atarig1_scanline_update(running_machine *machine, int scrnum, int scanline);
+
+extern UINT8 atarig1_pitfight;
diff --git a/src/mame/includes/atarig42.h b/src/mame/includes/atarig42.h
new file mode 100644
index 00000000000..cffb2f878d4
--- /dev/null
+++ b/src/mame/includes/atarig42.h
@@ -0,0 +1,19 @@
+/*************************************************************************
+
+ Atari G42 hardware
+
+*************************************************************************/
+
+/*----------- defined in video/atarig42.c -----------*/
+
+extern UINT16 atarig42_playfield_base;
+extern UINT16 atarig42_motion_object_base;
+extern UINT16 atarig42_motion_object_mask;
+
+VIDEO_START( atarig42 );
+VIDEO_UPDATE( atarig42 );
+
+WRITE16_HANDLER( atarig42_mo_control_w );
+
+void atarig42_scanline_update(running_machine *machine, int scrnum, int scanline);
+
diff --git a/src/mame/includes/atarigt.h b/src/mame/includes/atarigt.h
new file mode 100644
index 00000000000..ce2039786d6
--- /dev/null
+++ b/src/mame/includes/atarigt.h
@@ -0,0 +1,22 @@
+/*************************************************************************
+
+ Atari GT hardware
+
+*************************************************************************/
+
+/*----------- defined in drivers/atarigt.c -----------*/
+
+extern UINT8 atarigt_is_primrage;
+
+
+/*----------- defined in video/atarigt.c -----------*/
+
+extern UINT16 *atarigt_colorram;
+
+void atarigt_colorram_w(offs_t address, UINT16 data, UINT16 mem_mask);
+UINT16 atarigt_colorram_r(offs_t address);
+
+VIDEO_START( atarigt );
+VIDEO_UPDATE( atarigt );
+
+void atarigt_scanline_update(running_machine *machine, int scrnum, int scanline);
diff --git a/src/mame/includes/atarigx2.h b/src/mame/includes/atarigx2.h
new file mode 100644
index 00000000000..5f8abeeef8d
--- /dev/null
+++ b/src/mame/includes/atarigx2.h
@@ -0,0 +1,18 @@
+/*************************************************************************
+
+ Atari G42 hardware
+
+*************************************************************************/
+
+/*----------- defined in video/atarigx2.c -----------*/
+
+extern UINT16 atarigx2_playfield_base;
+extern UINT16 atarigx2_motion_object_base;
+extern UINT16 atarigx2_motion_object_mask;
+
+VIDEO_START( atarigx2 );
+VIDEO_UPDATE( atarigx2 );
+
+WRITE16_HANDLER( atarigx2_mo_control_w );
+
+void atarigx2_scanline_update(running_machine *machine, int scrnum, int scanline);
diff --git a/src/mame/includes/atarisy1.h b/src/mame/includes/atarisy1.h
new file mode 100644
index 00000000000..be134856ae9
--- /dev/null
+++ b/src/mame/includes/atarisy1.h
@@ -0,0 +1,20 @@
+/*************************************************************************
+
+ Atari System 1 hardware
+
+*************************************************************************/
+
+/*----------- defined in video/atarisy1.c -----------*/
+
+extern UINT16 *atarisy1_bankselect;
+
+READ16_HANDLER( atarisy1_int3state_r );
+
+WRITE16_HANDLER( atarisy1_spriteram_w );
+WRITE16_HANDLER( atarisy1_bankselect_w );
+WRITE16_HANDLER( atarisy1_xscroll_w );
+WRITE16_HANDLER( atarisy1_yscroll_w );
+WRITE16_HANDLER( atarisy1_priority_w );
+
+VIDEO_START( atarisy1 );
+VIDEO_UPDATE( atarisy1 );
diff --git a/src/mame/includes/atarisy2.h b/src/mame/includes/atarisy2.h
new file mode 100644
index 00000000000..a8ff1279b41
--- /dev/null
+++ b/src/mame/includes/atarisy2.h
@@ -0,0 +1,21 @@
+/*************************************************************************
+
+ Atari System 2 hardware
+
+*************************************************************************/
+
+/*----------- defined in video/atarisy2.c -----------*/
+
+READ16_HANDLER( atarisy2_slapstic_r );
+READ16_HANDLER( atarisy2_videoram_r );
+
+WRITE16_HANDLER( atarisy2_slapstic_w );
+WRITE16_HANDLER( atarisy2_yscroll_w );
+WRITE16_HANDLER( atarisy2_xscroll_w );
+WRITE16_HANDLER( atarisy2_videoram_w );
+WRITE16_HANDLER( atarisy2_paletteram_w );
+
+VIDEO_START( atarisy2 );
+VIDEO_UPDATE( atarisy2 );
+
+extern UINT16 *atarisy2_slapstic;
diff --git a/src/mame/includes/atetris.h b/src/mame/includes/atetris.h
new file mode 100644
index 00000000000..ef184e6a3a1
--- /dev/null
+++ b/src/mame/includes/atetris.h
@@ -0,0 +1,15 @@
+/*************************************************************************
+
+ Atari Tetris hardware
+
+*************************************************************************/
+
+/*----------- defined in video/atetris.c -----------*/
+
+VIDEO_START( atetris );
+VIDEO_UPDATE( atetris );
+
+WRITE8_HANDLER( atetris_videoram_w );
+
+
+
diff --git a/src/mame/includes/attckufo.h b/src/mame/includes/attckufo.h
new file mode 100644
index 00000000000..76ce2cf6987
--- /dev/null
+++ b/src/mame/includes/attckufo.h
@@ -0,0 +1,20 @@
+#include "sound/custom.h"
+
+/*----------- defined in audio/attckufo.c -----------*/
+
+void attckufo_soundport_w (int offset, int data);
+void *attckufo_custom_start(int clock, const struct CustomSound_interface *config);
+
+
+/*----------- defined in video/attckufo.c -----------*/
+
+extern const rgb_t attckufo_palette[16];
+extern UINT8 attckufo_regs[16];
+
+VIDEO_UPDATE( attckufo );
+
+WRITE8_HANDLER ( attckufo_port_w );
+READ8_HANDLER ( attckufo_port_r );
+
+INTERRUPT_GEN( attckufo_raster_interrupt );
+
diff --git a/src/mame/includes/avalnche.h b/src/mame/includes/avalnche.h
new file mode 100644
index 00000000000..ff9add56208
--- /dev/null
+++ b/src/mame/includes/avalnche.h
@@ -0,0 +1,15 @@
+/*************************************************************************
+
+ Atari Avalanche hardware
+
+*************************************************************************/
+
+#include "sound/discrete.h"
+
+
+/*----------- defined in audio/avalnche.c -----------*/
+
+DISCRETE_SOUND_EXTERN( avalnche );
+WRITE8_HANDLER( avalnche_noise_amplitude_w );
+WRITE8_HANDLER( avalnche_attract_enable_w );
+WRITE8_HANDLER( avalnche_audio_w );
diff --git a/src/mame/includes/aztarac.h b/src/mame/includes/aztarac.h
new file mode 100644
index 00000000000..5aaa42704de
--- /dev/null
+++ b/src/mame/includes/aztarac.h
@@ -0,0 +1,26 @@
+/*************************************************************************
+
+ Centuri Aztarac hardware
+
+*************************************************************************/
+
+/*----------- defined in audio/aztarac.c -----------*/
+
+READ16_HANDLER( aztarac_sound_r );
+WRITE16_HANDLER( aztarac_sound_w );
+
+READ8_HANDLER( aztarac_snd_command_r );
+READ8_HANDLER( aztarac_snd_status_r );
+WRITE8_HANDLER( aztarac_snd_status_w );
+
+INTERRUPT_GEN( aztarac_snd_timed_irq );
+
+
+/*----------- defined in video/aztarac.c -----------*/
+
+extern UINT16 *aztarac_vectorram;
+
+WRITE16_HANDLER( aztarac_ubr_w );
+
+VIDEO_START( aztarac );
+
diff --git a/src/mame/includes/badlands.h b/src/mame/includes/badlands.h
new file mode 100644
index 00000000000..77a077aacbc
--- /dev/null
+++ b/src/mame/includes/badlands.h
@@ -0,0 +1,12 @@
+/*************************************************************************
+
+ Atari Bad Lands hardware
+
+*************************************************************************/
+
+/*----------- defined in video/badlands.c -----------*/
+
+WRITE16_HANDLER( badlands_pf_bank_w );
+
+VIDEO_START( badlands );
+VIDEO_UPDATE( badlands );
diff --git a/src/mame/includes/balsente.h b/src/mame/includes/balsente.h
new file mode 100644
index 00000000000..44c3e96ae50
--- /dev/null
+++ b/src/mame/includes/balsente.h
@@ -0,0 +1,81 @@
+/***************************************************************************
+
+ Bally/Sente SAC-1 system
+
+ driver by Aaron Giles
+
+***************************************************************************/
+
+
+#define BALSENTE_MASTER_CLOCK (20000000)
+#define BALSENTE_CPU_CLOCK (BALSENTE_MASTER_CLOCK / 16)
+#define BALSENTE_PIXEL_CLOCK (BALSENTE_MASTER_CLOCK / 4)
+#define BALSENTE_HTOTAL (0x140)
+#define BALSENTE_HBEND (0x000)
+#define BALSENTE_HBSTART (0x100)
+#define BALSENTE_VTOTAL (0x108)
+#define BALSENTE_VBEND (0x010)
+#define BALSENTE_VBSTART (0x100)
+
+
+/*----------- defined in machine/balsente.c -----------*/
+
+extern UINT8 balsente_shooter;
+extern UINT8 balsente_shooter_x;
+extern UINT8 balsente_shooter_y;
+extern UINT8 balsente_adc_shift;
+extern UINT16 *shrike_shared;
+extern UINT16 *shrike_io;
+
+MACHINE_RESET( balsente );
+
+void balsente_noise_gen(int chip, int count, short *buffer);
+
+WRITE8_HANDLER( balsente_random_reset_w );
+READ8_HANDLER( balsente_random_num_r );
+
+WRITE8_HANDLER( balsente_rombank_select_w );
+WRITE8_HANDLER( balsente_rombank2_select_w );
+
+WRITE8_HANDLER( balsente_misc_output_w );
+
+READ8_HANDLER( balsente_m6850_r );
+WRITE8_HANDLER( balsente_m6850_w );
+
+READ8_HANDLER( balsente_m6850_sound_r );
+WRITE8_HANDLER( balsente_m6850_sound_w );
+
+INTERRUPT_GEN( balsente_update_analog_inputs );
+READ8_HANDLER( balsente_adc_data_r );
+WRITE8_HANDLER( balsente_adc_select_w );
+
+READ8_HANDLER( balsente_counter_8253_r );
+WRITE8_HANDLER( balsente_counter_8253_w );
+
+READ8_HANDLER( balsente_counter_state_r );
+WRITE8_HANDLER( balsente_counter_control_w );
+
+WRITE8_HANDLER( balsente_chip_select_w );
+WRITE8_HANDLER( balsente_dac_data_w );
+WRITE8_HANDLER( balsente_register_addr_w );
+
+READ8_HANDLER( nstocker_port2_r );
+WRITE8_HANDLER( spiker_expand_w );
+READ8_HANDLER( spiker_expand_r );
+READ8_HANDLER( grudge_steering_r );
+
+READ8_HANDLER( shrike_shared_6809_r );
+WRITE8_HANDLER( shrike_shared_6809_w );
+
+READ16_HANDLER( shrike_io_68k_r );
+WRITE16_HANDLER( shrike_io_68k_w );
+
+/*----------- defined in video/balsente.c -----------*/
+
+VIDEO_START( balsente );
+VIDEO_UPDATE( balsente );
+
+WRITE8_HANDLER( balsente_videoram_w );
+WRITE8_HANDLER( balsente_paletteram_w );
+WRITE8_HANDLER( balsente_palette_select_w );
+WRITE8_HANDLER( shrike_sprite_select_w );
diff --git a/src/mame/includes/batman.h b/src/mame/includes/batman.h
new file mode 100644
index 00000000000..60ddebfbcde
--- /dev/null
+++ b/src/mame/includes/batman.h
@@ -0,0 +1,14 @@
+/*************************************************************************
+
+ Atari Batman hardware
+
+*************************************************************************/
+
+/*----------- defined in video/batman.c -----------*/
+
+extern UINT8 batman_alpha_tile_bank;
+
+VIDEO_START( batman );
+VIDEO_UPDATE( batman );
+
+void batman_scanline_update(running_machine *machine, int scrnum, int scanline);
diff --git a/src/mame/includes/beathead.h b/src/mame/includes/beathead.h
new file mode 100644
index 00000000000..8418937658e
--- /dev/null
+++ b/src/mame/includes/beathead.h
@@ -0,0 +1,24 @@
+/*************************************************************************
+
+ Atari "Stella on Steroids" hardware
+
+*************************************************************************/
+
+/*----------- defined in video/beathead.c -----------*/
+
+extern UINT32 * beathead_vram_bulk_latch;
+extern UINT32 * beathead_palette_select;
+
+VIDEO_START( beathead );
+VIDEO_UPDATE( beathead );
+
+void beathead_scanline_update(int scanline);
+
+WRITE32_HANDLER( beathead_vram_transparent_w );
+WRITE32_HANDLER( beathead_vram_bulk_w );
+WRITE32_HANDLER( beathead_vram_latch_w );
+WRITE32_HANDLER( beathead_vram_copy_w );
+WRITE32_HANDLER( beathead_finescroll_w );
+WRITE32_HANDLER( beathead_palette_w );
+READ32_HANDLER( beathead_hsync_ram_r );
+WRITE32_HANDLER( beathead_hsync_ram_w );
diff --git a/src/mame/includes/berzerk.h b/src/mame/includes/berzerk.h
new file mode 100644
index 00000000000..68f7012441e
--- /dev/null
+++ b/src/mame/includes/berzerk.h
@@ -0,0 +1,16 @@
+/***************************************************************************
+
+ Berzerk hardware
+
+***************************************************************************/
+
+
+#define BERZERK_MASTER_CLOCK (10000000)
+#define BERZERK_S14001A_CLOCK (BERZERK_MASTER_CLOCK / 2)
+
+
+/*----------- defined in audio/berzerk.c -----------*/
+
+MACHINE_DRIVER_EXTERN( berzerk_audio );
+WRITE8_HANDLER( berzerk_audio_w );
+READ8_HANDLER( berzerk_audio_r );
diff --git a/src/mame/includes/blockade.h b/src/mame/includes/blockade.h
new file mode 100644
index 00000000000..5eb392a23fb
--- /dev/null
+++ b/src/mame/includes/blockade.h
@@ -0,0 +1,17 @@
+#include "sound/discrete.h"
+
+/*----------- defined in video/blockade.c -----------*/
+
+WRITE8_HANDLER( blockade_videoram_w );
+
+VIDEO_START( blockade );
+VIDEO_UPDATE( blockade );
+
+/*----------- defined in audio/blockade.c -----------*/
+
+extern struct Samplesinterface blockade_samples_interface;
+DISCRETE_SOUND_EXTERN( blockade );
+
+WRITE8_HANDLER( blockade_sound_freq_w );
+WRITE8_HANDLER( blockade_env_on_w );
+WRITE8_HANDLER( blockade_env_off_w );
diff --git a/src/mame/includes/blstroid.h b/src/mame/includes/blstroid.h
new file mode 100644
index 00000000000..2b92de8b5a8
--- /dev/null
+++ b/src/mame/includes/blstroid.h
@@ -0,0 +1,14 @@
+/*************************************************************************
+
+ Atari Blasteroids hardware
+
+*************************************************************************/
+
+/*----------- defined in video/blstroid.c -----------*/
+
+VIDEO_START( blstroid );
+VIDEO_UPDATE( blstroid );
+
+void blstroid_scanline_update(running_machine *machine, int scrnum, int scanline);
+
+extern UINT16 *blstroid_priorityram;
diff --git a/src/mame/includes/bsktball.h b/src/mame/includes/bsktball.h
new file mode 100644
index 00000000000..b9d170c9ab6
--- /dev/null
+++ b/src/mame/includes/bsktball.h
@@ -0,0 +1,42 @@
+/*************************************************************************
+
+ Atari Basketball hardware
+
+*************************************************************************/
+
+#include "sound/discrete.h"
+
+/* Discrete Sound Input Nodes */
+#define BSKTBALL_NOTE_DATA NODE_01
+#define BSKTBALL_CROWD_DATA NODE_02
+#define BSKTBALL_NOISE_EN NODE_03
+#define BSKTBALL_BOUNCE_EN NODE_04
+
+
+/*----------- defined in machine/bsktball.c -----------*/
+
+WRITE8_HANDLER( bsktball_nmion_w );
+INTERRUPT_GEN( bsktball_interrupt );
+WRITE8_HANDLER( bsktball_ld1_w );
+WRITE8_HANDLER( bsktball_ld2_w );
+READ8_HANDLER( bsktball_in0_r );
+WRITE8_HANDLER( bsktball_led1_w );
+WRITE8_HANDLER( bsktball_led2_w );
+
+
+/*----------- defined in audio/bsktball.c -----------*/
+
+WRITE8_HANDLER( bsktball_bounce_w );
+WRITE8_HANDLER( bsktball_note_w );
+WRITE8_HANDLER( bsktball_noise_reset_w );
+
+DISCRETE_SOUND_EXTERN( bsktball );
+
+/*----------- defined in video/bsktball.c -----------*/
+
+extern UINT8 *bsktball_motion;
+
+VIDEO_START( bsktball );
+VIDEO_UPDATE( bsktball );
+WRITE8_HANDLER( bsktball_videoram_w );
+
diff --git a/src/mame/includes/btoads.h b/src/mame/includes/btoads.h
new file mode 100644
index 00000000000..25724a0de81
--- /dev/null
+++ b/src/mame/includes/btoads.h
@@ -0,0 +1,40 @@
+/*************************************************************************
+
+ BattleToads
+
+ Common definitions
+
+*************************************************************************/
+
+/*----------- defined in video/btoads.c -----------*/
+
+extern UINT16 *btoads_vram_fg0, *btoads_vram_fg1, *btoads_vram_fg_data;
+extern UINT16 *btoads_vram_bg0, *btoads_vram_bg1;
+extern UINT16 *btoads_sprite_scale;
+extern UINT16 *btoads_sprite_control;
+
+VIDEO_START( btoads );
+
+WRITE16_HANDLER( btoads_misc_control_w );
+WRITE16_HANDLER( btoads_display_control_w );
+
+WRITE16_HANDLER( btoads_scroll0_w );
+WRITE16_HANDLER( btoads_scroll1_w );
+
+WRITE16_HANDLER( btoads_paletteram_w );
+READ16_HANDLER( btoads_paletteram_r );
+
+WRITE16_HANDLER( btoads_vram_bg0_w );
+WRITE16_HANDLER( btoads_vram_bg1_w );
+READ16_HANDLER( btoads_vram_bg0_r );
+READ16_HANDLER( btoads_vram_bg1_r );
+
+WRITE16_HANDLER( btoads_vram_fg_display_w );
+WRITE16_HANDLER( btoads_vram_fg_draw_w );
+READ16_HANDLER( btoads_vram_fg_display_r );
+READ16_HANDLER( btoads_vram_fg_draw_r );
+
+void btoads_to_shiftreg(UINT32 address, UINT16 *shiftreg);
+void btoads_from_shiftreg(UINT32 address, UINT16 *shiftreg);
+
+void btoads_scanline_update(running_machine *machine, int screen, mame_bitmap *bitmap, int scanline, const tms34010_display_params *params);
diff --git a/src/mame/includes/bzone.h b/src/mame/includes/bzone.h
new file mode 100644
index 00000000000..4b9389d0b0b
--- /dev/null
+++ b/src/mame/includes/bzone.h
@@ -0,0 +1,28 @@
+/*************************************************************************
+
+ Atari Battle Zone hardware
+
+*************************************************************************/
+
+#include "sound/custom.h"
+
+
+/*----------- defined in drivers/bzone.c -----------*/
+
+extern UINT8 rb_input_select;
+READ8_HANDLER( bzone_IN0_r );
+
+
+/*----------- defined in audio/bzone.c -----------*/
+
+WRITE8_HANDLER( bzone_sounds_w );
+
+void *bzone_sh_start(int clock, const struct CustomSound_interface *config);
+
+
+/*----------- defined in audio/redbaron.c -----------*/
+
+WRITE8_HANDLER( redbaron_sounds_w );
+WRITE8_HANDLER( redbaron_pokey_w );
+
+void *redbaron_sh_start(int clock, const struct CustomSound_interface *config);
diff --git a/src/mame/includes/canyon.h b/src/mame/includes/canyon.h
new file mode 100644
index 00000000000..d16d50f0bba
--- /dev/null
+++ b/src/mame/includes/canyon.h
@@ -0,0 +1,36 @@
+/*************************************************************************
+
+ Atari Canyon Bomber hardware
+
+*************************************************************************/
+
+#include "sound/discrete.h"
+
+/* Discrete Sound Input Nodes */
+#define CANYON_MOTOR1_DATA NODE_01
+#define CANYON_MOTOR2_DATA NODE_02
+#define CANYON_EXPLODE_DATA NODE_03
+#define CANYON_WHISTLE1_EN NODE_04
+#define CANYON_WHISTLE2_EN NODE_05
+#define CANYON_ATTRACT1_EN NODE_06
+#define CANYON_ATTRACT2_EN NODE_07
+
+
+/*----------- defined in audio/canyon.c -----------*/
+
+WRITE8_HANDLER( canyon_motor_w );
+WRITE8_HANDLER( canyon_explode_w );
+WRITE8_HANDLER( canyon_attract_w );
+WRITE8_HANDLER( canyon_whistle_w );
+
+DISCRETE_SOUND_EXTERN( canyon );
+
+
+/*----------- defined in video/canyon.c -----------*/
+
+extern UINT8* canyon_videoram;
+
+VIDEO_START( canyon );
+VIDEO_UPDATE( canyon );
+
+WRITE8_HANDLER( canyon_videoram_w );
diff --git a/src/mame/includes/capbowl.h b/src/mame/includes/capbowl.h
new file mode 100644
index 00000000000..91af981e834
--- /dev/null
+++ b/src/mame/includes/capbowl.h
@@ -0,0 +1,18 @@
+/*************************************************************************
+
+ Coors Light Bowling/Bowl-O-Rama hardware
+
+*************************************************************************/
+
+/*----------- defined in video/capbowl.c -----------*/
+
+VIDEO_START( capbowl );
+VIDEO_UPDATE( capbowl );
+
+extern UINT8 *capbowl_rowaddress;
+
+WRITE8_HANDLER( bowlrama_blitter_w );
+READ8_HANDLER( bowlrama_blitter_r );
+
+WRITE8_HANDLER( capbowl_tms34061_w );
+READ8_HANDLER( capbowl_tms34061_r );
diff --git a/src/mame/includes/carpolo.h b/src/mame/includes/carpolo.h
new file mode 100644
index 00000000000..8302ecb446d
--- /dev/null
+++ b/src/mame/includes/carpolo.h
@@ -0,0 +1,48 @@
+/***************************************************************************
+
+ Exidy Car Polo hardware
+
+ driver by Zsolt Vasvari
+
+****************************************************************************/
+
+/*----------- defined in machine/carpolo.c -----------*/
+
+MACHINE_START( carpolo );
+MACHINE_RESET( carpolo );
+
+READ8_HANDLER( carpolo_interrupt_cause_r );
+
+READ8_HANDLER( carpolo_ball_screen_collision_cause_r );
+READ8_HANDLER( carpolo_car_ball_collision_x_r );
+READ8_HANDLER( carpolo_car_ball_collision_y_r );
+READ8_HANDLER( carpolo_car_car_collision_cause_r );
+READ8_HANDLER( carpolo_car_goal_collision_cause_r );
+READ8_HANDLER( carpolo_car_ball_collision_cause_r );
+READ8_HANDLER( carpolo_car_border_collision_cause_r );
+
+INTERRUPT_GEN( carpolo_timer_interrupt );
+
+WRITE8_HANDLER( carpolo_ball_screen_interrupt_clear_w );
+WRITE8_HANDLER( carpolo_car_car_interrupt_clear_w );
+WRITE8_HANDLER( carpolo_car_goal_interrupt_clear_w );
+WRITE8_HANDLER( carpolo_car_ball_interrupt_clear_w );
+WRITE8_HANDLER( carpolo_car_border_interrupt_clear_w );
+WRITE8_HANDLER( carpolo_timer_interrupt_clear_w );
+
+void carpolo_generate_car_car_interrupt(int car1, int car2);
+void carpolo_generate_ball_screen_interrupt(UINT8 cause);
+void carpolo_generate_car_goal_interrupt(int car, int right_goal);
+void carpolo_generate_car_ball_interrupt(int car, int car_x, int car_y);
+void carpolo_generate_car_border_interrupt(int car, int horizontal_border);
+
+
+/*----------- defined in video/carpolo.c -----------*/
+
+extern UINT8 *carpolo_alpharam;
+extern UINT8 *carpolo_spriteram;
+
+PALETTE_INIT( carpolo );
+VIDEO_START( carpolo );
+VIDEO_UPDATE( carpolo );
+VIDEO_EOF( carpolo );
diff --git a/src/mame/includes/cave.h b/src/mame/includes/cave.h
new file mode 100644
index 00000000000..910fcd58e41
--- /dev/null
+++ b/src/mame/includes/cave.h
@@ -0,0 +1,48 @@
+/***************************************************************************
+
+ Cave hardware
+
+***************************************************************************/
+
+/*----------- defined in video/cave.c -----------*/
+
+extern int cave_spritetype;
+extern int cave_kludge;
+
+extern UINT16 *cave_videoregs;
+
+extern UINT16 *cave_vram_0, *cave_vctrl_0;
+extern UINT16 *cave_vram_1, *cave_vctrl_1;
+extern UINT16 *cave_vram_2, *cave_vctrl_2;
+extern UINT16 *cave_vram_3, *cave_vctrl_3;
+
+WRITE16_HANDLER( cave_vram_0_w );
+WRITE16_HANDLER( cave_vram_1_w );
+WRITE16_HANDLER( cave_vram_2_w );
+WRITE16_HANDLER( cave_vram_3_w );
+
+WRITE16_HANDLER( cave_vram_0_8x8_w );
+WRITE16_HANDLER( cave_vram_1_8x8_w );
+WRITE16_HANDLER( cave_vram_2_8x8_w );
+WRITE16_HANDLER( cave_vram_3_8x8_w );
+
+PALETTE_INIT( ddonpach );
+PALETTE_INIT( dfeveron );
+PALETTE_INIT( mazinger );
+PALETTE_INIT( sailormn );
+PALETTE_INIT( pwrinst2 );
+PALETTE_INIT( korokoro );
+
+VIDEO_START( cave_1_layer );
+VIDEO_START( cave_2_layers );
+VIDEO_START( cave_3_layers );
+VIDEO_START( cave_4_layers );
+
+VIDEO_START( sailormn_3_layers );
+
+
+VIDEO_UPDATE( cave );
+
+void cave_get_sprite_info(running_machine *machine);
+
+void sailormn_tilebank_w( int bank );
diff --git a/src/mame/includes/ccastles.h b/src/mame/includes/ccastles.h
new file mode 100644
index 00000000000..ea132a4936f
--- /dev/null
+++ b/src/mame/includes/ccastles.h
@@ -0,0 +1,27 @@
+/*************************************************************************
+
+ Atari Crystal Castles hardware
+
+*************************************************************************/
+
+/*----------- defined in drivers/ccastles.c -----------*/
+
+extern int ccastles_vblank_start;
+extern int ccastles_vblank_end;
+
+/*----------- defined in video/ccastles.c -----------*/
+
+
+VIDEO_START( ccastles );
+VIDEO_UPDATE( ccastles );
+
+WRITE8_HANDLER( ccastles_hscroll_w );
+WRITE8_HANDLER( ccastles_vscroll_w );
+WRITE8_HANDLER( ccastles_video_control_w );
+
+WRITE8_HANDLER( ccastles_paletteram_w );
+WRITE8_HANDLER( ccastles_videoram_w );
+
+READ8_HANDLER( ccastles_bitmode_r );
+WRITE8_HANDLER( ccastles_bitmode_w );
+WRITE8_HANDLER( ccastles_bitmode_addr_w );
diff --git a/src/mame/includes/cchasm.h b/src/mame/includes/cchasm.h
new file mode 100644
index 00000000000..14b2fb88d28
--- /dev/null
+++ b/src/mame/includes/cchasm.h
@@ -0,0 +1,30 @@
+/*************************************************************************
+
+ Cinematronics Cosmic Chasm hardware
+
+*************************************************************************/
+
+#include "sound/custom.h"
+
+/*----------- defined in machine/cchasm.c -----------*/
+
+WRITE16_HANDLER( cchasm_led_w );
+
+/*----------- defined in audio/cchasm.c -----------*/
+
+READ8_HANDLER( cchasm_snd_io_r );
+WRITE8_HANDLER( cchasm_snd_io_w );
+
+WRITE16_HANDLER( cchasm_io_w );
+READ16_HANDLER( cchasm_io_r );
+
+SOUND_START( cchasm );
+
+
+/*----------- defined in video/cchasm.c -----------*/
+
+extern UINT16 *cchasm_ram;
+
+WRITE16_HANDLER( cchasm_refresh_control_w );
+VIDEO_START( cchasm );
+
diff --git a/src/mame/includes/cclimber.h b/src/mame/includes/cclimber.h
new file mode 100644
index 00000000000..4be89c9dec9
--- /dev/null
+++ b/src/mame/includes/cclimber.h
@@ -0,0 +1,45 @@
+/*----------- defined in machine/cclimber.c -----------*/
+
+DRIVER_INIT( cclimber );
+DRIVER_INIT( cclimbrj );
+DRIVER_INIT( mshuttle );
+DRIVER_INIT( cannonb );
+DRIVER_INIT( cannonb2 );
+DRIVER_INIT( ckongb );
+
+/*----------- defined in video/cclimber.c -----------*/
+
+extern UINT8 *cclimber_bsvideoram;
+extern size_t cclimber_bsvideoram_size;
+extern UINT8 *cclimber_bigspriteram;
+extern UINT8 *cclimber_column_scroll;
+
+extern UINT8 *toprollr_videoram2;
+extern UINT8 *toprollr_videoram3;
+extern UINT8 *toprollr_videoram4;
+
+WRITE8_HANDLER( cclimber_colorram_w );
+WRITE8_HANDLER( cclimber_bigsprite_videoram_w );
+PALETTE_INIT( cclimber );
+VIDEO_UPDATE( cclimber );
+
+VIDEO_UPDATE( cannonb );
+
+VIDEO_UPDATE( yamato );
+VIDEO_START( toprollr );
+VIDEO_UPDATE( toprollr );
+
+WRITE8_HANDLER( swimmer_bgcolor_w );
+WRITE8_HANDLER( swimmer_palettebank_w );
+PALETTE_INIT( swimmer );
+VIDEO_UPDATE( swimmer );
+WRITE8_HANDLER( swimmer_sidepanel_enable_w );
+
+
+/*----------- defined in audio/cclimber.c -----------*/
+
+extern struct AY8910interface cclimber_ay8910_interface;
+extern struct Samplesinterface cclimber_samples_interface;
+WRITE8_HANDLER( cclimber_sample_trigger_w );
+WRITE8_HANDLER( cclimber_sample_rate_w );
+WRITE8_HANDLER( cclimber_sample_volume_w );
diff --git a/src/mame/includes/centiped.h b/src/mame/includes/centiped.h
new file mode 100644
index 00000000000..dc88af7b0c6
--- /dev/null
+++ b/src/mame/includes/centiped.h
@@ -0,0 +1,32 @@
+/*************************************************************************
+
+ Atari Centipede hardware
+
+*************************************************************************/
+
+/*----------- defined in video/centiped.c -----------*/
+
+extern UINT8 centiped_flipscreen, *bullsdrt_tiles_bankram;
+
+PALETTE_INIT( centiped );
+PALETTE_INIT( milliped );
+PALETTE_INIT( warlords );
+
+VIDEO_START( centiped );
+VIDEO_START( milliped );
+VIDEO_START( warlords );
+VIDEO_START( bullsdrt );
+
+VIDEO_UPDATE( centiped );
+VIDEO_UPDATE( milliped );
+VIDEO_UPDATE( warlords );
+VIDEO_UPDATE( bullsdrt );
+
+WRITE8_HANDLER( centiped_paletteram_w );
+WRITE8_HANDLER( milliped_paletteram_w );
+
+WRITE8_HANDLER( centiped_videoram_w );
+WRITE8_HANDLER( centiped_flip_screen_w );
+WRITE8_HANDLER( bullsdrt_tilesbank_w );
+WRITE8_HANDLER( bullsdrt_sprites_bank_w );
+
diff --git a/src/mame/includes/cinemat.h b/src/mame/includes/cinemat.h
new file mode 100644
index 00000000000..0a004de8977
--- /dev/null
+++ b/src/mame/includes/cinemat.h
@@ -0,0 +1,47 @@
+/*************************************************************************
+
+ Cinematronics vector hardware
+
+*************************************************************************/
+
+
+/*----------- defined in drivers/cinemat.c -----------*/
+
+MACHINE_RESET( cinemat );
+
+
+/*----------- defined in audio/cinemat.c -----------*/
+
+WRITE8_HANDLER( cinemat_sound_control_w );
+
+MACHINE_DRIVER_EXTERN( spacewar_sound );
+MACHINE_DRIVER_EXTERN( barrier_sound );
+MACHINE_DRIVER_EXTERN( speedfrk_sound );
+MACHINE_DRIVER_EXTERN( starhawk_sound );
+MACHINE_DRIVER_EXTERN( sundance_sound );
+MACHINE_DRIVER_EXTERN( tailg_sound );
+MACHINE_DRIVER_EXTERN( warrior_sound );
+MACHINE_DRIVER_EXTERN( armora_sound );
+MACHINE_DRIVER_EXTERN( ripoff_sound );
+MACHINE_DRIVER_EXTERN( starcas_sound );
+MACHINE_DRIVER_EXTERN( solarq_sound );
+MACHINE_DRIVER_EXTERN( boxingb_sound );
+MACHINE_DRIVER_EXTERN( wotw_sound );
+MACHINE_DRIVER_EXTERN( wotwc_sound );
+MACHINE_DRIVER_EXTERN( demon_sound );
+MACHINE_DRIVER_EXTERN( qb3_sound );
+
+
+/*----------- defined in video/cinemat.c -----------*/
+
+void cinemat_vector_callback(INT16 sx, INT16 sy, INT16 ex, INT16 ey, UINT8 shift);
+WRITE8_HANDLER(cinemat_vector_control_w);
+
+VIDEO_START( cinemat_bilevel );
+VIDEO_START( cinemat_16level );
+VIDEO_START( cinemat_64level );
+VIDEO_START( cinemat_color );
+VIDEO_START( cinemat_qb3color );
+VIDEO_EOF( cinemat );
+
+VIDEO_UPDATE( spacewar );
diff --git a/src/mame/includes/circus.h b/src/mame/includes/circus.h
new file mode 100644
index 00000000000..d2705e3d4e0
--- /dev/null
+++ b/src/mame/includes/circus.h
@@ -0,0 +1,34 @@
+#include "sound/discrete.h"
+
+#define GAME_IS_CIRCUS (circus_game == 1)
+#define GAME_IS_ROBOTBWL (circus_game == 2)
+#define GAME_IS_CRASH (circus_game == 3)
+#define GAME_IS_RIPCORD (circus_game == 4)
+
+/*----------- defined in audio/circus.c -----------*/
+
+extern int circus_game;
+extern WRITE8_HANDLER( circus_clown_z_w );
+
+DISCRETE_SOUND_EXTERN( circus );
+DISCRETE_SOUND_EXTERN( robotbwl );
+DISCRETE_SOUND_EXTERN( crash );
+extern struct Samplesinterface circus_samples_interface;
+extern struct Samplesinterface crash_samples_interface;
+extern struct Samplesinterface ripcord_samples_interface;
+extern struct Samplesinterface robotbwl_samples_interface;
+
+/*----------- defined in video/circus.c -----------*/
+
+extern int clown_z;
+
+extern WRITE8_HANDLER( circus_clown_x_w );
+extern WRITE8_HANDLER( circus_clown_y_w );
+
+extern WRITE8_HANDLER( circus_videoram_w );
+
+extern VIDEO_START( circus );
+extern VIDEO_UPDATE( crash );
+extern VIDEO_UPDATE( circus );
+extern VIDEO_UPDATE( robotbwl );
+extern VIDEO_UPDATE( ripcord ); //AT
diff --git a/src/mame/includes/cloak.h b/src/mame/includes/cloak.h
new file mode 100644
index 00000000000..261261e440d
--- /dev/null
+++ b/src/mame/includes/cloak.h
@@ -0,0 +1,15 @@
+/*************************************************************************
+
+ Atari Cloak & Dagger hardware
+
+*************************************************************************/
+
+/*----------- defined in video/cloak.c -----------*/
+
+WRITE8_HANDLER( cloak_paletteram_w );
+READ8_HANDLER( graph_processor_r );
+WRITE8_HANDLER( graph_processor_w );
+WRITE8_HANDLER( cloak_clearbmp_w );
+
+VIDEO_START( cloak );
+VIDEO_UPDATE( cloak );
diff --git a/src/mame/includes/cloud9.h b/src/mame/includes/cloud9.h
new file mode 100644
index 00000000000..104309e656d
--- /dev/null
+++ b/src/mame/includes/cloud9.h
@@ -0,0 +1,25 @@
+/*************************************************************************
+
+ Atari Cloud 9 (prototype) hardware
+
+*************************************************************************/
+
+/*----------- defined in drivers/cloud9.c -----------*/
+
+extern int cloud9_vblank_start;
+extern int cloud9_vblank_end;
+
+
+/*----------- defined in video/cloud9.c -----------*/
+
+VIDEO_START( cloud9 );
+VIDEO_UPDATE( cloud9 );
+
+WRITE8_HANDLER( cloud9_video_control_w );
+
+WRITE8_HANDLER( cloud9_paletteram_w );
+WRITE8_HANDLER( cloud9_videoram_w );
+
+READ8_HANDLER( cloud9_bitmode_r );
+WRITE8_HANDLER( cloud9_bitmode_w );
+WRITE8_HANDLER( cloud9_bitmode_addr_w );
diff --git a/src/mame/includes/cninja.h b/src/mame/includes/cninja.h
new file mode 100644
index 00000000000..f21c084ec5c
--- /dev/null
+++ b/src/mame/includes/cninja.h
@@ -0,0 +1,12 @@
+/*----------- defined in video/cninja.c -----------*/
+
+VIDEO_START( cninja );
+VIDEO_START( edrandy );
+VIDEO_START( robocop2 );
+VIDEO_START( stoneage );
+VIDEO_START( mutantf );
+VIDEO_UPDATE( cninja );
+VIDEO_UPDATE( edrandy );
+VIDEO_UPDATE( robocop2 );
+VIDEO_UPDATE( mutantf );
+VIDEO_EOF( cninja );
diff --git a/src/mame/includes/copsnrob.h b/src/mame/includes/copsnrob.h
new file mode 100644
index 00000000000..4bec40062e0
--- /dev/null
+++ b/src/mame/includes/copsnrob.h
@@ -0,0 +1,20 @@
+/*************************************************************************
+
+ Atari Cops'n Robbers hardware
+
+*************************************************************************/
+
+/*----------- defined in machine/copsnrob.c -----------*/
+
+READ8_HANDLER( copsnrob_gun_position_r );
+
+
+/*----------- defined in video/copsnrob.c -----------*/
+
+extern UINT8 *copsnrob_bulletsram;
+extern UINT8 *copsnrob_carimage;
+extern UINT8 *copsnrob_cary;
+extern UINT8 *copsnrob_trucky;
+extern UINT8 *copsnrob_truckram;
+
+VIDEO_UPDATE( copsnrob );
diff --git a/src/mame/includes/cps1.h b/src/mame/includes/cps1.h
new file mode 100644
index 00000000000..6eb87a3fe06
--- /dev/null
+++ b/src/mame/includes/cps1.h
@@ -0,0 +1,92 @@
+#ifndef _CPS1_H_
+#define _CPS1_H_
+
+/*----------- defined in drivers/cps1.c -----------*/
+
+ADDRESS_MAP_EXTERN(qsound_readmem);
+ADDRESS_MAP_EXTERN(qsound_writemem);
+
+READ16_HANDLER( qsound_sharedram1_r );
+WRITE16_HANDLER( qsound_sharedram1_w );
+
+READ16_HANDLER( cps1_eeprom_port_r );
+WRITE16_HANDLER( cps1_eeprom_port_w );
+
+INTERRUPT_GEN( cps1_qsound_interrupt );
+
+extern struct QSound_interface qsound_interface;
+
+READ16_HANDLER( cps1_dsw_r );
+READ16_HANDLER( cps1_in0_r );
+READ16_HANDLER( cps1_in1_r );
+READ16_HANDLER( cps1_in2_r );
+READ16_HANDLER( cps1_in3_r );
+WRITE16_HANDLER( cps1_coinctrl_w );
+INTERRUPT_GEN( cps1_interrupt );
+
+GFXDECODE_EXTERN( cps1 );
+
+
+/*----------- defined in machine/cps2crpt.c -----------*/
+
+DRIVER_INIT( cps2crpt );
+
+
+/*----------- defined in machine/kabuki.c -----------*/
+
+void wof_decode(void);
+void dino_decode(void);
+void punisher_decode(void);
+void slammast_decode(void);
+
+
+/*----------- defined in video/cps1.c -----------*/
+
+extern int cps1_scanline1;
+extern int cps1_scanline2;
+extern int cps1_scancalls;
+
+extern UINT16 *cps1_gfxram; /* Video RAM */
+extern UINT16 *cps1_output; /* Output ports */
+extern size_t cps1_gfxram_size;
+extern size_t cps1_output_size;
+
+extern UINT16 *cps1_other;
+extern tilemap *cps1_bg_tilemap[3];
+
+extern int cps1_scroll1x, cps1_scroll1y;
+extern int cps1_scroll2x, cps1_scroll2y;
+extern int cps1_scroll3x, cps1_scroll3y;
+
+extern UINT16 *cps2_objram1,*cps2_objram2;
+extern UINT16 *cps2_output;
+extern size_t cps2_output_size;
+
+int cps1_port(int offset);
+READ16_HANDLER( cps1_output_r );
+WRITE16_HANDLER( cps1_output_w );
+
+DRIVER_INIT( cps1 );
+DRIVER_INIT( cps2_video );
+
+void cps1_get_video_base(void);
+
+WRITE16_HANDLER( cps1_gfxram_w );
+
+VIDEO_START( cps1 );
+VIDEO_START( cps2 );
+void cps1_build_palette(running_machine *machine);
+
+WRITE16_HANDLER( cps2_objram_bank_w );
+READ16_HANDLER( cps2_objram1_r );
+READ16_HANDLER( cps2_objram2_r );
+WRITE16_HANDLER( cps2_objram1_w );
+WRITE16_HANDLER( cps2_objram2_w );
+
+VIDEO_UPDATE( cps1 );
+VIDEO_EOF( cps1 );
+
+void cps2_set_sprite_priorities(void);
+void cps2_objram_latch(void);
+
+#endif
diff --git a/src/mame/includes/cps3.h b/src/mame/includes/cps3.h
new file mode 100644
index 00000000000..d3857ff983a
--- /dev/null
+++ b/src/mame/includes/cps3.h
@@ -0,0 +1,15 @@
+/***************************************************************************
+
+ Capcom CPS-3 Hardware
+
+****************************************************************************/
+
+#include "sound/custom.h"
+
+/*----------- defined in audio/cps3.c -----------*/
+
+void *cps3_sh_start(int clock, const struct CustomSound_interface *config);
+
+WRITE32_HANDLER( cps3_sound_w );
+READ32_HANDLER( cps3_sound_r );
+
diff --git a/src/mame/includes/crbaloon.h b/src/mame/includes/crbaloon.h
new file mode 100644
index 00000000000..9a370fc0534
--- /dev/null
+++ b/src/mame/includes/crbaloon.h
@@ -0,0 +1,30 @@
+/*************************************************************************
+
+Crazy Ballooon
+
+*************************************************************************/
+
+#include "sound/discrete.h"
+
+#define CRBALOON_LAUGH_EN NODE_01
+#define CRBALOON_MUSIC_EN NODE_02
+#define CRBALOON_MUSIC_DATA NODE_03
+
+
+/*----------- defined in audio/crbaloon.c -----------*/
+
+DISCRETE_SOUND_EXTERN( crbaloon );
+
+/*----------- defined in video/crbaloon.c -----------*/
+
+extern INT8 crbaloon_collision;
+
+WRITE8_HANDLER( crbaloon_videoram_w );
+WRITE8_HANDLER( crbaloon_colorram_w );
+WRITE8_HANDLER( crbaloon_spritectrl_w );
+WRITE8_HANDLER( crbaloon_flipscreen_w );
+
+PALETTE_INIT( crbaloon );
+VIDEO_START( crbaloon );
+VIDEO_UPDATE( crbaloon );
+
diff --git a/src/mame/includes/crgolf.h b/src/mame/includes/crgolf.h
new file mode 100644
index 00000000000..39049d170d9
--- /dev/null
+++ b/src/mame/includes/crgolf.h
@@ -0,0 +1,25 @@
+/*************************************************************************
+
+ Kitco Crowns Golf hardware
+
+**************************************************************************/
+
+/*----------- defined in video/crgolf.c -----------*/
+
+extern UINT8 *crgolf_color_select;
+extern UINT8 *crgolf_screen_flip;
+extern UINT8 *crgolf_screen_select;
+extern UINT8 *crgolf_screenb_enable;
+extern UINT8 *crgolf_screena_enable;
+
+WRITE8_HANDLER( crgolf_videoram_bit0_w );
+WRITE8_HANDLER( crgolf_videoram_bit1_w );
+WRITE8_HANDLER( crgolf_videoram_bit2_w );
+
+READ8_HANDLER( crgolf_videoram_bit0_r );
+READ8_HANDLER( crgolf_videoram_bit1_r );
+READ8_HANDLER( crgolf_videoram_bit2_r );
+
+PALETTE_INIT( crgolf );
+VIDEO_START( crgolf );
+VIDEO_UPDATE( crgolf );
diff --git a/src/mame/includes/crshrace.h b/src/mame/includes/crshrace.h
new file mode 100644
index 00000000000..9908e49c1aa
--- /dev/null
+++ b/src/mame/includes/crshrace.h
@@ -0,0 +1,12 @@
+/*----------- defined in video/crshrace.c -----------*/
+
+extern UINT16 *crshrace_videoram1,*crshrace_videoram2;
+
+WRITE16_HANDLER( crshrace_videoram1_w );
+WRITE16_HANDLER( crshrace_videoram2_w );
+WRITE16_HANDLER( crshrace_roz_bank_w );
+WRITE16_HANDLER( crshrace_gfxctrl_w );
+
+VIDEO_START( crshrace );
+VIDEO_EOF( crshrace );
+VIDEO_UPDATE( crshrace );
diff --git a/src/mame/includes/cubocd32.h b/src/mame/includes/cubocd32.h
new file mode 100644
index 00000000000..b274592d9b1
--- /dev/null
+++ b/src/mame/includes/cubocd32.h
@@ -0,0 +1,17 @@
+/***************************************************************************
+
+CuboCD32 definitions
+
+***************************************************************************/
+
+#ifndef __CUBOCD32_H__
+#define __CUBOCD32_H__
+
+/*----------- defined in machine/cubocd32.c -----------*/
+
+extern void amiga_akiko_init(void);
+extern NVRAM_HANDLER( cd32 );
+extern READ32_HANDLER(amiga_akiko32_r);
+extern WRITE32_HANDLER(amiga_akiko32_w);
+
+#endif /* __CUBOCD32_H__ */
diff --git a/src/mame/includes/cyberbal.h b/src/mame/includes/cyberbal.h
new file mode 100644
index 00000000000..952cd86882e
--- /dev/null
+++ b/src/mame/includes/cyberbal.h
@@ -0,0 +1,42 @@
+/*************************************************************************
+
+ Atari Cyberball hardware
+
+*************************************************************************/
+
+
+/*----------- defined in audio/cyberbal.c -----------*/
+
+void cyberbal_sound_reset(void);
+
+INTERRUPT_GEN( cyberbal_sound_68k_irq_gen );
+
+READ8_HANDLER( cyberbal_special_port3_r );
+READ8_HANDLER( cyberbal_sound_6502_stat_r );
+READ8_HANDLER( cyberbal_sound_68k_6502_r );
+WRITE8_HANDLER( cyberbal_sound_bank_select_w );
+WRITE8_HANDLER( cyberbal_sound_68k_6502_w );
+
+READ16_HANDLER( cyberbal_sound_68k_r );
+WRITE16_HANDLER( cyberbal_io_68k_irq_ack_w );
+WRITE16_HANDLER( cyberbal_sound_68k_w );
+WRITE16_HANDLER( cyberbal_sound_68k_dac_w );
+
+
+/*----------- defined in video/cyberbal.c -----------*/
+
+void cyberbal_set_screen(int which);
+
+READ16_HANDLER( cyberbal_paletteram_0_r );
+READ16_HANDLER( cyberbal_paletteram_1_r );
+WRITE16_HANDLER( cyberbal_paletteram_0_w );
+WRITE16_HANDLER( cyberbal_paletteram_1_w );
+
+VIDEO_START( cyberbal );
+VIDEO_START( cyberb2p );
+VIDEO_UPDATE( cyberbal );
+
+void cyberbal_scanline_update(running_machine *machine, int scrnum, int scanline);
+
+extern UINT16 *cyberbal_paletteram_0;
+extern UINT16 *cyberbal_paletteram_1;
diff --git a/src/mame/includes/dc.h b/src/mame/includes/dc.h
new file mode 100644
index 00000000000..989c421d3eb
--- /dev/null
+++ b/src/mame/includes/dc.h
@@ -0,0 +1,42 @@
+/*
+
+ dc.h - Sega Dreamcast includes
+
+*/
+
+#ifndef __DC_H__
+#define __DC_H__
+
+/*----------- defined in machine/dc.c -----------*/
+
+READ64_HANDLER( dc_sysctrl_r );
+WRITE64_HANDLER( dc_sysctrl_w );
+READ64_HANDLER( dc_maple_r );
+WRITE64_HANDLER( dc_maple_w );
+READ64_HANDLER( dc_gdrom_r );
+WRITE64_HANDLER( dc_gdrom_w );
+READ64_HANDLER( dc_g1_ctrl_r );
+WRITE64_HANDLER( dc_g1_ctrl_w );
+READ64_HANDLER( dc_g2_ctrl_r );
+WRITE64_HANDLER( dc_g2_ctrl_w );
+READ64_HANDLER( dc_modem_r );
+WRITE64_HANDLER( dc_modem_w );
+READ64_HANDLER( dc_rtc_r );
+WRITE64_HANDLER( dc_rtc_w );
+READ64_HANDLER( dc_aica_reg_r );
+WRITE64_HANDLER( dc_aica_reg_w );
+
+MACHINE_RESET( dc );
+
+/*----------- defined in video/dc.c -----------*/
+
+READ64_HANDLER( pvr_ctrl_r );
+WRITE64_HANDLER( pvr_ctrl_w );
+READ64_HANDLER( pvr_ta_r );
+WRITE64_HANDLER( pvr_ta_w );
+WRITE64_HANDLER( ta_fifo_poly_w );
+WRITE64_HANDLER( ta_fifo_yuv_w );
+VIDEO_START(dc);
+VIDEO_UPDATE(dc);
+
+#endif
diff --git a/src/mame/includes/dcheese.h b/src/mame/includes/dcheese.h
new file mode 100644
index 00000000000..b9e491d2768
--- /dev/null
+++ b/src/mame/includes/dcheese.h
@@ -0,0 +1,25 @@
+/***************************************************************************
+
+ HAR MadMax hardware
+
+**************************************************************************/
+
+
+/*----------- defined in drivers/dcheese.c -----------*/
+
+void dcheese_signal_irq(int which);
+
+
+/*----------- defined in video/dcheese.c -----------*/
+
+PALETTE_INIT( dcheese );
+VIDEO_START( dcheese );
+VIDEO_UPDATE( dcheese );
+
+WRITE16_HANDLER( madmax_blitter_color_w );
+WRITE16_HANDLER( madmax_blitter_xparam_w );
+WRITE16_HANDLER( madmax_blitter_yparam_w );
+WRITE16_HANDLER( madmax_blitter_vidparam_w );
+WRITE16_HANDLER( madmax_blitter_unknown_w );
+
+READ16_HANDLER( madmax_blitter_vidparam_r );
diff --git a/src/mame/includes/dec0.h b/src/mame/includes/dec0.h
new file mode 100644
index 00000000000..03f0785c2c2
--- /dev/null
+++ b/src/mame/includes/dec0.h
@@ -0,0 +1,72 @@
+/*----------- defined in drivers/dec0.c -----------*/
+
+extern UINT16 *dec0_ram;
+extern UINT8 *robocop_shared_ram;
+
+/*----------- defined in video/dec0.c -----------*/
+
+/* Video emulation definitions */
+VIDEO_START( dec0 );
+VIDEO_START( dec0_nodma );
+VIDEO_UPDATE( hbarrel );
+VIDEO_UPDATE( baddudes );
+VIDEO_UPDATE( birdtry );
+VIDEO_UPDATE( robocop );
+VIDEO_UPDATE( hippodrm );
+VIDEO_UPDATE( slyspy );
+VIDEO_UPDATE( midres );
+
+extern UINT16 *dec0_pf1_rowscroll,*dec0_pf2_rowscroll,*dec0_pf3_rowscroll;
+extern UINT16 *dec0_pf1_colscroll,*dec0_pf2_colscroll,*dec0_pf3_colscroll;
+extern UINT16 *dec0_pf1_data,*dec0_pf2_data,*dec0_pf3_data;
+
+WRITE16_HANDLER( dec0_pf1_control_0_w );
+WRITE16_HANDLER( dec0_pf1_control_1_w );
+WRITE16_HANDLER( dec0_pf1_data_w );
+WRITE16_HANDLER( dec0_pf2_control_0_w );
+WRITE16_HANDLER( dec0_pf2_control_1_w );
+WRITE16_HANDLER( dec0_pf2_data_w );
+WRITE16_HANDLER( dec0_pf3_control_0_w );
+WRITE16_HANDLER( dec0_pf3_control_1_w );
+WRITE16_HANDLER( dec0_pf3_data_w );
+WRITE16_HANDLER( dec0_priority_w );
+WRITE16_HANDLER( dec0_update_sprites_w );
+
+WRITE16_HANDLER( dec0_paletteram_rg_w );
+WRITE16_HANDLER( dec0_paletteram_b_w );
+
+READ8_HANDLER( dec0_pf3_data_8bit_r );
+WRITE8_HANDLER( dec0_pf3_data_8bit_w );
+WRITE8_HANDLER( dec0_pf3_control_8bit_w );
+
+/*----------- defined in machine/dec0.c -----------*/
+
+READ16_HANDLER( dec0_controls_r );
+READ16_HANDLER( dec0_rotary_r );
+READ16_HANDLER( midres_controls_r );
+READ16_HANDLER( slyspy_controls_r );
+READ16_HANDLER( slyspy_protection_r );
+WRITE16_HANDLER( slyspy_state_w );
+READ16_HANDLER( slyspy_state_r );
+WRITE16_HANDLER( slyspy_240000_w );
+WRITE16_HANDLER( slyspy_242000_w );
+WRITE16_HANDLER( slyspy_246000_w );
+WRITE16_HANDLER( slyspy_248000_w );
+WRITE16_HANDLER( slyspy_24c000_w );
+WRITE16_HANDLER( slyspy_24e000_w );
+
+DRIVER_INIT( slyspy );
+DRIVER_INIT( hippodrm );
+DRIVER_INIT( robocop );
+DRIVER_INIT( baddudes );
+DRIVER_INIT( hbarrel );
+DRIVER_INIT( hbarrelw );
+DRIVER_INIT( birdtry );
+
+extern void dec0_i8751_write(int data);
+extern void dec0_i8751_reset(void);
+READ8_HANDLER( hippodrm_prot_r );
+WRITE8_HANDLER( hippodrm_prot_w );
+READ8_HANDLER( hippodrm_shared_r );
+WRITE8_HANDLER( hippodrm_shared_w );
+
diff --git a/src/mame/includes/deco16ic.h b/src/mame/includes/deco16ic.h
new file mode 100644
index 00000000000..089234b26be
--- /dev/null
+++ b/src/mame/includes/deco16ic.h
@@ -0,0 +1,59 @@
+/*----------- defined in video/deco16ic.c -----------*/
+
+extern UINT16 *deco16_pf1_data,*deco16_pf2_data;
+extern UINT16 *deco16_pf3_data,*deco16_pf4_data;
+extern UINT16 *deco16_pf1_rowscroll,*deco16_pf2_rowscroll;
+extern UINT16 *deco16_pf3_rowscroll,*deco16_pf4_rowscroll;
+
+extern UINT16 *deco16_pf12_control,*deco16_pf34_control;
+extern UINT16 deco16_priority;
+
+extern UINT16 *deco16_raster_display_list;
+extern int deco16_raster_display_position;
+
+extern int deco16_pf1_colour_bank,deco16_pf2_colour_bank,deco16_pf3_colour_bank,deco16_pf4_colour_bank;
+
+void deco16_1_video_init(void);
+void deco16_2_video_init(int split);
+void deco16_2_video_init_half_width(void);
+void deco_allocate_sprite_bitmap(void);
+
+void deco16_pf12_update(const UINT16 *rowscroll_1_ptr, const UINT16 *rowscroll_2_ptr);
+void deco16_pf34_update(const UINT16 *rowscroll_1_ptr, const UINT16 *rowscroll_2_ptr);
+
+void deco16_pf12_set_gfxbank(int small, int big);
+void deco16_pf34_set_gfxbank(int small, int big);
+
+void deco16_set_tilemap_bank_callback(int tmap, int (*callback)(const int bank));
+void deco16_set_tilemap_colour_base(int tmap, int base);
+void deco16_set_tilemap_colour_mask(int tmap, int mask);
+void deco16_set_tilemap_transparency_mask(int tmap, int mask);
+
+void deco16_tilemap_1_draw(mame_bitmap *bitmap, const rectangle *cliprect, int flags, UINT32 priority);
+void deco16_tilemap_2_draw(mame_bitmap *bitmap, const rectangle *cliprect, int flags, UINT32 priority);
+void deco16_tilemap_3_draw(mame_bitmap *bitmap, const rectangle *cliprect, int flags, UINT32 priority);
+void deco16_tilemap_4_draw(mame_bitmap *bitmap, const rectangle *cliprect, int flags, UINT32 priority);
+
+void deco16_tilemap_34_combine_draw(mame_bitmap *bitmap, const rectangle *cliprect, int flags, UINT32 priority);
+
+void deco16_clear_sprite_priority_bitmap(void);
+void deco16_pdrawgfx(mame_bitmap *dest,const gfx_element *gfx,
+ UINT32 code,UINT32 color,int flipx,int flipy,int sx,int sy,
+ const rectangle *clip,int transparency,int transparent_color,UINT32 pri_mask,UINT32 sprite_mask,UINT8 write_pri);
+
+tilemap *deco16_get_tilemap(int pf, int size);
+
+WRITE16_HANDLER( deco16_pf1_data_w );
+WRITE16_HANDLER( deco16_pf2_data_w );
+WRITE16_HANDLER( deco16_pf3_data_w );
+WRITE16_HANDLER( deco16_pf4_data_w );
+
+WRITE16_HANDLER( deco16_nonbuffered_palette_w );
+WRITE16_HANDLER( deco16_buffered_palette_w );
+WRITE16_HANDLER( deco16_palette_dma_w );
+
+WRITE16_HANDLER( deco16_priority_w );
+
+READ16_HANDLER( deco16_71_r );
+
+void deco16_print_debug_info(mame_bitmap *bitmap);
diff --git a/src/mame/includes/deco32.h b/src/mame/includes/deco32.h
new file mode 100644
index 00000000000..e1290c708b7
--- /dev/null
+++ b/src/mame/includes/deco32.h
@@ -0,0 +1,38 @@
+/*----------- defined in video/deco32.c -----------*/
+
+VIDEO_START( captaven );
+VIDEO_START( fghthist );
+VIDEO_START( dragngun );
+VIDEO_START( lockload );
+VIDEO_START( nslasher );
+
+VIDEO_EOF( captaven );
+VIDEO_EOF( dragngun );
+
+VIDEO_UPDATE( captaven );
+VIDEO_UPDATE( fghthist );
+VIDEO_UPDATE( dragngun );
+VIDEO_UPDATE( nslasher );
+
+extern UINT32 *deco32_pf1_data,*deco32_pf2_data,*deco32_pf3_data,*deco32_pf4_data;
+extern UINT32 *deco32_pf12_control,*deco32_pf34_control;
+extern UINT32 *deco32_pf1_rowscroll,*deco32_pf2_rowscroll,*deco32_pf3_rowscroll,*deco32_pf4_rowscroll;
+extern UINT32 *dragngun_sprite_layout_0_ram, *dragngun_sprite_layout_1_ram;
+extern UINT32 *dragngun_sprite_lookup_0_ram, *dragngun_sprite_lookup_1_ram;
+extern UINT32 *deco32_ace_ram;
+extern UINT16 *deco32_raster_display_list;
+extern int deco32_raster_display_position;
+
+WRITE32_HANDLER( deco32_pf1_data_w );
+WRITE32_HANDLER( deco32_pf2_data_w );
+WRITE32_HANDLER( deco32_pf3_data_w );
+WRITE32_HANDLER( deco32_pf4_data_w );
+
+WRITE32_HANDLER( deco32_nonbuffered_palette_w );
+WRITE32_HANDLER( deco32_buffered_palette_w );
+WRITE32_HANDLER( deco32_palette_dma_w );
+
+WRITE32_HANDLER( deco32_pri_w );
+WRITE32_HANDLER( dragngun_sprite_control_w );
+WRITE32_HANDLER( dragngun_spriteram_dma_w );
+WRITE32_HANDLER( deco32_ace_ram_w );
diff --git a/src/mame/includes/decocrpt.h b/src/mame/includes/decocrpt.h
new file mode 100644
index 00000000000..96f15a4c3c0
--- /dev/null
+++ b/src/mame/includes/decocrpt.h
@@ -0,0 +1,5 @@
+/*----------- defined in machine/decocrpt.c -----------*/
+
+void deco56_decrypt(int region);
+void deco74_decrypt(int region);
+void deco56_remap(int region);
diff --git a/src/mame/includes/decoprot.h b/src/mame/includes/decoprot.h
new file mode 100644
index 00000000000..7d712700fba
--- /dev/null
+++ b/src/mame/includes/decoprot.h
@@ -0,0 +1,26 @@
+/*----------- defined in machine/decoprot.c -----------*/
+
+READ16_HANDLER( deco16_60_prot_r );
+READ16_HANDLER( deco16_66_prot_r );
+READ16_HANDLER( deco16_104_prot_r );
+READ16_HANDLER( deco16_104_cninja_prot_r );
+READ16_HANDLER( deco16_104_rohga_prot_r );
+READ16_HANDLER( deco16_146_funkyjet_prot_r );
+READ16_HANDLER( deco16_146_nitroball_prot_r );
+READ16_HANDLER( deco16_104_pktgaldx_prot_r );
+READ32_HANDLER( deco16_146_fghthist_prot_r );
+
+WRITE16_HANDLER( deco16_60_prot_w );
+WRITE16_HANDLER( deco16_66_prot_w );
+WRITE16_HANDLER( deco16_104_prot_w );
+WRITE16_HANDLER( deco16_104_cninja_prot_w );
+WRITE16_HANDLER( deco16_104_rohga_prot_w );
+WRITE16_HANDLER( deco16_146_funkyjet_prot_w );
+WRITE16_HANDLER( deco16_146_nitroball_prot_w );
+WRITE16_HANDLER( deco16_104_pktgaldx_prot_w );
+WRITE32_HANDLER( deco16_146_fghthist_prot_w );
+
+void decoprot_reset(void);
+
+extern UINT16 *deco16_prot_ram;
+extern UINT32 *deco32_prot_ram;
diff --git a/src/mame/includes/dkong.h b/src/mame/includes/dkong.h
new file mode 100644
index 00000000000..92bc6cc41c5
--- /dev/null
+++ b/src/mame/includes/dkong.h
@@ -0,0 +1,124 @@
+#include "sound/discrete.h"
+
+/*
+ * From the schematics:
+ *
+ * XTAL is 61,44 MHZ. There is some oscillator logic around it. The oscillating circuit
+ * transfers the signal with a transformator. Onwards, it is fed through a M(B/C)10136. This
+ * is a programmable counter which is used as a divisor by 5.
+ * Cascaded 74LS161 further divide the signal. The following signals are generated:
+ * 1/2H: 61,44MHZ/5/2 - pixel clock
+ * 1H : 61,44MHZ/5/4 - cpu-clock
+ * 2H : 61,44MHZ/5/8
+ * ....
+ * 128H: 61,44MHZ/5/512
+ * The horizontal circuit counts till 384=256+128, thus 256H only being high for 128H/2
+ *
+ * Signal 16H,32H,64H and 256H are combined using a LS00, LS04 and a D-Flipflop to produce
+ * a signal with Freq 16H/12. This is only possible because a 220pf capacitor with the
+ * impedance of the LS-Family of 10K delays the 16H signal by about half a cycle.
+ * This signal is divided by two by another D-Flipflop(74LS74) to give:
+ * 1VF: 61,44MHZ/5/64/12/2 = 8KHZ
+ * 2VF: 1VF/2 - Noise frequency: 4Khz
+ * ...
+ * The vertical circuit counts from 248 till 512 giving 264 lines.
+ * 256VF is not being used, so counting is from 248...255, 0...255, ....
+ */
+
+#define MASTER_CLOCK 61440000
+#define CLOCK_1H (MASTER_CLOCK / 5 / 4)
+#define CLOCK_16H (CLOCK_1H / 16)
+#define CLOCK_1VF ((CLOCK_16H) / 12 / 2)
+#define CLOCK_2VF ((CLOCK_1VF) / 2)
+
+#define PIXEL_CLOCK (MASTER_CLOCK/10)
+#define HTOTAL (384)
+#define HBSTART (256)
+#define HBEND (0)
+#define VTOTAL (264)
+#define VBSTART (240)
+#define VBEND (16)
+
+#define I8035_MASTER_CLOCK (6000000)
+#define I8035_DIVIDER (15)
+#define I8035_CLOCK (I8035_MASTER_CLOCK/I8035_DIVIDER)
+
+
+/*----------- defined in video/dkong.c -----------*/
+
+WRITE8_HANDLER( radarscp_snd02_w ); /* to daisy chain sound 02 signal */
+WRITE8_HANDLER( radarsc1_ansn_w ); /* to daisy chain sound 02 signal */
+
+WRITE8_HANDLER( radarscp_grid_enable_w );
+WRITE8_HANDLER( radarscp_grid_color_w );
+WRITE8_HANDLER( dkong_flipscreen_w );
+WRITE8_HANDLER( dkongjr_gfxbank_w );
+WRITE8_HANDLER( dkong3_gfxbank_w );
+WRITE8_HANDLER( dkong_spritebank_w );
+WRITE8_HANDLER( dkong_palettebank_w );
+
+WRITE8_HANDLER( dkong_videoram_w );
+
+PALETTE_INIT( dkong );
+PALETTE_INIT( radarscp );
+PALETTE_INIT( radarsc1 );
+PALETTE_INIT( dkong3 );
+
+VIDEO_START( dkong );
+VIDEO_START( radarsc1 );
+VIDEO_START( radarscp );
+VIDEO_UPDATE( radarscp );
+VIDEO_UPDATE( dkong );
+VIDEO_UPDATE( pestplce );
+VIDEO_UPDATE( spclforc );
+
+
+
+/*----------- defined in machine/strtheat.c -----------*/
+
+DRIVER_INIT( strtheat );
+
+
+/*----------- defined in machine/drakton.c -----------*/
+
+DRIVER_INIT( drakton );
+
+
+/*----------- defined in audio/dkong.c -----------*/
+
+READ8_HANDLER( dkong_sh_p1_r );
+READ8_HANDLER( dkong_sh_p2_r );
+READ8_HANDLER( dkong_sh_t0_r );
+READ8_HANDLER( dkong_sh_t1_r );
+READ8_HANDLER( dkong_sh_tune_r );
+READ8_HANDLER( dkong_in2_r );
+
+WRITE8_HANDLER( radarsc1_snd_disc_w );
+WRITE8_HANDLER( dkong_sh_w );
+WRITE8_HANDLER( dkong_sh_p1_w );
+WRITE8_HANDLER( dkong_sh_p2_w );
+
+WRITE8_HANDLER( dkong_snd_disc_w );
+WRITE8_HANDLER( dkong_sh_tuneselect_w );
+
+WRITE8_HANDLER( dkongjr_sh_test6_w );
+WRITE8_HANDLER( dkongjr_sh_test5_w );
+WRITE8_HANDLER( dkongjr_sh_test4_w );
+WRITE8_HANDLER( dkongjr_sh_tuneselect_w );
+
+WRITE8_HANDLER( dkongjr_snd_w1 );
+WRITE8_HANDLER( dkongjr_snd_w2 );
+
+READ8_HANDLER( radarsc1_sh_tune_r );
+READ8_HANDLER( radarsc1_sh_p1_r );
+WRITE8_HANDLER( radarsc1_sh_p1_w );
+WRITE8_HANDLER( radarsc1_sh_p2_w );
+
+SOUND_START( dkong );
+SOUND_START( dkongjr );
+SOUND_START( hunchbkd );
+SOUND_START( radarsc1 );
+
+DISCRETE_SOUND_EXTERN( dkong );
+DISCRETE_SOUND_EXTERN( radarscp );
+
diff --git a/src/mame/includes/docastle.h b/src/mame/includes/docastle.h
new file mode 100644
index 00000000000..9688c0e454e
--- /dev/null
+++ b/src/mame/includes/docastle.h
@@ -0,0 +1,23 @@
+/*----------- defined in machine/docastle.c -----------*/
+
+READ8_HANDLER( docastle_shared0_r );
+READ8_HANDLER( docastle_shared1_r );
+WRITE8_HANDLER( docastle_shared0_w );
+WRITE8_HANDLER( docastle_shared1_w );
+WRITE8_HANDLER( docastle_nmitrigger_w );
+
+
+/*----------- defined in video/docastle.c -----------*/
+
+WRITE8_HANDLER( docastle_videoram_w );
+WRITE8_HANDLER( docastle_colorram_w );
+READ8_HANDLER( docastle_flipscreen_off_r );
+READ8_HANDLER( docastle_flipscreen_on_r );
+WRITE8_HANDLER( docastle_flipscreen_off_w );
+WRITE8_HANDLER( docastle_flipscreen_on_w );
+
+PALETTE_INIT( docastle );
+VIDEO_START( docastle );
+VIDEO_START( dorunrun );
+VIDEO_UPDATE( docastle );
+
diff --git a/src/mame/includes/dogfgt.h b/src/mame/includes/dogfgt.h
new file mode 100644
index 00000000000..c09c88ded92
--- /dev/null
+++ b/src/mame/includes/dogfgt.h
@@ -0,0 +1,14 @@
+/*----------- defined in video/dogfgt.c -----------*/
+
+extern UINT8 *dogfgt_bgvideoram;
+
+WRITE8_HANDLER( dogfgt_plane_select_w );
+READ8_HANDLER( dogfgt_bitmapram_r );
+WRITE8_HANDLER( dogfgt_bitmapram_w );
+WRITE8_HANDLER( dogfgt_bgvideoram_w );
+WRITE8_HANDLER( dogfgt_scroll_w );
+WRITE8_HANDLER( dogfgt_1800_w );
+
+PALETTE_INIT( dogfgt );
+VIDEO_START( dogfgt );
+VIDEO_UPDATE( dogfgt );
diff --git a/src/mame/includes/dragrace.h b/src/mame/includes/dragrace.h
new file mode 100644
index 00000000000..ad270b7ac5f
--- /dev/null
+++ b/src/mame/includes/dragrace.h
@@ -0,0 +1,36 @@
+/*************************************************************************
+
+ Atari Drag Race hardware
+
+*************************************************************************/
+
+#include "sound/discrete.h"
+
+/* Discrete Sound Input Nodes */
+#define DRAGRACE_SCREECH1_EN NODE_01
+#define DRAGRACE_SCREECH2_EN NODE_02
+#define DRAGRACE_LOTONE_EN NODE_03
+#define DRAGRACE_HITONE_EN NODE_04
+#define DRAGRACE_EXPLODE1_EN NODE_05
+#define DRAGRACE_EXPLODE2_EN NODE_06
+#define DRAGRACE_MOTOR1_DATA NODE_07
+#define DRAGRACE_MOTOR2_DATA NODE_08
+#define DRAGRACE_MOTOR1_EN NODE_80
+#define DRAGRACE_MOTOR2_EN NODE_81
+#define DRAGRACE_KLEXPL1_EN NODE_82
+#define DRAGRACE_KLEXPL2_EN NODE_83
+#define DRAGRACE_ATTRACT_EN NODE_09
+
+
+/*----------- defined in audio/dragrace.c -----------*/
+
+DISCRETE_SOUND_EXTERN( dragrace );
+
+/*----------- defined in video/dragrace.c -----------*/
+
+VIDEO_START( dragrace );
+VIDEO_UPDATE( dragrace );
+
+extern UINT8* dragrace_playfield_ram;
+extern UINT8* dragrace_position_ram;
+
diff --git a/src/mame/includes/dribling.h b/src/mame/includes/dribling.h
new file mode 100644
index 00000000000..633400aa79a
--- /dev/null
+++ b/src/mame/includes/dribling.h
@@ -0,0 +1,16 @@
+/*************************************************************************
+
+ Model Racing Dribbling hardware
+
+*************************************************************************/
+
+/*----------- defined in drivers/dribling.c -----------*/
+
+extern UINT8 dribling_abca;
+
+
+/*----------- defined in video/dribling.c -----------*/
+
+PALETTE_INIT( dribling );
+WRITE8_HANDLER( dribling_colorram_w );
+VIDEO_UPDATE( dribling );
diff --git a/src/mame/includes/dynax.h b/src/mame/includes/dynax.h
new file mode 100644
index 00000000000..55f93d9b5d2
--- /dev/null
+++ b/src/mame/includes/dynax.h
@@ -0,0 +1,111 @@
+/***************************************************************************
+
+ Dynax hardware
+
+***************************************************************************/
+
+//----------- defined in drivers/dynax.c -----------
+
+extern UINT8 dynax_blitter_irq, dynax_blitter2_irq;
+
+void sprtmtch_update_irq(void);
+void jantouki_update_irq(void);
+void mjelctrn_update_irq(void);
+void neruton_update_irq(void);
+
+//----------- defined in video/dynax.c -----------
+
+WRITE8_HANDLER( dynax_blitter_rev2_w );
+WRITE8_HANDLER( jantouki_blitter_rev2_w );
+WRITE8_HANDLER( jantouki_blitter2_rev2_w );
+WRITE8_HANDLER( tenkai_blitter_rev2_w );
+
+WRITE8_HANDLER( dynax_blit_pen_w );
+WRITE8_HANDLER( dynax_blit2_pen_w );
+WRITE8_HANDLER( dynax_blit_backpen_w );
+WRITE8_HANDLER( dynax_blit_dest_w );
+WRITE8_HANDLER( dynax_blit2_dest_w );
+WRITE8_HANDLER( dynax_blit_palbank_w );
+WRITE8_HANDLER( dynax_blit2_palbank_w );
+WRITE8_HANDLER( dynax_blit_palette01_w );
+WRITE8_HANDLER( dynax_blit_palette23_w );
+WRITE8_HANDLER( dynax_blit_palette45_w );
+WRITE8_HANDLER( dynax_blit_palette67_w );
+WRITE8_HANDLER( dynax_layer_enable_w );
+WRITE8_HANDLER( jantouki_layer_enable_w );
+WRITE8_HANDLER( dynax_flipscreen_w );
+WRITE8_HANDLER( dynax_extra_scrollx_w );
+WRITE8_HANDLER( dynax_extra_scrolly_w );
+WRITE8_HANDLER( dynax_blit_romregion_w );
+WRITE8_HANDLER( dynax_blit2_romregion_w );
+
+WRITE8_HANDLER( hanamai_layer_half_w );
+WRITE8_HANDLER( hnoridur_layer_half2_w );
+
+WRITE8_HANDLER( hanamai_priority_w );
+WRITE8_HANDLER( tenkai_priority_w );
+
+WRITE8_HANDLER( mjdialq2_blit_dest_w );
+WRITE8_HANDLER( tenkai_blit_dest_w );
+
+WRITE8_HANDLER( mjdialq2_layer_enable_w );
+
+WRITE8_HANDLER( tenkai_blit_palette01_w );
+WRITE8_HANDLER( tenkai_blit_palette23_w );
+
+VIDEO_START( hanamai );
+VIDEO_START( hnoridur );
+VIDEO_START( mcnpshnt );
+VIDEO_START( sprtmtch );
+VIDEO_START( mjdialq2 );
+VIDEO_START( jantouki );
+VIDEO_START( mjelctrn );
+VIDEO_START( neruton );
+VIDEO_START( htengoku );
+
+VIDEO_UPDATE( hanamai );
+VIDEO_UPDATE( hnoridur );
+VIDEO_UPDATE( sprtmtch );
+VIDEO_UPDATE( mjdialq2 );
+VIDEO_UPDATE( jantouki );
+VIDEO_EOF( htengoku );
+
+PALETTE_INIT( sprtmtch );
+
+
+//----------- defined in drivers/ddenlovr.c -----------
+
+WRITE8_HANDLER( ddenlovr_bgcolor_w );
+WRITE8_HANDLER( ddenlovr_bgcolor2_w );
+WRITE16_HANDLER( ddenlovr16_bgcolor_w );
+
+WRITE8_HANDLER( ddenlovr_priority_w );
+WRITE8_HANDLER( ddenlovr_priority2_w );
+WRITE16_HANDLER( ddenlovr16_priority_w );
+
+WRITE8_HANDLER( ddenlovr_layer_enable_w );
+WRITE8_HANDLER( ddenlovr_layer_enable2_w );
+WRITE16_HANDLER( ddenlovr16_layer_enable_w );
+
+WRITE8_HANDLER( ddenlovr_palette_base_w );
+WRITE8_HANDLER( ddenlovr_palette_base2_w );
+WRITE16_HANDLER( ddenlovr16_palette_base_w );
+
+WRITE8_HANDLER( ddenlovr_palette_mask_w );
+WRITE8_HANDLER( ddenlovr_palette_mask2_w );
+WRITE16_HANDLER( ddenlovr16_palette_mask_w );
+
+WRITE8_HANDLER( ddenlovr_transparency_pen_w );
+WRITE8_HANDLER( ddenlovr_transparency_pen2_w );
+WRITE16_HANDLER( ddenlovr16_transparency_pen_w );
+
+WRITE8_HANDLER( ddenlovr_transparency_mask_w );
+WRITE8_HANDLER( ddenlovr_transparency_mask2_w );
+WRITE16_HANDLER( ddenlovr16_transparency_mask_w );
+
+extern UINT8 *ddenlovr_pixmap[8];
+
+VIDEO_START(ddenlovr);
+VIDEO_UPDATE(ddenlovr);
+VIDEO_EOF(ddenlovr);
+
diff --git a/src/mame/includes/eolithsp.h b/src/mame/includes/eolithsp.h
new file mode 100644
index 00000000000..425708b07e8
--- /dev/null
+++ b/src/mame/includes/eolithsp.h
@@ -0,0 +1,6 @@
+/*----------- defined in drivers/eolithsp.c -----------*/
+
+void eolith_speedup_read(void);
+void init_eolith_speedup(running_machine *machine);
+INTERRUPT_GEN( eolith_speedup );
+UINT32 eolith_speedup_getvblank(void *param);
diff --git a/src/mame/includes/epos.h b/src/mame/includes/epos.h
new file mode 100644
index 00000000000..e75dd3f1f89
--- /dev/null
+++ b/src/mame/includes/epos.h
@@ -0,0 +1,10 @@
+/*************************************************************************
+
+ Epos games
+
+**************************************************************************/
+
+/*----------- defined in video/epos.c -----------*/
+
+WRITE8_HANDLER( epos_port_1_w );
+VIDEO_UPDATE( epos );
diff --git a/src/mame/includes/eprom.h b/src/mame/includes/eprom.h
new file mode 100644
index 00000000000..c4fd1b09825
--- /dev/null
+++ b/src/mame/includes/eprom.h
@@ -0,0 +1,12 @@
+/*************************************************************************
+
+ Atari Escape hardware
+
+*************************************************************************/
+
+/*----------- defined in video/eprom.c -----------*/
+
+VIDEO_START( eprom );
+VIDEO_UPDATE( eprom );
+
+void eprom_scanline_update(running_machine *machine, int scrnum, int scanline);
diff --git a/src/mame/includes/espial.h b/src/mame/includes/espial.h
new file mode 100644
index 00000000000..3c7b574b760
--- /dev/null
+++ b/src/mame/includes/espial.h
@@ -0,0 +1,80 @@
+/***************************************************************************
+
+ Espial hardware games
+
+***************************************************************************/
+
+/*----------- defined in drivers/espial.c -----------*/
+
+MACHINE_RESET( espial );
+
+WRITE8_HANDLER( zodiac_master_interrupt_enable_w );
+INTERRUPT_GEN( zodiac_master_interrupt );
+WRITE8_HANDLER( zodiac_master_soundlatch_w );
+WRITE8_HANDLER( espial_sound_nmi_enable_w );
+INTERRUPT_GEN( espial_sound_nmi_gen );
+
+
+/*----------- defined in video/espial.c -----------*/
+
+extern UINT8 *espial_videoram;
+extern UINT8 *espial_colorram;
+extern UINT8 *espial_attributeram;
+extern UINT8 *espial_scrollram;
+extern UINT8 *espial_spriteram_1;
+extern UINT8 *espial_spriteram_2;
+extern UINT8 *espial_spriteram_3;
+
+PALETTE_INIT( espial );
+VIDEO_START( espial );
+VIDEO_START( netwars );
+WRITE8_HANDLER( espial_videoram_w );
+WRITE8_HANDLER( espial_colorram_w );
+WRITE8_HANDLER( espial_attributeram_w );
+WRITE8_HANDLER( espial_scrollram_w );
+WRITE8_HANDLER( espial_flipscreen_w );
+VIDEO_UPDATE( espial );
+
+
+/*----------- defined in video/marineb.c -----------*/
+
+extern UINT8 *marineb_videoram;
+extern UINT8 *marineb_colorram;
+extern UINT8 marineb_active_low_flipscreen;
+
+WRITE8_HANDLER( marineb_videoram_w );
+WRITE8_HANDLER( marineb_colorram_w );
+WRITE8_HANDLER( marineb_column_scroll_w );
+WRITE8_HANDLER( marineb_palette_bank_0_w );
+WRITE8_HANDLER( marineb_palette_bank_1_w );
+WRITE8_HANDLER( marineb_flipscreen_x_w );
+WRITE8_HANDLER( marineb_flipscreen_y_w );
+
+VIDEO_START( marineb );
+VIDEO_UPDATE( marineb );
+VIDEO_UPDATE( changes );
+VIDEO_UPDATE( springer );
+VIDEO_UPDATE( hoccer );
+VIDEO_UPDATE( hopprobo );
+
+
+/*----------- defined in drivers/zodiack.c -----------*/
+
+extern int percuss_hardware;
+
+/*----------- defined in video/zodiack.c -----------*/
+
+extern UINT8 *zodiack_videoram2;
+extern UINT8 *zodiack_attributesram;
+extern UINT8 *zodiack_bulletsram;
+extern size_t zodiack_bulletsram_size;
+
+WRITE8_HANDLER( zodiack_videoram_w );
+WRITE8_HANDLER( zodiack_videoram2_w );
+WRITE8_HANDLER( zodiack_attributes_w );
+WRITE8_HANDLER( zodiack_flipscreen_w );
+
+PALETTE_INIT( zodiack );
+VIDEO_START( zodiack );
+VIDEO_UPDATE( zodiack );
+
diff --git a/src/mame/includes/exerion.h b/src/mame/includes/exerion.h
new file mode 100644
index 00000000000..30a23d02657
--- /dev/null
+++ b/src/mame/includes/exerion.h
@@ -0,0 +1,31 @@
+/*************************************************************************
+
+ Jaleco Exerion
+
+*************************************************************************/
+
+
+#define EXERION_MASTER_CLOCK (20000000)
+#define EXERION_CPU_CLOCK (EXERION_MASTER_CLOCK / 6)
+#define EXERION_AY8910_CLOCK (EXERION_CPU_CLOCK / 2)
+#define EXERION_PIXEL_CLOCK (EXERION_MASTER_CLOCK / 3)
+#define EXERION_HCOUNT_START (0x58)
+#define EXERION_HTOTAL (512-EXERION_HCOUNT_START)
+#define EXERION_HBEND (12*8) /* ?? */
+#define EXERION_HBSTART (52*8) /* ?? */
+#define EXERION_VTOTAL (256)
+#define EXERION_VBEND (16)
+#define EXERION_VBSTART (240)
+
+
+/*----------- defined in video/exerion.c -----------*/
+
+PALETTE_INIT( exerion );
+VIDEO_START( exerion );
+VIDEO_UPDATE( exerion );
+
+WRITE8_HANDLER( exerion_videoreg_w );
+WRITE8_HANDLER( exerion_video_latch_w );
+READ8_HANDLER( exerion_video_timing_r );
+
+extern UINT8 exerion_cocktail_flip;
diff --git a/src/mame/includes/exidy.h b/src/mame/includes/exidy.h
new file mode 100644
index 00000000000..cb79e9a8c34
--- /dev/null
+++ b/src/mame/includes/exidy.h
@@ -0,0 +1,88 @@
+/*************************************************************************
+
+ Exidy 6502 hardware
+
+*************************************************************************/
+
+#include "sound/custom.h"
+
+
+#define EXIDY_MASTER_CLOCK (11289000)
+#define EXIDY_CPU_CLOCK (EXIDY_MASTER_CLOCK / 16)
+#define EXIDY_PIXEL_CLOCK (EXIDY_MASTER_CLOCK / 2)
+#define EXIDY_HTOTAL (0x150)
+#define EXIDY_HBEND (0x000)
+#define EXIDY_HBSTART (0x100)
+#define EXIDY_HSEND (0x140)
+#define EXIDY_HSSTART (0x120)
+#define EXIDY_VTOTAL (0x118)
+#define EXIDY_VBEND (0x000)
+#define EXIDY_VBSTART (0x100)
+#define EXIDY_VSEND (0x108)
+#define EXIDY_VSSTART (0x100)
+
+
+/*----------- defined in audio/exidy.c -----------*/
+
+void *exidy_sh_start(int clock, const struct CustomSound_interface *config);
+void *victory_sh_start(int clock, const struct CustomSound_interface *config);
+void *berzerk_sh_start(int clock, const struct CustomSound_interface *config);
+
+WRITE8_HANDLER( exidy_shriot_w );
+WRITE8_HANDLER( exidy_sfxctrl_w );
+WRITE8_HANDLER( exidy_sh8253_w );
+WRITE8_HANDLER( exidy_sh6840_w );
+WRITE8_HANDLER( exidy_sound_filter_w );
+READ8_HANDLER( exidy_shriot_r );
+READ8_HANDLER( exidy_sh8253_r );
+READ8_HANDLER( exidy_sh6840_r );
+
+WRITE8_HANDLER( mtrap_voiceio_w );
+READ8_HANDLER( mtrap_voiceio_r );
+
+
+/*----------- defined in audio/targ.c -----------*/
+
+extern UINT8 targ_spec_flag;
+
+void targ_sh_start(void);
+
+WRITE8_HANDLER( targ_sh_w );
+
+
+/*----------- defined in video/exidy.c -----------*/
+
+#define PALETTE_LEN 8
+#define COLORTABLE_LEN 20
+
+extern UINT8 *exidy_characterram;
+extern UINT8 *exidy_palette;
+extern UINT16 *exidy_colortable;
+
+extern UINT8 sidetrac_palette[];
+extern UINT8 targ_palette[];
+extern UINT8 spectar_palette[];
+extern UINT16 exidy_1bpp_colortable[];
+extern UINT16 exidy_2bpp_colortable[];
+
+extern UINT8 exidy_collision_mask;
+extern UINT8 exidy_collision_invert;
+
+PALETTE_INIT( exidy );
+VIDEO_START( exidy );
+VIDEO_EOF( exidy );
+VIDEO_UPDATE( exidy );
+
+INTERRUPT_GEN( exidy_vblank_interrupt );
+INTERRUPT_GEN( teetert_vblank_interrupt );
+
+WRITE8_HANDLER( exidy_characterram_w );
+WRITE8_HANDLER( exidy_color_w );
+WRITE8_HANDLER( exidy_sprite1_xpos_w );
+WRITE8_HANDLER( exidy_sprite1_ypos_w );
+WRITE8_HANDLER( exidy_sprite2_xpos_w );
+WRITE8_HANDLER( exidy_sprite2_ypos_w );
+WRITE8_HANDLER( exidy_spriteno_w );
+WRITE8_HANDLER( exidy_sprite_enable_w );
+
+READ8_HANDLER( exidy_interrupt_r );
diff --git a/src/mame/includes/exidy440.h b/src/mame/includes/exidy440.h
new file mode 100644
index 00000000000..348cdf1a77d
--- /dev/null
+++ b/src/mame/includes/exidy440.h
@@ -0,0 +1,75 @@
+/*************************************************************************
+
+ Exidy 440 hardware
+
+*************************************************************************/
+
+#include "sound/custom.h"
+
+
+#define EXIDY440_MASTER_CLOCK (12979200)
+#define EXIDY440_MAIN_CPU_CLOCK (EXIDY440_MASTER_CLOCK / 8)
+#define EXIDY440_PIXEL_CLOCK (EXIDY440_MASTER_CLOCK / 2)
+#define EXIDY440_HTOTAL (0x1a0)
+#define EXIDY440_HBEND (0x000)
+#define EXIDY440_HBSTART (0x140)
+#define EXIDY440_HSEND (0x178)
+#define EXIDY440_HSSTART (0x160)
+#define EXIDY440_VTOTAL (0x104)
+#define EXIDY440_VBEND (0x000)
+#define EXIDY440_VBSTART (0x0f0)
+#define EXIDY440_VSEND (0x0f8)
+#define EXIDY440_VSSTART (0x0f0)
+
+/* Top Secret has a larger VBLANK area */
+#define TOPSECEX_VBSTART (0x0ec)
+
+
+/*----------- defined in drivers/exidy440.c -----------*/
+
+extern UINT8 exidy440_topsecret;
+void exidy440_bank_select(UINT8 bank);
+
+
+
+/*----------- defined in audio/exidy440.c -----------*/
+
+extern UINT8 exidy440_sound_command;
+extern UINT8 exidy440_sound_command_ack;
+extern UINT8 *exidy440_m6844_data;
+extern UINT8 *exidy440_sound_banks;
+extern UINT8 *exidy440_sound_volume;
+
+void *exidy440_sh_start(int clock, const struct CustomSound_interface *config);
+void exidy440_sh_stop(void *token);
+
+READ8_HANDLER( exidy440_m6844_r );
+WRITE8_HANDLER( exidy440_m6844_w );
+READ8_HANDLER( exidy440_sound_command_r );
+WRITE8_HANDLER( exidy440_sound_volume_w );
+WRITE8_HANDLER( exidy440_sound_interrupt_clear_w );
+
+
+/*----------- defined in video/exidy440.c -----------*/
+
+extern UINT8 *exidy440_imageram;
+extern UINT8 *exidy440_scanline;
+extern UINT8 exidy440_firq_vblank;
+extern UINT8 exidy440_firq_beam;
+extern UINT8 topsecex_yscroll;
+
+INTERRUPT_GEN( exidy440_vblank_interrupt );
+
+VIDEO_START( exidy440 );
+VIDEO_EOF( exidy440 );
+VIDEO_UPDATE( exidy440 );
+
+READ8_HANDLER( exidy440_videoram_r );
+WRITE8_HANDLER( exidy440_videoram_w );
+READ8_HANDLER( exidy440_paletteram_r );
+WRITE8_HANDLER( exidy440_paletteram_w );
+WRITE8_HANDLER( exidy440_spriteram_w );
+WRITE8_HANDLER( exidy440_control_w );
+READ8_HANDLER( exidy440_vertical_pos_r );
+READ8_HANDLER( exidy440_horizontal_pos_r );
+WRITE8_HANDLER( exidy440_interrupt_clear_w );
diff --git a/src/mame/includes/exterm.h b/src/mame/includes/exterm.h
new file mode 100644
index 00000000000..5863b859292
--- /dev/null
+++ b/src/mame/includes/exterm.h
@@ -0,0 +1,18 @@
+/*************************************************************************
+
+ Gottlieb Exterminator hardware
+
+*************************************************************************/
+
+/*----------- defined in video/exterm.c -----------*/
+
+extern UINT16 *exterm_master_videoram;
+extern UINT16 *exterm_slave_videoram;
+
+PALETTE_INIT( exterm );
+void exterm_scanline_update(running_machine *machine, int screen, mame_bitmap *bitmap, int scanline, const tms34010_display_params *params);
+
+void exterm_to_shiftreg_master(UINT32 address, UINT16* shiftreg);
+void exterm_from_shiftreg_master(UINT32 address, UINT16* shiftreg);
+void exterm_to_shiftreg_slave(UINT32 address, UINT16* shiftreg);
+void exterm_from_shiftreg_slave(UINT32 address, UINT16* shiftreg);
diff --git a/src/mame/includes/f1gp.h b/src/mame/includes/f1gp.h
new file mode 100644
index 00000000000..2bc057d5577
--- /dev/null
+++ b/src/mame/includes/f1gp.h
@@ -0,0 +1,24 @@
+/*----------- defined in video/f1gp.c -----------*/
+
+extern UINT16 *f1gp_spr1vram,*f1gp_spr2vram,*f1gp_spr1cgram,*f1gp_spr2cgram;
+extern UINT16 *f1gp_fgvideoram,*f1gp_rozvideoram;
+extern UINT16 *f1gp2_sprcgram,*f1gp2_spritelist;
+extern UINT16 *f1gpb_rozregs, *f1gpb_fgregs;
+extern size_t f1gp_spr1cgram_size,f1gp_spr2cgram_size;
+
+
+VIDEO_START( f1gp );
+VIDEO_START( f1gpb );
+VIDEO_START( f1gp2 );
+VIDEO_UPDATE( f1gp );
+VIDEO_UPDATE( f1gpb );
+VIDEO_UPDATE( f1gp2 );
+
+READ16_HANDLER( f1gp_zoomdata_r );
+WRITE16_HANDLER( f1gp_zoomdata_w );
+READ16_HANDLER( f1gp_rozvideoram_r );
+WRITE16_HANDLER( f1gp_rozvideoram_w );
+WRITE16_HANDLER( f1gp_fgvideoram_w );
+WRITE16_HANDLER( f1gp_fgscroll_w );
+WRITE16_HANDLER( f1gp_gfxctrl_w );
+WRITE16_HANDLER( f1gp2_gfxctrl_w );
diff --git a/src/mame/includes/fastfred.h b/src/mame/includes/fastfred.h
new file mode 100644
index 00000000000..02958e018b6
--- /dev/null
+++ b/src/mame/includes/fastfred.h
@@ -0,0 +1,32 @@
+/***************************************************************************
+
+ Fast Freddie/Jump Coaster hardware
+ driver by Zsolt Vasvari
+
+***************************************************************************/
+
+/*----------- defined in video/fastfred.c -----------*/
+
+extern UINT8 *fastfred_videoram;
+extern UINT8 *fastfred_spriteram;
+extern size_t fastfred_spriteram_size;
+extern UINT8 *fastfred_attributesram;
+
+PALETTE_INIT( fastfred );
+VIDEO_START( fastfred );
+WRITE8_HANDLER( fastfred_videoram_w );
+WRITE8_HANDLER( fastfred_attributes_w );
+WRITE8_HANDLER( fastfred_charbank1_w );
+WRITE8_HANDLER( fastfred_charbank2_w );
+WRITE8_HANDLER( fastfred_colorbank1_w );
+WRITE8_HANDLER( fastfred_colorbank2_w );
+WRITE8_HANDLER( fastfred_background_color_w );
+WRITE8_HANDLER( fastfred_flip_screen_x_w );
+WRITE8_HANDLER( fastfred_flip_screen_y_w );
+VIDEO_UPDATE( fastfred );
+
+extern UINT8 *imago_fg_videoram;
+VIDEO_START( imago );
+VIDEO_UPDATE( imago );
+WRITE8_HANDLER( imago_fg_videoram_w );
+WRITE8_HANDLER( imago_charbank_w );
diff --git a/src/mame/includes/fgoal.h b/src/mame/includes/fgoal.h
new file mode 100644
index 00000000000..4933f7799a1
--- /dev/null
+++ b/src/mame/includes/fgoal.h
@@ -0,0 +1,15 @@
+/*----------- defined in drivers/fgoal.c -----------*/
+
+extern UINT8* fgoal_video_ram;
+extern int fgoal_player;
+
+
+/*----------- defined in video/fgoal.c -----------*/
+
+VIDEO_START( fgoal );
+VIDEO_UPDATE( fgoal );
+
+WRITE8_HANDLER( fgoal_color_w );
+WRITE8_HANDLER( fgoal_xpos_w );
+WRITE8_HANDLER( fgoal_ypos_w );
+
diff --git a/src/mame/includes/firetrk.h b/src/mame/includes/firetrk.h
new file mode 100644
index 00000000000..1dec7c0b3f9
--- /dev/null
+++ b/src/mame/includes/firetrk.h
@@ -0,0 +1,78 @@
+/*************************************************************************
+
+Atari Fire Truck + Super Bug + Monte Carlo driver
+
+*************************************************************************/
+
+#include "sound/discrete.h"
+
+#define FIRETRUCK_MOTOR_DATA NODE_01
+#define FIRETRUCK_HORN_EN NODE_02
+#define FIRETRUCK_SIREN_DATA NODE_03
+#define FIRETRUCK_CRASH_DATA NODE_04
+#define FIRETRUCK_SKID_EN NODE_05
+#define FIRETRUCK_BELL_EN NODE_06
+#define FIRETRUCK_ATTRACT_EN NODE_07
+#define FIRETRUCK_XTNDPLY_EN NODE_08
+
+#define SUPERBUG_SPEED_DATA FIRETRUCK_MOTOR_DATA
+#define SUPERBUG_CRASH_DATA FIRETRUCK_CRASH_DATA
+#define SUPERBUG_SKID_EN FIRETRUCK_SKID_EN
+#define SUPERBUG_ASR_EN FIRETRUCK_XTNDPLY_EN
+#define SUPERBUG_ATTRACT_EN FIRETRUCK_ATTRACT_EN
+
+#define MONTECAR_MOTOR_DATA FIRETRUCK_MOTOR_DATA
+#define MONTECAR_CRASH_DATA FIRETRUCK_CRASH_DATA
+#define MONTECAR_DRONE_MOTOR_DATA FIRETRUCK_SIREN_DATA
+#define MONTECAR_SKID_EN FIRETRUCK_SKID_EN
+#define MONTECAR_DRONE_LOUD_DATA FIRETRUCK_BELL_EN
+#define MONTECAR_BEEPER_EN FIRETRUCK_XTNDPLY_EN
+#define MONTECAR_ATTRACT_INV FIRETRUCK_ATTRACT_EN
+
+#define GAME_IS_FIRETRUCK (firetrk_game == 1)
+#define GAME_IS_SUPERBUG (firetrk_game == 2)
+#define GAME_IS_MONTECARLO (firetrk_game == 3)
+
+
+/*----------- defined in drivers/firetrk.c -----------*/
+
+extern int firetrk_game;
+
+
+/*----------- defined in audio/firetrk.c -----------*/
+
+WRITE8_HANDLER( firetrk_skid_reset_w );
+WRITE8_HANDLER( firetrk_crash_snd_w );
+WRITE8_HANDLER( firetrk_skid_snd_w );
+WRITE8_HANDLER( firetrk_motor_snd_w );
+WRITE8_HANDLER( firetrk_xtndply_w );
+WRITE8_HANDLER( firetrk_asr_w );
+WRITE8_HANDLER( firetrk_out2_w );
+
+DISCRETE_SOUND_EXTERN( firetrk );
+DISCRETE_SOUND_EXTERN( superbug );
+DISCRETE_SOUND_EXTERN( montecar );
+
+
+/*----------- defined in video/firetrk.c -----------*/
+
+extern VIDEO_UPDATE( firetrk );
+extern VIDEO_START( firetrk );
+extern VIDEO_EOF( firetrk );
+
+extern WRITE8_HANDLER( firetrk_vert_w );
+extern WRITE8_HANDLER( firetrk_horz_w );
+extern WRITE8_HANDLER( firetrk_drone_hpos_w );
+extern WRITE8_HANDLER( firetrk_drone_vpos_w );
+extern WRITE8_HANDLER( firetrk_drone_rot_w );
+extern WRITE8_HANDLER( firetrk_playfield_w );
+extern WRITE8_HANDLER( firetrk_car_rot_w );
+
+extern void firetrk_set_flash(int flag);
+extern void firetrk_set_blink(int flag);
+
+extern UINT8* firetrk_alpha_num_ram;
+extern UINT8* firetrk_playfield_ram;
+
+extern int firetrk_crash[2];
+extern int firetrk_skid[2];
diff --git a/src/mame/includes/foodf.h b/src/mame/includes/foodf.h
new file mode 100644
index 00000000000..7bf0415c4c8
--- /dev/null
+++ b/src/mame/includes/foodf.h
@@ -0,0 +1,13 @@
+/*************************************************************************
+
+ Atari Food Fight hardware
+
+*************************************************************************/
+
+/*----------- defined in video/foodf.c -----------*/
+
+WRITE16_HANDLER( foodf_paletteram_w );
+
+void foodf_set_flip(int flip);
+VIDEO_START( foodf );
+VIDEO_UPDATE( foodf );
diff --git a/src/mame/includes/fromance.h b/src/mame/includes/fromance.h
new file mode 100644
index 00000000000..f4d8c5359ce
--- /dev/null
+++ b/src/mame/includes/fromance.h
@@ -0,0 +1,30 @@
+/***************************************************************************
+
+ Game Driver for Video System Mahjong series and Pipe Dream.
+
+ Driver by Takahiro Nogi <nogi@kt.rim.or.jp> 2001/02/04 -
+ and Bryan McPhail, Nicola Salmoria, Aaron Giles
+
+***************************************************************************/
+
+/*----------- defined in video/fromance.c -----------*/
+
+VIDEO_START( fromance );
+VIDEO_START( nekkyoku );
+VIDEO_START( pipedrm );
+VIDEO_START( hatris );
+VIDEO_UPDATE( fromance );
+VIDEO_UPDATE( pipedrm );
+
+WRITE8_HANDLER( fromance_crtc_data_w );
+WRITE8_HANDLER( fromance_crtc_register_w );
+
+WRITE8_HANDLER( fromance_gfxreg_w );
+
+WRITE8_HANDLER( fromance_scroll_w );
+
+READ8_HANDLER( fromance_paletteram_r );
+WRITE8_HANDLER( fromance_paletteram_w );
+
+READ8_HANDLER( fromance_videoram_r );
+WRITE8_HANDLER( fromance_videoram_w );
diff --git a/src/mame/includes/gaelco3d.h b/src/mame/includes/gaelco3d.h
new file mode 100644
index 00000000000..9ff93abd7f3
--- /dev/null
+++ b/src/mame/includes/gaelco3d.h
@@ -0,0 +1,24 @@
+/*************************************************************************
+
+ Driver for Gaelco 3D games
+
+ driver by Aaron Giles
+
+**************************************************************************/
+
+
+/*----------- defined in video/gaelco3d.c -----------*/
+
+extern UINT8 *gaelco3d_texture;
+extern UINT8 *gaelco3d_texmask;
+extern offs_t gaelco3d_texture_size;
+extern offs_t gaelco3d_texmask_size;
+
+void gaelco3d_render(void);
+WRITE32_HANDLER( gaelco3d_render_w );
+
+WRITE16_HANDLER( gaelco3d_paletteram_w );
+WRITE32_HANDLER( gaelco3d_paletteram_020_w );
+
+VIDEO_START( gaelco3d );
+VIDEO_UPDATE( gaelco3d );
diff --git a/src/mame/includes/galaga.h b/src/mame/includes/galaga.h
new file mode 100644
index 00000000000..9dd0c5916f7
--- /dev/null
+++ b/src/mame/includes/galaga.h
@@ -0,0 +1,98 @@
+#include "sound/discrete.h"
+
+/*----------- defined in video/bosco.c -----------*/
+
+extern UINT8 *bosco_videoram;
+extern UINT8 *bosco_radarattr;
+READ8_HANDLER( bosco_videoram_r );
+WRITE8_HANDLER( bosco_videoram_w );
+WRITE8_HANDLER( bosco_scrollx_w );
+WRITE8_HANDLER( bosco_scrolly_w );
+WRITE8_HANDLER( bosco_starcontrol_w );
+WRITE8_HANDLER( bosco_starclr_w );
+WRITE8_HANDLER( bosco_starblink_w );
+VIDEO_START( bosco );
+VIDEO_UPDATE( bosco );
+PALETTE_INIT( bosco );
+VIDEO_EOF( bosco ); /* update starfield */
+
+/*----------- defined in audio/galaga.c -----------*/
+
+DISCRETE_SOUND_EXTERN( bosco );
+DISCRETE_SOUND_EXTERN( galaga );
+
+
+/*----------- defined in video/galaga.c -----------*/
+
+struct star
+{
+ UINT16 x,y;
+ UINT8 col,set;
+};
+
+extern UINT8 *galaga_videoram;
+extern UINT8 *galaga_ram1,*galaga_ram2,*galaga_ram3;
+extern UINT8 galaga_starcontrol[];
+extern struct star star_seed_tab[];
+
+PALETTE_INIT( galaga );
+READ8_HANDLER( galaga_videoram_r );
+WRITE8_HANDLER( galaga_videoram_w );
+WRITE8_HANDLER( galaga_starcontrol_w );
+WRITE8_HANDLER( gatsbee_bank_w );
+VIDEO_START( galaga );
+VIDEO_UPDATE( galaga );
+VIDEO_EOF( galaga ); /* update starfield */
+
+/*----------- defined in video/xevious.c -----------*/
+
+extern UINT8 *xevious_fg_videoram,*xevious_fg_colorram;
+extern UINT8 *xevious_bg_videoram,*xevious_bg_colorram;
+extern UINT8 *xevious_sr1,*xevious_sr2,*xevious_sr3;
+
+READ8_HANDLER( xevious_fg_videoram_r );
+READ8_HANDLER( xevious_fg_colorram_r );
+READ8_HANDLER( xevious_bg_videoram_r );
+READ8_HANDLER( xevious_bg_colorram_r );
+WRITE8_HANDLER( xevious_fg_videoram_w );
+WRITE8_HANDLER( xevious_fg_colorram_w );
+WRITE8_HANDLER( xevious_bg_videoram_w );
+WRITE8_HANDLER( xevious_bg_colorram_w );
+WRITE8_HANDLER( xevious_vh_latch_w );
+WRITE8_HANDLER( xevious_bs_w );
+READ8_HANDLER( xevious_bb_r );
+VIDEO_START( xevious );
+PALETTE_INIT( xevious );
+VIDEO_UPDATE( xevious );
+
+PALETTE_INIT( battles );
+
+/*----------- defined in machine/xevious.c -----------*/
+
+void battles_customio_init(void);
+
+READ8_HANDLER( battles_customio0_r );
+READ8_HANDLER( battles_customio_data0_r );
+READ8_HANDLER( battles_customio3_r );
+READ8_HANDLER( battles_customio_data3_r );
+READ8_HANDLER( battles_input_port_r );
+
+WRITE8_HANDLER( battles_customio0_w );
+WRITE8_HANDLER( battles_customio_data0_w );
+WRITE8_HANDLER( battles_customio3_w );
+WRITE8_HANDLER( battles_customio_data3_w );
+WRITE8_HANDLER( battles_CPU4_coin_w );
+WRITE8_HANDLER( battles_noise_sound_w );
+
+INTERRUPT_GEN( battles_interrupt_4 );
+
+/*----------- defined in video/digdug.c -----------*/
+
+extern UINT8 *digdug_videoram,*digdug_objram, *digdug_posram, *digdug_flpram;
+
+READ8_HANDLER( digdug_videoram_r );
+WRITE8_HANDLER( digdug_videoram_w );
+WRITE8_HANDLER( digdug_PORT_w );
+VIDEO_START( digdug );
+VIDEO_UPDATE( digdug );
+PALETTE_INIT( digdug );
diff --git a/src/mame/includes/galaxian.h b/src/mame/includes/galaxian.h
new file mode 100644
index 00000000000..dbfd447ff31
--- /dev/null
+++ b/src/mame/includes/galaxian.h
@@ -0,0 +1,238 @@
+/***************************************************************************
+
+ Galaxian hardware family
+
+ This include file is used by the following drivers:
+ - galaxian.c
+ - scramble.c
+ - scobra.c
+ - frogger.c
+ - amidar.c
+
+***************************************************************************/
+
+/*----------- defined in video/galaxian.c -----------*/
+
+extern UINT8 *galaxian_videoram;
+extern UINT8 *galaxian_spriteram;
+extern UINT8 *galaxian_spriteram2;
+extern UINT8 *galaxian_attributesram;
+extern UINT8 *galaxian_bulletsram;
+extern UINT8 *rockclim_videoram;
+extern UINT8 *racknrol_tiles_bank;
+
+
+extern size_t galaxian_spriteram_size;
+extern size_t galaxian_spriteram2_size;
+extern size_t galaxian_bulletsram_size;
+
+PALETTE_INIT( galaxian );
+PALETTE_INIT( scramble );
+PALETTE_INIT( turtles );
+PALETTE_INIT( moonwar );
+PALETTE_INIT( darkplnt );
+PALETTE_INIT( rescue );
+PALETTE_INIT( minefld );
+PALETTE_INIT( stratgyx );
+PALETTE_INIT( mariner );
+PALETTE_INIT( frogger );
+PALETTE_INIT( rockclim );
+
+WRITE8_HANDLER( galaxian_videoram_w );
+READ8_HANDLER( galaxian_videoram_r );
+
+WRITE8_HANDLER( rockclim_videoram_w );
+WRITE8_HANDLER( rockclim_scroll_w );
+READ8_HANDLER( rockclim_videoram_r );
+
+WRITE8_HANDLER( galaxian_attributesram_w );
+
+WRITE8_HANDLER( galaxian_stars_enable_w );
+WRITE8_HANDLER( scramble_background_enable_w );
+WRITE8_HANDLER( scramble_background_red_w );
+WRITE8_HANDLER( scramble_background_green_w );
+WRITE8_HANDLER( scramble_background_blue_w );
+WRITE8_HANDLER( hotshock_flip_screen_w );
+WRITE8_HANDLER( darkplnt_bullet_color_w );
+WRITE8_HANDLER( racknrol_tiles_bank_w );
+
+VIDEO_START( galaxian_plain );
+VIDEO_START( galaxian );
+VIDEO_START( gmgalax );
+VIDEO_START( mooncrst );
+VIDEO_START( mooncrgx );
+VIDEO_START( moonqsr );
+VIDEO_START( mshuttle );
+VIDEO_START( pisces );
+VIDEO_START( gteikob2 );
+VIDEO_START( batman2 );
+VIDEO_START( jumpbug );
+VIDEO_START( azurian );
+VIDEO_START( dkongjrm );
+VIDEO_START( scramble );
+VIDEO_START( theend );
+VIDEO_START( darkplnt );
+VIDEO_START( rescue );
+VIDEO_START( minefld );
+VIDEO_START( calipso );
+VIDEO_START( stratgyx );
+VIDEO_START( mimonkey );
+VIDEO_START( turtles );
+VIDEO_START( frogger );
+VIDEO_START( mariner );
+VIDEO_START( ckongs );
+VIDEO_START( froggers );
+VIDEO_START( newsin7 );
+VIDEO_START( sfx );
+VIDEO_START( rockclim );
+VIDEO_START( drivfrcg );
+VIDEO_START( bongo );
+VIDEO_START( scorpion );
+VIDEO_START( racknrol );
+VIDEO_START( ad2083 );
+
+VIDEO_UPDATE( galaxian );
+
+WRITE8_HANDLER( galaxian_gfxbank_w );
+WRITE8_HANDLER( galaxian_flip_screen_x_w );
+WRITE8_HANDLER( galaxian_flip_screen_y_w );
+WRITE8_HANDLER( gteikob2_flip_screen_x_w );
+WRITE8_HANDLER( gteikob2_flip_screen_y_w );
+
+
+/*----------- defined in machine/galaxian.c -----------*/
+
+DRIVER_INIT( zigzag );
+DRIVER_INIT( pisces );
+DRIVER_INIT( checkmaj );
+DRIVER_INIT( dingo );
+DRIVER_INIT( dingoe );
+DRIVER_INIT( kingball );
+DRIVER_INIT( mooncrsu );
+DRIVER_INIT( mooncrst );
+DRIVER_INIT( mooncrgx );
+DRIVER_INIT( moonqsr );
+DRIVER_INIT( checkman );
+DRIVER_INIT( gteikob2 );
+DRIVER_INIT( azurian );
+DRIVER_INIT( 4in1 );
+DRIVER_INIT( ladybugg );
+DRIVER_INIT( gmgalax );
+
+WRITE8_HANDLER( galaxian_nmi_enable_w );
+
+MACHINE_RESET( galaxian );
+MACHINE_RESET( devilfsg );
+
+WRITE8_HANDLER( galaxian_coin_lockout_w );
+WRITE8_HANDLER( galaxian_coin_counter_w );
+#define galaxian_coin_counter_0_w galaxian_coin_counter_w
+WRITE8_HANDLER( galaxian_coin_counter_1_w );
+WRITE8_HANDLER( galaxian_coin_counter_2_w );
+WRITE8_HANDLER( galaxian_leds_w );
+
+READ8_HANDLER( scramblb_protection_1_r );
+READ8_HANDLER( scramblb_protection_2_r );
+
+READ8_HANDLER( jumpbug_protection_r );
+
+WRITE8_HANDLER( kingball_speech_dip_w );
+WRITE8_HANDLER( kingball_sound1_w );
+WRITE8_HANDLER( kingball_sound2_w );
+
+WRITE8_HANDLER( _4in1_bank_w );
+READ8_HANDLER( _4in1_input_port_1_r );
+READ8_HANDLER( _4in1_input_port_2_r );
+
+WRITE8_HANDLER( zigzag_sillyprotection_w );
+
+INTERRUPT_GEN( hunchbks_vh_interrupt );
+INTERRUPT_GEN( gmgalax_vh_interrupt );
+
+READ8_HANDLER( gmgalax_input_port_0_r );
+READ8_HANDLER( gmgalax_input_port_1_r );
+READ8_HANDLER( gmgalax_input_port_2_r );
+
+
+/*----------- defined in machine/scramble.c -----------*/
+
+DRIVER_INIT( scramble_ppi );
+DRIVER_INIT( amidar );
+DRIVER_INIT( frogger );
+DRIVER_INIT( froggers );
+DRIVER_INIT( scobra );
+DRIVER_INIT( stratgyx );
+DRIVER_INIT( moonwar );
+DRIVER_INIT( darkplnt );
+DRIVER_INIT( tazmani2 );
+DRIVER_INIT( anteater );
+DRIVER_INIT( rescue );
+DRIVER_INIT( minefld );
+DRIVER_INIT( losttomb );
+DRIVER_INIT( superbon );
+DRIVER_INIT( hustler );
+DRIVER_INIT( billiard );
+DRIVER_INIT( mimonkey );
+DRIVER_INIT( mimonsco );
+DRIVER_INIT( atlantis );
+DRIVER_INIT( scramble );
+DRIVER_INIT( scrambls );
+DRIVER_INIT( theend );
+DRIVER_INIT( ckongs );
+DRIVER_INIT( mariner );
+DRIVER_INIT( mars );
+DRIVER_INIT( devilfsh );
+DRIVER_INIT( hotshock );
+DRIVER_INIT( cavelon );
+DRIVER_INIT( mrkougar );
+DRIVER_INIT( mrkougb );
+DRIVER_INIT( mimonscr );
+DRIVER_INIT( sfx );
+DRIVER_INIT( monsterz );
+DRIVER_INIT( scorpion );
+DRIVER_INIT( ad2083 );
+
+MACHINE_RESET( scramble );
+MACHINE_RESET( sfx );
+MACHINE_RESET( monsterz );
+MACHINE_RESET( explorer );
+
+READ8_HANDLER( triplep_pip_r );
+READ8_HANDLER( triplep_pap_r );
+
+READ8_HANDLER( hunchbks_mirror_r );
+WRITE8_HANDLER( hunchbks_mirror_w );
+
+
+
+/*----------- defined in audio/galaxian.c -----------*/
+
+extern struct Samplesinterface galaxian_samples_interface;
+WRITE8_HANDLER( galaxian_pitch_w );
+WRITE8_HANDLER( galaxian_vol_w );
+WRITE8_HANDLER( galaxian_noise_enable_w );
+WRITE8_HANDLER( galaxian_background_enable_w );
+WRITE8_HANDLER( galaxian_shoot_enable_w );
+WRITE8_HANDLER( galaxian_lfo_freq_w );
+
+
+/*----------- defined in audio/scramble.c -----------*/
+
+void scramble_sh_init(void);
+void sfx_sh_init(void);
+
+WRITE8_HANDLER( scramble_filter_w );
+WRITE8_HANDLER( frogger_filter_w );
+
+READ8_HANDLER( scramble_portB_r );
+READ8_HANDLER( frogger_portB_r );
+
+READ8_HANDLER( hotshock_soundlatch_r );
+
+WRITE8_HANDLER( scramble_sh_irqtrigger_w );
+WRITE8_HANDLER( sfx_sh_irqtrigger_w );
+WRITE8_HANDLER( mrkougar_sh_irqtrigger_w );
+WRITE8_HANDLER( froggrmc_sh_irqtrigger_w );
+WRITE8_HANDLER( hotshock_sh_irqtrigger_w );
+
+
diff --git a/src/mame/includes/gauntlet.h b/src/mame/includes/gauntlet.h
new file mode 100644
index 00000000000..b47ab9c3738
--- /dev/null
+++ b/src/mame/includes/gauntlet.h
@@ -0,0 +1,15 @@
+/*************************************************************************
+
+ Atari Gauntlet hardware
+
+*************************************************************************/
+
+/*----------- defined in video/gauntlet.c -----------*/
+
+extern UINT8 vindctr2_screen_refresh;
+
+WRITE16_HANDLER( gauntlet_xscroll_w );
+WRITE16_HANDLER( gauntlet_yscroll_w );
+
+VIDEO_START( gauntlet );
+VIDEO_UPDATE( gauntlet );
diff --git a/src/mame/includes/gcpinbal.h b/src/mame/includes/gcpinbal.h
new file mode 100644
index 00000000000..53788699cc0
--- /dev/null
+++ b/src/mame/includes/gcpinbal.h
@@ -0,0 +1,11 @@
+/*----------- defined in video/gcpinbal.c -----------*/
+
+VIDEO_START( gcpinbal );
+VIDEO_UPDATE( gcpinbal );
+
+READ16_HANDLER ( gcpinbal_tilemaps_word_r );
+WRITE16_HANDLER( gcpinbal_tilemaps_word_w );
+
+extern UINT16 *gcpinbal_tilemapram;
+extern UINT16 *gcpinbal_ioc_ram;
+
diff --git a/src/mame/includes/genesis.h b/src/mame/includes/genesis.h
new file mode 100644
index 00000000000..6f326b857f9
--- /dev/null
+++ b/src/mame/includes/genesis.h
@@ -0,0 +1,101 @@
+/* Todo, reorganise, cleanup etc.*/
+
+#include "sound/okim6295.h"
+#include "sound/sn76496.h"
+#include "sound/2612intf.h"
+#include "sound/upd7759.h"
+
+/*----------- defined in drivers/megaplay.c -----------*/
+
+extern UINT16 *ic36_ram;
+extern UINT8 bios_6204;
+extern UINT8 bios_ctrl[6];
+
+/*----------- defined in drivers/megatech.c -----------*/
+
+extern UINT32 bios_ctrl_inputs;
+
+/*----------- defined in drivers/genesis.c -----------*/
+
+extern UINT8 *genesis_z80_ram;
+extern UINT16 *genesis_68k_ram;
+extern MACHINE_START( genesis );
+extern MACHINE_RESET( genesis );
+extern READ16_HANDLER ( megaplay_genesis_io_r );
+extern WRITE16_HANDLER ( genesis_io_w );
+extern UINT16 *genesis_io_ram;
+extern READ16_HANDLER(genesis_ctrl_r);
+extern READ16_HANDLER ( megaplay_68k_to_z80_r );
+extern READ8_HANDLER ( genesis_z80_r );
+extern READ8_HANDLER ( genesis_z80_bank_r );
+extern WRITE8_HANDLER ( genesis_z80_w );
+extern WRITE16_HANDLER(genesis_ctrl_w);
+extern WRITE16_HANDLER ( genesis_68k_to_z80_w );
+extern READ16_HANDLER ( genesis_io_r );
+extern READ16_HANDLER ( genesis_68k_to_z80_r );
+extern INTERRUPT_GEN( genesis_vblank_interrupt );
+extern void genesis_irq2_interrupt(int state);
+
+/*----------- defined in video/genesis.c -----------*/
+
+extern UINT8 genesis_vdp_regs[];
+extern UINT16 genesis_bg_pal_lookup[];
+extern UINT16 genesis_sp_pal_lookup[];
+
+VIDEO_START( genesis );
+VIDEO_START( segac2 );
+
+VIDEO_UPDATE( genesis );
+VIDEO_UPDATE( segac2 );
+VIDEO_UPDATE( megaplay );
+
+void segac2_enable_display(int enable);
+
+READ16_HANDLER ( genesis_vdp_r );
+WRITE16_HANDLER( genesis_vdp_w );
+
+/* Generic Input Ports */
+#define GENESIS_PORTS \
+ PORT_START \
+ \
+ PORT_START /* Player 1 Controls - part 1 */ \
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) \
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) \
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) \
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) \
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON2 ) \
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON3 ) \
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED ) \
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED ) \
+ \
+ PORT_START /* Player 1 Controls - part 2 */ \
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED ) \
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED ) \
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED ) \
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED ) \
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) \
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START1 ) \
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED ) \
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED ) \
+ \
+ PORT_START /* Player 2 Controls - part 1 */ \
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(2) \
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(2) \
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2) \
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2) \
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2) \
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2) \
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED ) \
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED ) \
+ \
+ PORT_START /* Player 2 Controls - part 2 */ \
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED ) \
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED ) \
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED ) \
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED ) \
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) \
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START2 ) \
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED ) \
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED ) \
+
+
diff --git a/src/mame/includes/grchamp.h b/src/mame/includes/grchamp.h
new file mode 100644
index 00000000000..250b54aa9e4
--- /dev/null
+++ b/src/mame/includes/grchamp.h
@@ -0,0 +1,63 @@
+/*************************************************************************
+
+ Taito Grand Champ hardware
+
+*************************************************************************/
+
+#include "sound/discrete.h"
+
+typedef struct _grchamp_state grchamp_state;
+struct _grchamp_state
+{
+ UINT8 cpu0_out[16];
+ UINT8 cpu1_out[16];
+
+ UINT8 comm_latch;
+ UINT8 comm_latch2[4];
+
+ UINT16 ledlatch;
+ UINT8 ledaddr;
+ UINT16 ledram[8];
+
+ UINT16 collide;
+ UINT8 collmode;
+
+ UINT8 * radarram;
+ UINT8 * videoram;
+ UINT8 * leftram;
+ UINT8 * centerram;
+ UINT8 * rightram;
+ UINT8 * spriteram;
+
+ mame_bitmap *work_bitmap;
+ tilemap * text_tilemap;
+ tilemap * left_tilemap;
+ tilemap * center_tilemap;
+ tilemap * right_tilemap;
+
+ rgb_t bgcolor[0x20];
+};
+
+/* Discrete Sound Input Nodes */
+#define GRCHAMP_ENGINE_CS_EN NODE_01
+#define GRCHAMP_SIFT_DATA NODE_02
+#define GRCHAMP_ATTACK_UP_DATA NODE_03
+#define GRCHAMP_IDLING_EN NODE_04
+#define GRCHAMP_FOG_EN NODE_05
+#define GRCHAMP_PLAYER_SPEED_DATA NODE_06
+#define GRCHAMP_ATTACK_SPEED_DATA NODE_07
+#define GRCHAMP_A_DATA NODE_08
+#define GRCHAMP_B_DATA NODE_09
+
+/*----------- defined in audio/grchamp.c -----------*/
+
+DISCRETE_SOUND_EXTERN( grchamp );
+
+/*----------- defined in video/grchamp.c -----------*/
+
+PALETTE_INIT( grchamp );
+VIDEO_START( grchamp );
+VIDEO_UPDATE( grchamp );
+WRITE8_HANDLER( grchamp_left_w );
+WRITE8_HANDLER( grchamp_center_w );
+WRITE8_HANDLER( grchamp_right_w );
diff --git a/src/mame/includes/gridlee.h b/src/mame/includes/gridlee.h
new file mode 100644
index 00000000000..0df4f5129b4
--- /dev/null
+++ b/src/mame/includes/gridlee.h
@@ -0,0 +1,29 @@
+/***************************************************************************
+
+ Videa Gridlee hardware
+
+ driver by Aaron Giles
+
+***************************************************************************/
+
+#include "sound/custom.h"
+
+
+/*----------- defined in audio/gridlee.c -----------*/
+
+WRITE8_HANDLER( gridlee_sound_w );
+void *gridlee_sh_start(int clock, const struct CustomSound_interface *config);
+
+
+/*----------- defined in video/gridlee.c -----------*/
+
+/* video driver data & functions */
+extern UINT8 gridlee_cocktail_flip;
+
+PALETTE_INIT( gridlee );
+VIDEO_START( gridlee );
+VIDEO_UPDATE( gridlee );
+
+WRITE8_HANDLER( gridlee_cocktail_flip_w );
+WRITE8_HANDLER( gridlee_videoram_w );
+WRITE8_HANDLER( gridlee_palette_select_w );
diff --git a/src/mame/includes/gstriker.h b/src/mame/includes/gstriker.h
new file mode 100644
index 00000000000..22494ad35bc
--- /dev/null
+++ b/src/mame/includes/gstriker.h
@@ -0,0 +1,72 @@
+#ifndef __GSTRIKER_H
+#define __GSTRIKER_H
+
+/*----------- defined in video/gstriker.c -----------*/
+
+/*** VS920A **********************************************/
+
+#define MAX_VS920A 2
+
+typedef struct
+{
+ tilemap* tmap;
+ UINT16* vram;
+ UINT16 pal_base;
+ UINT8 gfx_region;
+} sVS920A;
+
+extern sVS920A VS920A[MAX_VS920A];
+
+#define VS920A_0_vram (VS920A[0].vram)
+#define VS920A_1_vram (VS920A[1].vram)
+
+extern WRITE16_HANDLER( VS920A_0_vram_w );
+extern WRITE16_HANDLER( VS920A_1_vram_w );
+
+
+
+/*** MB60553 **********************************************/
+
+#define MAX_MB60553 2
+
+typedef struct
+{
+ tilemap* tmap;
+ UINT16* vram;
+ UINT16 regs[8];
+ UINT8 bank[8];
+ UINT16 pal_base;
+ UINT8 gfx_region;
+
+} tMB60553;
+
+extern tMB60553 MB60553[MAX_MB60553];
+
+#define MB60553_0_vram (MB60553[0].vram)
+#define MB60553_1_vram (MB60553[1].vram)
+
+extern WRITE16_HANDLER(MB60553_0_regs_w);
+extern WRITE16_HANDLER(MB60553_1_regs_w);
+
+extern WRITE16_HANDLER(MB60553_0_vram_w);
+extern WRITE16_HANDLER(MB60553_1_vram_w);
+
+
+/*** CG10103 **********************************************/
+
+#define MAX_CG10103 2
+
+typedef struct
+{
+ UINT16* vram;
+ UINT16 pal_base;
+ UINT8 gfx_region;
+
+} tCG10103;
+
+extern tCG10103 CG10103[MAX_CG10103];
+
+#define CG10103_0_vram (CG10103[0].vram)
+#define CG10103_1_vram (CG10103[1].vram)
+
+#endif
diff --git a/src/mame/includes/harddriv.h b/src/mame/includes/harddriv.h
new file mode 100644
index 00000000000..757e67e824e
--- /dev/null
+++ b/src/mame/includes/harddriv.h
@@ -0,0 +1,245 @@
+/*************************************************************************
+
+ Driver for Atari polygon racer games
+
+**************************************************************************/
+
+#include "cpu/tms34010/tms34010.h"
+
+/*----------- defined in machine/harddriv.c -----------*/
+
+extern INT8 hdcpu_main;
+extern INT8 hdcpu_gsp;
+extern INT8 hdcpu_msp;
+extern INT8 hdcpu_adsp;
+extern INT8 hdcpu_sound;
+extern INT8 hdcpu_sounddsp;
+extern INT8 hdcpu_jsa;
+extern INT8 hdcpu_dsp32;
+
+extern UINT8 hd34010_host_access;
+extern UINT8 hddsk_pio_access;
+
+extern UINT16 *hdmsp_ram;
+extern UINT16 *hddsk_ram;
+extern UINT16 *hddsk_rom;
+extern UINT16 *hddsk_zram;
+extern UINT16 *hd68k_slapstic_base;
+extern UINT16 *st68k_sloop_alt_base;
+
+extern UINT16 *hdadsp_data_memory;
+extern UINT32 *hdadsp_pgm_memory;
+
+extern UINT16 *hdgsp_protection;
+extern UINT16 *stmsp_sync[3];
+
+extern UINT16 *hdgsp_speedup_addr[2];
+extern offs_t hdgsp_speedup_pc;
+
+extern UINT16 *hdmsp_speedup_addr;
+extern offs_t hdmsp_speedup_pc;
+
+extern UINT16 *hdds3_speedup_addr;
+extern offs_t hdds3_speedup_pc;
+extern offs_t hdds3_transfer_pc;
+
+extern UINT32 *rddsp32_sync[2];
+
+extern UINT32 gsp_speedup_count[4];
+extern UINT32 msp_speedup_count[4];
+extern UINT32 adsp_speedup_count[4];
+
+/* Driver/Multisync board */
+MACHINE_START( harddriv );
+MACHINE_RESET( harddriv );
+
+INTERRUPT_GEN( hd68k_irq_gen );
+WRITE16_HANDLER( hd68k_irq_ack_w );
+void hdgsp_irq_gen(int state);
+void hdmsp_irq_gen(int state);
+
+READ16_HANDLER( hd68k_gsp_io_r );
+WRITE16_HANDLER( hd68k_gsp_io_w );
+
+READ16_HANDLER( hd68k_msp_io_r );
+WRITE16_HANDLER( hd68k_msp_io_w );
+
+READ16_HANDLER( hd68k_port0_r );
+READ16_HANDLER( hd68k_adc8_r );
+READ16_HANDLER( hd68k_adc12_r );
+READ16_HANDLER( hdc68k_port1_r );
+READ16_HANDLER( hda68k_port1_r );
+READ16_HANDLER( hdc68k_wheel_r );
+READ16_HANDLER( hd68k_sound_reset_r );
+
+WRITE16_HANDLER( hd68k_adc_control_w );
+WRITE16_HANDLER( hd68k_wr0_write );
+WRITE16_HANDLER( hd68k_wr1_write );
+WRITE16_HANDLER( hd68k_wr2_write );
+WRITE16_HANDLER( hd68k_nwr_w );
+WRITE16_HANDLER( hdc68k_wheel_edge_reset_w );
+
+READ16_HANDLER( hd68k_zram_r );
+WRITE16_HANDLER( hd68k_zram_w );
+
+READ16_HANDLER( hd68k_duart_r );
+WRITE16_HANDLER( hd68k_duart_w );
+
+WRITE16_HANDLER( hdgsp_io_w );
+
+WRITE16_HANDLER( hdgsp_protection_w );
+
+WRITE16_HANDLER( stmsp_sync0_w );
+WRITE16_HANDLER( stmsp_sync1_w );
+WRITE16_HANDLER( stmsp_sync2_w );
+
+/* ADSP board */
+READ16_HANDLER( hd68k_adsp_program_r );
+WRITE16_HANDLER( hd68k_adsp_program_w );
+
+READ16_HANDLER( hd68k_adsp_data_r );
+WRITE16_HANDLER( hd68k_adsp_data_w );
+
+READ16_HANDLER( hd68k_adsp_buffer_r );
+WRITE16_HANDLER( hd68k_adsp_buffer_w );
+
+WRITE16_HANDLER( hd68k_adsp_control_w );
+WRITE16_HANDLER( hd68k_adsp_irq_clear_w );
+READ16_HANDLER( hd68k_adsp_irq_state_r );
+
+READ16_HANDLER( hdadsp_special_r );
+WRITE16_HANDLER( hdadsp_special_w );
+
+/* DS III board */
+WRITE16_HANDLER( hd68k_ds3_control_w );
+READ16_HANDLER( hd68k_ds3_girq_state_r );
+READ16_HANDLER( hd68k_ds3_sirq_state_r );
+READ16_HANDLER( hd68k_ds3_gdata_r );
+WRITE16_HANDLER( hd68k_ds3_gdata_w );
+READ16_HANDLER( hd68k_ds3_sdata_r );
+WRITE16_HANDLER( hd68k_ds3_sdata_w );
+
+READ16_HANDLER( hdds3_special_r );
+WRITE16_HANDLER( hdds3_special_w );
+READ16_HANDLER( hdds3_control_r );
+WRITE16_HANDLER( hdds3_control_w );
+
+READ16_HANDLER( hd68k_ds3_program_r );
+WRITE16_HANDLER( hd68k_ds3_program_w );
+
+/* DSK board */
+void hddsk_update_pif(UINT32 pins);
+WRITE16_HANDLER( hd68k_dsk_control_w );
+READ16_HANDLER( hd68k_dsk_ram_r );
+WRITE16_HANDLER( hd68k_dsk_ram_w );
+READ16_HANDLER( hd68k_dsk_zram_r );
+WRITE16_HANDLER( hd68k_dsk_zram_w );
+READ16_HANDLER( hd68k_dsk_small_rom_r );
+READ16_HANDLER( hd68k_dsk_rom_r );
+WRITE16_HANDLER( hd68k_dsk_dsp32_w );
+READ16_HANDLER( hd68k_dsk_dsp32_r );
+WRITE32_HANDLER( rddsp32_sync0_w );
+WRITE32_HANDLER( rddsp32_sync1_w );
+
+/* DSPCOM board */
+WRITE16_HANDLER( hddspcom_control_w );
+
+WRITE16_HANDLER( rd68k_slapstic_w );
+READ16_HANDLER( rd68k_slapstic_r );
+
+/* Game-specific protection */
+WRITE16_HANDLER( st68k_sloop_w );
+READ16_HANDLER( st68k_sloop_r );
+READ16_HANDLER( st68k_sloop_alt_r );
+WRITE16_HANDLER( st68k_protosloop_w );
+READ16_HANDLER( st68k_protosloop_r );
+
+/* GSP optimizations */
+READ16_HANDLER( hdgsp_speedup_r );
+WRITE16_HANDLER( hdgsp_speedup1_w );
+WRITE16_HANDLER( hdgsp_speedup2_w );
+READ16_HANDLER( rdgsp_speedup1_r );
+WRITE16_HANDLER( rdgsp_speedup1_w );
+
+/* MSP optimizations */
+READ16_HANDLER( hdmsp_speedup_r );
+WRITE16_HANDLER( hdmsp_speedup_w );
+READ16_HANDLER( stmsp_speedup_r );
+
+/* ADSP optimizations */
+READ16_HANDLER( hdadsp_speedup_r );
+READ16_HANDLER( hdds3_speedup_r );
+
+
+/*----------- defined in audio/harddriv.c -----------*/
+
+void hdsnd_init(void);
+
+extern UINT16 *hdsnddsp_ram;
+
+READ16_HANDLER( hd68k_snd_data_r );
+READ16_HANDLER( hd68k_snd_status_r );
+WRITE16_HANDLER( hd68k_snd_data_w );
+WRITE16_HANDLER( hd68k_snd_reset_w );
+
+READ16_HANDLER( hdsnd68k_data_r );
+WRITE16_HANDLER( hdsnd68k_data_w );
+
+READ16_HANDLER( hdsnd68k_switches_r );
+READ16_HANDLER( hdsnd68k_320port_r );
+READ16_HANDLER( hdsnd68k_status_r );
+
+WRITE16_HANDLER( hdsnd68k_latches_w );
+WRITE16_HANDLER( hdsnd68k_speech_w );
+WRITE16_HANDLER( hdsnd68k_irqclr_w );
+
+READ16_HANDLER( hdsnd68k_320ram_r );
+WRITE16_HANDLER( hdsnd68k_320ram_w );
+READ16_HANDLER( hdsnd68k_320ports_r );
+WRITE16_HANDLER( hdsnd68k_320ports_w );
+READ16_HANDLER( hdsnd68k_320com_r );
+WRITE16_HANDLER( hdsnd68k_320com_w );
+
+READ16_HANDLER( hdsnddsp_get_bio );
+
+WRITE16_HANDLER( hdsnddsp_dac_w );
+WRITE16_HANDLER( hdsnddsp_comport_w );
+WRITE16_HANDLER( hdsnddsp_mute_w );
+WRITE16_HANDLER( hdsnddsp_gen68kirq_w );
+WRITE16_HANDLER( hdsnddsp_soundaddr_w );
+
+READ16_HANDLER( hdsnddsp_rom_r );
+READ16_HANDLER( hdsnddsp_comram_r );
+READ16_HANDLER( hdsnddsp_compare_r );
+
+
+/*----------- defined in video/harddriv.c -----------*/
+
+extern UINT8 hdgsp_multisync;
+extern UINT8 *hdgsp_vram;
+extern UINT16 *hdgsp_control_lo;
+extern UINT16 *hdgsp_control_hi;
+extern UINT16 *hdgsp_paletteram_lo;
+extern UINT16 *hdgsp_paletteram_hi;
+extern size_t hdgsp_vram_size;
+
+VIDEO_START( harddriv );
+void hdgsp_write_to_shiftreg(UINT32 address, UINT16 *shiftreg);
+void hdgsp_read_from_shiftreg(UINT32 address, UINT16 *shiftreg);
+
+READ16_HANDLER( hdgsp_control_lo_r );
+WRITE16_HANDLER( hdgsp_control_lo_w );
+READ16_HANDLER( hdgsp_control_hi_r );
+WRITE16_HANDLER( hdgsp_control_hi_w );
+
+READ16_HANDLER( hdgsp_vram_2bpp_r );
+WRITE16_HANDLER( hdgsp_vram_1bpp_w );
+WRITE16_HANDLER( hdgsp_vram_2bpp_w );
+
+READ16_HANDLER( hdgsp_paletteram_lo_r );
+WRITE16_HANDLER( hdgsp_paletteram_lo_w );
+READ16_HANDLER( hdgsp_paletteram_hi_r );
+WRITE16_HANDLER( hdgsp_paletteram_hi_w );
+
+void harddriv_scanline_driver(running_machine *machine, int screen, mame_bitmap *bitmap, int scanline, const tms34010_display_params *params);
+void harddriv_scanline_multisync(running_machine *machine, int screen, mame_bitmap *bitmap, int scanline, const tms34010_display_params *params);
diff --git a/src/mame/includes/hitme.h b/src/mame/includes/hitme.h
new file mode 100644
index 00000000000..d9548ec63a7
--- /dev/null
+++ b/src/mame/includes/hitme.h
@@ -0,0 +1,18 @@
+/*************************************************************************
+
+ Hitme hardware
+
+*************************************************************************/
+
+#include "sound/discrete.h"
+
+/* Discrete Sound Input Nodes */
+#define HITME_DOWNCOUNT_VAL NODE_01
+#define HITME_OUT0 NODE_02
+#define HITME_ENABLE_VAL NODE_03
+#define HITME_OUT1 NODE_04
+
+
+/*----------- defined in audio/hitme.c -----------*/
+
+DISCRETE_SOUND_EXTERN( hitme );
diff --git a/src/mame/includes/homedata.h b/src/mame/includes/homedata.h
new file mode 100644
index 00000000000..490cc65b1a3
--- /dev/null
+++ b/src/mame/includes/homedata.h
@@ -0,0 +1,32 @@
+/*----------- defined in video/homedata.c -----------*/
+
+extern UINT8 *homedata_vreg;
+extern int homedata_visible_page;
+extern int homedata_priority;
+extern UINT8 reikaids_which;
+
+WRITE8_HANDLER( mrokumei_videoram_w );
+WRITE8_HANDLER( reikaids_videoram_w );
+WRITE8_HANDLER( pteacher_videoram_w );
+WRITE8_HANDLER( reikaids_gfx_bank_w );
+WRITE8_HANDLER( pteacher_gfx_bank_w );
+WRITE8_HANDLER( homedata_blitter_param_w );
+WRITE8_HANDLER( mrokumei_blitter_bank_w );
+WRITE8_HANDLER( reikaids_blitter_bank_w );
+WRITE8_HANDLER( pteacher_blitter_bank_w );
+WRITE8_HANDLER( mrokumei_blitter_start_w );
+WRITE8_HANDLER( reikaids_blitter_start_w );
+WRITE8_HANDLER( pteacher_blitter_start_w );
+
+PALETTE_INIT( mrokumei );
+PALETTE_INIT( reikaids );
+PALETTE_INIT( pteacher );
+
+VIDEO_START( mrokumei );
+VIDEO_START( reikaids );
+VIDEO_START( pteacher );
+VIDEO_START( lemnangl );
+VIDEO_UPDATE( mrokumei );
+VIDEO_UPDATE( reikaids );
+VIDEO_UPDATE( pteacher );
+VIDEO_EOF( homedata );
diff --git a/src/mame/includes/iqblock.h b/src/mame/includes/iqblock.h
new file mode 100644
index 00000000000..8298d6313fe
--- /dev/null
+++ b/src/mame/includes/iqblock.h
@@ -0,0 +1,13 @@
+/*----------- defined in video/iqblock.c -----------*/
+
+extern UINT8 *iqblock_bgvideoram;
+extern UINT8 *iqblock_fgvideoram;
+extern int iqblock_videoenable;
+extern int iqblock_video_type;
+WRITE8_HANDLER( iqblock_fgvideoram_w );
+WRITE8_HANDLER( iqblock_bgvideoram_w );
+READ8_HANDLER( iqblock_bgvideoram_r );
+WRITE8_HANDLER( iqblock_fgscroll_w );
+
+VIDEO_START( iqblock );
+VIDEO_UPDATE( iqblock );
diff --git a/src/mame/includes/irobot.h b/src/mame/includes/irobot.h
new file mode 100644
index 00000000000..882f8579ae5
--- /dev/null
+++ b/src/mame/includes/irobot.h
@@ -0,0 +1,36 @@
+/*************************************************************************
+
+ Atari I, Robot hardware
+
+*************************************************************************/
+
+/*----------- defined in machine/irobot.c -----------*/
+
+extern UINT8 irobot_vg_clear;
+extern UINT8 irobot_bufsel;
+extern UINT8 irobot_alphamap;
+extern UINT8 *irobot_combase;
+
+DRIVER_INIT( irobot );
+MACHINE_RESET( irobot );
+
+READ8_HANDLER( irobot_status_r );
+WRITE8_HANDLER( irobot_statwr_w );
+WRITE8_HANDLER( irobot_out0_w );
+WRITE8_HANDLER( irobot_rom_banksel_w );
+READ8_HANDLER( irobot_control_r );
+WRITE8_HANDLER( irobot_control_w );
+READ8_HANDLER( irobot_sharedmem_r );
+WRITE8_HANDLER( irobot_sharedmem_w );
+
+
+/*----------- defined in video/irobot.c -----------*/
+
+PALETTE_INIT( irobot );
+VIDEO_START( irobot );
+VIDEO_UPDATE( irobot );
+
+WRITE8_HANDLER( irobot_paletteram_w );
+
+void irobot_poly_clear(void);
+void irobot_run_video(void);
diff --git a/src/mame/includes/itech32.h b/src/mame/includes/itech32.h
new file mode 100644
index 00000000000..b84f50ec001
--- /dev/null
+++ b/src/mame/includes/itech32.h
@@ -0,0 +1,50 @@
+/*************************************************************************
+
+ Incredible Technologies/Strata system
+ (8-bit blitter variant)
+
+**************************************************************************/
+
+/*----------- defined in drivers/itech32.c -----------*/
+
+void itech32_update_interrupts(int vint, int xint, int qint);
+
+
+/*----------- defined in video/itech32.c -----------*/
+
+extern UINT16 *itech32_video;
+extern UINT32 *drivedge_zbuf_control;
+extern UINT8 itech32_planes;
+extern UINT16 itech32_vram_height;
+
+VIDEO_START( itech32 );
+
+WRITE16_HANDLER( timekill_colora_w );
+WRITE16_HANDLER( timekill_colorbc_w );
+WRITE16_HANDLER( timekill_intensity_w );
+
+WRITE16_HANDLER( bloodstm_color1_w );
+WRITE16_HANDLER( bloodstm_color2_w );
+WRITE16_HANDLER( bloodstm_plane_w );
+
+WRITE32_HANDLER( drivedge_color0_w );
+
+WRITE32_HANDLER( itech020_color1_w );
+WRITE32_HANDLER( itech020_color2_w );
+WRITE32_HANDLER( itech020_plane_w );
+
+WRITE16_HANDLER( timekill_paletteram_w );
+WRITE16_HANDLER( bloodstm_paletteram_w );
+WRITE32_HANDLER( drivedge_paletteram_w );
+WRITE32_HANDLER( itech020_paletteram_w );
+
+WRITE16_HANDLER( itech32_video_w );
+READ16_HANDLER( itech32_video_r );
+
+WRITE16_HANDLER( bloodstm_video_w );
+READ16_HANDLER( bloodstm_video_r );
+WRITE32_HANDLER( itech020_video_w );
+READ32_HANDLER( itech020_video_r );
+WRITE32_HANDLER( drivedge_zbuf_control_w );
+
+VIDEO_UPDATE( itech32 );
diff --git a/src/mame/includes/itech8.h b/src/mame/includes/itech8.h
new file mode 100644
index 00000000000..a376071bddd
--- /dev/null
+++ b/src/mame/includes/itech8.h
@@ -0,0 +1,44 @@
+/*************************************************************************
+
+ Incredible Technologies/Strata system
+ (8-bit blitter variant)
+
+**************************************************************************/
+
+/*----------- defined in drivers/itech8.c -----------*/
+
+void itech8_update_interrupts(int periodic, int tms34061, int blitter);
+
+
+/*----------- defined in machine/slikshot.c -----------*/
+
+READ8_HANDLER( slikz80_port_r );
+WRITE8_HANDLER( slikz80_port_w );
+
+READ8_HANDLER( slikshot_z80_r );
+READ8_HANDLER( slikshot_z80_control_r );
+WRITE8_HANDLER( slikshot_z80_control_w );
+
+void slikshot_set_crosshair_range(int miny, int maxy);
+VIDEO_UPDATE( slikshot );
+
+
+/*----------- defined in video/itech8.c -----------*/
+
+extern UINT8 *itech8_grom_bank;
+
+VIDEO_START( itech8 );
+
+WRITE8_HANDLER( itech8_page_w );
+
+WRITE8_HANDLER( itech8_palette_w );
+
+READ8_HANDLER( itech8_blitter_r );
+WRITE8_HANDLER( itech8_blitter_w );
+
+WRITE8_HANDLER( itech8_tms34061_w );
+READ8_HANDLER( itech8_tms34061_r );
+
+VIDEO_UPDATE( itech8_2layer );
+VIDEO_UPDATE( itech8_2page );
+VIDEO_UPDATE( itech8_2page_large );
diff --git a/src/mame/includes/jaguar.h b/src/mame/includes/jaguar.h
new file mode 100644
index 00000000000..35669213c19
--- /dev/null
+++ b/src/mame/includes/jaguar.h
@@ -0,0 +1,65 @@
+/*************************************************************************
+
+ Atari Jaguar hardware
+
+*************************************************************************/
+
+#ifndef ENABLE_SPEEDUP_HACKS
+#ifndef MESS
+#define ENABLE_SPEEDUP_HACKS 1
+#else
+#define ENABLE_SPEEDUP_HACKS 0
+#endif /* MESS */
+#endif
+
+
+/*----------- defined in drivers/cojag.c -----------*/
+
+extern UINT8 cojag_is_r3000;
+
+extern UINT32 *jaguar_shared_ram;
+extern UINT32 *jaguar_gpu_ram;
+extern UINT32 *jaguar_gpu_clut;
+extern UINT32 *jaguar_dsp_ram;
+extern UINT32 *jaguar_wave_rom;
+
+
+/*----------- defined in audio/jaguar.c -----------*/
+
+void jaguar_dsp_suspend(void);
+void jaguar_dsp_resume(void);
+
+void cojag_sound_init(void);
+void cojag_sound_reset(void);
+
+void jaguar_external_int(int state);
+
+READ16_HANDLER( jaguar_jerry_regs_r );
+WRITE16_HANDLER( jaguar_jerry_regs_w );
+READ32_HANDLER( jaguar_jerry_regs32_r );
+WRITE32_HANDLER( jaguar_jerry_regs32_w );
+
+READ32_HANDLER( jaguar_serial_r );
+WRITE32_HANDLER( jaguar_serial_w );
+
+
+/*----------- defined in video/jaguar.c -----------*/
+
+void jaguar_gpu_suspend(void);
+void jaguar_gpu_resume(void);
+
+void jaguar_gpu_cpu_int(void);
+void jaguar_dsp_cpu_int(void);
+
+READ32_HANDLER( jaguar_blitter_r );
+WRITE32_HANDLER( jaguar_blitter_w );
+
+READ16_HANDLER( jaguar_tom_regs_r );
+WRITE16_HANDLER( jaguar_tom_regs_w );
+READ32_HANDLER( jaguar_tom_regs32_r );
+WRITE32_HANDLER( jaguar_tom_regs32_w );
+
+READ32_HANDLER( cojag_gun_input_r );
+
+VIDEO_START( cojag );
+VIDEO_UPDATE( cojag );
diff --git a/src/mame/includes/jedi.h b/src/mame/includes/jedi.h
new file mode 100644
index 00000000000..7471be46943
--- /dev/null
+++ b/src/mame/includes/jedi.h
@@ -0,0 +1,22 @@
+/*************************************************************************
+
+ Atari Return of the Jedi hardware
+
+*************************************************************************/
+
+/*----------- defined in video/jedi.c -----------*/
+
+extern UINT8 *jedi_PIXIRAM;
+extern UINT8 *jedi_backgroundram;
+extern size_t jedi_backgroundram_size;
+
+VIDEO_START( jedi );
+VIDEO_UPDATE( jedi );
+
+WRITE8_HANDLER( jedi_alpha_banksel_w );
+WRITE8_HANDLER( jedi_paletteram_w );
+WRITE8_HANDLER( jedi_backgroundram_w );
+WRITE8_HANDLER( jedi_vscroll_w );
+WRITE8_HANDLER( jedi_hscroll_w );
+WRITE8_HANDLER( jedi_video_off_w );
+WRITE8_HANDLER( jedi_PIXIRAM_w );
diff --git a/src/mame/includes/jpmimpct.h b/src/mame/includes/jpmimpct.h
new file mode 100644
index 00000000000..e93352cd2bb
--- /dev/null
+++ b/src/mame/includes/jpmimpct.h
@@ -0,0 +1,18 @@
+/***************************************************************************
+
+ JPM IMPACT with Video hardware
+
+****************************************************************************/
+
+/*----------- defined in video/jpmimpct.c -----------*/
+
+extern UINT16 *tms_vram;
+
+READ16_HANDLER( bt477_r );
+WRITE16_HANDLER( bt477_w );
+
+void jpmimpct_to_shiftreg(UINT32 address, UINT16 *shiftreg);
+void jpmimpct_from_shiftreg(UINT32 address, UINT16 *shiftreg);
+void jpmimpct_scanline_update(running_machine *machine, int screen, mame_bitmap *bitmap, int scanline, const tms34010_display_params *params);
+
+VIDEO_START( jpmimpct );
diff --git a/src/mame/includes/kaneko16.h b/src/mame/includes/kaneko16.h
new file mode 100644
index 00000000000..cc8c7d8db15
--- /dev/null
+++ b/src/mame/includes/kaneko16.h
@@ -0,0 +1,135 @@
+/***************************************************************************
+
+ -= Kaneko 16 Bit Games =-
+
+***************************************************************************/
+
+/*----------- defined in machine/kaneko16.c -----------*/
+
+extern UINT16 *kaneko16_mcu_ram; /* for calc3 and toybox */
+
+READ16_HANDLER( galpanib_calc_r );
+WRITE16_HANDLER( galpanib_calc_w );
+
+READ16_HANDLER( bloodwar_calc_r );
+WRITE16_HANDLER( bloodwar_calc_w );
+
+void calc3_mcu_init(void);
+WRITE16_HANDLER( calc3_mcu_ram_w );
+WRITE16_HANDLER( calc3_mcu_com0_w );
+WRITE16_HANDLER( calc3_mcu_com1_w );
+WRITE16_HANDLER( calc3_mcu_com2_w );
+WRITE16_HANDLER( calc3_mcu_com3_w );
+
+void toybox_mcu_init(void);
+WRITE16_HANDLER( toybox_mcu_com0_w );
+WRITE16_HANDLER( toybox_mcu_com1_w );
+WRITE16_HANDLER( toybox_mcu_com2_w );
+WRITE16_HANDLER( toybox_mcu_com3_w );
+READ16_HANDLER( toybox_mcu_status_r );
+
+
+
+/*----------- defined in drivers/kaneko16.c -----------*/
+
+MACHINE_RESET( kaneko16 );
+
+/*----------- defined in video/kaneko16.c -----------*/
+
+WRITE16_HANDLER( kaneko16_display_enable );
+
+/* Tile Layers: */
+
+extern UINT16 *kaneko16_vram_0, *kaneko16_vram_1, *kaneko16_layers_0_regs;
+extern UINT16 *kaneko16_vscroll_0, *kaneko16_vscroll_1;
+extern UINT16 *kaneko16_vram_2, *kaneko16_vram_3, *kaneko16_layers_1_regs;
+extern UINT16 *kaneko16_vscroll_2, *kaneko16_vscroll_3;
+
+WRITE16_HANDLER( kaneko16_vram_0_w );
+WRITE16_HANDLER( kaneko16_vram_1_w );
+WRITE16_HANDLER( kaneko16_vram_2_w );
+WRITE16_HANDLER( kaneko16_vram_3_w );
+
+WRITE16_HANDLER( kaneko16_layers_0_regs_w );
+WRITE16_HANDLER( kaneko16_layers_1_regs_w );
+
+
+/* Sprites: */
+
+extern int kaneko16_sprite_type;
+extern UINT16 kaneko16_sprite_xoffs, kaneko16_sprite_flipx;
+extern UINT16 kaneko16_sprite_yoffs, kaneko16_sprite_flipy;
+extern UINT16 *kaneko16_sprites_regs;
+
+READ16_HANDLER ( kaneko16_sprites_regs_r );
+WRITE16_HANDLER( kaneko16_sprites_regs_w );
+
+void kaneko16_draw_sprites(running_machine *machine, mame_bitmap *bitmap, const rectangle *cliprect);
+
+/* Pixel Layer: */
+
+extern UINT16 *kaneko16_bg15_select, *kaneko16_bg15_reg;
+
+READ16_HANDLER ( kaneko16_bg15_select_r );
+WRITE16_HANDLER( kaneko16_bg15_select_w );
+
+READ16_HANDLER ( kaneko16_bg15_reg_r );
+WRITE16_HANDLER( kaneko16_bg15_reg_w );
+
+PALETTE_INIT( berlwall );
+
+
+/* Priorities: */
+
+typedef struct
+{
+ int VIEW2_2_pri;
+ int sprite[4];
+} kaneko16_priority_t;
+
+extern kaneko16_priority_t kaneko16_priority;
+
+
+/* Machine */
+
+VIDEO_START( kaneko16_sprites );
+VIDEO_START( kaneko16_1xVIEW2 );
+VIDEO_START( kaneko16_2xVIEW2 );
+VIDEO_START( berlwall );
+VIDEO_START( sandscrp_1xVIEW2 );
+
+
+VIDEO_UPDATE( kaneko16 );
+VIDEO_UPDATE( sandscrp );
+VIDEO_UPDATE( berlwall );
+
+
+/*----------- defined in drivers/galpani2.c -----------*/
+
+void galpani2_mcu_run(void);
+
+/*----------- defined in video/galpani2.c -----------*/
+
+extern UINT16 *galpani2_bg8_0, *galpani2_bg8_1;
+extern UINT16 *galpani2_palette_0, *galpani2_palette_1;
+extern UINT16 *galpani2_bg8_regs_0, *galpani2_bg8_regs_1;
+extern UINT16 *galpani2_bg8_0_scrollx, *galpani2_bg8_1_scrollx;
+extern UINT16 *galpani2_bg8_0_scrolly, *galpani2_bg8_1_scrolly;
+
+extern UINT16 *galpani2_bg15;
+
+PALETTE_INIT( galpani2 );
+VIDEO_START( galpani2 );
+VIDEO_UPDATE( galpani2 );
+
+WRITE16_HANDLER( galpani2_palette_0_w );
+WRITE16_HANDLER( galpani2_palette_1_w );
+
+READ16_HANDLER ( galpani2_bg8_regs_0_r );
+READ16_HANDLER ( galpani2_bg8_regs_1_r );
+WRITE16_HANDLER( galpani2_bg8_regs_0_w );
+WRITE16_HANDLER( galpani2_bg8_regs_1_w );
+WRITE16_HANDLER( galpani2_bg8_0_w );
+WRITE16_HANDLER( galpani2_bg8_1_w );
+
+WRITE16_HANDLER( galpani2_bg15_w );
diff --git a/src/mame/includes/kangaroo.h b/src/mame/includes/kangaroo.h
new file mode 100644
index 00000000000..5311830f4e1
--- /dev/null
+++ b/src/mame/includes/kangaroo.h
@@ -0,0 +1,24 @@
+/***************************************************************************
+
+ Sun Electronics Kangaroo hardware
+
+ driver by Ville Laitinen
+
+***************************************************************************/
+
+/*----------- defined in video/kangaroo.c -----------*/
+
+extern UINT8 *kangaroo_video_control;
+extern UINT8 *kangaroo_bank_select;
+extern UINT8 *kangaroo_blitter;
+extern UINT8 *kangaroo_scroll;
+
+PALETTE_INIT( kangaroo );
+VIDEO_START( kangaroo );
+VIDEO_UPDATE( kangaroo );
+
+WRITE8_HANDLER( kangaroo_blitter_w );
+WRITE8_HANDLER( kangaroo_videoram_w );
+WRITE8_HANDLER( kangaroo_video_control_w );
+WRITE8_HANDLER( kangaroo_bank_select_w );
+WRITE8_HANDLER( kangaroo_color_mask_w );
diff --git a/src/mame/includes/klax.h b/src/mame/includes/klax.h
new file mode 100644
index 00000000000..489f4ade753
--- /dev/null
+++ b/src/mame/includes/klax.h
@@ -0,0 +1,12 @@
+/*************************************************************************
+
+ Atari Klax hardware
+
+*************************************************************************/
+
+/*----------- defined in video/klax.c -----------*/
+
+WRITE16_HANDLER( klax_latch_w );
+
+VIDEO_START( klax );
+VIDEO_UPDATE( klax );
diff --git a/src/mame/includes/kyugo.h b/src/mame/includes/kyugo.h
new file mode 100644
index 00000000000..5b84349c46d
--- /dev/null
+++ b/src/mame/includes/kyugo.h
@@ -0,0 +1,33 @@
+/***************************************************************************
+
+ Kyugo hardware games
+
+***************************************************************************/
+
+/*----------- defined in drivers/kyugo.c -----------*/
+
+MACHINE_RESET( kyugo );
+
+WRITE8_HANDLER( kyugo_sub_cpu_control_w );
+
+/*----------- defined in video/kyugo.c -----------*/
+
+extern UINT8 *kyugo_fgvideoram;
+extern UINT8 *kyugo_bgvideoram;
+extern UINT8 *kyugo_bgattribram;
+extern UINT8 *kyugo_spriteram_1;
+extern UINT8 *kyugo_spriteram_2;
+
+READ8_HANDLER( kyugo_spriteram_2_r );
+
+WRITE8_HANDLER( kyugo_fgvideoram_w );
+WRITE8_HANDLER( kyugo_bgvideoram_w );
+WRITE8_HANDLER( kyugo_bgattribram_w );
+WRITE8_HANDLER( kyugo_scroll_x_lo_w );
+WRITE8_HANDLER( kyugo_gfxctrl_w );
+WRITE8_HANDLER( kyugo_scroll_y_w );
+WRITE8_HANDLER( kyugo_flipscreen_w );
+
+VIDEO_START( kyugo );
+
+VIDEO_UPDATE( kyugo );
diff --git a/src/mame/includes/lasso.h b/src/mame/includes/lasso.h
new file mode 100644
index 00000000000..40290f267a9
--- /dev/null
+++ b/src/mame/includes/lasso.h
@@ -0,0 +1,33 @@
+/***************************************************************************
+
+ Lasso and similar hardware
+
+***************************************************************************/
+
+/*----------- defined in video/lasso.c -----------*/
+
+extern UINT8 *lasso_videoram;
+extern UINT8 *lasso_colorram;
+extern UINT8 *lasso_spriteram;
+extern size_t lasso_spriteram_size;
+extern UINT8 *lasso_bitmap_ram;
+extern UINT8 *wwjgtin_track_scroll;
+
+WRITE8_HANDLER( lasso_videoram_w );
+WRITE8_HANDLER( lasso_colorram_w );
+WRITE8_HANDLER( lasso_backcolor_w );
+WRITE8_HANDLER( lasso_video_control_w );
+WRITE8_HANDLER( wwjgtin_video_control_w );
+WRITE8_HANDLER( pinbo_video_control_w );
+WRITE8_HANDLER( wwjgtin_lastcolor_w );
+
+PALETTE_INIT( lasso );
+PALETTE_INIT( wwjgtin );
+
+VIDEO_START( lasso );
+VIDEO_START( wwjgtin );
+VIDEO_START( pinbo );
+
+VIDEO_UPDATE( lasso );
+VIDEO_UPDATE( chameleo );
+VIDEO_UPDATE( wwjgtin );
diff --git a/src/mame/includes/lazercmd.h b/src/mame/includes/lazercmd.h
new file mode 100644
index 00000000000..3f2f610ffec
--- /dev/null
+++ b/src/mame/includes/lazercmd.h
@@ -0,0 +1,24 @@
+#define HORZ_RES 32
+#define VERT_RES 24
+#define HORZ_CHR 8
+#define VERT_CHR 10
+#define VERT_FNT 8
+
+#define HORZ_BAR 0x40
+#define VERT_BAR 0x80
+
+#define MARKER_ACTIVE_L 0x03
+#define MARKER_ACTIVE_R 0x04
+#define MARKER_VERT_R 0x0a
+#define MARKER_HORZ_L 0x0b
+#define MARKER_VERT_L 0x0c
+#define MARKER_HORZ_R 0x0d
+
+#define MARKER_HORZ_ADJ -1
+#define MARKER_VERT_ADJ -10
+
+/*----------- defined in video/lazercmd.c -----------*/
+
+extern int marker_x, marker_y;
+
+VIDEO_UPDATE( lazercmd );
diff --git a/src/mame/includes/leland.h b/src/mame/includes/leland.h
new file mode 100644
index 00000000000..d639481a4dc
--- /dev/null
+++ b/src/mame/includes/leland.h
@@ -0,0 +1,150 @@
+/*************************************************************************
+
+ Cinemat/Leland driver
+
+*************************************************************************/
+
+#include "sound/custom.h"
+
+#define LELAND_BATTERY_RAM_SIZE 0x4000
+#define ATAXX_EXTRA_TRAM_SIZE 0x800
+
+
+/*----------- defined in machine/leland.c -----------*/
+
+#define SERIAL_TYPE_NONE 0
+#define SERIAL_TYPE_ADD 1
+#define SERIAL_TYPE_ADD_XOR 2
+#define SERIAL_TYPE_ENCRYPT 3
+#define SERIAL_TYPE_ENCRYPT_XOR 4
+
+extern UINT8 leland_dac_control;
+extern void (*leland_update_master_bank)(void);
+
+READ8_HANDLER( cerberus_dial_1_r );
+READ8_HANDLER( cerberus_dial_2_r );
+
+extern UINT8 *alleymas_kludge_mem;
+WRITE8_HANDLER( alleymas_joystick_kludge );
+
+READ8_HANDLER( dangerz_input_y_r );
+READ8_HANDLER( dangerz_input_x_r );
+READ8_HANDLER( dangerz_input_upper_r );
+
+READ8_HANDLER( redline_pedal_1_r );
+READ8_HANDLER( redline_pedal_2_r );
+READ8_HANDLER( redline_wheel_1_r );
+READ8_HANDLER( redline_wheel_2_r );
+
+READ8_HANDLER( offroad_wheel_1_r );
+READ8_HANDLER( offroad_wheel_2_r );
+READ8_HANDLER( offroad_wheel_3_r );
+
+READ8_HANDLER( ataxx_trackball_r );
+
+READ8_HANDLER( indyheat_wheel_r );
+READ8_HANDLER( indyheat_analog_r );
+WRITE8_HANDLER( indyheat_analog_w );
+
+MACHINE_START( leland );
+MACHINE_RESET( leland );
+MACHINE_START( ataxx );
+MACHINE_RESET( ataxx );
+
+INTERRUPT_GEN( leland_master_interrupt );
+
+WRITE8_HANDLER( leland_master_alt_bankswitch_w );
+void cerberus_bankswitch(void);
+void mayhem_bankswitch(void);
+void dangerz_bankswitch(void);
+void basebal2_bankswitch(void);
+void redline_bankswitch(void);
+void viper_bankswitch(void);
+void offroad_bankswitch(void);
+void ataxx_bankswitch(void);
+
+void leland_init_eeprom(UINT8 default_val, const UINT16 *data, UINT8 serial_offset, UINT8 serial_type);
+void ataxx_init_eeprom(UINT8 default_val, const UINT16 *data, UINT8 serial_offset);
+
+READ8_HANDLER( ataxx_eeprom_r );
+WRITE8_HANDLER( ataxx_eeprom_w );
+
+WRITE8_HANDLER( leland_battery_ram_w );
+WRITE8_HANDLER( ataxx_battery_ram_w );
+NVRAM_HANDLER( leland );
+NVRAM_HANDLER( ataxx );
+
+READ8_HANDLER( leland_master_analog_key_r );
+WRITE8_HANDLER( leland_master_analog_key_w );
+
+READ8_HANDLER( leland_master_input_r );
+WRITE8_HANDLER( leland_master_output_w );
+READ8_HANDLER( ataxx_master_input_r );
+WRITE8_HANDLER( ataxx_master_output_w );
+
+WRITE8_HANDLER( leland_gated_paletteram_w );
+READ8_HANDLER( leland_gated_paletteram_r );
+WRITE8_HANDLER( ataxx_paletteram_and_misc_w );
+READ8_HANDLER( ataxx_paletteram_and_misc_r );
+
+READ8_HANDLER( leland_sound_port_r );
+WRITE8_HANDLER( leland_sound_port_w );
+
+WRITE8_HANDLER( leland_slave_small_banksw_w );
+WRITE8_HANDLER( leland_slave_large_banksw_w );
+WRITE8_HANDLER( ataxx_slave_banksw_w );
+
+READ8_HANDLER( leland_raster_r );
+
+void leland_rotate_memory(int cpunum);
+
+
+/*----------- defined in audio/leland.c -----------*/
+
+void *leland_sh_start(int clock, const struct CustomSound_interface *config);
+
+void *leland_80186_sh_start(int clock, const struct CustomSound_interface *config);
+void *redline_80186_sh_start(int clock, const struct CustomSound_interface *config);
+void leland_dac_update(int dacnum, UINT8 sample);
+
+void leland_80186_sound_init(void);
+
+READ8_HANDLER( leland_80186_response_r );
+
+WRITE8_HANDLER( leland_80186_control_w );
+WRITE8_HANDLER( leland_80186_command_lo_w );
+WRITE8_HANDLER( leland_80186_command_hi_w );
+WRITE8_HANDLER( ataxx_80186_control_w );
+
+ADDRESS_MAP_EXTERN(leland_80186_map_program);
+ADDRESS_MAP_EXTERN(leland_80186_map_io);
+ADDRESS_MAP_EXTERN(redline_80186_map_io);
+ADDRESS_MAP_EXTERN(ataxx_80186_map_io);
+
+
+/*----------- defined in video/leland.c -----------*/
+
+extern UINT8 *ataxx_qram;
+extern UINT8 leland_last_scanline_int;
+
+VIDEO_START( leland );
+VIDEO_START( ataxx );
+
+WRITE8_HANDLER( leland_gfx_port_w );
+
+WRITE8_HANDLER( leland_master_video_addr_w );
+WRITE8_HANDLER( leland_mvram_port_w );
+READ8_HANDLER( leland_mvram_port_r );
+
+WRITE8_HANDLER( leland_slave_video_addr_w );
+WRITE8_HANDLER( leland_svram_port_w );
+READ8_HANDLER( leland_svram_port_r );
+
+WRITE8_HANDLER( ataxx_mvram_port_w );
+WRITE8_HANDLER( ataxx_svram_port_w );
+READ8_HANDLER( ataxx_mvram_port_r );
+READ8_HANDLER( ataxx_svram_port_r );
+
+VIDEO_EOF( leland );
+VIDEO_UPDATE( leland );
+VIDEO_UPDATE( ataxx );
diff --git a/src/mame/includes/lemmings.h b/src/mame/includes/lemmings.h
new file mode 100644
index 00000000000..9b2274d2087
--- /dev/null
+++ b/src/mame/includes/lemmings.h
@@ -0,0 +1,10 @@
+/*----------- defined in video/lemmings.c -----------*/
+
+VIDEO_START( lemmings );
+VIDEO_EOF( lemmings );
+VIDEO_UPDATE( lemmings );
+WRITE16_HANDLER( lemmings_pixel_0_w );
+WRITE16_HANDLER( lemmings_pixel_1_w );
+WRITE16_HANDLER( lemmings_vram_w );
+
+extern UINT16 *lemmings_pixel_0_data,*lemmings_pixel_1_data,*lemmings_vram_data,*lemmings_control_data;
diff --git a/src/mame/includes/lethalj.h b/src/mame/includes/lethalj.h
new file mode 100644
index 00000000000..15f48d73072
--- /dev/null
+++ b/src/mame/includes/lethalj.h
@@ -0,0 +1,15 @@
+/*************************************************************************
+
+ The Game Room Lethal Justice hardware
+
+**************************************************************************/
+
+/*----------- defined in video/lethalj.c -----------*/
+
+READ16_HANDLER( lethalj_gun_r );
+
+VIDEO_START( lethalj );
+
+WRITE16_HANDLER( lethalj_blitter_w );
+
+void lethalj_scanline_update(running_machine *machine, int screen, mame_bitmap *bitmap, int scanline, const tms34010_display_params *params);
diff --git a/src/mame/includes/liberatr.h b/src/mame/includes/liberatr.h
new file mode 100644
index 00000000000..5ab6c498300
--- /dev/null
+++ b/src/mame/includes/liberatr.h
@@ -0,0 +1,22 @@
+/*************************************************************************
+
+ Atari Liberator hardware
+
+*************************************************************************/
+
+/*----------- defined in video/liberatr.c -----------*/
+
+extern UINT8 *liberatr_base_ram;
+extern UINT8 *liberatr_planet_frame;
+extern UINT8 *liberatr_planet_select;
+extern UINT8 *liberatr_x;
+extern UINT8 *liberatr_y;
+extern UINT8 *liberatr_bitmapram;
+extern UINT8 *liberatr_colorram;
+
+VIDEO_START( liberatr );
+VIDEO_UPDATE( liberatr );
+
+WRITE8_HANDLER( liberatr_bitmap_w );
+READ8_HANDLER( liberatr_bitmap_xy_r );
+WRITE8_HANDLER( liberatr_bitmap_xy_w );
diff --git a/src/mame/includes/lwings.h b/src/mame/includes/lwings.h
new file mode 100644
index 00000000000..aeb8f3e1931
--- /dev/null
+++ b/src/mame/includes/lwings.h
@@ -0,0 +1,17 @@
+/*----------- defined in video/lwings.c -----------*/
+
+extern UINT8 *lwings_fgvideoram;
+extern UINT8 *lwings_bg1videoram;
+
+WRITE8_HANDLER( lwings_fgvideoram_w );
+WRITE8_HANDLER( lwings_bg1videoram_w );
+WRITE8_HANDLER( lwings_bg1_scrollx_w );
+WRITE8_HANDLER( lwings_bg1_scrolly_w );
+WRITE8_HANDLER( trojan_bg2_scrollx_w );
+WRITE8_HANDLER( trojan_bg2_image_w );
+VIDEO_START( lwings );
+VIDEO_START( trojan );
+VIDEO_START( avengers );
+VIDEO_UPDATE( lwings );
+VIDEO_UPDATE( trojan );
+VIDEO_EOF( lwings );
diff --git a/src/mame/includes/m107.h b/src/mame/includes/m107.h
new file mode 100644
index 00000000000..71500a2acaf
--- /dev/null
+++ b/src/mame/includes/m107.h
@@ -0,0 +1,18 @@
+/*************************************************************************
+
+ Irem M107 hardware
+
+*************************************************************************/
+
+
+/*----------- defined in video/m107.c -----------*/
+
+extern UINT16 *m107_vram_data;
+extern UINT8 m107_spritesystem;
+extern UINT16 m107_raster_irq_position;
+
+WRITE16_HANDLER( m107_spritebuffer_w );
+VIDEO_UPDATE( m107 );
+VIDEO_START( m107 );
+WRITE16_HANDLER( m107_control_w );
+WRITE16_HANDLER( m107_vram_w );
diff --git a/src/mame/includes/m72.h b/src/mame/includes/m72.h
new file mode 100644
index 00000000000..ccca0bd8d52
--- /dev/null
+++ b/src/mame/includes/m72.h
@@ -0,0 +1,40 @@
+/*************************************************************************
+
+ Irem M72 hardware
+
+*************************************************************************/
+
+/*----------- defined in video/m72.c -----------*/
+
+extern UINT16 *m72_videoram1,*m72_videoram2,*majtitle_rowscrollram;
+
+MACHINE_RESET( m72 );
+MACHINE_RESET( xmultipl );
+MACHINE_RESET( kengo );
+
+INTERRUPT_GEN( m72_interrupt );
+
+VIDEO_START( m72 );
+VIDEO_START( rtype2 );
+VIDEO_START( majtitle );
+VIDEO_START( hharry );
+VIDEO_START( poundfor );
+
+READ16_HANDLER( m72_palette1_r );
+READ16_HANDLER( m72_palette2_r );
+WRITE16_HANDLER( m72_palette1_w );
+WRITE16_HANDLER( m72_palette2_w );
+WRITE16_HANDLER( m72_videoram1_w );
+WRITE16_HANDLER( m72_videoram2_w );
+WRITE16_HANDLER( m72_irq_line_w );
+WRITE16_HANDLER( m72_scrollx1_w );
+WRITE16_HANDLER( m72_scrollx2_w );
+WRITE16_HANDLER( m72_scrolly1_w );
+WRITE16_HANDLER( m72_scrolly2_w );
+WRITE16_HANDLER( m72_dmaon_w );
+WRITE16_HANDLER( m72_port02_w );
+WRITE16_HANDLER( rtype2_port02_w );
+WRITE16_HANDLER( majtitle_gfx_ctrl_w );
+
+VIDEO_UPDATE( m72 );
+VIDEO_UPDATE( majtitle );
diff --git a/src/mame/includes/m92.h b/src/mame/includes/m92.h
new file mode 100644
index 00000000000..63a6f6fd1c6
--- /dev/null
+++ b/src/mame/includes/m92.h
@@ -0,0 +1,25 @@
+/*************************************************************************
+
+ Irem M92 hardware
+
+*************************************************************************/
+
+/*----------- defined in video/m92.c -----------*/
+
+extern UINT32 m92_raster_irq_position;
+extern UINT16 *m92_vram_data, *m92_spritecontrol;
+
+extern UINT8 m92_sprite_buffer_busy, m92_game_kludge;
+
+WRITE16_HANDLER( m92_spritecontrol_w );
+WRITE16_HANDLER( m92_videocontrol_w );
+READ16_HANDLER( m92_paletteram_r );
+WRITE16_HANDLER( m92_paletteram_w );
+WRITE16_HANDLER( m92_vram_w );
+WRITE16_HANDLER( m92_pf1_control_w );
+WRITE16_HANDLER( m92_pf2_control_w );
+WRITE16_HANDLER( m92_pf3_control_w );
+WRITE16_HANDLER( m92_master_control_w );
+
+VIDEO_START( m92 );
+VIDEO_UPDATE( m92 );
diff --git a/src/mame/includes/mcr.h b/src/mame/includes/mcr.h
new file mode 100644
index 00000000000..02890ea7360
--- /dev/null
+++ b/src/mame/includes/mcr.h
@@ -0,0 +1,123 @@
+/*************************************************************************
+
+ Driver for Midway MCR games
+
+**************************************************************************/
+
+#include "cpu/z80/z80daisy.h"
+
+/* constants */
+#define MAIN_OSC_MCR_I 19968000
+
+
+/*----------- defined in drivers/mcr.c -----------*/
+
+WRITE8_HANDLER( mcr_ipu_sio_transmit );
+
+
+
+/*----------- defined in machine/mcr.c -----------*/
+
+extern attotime mcr68_timing_factor;
+
+extern struct z80_irq_daisy_chain mcr_daisy_chain[];
+extern struct z80_irq_daisy_chain mcr_ipu_daisy_chain[];
+extern UINT8 mcr_cocktail_flip;
+
+extern gfx_layout mcr_bg_layout;
+extern gfx_layout mcr_sprite_layout;
+
+extern UINT32 mcr_cpu_board;
+extern UINT32 mcr_sprite_board;
+extern UINT32 mcr_ssio_board;
+
+MACHINE_START( mcr );
+MACHINE_RESET( mcr );
+MACHINE_START( nflfoot );
+MACHINE_START( mcr68 );
+MACHINE_RESET( mcr68 );
+MACHINE_START( zwackery );
+MACHINE_RESET( zwackery );
+
+INTERRUPT_GEN( mcr_interrupt );
+INTERRUPT_GEN( mcr_ipu_interrupt );
+INTERRUPT_GEN( mcr68_interrupt );
+
+WRITE8_HANDLER( mcr_control_port_w );
+WRITE8_HANDLER( mcrmono_control_port_w );
+WRITE8_HANDLER( mcr_scroll_value_w );
+
+WRITE16_HANDLER( mcr68_6840_upper_w );
+WRITE16_HANDLER( mcr68_6840_lower_w );
+READ16_HANDLER( mcr68_6840_upper_r );
+READ16_HANDLER( mcr68_6840_lower_r );
+
+READ8_HANDLER( mcr_ipu_pio_0_r );
+READ8_HANDLER( mcr_ipu_pio_1_r );
+READ8_HANDLER( mcr_ipu_sio_r );
+WRITE8_HANDLER( mcr_ipu_pio_0_w );
+WRITE8_HANDLER( mcr_ipu_pio_1_w );
+WRITE8_HANDLER( mcr_ipu_sio_w );
+WRITE8_HANDLER( mcr_ipu_laserdisk_w );
+READ8_HANDLER( mcr_ipu_watchdog_r );
+WRITE8_HANDLER( mcr_ipu_watchdog_w );
+
+
+/*----------- defined in video/mcr.c -----------*/
+
+extern INT8 mcr12_sprite_xoffs;
+extern INT8 mcr12_sprite_xoffs_flip;
+
+VIDEO_START( mcr );
+
+WRITE8_HANDLER( mcr_91490_paletteram_w );
+
+WRITE8_HANDLER( mcr_90009_videoram_w );
+WRITE8_HANDLER( mcr_90010_videoram_w );
+READ8_HANDLER( twotiger_videoram_r );
+WRITE8_HANDLER( twotiger_videoram_w );
+WRITE8_HANDLER( mcr_91490_videoram_w );
+
+VIDEO_UPDATE( mcr );
+
+
+/*----------- defined in video/mcr3.c -----------*/
+
+extern UINT8 spyhunt_sprite_color_mask;
+extern INT16 spyhunt_scrollx, spyhunt_scrolly;
+extern INT16 spyhunt_scroll_offset;
+
+extern UINT8 *spyhunt_alpharam;
+
+WRITE8_HANDLER( mcr3_paletteram_w );
+WRITE8_HANDLER( mcr3_videoram_w );
+WRITE8_HANDLER( spyhunt_videoram_w );
+WRITE8_HANDLER( spyhunt_alpharam_w );
+
+VIDEO_START( mcr3 );
+VIDEO_START( mcrmono );
+VIDEO_START( spyhunt );
+
+PALETTE_INIT( spyhunt );
+
+VIDEO_UPDATE( mcr3 );
+VIDEO_UPDATE( spyhunt );
+
+
+/*----------- defined in video/mcr68.c -----------*/
+
+extern UINT8 mcr68_sprite_clip;
+extern INT8 mcr68_sprite_xoffset;
+
+WRITE16_HANDLER( mcr68_paletteram_w );
+WRITE16_HANDLER( mcr68_videoram_w );
+
+VIDEO_START( mcr68 );
+VIDEO_UPDATE( mcr68 );
+
+WRITE16_HANDLER( zwackery_paletteram_w );
+WRITE16_HANDLER( zwackery_videoram_w );
+WRITE16_HANDLER( zwackery_spriteram_w );
+
+VIDEO_START( zwackery );
+VIDEO_UPDATE( zwackery );
diff --git a/src/mame/includes/meadows.h b/src/mame/includes/meadows.h
new file mode 100644
index 00000000000..12dd9dfa403
--- /dev/null
+++ b/src/mame/includes/meadows.h
@@ -0,0 +1,24 @@
+/*************************************************************************
+
+ Meadows S2650 hardware
+
+*************************************************************************/
+
+/*----------- defined in audio/meadows.c -----------*/
+
+void meadows_sh_start(void);
+void meadows_sh_dac_w(int data);
+void meadows_sh_update(void);
+extern UINT8 meadows_0c00;
+extern UINT8 meadows_0c01;
+extern UINT8 meadows_0c02;
+extern UINT8 meadows_0c03;
+
+
+/*----------- defined in video/meadows.c -----------*/
+
+VIDEO_START( meadows );
+VIDEO_UPDATE( meadows );
+WRITE8_HANDLER( meadows_videoram_w );
+WRITE8_HANDLER( meadows_spriteram_w );
+
diff --git a/src/mame/includes/megasys1.h b/src/mame/includes/megasys1.h
new file mode 100644
index 00000000000..663d3550fc4
--- /dev/null
+++ b/src/mame/includes/megasys1.h
@@ -0,0 +1,195 @@
+/***************************************************************************
+
+ -= Jaleco Mega System 1 =-
+
+ driver by Luca Elia (l.elia@tin.it)
+
+
+ This file contains definitions used across multiple megasys1
+ and non megasys1 Jaleco games:
+
+ * Input ports
+ * Scrolling layers handling
+ * Code decryption handling
+
+***************************************************************************/
+
+
+/***************************************************************************
+
+ Input Ports
+
+***************************************************************************/
+
+
+/* IN0 - COINS */
+#define COINS \
+ PORT_START_TAG("IN0")\
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 )\
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_START2 )\
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )\
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )\
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )\
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SERVICE1 )\
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN1 )\
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN2 )
+
+/* IN1/3 - PLAYER 1/2 */
+#define JOY_4BUTTONS(_flag_) \
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT) PORT_8WAY PORT_PLAYER(_flag_)\
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT) PORT_8WAY PORT_PLAYER(_flag_)\
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN) PORT_8WAY PORT_PLAYER(_flag_)\
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_UP) PORT_8WAY PORT_PLAYER(_flag_)\
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1) PORT_PLAYER(_flag_)\
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2) PORT_PLAYER(_flag_)\
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3) PORT_PLAYER(_flag_)\
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON4) PORT_PLAYER(_flag_)
+
+#define JOY_3BUTTONS(_flag_) \
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT) PORT_8WAY PORT_PLAYER(_flag_)\
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT) PORT_8WAY PORT_PLAYER(_flag_)\
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN) PORT_8WAY PORT_PLAYER(_flag_)\
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_UP) PORT_8WAY PORT_PLAYER(_flag_)\
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1) PORT_PLAYER(_flag_)\
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2) PORT_PLAYER(_flag_)\
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3) PORT_PLAYER(_flag_)\
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN)
+
+#define JOY_2BUTTONS(_flag_) \
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT) PORT_8WAY PORT_PLAYER(_flag_)\
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT) PORT_8WAY PORT_PLAYER(_flag_)\
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN) PORT_8WAY PORT_PLAYER(_flag_)\
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_UP) PORT_8WAY PORT_PLAYER(_flag_)\
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1) PORT_PLAYER(_flag_)\
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2) PORT_PLAYER(_flag_)\
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN) \
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN)
+
+/* IN2 - RESERVE */
+#define RESERVE \
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* Reserve 1P */\
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )\
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )\
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )\
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* Reserve 2P */\
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )\
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )\
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+/* IN4 - Coinage DSWs */
+// 1] 01-41 02-31 03-21 07-11 06-12 05-13 04-14 00-FC * 2
+// 2] 04-31 02-21 07-11 03-12 05-13 01-14 06-15 00-FC
+// 00-41 20-31 10-21 38-11 18-12 28-13 08-14 30-15
+
+
+#define COINAGE_6BITS \
+ PORT_DIPNAME( 0x07, 0x07, DEF_STR( Coin_A ) )\
+ PORT_DIPSETTING( 0x04, DEF_STR( 3C_1C ) )\
+ PORT_DIPSETTING( 0x02, DEF_STR( 2C_1C ) )\
+ PORT_DIPSETTING( 0x07, DEF_STR( 1C_1C ) )\
+ PORT_DIPSETTING( 0x03, DEF_STR( 1C_2C ) )\
+ PORT_DIPSETTING( 0x05, DEF_STR( 1C_3C ) )\
+ PORT_DIPSETTING( 0x01, DEF_STR( 1C_4C ) )\
+ PORT_DIPSETTING( 0x06, DEF_STR( 1C_5C ) )\
+ PORT_DIPSETTING( 0x00, DEF_STR( Free_Play ) )\
+ PORT_DIPNAME( 0x38, 0x38, DEF_STR( Coin_B ) )\
+ PORT_DIPSETTING( 0x00, DEF_STR( 4C_1C ) )\
+ PORT_DIPSETTING( 0x20, DEF_STR( 3C_1C ) )\
+ PORT_DIPSETTING( 0x10, DEF_STR( 2C_1C ) )\
+ PORT_DIPSETTING( 0x38, DEF_STR( 1C_1C ) )\
+ PORT_DIPSETTING( 0x18, DEF_STR( 1C_2C ) )\
+ PORT_DIPSETTING( 0x28, DEF_STR( 1C_3C ) )\
+ PORT_DIPSETTING( 0x08, DEF_STR( 1C_4C ) )\
+ PORT_DIPSETTING( 0x30, DEF_STR( 1C_5C ) )\
+
+#define COINAGE_6BITS_2 \
+ PORT_DIPNAME( 0x07, 0x07, DEF_STR( Coin_A ) )\
+ PORT_DIPSETTING( 0x01, DEF_STR( 4C_1C ) )\
+ PORT_DIPSETTING( 0x02, DEF_STR( 3C_1C ) )\
+ PORT_DIPSETTING( 0x03, DEF_STR( 2C_1C ) )\
+ PORT_DIPSETTING( 0x07, DEF_STR( 1C_1C ) )\
+ PORT_DIPSETTING( 0x06, DEF_STR( 1C_2C ) )\
+ PORT_DIPSETTING( 0x05, DEF_STR( 1C_3C ) )\
+ PORT_DIPSETTING( 0x04, DEF_STR( 1C_4C ) )\
+ PORT_DIPSETTING( 0x00, DEF_STR( Free_Play ) )\
+ PORT_DIPNAME( 0x38, 0x38, DEF_STR( Coin_B ) )\
+ PORT_DIPSETTING( 0x08, DEF_STR( 4C_1C ) )\
+ PORT_DIPSETTING( 0x10, DEF_STR( 3C_1C ) )\
+ PORT_DIPSETTING( 0x18, DEF_STR( 2C_1C ) )\
+ PORT_DIPSETTING( 0x38, DEF_STR( 1C_1C ) )\
+ PORT_DIPSETTING( 0x30, DEF_STR( 1C_2C ) )\
+ PORT_DIPSETTING( 0x28, DEF_STR( 1C_3C ) )\
+ PORT_DIPSETTING( 0x20, DEF_STR( 1C_4C ) )\
+ PORT_DIPSETTING( 0x00, DEF_STR( Free_Play ) )\
+
+#define COINAGE_8BITS \
+ PORT_DIPNAME( 0x0f, 0x0f, DEF_STR( Coin_A ) )\
+ PORT_DIPSETTING( 0x07, DEF_STR( 4C_1C ) )\
+ PORT_DIPSETTING( 0x08, DEF_STR( 3C_1C ) )\
+ PORT_DIPSETTING( 0x09, DEF_STR( 2C_1C ) )\
+ PORT_DIPSETTING( 0x0f, DEF_STR( 1C_1C ) )\
+/* PORT_DIPSETTING( 0x05, DEF_STR( 1C_1C ) )*/ \
+/* PORT_DIPSETTING( 0x04, DEF_STR( 1C_1C ) )*/ \
+/* PORT_DIPSETTING( 0x03, DEF_STR( 1C_1C ) )*/ \
+/* PORT_DIPSETTING( 0x02, DEF_STR( 1C_1C ) )*/ \
+/* PORT_DIPSETTING( 0x01, DEF_STR( 1C_1C ) )*/ \
+ PORT_DIPSETTING( 0x06, DEF_STR( 2C_3C ) )\
+ PORT_DIPSETTING( 0x0e, DEF_STR( 1C_2C ) )\
+ PORT_DIPSETTING( 0x0d, DEF_STR( 1C_3C ) )\
+ PORT_DIPSETTING( 0x0c, DEF_STR( 1C_4C ) )\
+ PORT_DIPSETTING( 0x0b, DEF_STR( 1C_5C ) )\
+ PORT_DIPSETTING( 0x0a, DEF_STR( 1C_6C ) )\
+ PORT_DIPSETTING( 0x00, DEF_STR( Free_Play ) )\
+ PORT_DIPNAME( 0xf0, 0xf0, DEF_STR( Coin_B ) )\
+ PORT_DIPSETTING( 0x70, DEF_STR( 4C_1C ) )\
+ PORT_DIPSETTING( 0x80, DEF_STR( 3C_1C ) )\
+ PORT_DIPSETTING( 0x90, DEF_STR( 2C_1C ) )\
+ PORT_DIPSETTING( 0xf0, DEF_STR( 1C_1C ) )\
+/* PORT_DIPSETTING( 0x50, DEF_STR( 1C_1C ) )*/ \
+/* PORT_DIPSETTING( 0x40, DEF_STR( 1C_1C ) )*/ \
+/* PORT_DIPSETTING( 0x30, DEF_STR( 1C_1C ) )*/ \
+/* PORT_DIPSETTING( 0x20, DEF_STR( 1C_1C ) )*/ \
+/* PORT_DIPSETTING( 0x10, DEF_STR( 1C_1C ) )*/ \
+ PORT_DIPSETTING( 0x60, DEF_STR( 2C_3C ) )\
+ PORT_DIPSETTING( 0xe0, DEF_STR( 1C_2C ) )\
+ PORT_DIPSETTING( 0xd0, DEF_STR( 1C_3C ) )\
+ PORT_DIPSETTING( 0xc0, DEF_STR( 1C_4C ) )\
+ PORT_DIPSETTING( 0xb0, DEF_STR( 1C_5C ) )\
+ PORT_DIPSETTING( 0xa0, DEF_STR( 1C_6C ) )\
+ PORT_DIPSETTING( 0x00, DEF_STR( Free_Play ) )
+
+
+/***************************************************************************
+
+ Scrolling Layers Handling
+
+***************************************************************************/
+
+/*----------- defined in video/megasys1.c -----------*/
+
+/* Variables */
+extern tilemap *megasys1_tmap[3];
+
+extern UINT16 *megasys1_scrollram[3];
+extern UINT16 *megasys1_objectram, *megasys1_vregs, *megasys1_ram;
+
+extern int megasys1_scrollx[3], megasys1_scrolly[3];
+extern int megasys1_active_layers;
+//extern int megasys1_screen_flag, megasys1_sprite_flag;
+extern int megasys1_bits_per_color_code;
+
+
+/* Functions */
+VIDEO_START( megasys1 );
+
+WRITE16_HANDLER( megasys1_scrollram_0_w );
+WRITE16_HANDLER( megasys1_scrollram_1_w );
+WRITE16_HANDLER( megasys1_scrollram_2_w );
+
+void megasys1_set_vreg_flag(int which, int data);
+
+/*----------- defined in drivers/megasys1.c -----------*/
+
+void astyanax_rom_decode(int cpu);
+void phantasm_rom_decode(int cpu);
+void rodland_rom_decode (int cpu);
diff --git a/src/mame/includes/mhavoc.h b/src/mame/includes/mhavoc.h
new file mode 100644
index 00000000000..e5c2072f964
--- /dev/null
+++ b/src/mame/includes/mhavoc.h
@@ -0,0 +1,43 @@
+/*************************************************************************
+
+ Atari Major Havoc hardware
+
+*************************************************************************/
+
+#define MHAVOC_CLOCK 10000000
+#define MHAVOC_CLOCK_5M (MHAVOC_CLOCK/2)
+#define MHAVOC_CLOCK_2_5M (MHAVOC_CLOCK/4)
+#define MHAVOC_CLOCK_1_25M (MHAVOC_CLOCK/8)
+#define MHAVOC_CLOCK_625K (MHAVOC_CLOCK/16)
+
+#define MHAVOC_CLOCK_156K (MHAVOC_CLOCK_625K/4)
+#define MHAVOC_CLOCK_5K (MHAVOC_CLOCK_625K/16/8)
+#define MHAVOC_CLOCK_2_4K (MHAVOC_CLOCK_625K/16/16)
+
+
+/*----------- defined in machine/mhavoc.c -----------*/
+
+WRITE8_HANDLER( mhavoc_alpha_irq_ack_w );
+WRITE8_HANDLER( mhavoc_gamma_irq_ack_w );
+
+MACHINE_RESET( mhavoc );
+
+WRITE8_HANDLER( mhavoc_gamma_w );
+READ8_HANDLER( mhavoc_alpha_r );
+
+WRITE8_HANDLER( mhavoc_alpha_w );
+READ8_HANDLER( mhavoc_gamma_r );
+
+WRITE8_HANDLER( mhavoc_ram_banksel_w );
+WRITE8_HANDLER( mhavoc_rom_banksel_w );
+
+READ8_HANDLER( mhavoc_port_0_r );
+READ8_HANDLER( alphaone_port_0_r );
+READ8_HANDLER( mhavoc_port_1_r );
+READ8_HANDLER( mhavoc_port_1_sp_r );
+
+WRITE8_HANDLER( mhavoc_out_0_w );
+WRITE8_HANDLER( alphaone_out_0_w );
+WRITE8_HANDLER( mhavoc_out_1_w );
+
+extern UINT8 *mhavoc_zram0, *mhavoc_zram1;
diff --git a/src/mame/includes/midtunit.h b/src/mame/includes/midtunit.h
new file mode 100644
index 00000000000..2df8ea52845
--- /dev/null
+++ b/src/mame/includes/midtunit.h
@@ -0,0 +1,64 @@
+/*************************************************************************
+
+ Driver for Midway T-unit games.
+
+**************************************************************************/
+
+#include "midyunit.h"
+
+/*----------- defined in machine/midtunit.c -----------*/
+
+WRITE16_HANDLER( midtunit_cmos_enable_w );
+WRITE16_HANDLER( midtunit_cmos_w );
+READ16_HANDLER( midtunit_cmos_r );
+
+READ16_HANDLER( midtunit_input_r );
+
+DRIVER_INIT( mktunit );
+DRIVER_INIT( jdreddp );
+DRIVER_INIT( nbajam );
+DRIVER_INIT( nbajamte );
+DRIVER_INIT( mk2 );
+
+MACHINE_RESET( midtunit );
+
+READ16_HANDLER( midtunit_sound_state_r );
+READ16_HANDLER( midtunit_sound_r );
+WRITE16_HANDLER( midtunit_sound_w );
+
+
+/*----------- defined in video/midtunit.c -----------*/
+
+extern UINT8 midtunit_gfx_rom_large;
+
+VIDEO_START( midtunit );
+VIDEO_START( midwunit );
+VIDEO_START( midxunit );
+
+READ16_HANDLER( midtunit_gfxrom_r );
+READ16_HANDLER( midwunit_gfxrom_r );
+
+WRITE16_HANDLER( midtunit_vram_w );
+WRITE16_HANDLER( midtunit_vram_data_w );
+WRITE16_HANDLER( midtunit_vram_color_w );
+
+READ16_HANDLER( midtunit_vram_r );
+READ16_HANDLER( midtunit_vram_data_r );
+READ16_HANDLER( midtunit_vram_color_r );
+
+void midtunit_to_shiftreg(UINT32 address, UINT16 *shiftreg);
+void midtunit_from_shiftreg(UINT32 address, UINT16 *shiftreg);
+
+WRITE16_HANDLER( midtunit_control_w );
+WRITE16_HANDLER( midwunit_control_w );
+READ16_HANDLER( midwunit_control_r );
+
+WRITE16_HANDLER( midtunit_paletteram_w );
+WRITE16_HANDLER( midxunit_paletteram_w );
+READ16_HANDLER( midxunit_paletteram_r );
+
+READ16_HANDLER( midtunit_dma_r );
+WRITE16_HANDLER( midtunit_dma_w );
+
+void midtunit_scanline_update(running_machine *machine, int screen, mame_bitmap *bitmap, int scanline, const tms34010_display_params *params);
+void midxunit_scanline_update(running_machine *machine, int screen, mame_bitmap *bitmap, int scanline, const tms34010_display_params *params);
diff --git a/src/mame/includes/midvunit.h b/src/mame/includes/midvunit.h
new file mode 100644
index 00000000000..f732f6feb96
--- /dev/null
+++ b/src/mame/includes/midvunit.h
@@ -0,0 +1,37 @@
+/*************************************************************************
+
+ Driver for Midway V-Unit games
+
+**************************************************************************/
+
+#include "midwunit.h"
+
+#define MIDVUNIT_VIDEO_CLOCK 33000000
+
+
+
+/*----------- defined in video/midvunit.c -----------*/
+
+extern UINT16 *midvunit_videoram;
+extern UINT32 *midvunit_textureram;
+
+WRITE32_HANDLER( midvunit_dma_queue_w );
+READ32_HANDLER( midvunit_dma_queue_entries_r );
+READ32_HANDLER( midvunit_dma_trigger_r );
+
+WRITE32_HANDLER( midvunit_page_control_w );
+READ32_HANDLER( midvunit_page_control_r );
+
+WRITE32_HANDLER( midvunit_video_control_w );
+READ32_HANDLER( midvunit_scanline_r );
+
+WRITE32_HANDLER( midvunit_videoram_w );
+READ32_HANDLER( midvunit_videoram_r );
+
+WRITE32_HANDLER( midvunit_paletteram_w );
+
+WRITE32_HANDLER( midvunit_textureram_w );
+READ32_HANDLER( midvunit_textureram_r );
+
+VIDEO_START( midvunit );
+VIDEO_UPDATE( midvunit );
diff --git a/src/mame/includes/midwunit.h b/src/mame/includes/midwunit.h
new file mode 100644
index 00000000000..59c8e8ab69a
--- /dev/null
+++ b/src/mame/includes/midwunit.h
@@ -0,0 +1,52 @@
+/*************************************************************************
+
+ Driver for Midway Wolf-unit games.
+
+**************************************************************************/
+
+#include "midtunit.h"
+
+/*----------- defined in machine/midwunit.c -----------*/
+
+extern UINT8 *midwunit_decode_memory;
+
+WRITE16_HANDLER( midwunit_cmos_enable_w );
+WRITE16_HANDLER( midwunit_cmos_w );
+WRITE16_HANDLER( midxunit_cmos_w );
+READ16_HANDLER( midwunit_cmos_r );
+
+WRITE16_HANDLER( midwunit_io_w );
+WRITE16_HANDLER( midxunit_io_w );
+WRITE16_HANDLER( midxunit_unknown_w );
+
+READ16_HANDLER( midwunit_io_r );
+READ16_HANDLER( midxunit_io_r );
+READ16_HANDLER( midxunit_analog_r );
+WRITE16_HANDLER( midxunit_analog_select_w );
+READ16_HANDLER( midxunit_status_r );
+
+READ16_HANDLER( midxunit_uart_r );
+WRITE16_HANDLER( midxunit_uart_w );
+
+DRIVER_INIT( mk3 );
+DRIVER_INIT( mk3r20 );
+DRIVER_INIT( mk3r10 );
+DRIVER_INIT( umk3 );
+DRIVER_INIT( umk3r11 );
+
+DRIVER_INIT( openice );
+DRIVER_INIT( nbahangt );
+DRIVER_INIT( wwfmania );
+DRIVER_INIT( rmpgwt );
+DRIVER_INIT( revx );
+
+MACHINE_RESET( midwunit );
+MACHINE_RESET( midxunit );
+
+READ16_HANDLER( midwunit_security_r );
+WRITE16_HANDLER( midwunit_security_w );
+WRITE16_HANDLER( midxunit_security_w );
+WRITE16_HANDLER( midxunit_security_clock_w );
+
+READ16_HANDLER( midwunit_sound_r );
+WRITE16_HANDLER( midwunit_sound_w );
diff --git a/src/mame/includes/midyunit.h b/src/mame/includes/midyunit.h
new file mode 100644
index 00000000000..b1f8c2107c8
--- /dev/null
+++ b/src/mame/includes/midyunit.h
@@ -0,0 +1,64 @@
+/*************************************************************************
+
+ Williams/Midway Y/Z-unit system
+
+**************************************************************************/
+
+#include "cpu/tms34010/tms34010.h"
+
+/*----------- defined in machine/midyunit.c -----------*/
+
+extern UINT16 *midyunit_cmos_ram;
+extern UINT32 midyunit_cmos_page;
+
+WRITE16_HANDLER( midyunit_cmos_w );
+READ16_HANDLER( midyunit_cmos_r );
+
+WRITE16_HANDLER( midyunit_cmos_enable_w );
+READ16_HANDLER( midyunit_protection_r );
+
+READ16_HANDLER( midyunit_input_r );
+
+DRIVER_INIT( narc );
+DRIVER_INIT( trog );
+DRIVER_INIT( smashtv );
+DRIVER_INIT( hiimpact );
+DRIVER_INIT( shimpact );
+DRIVER_INIT( strkforc );
+DRIVER_INIT( mkyunit );
+DRIVER_INIT( mkyawdim );
+DRIVER_INIT( term2 );
+DRIVER_INIT( term2la2 );
+DRIVER_INIT( term2la1 );
+DRIVER_INIT( totcarn );
+
+MACHINE_RESET( midyunit );
+
+WRITE16_HANDLER( midyunit_sound_w );
+
+
+/*----------- defined in video/midyunit.c -----------*/
+
+extern UINT8 * midyunit_gfx_rom;
+extern size_t midyunit_gfx_rom_size;
+
+VIDEO_START( midyunit_4bit );
+VIDEO_START( midyunit_6bit );
+VIDEO_START( mkyawdim );
+VIDEO_START( midzunit );
+
+READ16_HANDLER( midyunit_gfxrom_r );
+
+WRITE16_HANDLER( midyunit_vram_w );
+READ16_HANDLER( midyunit_vram_r );
+
+void midyunit_to_shiftreg(UINT32 address, UINT16 *shiftreg);
+void midyunit_from_shiftreg(UINT32 address, UINT16 *shiftreg);
+
+WRITE16_HANDLER( midyunit_control_w );
+WRITE16_HANDLER( midyunit_paletteram_w );
+
+READ16_HANDLER( midyunit_dma_r );
+WRITE16_HANDLER( midyunit_dma_w );
+
+void midyunit_scanline_update(running_machine *machine, int screen, mame_bitmap *bitmap, int scanline, const tms34010_display_params *params);
diff --git a/src/mame/includes/midzeus.h b/src/mame/includes/midzeus.h
new file mode 100644
index 00000000000..9a9578552d0
--- /dev/null
+++ b/src/mame/includes/midzeus.h
@@ -0,0 +1,22 @@
+/*************************************************************************
+
+ Driver for Midway Zeus games
+
+**************************************************************************/
+
+#define MIDZEUS_VIDEO_CLOCK 66000000
+
+
+/*----------- defined in video/midzeus.c -----------*/
+
+extern UINT32 *zeusbase;
+
+VIDEO_START( midzeus );
+VIDEO_UPDATE( midzeus );
+
+READ32_HANDLER( zeus_r );
+WRITE32_HANDLER( zeus_w );
+
+READ32_HANDLER( zeus2_r );
+WRITE32_HANDLER( zeus2_w );
+
diff --git a/src/mame/includes/mw8080bw.h b/src/mame/includes/mw8080bw.h
new file mode 100644
index 00000000000..5bbbe3c44e3
--- /dev/null
+++ b/src/mame/includes/mw8080bw.h
@@ -0,0 +1,173 @@
+/***************************************************************************
+
+ Midway 8080-based black and white hardware
+
+****************************************************************************/
+
+
+#define MW8080BW_MASTER_CLOCK (19968000)
+#define MW8080BW_CPU_CLOCK (MW8080BW_MASTER_CLOCK / 10)
+#define MW8080BW_PIXEL_CLOCK (MW8080BW_MASTER_CLOCK / 4)
+#define MW8080BW_HTOTAL (0x140)
+#define MW8080BW_HBEND (0x000)
+#define MW8080BW_HBSTART (0x100)
+#define MW8080BW_VTOTAL (0x106)
+#define MW8080BW_VBEND (0x000)
+#define MW8080BW_VBSTART (0x0e0)
+#define MW8080BW_VCOUNTER_START_NO_VBLANK (0x020)
+#define MW8080BW_VCOUNTER_START_VBLANK (0x0da)
+#define MW8080BW_INT_TRIGGER_COUNT_1 (0x080)
+#define MW8080BW_INT_TRIGGER_VBLANK_1 (0)
+#define MW8080BW_INT_TRIGGER_COUNT_2 MW8080BW_VCOUNTER_START_VBLANK
+#define MW8080BW_INT_TRIGGER_VBLANK_2 (1)
+
+/* +4 is added to HBSTART because the hardware displays that many pixels after
+ setting HBLANK */
+#define MW8080BW_HPIXCOUNT (MW8080BW_HBSTART + 4)
+
+
+/*----------- defined in drivers/mw8080bw.c -----------*/
+
+extern UINT8 *mw8080bw_ram;
+extern size_t mw8080bw_ram_size;
+
+MACHINE_DRIVER_EXTERN( mw8080bw_root );
+MACHINE_DRIVER_EXTERN( invaders );
+extern const char layout_invaders[];
+
+#define SEAWOLF_GUN_PORT_TAG ("GUN")
+
+#define TORNBASE_CAB_TYPE_UPRIGHT_OLD (0)
+#define TORNBASE_CAB_TYPE_UPRIGHT_NEW (1)
+#define TORNBASE_CAB_TYPE_COCKTAIL (2)
+UINT8 tornbase_get_cabinet_type(void);
+
+#define DESERTGU_GUN_X_PORT_TAG ("GUNX")
+#define DESERTGU_GUN_Y_PORT_TAG ("GUNY")
+void desertgun_set_controller_select(UINT8 data);
+
+void clowns_set_controller_select(UINT8 data);
+
+void spcenctr_set_strobe_state(UINT8 data);
+UINT8 spcenctr_get_trench_width(void);
+UINT8 spcenctr_get_trench_center(void);
+UINT8 spcenctr_get_trench_slope(UINT8 addr);
+
+UINT16 phantom2_get_cloud_counter(void);
+void phantom2_set_cloud_counter(UINT16 data);
+
+#define INVADERS_CAB_TYPE_PORT_TAG ("CAB")
+#define INVADERS_P1_CONTROL_PORT_TAG ("CONTP1")
+#define INVADERS_P2_CONTROL_PORT_TAG ("CONTP2")
+
+UINT32 invaders_in2_control_r(void *param);
+UINT8 invaders_is_flip_screen(void);
+void invaders_set_flip_screen(UINT8 data);
+int invaders_is_cabinet_cocktail(void);
+
+#define BLUESHRK_SPEAR_PORT_TAG ("SPEAR")
+
+
+/*----------- defined in machine/mw8080bw.c -----------*/
+
+MACHINE_START( mw8080bw );
+MACHINE_RESET( mw8080bw );
+
+
+/*----------- defined in audio/mw8080bw.c -----------*/
+
+WRITE8_HANDLER( midway_tone_generator_lo_w );
+WRITE8_HANDLER( midway_tone_generator_hi_w );
+
+MACHINE_DRIVER_EXTERN( seawolf_audio );
+WRITE8_HANDLER( seawolf_audio_w );
+
+MACHINE_DRIVER_EXTERN( gunfight_audio );
+WRITE8_HANDLER( gunfight_audio_w );
+
+MACHINE_DRIVER_EXTERN( tornbase_audio );
+WRITE8_HANDLER( tornbase_audio_w );
+
+MACHINE_DRIVER_EXTERN( zzzap_audio );
+WRITE8_HANDLER( zzzap_audio_1_w );
+WRITE8_HANDLER( zzzap_audio_2_w );
+
+MACHINE_DRIVER_EXTERN( maze_audio );
+void maze_write_discrete(UINT8 maze_tone_timing_state);
+
+MACHINE_DRIVER_EXTERN( boothill_audio );
+WRITE8_HANDLER( boothill_audio_w );
+
+MACHINE_DRIVER_EXTERN( checkmat_audio );
+WRITE8_HANDLER( checkmat_audio_w );
+
+MACHINE_DRIVER_EXTERN( desertgu_audio );
+WRITE8_HANDLER( desertgu_audio_1_w );
+WRITE8_HANDLER( desertgu_audio_2_w );
+
+MACHINE_DRIVER_EXTERN( dplay_audio );
+WRITE8_HANDLER( dplay_audio_w );
+
+MACHINE_DRIVER_EXTERN( gmissile_audio );
+WRITE8_HANDLER( gmissile_audio_1_w );
+WRITE8_HANDLER( gmissile_audio_2_w );
+WRITE8_HANDLER( gmissile_audio_3_w );
+
+MACHINE_DRIVER_EXTERN( m4_audio );
+WRITE8_HANDLER( m4_audio_1_w );
+WRITE8_HANDLER( m4_audio_2_w );
+
+MACHINE_DRIVER_EXTERN( clowns_audio );
+WRITE8_HANDLER( clowns_audio_1_w );
+WRITE8_HANDLER( clowns_audio_2_w );
+
+MACHINE_DRIVER_EXTERN( shuffle_audio );
+WRITE8_HANDLER( shuffle_audio_1_w );
+WRITE8_HANDLER( shuffle_audio_2_w );
+
+MACHINE_DRIVER_EXTERN( dogpatch_audio );
+WRITE8_HANDLER( dogpatch_audio_w );
+
+MACHINE_DRIVER_EXTERN( spcenctr_audio );
+WRITE8_HANDLER( spcenctr_audio_1_w );
+WRITE8_HANDLER( spcenctr_audio_2_w );
+WRITE8_HANDLER( spcenctr_audio_3_w );
+
+MACHINE_DRIVER_EXTERN( phantom2_audio );
+WRITE8_HANDLER( phantom2_audio_1_w );
+WRITE8_HANDLER( phantom2_audio_2_w );
+
+MACHINE_DRIVER_EXTERN( bowler_audio );
+WRITE8_HANDLER( bowler_audio_1_w );
+WRITE8_HANDLER( bowler_audio_2_w );
+WRITE8_HANDLER( bowler_audio_3_w );
+WRITE8_HANDLER( bowler_audio_4_w );
+WRITE8_HANDLER( bowler_audio_5_w );
+WRITE8_HANDLER( bowler_audio_6_w );
+
+MACHINE_DRIVER_EXTERN( invaders_samples_audio );
+MACHINE_DRIVER_EXTERN( invaders_audio );
+WRITE8_HANDLER( invaders_audio_1_w );
+WRITE8_HANDLER( invaders_audio_2_w );
+
+MACHINE_DRIVER_EXTERN( blueshrk_audio );
+WRITE8_HANDLER( blueshrk_audio_w );
+
+MACHINE_DRIVER_EXTERN( invad2ct_audio );
+WRITE8_HANDLER( invad2ct_audio_1_w );
+WRITE8_HANDLER( invad2ct_audio_2_w );
+WRITE8_HANDLER( invad2ct_audio_3_w );
+WRITE8_HANDLER( invad2ct_audio_4_w );
+
+
+
+/*----------- defined in video/mw8080bw.c -----------*/
+
+VIDEO_UPDATE( mw8080bw );
+
+VIDEO_UPDATE( spcenctr );
+
+VIDEO_UPDATE( phantom2 );
+VIDEO_EOF( phantom2 );
+
+VIDEO_UPDATE( invaders );
diff --git a/src/mame/includes/n64.h b/src/mame/includes/n64.h
new file mode 100644
index 00000000000..8b4877b5daf
--- /dev/null
+++ b/src/mame/includes/n64.h
@@ -0,0 +1,73 @@
+#ifndef _INCLUDES_N64_H_
+#define _INCLUDES_N64_H_
+
+/*----------- defined in video/n64.c -----------*/
+
+extern VIDEO_START( n64 );
+extern VIDEO_UPDATE( n64 );
+extern void rdp_process_list(void);
+
+#define DACRATE_NTSC (48681812)
+#define DACRATE_PAL (49656530)
+#define DACRATE_MPAL (48628316)
+
+#define SP_INTERRUPT 0x1
+#define SI_INTERRUPT 0x2
+#define AI_INTERRUPT 0x4
+#define VI_INTERRUPT 0x8
+#define PI_INTERRUPT 0x10
+#define DP_INTERRUPT 0x20
+
+#define SP_STATUS_HALT 0x0001
+#define SP_STATUS_BROKE 0x0002
+#define SP_STATUS_DMABUSY 0x0004
+#define SP_STATUS_DMAFULL 0x0008
+#define SP_STATUS_IOFULL 0x0010
+#define SP_STATUS_SSTEP 0x0020
+#define SP_STATUS_INTR_BREAK 0x0040
+#define SP_STATUS_SIGNAL0 0x0080
+#define SP_STATUS_SIGNAL1 0x0100
+#define SP_STATUS_SIGNAL2 0x0200
+#define SP_STATUS_SIGNAL3 0x0400
+#define SP_STATUS_SIGNAL4 0x0800
+#define SP_STATUS_SIGNAL5 0x1000
+#define SP_STATUS_SIGNAL6 0x2000
+#define SP_STATUS_SIGNAL7 0x4000
+
+#define DP_STATUS_XBUS_DMA 0x01
+#define DP_STATUS_FREEZE 0x02
+#define DP_STATUS_FLUSH 0x04
+
+/*----------- defined in machine/n64.c -----------*/
+
+extern UINT32 *rdram;
+extern UINT32 *rsp_imem;
+extern UINT32 *rsp_dmem;
+
+extern void signal_rcp_interrupt(int interrupt);
+extern void clear_rcp_interrupt(int interrupt);
+
+
+/* read/write handlers for the N64 subsystems */
+extern READ32_HANDLER( n64_mi_reg_r );
+extern WRITE32_HANDLER( n64_mi_reg_w );
+extern READ32_HANDLER( n64_sp_reg_r );
+extern WRITE32_HANDLER( n64_sp_reg_w );
+extern READ32_HANDLER( n64_dp_reg_r );
+extern WRITE32_HANDLER( n64_dp_reg_w );
+extern READ32_HANDLER( n64_vi_reg_r );
+extern WRITE32_HANDLER( n64_vi_reg_w );
+extern READ32_HANDLER( n64_ai_reg_r );
+extern WRITE32_HANDLER( n64_ai_reg_w );
+extern READ32_HANDLER( n64_pi_reg_r );
+extern WRITE32_HANDLER( n64_pi_reg_w );
+extern READ32_HANDLER( n64_ri_reg_r );
+extern WRITE32_HANDLER( n64_ri_reg_w );
+extern READ32_HANDLER( n64_si_reg_r );
+extern WRITE32_HANDLER( n64_si_reg_w );
+extern READ32_HANDLER( n64_pif_ram_r );
+extern WRITE32_HANDLER( n64_pif_ram_w );
+
+void n64_machine_reset(void);
+
+#endif
diff --git a/src/mame/includes/n8080.h b/src/mame/includes/n8080.h
new file mode 100644
index 00000000000..e9e372dea31
--- /dev/null
+++ b/src/mame/includes/n8080.h
@@ -0,0 +1,32 @@
+/*----------- defined in video/n8080.c -----------*/
+
+extern int helifire_flash;
+
+extern int spacefev_red_screen;
+extern int spacefev_red_cannon;
+
+WRITE8_HANDLER( n8080_video_control_w );
+
+PALETTE_INIT( n8080 );
+PALETTE_INIT( helifire );
+
+VIDEO_START( spacefev );
+VIDEO_START( sheriff );
+VIDEO_START( helifire );
+VIDEO_UPDATE( spacefev );
+VIDEO_UPDATE( sheriff );
+VIDEO_UPDATE( helifire );
+VIDEO_EOF( helifire );
+
+void spacefev_start_red_cannon(void);
+
+
+/*----------- defined in audio/n8080.c -----------*/
+
+MACHINE_DRIVER_EXTERN( spacefev_sound );
+MACHINE_DRIVER_EXTERN( sheriff_sound );
+MACHINE_DRIVER_EXTERN( helifire_sound );
+
+WRITE8_HANDLER( n8080_sound_1_w );
+WRITE8_HANDLER( n8080_sound_2_w );
+
diff --git a/src/mame/includes/nam_cust.h b/src/mame/includes/nam_cust.h
new file mode 100644
index 00000000000..7dcc3e06660
--- /dev/null
+++ b/src/mame/includes/nam_cust.h
@@ -0,0 +1,28 @@
+/* Namco Custom Chip ROM loading Macros */
+
+
+/* the 50XX is a player score controller, used for protection */
+#define ROM_REGION_NAMCO_50XX( region ) \
+ ROM_REGION( 0x800, region, 0 ) /* 2k for the 50xx */ \
+ ROM_LOAD( "50xx.bin", 0x0000, 0x0800, CRC(a0acbaf7) SHA1(f03c79451e73b3a93c1591cdb27fedc9f130508d) ) \
+
+/* the 51XX is an I/O controller */
+#define ROM_REGION_NAMCO_51XX( region ) \
+ ROM_REGION( 0x400, region, 0 ) /* 1k for the 51xx */ \
+ ROM_LOAD( "51xx.bin", 0x0000, 0x0400, CRC(c2f57ef8) SHA1(50de79e0d6a76bda95ffb02fcce369a79e6abfec) ) \
+
+/* the 52XX is a sample player */
+#define ROM_REGION_NAMCO_52XX( region ) \
+ ROM_REGION( 0x400, region, 0 ) /* 1k for the 52xx */ \
+ ROM_LOAD( "52xx.bin", 0x0000, 0x0400, CRC(3257d11e) SHA1(4883b2fdbc99eb7b9906357fcc53915842c2c186) ) \
+
+/* the 53XX is an I/O controller */
+#define ROM_REGION_NAMCO_53XX( region ) \
+ ROM_REGION( 0x400, region, 0 ) /* 1k for the 53xx */ \
+ ROM_LOAD( "53xx.bin", 0x0000, 0x0400, CRC(b326fecb) SHA1(758d8583d658e4f1df93184009d86c3eb8713899) ) \
+
+/* the 54XX is an explosion sound generator */
+#define ROM_REGION_NAMCO_54XX( region ) \
+ ROM_REGION( 0x400, region, 0 ) /* 1k for the 54xx */ \
+ ROM_LOAD( "54xx.bin", 0x0000, 0x0400, CRC(ee7357e0) SHA1(01bdf984a49e8d0cc8761b2cc162fd6434d5afbe) ) \
+
diff --git a/src/mame/includes/namcoic.h b/src/mame/includes/namcoic.h
new file mode 100644
index 00000000000..58caa966cac
--- /dev/null
+++ b/src/mame/includes/namcoic.h
@@ -0,0 +1,175 @@
+/* namcoic.h
+
+Custom Chips: Final Lap Assault LuckyWld System21 NA1/2 NB1/2
+ C45 Land Generator * *
+ C65 I/O Controller * *
+ C68 * *
+ C70 *
+ C95 * *
+ C102 ROZ:Memory Access Control *
+ C106 OBJ:X-Axis Zoom Control * *
+ C107 Land Line Buffer *
+ C116 Screen Waveform Generator * * * *
+ C121 Yamaha YM2151 Sound Gen * * *
+ C123 GFX:Tile Mem Decoder * * * *
+ C134 OBJ:Address Generator * *
+ C135 OBJ:Line matching * *
+ C137 Clock Generator IC * * * * *
+ C138 *
+ C139 Serial I/F Controller * * * *
+ C140 24 Channel PCM * * *
+ C145 GFX:Tile Memory Access * * * *
+ C146 OBJ:Line Buf Steering * *
+ C148 CPU Bus Manager * * * *
+ C149 Mouse/Trackball Decoder * * * *
+ C156 Pixel Stream Combo * * * *
+ C160 Control *
+ C165 *
+ C169 ROZ(B) * *
+ C187 * * *
+ C210 *
+ C215 *
+ C218 *
+ C219 *
+ C329 CPU? *
+ C347 GfxObj *
+ C352 PCM *
+ C355 Motion Obj(B) * * *
+ C373 LAND-related *
+ C382 *
+ C383 *
+ C384 GFX(3) *
+ C385 *
+ C390 Key Custom *
+
+
+General Support
+---------------
+C65 - This is the I/O Microcontroller, handles all input/output devices. 63705 uC, CPU4 in Namco System2.
+C137 - Takes System clock and generates all sub-system clocks, doesnt need emulation, not accessed via CPU
+C139 - Serial Interface Controller
+C148 - Does some Memory Decode, Interrupt Handling, 3 bit PIO port, Bus Controller
+C149 - Does decoding of mouse/trackball input streams for the I/O Controller. (Offset Square wave)
+
+
+Tile Fields Static/Scrolled
+---------------------------
+Combination of these two devices and associated RAM & TileGFX produces a pixel stream that is fed
+into the Pixel stream decoder.
+
+C145 - Tile Screen Memory Access controller
+C123 - Tile Memory decoder Part 1, converts X,Y,Tile into character ROM address index
+
+
+Pixel Stream Decode
+-------------------
+These two devices take the pixel streams from the tilefield generator and the associated graphics board
+and combine them to form an RGB data stream that is fed to the monitor.
+
+C156 - Pixel stream combiner
+Takes tile field & graphics board streams and generates the priorisied pixel, then does the lookup to
+go from palettised to 24bit RGB pixel.
+
+C116 - Screen Waveform Generator
+Takes RGB24 pixel stream from C156 and generates the waveform signals for the monitor, also generates
+the line interrupt and controls screen blanking,shift, etc.
+
+Object Control
+--------------
+C106 - Generates memory output clocks to generate X-Axis Zoom for Line Buffer Writes
+C134 - Object Memory Address Generator. Sequences the sprite memory contents to the hardware.
+C135 - Checks is object is displayed on Current output line.
+C146 - Steers the Decode Object Pixel data to the correct line buffer A or B
+
+ROZ
+---
+C102 - Controls CPU access to ROZ Memory Area.
+*/
+
+/***********************************************************************************/
+
+/*----------- defined in drivers/namcoic.c -----------*/
+
+void namco_tilemap_init(
+ int gfxbank, void *pMaskROM,
+ void (*cb)( UINT16 code, int *gfx, int *mask) );
+void namco_tilemap_draw( mame_bitmap *bitmap, const rectangle *cliprect, int pri );
+void namco_tilemap_invalidate( void );
+WRITE16_HANDLER( namco_tilemapvideoram16_w );
+READ16_HANDLER( namco_tilemapvideoram16_r );
+WRITE16_HANDLER( namco_tilemapcontrol16_w );
+READ16_HANDLER( namco_tilemapcontrol16_r );
+
+READ32_HANDLER( namco_tilemapvideoram32_r );
+WRITE32_HANDLER( namco_tilemapvideoram32_w );
+READ32_HANDLER( namco_tilemapcontrol32_r );
+WRITE32_HANDLER( namco_tilemapcontrol32_w );
+
+READ32_HANDLER( namco_tilemapvideoram32_le_r );
+WRITE32_HANDLER( namco_tilemapvideoram32_le_w );
+READ32_HANDLER( namco_tilemapcontrol32_le_r );
+WRITE32_HANDLER( namco_tilemapcontrol32_le_w );
+
+/***********************************************************************************/
+
+/* Namco System II Sprite Rendering */
+void namcos2_draw_sprites(running_machine *machine, mame_bitmap *bitmap, const rectangle *cliprect, int pri, int control );
+
+void namcos2_draw_sprites_metalhawk(running_machine *machine, mame_bitmap *bitmap, const rectangle *cliprect, int pri );
+
+/***********************************************************************************/
+/* C355 Motion Object Emulation */
+
+/* for palXOR, supply either 0x0 (normal) or 0xf (palette mapping reversed) */
+void namco_obj_init( int gfxbank, int palXOR, int (*code2tile)( int code ) );
+void namco_obj_draw(running_machine *machine, mame_bitmap *bitmap, const rectangle *cliprect, int pri );
+
+WRITE16_HANDLER( namco_obj16_w );
+READ16_HANDLER( namco_obj16_r );
+
+WRITE32_HANDLER( namco_obj32_w );
+READ32_HANDLER( namco_obj32_r );
+WRITE32_HANDLER( namco_obj32_le_w );
+READ32_HANDLER( namco_obj32_le_r );
+
+WRITE16_HANDLER( namco_spritepos16_w );
+READ16_HANDLER( namco_spritepos16_r );
+
+WRITE32_HANDLER( namco_spritepos32_w );
+READ32_HANDLER( namco_spritepos32_r );
+
+/***********************************************************************************/
+/* C169 ROZ Layer Emulation */
+
+void namco_roz_init( int gfxbank, int maskregion );
+void namco_roz_draw( mame_bitmap *bitmap, const rectangle *cliprect, int pri );
+
+READ16_HANDLER( namco_rozcontrol16_r );
+WRITE16_HANDLER( namco_rozcontrol16_w );
+READ16_HANDLER( namco_rozbank16_r );
+WRITE16_HANDLER( namco_rozbank16_w );
+READ16_HANDLER( namco_rozvideoram16_r );
+WRITE16_HANDLER( namco_rozvideoram16_w );
+
+READ32_HANDLER( namco_rozcontrol32_r );
+WRITE32_HANDLER( namco_rozcontrol32_w );
+READ32_HANDLER( namco_rozcontrol32_le_r );
+WRITE32_HANDLER( namco_rozcontrol32_le_w );
+READ32_HANDLER( namco_rozbank32_r );
+WRITE32_HANDLER( namco_rozbank32_w );
+READ32_HANDLER( namco_rozvideoram32_r );
+WRITE32_HANDLER( namco_rozvideoram32_w );
+READ32_HANDLER( namco_rozvideoram32_le_r );
+WRITE32_HANDLER( namco_rozvideoram32_le_w );
+
+/***********************************************************************************/
+/* C45 Land (Road) Emulation */
+
+void namco_road_init(running_machine *machine, int gfxbank );
+void namco_road_set_transparent_color(pen_t pen);
+void namco_road_draw(running_machine *machine, mame_bitmap *bitmap, const rectangle *cliprect, int pri );
+
+READ16_HANDLER( namco_road16_r );
+WRITE16_HANDLER( namco_road16_w );
+
+/***********************************************************************************/
diff --git a/src/mame/includes/namcona1.h b/src/mame/includes/namcona1.h
new file mode 100644
index 00000000000..d429d1cabea
--- /dev/null
+++ b/src/mame/includes/namcona1.h
@@ -0,0 +1,40 @@
+/*----------- defined in drivers/namcona1.c -----------*/
+
+extern int namcona1_gametype;
+
+
+/*----------- defined in video/namcona1.c -----------*/
+
+enum
+{
+ NAMCO_CGANGPZL,
+ NAMCO_EMERALDA,
+ NAMCO_KNCKHEAD,
+ NAMCO_BKRTMAQ,
+ NAMCO_EXBANIA,
+ NAMCO_QUIZTOU,
+ NAMCO_SWCOURT,
+ NAMCO_TINKLPIT,
+ NAMCO_NUMANATH,
+ NAMCO_FA,
+ NAMCO_XDAY2
+};
+
+#define NA1_NVRAM_SIZE (0x800)
+
+extern UINT16 *namcona1_workram;
+extern UINT16 *namcona1_vreg;
+extern UINT16 *namcona1_scroll;
+extern UINT16 *namcona1_sparevram;
+
+extern WRITE16_HANDLER( namcona1_videoram_w );
+extern READ16_HANDLER( namcona1_videoram_r );
+
+extern READ16_HANDLER( namcona1_gfxram_r );
+extern WRITE16_HANDLER( namcona1_gfxram_w );
+
+extern READ16_HANDLER( namcona1_paletteram_r );
+extern WRITE16_HANDLER( namcona1_paletteram_w );
+
+extern VIDEO_UPDATE( namcona1 );
+extern VIDEO_START( namcona1 );
diff --git a/src/mame/includes/namconb1.h b/src/mame/includes/namconb1.h
new file mode 100644
index 00000000000..566b785ac6d
--- /dev/null
+++ b/src/mame/includes/namconb1.h
@@ -0,0 +1,28 @@
+/*----------- defined in drivers/namconb1.c -----------*/
+
+extern UINT32 *namconb1_workram32;
+extern UINT32 *namconb1_spritebank32;
+extern UINT32 *namconb1_tilebank32;
+
+/*----------- defined in video/namconb1.c -----------*/
+
+#define NAMCONB1_HTOTAL (288) /* wrong */
+#define NAMCONB1_HBSTART (288)
+#define NAMCONB1_VTOTAL (262) /* needs to be checked */
+#define NAMCONB1_VBSTART (224)
+
+#define NAMCONB1_TILEMASKREGION REGION_GFX1
+#define NAMCONB1_TILEGFXREGION REGION_GFX2
+#define NAMCONB1_SPRITEGFXREGION REGION_GFX3
+#define NAMCONB1_ROTMASKREGION REGION_GFX4
+#define NAMCONB1_ROTGFXREGION REGION_GFX5
+
+#define NAMCONB1_TILEGFX 0
+#define NAMCONB1_SPRITEGFX 1
+#define NAMCONB1_ROTGFX 2
+
+VIDEO_UPDATE( namconb1 );
+VIDEO_START( namconb1 );
+
+VIDEO_UPDATE( namconb2 );
+VIDEO_START( namconb2 );
diff --git a/src/mame/includes/namcond1.h b/src/mame/includes/namcond1.h
new file mode 100644
index 00000000000..8fe0142021a
--- /dev/null
+++ b/src/mame/includes/namcond1.h
@@ -0,0 +1,30 @@
+/***************************************************************************
+
+ namcond1.h
+
+ Common functions & declarations for the Namco ND-1 driver
+
+***************************************************************************/
+
+#define GFX_8X8_4BIT 0
+#define GFX_16X16_4BIT 1
+#define GFX_32X32_4BIT 2
+#define GFX_64X64_4BIT 3
+#define GFX_8X8_8BIT 4
+#define GFX_16X16_8BIT 5
+
+/*----------- defined in machine/namcond1.c -----------*/
+
+extern UINT8 namcond1_gfxbank;
+
+extern UINT8 namcond1_h8_irq5_enabled;
+extern UINT16 *namcond1_shared_ram;
+
+extern READ16_HANDLER( namcond1_shared_ram_r );
+extern READ16_HANDLER( namcond1_cuskey_r );
+extern WRITE16_HANDLER( namcond1_shared_ram_w );
+extern WRITE16_HANDLER( namcond1_cuskey_w );
+
+MACHINE_START( namcond1 );
+MACHINE_RESET( namcond1 );
+
diff --git a/src/mame/includes/namcos2.h b/src/mame/includes/namcos2.h
new file mode 100644
index 00000000000..d20b6b393a4
--- /dev/null
+++ b/src/mame/includes/namcos2.h
@@ -0,0 +1,246 @@
+/***************************************************************************
+
+ namcos2.h
+
+ Common functions & declarations for the Namco System 2 driver
+
+***************************************************************************/
+
+/* CPU reference numbers */
+
+#define CPU_MASTER 0
+#define CPU_SLAVE 1
+#define CPU_SOUND 2
+#define CPU_MCU 3
+#define CPU_GPU 5
+
+
+/*********************************************/
+/* IF GAME SPECIFIC HACKS ARE REQUIRED THEN */
+/* USE THE namcos2_gametype VARIABLE TO FIND */
+/* OUT WHAT GAME IS RUNNING */
+/*********************************************/
+
+enum
+{
+ /* Namco System 2 */
+ NAMCOS2_ASSAULT = 0x1000,
+ NAMCOS2_ASSAULT_JP,
+ NAMCOS2_ASSAULT_PLUS,
+ NAMCOS2_BUBBLE_TROUBLE,
+ NAMCOS2_BURNING_FORCE,
+ NAMCOS2_COSMO_GANG,
+ NAMCOS2_COSMO_GANG_US,
+ NAMCOS2_DIRT_FOX,
+ NAMCOS2_DIRT_FOX_JP,
+ NAMCOS2_DRAGON_SABER,
+ NAMCOS2_FINAL_LAP,
+ NAMCOS2_FINAL_LAP_2,
+ NAMCOS2_FINAL_LAP_3,
+ NAMCOS2_FINEST_HOUR,
+ NAMCOS2_FOUR_TRAX,
+ NAMCOS2_GOLLY_GHOST,
+ NAMCOS2_LUCKY_AND_WILD,
+ NAMCOS2_MARVEL_LAND,
+ NAMCOS2_METAL_HAWK,
+ NAMCOS2_MIRAI_NINJA,
+ NAMCOS2_ORDYNE,
+ NAMCOS2_PHELIOS,
+ NAMCOS2_ROLLING_THUNDER_2,
+ NAMCOS2_STEEL_GUNNER,
+ NAMCOS2_STEEL_GUNNER_2,
+ NAMCOS2_SUPER_WSTADIUM,
+ NAMCOS2_SUPER_WSTADIUM_92,
+ NAMCOS2_SUPER_WSTADIUM_92T,
+ NAMCOS2_SUPER_WSTADIUM_93,
+ NAMCOS2_SUZUKA_8_HOURS,
+ NAMCOS2_SUZUKA_8_HOURS_2,
+ NAMCOS2_VALKYRIE,
+ NAMCOS2_KYUUKAI_DOUCHUUKI,
+
+ /* Namco System21 */
+ NAMCOS21_AIRCOMBAT,
+ NAMCOS21_STARBLADE,
+ NAMCOS21_CYBERSLED,
+ NAMCOS21_SOLVALOU,
+ NAMCOS21_WINRUN91,
+ NAMCOS21_DRIVERS_EYES,
+
+ /* Namco NB1 */
+ NAMCONB1_NEBULRAY,
+ NAMCONB1_GUNBULET,
+ NAMCONB1_GSLGR94U,
+ NAMCONB1_SWS95,
+ NAMCONB1_SWS96,
+ NAMCONB1_SWS97,
+ NAMCONB1_VSHOOT,
+
+ /* Namco NB2 */
+ NAMCONB2_OUTFOXIES,
+ NAMCONB2_MACH_BREAKERS,
+
+ /* Namco System FL */
+ NAMCOFL_SPEED_RACER,
+ NAMCOFL_FINAL_LAP_R
+};
+
+/*----------- defined in video/namcos2.c -----------*/
+
+#define NAMCOS21_NUM_COLORS 0x8000
+
+VIDEO_START( namcos2 );
+VIDEO_UPDATE( namcos2_default );
+
+VIDEO_START( finallap );
+VIDEO_UPDATE( finallap );
+
+VIDEO_START( luckywld );
+VIDEO_UPDATE( luckywld );
+
+VIDEO_START( metlhawk );
+VIDEO_UPDATE( metlhawk );
+
+VIDEO_START( sgunner );
+VIDEO_UPDATE( sgunner );
+
+extern UINT16 *namcos2_sprite_ram;
+WRITE16_HANDLER( namcos2_sprite_ram_w );
+READ16_HANDLER( namcos2_sprite_ram_r );
+
+int namcos2_GetPosIrqScanline( void );
+
+WRITE16_HANDLER( namcos2_gfx_ctrl_w );
+READ16_HANDLER( namcos2_gfx_ctrl_r );
+
+/**************************************************************/
+/* Shared video palette function handlers */
+/**************************************************************/
+READ16_HANDLER( namcos2_68k_video_palette_r );
+WRITE16_HANDLER( namcos2_68k_video_palette_w );
+
+#define VIRTUAL_PALETTE_BANKS 30
+extern UINT16 *namcos2_68k_palette_ram;
+extern size_t namcos2_68k_palette_size;
+
+/**************************************************************/
+/* ROZ - Rotate & Zoom memory function handlers */
+/**************************************************************/
+
+WRITE16_HANDLER( namcos2_68k_roz_ctrl_w );
+READ16_HANDLER( namcos2_68k_roz_ctrl_r );
+
+WRITE16_HANDLER( namcos2_68k_roz_ram_w );
+READ16_HANDLER( namcos2_68k_roz_ram_r );
+extern UINT16 *namcos2_68k_roz_ram;
+
+/*----------- defined in machine/namcos2.c -----------*/
+
+extern int namcos2_gametype;
+
+MACHINE_RESET( namcos2 );
+
+READ16_HANDLER( namcos2_flap_prot_r );
+
+/**************************************************************/
+/* EEPROM memory function handlers */
+/**************************************************************/
+#define NAMCOS2_68K_EEPROM_W namcos2_68k_eeprom_w
+#define NAMCOS2_68K_EEPROM_R namcos2_68k_eeprom_r
+NVRAM_HANDLER( namcos2 );
+WRITE16_HANDLER( namcos2_68k_eeprom_w );
+READ16_HANDLER( namcos2_68k_eeprom_r );
+
+/**************************************************************/
+/* Shared data ROM memory handlerhandlers */
+/**************************************************************/
+READ16_HANDLER( namcos2_68k_data_rom_r );
+
+/**************************************************************/
+/* Shared serial communications processory (CPU5 ????) */
+/**************************************************************/
+READ16_HANDLER( namcos2_68k_serial_comms_ram_r );
+WRITE16_HANDLER( namcos2_68k_serial_comms_ram_w );
+READ16_HANDLER( namcos2_68k_serial_comms_ctrl_r );
+WRITE16_HANDLER( namcos2_68k_serial_comms_ctrl_w );
+
+extern UINT16 namcos2_68k_serial_comms_ctrl[];
+extern UINT16 *namcos2_68k_serial_comms_ram;
+
+/**************************************************************/
+/* Shared protection/random number generator */
+/**************************************************************/
+READ16_HANDLER( namcos2_68k_key_r );
+WRITE16_HANDLER( namcos2_68k_key_w );
+
+/**************************************************************/
+/* Non-shared memory custom IO device - IRQ/Inputs/Outputs */
+/**************************************************************/
+
+#define NAMCOS2_C148_0 0 /* 0x1c0000 */
+#define NAMCOS2_C148_1 1 /* 0x1c2000 */
+#define NAMCOS2_C148_2 2 /* 0x1c4000 */
+#define NAMCOS2_C148_CPUIRQ 3 /* 0x1c6000 */
+#define NAMCOS2_C148_EXIRQ 4 /* 0x1c8000 */
+#define NAMCOS2_C148_POSIRQ 5 /* 0x1ca000 */
+#define NAMCOS2_C148_SERIRQ 6 /* 0x1cc000 */
+#define NAMCOS2_C148_VBLANKIRQ 7 /* 0x1ce000 */
+
+extern UINT16 namcos2_68k_master_C148[];
+extern UINT16 namcos2_68k_slave_C148[];
+extern UINT16 namcos2_68k_gpu_C148[];
+
+WRITE16_HANDLER( namcos2_68k_master_C148_w );
+READ16_HANDLER( namcos2_68k_master_C148_r );
+INTERRUPT_GEN( namcos2_68k_master_vblank );
+
+WRITE16_HANDLER( namcos2_68k_slave_C148_w );
+READ16_HANDLER( namcos2_68k_slave_C148_r );
+INTERRUPT_GEN( namcos2_68k_slave_vblank );
+
+WRITE16_HANDLER( namcos2_68k_gpu_C148_w );
+READ16_HANDLER( namcos2_68k_gpu_C148_r );
+INTERRUPT_GEN( namcos2_68k_gpu_vblank );
+
+/**************************************************************/
+/* MASTER CPU RAM MEMORY */
+/**************************************************************/
+
+#define NAMCOS2_68K_MASTER_RAM_W MWA16_BANK3
+#define NAMCOS2_68K_MASTER_RAM_R MRA16_BANK3
+
+/**************************************************************/
+/* SLAVE CPU RAM MEMORY */
+/**************************************************************/
+
+#define NAMCOS2_68K_SLAVE_RAM_W MWA16_BANK4
+#define NAMCOS2_68K_SLAVE_RAM_R MRA16_BANK4
+
+/**************************************************************/
+/* */
+/**************************************************************/
+#define BANKED_SOUND_ROM_R MRA8_BANK6
+#define CPU3_ROM1 6 /* Bank number */
+
+/**************************************************************/
+/* Sound CPU support handlers - 6809 */
+/**************************************************************/
+
+WRITE8_HANDLER( namcos2_sound_bankselect_w );
+
+/**************************************************************/
+/* MCU Specific support handlers - HD63705 */
+/**************************************************************/
+
+WRITE8_HANDLER( namcos2_mcu_analog_ctrl_w );
+READ8_HANDLER( namcos2_mcu_analog_ctrl_r );
+
+WRITE8_HANDLER( namcos2_mcu_analog_port_w );
+READ8_HANDLER( namcos2_mcu_analog_port_r );
+
+WRITE8_HANDLER( namcos2_mcu_port_d_w );
+READ8_HANDLER( namcos2_mcu_port_d_r );
+
+READ8_HANDLER( namcos2_input_port_0_r );
+READ8_HANDLER( namcos2_input_port_10_r );
+READ8_HANDLER( namcos2_input_port_12_r );
+
diff --git a/src/mame/includes/namcos21.h b/src/mame/includes/namcos21.h
new file mode 100644
index 00000000000..001e3d1e13e
--- /dev/null
+++ b/src/mame/includes/namcos21.h
@@ -0,0 +1,23 @@
+/**
+ * @file namcos21.h
+ */
+
+#define NAMCOS21_POLY_FRAME_WIDTH 496
+#define NAMCOS21_POLY_FRAME_HEIGHT 480
+
+/*----------- defined in video/namcos21.c -----------*/
+
+extern void namcos21_ClearPolyFrameBuffer( void );
+extern void namcos21_DrawQuad( int sx[4], int sy[4], int zcode[4], int color );
+
+extern READ16_HANDLER(winrun_gpu_color_r);
+extern WRITE16_HANDLER(winrun_gpu_color_w);
+
+extern READ16_HANDLER(winrun_gpu_videoram_r);
+extern WRITE16_HANDLER(winrun_gpu_videoram_w);
+
+extern READ16_HANDLER(winrun_gpu_register_r);
+extern WRITE16_HANDLER(winrun_gpu_register_w);
+
+extern VIDEO_START( namcos21 ) ;
+extern VIDEO_UPDATE( namcos21 );
diff --git a/src/mame/includes/namcos22.h b/src/mame/includes/namcos22.h
new file mode 100644
index 00000000000..66987042828
--- /dev/null
+++ b/src/mame/includes/namcos22.h
@@ -0,0 +1,83 @@
+#define USE_NAMCOS22_SPEED_HACK
+
+#define REGION_CGRAM REGION_GFX1
+#define REGION_TEXTURE_TILE REGION_GFX2
+#define REGION_TEXTURE_TILEMAP REGION_GFX3
+#define REGION_POINTROM REGION_GFX4
+#define REGION_SPRITE REGION_GFX5
+
+#define GFX_CHAR 0
+#define GFX_TEXTURE_TILE 1
+#define GFX_SPRITE 2
+
+extern enum namcos22_gametype
+{
+ NAMCOS22_AIR_COMBAT22,
+ NAMCOS22_ALPINE_RACER,
+ NAMCOS22_CYBER_COMMANDO,
+ NAMCOS22_CYBER_CYCLES,
+ NAMCOS22_PROP_CYCLE,
+ NAMCOS22_RAVE_RACER,
+ NAMCOS22_RIDGE_RACER,
+ NAMCOS22_RIDGE_RACER2,
+ NAMCOS22_TIME_CRISIS,
+ NAMCOS22_VICTORY_LAP,
+ NAMCOS22_ACE_DRIVER,
+ NAMCOS22_ALPINE_RACER_2,
+ NAMCOS22_ALPINE_SURFER
+} namcos22_gametype;
+
+#define NAMCOS22_NUM_ROWS 30
+#define NAMCOS22_NUM_COLS 40
+
+#define NAMCOS22_PALETTE_SIZE 0x8000
+
+/*----------- defined in drivers/namcos22.c -----------*/
+
+extern const gfx_layout namcos22_cg_layout;
+
+/*----------- defined in video/namcos22.c -----------*/
+
+extern UINT32 *namcos22_cgram;
+extern UINT32 *namcos22_textram;
+extern UINT32 *namcos22_polygonram;
+extern UINT32 *namcos22_gamma;
+extern UINT32 *namcos22_vics_data;
+extern UINT32 *namcos22_vics_control;
+extern UINT32 *namcos22_czattr;
+extern UINT32 *namcos22_tilemapattr;
+
+WRITE16_HANDLER( namcos22_dspram16_bank_w );
+READ16_HANDLER( namcos22_dspram16_r );
+WRITE16_HANDLER( namcos22_dspram16_w );
+
+READ32_HANDLER( namcos22_cgram_r );
+WRITE32_HANDLER( namcos22_cgram_w );
+
+READ32_HANDLER( namcos22_czram_r );
+WRITE32_HANDLER( namcos22_czram_w );
+
+WRITE32_HANDLER(namcos22_port800000_w);
+
+READ32_HANDLER( namcos22_paletteram_r );
+WRITE32_HANDLER( namcos22_paletteram_w );
+
+READ32_HANDLER( namcos22_textram_r );
+WRITE32_HANDLER( namcos22_textram_w );
+
+READ32_HANDLER( namcos22_gamma_r );
+WRITE32_HANDLER( namcos22_gamma_w );
+
+READ32_HANDLER( namcos22_dspram_r );
+WRITE32_HANDLER( namcos22_dspram_w );
+
+
+VIDEO_START( namcos22 );
+VIDEO_UPDATE( namcos22 );
+
+VIDEO_START( namcos22s );
+VIDEO_UPDATE( namcos22s );
+
+void namcos22_draw_direct_poly( const UINT16 *pSource );
+extern UINT32 namcos22_point_rom_r( offs_t offs );
+extern void namcos22_enable_slave_simulation( void );
diff --git a/src/mame/includes/nb1413m3.h b/src/mame/includes/nb1413m3.h
new file mode 100644
index 00000000000..977482fe4a4
--- /dev/null
+++ b/src/mame/includes/nb1413m3.h
@@ -0,0 +1,263 @@
+/******************************************************************************
+
+ Machine Hardware for Nichibutsu Mahjong series.
+
+ Driver by Takahiro Nogi <nogi@kt.rim.or.jp> 1999/11/05 -
+
+******************************************************************************/
+
+enum {
+ NB1413M3_NONE = 0,
+ // unknown
+ NB1413M3_JOKERMJN,
+ NB1413M3_JANGOU,
+ NB1413M3_JNGOLADY,
+ NB1413M3_JNGNIGHT,
+ NB1413M3_MJKING,
+ NB1413M3_NIGHTGAL,
+ NB1413M3_NGALSUMR,
+ NB1413M3_ROYALNGT,
+ NB1413M3_RYLQUEEN,
+ NB1413M3_SWEETGAL,
+ NB1413M3_SEXYGAL,
+ // NB1411M1
+ NB1413M3_PASTELG,
+ NB1413M3_THREEDS,
+ // NB1413M3
+ NB1413M3_CRYSTALG,
+ NB1413M3_CRYSTAL2,
+ NB1413M3_NIGHTLOV,
+ NB1413M3_CITYLOVE,
+ NB1413M3_MCITYLOV,
+ NB1413M3_SECOLOVE,
+ NB1413M3_HOUSEMNQ,
+ NB1413M3_HOUSEMN2,
+ NB1413M3_LIVEGAL,
+ NB1413M3_BIJOKKOY,
+ NB1413M3_IEMOTO,
+ NB1413M3_IEMOTOM,
+ NB1413M3_RYUUHA,
+ NB1413M3_SEIHA,
+ NB1413M3_SEIHAM,
+ NB1413M3_HYHOO,
+ NB1413M3_HYHOO2,
+ NB1413M3_SWINGGAL,
+ NB1413M3_BIJOKKOG,
+ NB1413M3_OJOUSAN,
+ NB1413M3_OJOUSANM,
+ NB1413M3_KORINAI,
+ NB1413M3_KORINAIM,
+ NB1413M3_MJCAMERA,
+ NB1413M3_MJCAMERB,
+ NB1413M3_MMCAMERA,
+ NB1413M3_TAIWANMJ,
+ NB1413M3_TAIWANMB,
+ NB1413M3_OTONANO,
+ NB1413M3_ABUNAI,
+ NB1413M3_MJSIKAKU,
+ NB1413M3_MMSIKAKU,
+ NB1413M3_MSJIKEN,
+ NB1413M3_HANAMOMO,
+ NB1413M3_TELMAHJN,
+ NB1413M3_GIONBANA,
+ NB1413M3_MGION,
+ NB1413M3_OMOTESND,
+ NB1413M3_SCANDAL,
+ NB1413M3_SCANDALM,
+ NB1413M3_MGMEN89,
+ NB1413M3_OHPYEPEE,
+ NB1413M3_TOUGENK,
+ NB1413M3_MJFOCUS,
+ NB1413M3_MJFOCUSM,
+ NB1413M3_GALKOKU,
+ NB1413M3_MJNANPAS,
+ NB1413M3_BANANADR,
+ NB1413M3_GALKAIKA,
+ NB1413M3_MCONTEST,
+ NB1413M3_UCHUUAI,
+ NB1413M3_TOKIMBSJ,
+ NB1413M3_TOKYOGAL,
+ NB1413M3_TRIPLEW1,
+ NB1413M3_NTOPSTAR,
+ NB1413M3_MLADYHTR,
+ NB1413M3_PSTADIUM,
+ NB1413M3_TRIPLEW2,
+ NB1413M3_CLUB90S,
+ NB1413M3_LOVEHOUS,
+ NB1413M3_CHINMOKU,
+ NB1413M3_VANILLA,
+ NB1413M3_MJLSTORY,
+ NB1413M3_QMHAYAKU,
+ NB1413M3_MJGOTTUB,
+ NB1413M3_MAIKO,
+ NB1413M3_MMAIKO,
+ NB1413M3_HANAOJI,
+ NB1413M3_KAGUYA,
+ NB1413M3_KAGUYA2,
+ NB1413M3_APPAREL,
+ NB1413M3_AV2MJ1BB,
+ NB1413M3_AV2MJ2RG,
+ NB1413M3_FINALBNY,
+ NB1413M3_HYOUBAN,
+ NB1413M3_ORANGEC,
+ NB1413M3_ORANGECI,
+ NB1413M3_VIPCLUB,
+ NB1413M3_IDHIMITU,
+ NB1413M3_KANATUEN,
+ NB1413M3_KYUHITO,
+ NB1413M3_PAIRSNB,
+ NB1413M3_PAIRSTEN
+};
+
+#define NB1413M3_VCR_NOP 0x00
+#define NB1413M3_VCR_POWER 0x01
+#define NB1413M3_VCR_STOP 0x02
+#define NB1413M3_VCR_REWIND 0x04
+#define NB1413M3_VCR_PLAY 0x08
+#define NB1413M3_VCR_FFORWARD 0x10
+#define NB1413M3_VCR_PAUSE 0x20
+
+#define NBMJCTRL_PORT1 \
+ PORT_START /* (3) PORT 1-1 */ \
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 ) \
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_KAN ) \
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_M ) \
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_I ) \
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_E ) \
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_A ) \
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) \
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+#define NBMJCTRL_PORT2 \
+ PORT_START /* (4) PORT 1-2 */ \
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_BET ) \
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_REACH ) \
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_N ) \
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_J ) \
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_F ) \
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_B ) \
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) \
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+#define NBMJCTRL_PORT3 \
+ PORT_START /* (5) PORT 1-3 */ \
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) \
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_RON ) \
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_CHI ) \
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_K ) \
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_G ) \
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_C ) \
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) \
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+#define NBMJCTRL_PORT4 \
+ PORT_START /* (6) PORT 1-4 */ \
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) \
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) \
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_PON ) \
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_L ) \
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_H ) \
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_D ) \
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) \
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+#define NBMJCTRL_PORT5 \
+ PORT_START /* (7) PORT 1-5 */ \
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Mahjong Small") PORT_CODE(KEYCODE_BACKSPACE) \
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Mahjong Big") PORT_CODE(KEYCODE_ENTER) \
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_FLIP_FLOP ) \
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_DOUBLE_UP ) \
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_SCORE ) \
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_LAST_CHANCE ) \
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) \
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+#define NBMJCTRL_PORT6 \
+ PORT_START /* (6) PORT 2-1 */ \
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START2 ) \
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_KAN ) PORT_PLAYER(2)\
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_M ) PORT_PLAYER(2)\
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_I ) PORT_PLAYER(2)\
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_E ) PORT_PLAYER(2)\
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_A ) PORT_PLAYER(2)\
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) \
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+#define NBMJCTRL_PORT7 \
+ PORT_START /* (7) PORT 2-2 */ \
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_BET ) PORT_PLAYER(2)\
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_REACH ) PORT_PLAYER(2)\
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_N ) PORT_PLAYER(2)\
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_J ) PORT_PLAYER(2)\
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_F ) PORT_PLAYER(2)\
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_B ) PORT_PLAYER(2)\
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) \
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+#define NBMJCTRL_PORT8 \
+ PORT_START /* (8) PORT 2-3 */ \
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) \
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_RON ) PORT_PLAYER(2)\
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_CHI ) PORT_PLAYER(2)\
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_K ) PORT_PLAYER(2)\
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_G ) PORT_PLAYER(2)\
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_C ) PORT_PLAYER(2)\
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) \
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+#define NBMJCTRL_PORT9 \
+ PORT_START /* (9) PORT 2-4 */ \
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) \
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) \
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_PON ) PORT_PLAYER(2)\
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_L ) PORT_PLAYER(2)\
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_H ) PORT_PLAYER(2)\
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_D ) PORT_PLAYER(2)\
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) \
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+#define NBMJCTRL_PORT10 \
+ PORT_START /* (10) PORT 2-5 */ \
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Mahjong Small") \
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Mahjong Big") \
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_FLIP_FLOP ) PORT_PLAYER(2)\
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_DOUBLE_UP ) PORT_PLAYER(2)\
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_SCORE ) PORT_PLAYER(2)\
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_LAST_CHANCE ) PORT_PLAYER(2)\
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) \
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+/*----------- defined in machine/nb1413m3.c -----------*/
+
+MACHINE_RESET( nb1413m3 );
+WRITE8_HANDLER( nb1413m3_nmi_clock_w );
+INTERRUPT_GEN( nb1413m3_interrupt );
+NVRAM_HANDLER( nb1413m3 );
+READ8_HANDLER( nb1413m3_sndrom_r );
+WRITE8_HANDLER( nb1413m3_sndrombank1_w );
+WRITE8_HANDLER( nb1413m3_sndrombank2_w );
+READ8_HANDLER( nb1413m3_gfxrom_r );
+WRITE8_HANDLER( nb1413m3_gfxrombank_w );
+WRITE8_HANDLER( nb1413m3_gfxradr_l_w );
+WRITE8_HANDLER( nb1413m3_gfxradr_h_w );
+WRITE8_HANDLER( nb1413m3_inputportsel_w );
+READ8_HANDLER( nb1413m3_inputport0_r );
+READ8_HANDLER( nb1413m3_inputport1_r );
+READ8_HANDLER( nb1413m3_inputport2_r );
+READ8_HANDLER( nb1413m3_inputport3_r );
+READ8_HANDLER( nb1413m3_dipsw1_r );
+READ8_HANDLER( nb1413m3_dipsw2_r );
+READ8_HANDLER( nb1413m3_dipsw3_l_r );
+READ8_HANDLER( nb1413m3_dipsw3_h_r );
+WRITE8_HANDLER( nb1413m3_outcoin_w );
+WRITE8_HANDLER( nb1413m3_vcrctrl_w );
+
+extern int nb1413m3_type;
+extern int nb1413m3_sndromregion;
+extern int nb1413m3_sndrombank1;
+extern int nb1413m3_sndrombank2;
+extern int nb1413m3_busyctr;
+extern int nb1413m3_busyflag;
+extern int nb1413m3_inputport;
+extern UINT8 *nb1413m3_nvram;
+extern size_t nb1413m3_nvram_size;
diff --git a/src/mame/includes/neogeo.h b/src/mame/includes/neogeo.h
new file mode 100644
index 00000000000..33935de1b6d
--- /dev/null
+++ b/src/mame/includes/neogeo.h
@@ -0,0 +1,154 @@
+/*************************************************************************
+
+ Neo-Geo hardware
+
+*************************************************************************/
+
+
+#define VERBOSE (0)
+
+#define NEOGEO_MASTER_CLOCK (24000000)
+#define NEOGEO_MAIN_CPU_CLOCK (NEOGEO_MASTER_CLOCK / 2)
+#define NEOGEO_AUDIO_CPU_CLOCK (NEOGEO_MASTER_CLOCK / 6)
+#define NEOGEO_YM2610_CLOCK (NEOGEO_MASTER_CLOCK / 3)
+#define NEOGEO_PIXEL_CLOCK (NEOGEO_MASTER_CLOCK / 4)
+#define NEOGEO_HTOTAL (0x180)
+#define NEOGEO_HBEND (0x01e) /* this should really be 29.5 */
+#define NEOGEO_HBSTART (0x15e) /* this should really be 349.5 */
+#define NEOGEO_VTOTAL (0x108)
+#define NEOGEO_VBEND (0x010)
+#define NEOGEO_VBSTART (0x0f0)
+#define NEOGEO_VSSTART (0x000)
+#define NEOGEO_VBLANK_RELOAD_HPOS (0x11f)
+
+#define NEOGEO_REGION_MAIN_CPU_BIOS (REGION_USER1)
+#define NEOGEO_REGION_MAIN_CPU_CARTRIDGE (REGION_CPU1)
+#define NEOGEO_REGION_AUDIO_CPU_BIOS (REGION_USER2)
+#define NEOGEO_REGION_AUDIO_CPU_CARTRIDGE (REGION_CPU2)
+#define NEOGEO_REGION_AUDIO_CPU_ENCRYPTED (REGION_USER3)
+#define NEOGEO_REGION_FIXED_LAYER_BIOS (REGION_GFX2)
+#define NEOGEO_REGION_FIXED_LAYER_CARTRIDGE (REGION_GFX1)
+#define NEOGEO_REGION_SPRITES (REGION_GFX3)
+#define NEOGEO_REGION_AUDIO_DATA_1 (REGION_SOUND1)
+#define NEOGEO_REGION_AUDIO_DATA_2 (REGION_SOUND2)
+#define NEOGEO_REGION_ZOOM_Y_TABLE (REGION_GFX4)
+
+#define NEOGEO_BANK_AUDIO_CPU_CART_BANK (1)
+/* do not use 2, 3 and 4 */
+#define NEOGEO_BANK_CARTRIDGE (5)
+#define NEOGEO_BANK_BIOS (6)
+#define NEOGEO_BANK_VECTORS (7)
+#define NEOGEO_BANK_EXTRA_RAM (8)
+#define NEOGEO_BANK_AUDIO_CPU_MAIN_BANK (9)
+
+
+/*----------- defined in drivers/neogeo.c -----------*/
+
+void neogeo_set_display_counter_msb(UINT16 data);
+void neogeo_set_display_counter_lsb(UINT16 data);
+void neogeo_acknowledge_interrupt(UINT16 data);
+void neogeo_set_main_cpu_bank_address(UINT32 bank_address);
+READ16_HANDLER( neogeo_unmapped_r );
+
+
+/*----------- defined in machine/neocrypt.c -----------*/
+
+void kof99_neogeo_gfx_decrypt(int extra_xor);
+void kof2000_neogeo_gfx_decrypt(int extra_xor);
+void cmc50_neogeo_gfx_decrypt(int extra_xor);
+void cmc42_neogeo_gfx_decrypt(int extra_xor);
+void kof99_decrypt_68k(void);
+void garou_decrypt_68k(void);
+void garouo_decrypt_68k(void);
+void mslug3_decrypt_68k(void);
+void kof2000_decrypt_68k(void);
+void kof98_decrypt_68k(void);
+void kof2002_decrypt_68k(void);
+void matrim_decrypt_68k(void);
+void mslug5_decrypt_68k(void);
+void svcchaos_px_decrypt(void);
+void svcpcb_gfx_decrypt(void);
+void svcpcb_s1data_decrypt(void);
+void samsho5_decrypt_68k(void);
+void kf2k3pcb_gfx_decrypt(void);
+void kf2k3pcb_decrypt_68k(void);
+void kf2k3pcb_decrypt_s1data(void);
+void kof2003_decrypt_68k(void);
+void kof2003biosdecode(void);
+void samsh5p_decrypt_68k(void);
+
+void neo_pcm2_snk_1999(int value);
+void neo_pcm2_swap(int value);
+
+
+/*----------- defined in machine/neoprot.c -----------*/
+
+void neogeo_reset_rng(void);
+void fatfury2_install_protection(void);
+void mslugx_install_protection(void);
+void kof99_install_protection(void);
+void garou_install_protection(void);
+void garouo_install_protection(void);
+void mslug3_install_protection(void);
+void kof2000_install_protection(void);
+void install_kof98_protection(void);
+void install_pvc_protection(void);
+
+
+/*----------- defined in machine/neoboot.c -----------*/
+
+void kog_px_decrypt(void);
+void neogeo_bootleg_cx_decrypt(void);
+void install_kof10th_protection(void);
+void decrypt_kof10th(void);
+void decrypt_kf10thep(void);
+void decrypt_kf2k5uni(void);
+void neogeo_bootleg_sx_decrypt(int value);
+void kf2k2mp_decrypt(void);
+void kof2km2_px_decrypt(void);
+void decrypt_cthd2003(void);
+void patch_cthd2003(void);
+void decrypt_ct2k3sp(void);
+void decrypt_ct2k3sa(void);
+void patch_ct2k3sa(void);
+void decrypt_kof2k4se_68k(void);
+void lans2004_decrypt_68k(void);
+void lans2004_vx_decrypt(void);
+void install_ms5plus_protection(void);
+void svcboot_px_decrypt( void );
+void svcboot_cx_decrypt( void );
+void svcplus_px_decrypt( void );
+void svcplus_px_hack( void );
+void svcplusa_px_decrypt( void );
+void svcsplus_px_decrypt( void );
+void svcsplus_px_hack( void );
+void kof2003b_px_decrypt( void );
+void kof2003b_install_protection(void);
+void kof2k3pl_px_decrypt( void );
+void kof2k3up_px_decrypt( void );
+void kof2k3up_install_protection(void);
+void kf2k3pl_install_protection(void);
+void samsh5bl_px_decrypt( void );
+
+
+/*----------- defined in video/neogeo.c -----------*/
+
+extern int neogeo_fixed_layer_bank_type;
+
+VIDEO_START( neogeo );
+VIDEO_RESET( neogeo );
+VIDEO_UPDATE( neogeo );
+
+READ16_HANDLER( neogeo_video_register_r );
+WRITE16_HANDLER( neogeo_video_register_w );
+
+void neogeo_set_display_poisition_interrupt_control(UINT16 data);
+
+void neogeo_set_palette_bank(UINT8 data);
+void neogeo_set_screen_dark(UINT8 data);
+READ16_HANDLER( neogeo_paletteram_r );
+WRITE16_HANDLER( neogeo_paletteram_w );
+
+void neogeo_set_fixed_layer_source(UINT8 data);
+
+UINT8 neogeo_get_auto_animation_counter(void);
diff --git a/src/mame/includes/news.h b/src/mame/includes/news.h
new file mode 100644
index 00000000000..05f2f7c35e4
--- /dev/null
+++ b/src/mame/includes/news.h
@@ -0,0 +1,10 @@
+/*----------- defined in video/news.c -----------*/
+
+extern UINT8 *news_fgram;
+extern UINT8 *news_bgram;
+
+WRITE8_HANDLER( news_fgram_w );
+WRITE8_HANDLER( news_bgram_w );
+WRITE8_HANDLER( news_bgpic_w );
+VIDEO_START( news );
+VIDEO_UPDATE( news );
diff --git a/src/mame/includes/nitedrvr.h b/src/mame/includes/nitedrvr.h
new file mode 100644
index 00000000000..4495bd7e512
--- /dev/null
+++ b/src/mame/includes/nitedrvr.h
@@ -0,0 +1,39 @@
+/*************************************************************************
+
+ Atari Night Driver hardware
+
+*************************************************************************/
+
+#include "sound/discrete.h"
+
+/* Discrete Sound Input Nodes */
+#define NITEDRVR_BANG_DATA NODE_01
+#define NITEDRVR_SKID1_EN NODE_02
+#define NITEDRVR_SKID2_EN NODE_03
+#define NITEDRVR_MOTOR_DATA NODE_04
+#define NITEDRVR_CRASH_EN NODE_05
+#define NITEDRVR_ATTRACT_EN NODE_06
+
+
+/*----------- defined in machine/nitedrvr.c -----------*/
+
+READ8_HANDLER( nitedrvr_in0_r );
+READ8_HANDLER( nitedrvr_in1_r );
+READ8_HANDLER( nitedrvr_steering_reset_r );
+WRITE8_HANDLER( nitedrvr_steering_reset_w );
+WRITE8_HANDLER( nitedrvr_out0_w );
+WRITE8_HANDLER( nitedrvr_out1_w );
+
+void nitedrvr_crash_toggle(running_machine *machine);
+
+
+/*----------- defined in audio/nitedrvr.c -----------*/
+
+DISCRETE_SOUND_EXTERN( nitedrvr );
+
+
+/*----------- defined in video/nitedrvr.c -----------*/
+
+extern UINT8 *nitedrvr_hvc;
+WRITE8_HANDLER( nitedrvr_hvc_w );
+VIDEO_UPDATE( nitedrvr );
diff --git a/src/mame/includes/offtwall.h b/src/mame/includes/offtwall.h
new file mode 100644
index 00000000000..174cdb9b35e
--- /dev/null
+++ b/src/mame/includes/offtwall.h
@@ -0,0 +1,10 @@
+/*************************************************************************
+
+ Atari "Round" hardware
+
+*************************************************************************/
+
+/*----------- defined in video/offtwall.c -----------*/
+
+VIDEO_START( offtwall );
+VIDEO_UPDATE( offtwall );
diff --git a/src/mame/includes/orbit.h b/src/mame/includes/orbit.h
new file mode 100644
index 00000000000..f95cdf468ca
--- /dev/null
+++ b/src/mame/includes/orbit.h
@@ -0,0 +1,37 @@
+/*************************************************************************
+
+ Atari Orbit hardware
+
+*************************************************************************/
+
+#include "sound/discrete.h"
+
+/* Discrete Sound Input Nodes */
+#define ORBIT_NOTE_FREQ NODE_01
+#define ORBIT_ANOTE1_AMP NODE_02
+#define ORBIT_ANOTE2_AMP NODE_03
+#define ORBIT_NOISE1_AMP NODE_04
+#define ORBIT_NOISE2_AMP NODE_05
+#define ORBIT_WARNING_EN NODE_06
+#define ORBIT_NOISE_EN NODE_07
+
+
+/*----------- defined in audio/orbit.c -----------*/
+
+WRITE8_HANDLER( orbit_note_w );
+WRITE8_HANDLER( orbit_note_amp_w );
+WRITE8_HANDLER( orbit_noise_amp_w );
+WRITE8_HANDLER( orbit_noise_rst_w );
+
+DISCRETE_SOUND_EXTERN( orbit );
+
+/*----------- defined in video/orbit.c -----------*/
+
+VIDEO_START( orbit );
+VIDEO_UPDATE( orbit );
+
+extern UINT8* orbit_playfield_ram;
+extern UINT8* orbit_sprite_ram;
+
+extern WRITE8_HANDLER( orbit_playfield_w );
+extern WRITE8_HANDLER( orbit_sprite_w );
diff --git a/src/mame/includes/pacman.h b/src/mame/includes/pacman.h
new file mode 100644
index 00000000000..3152be645fb
--- /dev/null
+++ b/src/mame/includes/pacman.h
@@ -0,0 +1,73 @@
+/*************************************************************************
+
+ Namco PuckMan
+
+**************************************************************************/
+
+/*----------- defined in video/pacman.c -----------*/
+
+PALETTE_INIT( pacman );
+VIDEO_START( pacman );
+VIDEO_UPDATE( pacman );
+
+WRITE8_HANDLER( pacman_videoram_w );
+WRITE8_HANDLER( pacman_colorram_w );
+WRITE8_HANDLER( pacman_flipscreen_w );
+
+
+VIDEO_START( pengo );
+
+WRITE8_HANDLER( pengo_palettebank_w );
+WRITE8_HANDLER( pengo_colortablebank_w );
+WRITE8_HANDLER( pengo_gfxbank_w );
+
+
+WRITE8_HANDLER( vanvan_bgcolor_w );
+
+
+VIDEO_START( s2650games );
+VIDEO_UPDATE( s2650games );
+
+extern UINT8 *s2650games_spriteram;
+extern UINT8 *s2650games_tileram;
+
+WRITE8_HANDLER( s2650games_videoram_w );
+WRITE8_HANDLER( s2650games_colorram_w );
+WRITE8_HANDLER( s2650games_scroll_w );
+WRITE8_HANDLER( s2650games_tilesbank_w );
+
+
+VIDEO_START( jrpacman );
+
+WRITE8_HANDLER( jrpacman_videoram_w );
+WRITE8_HANDLER( jrpacman_charbank_w );
+WRITE8_HANDLER( jrpacman_spritebank_w );
+WRITE8_HANDLER( jrpacman_scroll_w );
+WRITE8_HANDLER( jrpacman_bgpriority_w );
+
+
+/*----------- defined in machine/pacplus.c -----------*/
+
+void pacplus_decode(void);
+
+
+/*----------- defined in machine/jumpshot.c -----------*/
+
+void jumpshot_decode(void);
+
+
+/*----------- defined in machine/theglobp.c -----------*/
+
+MACHINE_RESET( theglobp );
+READ8_HANDLER( theglobp_decrypt_rom );
+
+
+/*----------- defined in machine/mspacman.c -----------*/
+
+MACHINE_RESET( mspacman );
+WRITE8_HANDLER( mspacman_activate_rom );
+
+/*----------- defined in machine/acitya.c -------------*/
+
+MACHINE_RESET( acitya );
+READ8_HANDLER( acitya_decrypt_rom );
diff --git a/src/mame/includes/paradise.h b/src/mame/includes/paradise.h
new file mode 100644
index 00000000000..6fc229418fc
--- /dev/null
+++ b/src/mame/includes/paradise.h
@@ -0,0 +1,21 @@
+/*----------- defined in video/paradise.c -----------*/
+
+extern UINT8 *paradise_vram_0,*paradise_vram_1,*paradise_vram_2;
+extern int paradise_sprite_inc;
+
+WRITE8_HANDLER( paradise_vram_0_w );
+WRITE8_HANDLER( paradise_vram_1_w );
+WRITE8_HANDLER( paradise_vram_2_w );
+
+WRITE8_HANDLER( paradise_flipscreen_w );
+WRITE8_HANDLER( tgtball_flipscreen_w );
+WRITE8_HANDLER( paradise_palette_w );
+WRITE8_HANDLER( paradise_pixmap_w );
+
+WRITE8_HANDLER( paradise_priority_w );
+WRITE8_HANDLER( paradise_palbank_w );
+
+VIDEO_START( paradise );
+VIDEO_UPDATE( paradise );
+VIDEO_UPDATE( torus );
+VIDEO_UPDATE( madball );
diff --git a/src/mame/includes/phoenix.h b/src/mame/includes/phoenix.h
new file mode 100644
index 00000000000..42d1bc08905
--- /dev/null
+++ b/src/mame/includes/phoenix.h
@@ -0,0 +1,55 @@
+#include "sound/discrete.h"
+#include "sound/custom.h"
+
+
+/*----------- defined in audio/phoenix.c -----------*/
+
+DISCRETE_SOUND_EXTERN( phoenix );
+
+WRITE8_HANDLER( phoenix_sound_control_a_w );
+WRITE8_HANDLER( phoenix_sound_control_b_w );
+
+void *phoenix_sh_start(int clock, const struct CustomSound_interface *config);
+
+/*----------- defined in audio/pleiads.c -----------*/
+
+WRITE8_HANDLER( pleiads_sound_control_a_w );
+WRITE8_HANDLER( pleiads_sound_control_b_w );
+WRITE8_HANDLER( pleiads_sound_control_c_w );
+
+void *pleiads_sh_start(int clock, const struct CustomSound_interface *config);
+void *naughtyb_sh_start(int clock, const struct CustomSound_interface *config);
+void *popflame_sh_start(int clock, const struct CustomSound_interface *config);
+
+/*----------- defined in video/naughtyb.c -----------*/
+
+extern UINT8 *naughtyb_videoram2;
+extern UINT8 *naughtyb_scrollreg;
+extern int naughtyb_cocktail;
+
+WRITE8_HANDLER( naughtyb_videoram2_w );
+WRITE8_HANDLER( naughtyb_videoreg_w );
+WRITE8_HANDLER( popflame_videoreg_w );
+
+VIDEO_START( naughtyb );
+PALETTE_INIT( naughtyb );
+VIDEO_UPDATE( naughtyb );
+
+
+/*----------- defined in video/phoenix.c -----------*/
+
+PALETTE_INIT( phoenix );
+PALETTE_INIT( pleiads );
+VIDEO_START( phoenix );
+VIDEO_UPDATE( phoenix );
+
+WRITE8_HANDLER( phoenix_videoram_w );
+WRITE8_HANDLER( phoenix_videoreg_w );
+WRITE8_HANDLER( pleiads_videoreg_w );
+WRITE8_HANDLER( phoenix_scroll_w );
+
+READ8_HANDLER( phoenix_input_port_0_r );
+READ8_HANDLER( pleiads_input_port_0_r );
+READ8_HANDLER( survival_input_port_0_r );
+READ8_HANDLER( survival_protection_r );
+
diff --git a/src/mame/includes/polepos.h b/src/mame/includes/polepos.h
new file mode 100644
index 00000000000..e2edb03d130
--- /dev/null
+++ b/src/mame/includes/polepos.h
@@ -0,0 +1,12 @@
+/*************************************************************************
+
+ Pole Position hardware
+
+*************************************************************************/
+
+#include "sound/discrete.h"
+
+
+/*----------- defined in audio/polepos.c -----------*/
+
+DISCRETE_SOUND_EXTERN( polepos );
diff --git a/src/mame/includes/policetr.h b/src/mame/includes/policetr.h
new file mode 100644
index 00000000000..a42d501a215
--- /dev/null
+++ b/src/mame/includes/policetr.h
@@ -0,0 +1,21 @@
+/*************************************************************************
+
+ P&P Marketing Police Trainer hardware
+
+**************************************************************************/
+
+/*----------- defined in drivers/policetr.c -----------*/
+
+extern UINT32 * policetr_rambase;
+
+
+/*----------- defined in video/policetr.c -----------*/
+
+WRITE32_HANDLER( policetr_video_w );
+READ32_HANDLER( policetr_video_r );
+
+WRITE32_HANDLER( policetr_palette_offset_w );
+WRITE32_HANDLER( policetr_palette_data_w );
+
+VIDEO_START( policetr );
+VIDEO_UPDATE( policetr );
diff --git a/src/mame/includes/poolshrk.h b/src/mame/includes/poolshrk.h
new file mode 100644
index 00000000000..b0cc7b65ead
--- /dev/null
+++ b/src/mame/includes/poolshrk.h
@@ -0,0 +1,28 @@
+/*************************************************************************
+
+ Atari Pool Shark hardware
+
+*************************************************************************/
+
+#include "sound/discrete.h"
+
+/* Discrete Sound Input Nodes */
+
+/*----------- defined in audio/poolshrk.c -----------*/
+
+WRITE8_HANDLER( poolshrk_scratch_sound_w );
+WRITE8_HANDLER( poolshrk_score_sound_w );
+WRITE8_HANDLER( poolshrk_click_sound_w );
+WRITE8_HANDLER( poolshrk_bump_sound_w );
+
+DISCRETE_SOUND_EXTERN( poolshrk );
+
+
+/*----------- defined in video/poolshrk.c -----------*/
+
+VIDEO_START( poolshrk );
+VIDEO_UPDATE( poolshrk );
+
+extern UINT8* poolshrk_playfield_ram;
+extern UINT8* poolshrk_hpos_ram;
+extern UINT8* poolshrk_vpos_ram;
diff --git a/src/mame/includes/psikyosh.h b/src/mame/includes/psikyosh.h
new file mode 100644
index 00000000000..074c40a055a
--- /dev/null
+++ b/src/mame/includes/psikyosh.h
@@ -0,0 +1,29 @@
+/*----------- defined in drivers/psikyosh.c -----------*/
+
+#define MASTER_CLOCK 57272700 // main oscillator frequency
+
+extern UINT32 *psikyosh_bgram, *psikyosh_zoomram, *psikyosh_vidregs;
+
+/*----------- defined in video/psikyosh.c -----------*/
+
+VIDEO_START( psikyosh );
+VIDEO_UPDATE( psikyosh );
+VIDEO_EOF( psikyosh );
+
+enum { EEPROM_0=0, EEPROM_DEFAULT=1, EEPROM_DARAKU, EEPROM_S1945III, EEPROM_DRAGNBLZ, EEPROM_GNBARICH, EEPROM_USER1, EEPROM_MJGTASTE };
+
+/* Psikyo PS6406B */
+#define FLIPSCREEN (((psikyosh_vidregs[3] & 0x0000c000) == 0x0000c000) ? 1:0)
+#define DISPLAY_DISABLE (((psikyosh_vidregs[2] & 0x0000000f) == 0x00000006) ? 1:0)
+#define BG_LARGE(n) (((psikyosh_vidregs[7] << (4*n)) & 0x00001000 ) ? 1:0)
+#define BG_DEPTH_8BPP(n) (((psikyosh_vidregs[7] << (4*n)) & 0x00004000 ) ? 1:0)
+#define BG_LAYER_ENABLE(n) (((psikyosh_vidregs[7] << (4*n)) & 0x00008000 ) ? 1:0)
+
+#define BG_TYPE(n) (((psikyosh_vidregs[6] << (8*n)) & 0x7f000000 ) >> 24)
+#define BG_NORMAL 0x0a
+#define BG_NORMAL_ALT 0x0b /* Same as above but with different location for scroll/priority reg */
+
+/* All below have 0x80 bit set, probably row/linescroll enable/toggle */
+#define BG_SCROLL_0C 0x0c /* 224 v/h scroll values in bank 0x0c; Used in daraku, for text */
+#define BG_SCROLL_0D 0x0d /* 224 v/h scroll values in bank 0x0d; Used in daraku, for alternate characters of text */
+#define BG_SCROLL_ZOOM 0x0e /* 224 v/h scroll values in bank 0x0e-0x1f; Used in s1945ii, s1945iii */
diff --git a/src/mame/includes/psx.h b/src/mame/includes/psx.h
new file mode 100644
index 00000000000..3200b331245
--- /dev/null
+++ b/src/mame/includes/psx.h
@@ -0,0 +1,60 @@
+/***************************************************************************
+
+ includes/psx.h
+
+***************************************************************************/
+
+#if !defined( PSX_H )
+
+/*----------- defined in video/psx.c -----------*/
+
+PALETTE_INIT( psx );
+VIDEO_START( psx_type1 );
+VIDEO_START( psx_type2 );
+VIDEO_UPDATE( psx );
+INTERRUPT_GEN( psx_vblank );
+extern void psx_gpu_reset( void );
+extern void psx_gpu_read( UINT32 *p_ram, INT32 n_size );
+extern void psx_gpu_write( UINT32 *p_ram, INT32 n_size );
+READ32_HANDLER( psx_gpu_r );
+WRITE32_HANDLER( psx_gpu_w );
+extern void psx_lightgun_set( int, int );
+
+/*----------- defined in machine/psx.c -----------*/
+
+extern UINT32 *g_p_n_psxram;
+extern size_t g_n_psxramsize;
+typedef void ( *psx_dma_read_handler )( UINT32, INT32 );
+typedef void ( *psx_dma_write_handler )( UINT32, INT32 );
+WRITE32_HANDLER( psx_com_delay_w );
+READ32_HANDLER( psx_com_delay_r );
+WRITE32_HANDLER( psx_irq_w );
+READ32_HANDLER( psx_irq_r );
+extern void psx_irq_set( UINT32 );
+extern void psx_dma_install_read_handler( int, psx_dma_read_handler );
+extern void psx_dma_install_write_handler( int, psx_dma_read_handler );
+WRITE32_HANDLER( psx_dma_w );
+READ32_HANDLER( psx_dma_r );
+WRITE32_HANDLER( psx_counter_w );
+READ32_HANDLER( psx_counter_r );
+WRITE32_HANDLER( psx_sio_w );
+READ32_HANDLER( psx_sio_r );
+typedef void ( *psx_sio_handler )( int );
+extern void psx_sio_install_handler( int, psx_sio_handler );
+extern void psx_sio_input( int, int, int );
+
+#define PSX_SIO_OUT_DATA ( 1 ) /* COMMAND */
+#define PSX_SIO_OUT_DTR ( 2 ) /* ATT */
+#define PSX_SIO_OUT_RTS ( 4 )
+#define PSX_SIO_OUT_CLOCK ( 8 ) /* CLOCK */
+#define PSX_SIO_IN_DATA ( 1 ) /* DATA */
+#define PSX_SIO_IN_DSR ( 2 ) /* ACK */
+#define PSX_SIO_IN_CTS ( 4 )
+
+WRITE32_HANDLER( psx_mdec_w );
+READ32_HANDLER( psx_mdec_r );
+extern void psx_machine_init( void );
+extern void psx_driver_init( void );
+
+#define PSX_H ( 1 )
+#endif
diff --git a/src/mame/includes/qix.h b/src/mame/includes/qix.h
new file mode 100644
index 00000000000..625b85b3687
--- /dev/null
+++ b/src/mame/includes/qix.h
@@ -0,0 +1,68 @@
+/***************************************************************************
+
+ Taito Qix hardware
+
+ driver by John Butler, Ed Mueller, Aaron Giles
+
+***************************************************************************/
+
+#include "sound/discrete.h"
+
+#define QIX_CHARACTER_CLOCK (20000000/2/16)
+
+
+/*----------- defined in machine/qix.c -----------*/
+
+extern UINT8 *qix_68705_port_out;
+extern UINT8 *qix_68705_ddr;
+
+MACHINE_START( qix );
+MACHINE_START( qixmcu );
+MACHINE_START( slither );
+MACHINE_RESET( qix );
+
+WRITE8_HANDLER( zoo_bankswitch_w );
+
+READ8_HANDLER( qix_data_firq_r );
+READ8_HANDLER( qix_data_firq_ack_r );
+WRITE8_HANDLER( qix_data_firq_w );
+WRITE8_HANDLER( qix_data_firq_ack_w );
+
+READ8_HANDLER( qix_video_firq_r );
+READ8_HANDLER( qix_video_firq_ack_r );
+WRITE8_HANDLER( qix_video_firq_w );
+WRITE8_HANDLER( qix_video_firq_ack_w );
+
+READ8_HANDLER( qix_68705_portA_r );
+READ8_HANDLER( qix_68705_portB_r );
+READ8_HANDLER( qix_68705_portC_r );
+WRITE8_HANDLER( qix_68705_portA_w );
+WRITE8_HANDLER( qix_68705_portB_w );
+WRITE8_HANDLER( qix_68705_portC_w );
+
+WRITE8_HANDLER( qix_pia_0_w );
+
+INTERRUPT_GEN( qix_vblank_start );
+
+/*----------- defined in video/qix.c -----------*/
+
+extern UINT8 *qix_videoaddress;
+extern UINT8 qix_cocktail_flip;
+
+VIDEO_START( qix );
+
+READ8_HANDLER( qix_scanline_r );
+READ8_HANDLER( qix_videoram_r );
+WRITE8_HANDLER( qix_videoram_w );
+READ8_HANDLER( qix_addresslatch_r );
+WRITE8_HANDLER( qix_addresslatch_w );
+WRITE8_HANDLER( slither_vram_mask_w );
+WRITE8_HANDLER( qix_paletteram_w );
+WRITE8_HANDLER( qix_palettebank_w );
+
+/*----------- defined in audio/qix.c -----------*/
+
+DISCRETE_SOUND_EXTERN( qix );
+
+WRITE8_HANDLER( qix_dac_w );
+WRITE8_HANDLER( qix_vol_w );
diff --git a/src/mame/includes/rampart.h b/src/mame/includes/rampart.h
new file mode 100644
index 00000000000..1dde1ae9b5d
--- /dev/null
+++ b/src/mame/includes/rampart.h
@@ -0,0 +1,18 @@
+/*************************************************************************
+
+ Atari Rampart hardware
+
+*************************************************************************/
+
+
+/*----------- defined in video/rampart.c -----------*/
+
+WRITE16_HANDLER( rampart_bitmap_w );
+
+VIDEO_START( rampart );
+VIDEO_UPDATE( rampart );
+
+void rampart_bitmap_init(running_machine *machine, int _xdim, int _ydim);
+void rampart_bitmap_render(running_machine *machine, mame_bitmap *bitmap, const rectangle *cliprect);
+
+extern UINT16 *rampart_bitmap;
diff --git a/src/mame/includes/realbrk.h b/src/mame/includes/realbrk.h
new file mode 100644
index 00000000000..6e0ade32b9e
--- /dev/null
+++ b/src/mame/includes/realbrk.h
@@ -0,0 +1,21 @@
+/*----------- defined in video/realbrk.c -----------*/
+
+#ifndef REALBRK_H
+#define REALBRK_H
+
+VIDEO_START(realbrk);
+VIDEO_UPDATE(realbrk);
+VIDEO_UPDATE(dai2kaku);
+
+WRITE16_HANDLER( realbrk_vram_0_w );
+WRITE16_HANDLER( realbrk_vram_1_w );
+WRITE16_HANDLER( realbrk_vram_2_w );
+WRITE16_HANDLER( realbrk_vregs_w );
+WRITE16_HANDLER( realbrk_flipscreen_w );
+WRITE16_HANDLER( dai2kaku_flipscreen_w );
+
+//extern UINT16 *realbrk_vram_0, *realbrk_vram_1, *realbrk_vram_2, *realbrk_vregs;
+extern UINT16 *realbrk_vram_0, *realbrk_vram_1, *realbrk_vram_2, *realbrk_vregs, *realbrk_vram_0ras, *realbrk_vram_1ras;
+
+#endif
+
diff --git a/src/mame/includes/relief.h b/src/mame/includes/relief.h
new file mode 100644
index 00000000000..f54df774776
--- /dev/null
+++ b/src/mame/includes/relief.h
@@ -0,0 +1,10 @@
+/*************************************************************************
+
+ Atari "Round" hardware
+
+*************************************************************************/
+
+/*----------- defined in video/relief.c -----------*/
+
+VIDEO_START( relief );
+VIDEO_UPDATE( relief );
diff --git a/src/mame/includes/rescap.h b/src/mame/includes/rescap.h
new file mode 100644
index 00000000000..c069761e345
--- /dev/null
+++ b/src/mame/includes/rescap.h
@@ -0,0 +1,11 @@
+#ifndef RC_MACROS_H
+#define RC_MACROS_H
+
+/* Little helpers for magnitude conversions */
+#define RES_K(res) ((double)(res)*1e3)
+#define RES_M(res) ((double)(res)*1e6)
+#define CAP_U(cap) ((double)(cap)*1e-6)
+#define CAP_N(cap) ((double)(cap)*1e-9)
+#define CAP_P(cap) ((double)(cap)*1e-12)
+
+#endif
diff --git a/src/mame/includes/sbrkout.h b/src/mame/includes/sbrkout.h
new file mode 100644
index 00000000000..a81fd69968f
--- /dev/null
+++ b/src/mame/includes/sbrkout.h
@@ -0,0 +1,26 @@
+/*************************************************************************
+
+ Atari Super Breakout hardware
+
+*************************************************************************/
+
+/*----------- defined in machine/sbrkout.c -----------*/
+
+WRITE8_HANDLER( sbrkout_serve_led_w );
+WRITE8_HANDLER( sbrkout_start_1_led_w );
+WRITE8_HANDLER( sbrkout_start_2_led_w );
+READ8_HANDLER( sbrkout_read_DIPs_r );
+INTERRUPT_GEN( sbrkout_interrupt );
+READ8_HANDLER( sbrkout_select1_r );
+READ8_HANDLER( sbrkout_select2_r );
+
+
+/*----------- defined in video/sbrkout.c -----------*/
+
+extern UINT8 *sbrkout_horiz_ram;
+extern UINT8 *sbrkout_vert_ram;
+
+WRITE8_HANDLER( sbrkout_videoram_w );
+
+VIDEO_START( sbrkout );
+VIDEO_UPDATE( sbrkout );
diff --git a/src/mame/includes/segag80r.h b/src/mame/includes/segag80r.h
new file mode 100644
index 00000000000..4e5d607a227
--- /dev/null
+++ b/src/mame/includes/segag80r.h
@@ -0,0 +1,68 @@
+/*************************************************************************
+
+ Sega G-80 raster hardware
+
+*************************************************************************/
+
+/*----------- defined in machine/segag80.c -----------*/
+
+extern UINT8 (*sega_decrypt)(offs_t, UINT8);
+
+void sega_security(int chip);
+
+
+/*----------- defined in audio/segag80r.c -----------*/
+
+MACHINE_DRIVER_EXTERN( astrob_sound_board );
+MACHINE_DRIVER_EXTERN( 005_sound_board );
+MACHINE_DRIVER_EXTERN( spaceod_sound_board );
+MACHINE_DRIVER_EXTERN( monsterb_sound_board );
+
+WRITE8_HANDLER( astrob_sound_w );
+
+WRITE8_HANDLER( sega005_sound_a_w );
+WRITE8_HANDLER( sega005_sound_b_w );
+
+WRITE8_HANDLER( spaceod_sound_w );
+
+ READ8_HANDLER( monsterb_audio_8255_r );
+
+
+/*----------- defined in video/segag80r.c -----------*/
+
+#define G80_BACKGROUND_NONE 0
+#define G80_BACKGROUND_SPACEOD 1
+#define G80_BACKGROUND_MONSTERB 2
+#define G80_BACKGROUND_PIGNEWT 3
+#define G80_BACKGROUND_SINDBADM 4
+
+extern UINT8 segag80r_background_pcb;
+
+INTERRUPT_GEN( segag80r_vblank_start );
+
+WRITE8_HANDLER( segag80r_videoram_w );
+
+READ8_HANDLER( segag80r_video_port_r );
+WRITE8_HANDLER( segag80r_video_port_w );
+
+VIDEO_START( segag80r );
+VIDEO_UPDATE( segag80r );
+
+
+READ8_HANDLER( spaceod_back_port_r );
+WRITE8_HANDLER( spaceod_back_port_w );
+
+
+WRITE8_HANDLER( monsterb_videoram_w );
+WRITE8_HANDLER( monsterb_back_port_w );
+
+
+WRITE8_HANDLER( pignewt_videoram_w );
+WRITE8_HANDLER( pignewt_back_port_w );
+WRITE8_HANDLER( pignewt_back_color_w );
+
+
+INTERRUPT_GEN( sindbadm_vblank_start );
+
+WRITE8_HANDLER( sindbadm_videoram_w );
+WRITE8_HANDLER( sindbadm_back_port_w );
diff --git a/src/mame/includes/segag80v.h b/src/mame/includes/segag80v.h
new file mode 100644
index 00000000000..0984c0bb5da
--- /dev/null
+++ b/src/mame/includes/segag80v.h
@@ -0,0 +1,23 @@
+/*************************************************************************
+
+ Sega vector hardware
+
+*************************************************************************/
+
+#include "sound/custom.h"
+
+
+/*----------- defined in audio/segag80v.c -----------*/
+
+WRITE8_HANDLER( elim1_sh_w );
+WRITE8_HANDLER( elim2_sh_w );
+WRITE8_HANDLER( spacfury1_sh_w );
+WRITE8_HANDLER( spacfury2_sh_w );
+WRITE8_HANDLER( zektor1_sh_w );
+WRITE8_HANDLER( zektor2_sh_w );
+
+
+/*----------- defined in video/segag80v.c -----------*/
+
+VIDEO_START( sega );
+VIDEO_UPDATE( sega );
diff --git a/src/mame/includes/segas32.h b/src/mame/includes/segas32.h
new file mode 100644
index 00000000000..71ac77c96d8
--- /dev/null
+++ b/src/mame/includes/segas32.h
@@ -0,0 +1,81 @@
+/***************************************************************************
+
+ Sega System 32/Multi 32 hardware
+
+***************************************************************************/
+
+
+/*----------- defined in drivers/segas32.c -----------*/
+
+extern UINT8 *ga2_dpram;
+extern UINT16 *system32_workram;
+extern UINT16 *system32_protram;
+
+
+/*----------- defined in machine/segas32.c -----------*/
+
+READ16_HANDLER( arabfgt_protection_r );
+READ16_HANDLER( arf_wakeup_protection_r );
+WRITE16_HANDLER( arabfgt_protection_w );
+
+READ16_HANDLER( brival_protection_r );
+WRITE16_HANDLER( brival_protection_w );
+
+READ16_HANDLER( darkedge_protection_r );
+WRITE16_HANDLER( darkedge_protection_w );
+void darkedge_fd1149_vblank(void);
+WRITE16_HANDLER( jleague_protection_w );
+
+READ16_HANDLER( dbzvrvs_protection_r );
+WRITE16_HANDLER( dbzvrvs_protection_w );
+
+void decrypt_ga2_protrom(void);
+READ16_HANDLER( ga2_dpram_r );
+WRITE16_HANDLER( ga2_dpram_w );
+
+WRITE16_HANDLER(sonic_level_load_protection);
+
+READ16_HANDLER( arescue_dsp_r );
+WRITE16_HANDLER( arescue_dsp_w );
+
+
+/*----------- defined in video/segas32.c -----------*/
+
+extern UINT16 *system32_videoram;
+extern UINT16 *system32_spriteram;
+extern UINT16 *system32_paletteram[2];
+extern UINT16 system32_displayenable[2];
+extern UINT16 system32_tilebank_external;
+
+VIDEO_START(system32);
+VIDEO_START(multi32);
+VIDEO_UPDATE(system32);
+VIDEO_UPDATE(multi32);
+void system32_set_vblank(int state);
+
+READ16_HANDLER( system32_videoram_r );
+WRITE16_HANDLER( system32_videoram_w );
+READ32_HANDLER( multi32_videoram_r );
+WRITE32_HANDLER( multi32_videoram_w );
+
+READ16_HANDLER( system32_spriteram_r );
+WRITE16_HANDLER( system32_spriteram_w );
+READ32_HANDLER( multi32_spriteram_r );
+WRITE32_HANDLER( multi32_spriteram_w );
+
+READ16_HANDLER( system32_paletteram_r );
+WRITE16_HANDLER( system32_paletteram_w );
+READ32_HANDLER( multi32_paletteram_0_r );
+WRITE32_HANDLER( multi32_paletteram_0_w );
+READ32_HANDLER( multi32_paletteram_1_r );
+WRITE32_HANDLER( multi32_paletteram_1_w );
+
+READ16_HANDLER( system32_sprite_control_r );
+WRITE16_HANDLER( system32_sprite_control_w );
+READ32_HANDLER( multi32_sprite_control_r );
+WRITE32_HANDLER( multi32_sprite_control_w );
+
+WRITE16_HANDLER( system32_mixer_w );
+READ16_HANDLER( system32_mixer_r );
+WRITE32_HANDLER( multi32_mixer_0_w );
+WRITE32_HANDLER( multi32_mixer_1_w );
diff --git a/src/mame/includes/seta.h b/src/mame/includes/seta.h
new file mode 100644
index 00000000000..d74db87b32a
--- /dev/null
+++ b/src/mame/includes/seta.h
@@ -0,0 +1,81 @@
+/***************************************************************************
+
+ -= Seta Hardware =-
+
+***************************************************************************/
+
+#define __uPD71054_TIMER 1
+
+/*----------- defined in video/seta.c -----------*/
+
+extern UINT16 *seta_vram_0, *seta_vctrl_0;
+extern UINT16 *seta_vram_2, *seta_vctrl_2;
+extern UINT16 *seta_vregs;
+
+extern UINT16 *seta_workram; // Needed for zombraid Crosshair hack
+
+extern int seta_tiles_offset;
+
+void seta_coin_lockout_w(int data);
+
+WRITE16_HANDLER( twineagl_tilebank_w );
+
+WRITE16_HANDLER( seta_vram_0_w );
+WRITE16_HANDLER( seta_vram_2_w );
+WRITE16_HANDLER( seta_vregs_w );
+
+PALETTE_INIT( blandia );
+PALETTE_INIT( gundhara );
+PALETTE_INIT( jjsquawk );
+PALETTE_INIT( usclssic );
+PALETTE_INIT( zingzip );
+
+VIDEO_START( seta_no_layers);
+VIDEO_START( twineagl_1_layer);
+VIDEO_START( seta_1_layer);
+VIDEO_START( seta_2_layers);
+VIDEO_START( oisipuzl_2_layers );
+
+VIDEO_UPDATE( seta );
+VIDEO_UPDATE( seta_no_layers );
+
+
+/*----------- defined in video/seta2.c -----------*/
+
+extern UINT16 *seta2_vregs;
+
+WRITE16_HANDLER( seta2_vregs_w );
+
+VIDEO_START( seta2 );
+VIDEO_START( seta2_offset );
+VIDEO_UPDATE( seta2 );
+VIDEO_EOF( seta2 );
+
+
+/*----------- defined in video/ssv.c -----------*/
+
+extern UINT16 *ssv_scroll;
+
+extern int ssv_special;
+
+extern int ssv_tile_code[16];
+
+extern int ssv_sprites_offsx, ssv_sprites_offsy;
+extern int ssv_tilemap_offsx, ssv_tilemap_offsy;
+
+extern UINT16 *eaglshot_gfxram, *gdfs_tmapram, *gdfs_tmapscroll;
+extern char eaglshot_dirty, *eaglshot_dirty_tile;
+
+READ16_HANDLER( ssv_vblank_r );
+WRITE16_HANDLER( ssv_scroll_w );
+WRITE16_HANDLER( paletteram16_xrgb_swap_word_w );
+WRITE16_HANDLER( gdfs_tmapram_w );
+void ssv_enable_video(int enable);
+
+VIDEO_START( ssv );
+VIDEO_START( eaglshot );
+VIDEO_START( gdfs );
+
+VIDEO_UPDATE( ssv );
+VIDEO_UPDATE( eaglshot );
+VIDEO_UPDATE( gdfs );
diff --git a/src/mame/includes/shuuz.h b/src/mame/includes/shuuz.h
new file mode 100644
index 00000000000..bd23751d17b
--- /dev/null
+++ b/src/mame/includes/shuuz.h
@@ -0,0 +1,10 @@
+/*************************************************************************
+
+ Atari Shuuz hardware
+
+*************************************************************************/
+
+/*----------- defined in video/shuuz.c -----------*/
+
+VIDEO_START( shuuz );
+VIDEO_UPDATE( shuuz );
diff --git a/src/mame/includes/skullxbo.h b/src/mame/includes/skullxbo.h
new file mode 100644
index 00000000000..c467de043e3
--- /dev/null
+++ b/src/mame/includes/skullxbo.h
@@ -0,0 +1,17 @@
+/*************************************************************************
+
+ Atari Skull & Crossbones hardware
+
+*************************************************************************/
+
+/*----------- defined in video/skullxbo.c -----------*/
+
+WRITE16_HANDLER( skullxbo_playfieldlatch_w );
+WRITE16_HANDLER( skullxbo_xscroll_w );
+WRITE16_HANDLER( skullxbo_yscroll_w );
+WRITE16_HANDLER( skullxbo_mobmsb_w );
+
+VIDEO_START( skullxbo );
+VIDEO_UPDATE( skullxbo );
+
+void skullxbo_scanline_update(int param);
diff --git a/src/mame/includes/skydiver.h b/src/mame/includes/skydiver.h
new file mode 100644
index 00000000000..9213509c1e3
--- /dev/null
+++ b/src/mame/includes/skydiver.h
@@ -0,0 +1,45 @@
+/*************************************************************************
+
+ Atari Skydiver hardware
+
+*************************************************************************/
+
+#include "sound/discrete.h"
+
+/* Discrete Sound Input Nodes */
+#define SKYDIVER_RANGE_DATA NODE_01
+#define SKYDIVER_NOTE_DATA NODE_02
+#define SKYDIVER_RANGE3_EN NODE_03
+#define SKYDIVER_NOISE_DATA NODE_04
+#define SKYDIVER_NOISE_RST NODE_05
+#define SKYDIVER_WHISTLE1_EN NODE_06
+#define SKYDIVER_WHISTLE2_EN NODE_07
+#define SKYDIVER_OCT1_EN NODE_08
+#define SKYDIVER_OCT2_EN NODE_09
+#define SKYDIVER_SOUND_EN NODE_10
+
+
+/*----------- defined in audio/skydiver.c -----------*/
+
+DISCRETE_SOUND_EXTERN( skydiver );
+
+
+/*----------- defined in video/skydiver.c -----------*/
+
+extern UINT8 *skydiver_videoram;
+
+MACHINE_RESET( skydiver );
+WRITE8_HANDLER( skydiver_videoram_w );
+WRITE8_HANDLER( skydiver_wram_w ); /* the signal is WRAM, presumably Work RAM */
+READ8_HANDLER( skydiver_wram_r );
+WRITE8_HANDLER( skydiver_start_lamp_1_w );
+WRITE8_HANDLER( skydiver_start_lamp_2_w );
+WRITE8_HANDLER( skydiver_lamp_s_w );
+WRITE8_HANDLER( skydiver_lamp_k_w );
+WRITE8_HANDLER( skydiver_lamp_y_w );
+WRITE8_HANDLER( skydiver_lamp_d_w );
+WRITE8_HANDLER( skydiver_2000_201F_w );
+WRITE8_HANDLER( skydiver_width_w );
+WRITE8_HANDLER( skydiver_coin_lockout_w );
+VIDEO_START( skydiver );
+VIDEO_UPDATE( skydiver );
diff --git a/src/mame/includes/slapstic.h b/src/mame/includes/slapstic.h
new file mode 100644
index 00000000000..558c8622248
--- /dev/null
+++ b/src/mame/includes/slapstic.h
@@ -0,0 +1,18 @@
+/*************************************************************************
+
+ Atari Slapstic decoding helper
+
+**************************************************************************
+
+ For more information on the slapstic, see slapstic.html, or go to
+ http://www.aarongiles.com/slapstic.html
+
+*************************************************************************/
+
+/*----------- defined in machine/slapstic.c -----------*/
+
+void slapstic_init(int chip);
+void slapstic_reset(void);
+
+int slapstic_bank(void);
+int slapstic_tweak(offs_t offset);
diff --git a/src/mame/includes/snes.h b/src/mame/includes/snes.h
new file mode 100644
index 00000000000..21ed722de93
--- /dev/null
+++ b/src/mame/includes/snes.h
@@ -0,0 +1,540 @@
+#ifndef _SNES_H_
+#define _SNES_H_
+
+#include "sound/custom.h"
+
+/*
+ SNES timing theory:
+
+ the master clock drives the CPU and PPU
+ 4 MC ticks = 1 PPU dot
+ 6 MC ticks = 1 65816 cycle for 3.58 MHz (3.579545)
+ 8 MC ticks = 1 65816 cycle for 2.68 MHz (2.684659)
+ 12 MC ticks = 1 65816 cycle for 1.78 MHz (1.789772)
+
+ Each scanline has 341 readable positions and 342 actual dots.
+ This is because 2 dots are "long" dots that last 6 MC ticks, resulting in 1 extra dot per line.
+*/
+
+#define MCLK_NTSC (21477272) /* verified */
+#define MCLK_PAL (21218370) /* verified */
+
+#define DOTCLK_NTSC (MCLK_NTSC/4)
+#define DOTCLK_PAL (MCLK_PAL/4)
+
+/* Debug definitions */
+#ifdef MAME_DEBUG
+/* #define SNES_DBG_GENERAL*/ /* Display general debug info */
+/* #define SNES_DBG_video*/ /* Display video debug info */
+/* #define SNES_DBG_GDMA*/ /* Display GDMA debug info */
+/* #define SNES_DBG_HDMA*/ /* Display HDMA debug info */
+/* #define SNES_DBG_REG_R*/ /* Display register read info */
+/* #define SNES_DBG_REG_W*/ /* Display register write info */
+#endif /* MAME_DEBUG */
+
+/* Useful definitions */
+#define SNES_SCR_WIDTH 256 /* 32 characters 8 pixels wide */
+#define SNES_SCR_HEIGHT_NTSC 224 /* Can be 224 or 240 height */
+#define SNES_SCR_HEIGHT_PAL 274 /* ??? */
+#define SNES_VTOTAL_NTSC 262 /* Maximum number of lines for NTSC systems */
+#define SNES_VTOTAL_PAL 312 /* Maximum number of lines for PAL systems */
+#define SNES_HTOTAL 341 /* Maximum number pixels per line (incl. hblank) */
+#define SNES_DMA_BASE 0x4300 /* Base DMA register address */
+#define SNES_MODE_20 0x1 /* Lo-ROM cart */
+#define SNES_MODE_21 0x2 /* Hi-ROM cart */
+#define SNES_NTSC 0x00
+#define SNES_PAL 0x10
+#define SNES_VRAM_SIZE 0x20000 /* 128kb of video ram */
+#define SNES_CGRAM_SIZE 0x202 /* 256 16-bit colours + 1 tacked on 16-bit colour for fixed colour */
+#define SNES_OAM_SIZE 0x440 /* 1088 bytes of Object Attribute Memory */
+#define SNES_SPCRAM_SIZE 0x10000 /* 64kb of spc700 ram */
+#define FIXED_COLOUR 256 /* Position in cgram for fixed colour */
+/* Definitions for PPU Memory-Mapped registers */
+#define INIDISP 0x2100
+#define OBSEL 0x2101
+#define OAMADDL 0x2102
+#define OAMADDH 0x2103
+#define OAMDATA 0x2104
+#define BGMODE 0x2105 /* abcdefff = abcd: bg4-1 tile size | e: BG3 high priority | f: mode */
+#define MOSAIC 0x2106 /* xxxxabcd = x: pixel size | abcd: affects bg 1-4 */
+#define BG1SC 0x2107
+#define BG2SC 0x2108
+#define BG3SC 0x2109
+#define BG4SC 0x210A
+#define BG12NBA 0x210B
+#define BG34NBA 0x210C
+#define BG1HOFS 0x210D
+#define BG1VOFS 0x210E
+#define BG2HOFS 0x210F
+#define BG2VOFS 0x2110
+#define BG3HOFS 0x2111
+#define BG3VOFS 0x2112
+#define BG4HOFS 0x2113
+#define BG4VOFS 0x2114
+#define VMAIN 0x2115 /* i---ffrr = i: Increment timing | f: Full graphic | r: increment rate */
+#define VMADDL 0x2116 /* aaaaaaaa = a: LSB of vram address */
+#define VMADDH 0x2117 /* aaaaaaaa = a: MSB of vram address */
+#define VMDATAL 0x2118 /* dddddddd = d: data to be written */
+#define VMDATAH 0x2119 /* dddddddd = d: data to be written */
+#define M7SEL 0x211A /* ab----yx = a: screen over | y: vertical flip | x: horizontal flip */
+#define M7A 0x211B /* aaaaaaaa = a: COSINE rotate angle / X expansion */
+#define M7B 0x211C /* aaaaaaaa = a: SINE rotate angle / X expansion */
+#define M7C 0x211D /* aaaaaaaa = a: SINE rotate angle / Y expansion */
+#define M7D 0x211E /* aaaaaaaa = a: COSINE rotate angle / Y expansion */
+#define M7X 0x211F
+#define M7Y 0x2120
+#define CGADD 0x2121
+#define CGDATA 0x2122
+#define W12SEL 0x2123
+#define W34SEL 0x2124
+#define WOBJSEL 0x2125
+#define WH0 0x2126 /* pppppppp = p: Left position of window 1 */
+#define WH1 0x2127 /* pppppppp = p: Right position of window 1 */
+#define WH2 0x2128 /* pppppppp = p: Left position of window 2 */
+#define WH3 0x2129 /* pppppppp = p: Right position of window 2 */
+#define WBGLOG 0x212A /* aabbccdd = a: BG4 params | b: BG3 params | c: BG2 params | d: BG1 params */
+#define WOBJLOG 0x212B /* ----ccoo = c: Colour window params | o: Object window params */
+#define TM 0x212C
+#define TS 0x212D
+#define TMW 0x212E
+#define TSW 0x212F
+#define CGWSEL 0x2130
+#define CGADSUB 0x2131
+#define COLDATA 0x2132
+#define SETINI 0x2133
+#define MPYL 0x2134
+#define MPYM 0x2135
+#define MPYH 0x2136
+#define SLHV 0x2137
+#define ROAMDATA 0x2138
+#define RVMDATAL 0x2139
+#define RVMDATAH 0x213A
+#define RCGDATA 0x213B
+#define OPHCT 0x213C
+#define OPVCT 0x213D
+#define STAT77 0x213E
+#define STAT78 0x213F
+#define APU00 0x2140
+#define APU01 0x2141
+#define APU02 0x2142
+#define APU03 0x2143
+#define WMDATA 0x2180
+#define WMADDL 0x2181
+#define WMADDM 0x2182
+#define WMADDH 0x2183
+/* Definitions for CPU Memory-Mapped registers */
+#define OLDJOY1 0x4016
+#define OLDJOY2 0x4017
+#define NMITIMEN 0x4200
+#define WRIO 0x4201
+#define WRMPYA 0x4202
+#define WRMPYB 0x4203
+#define WRDIVL 0x4204
+#define WRDIVH 0x4205
+#define WRDVDD 0x4206
+#define HTIMEL 0x4207
+#define HTIMEH 0x4208
+#define VTIMEL 0x4209
+#define VTIMEH 0x420A
+#define MDMAEN 0x420B
+#define HDMAEN 0x420C
+#define MEMSEL 0x420D
+#define RDNMI 0x4210
+#define TIMEUP 0x4211
+#define HVBJOY 0x4212
+#define RDIO 0x4213
+#define RDDIVL 0x4214
+#define RDDIVH 0x4215
+#define RDMPYL 0x4216
+#define RDMPYH 0x4217
+#define JOY1L 0x4218
+#define JOY1H 0x4219
+#define JOY2L 0x421A
+#define JOY2H 0x421B
+#define JOY3L 0x421C
+#define JOY3H 0x421D
+#define JOY4L 0x421E
+#define JOY4H 0x421F
+/* DMA */
+#define DMAP0 0x4300
+#define BBAD0 0x4301
+#define A1T0L 0x4302
+#define A1T0H 0x4303
+#define A1B0 0x4304
+#define DAS0L 0x4305
+#define DAS0H 0x4306
+#define DSAB0 0x4307
+#define A2A0L 0x4308
+#define A2A0H 0x4309
+#define NTRL0 0x430A
+#define DMAP1 0x4310
+#define BBAD1 0x4311
+#define A1T1L 0x4312
+#define A1T1H 0x4313
+#define A1B1 0x4314
+#define DAS1L 0x4315
+#define DAS1H 0x4316
+#define DSAB1 0x4317
+#define A2A1L 0x4318
+#define A2A1H 0x4319
+#define NTRL1 0x431A
+#define DMAP2 0x4320
+#define BBAD2 0x4321
+#define A1T2L 0x4322
+#define A1T2H 0x4323
+#define A1B2 0x4324
+#define DAS2L 0x4325
+#define DAS2H 0x4326
+#define DSAB2 0x4327
+#define A2A2L 0x4328
+#define A2A2H 0x4329
+#define NTRL2 0x432A
+#define DMAP3 0x4330
+#define BBAD3 0x4331
+#define A1T3L 0x4332
+#define A1T3H 0x4333
+#define A1B3 0x4334
+#define DAS3L 0x4335
+#define DAS3H 0x4336
+#define DSAB3 0x4337
+#define A2A3L 0x4338
+#define A2A3H 0x4339
+#define NTRL3 0x433A
+#define DMAP4 0x4340
+#define BBAD4 0x4341
+#define A1T4L 0x4342
+#define A1T4H 0x4343
+#define A1B4 0x4344
+#define DAS4L 0x4345
+#define DAS4H 0x4346
+#define DSAB4 0x4347
+#define A2A4L 0x4348
+#define A2A4H 0x4349
+#define NTRL4 0x434A
+#define DMAP5 0x4350
+#define BBAD5 0x4351
+#define A1T5L 0x4352
+#define A1T5H 0x4353
+#define A1B5 0x4354
+#define DAS5L 0x4355
+#define DAS5H 0x4356
+#define DSAB5 0x4357
+#define A2A5L 0x4358
+#define A2A5H 0x4359
+#define NTRL5 0x435A
+#define DMAP6 0x4360
+#define BBAD6 0x4361
+#define A1T6L 0x4362
+#define A1T6H 0x4363
+#define A1B6 0x4364
+#define DAS6L 0x4365
+#define DAS6H 0x4366
+#define DSAB6 0x4367
+#define A2A6L 0x4368
+#define A2A6H 0x4369
+#define NTRL6 0x436A
+#define DMAP7 0x4370
+#define BBAD7 0x4371
+#define A1T7L 0x4372
+#define A1T7H 0x4373
+#define A1B7 0x4374
+#define DAS7L 0x4375
+#define DAS7H 0x4376
+#define DSAB7 0x4377
+#define A2A7L 0x4378
+#define A2A7H 0x4379
+#define NTRL7 0x437A
+/* Definitions for sound DSP */
+#define DSP_V0_VOLL 0x00
+#define DSP_V0_VOLR 0x01
+#define DSP_V0_PITCHL 0x02
+#define DSP_V0_PITCHH 0x03
+#define DSP_V0_SRCN 0x04
+#define DSP_V0_ADSR1 0x05 /* gdddaaaa = g:gain enable | d:decay | a:attack */
+#define DSP_V0_ADSR2 0x06 /* llllrrrr = l:sustain left | r:sustain right */
+#define DSP_V0_GAIN 0x07
+#define DSP_V0_ENVX 0x08
+#define DSP_V0_OUTX 0x09
+#define DSP_V1_VOLL 0x10
+#define DSP_V1_VOLR 0x11
+#define DSP_V1_PITCHL 0x12
+#define DSP_V1_PITCHH 0x13
+#define DSP_V1_SRCN 0x14
+#define DSP_V1_ADSR1 0x15
+#define DSP_V1_ADSR2 0x16
+#define DSP_V1_GAIN 0x17
+#define DSP_V1_ENVX 0x18
+#define DSP_V1_OUTX 0x19
+#define DSP_V2_VOLL 0x20
+#define DSP_V2_VOLR 0x21
+#define DSP_V2_PITCHL 0x22
+#define DSP_V2_PITCHH 0x23
+#define DSP_V2_SRCN 0x24
+#define DSP_V2_ADSR1 0x25
+#define DSP_V2_ADSR2 0x26
+#define DSP_V2_GAIN 0x27
+#define DSP_V2_ENVX 0x28
+#define DSP_V2_OUTX 0x29
+#define DSP_V3_VOLL 0x30
+#define DSP_V3_VOLR 0x31
+#define DSP_V3_PITCHL 0x32
+#define DSP_V3_PITCHH 0x33
+#define DSP_V3_SRCN 0x34
+#define DSP_V3_ADSR1 0x35
+#define DSP_V3_ADSR2 0x36
+#define DSP_V3_GAIN 0x37
+#define DSP_V3_ENVX 0x38
+#define DSP_V3_OUTX 0x39
+#define DSP_V4_VOLL 0x40
+#define DSP_V4_VOLR 0x41
+#define DSP_V4_PITCHL 0x42
+#define DSP_V4_PITCHH 0x43
+#define DSP_V4_SRCN 0x44
+#define DSP_V4_ADSR1 0x45
+#define DSP_V4_ADSR2 0x46
+#define DSP_V4_GAIN 0x47
+#define DSP_V4_ENVX 0x48
+#define DSP_V4_OUTX 0x49
+#define DSP_V5_VOLL 0x50
+#define DSP_V5_VOLR 0x51
+#define DSP_V5_PITCHL 0x52
+#define DSP_V5_PITCHH 0x53
+#define DSP_V5_SRCN 0x54
+#define DSP_V5_ADSR1 0x55
+#define DSP_V5_ADSR2 0x56
+#define DSP_V5_GAIN 0x57
+#define DSP_V5_ENVX 0x58
+#define DSP_V5_OUTX 0x59
+#define DSP_V6_VOLL 0x60
+#define DSP_V6_VOLR 0x61
+#define DSP_V6_PITCHL 0x62
+#define DSP_V6_PITCHH 0x63
+#define DSP_V6_SRCN 0x64
+#define DSP_V6_ADSR1 0x65
+#define DSP_V6_ADSR2 0x66
+#define DSP_V6_GAIN 0x67
+#define DSP_V6_ENVX 0x68
+#define DSP_V6_OUTX 0x69
+#define DSP_V7_VOLL 0x70
+#define DSP_V7_VOLR 0x71
+#define DSP_V7_PITCHL 0x72
+#define DSP_V7_PITCHH 0x73
+#define DSP_V7_SRCN 0x74
+#define DSP_V7_ADSR1 0x75
+#define DSP_V7_ADSR2 0x76
+#define DSP_V7_GAIN 0x77
+#define DSP_V7_ENVX 0x78
+#define DSP_V7_OUTX 0x79
+#define DSP_MVOLL 0x0C
+#define DSP_MVOLR 0x1C
+#define DSP_EVOLL 0x2C
+#define DSP_EVOLR 0x3C
+#define DSP_KON 0x4C /* 01234567 = Key on for voices 0-7 */
+#define DSP_KOF 0x5C /* 01234567 = Key off for voices 0-7 */
+#define DSP_FLG 0x6C /* rme--n-- = r:Soft reset | m:Mute | e:External memory through echo | n:Clock of noise generator */
+#define DSP_ENDX 0x7C
+#define DSP_EFB 0x0D /* sfffffff = s: sign bit | f: feedback */
+#define DSP_PMOD 0x2D
+#define DSP_NON 0x3D
+#define DSP_EON 0x4D
+#define DSP_DIR 0x5D
+#define DSP_ESA 0x6D
+#define DSP_EDL 0x7D /* ----dddd = d: echo delay */
+#define DSP_FIR_C0 0x0F
+#define DSP_FIR_C1 0x1F
+#define DSP_FIR_C2 0x2F
+#define DSP_FIR_C3 0x3F
+#define DSP_FIR_C4 0x4F
+#define DSP_FIR_C5 0x5F
+#define DSP_FIR_C6 0x6F
+#define DSP_FIR_C7 0x7F
+
+/*----------- defined in machine/snes.c -----------*/
+
+extern MACHINE_START( snes );
+extern MACHINE_RESET( snes );
+
+extern READ8_HANDLER( snes_r_bank1 );
+extern READ8_HANDLER( snes_r_bank2 );
+extern READ8_HANDLER( snes_r_bank3 );
+extern READ8_HANDLER( snes_r_bank4 );
+extern READ8_HANDLER( snes_r_bank6 );
+extern READ8_HANDLER( snes_r_io );
+extern READ8_HANDLER( snes_r_sram );
+extern WRITE8_HANDLER( snes_w_bank1 );
+extern WRITE8_HANDLER( snes_w_bank2 );
+extern WRITE8_HANDLER( snes_w_bank4 );
+extern WRITE8_HANDLER( snes_w_bank6 );
+extern WRITE8_HANDLER( snes_w_io );
+extern WRITE8_HANDLER( snes_w_sram );
+
+extern int snes_validate_infoblock( UINT8 *infoblock, UINT16 offset );
+
+extern void snes_gdma( UINT8 channels );
+extern void snes_hdma_init(void);
+extern void snes_hdma(void);
+
+/* (PPU) Video related */
+extern UINT8 *snes_vram; /* Video RAM (Should be 16-bit, but it's easier this way) */
+extern UINT16 *snes_cgram; /* Colour RAM */
+extern UINT16 *snes_oam; /* Object Attribute Memory */
+extern UINT8 *snes_ram; /* Main memory */
+struct SNES_PPU_STRUCT
+{
+ struct
+ {
+ UINT8 blend;
+ UINT32 data;
+ UINT32 map;
+ UINT8 map_size;
+ UINT8 tile_size;
+ struct
+ {
+ UINT16 horizontal;
+ UINT16 vertical;
+ UINT16 tile_horz;
+ UINT8 shift_horz;
+ UINT16 tile_vert;
+ UINT16 shift_vert;
+ } offset;
+ } layer[5];
+ struct
+ {
+ UINT8 address_low;
+ UINT8 address_high;
+ UINT16 address;
+ UINT16 priority_rotation;
+ UINT8 size[2];
+ UINT32 name_select;
+ UINT8 first_sprite;
+ UINT8 flip;
+ UINT16 write_latch;
+ } oam;
+ struct
+ {
+ UINT16 horizontal[4];
+ UINT16 vertical[4];
+ } bgd_offset;
+ struct
+ {
+ UINT16 latch_horz;
+ UINT16 latch_vert;
+ UINT16 current_horz;
+ UINT16 current_vert;
+ UINT8 last_visible_line;
+ UINT8 interlace_count;
+ } beam;
+ struct
+ {
+ INT16 matrix_a;
+ INT16 matrix_b;
+ INT16 matrix_c;
+ INT16 matrix_d;
+ INT16 origin_x;
+ INT16 origin_y;
+ } mode7;
+ UINT8 clipmasks[6][SNES_SCR_WIDTH + 8];
+ UINT8 update_windows;
+ UINT8 update_palette;
+ UINT8 update_offsets;
+ UINT8 mode;
+};
+
+struct snes_cart_info
+{
+ UINT8 mode; /* ROM memory mode */
+ UINT32 sram; /* Amount of sram in cart */
+ UINT32 sram_max; /* Maximum amount sram in cart (based on ROM mode) */
+};
+
+extern struct snes_cart_info snes_cart;
+
+/*----------- defined in audio/snes.c -----------*/
+
+/* (APU) Sound related */
+extern UINT8 *spc_ram; /* SPC main memory */
+extern UINT8 spc_port_in[4]; /* SPC input ports */
+extern UINT8 spc_port_out[4]; /* SPC output ports */
+extern READ8_HANDLER( spc_io_r );
+extern WRITE8_HANDLER( spc_io_w );
+extern READ8_HANDLER( spc_ram_r );
+extern WRITE8_HANDLER( spc_ram_w );
+extern READ8_HANDLER( spc_ipl_r );
+extern void *snes_sh_start(int clock, const struct CustomSound_interface *config);
+extern void snes_sh_update( void *param, stream_sample_t **inputs, stream_sample_t **buffer, int length );
+
+/* Stuff from OpenSPC 0.3.99 by Brad Martin */
+
+/*========== TYPES ==========*/
+
+typedef enum /* ADSR state type */
+ {
+ ATTACK,
+ DECAY,
+ SUSTAIN,
+ RELEASE
+ } env_state_t32;
+
+typedef struct /* Voice state type */
+ {
+ UINT16 mem_ptr; /* Sample data memory pointer */
+ int end; /* End or loop after block */
+ int envcnt; /* Counts to envelope update */
+ env_state_t32 envstate; /* Current envelope state */
+ int envx; /* Last env height (0-0x7FFF) */
+ int filter; /* Last header's filter */
+ int half; /* Active nybble of BRR */
+ int header_cnt; /* Bytes before new header (0-8)*/
+ int mixfrac; /* Fractional part of smpl pstn */
+ int on_cnt; /* Is it time to turn on yet? */
+ int pitch; /* Sample pitch (4096->32000Hz) */
+ int range; /* Last header's range */
+ UINT32 samp_id; /* Sample ID# */
+ int sampptr; /* Where in sampbuf we are */
+ signed long smp1; /* Last sample (for BRR filter) */
+ signed long smp2; /* Second-to-last sample decoded*/
+ short sampbuf[ 4 ]; /* Buffer for Gaussian interp */
+ } voice_state_type;
+
+typedef struct /* Source directory entry */
+ {
+ UINT16 vptr; /* Ptr to start of sample data */
+ UINT16 lptr; /* Loop pointer in sample data */
+ } src_dir_type;
+
+/*========== MACROS ==========*/
+
+/* The functions to actually read and write to the DSP registers must be
+ implemented by the specific SPC core implementation, as this is too
+ specific to generalize. However, by defining these macros, we can
+ generalize the DSP's behavior while staying out of the SPC's internals,
+ by requiring that the SPC core must use these macros at the appropriate
+ times. */
+
+/* All reads simply return the contents of the addressed register. */
+
+/* This macro must be used INSTEAD OF a normal write to register 0x7C
+ (ENDX) */
+#define DSP_WRITE_7C( x ) ( DSPregs[ 0x7C ] = 0 )
+
+/* All other writes should store the value in the addressed register as
+ expected. */
+
+/*========== PROCEDURES ==========*/
+
+void DSP_Reset /* Reset emulated DSP */
+ ( void );
+
+void DSP_Update /* Mix one sample of audio */
+ (
+ short * sound_ptr /* Pointer to mix audio into */
+ );
+
+/*----------- defined in video/snes.c -----------*/
+
+extern struct SNES_PPU_STRUCT snes_ppu;
+
+extern VIDEO_UPDATE( snes );
+
+
+#endif /* _SNES_H_ */
diff --git a/src/mame/includes/snk.h b/src/mame/includes/snk.h
new file mode 100644
index 00000000000..28a1e9c9cfe
--- /dev/null
+++ b/src/mame/includes/snk.h
@@ -0,0 +1,48 @@
+/*************************************************************************
+
+ various SNK triple Z80 games
+
+*************************************************************************/
+
+/*----------- defined in drivers/snk.c -----------*/
+
+extern UINT8 *snk_rambase;
+
+extern INTERRUPT_GEN( snk_irq_AB );
+extern INTERRUPT_GEN( snk_irq_BA );
+
+extern READ8_HANDLER ( snk_cpuA_nmi_trigger_r );
+extern WRITE8_HANDLER( snk_cpuA_nmi_ack_w );
+
+extern READ8_HANDLER ( snk_cpuB_nmi_trigger_r );
+extern WRITE8_HANDLER( snk_cpuB_nmi_ack_w );
+
+extern int snk_gamegroup;
+extern int snk_sound_busy_bit;
+extern int snk_irq_delay;
+
+
+/*----------- defined in video/snk.c -----------*/
+
+extern PALETTE_INIT( snk_3bpp_shadow );
+extern PALETTE_INIT( snk_4bpp_shadow );
+
+extern VIDEO_START( snk );
+extern VIDEO_START( sgladiat );
+
+extern VIDEO_UPDATE( tnk3 );
+extern VIDEO_UPDATE( ikari );
+extern VIDEO_UPDATE( tdfever );
+extern VIDEO_UPDATE( gwar );
+extern VIDEO_UPDATE( sgladiat );
+
+void tnk3_draw_text( running_machine *machine, mame_bitmap *bitmap, const rectangle *cliprect, int bank, UINT8 *source );
+void tnk3_draw_status( running_machine *machine, mame_bitmap *bitmap, const rectangle *cliprect, int bank, UINT8 *source );
+
+// note: compare tdfever which does blinking in software with tdfeverj which does it in hardware
+extern int snk_blink_parity;
+
+
+/*----------- defined in drivers/hal21.c -----------*/
+
+extern PALETTE_INIT( aso );
diff --git a/src/mame/includes/spacefb.h b/src/mame/includes/spacefb.h
new file mode 100644
index 00000000000..515e8c04365
--- /dev/null
+++ b/src/mame/includes/spacefb.h
@@ -0,0 +1,54 @@
+/***************************************************************************
+
+ Space Firebird hardware
+
+****************************************************************************/
+
+/*
+ * SPACEFB_PIXEL_CLOCK clocks the star generator circuit. The rest of
+ * the graphics use a clock half of SPACEFB_PIXEL_CLOCK, thus creating
+ * double width pixels.
+ */
+
+#define SPACEFB_MASTER_CLOCK (20160000)
+#define SPACEFB_MAIN_CPU_CLOCK (6000000 / 2)
+#define SPACEFB_AUDIO_CPU_CLOCK (6000000 / 15) /* this goes to X2, pixel clock goes to X1 */
+#define SPACEFB_PIXEL_CLOCK (SPACEFB_MASTER_CLOCK / 2)
+#define SPACEFB_HTOTAL (0x280)
+#define SPACEFB_HBEND (0x000)
+#define SPACEFB_HBSTART (0x200)
+#define SPACEFB_VTOTAL (0x100)
+#define SPACEFB_VBEND (0x010)
+#define SPACEFB_VBSTART (0x0f0)
+#define SPACEFB_INT_TRIGGER_COUNT_1 (0x080)
+#define SPACEFB_INT_TRIGGER_COUNT_2 (0x0f0)
+
+
+/*----------- defined in audio/spacefb.c -----------*/
+
+MACHINE_DRIVER_EXTERN( spacefb_audio );
+
+READ8_HANDLER( spacefb_audio_p2_r );
+READ8_HANDLER( spacefb_audio_t0_r );
+READ8_HANDLER( spacefb_audio_t1_r );
+WRITE8_HANDLER( spacefb_port_1_w );
+
+
+
+/*----------- defined in video/spacefb.c -----------*/
+
+extern UINT8 *spacefb_videoram;
+extern size_t spacefb_videoram_size;
+
+VIDEO_START( spacefb );
+VIDEO_UPDATE( spacefb );
+
+void spacefb_set_flip_screen(UINT8 data);
+void spacefb_set_gfx_bank(UINT8 data);
+void spacefb_set_palette_bank(UINT8 data);
+void spacefb_set_background_red(UINT8 data);
+void spacefb_set_background_blue(UINT8 data);
+void spacefb_set_disable_star_field(UINT8 data);
+void spacefb_set_color_contrast_r(UINT8 data);
+void spacefb_set_color_contrast_g(UINT8 data);
+void spacefb_set_color_contrast_b(UINT8 data);
diff --git a/src/mame/includes/spiders.h b/src/mame/includes/spiders.h
new file mode 100644
index 00000000000..ac65a176ecf
--- /dev/null
+++ b/src/mame/includes/spiders.h
@@ -0,0 +1,15 @@
+/***************************************************************************
+
+ Sigma Spiders hardware
+
+***************************************************************************/
+
+
+/*----------- defined in audio/spiders.c -----------*/
+
+WRITE8_HANDLER( spiders_audio_command_w );
+WRITE8_HANDLER( spiders_audio_a_w );
+WRITE8_HANDLER( spiders_audio_b_w );
+WRITE8_HANDLER( spiders_audio_ctrl_w );
+
+MACHINE_DRIVER_EXTERN( spiders_audio );
diff --git a/src/mame/includes/sprint2.h b/src/mame/includes/sprint2.h
new file mode 100644
index 00000000000..a3f1ede2362
--- /dev/null
+++ b/src/mame/includes/sprint2.h
@@ -0,0 +1,44 @@
+/*************************************************************************
+
+ Atari Sprint hardware
+
+*************************************************************************/
+
+#include "sound/discrete.h"
+
+/* Discrete Sound Input Nodes */
+#define SPRINT2_SKIDSND1_EN NODE_01
+#define SPRINT2_SKIDSND2_EN NODE_02
+#define SPRINT2_MOTORSND1_DATA NODE_03
+#define SPRINT2_MOTORSND2_DATA NODE_04
+#define SPRINT2_CRASHSND_DATA NODE_05
+#define SPRINT2_ATTRACT_EN NODE_06
+#define SPRINT2_NOISE_RESET NODE_07
+
+#define DOMINOS_FREQ_DATA SPRINT2_MOTORSND1_DATA
+#define DOMINOS_AMP_DATA SPRINT2_CRASHSND_DATA
+#define DOMINOS_TUMBLE_EN SPRINT2_SKIDSND1_EN
+#define DOMINOS_ATTRACT_EN SPRINT2_ATTRACT_EN
+
+
+/*----------- defined in audio/sprint2.c -----------*/
+
+DISCRETE_SOUND_EXTERN( sprint2 );
+DISCRETE_SOUND_EXTERN( sprint1 );
+DISCRETE_SOUND_EXTERN( dominos );
+
+
+/*----------- defined in video/sprint2.c -----------*/
+
+extern READ8_HANDLER( sprint2_collision1_r );
+extern READ8_HANDLER( sprint2_collision2_r );
+
+extern WRITE8_HANDLER( sprint2_collision_reset1_w );
+extern WRITE8_HANDLER( sprint2_collision_reset2_w );
+extern WRITE8_HANDLER( sprint2_video_ram_w );
+
+extern VIDEO_UPDATE( sprint2 );
+extern VIDEO_START( sprint2 );
+extern VIDEO_EOF( sprint2 );
+
+extern UINT8* sprint2_video_ram;
diff --git a/src/mame/includes/sprint8.h b/src/mame/includes/sprint8.h
new file mode 100644
index 00000000000..92f0343b109
--- /dev/null
+++ b/src/mame/includes/sprint8.h
@@ -0,0 +1,17 @@
+/*----------- defined in drivers/sprint8.c -----------*/
+
+void sprint8_set_collision(int n);
+
+
+/*----------- defined in video/sprint8.c -----------*/
+
+extern UINT8* sprint8_video_ram;
+extern UINT8* sprint8_pos_h_ram;
+extern UINT8* sprint8_pos_v_ram;
+extern UINT8* sprint8_pos_d_ram;
+
+VIDEO_EOF( sprint8 );
+VIDEO_START( sprint8 );
+VIDEO_UPDATE( sprint8 );
+
+WRITE8_HANDLER( sprint8_video_ram_w );
diff --git a/src/mame/includes/st0016.h b/src/mame/includes/st0016.h
new file mode 100644
index 00000000000..1499bc6d203
--- /dev/null
+++ b/src/mame/includes/st0016.h
@@ -0,0 +1,57 @@
+
+#define ISMACS (st0016_game&0x80)
+#define ISMACS1 (((st0016_game&0x180)==0x180))
+#define ISMACS2 (((st0016_game&0x180)==0x080))
+
+
+#define ST0016_MAX_SPR_BANK 0x10
+#define ST0016_MAX_CHAR_BANK 0x10000
+#define ST0016_MAX_PAL_BANK 4
+
+#define ST0016_SPR_BANK_SIZE 0x1000
+#define ST0016_CHAR_BANK_SIZE 0x20
+#define ST0016_PAL_BANK_SIZE 0x200
+
+#define UNUSED_PEN 1024
+
+#define ST0016_SPR_BANK_MASK (ST0016_MAX_SPR_BANK-1)
+#define ST0016_CHAR_BANK_MASK (ST0016_MAX_CHAR_BANK-1)
+#define ST0016_PAL_BANK_MASK (ST0016_MAX_PAL_BANK-1)
+
+/*----------- defined in drivers/macs.c -----------*/
+
+extern UINT8 macs_mux_data;
+
+
+/*----------- defined in video/st0016.c -----------*/
+
+extern UINT8 *st0016_charram,*st0016_spriteram,*st0016_paletteram;
+
+extern UINT8 *macs_ram1,*macs_ram2;
+
+READ8_HANDLER(st0016_dma_r);
+WRITE8_HANDLER (st0016_sprite_bank_w);
+WRITE8_HANDLER (st0016_palette_bank_w);
+WRITE8_HANDLER (st0016_character_bank_w);
+READ8_HANDLER (st0016_sprite_ram_r);
+WRITE8_HANDLER (st0016_sprite_ram_w);
+READ8_HANDLER (st0016_sprite2_ram_r);
+WRITE8_HANDLER (st0016_sprite2_ram_w);
+READ8_HANDLER (st0016_palette_ram_r);
+WRITE8_HANDLER (st0016_palette_ram_w);
+READ8_HANDLER (st0016_character_ram_r);
+WRITE8_HANDLER (st0016_character_ram_w);
+READ8_HANDLER (st0016_vregs_r);
+WRITE8_HANDLER (st0016_vregs_w);
+WRITE8_HANDLER (st0016_rom_bank_w);
+
+VIDEO_START(st0016);
+VIDEO_UPDATE(st0016);
+
+extern UINT32 st0016_game;
+
+extern UINT32 st0016_rom_bank;
+
+void st0016_save_init(void);
+
+
diff --git a/src/mame/includes/starfire.h b/src/mame/includes/starfire.h
new file mode 100644
index 00000000000..2c407010b02
--- /dev/null
+++ b/src/mame/includes/starfire.h
@@ -0,0 +1,31 @@
+
+#define STARFIRE_MASTER_CLOCK (20000000)
+#define STARFIRE_CPU_CLOCK (STARFIRE_MASTER_CLOCK / 8)
+#define STARFIRE_PIXEL_CLOCK (STARFIRE_MASTER_CLOCK / 4)
+#define STARFIRE_HTOTAL (0x13f) /* could be 0x140, but I think this is right */
+#define STARFIRE_HBEND (0x000)
+#define STARFIRE_HBSTART (0x100)
+#define STARFIRE_VTOTAL (0x106)
+#define STARFIRE_VBEND (0x020)
+#define STARFIRE_VBSTART (0x100)
+
+
+/*----------- defined in drivers/starfire.c -----------*/
+
+extern UINT8 *starfire_videoram;
+extern UINT8 *starfire_colorram;
+
+
+/*----------- defined in video/starfire.c -----------*/
+
+VIDEO_UPDATE( starfire );
+VIDEO_START( starfire );
+void starfire_video_update(int scanline, int count);
+
+WRITE8_HANDLER( starfire_videoram_w );
+READ8_HANDLER( starfire_videoram_r );
+WRITE8_HANDLER( starfire_colorram_w );
+READ8_HANDLER( starfire_colorram_r );
+WRITE8_HANDLER( starfire_vidctrl_w );
+WRITE8_HANDLER( starfire_vidctrl1_w );
+
diff --git a/src/mame/includes/starshp1.h b/src/mame/includes/starshp1.h
new file mode 100644
index 00000000000..19656c5f9e0
--- /dev/null
+++ b/src/mame/includes/starshp1.h
@@ -0,0 +1,67 @@
+/*
+ * The schematics don't seem to make a lot of sense when it
+ * comes to the video timing chain::
+ *
+ * * there are clear typos -- what is H132???
+ * * there are two HBLANK/HSYNC periods as the horizontal
+ * chain is drawn, which would give an alternating long
+ * line followed by a much shorter one. This cannot be right
+ * * the carry-out/load circuit on LS161@J8 is superflous
+ *
+ * These values also give a frame rate of about 45Hz, which is
+ * probably too low. I suspect that screen is not really
+ * 512 pixels wide -- most likely 384, which would give 60Hz
+ *
+ * Some of the graphics, like the starfield, is clocked with the
+ * 12MHz signal, effecitvely doubling the horizontal resolution
+ */
+
+#define STARSHP1_MASTER_CLOCK (12096000)
+#define STARSHP1_CPU_CLOCK (STARSHP1_MASTER_CLOCK / 16)
+#define STARSHP1_PIXEL_CLOCK (STARSHP1_MASTER_CLOCK / 2)
+#define STARSHP1_HTOTAL (0x200)
+#define STARSHP1_HBEND (0x000)
+#define STARSHP1_HBSTART (0x200)
+#define STARSHP1_VTOTAL (0x106)
+#define STARSHP1_VBEND (0x000)
+#define STARSHP1_VBSTART (0x0f0)
+
+
+/*----------- defined in drivers/starshp1.c -----------*/
+
+extern int starshp1_attract;
+
+
+/*----------- defined in video/starshp1.c -----------*/
+
+extern UINT8 *starshp1_playfield_ram;
+extern UINT8 *starshp1_hpos_ram;
+extern UINT8 *starshp1_vpos_ram;
+extern UINT8 *starshp1_obj_ram;
+
+extern int starshp1_ship_explode;
+extern int starshp1_ship_picture;
+extern int starshp1_ship_hoffset;
+extern int starshp1_ship_voffset;
+extern int starshp1_ship_size;
+
+extern int starshp1_circle_hpos;
+extern int starshp1_circle_vpos;
+extern int starshp1_circle_size;
+extern int starshp1_circle_mod;
+extern int starshp1_circle_kill;
+
+extern int starshp1_phasor;
+extern int starshp1_collision_latch;
+extern int starshp1_starfield_kill;
+extern int starshp1_mux;
+
+READ8_HANDLER( starshp1_rng_r );
+
+WRITE8_HANDLER( starshp1_sspic_w );
+WRITE8_HANDLER( starshp1_ssadd_w );
+WRITE8_HANDLER( starshp1_playfield_w );
+
+VIDEO_UPDATE( starshp1 );
+VIDEO_EOF( starshp1 );
+VIDEO_START( starshp1 );
diff --git a/src/mame/includes/starwars.h b/src/mame/includes/starwars.h
new file mode 100644
index 00000000000..528ebc33e28
--- /dev/null
+++ b/src/mame/includes/starwars.h
@@ -0,0 +1,46 @@
+/***************************************************************************
+
+ Atari Star Wars hardware
+
+***************************************************************************/
+
+/*----------- defined in drivers/starwars.c -----------*/
+
+extern UINT8 starwars_is_esb;
+
+
+/*----------- defined in machine/starwars.c -----------*/
+
+extern UINT8 *starwars_mathram;
+extern UINT8 *starwars_ram_overlay;
+
+WRITE8_HANDLER( starwars_nstore_w );
+
+WRITE8_HANDLER( starwars_out_w );
+READ8_HANDLER( starwars_input_1_r );
+
+READ8_HANDLER( starwars_adc_r );
+WRITE8_HANDLER( starwars_adc_select_w );
+
+void swmathbox_init(void);
+void swmathbox_reset(void);
+
+READ8_HANDLER( swmathbx_prng_r );
+READ8_HANDLER( swmathbx_reh_r );
+READ8_HANDLER( swmathbx_rel_r );
+
+WRITE8_HANDLER( swmathbx_w );
+
+
+/*----------- defined in audio/starwars.c -----------*/
+
+READ8_HANDLER( starwars_main_read_r );
+READ8_HANDLER( starwars_main_ready_flag_r );
+WRITE8_HANDLER( starwars_main_wr_w );
+WRITE8_HANDLER( starwars_soundrst_w );
+
+READ8_HANDLER( starwars_sin_r );
+READ8_HANDLER( starwars_m6532_r );
+
+WRITE8_HANDLER( starwars_sout_w );
+WRITE8_HANDLER( starwars_m6532_w );
diff --git a/src/mame/includes/subs.h b/src/mame/includes/subs.h
new file mode 100644
index 00000000000..1aec4a944f4
--- /dev/null
+++ b/src/mame/includes/subs.h
@@ -0,0 +1,47 @@
+/*************************************************************************
+
+ Atari Subs hardware
+
+*************************************************************************/
+
+#include "sound/discrete.h"
+
+/* Discrete Sound Input Nodes */
+#define SUBS_SONAR1_EN NODE_01
+#define SUBS_SONAR2_EN NODE_02
+#define SUBS_LAUNCH_DATA NODE_03
+#define SUBS_CRASH_DATA NODE_04
+#define SUBS_CRASH_EN NODE_05
+#define SUBS_EXPLODE_EN NODE_06
+#define SUBS_NOISE_RESET NODE_07
+
+
+/*----------- defined in machine/subs.c -----------*/
+
+MACHINE_RESET( subs );
+INTERRUPT_GEN( subs_interrupt );
+WRITE8_HANDLER( subs_steer_reset_w );
+READ8_HANDLER( subs_control_r );
+READ8_HANDLER( subs_coin_r );
+READ8_HANDLER( subs_options_r );
+WRITE8_HANDLER( subs_lamp1_w );
+WRITE8_HANDLER( subs_lamp2_w );
+
+
+/*----------- defined in audio/subs.c -----------*/
+
+WRITE8_HANDLER( subs_noise_reset_w );
+WRITE8_HANDLER( subs_sonar2_w );
+WRITE8_HANDLER( subs_sonar1_w );
+WRITE8_HANDLER( subs_crash_w );
+WRITE8_HANDLER( subs_explode_w );
+
+DISCRETE_SOUND_EXTERN( subs );
+
+
+/*----------- defined in video/subs.c -----------*/
+
+VIDEO_UPDATE( subs );
+
+WRITE8_HANDLER( subs_invert1_w );
+WRITE8_HANDLER( subs_invert2_w );
diff --git a/src/mame/includes/suprridr.h b/src/mame/includes/suprridr.h
new file mode 100644
index 00000000000..d16590bcc3f
--- /dev/null
+++ b/src/mame/includes/suprridr.h
@@ -0,0 +1,24 @@
+/*************************************************************************
+
+ Venture Line Super Rider driver
+
+**************************************************************************/
+
+/*----------- defined in video/suprridr.c -----------*/
+
+extern UINT8 *suprridr_fgram;
+extern UINT8 *suprridr_bgram;
+
+VIDEO_START( suprridr );
+PALETTE_INIT( suprridr );
+
+WRITE8_HANDLER( suprridr_flipx_w );
+WRITE8_HANDLER( suprridr_flipy_w );
+WRITE8_HANDLER( suprridr_fgdisable_w );
+WRITE8_HANDLER( suprridr_fgscrolly_w );
+WRITE8_HANDLER( suprridr_bgscrolly_w );
+
+WRITE8_HANDLER( suprridr_fgram_w );
+WRITE8_HANDLER( suprridr_bgram_w );
+
+VIDEO_UPDATE( suprridr );
diff --git a/src/mame/includes/system16.h b/src/mame/includes/system16.h
new file mode 100644
index 00000000000..27bceee56d4
--- /dev/null
+++ b/src/mame/includes/system16.h
@@ -0,0 +1,279 @@
+/******************** NEW STUFF *******************/
+
+#include "video/segaic16.h"
+
+/*----------- defined in video/segahang.c -----------*/
+
+VIDEO_START( hangon );
+VIDEO_START( sharrier );
+VIDEO_UPDATE( hangon );
+
+/*----------- defined in video/segas16a.c -----------*/
+
+VIDEO_START( system16a );
+VIDEO_UPDATE( system16a );
+
+/*----------- defined in video/segas16b.c -----------*/
+
+VIDEO_START( system16b );
+VIDEO_START( timscanr );
+VIDEO_UPDATE( system16b );
+
+/*----------- defined in video/segas18.c -----------*/
+
+VIDEO_START( system18 );
+VIDEO_UPDATE( system18 );
+
+void system18_set_grayscale(int enable);
+void system18_set_vdp_enable(int eanble);
+void system18_set_vdp_mixing(int mixing);
+
+/*----------- defined in video/segaorun.c -----------*/
+
+VIDEO_START( outrun );
+VIDEO_START( shangon );
+VIDEO_UPDATE( outrun );
+VIDEO_UPDATE( shangon );
+
+/*----------- defined in video/segaxbd.c -----------*/
+
+VIDEO_START( xboard );
+VIDEO_UPDATE( xboard );
+void xboard_set_road_priority(int priority);
+
+/*----------- defined in video/segaybd.c -----------*/
+
+VIDEO_START( yboard );
+VIDEO_UPDATE( yboard );
+
+
+
+/******************** OLD STUFF *******************/
+
+#define SYS16_SPR_FLIPX 0x01
+#define SYS16_SPR_VISIBLE 0x04
+#define SYS16_SPR_DRAW_TO_LEFT 0x08
+#define SYS16_SPR_SPECIAL 0x10
+#define SYS16_SPR_SHADOW 0x20 /* all pixels */
+#define SYS16_SPR_PARTIAL_SHADOW 0x40 /* pen #10 */
+#define SYS16_SPR_DRAW_TO_TOP 0x80
+
+struct sys16_sprite_attributes {
+ int priority, flags;
+ int gfx, color;
+ UINT8 pitch;
+ int zoomx, zoomy;
+ int x,y, screen_height; /* in screen coordinates */
+ int shadow_pen;
+};
+
+extern int (*sys16_spritesystem)(
+ struct sys16_sprite_attributes *sprite,
+ const UINT16 *source,
+ int bJustGetColor );
+
+/*----------- defined in video/sys16spr.c -----------*/
+
+extern int sys16_sprite_shinobi( struct sys16_sprite_attributes *sprite, const UINT16 *source, int bJustGetColor );
+extern int sys16_sprite_passshot( struct sys16_sprite_attributes *sprite, const UINT16 *source, int bJustGetColor );
+extern int sys16_sprite_quartet2( struct sys16_sprite_attributes *sprite, const UINT16 *source, int bJustGetColor );
+
+#define NumOfShadowColors 32
+#define ShadowColorsMultiplier 2
+
+/*----------- defined in machine/system16.c -----------*/
+
+extern UINT16 *sys16_workingram;
+extern UINT16 *sys16_workingram2;
+extern UINT16 *sys16_extraram;
+extern UINT16 *sys16_extraram2;
+extern UINT16 *sys16_extraram3;
+
+/* sound */
+extern struct upd7759_interface sys16_upd7759_interface;
+
+extern int sys18_sound_info[4*2];
+
+extern void sys16_patch_code( int offset, int data );
+
+#define SYS16_MWA16_PALETTERAM sys16_paletteram_w
+#define SYS16_MRA16_PALETTERAM paletteram16_word_r
+
+#define SYS16_MRA16_WORKINGRAM MRA16_RAM
+#define SYS16_MWA16_WORKINGRAM MWA16_RAM
+
+#define SYS16_MRA16_WORKINGRAM2 MRA16_RAM
+#define SYS16_MWA16_WORKINGRAM2 MWA16_RAM
+
+extern MACHINE_RESET( sys16_onetime );
+
+#define SYS16_MRA16_SPRITERAM MRA16_RAM
+#define SYS16_MWA16_SPRITERAM MWA16_RAM
+
+#define SYS16_MRA16_TILERAM sys16_tileram_r
+#define SYS16_MWA16_TILERAM sys16_tileram_w
+
+#define SYS16_MRA16_TEXTRAM sys16_textram_r
+#define SYS16_MWA16_TEXTRAM sys16_textram_w
+
+#define SYS16_MRA16_EXTRAM MRA16_RAM
+#define SYS16_MWA16_EXTRAM MWA16_RAM
+
+#define SYS16_MRA16_EXTRAM2 MRA16_RAM
+#define SYS16_MWA16_EXTRAM2 MWA16_RAM
+
+#define SYS16_MRA16_EXTRAM3 MRA16_RAM
+#define SYS16_MWA16_EXTRAM3 MWA16_RAM
+
+#define SYS16_MRA16_EXTRAM4 MRA16_RAM
+#define SYS16_MWA16_EXTRAM4 MWA16_RAM
+
+#define SYS16_MRA16_ROADRAM MRA16_RAM
+#define SYS16_MWA16_ROADRAM MWA16_RAM
+
+GFXDECODE_EXTERN( sys16 );
+
+
+#define SYS16_JOY1 PORT_START_TAG("IN0")\
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON3 ) \
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON1 ) \
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON2 ) \
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) \
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY \
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY \
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY \
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY
+
+#define SYS16_JOY2 PORT_START_TAG("IN1") \
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_COCKTAIL \
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_COCKTAIL \
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_COCKTAIL \
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) \
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_COCKTAIL \
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_COCKTAIL \
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_COCKTAIL \
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_COCKTAIL
+
+#define SYS16_SERVICE PORT_START_TAG("IN2") \
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) \
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 ) \
+ PORT_SERVICE_NO_TOGGLE(0x04, IP_ACTIVE_LOW) \
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE1 ) \
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START1 ) \
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START2 ) \
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) \
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+#define SYS16_COINAGE PORT_START_TAG("DSW0") \
+ PORT_DIPNAME( 0x0f, 0x0f, DEF_STR( Coin_A ) ) \
+ PORT_DIPSETTING( 0x07, DEF_STR( 4C_1C ) ) \
+ PORT_DIPSETTING( 0x08, DEF_STR( 3C_1C ) ) \
+ PORT_DIPSETTING( 0x09, DEF_STR( 2C_1C ) ) \
+ PORT_DIPSETTING( 0x05, "2 Coins/1 Credit 5/3 6/4" ) \
+ PORT_DIPSETTING( 0x04, "2 Coins/1 Credit 4/3" ) \
+ PORT_DIPSETTING( 0x0f, DEF_STR( 1C_1C ) ) \
+ PORT_DIPSETTING( 0x01, "1 Coin/1 Credit 2/3" ) \
+ PORT_DIPSETTING( 0x02, "1 Coin/1 Credit 4/5" ) \
+ PORT_DIPSETTING( 0x03, "1 Coin/1 Credit 5/6" ) \
+ PORT_DIPSETTING( 0x06, DEF_STR( 2C_3C ) ) \
+ PORT_DIPSETTING( 0x0e, DEF_STR( 1C_2C ) ) \
+ PORT_DIPSETTING( 0x0d, DEF_STR( 1C_3C ) ) \
+ PORT_DIPSETTING( 0x0c, DEF_STR( 1C_4C ) ) \
+ PORT_DIPSETTING( 0x0b, DEF_STR( 1C_5C ) ) \
+ PORT_DIPSETTING( 0x0a, DEF_STR( 1C_6C ) ) \
+ PORT_DIPSETTING( 0x00, "Free Play (if Coin B too) or 1/1" ) \
+ PORT_DIPNAME( 0xf0, 0xf0, DEF_STR( Coin_B ) ) \
+ PORT_DIPSETTING( 0x70, DEF_STR( 4C_1C ) ) \
+ PORT_DIPSETTING( 0x80, DEF_STR( 3C_1C ) ) \
+ PORT_DIPSETTING( 0x90, DEF_STR( 2C_1C ) ) \
+ PORT_DIPSETTING( 0x50, "2 Coins/1 Credit 5/3 6/4" ) \
+ PORT_DIPSETTING( 0x40, "2 Coins/1 Credit 4/3" ) \
+ PORT_DIPSETTING( 0xf0, DEF_STR( 1C_1C ) ) \
+ PORT_DIPSETTING( 0x10, "1 Coin/1 Credit 2/3" ) \
+ PORT_DIPSETTING( 0x20, "1 Coin/1 Credit 4/5" ) \
+ PORT_DIPSETTING( 0x30, "1 Coin/1 Credit 5/6" ) \
+ PORT_DIPSETTING( 0x60, DEF_STR( 2C_3C ) ) \
+ PORT_DIPSETTING( 0xe0, DEF_STR( 1C_2C ) ) \
+ PORT_DIPSETTING( 0xd0, DEF_STR( 1C_3C ) ) \
+ PORT_DIPSETTING( 0xc0, DEF_STR( 1C_4C ) ) \
+ PORT_DIPSETTING( 0xb0, DEF_STR( 1C_5C ) ) \
+ PORT_DIPSETTING( 0xa0, DEF_STR( 1C_6C ) ) \
+ PORT_DIPSETTING( 0x00, "Free Play (if Coin A too) or 1/1" )
+
+
+/*----------- defined in video/system16.c -----------*/
+
+/* video hardware */
+extern READ16_HANDLER( sys16_tileram_r );
+extern WRITE16_HANDLER( sys16_tileram_w );
+extern READ16_HANDLER( sys16_textram_r );
+extern WRITE16_HANDLER( sys16_textram_w );
+extern WRITE16_HANDLER( sys16_paletteram_w );
+
+/* "normal" video hardware */
+extern VIDEO_START( system16 );
+extern VIDEO_UPDATE( system16 );
+
+/* system18 video hardware */
+extern VIDEO_START( system18old );
+extern VIDEO_UPDATE( system18old );
+
+/* callback to poll video registers */
+extern void (* sys16_update_proc)( void );
+
+extern UINT16 *sys16_tileram;
+extern UINT16 *sys16_textram;
+extern UINT16 *sys16_spriteram;
+
+extern int sys16_sh_shadowpal;
+extern int sys16_MaxShadowColors;
+
+/* video driver constants (vary with game) */
+extern int sys16_gr_bitmap_width;
+extern int sys16_sprxoffset;
+extern int sys16_bgxoffset;
+extern int sys16_fgxoffset;
+extern int *sys16_obj_bank;
+extern int sys16_textlayer_lo_min;
+extern int sys16_textlayer_lo_max;
+extern int sys16_textlayer_hi_min;
+extern int sys16_textlayer_hi_max;
+extern int sys16_bg1_trans;
+extern int sys16_bg_priority_mode;
+extern int sys16_fg_priority_mode;
+extern int sys16_bg_priority_value;
+extern int sys16_fg_priority_value;
+extern int sys16_tilebank_switch;
+extern int sys16_rowscroll_scroll;
+extern int shinobl_kludge;
+
+/* video driver registers */
+extern int sys16_refreshenable;
+extern int sys16_tile_bank0;
+extern int sys16_tile_bank1;
+extern int sys16_bg_scrollx, sys16_bg_scrolly;
+extern int sys16_bg_page[4];
+extern int sys16_fg_scrollx, sys16_fg_scrolly;
+extern int sys16_fg_page[4];
+
+extern int sys16_bg2_scrollx, sys16_bg2_scrolly;
+extern int sys16_bg2_page[4];
+extern int sys16_fg2_scrollx, sys16_fg2_scrolly;
+extern int sys16_fg2_page[4];
+
+extern int sys18_bg2_active;
+extern int sys18_fg2_active;
+extern UINT16 *sys18_splittab_bg_x;
+extern UINT16 *sys18_splittab_bg_y;
+extern UINT16 *sys18_splittab_fg_x;
+extern UINT16 *sys18_splittab_fg_y;
+
+extern UINT16 *sys16_gr_ver;
+extern UINT16 *sys16_gr_hor;
+extern UINT16 *sys16_gr_pal;
+extern UINT16 *sys16_gr_flip;
+extern int sys16_gr_palette;
+extern int sys16_gr_palette_default;
+extern UINT8 sys16_gr_colorflip[2][4];
+extern UINT16 *sys16_gr_second_road;
+
diff --git a/src/mame/includes/system24.h b/src/mame/includes/system24.h
new file mode 100644
index 00000000000..f719d5001fc
--- /dev/null
+++ b/src/mame/includes/system24.h
@@ -0,0 +1,23 @@
+/*----------- defined in machine/system24.c -----------*/
+
+/* system24temp_ functions / variables are from shared rewrite files,
+ once the rest of the rewrite is complete they can be removed, I
+ just made a copy & renamed them for now to avoid any conflicts
+*/
+
+/* New Code */
+
+extern UINT16 *system24temp_sys16_shared_ram;
+READ16_HANDLER( system24temp_sys16_shared_ram_r );
+WRITE16_HANDLER( system24temp_sys16_shared_ram_w );
+
+void system24temp_sys16_io_set_callbacks(UINT8 (*io_r)(int port),
+ void (*io_w)(int port, UINT8 data),
+ void (*cnt_w)(UINT8 data),
+ READ16_HANDLER ((*iod_r)),
+ WRITE16_HANDLER((*iod_w)));
+READ16_HANDLER ( system24temp_sys16_io_r );
+WRITE16_HANDLER( system24temp_sys16_io_w );
+READ32_HANDLER ( system24temp_sys16_io_dword_r );
+
+/* End New Code */
diff --git a/src/mame/includes/taito_f2.h b/src/mame/includes/taito_f2.h
new file mode 100644
index 00000000000..bd9abac85e6
--- /dev/null
+++ b/src/mame/includes/taito_f2.h
@@ -0,0 +1,55 @@
+/*----------- defined in video/taito_f2.c -----------*/
+
+extern UINT16 *f2_sprite_extension;
+extern size_t f2_spriteext_size;
+
+VIDEO_START( taitof2_default );
+VIDEO_START( taitof2_quiz );
+VIDEO_START( taitof2_finalb );
+VIDEO_START( taitof2_megab );
+VIDEO_START( taitof2_solfigtr );
+VIDEO_START( taitof2_koshien );
+VIDEO_START( taitof2_driftout );
+VIDEO_START( taitof2_dondokod );
+VIDEO_START( taitof2_thundfox );
+VIDEO_START( taitof2_growl );
+VIDEO_START( taitof2_yuyugogo );
+VIDEO_START( taitof2_mjnquest );
+VIDEO_START( taitof2_footchmp );
+VIDEO_START( taitof2_hthero );
+VIDEO_START( taitof2_ssi );
+VIDEO_START( taitof2_gunfront );
+VIDEO_START( taitof2_ninjak );
+VIDEO_START( taitof2_pulirula );
+VIDEO_START( taitof2_metalb );
+VIDEO_START( taitof2_qzchikyu );
+VIDEO_START( taitof2_yesnoj );
+VIDEO_START( taitof2_deadconx );
+VIDEO_START( taitof2_deadconj );
+VIDEO_START( taitof2_dinorex );
+VIDEO_EOF( taitof2_no_buffer );
+VIDEO_EOF( taitof2_full_buffer_delayed );
+VIDEO_EOF( taitof2_partial_buffer_delayed );
+VIDEO_EOF( taitof2_partial_buffer_delayed_thundfox );
+VIDEO_EOF( taitof2_partial_buffer_delayed_qzchikyu );
+
+VIDEO_UPDATE( taitof2 );
+VIDEO_UPDATE( taitof2_pri );
+VIDEO_UPDATE( taitof2_pri_roz );
+VIDEO_UPDATE( ssi );
+VIDEO_UPDATE( thundfox );
+VIDEO_UPDATE( deadconx );
+VIDEO_UPDATE( metalb );
+VIDEO_UPDATE( yesnoj );
+
+WRITE16_HANDLER( taitof2_spritebank_w );
+READ16_HANDLER ( koshien_spritebank_r );
+WRITE16_HANDLER( koshien_spritebank_w );
+WRITE16_HANDLER( taitof2_sprite_extension_w );
+
+/*----------- defined in machine/cchip.c -----------*/
+
+extern UINT16 *cchip2_ram;
+READ16_HANDLER ( cchip2_word_r );
+WRITE16_HANDLER( cchip2_word_w );
+
diff --git a/src/mame/includes/taito_f3.h b/src/mame/includes/taito_f3.h
new file mode 100644
index 00000000000..47b792fcb8a
--- /dev/null
+++ b/src/mame/includes/taito_f3.h
@@ -0,0 +1,65 @@
+/* This it the best way to allow game specific kludges until the system is fully understood */
+enum {
+ /* Early F3 class games, these are not cartridge games and system features may be different */
+ RINGRAGE=0, /* D21 */
+ ARABIANM, /* D29 */
+ RIDINGF, /* D34 */
+ GSEEKER, /* D40 */
+ TRSTAR, /* D53 */
+ GUNLOCK, /* D66 */
+ TWINQIX,
+ UNDRFIRE, /* D67 - Heavily modified F3 hardware (different memory map) */
+ SCFINALS,
+ LIGHTBR, /* D69 */
+
+ /* D77 - F3 motherboard proms, all following games are 'F3 package system' */
+ /* D78 I CUP */
+ KAISERKN, /* D84 */
+ DARIUSG, /* D87 */
+ BUBSYMPH, /* D90 */
+ SPCINVDX, /* D93 */
+ HTHERO95, /* D94 */
+ QTHEATER, /* D95 */
+ EACTION2, /* E02 */
+ SPCINV95, /* E06 */
+ QUIZHUHU, /* E08 */
+ PBOBBLE2, /* E10 */
+ GEKIRIDO, /* E11 */
+ KTIGER2, /* E15 */
+ BUBBLEM, /* E21 */
+ CLEOPATR, /* E28 */
+ PBOBBLE3, /* E29 */
+ ARKRETRN, /* E36 */
+ KIRAMEKI, /* E44 */
+ PUCHICAR, /* E46 */
+ PBOBBLE4, /* E49 */
+ POPNPOP, /* E51 */
+ LANDMAKR, /* E61 */
+ RECALH, /* prototype */
+ COMMANDW /* prototype */
+};
+
+/*----------- defined in drivers/taito_f3.c -----------*/
+
+extern UINT32 *f3_shared_ram;
+extern int f3_game;
+
+/*----------- defined in video/taito_f3.c -----------*/
+
+extern UINT32 *f3_vram,*f3_line_ram;
+extern UINT32 *f3_pf_data,*f3_pivot_ram;
+
+VIDEO_START( f3 );
+VIDEO_UPDATE( f3 );
+VIDEO_EOF( f3 );
+
+WRITE32_HANDLER( f3_control_0_w );
+WRITE32_HANDLER( f3_control_1_w );
+WRITE32_HANDLER( f3_palette_24bit_w );
+WRITE32_HANDLER( f3_pf_data_w );
+WRITE32_HANDLER( f3_vram_w );
+WRITE32_HANDLER( f3_pivot_w );
+WRITE32_HANDLER( f3_lineram_w );
+WRITE32_HANDLER( f3_videoram_w );
+
+
diff --git a/src/mame/includes/taitoipt.h b/src/mame/includes/taitoipt.h
new file mode 100644
index 00000000000..f0c73fa1a85
--- /dev/null
+++ b/src/mame/includes/taitoipt.h
@@ -0,0 +1,379 @@
+/*******************************************************************************
+
+ Input port macros used by many games in mutiple Taito drivers
+
+*******************************************************************************/
+
+
+/**************************** Machine Dip Swicthes ****************************/
+
+/* with location */
+#define TAITO_DSWA_BITS_2_TO_3_LOC(DIPBANK) \
+ PORT_SERVICE_DIPLOC( 0x04, IP_ACTIVE_LOW, #DIPBANK":3" ) \
+ PORT_DIPNAME( 0x08, 0x08, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION(#DIPBANK":4") \
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) \
+ PORT_DIPSETTING( 0x08, DEF_STR( On ) )
+
+#define TAITO_DSWA_BITS_1_TO_3_LOC(DIPBANK) \
+ PORT_DIPNAME( 0x02, 0x02, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION(#DIPBANK":2") \
+ PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) \
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) ) \
+ TAITO_DSWA_BITS_2_TO_3_LOC(DIPBANK)
+
+#define TAITO_MACHINE_COCKTAIL_LOC(DIPBANK) \
+ PORT_DIPNAME( 0x01, 0x00, DEF_STR( Cabinet ) ) PORT_DIPLOCATION(#DIPBANK":1") \
+ PORT_DIPSETTING( 0x00, DEF_STR( Upright ) ) \
+ PORT_DIPSETTING( 0x01, DEF_STR( Cocktail ) ) \
+ TAITO_DSWA_BITS_1_TO_3_LOC(DIPBANK)
+
+#define TAITO_MACHINE_NO_COCKTAIL_LOC(DIPBANK) \
+ PORT_DIPUNUSED_DIPLOC( 0x01, IP_ACTIVE_LOW, #DIPBANK":1" ) \
+ TAITO_DSWA_BITS_1_TO_3_LOC(DIPBANK)
+
+
+/* without location */
+#define TAITO_DSWA_BITS_2_TO_3 \
+ PORT_SERVICE( 0x04, IP_ACTIVE_LOW ) \
+ PORT_DIPNAME( 0x08, 0x08, DEF_STR( Demo_Sounds ) ) \
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) \
+ PORT_DIPSETTING( 0x08, DEF_STR( On ) )
+
+#define TAITO_DSWA_BITS_1_TO_3 \
+ PORT_DIPNAME( 0x02, 0x02, DEF_STR( Flip_Screen ) ) \
+ PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) \
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) ) \
+ TAITO_DSWA_BITS_2_TO_3
+
+#define TAITO_MACHINE_COCKTAIL \
+ PORT_DIPNAME( 0x01, 0x00, DEF_STR( Cabinet ) ) \
+ PORT_DIPSETTING( 0x00, DEF_STR( Upright ) ) \
+ PORT_DIPSETTING( 0x01, DEF_STR( Cocktail ) ) \
+ TAITO_DSWA_BITS_1_TO_3
+
+#define TAITO_MACHINE_NO_COCKTAIL \
+ PORT_DIPUNUSED( 0x01, IP_ACTIVE_LOW ) \
+ TAITO_DSWA_BITS_1_TO_3
+
+
+/**************************** Coinage Dip Swicthes ****************************/
+
+/* with location */
+#define TAITO_COINAGE_JAPAN_OLD_COIN_A_LOC(DIPBANK) \
+ PORT_DIPNAME( 0x30, 0x30, DEF_STR( Coin_A ) ) PORT_DIPLOCATION(#DIPBANK":5,6") \
+ PORT_DIPSETTING( 0x10, DEF_STR( 2C_1C ) ) \
+ PORT_DIPSETTING( 0x30, DEF_STR( 1C_1C ) ) \
+ PORT_DIPSETTING( 0x00, DEF_STR( 2C_3C ) ) \
+ PORT_DIPSETTING( 0x20, DEF_STR( 1C_2C ) )
+
+#define TAITO_COINAGE_JAPAN_OLD_COIN_B_LOC(DIPBANK) \
+ PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Coin_B ) ) PORT_DIPLOCATION(#DIPBANK":7,8") \
+ PORT_DIPSETTING( 0x40, DEF_STR( 2C_1C ) ) \
+ PORT_DIPSETTING( 0xc0, DEF_STR( 1C_1C ) ) \
+ PORT_DIPSETTING( 0x00, DEF_STR( 2C_3C ) ) \
+ PORT_DIPSETTING( 0x80, DEF_STR( 1C_2C ) )
+
+#define TAITO_COINAGE_JAPAN_NEW_COIN_A_LOC(DIPBANK) \
+ PORT_DIPNAME( 0x30, 0x30, DEF_STR( Coin_A ) ) PORT_DIPLOCATION(#DIPBANK":5,6") \
+ PORT_DIPSETTING( 0x00, DEF_STR( 3C_1C ) ) \
+ PORT_DIPSETTING( 0x10, DEF_STR( 2C_1C ) ) \
+ PORT_DIPSETTING( 0x30, DEF_STR( 1C_1C ) ) \
+ PORT_DIPSETTING( 0x20, DEF_STR( 1C_2C ) )
+
+#define TAITO_COINAGE_JAPAN_NEW_COIN_B_LOC(DIPBANK) \
+ PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Coin_B ) ) PORT_DIPLOCATION(#DIPBANK":7,8") \
+ PORT_DIPSETTING( 0x00, DEF_STR( 3C_1C ) ) \
+ PORT_DIPSETTING( 0x40, DEF_STR( 2C_1C ) ) \
+ PORT_DIPSETTING( 0xc0, DEF_STR( 1C_1C ) ) \
+ PORT_DIPSETTING( 0x80, DEF_STR( 1C_2C ) )
+
+#define TAITO_COINAGE_WORLD_COIN_A_LOC(DIPBANK) \
+ PORT_DIPNAME( 0x30, 0x30, DEF_STR( Coin_A ) ) PORT_DIPLOCATION(#DIPBANK":5,6") \
+ PORT_DIPSETTING( 0x00, DEF_STR( 4C_1C ) ) \
+ PORT_DIPSETTING( 0x10, DEF_STR( 3C_1C ) ) \
+ PORT_DIPSETTING( 0x20, DEF_STR( 2C_1C ) ) \
+ PORT_DIPSETTING( 0x30, DEF_STR( 1C_1C ) )
+
+#define TAITO_COINAGE_WORLD_COIN_B_LOC(DIPBANK) \
+ PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Coin_B ) ) PORT_DIPLOCATION(#DIPBANK":7,8") \
+ PORT_DIPSETTING( 0xc0, DEF_STR( 1C_2C ) ) \
+ PORT_DIPSETTING( 0x80, DEF_STR( 1C_3C ) ) \
+ PORT_DIPSETTING( 0x40, DEF_STR( 1C_4C ) ) \
+ PORT_DIPSETTING( 0x00, DEF_STR( 1C_6C ) )
+
+#define TAITO_COINAGE_US_COIN_START_LOC(DIPBANK) \
+ PORT_DIPNAME( 0x30, 0x30, DEF_STR( Coinage ) ) PORT_DIPLOCATION(#DIPBANK":5,6") \
+ PORT_DIPSETTING( 0x00, DEF_STR( 4C_1C ) ) \
+ PORT_DIPSETTING( 0x10, DEF_STR( 3C_1C ) ) \
+ PORT_DIPSETTING( 0x20, DEF_STR( 2C_1C ) ) \
+ PORT_DIPSETTING( 0x30, DEF_STR( 1C_1C ) )
+
+#define TAITO_COINAGE_US_COIN_CONT_LOC(DIPBANK) \
+ PORT_DIPNAME( 0xc0, 0xc0, "Price to Continue" ) PORT_DIPLOCATION(#DIPBANK":7,8") \
+ PORT_DIPSETTING( 0x00, DEF_STR( 3C_1C ) ) \
+ PORT_DIPSETTING( 0x40, DEF_STR( 2C_1C ) ) \
+ PORT_DIPSETTING( 0x80, DEF_STR( 1C_1C ) ) \
+ PORT_DIPSETTING( 0xc0, "Same as Start" )
+
+#define TAITO_COINAGE_JAPAN_OLD_LOC(DIPBANK) \
+ TAITO_COINAGE_JAPAN_OLD_COIN_A_LOC(DIPBANK) \
+ TAITO_COINAGE_JAPAN_OLD_COIN_B_LOC(DIPBANK)
+
+#define TAITO_COINAGE_JAPAN_NEW_LOC(DIPBANK) \
+ TAITO_COINAGE_JAPAN_NEW_COIN_A_LOC(DIPBANK) \
+ TAITO_COINAGE_JAPAN_NEW_COIN_B_LOC(DIPBANK)
+
+#define TAITO_COINAGE_WORLD_LOC(DIPBANK) \
+ TAITO_COINAGE_WORLD_COIN_A_LOC(DIPBANK) \
+ TAITO_COINAGE_WORLD_COIN_B_LOC(DIPBANK)
+
+#define TAITO_COINAGE_US_LOC(DIPBANK) \
+ TAITO_COINAGE_US_COIN_START_LOC(DIPBANK) \
+ TAITO_COINAGE_US_COIN_CONT_LOC(DIPBANK)
+
+
+/* without location */
+#define TAITO_COINAGE_JAPAN_OLD_COIN_A \
+ PORT_DIPNAME( 0x30, 0x30, DEF_STR( Coin_A ) ) \
+ PORT_DIPSETTING( 0x10, DEF_STR( 2C_1C ) ) \
+ PORT_DIPSETTING( 0x30, DEF_STR( 1C_1C ) ) \
+ PORT_DIPSETTING( 0x00, DEF_STR( 2C_3C ) ) \
+ PORT_DIPSETTING( 0x20, DEF_STR( 1C_2C ) )
+
+#define TAITO_COINAGE_JAPAN_OLD_COIN_B \
+ PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Coin_B ) ) \
+ PORT_DIPSETTING( 0x40, DEF_STR( 2C_1C ) ) \
+ PORT_DIPSETTING( 0xc0, DEF_STR( 1C_1C ) ) \
+ PORT_DIPSETTING( 0x00, DEF_STR( 2C_3C ) ) \
+ PORT_DIPSETTING( 0x80, DEF_STR( 1C_2C ) )
+
+#define TAITO_COINAGE_JAPAN_NEW_COIN_A \
+ PORT_DIPNAME( 0x30, 0x30, DEF_STR( Coin_A ) ) \
+ PORT_DIPSETTING( 0x00, DEF_STR( 3C_1C ) ) \
+ PORT_DIPSETTING( 0x10, DEF_STR( 2C_1C ) ) \
+ PORT_DIPSETTING( 0x30, DEF_STR( 1C_1C ) ) \
+ PORT_DIPSETTING( 0x20, DEF_STR( 1C_2C ) )
+
+#define TAITO_COINAGE_JAPAN_NEW_COIN_B \
+ PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Coin_B ) ) \
+ PORT_DIPSETTING( 0x00, DEF_STR( 3C_1C ) ) \
+ PORT_DIPSETTING( 0x40, DEF_STR( 2C_1C ) ) \
+ PORT_DIPSETTING( 0xc0, DEF_STR( 1C_1C ) ) \
+ PORT_DIPSETTING( 0x80, DEF_STR( 1C_2C ) )
+
+#define TAITO_COINAGE_WORLD_COIN_A \
+ PORT_DIPNAME( 0x30, 0x30, DEF_STR( Coin_A ) ) \
+ PORT_DIPSETTING( 0x00, DEF_STR( 4C_1C ) ) \
+ PORT_DIPSETTING( 0x10, DEF_STR( 3C_1C ) ) \
+ PORT_DIPSETTING( 0x20, DEF_STR( 2C_1C ) ) \
+ PORT_DIPSETTING( 0x30, DEF_STR( 1C_1C ) )
+
+#define TAITO_COINAGE_WORLD_COIN_B \
+ PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Coin_B ) ) \
+ PORT_DIPSETTING( 0xc0, DEF_STR( 1C_2C ) ) \
+ PORT_DIPSETTING( 0x80, DEF_STR( 1C_3C ) ) \
+ PORT_DIPSETTING( 0x40, DEF_STR( 1C_4C ) ) \
+ PORT_DIPSETTING( 0x00, DEF_STR( 1C_6C ) )
+
+#define TAITO_COINAGE_US_COIN_START \
+ PORT_DIPNAME( 0x30, 0x30, DEF_STR( Coinage ) ) \
+ PORT_DIPSETTING( 0x00, DEF_STR( 4C_1C ) ) \
+ PORT_DIPSETTING( 0x10, DEF_STR( 3C_1C ) ) \
+ PORT_DIPSETTING( 0x20, DEF_STR( 2C_1C ) ) \
+ PORT_DIPSETTING( 0x30, DEF_STR( 1C_1C ) )
+
+#define TAITO_COINAGE_US_COIN_CONT \
+ PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Continue_Price ) ) \
+ PORT_DIPSETTING( 0x00, DEF_STR( 3C_1C ) ) \
+ PORT_DIPSETTING( 0x40, DEF_STR( 2C_1C ) ) \
+ PORT_DIPSETTING( 0x80, DEF_STR( 1C_1C ) ) \
+ PORT_DIPSETTING( 0xc0, "Same as Start" )
+
+#define TAITO_COINAGE_JAPAN_OLD \
+ TAITO_COINAGE_JAPAN_OLD_COIN_A \
+ TAITO_COINAGE_JAPAN_OLD_COIN_B
+
+#define TAITO_COINAGE_JAPAN_NEW \
+ TAITO_COINAGE_JAPAN_NEW_COIN_A \
+ TAITO_COINAGE_JAPAN_NEW_COIN_B
+
+#define TAITO_COINAGE_WORLD \
+ TAITO_COINAGE_WORLD_COIN_A \
+ TAITO_COINAGE_WORLD_COIN_B
+
+#define TAITO_COINAGE_US \
+ TAITO_COINAGE_US_COIN_START \
+ TAITO_COINAGE_US_COIN_CONT
+
+
+/************************** Difficulty Dip Swicthes ***************************/
+
+/* with location */
+#define TAITO_DIFFICULTY_LOC(DIPBANK) \
+ PORT_DIPNAME( 0x03, 0x03, DEF_STR( Difficulty ) ) PORT_DIPLOCATION(#DIPBANK":1,2") \
+ PORT_DIPSETTING( 0x02, DEF_STR( Easy ) ) \
+ PORT_DIPSETTING( 0x03, DEF_STR( Medium ) ) \
+ PORT_DIPSETTING( 0x01, DEF_STR( Hard ) ) \
+ PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) )
+
+/* without location */
+#define TAITO_DIFFICULTY \
+ PORT_DIPNAME( 0x03, 0x03, DEF_STR( Difficulty ) ) \
+ PORT_DIPSETTING( 0x02, DEF_STR( Easy ) ) \
+ PORT_DIPSETTING( 0x03, DEF_STR( Medium ) ) \
+ PORT_DIPSETTING( 0x01, DEF_STR( Hard ) ) \
+ PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) )
+
+
+/************************** Joysticks and buttons *****************************/
+
+/* generic (might be moved elsewhere) */
+#define INPUT_GENERIC_JOY_LOW_NIBBLE(PL, STATE, WAY, B01, B02, B04, B08) \
+ PORT_BIT( 0x01, STATE, IPT_JOYSTICK_##B01 ) WAY PORT_PLAYER(PL) \
+ PORT_BIT( 0x02, STATE, IPT_JOYSTICK_##B02 ) WAY PORT_PLAYER(PL) \
+ PORT_BIT( 0x04, STATE, IPT_JOYSTICK_##B04 ) WAY PORT_PLAYER(PL) \
+ PORT_BIT( 0x08, STATE, IPT_JOYSTICK_##B08 ) WAY PORT_PLAYER(PL)
+
+#define INPUT_GENERIC_JOY_HIGH_NIBBLE(PL, STATE, WAY, B10, B20, B40, B80) \
+ PORT_BIT( 0x10, STATE, IPT_JOYSTICK_##B10 ) WAY PORT_PLAYER(PL) \
+ PORT_BIT( 0x20, STATE, IPT_JOYSTICK_##B20 ) WAY PORT_PLAYER(PL) \
+ PORT_BIT( 0x40, STATE, IPT_JOYSTICK_##B40 ) WAY PORT_PLAYER(PL) \
+ PORT_BIT( 0x80, STATE, IPT_JOYSTICK_##B80 ) WAY PORT_PLAYER(PL)
+
+
+/* Taito generic (more might be needed) */
+#define TAITO_GENERIC_JOY_MONO_UDLR(PL) \
+ INPUT_GENERIC_JOY_LOW_NIBBLE(PL, IP_ACTIVE_LOW, PORT_8WAY, UP, DOWN, LEFT, RIGHT)
+
+#define TAITO_GENERIC_JOY_MONO_UDRL(PL) \
+ INPUT_GENERIC_JOY_LOW_NIBBLE(PL, IP_ACTIVE_LOW, PORT_8WAY, UP, DOWN, RIGHT, LEFT)
+
+#define TAITO_GENERIC_JOY_MONO_LRUD(PL) \
+ INPUT_GENERIC_JOY_LOW_NIBBLE(PL, IP_ACTIVE_LOW, PORT_8WAY, LEFT, RIGHT, UP, DOWN)
+
+#define TAITO_GENERIC_JOY_DUAL_UDLR(PL_L, PL_H) \
+ INPUT_GENERIC_JOY_LOW_NIBBLE(PL_L, IP_ACTIVE_LOW, PORT_8WAY, UP, DOWN, LEFT, RIGHT) \
+ INPUT_GENERIC_JOY_HIGH_NIBBLE(PL_H, IP_ACTIVE_LOW, PORT_8WAY, UP, DOWN, LEFT, RIGHT)
+
+#define TAITO_GENERIC_JOY_DUAL_UDRL(PL_L, PL_H) \
+ INPUT_GENERIC_JOY_LOW_NIBBLE(PL_L, IP_ACTIVE_LOW, PORT_8WAY, UP, DOWN, RIGHT, LEFT) \
+ INPUT_GENERIC_JOY_HIGH_NIBBLE(PL_H, IP_ACTIVE_LOW, PORT_8WAY, UP, DOWN, RIGHT, LEFT)
+
+
+#define TAITO_GENERIC_BUTTONS_LOW_NIBBLE(PL, STATE, BUTTON_A, BUTTON_B, BUTTON_C) \
+ PORT_BIT( 0x01, STATE, IPT_##BUTTON_A ) PORT_PLAYER(PL) \
+ PORT_BIT( 0x02, STATE, IPT_##BUTTON_B ) PORT_PLAYER(PL) \
+ PORT_BIT( 0x04, STATE, IPT_##BUTTON_C ) PORT_PLAYER(PL)
+ /* DO NOT fill bit 3 as it may be defined as START button ! */
+
+#define TAITO_GENERIC_BUTTONS_HIGH_NIBBLE(PL, STATE, BUTTON_A, BUTTON_B, BUTTON_C) \
+ PORT_BIT( 0x10, STATE, IPT_##BUTTON_A ) PORT_PLAYER(PL) \
+ PORT_BIT( 0x20, STATE, IPT_##BUTTON_B ) PORT_PLAYER(PL) \
+ PORT_BIT( 0x40, STATE, IPT_##BUTTON_C ) PORT_PLAYER(PL)
+ /* DO NOT fill bit 7 as it may be defined as START button ! */
+
+#define TAITO_GENERIC_1_BUTTON(PL) \
+ TAITO_GENERIC_BUTTONS_HIGH_NIBBLE(PL, IP_ACTIVE_LOW, BUTTON1, UNKNOWN, UNKNOWN) \
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+#define TAITO_GENERIC_2_BUTTONS(PL) \
+ TAITO_GENERIC_BUTTONS_HIGH_NIBBLE(PL, IP_ACTIVE_LOW, BUTTON1, BUTTON2, UNKNOWN) \
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+#define TAITO_GENERIC_3_BUTTONS(PL) \
+ TAITO_GENERIC_BUTTONS_HIGH_NIBBLE(PL, IP_ACTIVE_LOW, BUTTON1, BUTTON2, BUTTON3) \
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+#define TAITO_GENERIC_1_BUTTON_START(PL) \
+ TAITO_GENERIC_BUTTONS_HIGH_NIBBLE(PL, IP_ACTIVE_LOW, BUTTON1, UNKNOWN, UNKNOWN) \
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START##PL )
+
+#define TAITO_GENERIC_2_BUTTONS_START(PL) \
+ TAITO_GENERIC_BUTTONS_HIGH_NIBBLE(PL, IP_ACTIVE_LOW, BUTTON1, BUTTON2, UNKNOWN) \
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START##PL )
+
+#define TAITO_GENERIC_3_BUTTONS_START(PL) \
+ TAITO_GENERIC_BUTTONS_HIGH_NIBBLE(PL, IP_ACTIVE_LOW, BUTTON1, BUTTON2, BUTTON3) \
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START##PL )
+
+
+/* Taito games (more might be needed) */
+#define TAITO_JOY_UDLR_1_BUTTON(PL) \
+ TAITO_GENERIC_JOY_MONO_UDLR(PL) \
+ TAITO_GENERIC_1_BUTTON(PL)
+
+#define TAITO_JOY_UDLR_2_BUTTONS(PL) \
+ TAITO_GENERIC_JOY_MONO_UDLR(PL) \
+ TAITO_GENERIC_2_BUTTONS(PL)
+
+#define TAITO_JOY_UDLR_3_BUTTONS(PL) \
+ TAITO_GENERIC_JOY_MONO_UDLR(PL) \
+ TAITO_GENERIC_3_BUTTONS(PL)
+
+#define TAITO_JOY_UDRL_1_BUTTON(PL) \
+ TAITO_GENERIC_JOY_MONO_UDRL(PL) \
+ TAITO_GENERIC_1_BUTTON(PL)
+
+#define TAITO_JOY_UDRL_2_BUTTONS(PL) \
+ TAITO_GENERIC_JOY_MONO_UDRL(PL) \
+ TAITO_GENERIC_2_BUTTONS(PL)
+
+#define TAITO_JOY_UDRL_3_BUTTONS(PL) \
+ TAITO_GENERIC_JOY_MONO_UDRL(PL) \
+ TAITO_GENERIC_3_BUTTONS(PL)
+
+#define TAITO_JOY_LRUD_1_BUTTON(PL) \
+ TAITO_GENERIC_JOY_MONO_LRUD(PL) \
+ TAITO_GENERIC_1_BUTTON(PL)
+
+#define TAITO_JOY_LRUD_2_BUTTONS(PL) \
+ TAITO_GENERIC_JOY_MONO_LRUD(PL) \
+ TAITO_GENERIC_2_BUTTONS(PL)
+
+#define TAITO_JOY_LRUD_3_BUTTONS(PL) \
+ TAITO_GENERIC_JOY_MONO_LRUD(PL) \
+ TAITO_GENERIC_3_BUTTONS(PL)
+
+
+#define TAITO_JOY_UDLR_1_BUTTON_START(PL) \
+ TAITO_GENERIC_JOY_MONO_UDLR(PL) \
+ TAITO_GENERIC_1_BUTTON_START(PL)
+
+#define TAITO_JOY_UDLR_2_BUTTONS_START(PL) \
+ TAITO_GENERIC_JOY_MONO_UDLR(PL) \
+ TAITO_GENERIC_2_BUTTONS_START(PL)
+
+#define TAITO_JOY_UDLR_3_BUTTONS_START(PL) \
+ TAITO_GENERIC_JOY_MONO_UDLR(PL) \
+ TAITO_GENERIC_3_BUTTONS_START(PL)
+
+#define TAITO_JOY_UDRL_1_BUTTON_START(PL) \
+ TAITO_GENERIC_JOY_MONO_UDRL(PL) \
+ TAITO_GENERIC_1_BUTTONS_START(PL)
+
+#define TAITO_JOY_UDRL_2_BUTTONS_START(PL) \
+ TAITO_GENERIC_JOY_MONO_UDRL(PL) \
+ TAITO_GENERIC_2_BUTTONS_START(PL)
+
+#define TAITO_JOY_UDRL_3_BUTTONS_START(PL) \
+ TAITO_GENERIC_JOY_MONO_UDRL(PL) \
+ TAITO_GENERIC_3_BUTTONS_START(PL)
+
+#define TAITO_JOY_LRUD_1_BUTTON_START(PL) \
+ TAITO_GENERIC_JOY_MONO_LRUD(PL) \
+ TAITO_GENERIC_1_BUTTON_START(PL)
+
+#define TAITO_JOY_LRUD_2_BUTTONS_START(PL) \
+ TAITO_GENERIC_JOY_MONO_LRUD(PL) \
+ TAITO_GENERIC_2_BUTTONS_START(PL)
+
+#define TAITO_JOY_LRUD_3_BUTTONS_START(PL) \
+ TAITO_GENERIC_JOY_MONO_LRUD(PL) \
+ TAITO_GENERIC_3_BUTTONS_START(PL)
+
+
+#define TAITO_JOY_DUAL_UDLR(PL_L, PL_H) \
+ TAITO_GENERIC_JOY_DUAL_UDLR(PL_L, PL_H)
+
+#define TAITO_JOY_DUAL_UDRL(PL_L, PL_H) \
+ TAITO_GENERIC_JOY_DUAL_UDRL(PL_L, PL_H)
+
diff --git a/src/mame/includes/tank8.h b/src/mame/includes/tank8.h
new file mode 100644
index 00000000000..6e0f41a2697
--- /dev/null
+++ b/src/mame/includes/tank8.h
@@ -0,0 +1,48 @@
+/*************************************************************************
+
+ Atari tank8 hardware
+
+*************************************************************************/
+
+#include "sound/discrete.h"
+
+/* Discrete Sound Input Nodes */
+#define TANK8_CRASH_EN NODE_01
+#define TANK8_BUGLE_EN NODE_02
+#define TANK8_MOTOR1_EN NODE_03
+#define TANK8_MOTOR2_EN NODE_04
+#define TANK8_MOTOR3_EN NODE_05
+#define TANK8_MOTOR4_EN NODE_06
+#define TANK8_MOTOR5_EN NODE_07
+#define TANK8_MOTOR6_EN NODE_08
+#define TANK8_MOTOR7_EN NODE_09
+#define TANK8_MOTOR8_EN NODE_10
+#define TANK8_EXPLOSION_EN NODE_11
+#define TANK8_ATTRACT_EN NODE_12
+#define TANK8_BUGLE_DATA1 NODE_13
+#define TANK8_BUGLE_DATA2 NODE_14
+
+
+/*----------- defined in audio/tank8.c -----------*/
+
+DISCRETE_SOUND_EXTERN( tank8 );
+
+
+/*----------- defined in drivers/tank8.c -----------*/
+
+void tank8_set_collision(int index);
+
+
+/*----------- defined in video/tank8.c -----------*/
+
+VIDEO_EOF( tank8 );
+VIDEO_START( tank8 );
+VIDEO_UPDATE( tank8 );
+
+WRITE8_HANDLER( tank8_video_ram_w );
+
+extern UINT8* tank8_video_ram;
+extern UINT8* tank8_pos_h_ram;
+extern UINT8* tank8_pos_v_ram;
+extern UINT8* tank8_pos_d_ram;
+
diff --git a/src/mame/includes/tatsumi.h b/src/mame/includes/tatsumi.h
new file mode 100644
index 00000000000..998c157aa6b
--- /dev/null
+++ b/src/mame/includes/tatsumi.h
@@ -0,0 +1,67 @@
+/*----------- defined in drivers/tatsumi.c -----------*/
+
+extern UINT8* tatsumi_rom_sprite_lookup1;
+extern UINT8* tatsumi_rom_sprite_lookup2;
+extern UINT8* tatsumi_rom_clut0;
+extern UINT8* tatsumi_rom_clut1;
+
+extern UINT16 *roundup5_d0000_ram, *roundup5_e0000_ram;
+extern UINT16 *roundup5_unknown0, *roundup5_unknown1, *roundup5_unknown2;
+
+/*----------- defined in machine/tatsumi.c -----------*/
+
+READ16_HANDLER( apache3_bank_r );
+WRITE16_HANDLER( apache3_bank_w );
+WRITE16_HANDLER( apache3_irq_ack_w );
+READ16_HANDLER( apache3_v30_v20_r );
+WRITE16_HANDLER( apache3_v30_v20_w );
+READ16_HANDLER( roundup_v30_z80_r );
+WRITE16_HANDLER( roundup_v30_z80_w );
+READ16_HANDLER( tatsumi_v30_68000_r );
+WRITE16_HANDLER( tatsumi_v30_68000_w ) ;
+READ16_HANDLER(apache3_z80_r);
+WRITE16_HANDLER(apache3_z80_w);
+READ8_HANDLER( apache3_adc_r );
+WRITE8_HANDLER( apache3_adc_w );
+WRITE16_HANDLER(cyclwarr_control_w);
+READ16_HANDLER(cyclwarr_control_r);
+WRITE16_HANDLER( roundup5_control_w );
+WRITE16_HANDLER( apache3_a0000_w );
+WRITE16_HANDLER( roundup5_d0000_w );
+WRITE16_HANDLER( roundup5_e0000_w );
+
+READ8_HANDLER(tatsumi_hack_ym2151_r);
+READ8_HANDLER(tatsumi_hack_oki_r);
+
+extern UINT16 *tatsumi_68k_ram;
+extern UINT8 *apache3_z80_ram;
+extern UINT16 tatsumi_control_word;
+extern UINT16 apache3_a0000[16];
+
+void tatsumi_reset(void);
+
+/*----------- defined in video/tatsumi.c -----------*/
+
+WRITE16_HANDLER( roundup5_palette_w );
+WRITE16_HANDLER( tatsumi_sprite_control_w );
+WRITE16_HANDLER( roundup5_text_w );
+WRITE16_HANDLER( roundup5_crt_w );
+READ16_HANDLER( cyclwarr_videoram_r );
+WRITE16_HANDLER( cyclwarr_videoram_w );
+READ16_HANDLER( cyclwarr_videoram2_r );
+WRITE16_HANDLER( cyclwarr_videoram2_w );
+READ16_HANDLER(roundup5_vram_r);
+WRITE16_HANDLER(roundup5_vram_w);
+WRITE16_HANDLER(apache3_palette_w);
+
+extern UINT16* tatsumi_sprite_control_ram;
+extern UINT16 *cyclwarr_videoram, *cyclwarr_videoram2;
+extern UINT16 *roundup_r_ram, *roundup_p_ram, *roundup_l_ram;
+
+VIDEO_START( apache3 );
+VIDEO_START( roundup5 );
+VIDEO_START( cyclwarr );
+VIDEO_UPDATE( roundup5 );
+VIDEO_UPDATE( apache3 );
+VIDEO_UPDATE( cyclwarr );
+
diff --git a/src/mame/includes/taxidrvr.h b/src/mame/includes/taxidrvr.h
new file mode 100644
index 00000000000..5bb9bb7160a
--- /dev/null
+++ b/src/mame/includes/taxidrvr.h
@@ -0,0 +1,10 @@
+/*----------- defined in video/taxidrvr.c -----------*/
+
+extern UINT8 *taxidrvr_vram0,*taxidrvr_vram1,*taxidrvr_vram2,*taxidrvr_vram3;
+extern UINT8 *taxidrvr_vram4,*taxidrvr_vram5,*taxidrvr_vram6,*taxidrvr_vram7;
+extern UINT8 *taxidrvr_scroll;
+extern int taxidrvr_bghide;
+
+WRITE8_HANDLER( taxidrvr_spritectrl_w );
+
+VIDEO_UPDATE( taxidrvr );
diff --git a/src/mame/includes/thedeep.h b/src/mame/includes/thedeep.h
new file mode 100644
index 00000000000..4190556fda9
--- /dev/null
+++ b/src/mame/includes/thedeep.h
@@ -0,0 +1,12 @@
+/*----------- defined in video/thedeep.c -----------*/
+
+extern UINT8 *thedeep_vram_0, *thedeep_vram_1;
+extern UINT8 *thedeep_scroll, *thedeep_scroll2;
+
+WRITE8_HANDLER( thedeep_vram_0_w );
+WRITE8_HANDLER( thedeep_vram_1_w );
+
+PALETTE_INIT( thedeep );
+VIDEO_START( thedeep );
+VIDEO_UPDATE( thedeep );
+
diff --git a/src/mame/includes/thunderj.h b/src/mame/includes/thunderj.h
new file mode 100644
index 00000000000..688e588b062
--- /dev/null
+++ b/src/mame/includes/thunderj.h
@@ -0,0 +1,14 @@
+/*************************************************************************
+
+ Atari ThunderJaws hardware
+
+*************************************************************************/
+
+/*----------- defined in video/thunderj.c -----------*/
+
+extern UINT8 thunderj_alpha_tile_bank;
+
+VIDEO_START( thunderj );
+VIDEO_UPDATE( thunderj );
+
+void thunderj_mark_high_palette(mame_bitmap *bitmap, UINT16 *pf, UINT16 *mo, int x, int y);
diff --git a/src/mame/includes/tickee.h b/src/mame/includes/tickee.h
new file mode 100644
index 00000000000..6bd6c2bbaca
--- /dev/null
+++ b/src/mame/includes/tickee.h
@@ -0,0 +1,18 @@
+/*************************************************************************
+
+ Raster Elite Tickee Tickats hardware
+
+**************************************************************************/
+
+/*----------- defined in drivers/tickee.c -----------*/
+
+extern UINT16 *tickee_control;
+
+
+/*----------- defined in video/tickee.c -----------*/
+
+extern UINT16 *tickee_vram;
+
+VIDEO_START( tickee );
+
+void tickee_scanline_update(running_machine *machine, int screen, mame_bitmap *bitmap, int scanline, const tms34010_display_params *params);
diff --git a/src/mame/includes/tnzs.h b/src/mame/includes/tnzs.h
new file mode 100644
index 00000000000..9bc15f0dbd5
--- /dev/null
+++ b/src/mame/includes/tnzs.h
@@ -0,0 +1,39 @@
+/*----------- defined in drivers/tnzs.c -----------*/
+
+extern UINT8 *tnzs_objram, *tnzs_sharedram;
+extern UINT8 *tnzs_vdcram, *tnzs_scrollram, *tnzs_objctrl, *tnzs_bg_flag;
+
+
+/*----------- defined in machine/tnzs.c -----------*/
+
+READ8_HANDLER( tnzs_port1_r );
+READ8_HANDLER( tnzs_port2_r );
+WRITE8_HANDLER( tnzs_port2_w );
+READ8_HANDLER( arknoid2_sh_f000_r );
+
+DRIVER_INIT( plumpop );
+DRIVER_INIT( extrmatn );
+DRIVER_INIT( arknoid2 );
+DRIVER_INIT( drtoppel );
+DRIVER_INIT( chukatai );
+DRIVER_INIT( tnzs );
+DRIVER_INIT( tnzsb );
+DRIVER_INIT( kabukiz );
+DRIVER_INIT( insectx );
+DRIVER_INIT( kageki );
+
+READ8_HANDLER( tnzs_mcu_r );
+WRITE8_HANDLER( tnzs_mcu_w );
+INTERRUPT_GEN( arknoid2_interrupt );
+MACHINE_RESET( tnzs );
+READ8_HANDLER( tnzs_sharedram_r );
+WRITE8_HANDLER( tnzs_sharedram_w );
+WRITE8_HANDLER( tnzs_bankswitch_w );
+WRITE8_HANDLER( tnzs_bankswitch1_w );
+
+
+/*----------- defined in video/tnzs.c -----------*/
+
+PALETTE_INIT( arknoid2 );
+VIDEO_UPDATE( tnzs );
+VIDEO_EOF( tnzs );
diff --git a/src/mame/includes/toaplan1.h b/src/mame/includes/toaplan1.h
new file mode 100644
index 00000000000..ade41b05d38
--- /dev/null
+++ b/src/mame/includes/toaplan1.h
@@ -0,0 +1,86 @@
+/***************************************************************************
+ ToaPlan game hardware from 1988-1991
+ ------------------------------------
+****************************************************************************/
+
+
+/*----------- defined in machine/toaplan1.c -----------*/
+
+INTERRUPT_GEN( toaplan1_interrupt );
+WRITE16_HANDLER( toaplan1_intenable_w );
+READ16_HANDLER ( toaplan1_shared_r );
+WRITE16_HANDLER( toaplan1_shared_w );
+WRITE16_HANDLER( toaplan1_reset_sound );
+WRITE16_HANDLER( demonwld_dsp_addrsel_w );
+READ16_HANDLER ( demonwld_dsp_r );
+WRITE16_HANDLER( demonwld_dsp_w );
+WRITE16_HANDLER( demonwld_dsp_bio_w );
+WRITE16_HANDLER( demonwld_dsp_ctrl_w );
+READ16_HANDLER ( demonwld_BIO_r );
+READ16_HANDLER ( samesame_port_6_word_r );
+READ16_HANDLER ( vimana_mcu_r );
+WRITE16_HANDLER( vimana_mcu_w );
+READ16_HANDLER ( vimana_input_port_5_word_r );
+
+WRITE8_HANDLER( rallybik_coin_w );
+WRITE8_HANDLER( toaplan1_coin_w );
+WRITE16_HANDLER( samesame_coin_w );
+
+MACHINE_RESET( toaplan1 );
+MACHINE_RESET( demonwld );
+MACHINE_RESET( vimana );
+MACHINE_RESET( zerozone ); /* hack for ZeroWing/OutZone. See video */
+
+extern void toaplan1_driver_savestate(void);
+extern void demonwld_driver_savestate(void);
+extern void vimana_driver_savestate(void);
+
+
+extern int toaplan1_unk_reset_port;
+
+extern UINT8 *toaplan1_sharedram;
+
+
+
+/*----------- defined in video/toaplan1.c -----------*/
+
+READ16_HANDLER ( toaplan1_frame_done_r );
+WRITE16_HANDLER( toaplan1_bcu_control_w );
+WRITE16_HANDLER( rallybik_bcu_flipscreen_w );
+WRITE16_HANDLER( toaplan1_bcu_flipscreen_w );
+WRITE16_HANDLER( toaplan1_fcu_flipscreen_w );
+
+READ16_HANDLER ( rallybik_tileram16_r );
+READ16_HANDLER ( toaplan1_tileram16_r );
+WRITE16_HANDLER( toaplan1_tileram16_w );
+READ16_HANDLER ( toaplan1_spriteram16_r );
+WRITE16_HANDLER( toaplan1_spriteram16_w );
+READ16_HANDLER ( toaplan1_spritesizeram16_r );
+WRITE16_HANDLER( toaplan1_spritesizeram16_w );
+READ16_HANDLER ( toaplan1_colorram1_r );
+WRITE16_HANDLER( toaplan1_colorram1_w );
+READ16_HANDLER ( toaplan1_colorram2_r );
+WRITE16_HANDLER( toaplan1_colorram2_w );
+
+READ16_HANDLER ( toaplan1_scroll_regs_r );
+WRITE16_HANDLER( toaplan1_scroll_regs_w );
+WRITE16_HANDLER( toaplan1_tile_offsets_w );
+READ16_HANDLER ( toaplan1_tileram_offs_r );
+WRITE16_HANDLER( toaplan1_tileram_offs_w );
+READ16_HANDLER ( toaplan1_spriteram_offs_r );
+WRITE16_HANDLER( toaplan1_spriteram_offs_w );
+
+VIDEO_EOF( rallybik );
+VIDEO_EOF( toaplan1 );
+VIDEO_EOF( samesame );
+VIDEO_START( rallybik );
+VIDEO_START( toaplan1 );
+VIDEO_UPDATE( rallybik );
+VIDEO_UPDATE( toaplan1 );
+VIDEO_UPDATE( demonwld );
+
+
+extern UINT16 *toaplan1_colorram1;
+extern UINT16 *toaplan1_colorram2;
+extern size_t toaplan1_colorram1_size;
+extern size_t toaplan1_colorram2_size;
diff --git a/src/mame/includes/toobin.h b/src/mame/includes/toobin.h
new file mode 100644
index 00000000000..68a8c4a7c51
--- /dev/null
+++ b/src/mame/includes/toobin.h
@@ -0,0 +1,16 @@
+/*************************************************************************
+
+ Atari Toobin' hardware
+
+*************************************************************************/
+
+/*----------- defined in video/toobin.c -----------*/
+
+WRITE16_HANDLER( toobin_paletteram_w );
+WRITE16_HANDLER( toobin_intensity_w );
+WRITE16_HANDLER( toobin_xscroll_w );
+WRITE16_HANDLER( toobin_yscroll_w );
+WRITE16_HANDLER( toobin_slip_w );
+
+VIDEO_START( toobin );
+VIDEO_UPDATE( toobin );
diff --git a/src/mame/includes/triplhnt.h b/src/mame/includes/triplhnt.h
new file mode 100644
index 00000000000..ddcb652c569
--- /dev/null
+++ b/src/mame/includes/triplhnt.h
@@ -0,0 +1,41 @@
+/*************************************************************************
+
+ Atari Triple Hunt hardware
+
+*************************************************************************/
+
+#include "sound/discrete.h"
+#include "sound/samples.h"
+
+/* Discrete Sound Input Nodes */
+#define TRIPLHNT_BEAR_ROAR_DATA NODE_01
+#define TRIPLHNT_BEAR_EN NODE_02
+#define TRIPLHNT_SHOT_DATA NODE_03
+#define TRIPLHNT_SCREECH_EN NODE_04
+#define TRIPLHNT_LAMP_EN NODE_05
+
+
+/*----------- defined in drivers/triplhnt.c -----------*/
+
+void triplhnt_set_collision(int data);
+
+
+/*----------- defined in audio/triplhnt.c -----------*/
+
+DISCRETE_SOUND_EXTERN( triplhnt );
+extern struct Samplesinterface triplhnt_samples_interface;
+
+
+/*----------- defined in video/triplhnt.c -----------*/
+
+VIDEO_START( triplhnt );
+VIDEO_UPDATE( triplhnt );
+
+extern UINT8* triplhnt_playfield_ram;
+extern UINT8* triplhnt_vpos_ram;
+extern UINT8* triplhnt_hpos_ram;
+extern UINT8* triplhnt_code_ram;
+extern UINT8* triplhnt_orga_ram;
+
+extern int triplhnt_sprite_zoom;
+extern int triplhnt_sprite_bank;
diff --git a/src/mame/includes/tubep.h b/src/mame/includes/tubep.h
new file mode 100644
index 00000000000..73ca2f9e2d6
--- /dev/null
+++ b/src/mame/includes/tubep.h
@@ -0,0 +1,25 @@
+/*----------- defined in video/tubep.c -----------*/
+
+void tubep_vblank_end(void);
+PALETTE_INIT( tubep );
+VIDEO_UPDATE( tubep );
+PALETTE_INIT( rjammer );
+VIDEO_UPDATE( rjammer );
+VIDEO_START( tubep );
+
+extern UINT8 *rjammer_backgroundram;
+extern UINT8 *tubep_backgroundram;
+extern UINT8 *tubep_textram;
+extern UINT8 *tubep_sprite_colorsharedram;
+
+extern WRITE8_HANDLER( tubep_textram_w );
+extern WRITE8_HANDLER( rjammer_background_LS377_w );
+extern WRITE8_HANDLER( rjammer_background_page_w );
+
+extern WRITE8_HANDLER( tubep_colorproms_A4_line_w );
+extern WRITE8_HANDLER( tubep_background_romselect_w );
+extern WRITE8_HANDLER( tubep_background_a000_w );
+extern WRITE8_HANDLER( tubep_background_c000_w );
+
+extern WRITE8_HANDLER( tubep_sprite_control_w );
+
diff --git a/src/mame/includes/turbo.h b/src/mame/includes/turbo.h
new file mode 100644
index 00000000000..9a98688be10
--- /dev/null
+++ b/src/mame/includes/turbo.h
@@ -0,0 +1,100 @@
+/*************************************************************************
+
+ Sega Z80-3D system
+
+*************************************************************************/
+
+#include "sound/discrete.h"
+
+/* sprites are scaled in the analog domain; to give a better */
+/* rendition of this, we scale in the X direction by this factor */
+#define TURBO_X_SCALE 2
+
+
+typedef struct _i8279_state i8279_state;
+struct _i8279_state
+{
+ UINT8 command;
+ UINT8 mode;
+ UINT8 prescale;
+ UINT8 inhibit;
+ UINT8 clear;
+ UINT8 ram[16];
+};
+
+
+typedef struct _turbo_state turbo_state;
+struct _turbo_state
+{
+ /* memory pointers */
+ UINT8 * videoram;
+ UINT8 * spriteram;
+ UINT8 * sprite_position;
+ UINT8 * buckrog_bitmap_ram;
+
+ /* machine states */
+ i8279_state i8279;
+
+ /* sound state */
+ UINT8 turbo_osel, turbo_bsel;
+ UINT8 sound_state[3];
+
+ /* video state */
+ tilemap * fg_tilemap;
+
+ /* Turbo-specific states */
+ UINT8 turbo_opa, turbo_opb, turbo_opc;
+ UINT8 turbo_ipa, turbo_ipb, turbo_ipc;
+ UINT8 turbo_fbpla, turbo_fbcol;
+ UINT8 turbo_speed;
+ UINT8 turbo_collision;
+ UINT8 turbo_last_analog;
+ UINT8 turbo_accel;
+
+ /* Subroc-specific states */
+ UINT8 subroc3d_col, subroc3d_ply, subroc3d_flip;
+ UINT8 subroc3d_mdis, subroc3d_mdir;
+ UINT8 subroc3d_tdis, subroc3d_tdir;
+ UINT8 subroc3d_fdis, subroc3d_fdir;
+ UINT8 subroc3d_hdis, subroc3d_hdir;
+
+ /* Buck Rogers-specific states */
+ UINT8 buckrog_fchg, buckrog_mov, buckrog_obch;
+ UINT8 buckrog_command;
+ UINT8 buckrog_myship;
+};
+
+
+/*----------- defined in audio/turbo.c -----------*/
+
+MACHINE_DRIVER_EXTERN( turbo_samples );
+MACHINE_DRIVER_EXTERN( subroc3d_samples );
+MACHINE_DRIVER_EXTERN( buckrog_samples );
+
+WRITE8_HANDLER( turbo_sound_a_w );
+WRITE8_HANDLER( turbo_sound_b_w );
+WRITE8_HANDLER( turbo_sound_c_w );
+
+WRITE8_HANDLER( subroc3d_sound_a_w );
+WRITE8_HANDLER( subroc3d_sound_b_w );
+WRITE8_HANDLER( subroc3d_sound_c_w );
+
+WRITE8_HANDLER( buckrog_sound_a_w );
+WRITE8_HANDLER( buckrog_sound_b_w );
+
+
+/*----------- defined in video/turbo.c -----------*/
+
+PALETTE_INIT( turbo );
+VIDEO_START( turbo );
+VIDEO_UPDATE( turbo );
+
+PALETTE_INIT( subroc3d );
+VIDEO_UPDATE( subroc3d );
+
+PALETTE_INIT( buckrog );
+VIDEO_START( buckrog );
+VIDEO_UPDATE( buckrog );
+
+WRITE8_HANDLER( turbo_videoram_w );
+WRITE8_HANDLER( buckrog_bitmap_w );
diff --git a/src/mame/includes/twincobr.h b/src/mame/includes/twincobr.h
new file mode 100644
index 00000000000..4aac31ded15
--- /dev/null
+++ b/src/mame/includes/twincobr.h
@@ -0,0 +1,88 @@
+/***************************************************************************
+ Twincobr/Flying shark/Wardner game hardware from 1986-1987
+ -----------------------------------------------------------
+****************************************************************************/
+
+
+
+/*----------- defined in drivers/wardner.c -----------*/
+
+extern void wardner_restore_bank(void);
+
+/*----------- defined in machine/twincobr.c -----------*/
+
+INTERRUPT_GEN( twincobr_interrupt );
+INTERRUPT_GEN( wardner_interrupt );
+
+WRITE16_HANDLER( twincobr_dsp_addrsel_w );
+READ16_HANDLER( twincobr_dsp_r );
+WRITE16_HANDLER( twincobr_dsp_w );
+WRITE16_HANDLER( twincobr_dsp_bio_w );
+READ16_HANDLER ( twincobr_BIO_r );
+WRITE16_HANDLER( twincobr_control_w );
+READ16_HANDLER( twincobr_sharedram_r );
+WRITE16_HANDLER( twincobr_sharedram_w );
+WRITE8_HANDLER( twincobr_coin_w );
+READ16_HANDLER( fsharkbt_dsp_r );
+WRITE16_HANDLER( fsharkbt_dsp_w );
+WRITE16_HANDLER( fshark_coin_dsp_w );
+WRITE16_HANDLER( wardner_dsp_addrsel_w );
+READ16_HANDLER( wardner_dsp_r );
+WRITE16_HANDLER( wardner_dsp_w );
+WRITE8_HANDLER( wardner_control_w );
+WRITE8_HANDLER( wardner_coin_dsp_w );
+
+MACHINE_RESET( twincobr );
+MACHINE_RESET( wardner );
+
+extern void twincobr_driver_savestate(void);
+extern void wardner_driver_savestate(void);
+
+extern int toaplan_main_cpu; /* Main CPU type. 0 = 68000, 1 = Z80 */
+extern int twincobr_intenable;
+extern int wardner_membank;
+
+extern UINT8 *twincobr_sharedram;
+
+
+/*----------- defined in video/twincobr.c -----------*/
+
+extern void twincobr_flipscreen(int flip);
+extern void twincobr_display(int enable);
+
+READ16_HANDLER( twincobr_txram_r );
+READ16_HANDLER( twincobr_bgram_r );
+READ16_HANDLER( twincobr_fgram_r );
+WRITE16_HANDLER( twincobr_txram_w );
+WRITE16_HANDLER( twincobr_bgram_w );
+WRITE16_HANDLER( twincobr_fgram_w );
+WRITE16_HANDLER( twincobr_txscroll_w );
+WRITE16_HANDLER( twincobr_bgscroll_w );
+WRITE16_HANDLER( twincobr_fgscroll_w );
+WRITE16_HANDLER( twincobr_exscroll_w );
+WRITE16_HANDLER( twincobr_txoffs_w );
+WRITE16_HANDLER( twincobr_bgoffs_w );
+WRITE16_HANDLER( twincobr_fgoffs_w );
+WRITE16_HANDLER( twincobr_crtc_reg_sel_w );
+WRITE16_HANDLER( twincobr_crtc_data_w );
+WRITE8_HANDLER( wardner_videoram_w );
+READ8_HANDLER( wardner_videoram_r );
+WRITE8_HANDLER( wardner_bglayer_w );
+WRITE8_HANDLER( wardner_fglayer_w );
+WRITE8_HANDLER( wardner_txlayer_w );
+WRITE8_HANDLER( wardner_bgscroll_w );
+WRITE8_HANDLER( wardner_fgscroll_w );
+WRITE8_HANDLER( wardner_txscroll_w );
+WRITE8_HANDLER( wardner_exscroll_w );
+READ8_HANDLER( wardner_sprite_r );
+WRITE8_HANDLER( wardner_sprite_w );
+WRITE8_HANDLER( wardner_CRTC_reg_sel_w );
+WRITE8_HANDLER( wardner_CRTC_data_w );
+
+extern int twincobr_fg_rom_bank;
+extern int twincobr_bg_ram_bank;
+extern int wardner_sprite_hack;
+
+VIDEO_START( toaplan0 );
+VIDEO_UPDATE( toaplan0 );
+VIDEO_EOF( toaplan0 );
diff --git a/src/mame/includes/ultratnk.h b/src/mame/includes/ultratnk.h
new file mode 100644
index 00000000000..5df5c138462
--- /dev/null
+++ b/src/mame/includes/ultratnk.h
@@ -0,0 +1,17 @@
+/*************************************************************************
+
+ Atari Ultra Tank hardware
+
+*************************************************************************/
+
+
+/*----------- defined in video/ultratnk.c -----------*/
+
+extern int ultratnk_collision[4];
+
+PALETTE_INIT( ultratnk );
+VIDEO_START( ultratnk );
+VIDEO_UPDATE( ultratnk );
+VIDEO_EOF( ultratnk );
+
+WRITE8_HANDLER( ultratnk_video_ram_w );
diff --git a/src/mame/includes/unico.h b/src/mame/includes/unico.h
new file mode 100644
index 00000000000..fd68c07cd76
--- /dev/null
+++ b/src/mame/includes/unico.h
@@ -0,0 +1,23 @@
+/*----------- defined in video/unico.c -----------*/
+
+extern UINT16 *unico_vram_0, *unico_scrollx_0, *unico_scrolly_0;
+extern UINT16 *unico_vram_1, *unico_scrollx_1, *unico_scrolly_1;
+extern UINT16 *unico_vram_2, *unico_scrollx_2, *unico_scrolly_2;
+extern UINT32 *unico_vram32_0, *unico_vram32_1, *unico_vram32_2, *unico_scroll32;
+
+WRITE16_HANDLER( unico_vram_0_w );
+WRITE16_HANDLER( unico_vram_1_w );
+WRITE16_HANDLER( unico_vram_2_w );
+WRITE16_HANDLER( unico_palette_w );
+
+WRITE32_HANDLER( unico_vram32_0_w );
+WRITE32_HANDLER( unico_vram32_1_w );
+WRITE32_HANDLER( unico_vram32_2_w );
+WRITE32_HANDLER( unico_palette32_w );
+
+VIDEO_START( unico );
+VIDEO_UPDATE( unico );
+
+VIDEO_START( zeropnt2 );
+VIDEO_UPDATE( zeropnt2 );
+
diff --git a/src/mame/includes/vertigo.h b/src/mame/includes/vertigo.h
new file mode 100644
index 00000000000..50c0cbc9a01
--- /dev/null
+++ b/src/mame/includes/vertigo.h
@@ -0,0 +1,26 @@
+/*************************************************************************
+
+ Exidy Vertigo hardware
+
+*************************************************************************/
+
+/*----------- defined in machine/vertigo.c -----------*/
+
+READ16_HANDLER( vertigo_io_convert );
+READ16_HANDLER( vertigo_io_adc );
+READ16_HANDLER( vertigo_coin_r );
+READ16_HANDLER( vertigo_sio_r );
+WRITE16_HANDLER( vertigo_audio_w );
+WRITE16_HANDLER( vertigo_motor_w );
+WRITE16_HANDLER( vertigo_wsot_w );
+
+INTERRUPT_GEN( vertigo_interrupt );
+MACHINE_RESET( vertigo );
+
+/*----------- defined in video/vertigo.c -----------*/
+
+extern UINT16 *vertigo_vectorram;
+
+void vertigo_vproc_init(void);
+void vertigo_vproc(int cycles, int irq4);
+
diff --git a/src/mame/includes/vicdual.h b/src/mame/includes/vicdual.h
new file mode 100644
index 00000000000..2df9fe54768
--- /dev/null
+++ b/src/mame/includes/vicdual.h
@@ -0,0 +1,75 @@
+/*************************************************************************
+
+ VIC Dual Game board
+
+*************************************************************************/
+
+#include "sound/discrete.h"
+
+
+#define VICDUAL_MASTER_CLOCK (15468480)
+#define VICDUAL_MAIN_CPU_CLOCK (VICDUAL_MASTER_CLOCK/8)
+#define VICDUAL_PIXEL_CLOCK (VICDUAL_MASTER_CLOCK/3)
+#define VICDUAL_HTOTAL (0x148)
+#define VICDUAL_HBEND (0x000)
+#define VICDUAL_HBSTART (0x100)
+#define VICDUAL_HSSTART (0x110)
+#define VICDUAL_HSEND (0x130)
+#define VICDUAL_VTOTAL (0x106)
+#define VICDUAL_VBEND (0x000)
+#define VICDUAL_VBSTART (0x0e0)
+#define VICDUAL_VSSTART (0x0ec)
+#define VICDUAL_VSEND (0x0f0)
+
+
+/*----------- defined in drivers/vicdual.c -----------*/
+
+UINT8 vicdual_videoram_r(offs_t offset);
+UINT8 vicdual_characterram_r(offs_t offset);
+
+int vicdual_is_cabinet_color(void);
+
+
+/*----------- defined in video/vicdual.c -----------*/
+
+WRITE8_HANDLER( vicdual_palette_bank_w );
+
+VIDEO_UPDATE( vicdual_bw );
+VIDEO_UPDATE( vicdual_color );
+VIDEO_UPDATE( vicdual_bw_or_color );
+
+
+/*----------- defined in audio/vicdual.c -----------*/
+
+MACHINE_START( frogs_audio );
+MACHINE_DRIVER_EXTERN( frogs_audio );
+MACHINE_DRIVER_EXTERN( headon_audio );
+WRITE8_HANDLER( frogs_audio_w );
+WRITE8_HANDLER( headon_audio_w );
+WRITE8_HANDLER( invho2_audio_w );
+
+
+/*----------- defined in audio/depthch.c -----------*/
+
+MACHINE_DRIVER_EXTERN( depthch_audio );
+WRITE8_HANDLER( depthch_audio_w );
+
+
+/*----------- defined in audio/carnival.c -----------*/
+
+MACHINE_DRIVER_EXTERN( carnival_audio );
+WRITE8_HANDLER( carnival_audio_1_w );
+WRITE8_HANDLER( carnival_audio_2_w );
+
+
+/*----------- defined in audio/invinco.c -----------*/
+
+MACHINE_DRIVER_EXTERN( invinco_audio );
+WRITE8_HANDLER( invinco_audio_w );
+
+
+/*----------- defined in audio/pulsar.c -----------*/
+
+MACHINE_DRIVER_EXTERN( pulsar_audio );
+WRITE8_HANDLER( pulsar_audio_1_w );
+WRITE8_HANDLER( pulsar_audio_2_w );
diff --git a/src/mame/includes/videopin.h b/src/mame/includes/videopin.h
new file mode 100644
index 00000000000..d1b647d213c
--- /dev/null
+++ b/src/mame/includes/videopin.h
@@ -0,0 +1,32 @@
+/*************************************************************************
+
+ Atari Video Pinball hardware
+
+*************************************************************************/
+
+#include "sound/discrete.h"
+
+/* Discrete Sound Input Nodes */
+#define VIDEOPIN_OCTAVE_DATA NODE_01
+#define VIDEOPIN_NOTE_DATA NODE_02
+#define VIDEOPIN_BELL_EN NODE_03
+#define VIDEOPIN_BONG_EN NODE_04
+#define VIDEOPIN_ATTRACT_EN NODE_05
+#define VIDEOPIN_VOL_DATA NODE_06
+
+
+/*----------- defined in audio/videopin.c -----------*/
+
+DISCRETE_SOUND_EXTERN( videopin );
+
+
+/*----------- defined in video/videopin.c -----------*/
+
+extern UINT8* videopin_video_ram;
+
+WRITE8_HANDLER( videopin_video_ram_w );
+WRITE8_HANDLER( videopin_ball_w );
+
+VIDEO_START( videopin );
+VIDEO_UPDATE( videopin );
+
diff --git a/src/mame/includes/vindictr.h b/src/mame/includes/vindictr.h
new file mode 100644
index 00000000000..12344887150
--- /dev/null
+++ b/src/mame/includes/vindictr.h
@@ -0,0 +1,14 @@
+/*************************************************************************
+
+ Atari Vindicators hardware
+
+*************************************************************************/
+
+/*----------- defined in video/vindictr.c -----------*/
+
+WRITE16_HANDLER( vindictr_paletteram_w );
+
+VIDEO_START( vindictr );
+VIDEO_UPDATE( vindictr );
+
+void vindictr_scanline_update(running_machine *machine, int scrnum, int scanline);
diff --git a/src/mame/includes/warpwarp.h b/src/mame/includes/warpwarp.h
new file mode 100644
index 00000000000..c2077f88309
--- /dev/null
+++ b/src/mame/includes/warpwarp.h
@@ -0,0 +1,35 @@
+#include "sound/custom.h"
+
+/*----------- defined in video/warpwarp.c -----------*/
+
+extern UINT8 *geebee_videoram,*warpwarp_videoram;
+extern int geebee_bgw;
+extern int warpwarp_ball_on;
+extern int warpwarp_ball_h, warpwarp_ball_v;
+extern int warpwarp_ball_sizex, warpwarp_ball_sizey;
+extern int geebee_handleoverlay;
+
+PALETTE_INIT( geebee );
+PALETTE_INIT( navarone );
+PALETTE_INIT( warpwarp );
+VIDEO_START( geebee );
+VIDEO_START( navarone );
+VIDEO_START( warpwarp );
+VIDEO_UPDATE( geebee );
+VIDEO_UPDATE( warpwarp );
+WRITE8_HANDLER( warpwarp_videoram_w );
+WRITE8_HANDLER( geebee_videoram_w );
+
+
+/*----------- defined in audio/geebee.c -----------*/
+
+WRITE8_HANDLER( geebee_sound_w );
+void *geebee_sh_start(int clock, const struct CustomSound_interface *config);
+
+
+/*----------- defined in audio/warpwarp.c -----------*/
+
+WRITE8_HANDLER( warpwarp_sound_w );
+WRITE8_HANDLER( warpwarp_music1_w );
+WRITE8_HANDLER( warpwarp_music2_w );
+void *warpwarp_sh_start(int clock, const struct CustomSound_interface *config);
diff --git a/src/mame/includes/williams.h b/src/mame/includes/williams.h
new file mode 100644
index 00000000000..1d461ec3dc4
--- /dev/null
+++ b/src/mame/includes/williams.h
@@ -0,0 +1,125 @@
+/*************************************************************************
+
+ Driver for early Williams games
+
+**************************************************************************/
+
+
+#include "machine/6821pia.h"
+
+/*----------- defined in drivers/williams.c -----------*/
+
+void defender_install_io_space(void);
+
+
+/*----------- defined in machine/williams.c -----------*/
+
+/* Generic old-Williams PIA interfaces */
+extern const pia6821_interface williams_pia_0_intf;
+extern const pia6821_interface williams_muxed_pia_0_intf;
+extern const pia6821_interface williams_dual_muxed_pia_0_intf;
+extern const pia6821_interface williams_49way_pia_0_intf;
+extern const pia6821_interface williams_49way_muxed_pia_0_intf;
+extern const pia6821_interface williams_pia_1_intf;
+extern const pia6821_interface williams_snd_pia_intf;
+
+/* Game-specific old-Williams PIA interfaces */
+extern const pia6821_interface lottofun_pia_0_intf;
+extern const pia6821_interface sinistar_snd_pia_intf;
+extern const pia6821_interface playball_pia_1_intf;
+extern const pia6821_interface spdball_pia_3_intf;
+
+/* Generic later-Williams PIA interfaces */
+extern const pia6821_interface williams2_muxed_pia_0_intf;
+extern const pia6821_interface williams2_pia_1_intf;
+extern const pia6821_interface williams2_snd_pia_intf;
+
+/* Game-specific later-Williams PIA interfaces */
+extern const pia6821_interface mysticm_pia_0_intf;
+extern const pia6821_interface tshoot_pia_0_intf;
+extern const pia6821_interface tshoot_snd_pia_intf;
+extern const pia6821_interface joust2_pia_1_intf;
+
+/* initialization */
+MACHINE_RESET( defender );
+MACHINE_RESET( williams );
+MACHINE_RESET( blaster );
+MACHINE_RESET( williams2 );
+MACHINE_START( joust2 );
+MACHINE_RESET( joust2 );
+
+/* banking */
+WRITE8_HANDLER( defender_bank_select_w );
+WRITE8_HANDLER( williams_vram_select_w );
+WRITE8_HANDLER( sinistar_vram_select_w );
+WRITE8_HANDLER( blaster_bank_select_w );
+WRITE8_HANDLER( blaster_vram_select_w );
+WRITE8_HANDLER( williams2_bank_select_w );
+
+/* misc */
+WRITE8_HANDLER( williams_cmos_w );
+WRITE8_HANDLER( bubbles_cmos_w );
+WRITE8_HANDLER( williams_watchdog_reset_w );
+WRITE8_HANDLER( williams2_watchdog_reset_w );
+WRITE8_HANDLER( williams2_7segment_w );
+
+/* Mayday protection */
+extern UINT8 *mayday_protection;
+READ8_HANDLER( mayday_protection_r );
+
+WRITE8_HANDLER( defender_video_control_w );
+
+/*----------- defined in video/williams.c -----------*/
+
+#define WILLIAMS_BLITTER_NONE 0 /* no blitter */
+#define WILLIAMS_BLITTER_SC01 1 /* SC-01 blitter */
+#define WILLIAMS_BLITTER_SC02 2 /* SC-02 "fixed" blitter */
+
+#define WILLIAMS_TILEMAP_MYSTICM 0 /* IC79 is a 74LS85 comparator */
+#define WILLIAMS_TILEMAP_TSHOOT 1 /* IC79 is a 74LS157 selector jumpered to be enabled */
+#define WILLIAMS_TILEMAP_JOUST2 2 /* IC79 is a 74LS157 selector jumpered to be disabled */
+
+/* RAM globals */
+extern UINT8 *williams_videoram;
+extern UINT8 *williams2_tileram;
+extern UINT8 *blaster_palette_0;
+extern UINT8 *blaster_scanline_control;
+
+/* blitter globals */
+extern UINT8 williams_blitter_config;
+extern UINT16 williams_blitter_clip_address;
+extern UINT8 williams_blitter_window_enable;
+
+/* tilemap globals */
+extern UINT8 williams2_tilemap_config;
+
+/* rendering globals */
+extern UINT8 williams_cocktail;
+
+
+WRITE8_HANDLER( williams_blitter_w );
+WRITE8_HANDLER( williams_paletteram_w );
+WRITE8_HANDLER( blaster_remap_select_w );
+WRITE8_HANDLER( blaster_palette_0_w );
+WRITE8_HANDLER( blaster_video_control_w );
+WRITE8_HANDLER( blaster_scanline_control_w );
+READ8_HANDLER( williams_video_counter_r );
+READ8_HANDLER( williams2_video_counter_r );
+
+VIDEO_START( williams );
+VIDEO_START( blaster );
+VIDEO_START( williams2 );
+
+VIDEO_UPDATE( williams );
+VIDEO_UPDATE( blaster );
+VIDEO_UPDATE( williams2 );
+
+
+WRITE8_HANDLER( williams2_tileram_w );
+READ8_HANDLER( williams2_paletteram_r );
+WRITE8_HANDLER( williams2_paletteram_w );
+WRITE8_HANDLER( williams2_fg_select_w );
+WRITE8_HANDLER( williams2_bg_select_w );
+WRITE8_HANDLER( williams2_xscroll_low_w );
+WRITE8_HANDLER( williams2_xscroll_high_w );
+WRITE8_HANDLER( williams2_blit_window_enable_w );
diff --git a/src/mame/includes/wwfwfest.h b/src/mame/includes/wwfwfest.h
new file mode 100644
index 00000000000..82b86b719f6
--- /dev/null
+++ b/src/mame/includes/wwfwfest.h
@@ -0,0 +1,12 @@
+/*----------- defined in video/wwfwfest.c -----------*/
+
+extern UINT16 *wwfwfest_fg0_videoram, *wwfwfest_bg0_videoram, *wwfwfest_bg1_videoram;
+extern int wwfwfest_pri;
+extern int wwfwfest_bg0_scrollx, wwfwfest_bg0_scrolly, wwfwfest_bg1_scrollx, wwfwfest_bg1_scrolly;
+
+VIDEO_START( wwfwfest );
+VIDEO_START( wwfwfstb );
+VIDEO_UPDATE( wwfwfest );
+WRITE16_HANDLER( wwfwfest_fg0_videoram_w );
+WRITE16_HANDLER( wwfwfest_bg0_videoram_w );
+WRITE16_HANDLER( wwfwfest_bg1_videoram_w );
diff --git a/src/mame/includes/xybots.h b/src/mame/includes/xybots.h
new file mode 100644
index 00000000000..6df4f58e8d8
--- /dev/null
+++ b/src/mame/includes/xybots.h
@@ -0,0 +1,10 @@
+/*************************************************************************
+
+ Atari Xybots hardware
+
+*************************************************************************/
+
+/*----------- defined in video/xybots.c -----------*/
+
+VIDEO_START( xybots );
+VIDEO_UPDATE( xybots );
diff --git a/src/mame/includes/zaxxon.h b/src/mame/includes/zaxxon.h
new file mode 100644
index 00000000000..45afd79682d
--- /dev/null
+++ b/src/mame/includes/zaxxon.h
@@ -0,0 +1,44 @@
+/***************************************************************************
+
+ Sega Zaxxon hardware
+
+***************************************************************************/
+
+/*----------- defined in audio/zaxxon.c -----------*/
+
+WRITE8_HANDLER( zaxxon_sound_a_w );
+WRITE8_HANDLER( zaxxon_sound_b_w );
+WRITE8_HANDLER( zaxxon_sound_c_w );
+
+WRITE8_HANDLER( congo_sound_b_w );
+WRITE8_HANDLER( congo_sound_c_w );
+
+MACHINE_DRIVER_EXTERN( zaxxon_samples );
+MACHINE_DRIVER_EXTERN( congo_samples );
+
+
+/*----------- defined in video/zaxxon.c -----------*/
+
+WRITE8_HANDLER( zaxxon_flipscreen_w );
+WRITE8_HANDLER( zaxxon_fg_color_w );
+WRITE8_HANDLER( zaxxon_bg_position_w );
+WRITE8_HANDLER( zaxxon_bg_color_w );
+WRITE8_HANDLER( zaxxon_bg_enable_w );
+
+WRITE8_HANDLER( zaxxon_videoram_w );
+WRITE8_HANDLER( congo_colorram_w );
+
+WRITE8_HANDLER( congo_fg_bank_w );
+WRITE8_HANDLER( congo_color_bank_w );
+WRITE8_HANDLER( congo_sprite_custom_w );
+
+PALETTE_INIT( zaxxon );
+
+VIDEO_START( zaxxon );
+VIDEO_START( razmataz );
+VIDEO_START( congo );
+
+VIDEO_UPDATE( zaxxon );
+VIDEO_UPDATE( razmataz );
+VIDEO_UPDATE( congo );
+VIDEO_UPDATE( futspy );