summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Aaron Giles <aaron@aarongiles.com>2009-02-16 08:39:22 +0000
committer Aaron Giles <aaron@aarongiles.com>2009-02-16 08:39:22 +0000
commitcd9086819ad0678f20598754cb52985e2853b75d (patch)
tree70cd547a826b0cab19cfbe5a44d5fd5cf3dcbdd4
parent63a2d3125c60ffe4a61fb59fe1140f034d3ad27e (diff)
Undo premature PinMAME stuff.
-rw-r--r--.gitattributes6
-rw-r--r--src/mame/drivers/p_core.c1497
-rw-r--r--src/mame/drivers/p_core.h511
-rw-r--r--src/mame/drivers/p_s11.c1741
-rw-r--r--src/mame/drivers/p_s11.h263
-rw-r--r--src/mame/drivers/p_wmssnd.c1416
-rw-r--r--src/mame/drivers/p_wmssnd.h398
-rw-r--r--src/mame/mame.mak9
-rw-r--r--src/mame/mamedriv.c81
9 files changed, 0 insertions, 5922 deletions
diff --git a/.gitattributes b/.gitattributes
index 5fab5d85bd7..f26ad527349 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -1826,12 +1826,6 @@ src/mame/drivers/orbit.c svneol=native#text/plain
src/mame/drivers/othldrby.c svneol=native#text/plain
src/mame/drivers/othunder.c svneol=native#text/plain
src/mame/drivers/overdriv.c svneol=native#text/plain
-src/mame/drivers/p_core.c svneol=native#text/plain
-src/mame/drivers/p_core.h svneol=native#text/plain
-src/mame/drivers/p_s11.c svneol=native#text/plain
-src/mame/drivers/p_s11.h svneol=native#text/plain
-src/mame/drivers/p_wmssnd.c svneol=native#text/plain
-src/mame/drivers/p_wmssnd.h svneol=native#text/plain
src/mame/drivers/pachifev.c svneol=native#text/plain
src/mame/drivers/pacland.c svneol=native#text/plain
src/mame/drivers/pacman.c svneol=native#text/plain
diff --git a/src/mame/drivers/p_core.c b/src/mame/drivers/p_core.c
deleted file mode 100644
index 306bfb56836..00000000000
--- a/src/mame/drivers/p_core.c
+++ /dev/null
@@ -1,1497 +0,0 @@
-/************************************************************************************************
-*************************************************************************************************
- Old PinMAME code below for reference ONLY
-*************************************************************************************************
-************************************************************************************************/
-
-#if 0
-/***********************************************/
-/* PINMAME - Interface function (Input/Output) */
-/***********************************************/
-#include <stdarg.h>
-#include "driver.h"
-#include "sim.h"
-#include "snd_cmd.h"
-#include "mech.h"
-#include "core.h"
-
-/* stuff to test VPINMAME */
-#if 0
-#define VPINMAME
-int g_fHandleKeyboard = 1, g_fHandleMechanics = 1, g_fMechSamples = 1;
-void OnSolenoid(int nSolenoid, int IsActive) {}
-void OnStateChange(int nChange) {}
-UINT64 vp_getSolMask64(void) { return -1; }
-void vp_updateMech(void) {};
-int vp_getDip(int bank) { return 0; }
-void vp_setDIP(int bank, int value) { }
-#endif
-
-#ifdef VPINMAME
- #include "vpintf.h"
- extern int g_fPause;
- extern int g_fHandleKeyboard, g_fHandleMechanics;
- extern void OnSolenoid(int nSolenoid, int IsActive);
- extern void OnStateChange(int nChange);
-#else /* VPINMAME */
- #define g_fHandleKeyboard (TRUE)
- #define g_fHandleMechanics (0xff)
- #define OnSolenoid(nSolenoid, IsActive)
- #define OnStateChange(nChange)
- #define vp_getSolMask64() ((UINT64)(-1))
- #define vp_updateMech()
- #define vp_setDIP(x,y)
-#endif /* VPINMAME */
-
-static void drawChar(struct mame_bitmap *bitmap, int row, int col, UINT32 bits, int type, int dimming);
-static UINT32 core_initDisplaySize(const struct core_dispLayout *layout);
-static VIDEO_UPDATE(core_status);
-
-/*---------------------------
-/ Global variables
-/----------------------------*/
-tPMoptions pmoptions; /* PinMAME specific options */
-core_tGlobals coreGlobals;
-struct pinMachine *coreData;
-const core_tGameData *core_gameData = NULL; /* data about the running game */
-
-/*---------------------
-/ Global constants
-/----------------------*/
-const int core_bcd2seg7[16] = {
-/* 0 1 2 3 4 5 6 7 8 9 */
- 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f
-#ifdef MAME_DEBUG
-/* A B C D E */
- ,0x77,0x7c,0x39,0x5e,0x79
-#endif /* MAME_DEBUG */
-};
-// including the 0x0a to 0x0e characters of a SN5446A type BCD-to-7-segment encoder
-const int core_bcd2seg7e[16] = {
-/* 0 1 2 3 4 5 6 7 8 9 */
- 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,
-/* A B C D E */
- 0x58,0x4c,0x62,0x69,0x78
-};
-// missing top line for 6 and bottom line for 9 numbers (e.g. Atari)
-const int core_bcd2seg7a[16] = {
-/* 0 1 2 3 4 5 6 7 8 9 */
- 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7c,0x07,0x7f,0x67
-#ifdef MAME_DEBUG
-/* A B C D E */
- ,0x77,0x7c,0x39,0x5e,0x79
-#endif /* MAME_DEBUG */
-};
-const int core_bcd2seg9[16] = {
-/* 0 1 2 3 4 5 6 7 8 9 */
- 0x3f,0x100,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f
-#ifdef MAME_DEBUG
-/* A B C D E */
- ,0x77,0x7c,0x39,0x5e,0x79
-#endif /* MAME_DEBUG */
-};
-// missing top line for 6 and bottom line for 9 numbers, and including the 0x0a to 0x0e characters (e.g. Gottlieb Sys80/a)
-const int core_bcd2seg9a[16] = {
-/* 0 1 2 3 4 5 6 7 8 9 */
- 0x3f,0x100,0x5b,0x4f,0x66,0x6d,0x7c,0x07,0x7f,0x67,
-/* A B C D E */
- 0x58,0x4c,0x62,0x69,0x78
-};
-
-/* makes it easier to swap bits */
- // 0 1 2 3 4 5 6 7 8 9 10,11,12,13,14,15
-const UINT8 core_swapNyb[16] = { 0, 8, 4,12, 2,10, 6,14, 1, 9, 5,13, 3,11, 7,15};
-/* Palette */
-
-static const unsigned char core_palette[48+COL_COUNT][3] = {
-{/* 0 */ 0x00,0x00,0x00}, /* Background */
-/* -- DMD DOT COLORS-- */
-{/* 1 */ 0x30,0x00,0x00}, /* "Black" Dot - DMD Background */
-{/* 2 */ 0x00,0x00,0x00}, /* Intensity 33% - Filled in @ Run Time */
-{/* 3 */ 0x00,0x00,0x00}, /* Intensity 66% - Filled in @ Run Time */
-{/* 4 */ 0xff,0xe0,0x20}, /* Intensity 100% - Changed @ Run Time to match config vars*/
-/* -- PLAYFIELD LAMP COLORS -- */
-{/* 5 */ 0x00,0x00,0x00}, /* Black */
-{/* 6 */ 0xff,0xff,0xff}, /* White */
-{/* 7 */ 0x40,0xff,0x00}, /* green */
-{/* 8 */ 0xff,0x00,0x00}, /* Red */
-{/* 9 */ 0xff,0x80,0x00}, /* orange */
-{/* 10 */ 0xff,0xff,0x00}, /* yellow */
-{/* 11 */ 0x00,0x80,0xff}, /* lblue */
-{/* 12 */ 0x9f,0x40,0xff} /* lpurple*/
-};
-
-/*------------------------------
-/ Display segment drawing data
-/------------------------------*/
-typedef UINT32 tSegRow[17];
-typedef struct { int rows, cols; tSegRow *segs; } tSegData;
-
-static tSegRow segSize1C[5][20] = { /* with commas */
-{ /* alphanumeric display characters */
-/* all 0001 0002 0004 0008 0010 0020 0040 0080 0100 0200 0400 0800 1000 2000 4000 8000 */
-/* 11111111111 */{0x00555554,0x00555554,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
-/* 1133331333311 */{0x017fdff5,0x003fcff0,0x00000001,0x00000000,0x00000000,0x00000000,0x01000000,0x00000000,0x00000000,0x00400000,0x00001000,0x00000004,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
-/* 11 1 1 1 */{0x01401011,0x00000000,0x00000001,0x00000000,0x00000000,0x00000000,0x01000000,0x00000000,0x00000000,0x00400000,0x00001000,0x00000010,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
-/* 31 1 31 1 31 */{0x0d10d04d,0x00000000,0x0000000d,0x00000000,0x00000000,0x00000000,0x0d000000,0x00000000,0x00000000,0x00100000,0x0000d000,0x00000040,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
-/* 32 1 32 1 32 */{0x0e10e04e,0x00000000,0x0000000e,0x00000000,0x00000000,0x00000000,0x0e000000,0x00000000,0x00000000,0x00100000,0x0000e000,0x00000040,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
-/* 22 1 22 1 22 */{0x0a04a10a,0x00000000,0x0000000a,0x00000000,0x00000000,0x00000000,0x0a000000,0x00000000,0x00000000,0x00040000,0x0000a000,0x00000100,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
-/* 23 1 231 23 */{0x0b04b40b,0x00000000,0x0000000b,0x00000000,0x00000000,0x00000000,0x0b000000,0x00000000,0x00000000,0x00040000,0x0000b000,0x00000400,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
-/* 13 1131 13 */{0x07017407,0x00000000,0x00000007,0x00000000,0x00000000,0x00000000,0x07000000,0x00000000,0x00000000,0x00010000,0x00007000,0x00000400,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
-/* 1333311133331 */{0x07fd5ff4,0x00000000,0x00000004,0x00000000,0x00000000,0x00000000,0x04000000,0x03fc0000,0x00000000,0x00010000,0x00004000,0x00001000,0x00000ff0,0x00000000,0x00000000,0x00000000,0x00000000},
-/* 3111113111113 */{0x0d55d55c,0x00000000,0x0000000c,0x0000000c,0x00000000,0x0c000000,0x0c000000,0x0155c000,0x00000000,0x0000c000,0x0000c000,0x0000c000,0x0000d550,0x0000c000,0x0000c000,0x0000c000,0x00000000},
-/* 1333311133331 */{0x07fd5ff4,0x00000000,0x00000000,0x00000004,0x00000000,0x04000000,0x00000000,0x03fc0000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000ff0,0x00001000,0x00004000,0x00010000,0x00000000},
-/* 31 1311 31 */{0x34075034,0x00000000,0x00000000,0x00000034,0x00000000,0x34000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00001000,0x00034000,0x00040000,0x00000000},
-/* 32 132 1 32 */{0x38078438,0x00000000,0x00000000,0x00000038,0x00000000,0x38000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000400,0x00038000,0x00040000,0x00000000},
-/* 22 1 22 1 22 */{0x28128428,0x00000000,0x00000000,0x00000028,0x00000000,0x28000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000400,0x00028000,0x00100000,0x00000000},
-/* 23 1 23 1 23 */{0x2c42c12c,0x00000000,0x00000000,0x0000002c,0x00000000,0x2c000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000100,0x0002c000,0x00400000,0x00000000},
-/* 13 1 13 1 13 */{0x1c41c11c,0x00000000,0x00000000,0x0000001c,0x00000000,0x1c000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000100,0x0001c000,0x00400000,0x00000000},
-/* 1 1 1 11 */{0x11010050,0x00000000,0x00000000,0x00000010,0x00000000,0x10000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000040,0x00010000,0x01000000,0x00000000},
-/* 113333133331132 */{0x17fdff5e,0x00000000,0x00000000,0x00000010,0x03fcff00,0x10000000,0x00000000,0x00000000,0x0000000e,0x00000000,0x00000000,0x00000000,0x00000000,0x00000040,0x00010000,0x04000000,0x0000000e},
-/* 11111111111 31 */{0x0555554d,0x00000000,0x00000000,0x00000000,0x05555540,0x00000000,0x00000000,0x00000000,0x0000000d,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x0000000d},
-/* 1 */{0x00000004,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000004,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000}
-},{ /* 8 segment LED characters */
-/* 11111111111 */{0x00555554,0x00555554,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
-/* 1333333333331 */{0x01fffffd,0x00fffffc,0x00000001,0x00000000,0x00000000,0x00000000,0x01000000,0x00000000,0x00000000},
-/* 1 1 */{0x01000001,0x00000000,0x00000001,0x00000000,0x00000000,0x00000000,0x01000000,0x00000000,0x00000000},
-/* 31 31 */{0x0d00000d,0x00000000,0x0000000d,0x00000000,0x00000000,0x00000000,0x0d000000,0x00000000,0x00000000},
-/* 32 32 */{0x0e00000e,0x00000000,0x0000000e,0x00000000,0x00000000,0x00000000,0x0e000000,0x00000000,0x00000000},
-/* 22 22 */{0x0a00000a,0x00000000,0x0000000a,0x00000000,0x00000000,0x00000000,0x0a000000,0x00000000,0x00000000},
-/* 23 23 */{0x0b00000b,0x00000000,0x0000000b,0x00000000,0x00000000,0x00000000,0x0b000000,0x00000000,0x00000000},
-/* 13 13 */{0x07000007,0x00000000,0x00000007,0x00000000,0x00000000,0x00000000,0x07000000,0x00000000,0x00000000},
-/* 1333333333331 */{0x07fffff4,0x00000000,0x00000004,0x00000000,0x00000000,0x00000000,0x04000000,0x03fffff0,0x00000000},
-/* 3111111111113 */{0x0d55555c,0x00000000,0x0000000c,0x0000000c,0x00000000,0x0c000000,0x0c000000,0x0d55555c,0x00000000},
-/* 1333333333331 */{0x07fffff4,0x00000000,0x00000000,0x00000004,0x00000000,0x04000000,0x00000000,0x03fffff0,0x00000000},
-/* 31 31 */{0x34000034,0x00000000,0x00000000,0x00000034,0x00000000,0x34000000,0x00000000,0x00000000,0x00000000},
-/* 32 32 */{0x38000038,0x00000000,0x00000000,0x00000038,0x00000000,0x38000000,0x00000000,0x00000000,0x00000000},
-/* 22 22 */{0x28000028,0x00000000,0x00000000,0x00000028,0x00000000,0x28000000,0x00000000,0x00000000,0x00000000},
-/* 23 23 */{0x2c00002c,0x00000000,0x00000000,0x0000002c,0x00000000,0x2c000000,0x00000000,0x00000000,0x00000000},
-/* 13 13 */{0x1c00001c,0x00000000,0x00000000,0x0000001c,0x00000000,0x1c000000,0x00000000,0x00000000,0x00000000},
-/* 1 1 */{0x10000010,0x00000000,0x00000000,0x00000010,0x00000000,0x10000000,0x00000000,0x00000000,0x00000000},
-/* 133333333333132 */{0x1fffffde,0x00000000,0x00000000,0x00000010,0x0fffffc0,0x10000000,0x00000000,0x00000000,0x0000000e},
-/* 11111111111 31 */{0x0555554d,0x00000000,0x00000000,0x00000000,0x05555540,0x00000000,0x00000000,0x00000000,0x0000000d},
-/* 1 */{0x00000004,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000004}
-},{ /* 10 segment LED characters */
-/* 11111111111 */{0x00555554,0x00555554,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
-/* 1333331333331 */{0x01ffdffd,0x00ffcffc,0x00000001,0x00000000,0x00000000,0x00000000,0x01000000,0x00000000,0x00000000,0x00001000,0x00000000},
-/* 1 1 1 */{0x01001001,0x00000000,0x00000001,0x00000000,0x00000000,0x00000000,0x01000000,0x00000000,0x00000000,0x00001000,0x00000000},
-/* 31 31 31 */{0x0d00d00d,0x00000000,0x0000000d,0x00000000,0x00000000,0x00000000,0x0d000000,0x00000000,0x00000000,0x0000d000,0x00000000},
-/* 32 32 32 */{0x0e00e00e,0x00000000,0x0000000e,0x00000000,0x00000000,0x00000000,0x0e000000,0x00000000,0x00000000,0x0000e000,0x00000000},
-/* 22 22 22 */{0x0a00a00a,0x00000000,0x0000000a,0x00000000,0x00000000,0x00000000,0x0a000000,0x00000000,0x00000000,0x0000a000,0x00000000},
-/* 23 23 23 */{0x0b00b00b,0x00000000,0x0000000b,0x00000000,0x00000000,0x00000000,0x0b000000,0x00000000,0x00000000,0x0000b000,0x00000000},
-/* 13 13 13 */{0x07007007,0x00000000,0x00000007,0x00000000,0x00000000,0x00000000,0x07000000,0x00000000,0x00000000,0x00007000,0x00000000},
-/* 1333331333331 */{0x07ff7ff4,0x00000000,0x00000004,0x00000000,0x00000000,0x00000000,0x04000000,0x03ff3ff0,0x00000000,0x00004000,0x00000000},
-/* 3111111111113 */{0x0d55555c,0x00000000,0x0000000c,0x0000000c,0x00000000,0x0c000000,0x0c000000,0x0d55555c,0x00000000,0x0000c000,0x0000c000},
-/* 1333331333331 */{0x07ff7ff4,0x00000000,0x00000000,0x00000004,0x00000000,0x04000000,0x00000000,0x03ff3ff0,0x00000000,0x00000000,0x00004000},
-/* 31 31 31 */{0x34034034,0x00000000,0x00000000,0x00000034,0x00000000,0x34000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00034000},
-/* 32 32 32 */{0x38038038,0x00000000,0x00000000,0x00000038,0x00000000,0x38000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00038000},
-/* 22 22 22 */{0x28028028,0x00000000,0x00000000,0x00000028,0x00000000,0x28000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00028000},
-/* 23 23 23 */{0x2c02c02c,0x00000000,0x00000000,0x0000002c,0x00000000,0x2c000000,0x00000000,0x00000000,0x00000000,0x00000000,0x0002c000},
-/* 13 13 13 */{0x1c01c01c,0x00000000,0x00000000,0x0000001c,0x00000000,0x1c000000,0x00000000,0x00000000,0x00000000,0x00000000,0x0001c000},
-/* 1 1 1 */{0x10010010,0x00000000,0x00000000,0x00000010,0x00000000,0x10000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00010000},
-/* 133333133333132 */{0x1ffdffde,0x00000000,0x00000000,0x00000010,0x0ffcffc0,0x10000000,0x00000000,0x00000000,0x0000000e,0x00000000,0x00010000},
-/* 11111111111 31 */{0x0555554d,0x00000000,0x00000000,0x00000000,0x05555540,0x00000000,0x00000000,0x00000000,0x0000000d,0x00000000,0x00000000},
-/* 1 */{0x00000004,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000004,0x00000000,0x00000000}
-},{ /* alphanumeric display characters (reversed comma with period) */
-/* 11111111111 */{0x00555554,0x00555554,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
-/* 1133331333311 */{0x017fdff5,0x003fcff0,0x00000001,0x00000000,0x00000000,0x00000000,0x01000000,0x00000000,0x00000000,0x00400000,0x00001000,0x00000004,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
-/* 11 1 1 1 */{0x01401011,0x00000000,0x00000001,0x00000000,0x00000000,0x00000000,0x01000000,0x00000000,0x00000000,0x00400000,0x00001000,0x00000010,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
-/* 31 1 31 1 31 */{0x0d10d04d,0x00000000,0x0000000d,0x00000000,0x00000000,0x00000000,0x0d000000,0x00000000,0x00000000,0x00100000,0x0000d000,0x00000040,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
-/* 32 1 32 1 32 */{0x0e10e04e,0x00000000,0x0000000e,0x00000000,0x00000000,0x00000000,0x0e000000,0x00000000,0x00000000,0x00100000,0x0000e000,0x00000040,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
-/* 22 1 22 1 22 */{0x0a04a10a,0x00000000,0x0000000a,0x00000000,0x00000000,0x00000000,0x0a000000,0x00000000,0x00000000,0x00040000,0x0000a000,0x00000100,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
-/* 23 1 231 23 */{0x0b04b40b,0x00000000,0x0000000b,0x00000000,0x00000000,0x00000000,0x0b000000,0x00000000,0x00000000,0x00040000,0x0000b000,0x00000400,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
-/* 13 1131 13 */{0x07017407,0x00000000,0x00000007,0x00000000,0x00000000,0x00000000,0x07000000,0x00000000,0x00000000,0x00010000,0x00007000,0x00000400,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
-/* 1333311133331 */{0x07fd5ff4,0x00000000,0x00000004,0x00000000,0x00000000,0x00000000,0x04000000,0x03fc0000,0x00000000,0x00010000,0x00004000,0x00001000,0x00000ff0,0x00000000,0x00000000,0x00000000,0x00000000},
-/* 3111113111113 */{0x0d55d55c,0x00000000,0x0000000c,0x0000000c,0x00000000,0x0c000000,0x0c000000,0x0155c000,0x00000000,0x0000c000,0x0000c000,0x0000c000,0x0000d550,0x0000c000,0x0000c000,0x0000c000,0x00000000},
-/* 1333311133331 */{0x07fd5ff4,0x00000000,0x00000000,0x00000004,0x00000000,0x04000000,0x00000000,0x03fc0000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000ff0,0x00001000,0x00004000,0x00010000,0x00000000},
-/* 31 1311 31 */{0x34075034,0x00000000,0x00000000,0x00000034,0x00000000,0x34000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00001000,0x00034000,0x00040000,0x00000000},
-/* 32 132 1 32 */{0x38078438,0x00000000,0x00000000,0x00000038,0x00000000,0x38000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000400,0x00038000,0x00040000,0x00000000},
-/* 22 1 22 1 22 */{0x28128428,0x00000000,0x00000000,0x00000028,0x00000000,0x28000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000400,0x00028000,0x00100000,0x00000000},
-/* 23 1 23 1 23 */{0x2c42c12c,0x00000000,0x00000000,0x0000002c,0x00000000,0x2c000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000100,0x0002c000,0x00400000,0x00000000},
-/* 13 1 13 1 13 */{0x1c41c11c,0x00000000,0x00000000,0x0000001c,0x00000000,0x1c000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000100,0x0001c000,0x00400000,0x00000000},
-/* 1 1 1 11 */{0x11010050,0x00000000,0x00000000,0x00000010,0x00000000,0x10000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000040,0x00010000,0x01000000,0x00000000},
-/* 113333133331132 */{0x17fdff5e,0x00000000,0x00000000,0x00000010,0x03fcff00,0x10000000,0x00000000,0x00000000,0x0000000e,0x00000000,0x00000000,0x00000000,0x00000000,0x00000040,0x00010000,0x04000000,0x0000000e},
-/* 11111111111 31 */{0x0555554d,0x00000000,0x00000000,0x00000000,0x05555540,0x00000000,0x00000000,0x00000000,0x0000000d,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x0000000d},
-/* 1 */{0x00000004,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000004}
-},{ /* 8 segment LED characters with dots instead of commas */
-/* 11111111111 */{0x00555554,0x00555554,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
-/* 1333333333331 */{0x01fffffd,0x00fffffc,0x00000001,0x00000000,0x00000000,0x00000000,0x01000000,0x00000000,0x00000000},
-/* 1 1 */{0x01000001,0x00000000,0x00000001,0x00000000,0x00000000,0x00000000,0x01000000,0x00000000,0x00000000},
-/* 31 31 */{0x0d00000d,0x00000000,0x0000000d,0x00000000,0x00000000,0x00000000,0x0d000000,0x00000000,0x00000000},
-/* 32 32 */{0x0e00000e,0x00000000,0x0000000e,0x00000000,0x00000000,0x00000000,0x0e000000,0x00000000,0x00000000},
-/* 22 22 */{0x0a00000a,0x00000000,0x0000000a,0x00000000,0x00000000,0x00000000,0x0a000000,0x00000000,0x00000000},
-/* 23 23 */{0x0b00000b,0x00000000,0x0000000b,0x00000000,0x00000000,0x00000000,0x0b000000,0x00000000,0x00000000},
-/* 13 13 */{0x07000007,0x00000000,0x00000007,0x00000000,0x00000000,0x00000000,0x07000000,0x00000000,0x00000000},
-/* 1333333333331 */{0x07fffff4,0x00000000,0x00000004,0x00000000,0x00000000,0x00000000,0x04000000,0x03fffff0,0x00000000},
-/* 3111111111113 */{0x0d55555c,0x00000000,0x0000000c,0x0000000c,0x00000000,0x0c000000,0x0c000000,0x0d55555c,0x00000000},
-/* 1333333333331 */{0x07fffff4,0x00000000,0x00000000,0x00000004,0x00000000,0x04000000,0x00000000,0x03fffff0,0x00000000},
-/* 31 31 */{0x34000034,0x00000000,0x00000000,0x00000034,0x00000000,0x34000000,0x00000000,0x00000000,0x00000000},
-/* 32 32 */{0x38000038,0x00000000,0x00000000,0x00000038,0x00000000,0x38000000,0x00000000,0x00000000,0x00000000},
-/* 22 22 */{0x28000028,0x00000000,0x00000000,0x00000028,0x00000000,0x28000000,0x00000000,0x00000000,0x00000000},
-/* 23 23 */{0x2c00002c,0x00000000,0x00000000,0x0000002c,0x00000000,0x2c000000,0x00000000,0x00000000,0x00000000},
-/* 13 13 */{0x1c00001c,0x00000000,0x00000000,0x0000001c,0x00000000,0x1c000000,0x00000000,0x00000000,0x00000000},
-/* 1 1 */{0x10000010,0x00000000,0x00000000,0x00000010,0x00000000,0x10000000,0x00000000,0x00000000,0x00000000},
-/* 133333333333132 */{0x1fffffde,0x00000000,0x00000000,0x00000010,0x0fffffc0,0x10000000,0x00000000,0x00000000,0x0000000e},
-/* 11111111111 31 */{0x0555554d,0x00000000,0x00000000,0x00000000,0x05555540,0x00000000,0x00000000,0x00000000,0x0000000d},
-/* */{0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000}
-}};
-static tSegRow segSize1[3][20] = { /* without commas */
-{ /* alphanumeric display characters */
-/* all 0001 0002 0004 0008 0010 0020 0040 0080 0100 0200 0400 0800 1000 2000 4000 */
-/* 11111111111 */{0x00555554,0x00555554,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
-/* 1133331333311 */{0x017fdff5,0x003fcff0,0x00000001,0x00000000,0x00000000,0x00000000,0x01000000,0x00000000,0x00000000,0x00400000,0x00001000,0x00000004,0x00000000,0x00000000,0x00000000,0x00000000},
-/* 11 1 1 1 */{0x01401011,0x00000000,0x00000001,0x00000000,0x00000000,0x00000000,0x01000000,0x00000000,0x00000000,0x00400000,0x00001000,0x00000010,0x00000000,0x00000000,0x00000000,0x00000000},
-/* 31 1 31 1 31 */{0x0d10d04d,0x00000000,0x0000000d,0x00000000,0x00000000,0x00000000,0x0d000000,0x00000000,0x00000000,0x00100000,0x0000d000,0x00000040,0x00000000,0x00000000,0x00000000,0x00000000},
-/* 32 1 32 1 32 */{0x0e10e04e,0x00000000,0x0000000e,0x00000000,0x00000000,0x00000000,0x0e000000,0x00000000,0x00000000,0x00100000,0x0000e000,0x00000040,0x00000000,0x00000000,0x00000000,0x00000000},
-/* 22 1 22 1 22 */{0x0a04a10a,0x00000000,0x0000000a,0x00000000,0x00000000,0x00000000,0x0a000000,0x00000000,0x00000000,0x00040000,0x0000a000,0x00000100,0x00000000,0x00000000,0x00000000,0x00000000},
-/* 23 1 231 23 */{0x0b04b40b,0x00000000,0x0000000b,0x00000000,0x00000000,0x00000000,0x0b000000,0x00000000,0x00000000,0x00040000,0x0000b000,0x00000400,0x00000000,0x00000000,0x00000000,0x00000000},
-/* 13 1131 13 */{0x07017407,0x00000000,0x00000007,0x00000000,0x00000000,0x00000000,0x07000000,0x00000000,0x00000000,0x00010000,0x00007000,0x00000400,0x00000000,0x00000000,0x00000000,0x00000000},
-/* 1333311133331 */{0x07fd5ff4,0x00000000,0x00000004,0x00000000,0x00000000,0x00000000,0x04000000,0x03fc0000,0x00000000,0x00010000,0x00004000,0x00001000,0x00000ff0,0x00000000,0x00000000,0x00000000},
-/* 3111113111113 */{0x0d55d55c,0x00000000,0x0000000c,0x0000000c,0x00000000,0x0c000000,0x0c000000,0x0155c000,0x00000000,0x0000c000,0x0000c000,0x0000c000,0x0000d550,0x0000c000,0x0000c000,0x0000c000},
-/* 1333311133331 */{0x07fd5ff4,0x00000000,0x00000000,0x00000004,0x00000000,0x04000000,0x00000000,0x03fc0000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000ff0,0x00001000,0x00004000,0x00010000},
-/* 31 1311 31 */{0x34075034,0x00000000,0x00000000,0x00000034,0x00000000,0x34000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00001000,0x00034000,0x00040000},
-/* 32 132 1 32 */{0x38078438,0x00000000,0x00000000,0x00000038,0x00000000,0x38000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000400,0x00038000,0x00040000},
-/* 22 1 22 1 22 */{0x28128428,0x00000000,0x00000000,0x00000028,0x00000000,0x28000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000400,0x00028000,0x00100000},
-/* 23 1 23 1 23 */{0x2c42c12c,0x00000000,0x00000000,0x0000002c,0x00000000,0x2c000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000100,0x0002c000,0x00400000},
-/* 13 1 13 1 13 */{0x1c41c11c,0x00000000,0x00000000,0x0000001c,0x00000000,0x1c000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000100,0x0001c000,0x00400000},
-/* 1 1 1 11 */{0x11010050,0x00000000,0x00000000,0x00000010,0x00000000,0x10000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000040,0x00010000,0x01000000},
-/* 1133331333311 */{0x17fdff50,0x00000000,0x00000000,0x00000010,0x03fcff00,0x10000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000040,0x00010000,0x04000000},
-/* 11111111111 */{0x05555540,0x00000000,0x00000000,0x00000000,0x05555540,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
-/* */{0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000}
-},{ /* 7 segment LED characters */
-/* 11111111111 */{0x00555554,0x00555554,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
-/* 1333333333331 */{0x01fffffd,0x00fffffc,0x00000001,0x00000000,0x00000000,0x00000000,0x01000000,0x00000000},
-/* 1 1 */{0x01000001,0x00000000,0x00000001,0x00000000,0x00000000,0x00000000,0x01000000,0x00000000},
-/* 31 31 */{0x0d00000d,0x00000000,0x0000000d,0x00000000,0x00000000,0x00000000,0x0d000000,0x00000000},
-/* 32 32 */{0x0e00000e,0x00000000,0x0000000e,0x00000000,0x00000000,0x00000000,0x0e000000,0x00000000},
-/* 22 22 */{0x0a00000a,0x00000000,0x0000000a,0x00000000,0x00000000,0x00000000,0x0a000000,0x00000000},
-/* 23 23 */{0x0b00000b,0x00000000,0x0000000b,0x00000000,0x00000000,0x00000000,0x0b000000,0x00000000},
-/* 13 13 */{0x07000007,0x00000000,0x00000007,0x00000000,0x00000000,0x00000000,0x07000000,0x00000000},
-/* 1333333333331 */{0x07fffff4,0x00000000,0x00000004,0x00000000,0x00000000,0x00000000,0x04000000,0x03fffff0},
-/* 3111111111113 */{0x0d55555c,0x00000000,0x0000000c,0x0000000c,0x00000000,0x0c000000,0x0c000000,0x0d55555c},
-/* 1333333333331 */{0x07fffff4,0x00000000,0x00000000,0x00000004,0x00000000,0x04000000,0x00000000,0x03fffff0},
-/* 31 31 */{0x34000034,0x00000000,0x00000000,0x00000034,0x00000000,0x34000000,0x00000000,0x00000000},
-/* 32 32 */{0x38000038,0x00000000,0x00000000,0x00000038,0x00000000,0x38000000,0x00000000,0x00000000},
-/* 22 22 */{0x28000028,0x00000000,0x00000000,0x00000028,0x00000000,0x28000000,0x00000000,0x00000000},
-/* 23 23 */{0x2c00002c,0x00000000,0x00000000,0x0000002c,0x00000000,0x2c000000,0x00000000,0x00000000},
-/* 13 13 */{0x1c00001c,0x00000000,0x00000000,0x0000001c,0x00000000,0x1c000000,0x00000000,0x00000000},
-/* 1 1 */{0x10000010,0x00000000,0x00000000,0x00000010,0x00000000,0x10000000,0x00000000,0x00000000},
-/* 1333333333331 */{0x1fffffd0,0x00000000,0x00000000,0x00000010,0x0fffffc0,0x10000000,0x00000000,0x00000000},
-/* 11111111111 */{0x05555540,0x00000000,0x00000000,0x00000000,0x05555540,0x00000000,0x00000000,0x00000000},
-/* */{0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000}
-},{ /* 9 segment LED characters */
-/* 11111111111 */{0x00555554,0x00555554,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
-/* 1333331333331 */{0x01ffdffd,0x00ffcffc,0x00000001,0x00000000,0x00000000,0x00000000,0x01000000,0x00000000,0x00000000,0x00001000,0x00000000},
-/* 1 1 1 */{0x01001001,0x00000000,0x00000001,0x00000000,0x00000000,0x00000000,0x01000000,0x00000000,0x00000000,0x00001000,0x00000000},
-/* 31 31 31 */{0x0d00d00d,0x00000000,0x0000000d,0x00000000,0x00000000,0x00000000,0x0d000000,0x00000000,0x00000000,0x0000d000,0x00000000},
-/* 32 32 32 */{0x0e00e00e,0x00000000,0x0000000e,0x00000000,0x00000000,0x00000000,0x0e000000,0x00000000,0x00000000,0x0000e000,0x00000000},
-/* 22 22 22 */{0x0a00a00a,0x00000000,0x0000000a,0x00000000,0x00000000,0x00000000,0x0a000000,0x00000000,0x00000000,0x0000a000,0x00000000},
-/* 23 23 23 */{0x0b00b00b,0x00000000,0x0000000b,0x00000000,0x00000000,0x00000000,0x0b000000,0x00000000,0x00000000,0x0000b000,0x00000000},
-/* 13 13 13 */{0x07007007,0x00000000,0x00000007,0x00000000,0x00000000,0x00000000,0x07000000,0x00000000,0x00000000,0x00007000,0x00000000},
-/* 1333331333331 */{0x07ff7ff4,0x00000000,0x00000004,0x00000000,0x00000000,0x00000000,0x04000000,0x03ff3ff0,0x00000000,0x00004000,0x00000000},
-/* 3111111111113 */{0x0d55555c,0x00000000,0x0000000c,0x0000000c,0x00000000,0x0c000000,0x0c000000,0x0d55555c,0x00000000,0x0000c000,0x0000c000},
-/* 1333331333331 */{0x07ff7ff4,0x00000000,0x00000000,0x00000004,0x00000000,0x04000000,0x00000000,0x03ff3ff0,0x00000000,0x00000000,0x00004000},
-/* 31 31 31 */{0x34034034,0x00000000,0x00000000,0x00000034,0x00000000,0x34000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00034000},
-/* 32 32 32 */{0x38038038,0x00000000,0x00000000,0x00000038,0x00000000,0x38000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00038000},
-/* 22 22 22 */{0x28028028,0x00000000,0x00000000,0x00000028,0x00000000,0x28000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00028000},
-/* 23 23 23 */{0x2c02c02c,0x00000000,0x00000000,0x0000002c,0x00000000,0x2c000000,0x00000000,0x00000000,0x00000000,0x00000000,0x0002c000},
-/* 13 13 13 */{0x1c01c01c,0x00000000,0x00000000,0x0000001c,0x00000000,0x1c000000,0x00000000,0x00000000,0x00000000,0x00000000,0x0001c000},
-/* 1 1 1 */{0x10010010,0x00000000,0x00000000,0x00000010,0x00000000,0x10000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00010000},
-/* 1333331333331 */{0x1ffdffd0,0x00000000,0x00000000,0x00000010,0x0ffcffc0,0x10000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00010000},
-/* 11111111111 */{0x05555540,0x00000000,0x00000000,0x00000000,0x05555540,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
-/* */{0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000}
-}};
-static tSegRow segSize2C[5][12] = { /* with commas */
-{ /* alphanumeric display characters */
-/* all 0001 0002 0004 0008 0010 0020 0040 0080 0100 0200 0400 0800 1000 2000 4000 8000 */
-/* xxxxxxx */{0x05554000,0x05554000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
-/* xx x xx */{0x14105000,0x00000000,0x00001000,0x00000000,0x00000000,0x00000000,0x10000000,0x00000000,0x00000000,0x04000000,0x00100000,0x00004000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
-/* x x x x x */{0x11111000,0x00000000,0x00001000,0x00000000,0x00000000,0x00000000,0x10000000,0x00000000,0x00000000,0x01000000,0x00100000,0x00010000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
-/* x x x x x */{0x11111000,0x00000000,0x00001000,0x00000000,0x00000000,0x00000000,0x10000000,0x00000000,0x00000000,0x01000000,0x00100000,0x00010000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
-/* x xxx x */{0x10541000,0x00000000,0x00001000,0x00000000,0x00000000,0x00000000,0x10000000,0x00000000,0x00000000,0x00400000,0x00100000,0x00040000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
-/* xxx xxx */{0x05454000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x05400000,0x00000000,0x00000000,0x00000000,0x00000000,0x00054000,0x00000000,0x00000000,0x00000000,0x00000000},
-/* x xxx x */{0x10541000,0x00000000,0x00000000,0x00001000,0x00000000,0x10000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00040000,0x00100000,0x00400000,0x00000000},
-/* x x x x x */{0x11111000,0x00000000,0x00000000,0x00001000,0x00000000,0x10000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00010000,0x00100000,0x01000000,0x00000000},
-/* x x x x x */{0x11111000,0x00000000,0x00000000,0x00001000,0x00000000,0x10000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00010000,0x00100000,0x01000000,0x00000000},
-/* xx x xx x */{0x14105100,0x00000000,0x00000000,0x00001000,0x00000000,0x10000000,0x00000000,0x00000000,0x00000100,0x00000000,0x00000000,0x00000000,0x00000000,0x00004000,0x00100000,0x04000000,0x00000000},
-/* xxxxxxx x */{0x05554100,0x00000000,0x00000000,0x00000000,0x05554000,0x00000000,0x00000000,0x00000000,0x00000100,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000100},
-/* x */{0x00000400,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000400,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000}
-},{ /* 8 segment LED characters */
-/* xxxxxxx */{0x05554000,0x05554000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
-/* x x */{0x10001000,0x00000000,0x00001000,0x00000000,0x00000000,0x00000000,0x10000000,0x00000000,0x00000000},
-/* x x */{0x10001000,0x00000000,0x00001000,0x00000000,0x00000000,0x00000000,0x10000000,0x00000000,0x00000000},
-/* x x */{0x10001000,0x00000000,0x00001000,0x00000000,0x00000000,0x00000000,0x10000000,0x00000000,0x00000000},
-/* x x */{0x10001000,0x00000000,0x00001000,0x00000000,0x00000000,0x00000000,0x10000000,0x00000000,0x00000000},
-/* xxxxxxx */{0x05554000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x05554000,0x00000000},
-/* x x */{0x10001000,0x00000000,0x00000000,0x00001000,0x00000000,0x10000000,0x00000000,0x00000000,0x00000000},
-/* x x */{0x10001000,0x00000000,0x00000000,0x00001000,0x00000000,0x10000000,0x00000000,0x00000000,0x00000000},
-/* x x */{0x10001000,0x00000000,0x00000000,0x00001000,0x00000000,0x10000000,0x00000000,0x00000000,0x00000000},
-/* x x x */{0x10001100,0x00000000,0x00000000,0x00001000,0x00000000,0x10000000,0x00000000,0x00000000,0x00000100},
-/* xxxxxxx x */{0x05554100,0x00000000,0x00000000,0x00000000,0x05554000,0x00000000,0x00000000,0x00000000,0x00000100},
-/* x */{0x00000400,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000400}
-},{ /* 10 segment LED characters */
-/* xxxxxxx */{0x05554000,0x05554000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
-/* x x x */{0x10101000,0x00000000,0x00001000,0x00000000,0x00000000,0x00000000,0x10000000,0x00000000,0x00000000,0x00100000,0x00000000},
-/* x x x */{0x10101000,0x00000000,0x00001000,0x00000000,0x00000000,0x00000000,0x10000000,0x00000000,0x00000000,0x00100000,0x00000000},
-/* x x x */{0x10101000,0x00000000,0x00001000,0x00000000,0x00000000,0x00000000,0x10000000,0x00000000,0x00000000,0x00100000,0x00000000},
-/* x x x */{0x10101000,0x00000000,0x00001000,0x00000000,0x00000000,0x00000000,0x10000000,0x00000000,0x00000000,0x00100000,0x00000000},
-/* xxxxxxx */{0x05554000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x05554000,0x00000000,0x00000000,0x00000000},
-/* x x x */{0x10101000,0x00000000,0x00000000,0x00001000,0x00000000,0x10000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00100000},
-/* x x x */{0x10101000,0x00000000,0x00000000,0x00001000,0x00000000,0x10000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00100000},
-/* x x x */{0x10101000,0x00000000,0x00000000,0x00001000,0x00000000,0x10000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00100000},
-/* x x x x */{0x10101100,0x00000000,0x00000000,0x00001000,0x00000000,0x10000000,0x00000000,0x00000000,0x00000100,0x00000000,0x00100000},
-/* xxxxxxx x */{0x05554100,0x00000000,0x00000000,0x00000000,0x05554000,0x00000000,0x00000000,0x00000000,0x00000100,0x00000000,0x00000000},
-/* x */{0x00000400,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000400,0x00000000,0x00000000}
-},{ /* alphanumeric display characters (reversed comma with period) */
-/* xxxxxxx */{0x05554000,0x05554000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
-/* xx x xx */{0x14105000,0x00000000,0x00001000,0x00000000,0x00000000,0x00000000,0x10000000,0x00000000,0x00000000,0x04000000,0x00100000,0x00004000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
-/* x x x x x */{0x11111000,0x00000000,0x00001000,0x00000000,0x00000000,0x00000000,0x10000000,0x00000000,0x00000000,0x01000000,0x00100000,0x00010000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
-/* x x x x x */{0x11111000,0x00000000,0x00001000,0x00000000,0x00000000,0x00000000,0x10000000,0x00000000,0x00000000,0x01000000,0x00100000,0x00010000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
-/* x xxx x */{0x10541000,0x00000000,0x00001000,0x00000000,0x00000000,0x00000000,0x10000000,0x00000000,0x00000000,0x00400000,0x00100000,0x00040000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
-/* xxx xxx */{0x05454000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x05400000,0x00000000,0x00000000,0x00000000,0x00000000,0x00054000,0x00000000,0x00000000,0x00000000,0x00000000},
-/* x xxx x */{0x10541000,0x00000000,0x00000000,0x00001000,0x00000000,0x10000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00040000,0x00100000,0x00400000,0x00000000},
-/* x x x x x */{0x11111000,0x00000000,0x00000000,0x00001000,0x00000000,0x10000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00010000,0x00100000,0x01000000,0x00000000},
-/* x x x x x */{0x11111000,0x00000000,0x00000000,0x00001000,0x00000000,0x10000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00010000,0x00100000,0x01000000,0x00000000},
-/* xx x xx x */{0x14105100,0x00000000,0x00000000,0x00001000,0x00000000,0x10000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00004000,0x00100000,0x04000000,0x00000100},
-/* xxxxxxx x */{0x05554100,0x00000000,0x00000000,0x00000000,0x05554000,0x00000000,0x00000000,0x00000000,0x00000100,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000100},
-/* x */{0x00000400,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000400}
-},{ /* 8 segment LED characters with dots instead of commas */
-/* xxxxxxx */{0x05554000,0x05554000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
-/* x x */{0x10001000,0x00000000,0x00001000,0x00000000,0x00000000,0x00000000,0x10000000,0x00000000,0x00000000},
-/* x x */{0x10001000,0x00000000,0x00001000,0x00000000,0x00000000,0x00000000,0x10000000,0x00000000,0x00000000},
-/* x x */{0x10001000,0x00000000,0x00001000,0x00000000,0x00000000,0x00000000,0x10000000,0x00000000,0x00000000},
-/* x x */{0x10001000,0x00000000,0x00001000,0x00000000,0x00000000,0x00000000,0x10000000,0x00000000,0x00000000},
-/* xxxxxxx */{0x05554000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x05554000,0x00000000},
-/* x x */{0x10001000,0x00000000,0x00000000,0x00001000,0x00000000,0x10000000,0x00000000,0x00000000,0x00000000},
-/* x x */{0x10001000,0x00000000,0x00000000,0x00001000,0x00000000,0x10000000,0x00000000,0x00000000,0x00000000},
-/* x x */{0x10001000,0x00000000,0x00000000,0x00001000,0x00000000,0x10000000,0x00000000,0x00000000,0x00000000},
-/* x x */{0x10001000,0x00000000,0x00000000,0x00001000,0x00000000,0x10000000,0x00000000,0x00000000,0x00000000},
-/* xxxxxxx x */{0x05554100,0x00000000,0x00000000,0x00000000,0x05554000,0x00000000,0x00000000,0x00000000,0x00000100},
-/* */{0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000}
-}};
-static tSegRow segSize2[3][12] = { /* without commas */
-{ /* alphanumeric display characters */
-/* all 0001 0002 0004 0008 0010 0020 0040 0080 0100 0200 0400 0800 1000 2000 4000 8000 */
-/* xxxxxxx */{0x05554000,0x05554000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
-/* xx x xx */{0x14105000,0x00000000,0x00001000,0x00000000,0x00000000,0x00000000,0x10000000,0x00000000,0x00000000,0x04000000,0x00100000,0x00004000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
-/* x x x x x */{0x11111000,0x00000000,0x00001000,0x00000000,0x00000000,0x00000000,0x10000000,0x00000000,0x00000000,0x01000000,0x00100000,0x00010000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
-/* x x x x x */{0x11111000,0x00000000,0x00001000,0x00000000,0x00000000,0x00000000,0x10000000,0x00000000,0x00000000,0x01000000,0x00100000,0x00010000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
-/* x xxx x */{0x10541000,0x00000000,0x00001000,0x00000000,0x00000000,0x00000000,0x10000000,0x00000000,0x00000000,0x00400000,0x00100000,0x00040000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
-/* xxx xxx */{0x05454000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x05400000,0x00000000,0x00000000,0x00000000,0x00000000,0x00054000,0x00000000,0x00000000,0x00000000,0x00000000},
-/* x xxx x */{0x10541000,0x00000000,0x00000000,0x00001000,0x00000000,0x10000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00040000,0x00100000,0x00400000,0x00000000},
-/* x x x x x */{0x11111000,0x00000000,0x00000000,0x00001000,0x00000000,0x10000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00010000,0x00100000,0x01000000,0x00000000},
-/* x x x x x */{0x11111000,0x00000000,0x00000000,0x00001000,0x00000000,0x10000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00010000,0x00100000,0x01000000,0x00000000},
-/* xx x xx */{0x14105000,0x00000000,0x00000000,0x00001000,0x00000000,0x10000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00004000,0x00100000,0x04000000,0x00000000},
-/* xxxxxxx */{0x05554000,0x00000000,0x00000000,0x00000000,0x05554000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
-/* */{0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000}
-},{ /* 7 segment LED characters */
-/* xxxxxxx */{0x05554000,0x05554000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
-/* x x */{0x10001000,0x00000000,0x00001000,0x00000000,0x00000000,0x00000000,0x10000000,0x00000000},
-/* x x */{0x10001000,0x00000000,0x00001000,0x00000000,0x00000000,0x00000000,0x10000000,0x00000000},
-/* x x */{0x10001000,0x00000000,0x00001000,0x00000000,0x00000000,0x00000000,0x10000000,0x00000000},
-/* x x */{0x10001000,0x00000000,0x00001000,0x00000000,0x00000000,0x00000000,0x10000000,0x00000000},
-/* xxxxxxx */{0x05554000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x05554000},
-/* x x */{0x10001000,0x00000000,0x00000000,0x00001000,0x00000000,0x10000000,0x00000000,0x00000000},
-/* x x */{0x10001000,0x00000000,0x00000000,0x00001000,0x00000000,0x10000000,0x00000000,0x00000000},
-/* x x */{0x10001000,0x00000000,0x00000000,0x00001000,0x00000000,0x10000000,0x00000000,0x00000000},
-/* x x */{0x10001000,0x00000000,0x00000000,0x00001000,0x00000000,0x10000000,0x00000000,0x00000000},
-/* xxxxxxx */{0x05554000,0x00000000,0x00000000,0x00000000,0x05554000,0x00000000,0x00000000,0x00000000},
-/* */{0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000}
-},{ /* 9 segment LED characters */
-/* xxxxxxx */{0x05554000,0x05554000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
-/* x x x */{0x10101000,0x00000000,0x00001000,0x00000000,0x00000000,0x00000000,0x10000000,0x00000000,0x00000000,0x00100000,0x00000000},
-/* x x x */{0x10101000,0x00000000,0x00001000,0x00000000,0x00000000,0x00000000,0x10000000,0x00000000,0x00000000,0x00100000,0x00000000},
-/* x x x */{0x10101000,0x00000000,0x00001000,0x00000000,0x00000000,0x00000000,0x10000000,0x00000000,0x00000000,0x00100000,0x00000000},
-/* x x x */{0x10101000,0x00000000,0x00001000,0x00000000,0x00000000,0x00000000,0x10000000,0x00000000,0x00000000,0x00100000,0x00000000},
-/* xxxxxxx */{0x05554000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x05554000,0x00000000,0x00000000,0x00000000},
-/* x x x */{0x10101000,0x00000000,0x00000000,0x00001000,0x00000000,0x10000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00100000},
-/* x x x */{0x10101000,0x00000000,0x00000000,0x00001000,0x00000000,0x10000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00100000},
-/* x x x */{0x10101000,0x00000000,0x00000000,0x00001000,0x00000000,0x10000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00100000},
-/* x x x */{0x10101000,0x00000000,0x00000000,0x00001000,0x00000000,0x10000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00100000},
-/* xxxxxxx */{0x05554000,0x00000000,0x00000000,0x00000000,0x05554000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
-/* */{0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000}
-}};
-static tSegRow segSize3C[3][8] = {
-{ /* alphanumeric display characters */
-{0} /* not possible */
-},{ /* 8 segment LED characters with commas */
-/* all 0001 0002 0004 0008 0010 0020 0040 0080 0100 0200 */
-/* xxx */{0x05400000,0x05400000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
-/* x x */{0x10100000,0x00000000,0x00100000,0x00000000,0x00000000,0x00000000,0x10000000,0x00000000,0x00000000},
-/* x x */{0x10100000,0x00000000,0x00100000,0x00000000,0x00000000,0x00000000,0x10000000,0x00000000,0x00000000},
-/* xxx */{0x05400000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x05400000,0x00000000},
-/* x x */{0x10100000,0x00000000,0x00000000,0x00100000,0x00000000,0x10000000,0x00000000,0x00000000,0x00000000},
-/* x x */{0x10100000,0x00000000,0x00000000,0x00100000,0x00000000,0x10000000,0x00000000,0x00000000,0x00000000},
-/* xxx x */{0x05410000,0x00000000,0x00000000,0x00000000,0x05400000,0x00000000,0x00000000,0x00000000,0x00010000},
-/* x */{0x00040000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00040000}
-},{ /* 10 segment LED characters with commas */
-/* xxx */{0x05400000,0x05400000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
-/* x x x */{0x11100000,0x00000000,0x00100000,0x00000000,0x00000000,0x00000000,0x10000000,0x00000000,0x00000000,0x01000000,0x00000000},
-/* x x x */{0x11100000,0x00000000,0x00100000,0x00000000,0x00000000,0x00000000,0x10000000,0x00000000,0x00000000,0x01000000,0x00000000},
-/* xxx */{0x05400000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x05400000,0x00000000,0x00000000,0x00000000},
-/* x x x */{0x11100000,0x00000000,0x00000000,0x00100000,0x00000000,0x10000000,0x00000000,0x00000000,0x00000000,0x00000000,0x01000000},
-/* x x x */{0x11100000,0x00000000,0x00000000,0x00100000,0x00000000,0x10000000,0x00000000,0x00000000,0x00000000,0x00000000,0x01000000},
-/* xxx x */{0x05410000,0x00000000,0x00000000,0x00000000,0x05400000,0x00000000,0x00000000,0x00000000,0x00010000,0x00000000,0x00000000},
-/* x */{0x00040000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00040000,0x00000000,0x00000000}
-}};
-static tSegRow segSize3[3][8] = {
-{ /* alphanumeric display characters */
-{0} /* not possible */
-},{ /* 8 segment LED characters without commas */
-/* all 0001 0002 0004 0008 0010 0020 0040 0080 0100 0200 */
-/* xxx */{0x05400000,0x05400000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
-/* x x */{0x10100000,0x00000000,0x00100000,0x00000000,0x00000000,0x00000000,0x10000000,0x00000000},
-/* x x */{0x10100000,0x00000000,0x00100000,0x00000000,0x00000000,0x00000000,0x10000000,0x00000000},
-/* xxx */{0x05400000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x05400000},
-/* x x */{0x10100000,0x00000000,0x00000000,0x00100000,0x00000000,0x10000000,0x00000000,0x00000000},
-/* x x */{0x10100000,0x00000000,0x00000000,0x00100000,0x00000000,0x10000000,0x00000000,0x00000000},
-/* xxx */{0x05400000,0x00000000,0x00000000,0x00000000,0x05400000,0x00000000,0x00000000,0x00000000},
-/* */{0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000}
-},{ /* 10 segment LED characters without commas */
-/* xxx */{0x05400000,0x05400000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
-/* x x x */{0x11100000,0x00000000,0x00100000,0x00000000,0x00000000,0x00000000,0x10000000,0x00000000,0x00000000,0x01000000,0x00000000},
-/* x x x */{0x11100000,0x00000000,0x00100000,0x00000000,0x00000000,0x00000000,0x10000000,0x00000000,0x00000000,0x01000000,0x00000000},
-/* xxx */{0x05400000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x05400000,0x00000000,0x00000000,0x00000000},
-/* x x x */{0x11100000,0x00000000,0x00000000,0x00100000,0x00000000,0x10000000,0x00000000,0x00000000,0x00000000,0x00000000,0x01000000},
-/* x x x */{0x11100000,0x00000000,0x00000000,0x00100000,0x00000000,0x10000000,0x00000000,0x00000000,0x00000000,0x00000000,0x01000000},
-/* xxx */{0x05400000,0x00000000,0x00000000,0x00000000,0x05400000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
-/* */{0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000}
-}};
-static tSegRow segSize1S[1][20] = { /* 16 segment displays without commas but split top & bottom lines */
-{ /* alphanumeric display characters */
-/* all 0001 0002 0004 0008 0010 0020 0040 0080 0100 0200 0400 0800 1000 2000 4000 8000 */
-/* 11111311111 */{0x00557554,0x00557000,0x00003554,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
-/* 1133331333311 */{0x017fdff5,0x003fc000,0x00003ff0,0x00000001,0x00000000,0x00000000,0x00000000,0x00000000,0x01000000,0x00400000,0x00001000,0x00000004,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
-/* 11 1 1 1 */{0x01401011,0x00000000,0x00000000,0x00000001,0x00000000,0x00000000,0x00000000,0x00000000,0x01000000,0x00400000,0x00001000,0x00000010,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
-/* 31 1 31 1 31 */{0x0d10d04d,0x00000000,0x00000000,0x0000000d,0x00000000,0x00000000,0x00000000,0x00000000,0x0d000000,0x00100000,0x0000d000,0x00000040,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
-/* 32 1 32 1 32 */{0x0e10e04e,0x00000000,0x00000000,0x0000000e,0x00000000,0x00000000,0x00000000,0x00000000,0x0e000000,0x00100000,0x0000e000,0x00000040,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
-/* 22 1 22 1 22 */{0x0a04a10a,0x00000000,0x00000000,0x0000000a,0x00000000,0x00000000,0x00000000,0x00000000,0x0a000000,0x00040000,0x0000a000,0x00000100,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
-/* 23 1 231 23 */{0x0b04b40b,0x00000000,0x00000000,0x0000000b,0x00000000,0x00000000,0x00000000,0x00000000,0x0b000000,0x00040000,0x0000b000,0x00000400,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
-/* 13 1131 13 */{0x07017407,0x00000000,0x00000000,0x00000007,0x00000000,0x00000000,0x00000000,0x00000000,0x07000000,0x00010000,0x00007000,0x00000400,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
-/* 1333311133331 */{0x07fd5ff4,0x00000000,0x00000000,0x00000004,0x00000000,0x00000000,0x00000000,0x00000000,0x04000000,0x00010000,0x00004000,0x00001000,0x00000ff0,0x00000000,0x00000000,0x00000000,0x03fc0000},
-/* 3111113111113 */{0x0d55d55c,0x00000000,0x00000000,0x0000000c,0x0000000c,0x00000000,0x00000000,0x0c000000,0x0c000000,0x0000c000,0x0000c000,0x0000c000,0x0000d550,0x0000c000,0x0000c000,0x0000c000,0x0155c000},
-/* 1333311133331 */{0x07fd5ff4,0x00000000,0x00000000,0x00000000,0x00000004,0x00000000,0x00000000,0x04000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000ff0,0x00001000,0x00004000,0x00010000,0x03fc0000},
-/* 31 1311 31 */{0x34075034,0x00000000,0x00000000,0x00000000,0x00000034,0x00000000,0x00000000,0x34000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00001000,0x00034000,0x00040000,0x00000000},
-/* 32 132 1 32 */{0x38078438,0x00000000,0x00000000,0x00000000,0x00000038,0x00000000,0x00000000,0x38000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000400,0x00038000,0x00040000,0x00000000},
-/* 22 1 22 1 22 */{0x28128428,0x00000000,0x00000000,0x00000000,0x00000028,0x00000000,0x00000000,0x28000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000400,0x00028000,0x00100000,0x00000000},
-/* 23 1 23 1 23 */{0x2c42c12c,0x00000000,0x00000000,0x00000000,0x0000002c,0x00000000,0x00000000,0x2c000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000100,0x0002c000,0x00400000,0x00000000},
-/* 13 1 13 1 13 */{0x1c41c11c,0x00000000,0x00000000,0x00000000,0x0000001c,0x00000000,0x00000000,0x1c000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000100,0x0001c000,0x00400000,0x00000000},
-/* 1 1 1 11 */{0x11010050,0x00000000,0x00000000,0x00000000,0x00000010,0x00000000,0x00000000,0x10000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000040,0x00010000,0x01000000,0x00000000},
-/* 1133331333311 */{0x17fdff50,0x00000000,0x00000000,0x00000000,0x00000010,0x0003ff00,0x03fc0000,0x10000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000040,0x00010000,0x04000000,0x00000000},
-/* 11111311111 */{0x05575540,0x00000000,0x00000000,0x00000000,0x00000000,0x00035540,0x05570000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
-/* */{0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000}
-}};
-static tSegRow segSize2S[1][12] = { /* 16 segment displays without commas but split top & bottom lines */
-{ /* alphanumeric display characters */
-/* all 0001 0002 0004 0008 0010 0020 0040 0080 0100 0200 0400 0800 1000 2000 4000 8000 */
-/* xxxxxxx */{0x05754000,0x05700000,0x00354000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
-/* xx x xx */{0x14105000,0x00000000,0x00000000,0x00001000,0x00000000,0x00000000,0x00000000,0x00000000,0x10000000,0x04000000,0x00100000,0x00004000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
-/* x x x x x */{0x11111000,0x00000000,0x00000000,0x00001000,0x00000000,0x00000000,0x00000000,0x00000000,0x10000000,0x01000000,0x00100000,0x00010000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
-/* x x x x x */{0x11111000,0x00000000,0x00000000,0x00001000,0x00000000,0x00000000,0x00000000,0x00000000,0x10000000,0x01000000,0x00100000,0x00010000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
-/* x xxx x */{0x10541000,0x00000000,0x00000000,0x00001000,0x00000000,0x00000000,0x00000000,0x00000000,0x10000000,0x00400000,0x00100000,0x00040000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
-/* xxx xxx */{0x05454000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00054000,0x00000000,0x00000000,0x00000000,0x05400000},
-/* x xxx x */{0x10541000,0x00000000,0x00000000,0x00000000,0x00001000,0x00000000,0x00000000,0x10000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00040000,0x00100000,0x00400000,0x00000000},
-/* x x x x x */{0x11111000,0x00000000,0x00000000,0x00000000,0x00001000,0x00000000,0x00000000,0x10000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00010000,0x00100000,0x01000000,0x00000000},
-/* x x x x x */{0x11111000,0x00000000,0x00000000,0x00000000,0x00001000,0x00000000,0x00000000,0x10000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00010000,0x00100000,0x01000000,0x00000000},
-/* xx x xx */{0x14105000,0x00000000,0x00000000,0x00000000,0x00001000,0x00000000,0x00000000,0x10000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00004000,0x00100000,0x04000000,0x00000000},
-/* xxxxxxx */{0x05754000,0x00000000,0x00000000,0x00000000,0x00000000,0x00354000,0x05700000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},
-/* */{0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000}
-}};
-
-static tSegData segData[2][16] = {{
- {20,15,&segSize1C[0][0]},/* SEG16 */
- {20,15,&segSize1C[3][0]},/* SEG16R*/
- {20,15,&segSize1C[2][0]},/* SEG10 */
- {20,15,&segSize1[2][0]}, /* SEG9 */
- {20,15,&segSize1C[1][0]},/* SEG8 */
- {20,15,&segSize1C[4][0]},/* SEG8FD */
- {20,15,&segSize1[1][0]}, /* SEG7 */
- {20,15,&segSize1C[1][0]},/* SEG87 */
- {20,15,&segSize1C[1][0]},/* SEG87F */
- {20,15,&segSize1C[2][0]},/* SEG98 */
- {20,15,&segSize1C[2][0]},/* SEG98F */
- {12,11,&segSize2[1][0]}, /* SEG7S */
- {12,11,&segSize2C[1][0]},/* SEG7SC */
- {20,15,&segSize1S[0][0]},/* SEG16S */
- { 2, 2,NULL}, /* DMD */
- { 1, 1,NULL} /* VIDEO */
-},{
- {12,11,&segSize2C[0][0]},/* SEG16 */
- {12,11,&segSize2C[3][0]},/* SEG16R*/
- {12,11,&segSize2C[2][0]},/* SEG10 */
- {12,11,&segSize2[2][0]}, /* SEG9 */
- {12,11,&segSize2C[1][0]},/* SEG8 */
- {12,11,&segSize2C[4][0]},/* SEG8D */
- {12,11,&segSize2[1][0]}, /* SEG7 */
- {12,11,&segSize2C[1][0]},/* SEG87 */
- {12,11,&segSize2C[1][0]},/* SEG87F */
- {12,11,&segSize2C[2][0]},/* SEG98 */
- {12,11,&segSize2C[2][0]},/* SEG98F */
- { 8, 7,&segSize3[1][0]}, /* SEG7S */
- { 8, 7,&segSize3C[1][0]},/* SEG7SC */
- {12,11,&segSize2S[0][0]},/* SEG16S */
- { 1, 1,NULL}, /* DMD */
- { 1, 1,NULL} /* VIDEO */
-}};
-
-/*-------------------
-/ local variables
-/-------------------*/
-static struct {
- core_tSeg lastSeg; // previous segments values
- int displaySize; // 1=compact 2=normal
- tSegData *segData; // segments to use (normal/compact)
- void *timers[5]; // allocated timers
- int flipTimer[4]; // time since flipper was activated (used for EOS simulation)
- UINT8 flipMask; // Flipper bits used for flippers
- int firstSimRow, maxSimRows; // space available for simulator
- int solLog[4];
- int solLogCount;
-} locals;
-
-/*-------------------------------
-/ Initialize the game palette
-/-------------------------------*/
-static PALETTE_INIT(core) {
- const int palSize = sizeof(core_palette)/3;
- unsigned char tmpPalette[sizeof(core_palette)/3][3];
- int rStart = 0xff, gStart = 0xe0, bStart = 0x20;
- int perc66 = 67, perc33 = 33, perc0 = 20;
- int ii;
- float diff;
-
- if ((pmoptions.dmd_red > 0) || (pmoptions.dmd_green > 0) || (pmoptions.dmd_blue > 0)) {
- rStart = pmoptions.dmd_red; gStart = pmoptions.dmd_green; bStart = pmoptions.dmd_blue;
- }
- if ((pmoptions.dmd_perc0 > 0) || (pmoptions.dmd_perc33 > 0) || (pmoptions.dmd_perc66 > 0)) {
- perc66 = pmoptions.dmd_perc66; perc33 = pmoptions.dmd_perc33; perc0 = pmoptions.dmd_perc0;
- }
- memcpy(tmpPalette, core_palette, sizeof(core_palette));
-
- /*-- Autogenerate DMD Color Shades--*/
- tmpPalette[COL_DMDOFF][0] = rStart * perc0 / 100;
- tmpPalette[COL_DMDOFF][1] = gStart * perc0 / 100;
- tmpPalette[COL_DMDOFF][2] = bStart * perc0 / 100;
- tmpPalette[COL_DMD33][0] = rStart * perc33 / 100;
- tmpPalette[COL_DMD33][1] = gStart * perc33 / 100;
- tmpPalette[COL_DMD33][2] = bStart * perc33 / 100;
- tmpPalette[COL_DMD66][0] = rStart * perc66 / 100;
- tmpPalette[COL_DMD66][1] = gStart * perc66 / 100;
- tmpPalette[COL_DMD66][2] = bStart * perc66 / 100;
- tmpPalette[COL_DMDON][0] = rStart;
- tmpPalette[COL_DMDON][1] = gStart;
- tmpPalette[COL_DMDON][2] = bStart;
- /*-- segment display antialias colors --*/
- tmpPalette[COL_SEGAAON1][0] = rStart * 72 / 100;
- tmpPalette[COL_SEGAAON1][1] = gStart * 72 / 100;
- tmpPalette[COL_SEGAAON1][2] = bStart * 72 / 100;
- tmpPalette[COL_SEGAAON2][0] = rStart * 33 / 100;
- tmpPalette[COL_SEGAAON2][1] = gStart * 33 / 100;
- tmpPalette[COL_SEGAAON2][2] = bStart * 33 / 100;
- tmpPalette[COL_SEGAAOFF1][0] = rStart * perc0 * 72 / 10000;
- tmpPalette[COL_SEGAAOFF1][1] = gStart * perc0 * 72 / 10000;
- tmpPalette[COL_SEGAAOFF1][2] = bStart * perc0 * 72 / 10000;
- tmpPalette[COL_SEGAAOFF2][0] = rStart * perc0 * 33 / 10000;
- tmpPalette[COL_SEGAAOFF2][1] = gStart * perc0 * 33 / 10000;
- tmpPalette[COL_SEGAAOFF2][2] = bStart * perc0 * 33 / 10000;
-
- /*-- generate 16 shades of the segment color for all antialiased segments --*/
- diff = (float)(100 - perc0) / 15.0;
- for (ii = 0; ii < 16; ii++) {
- tmpPalette[palSize-16+ii][0] = rStart * (perc0 + diff * ii) / 100;
- tmpPalette[palSize-16+ii][1] = gStart * (perc0 + diff * ii) / 100;
- tmpPalette[palSize-16+ii][2] = bStart * (perc0 + diff * ii) / 100;
- tmpPalette[palSize-32+ii][0] = rStart * (perc0 + diff * ii) * 72 / 10000;
- tmpPalette[palSize-32+ii][1] = gStart * (perc0 + diff * ii) * 72 / 10000;
- tmpPalette[palSize-32+ii][2] = bStart * (perc0 + diff * ii) * 72 / 10000;
- tmpPalette[palSize-48+ii][0] = rStart * (perc0 + diff * ii) * 33 / 10000;
- tmpPalette[palSize-48+ii][1] = gStart * (perc0 + diff * ii) * 33 / 10000;
- tmpPalette[palSize-48+ii][2] = bStart * (perc0 + diff * ii) * 33 / 10000;
- }
-
-//for (int i = 0; i < palSize; i++) printf("Col %d: %02x %02x %02x\n", i, tmpPalette[i][0],tmpPalette[i][1],tmpPalette[i][2]);
-
- rStart = tmpPalette[COL_DMDOFF][0];
- gStart = tmpPalette[COL_DMDOFF][1];
- bStart = tmpPalette[COL_DMDOFF][2];
-
- /*-- Autogenerate Dark Playfield Lamp Colors --*/
- for (ii = 0; ii < COL_LAMPCOUNT; ii++) { /* Reduce by 75% */
- tmpPalette[COL_LAMP+COL_LAMPCOUNT+ii][0] = (tmpPalette[COL_LAMP+ii][0] * 25) / 100;
- tmpPalette[COL_LAMP+COL_LAMPCOUNT+ii][1] = (tmpPalette[COL_LAMP+ii][1] * 25) / 100;
- tmpPalette[COL_LAMP+COL_LAMPCOUNT+ii][2] = (tmpPalette[COL_LAMP+ii][2] * 25) / 100;
- }
-
- if (pmoptions.dmd_antialias)
- { /*-- Autogenerate antialias colours --*/
- int rStep, gStep, bStep;
- rStart = gStart = bStart = 0;
-
- rStep = (tmpPalette[COL_DMDON][0] * pmoptions.dmd_antialias / 100 - rStart) / 6;
- gStep = (tmpPalette[COL_DMDON][1] * pmoptions.dmd_antialias / 100 - gStart) / 6;
- bStep = (tmpPalette[COL_DMDON][2] * pmoptions.dmd_antialias / 100 - bStart) / 6;
-
- for (ii = 1; ii < COL_DMDAACOUNT; ii++) { // first is black
- tmpPalette[COL_DMDAA+ii][0] = rStart;
- tmpPalette[COL_DMDAA+ii][1] = gStart;
- tmpPalette[COL_DMDAA+ii][2] = bStart;
- rStart += rStep; gStart += gStep; bStart += bStep;
- }
- }
-#if MAMEVER >= 6100
- for (ii = 0; ii < sizeof(tmpPalette)/3; ii++)
- palette_set_color(ii, tmpPalette[ii][0], tmpPalette[ii][1], tmpPalette[ii][2]);
-#else /* MAMEVER */
- memcpy(palette, tmpPalette, sizeof(tmpPalette));
-#endif /* MAMEVER */
-}
-
-/*-----------------------------------
-/ Generic DMD display handler
-/------------------------------------*/
-void video_update_core_dmd(struct mame_bitmap *bitmap, const struct rectangle *cliprect, tDMDDot dotCol, const struct core_dispLayout *layout) {
- UINT32 *dmdColor = &CORE_COLOR(COL_DMDOFF);
- UINT32 *aaColor = &CORE_COLOR(COL_DMDAA);
- BMTYPE **lines = ((BMTYPE **)bitmap->line) + (layout->top*locals.displaySize);
- int noaa = !pmoptions.dmd_antialias || (layout->type & CORE_DMDNOAA);
- int ii, jj;
-
- memset(&dotCol[layout->start+1][0], 0, sizeof(dotCol[0][0])*layout->length+1);
- memset(&dotCol[0][0], 0, sizeof(dotCol[0][0])*layout->length+1); // clear above
- for (ii = 0; ii < layout->start+1; ii++) {
- BMTYPE *line = (*lines++) + (layout->left*locals.displaySize);
- dotCol[ii][layout->length] = 0;
- if (ii > 0) {
- for (jj = 0; jj < layout->length; jj++) {
- *line++ = dmdColor[dotCol[ii][jj]];
- if (locals.displaySize > 1)
- *line++ = noaa ? 0 : aaColor[dotCol[ii][jj] + dotCol[ii][jj+1]];
- }
- }
- if (locals.displaySize > 1) {
- int col1 = dotCol[ii][0] + dotCol[ii+1][0];
- line = (*lines++) + (layout->left*locals.displaySize);
- for (jj = 0; jj < layout->length; jj++) {
- int col2 = dotCol[ii][jj+1] + dotCol[ii+1][jj+1];
- *line++ = noaa ? 0 : aaColor[col1];
- *line++ = noaa ? 0 : aaColor[2*(col1 + col2)/5];
- col1 = col2;
- }
- }
- }
- osd_mark_dirty(layout->left*locals.displaySize,layout->top*locals.displaySize,
- (layout->left+layout->length)*locals.displaySize,(layout->top+layout->start)*locals.displaySize);
-}
-#ifdef VPINMAME
-# define inRect(r,l,t,w,h) FALSE
-#else /* VPINMAME */
-INLINE int inRect(const struct rectangle *r, int left, int top, int width, int height) {
- return (r->max_x >= left) && (r->max_y >= top) &&
- (r->min_x <= left + width) && (r->min_y <= top + height);
-}
-#endif /* VPINMAME */
-
-/*-----------------------------------
-/ Generic segment display handler
-/------------------------------------*/
-static void updateDisplay(struct mame_bitmap *bitmap, const struct rectangle *cliprect,
- const struct core_dispLayout *layout, int *pos) {
- if (layout == NULL) { DBGLOG(("gen_refresh without LCD layout\n")); return; }
- for (; layout->length; layout += 1) {
- if (layout->type == CORE_IMPORT)
- { updateDisplay(bitmap, cliprect, (const struct core_dispLayout *)layout->ptr, pos); continue; }
- if (layout->ptr)
- if (((ptPinMAMEvidUpdate)(layout->ptr))(bitmap,cliprect,layout) == 0) continue;
- {
- int left = layout->left * (locals.segData[layout->type & CORE_SEGMASK].cols+1) / 2;
- int top = layout->top * (locals.segData[0].rows + 1) / 2;
- int ii = layout->length;
- UINT16 *seg = &coreGlobals.segments[layout->start].w;
- UINT16 *lastSeg = &locals.lastSeg[layout->start].w;
- int step = (layout->type & CORE_SEGREV) ? -1 : 1;
-
- if (step < 0) { seg += ii-1; lastSeg += ii-1; }
- while (ii--) {
- UINT16 tmpSeg = *seg;
- int tmpType = layout->type & CORE_SEGMASK;
-
-#ifdef VPINMAME
- //SJE: Force an update of the segments ALWAYS in VPM - corrects Pause Display Bugs
- if(1) {
-#else
- if ((tmpSeg != *lastSeg) ||
- inRect(cliprect,left,top,locals.segData[layout->type & 0x0f].cols,locals.segData[layout->type & 0x0f].rows)) {
-#endif
- tmpSeg >>= (layout->type & CORE_SEGHIBIT) ? 8 : 0;
-
- switch (tmpType) {
- case CORE_SEG87: case CORE_SEG87F:
- if ((ii > 0) && (ii % 3 == 0)) { // Handle Comma
- if ((tmpType == CORE_SEG87F) && tmpSeg) tmpSeg |= 0x80;
- tmpType = CORE_SEG8;
- } else
- tmpType = CORE_SEG7;
- break;
- case CORE_SEG98: case CORE_SEG98F:
- tmpSeg |= (tmpSeg & 0x100)<<1;
- if ((ii > 0) && (ii % 3 == 0)) { // Handle Comma
- if ((tmpType == CORE_SEG98F) && tmpSeg) tmpSeg |= 0x80;
- tmpType = CORE_SEG10;
- } else
- tmpType = CORE_SEG9;
- break;
- case CORE_SEG9:
- tmpSeg |= (tmpSeg & 0x100)<<1;
- break;
- }
- if (!pmoptions.dmd_only || !layout->ptr)
- drawChar(bitmap, top, left, tmpSeg, tmpType, coreGlobals.segDim[*pos] > 15 ? 15 : coreGlobals.segDim[*pos]);
- coreGlobals.drawSeg[*pos] = tmpSeg;
- }
- (*pos)++;
- left += locals.segData[layout->type & 0x0f].cols+1;
- seg += step; lastSeg += step;
- }
- }
- }
-}
-
-VIDEO_UPDATE(core_gen) {
- int count = 0;
- updateDisplay(bitmap, cliprect, core_gameData->lcdLayout, &count);
- memcpy(locals.lastSeg, coreGlobals.segments, sizeof(locals.lastSeg));
- video_update_core_status(bitmap,cliprect);
-}
-
-/*---------------------
-/ Update all switches
-/----------------------*/
-void core_updateSw(int flipEn) {
- /*-- handle flippers--*/
- const int flip = core_gameData->hw.flippers;
- const int flipSwCol = (core_gameData->gen & (GEN_GTS3 | GEN_ALVG)) ? 15 : CORE_FLIPPERSWCOL;
- int inports[CORE_MAXPORTS];
- UINT8 swFlip;
- int ii;
-
- if (g_fHandleKeyboard) {
- for (ii = 0; ii < CORE_COREINPORT+(coreData->coreDips+31)/16; ii++)
- inports[ii] = readinputport(ii);
-
- /*-- buttons --*/
- swFlip = 0;
- if (inports[CORE_FLIPINPORT] & CORE_LLFLIPKEY) swFlip |= CORE_SWLLFLIPBUTBIT;
- if (inports[CORE_FLIPINPORT] & CORE_LRFLIPKEY) swFlip |= CORE_SWLRFLIPBUTBIT;
- if (locals.flipMask & CORE_SWULFLIPBUTBIT) { /* have UL switch */
- if (flip & FLIP_BUT(FLIP_UL))
- { if (inports[CORE_FLIPINPORT] & CORE_ULFLIPKEY) swFlip |= CORE_SWULFLIPBUTBIT; }
- else
- { if (inports[CORE_FLIPINPORT] & CORE_LLFLIPKEY) swFlip |= CORE_SWULFLIPBUTBIT; }
- }
- if (locals.flipMask & CORE_SWURFLIPBUTBIT) { /* have UR switch */
- if (flip & FLIP_BUT(FLIP_UR))
- { if (inports[CORE_FLIPINPORT] & CORE_URFLIPKEY) swFlip |= CORE_SWURFLIPBUTBIT; }
- else
- { if (inports[CORE_FLIPINPORT] & CORE_LRFLIPKEY) swFlip |= CORE_SWURFLIPBUTBIT; }
- }
- }
- else
- swFlip = (coreGlobals.swMatrix[flipSwCol] ^ coreGlobals.invSw[flipSwCol]) & (CORE_SWULFLIPBUTBIT|CORE_SWURFLIPBUTBIT|CORE_SWLLFLIPBUTBIT|CORE_SWLRFLIPBUTBIT);
-
- /*-- set switches in matrix for non-fliptronic games --*/
- if (FLIP_SWL(flip)) core_setSw(FLIP_SWL(flip), swFlip & CORE_SWLLFLIPBUTBIT);
- if (FLIP_SWR(flip)) core_setSw(FLIP_SWR(flip), swFlip & CORE_SWLRFLIPBUTBIT);
-
- /*-- fake solenoids if not CPU controlled --*/
- if ((flip & FLIP_SOL(FLIP_L)) == 0) {
- coreGlobals.solenoids2 &= 0xffffff00;
- if (flipEn) {
- if (swFlip & CORE_SWLLFLIPBUTBIT) coreGlobals.solenoids2 |= CORE_LLFLIPSOLBITS;
- if (swFlip & CORE_SWLRFLIPBUTBIT) coreGlobals.solenoids2 |= CORE_LRFLIPSOLBITS;
- }
- }
-
- /*-- EOS switches --*/
- if (locals.flipMask & CORE_SWULFLIPEOSBIT) {
- if (core_getSol(sULFlip)) locals.flipTimer[0] += 1;
- else locals.flipTimer[0] = 0;
- if (locals.flipTimer[0] >= CORE_FLIPSTROKETIME) swFlip |= CORE_SWULFLIPEOSBIT;
- }
- if (locals.flipMask & CORE_SWURFLIPEOSBIT) {
- if (core_getSol(sURFlip)) locals.flipTimer[1] += 1;
- else locals.flipTimer[1] = 0;
- if (locals.flipTimer[1] >= CORE_FLIPSTROKETIME) swFlip |= CORE_SWURFLIPEOSBIT;
- }
- if (locals.flipMask & CORE_SWLLFLIPEOSBIT) {
- if (core_getSol(sLLFlip)) locals.flipTimer[2] += 1;
- else locals.flipTimer[2] = 0;
- if (locals.flipTimer[2] >= CORE_FLIPSTROKETIME) swFlip |= CORE_SWLLFLIPEOSBIT;
- }
- if (locals.flipMask & CORE_SWLRFLIPEOSBIT) {
- if (core_getSol(sLRFlip)) locals.flipTimer[3] += 1;
- else locals.flipTimer[3] = 0;
- if (locals.flipTimer[3] >= CORE_FLIPSTROKETIME) swFlip |= CORE_SWLRFLIPEOSBIT;
- }
- coreGlobals.swMatrix[flipSwCol] = (coreGlobals.swMatrix[flipSwCol] & ~locals.flipMask) |
- ((swFlip ^ coreGlobals.invSw[flipSwCol]) & locals.flipMask);
-
- /*-- update core dependent switches --*/
- if (coreData->updSw) coreData->updSw(g_fHandleKeyboard ? inports : NULL);
-
- /*-- update game dependent switches --*/
- if (g_fHandleMechanics) {
- if (core_gameData->hw.handleMech) core_gameData->hw.handleMech(g_fHandleMechanics);
- }
- /*-- Run simulator --*/
- if (coreGlobals.simAvail)
- sim_run(inports, CORE_COREINPORT+(coreData->coreDips+31)/16,
- (inports[CORE_SIMINPORT] & SIM_SWITCHKEY) == 0,
- (SIM_BALLS(inports[CORE_SIMINPORT])));
- { /*-- check changed solenoids --*/
- UINT64 allSol = core_getAllSol();
- UINT64 chgSol = (allSol ^ coreGlobals.lastSol) & vp_getSolMask64();
-
- if (chgSol) {
- coreGlobals.lastSol = allSol;
- for (ii = 1; ii < CORE_FIRSTCUSTSOL+core_gameData->hw.custSol; ii++) {
- if (chgSol & 0x01) {
- /*-- solenoid has changed state --*/
- OnSolenoid(ii, allSol & 0x01);
- /*-- log solenoid number on the display (except flippers) --*/
- if ((!pmoptions.dmd_only && (allSol & 0x01)) &&
- ((ii < CORE_FIRSTLFLIPSOL) || (ii >= CORE_FIRSTSIMSOL))) {
- locals.solLog[locals.solLogCount] = ii;
- core_textOutf(Machine->visible_area.max_x - 12*8,0,BLACK,"%2d %2d %2d %2d",
- locals.solLog[(locals.solLogCount+1) & 3],
- locals.solLog[(locals.solLogCount+2) & 3],
- locals.solLog[(locals.solLogCount+3) & 3],
- locals.solLog[(locals.solLogCount+0) & 3]);
- locals.solLogCount = (locals.solLogCount + 1) & 3;
- }
- if (coreGlobals.soundEn)
- proc_mechsounds(ii, allSol & 0x01);
- }
- chgSol >>= 1;
- allSol >>= 1;
- }
- }
- }
-
- /*-- check if we should use simulator keys --*/
- if (g_fHandleKeyboard &&
- (!coreGlobals.simAvail || inports[CORE_SIMINPORT] & SIM_SWITCHKEY)) {
- /*-- simulator keys disabled, use row+column keys --*/
- static int lastRow = 0, lastCol = 0;
- int row = 0, col = 0;
-
- if (((inports[CORE_MANSWINPORT] & CORE_MANSWCOLUMNS) == 0) ||
- ((inports[CORE_MANSWINPORT] & CORE_MANSWROWS) == 0))
- lastRow = lastCol = 0;
- else {
- int bit = 0x0101;
-
- for (ii = 0; ii < 8; ii++) {
- if (inports[CORE_MANSWINPORT] & CORE_MANSWCOLUMNS & bit) col = ii+1;
- if (inports[CORE_MANSWINPORT] & CORE_MANSWROWS & bit) row = ii+1;
- bit <<= 1;
- }
- if ((col != lastCol) || (row != lastRow)) {
- coreGlobals.swMatrix[col] ^= (1<<(row-1));
- lastCol = col; lastRow = row;
- }
- }
- }
-
-#ifdef MAME_DEBUG /* Press W and E at the same time to insert a mark in logfile */
- if (g_fHandleKeyboard && ((inports[CORE_MANSWINPORT] & 0x06) == 0x06))
- logerror("\nLogfile Mark\n");
-#endif /* MAME_DEBUG */
-}
-
-/*--------------------------
-/ Write text on the screen
-/---------------------------*/
-void core_textOut(char *buf, int length, int x, int y, int color) {
- if (y < locals.maxSimRows) {
- int ii, l;
-
- l = strlen(buf);
- for (ii = 0; ii < length; ii++) {
- char c = (ii >= l) ? ' ' : buf[ii];
-
- drawgfx(Machine->scrbitmap, Machine->uifont, c, color-1, 0, 0,
- x + ii * Machine->uifont->width, y+locals.firstSimRow, 0,
- TRANSPARENCY_NONE, 0);
- }
- }
-}
-
-/*-----------------------------------
-/ Write formatted text on the screen
-/------------------------------------*/
-void CLIB_DECL core_textOutf(int x, int y, int color, const char *text, ...) {
- va_list arg;
- if (y < locals.maxSimRows) {
- char buf[100];
- char *bufPtr = buf;
-
- va_start(arg, text); vsprintf(buf, text, arg); va_end(arg);
-
- while (*bufPtr) {
- drawgfx(Machine->scrbitmap, Machine->uifont, *bufPtr++, color-1, 0, 0,
- x, y+locals.firstSimRow, 0, TRANSPARENCY_NONE, 0);
- x += Machine->uifont->width;
- }
- }
-}
-
-/*--------------------------------------------
-/ Draw status display
-/ Lamps, Switches, Solenoids, Diagnostic LEDs
-/---------------------------------------------*/
-static VIDEO_UPDATE(core_status) {
- BMTYPE **lines = (BMTYPE **)bitmap->line;
- int startRow = 0, nextCol = 0, thisCol = 0;
- int ii, jj, bits;
- BMTYPE dotColor[2];
-
- /*-- anything to do ? --*/
- if ((pmoptions.dmd_only) || (locals.maxSimRows < 16) ||
- (coreGlobals.soundEn && (!manual_sound_commands(bitmap))))
- return;
-
- dotColor[0] = CORE_COLOR(COL_DMDOFF); dotColor[1] = CORE_COLOR(COL_DMDON);
- /*-- Draw lamps --*/
- if ((core_gameData->hw.lampData) &&
- (startRow + core_gameData->hw.lampData->startpos.x + core_gameData->hw.lampData->size.x < locals.maxSimRows)) {
- core_tLampDisplay *drawData = core_gameData->hw.lampData;
- int startx = drawData->startpos.x;
- int starty = drawData->startpos.y + thisCol;
- BMTYPE **line = &lines[locals.firstSimRow + startRow + startx];
- int num = 0;
- int qq;
-
- for (ii = 0; ii < CORE_CUSTLAMPCOL+core_gameData->hw.lampCol; ii++) {
- bits = coreGlobals.lampMatrix[ii];
-
- for (jj = 0; jj < 8; jj++) {
- for (qq = 0; qq < drawData->lamps[num].totnum; qq++) {
- int color = drawData->lamps[num].lamppos[qq].color;
- int lampx = drawData->lamps[num].lamppos[qq].x;
- int lampy = drawData->lamps[num].lamppos[qq].y;
- line[lampx][starty + lampy] = CORE_COLOR((bits & 0x01) ? color : COL_SHADE(color));
- }
- bits >>= 1;
- num++;
- }
- }
- osd_mark_dirty(starty, locals.firstSimRow + startRow + startx,
- starty + drawData->size.y,
- locals.firstSimRow + startRow + startx + drawData->size.x);
- startRow += startx + drawData->size.x;
- if (starty + drawData->size.y > nextCol) nextCol = starty + drawData->size.y;
- }
- /*-- Defult square lamp matrix layout --*/
- else {
- for (ii = 0; ii < CORE_CUSTLAMPCOL + core_gameData->hw.lampCol; ii++) {
- BMTYPE **line = &lines[locals.firstSimRow + startRow];
- bits = coreGlobals.lampMatrix[ii];
-
- for (jj = 0; jj < 8; jj++) {
- line[0][thisCol + ii*2] = dotColor[bits & 0x01];
- line += 2; bits >>= 1;
- }
- }
- osd_mark_dirty(thisCol, locals.firstSimRow + startRow, thisCol + ii*2 ,locals.firstSimRow + startRow + 16);
- startRow += 16; if (thisCol + ii*2 > nextCol) nextCol = thisCol + ii*2;
- } /* else */
-
- /* Draw the switches */
- startRow += 3;
- if (startRow + 16 >= locals.maxSimRows) { startRow = 0; thisCol = nextCol + 5; }
-
- for (ii = 0; ii < CORE_CUSTSWCOL+core_gameData->hw.swCol; ii++) {
- BMTYPE **line = &lines[locals.firstSimRow + startRow];
- bits = coreGlobals.swMatrix[ii];
-
- for (jj = 0; jj < 8; jj++) {
- line[0][thisCol + ii*2] = dotColor[bits & 0x01];
- line += 2; bits >>= 1;
- }
- }
- osd_mark_dirty(thisCol, locals.firstSimRow + startRow, thisCol + ii*2, locals.firstSimRow + startRow + 16);
- startRow += 16; if (thisCol + ii*2 > nextCol) nextCol = thisCol + ii*2;
-
- /* Draw Solenoids and Flashers */
- startRow += 3;
-
- if (startRow + 16 >= locals.maxSimRows) { startRow = 0; thisCol = nextCol + 5; }
-
- {
- BMTYPE **line = &lines[locals.firstSimRow + startRow];
- UINT64 allSol = core_getAllSol();
- for (ii = 0; ii < CORE_FIRSTCUSTSOL+core_gameData->hw.custSol; ii++) {
- line[(ii/8)*2][thisCol + (ii%8)*2] = dotColor[allSol & 0x01];
- allSol >>= 1;
- }
- osd_mark_dirty(thisCol, locals.firstSimRow + startRow, thisCol + 16,
- locals.firstSimRow + startRow + 16);
- startRow += 16; if (thisCol + 16 > nextCol) nextCol = thisCol + 16;
- }
-
- /*-- draw diagnostic LEDs --*/
- startRow += 3;
-
- if (startRow + 16 >= locals.maxSimRows) { startRow = 0; thisCol = nextCol; }
-
- if (coreData->diagLEDs == 0xff) { /* 7 SEG */
- drawChar(bitmap, locals.firstSimRow + startRow, thisCol, coreGlobals.diagnosticLed, CORE_SEG7, 0);
- startRow += 16; if (thisCol + 12 > nextCol) nextCol = thisCol + 12;
- }
- else {
- BMTYPE **line = &lines[locals.firstSimRow + startRow];
- bits = coreGlobals.diagnosticLed;
-
- // Draw LEDS Vertically
- if (coreData->diagLEDs & DIAGLED_VERTICAL) {
- for (ii = 0; ii < (coreData->diagLEDs & ~DIAGLED_VERTICAL); ii++) {
- line[0][thisCol + 3] = dotColor[bits & 0x01];
- line += 2; bits >>= 1;
- }
- osd_mark_dirty(thisCol + 3, locals.firstSimRow + startRow, thisCol + 4, locals.firstSimRow + startRow + ii*2);
- startRow += ii*2; if (thisCol + 4 > nextCol) nextCol = thisCol + 4;
- }
- else { // Draw LEDS Horizontally
- for (ii = 0; ii < coreData->diagLEDs; ii++) {
- line[0][thisCol + ii*2] = dotColor[bits & 0x01];
- bits >>= 1;
- }
- osd_mark_dirty(thisCol, locals.firstSimRow + startRow, thisCol + ii*2, locals.firstSimRow + startRow + 1);
- startRow += 1; if (thisCol + ii*2 > nextCol) nextCol = thisCol + ii*2;
- }
- }
- /*-- GI Strings --*/
- if (core_gameData->gen & GEN_ALLWPC) {
- startRow += 3;
- if (startRow + 2 >= locals.maxSimRows) { startRow = 0; thisCol = nextCol + 5; }
-
- for (ii = 0; ii < CORE_MAXGI; ii++)
- {
- if(coreGlobals.gi[ii]==8)
- lines[locals.firstSimRow + startRow][thisCol + ii*2] = dotColor[1];
- else
- lines[locals.firstSimRow + startRow][thisCol + ii*2] = 64+(coreGlobals.gi[ii]<<1);
- }
- osd_mark_dirty(thisCol, locals.firstSimRow + startRow, thisCol + ii*2, locals.firstSimRow + startRow + 1);
- }
- if (coreGlobals.simAvail) sim_draw(locals.firstSimRow);
- /*-- draw game specific mechanics --*/
- if (core_gameData->hw.drawMech) core_gameData->hw.drawMech((void *)&bitmap->line[locals.firstSimRow]);
-}
-
-/*-- lamp handling --*/
-void core_setLamp(UINT8 *lampMatrix, int col, int row) {
- while (col) {
- if (col & 0x01) *lampMatrix |= row;
- col >>= 1;
- lampMatrix += 1;
- }
-}
-void core_setLampBlank(UINT8 *lampMatrix, int col, int row) {
- while (col) {
- if (col & 0x01) *lampMatrix = row;
- col >>= 1;
- lampMatrix += 1;
- }
-}
-
-/*-- "normal" switch/lamp numbering (1-64) --*/
-int core_swSeq2m(int no) { return no+7; }
-int core_m2swSeq(int col, int row) { return col*8+row-7; }
-
-/*------------------------------------------
-/ Read the current switch value
-/
-/ This function returns TRUE for active
-/ switches even if the switch is active low.
-/-------------------------------------------*/
-int core_getSw(int swNo) {
- if (coreData->sw2m) swNo = coreData->sw2m(swNo); else swNo = (swNo/10)*8+(swNo%10-1);
- return (coreGlobals.swMatrix[swNo/8] ^ coreGlobals.invSw[swNo/8]) & (1<<(swNo%8));
-}
-
-int core_getSwCol(int colEn) {
- int ii = 1;
- if (colEn) {
- while ((colEn & 0x01) == 0) {
- colEn >>= 1;
- ii += 1;
- }
- }
- return coreGlobals.swMatrix[ii];
-}
-
-/*----------------------
-/ Set/reset a switch
-/-----------------------*/
-void core_setSw(int swNo, int value) {
- if (coreData->sw2m) swNo = coreData->sw2m(swNo); else swNo = (swNo/10)*8+(swNo%10-1);
- coreGlobals.swMatrix[swNo/8] &= ~(1<<(swNo%8)); /* clear the bit first */
- coreGlobals.swMatrix[swNo/8] |= ((value ? 0xff : 0) ^ coreGlobals.invSw[swNo/8]) & (1<<(swNo%8));
-}
-
-/*-------------------------
-/ update active low/high
-/-------------------------*/
-void core_updInvSw(int swNo, int inv) {
- int bit;
- if (coreData->sw2m) swNo = coreData->sw2m(swNo); else swNo = (swNo/10)*8+(swNo%10-1);
- bit = (1 << (swNo%8));
-
- if (inv)
- inv = bit;
- if ((coreGlobals.invSw[swNo/8] ^ inv) & bit) {
- coreGlobals.invSw[swNo/8] ^= bit;
- coreGlobals.swMatrix[swNo/8] ^= bit;
- }
-}
-
-/*-------------------------------------
-/ Read the status of a solenoid
-/ For the standard solenoids this is
-/ the "smoothed" value
-/--------------------------------------*/
-int core_getSol(int solNo) {
- if (solNo <= 28)
- return coreGlobals.solenoids & CORE_SOLBIT(solNo);
- else if (solNo <= 32) { // 29-32
- if (core_gameData->gen & GEN_ALLS11)
- return coreGlobals.solenoids & CORE_SOLBIT(solNo);
- else if (core_gameData->gen & GEN_ALLWPC) // GI circuits
- return coreGlobals.solenoids2 & (1<<(solNo-29+8)); // GameOn
- }
- else if (solNo <= 36) { // 33-36 Upper flipper (WPC only)
- if (core_gameData->gen & GEN_ALLWPC) {
- int mask;
- /*-- flipper coils --*/
- if ((solNo == sURFlip) && (core_gameData->hw.flippers & FLIP_SOL(FLIP_UR)))
- mask = CORE_URFLIPSOLBITS;
- else if ((solNo == sULFlip) && (core_gameData->hw.flippers & FLIP_SOL(FLIP_UL)))
- mask = CORE_ULFLIPSOLBITS;
- else
- mask = 1<<(solNo - 33 + 4);
- return coreGlobals.solenoids2 & mask;
- }
- }
- else if (solNo <= 44) { // 37-44 WPC95 & S11 extra
- if (core_gameData->gen & (GEN_WPC95|GEN_WPC95DCS))
- return coreGlobals.solenoids & (1<<((solNo - 13)|4));
- if (core_gameData->gen & GEN_ALLS11)
- return coreGlobals.solenoids2 & (1<<(solNo - 37 + 8));
- }
- else if (solNo <= 48) { // 45-48 Lower flippers
- int mask = 1<<(solNo - 45);
- /*-- Game must have lower flippers but for symmetry we check anyway --*/
- if ((solNo == sLRFlip) /*&& (core_gameData->hw.flippers & FLIP_SOL(FLIP_LR))*/)
- mask = CORE_LRFLIPSOLBITS;
- else if ((solNo == sLLFlip) /*&& (core_gameData->hw.flippers & FLIP_SOL(FLIP_LL))*/)
- mask = CORE_LLFLIPSOLBITS;
- return coreGlobals.solenoids2 & mask;
- }
- else if (solNo <= 50) // 49-50 simulated
- return sim_getSol(solNo);
- else if (core_gameData->hw.getSol)
- return core_gameData->hw.getSol(solNo);
- return 0;
-}
-
-/*-------------------------------------
-/ Read the instant status of a solenoid
-/--------------------------------------*/
-int core_getPulsedSol(int solNo) {
- if (solNo <= 32)
- return coreGlobals.pulsedSolState & CORE_SOLBIT(solNo);
- else if ((core_gameData->gen & (GEN_WPC95|GEN_WPC95DCS)) && (solNo >= 37) && (solNo <= 44))
- // This is a little messy. Pulsed state is in 29-32 but 29-32 non pulsed is GameOn sol
- return coreGlobals.pulsedSolState & (1<<((solNo-13)|4));
- return core_getSol(solNo); /* sol is not smoothed anyway */
-}
-
-/*-------------------------------------------------
-/ Get the value of all solenoids in one variable
-/--------------------------------------------------*/
-UINT64 core_getAllSol(void) {
- UINT64 sol = coreGlobals.solenoids;
- if (core_gameData->gen & GEN_ALLWPC) // 29-32 GameOn
- sol = (sol & 0x0fffffff) | ((coreGlobals.solenoids2 & 0x0f00)<<20);
- if (core_gameData->gen & (GEN_WPC95|GEN_WPC95DCS)) { // 37-44 WPC95 extra
- UINT64 tmp = coreGlobals.solenoids & 0xf0000000;
- sol |= (tmp<<12)|(tmp<<8);
- }
- if (core_gameData->gen & (GEN_ALLS11|GEN_SAM)) // 37-44 S11, SAM extra
- sol |= ((UINT64)(coreGlobals.solenoids2 & 0xff00))<<28;
- { // 33-36, 45-48 flipper solenoids
- UINT8 lFlip = (coreGlobals.solenoids2 & (CORE_LRFLIPSOLBITS|CORE_LLFLIPSOLBITS));
- UINT8 uFlip = (coreGlobals.solenoids2 & (CORE_URFLIPSOLBITS|CORE_ULFLIPSOLBITS));
- // hold coil is set if either coil is set
- lFlip = lFlip | ((lFlip & 0x05)<<1);
- if (core_gameData->hw.flippers & FLIP_SOL(FLIP_UR))
- uFlip = uFlip | ((uFlip & 0x10)<<1);
- if (core_gameData->hw.flippers & FLIP_SOL(FLIP_UL))
- uFlip = uFlip | ((uFlip & 0x40)<<1);
- sol |= (((UINT64)lFlip)<<44) | (((UINT64)uFlip)<<28);
- }
- /*-- simulated --*/
- sol |= sim_getSol(49) ? (((UINT64)1)<<48) : 0;
- /*-- custom --*/
- if ( core_gameData->hw.getSol ) {
- UINT64 bit = ((UINT64)1)<<(CORE_FIRSTCUSTSOL-1);
- int ii;
-
- for (ii = 0; ii < core_gameData->hw.custSol; ii++) {
- sol |= core_gameData->hw.getSol(CORE_FIRSTCUSTSOL + ii) ? bit : 0;
- bit <<= 1;
- }
- }
- return sol;
-}
-
-/*---------------------------------------
-/ Get the status of a DIP bank (8 dips)
-/-----------------------------------------*/
-int core_getDip(int dipBank) {
-#ifdef VPINMAME
- return vp_getDIP(dipBank);
-#else /* VPINMAME */
- return (readinputport(CORE_COREINPORT+1+dipBank/2)>>((dipBank & 0x01)*8))&0xff;
-#endif /* VPINMAME */
-}
-
-/*--------------------
-/ Draw a LED digit
-/---------------------*/
-static void drawChar(struct mame_bitmap *bitmap, int row, int col, UINT32 bits, int type, int dimming) {
- const tSegData *s = &locals.segData[type];
- int palSize = sizeof(core_palette)/3;
- UINT32 pixel[21] = {0};
- int kk,ll;
- int pens[4][4] = {{ 0, palSize-1-dimming, palSize-17-dimming, palSize-33-dimming },
- { COL_DMDOFF, palSize-1-dimming, palSize-17-dimming, palSize-33-dimming },
- { COL_SEGAAOFF1, palSize-1-dimming, palSize-17-dimming, palSize-33-dimming },
- { COL_SEGAAOFF2, palSize-1-dimming, palSize-17-dimming, palSize-33-dimming }};
-
- for (kk = 1; bits; kk++, bits >>= 1) {
- if (bits & 0x01)
- for (ll = 0; ll < s->rows; ll++)
- pixel[ll] |= s->segs[ll][kk];
- }
- for (kk = 0; kk < s->rows; kk++) {
- BMTYPE *line = &((BMTYPE **)(bitmap->line))[row+kk][col + s->cols];
- // why don't the bitmap use the leftmost bits. i.e. size is limited to 15
- UINT32 p = pixel[kk]>>(30-2*s->cols), np = s->segs[kk][0]>>(30-2*s->cols);
-
- for (ll = 0; ll < s->cols; ll++, p >>= 2, np >>= 2)
- *(--line) = CORE_COLOR(pens[np & 0x03][p & 0x03]);
- }
- osd_mark_dirty(col,row,col+s->cols,row+s->rows);
-}
-
-/*----------------------
-/ Initialize PinMAME
-/-----------------------*/
-static MACHINE_INIT(core) {
- if (!coreData) { // first time
- /*-- init variables --*/
- memset(&coreGlobals, 0, sizeof(coreGlobals));
- memset(&locals, 0, sizeof(locals));
- memset(&locals.lastSeg, -1, sizeof(locals.lastSeg));
- coreData = (struct pinMachine *)&Machine->drv->pinmame;
- //-- initialise timers --
- if (coreData->timers[0].callback) {
- int ii;
- for (ii = 0; ii < 5; ii++) {
- if (coreData->timers[ii].callback) {
- locals.timers[ii] = timer_alloc(coreData->timers[ii].callback);
- timer_adjust(locals.timers[ii], TIME_IN_HZ(coreData->timers[ii].rate), 0, TIME_IN_HZ(coreData->timers[ii].rate));
- }
- }
- }
- /*-- init switch matrix --*/
- memcpy(&coreGlobals.invSw, core_gameData->wpc.invSw, sizeof(core_gameData->wpc.invSw));
- memcpy(coreGlobals.swMatrix, coreGlobals.invSw, sizeof(coreGlobals.invSw));
- /*-- masks bit used by flippers --*/
- {
- const int flip = core_gameData->hw.flippers;
- locals.flipMask = CORE_SWLRFLIPBUTBIT | CORE_SWLLFLIPBUTBIT |
- ((flip & FLIP_SW(FLIP_UL)) ? CORE_SWULFLIPBUTBIT : 0) |
- ((flip & FLIP_SW(FLIP_UR)) ? CORE_SWURFLIPBUTBIT : 0) |
- ((flip & FLIP_EOS(FLIP_UL))? CORE_SWULFLIPEOSBIT : 0) |
- ((flip & FLIP_EOS(FLIP_UR))? CORE_SWURFLIPEOSBIT : 0) |
- ((flip & FLIP_EOS(FLIP_LL))? CORE_SWLLFLIPEOSBIT : 0) |
- ((flip & FLIP_EOS(FLIP_LR))? CORE_SWLRFLIPEOSBIT : 0);
- }
- /*-- command line options --*/
- locals.displaySize = pmoptions.dmd_compact ? 1 : 2;
- {
- UINT32 size = core_initDisplaySize(core_gameData->lcdLayout) >> 16;
- if ((size > Machine->drv->screen_width) && (locals.displaySize > 1)) {
- /* force small display */
- locals.displaySize = 1;
- core_initDisplaySize(core_gameData->lcdLayout);
- }
- }
- /*-- Sound enabled ? */
- if (((Machine->gamedrv->flags & GAME_NO_SOUND) == 0) && Machine->sample_rate)
- coreGlobals.soundEn = TRUE;
-
- /*-- init simulator --*/
- if (g_fHandleKeyboard && core_gameData->simData) {
- int inports[CORE_MAXPORTS];
- int ii;
-
- for (ii = 0; ii < CORE_COREINPORT+(coreData->coreDips+31)/16; ii++)
- inports[ii] = readinputport(ii);
-
- coreGlobals.simAvail = sim_init((sim_tSimData *)core_gameData->simData,
- inports,CORE_COREINPORT+(coreData->coreDips+31)/16);
- }
- /*-- finally init the core --*/
- if (coreData->init) coreData->init();
- /*-- init sound commander --*/
- snd_cmd_init();
- }
- /*-- now reset everything --*/
- if (coreData->reset) coreData->reset();
- mech_emuInit();
- OnStateChange(1); /* We have a lift-off */
-
-/* TOM: this causes to draw the static sim text */
- schedule_full_refresh();
-}
-
-static MACHINE_STOP(core) {
- int ii;
- mech_emuExit();
- if (coreData->stop) coreData->stop();
- snd_cmd_exit();
- for (ii = 0; ii < 5; ii++) {
- if (locals.timers[ii])
- timer_remove(locals.timers[ii]);
- }
- memset(locals.timers, 0, sizeof(locals.timers));
- coreData = NULL;
-}
-
-static void core_findSize(const struct core_dispLayout *layout, int *maxX, int *maxY) {
- if (layout) {
- for (; layout->length; layout += 1) {
- int tmpX = 0, tmpY = 0, type = layout->type & CORE_SEGMASK;
- if (type == CORE_IMPORT)
- { core_findSize(layout->ptr, maxX, maxY); continue; }
- if (type >= CORE_DMD) {
- tmpX = (layout->left + layout->length) * locals.segData[type].cols + 1;
- tmpY = (layout->top + layout->start) * locals.segData[type].rows + 1;
- }
- else {
- tmpX = (layout->left + 2*layout->length) * (locals.segData[type & 0x07].cols + 1) / 2;
- tmpY = (layout->top + 2) * (locals.segData[0].rows + 1) / 2;
- }
- if (tmpX > *maxX) *maxX = tmpX;
- if (tmpY > *maxY) *maxY = tmpY;
- }
-#ifndef VPINMAME
- if (*maxX < 256) *maxX = 256;
-#endif
- }
-}
-
-static UINT32 core_initDisplaySize(const struct core_dispLayout *layout) {
- int maxX = 0, maxY = 0;
-
- locals.segData = &segData[locals.displaySize == 1][0];
- if (layout)
- core_findSize(layout, &maxX, &maxY);
- else if (locals.displaySize > 1)
-#ifdef VPINMAME
- { maxX = 257; maxY = 65; }
-#else
- { maxX = 256; maxY = 65; }
-#endif /* VPINMAME */
- else
- { maxX = 129; maxY = 33; }
- locals.firstSimRow = maxY + 3;
- locals.maxSimRows = Machine->drv->screen_height - locals.firstSimRow;
- if ((!pmoptions.dmd_only) || (maxY >= Machine->drv->screen_height))
- maxY = Machine->drv->screen_height;
-#ifndef VPINMAME
- if (maxX == 257) maxX = 256;
-#endif /* VPINMAME */
- set_visible_area(0, maxX-1, 0, maxY-1);
- return (maxX<<16) | maxY;
-}
-
-void core_nvram(void *file, int write, void *mem, int length, UINT8 init) {
- if (write) mame_fwrite(file, mem, length); /* save */
- else if (file) mame_fread(file, mem, length); /* load */
- else memset(mem, init, length); /* first time */
- mech_nv(file, write); /* save mech positions */
- { /*-- Load/Save DIP settings --*/
- UINT8 dips[6];
- int ii;
-
- if (write) {
- for (ii = 0; ii < 6; ii++) dips[ii] = core_getDip(ii);
- mame_fwrite(file, dips, sizeof(dips));
- }
- else if (file) {
- /* set the defaults (for compabilty with older versions) */
- dips[0] = readinputport(CORE_COREINPORT+1) & 0xff;
- dips[1] = readinputport(CORE_COREINPORT+1)>>8;
- dips[2] = readinputport(CORE_COREINPORT+2) & 0xff;
- dips[3] = readinputport(CORE_COREINPORT+2)>>8;
- dips[4] = readinputport(CORE_COREINPORT+3) & 0xff;
- dips[5] = readinputport(CORE_COREINPORT+3)>>8;
-
- mame_fread(file, dips, sizeof(dips));
- for (ii = 0; ii < 6; ii++) vp_setDIP(ii, dips[ii]);
-
- }
- else { // always get the default from the inports
- /* coreData not initialised yet. Don't know exact number of DIPs */
- vp_setDIP(0, readinputport(CORE_COREINPORT+1) & 0xff);
- vp_setDIP(1, readinputport(CORE_COREINPORT+1)>>8);
- vp_setDIP(2, readinputport(CORE_COREINPORT+2) & 0xff);
- vp_setDIP(3, readinputport(CORE_COREINPORT+2)>>8);
- vp_setDIP(4, readinputport(CORE_COREINPORT+3) & 0xff);
- vp_setDIP(5, readinputport(CORE_COREINPORT+3)>>8);
- }
- }
-}
-
-/*----------------------------------------------
-/ Add a timer when building the machine driver
-/-----------------------------------------------*/
-void machine_add_timer(struct InternalMachineDriver *machine, void (*func)(int), int rate) {
- int ii;
- for (ii = 0; machine->pinmame.timers[ii].callback; ii++)
- ;
- machine->pinmame.timers[ii].callback = func;
- machine->pinmame.timers[ii].rate = rate;
-}
-
-/*---------------------------------------
-/ Default machine driver for all games
-/----------------------------------------*/
-MACHINE_DRIVER_START(PinMAME)
- MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER | VIDEO_SUPPORTS_DIRTY)
- MDRV_SCREEN_SIZE(CORE_SCREENX, CORE_SCREENY)
- MDRV_VISIBLE_AREA(0, CORE_SCREENX-1, 0, CORE_SCREENY-1)
- MDRV_PALETTE_INIT(core)
- MDRV_PALETTE_LENGTH(sizeof(core_palette)/sizeof(core_palette[0][0])/3)
- MDRV_FRAMES_PER_SECOND(60)
- MDRV_SWITCH_CONV(core_swSeq2m,core_m2swSeq)
- MDRV_LAMP_CONV(core_swSeq2m,core_m2swSeq)
- MDRV_MACHINE_INIT(core) MDRV_MACHINE_STOP(core)
- MDRV_VIDEO_UPDATE(core_gen)
-MACHINE_DRIVER_END
-#endif
diff --git a/src/mame/drivers/p_core.h b/src/mame/drivers/p_core.h
deleted file mode 100644
index 5dda3b8be1e..00000000000
--- a/src/mame/drivers/p_core.h
+++ /dev/null
@@ -1,511 +0,0 @@
-// new code to allow the PinMAME rom loading to compile
-
-#define NORMALREGION(size, reg) ROM_REGION(size, reg, ROMREGION_ERASE00)
-#define NORMALREGIONE(size, reg) ROM_REGION(size, reg, ROMREGION_ERASE00)
-#define SOUNDREGION(size ,reg) ROM_REGION(size, reg, ROMREGION_ERASE00)
-#define SOUNDREGIONE(size ,reg) ROM_REGION(size, reg, ROMREGION_ERASE00)
-
-/*-----------------
-/ define the game
-/------------------*/
-#define CORE_GAMEDEF(name, ver, longname, year, manuf, machine, flag) \
- GAME(year,name##_##ver,0,machine,name,name,ROT0,manuf,longname,flag | GAME_NOT_WORKING | GAME_NO_SOUND )
-
-
-#define CORE_CLONEDEF(name, ver, clonever, longname, year, manuf, machine,flag) \
- GAME(year,name##_##ver,name##_##clonever,machine,name,name,ROT0,manuf,longname,flag | GAME_NOT_WORKING | GAME_NO_SOUND)
-
-#if 0
-#define CORE_GAMEDEFNV(name, longname, year, manuf, machine, flag) \
- GAME(year,name,0,machine,name,name,ROT0,manuf,longname,flag | GAME_NOT_WORKING | GAME_NO_SOUND)
-
-#define CORE_CLONEDEFNV(name, cl, longname, year, manuf, machine,flag) \
- GAME(year,name,cl,machine,name,name,ROT0,manuf,longname,flag | GAME_NOT_WORKING | GAME_NO_SOUND)
-
-#define CORE_GAMEDEFNVR90(name, longname, year, manuf, machine, flag) \
- GAME(year,name,0,machine,name,name,ROT90,manuf,longname,flag | GAME_NOT_WORKING | GAME_NO_SOUND)
-#endif
-
-/************************************************************************************************
-*************************************************************************************************
- Old PinMAME code below for reference ONLY
-*************************************************************************************************
-************************************************************************************************/
-
-#if 0
-
-#ifndef INC_CORE
-#define INC_CORE
-
-#include "wpcsam.h"
-#include "gen.h"
-#include "sim.h"
-
-/*-- some convenience macros --*/
-#ifndef FALSE
- #define FALSE (0)
-#endif
-#ifndef TRUE
- #define TRUE (1)
-#endif
-
-#ifdef MAME_DEBUG
- #define DBGLOG(x) logerror x
-#else
- #define DBGLOG(x)
-#endif
-
-
-
-/*-- convenience macro for handling bits --*/
-#define GET_BIT0 (data & 0x01) >> 0
-#define GET_BIT1 (data & 0x02) >> 1
-#define GET_BIT2 (data & 0x04) >> 2
-#define GET_BIT3 (data & 0x08) >> 3
-#define GET_BIT4 (data & 0x10) >> 4
-#define GET_BIT5 (data & 0x20) >> 5
-#define GET_BIT6 (data & 0x40) >> 6
-#define GET_BIT7 (data & 0x80) >> 7
-
-
-/*-- default screen size */
-#ifdef VPINMAME
-# define CORE_SCREENX 640
-# define CORE_SCREENY 400
-#else /* VPINMAME */
-# define CORE_SCREENX 320
-# define CORE_SCREENY 256
-#endif /* VPINMAME */
-
-
-/*--------------
-/ Input ports
-/---------------*/
-/* strange but there are no way to define IMP and TOG with key without using BITX */
-#define COREPORT_BIT(mask, name, key) \
- PORT_BITX(mask,IP_ACTIVE_HIGH,IPT_BUTTON1,name,key,IP_JOY_NONE)
-#define COREPORT_BITIMP(mask, name, key) \
- PORT_BITX(mask,IP_ACTIVE_HIGH,IPT_BUTTON1 | IPF_IMPULSE | (1<<8),name,key,IP_JOY_NONE)
-#define COREPORT_BITTOG(mask, name, key) \
- PORT_BITX(mask,IP_ACTIVE_HIGH,IPT_BUTTON1 | IPF_TOGGLE,name,key,IP_JOY_NONE)
-#define COREPORT_DIPNAME(mask,default,name) \
- PORT_DIPNAME(mask,default,name)
-#define COREPORT_DIPSET(mask,name) \
- PORT_DIPSETTING(mask,name)
-
-/*-- only used in standard inport --*/
-#define COREPORT_BITDEF(mask, type, key) \
- PORT_BITX(mask,IP_ACTIVE_HIGH, type, IP_NAME_DEFAULT, key, IP_JOY_DEFAULT)
-
-/*----------------
-/ Common inports
-/-----------------*/
-#define CORE_PORTS \
- PORT_START /* 0 */ \
- COREPORT_BIT(0x0001, "Column 1", KEYCODE_Q) \
- COREPORT_BIT(0x0002, "Column 2", KEYCODE_W) \
- COREPORT_BIT(0x0004, "Column 3", KEYCODE_E) \
- COREPORT_BIT(0x0008, "Column 4", KEYCODE_R) \
- COREPORT_BIT(0x0010, "Column 5", KEYCODE_T) \
- COREPORT_BIT(0x0020, "Column 6", KEYCODE_Y) \
- COREPORT_BIT(0x0040, "Column 7", KEYCODE_U) \
- COREPORT_BIT(0x0080, "Column 8", KEYCODE_I) \
- COREPORT_BIT(0x0100, "Row 1", KEYCODE_A) \
- COREPORT_BIT(0x0200, "Row 2", KEYCODE_S) \
- COREPORT_BIT(0x0400, "Row 3", KEYCODE_D) \
- COREPORT_BIT(0x0800, "Row 4", KEYCODE_F) \
- COREPORT_BIT(0x1000, "Row 5", KEYCODE_G) \
- COREPORT_BIT(0x2000, "Row 6", KEYCODE_H) \
- COREPORT_BIT(0x4000, "Row 7", KEYCODE_J) \
- COREPORT_BIT(0x8000, "Row 8", KEYCODE_K) \
- PORT_START /* 1 */ \
- COREPORT_BIT(0x0001, "Left Flipper", KEYCODE_LSHIFT) \
- COREPORT_BIT(0x0002, "Right Flipper", KEYCODE_RSHIFT) \
- COREPORT_BIT(0x0004, "U Left Flipper", KEYCODE_A) \
- COREPORT_BIT(0x0008, "Y Right Flipper", KEYCODE_L)
-
-/*-----------------------
-/ Access to common ports
-/------------------------*/
-/*-- manual switch keys --*/
-#define CORE_MANSWINPORT 0
-#define CORE_MANSWCOLUMNS 0x00ff
-#define CORE_MANSWROWS 0xff00
-
-/*-- common keys (start, tilt etc) --*/
-#define CORE_FLIPINPORT 1
-#define CORE_LLFLIPKEY 0x0001
-#define CORE_LRFLIPKEY 0x0002
-#define CORE_ULFLIPKEY 0x0004
-#define CORE_URFLIPKEY 0x0008
-
-#define CORE_SIMINPORT 1 /* Inport for simulator */
-#define CORE_COREINPORT 2 /* Inport for core use */
-
-// Macro to ease switch assignment
-#define CORE_SETKEYSW(value, mask, swcol) \
- coreGlobals.swMatrix[(swcol)] = (coreGlobals.swMatrix[(swcol)] & ~(mask)) | ((value) & (mask))
-
-/*------------------------------------------------------
-/ Flipper hardware is described with the following macros
-/ (macros use FLIP_LL, FLIP_LR, FLIP_UL, FLIP_UR)
-/ FLIP_SW() Flipper switches available
-/ FLIP_SWNO(L,R) Flipper switch numbers if other than default (Pre-fliptronics)
-/ FLIP_SOL() CPU controlled flippers
-/ Example: CPU controlled upper right flipper
-/ FLIP_SW(FLIP_LL | FLIP_LR | FLIP_UR) + FLIP_SOL(FLIP_LL | FLIP_LR | FLIP_UR)
-/ Example: Flippers not controlled by CPU
-/ FLIP_SWNO(swFlipL, swFlipR)
-/--------------------------------------------------------------*/
-/*-- flipper names --*/
-#define FLIP_LR (0x1)
-#define FLIP_LL (0x2)
-#define FLIP_UR (0x4)
-#define FLIP_UL (0x8)
-#define FLIP_L (FLIP_LL | FLIP_LR)
-#define FLIP_U (FLIP_UL | FLIP_UR)
-
-/*-- definition macros --*/
-#define FLIP_BUT(x) ((x)<<16)
-#define FLIP_SW(x) ((x)<<20)
-#define FLIP_SWNO(l,r) (((l)<<8)|(r)|FLIP_SW(FLIP_L))
-#define FLIP_EOS(x) ((x)<<28)
-#define FLIP_SOL(x) (((x)<<24)|FLIP_EOS(x))
-
-#define FLIP_SWL(x) (((x)>>8)&0xff)
-#define FLIP_SWR(x) ((x)&0xff)
-
-/*---------------------
-/ Exported variables
-/----------------------*/
-#define CORE_FLIPSTROKETIME 2 /* Timer for flipper to reach top VBLANKs */
-
-/*-----------------------------
-/ Generic Display layout data
-/------------------------------*/
-/* The different kind of display units */
-#define CORE_SEG16 0 // 16 segments
-#define CORE_SEG16R 1 // 16 segments with comma and period reversed
-#define CORE_SEG10 2 // 9 segments and comma
-#define CORE_SEG9 3 // 9 segments
-#define CORE_SEG8 4 // 7 segments and comma
-#define CORE_SEG8D 5 // 7 segments and period
-#define CORE_SEG7 6 // 7 segments
-#define CORE_SEG87 7 // 7 segments, comma every three
-#define CORE_SEG87F 8 // 7 segments, forced comma every three
-#define CORE_SEG98 9 // 9 segments, comma every three
-#define CORE_SEG98F 10 // 9 segments, forced comma every three
-#define CORE_SEG7S 11 // 7 segments, small
-#define CORE_SEG7SC 12 // 7 segments, small, with comma
-#define CORE_SEG16S 13 // 16 segments with split top and bottom line
-#define CORE_DMD 14 // DMD Display
-#define CORE_VIDEO 15 // VIDEO Display
-
-#define CORE_IMPORT 0x10 // Link to another display layout
-#define CORE_SEGHIBIT 0x20
-#define CORE_SEGREV 0x40
-#define CORE_DMDNOAA 0x80
-#define CORE_SEGMASK 0x1f // Note that CORE_IMPORT must be part of the segmask as well!
-
-#define CORE_SEG8H (CORE_SEG8 | CORE_SEGHIBIT)
-#define CORE_SEG7H (CORE_SEG7 | CORE_SEGHIBIT)
-#define CORE_SEG87H (CORE_SEG87 | CORE_SEGHIBIT)
-#define CORE_SEG87FH (CORE_SEG87F| CORE_SEGHIBIT)
-#define CORE_SEG7SH (CORE_SEG7S | CORE_SEGHIBIT)
-#define CORE_SEG7SCH (CORE_SEG7SC| CORE_SEGHIBIT)
-
-#define DMD_MAXX 256
-#define DMD_MAXY 64
-
-typedef UINT8 tDMDDot[DMD_MAXY+2][DMD_MAXX+2];
-
-/* Shortcuts for some common display sizes */
-#define DISP_SEG_16(row,type) {4*row, 0, 20*row, 16, type}
-#define DISP_SEG_7(row,col,type) {4*row,16*col,row*20+col*8+1,7,type}
-#define DISP_SEG_CREDIT(no1,no2,type) {2,2,no1,1,type},{2,4,no2,1,type}
-#define DISP_SEG_BALLS(no1,no2,type) {2,8,no1,1,type},{2,10,no2,1,type}
-#define DISP_SEG_IMPORT(x) {0,0,0,1,CORE_IMPORT,x}
-/* display layout structure */
-/* Don't know how the LCD got in there. Should have been LED but now it
- handles all kinds of displays so we call it dispLayout.
- Keep the typedef of core_tLCDLayout for some time. */
-struct core_dispLayout {
- UINT16 top, left, start, length, type;
- void *ptr;
-};
-typedef struct core_dispLayout core_tLCDLayout, *core_ptLCDLayout;
-
-#define PINMAME_VIDEO_UPDATE(name) int (name)(struct mame_bitmap *bitmap, const struct rectangle *cliprect, const struct core_dispLayout *layout)
-typedef int (*ptPinMAMEvidUpdate)(struct mame_bitmap *bitmap, const struct rectangle *cliprect, const struct core_dispLayout *layout);
-extern void video_update_core_dmd(struct mame_bitmap *bitmap, const struct rectangle *cliprect, tDMDDot dotCol, const struct core_dispLayout *layout);
-
-/*----------------------
-/ WPC driver constants
-/-----------------------*/
-/* Solenoid numbering */
-/* WPC */
-/* 1-28 Standard */
-/* 33-36 Upper flipper solenoids */
-/* 37-40 Standard (WPC95 only) */
-/* 41-44 - "" - Copy of above */
-/* 45-48 Lower flipper solenoids */
-/* 49-50 Simulated */
-/* 51-44 */
-/* S9/S11 */
-/* 1- 8 Standard 'A'-side */
-/* 9-16 Standard */
-/* 17-22 Special */
-/* 23 Flipper & SS Enabled Sol (fake) */
-/* 25-32 Standard 'C'-side */
-/* 37-41 Sound overlay board */
-/* S7 */
-/* 1-16 Standard */
-/* 17-24 Special */
-/* 25 Flipper & SS Enabled Sol (fake) */
-/* BY17/BY35 */
-/* 1-15 Standard Pulse */
-/* 17-20 Standard Hold */
-/* GTS80 */
-/* 1- 9 Standard */
-/* 10 GameOn (fake) */
-/* 11 Tilt (for GI) (fake) */
-#define CORE_FIRSTEXTSOL 37
-#define CORE_FIRSTUFLIPSOL 33
-#define CORE_FIRSTCUSTSOL 51
-#define CORE_FIRSTLFLIPSOL 45
-#define CORE_FIRSTSIMSOL 49
-
-#define CORE_SSFLIPENSOL 23
-#define CORE_FIRSTSSSOL 17
-
-#define CORE_SOLBIT(x) (1<<((x)-1))
-
-/* Flipper Solenoid numbers */
-#define sLRFlip (CORE_FIRSTLFLIPSOL+1)
-#define sLRFlipPow (CORE_FIRSTLFLIPSOL+0)
-#define sLLFlip (CORE_FIRSTLFLIPSOL+3)
-#define sLLFlipPow (CORE_FIRSTLFLIPSOL+2)
-#define sURFlip (CORE_FIRSTUFLIPSOL+1)
-#define sURFlipPow (CORE_FIRSTUFLIPSOL+0)
-#define sULFlip (CORE_FIRSTUFLIPSOL+3)
-#define sULFlipPow (CORE_FIRSTUFLIPSOL+2)
-
-/*-- Flipper solenoid bits --*/
-#define CORE_LRFLIPSOLBITS 0x03
-#define CORE_LLFLIPSOLBITS 0x0c
-#define CORE_URFLIPSOLBITS 0x30
-#define CORE_ULFLIPSOLBITS 0xc0
-
-/*-- create a custom solenoid number --*/
-/* example: #define swCustom CORE_CUSTSOLNO(1) // custom solenoid 1 */
-#define CORE_CUSTSOLNO(n) (CORE_FIRSTCUSTSOL-1+(n))
-
-#define CORE_STDLAMPCOLS 8
-#define CORE_STDSWCOLS 12
-
-#define CORE_COINDOORSWCOL 0 /* internal array number */
-#define CORE_MAXSWCOL 16 /* switch columns (0-9=sw matrix, 10=coin door, 11=cabinet/flippers) */
-#define CORE_FLIPPERSWCOL 11 /* internal array number */
-#define CORE_CUSTSWCOL CORE_STDSWCOLS /* first custom (game specific) switch column */
-#define CORE_MAXLAMPCOL 42 /* lamp column (0-7=std lamp matrix 8- custom) */
-#define CORE_CUSTLAMPCOL CORE_STDLAMPCOLS /* first custom lamp column */
-#define CORE_MAXPORTS 8 /* Maximum input ports */
-#define CORE_MAXGI 5 /* Maximum GI strings */
-
-/*-- create a custom switch number --*/
-/* example: #define swCustom CORE_CUSTSWNO(1,2) // custom column 1 row 2 */
-#define CORE_CUSTSWNO(c,r) ((CORE_CUSTSWCOL-1+c)*10+r)
-
-/*-------------------
-/ Flipper Switches
-/ in column FLIPPERSWCOL
-/--------------------*/
-#define CORE_SWLRFLIPEOSBIT 0x01
-#define CORE_SWLRFLIPBUTBIT 0x02
-#define CORE_SWLLFLIPEOSBIT 0x04
-#define CORE_SWLLFLIPBUTBIT 0x08
-#define CORE_SWURFLIPEOSBIT 0x10
-#define CORE_SWURFLIPBUTBIT 0x20
-#define CORE_SWULFLIPEOSBIT 0x40
-#define CORE_SWULFLIPBUTBIT 0x80
-
-#define CORE_FIRSTSIMROW 80 /* first free row on display */
-
-/*-- Colours --*/
-#define CORE_COLOR(x) Machine->pens[(x)]
-#define COL_DMD 1
-#define COL_DMDOFF (COL_DMD+0)
-#define COL_DMD33 (COL_DMD+1)
-#define COL_DMD66 (COL_DMD+2)
-#define COL_DMDON (COL_DMD+3)
-#define COL_DMDCOUNT 4
-#define COL_LAMP (COL_DMD+COL_DMDCOUNT)
-#define COL_LAMPCOUNT 8
-#define COL_SHADE(x) (COL_LAMPCOUNT+(x))
-#define COL_DMDAA (COL_LAMP+COL_LAMPCOUNT*2)
-#define COL_DMDAACOUNT 7
-#define COL_SEGAAON1 (COL_DMDAA+COL_DMDAACOUNT)
-#define COL_SEGAAON2 (COL_SEGAAON1+1)
-#define COL_SEGAAOFF1 (COL_SEGAAON1+2)
-#define COL_SEGAAOFF2 (COL_SEGAAON1+3)
-#define COL_SEGAACOUNT 4
-#define COL_COUNT (COL_SEGAAON1+COL_SEGAACOUNT)
-
-/* Lamp Colors */
-#define BLACK (COL_LAMP+0)
-#define WHITE (COL_LAMP+1)
-#define GREEN (COL_LAMP+2)
-#define RED (COL_LAMP+3)
-#define ORANGE (COL_LAMP+4)
-#define YELLOW (COL_LAMP+5)
-#define LBLUE (COL_LAMP+6)
-#define LPURPLE (COL_LAMP+7)
-
-/*-------------------------------------------
-/ Draw data. draw lamps,switches,solenoids
-/ in this way instead of a matrix
-/--------------------------------------------*/
-typedef struct {
- UINT8 x,y, color;
-} core_tDrawData;
-
-typedef struct {
- UINT8 totnum; /*Total # of lamp positions defined - Up to 4 Max*/
- core_tDrawData lamppos[4]; /*Can support up to 4 lamp positions for each lamp matrix entry!*/
-} core_tLampData; /*This means, one lamp matrix entry can share up to 4 bulbs on the playfield*/
-
-typedef struct {
- core_tDrawData startpos; /*Starting Coordinates to draw matrix*/
- core_tDrawData size; /*Size of lamp matrix*/
- core_tLampData lamps[CORE_MAXLAMPCOL*8]; /*Can support up to 160 lamps!*/
-} core_tLampDisplay;
-
-#define CORE_SEGCOUNT 64
-#ifdef LSB_FIRST
-typedef union { struct { UINT8 lo, hi; } b; UINT16 w; } core_tSeg[CORE_SEGCOUNT];
-#else /* LSB_FIRST */
-typedef union { struct { UINT8 hi, lo; } b; UINT16 w; } core_tSeg[CORE_SEGCOUNT];
-#endif /* LSB_FIRST */
-typedef struct {
- UINT8 swMatrix[CORE_MAXSWCOL];
- UINT8 invSw[CORE_MAXSWCOL]; /* Active low switches */
- UINT8 lampMatrix[CORE_MAXLAMPCOL], tmpLampMatrix[CORE_MAXLAMPCOL];
- core_tSeg segments; /* segments data from driver */
- UINT16 drawSeg[CORE_SEGCOUNT]; /* segments drawn */
- UINT32 solenoids; /* on power driver bord */
- UINT32 solenoids2; /* flipper solenoids */
- UINT32 pulsedSolState; /* current pulse value of solenoids on driver board */
- UINT64 lastSol; /* last state of all solenoids */
- int gi[CORE_MAXGI]; /* WPC gi strings */
- int simAvail; /* simulator (keys) available */
- int soundEn; /* Sound enabled ? */
- int diagnosticLed; /* data relating to diagnostic led(s)*/
- char segDim[CORE_SEGCOUNT]; /* segments dimming */
-} core_tGlobals;
-extern core_tGlobals coreGlobals;
-/* shortcut for coreGlobals */
-#define cg coreGlobals
-extern struct pinMachine *coreData;
-/*Exported variables*/
-/*-- There are no custom fields in the game driver --*/
-/*-- so I have to invent some by myself. Each driver --*/
-/*-- fills in one of these in the game_init function --*/
-typedef struct {
- UINT64 gen; /* Hardware Generation */
- const struct core_dispLayout *lcdLayout; /* LCD display layout */
- struct {
- UINT32 flippers; /* flippers installed (see defines below) */
- int swCol, lampCol, custSol; /* Custom switch columns, lamp columns and solenoids */
- UINT32 soundBoard, display;
- UINT32 gameSpecific1, gameSpecific2;
- /*-- custom functions --*/
- int (*getSol)(int solNo); /* get state of custom solenoid */
- void (*handleMech)(int mech); /* update switches depending on playfield mechanics */
- int (*getMech)(int mechNo); /* get status of mechanics */
- void (*drawMech)(BMTYPE **line); /* draw game specific hardware */
- core_tLampDisplay *lampData; /* lamp layout */
- wpc_tSamSolMap *solsammap; /* solenoids samples */
- } hw;
- const void *simData;
- struct { /* WPC specific stuff */
- char serialNo[21]; /* Securty chip serial number */
- UINT8 invSw[CORE_MAXSWCOL]; /* inverted switches (e.g. optos) */
- /* common switches */
- struct { int start, tilt, sTilt, coinDoor, shooter; } comSw;
- } wpc;
- struct { /* S3-S11 specific stuff (incl DE) */
- int muxSol; /* S11 Mux solenoid */
- int ssSw[8]; /* Special solenoid switches */
- } sxx;
- /* simulator data */
-} core_tGameData;
-extern const core_tGameData *core_gameData;
-
-extern const int core_bcd2seg9[]; /* BCD to 9 segment display */
-extern const int core_bcd2seg9a[]; /* BCD to 9 segment display, missing 6 top line */
-extern const int core_bcd2seg7[]; /* BCD to 7 segment display */
-extern const int core_bcd2seg7a[]; /* BCD to 7 segment display, missing 6 top line */
-extern const int core_bcd2seg7e[]; /* BCD to 7 segment display with A to E letters */
-#define core_bcd2seg core_bcd2seg7
-
-/*-- Exported Display handling functions--*/
-void core_updateSw(int flipEn);
-
-/*-- text output functions --*/
-void core_textOut(char *buf, int length, int x, int y, int color);
-void CLIB_DECL core_textOutf(int x, int y, int color, const char *text, ...);
-
-/*-- lamp handling --*/
-void core_setLamp(UINT8 *lampMatrix, int col, int row);
-void core_setLampBlank(UINT8 *lampMatrix, int col, int row);
-
-/*-- switch handling --*/
-extern void core_setSw(int swNo, int value);
-extern int core_getSw(int swNo);
-extern void core_updInvSw(int swNo, int inv);
-
-/*-- get a switch column. (colEn=bits) --*/
-extern int core_getSwCol(int colEn);
-
-/*-- solenoid handling --*/
-extern int core_getSol(int solNo);
-extern int core_getPulsedSol(int solNo);
-extern UINT64 core_getAllSol(void);
-
-/*-- nvram handling --*/
-extern void core_nvram(void *file, int write, void *mem, int length, UINT8 init);
-
-/* makes it easier to swap bits */
-extern const UINT8 core_swapNyb[16];
-INLINE UINT8 core_revbyte(UINT8 x) { return (core_swapNyb[x & 0xf]<<4)|(core_swapNyb[x>>4]); }
-INLINE UINT8 core_revnyb(UINT8 x) { return core_swapNyb[x]; }
-INLINE UINT16 core_revword(UINT16 x) {
- UINT8 lo,hi;
- lo = core_revbyte(x & 0x00ff);
- hi = core_revbyte((x & 0xff00)>>8);
- return ((lo<<8) | hi);
-}
-
-/*-- core DIP handling --*/
-// Get the status of a DIP bank (8 dips)
-extern int core_getDip(int dipBank);
-
-/*-- Easy Bit Column to Number conversion
- * Convert Bit Column Data to corresponding #, ie, if Bit 3=1, return 3 - Zero Based (Bit1=1 returns 0)
- * Assumes only 1 bit is set at a time. --*/
-INLINE int core_BitColToNum(int tmp)
-{
- int data=0, i=0;
- do {
- if (tmp & 1) data += i;
- i++;
- } while (tmp >>= 1);
- return data;
-}
-
-extern MACHINE_DRIVER_EXTERN(PinMAME);
-#endif /* INC_CORE */
-
-#endif
-
-
diff --git a/src/mame/drivers/p_s11.c b/src/mame/drivers/p_s11.c
deleted file mode 100644
index c45a082cded..00000000000
--- a/src/mame/drivers/p_s11.c
+++ /dev/null
@@ -1,1741 +0,0 @@
-/***********************************************************************************************************
- Project to port PinMAME drivers back to MAME 06/02/09
-
- This adapted to compile (not run) using skeleton structures under new versions of MAME. Everyhing will
- need further heavy refactoring, I feel the overuse of driver specific Macros in PinMAME makes for very
- difficult reading and a lot of the PinMAME art simulation can be handled by the MAME artwork system now.
-
-***********************************************************************************************************/
-
-#include "driver.h"
-#include "p_core.h"
-#include "p_wmssnd.h"
-#include "p_s11.h"
-
-static MACHINE_DRIVER_START(s11)
-MACHINE_DRIVER_END
-
-/* System 9 */
-static MACHINE_DRIVER_START(s11_s9S)
-MACHINE_DRIVER_END
-
-/* System 11 with S11C sound board, diagnostic digit */
-static MACHINE_DRIVER_START(s11_s11XS)
-MACHINE_DRIVER_END
-
-/* Pennant Fever */
-static MACHINE_DRIVER_START(s11_s9PS)
-MACHINE_DRIVER_END
-
-/* System 11 with S11C sound board, diagnostic LED only */
-static MACHINE_DRIVER_START(s11_s11XSL)
-MACHINE_DRIVER_END
-
-/* System 11a without external sound board*/
-static MACHINE_DRIVER_START(s11_s11S)
-MACHINE_DRIVER_END
-
-/* System 11a with S11C sound board */
-static MACHINE_DRIVER_START(s11_s11aS)
-MACHINE_DRIVER_END
-
-/* System 11B with Jokerz! sound board*/
-static MACHINE_DRIVER_START(s11_s11b2S)
-MACHINE_DRIVER_END
-
-/* System 11C */
-static MACHINE_DRIVER_START(s11_s11cS)
-MACHINE_DRIVER_END
-
-/* DE alpa numeric No Sound */
-static MACHINE_DRIVER_START(de_a)
-MACHINE_DRIVER_END
-
-/* DE alphanumeric Sound 1 */
-static MACHINE_DRIVER_START(de_a1S)
-MACHINE_DRIVER_END
-
-/* DE 128x16 Sound 1 */
-static MACHINE_DRIVER_START(de_dmd161S)
-MACHINE_DRIVER_END
-
-/* DE 128x16 Sound 2a */
-static MACHINE_DRIVER_START(de_dmd162aS)
-MACHINE_DRIVER_END
-
-/* DE 128x32 Sound 2a */
-static MACHINE_DRIVER_START(de_dmd322aS)
-MACHINE_DRIVER_END
-
-/* DE 192x64 Sound 2a */
-static MACHINE_DRIVER_START(de_dmd642aS)
-MACHINE_DRIVER_END
-
-S11_INPUT_PORTS_START(s11, 1) S11_INPUT_PORTS_END
-
-static MACHINE_DRIVER_START(s11a_one)
-MACHINE_DRIVER_END
-
-static MACHINE_DRIVER_START(s11c_one)
-MACHINE_DRIVER_END
-
-#define INITGAME(name, gen, disp, mux, flip, db, gs1) \
- DRIVER_INIT( name ) { } \
-
-#define INITGAMEFULL(name, gen, disp, mux, flip, db, gs1, gs2,ss17,ss18,ss19,ss20,ss21,ss22) \
- DRIVER_INIT( name ) { } \
-
-/*
-Issues:
-Pool: Sound loops on startup, stops after one minute?
-Jokerz: Startup sound does not stop
-*/
-
-#if 0
-
-#define INITGAME(name, gen, disp, mux, flip, db, gs1) \
-static core_tGameData name##GameData = { \
- gen, disp, {flip,0,0,0,0,db,gs1}, NULL, {{0}}, {mux} }; \
-static void init_##name(void) { core_gameData = &name##GameData; }
-
-#define INITGAMEFULL(name, gen, disp, mux, flip, db, gs1, gs2,ss17,ss18,ss19,ss20,ss21,ss22) \
-static core_tGameData name##GameData = { \
- gen, disp, {flip,0,0,0,0,db,gs1,gs2}, NULL, {{0}}, {mux,{ss17,ss18,ss19,ss20,ss21,ss22}}}; \
-static void init_##name(void) { core_gameData = &name##GameData; }
-
-
-static core_tLCDLayout disp16oneline[] = { \
- {0,0,0,16,CORE_SEG16},{0,33,20,16,CORE_SEG16}, {0}
-};
-
-static core_tLCDLayout dispTaxi[] = { \
- DISP_SEG_16(0,CORE_SEG16),DISP_SEG_16(1,CORE_SEG8),\
- { 2, 0,21,7,CORE_SEG7SCH},{0}
-};
-
-static core_tLCDLayout dispPolic[] = {
- { 0,8,20, 8,CORE_SEG8H },
- { 2,0, 0,16,CORE_SEG16 },
- { 4,0,20,16,CORE_SEG8},{0}
-};
-
-static core_tLCDLayout dispRvrbt[] = {
- { 0,18,21, 7, CORE_SEG87H },
- { 0, 4,32, 4, CORE_SEG7H },
- { 2, 0, 0,16, CORE_SEG16 },
- { 4, 0,20,16, CORE_SEG8 },{0}
-};
-
-static MACHINE_DRIVER_START(s11a_one)
- MDRV_IMPORT_FROM(s11_s11aS)
- MDRV_SCREEN_SIZE(640, 400)
- MDRV_VISIBLE_AREA(0, 639, 0, 399)
-MACHINE_DRIVER_END
-
-static MACHINE_DRIVER_START(s11c_one)
- MDRV_IMPORT_FROM(s11_s11cS)
- MDRV_SCREEN_SIZE(640, 400)
- MDRV_VISIBLE_AREA(0, 639, 0, 399)
-MACHINE_DRIVER_END
-#endif
-
-
-/*--------------------
-/ Space Shuttle (S9) 12/84
-/--------------------*/
-#if 0
-static core_tLCDLayout dispSshtl[] = { \
- { 0, 0,21,7, CORE_SEG87},
- { 2, 0,29,7, CORE_SEG87},
- { 4, 0, 1,7, CORE_SEG87}, { 4,26, 9,7,CORE_SEG87},
- { 5,16, 0,1, CORE_SEG7}, { 5,18, 8,1,CORE_SEG7},
- { 5,21,20,1, CORE_SEG7}, { 5,23,28,1,CORE_SEG7},{0}
-};
-#endif
-
-INITGAMEFULL(sshtl, GEN_S9, dispSshtl, 0, FLIP_SWNO(0,41),
- S11_BCDDIAG|S11_BCDDISP,0,3750, 39, 40, 27, 26, 25, 0)
-S9_ROMSTARTx4(sshtl,l7,"cpu_u20.128", CRC(848ad54c) SHA1(4e4ce5fb970da37706472f94a27fd912e1ecb1a0))
-S9S_SOUNDROM4111( "cpu_u49.128", CRC(20e77990) SHA1(b9ec143526d7d152b653c7119e4d07945b6813eb),
- "spch_u4.732", CRC(b0d03c5e) SHA1(46b952f71a7ecc03e22e427875f6e16a9d124067),
- "spch_u5.732", CRC(13edd4e5) SHA1(46c4052c31ddc20bb87445636f8fe3b6f7bff856),
- "spch_u6.732", CRC(cf48b2e7) SHA1(fe55419a5d40b3a4e8c02a92746b25a075b8efd3))
-S9_ROMEND
-#define ipt_sshtl ipt_s11
-CORE_GAMEDEF(sshtl, l7, "Space Shuttle (L-7) (Pinball)", 1984, "Williams", s9_mS9S,0)
-
-/*--------------------
-/ Sorcerer (S9) 03/85
-/--------------------*/
-INITGAMEFULL(sorcr, GEN_S9, s11_dispS9, 0, FLIP_SWNO(0,44),
- S11_BCDDIAG|S11_BCDDISP,0,0,32,33,21,22,23,0)
-S9_ROMSTART12(sorcr,l1,"cpu_u19.732", CRC(88b6837d) SHA1(d26b06342741443406a72ba48a70e82df62bb26e),
- "cpu_u20.764", CRC(c235b692) SHA1(d3b97fad2d501c894570601b387933c7644f64e6))
-S9S_SOUNDROM41111( "cpu_u49.128", CRC(a0bae1e4) SHA1(dc5172aa1d59191d4119da20757cb2c2469f8fe3),
- "spch_u4.732", CRC(0c81902d) SHA1(6d8f703327e5c73a321fc4aa3a67ce68fff82d70),
- "spch_u5.732", CRC(d48c68ad) SHA1(b1391b87519ad47be3dcce7f8581f871e6a3669f),
- "spch_u6.732", CRC(a5c54d47) SHA1(4e1206412ecf52ae61c9df2055e0715749a6325d),
- "spch_u7.732", CRC(bba9ed18) SHA1(8e37ba8cb6bbc1e0afeef230088beda4513adddb))
-S9_ROMEND
-#define ipt_sorcr ipt_s11
-CORE_CLONEDEF(sorcr,l1,l2, "Sorcerer (L-1) (Pinball)", 1985, "Williams", s9_mS9S,0)
-
-S9_ROMSTART12(sorcr,l2,"cpu_u19.l2", CRC(faf738db) SHA1(a3b3f4160dc837ddf5379e1edb0eafeefcc11e3d),
- "cpu_u20.l2", CRC(74fc8117) SHA1(c228c76ade670603f77bb324e6794ec6dd358285))
-S9S_SOUNDROM41111( "cpu_u49.128", CRC(a0bae1e4) SHA1(dc5172aa1d59191d4119da20757cb2c2469f8fe3),
- "spch_u4.732", CRC(0c81902d) SHA1(6d8f703327e5c73a321fc4aa3a67ce68fff82d70),
- "spch_u5.732", CRC(d48c68ad) SHA1(b1391b87519ad47be3dcce7f8581f871e6a3669f),
- "spch_u6.732", CRC(a5c54d47) SHA1(4e1206412ecf52ae61c9df2055e0715749a6325d),
- "spch_u7.732", CRC(bba9ed18) SHA1(8e37ba8cb6bbc1e0afeef230088beda4513adddb))
-S9_ROMEND
-CORE_GAMEDEF(sorcr, l2, "Sorcerer (L-2) (Pinball)", 1985, "Williams", s9_mS9S,0)
-
-/*--------------------
-/ Comet (S9) 06/85
-/--------------------*/
-INITGAMEFULL(comet, GEN_S9, s11_dispS9, 0, FLIP_SWNO(0,30),
- S11_BCDDIAG|S11_BCDDISP,0,0,47,48,40,41,42,0)
-S9_ROMSTARTx4(comet,l4,"cpu_u20.128", CRC(36193600) SHA1(efdc44ef26c2def8f860a0296e27b2c3dac55ec8))
-S9S_SOUNDROM41111( "cpu_u49.128", CRC(f1db0cbe) SHA1(59b7f36fb2003b90b288abeff56df62ce50f10c6),
- "spch_u4.732", CRC(d0215c49) SHA1(4f0925a826199b6e8baa5e7fbff5cde9e31d505b),
- "spch_u5.732", CRC(89f7ede5) SHA1(bbfbd991c9e005c2fa36d8458803b121f4933618),
- "spch_u6.732", CRC(6ba2aba6) SHA1(783b4e9b38db8677d91f86cb4805f0fa1ae8f856),
- "spch_u7.732", CRC(36545b22) SHA1(f4a026f3fa58dce81b439d76120a6769f4632955))
-S9_ROMEND
-#define ipt_comet ipt_s11
-CORE_CLONEDEF(comet,l4,l5,"Comet (L-4) (Pinball)", 1985, "Williams", s9_mS9S,0)
-
-S9_ROMSTARTx4(comet,l5,"cpu_u20.l5", CRC(d153d9ab) SHA1(0b97591b8ba35207b1427900486d69078ae122bc))
-S9S_SOUNDROM41111( "cpu_u49.128", CRC(f1db0cbe) SHA1(59b7f36fb2003b90b288abeff56df62ce50f10c6),
- "spch_u4.732", CRC(d0215c49) SHA1(4f0925a826199b6e8baa5e7fbff5cde9e31d505b),
- "spch_u5.732", CRC(89f7ede5) SHA1(bbfbd991c9e005c2fa36d8458803b121f4933618),
- "spch_u6.732", CRC(6ba2aba6) SHA1(783b4e9b38db8677d91f86cb4805f0fa1ae8f856),
- "spch_u7.732", CRC(36545b22) SHA1(f4a026f3fa58dce81b439d76120a6769f4632955))
-S9_ROMEND
-CORE_GAMEDEF(comet, l5, "Comet (L-5) (Pinball)", 1985, "Williams", s9_mS9S,0)
-
-/*--------------------
-/ High Speed 01/86
-/--------------------*/
-INITGAMEFULL(hs, GEN_S11X, s11_dispS11, 0, FLIP_SWNO(37,38),
- S11_BCDDIAG,0,0,49,50,35,34,33,0)
-S11_ROMSTART28(hs,l4,"hs_u26.l4", CRC(38b73830) SHA1(df89670f3df2b657dcf1f8ee08e506e54e016028),
- "hs_u27.l4", CRC(24c6f7f0) SHA1(bb0058650ec0908f88b6a202df79e971b46f8594))
-S11XS_SOUNDROM88( "hs_u21.l2", CRC(c0580037) SHA1(675ca65a6a20f8607232c532b4d127641f77d837),
- "hs_u22.l2", CRC(c03be631) SHA1(53823e0f55377a45aa181882c310dd307cf368f5))
-S11CS_SOUNDROM8( "hs_u4.l1", CRC(0f96e094) SHA1(58650705a02a71ced85f5c2a243722a35282cbf7))
-S11_ROMEND
-#define ipt_hs ipt_s11
-
-S11_ROMSTART28(hs,l3,"u26-l3.rom", CRC(fd587959) SHA1(20fe6d7bd617b1fa886362ce520393a25be9a632),
- "hs_u27.l4", CRC(24c6f7f0) SHA1(bb0058650ec0908f88b6a202df79e971b46f8594))
-S11XS_SOUNDROM88( "hs_u21.l2", CRC(c0580037) SHA1(675ca65a6a20f8607232c532b4d127641f77d837),
- "hs_u22.l2", CRC(c03be631) SHA1(53823e0f55377a45aa181882c310dd307cf368f5))
-S11CS_SOUNDROM8( "hs_u4.l1", CRC(0f96e094) SHA1(58650705a02a71ced85f5c2a243722a35282cbf7))
-S11_ROMEND
-
-CORE_GAMEDEF(hs, l4, "High Speed (L-4) (Pinball)", 1986, "Williams", s11_mS11XS,0)
-CORE_CLONEDEF(hs,l3,l4, "High Speed (L-3) (Pinball)", 1986, "Williams", s11_mS11XS,0)
-
-/*--------------------
-/ Grand Lizard 04/86
-/--------------------*/
-INITGAMEFULL(grand, GEN_S11X, s11_dispS11, 0, FLIP_SWNO(0,48),
- S11_BCDDIAG,0,0,43,44,0,0,0,0)
-S11_ROMSTART28(grand,l4,"lzrd_u26.l4", CRC(5fe50db6) SHA1(7e2adfefce5c33ad605606574dbdfb2642aa0e85),
- "lzrd_u27.l4", CRC(6462ca55) SHA1(0ebfa998d3cefc213ada9ed815d44977120e5d6d))
-S11XS_SOUNDROM44( "lzrd_u21.l1", CRC(98859d37) SHA1(08429b9e6a3b3007815373dc280b985e3441aa9f),
- "lzrd_u22.l1", CRC(4e782eba) SHA1(b44ab499128300175bdb57f07ffe2992c82e47e4))
-S11CS_SOUNDROM8( "lzrd_u4.l1", CRC(4baafc11) SHA1(3507f5f37e02688fa56cf5bb303eaccdcedede06))
-S11_ROMEND
-#define ipt_grand ipt_s11
-CORE_GAMEDEF(grand, l4, "Grand Lizard (L-4) (Pinball)", 1986, "Williams", s11_mS11XS,0)
-
-/*--------------------
-/ Road Kings 07/86
-/--------------------*/
-INITGAMEFULL(rdkng, GEN_S11X, s11_dispS11,12, FLIP_SWNO(47,48),
- S11_BCDDIAG,S11_RKMUX,0,43,44,24,25,26,27)
-S11_ROMSTART48(rdkng,l4,"road_u26.l4", CRC(4ea27d67) SHA1(cf46e8c5e417999150403d6d40adf8c36b1c0347),
- "road_u27.l4", CRC(5b88e755) SHA1(6438505bb335f670e0892126764819a48eec9b88))
-S11XS_SOUNDROM88( "road_u21.l1", CRC(f34efbf4) SHA1(cb5ffe9818994f4681e3492a5cd46f410d2e5353),
- "road_u22.l1", CRC(a9803804) SHA1(a400d4621c3f7a6e47546b2f33dc4920183a5a74))
-S11CS_SOUNDROM8( "road_u4.l1", CRC(4395b48f) SHA1(2325ce6ba7f6f92f884c302e6f053c31229dc774))
-S11_ROMEND
-#define ipt_rdkng ipt_s11
-CORE_GAMEDEF(rdkng, l4, "Road Kings (L-4) (Pinball)", 1986, "Williams", s11_mS11XS,0)
-
-S11_ROMSTART48(rdkng,l1,"road_u26.l1", CRC(19abe96b) SHA1(d6c3b6dab328f23cc4506e4f56cd0beeb06fb3cb),
- "road_u27.l1", CRC(3dcad794) SHA1(0cf06f8e16d738f0bc0111e2e12351a26e2f02c6))
-S11XS_SOUNDROM88( "road_u21.l1", CRC(f34efbf4) SHA1(cb5ffe9818994f4681e3492a5cd46f410d2e5353),
- "road_u22.l1", CRC(a9803804) SHA1(a400d4621c3f7a6e47546b2f33dc4920183a5a74))
-S11CS_SOUNDROM8( "road_u4.l1", CRC(4395b48f) SHA1(2325ce6ba7f6f92f884c302e6f053c31229dc774))
-S11_ROMEND
-CORE_CLONEDEF(rdkng,l1,l4,"Road Kings (L-1) (Pinball)", 1986, "Williams", s11_mS11XS,0)
-
-S11_ROMSTART48(rdkng,l2,"road_u26.l1", CRC(19abe96b) SHA1(d6c3b6dab328f23cc4506e4f56cd0beeb06fb3cb),
- "road_u27.l2", CRC(aff45e2b) SHA1(c52aca20639f519a940951ef04c2bd179a596b30))
-S11XS_SOUNDROM88( "road_u21.l1", CRC(f34efbf4) SHA1(cb5ffe9818994f4681e3492a5cd46f410d2e5353),
- "road_u22.l1", CRC(a9803804) SHA1(a400d4621c3f7a6e47546b2f33dc4920183a5a74))
-S11CS_SOUNDROM8( "road_u4.l1", CRC(4395b48f) SHA1(2325ce6ba7f6f92f884c302e6f053c31229dc774))
-S11_ROMEND
-CORE_CLONEDEF(rdkng,l2,l4,"Road Kings (L-2) (Pinball)", 1986, "Williams", s11_mS11XS,0)
-
-S11_ROMSTART48(rdkng,l3,"road_u26.l3", CRC(9bade45d) SHA1(c1791724761cdd1d863e12b02655c5fed8936162),
- "road_u27.l3", CRC(97b599dc) SHA1(18524d22a75b0569bb480d847cef8047ee51f91e))
-S11XS_SOUNDROM88( "road_u21.l1", CRC(f34efbf4) SHA1(cb5ffe9818994f4681e3492a5cd46f410d2e5353),
- "road_u22.l1", CRC(a9803804) SHA1(a400d4621c3f7a6e47546b2f33dc4920183a5a74))
-S11CS_SOUNDROM8( "road_u4.l1", CRC(4395b48f) SHA1(2325ce6ba7f6f92f884c302e6f053c31229dc774))
-S11_ROMEND
-CORE_CLONEDEF(rdkng,l3,l4,"Road Kings (L-3) (Pinball)", 1986, "Williams", s11_mS11XS,0)
-
-/*--------------------
-/ Pinbot 10/86
-/--------------------*/
-INITGAMEFULL(pb, GEN_S11X, s11_dispS11, 14, FLIP_SWNO(10,11),
- 0,0,0, 53, 0, 48, 54, 55,52)
-S11_ROMSTART48(pb,l5,"pbot_u26.l5", CRC(daa0c8e4) SHA1(47289b350eb0d84aa0d37e53383e18625451bbe8),
- "pbot_u27.l5", CRC(e625d6ce) SHA1(1858dc2183954342b8e2e5eb9a14edcaa8dad5ae))
-S11XS_SOUNDROM88( "pbot_u21.l1", CRC(3eab88d9) SHA1(667e3b675e2ae8fec6a6faddb9b0dd5531d64f8f),
- "pbot_u22.l1", CRC(a2d2c9cb) SHA1(46437dc54538f1626caf41a2818ddcf8000c44e4))
-S11CS_SOUNDROM88( "pbot_u4.l1", CRC(de5926bd) SHA1(3d111e27c5f0c8c0afc5fe5cc45bf77c12b69228),
- "pbot_u19.l1", CRC(40eb4e9f) SHA1(07b0557b35599a2dd5aa66a306fbbe8f50eed998))
-S11_ROMEND
-#define ipt_pb ipt_s11
-
-S11_ROMSTART48(pb,l2,"u26-l2.rom", CRC(e3b94ca4) SHA1(1db2acb025941cc165cc7ec70a160e07ab1eeb2e),
- "u27-l2.rom", CRC(0a334fc5) SHA1(d08afe6ddc141e37f97ea588d184a316ff7f6db7))
-S11XS_SOUNDROM88( "pbot_u21.l1", CRC(3eab88d9) SHA1(667e3b675e2ae8fec6a6faddb9b0dd5531d64f8f),
- "pbot_u22.l1", CRC(a2d2c9cb) SHA1(46437dc54538f1626caf41a2818ddcf8000c44e4))
-S11CS_SOUNDROM88( "pbot_u4.l1", CRC(de5926bd) SHA1(3d111e27c5f0c8c0afc5fe5cc45bf77c12b69228),
- "pbot_u19.l1", CRC(40eb4e9f) SHA1(07b0557b35599a2dd5aa66a306fbbe8f50eed998))
-S11_ROMEND
-
-S11_ROMSTART48(pb,l3,"u26-l2.rom", CRC(e3b94ca4) SHA1(1db2acb025941cc165cc7ec70a160e07ab1eeb2e),
- "u27-l3.rom", CRC(6f40ee84) SHA1(85453137e3fdb1e422e3903dd053e04c9f2b9607))
-S11XS_SOUNDROM88( "pbot_u21.l1", CRC(3eab88d9) SHA1(667e3b675e2ae8fec6a6faddb9b0dd5531d64f8f),
- "pbot_u22.l1", CRC(a2d2c9cb) SHA1(46437dc54538f1626caf41a2818ddcf8000c44e4))
-S11CS_SOUNDROM88( "pbot_u4.l1", CRC(de5926bd) SHA1(3d111e27c5f0c8c0afc5fe5cc45bf77c12b69228),
- "pbot_u19.l1", CRC(40eb4e9f) SHA1(07b0557b35599a2dd5aa66a306fbbe8f50eed998))
-S11_ROMEND
-
-CORE_GAMEDEF(pb, l5, "Pinbot (L-5) (Pinball)", 1987, "Williams", s11_mS11XSL,0)
-CORE_CLONEDEF(pb,l2,l5, "Pinbot (L-2) (Pinball)", 1987, "Williams", s11_mS11XSL,0)
-CORE_CLONEDEF(pb,l3,l5, "Pinbot (L-3) (Pinball)", 1987, "Williams", s11_mS11XSL,0)
-
-/*--------------------
-/ F14 Tomcat 3/87
-/--------------------*/
-INITGAMEFULL(f14, GEN_S11A, s11_dispS11a, 14, FLIP_SWNO(15,63),
- 0,0,0, 57, 58, 0, 28, 0, 0)
-S11_ROMSTART48(f14,l1,"f14_u26.l1", CRC(62c2e615) SHA1(456ce0d1f74fa5e619c272880ba8ac6819848ddc),
- "f14_u27.l1", CRC(da1740f7) SHA1(1395a4f3891a043cfedc5426ec88af35eab8d4ea))
-S11XS_SOUNDROM88( "f14_u21.l1", CRC(e412300c) SHA1(382d0cfa47abea295f0c7501bc0a010473e9d73b),
- "f14_u22.l1", CRC(c9dd7496) SHA1(de3cb855d87033274cc912578b02d1593d2d69f9))
-S11CS_SOUNDROM88( "f14_u4.l1", CRC(43ecaabf) SHA1(64b50dbff03cd556130d0cff47b951fdf37d397d),
- "f14_u19.l1", CRC(d0de4a7c) SHA1(46ecd5786653add47751cc56b38d9db7c4622377))
-S11_ROMEND
-#define ipt_f14 ipt_s11
-CORE_GAMEDEF(f14, l1, "F14 Tomcat (L-1) (Pinball)", 1987, "Williams", s11_mS11AS,0)
-
-/*--------------------
-/ Fire! 8/87
-/--------------------*/
-INITGAMEFULL(fire, GEN_S11A, s11_dispS11a, 12, FLIP_SWNO(23,24),
- 0,0,0, 0,0, 61, 62, 57, 58)
-S11_ROMSTART48(fire,l3,"fire_u26.l3", CRC(48abae33) SHA1(00ce24316aa007eec090ae74818003e11a141214),
- "fire_u27.l3", CRC(4ebf4888) SHA1(45dc0231404ed70be2ab5d599a673aac6271550e))
-S11XS_SOUNDROM88( "fire_u21.l2", CRC(2edde0a4) SHA1(de292a340a3a06b0b996fc69fee73eb7bbfbbe64),
- "fire_u22.l2", CRC(16145c97) SHA1(523e99df3907a2c843c6e27df4d16799c4136a46))
-S11CS_SOUNDROM8( "fire_u4.l1", CRC(0e058918) SHA1(4d6bf2290141119174787f8dd653c47ea4c73693))
-
-S11_ROMEND
-#define ipt_fire ipt_s11
-CORE_GAMEDEF(fire, l3, "Fire! (L-3) (Pinball)", 1987, "Williams", s11_mS11AS,0)
-
-/*--------------------
-/ Big Guns 10/87
-/--------------------*/
-INITGAME(bguns, GEN_S11A,s11_dispS11a,12, FLIP_SWNO(52,53) ,0,0)
-S11_ROMSTART48(bguns,l8,"guns_u26.l8", CRC(792dc1e8) SHA1(34586585bbaf579cb522569238e24d9ab891b471),
- "guns_u27.l8", CRC(ac4a1a51) SHA1(d48b5e5b550107df8c6edc2d5f78777d7d408959))
-S11XS_SOUNDROM88( "guns_u21.l1", CRC(35c6bfe4) SHA1(83dbd10311add75f56046de58d315f8a87389703),
- "guns_u22.l1", CRC(091a5cb8) SHA1(db77314241eb6ed7f4385f99312a49b7caad1283))
-S11CS_SOUNDROM88( "gund_u4.l1", CRC(d4a430a3) SHA1(5b44e3f313cc7cb75f51c239013d46e5eb986f9d),
- "guns_u19.l1", CRC(ec1a6c23) SHA1(45bb4f78b89de9e690b5f9741d17f97766e702d6))
-S11_ROMEND
-#define ipt_bguns ipt_s11
-CORE_GAMEDEF(bguns, l8, "Big Guns (L-8) (Pinball)", 1987, "Williams", s11_mS11AS,0)
-
-S11_ROMSTART48(bguns,l7,"guns_u26.l8", CRC(792dc1e8) SHA1(34586585bbaf579cb522569238e24d9ab891b471),
- "guns_u27.l7", CRC(8ff26d24) SHA1(eab732b401144ad7efc80d336299beae85ca7d24))
-S11XS_SOUNDROM88( "guns_u21.l1", CRC(35c6bfe4) SHA1(83dbd10311add75f56046de58d315f8a87389703),
- "guns_u22.l1", CRC(091a5cb8) SHA1(db77314241eb6ed7f4385f99312a49b7caad1283))
-S11CS_SOUNDROM88( "gund_u4.l1", CRC(d4a430a3) SHA1(5b44e3f313cc7cb75f51c239013d46e5eb986f9d),
- "guns_u19.l1", CRC(ec1a6c23) SHA1(45bb4f78b89de9e690b5f9741d17f97766e702d6))
-S11_ROMEND
-CORE_CLONEDEF(bguns,l7,l8,"Big Guns (L-7) (Pinball)", 1987, "Williams", s11_mS11AS,0)
-
-S11_ROMSTART48(bguns,la,"u26-l-a.rom", CRC(613b4d5c) SHA1(7eed4ddb661cd03839a9a89ca695de9cbd1c4d45),
- "u27-l-a.rom", CRC(eee9e1cc) SHA1(32fbade5cbc9047a61d4ce0ec1e616d5324d507f))
-S11XS_SOUNDROM88( "guns_u21.l1", CRC(35c6bfe4) SHA1(83dbd10311add75f56046de58d315f8a87389703),
- "guns_u22.l1", CRC(091a5cb8) SHA1(db77314241eb6ed7f4385f99312a49b7caad1283))
-S11CS_SOUNDROM88( "gund_u4.l1", CRC(d4a430a3) SHA1(5b44e3f313cc7cb75f51c239013d46e5eb986f9d),
- "guns_u19.l1", CRC(ec1a6c23) SHA1(45bb4f78b89de9e690b5f9741d17f97766e702d6))
-S11_ROMEND
-CORE_CLONEDEF(bguns,la,l8,"Big Guns (L-A) (Pinball)", 1987, "Williams", s11_mS11AS,0)
-
-S11_ROMSTART48(bguns,p1,"u26-p-1.rom", CRC(26b8d58f) SHA1(678d4f706b862f3168d6d15859dba6288912e462),
- "u27-p-1.rom", CRC(2fba9a0d) SHA1(16629a5f009865825207378118a147e3135c51cf))
-S11XS_SOUNDROM88( "guns_u21.l1", CRC(35c6bfe4) SHA1(83dbd10311add75f56046de58d315f8a87389703),
- "guns_u22.l1", CRC(091a5cb8) SHA1(db77314241eb6ed7f4385f99312a49b7caad1283))
-S11CS_SOUNDROM88( "gund_u4.l1", CRC(d4a430a3) SHA1(5b44e3f313cc7cb75f51c239013d46e5eb986f9d),
- "guns_u19.l1", CRC(ec1a6c23) SHA1(45bb4f78b89de9e690b5f9741d17f97766e702d6))
-S11_ROMEND
-CORE_CLONEDEF(bguns,p1,l8,"Big Guns (P-1) (Pinball)", 1987, "Williams", s11_mS11AS,0)
-
-/*--------------------
-/ Space Station 1/88
-/--------------------*/
-INITGAMEFULL(spstn, GEN_S11B,s11_dispS11b1,12, FLIP_SWNO(55,56),
- 0,0,0,0,63,61,64,60,62)
-S11_ROMSTART48(spstn,l5,"sstn_u26.l5", CRC(614c8528) SHA1(4f177e3d72a5cc302c62c756ec778ae2a98c8f2e),
- "sstn_u27.l5", CRC(4558d963) SHA1(be317310978cca4ddd616d76fe892dcf7c980473))
-S11XS_SOUNDROM88( "sstn_u21.l1", CRC(a2ceccaa) SHA1(4c23713543e06458e49e3f2d472543c4a4246a93),
- "sstn_u22.l1", CRC(2b745994) SHA1(67ebfe13db6670237496b033611bf9d4ba8d5c30))
-S11CS_SOUNDROM8( "sstn_u4.l1", CRC(ad7a0511) SHA1(9aa6412de12599fd0d10faef8fffb5d535f49015))
-S11_ROMEND
-#define ipt_spstn ipt_s11
-CORE_GAMEDEF(spstn, l5, "Space Station (L-5) (Pinball)", 1988, "Williams", s11_mS11BS,0)
-
-/*--------------------
-/ Cyclone 2/88
-/--------------------*/
-INITGAME(cycln, GEN_S11B,s11_dispS11b1, 12, FLIP_SWNO(57,58), 0,0)
-S11_ROMSTART48(cycln,l5,"cycl_u26.l5", CRC(9ab15e12) SHA1(406f3212269dc42de1f3fabcf179958adbd4b5e8),
- "cycl_u27.l5", CRC(c4b6aac0) SHA1(9058e450dbf9d198b1746c258b0e437d7ee844e9))
-S11XS_SOUNDROM88( "cycl_u21.l1", CRC(d4f69a7c) SHA1(da0ce27d92b22583be54a41fc8083cee803c987a),
- "cycl_u22.l1", CRC(28dc8f13) SHA1(bccce3a9b6b2f52da919c6df8db07e5e3de12657))
-S11CS_SOUNDROM88( "cycl_u4.l5", CRC(d04b663b) SHA1(f54c6df08ec73b733cfeb2a989e44e5c04da3d9e),
- "cycl_u19.l1", CRC(a20f6519) SHA1(63ded5f76133340fa31d4fe65420f4465866fb85))
-S11_ROMEND
-#define ipt_cycln ipt_s11
-CORE_GAMEDEF(cycln, l5, "Cyclone (L-5) (Pinball)", 1988, "Williams", s11_mS11BS,0)
-
-S11_ROMSTART48(cycln,l4,"cycl_u26.l4", CRC(7da30995) SHA1(3774004df22ddce508fe0604c0349df3edd513b4),
- "cycl_u27.l4", CRC(8874d65f) SHA1(600e2e8cd21faf8999ebef06fb08c43a1eb2ffd7))
-S11XS_SOUNDROM88( "cycl_u21.l1", CRC(d4f69a7c) SHA1(da0ce27d92b22583be54a41fc8083cee803c987a),
- "cycl_u22.l1", CRC(28dc8f13) SHA1(bccce3a9b6b2f52da919c6df8db07e5e3de12657))
-S11CS_SOUNDROM88( "cycl_u4.l5", CRC(d04b663b) SHA1(f54c6df08ec73b733cfeb2a989e44e5c04da3d9e),
- "cycl_u19.l1", CRC(a20f6519) SHA1(63ded5f76133340fa31d4fe65420f4465866fb85))
-S11_ROMEND
-CORE_CLONEDEF(cycln, l4, l5, "Cyclone (L-4) (Pinball)", 1988, "Williams", s11_mS11BS,0)
-
-/*--------------------
-/ Banzai Run 7/88
-/--------------------*/
-INITGAME(bnzai, GEN_S11B,s11_dispS11b1,12, FLIP_SWNO(25,34),0,0)
-S11_ROMSTART48(bnzai,l3,"banz_u26.l3", CRC(ca578aa3) SHA1(32c03178cc9d9514f76e084e56f6cf6f82754331),
- "banz_u27.l3", CRC(af66fac4) SHA1(84929aaad8a8e4a312a230b73f206d3b43a04dc3))
-S11XS_SOUNDROM88( "banz_u21.l1", CRC(cd06716e) SHA1(b61a0dc017dd4a09296a43a855461c5cee07517b),
- "banz_u22.l1", CRC(e8159033) SHA1(e8f15801feefeb30768e88d685c208108aa134e8))
-S11CS_SOUNDROM888( "banz_u4.l1", CRC(8fd69c69) SHA1(c024cda85c6616943c3a12ab5943a7be8709bfe3),
- "banz_u19.l1", CRC(9104248c) SHA1(48a8c41f3a4127f4fb4de37e876c8380e3511e1f),
- "banz_u20.l1", CRC(26b3d15c) SHA1(528084b6c62394f8ed9fc0f90b91d844060fc904))
-S11_ROMEND
-#define ipt_bnzai ipt_s11
-
-S11_ROMSTART48(bnzai,g3,"banz_u26.l3g",CRC(744b8758) SHA1(0bcd5dfd872656d0261a819e3dbd222754585ec0),
- "banz_u27.l3", CRC(af66fac4) SHA1(84929aaad8a8e4a312a230b73f206d3b43a04dc3))
-S11XS_SOUNDROM88( "banz_u21.l1", CRC(cd06716e) SHA1(b61a0dc017dd4a09296a43a855461c5cee07517b),
- "banz_u22.l1", CRC(e8159033) SHA1(e8f15801feefeb30768e88d685c208108aa134e8))
-S11CS_SOUNDROM888( "banz_u4.l1", CRC(8fd69c69) SHA1(c024cda85c6616943c3a12ab5943a7be8709bfe3),
- "banz_u19.l1", CRC(9104248c) SHA1(48a8c41f3a4127f4fb4de37e876c8380e3511e1f),
- "banz_u20.l1", CRC(26b3d15c) SHA1(528084b6c62394f8ed9fc0f90b91d844060fc904))
-S11_ROMEND
-
-S11_ROMSTART48(bnzai,l1,"u26-l1.rom", CRC(556abdc0) SHA1(6de78345e5839a4ae9ff97273b6edb2635e0e8b4),
- "u27-l1.rom", CRC(7fc6de2e) SHA1(a7b42c2cd8c1e3810a319c755e52273454d5ca41))
-S11XS_SOUNDROM88( "banz_u21.l1", CRC(cd06716e) SHA1(b61a0dc017dd4a09296a43a855461c5cee07517b),
- "banz_u22.l1", CRC(e8159033) SHA1(e8f15801feefeb30768e88d685c208108aa134e8))
-S11CS_SOUNDROM888( "banz_u4.l1", CRC(8fd69c69) SHA1(c024cda85c6616943c3a12ab5943a7be8709bfe3),
- "banz_u19.l1", CRC(9104248c) SHA1(48a8c41f3a4127f4fb4de37e876c8380e3511e1f),
- "banz_u20.l1", CRC(26b3d15c) SHA1(528084b6c62394f8ed9fc0f90b91d844060fc904))
-S11_ROMEND
-
-S11_ROMSTART48(bnzai,pa,"u26-pa.rom", CRC(65a73e31) SHA1(0332b51ecfc548f72eaca402d83a5ad6dd223272),
- "u27-pa.rom", CRC(c64e2898) SHA1(b2291e9e65f8392f2f05f116dc47fcaf37500e60))
-S11XS_SOUNDROM88( "banz_u21.l1", CRC(cd06716e) SHA1(b61a0dc017dd4a09296a43a855461c5cee07517b),
- "banz_u22.l1", CRC(e8159033) SHA1(e8f15801feefeb30768e88d685c208108aa134e8))
-S11CS_SOUNDROM888( "u4-p7.rom", CRC(630d1ce9) SHA1(fb7f6004b94bf20281216519f18b53949eef4405),
- "banz_u19.l1", CRC(9104248c) SHA1(48a8c41f3a4127f4fb4de37e876c8380e3511e1f),
- "banz_u20.l1", CRC(26b3d15c) SHA1(528084b6c62394f8ed9fc0f90b91d844060fc904))
-S11_ROMEND
-
-CORE_GAMEDEF(bnzai, l3, "Banzai Run (L-3) (Pinball)", 1988, "Williams", s11_mS11BS,0)
-CORE_CLONEDEF(bnzai,g3,l3,"Banzai Run (L-3) Germany (Pinball)", 1988, "Williams", s11_mS11BS,0)
-CORE_CLONEDEF(bnzai,l1,l3,"Banzai Run (L-1) (Pinball)", 1988, "Williams", s11_mS11BS,0)
-CORE_CLONEDEF(bnzai,pa,l3,"Banzai Run (P-A) (Pinball)", 1988, "Williams", s11_mS11BS,0)
-
-/*--------------------
-/ Swords of Fury 8/88
-/--------------------*/
-INITGAME(swrds, GEN_S11B, s11_dispS11b1,12, FLIP_SWNO(58,60),0,0)
-S11_ROMSTART48(swrds,l2,"swrd_u26.l2", CRC(c036f4ff) SHA1(a86840dbc117774aeca695ded1ab3ec76e134325),
- "swrd_u27.l2", CRC(33b0fb5a) SHA1(a55bdfe20b1c869eae52d3be75df1c550d0b20f5))
-S11XS_SOUNDROM88( "swrd_u21.l1", CRC(ee8b0a64) SHA1(c2c52059a9a5f7c0abcfdd76cfc6d5b5451f7d1e),
- "swrd_u22.l1", CRC(73dcdbb0) SHA1(66f5b3804442a1742b6fb3cccf539c4df956b3f2))
-S11CS_SOUNDROM88( "swrd_u4.l1", CRC(272b509c) SHA1(756d3783f664ca1c41dd1d12032330b74c3f89ea),
- "swrd_u19.l1", CRC(a22f84fa) SHA1(1731e86e85cca2d283512d5048c787df3970c9c5))
-S11_ROMEND
-#define ipt_swrds ipt_s11
-CORE_GAMEDEF(swrds, l2, "Swords of Fury (L-2) (Pinball)", 1988, "Williams", s11_mS11BS, 0)
-
-/*--------------------
-/ Taxi 10/88
-/--------------------*/
-
-INITGAME(taxi, GEN_S11B,dispTaxi,12, FLIP_SWNO(58,57),S11_LOWALPHA|S11_DISPINV,S11_MUXSW2)
-S11_ROMSTART48(taxi, l4,"taxi_u26.l4", CRC(a70d8088) SHA1(0986035436e2b1199571248dac8eb7a903b5015c),
- "taxi_u27.l4", CRC(f973f79c) SHA1(a33ab04451d8a5b2354e4d174c238878e962f228))
-S11XS_SOUNDROM88( "taxi_u21.l1", CRC(2b20e9ab) SHA1(d785667ae0fd237dd8343bb1ecfbacf050ec2c6f),
- "taxi_u22.l1", CRC(d13055c5) SHA1(8c2959bde03567b83db425ebc9e7309d9601c2b2))
-S11CS_SOUNDROM88( "taxi_u4.l1", CRC(6082ebb5) SHA1(37e19ad27fe05b4c8e572f6598d2d574e4ac5a7d),
- "taxi_u19.l1", CRC(91c64913) SHA1(10e48977f925f6bc1be0c56854aafa99283b4047))
-S11_ROMEND
-S11_ROMSTART48(taxi, l3,"taxi_u26.l4", CRC(a70d8088) SHA1(0986035436e2b1199571248dac8eb7a903b5015c),
- "taxi_u27.l3", CRC(e2bfb6fa) SHA1(ba1bddffe4d4e8f04131dd6f5a0380765fbcdfc5))
-S11XS_SOUNDROM88( "taxi_u21.l1", CRC(2b20e9ab) SHA1(d785667ae0fd237dd8343bb1ecfbacf050ec2c6f),
- "taxi_u22.l1", CRC(d13055c5) SHA1(8c2959bde03567b83db425ebc9e7309d9601c2b2))
-S11CS_SOUNDROM88( "taxi_u4.l1", CRC(6082ebb5) SHA1(37e19ad27fe05b4c8e572f6598d2d574e4ac5a7d),
- "taxi_u19.l1", CRC(91c64913) SHA1(10e48977f925f6bc1be0c56854aafa99283b4047))
-S11_ROMEND
-S11_ROMSTART48(taxi, lg1,"u26-lg1m.rom", CRC(40a2f33c) SHA1(815910b36a5df6c63862590c42b6a41286f38236),
- "u27-lg1m.rom", CRC(955dcbab) SHA1(e66e0da6366885ceed7618b09cf66fe11ae27627))
-S11XS_SOUNDROM88( "taxi_u21.l1", CRC(2b20e9ab) SHA1(d785667ae0fd237dd8343bb1ecfbacf050ec2c6f),
- "taxi_u22.l1", CRC(d13055c5) SHA1(8c2959bde03567b83db425ebc9e7309d9601c2b2))
-S11CS_SOUNDROM88( "taxi_u4.l1", CRC(6082ebb5) SHA1(37e19ad27fe05b4c8e572f6598d2d574e4ac5a7d),
- "taxi_u19.l1", CRC(91c64913) SHA1(10e48977f925f6bc1be0c56854aafa99283b4047))
-S11_ROMEND
-#define ipt_taxi ipt_s11
-CORE_GAMEDEF(taxi , l4, "Taxi (Lola) (L-4) (Pinball)", 1988, "Williams", s11_mS11BS,0)
-CORE_CLONEDEF(taxi , l3, l4, "Taxi (Marilyn) (L-3) (Pinball)", 1988, "Williams", s11_mS11BS,0)
-CORE_CLONEDEF(taxi , lg1, l4, "Taxi (Marilyn) (L-1) Germany (Pinball)", 1988, "Williams", s11_mS11BS,0)
-
-/*--------------------
-/ Jokerz 1/89
-/--------------------*/
-INITGAME(jokrz, GEN_S11B2, s11_dispS11b2,12, FLIP_SWNO(58,57),S11_LOWALPHA|S11_DISPINV,S11_MUXSW2)
-S11_ROMSTART48(jokrz,l6,"jokeru26.l6", CRC(c748c1ba) SHA1(e74b3be2c5d3e81ff29bc4444384f456846111b3),
- "jokeru27.l6", CRC(612d0ea7) SHA1(35d88de615a15442689e13414117b7dfca6a4614))
-S11XS_SOUNDROM88( "jokeru21.l1", CRC(9e2be4f6) SHA1(6e26b55935d0c8138176b54a11c1a9ab58366628),
- "jokeru22.l1", CRC(2f67160c) SHA1(f1e179fde41f9bf8226069c24b0bd5152a13e518))
-S11JS_SOUNDROM( "jokeru5.l2" , CRC(e9dc0095) SHA1(23a99555e50461ccc8e67de01796642c080294c2))
-S11_ROMEND
-#define ipt_jokrz ipt_s11
-CORE_GAMEDEF(jokrz, l6, "Jokerz (L-6) (Pinball)", 1989, "Williams", s11_mS11B2S,GAME_IMPERFECT_SOUND)
-
-S11_ROMSTART48(jokrz,l3,"u26-l3.rom", CRC(3bf963df) SHA1(9f7757d96deca8638dbc1fe3669eee78dc222ebb),
- "u27-l3.rom", CRC(32526aff) SHA1(c4ee4b58e90f214012addada114fc9333d2d274c))
-S11XS_SOUNDROM88( "jokeru21.l1", CRC(9e2be4f6) SHA1(6e26b55935d0c8138176b54a11c1a9ab58366628),
- "jokeru22.l1", CRC(2f67160c) SHA1(f1e179fde41f9bf8226069c24b0bd5152a13e518))
-S11JS_SOUNDROM( "jokeru5.l2" , CRC(e9dc0095) SHA1(23a99555e50461ccc8e67de01796642c080294c2))
-S11_ROMEND
-CORE_CLONEDEF(jokrz,l3,l6,"Jokerz (L-3) (Pinball)", 1989, "Williams", s11_mS11B2S,GAME_IMPERFECT_SOUND)
-
-/*--------------------
-/ Earthshaker 4/89
-/--------------------*/
-INITGAME(esha,GEN_S11B, s11_dispS11b2,12, FLIP_SWNO(58,57),S11_LOWALPHA|S11_DISPINV,S11_MUXSW2)
-S11_ROMSTART48(esha,pr4,"eshk_u26.f1", CRC(15e2bfe3) SHA1(57ce7f017a6f9ab88f221870efde91e97efbc8a6),
- "eshk_u27.f1", CRC(ddfa8edd) SHA1(e59ba6c1e8a0087abda218a8922d83ebefd84666))
-S11XS_SOUNDROM88( "eshk_u21.l1", CRC(feac68e5) SHA1(2f12a78398bc3a468e3e0656da91260d45b0663b),
- "eshk_u22.l1", CRC(44f50fe1) SHA1(a8e24dbb0f5cf300118e1ebdcd2bb6b274d87936))
-S11CS_SOUNDROM88( "eshk_u4.l1", CRC(40069f8c) SHA1(aafdc189259fa9c8dc49e60e978b84775e16c64e),
- "eshk_u19.l1", CRC(e5593075) SHA1(549b03402e5639b449e35325eb52e78f8810b07a))
-
-S11_ROMEND
-S11_ROMSTART48(esha,la3,"eshk_u26.l3", CRC(5350d132) SHA1(fbc671c89f85375c34c49610943c87336123fdc8),
- "eshk_u27.l3", CRC(91389290) SHA1(3f80b77aa0b7db2409bc6b197feb7a4d289b6ec8))
-S11XS_SOUNDROM88( "eshk_u21.l1", CRC(feac68e5) SHA1(2f12a78398bc3a468e3e0656da91260d45b0663b),
- "eshk_u22.l1", CRC(44f50fe1) SHA1(a8e24dbb0f5cf300118e1ebdcd2bb6b274d87936))
-S11CS_SOUNDROM88( "eshk_u4.l1", CRC(40069f8c) SHA1(aafdc189259fa9c8dc49e60e978b84775e16c64e),
- "eshk_u19.l1", CRC(e5593075) SHA1(549b03402e5639b449e35325eb52e78f8810b07a))
-
-S11_ROMEND
-S11_ROMSTART48(esha,lg1,"u26-lg1.rom", CRC(6b1c4d12) SHA1(8e90878ab3b6319e4b81967b4cb8c47e1b6b936c),
- "u27-lg1.rom", CRC(6ee69cda) SHA1(227a4b311b9fa5f34d38bee2b5063572a06809cf))
-S11XS_SOUNDROM88( "eshk_u21.l1", CRC(feac68e5) SHA1(2f12a78398bc3a468e3e0656da91260d45b0663b),
- "eshk_u22.l1", CRC(44f50fe1) SHA1(a8e24dbb0f5cf300118e1ebdcd2bb6b274d87936))
-S11CS_SOUNDROM88( "eshk_u4.l1", CRC(40069f8c) SHA1(aafdc189259fa9c8dc49e60e978b84775e16c64e),
- "eshk_u19.l1", CRC(e5593075) SHA1(549b03402e5639b449e35325eb52e78f8810b07a))
-
-S11_ROMEND
-S11_ROMSTART48(esha,lg2,"u26-lg2.rom", CRC(e30361c6) SHA1(f5626aaf36348b3aad6b04901c5d84eee1153f51),
- "u27-lg1.rom", CRC(6ee69cda) SHA1(227a4b311b9fa5f34d38bee2b5063572a06809cf))
-S11XS_SOUNDROM88( "eshk_u21.l1", CRC(feac68e5) SHA1(2f12a78398bc3a468e3e0656da91260d45b0663b),
- "eshk_u22.l1", CRC(44f50fe1) SHA1(a8e24dbb0f5cf300118e1ebdcd2bb6b274d87936))
-S11CS_SOUNDROM88( "eshk_u4.l1", CRC(40069f8c) SHA1(aafdc189259fa9c8dc49e60e978b84775e16c64e),
- "eshk_u19.l1", CRC(e5593075) SHA1(549b03402e5639b449e35325eb52e78f8810b07a))
-
-S11_ROMEND
-S11_ROMSTART48(esha,la1,"u26-la1.rom", CRC(c9c9a32d) SHA1(cd273198e777b644535836ea5785b0dfe5c792c5),
- "u27-la1.rom", CRC(3433b516) SHA1(5aff6bc72f2d6c0fd00f125ed5b4b6d8035d54bc))
-S11XS_SOUNDROM88( "eshk_u21.l1", CRC(feac68e5) SHA1(2f12a78398bc3a468e3e0656da91260d45b0663b),
- "eshk_u22.l1", CRC(44f50fe1) SHA1(a8e24dbb0f5cf300118e1ebdcd2bb6b274d87936))
-S11CS_SOUNDROM88( "eshk_u4.l1", CRC(40069f8c) SHA1(aafdc189259fa9c8dc49e60e978b84775e16c64e),
- "eshk_u19.l1", CRC(e5593075) SHA1(549b03402e5639b449e35325eb52e78f8810b07a))
-S11_ROMEND
-S11_ROMSTART48(esha,pa1,"u26-pa1.rom", CRC(08c0b0d6) SHA1(36c23655e1ae07a3a5c91f68fdb27a78ca272683),
- "u27-pa1.rom", CRC(ddd6e8bb) SHA1(b46da424f9c4ac70e65af3ee7b4e08df38ffdb26))
-S11XS_SOUNDROM88( "eshk_u21.l1", CRC(feac68e5) SHA1(2f12a78398bc3a468e3e0656da91260d45b0663b),
- "eshk_u22.l1", CRC(44f50fe1) SHA1(a8e24dbb0f5cf300118e1ebdcd2bb6b274d87936))
-S11CS_SOUNDROM88( "u4-p1.rom", CRC(7219ffc2) SHA1(b8585b7d12f401d8ba4d95a5e2f20d35ff0ac26a),
- "eshk_u19.l1", CRC(e5593075) SHA1(549b03402e5639b449e35325eb52e78f8810b07a))
-S11_ROMEND
-#define ipt_esha ipt_s11
-CORE_GAMEDEF (esha, la3, "Earthshaker (LA-3) (Pinball)", 1988, "Williams", s11_mS11BS,0)
-CORE_CLONEDEF(esha, pr4, la3, "Earthshaker (Family version) (PR-4) (Pinball)", 1989, "Williams", s11_mS11BS,0)
-CORE_CLONEDEF(esha, lg1, la3, "Earthshaker (German) (LG-1) (Pinball)", 1988, "Williams", s11_mS11BS,0)
-CORE_CLONEDEF(esha, lg2, la3, "Earthshaker (German) (LG-2) (Pinball)", 1988, "Williams", s11_mS11BS,0)
-CORE_CLONEDEF(esha, la1, la3, "Earthshaker (LA-1) (Pinball)", 1988, "Williams", s11_mS11BS,0)
-CORE_CLONEDEF(esha, pa1, la3, "Earthshaker (Prototype) (PA-1) (Pinball)", 1988, "Williams", s11_mS11BS,0)
-
-/*-----------------------
-/ Black Knight 2000 6/89
-/-----------------------*/
-INITGAME(bk2k, GEN_S11B, s11_dispS11b2,12, FLIP_SWNO(58,57), S11_LOWALPHA|S11_DISPINV,S11_MUXSW2)
-S11_ROMSTART48(bk2k, l4,"bk2k_u26.l4", CRC(16c7b9e7) SHA1(b6d5edb5ac2b58da699702ece00534d18c1a9fd7),
- "bk2k_u27.l4", CRC(5cf3ab40) SHA1(ee8cb554d10478b028da4a761476d6ec8c56a042))
-S11XS_SOUNDROM88( "bk2k_u21.l1", CRC(08be36ad) SHA1(0f4c448e003df54ed8ccf0e0c57f6123ce1e2027),
- "bk2k_u22.l1", CRC(9c8becd8) SHA1(9090e8104dad63f14246caabafec428d94d5e18d))
-S11CS_SOUNDROM88( "bk2k_u4.l2", CRC(1d87281b) SHA1(609288b017aac6ce6da8717a35fdf87013adeb3c),
- "bk2k_u19.l1", CRC(58e162b2) SHA1(891f810ae18b46593f570d719f0290a1d08a1a10))
-S11_ROMEND
-#define ipt_bk2k ipt_s11
-CORE_GAMEDEF(bk2k, l4, "Black Knight 2000 (L-4) (Pinball)", 1989, "Williams", s11_mS11BS,0)
-
-S11_ROMSTART48(bk2k,lg1,"bk2kgu26.lg1", CRC(f916d163) SHA1(bd8cbac9345a8debd01c8c68110652f591ad9d51),
- "bk2kgu27.lg1", CRC(4132ac5c) SHA1(5636d4e8fb9bf5a5f4ccafe4ef035ab0e8964e8b))
-S11XS_SOUNDROM88( "bk2k_u21.l1", CRC(08be36ad) SHA1(0f4c448e003df54ed8ccf0e0c57f6123ce1e2027),
- "bk2k_u22.l1", CRC(9c8becd8) SHA1(9090e8104dad63f14246caabafec428d94d5e18d))
-S11CS_SOUNDROM88( "bk2k_u4.l2", CRC(1d87281b) SHA1(609288b017aac6ce6da8717a35fdf87013adeb3c),
- "bk2k_u19.l1", CRC(58e162b2) SHA1(891f810ae18b46593f570d719f0290a1d08a1a10))
-S11_ROMEND
-CORE_CLONEDEF(bk2k,lg1,l4, "Black Knight 2000 (LG-1) (Pinball)", 1989, "Williams", s11_mS11BS,0)
-
-S11_ROMSTART48(bk2k,lg3,"u26-lg3.rom", CRC(6f468c85) SHA1(b919b436559a29c43911bd2839c5ae7c03e9b06f),
- "u27-lg3.rom", CRC(27707522) SHA1(37844e2f3c70430ee169e1c369aa8e9d47b2c8f2))
-S11XS_SOUNDROM88( "bk2k_u21.l1", CRC(08be36ad) SHA1(0f4c448e003df54ed8ccf0e0c57f6123ce1e2027),
- "bk2k_u22.l1", CRC(9c8becd8) SHA1(9090e8104dad63f14246caabafec428d94d5e18d))
-S11CS_SOUNDROM88( "bk2k_u4.l2", CRC(1d87281b) SHA1(609288b017aac6ce6da8717a35fdf87013adeb3c),
- "bk2k_u19.l1", CRC(58e162b2) SHA1(891f810ae18b46593f570d719f0290a1d08a1a10))
-S11_ROMEND
-CORE_CLONEDEF(bk2k,lg3,l4,"Black Knight 2000 (LG-3) (Pinball)", 1989, "Williams", s11_mS11BS,0)
-
-S11_ROMSTART48(bk2k,pu1,"u26-pu1.rom", CRC(2da07403) SHA1(4b48c5d7b0a03aa4593dc6053dc5e94df22d2a64),
- "u27-pu1.rom", CRC(245efbae) SHA1(e6354a6f5029f21aab2343cd90daf6cbfb51e556))
-S11XS_SOUNDROM88( "bk2k_u21.l1", CRC(08be36ad) SHA1(0f4c448e003df54ed8ccf0e0c57f6123ce1e2027),
- "bk2k_u22.l1", CRC(9c8becd8) SHA1(9090e8104dad63f14246caabafec428d94d5e18d))
-S11CS_SOUNDROM88( "bk2k_u4.l2", CRC(1d87281b) SHA1(609288b017aac6ce6da8717a35fdf87013adeb3c),
- "bk2k_u19.l1", CRC(58e162b2) SHA1(891f810ae18b46593f570d719f0290a1d08a1a10))
-S11_ROMEND
-CORE_CLONEDEF(bk2k,pu1,l4,"Black Knight 2000 (PU-1) (Pinball)", 1989, "Williams", s11_mS11BS,0)
-
-/*-----------------------
-/ Police Force 9/89
-/-----------------------*/
-
-
-INITGAME(polic,GEN_S11B, dispPolic, 12, FLIP_SWNO(58,57), S11_LOWALPHA|S11_DISPINV,S11_MUXSW2)
-S11_ROMSTART48(polic,l4,"pfrc_u26.l4", CRC(1a1409e9) SHA1(775d35a22483bcf8c4b03841e0aca22b6504a48f),
- "pfrc_u27.l4", CRC(641ed5d4) SHA1(f98b8bb64184aba062715555bd1de679d6382ac3))
-S11XS_SOUNDROM88( "pfrc_u21.l1", CRC(7729afd3) SHA1(9cd2898a7a4203cf3b2dcd203e25cde5dd582ee7),
- "pfrc_u22.l1", CRC(40f5e6b2) SHA1(4af2e2658720b08d03d24c9d314a6e5074b2c747))
-S11CS_SOUNDROM88( "pfrc_u4.l2", CRC(8f431529) SHA1(0f479990715a31fd860c000a066cffb70da502c2),
- "pfrc_u19.l1", CRC(abc4caeb) SHA1(6faef2de9a49a1015b4038ab18849de2f25dbded))
-S11_ROMEND
-#define ipt_polic ipt_s11
-CORE_GAMEDEF(polic,l4, "Police Force (LA-4) (Pinball)", 1989, "Williams", s11_mS11BS,0)
-
-S11_ROMSTART48(polic,l3,"pfrc_u26.l4", CRC(1a1409e9) SHA1(775d35a22483bcf8c4b03841e0aca22b6504a48f),
- "pfrc_u27.lx3",CRC(ef5d4808) SHA1(89cf62640e39397899776ab1d132645a5eab9e0e))
-S11XS_SOUNDROM88( "pfrc_u21.l1", CRC(7729afd3) SHA1(9cd2898a7a4203cf3b2dcd203e25cde5dd582ee7),
- "pfrc_u22.l1", CRC(40f5e6b2) SHA1(4af2e2658720b08d03d24c9d314a6e5074b2c747))
-S11CS_SOUNDROM88( "pfrc_u4.l2", CRC(8f431529) SHA1(0f479990715a31fd860c000a066cffb70da502c2),
- "pfrc_u19.l1", CRC(abc4caeb) SHA1(6faef2de9a49a1015b4038ab18849de2f25dbded))
-S11_ROMEND
-CORE_CLONEDEF(polic,l3,l4,"Police Force (LA-3) (Pinball)", 1989, "Williams", s11_mS11BS,0)
-
-S11_ROMSTART48(polic,l2,"pfrc_u26.l2", CRC(4bc972dc) SHA1(7d6e421945832bd2c95a7b8e27d5573a42109379),
- "pfrc_u27.l2", CRC(46ae36f2) SHA1(6685efa858a14b21fae5e3192ab714750ff51341))
-S11XS_SOUNDROM88( "pfrc_u21.l1", CRC(7729afd3) SHA1(9cd2898a7a4203cf3b2dcd203e25cde5dd582ee7),
- "pfrc_u22.l1", CRC(40f5e6b2) SHA1(4af2e2658720b08d03d24c9d314a6e5074b2c747))
-S11CS_SOUNDROM88( "pfrc_u4.l2", CRC(8f431529) SHA1(0f479990715a31fd860c000a066cffb70da502c2),
- "pfrc_u19.l1", CRC(abc4caeb) SHA1(6faef2de9a49a1015b4038ab18849de2f25dbded))
-S11_ROMEND
-CORE_CLONEDEF(polic,l2,l4,"Police Force (LA-2) (Pinball)", 1989, "Williams", s11_mS11BS,0)
-
-/*-----------------------------
-/ Transporter the Rescue 6/89
-/----------------------------*/
-INITGAME(tsptr,GEN_S11B,disp16oneline,12, FLIP_SWNO(58,57),S11_LOWALPHA|S11_DISPINV,S11_MUXSW2)
-S11_ROMSTART48(tsptr,l3,"tran_u26.l3", CRC(2d48a108) SHA1(d41bf077aab1201b08ea14725d4a0d841ee6b919),
- "tran_u27.l3", CRC(50efb01c) SHA1(941f18d51bf8a5d209ed90e0865b7fa638a6eab3))
-S11XS_SOUNDROM88( "tran_u21.l2", CRC(b10120ee) SHA1(305a898a8b762c27dba26921ef169556bf96e518),
- "tran_u22.l2", CRC(337784b5) SHA1(30c17afd8f76118940982db946cd3a2a29445d10))
-S11CS_SOUNDROM888( "tran_u4.l2", CRC(a06ddd61) SHA1(630fe7ab94516930c4876a95f822024a44371170),
- "tran_u19.l2", CRC(3cfde8b0) SHA1(7bdc71ba1ba4fd337f052354323c86fd97b2b881),
- "tran_u20.l2", CRC(e9890cf1) SHA1(0ae37504c704401101c79ce49df11044f8d8caa9))
-
-S11_ROMEND
-#define ipt_tsptr ipt_s11
-CORE_GAMEDEF(tsptr,l3, "Transporter the Rescue (L-3) (Pinball)", 1989, "Bally", s11a_one,0)
-
-/*-----------------------
-/ Bad Cats 12/89
-/-----------------------*/
-INITGAME(bcats,GEN_S11B,s11_dispS11b2,12,FLIP_SWNO(58,57),S11_LOWALPHA|S11_DISPINV,S11_MUXSW2)
-S11_ROMSTART48(bcats,l5,"cats_u26.l5", CRC(32246d12) SHA1(b8aa89d197a6b992501904f5072a10ab1a31db87),
- "cats_u27.l5", CRC(ef842bbf) SHA1(854860db428795d5de5c075aa78496f0c18a380f))
-S11XS_SOUNDROM88( "cats_u21.l1", CRC(04110d08) SHA1(4b44b26983cb5d14a93c16a19dc2bdbaa665dc69),
- "cats_u22.l1", CRC(7e152c78) SHA1(b4ab770fdd9420a5d35e55bf8fb84c99ac544b8b))
-S11CS_SOUNDROM888( "cats_u4.l1", CRC(18c62813) SHA1(a4fb69cfedd0b92c22b599913df3cdf8b3eef42c),
- "cats_u19.l1", CRC(f2fea68b) SHA1(9a41823e71342b7a162420378f122bba34ce0636),
- "cats_u20.l1", CRC(bf4dc35a) SHA1(9920ce90d93fb6ecf98792c35bb6eb8862a969f3))
-S11_ROMEND
-#define ipt_bcats ipt_s11
-
-S11_ROMSTART48(bcats,l2,"bcgu26.la2", CRC(206c7cf8) SHA1(34eb128d46a0e1ba943f4e37aa95fa6d81aefb0e),
- "bcgu27.la2", CRC(911981c6) SHA1(0d5b5c6d8399c6337300c789a0466242f91eaf94))
-S11XS_SOUNDROM88( "cats_u21.l1", CRC(04110d08) SHA1(4b44b26983cb5d14a93c16a19dc2bdbaa665dc69),
- "cats_u22.l1", CRC(7e152c78) SHA1(b4ab770fdd9420a5d35e55bf8fb84c99ac544b8b))
-S11CS_SOUNDROM888( "cats_u4.l1", CRC(18c62813) SHA1(a4fb69cfedd0b92c22b599913df3cdf8b3eef42c),
- "cats_u19.l1", CRC(f2fea68b) SHA1(9a41823e71342b7a162420378f122bba34ce0636),
- "cats_u20.l1", CRC(bf4dc35a) SHA1(9920ce90d93fb6ecf98792c35bb6eb8862a969f3))
-S11_ROMEND
-
-CORE_GAMEDEF(bcats,l5, "Bad Cats (L-5) (Pinball)", 1989, "Williams", s11_mS11BS,0)
-CORE_CLONEDEF(bcats,l2,l5,"Bad Cats (LA-2) (Pinball)", 1989, "Williams", s11_mS11BS,0)
-
-/*-----------------------
-/ Mousin' Around 12/89
-/-----------------------*/
-INITGAME(mousn,GEN_S11B,disp16oneline,12, FLIP_SWNO(58,57),S11_LOWALPHA|S11_DISPINV,S11_MUXSW2)
-S11_ROMSTART48(mousn,l4,"mous_u26.l4", CRC(a540edc1) SHA1(c0b208369ac770f0d4cd7decfce5f8401ded082f),
- "mous_u27.l4", CRC(ff108148) SHA1(32b44286d43a39d5677c6582c5b09fc3b9833806))
-S11XS_SOUNDROM88( "mous_u20.l2", CRC(59b1b0c5) SHA1(443426be41c1413f22b137145dbc3bcf84d9ccc7),
- "mous_u22.l1", CRC(00ad198c) SHA1(4f15696909e1f3574ad20b28e31da2c155ed129f))
-S11CS_SOUNDROM888( "mous_u4.l2", CRC(643add1e) SHA1(45dea0f4c6f24d17e6f7dda75afaa7caefdc6b96),
- "mous_u19.l2", CRC(7b4941f7) SHA1(2b2fc8e7634b1885b020b2115126d6341172cc91),
- "mous_u20.l2", CRC(59b1b0c5) SHA1(443426be41c1413f22b137145dbc3bcf84d9ccc7))
-S11_ROMEND
-#define ipt_mousn ipt_s11
-
-S11_ROMSTART48(mousn,l1,"u26-la1.rom", CRC(0fff7946) SHA1(53bd68fd21218128f9311047ac911cff7eea8b23),
- "u27-la1.rom", CRC(a440192b) SHA1(837a9eb290f46d792f7307c569dfc627507420b8))
-S11XS_SOUNDROM88( "mous_u20.l2", CRC(59b1b0c5) SHA1(443426be41c1413f22b137145dbc3bcf84d9ccc7),
- "mous_u22.l1", CRC(00ad198c) SHA1(4f15696909e1f3574ad20b28e31da2c155ed129f))
-S11CS_SOUNDROM888( "mous_u4.l2", CRC(643add1e) SHA1(45dea0f4c6f24d17e6f7dda75afaa7caefdc6b96),
- "mous_u19.l2", CRC(7b4941f7) SHA1(2b2fc8e7634b1885b020b2115126d6341172cc91),
- "mous_u20.l2", CRC(59b1b0c5) SHA1(443426be41c1413f22b137145dbc3bcf84d9ccc7))
-S11_ROMEND
-
-S11_ROMSTART48(mousn,lu,"u26-la1.rom", CRC(0fff7946) SHA1(53bd68fd21218128f9311047ac911cff7eea8b23),
- "u27-lu1.rom", CRC(6e5b692c) SHA1(20c4b8d105d5df6e1b540c02c1c54bca08ec42e8))
-S11XS_SOUNDROM88( "mous_u20.l2", CRC(59b1b0c5) SHA1(443426be41c1413f22b137145dbc3bcf84d9ccc7),
- "mous_u22.l1", CRC(00ad198c) SHA1(4f15696909e1f3574ad20b28e31da2c155ed129f))
-S11CS_SOUNDROM888( "mous_u4.l2", CRC(643add1e) SHA1(45dea0f4c6f24d17e6f7dda75afaa7caefdc6b96),
- "mous_u19.l2", CRC(7b4941f7) SHA1(2b2fc8e7634b1885b020b2115126d6341172cc91),
- "mous_u20.l2", CRC(59b1b0c5) SHA1(443426be41c1413f22b137145dbc3bcf84d9ccc7))
-S11_ROMEND
-
-S11_ROMSTART48(mousn,lx,"mous_u26.l4", CRC(a540edc1) SHA1(c0b208369ac770f0d4cd7decfce5f8401ded082f),
- "mous_u27.l4", CRC(ff108148) SHA1(32b44286d43a39d5677c6582c5b09fc3b9833806))
-S11XS_SOUNDROM88( "mous_u20.l2", CRC(59b1b0c5) SHA1(443426be41c1413f22b137145dbc3bcf84d9ccc7),
- "mous_u22.l1", CRC(00ad198c) SHA1(4f15696909e1f3574ad20b28e31da2c155ed129f))
-S11CS_SOUNDROM888( "mous_u4.lx", CRC(d311db4a) SHA1(d9d20921eb42c19c5074c976608bfec0d3130204),
- "mous_u19.lx", CRC(c7a6f494) SHA1(272f0bd3885bb81da13ee6ed3d66f9424ccf4b0d),
- "mous_u20.l2", CRC(59b1b0c5) SHA1(443426be41c1413f22b137145dbc3bcf84d9ccc7))
-S11_ROMEND
-
-CORE_GAMEDEF(mousn,l4,"Mousin' Around (LA-4) (Pinball)", 1989, "Bally", s11a_one,0)
-CORE_CLONEDEF(mousn,l1,l4,"Mousin' Around (LA-1) (Pinball)", 1989, "Bally", s11a_one,0)
-CORE_CLONEDEF(mousn,lu,l4,"Mousin' Around (LU-1) (Pinball)", 1989, "Bally", s11a_one,0)
-CORE_CLONEDEF(mousn,lx,l4,"Mousin' Around (LX-1) (Pinball)", 1989, "Bally", s11a_one,0)
-
-/*-----------------------
-/ Whirlwind 4/90
-/-----------------------*/
-INITGAME(whirl,GEN_S11B,s11_dispS11b2,12, FLIP_SWNO(58,57),S11_LOWALPHA|S11_DISPINV,S11_MUXSW2|S11_SNDOVERLAY)
-S11_ROMSTART48(whirl,l3,"whir_u26.l3", CRC(066b8fec) SHA1(017ca12ef5ebd9bb70690b0e096064be5144a512),
- "whir_u27.l3", CRC(47fc033d) SHA1(42518650ecb538323bc33ee193bc229d89ca1936))
-S11XS_SOUNDROM88( "whir_u21.l1", CRC(fa3da322) SHA1(732107eace9eecdb97eff4abb4420a2febef7425),
- "whir_u22.l1", CRC(fcaf8c4e) SHA1(8e8cab1923a56bcef4671dce28aef1e39303c04a))
-S11CS_SOUNDROM888( "whir_u4.l1", CRC(29952d84) SHA1(26479a341b0552c5f9d9bf9dd013855e51a7b857),
- "whir_u19.l1", CRC(c63f6fe9) SHA1(947bbccb5eeae414770254d42d0a95425e2dca8c),
- "whir_u20.l1", CRC(713007af) SHA1(3ac88bb905ccf8e227bbf3c102c74e3d2446cc88))
-S11_ROMEND
-#define ipt_whirl ipt_s11
-
-S11_ROMSTART48(whirl,l2,"whir_u26.l3", CRC(066b8fec) SHA1(017ca12ef5ebd9bb70690b0e096064be5144a512),
- "wwdgu27.l2", CRC(d8fb48f3) SHA1(8c64f94cca51abd6f4a7e53ac59a6f623bd2cfd7))
-S11XS_SOUNDROM88( "whir_u21.l1", CRC(fa3da322) SHA1(732107eace9eecdb97eff4abb4420a2febef7425),
- "whir_u22.l1", CRC(fcaf8c4e) SHA1(8e8cab1923a56bcef4671dce28aef1e39303c04a))
-S11CS_SOUNDROM888( "whir_u4.l1", CRC(29952d84) SHA1(26479a341b0552c5f9d9bf9dd013855e51a7b857),
- "whir_u19.l1", CRC(c63f6fe9) SHA1(947bbccb5eeae414770254d42d0a95425e2dca8c),
- "whir_u20.l1", CRC(713007af) SHA1(3ac88bb905ccf8e227bbf3c102c74e3d2446cc88))
-S11_ROMEND
-
-CORE_GAMEDEF(whirl,l3, "Whirlwind (L-3) (Pinball)", 1990, "Williams", s11_mS11BS,0)
-CORE_CLONEDEF(whirl,l2,l3,"Whirlwind (L-2) (Pinball)", 1990, "Williams", s11_mS11BS,0)
-
-/*--------------------
-/ Game Show 4/90
-/--------------------*/
-INITGAME(gs ,GEN_S11C,disp16oneline,12,FLIP_SWNO(58,57),S11_LOWALPHA|S11_DISPINV,S11_MUXSW2)
-S11_ROMSTART48(gs,l3,"gshw_u26.l3", CRC(3419bfb2) SHA1(7ce294a3118d20c7cdc3d5cd946e4c43090c5151),
- "gshw_u27.l3", CRC(4f3babb6) SHA1(87091a6786fc6817529cfed7f60396babe153d8d))
-S11CS_SOUNDROM000( "gshw_u4.l2", CRC(e89e0116) SHA1(e96bee143d1662d078f21531f405d838fdace693),
- "gshw_u19.l1", CRC(8bae0813) SHA1(a2b1beca13796892d8ee1533e395cabdbbb11f88),
- "gshw_u20.l1", CRC(75ccbdf7) SHA1(7dce8ae427a621919caad8d8b08b06bb0adad850))
-S11_ROMEND
-#define ipt_gs ipt_s11
-
-S11_ROMSTART48(gs,l4,"gshw_u26.l3", CRC(3419bfb2) SHA1(7ce294a3118d20c7cdc3d5cd946e4c43090c5151),
- "u27-lu4.rom", CRC(ba265978) SHA1(66ac8e83e35cdfd72f1d3aa8ce6d92c2c833f304))
-S11CS_SOUNDROM000( "gshw_u4.l2", CRC(e89e0116) SHA1(e96bee143d1662d078f21531f405d838fdace693),
- "gshw_u19.l1", CRC(8bae0813) SHA1(a2b1beca13796892d8ee1533e395cabdbbb11f88),
- "gshw_u20.l1", CRC(75ccbdf7) SHA1(7dce8ae427a621919caad8d8b08b06bb0adad850))
-S11_ROMEND
-
-CORE_CLONEDEF(gs,l3,l4,"Game Show (L-3) (Pinball)", 1990, "Bally", s11c_one,0)
-CORE_GAMEDEF(gs,l4,"Game Show (L-4) (Pinball)", 1990, "Bally", s11c_one,0)
-
-/*--------------------
-/ Rollergames 5/90
-/--------------------*/
-INITGAME(rollr,GEN_S11C,s11_dispS11c,12,FLIP_SWNO(58,57),S11_LOWALPHA|S11_DISPINV,S11_MUXSW2)
-S11_ROMSTART48(rollr,l2,"rolr_u26.l2", CRC(cd7cad9e) SHA1(e381fa73895c307a0b3b4b699cfec2a68908f6f7),
- "rolr_u27.l2", CRC(f3bac2b8) SHA1(9f0ff32ea83e43097de42065909137a362b29d49))
-S11CS_SOUNDROM000( "rolr_u4.l3", CRC(d366c705) SHA1(76018305b5040b2e5d8c45cc81a18f13e1a8f8da),
- "rolr_u19.l3", CRC(45a89e55) SHA1(3aff897514d242c83a8e7575d430d594a873736e),
- "rolr_u20.l3", CRC(77f89aff) SHA1(dcd9fe233f33ef8f97cdeaaa365532e485a28944))
-S11_ROMEND
-#define ipt_rollr ipt_s11
-CORE_GAMEDEF(rollr, l2, "Rollergames (L-2) (Pinball)", 1990, "Williams", s11_mS11CS,0)
-
-S11_ROMSTART48(rollr,ex,"rolr-u26.ea3", CRC(78c3c1ad) SHA1(04e4370548b3ba85c49634402a0ea166e3643f68),
- "rolr_u27.ea3", CRC(18685158) SHA1(d1a79fbe1185fb9e1ae1d9e2b2751429f487bb4c))
-S11CS_SOUNDROM000( "rolr_u4.l3", CRC(d366c705) SHA1(76018305b5040b2e5d8c45cc81a18f13e1a8f8da),
- "rolr_u19.l3", CRC(45a89e55) SHA1(3aff897514d242c83a8e7575d430d594a873736e),
- "rolr_u20.l3", CRC(77f89aff) SHA1(dcd9fe233f33ef8f97cdeaaa365532e485a28944))
-S11_ROMEND
-CORE_CLONEDEF(rollr,ex,l2, "Rollergames (EXPERIMENTAL) (Pinball)", 1991, "Williams", s11_mS11CS,0)
-
-S11_ROMSTART48(rollr,e1,"rolr_u26.pe1", CRC(56620505) SHA1(2df9097e52178f246148a40e0ad4a6e6a5cdb5d4),
- "rolr_u27.pe1", CRC(724d0af2) SHA1(5de5596f4e594c0e6b8448817de6ff46ffc7194b))
-S11CS_SOUNDROM000( "rolr_u4.pe1", CRC(8c383b24) SHA1(5c738e5ec566f7fa5706cd4c33e5d706fa76c72d),
- "rolr_u19.pe1", CRC(c6880cff) SHA1(c8ce23d68297d36ef62e508855a478434ff9a592),
- "rolr_u20.pe1", CRC(4220812b) SHA1(7071565f1087020d1e1738e801dafb509ea37622))
-S11_ROMEND
-CORE_CLONEDEF(rollr,e1,l2, "Rollergames (PU-1) (Pinball)", 1991, "Williams", s11_mS11CS,0)
-
-S11_ROMSTART48(rollr,p2,"rolr_u26.pa2", CRC(11d96b1c) SHA1(e96991bdef8b14043285feeb4cacc182a6e9dcbd),
- "rolr_u27.pa2", CRC(ee547bd5) SHA1(db45bf7a25321ac041f58404f7512bded9ebf11e))
-S11CS_SOUNDROM000( "rolr_u4.pa1", CRC(324df946) SHA1(e7ba2b9434baea20a0cf38540fdab1668c058539),
- "rolr_u19.pa1", CRC(45a89e55) SHA1(3aff897514d242c83a8e7575d430d594a873736e),
- "rolr_u20.pa1", CRC(8ddaaad1) SHA1(33f58c6a9b0e509b7c9a460a687d6e2c388b4b54))
-S11_ROMEND
-CORE_CLONEDEF(rollr,p2,l2, "Rollergames (PA-2, PA-1 Sound) (Pinball)", 1991, "Williams", s11_mS11CS,0)
-
-S11_ROMSTART48(rollr,l3,"rolr-u26.lu3", CRC(7d71ed50) SHA1(092aa13706a7fe58ad80e88c1c4a5c1d7d712546),
- "rolr_u27.l2", CRC(f3bac2b8) SHA1(9f0ff32ea83e43097de42065909137a362b29d49))
-S11CS_SOUNDROM000( "rolr_u4.l3", CRC(d366c705) SHA1(76018305b5040b2e5d8c45cc81a18f13e1a8f8da),
- "rolr_u19.l3", CRC(45a89e55) SHA1(3aff897514d242c83a8e7575d430d594a873736e),
- "rolr_u20.l3", CRC(77f89aff) SHA1(dcd9fe233f33ef8f97cdeaaa365532e485a28944))
-S11_ROMEND
-CORE_CLONEDEF(rollr,l3,l2, "Rollergames (LU-3) Europe (Pinball)", 1990, "Williams", s11_mS11CS,0)
-
-S11_ROMSTART48(rollr,g3,"rolr-u26.lg3", CRC(438d2b94) SHA1(f507a06794563701b6d4fc51ff90a42a6d21d060),
- "rolr_u27.l2", CRC(f3bac2b8) SHA1(9f0ff32ea83e43097de42065909137a362b29d49))
-S11CS_SOUNDROM000( "rolr_u4.l3", CRC(d366c705) SHA1(76018305b5040b2e5d8c45cc81a18f13e1a8f8da),
- "rolr_u19.l3", CRC(45a89e55) SHA1(3aff897514d242c83a8e7575d430d594a873736e),
- "rolr_u20.l3", CRC(77f89aff) SHA1(dcd9fe233f33ef8f97cdeaaa365532e485a28944))
-S11_ROMEND
-CORE_CLONEDEF(rollr,g3,l2, "Rollergames (LG-3) Germany (Pinball)", 1990, "Williams", s11_mS11CS,0)
-
-/*--------------------
-/ Pool Sharks 6/90
-/--------------------*/
-INITGAME(pool ,GEN_S11C,disp16oneline,12,FLIP_SWNO(58,57),S11_LOWALPHA|S11_DISPINV,S11_MUXSW2|S11_SNDDELAY)
-S11_ROMSTART48(pool ,l7,"pool_u26.l7", CRC(cee98aed) SHA1(5b652684c10ab4945783089d848b2f663d3b2547),
- "pool_u27.l7", CRC(356d9a89) SHA1(ce795c535d03a14d28fb3f2071cae48ccdb1a856))
-S11CS_SOUNDROM000( "pool_u4.l2", CRC(04e95e10) SHA1(3873b3cd6c2961b3f2f28a1e17f8a63c6db808d2),
- "pool_u19.l2", CRC(0f45d02b) SHA1(58bbfdb3b98c43b66e11808cec7cd65a7f2dce6d),
- "pool_u20.l2", CRC(925f62d6) SHA1(21b8d6f9a8b98fce8a3cdf7f5f2d40200544a898))
-S11_ROMEND
-#define ipt_pool ipt_s11
-CORE_GAMEDEF(pool , l7, "Pool Sharks (L-7) (Pinball)", 1990, "Bally", s11c_one,0)
-
-/*--------------------
-/ Diner 8/90
-/--------------------*/
-INITGAME(diner,GEN_S11C,s11_dispS11c,12,FLIP_SWNO(58,57),S11_LOWALPHA|S11_DISPINV,S11_MUXSW2)
-S11_ROMSTART48(diner,l4,"dinr_u26.l4", CRC(6f187abf) SHA1(8acabbccdf3528a9c5e60cc8939ab960bf4c5512),
- "dinr_u27.l4", CRC(d69f9f74) SHA1(88d9b42c2313a90e5d6f50220d3b44331595d86b))
-S11CS_SOUNDROM000( "dinr_u4.l1", CRC(3bd28368) SHA1(41eec2f5f863039deaabfae8aece4b1cf15e4b78),
- "dinr_u19.l1", CRC(278b9a30) SHA1(41e59adb8b6c08caee46c3dd73256480b4041619),
- "dinr_u20.l1", CRC(511fb260) SHA1(e6e25b464c5c38f3c0492436f1e8aa2be33dd278))
-S11_ROMEND
-#define ipt_diner ipt_s11
-
-S11_ROMSTART48(diner,l3,"u26-la3.rom", CRC(8b6aa22e) SHA1(6b802a85fc2babf5a183fb434df11597363c1c9d),
- "u27-la3.rom", CRC(4171451a) SHA1(818e330245691d9ef3181b885c9342880f89d912))
-S11CS_SOUNDROM000( "dinr_u4.l1", CRC(3bd28368) SHA1(41eec2f5f863039deaabfae8aece4b1cf15e4b78),
- "dinr_u19.l1", CRC(278b9a30) SHA1(41e59adb8b6c08caee46c3dd73256480b4041619),
- "dinr_u20.l1", CRC(511fb260) SHA1(e6e25b464c5c38f3c0492436f1e8aa2be33dd278))
-S11_ROMEND
-
-S11_ROMSTART48(diner,l1,"u26-lu1.rom", CRC(259b302f) SHA1(d7e19c2d2ad7805d9158178c24d180d158a59b0c),
- "u27-lu1.rom", CRC(35fafbb3) SHA1(0db3d0c9421f4fdcf4d376d543626559e1bf2daa))
-S11CS_SOUNDROM000( "dinr_u4.l1", CRC(3bd28368) SHA1(41eec2f5f863039deaabfae8aece4b1cf15e4b78),
- "dinr_u19.l1", CRC(278b9a30) SHA1(41e59adb8b6c08caee46c3dd73256480b4041619),
- "dinr_u20.l1", CRC(511fb260) SHA1(e6e25b464c5c38f3c0492436f1e8aa2be33dd278))
-S11_ROMEND
-
-CORE_GAMEDEF(diner, l4, "Diner (L-4) (Pinball)", 1990, "Williams", s11_mS11CS,0)
-CORE_CLONEDEF(diner,l3,l4, "Diner (L-3) (Pinball)", 1990, "Williams", s11_mS11CS,0)
-CORE_CLONEDEF(diner,l1,l4, "Diner (L-1) Europe (Pinball)", 1990, "Williams", s11_mS11CS,0)
-
-/*--------------------
-/ Radical 9/90
-/--------------------*/
-INITGAME(radcl,GEN_S11C,disp16oneline,12,FLIP_SWNO(58,57),S11_LOWALPHA|S11_DISPINV,S11_MUXSW2)
-S11_ROMSTART48(radcl,l1,"rad_u26.l1", CRC(84b1a125) SHA1(dd01fb9189acd2620c57149921aadb051f7a2412),
- "rad_u27.l1", CRC(6f6ca382) SHA1(a61055aab97d3fe2ecd0ed4281a9681b1d910269))
-S11CS_SOUNDROM008( "rad_u4.l1", CRC(5aafc09c) SHA1(27984bbc91dc7593e6a5b42f74dd6ddf58189bec),
- "rad_u19.l1", CRC(7c005e1f) SHA1(bdeea7517f2adf72b4b642bffb25ba5b98453127),
- "rad_u20.l1", CRC(05b96292) SHA1(7da0289cf0a0c93768c0706fdedfc3a5f2101e77))
-S11_ROMEND
-#define ipt_radcl ipt_s11
-CORE_GAMEDEF(radcl, l1, "Radical (L-1) (Pinball)", 1990, "Bally", s11c_one,0)
-
-S11_ROMSTART48(radcl,g1,"rad_u26.l1", CRC(84b1a125) SHA1(dd01fb9189acd2620c57149921aadb051f7a2412),
- "u27-lg1.rom", CRC(4f2eca4b) SHA1(ff44deded1686cfa0351c4499485d6eb4561cbc1))
-S11CS_SOUNDROM008( "rad_u4.l1", CRC(5aafc09c) SHA1(27984bbc91dc7593e6a5b42f74dd6ddf58189bec),
- "rad_u19.l1", CRC(7c005e1f) SHA1(bdeea7517f2adf72b4b642bffb25ba5b98453127),
- "rad_u20.l1", CRC(05b96292) SHA1(7da0289cf0a0c93768c0706fdedfc3a5f2101e77))
-S11_ROMEND
-CORE_CLONEDEF(radcl,g1,l1, "Radical (G-1) (Pinball)", 1990, "Bally", s11c_one,0)
-
-S11_ROMSTART48(radcl,p3,"rad_u26.p1", CRC(7d736ae9) SHA1(4ea6945fa5cfbd33fcdf780814b0bf5cb3faa388),
- "u27-p1.rom", CRC(83b1d928) SHA1(b1bd5d8a93f1ab9fb9bf5c268d8530be438448e6))
-S11CS_SOUNDROM008( "rad_u4.p3", CRC(d31b7744) SHA1(7ebcc1503fc322909d32c7c8bda8c0b6505919b3),
- "rad_u19.l1", CRC(7c005e1f) SHA1(bdeea7517f2adf72b4b642bffb25ba5b98453127),
- "rad_u20.p3", CRC(82f8369c) SHA1(0691a80672fc11d46359f710bd211de7a59de346))
-S11_ROMEND
-CORE_CLONEDEF(radcl,p3,l1, "Radical (P-3) (Pinball)", 1990, "Bally", s11c_one,0)
-
-/*-----------------------
-/ Star Trax 9/90
-/-----------------------*/
-INITGAME(strax,GEN_S11B, s11_dispS11b2, 12, FLIP_SW(FLIP_L),S11_LOWALPHA|S11_DISPINV,S11_MUXSW2)
-S11_ROMSTART48(strax,p7,"strx_u26.p7", CRC(0d2a401c) SHA1(b0a0899dcde04dc42e4fd5d6baf39bb0e81dbb34),
- "strx_u27.p7", CRC(6e9c0632) SHA1(5c0ea2b60dd9001b802d2ecdb5c381ab05f08ec9))
-S11XS_SOUNDROM88( "strx_u21.l1", CRC(6a323227) SHA1(7c7263754e5672c654a2ee9582f0b278e637a909),
- "strx_u22.l1", CRC(58407eb4) SHA1(6bd9b304c88d9470eae5afb6621187f4a8313573))
-S11CS_SOUNDROM88( "pfrc_u4.l2", CRC(8f431529) SHA1(0f479990715a31fd860c000a066cffb70da502c2),
- "pfrc_u19.l1", CRC(abc4caeb) SHA1(6faef2de9a49a1015b4038ab18849de2f25dbded))
-S11_ROMEND
-#define ipt_strax ipt_s11
-CORE_GAMEDEF(strax,p7, "Star Trax (domestic prototype) (Pinball)", 1990, "Williams", s11_mS11BS,0)
-
-/*--------------------
-/ Riverboat Gambler 10/90
-/--------------------*/
-
-
-INITGAME(rvrbt,GEN_S11C,dispRvrbt,12,FLIP_SWNO(58,57),S11_LOWALPHA|S11_DISPINV,S11_MUXSW2)
-S11_ROMSTART48(rvrbt,l3,"gamb_u26.l3", CRC(a65f6004) SHA1(ea44bb7f8f2ec9e5989be63ba41f674b14d19b8a),
- "gamb_u27.l3", CRC(9be0f613) SHA1(1c2b442bc3daef212fe23ff03f5409c354e79989))
-S11CS_SOUNDROM000( "gamb_u4.l2", CRC(c0cfa9be) SHA1(352df9a4dcbc131ae249416e9e517137a04627ba),
- "gamb_u19.l1", CRC(04a3a8c8) SHA1(e72ef767f13282d2335cda3288037610d9bfedf2),
- "gamb_u20.l1", CRC(a60c734d) SHA1(76cfcf96276ca4f6b5eee0e0402fab5ee9685366))
-S11_ROMEND
-#define ipt_rvrbt ipt_s11
-CORE_GAMEDEF(rvrbt, l3, "Riverboat Gambler (L-3) (Pinball)", 1990, "Williams", s11_mS11CS,0)
-
-/*--------------------
-/ Bugs Bunny Birthday Ball 11/90
-/--------------------*/
-INITGAME(bbnny,GEN_S11C,disp16oneline,12,FLIP_SWNO(58,57),S11_LOWALPHA|S11_DISPINV,S11_MUXSW2)
-S11_ROMSTART48(bbnny,l2,"bugs_u26.l2", CRC(b4358920) SHA1(93af1cf5dc2b5442f428a621c0f73b27c197a3df),
- "bugs_u27.l2", CRC(8ff29439) SHA1(8fcdcea556e9e01ea8cb7c1548f98af2467c8a5f))
-S11CS_SOUNDROM000( "bugs_u4.l2", CRC(04bc9aa5) SHA1(c3da2dc3e26b88a0ebc6f87e61fc71bec45330c3),
- "bugs_u19.l1", CRC(a2084702) SHA1(ffd749387e7b52bad1e98c6a8939fb87bc67524c),
- "bugs_u20.l1", CRC(5df734ef) SHA1(c8d153444dd6171c3ebddc8100ab06fde3373cc6))
-S11_ROMEND
-#define ipt_bbnny ipt_s11
-CORE_GAMEDEF(bbnny, l2, "Bugs Bunny Birthday Ball (L-2) (Pinball)", 1990, "Bally", s11c_one,0)
-
-S11_ROMSTART48(bbnny,lu,"bugs_u26.l2", CRC(b4358920) SHA1(93af1cf5dc2b5442f428a621c0f73b27c197a3df),
- "u27-lu2.rom", CRC(aaa2c82d) SHA1(b279c87cb2ac90a818eeb1afa6115b8cdab1b0df))
-S11CS_SOUNDROM000( "bugs_u4.l2", CRC(04bc9aa5) SHA1(c3da2dc3e26b88a0ebc6f87e61fc71bec45330c3),
- "bugs_u19.l1", CRC(a2084702) SHA1(ffd749387e7b52bad1e98c6a8939fb87bc67524c),
- "bugs_u20.l1", CRC(5df734ef) SHA1(c8d153444dd6171c3ebddc8100ab06fde3373cc6))
-S11_ROMEND
-CORE_CLONEDEF(bbnny,lu,l2,"Bugs Bunny Birthday Ball (LU-2) European (Pinball)", 1990, "Bally", s11c_one,0)
-
-/*--------------------
-/ Dr. Dude - moved to own simulator
-/--------------------*/
-
-
-
-
-/************************************************************************************************
-*************************************************************************************************
- Old PinMAME code below for reference ONLY
-*************************************************************************************************
-************************************************************************************************/
-
-#if 0
-
-/* Williams System 9, 11, and All Data East Hardware */
-#include <stdarg.h>
-#include <time.h>
-#include "driver.h"
-#include "cpu/m6800/m6800.h"
-#include "machine/6821pia.h"
-#include "core.h"
-#include "sndbrd.h"
-#include "snd_cmd.h"
-#include "wmssnd.h"
-#include "desound.h"
-#include "dedmd.h"
-#include "s11.h"
-
-#define FIXMUX // DataEast Playboy 35th fix
-
-// TODO:
-// DE display layouts
-#define S11_PIA0 0
-#define S11_PIA1 1
-#define S11_PIA2 2
-#define S11_PIA3 3
-#define S11_PIA4 4
-#define S11_PIA5 5
-
-#define S11_VBLANKFREQ 60 /* VBLANK frequency */
-
-#define S11_IRQFREQ 1000
-
-#define S11_SOLSMOOTH 2 /* Smooth the Solenoids over this numer of VBLANKS */
-#define S11_LAMPSMOOTH 2 /* Smooth the lamps over this number of VBLANKS */
-#define S11_DISPLAYSMOOTH 2 /* Smooth the display over this number of VBLANKS */
-
-static MACHINE_STOP(s11);
-static NVRAM_HANDLER(s11);
-static NVRAM_HANDLER(de);
-
-const struct core_dispLayout s11_dispS9[] = {
- {4, 0, 1,7, CORE_SEG87}, {4,16, 9,7, CORE_SEG87},
- {0, 0,21,7, CORE_SEG87}, {0,16,29,7, CORE_SEG87},
- DISP_SEG_CREDIT(0,8,CORE_SEG7S),DISP_SEG_BALLS(20,28,CORE_SEG7S),{0}
-};
-const struct core_dispLayout s11_dispS11[] = {
- DISP_SEG_7(0,0,CORE_SEG16),DISP_SEG_7(0,1,CORE_SEG16),
- DISP_SEG_7(1,0,CORE_SEG8), DISP_SEG_7(1,1,CORE_SEG8),
- {2,8,0,1,CORE_SEG7S},{2,10,8,1,CORE_SEG7S}, {2,2,20,1,CORE_SEG7S},{2,4,28,1,CORE_SEG7S}, {0}
-};
-const struct core_dispLayout s11_dispS11a[] = {
- DISP_SEG_7(0,0,CORE_SEG16),DISP_SEG_7(0,1,CORE_SEG16),
- DISP_SEG_7(1,0,CORE_SEG8), DISP_SEG_7(1,1,CORE_SEG8) ,{0}
-};
-const struct core_dispLayout s11_dispS11b2[] = {
- DISP_SEG_16(0,CORE_SEG16),DISP_SEG_16(1,CORE_SEG16),{0}
-};
-
-/*----------------
-/ Local variables
-/-----------------*/
-static struct {
- int vblankCount;
- UINT32 solenoids, solsmooth[S11_SOLSMOOTH];
- UINT32 extSol, extSolPulse;
- core_tSeg segments, pseg;
- int lampRow, lampColumn;
- int digSel;
- int diagnosticLed;
- int swCol;
- int ssEn; /* Special solenoids and flippers enabled ? */
- int sndCmd; /* external sound board cmd */
- int piaIrq;
- int deGame; /*Flag to see if it's a Data East game running*/
-#ifdef FIXMUX
- UINT8 solBits1,solBits2;
- UINT8 solBits2prv;
-#endif
-} locals;
-
-static void s11_irqline(int state) {
- if (state) {
- cpu_set_irq_line(0, M6808_IRQ_LINE, ASSERT_LINE);
- /*Set coin door inputs, differs between S11 & DE*/
- if (locals.deGame) {
- pia_set_input_ca1(S11_PIA2, !core_getSw(DE_SWADVANCE));
- pia_set_input_cb1(S11_PIA2, core_getSw(DE_SWUPDN));
- }
- else {
- pia_set_input_ca1(S11_PIA2, core_getSw(S11_SWADVANCE));
- pia_set_input_cb1(S11_PIA2, core_getSw(S11_SWUPDN));
- }
- }
- else if (!locals.piaIrq) {
- cpu_set_irq_line(0, M6808_IRQ_LINE, CLEAR_LINE);
- pia_set_input_ca1(S11_PIA2, locals.deGame);
- pia_set_input_cb1(S11_PIA2, locals.deGame);
- }
-}
-
-static void s11_piaMainIrq(int state) {
- s11_irqline(locals.piaIrq = state);
-}
-
-static INTERRUPT_GEN(s11_irq) {
- s11_irqline(1); timer_set(TIME_IN_CYCLES(32,0),0,s11_irqline);
-}
-
-static INTERRUPT_GEN(s11_vblank) {
- /*-------------------------------
- / copy local data to interface
- /--------------------------------*/
- locals.vblankCount += 1;
- /*-- lamps --*/
- if ((locals.vblankCount % S11_LAMPSMOOTH) == 0) {
- memcpy(coreGlobals.lampMatrix, coreGlobals.tmpLampMatrix, sizeof(coreGlobals.tmpLampMatrix));
- memset(coreGlobals.tmpLampMatrix, 0, sizeof(coreGlobals.tmpLampMatrix));
- }
- /*-- solenoids --*/
- if (locals.ssEn) { // set gameon and special solenoids
- int ii;
- locals.solenoids |= CORE_SOLBIT(S11_GAMEONSOL);
- /*-- special solenoids updated based on switches --*/
- for (ii = 0; ii < 6; ii++) {
- if (core_gameData->sxx.ssSw[ii] && core_getSw(core_gameData->sxx.ssSw[ii]))
- locals.solenoids |= CORE_SOLBIT(CORE_FIRSTSSSOL+ii);
- }
- }
-#ifdef FIXMUX
-// mux translation moved
-#else
- if ((core_gameData->sxx.muxSol) &&
- (locals.solenoids & CORE_SOLBIT(core_gameData->sxx.muxSol))) {
- if (core_gameData->hw.gameSpecific1 & S11_RKMUX)
- locals.solenoids = (locals.solenoids & 0x00ff8fef) |
- ((locals.solenoids & 0x00000010)<<20) |
- ((locals.solenoids & 0x00007000)<<13);
- else
- locals.solenoids = (locals.solenoids & 0x00ffff00) | (locals.solenoids<<24);
- }
-#endif
- locals.solsmooth[locals.vblankCount % S11_SOLSMOOTH] = locals.solenoids;
-#if S11_SOLSMOOTH != 2
-# error "Need to update smooth formula"
-#endif
- coreGlobals.solenoids = locals.solsmooth[0] | locals.solsmooth[1];
- coreGlobals.solenoids2 = locals.extSol << 8;
- locals.solenoids = coreGlobals.pulsedSolState;
- locals.extSol = locals.extSolPulse;
- /*-- display --*/
- if ((locals.vblankCount % S11_DISPLAYSMOOTH) == 0) {
- memcpy(coreGlobals.segments, locals.segments, sizeof(coreGlobals.segments));
- memcpy(locals.segments, locals.pseg, sizeof(locals.segments));
- coreGlobals.diagnosticLed = locals.diagnosticLed;
- locals.diagnosticLed = 0;
- }
- core_updateSw(locals.ssEn);
-}
-
-/*---------------
-/ Lamp handling
-/----------------*/
-static WRITE_HANDLER(pia1a_w) {
- core_setLamp(coreGlobals.tmpLampMatrix, locals.lampColumn, locals.lampRow = ~data);
-}
-static WRITE_HANDLER(pia1b_w) {
- core_setLamp(coreGlobals.tmpLampMatrix, locals.lampColumn = data, locals.lampRow);
-}
-
-/*-- Jumper W7 --*/
-static READ_HANDLER (pia2a_r) { return core_getDip(0)<<7; }
-
-/*-----------------
-/ Display handling
-/-----------------*/
-/*NOTE: Data East DMD Games: data = 0x01, CN1-Pin 7 (Strobe) goes low
- data = 0x04, CN2-Pin 1 (Enable) goes low
- (currently we don't need to read these values)*/
-static WRITE_HANDLER(pia2a_w) {
- locals.digSel = data & 0x0f;
- if (core_gameData->hw.display & S11_BCDDIAG)
- locals.diagnosticLed |= core_bcd2seg[(data & 0x70)>>4];
- else
- locals.diagnosticLed |= (data & 0x10)>>4;
-}
-
-static WRITE_HANDLER(pia2b_w) {
- /* Data East writes auxiliary solenoids here for DMD games
- CN3 Printer Data Lines (Used by various games)
- data = 0x01, CN3-Pin 9 (GNR Magnet 3, inverted for Star Trek 25th chase lights)
- data = 0x02, CN3-Pin 8 (GNR Magnet 2, -"-)
- data = 0x04, CN3-Pin 7 (GNR Magnet 1, -"-)
- ....
- data = 0x80, CN3-Pin 1 (Blinder on Tommy)*/
- if (core_gameData->gen & GEN_DEDMD16) {
- if (core_gameData->hw.gameSpecific1 & S11_PRINTERLINE) locals.extSol |= locals.extSolPulse = (data ^ 0xff);
- } else if (core_gameData->gen & (GEN_DEDMD32|GEN_DEDMD64)) {
- if (core_gameData->hw.gameSpecific1 & S11_PRINTERLINE) locals.extSol |= locals.extSolPulse = data;
- }
- else {
- if (core_gameData->hw.display & S11_DISPINV) data = ~data;
- if (core_gameData->hw.display & S11_BCDDISP) {
- locals.segments[locals.digSel].w |=
- locals.pseg[locals.digSel].w = core_bcd2seg[data&0x0f];
- locals.segments[20+locals.digSel].w |=
- locals.pseg[20+locals.digSel].w = core_bcd2seg[data>>4];
- }
- else
- locals.segments[20+locals.digSel].b.lo |=
- locals.pseg[20+locals.digSel].b.lo = data;
- }
-}
-static WRITE_HANDLER(pia5a_w) { // Not used for DMD
- if (core_gameData->hw.display & S11_DISPINV) data = ~data;
- if (core_gameData->hw.display & S11_LOWALPHA)
- locals.segments[20+locals.digSel].b.hi |=
- locals.pseg[20+locals.digSel].b.hi = data;
-}
-static WRITE_HANDLER(pia3a_w) {
- if (core_gameData->hw.display & S11_DISPINV) data = ~data;
- locals.segments[locals.digSel].b.hi |= locals.pseg[locals.digSel].b.hi = data;
-}
-static WRITE_HANDLER(pia3b_w) {
- if (core_gameData->hw.display & S11_DISPINV) data = ~data;
- locals.segments[locals.digSel].b.lo |= locals.pseg[locals.digSel].b.lo = data;
-}
-
-static READ_HANDLER(pia3b_dmd_r) {
- if (core_gameData->gen & GEN_DEDMD32)
- return (sndbrd_0_data_r(0) ? 0x80 : 0x00) | (sndbrd_0_ctrl_r(0)<<3);
- else if (core_gameData->gen & GEN_DEDMD64)
- return sndbrd_0_data_r(0) ? 0x80 : 0x00;
- return 0;
-}
-
-//NOTE: Unusued in Data East Alpha Games
-static WRITE_HANDLER(pia2ca2_w) {
- data = data ? 0x80 : 0x00;
- if (core_gameData->gen & GEN_S9) {
- locals.segments[1+locals.digSel].b.lo |= data;
- locals.pseg[1+locals.digSel].b.lo = (locals.pseg[1+locals.digSel].b.lo & 0x7f) | data;
- } else {
- locals.segments[20+locals.digSel].b.lo |= data;
- locals.pseg[20+locals.digSel].b.lo = (locals.pseg[20+locals.digSel].b.lo & 0x7f) | data;
- }
-}
-//NOTE: Pin 10 of CN3 for Data East DMD Games (Currently we don't need to read this value)
-static WRITE_HANDLER(pia2cb2_w) {
- data = data ? 0x80 : 0x00;
- if (core_gameData->gen & GEN_S9) {
- locals.segments[21+locals.digSel].b.lo |= data;
- locals.pseg[21+locals.digSel].b.lo = (locals.pseg[21+locals.digSel].b.lo & 0x7f) | data;
- } else {
- locals.segments[locals.digSel].b.lo |= data;
- locals.pseg[locals.digSel].b.lo = (locals.pseg[locals.digSel].b.lo & 0x7f) | data;
- }
-}
-
-static READ_HANDLER(pia5a_r) {
- if (core_gameData->gen & GEN_DEDMD64)
- return sndbrd_0_ctrl_r(0);
- else if (core_gameData->gen & GEN_DEDMD16)
- return (sndbrd_0_data_r(0) ? 0x01 : 0x00) | (sndbrd_0_ctrl_r(0)<<1);
- return 0;
-}
-
-/*------------
-/ Solenoids
-/-------------*/
-static void setSSSol(int data, int solNo) {
- /* WMS DE */
- static const int ssSolNo[2][6] = {{5,4,1,2,0,3},{3,4,5,1,0,2}};
- int bit = CORE_SOLBIT(CORE_FIRSTSSSOL + ssSolNo[locals.deGame][solNo]);
- if (locals.ssEn & (~data & 1))
- { coreGlobals.pulsedSolState |= bit; locals.solenoids |= bit; }
- else
- coreGlobals.pulsedSolState &= ~bit;
-}
-
-#ifdef FIXMUX
-
-static void updsol(void) {
- /* set new solenoids, preserve SSSol */
- coreGlobals.pulsedSolState = (coreGlobals.pulsedSolState & 0x00ff0000)
- | (locals.solBits2 << 8)
- | (locals.solBits1 );
-
- /* if game has a MUX and it's active... */
- if ((core_gameData->sxx.muxSol) &&
- (coreGlobals.pulsedSolState & CORE_SOLBIT(core_gameData->sxx.muxSol))) {
- if (core_gameData->hw.gameSpecific1 & S11_RKMUX) /* special case WMS Road Kings */
- coreGlobals.pulsedSolState = (coreGlobals.pulsedSolState & 0x00ff8fef) |
- ((coreGlobals.pulsedSolState & 0x00000010)<<20) |
- ((coreGlobals.pulsedSolState & 0x00007000)<<13);
- else
- coreGlobals.pulsedSolState = (coreGlobals.pulsedSolState & 0x00ffff00) |
- (coreGlobals.pulsedSolState << 24);
- }
-
- locals.solenoids |= coreGlobals.pulsedSolState;
-}
-
-static WRITE_HANDLER(pia0b_w) {
- // DataEast Playboy35th needs the MUX delayed my one IRQ:
- if (core_gameData->hw.gameSpecific1 & S11_MUXDELAY) {
- // new solbits are stored, previous solbits are processed
- UINT8 h = locals.solBits2prv;
- locals.solBits2prv = data;
- data = h;
- }
- if (data != locals.solBits2) {
- locals.solBits2 = data;
- updsol();
- }
-}
-
-static WRITE_HANDLER(latch2200) {
- if (data != locals.solBits1) {
- locals.solBits1 = data;
- updsol();
- }
-}
-
-#else
-static WRITE_HANDLER(pia0b_w) {
- coreGlobals.pulsedSolState = (coreGlobals.pulsedSolState & 0xffff00ff) | (data<<8);
- locals.solenoids |= (data<<8);
-}
-static WRITE_HANDLER(latch2200) {
- coreGlobals.pulsedSolState = (coreGlobals.pulsedSolState & 0xffffff00) | data;
- locals.solenoids |= data;
-}
-#endif
-
-static WRITE_HANDLER(pia0cb2_w) { locals.ssEn = !data;}
-
-static WRITE_HANDLER(pia1ca2_w) { setSSSol(data, 0); }
-static WRITE_HANDLER(pia1cb2_w) { setSSSol(data, 1); }
-static WRITE_HANDLER(pia3ca2_w) { setSSSol(data, 2); }
-static WRITE_HANDLER(pia3cb2_w) { setSSSol(data, 3); }
-static WRITE_HANDLER(pia4ca2_w) { setSSSol(data, 4); }
-static WRITE_HANDLER(pia4cb2_w) { setSSSol(data, 5); }
-
-/*---------------
-/ Switch reading
-/----------------*/
-static WRITE_HANDLER(pia4b_w) { locals.swCol = data; }
-static READ_HANDLER(pia4a_r) { return core_getSwCol(locals.swCol); }
-
-/*-------
-/ Sound
-/--------*/
-/*-- Sound board sound command--*/
-static WRITE_HANDLER(pia5b_w) {
- //Data East 128x16 games need to eat the 0xfe command (especially Hook)
- if ((core_gameData->gen & GEN_DEDMD16) && (data == 0xfe)) return;
- locals.sndCmd = data; sndbrd_1_data_w(0,data);
-}
-
-/*-- Sound board sound command available --*/
-static WRITE_HANDLER(pia5cb2_w) {
- /* don't pass to sound board if a sound overlay board is available */
- if ((core_gameData->hw.gameSpecific1 & S11_SNDOVERLAY) &&
- ((locals.sndCmd & 0xe0) == 0)) {
- if (!data) locals.extSol |= locals.extSolPulse = (~locals.sndCmd) & 0x1f;
- }
- else sndbrd_1_ctrl_w(0,data);
-}
-/*-- reset sound board CPU --*/
-static WRITE_HANDLER(pia5ca2_w) { /*
- if (core_gameData->gen & ~(GEN_S11B_3|GEN_S9)) {
- cpu_set_reset_line(S11_SCPU1NO, PULSE_LINE);
- s11cs_reset();
- } */
-}
-static WRITE_HANDLER(s11_sndCmd_w) {
- static int soundSys = -1; /* 0 = CPU board sound, 1 = Sound board */
- if (soundSys < 0)
- soundSys = (data & 0x01);
- else {
- sndbrd_data_w(soundSys, data); sndbrd_ctrl_w(soundSys,1); sndbrd_ctrl_w(soundSys,0);
- soundSys = -1;
- }
-}
-
-static WRITE_HANDLER(de_sndCmd_w) {
- sndbrd_data_w(1, data); sndbrd_ctrl_w(1,1); sndbrd_ctrl_w(1,0);
-}
-
-//NOTE: Not used for Data East
-static WRITE_HANDLER(pia0ca2_w) { sndbrd_0_ctrl_w(0,data); }
-//NOTE: Not used for Data East
-static READ_HANDLER(pia5b_r) { return sndbrd_1_ctrl_r(0); }
-
-static struct pia6821_interface s11_pia[] = {
-{/* PIA 0 (2100) */
- /* PA0 - PA7 Sound Select Outputs (sound latch) */
- /* PB0 - PB7 Solenoid 9-16 (12 is usually for multiplexing) */
- /* CA2 Sound H.S. */
- /* CB2 Enable Special Solenoids */
- /* in : A/B,CA/B1,CA/B2 */ 0, 0, 0, 0, 0, 0,
- /* out : A/B,CA/B2 */ sndbrd_0_data_w, pia0b_w, pia0ca2_w, pia0cb2_w,
- /* irq : A/B */ s11_piaMainIrq, s11_piaMainIrq
-},{ /* PIA 1 (2400) */
- /* PA0 - PA7 Lamp Matrix Strobe */
- /* PB0 - PB7 Lamp Matrix Return */
- /* CA2 F SS6 */
- /* CB2 E SS5 */
- /* in : A/B,CA/B1,CA/B2 */ 0, 0, 0, 0, 0, 0,
- /* out : A/B,CA/B2 */ pia1a_w, pia1b_w, pia1ca2_w, pia1cb2_w,
- /* irq : A/B */ s11_piaMainIrq, s11_piaMainIrq
-},{ /* PIA 2 (2800) */
- /* PA0 - PA3 Digit Select 1-16 */
- /* PA4 Diagnostic LED */
- /* PA5-PA6 NC */
- /* PA7 (I) Jumper W7 */
- /* PB0 - PB7 Digit BCD */
- /* CA1 (I) Diagnostic Advance */
- /* CB1 (I) Diagnostic Up/dn */
- /* CA2 Comma 3+4 */
- /* CB2 Comma 1+2 */
- /* in : A/B,CA/B1,CA/B2 */ pia2a_r, 0, 0,0, 0, 0,
- /* out : A/B,CA/B2 */ pia2a_w, pia2b_w, pia2ca2_w, pia2cb2_w,
- /* irq : A/B */ s11_piaMainIrq, s11_piaMainIrq
-},{ /* PIA 3 (2c00) */
- /* PA0 - PA7 Display Data (h,j,k,m,n,p,r,dot) */
- /* PB0 - PB7 Display Data (a,b,c,d,e,f,g,com) */
- /* CA1 Widget I/O LCA1 */
- /* CB1 Widget I/O LCB1 */
- /* CA2 (I) B SST2 */
- /* CB2 (I) C SST3 */
- /* in : A/B,CA/B1,CA/B2 */ 0, 0, 0, 0, 0, 0,
- /* out : A/B,CA/B2 */ pia3a_w, pia3b_w, pia3ca2_w, pia3cb2_w,
- /* irq : A/B */ s11_piaMainIrq, s11_piaMainIrq
-},{ /* PIA 4 (3000) */
- /* PA0 - PA7 Switch Input (row) */
- /* PB0 - PB7 Switch Drivers (column) */
- /* CA1/CB1 GND */
- /* CA2 (I) A SS1 */
- /* CB2 (I) D SS4 */
- /* in : A/B,CA/B1,CA/B2 */ pia4a_r, 0, 0, 0, 0, 0,
- /* out : A/B,CA/B2 */ 0, pia4b_w, pia4ca2_w, pia4cb2_w,
- /* irq : A/B */ s11_piaMainIrq, s11_piaMainIrq
-},{ /* PIA 5 (3400) */
- /* PA0 - PA7 Display Data' (h,j,k ,m,n,p,r,dot), DMD status */
- /* PB0 - PB7 Widget I/O MD0-MD7 */
- /* CA1 Widget I/O MCA1 */
- /* CB1 Widget I/O MCB1 */
- /* CA2 Widget I/O MCA2 */
- /* CB2 Widget I/O MCB2 */
- /* in : A/B,CA/B1,CA/B2 */ pia5a_r, pia5b_r, 0, 0, 0, 0,
- /* out : A/B,CA/B2 */ pia5a_w, pia5b_w, pia5ca2_w, pia5cb2_w,
- /* irq : A/B */ s11_piaMainIrq, s11_piaMainIrq
-},{ /* PIA 3 (2c00) for DMD games*/
- /* PA0 - PA7 DMD data */
- /* PB0 - PB7 DMD ctrl */
- /* CA1 NC */
- /* CB1 NC */
- /* CA2 (O) B SST2 */
- /* CB2 (O) C SST3 */
- /* in : A/B,CA/B1,CA/B2 */ 0, pia3b_dmd_r, 0, 0, 0, 0,
- /* out : A/B,CA/B2 */ sndbrd_0_data_w, sndbrd_0_ctrl_w, pia3ca2_w, pia3cb2_w,
- /* irq : A/B */ s11_piaMainIrq, s11_piaMainIrq
-}
-};
-
-static SWITCH_UPDATE(s11) {
- if (inports) {
- coreGlobals.swMatrix[0] = (inports[S11_COMINPORT] & 0x7f00)>>8;
- coreGlobals.swMatrix[1] = inports[S11_COMINPORT];
- }
- /*-- Generate interupts for diganostic keys --*/
- cpu_set_nmi_line(0, core_getSw(S11_SWCPUDIAG) ? ASSERT_LINE : CLEAR_LINE);
- sndbrd_0_diag(core_getSw(S11_SWSOUNDDIAG));
- if ((core_gameData->hw.gameSpecific1 & S11_MUXSW2) && core_gameData->sxx.muxSol)
- core_setSw(2, core_getSol(core_gameData->sxx.muxSol));
- if (locals.deGame) {
- /* Show Status of Black Advance Switch */
- core_textOutf(40,20,BLACK,core_getSw(DE_SWADVANCE) ? "B-Down" : "B-Up ");
- /* Show Status of Green Up/Down Switch */
- core_textOutf(40,30,BLACK,core_getSw(DE_SWUPDN) ? "G-Down" : "G-Up ");
- }
- else {
- /* Show Status of Advance Switch */
- core_textOutf(40,20,BLACK,core_getSw(S11_SWADVANCE) ? "A-Down" : "A-Up ");
- /* Show Status of Green Up/Down Switch */
- core_textOutf(40,30,BLACK,core_getSw(S11_SWUPDN) ? "G-Down" : "G-Up ");
- }
-}
-
-// convert lamp and switch numbers
-// S11 is 1-64
-// convert to 0-64 (+8)
-// i.e. 1=8, 2=9...
-static int s11_sw2m(int no) { return no+7; }
-static int s11_m2sw(int col, int row) { return col*8+row-7; }
-
-static MACHINE_INIT(s11) {
- if (core_gameData->gen & (GEN_DE | GEN_DEDMD16 | GEN_DEDMD32 | GEN_DEDMD64))
- locals.deGame = 1;
- pia_config(S11_PIA0, PIA_STANDARD_ORDERING, &s11_pia[0]);
- pia_config(S11_PIA1, PIA_STANDARD_ORDERING, &s11_pia[1]);
- pia_config(S11_PIA2, PIA_STANDARD_ORDERING, &s11_pia[2]);
- pia_config(S11_PIA3, PIA_STANDARD_ORDERING, &s11_pia[3]);
- pia_config(S11_PIA4, PIA_STANDARD_ORDERING, &s11_pia[4]);
- pia_config(S11_PIA5, PIA_STANDARD_ORDERING, &s11_pia[5]);
-
- /*Additional hardware dependent init code*/
- switch (core_gameData->gen) {
- case GEN_S9:
- sndbrd_0_init(SNDBRD_S9S, 1, NULL, NULL, NULL);
- break;
- case GEN_S11:
- sndbrd_0_init(SNDBRD_S11S, 1, memory_region(S11S_ROMREGION), NULL, NULL);
- break;
- case GEN_S11X:
- sndbrd_0_init(SNDBRD_S11XS, 2, memory_region(S11XS_ROMREGION), NULL, NULL);
- sndbrd_1_init(SNDBRD_S11CS, 1, memory_region(S11CS_ROMREGION), pia_5_cb1_w, NULL);
- break;
- case GEN_S11B2:
- sndbrd_0_init(SNDBRD_S11BS, 2, memory_region(S11XS_ROMREGION), NULL, NULL);
- sndbrd_1_init(SNDBRD_S11JS, 1, memory_region(S11JS_ROMREGION), pia_5_cb1_w, NULL);
- break;
- case GEN_S11C:
- sndbrd_1_init(SNDBRD_S11CS, 1, memory_region(S11CS_ROMREGION), pia_5_cb1_w, NULL);
- break;
- case GEN_DE:
- sndbrd_1_init(SNDBRD_DE1S, 1, memory_region(DE1S_ROMREGION), pia_5_cb1_w, NULL);
- break;
- case GEN_DEDMD16:
- case GEN_DEDMD32:
- case GEN_DEDMD64:
- pia_config(S11_PIA3, PIA_STANDARD_ORDERING, &s11_pia[6]); // PIA 3 is different for DMD games
- sndbrd_0_init(core_gameData->hw.display, 2, memory_region(DE_DMD16ROMREGION),NULL,NULL);
- sndbrd_1_init(core_gameData->hw.soundBoard, 1, memory_region(DE1S_ROMREGION), pia_5_cb1_w, NULL);
- break;
- }
-}
-static MACHINE_INIT(s9pf) {
- pia_config(S11_PIA0, PIA_STANDARD_ORDERING, &s11_pia[0]);
- pia_config(S11_PIA1, PIA_STANDARD_ORDERING, &s11_pia[1]);
- pia_config(S11_PIA2, PIA_STANDARD_ORDERING, &s11_pia[2]);
- pia_config(S11_PIA3, PIA_STANDARD_ORDERING, &s11_pia[3]);
- pia_config(S11_PIA4, PIA_STANDARD_ORDERING, &s11_pia[4]);
- pia_config(S11_PIA5, PIA_STANDARD_ORDERING, &s11_pia[5]);
- sndbrd_0_init(SNDBRD_S9S, 1, NULL, NULL, NULL);
-}
-static MACHINE_RESET(s11) {
- pia_reset();
-}
-static MACHINE_STOP(s11) {
- sndbrd_0_exit(); sndbrd_1_exit();
-}
-
-/*---------------------------
-/ Memory map for main CPU
-/----------------------------*/
-static MEMORY_READ_START(s11_readmem)
- { 0x0000, 0x1fff, MRA_RAM},
- { 0x2100, 0x2103, pia_r(S11_PIA0) },
- { 0x2400, 0x2403, pia_r(S11_PIA1) },
- { 0x2800, 0x2803, pia_r(S11_PIA2) },
- { 0x2c00, 0x2c03, pia_r(S11_PIA3) },
- { 0x3000, 0x3003, pia_r(S11_PIA4) },
- { 0x3400, 0x3403, pia_r(S11_PIA5) },
- { 0x4000, 0xffff, MRA_ROM },
-MEMORY_END
-
-static MEMORY_WRITE_START(s11_writemem)
- { 0x0000, 0x1fff, MWA_RAM }, /* CMOS */
- { 0x2100, 0x2103, pia_w(S11_PIA0) },
- { 0x2200, 0x2200, latch2200},
- { 0x2400, 0x2403, pia_w(S11_PIA1) },
- { 0x2800, 0x2803, pia_w(S11_PIA2) },
- { 0x2c00, 0x2c03, pia_w(S11_PIA3) },
- { 0x3000, 0x3003, pia_w(S11_PIA4) },
- { 0x3400, 0x3403, pia_w(S11_PIA5) },
- { 0x4000, 0xffff, MWA_ROM },
-MEMORY_END
-
-/*-----------------
-/ Machine drivers
-/------------------*/
-static MACHINE_DRIVER_START(s11)
- MDRV_IMPORT_FROM(PinMAME)
- MDRV_CORE_INIT_RESET_STOP(s11,s11,s11)
- MDRV_CPU_ADD(M6808, 1000000)
- MDRV_CPU_MEMORY(s11_readmem, s11_writemem)
- MDRV_CPU_VBLANK_INT(s11_vblank, 1)
- MDRV_CPU_PERIODIC_INT(s11_irq, S11_IRQFREQ)
- MDRV_DIPS(1) /* (actually a jumper) */
- MDRV_SWITCH_UPDATE(s11)
-MACHINE_DRIVER_END
-
-/* System 9 */
-MACHINE_DRIVER_START(s11_s9S)
- MDRV_IMPORT_FROM(s11)
- MDRV_IMPORT_FROM(wmssnd_s9s)
- MDRV_NVRAM_HANDLER(s11)
- MDRV_DIAGNOSTIC_LED7
- MDRV_SOUND_CMD(s11_sndCmd_w)
- MDRV_SOUND_CMDHEADING("s11")
-MACHINE_DRIVER_END
-
-/* System 11 with S11C sound board, diagnostic digit */
-MACHINE_DRIVER_START(s11_s11XS)
- MDRV_IMPORT_FROM(s11)
- MDRV_IMPORT_FROM(wmssnd_s11xs)
- MDRV_NVRAM_HANDLER(s11)
- MDRV_DIAGNOSTIC_LED7
- MDRV_SOUND_CMD(s11_sndCmd_w)
- MDRV_SOUND_CMDHEADING("s11")
-MACHINE_DRIVER_END
-
-/* Pennant Fever */
-MACHINE_DRIVER_START(s11_s9PS)
- MDRV_IMPORT_FROM(s11)
- MDRV_IMPORT_FROM(wmssnd_s9ps)
- MDRV_CORE_INIT_RESET_STOP(s9pf,s11,s11)
- MDRV_NVRAM_HANDLER(s11)
- MDRV_DIAGNOSTIC_LED7
- MDRV_SOUND_CMD(s11_sndCmd_w)
- MDRV_SOUND_CMDHEADING("s11")
-MACHINE_DRIVER_END
-
-/* System 11 with S11C sound board, diagnostic LED only */
-MACHINE_DRIVER_START(s11_s11XSL)
- MDRV_IMPORT_FROM(s11_s11XS)
- MDRV_DIAGNOSTIC_LEDH(1)
-MACHINE_DRIVER_END
-
-/* System 11a without external sound board*/
-MACHINE_DRIVER_START(s11_s11S)
- MDRV_IMPORT_FROM(s11)
- MDRV_IMPORT_FROM(wmssnd_s11s)
- MDRV_NVRAM_HANDLER(s11)
- MDRV_DIAGNOSTIC_LEDH(1)
- MDRV_SOUND_CMD(s11_sndCmd_w)
- MDRV_SOUND_CMDHEADING("s11")
-MACHINE_DRIVER_END
-
-/* System 11a with S11C sound board */
-MACHINE_DRIVER_START(s11_s11aS)
- MDRV_IMPORT_FROM(s11)
- MDRV_IMPORT_FROM(wmssnd_s11xs)
- MDRV_NVRAM_HANDLER(s11)
- MDRV_DIAGNOSTIC_LEDH(1)
- MDRV_SOUND_CMD(s11_sndCmd_w)
- MDRV_SOUND_CMDHEADING("s11")
-MACHINE_DRIVER_END
-
-/* System 11B with Jokerz! sound board*/
-MACHINE_DRIVER_START(s11_s11b2S)
- MDRV_IMPORT_FROM(s11)
- MDRV_IMPORT_FROM(wmssnd_s11b2s)
- MDRV_NVRAM_HANDLER(s11)
- MDRV_DIAGNOSTIC_LEDH(1)
- MDRV_SOUND_CMD(s11_sndCmd_w)
- MDRV_SOUND_CMDHEADING("s11")
-MACHINE_DRIVER_END
-
-/* System 11C */
-MACHINE_DRIVER_START(s11_s11cS)
- MDRV_IMPORT_FROM(s11)
- MDRV_IMPORT_FROM(wmssnd_s11cs)
- MDRV_NVRAM_HANDLER(s11)
- MDRV_DIAGNOSTIC_LEDH(1)
- MDRV_SOUND_CMD(s11_sndCmd_w)
- MDRV_SOUND_CMDHEADING("s11")
-MACHINE_DRIVER_END
-
-/* DE alpa numeric No Sound */
-MACHINE_DRIVER_START(de_a)
- MDRV_IMPORT_FROM(s11)
- MDRV_NVRAM_HANDLER(de)
- MDRV_DIAGNOSTIC_LEDH(1)
-MACHINE_DRIVER_END
-
-/* DE alphanumeric Sound 1 */
-MACHINE_DRIVER_START(de_a1S)
- MDRV_IMPORT_FROM(de_a)
- MDRV_IMPORT_FROM(de1s)
- MDRV_SOUND_CMD(de_sndCmd_w)
- MDRV_SOUND_CMDHEADING("DE")
-MACHINE_DRIVER_END
-
-/* DE 128x16 Sound 1 */
-MACHINE_DRIVER_START(de_dmd161S)
- MDRV_IMPORT_FROM(s11)
- MDRV_IMPORT_FROM(de1s)
- MDRV_IMPORT_FROM(de_dmd16)
- MDRV_NVRAM_HANDLER(de)
- MDRV_DIAGNOSTIC_LEDH(1)
- MDRV_SOUND_CMD(de_sndCmd_w)
- MDRV_SOUND_CMDHEADING("DE")
-MACHINE_DRIVER_END
-
-/* DE 128x16 Sound 2a */
-MACHINE_DRIVER_START(de_dmd162aS)
- MDRV_IMPORT_FROM(s11)
- MDRV_IMPORT_FROM(de2aas)
- MDRV_IMPORT_FROM(de_dmd16)
- MDRV_NVRAM_HANDLER(de)
- MDRV_DIAGNOSTIC_LEDH(1)
- MDRV_SOUND_CMD(de_sndCmd_w)
- MDRV_SOUND_CMDHEADING("DE")
-MACHINE_DRIVER_END
-
-/* DE 128x32 Sound 2a */
-MACHINE_DRIVER_START(de_dmd322aS)
- MDRV_IMPORT_FROM(s11)
- MDRV_IMPORT_FROM(de2aas)
- MDRV_IMPORT_FROM(de_dmd32)
- MDRV_NVRAM_HANDLER(de)
- MDRV_DIAGNOSTIC_LEDH(1)
- MDRV_SOUND_CMD(de_sndCmd_w)
- MDRV_SOUND_CMDHEADING("DE")
-MACHINE_DRIVER_END
-
-/* DE 192x64 Sound 2a */
-MACHINE_DRIVER_START(de_dmd642aS)
- MDRV_IMPORT_FROM(s11)
- MDRV_IMPORT_FROM(de2aas)
- MDRV_IMPORT_FROM(de_dmd64)
- MDRV_NVRAM_HANDLER(de)
- MDRV_DIAGNOSTIC_LEDH(1)
- MDRV_SOUND_CMD(de_sndCmd_w)
- MDRV_SOUND_CMDHEADING("DE")
-MACHINE_DRIVER_END
-
-/*-----------------------------------------------
-/ Load/Save static ram
-/-------------------------------------------------*/
-static NVRAM_HANDLER(s11) {
- core_nvram(file, read_or_write, memory_region(S11_CPUREGION), 0x0800, 0xff);
-}
-static NVRAM_HANDLER(de) {
- core_nvram(file, read_or_write, memory_region(S11_CPUREGION), 0x2000, 0xff);
-}
-#endif
diff --git a/src/mame/drivers/p_s11.h b/src/mame/drivers/p_s11.h
deleted file mode 100644
index 4e154e2a2d9..00000000000
--- a/src/mame/drivers/p_s11.h
+++ /dev/null
@@ -1,263 +0,0 @@
-// new code to allow the PinMAME rom loading to compile
-
-#define S11_INPUT_PORTS_START(name,balls) \
- INPUT_PORTS_START(name) \
-
-#define S11_INPUT_PORTS_END \
- INPUT_PORTS_END \
-
-
-/*-- Memory regions --*/
-#define S11_CPUREGION "cpu1"
-
-/*-- Main CPU regions and ROM --*/
-#define S9_ROMSTARTx4(name, ver, n1, chk1) \
- ROM_START(name##_##ver) \
- NORMALREGION(0x10000, S11_CPUREGION) \
- ROM_LOAD(n1, 0x8000, 0x4000, chk1) \
- ROM_RELOAD( 0xc000, 0x4000)
-
-#define S9_ROMSTART12(name, ver, n1, chk1,n2,chk2) \
- ROM_START(name##_##ver) \
- NORMALREGION(0x10000, S11_CPUREGION) \
- ROM_LOAD(n1, 0x5000, 0x1000, chk1) \
- ROM_RELOAD( 0xd000, 0x1000) \
- ROM_LOAD(n2, 0x6000, 0x2000, chk2) \
- ROM_RELOAD( 0xe000, 0x2000)
-
-#define S11_ROMSTART48(name, ver, n1, chk1, n2, chk2) \
- ROM_START(name##_##ver) \
- NORMALREGION(0x10000, S11_CPUREGION) \
- ROM_LOAD(n1, 0x4000, 0x4000, chk1) \
- ROM_LOAD(n2, 0x8000, 0x8000, chk2)
-
-#define S11_ROMSTART28(name, ver, n1, chk1, n2, chk2) \
- ROM_START(name##_##ver) \
- NORMALREGION(0x10000, S11_CPUREGION) \
- ROM_LOAD(n1, 0x4000, 0x2000, chk1) \
- ROM_RELOAD( 0x6000, 0x2000) \
- ROM_LOAD(n2, 0x8000, 0x8000, chk2)
-
-#define S11_ROMSTART24(name, ver, n1, chk1, n2, chk2) \
- ROM_START(name##_##ver) \
- NORMALREGION(0x10000, S11_CPUREGION) \
- ROM_LOAD(n1, 0x4000, 0x2000, chk1) \
- ROM_RELOAD( 0x6000, 0x2000) \
- ROM_LOAD(n2, 0x8000, 0x4000, chk2) \
- ROM_RELOAD( 0xc000, 0x4000)
-
-#define S11_ROMEND ROM_END
-#define S9_ROMEND ROM_END
-#define DE_ROMEND ROM_END
-
-#define DE_CPUREGION REGION_CPU1
-
-/** 16K & 32K ROMS 1632 **/
-#define DE_ROMSTART48(name, n1, chk1, n2, chk2) \
- ROM_START(name) \
- NORMALREGION(0x10000, DE_CPUREGION) \
- ROM_LOAD(n1, 0x4000, 0x4000, chk1) \
- ROM_LOAD(n2, 0x8000, 0x8000, chk2)
-
-/** 2 X 32K(1st 8K of B5 Chip is Blank) ROMS 3232 **/
-#define DE_ROMSTART88(name, n1, chk1, n2, chk2) \
- ROM_START(name) \
- NORMALREGION(0x10000, DE_CPUREGION) \
- ROM_LOAD(n1, 0x0000, 0x8000, chk1) \
- ROM_LOAD(n2, 0x8000, 0x8000, chk2)
-
-/******* GAMES USING ONLY 1 ROM *******/
-/** 32K in 1 Rom Only **/
-#define DE_ROMSTARTx8(name, n1, chk1) \
- ROM_START(name) \
- NORMALREGION(0x10000, DE_CPUREGION) \
- ROM_LOAD(n1, 0x8000, 0x8000, chk1)
-
-/** 64K(1st 8K of Chip is Blank) ROM **/
-#define DE_ROMSTARTx0(name, n1, chk1) \
- ROM_START(name) \
- NORMALREGION(0x10000, DE_CPUREGION) \
- ROM_LOAD(n1, 0x0000, 0x10000, chk1)
-
-
-#define s9_mS9S s11_s9S
-#define s9_mS9PS s11_s9PS
-#define s11_mS11S s11_s11S
-#define s11_mS11XS s11_s11XS
-#define s11_mS11XSL s11_s11XSL
-#define s11_mS11AS s11_s11aS
-#define s11_mS11BS s11_s11aS
-#define s11_mS11B2S s11_s11b2S
-#define s11_mS11CS s11_s11cS
-#define de_mDEA de_a
-#define de_mDEAS1 de_a1S
-#define de_mDEDMD16S1 de_dmd161S
-#define de_mDEDMD16S2A de_dmd162aS
-#define de_mDEDMD32S2A de_dmd322aS
-#define de_mDEDMD64S2A de_dmd642aS
-
-
-/************************************************************************************************
-*************************************************************************************************
- Old PinMAME code below for reference ONLY
-*************************************************************************************************
-************************************************************************************************/
-
-#if 0
-
-#ifndef INC_S11
-#define INC_S11
-
-/*-- Common Inports for S11Games --*/
-#define S11_COMPORTS \
- PORT_START /* 0 */ \
- /* Switch Column 1 */ \
- COREPORT_BITDEF( 0x0001, IPT_TILT, KEYCODE_INSERT) \
- COREPORT_BIT( 0x0002, "Ball Tilt", KEYCODE_2) \
- COREPORT_BITDEF( 0x0004, IPT_START1, IP_KEY_DEFAULT) \
- COREPORT_BITDEF( 0x0008, IPT_COIN1, IP_KEY_DEFAULT) \
- COREPORT_BITDEF( 0x0010, IPT_COIN2, IP_KEY_DEFAULT) \
- COREPORT_BITDEF( 0x0020, IPT_COIN3, KEYCODE_3) \
- COREPORT_BIT( 0x0040, "Slam Tilt", KEYCODE_HOME) \
- COREPORT_BIT( 0x0080, "Hiscore Reset", KEYCODE_4) \
- /* These are put in switch column 0 */ \
- COREPORT_BIT( 0x0100, "Advance", KEYCODE_8) \
- COREPORT_BITTOG( 0x0200, "Up/Down", KEYCODE_7) \
- COREPORT_BIT( 0x0400, "CPU Diagnostic", KEYCODE_9) \
- COREPORT_BIT( 0x0800, "Sound Diagnostic", KEYCODE_0) \
- PORT_START /* 1 */ \
- COREPORT_DIPNAME( 0x0001, 0x0000, "Country") \
- COREPORT_DIPSET(0x0001, "Germany" ) \
- COREPORT_DIPSET(0x0000, "USA" )
-
-#define DE_COMPORTS \
- PORT_START /* 0 */ \
- /* Switch Column 1 */ \
- COREPORT_BITDEF( 0x0001, IPT_TILT, KEYCODE_INSERT) \
- COREPORT_BIT( 0x0002, "Ball Tilt", KEYCODE_2) \
- COREPORT_BITDEF( 0x0004, IPT_START1, IP_KEY_DEFAULT) \
- COREPORT_BITDEF( 0x0008, IPT_COIN1, IP_KEY_DEFAULT) \
- COREPORT_BITDEF( 0x0010, IPT_COIN2, IP_KEY_DEFAULT) \
- COREPORT_BITDEF( 0x0020, IPT_COIN3, KEYCODE_3) \
- COREPORT_BIT( 0x0040, "Slam Tilt", KEYCODE_HOME) \
- /* These are put in switch column 0 */ \
- COREPORT_BIT( 0x0100, "Black Button", KEYCODE_8) \
- COREPORT_BITTOG( 0x0200, "Green Button", KEYCODE_7)
-
-//Games after Frankenstein used Non-Toggling Up/Down(Green Button) Switch
-#define DE_COMPORTS2 \
- PORT_START /* 0 */ \
- /* Switch Column 1 */ \
- COREPORT_BITDEF( 0x0001, IPT_TILT, KEYCODE_INSERT) \
- COREPORT_BIT( 0x0002, "Ball Tilt", KEYCODE_2) \
- COREPORT_BITDEF( 0x0004, IPT_START1, IP_KEY_DEFAULT) \
- COREPORT_BITDEF( 0x0008, IPT_COIN1, IP_KEY_DEFAULT) \
- COREPORT_BITDEF( 0x0010, IPT_COIN2, IP_KEY_DEFAULT) \
- COREPORT_BITDEF( 0x0020, IPT_COIN3, KEYCODE_3) \
- COREPORT_BIT( 0x0040, "Slam Tilt", KEYCODE_HOME) \
- /* These are put in switch column 0 */ \
- COREPORT_BIT( 0x0100, "Black Button", KEYCODE_8) \
- COREPORT_BIT( 0x0200, "Green Button", KEYCODE_7) \
-
-
-/*-- Standard input ports --*/
-#define S11_INPUT_PORTS_START(name,balls) \
- INPUT_PORTS_START(name) \
- CORE_PORTS \
- SIM_PORTS(balls) \
- S11_COMPORTS
-
-#define S11_INPUT_PORTS_END INPUT_PORTS_END
-
-#define S11_COMINPORT CORE_COREINPORT
-
-#define DE_INPUT_PORTS_START(name,balls) \
- INPUT_PORTS_START(name) \
- CORE_PORTS \
- SIM_PORTS(balls) \
- DE_COMPORTS
-
-#define DE_INPUT_PORTS_END INPUT_PORTS_END
-
-#define DE_COMINPORT CORE_COREINPORT
-
-/*-- Standard input ports --*/
-#define DE_INPUT_PORTS_START2(name,balls) \
- INPUT_PORTS_START(name) \
- CORE_PORTS \
- SIM_PORTS(balls) \
- DE_COMPORTS2
-
-/*-- To access C-side multiplexed solenoid/flasher --*/
-#define S11_CSOL(x) ((x)+(WPC_FIRSTFLIPPERSOL-1))
-#define DE_CSOL(x) ((x)+24)
-/*-- GameOn solenoids --*/
-#define S11_GAMEONSOL 23
-#define DE_GAMEONSOL 23
-
-/*-- DE switch numbers --*/
-#define DE_SWADVANCE -7
-#define DE_SWUPDN -6
-
-/*-- S11 switch numbers --*/
-#define S11_SWADVANCE -7
-#define S11_SWUPDN -6
-#define S11_SWCPUDIAG -5
-#define S11_SWSOUNDDIAG -4
-
-/*-------------------------
-/ Machine driver constants
-/--------------------------*/
-
-
-/*-- standard display layouts --*/
-extern const core_tLCDLayout s11_dispS9[], s11_dispS11[], s11_dispS11a[], s11_dispS11b2[];
-#define s11_dispS11b1 s11_dispS11a
-#define s11_dispS11c s11_dispS11b2
-
-extern MACHINE_DRIVER_EXTERN(s11_s9S);
-extern MACHINE_DRIVER_EXTERN(s11_s9PS);
-extern MACHINE_DRIVER_EXTERN(s11_s11S);
-extern MACHINE_DRIVER_EXTERN(s11_s11XS);
-extern MACHINE_DRIVER_EXTERN(s11_s11XSL);
-extern MACHINE_DRIVER_EXTERN(s11_s11aS);
-extern MACHINE_DRIVER_EXTERN(s11_s11b2S);
-extern MACHINE_DRIVER_EXTERN(s11_s11cS);
-extern MACHINE_DRIVER_EXTERN(de_a);
-extern MACHINE_DRIVER_EXTERN(de_a1S);
-extern MACHINE_DRIVER_EXTERN(de_dmd161S);
-extern MACHINE_DRIVER_EXTERN(de_dmd162aS);
-extern MACHINE_DRIVER_EXTERN(de_dmd322aS);
-extern MACHINE_DRIVER_EXTERN(de_dmd642aS);
-
-
-
-// Display options
-#define S11_BCDDIAG 0x01 // 7seg diagnostic led
-#define S11_BCDDISP 0x02 // BCD display
-#define S11_LOWALPHA 0x04 // Alphanumeric second line display
-#define S11_DISPINV 0x08 // Display signals are inverted
-// Game specific options
-#define S11_MUXSW2 0x01 // MUX Solenoid activates switch 2
-#define S11_SNDOVERLAY 0x02 // Overlay solenoid board
-#define S11_PRINTERLINE 0x04 // Got printer lines
-#define S11_RKMUX 0x08 // Road Kings muxes different solenoids
-#define S11_MUXDELAY 0x10 // Delay mux solenoid by one IRQ
-#define S11_SNDDELAY 0x20 // Sound delay for Pool Sharks
-
-#if 0
-GEN_S9 BCDDISP
-GEN_S11
-GEN_S11A
-GEN_S11B_1
-GEN_S11B_2 LOWALPHA | INV MUX2
-GEN_S11B_2x LOWALPHA | INV | EXTSOLBOARD MUX2
-GEN_S11B_3 LOWALPHA | INV MUX2
-GEN_S11C LOWALPHA | INV MUX2
-DE_ALPHA1
-DE_ALPHA2
-DE_ALPHA3 LOWALPHA
-#endif
-#endif /* INC_S11 */
-
-#endif
diff --git a/src/mame/drivers/p_wmssnd.c b/src/mame/drivers/p_wmssnd.c
deleted file mode 100644
index a3396da312d..00000000000
--- a/src/mame/drivers/p_wmssnd.c
+++ /dev/null
@@ -1,1416 +0,0 @@
-/************************************************************************************************
-*************************************************************************************************
- Old PinMAME code below for reference ONLY
-*************************************************************************************************
-************************************************************************************************/
-
-#if 0
-
-#include "driver.h"
-#include "cpu/m6800/m6800.h"
-#include "cpu/m6809/m6809.h"
-#include "cpu/adsp2100/adsp2100.h"
-#include "machine/6821pia.h"
-#include "sound/2151intf.h"
-#include "sound/hc55516.h"
-#include "sound/dac.h"
-#include "core.h"
-#include "sndbrd.h"
-#include "s11.h"
-#include "wpc.h"
-#include "wmssnd.h"
-
-//This awful hack is here to prevent the bug where the speech pitch is too low on pre-dcs games when
-//the YM2151 is not outputing music. In the hardware the YM2151's Timer A is set to control the FIRQ of the sound cpu 6809.
-//The 6809 will output CVSD speech data based on the speed of the FIRQ. The faster the speed, the higher the
-//pitch. For some reason, when the YM2151 is not outputting sound, the FIRQ rate goes down.. Def. some kind of
-//MAME core bug with timing, but I can't find it. I really hope someone can fix this hack someday..SJE 09/17/03
-#define PREDCS_FIRQ_HACK
-
-/*----------------------
-/ System 3 - 7
-/-----------------------*/
-#define S67S_PIA0 6
-
-/* sound board interface */
-static void s67s_init(struct sndbrdData *brdData);
-static WRITE_HANDLER(s67s_cmd_w);
-static void s67s_diag(int button);
-
-const struct sndbrdIntf s67sIntf = {
- "WMSS67", s67s_init, NULL, s67s_diag, s67s_cmd_w, s67s_cmd_w, NULL, NULL, NULL, SNDBRD_NOCTRLSYNC
-};
-
-/* machine interface */
-static MEMORY_READ_START(s67s_readmem )
- { 0x0000, 0x007f, MRA_RAM },
- { 0x0400, 0x0403, pia_r(S67S_PIA0) },
- { 0x3000, 0x7fff, MRA_ROM },
- { 0x8400, 0x8403, pia_r(S67S_PIA0) },
- { 0xb000, 0xffff, MRA_ROM },
-MEMORY_END
-
-static MEMORY_WRITE_START(s67s_writemem )
- { 0x0000, 0x007f, MWA_RAM },
- { 0x0400, 0x0403, pia_w(S67S_PIA0) },
- { 0x8400, 0x8403, pia_w(S67S_PIA0) },
-MEMORY_END
-static struct DACinterface s67s_dacInt = { 1, { 50 }};
-static struct hc55516_interface s67s_hc55516Int = { 1, { 100 }};
-
-MACHINE_DRIVER_START(wmssnd_s67s)
- MDRV_CPU_ADD(M6808, 3579000/4)
- MDRV_CPU_FLAGS(CPU_AUDIO_CPU)
- MDRV_CPU_MEMORY(s67s_readmem, s67s_writemem)
- MDRV_INTERLEAVE(50)
- MDRV_SOUND_ADD(DAC, s67s_dacInt)
- MDRV_SOUND_ADD(HC55516, s67s_hc55516Int)
- MDRV_SOUND_ADD(SAMPLES, samples_interface)
-MACHINE_DRIVER_END
-
-static void s67s_piaIrq(int state);
-static const struct pia6821_interface s67s_pia = {
- /* PIA0 (0400)
- PA0-7 DAC
- PB0-7 Sound input
- CB1 Sound input != 0x1f
- CB2 Speech clock
- CA2 Speech data
- CA1 NC */
- /* in : A/B,CA/B1,CA/B2 */ 0, 0, 0, 0, 0, 0,
- /* out : A/B,CA/B2 */ DAC_0_data_w, 0, hc55516_0_digit_w, hc55516_0_clock_w,
- /* irq : A/B */ s67s_piaIrq, s67s_piaIrq
-};
-
-static struct {
- struct sndbrdData brdData;
-} s67slocals;
-
-static void s67s_init(struct sndbrdData *brdData) {
- s67slocals.brdData = *brdData;
- pia_config(S67S_PIA0, PIA_STANDARD_ORDERING, &s67s_pia);
-}
-
-static WRITE_HANDLER(s67s_cmd_w) {
- if (s67slocals.brdData.subType) { // don't use sound dips
- data &= 0x7f;
- } else {
- data = (data & 0x1f) | (core_getDip(0)<<5);
- }
- pia_set_input_b(S67S_PIA0, data);
- if (s67slocals.brdData.subType) {
- pia_set_input_cb1(S67S_PIA0, !((data & 0x7f) == 0x7f));
- } else {
- pia_set_input_cb1(S67S_PIA0, !((data & 0x1f) == 0x1f));
- }
-}
-static void s67s_diag(int button) {
- cpu_set_nmi_line(s67slocals.brdData.cpuNo, button ? ASSERT_LINE : CLEAR_LINE);
-}
-
-static void s67s_piaIrq(int state) {
- cpu_set_irq_line(s67slocals.brdData.cpuNo, M6808_IRQ_LINE, state ? ASSERT_LINE : CLEAR_LINE);
-}
-
-/*----------------------------
-/ S11 CPU board sound
-/-----------------------------*/
-#define S11S_PIA0 6
-#define S11S_BANK0 1
-#define S11S_BANK1 2
-
-/* sound board interface */
-static void s11s_init(struct sndbrdData *brdData);
-static void s11s_diag(int button);
-static WRITE_HANDLER(s11s_manCmd_w);
-static WRITE_HANDLER(s11s_bankSelect);
-const struct sndbrdIntf s11sIntf = {
- "WMSS11", s11s_init, NULL, s11s_diag, s11s_manCmd_w, soundlatch_w, NULL, CAT3(pia_,S11S_PIA0,_ca1_w), NULL
-};
-/* machine interface */
-static MEMORY_READ_START(s9s_readmem)
- { 0x0000, 0x0fff, MRA_RAM},
- { 0x2000, 0x2003, pia_r(S11S_PIA0)},
- { 0x8000, 0xffff, MRA_ROM}, /* U22 */
-MEMORY_END
-static MEMORY_WRITE_START(s9s_writemem)
- { 0x0000, 0x0fff, MWA_RAM },
- { 0x2000, 0x2003, pia_w(S11S_PIA0)},
-MEMORY_END
-
-static struct DACinterface s9s_dacInt = { 1, { 50 }};
-static struct hc55516_interface s9s_hc55516Int = { 1, { 100 }};
-
-MACHINE_DRIVER_START(wmssnd_s9s)
- MDRV_CPU_ADD(M6808, 1000000)
- MDRV_CPU_FLAGS(CPU_AUDIO_CPU)
- MDRV_CPU_MEMORY(s9s_readmem, s9s_writemem)
- MDRV_INTERLEAVE(50)
- MDRV_SOUND_ADD(DAC, s9s_dacInt)
- MDRV_SOUND_ADD(HC55516,s9s_hc55516Int)
- MDRV_SOUND_ADD(SAMPLES, samples_interface)
-MACHINE_DRIVER_END
-
-static MEMORY_READ_START(s11s_readmem)
- { 0x0000, 0x0fff, MRA_RAM},
- { 0x2000, 0x2003, pia_r(S11S_PIA0) },
- { 0x8000, 0xbfff, MRA_BANKNO(S11S_BANK0)}, /* U22 */
- { 0xc000, 0xffff, MRA_BANKNO(S11S_BANK1)}, /* U21 */
-MEMORY_END
-static MEMORY_WRITE_START(s11s_writemem)
- { 0x0000, 0x0fff, MWA_RAM },
- { 0x1000, 0x1000, s11s_bankSelect},
- { 0x2000, 0x2003, pia_w(S11S_PIA0)},
-MEMORY_END
-
-static void s11cs_ym2151IRQ(int state);
-static struct DACinterface s11xs_dacInt2 = { 2, { 50,50 }};
-static struct hc55516_interface s11b2s_hc55516Int = { 1, { 80 }};
-static struct hc55516_interface s11xs_hc55516Int2 = { 2, { 80,80 }};
-static struct YM2151interface s11cs_ym2151Int = {
- 1, 3579545, /* Hz */
- { YM3012_VOL(10,MIXER_PAN_CENTER,30,MIXER_PAN_CENTER) },
- { s11cs_ym2151IRQ }
-};
-
-MACHINE_DRIVER_START(wmssnd_s11s)
- MDRV_CPU_ADD(M6808, 1000000)
- MDRV_CPU_FLAGS(CPU_AUDIO_CPU)
- MDRV_CPU_MEMORY(s11s_readmem, s11s_writemem)
- MDRV_INTERLEAVE(50)
- MDRV_SOUND_ADD(DAC, s9s_dacInt)
- MDRV_SOUND_ADD(HC55516,s9s_hc55516Int)
- MDRV_SOUND_ADD(SAMPLES, samples_interface)
-MACHINE_DRIVER_END
-
-MACHINE_DRIVER_START(wmssnd_s11xs)
- MDRV_IMPORT_FROM(wmssnd_s11cs)
- MDRV_CPU_ADD(M6808, 1000000)
- MDRV_CPU_FLAGS(CPU_AUDIO_CPU)
- MDRV_CPU_MEMORY(s11s_readmem, s11s_writemem)
- MDRV_INTERLEAVE(50)
- MDRV_SOUND_REPLACE("dac", DAC, s11xs_dacInt2)
- MDRV_SOUND_REPLACE("cvsd", HC55516,s11xs_hc55516Int2)
-MACHINE_DRIVER_END
-
-MACHINE_DRIVER_START(wmssnd_s11b2s)
- MDRV_IMPORT_FROM(wmssnd_s11js)
- MDRV_CPU_ADD(M6808, 1000000)
- MDRV_CPU_FLAGS(CPU_AUDIO_CPU)
- MDRV_CPU_MEMORY(s11s_readmem, s11s_writemem)
- MDRV_INTERLEAVE(50)
- MDRV_SOUND_ADD_TAG("dac", DAC, s11xs_dacInt2)
- MDRV_SOUND_ADD_TAG("cvsd",HC55516,s11b2s_hc55516Int)
-MACHINE_DRIVER_END
-
-static void s11s_piaIrq(int state);
-static const struct pia6821_interface s11s_pia[] = {{
- /* PIA 0 (sound 2000) S11 */
- /* PA0 - PA7 (I) Sound Select Input (soundlatch) */
- /* PB0 - PB7 DAC */
- /* CA1 (I) Sound H.S */
- /* CB1 (I) 1ms */
- /* CA2 55516 Clk */
- /* CB2 55516 Dig */
- /* subType 0 and 4 for S9 and S11S */
- /* in : A/B,CA/B1,CA/B2 */ soundlatch_r, 0, PIA_UNUSED_VAL(0), 0, 0, 0,
- /* out : A/B,CA/B2 */ 0, DAC_0_data_w, hc55516_0_clock_w, hc55516_0_digit_w,
- /* irq : A/B */ s11s_piaIrq, s11s_piaIrq
-},{
- /* subType 1 for S11X */
- /* in : A/B,CA/B1,CA/B2 */ soundlatch_r, 0, 0, 0, 0, 0,
- /* out : A/B,CA/B2 */ 0, DAC_1_data_w, hc55516_1_clock_w, hc55516_1_digit_w,
- /* irq : A/B */ s11s_piaIrq, s11s_piaIrq
-},{
- /* subType 2 for S11B2 */
- /* in : A/B,CA/B1,CA/B2 */ soundlatch_r, 0, 0, 0, 0, 0,
- /* out : A/B,CA/B2 */ 0, DAC_1_data_w, hc55516_0_clock_w, hc55516_0_digit_w,
- /* irq : A/B */ s11s_piaIrq, s11s_piaIrq
-}};
-
-static struct {
- struct sndbrdData brdData;
-} s11slocals;
-
-static void s11s_init(struct sndbrdData *brdData) {
- int i;
- s11slocals.brdData = *brdData;
- pia_config(S11S_PIA0, PIA_STANDARD_ORDERING, &s11s_pia[s11slocals.brdData.subType & 3]);
- if (s11slocals.brdData.subType) {
- cpu_setbank(S11S_BANK0, s11slocals.brdData.romRegion+0xc000);
- cpu_setbank(S11S_BANK1, s11slocals.brdData.romRegion+0x4000);
- }
- for (i=0; i < 0x1000; i++) memory_region(S9S_CPUREGION)[i] = 0xff;
- if (core_gameData->hw.gameSpecific2) {
- hc55516_set_gain(0, core_gameData->hw.gameSpecific2);
- }
-}
-static WRITE_HANDLER(s11s_manCmd_w) {
- soundlatch_w(0, data); pia_set_input_ca1(S11S_PIA0, 1); pia_set_input_ca1(S11S_PIA0, 0);
-}
-static WRITE_HANDLER(s11s_bankSelect) {
- cpu_setbank(S11S_BANK0, s11slocals.brdData.romRegion + 0x8000+((data&0x01)<<14));
- cpu_setbank(S11S_BANK1, s11slocals.brdData.romRegion + 0x0000+((data&0x02)<<13));
-}
-
-static void s11s_piaIrq(int state) {
- cpu_set_irq_line(s11slocals.brdData.cpuNo, M6808_IRQ_LINE, state ? ASSERT_LINE : CLEAR_LINE);
-}
-
-static void s11s_diag(int button) {
- cpu_set_nmi_line(s11slocals.brdData.cpuNo, button ? ASSERT_LINE : CLEAR_LINE);
-}
-
-/*--------------------------
-/ Pennant Fever sound board.
-/ Thanks to Destruk for
-/ buying the schematics! :)
-/---------------------------*/
-#define S9P_PIA0 6
-
-static struct {
- struct sndbrdData brdData;
-} s9plocals;
-
-static WRITE_HANDLER(s9p_hs_w) { pia_set_input_ca1(0, data); }
-static WRITE_HANDLER(ext_hs_w) { pia_set_input_ca1(S9P_PIA0, data); }
-static void s9p_piaIrq(int state) {
- cpu_set_irq_line(s9plocals.brdData.cpuNo, M6808_IRQ_LINE, state ? ASSERT_LINE : CLEAR_LINE);
-}
-
-static const struct pia6821_interface s9p_pia = {
- /* PIA 0 (4000) */
- /* PA0 - PA7 CPU interface (MDx) */
- /* PB0 - PB7 DAC */
- /* in : A/B,CA/B1,CA/B2 */
- soundlatch_r, 0, 0, 0, 0, 0,
- /* out : A/B,CA/B2 */
- 0, DAC_0_data_w, s9p_hs_w, 0,
- /* irq : A/B */
- s9p_piaIrq, s9p_piaIrq
-};
-
-static void s9p_init(struct sndbrdData *brdData) {
- s9plocals.brdData = *brdData;
- pia_config(S9P_PIA0, PIA_STANDARD_ORDERING, &s9p_pia);
-}
-
-static void s9p_diag(int state) {
- cpu_set_nmi_line(s9plocals.brdData.cpuNo, state ? ASSERT_LINE : CLEAR_LINE);
-}
-
-static MEMORY_READ_START(s9p_readmem)
- { 0x0000, 0x00ff, MRA_RAM },
- { 0x4000, 0x4003, pia_r(S9P_PIA0) },
- { 0xc000, 0xffff, MRA_ROM },
-MEMORY_END
-
-static MEMORY_WRITE_START(s9p_writemem)
- { 0x0000, 0x00ff, MWA_RAM },
- { 0x4000, 0x4003, pia_w(S9P_PIA0) },
-MEMORY_END
-
-static struct DACinterface s9p_dacInt = { 1, { 60 }};
-
-const struct sndbrdIntf s9psIntf = {
- "WMSS9P", s9p_init, NULL, s9p_diag, soundlatch_w, soundlatch_w, NULL, ext_hs_w
-};
-
-MACHINE_DRIVER_START(wmssnd_s9ps)
- MDRV_CPU_ADD(M6808, 1000000)
- MDRV_CPU_FLAGS(CPU_AUDIO_CPU)
- MDRV_CPU_MEMORY(s9p_readmem, s9p_writemem)
- MDRV_INTERLEAVE(50)
- MDRV_SOUND_ADD_TAG("dac", DAC, s9p_dacInt)
- MDRV_SOUND_ADD(SAMPLES, samples_interface)
-MACHINE_DRIVER_END
-
-/*--------------------------
-/ System 11C sound board
-/---------------------------*/
-#define S11CS_PIA0 7
-#define S11CS_BANK0 4
-
-static void s11cs_piaIrqA(int state);
-static void s11cs_piaIrqB(int state);
-static WRITE_HANDLER(s11cs_pia0ca2_w);
-static WRITE_HANDLER(s11cs_pia0cb2_w);
-static WRITE_HANDLER(s11cs_rombank_w);
-static WRITE_HANDLER(s11cs_manCmd_w);
-static void s11cs_init(struct sndbrdData *brdData);
-
-static struct {
- struct sndbrdData brdData;
- int ignore;
-} s11clocals;
-
-static WRITE_HANDLER(cslatch2_w) {
- if (!s11clocals.ignore)
- soundlatch2_w(offset, data);
- else s11clocals.ignore--;
-}
-
-const struct sndbrdIntf s11csIntf = {
- "WMSS11C", s11cs_init, NULL, NULL, s11cs_manCmd_w,
- cslatch2_w, NULL,
- CAT3(pia_,S11CS_PIA0,_cb1_w), soundlatch3_r
-};
-
-static MEMORY_READ_START(s11cs_readmem)
- { 0x0000, 0x1fff, MRA_RAM },
- { 0x2001, 0x2001, YM2151_status_port_0_r }, /* 2001-2fff odd */
- { 0x4000, 0x4003, pia_r(S11CS_PIA0) }, /* 4000-4fff */
- { 0x8000, 0xffff, MRA_BANKNO(S11CS_BANK0) },
-MEMORY_END
-
-static WRITE_HANDLER(odd_w) {
- logerror("Star Trax sound write: %02x:%02x\n", offset, data);
-}
-static MEMORY_WRITE_START(s11cs_writemem)
- { 0x0000, 0x1fff, MWA_RAM },
- { 0x2000, 0x2000, YM2151_register_port_0_w }, /* 2000-2ffe even */
- { 0x2001, 0x2001, YM2151_data_port_0_w }, /* 2001-2fff odd */
- { 0x4000, 0x4003, pia_w(S11CS_PIA0) }, /* 4000-4fff */
- { 0x6000, 0x6000, hc55516_0_digit_clock_clear_w },/* 6000-67ff */
- { 0x6800, 0x6800, hc55516_0_clock_set_w }, /* 6800-6fff */
- { 0x7800, 0x7800, s11cs_rombank_w }, /* 7800-7fff */
- { 0x9c00, 0x9cff, odd_w },
-MEMORY_END
-
-static struct DACinterface s11cs_dacInt = { 1, { 50 }};
-static struct hc55516_interface s11cs_hc55516Int = { 1, { 100 }};
-
-MACHINE_DRIVER_START(wmssnd_s11cs)
- MDRV_CPU_ADD(M6809, 2000000)
- MDRV_CPU_FLAGS(CPU_AUDIO_CPU)
- MDRV_CPU_MEMORY(s11cs_readmem, s11cs_writemem)
- MDRV_INTERLEAVE(50)
- MDRV_SOUND_ADD(YM2151, s11cs_ym2151Int)
- MDRV_SOUND_ADD_TAG("dac", DAC, s11cs_dacInt)
- MDRV_SOUND_ADD_TAG("cvsd", HC55516,s11cs_hc55516Int)
- MDRV_SOUND_ADD(SAMPLES, samples_interface)
-MACHINE_DRIVER_END
-
-static const struct pia6821_interface s11cs_pia = {
- /* PIA 0 (4000) */
- /* PA0 - PA7 DAC */
- /* PB0 - PB7 CPU interface (MDx) */
- /* CA1 YM2151 IRQ */
- /* CB1 (I) CPU interface (MCB2) */
- /* CA2 YM 2151 pin 3 (Reset ?) */
- /* CB2 CPU interface (MCB1) */
- /* in : A/B,CA/B1,CA/B2 */
- 0, soundlatch2_r, 0, 0, 0, 0,
- /* out : A/B,CA/B2 */
- DAC_0_data_w, soundlatch3_w, s11cs_pia0ca2_w, s11cs_pia0cb2_w,
- /* irq : A/B */
- s11cs_piaIrqA, s11cs_piaIrqB
-};
-
-static WRITE_HANDLER(s11cs_rombank_w) {
- cpu_setbank(S11CS_BANK0, s11clocals.brdData.romRegion + 0x10000*(data & 0x03) + 0x8000*((data & 0x04)>>2));
-}
-static void s11cs_init(struct sndbrdData *brdData) {
- s11clocals.brdData = *brdData;
- s11clocals.ignore = core_gameData->hw.gameSpecific1 & S11_SNDDELAY ? 7 : 0;
- pia_config(S11CS_PIA0, PIA_STANDARD_ORDERING, &s11cs_pia);
- cpu_setbank(S11CS_BANK0, s11clocals.brdData.romRegion);
-}
-static WRITE_HANDLER(s11cs_manCmd_w) {
- cslatch2_w(0, data); pia_set_input_cb1(S11CS_PIA0, 1); pia_set_input_cb1(S11CS_PIA0, 0);
-}
-
-static WRITE_HANDLER(s11cs_pia0ca2_w) { if (!data) YM2151_sh_reset(); }
-static WRITE_HANDLER(s11cs_pia0cb2_w) { sndbrd_data_cb(s11clocals.brdData.boardNo,data); }
-
-static void s11cs_ym2151IRQ(int state) { pia_set_input_ca1(S11CS_PIA0, !state); }
-static void s11cs_piaIrqA(int state) {
- cpu_set_irq_line(s11clocals.brdData.cpuNo, M6809_FIRQ_LINE, state ? ASSERT_LINE : CLEAR_LINE);
-}
-static void s11cs_piaIrqB(int state) {
- cpu_set_nmi_line(s11clocals.brdData.cpuNo, state ? ASSERT_LINE : CLEAR_LINE);
-}
-
-/*--------------------------
-/ S11 Jokerz sound board
-/---------------------------*/
-#define S11JS_BANK0 4
-
-static void s11js_ym2151IRQ(int state);
-static void s11js_init(struct sndbrdData *brdData);
-static WRITE_HANDLER(s11js_reply_w);
-static WRITE_HANDLER(s11js_rombank_w);
-static WRITE_HANDLER(s11js_ctrl_w);
-static WRITE_HANDLER(s11js_manCmd_w);
-
-static struct {
- struct sndbrdData brdData;
- int irqen;
- int ignore;
-} s11jlocals;
-
-static WRITE_HANDLER(jlatch2_w) {
- if (!s11jlocals.ignore)
- soundlatch2_w(offset, data);
- else s11jlocals.ignore--;
-}
-
-const struct sndbrdIntf s11jsIntf = {
- "WMSS11J", s11js_init, NULL, NULL, s11js_manCmd_w,
- jlatch2_w, soundlatch3_r,
- s11js_ctrl_w, NULL, 0
-};
-
-static WRITE_HANDLER(s11js_odd_w) {
- logerror("%04x: Jokerz ROM write to 0xf8%02x = %02x\n", activecpu_get_previouspc(), offset, data);
-}
-static WRITE_HANDLER(s11js_dac_w) {
- logerror("%04x: Jokerz DAC write = %02x\n", activecpu_get_previouspc(), data);
-}
-static WRITE_HANDLER(s11js_sync_w) {
- logerror("%04x: Jokerz SYNC write = %02x\n", activecpu_get_previouspc(), data);
-}
-static READ_HANDLER(s11js_port_r) {
- s11jlocals.irqen = 0;
- cpu_set_irq_line(s11jlocals.brdData.cpuNo, M6809_IRQ_LINE, CLEAR_LINE);
- return soundlatch2_r(offset);
-}
-
-static MEMORY_READ_START(s11js_readmem)
- { 0x0000, 0x1fff, MRA_RAM },
- { 0x2001, 0x2001, YM2151_status_port_0_r }, /* 2001-2fff odd */
- { 0x3400, 0x3400, s11js_port_r },
- { 0x4000, 0xbfff, MRA_BANKNO(S11JS_BANK0) },
- { 0xc000, 0xffff, MRA_ROM },
-MEMORY_END
-
-static MEMORY_WRITE_START(s11js_writemem)
- { 0x0000, 0x1fff, MWA_RAM },
- { 0x2000, 0x2000, YM2151_register_port_0_w }, /* 2000-2ffe even */
- { 0x2001, 0x2001, YM2151_data_port_0_w }, /* 2001-2fff odd */
- { 0x2800, 0x2800, s11js_reply_w },
- { 0x3000, 0x3000, s11js_dac_w },
- { 0x3800, 0x3800, s11js_rombank_w },
- { 0x3c00, 0x3c00, s11js_sync_w },
- { 0xf800, 0xf8ff, s11js_odd_w },
-MEMORY_END
-
-static struct YM2151interface s11js_ym2151Int = {
- 1, 3579545, /* Hz */
- { YM3012_VOL(30,MIXER_PAN_LEFT,30,MIXER_PAN_RIGHT) },
- { s11js_ym2151IRQ }
-};
-
-MACHINE_DRIVER_START(wmssnd_s11js)
- MDRV_CPU_ADD(M6809, 2000000)
- MDRV_CPU_FLAGS(CPU_AUDIO_CPU)
- MDRV_CPU_MEMORY(s11js_readmem, s11js_writemem)
- MDRV_SOUND_ATTRIBUTES(SOUND_SUPPORTS_STEREO)
- MDRV_SOUND_ADD( YM2151, s11js_ym2151Int)
- MDRV_SOUND_ADD(SAMPLES, samples_interface)
-MACHINE_DRIVER_END
-
-static WRITE_HANDLER(s11js_rombank_w) {
- cpu_setbank(S11JS_BANK0, s11jlocals.brdData.romRegion + 0x8000*(data & 0x01));
-}
-static void s11js_init(struct sndbrdData *brdData) {
- s11jlocals.brdData = *brdData;
- s11jlocals.ignore = 10;
-// cpu_setbank(S11JS_BANK0, s11jlocals.brdData.romRegion);
-}
-static WRITE_HANDLER(s11js_ctrl_w) {
- if (!s11jlocals.ignore) {
- if (!data) s11jlocals.irqen++;
- if (s11jlocals.irqen) cpu_set_irq_line(s11jlocals.brdData.cpuNo, M6809_IRQ_LINE, ASSERT_LINE);
- }
-}
-static WRITE_HANDLER(s11js_reply_w) {
- soundlatch3_w(0,data);
- sndbrd_data_cb(s11jlocals.brdData.boardNo, 0); sndbrd_data_cb(s11jlocals.brdData.boardNo, 1);
-}
-static WRITE_HANDLER(s11js_manCmd_w) {
-//printf("m:%02x ", data); // the manual commands are not passed through, why???
- jlatch2_w(0, data); s11js_ctrl_w(0,0);
-}
-static void s11js_ym2151IRQ(int state) {
- cpu_set_irq_line(s11jlocals.brdData.cpuNo, M6809_FIRQ_LINE, state ? ASSERT_LINE : CLEAR_LINE);
-}
-
-
-/*------------------
-/ WPC sound board
-/-------------------*/
-#define WPCS_BANK0 4
-
-/*-- internal sound interface --*/
-static WRITE_HANDLER(wpcs_latch_w);
-static READ_HANDLER(wpcs_latch_r);
-
-/*-- external interfaces --*/
-static void wpcs_init(struct sndbrdData *brdData);
-static READ_HANDLER(wpcs_data_r);
-static WRITE_HANDLER(wpcs_data_w);
-static READ_HANDLER(wpcs_ctrl_r);
-static WRITE_HANDLER(wpcs_ctrl_w);
-const struct sndbrdIntf wpcsIntf = { "WPCS", wpcs_init, NULL, NULL, wpcs_data_w, wpcs_data_w, wpcs_data_r, wpcs_ctrl_w, wpcs_ctrl_r };
-
-/*-- other memory handlers --*/
-static WRITE_HANDLER(wpcs_rombank_w);
-static WRITE_HANDLER(wpcs_volume_w);
-static void wpcs_ym2151IRQ(int state);
-
-/*-- local data --*/
-static struct {
- struct sndbrdData brdData;
- int replyAvail;
- int volume;
-} locals;
-
-static WRITE_HANDLER(wpcs_rombank_w) {
- /* the hardware can actually handle 1M chip but no games uses it */
- /* if such ROM appear the region must be doubled and mask set to 0x1f */
- /* this would be much easier if the region was filled in opposit order */
- /* but I don't want to change it now */
- int bankBase = data & 0x0f;
-#ifdef MAME_DEBUG
- /* this register can no be read but this makes debugging easier */
- *(memory_region(REGION_CPU1+locals.brdData.cpuNo) + 0x2000) = data;
-#endif /* MAME_DEBUG */
-
- switch ((~data) & 0xe0) {
- case 0x80: /* U18 */
- bankBase |= 0x00; break;
- case 0x40: /* U15 */
- bankBase |= 0x10; break;
- case 0x20: /* U14 */
- bankBase |= 0x20; break;
- default:
- DBGLOG(("WPCS:Unknown bank %x\n",data)); return;
- }
- cpu_setbank(WPCS_BANK0, locals.brdData.romRegion + (bankBase<<15));
-}
-
-static WRITE_HANDLER(wpcs_volume_w) {
- if (data & 0x01) {
- if ((locals.volume > 0) && (data & 0x02))
- locals.volume -= 1;
- else if ((locals.volume < 0xff) && ((data & 0x02) == 0))
- locals.volume += 1;
- /* DBGLOG(("Volume set to %d\n",locals.volume)); */
- {
- int ch;
- for (ch = 0; ch < MIXER_MAX_CHANNELS; ch++) {
- if (mixer_get_name(ch) != NULL)
- mixer_set_volume(ch, locals.volume * 100 / 127);
- }
- }
- }
-}
-
-static WRITE_HANDLER(wpcs_latch_w) {
- locals.replyAvail = TRUE; soundlatch2_w(0,data);
- sndbrd_data_cb(locals.brdData.boardNo, data);
-}
-
-static READ_HANDLER(wpcs_latch_r) {
- cpu_set_irq_line(locals.brdData.cpuNo, M6809_IRQ_LINE, CLEAR_LINE);
- return soundlatch_r(0);
-}
-
-static void wpcs_ym2151IRQ(int state) {
- cpu_set_irq_line(locals.brdData.cpuNo, M6809_FIRQ_LINE, state ? ASSERT_LINE : CLEAR_LINE);
-}
-
-#ifdef PREDCS_FIRQ_HACK
-
- //This value is based on a lot of trial and error and comparing the same voice sample played with and without music playing
- #define FIRQ_HACK_RATE 2400
-
- extern int YM2151ReadOutputFlag(int chip);
-
- //Force the FIRQ to toggle @ the specified rate, but only while the 2151 is not outputting sound
- static void firq_hack(int data) {
- static int last = 0;
- if(!YM2151ReadOutputFlag(0)) {
- if(last)
- {
- cpu_set_irq_line(locals.brdData.cpuNo, M6809_FIRQ_LINE, CLEAR_LINE);
- last = 0;
- }
- else
- {
- cpu_set_irq_line(locals.brdData.cpuNo, M6809_FIRQ_LINE, ASSERT_LINE);
- last++;
- }
- }
-
- }
-#endif
-
-static MEMORY_READ_START(wpcs_readmem)
- { 0x0000, 0x1fff, MRA_RAM },
- { 0x2401, 0x2401, YM2151_status_port_0_r }, /* 2401-27ff odd */
- { 0x3000, 0x3000, wpcs_latch_r }, /* 3000-33ff */
- { 0x4000, 0xbfff, CAT2(MRA_BANK, WPCS_BANK0) }, //32K
- { 0xc000, 0xffff, MRA_ROM }, /* same as page 7f */ //16K
-MEMORY_END
-
-static MEMORY_WRITE_START(wpcs_writemem)
- { 0x0000, 0x1fff, MWA_RAM },
- { 0x2000, 0x2000, wpcs_rombank_w }, /* 2000-23ff */
- { 0x2400, 0x2400, YM2151_register_port_0_w }, /* 2400-27fe even */
- { 0x2401, 0x2401, YM2151_data_port_0_w }, /* 2401-27ff odd */
- { 0x2800, 0x2800, DAC_0_data_w }, /* 2800-2bff */
- { 0x2c00, 0x2c00, hc55516_0_clock_set_w }, /* 2c00-2fff */
- { 0x3400, 0x3400, hc55516_0_digit_clock_clear_w }, /* 3400-37ff */
- { 0x3800, 0x3800, wpcs_volume_w }, /* 3800-3bff */
- { 0x3c00, 0x3c00, wpcs_latch_w }, /* 3c00-3fff */
-MEMORY_END
-//NOTE: These volume levels sound really good compared to my own Funhouse and T2. (Dac=100%,CVSD=80%,2151=15%)
-static struct DACinterface wpcs_dacInt = { 1, { 100 }};
-static struct hc55516_interface wpcs_hc55516Int = { 1, { 100 }};
-static struct YM2151interface wpcs_ym2151Int = {
- 1, 3579545, /* Hz */
- { YM3012_VOL(15,MIXER_PAN_CENTER,15,MIXER_PAN_CENTER) },
- { wpcs_ym2151IRQ }
-};
-
-MACHINE_DRIVER_START(wmssnd_wpcs)
- MDRV_CPU_ADD(M6809, 2000000)
- MDRV_CPU_FLAGS(CPU_AUDIO_CPU)
- MDRV_CPU_MEMORY(wpcs_readmem, wpcs_writemem)
- MDRV_INTERLEAVE(50)
- MDRV_SOUND_ADD(YM2151, wpcs_ym2151Int)
- MDRV_SOUND_ADD(DAC, wpcs_dacInt)
- MDRV_SOUND_ADD(HC55516,wpcs_hc55516Int)
- MDRV_SOUND_ADD(SAMPLES, samples_interface)
-#ifdef PREDCS_FIRQ_HACK
- //Force the FIRQ to toggle @ the specified rate, but only while the 2151 is not outputting sound
- MDRV_TIMER_ADD(firq_hack, FIRQ_HACK_RATE)
-#endif
-MACHINE_DRIVER_END
-
-/*---------------------
-/ Interface functions
-/----------------------*/
-static READ_HANDLER(wpcs_data_r) {
- locals.replyAvail = FALSE; return soundlatch2_r(0);
-}
-
-static WRITE_HANDLER(wpcs_data_w) {
- soundlatch_w(0, data); cpu_set_irq_line(locals.brdData.cpuNo, M6809_IRQ_LINE, ASSERT_LINE);
-}
-
-static READ_HANDLER(wpcs_ctrl_r) {
- return locals.replyAvail;
-}
-
-static WRITE_HANDLER(wpcs_ctrl_w) { /*-- a write here resets the CPU --*/
- cpunum_set_reset_line(locals.brdData.cpuNo, PULSE_LINE);
-}
-
-static void wpcs_init(struct sndbrdData *brdData) {
- locals.brdData = *brdData;
- /* the non-paged ROM is at the end of the image. move it to its correct place */
- memcpy(memory_region(REGION_CPU1+locals.brdData.cpuNo) + 0x00c000, locals.brdData.romRegion + 0x07c000, 0x4000);
- wpcs_rombank_w(0,0);
- hc55516_set_gain(0, 4250);
-}
-
-/*--------------------
-/ DCS sound board
-/---------------------*/
-/*-- ADSP core functions --*/
-static void adsp_init(data8_t *(*getBootROM)(int soft),
- void (*txData)(UINT16 start, UINT16 size, UINT16 memStep, int sRate));
-static void adsp_boot(int soft);
-static void adsp_txCallback(int port, INT32 data);
-static WRITE16_HANDLER(adsp_control_w);
-
-/*-- bank handlers --*/
-static WRITE16_HANDLER(dcs1_ROMbankSelect1_w);
-static WRITE16_HANDLER(dcs2_ROMbankSelect1_w);
-static WRITE16_HANDLER(dcs2_ROMbankSelect2_w);
-static WRITE16_HANDLER(dcs2_RAMbankSelect_w);
-static READ16_HANDLER(dcs2_RAMbankSelect_r);
-static READ16_HANDLER(dcs_ROMbank_r);
-static READ16_HANDLER(dcs2_RAMbank_r);
-static WRITE16_HANDLER(dcs2_RAMbank_w);
-
-/*-- sound interface handlers --*/
-/* once the ADSP core is updated to handle PM mapping */
-/* these can be static */
-/*static*/ READ16_HANDLER(dcs_latch_r);
-/*static*/ WRITE16_HANDLER(dcs_latch_w);
-/* ADSP patch need to know if we are using dcs95 soundboard */
-int WPC_gWPC95;
-
-/*-- sound generation --*/
-static int dcs_custStart(const struct MachineSound *msound);
-static void dcs_custStop(void);
-static void dcs_dacUpdate(int num, INT16 *buffer, int length);
-static void dcs_txData(UINT16 start, UINT16 size, UINT16 memStep, int sRate);
-
-/*-- external interface --*/
-static READ_HANDLER(dcs_data_r);
-static WRITE_HANDLER(dcs_data_w);
-static READ_HANDLER(dcs_ctrl_r);
-static WRITE_HANDLER(dcs_ctrl_w);
-static void dcs_init(struct sndbrdData *brdData);
-
-/*-- local data --*/
-#define DCS_BUFFER_SIZE 4096
-#define DCS_BUFFER_MASK (DCS_BUFFER_SIZE - 1)
-
-static struct {
- int enabled;
- UINT32 sOut, sIn, sStep;
- INT16 *buffer;
- int stream;
-} dcs_dac;
-
-static struct {
- struct sndbrdData brdData;
- UINT8 *cpuRegion;
- UINT16 ROMbank1, ROMbank2;
- UINT16 RAMbank;
- UINT8 *ROMbankPtr;
- UINT16 *RAMbankPtr;
- int replyAvail;
-} dcslocals;
-
-static struct CustomSound_interface dcs_custInt = { dcs_custStart, dcs_custStop, 0 };
-
-static MEMORY_READ16_START(dcs1_readmem)
- { ADSP_DATA_ADDR_RANGE(0x0000, 0x1fff), MRA16_RAM },
- { ADSP_DATA_ADDR_RANGE(0x2000, 0x2fff), dcs_ROMbank_r },
- { ADSP_DATA_ADDR_RANGE(0x3800, 0x39ff), MRA16_RAM },
- { ADSP_PGM_ADDR_RANGE (0x0000, 0x0800), MRA16_RAM }, /* Internal boot RAM */
- { ADSP_PGM_ADDR_RANGE (0x1000, 0x2fff), MRA16_RAM }, /* External RAM */
- { ADSP_PGM_ADDR_RANGE (0x3000, 0x3000), dcs_latch_r },
-MEMORY_END
-
-static MEMORY_WRITE16_START(dcs1_writemem)
- { ADSP_DATA_ADDR_RANGE(0x0000, 0x1fff), MWA16_RAM },
- { ADSP_DATA_ADDR_RANGE(0x2000, 0x2fff), MWA16_ROM },
- { ADSP_DATA_ADDR_RANGE(0x3000, 0x3000), dcs1_ROMbankSelect1_w },
- { ADSP_DATA_ADDR_RANGE(0x3800, 0x39ff), MWA16_RAM },
- { ADSP_DATA_ADDR_RANGE(0x3fe0, 0x3fff), adsp_control_w },
- { ADSP_PGM_ADDR_RANGE (0x0000, 0x0800), MWA16_RAM },
- { ADSP_PGM_ADDR_RANGE (0x1000, 0x2fff), MWA16_RAM },
- { ADSP_PGM_ADDR_RANGE (0x3000, 0x3000), dcs_latch_w },
-MEMORY_END
-
-MACHINE_DRIVER_START(wmssnd_dcs1)
- MDRV_CPU_ADD(ADSP2105, 10000000)
- MDRV_CPU_FLAGS(CPU_AUDIO_CPU)
- MDRV_CPU_MEMORY(dcs1_readmem, dcs1_writemem)
- MDRV_INTERLEAVE(50)
- MDRV_SOUND_ADD(CUSTOM, dcs_custInt)
- MDRV_SOUND_ADD(SAMPLES, samples_interface)
-MACHINE_DRIVER_END
-
-static MEMORY_READ16_START(dcs2_readmem)
- { ADSP_DATA_ADDR_RANGE(0x0000, 0x07ff), dcs_ROMbank_r },
- { ADSP_DATA_ADDR_RANGE(0x1000, 0x1fff), MRA16_RAM },
- { ADSP_DATA_ADDR_RANGE(0x2000, 0x2fff), dcs2_RAMbank_r },
- { ADSP_DATA_ADDR_RANGE(0x3200, 0x3200), dcs2_RAMbankSelect_r },
- { ADSP_DATA_ADDR_RANGE(0x3300, 0x3300), dcs_latch_r },
- { ADSP_DATA_ADDR_RANGE(0x3800, 0x39ff), MRA16_RAM },
- { ADSP_PGM_ADDR_RANGE (0x0000, 0x0800), MRA16_RAM }, /* Internal boot RAM */
- { ADSP_PGM_ADDR_RANGE (0x1000, 0x3fff), MRA16_RAM }, /* External RAM */
-MEMORY_END
-
-static MEMORY_WRITE16_START(dcs2_writemem)
- { ADSP_DATA_ADDR_RANGE(0x0000, 0x07ff), MWA16_ROM },
- { ADSP_DATA_ADDR_RANGE(0x1000, 0x1fff), MWA16_RAM },
- { ADSP_DATA_ADDR_RANGE(0x2000, 0x2fff), dcs2_RAMbank_w },
- { ADSP_DATA_ADDR_RANGE(0x3000, 0x3000), dcs2_ROMbankSelect1_w },
- { ADSP_DATA_ADDR_RANGE(0x3100, 0x3100), dcs2_ROMbankSelect2_w },
- { ADSP_DATA_ADDR_RANGE(0x3200, 0x3200), dcs2_RAMbankSelect_w },
- { ADSP_DATA_ADDR_RANGE(0x3300, 0x3300), dcs_latch_w },
- { ADSP_DATA_ADDR_RANGE(0x3800, 0x39ff), MWA16_RAM },
- { ADSP_DATA_ADDR_RANGE(0x3fe0, 0x3fff), adsp_control_w },
- { ADSP_PGM_ADDR_RANGE (0x0000, 0x0800), MWA16_RAM }, /* Internal boot RAM */
- { ADSP_PGM_ADDR_RANGE (0x1000, 0x3fff), MWA16_RAM }, /* External RAM */
-MEMORY_END
-
-MACHINE_DRIVER_START(wmssnd_dcs2)
- MDRV_CPU_ADD(ADSP2105, 10000000)
- MDRV_CPU_FLAGS(CPU_AUDIO_CPU)
- MDRV_CPU_MEMORY(dcs2_readmem, dcs2_writemem)
- MDRV_INTERLEAVE(50)
- MDRV_SOUND_ADD(CUSTOM, dcs_custInt)
- MDRV_SOUND_ADD(SAMPLES, samples_interface)
-MACHINE_DRIVER_END
-
-/*----------------
-/ Sound interface
-/-----------------*/
-const struct sndbrdIntf dcsIntf = { "DCS", dcs_init, NULL, NULL, dcs_data_w, dcs_data_w, dcs_data_r, dcs_ctrl_w, dcs_ctrl_r };
-
-/*---------------
-/ Bank handlers
-/----------------*/
-#define DCS1_ROMBANKBASE(bank) \
- (dcslocals.brdData.romRegion + (((bank) & 0x7ff)<<12))
-#define DCS2_ROMBANKBASE(bankH, bankL) \
- (dcslocals.brdData.romRegion + (((bankH) & 0x1c)<<18) + (((bankH) & 0x01)<<19) + (((bankL) & 0xff)<<11))
-#define DCS2_RAMBANKBASE(bank) \
- ((UINT16 *)(((bank) & 0x08) ? memory_region(DCS_BANKREGION) : \
- (dcslocals.cpuRegion + ADSP2100_DATA_OFFSET + (0x2000<<1))))
-
-static WRITE16_HANDLER(dcs1_ROMbankSelect1_w) {
- dcslocals.ROMbank1 = data;
- dcslocals.ROMbankPtr = DCS1_ROMBANKBASE(dcslocals.ROMbank1);
-}
-static WRITE16_HANDLER(dcs2_ROMbankSelect1_w) {
- dcslocals.ROMbank1 = data;
- dcslocals.ROMbankPtr = DCS2_ROMBANKBASE(dcslocals.ROMbank2,dcslocals.ROMbank1);
-}
-static WRITE16_HANDLER(dcs2_ROMbankSelect2_w) {
- dcslocals.ROMbank2 = data;
- dcslocals.ROMbankPtr = DCS2_ROMBANKBASE(dcslocals.ROMbank2,dcslocals.ROMbank1);
-}
-static WRITE16_HANDLER(dcs2_RAMbankSelect_w) {
- dcslocals.RAMbank = data;
- dcslocals.RAMbankPtr = DCS2_RAMBANKBASE(dcslocals.RAMbank);
-}
-static READ16_HANDLER (dcs2_RAMbankSelect_r) {
- return dcslocals.RAMbank;
-}
-
-static READ16_HANDLER(dcs_ROMbank_r) { return dcslocals.ROMbankPtr[offset]; }
-
-static READ16_HANDLER(dcs2_RAMbank_r) { return dcslocals.RAMbankPtr[offset]; }
-
-static WRITE16_HANDLER(dcs2_RAMbank_w) { dcslocals.RAMbankPtr[offset] = data; }
-
-static data8_t *dcs_getBootROM(int soft) {
- return (data8_t *)(dcslocals.brdData.romRegion +
- (soft ? ((dcslocals.ROMbank1 & 0xff)<<12) : 0));
-}
-
-/*----------------------
-/ Other memory handlers
-/-----------------------*/
-/* These should be static but the patched ADSP core requires them */
-
-/*static*/ READ16_HANDLER(dcs_latch_r) {
- cpu_set_irq_line(dcslocals.brdData.cpuNo, ADSP2105_IRQ2, CLEAR_LINE);
-#if 1
- return soundlatch_r(0);
-#else
- { int x = soundlatch_r(0); DBGLOG(("Latch_r: %02x\n",x)); return x; }
-#endif
-}
-
-/*static*/ WRITE16_HANDLER(dcs_latch_w) {
- soundlatch2_w(0, data);
- dcslocals.replyAvail = TRUE;
- sndbrd_data_cb(dcslocals.brdData.boardNo, data);
-}
-
-static int dcs_custStart(const struct MachineSound *msound) {
- /*-- clear DAC data --*/
- memset(&dcs_dac,0,sizeof(dcs_dac));
-
- /*-- allocate a DAC stream --*/
- dcs_dac.stream = stream_init("DCS DAC", 100, 32000, 0, dcs_dacUpdate);
-
- /*-- allocate memory for our buffer --*/
- dcs_dac.buffer = malloc(DCS_BUFFER_SIZE * sizeof(INT16));
-
- dcs_dac.sStep = 0x10000;
-
- return (dcs_dac.buffer == 0);
-}
-
-static void dcs_custStop(void) {
- if (dcs_dac.buffer)
- { free(dcs_dac.buffer); dcs_dac.buffer = NULL; }
-}
-
-static void dcs_dacUpdate(int num, INT16 *buffer, int length) {
- if (!dcs_dac.enabled)
- memset(buffer, 0, length * sizeof(INT16));
- else {
- int ii;
- /* fill in with samples until we hit the end or run out */
- for (ii = 0; ii < length; ii++) {
- if (dcs_dac.sOut == dcs_dac.sIn) break;
- buffer[ii] = dcs_dac.buffer[dcs_dac.sOut];
- dcs_dac.sOut = (dcs_dac.sOut + 1) & DCS_BUFFER_MASK;
- }
- /* fill the rest with the last sample */
- for ( ; ii < length; ii++)
- buffer[ii] = dcs_dac.buffer[(dcs_dac.sOut - 1) & DCS_BUFFER_MASK];
- }
-}
-
-/*-------------------
-/ Exported interface
-/---------------------*/
-static READ_HANDLER(dcs_data_r) {
- dcslocals.replyAvail = FALSE;
- return soundlatch2_r(0) & 0xff;
-}
-
-static WRITE_HANDLER(dcs_data_w) {
- DBGLOG(("Latch_w: %02x\n",data));
- soundlatch_w(0, data); cpu_set_irq_line(dcslocals.brdData.cpuNo, ADSP2105_IRQ2, ASSERT_LINE);
-}
-
-static WRITE_HANDLER(dcs_ctrl_w) {
- DBGLOG(("ctrl_w: %02x\n",data));
-
- // Tom: Removed the next line which now prevents some "sound board interface error"
- // if (dcslocals.brdData.subType < 2)
- {
-#ifdef WPCDCSSPEEDUP
- // probably a bug in the mame reset handler
- // if a cpu is suspended for some reason a reset will not wake it up
- cpu_triggerint(dcslocals.brdData.cpuNo);
-#endif /* WPCDCSSPEEDUP */
- // Reset is triggered on write so just pulse the line
- cpunum_set_reset_line(dcslocals.brdData.cpuNo, PULSE_LINE);
- adsp_boot(0);
- }
-}
-
-static READ_HANDLER(dcs_ctrl_r) {
- return dcslocals.replyAvail ? 0x80 : 0x00;
-}
-
-/*----------------------------
-/ Checksum in DCS
-/ GEN_SECURITY: Page 0x0004
-/ WPC95: Page 0x000c
-/
-/ Pages, StartPage, ChkSum
-/
------------------------------*/
-
-/*-- handle bug in ADSP core */
-static OPBASE_HANDLER(opbaseoveride) { return -1; }
-
-static void dcs_init(struct sndbrdData *brdData) {
- memset(&dcslocals, 0, sizeof(dcslocals));
- dcslocals.brdData = *brdData;
- dcslocals.cpuRegion = memory_region(REGION_CPU1+dcslocals.brdData.cpuNo);
- memory_set_opbase_handler(dcslocals.brdData.cpuNo, opbaseoveride);
- /*-- initialize our structure --*/
- dcslocals.ROMbankPtr = dcslocals.brdData.romRegion;
- dcslocals.RAMbankPtr = (UINT16 *)memory_region(DCS_BANKREGION);
-
- WPC_gWPC95 = brdData->subType;
-
- adsp_init(dcs_getBootROM, dcs_txData);
-
- /*-- clear all interrupts --*/
- cpu_set_irq_line(dcslocals.brdData.cpuNo, ADSP2105_IRQ0, CLEAR_LINE );
- cpu_set_irq_line(dcslocals.brdData.cpuNo, ADSP2105_IRQ1, CLEAR_LINE );
- cpu_set_irq_line(dcslocals.brdData.cpuNo, ADSP2105_IRQ2, CLEAR_LINE );
-
- /*-- speed up startup by disable checksum --*/
-#if 0
- if (options.cheat) {
- if (core_gameData->gen & GEN_WPC95)
- *((UINT16 *)(memory_region(WPC_MEMREG_SROM) + 0x6000)) = 0x0000;
- else
- *((UINT16 *)(memory_region(WPC_MEMREG_SROM) + 0x4000)) = 0x0000;
- }
-#endif
- /*-- boot ADSP2100 --*/
- adsp_boot(0);
-}
-
-/*-----------------
-/ local functions
-/------------------*/
-/*-- autobuffer SPORT transmission --*/
-/*-- copy data to transmit into dac buffer --*/
-static void dcs_txData(UINT16 start, UINT16 size, UINT16 memStep, int sRate) {
- UINT16 *mem = ((UINT16 *)(dcslocals.cpuRegion + ADSP2100_DATA_OFFSET)) + start;
- int idx;
-
- stream_update(dcs_dac.stream, 0);
- if (size == 0) /* No data, stop playing */
- { dcs_dac.enabled = FALSE; return; }
- /*-- For some reason can't the sample rate of streams be changed --*/
- /*-- The DCS samplerate is now hardcoded to 32K. Seems to work with all games */
- // if (!dcs_dac.enabled) stream_set_sample_frequency(dcs_dac.stream,sRate);
- /*-- size is the size of the buffer not the number of samples --*/
-#if MAMEVER >= 3716
- for (idx = 0; idx < size; idx += memStep) {
- dcs_dac.buffer[dcs_dac.sIn] = mem[idx];
- dcs_dac.sIn = (dcs_dac.sIn + 1) & DCS_BUFFER_MASK;
- }
-#else /* MAMEVER */
- size /= memStep;
- sStep = sRate * 65536.0 / (double)(Machine->sample_rate);
-
- /*-- copy samples into buffer --*/
- while ((idx>>16) < size) {
- dcs_dac.buffer[dcs_dac.sIn] = mem[(idx>>16)*memStep];
- dcs_dac.sIn = (dcs_dac.sIn + 1) & DCS_BUFFER_MASK;
- idx += sStep;
- }
-#endif /* MAMEVER */
- /*-- enable the dac playing --*/
- dcs_dac.enabled = TRUE;
-}
-#define DCS_IRQSTEPS 4
-/*--------------------------------------------------*/
-/*-- This should actually be part of the CPU core --*/
-/*--------------------------------------------------*/
-enum {
- S1_AUTOBUF_REG = 15, S1_RFSDIV_REG, S1_SCLKDIV_REG, S1_CONTROL_REG,
- S0_AUTOBUF_REG, S0_RFSDIV_REG, S0_SCLKDIV_REG, S0_CONTROL_REG,
- S0_MCTXLO_REG, S0_MCTXHI_REG, S0_MCRXLO_REG, S0_MCRXHI_REG,
- TIMER_SCALE_REG, TIMER_COUNT_REG, TIMER_PERIOD_REG, WAITSTATES_REG,
- SYSCONTROL_REG
-};
-
-static struct {
- UINT16 ctrlRegs[32];
- void *irqTimer;
- data8_t *(*getBootROM)(int soft);
- void (*txData)(UINT16 start, UINT16 size, UINT16 memStep, int sRate);
-} adsp; /* = {{0},NULL,dcs_getBootROM,dcs_txData};*/
-static void adsp_irqGen(int dummy);
-
-static void adsp_init(data8_t *(*getBootROM)(int soft),
- void (*txData)(UINT16 start, UINT16 size, UINT16 memStep, int sRate)) {
- /* stupid timer/machine init handling in MAME */
- if (adsp.irqTimer) timer_remove(adsp.irqTimer);
- /*-- reset control registers etc --*/
- memset(&adsp, 0, sizeof(adsp));
- adsp.getBootROM = getBootROM;
- adsp.txData = txData;
- adsp.irqTimer = timer_alloc(adsp_irqGen);
- /*-- initialize the ADSP Tx callback --*/
- adsp2105_set_tx_callback(adsp_txCallback);
-}
-
-#if MAMEVER < 6300
-static void adsp2105_load_boot_data(data8_t *srcdata, data32_t *dstdata) {
- UINT32 size = 8 * (srcdata[3] + 1), i;
- for (i = 0; i < size; i++) {
- UINT32 opcode = (srcdata[i*4+0] << 16) | (srcdata[i*4+1] << 8) | srcdata[i*4+2];
- ADSP2100_WRPGM(&dstdata[i], opcode);
- }
-}
-#endif /* MAMEVER */
-
-static void adsp_boot(int soft) {
- adsp2105_load_boot_data(adsp.getBootROM(soft), (UINT32 *)(dcslocals.cpuRegion+ADSP2100_PGM_OFFSET));
- timer_enable(adsp.irqTimer, FALSE);
-}
-
-static WRITE16_HANDLER(adsp_control_w) {
- adsp.ctrlRegs[offset] = data;
- switch (offset) {
- case SYSCONTROL_REG:
- if (data & 0x0200) {
- /* boot force */
- DBGLOG(("boot force\n"));
- cpunum_set_reset_line(dcslocals.brdData.cpuNo, PULSE_LINE);
- adsp_boot(1);
- adsp.ctrlRegs[SYSCONTROL_REG] &= ~0x0200;
- }
- /* see if SPORT1 got disabled */
- if ((data & 0x0800) == 0) {
- dcs_txData(0, 0, 0, 0);
- /* nuke the timer */
- timer_enable(adsp.irqTimer, FALSE);
- }
- break;
- case S1_AUTOBUF_REG:
- /* autobuffer off: nuke the timer */
- if ((data & 0x0002) == 0) {
- adsp.txData(0, 0, 0, 0);
- /* nuke the timer */
- timer_enable(adsp.irqTimer, FALSE);
- }
- break;
- case S1_CONTROL_REG:
- if (((data>>4) & 3) == 2)
- DBGLOG(("Oh no!, the data is compresed with u-law encoding\n"));
- if (((data>>4) & 3) == 3)
- DBGLOG(("Oh no!, the data is compresed with A-law encoding\n"));
- break;
- } /* switch */
-}
-
-static struct {
- UINT16 start;
- UINT16 size, step;
- int sRate;
- int iReg;
- int last;
- int irqCount;
-} adsp_aBufData;
-
-static void adsp_irqGen(int dummy) {
- int next;
-
- if (adsp_aBufData.irqCount < DCS_IRQSTEPS) {
- adsp_aBufData.irqCount += 1;
-#ifdef WPCDCSSPEEDUP
- /* wake up suspended cpu by simulating an interrupt trigger */
- cpu_triggerint(dcslocals.brdData.cpuNo);
-#endif /* WPCDCSSPEEDUP */
- }
- else {
- adsp_aBufData.irqCount = 1;
- adsp_aBufData.last = 0;
- cpu_set_irq_line(dcslocals.brdData.cpuNo, ADSP2105_IRQ1, PULSE_LINE);
- }
-
- next = (adsp_aBufData.size / adsp_aBufData.step * adsp_aBufData.irqCount /
- DCS_IRQSTEPS - 1) * adsp_aBufData.step;
-
- cpunum_set_reg(dcslocals.brdData.cpuNo, ADSP2100_I0 + adsp_aBufData.iReg,
- adsp_aBufData.start + next);
-
- adsp.txData(adsp_aBufData.start + adsp_aBufData.last, (next - adsp_aBufData.last),
- adsp_aBufData.step, adsp_aBufData.sRate);
-
- adsp_aBufData.last = next;
-
-}
-
-static void adsp_txCallback(int port, INT32 data) {
- if (port != 1)
- { DBGLOG(("tx0 not handled\n")); return; };
- /*-- remove any pending timer --*/
- timer_enable(adsp.irqTimer, FALSE);
- if ((adsp.ctrlRegs[SYSCONTROL_REG] & 0x0800) == 0)
- DBGLOG(("tx1 without SPORT1 enabled\n"));
- else if ((adsp.ctrlRegs[S1_AUTOBUF_REG] & 0x0002) == 0)
- DBGLOG(("SPORT1 without autobuffer"));
- else {
- int ireg, mreg;
-
- ireg = (adsp.ctrlRegs[S1_AUTOBUF_REG]>>9) & 7;
- mreg = ((adsp.ctrlRegs[S1_AUTOBUF_REG]>>7) & 3) | (ireg & 0x04);
-
- /* start = In, size = Ln, step = Mn */
- adsp_aBufData.step = activecpu_get_reg(ADSP2100_M0 + mreg);
- adsp_aBufData.size = activecpu_get_reg(ADSP2100_L0 + ireg);
- /*-- assume that the first sample comes from the memory position before --*/
- adsp_aBufData.start = activecpu_get_reg(ADSP2100_I0 + ireg) - adsp_aBufData.step;
- adsp_aBufData.sRate = Machine->drv->cpu[dcslocals.brdData.cpuNo].cpu_clock /
- (2 * (adsp.ctrlRegs[S1_SCLKDIV_REG] + 1)) / 16;
- adsp_aBufData.iReg = ireg;
- adsp_aBufData.irqCount = adsp_aBufData.last = 0;
- adsp_irqGen(0); /* first part, rest is handled via the timer */
- /*-- fire the irq timer --*/
- timer_adjust(adsp.irqTimer, 0, 0, TIME_IN_HZ(adsp_aBufData.sRate) *
- adsp_aBufData.size / adsp_aBufData.step / DCS_IRQSTEPS);
- DBGLOG(("DCS size=%d,step=%d,rate=%d\n",adsp_aBufData.size,adsp_aBufData.step,adsp_aBufData.sRate));
- return;
- }
- /*-- if we get here, something went wrong. Disable transmission --*/
- adsp.txData(0, 0, 0, 0);
-}
-
-#ifdef WPCDCSSPEEDUP
-
-UINT32 dcs_speedup(UINT32 pc) {
- UINT16 *ram1source, *ram2source, volume;
- int ii;
-
- /* DCS and DCS95 uses different buffers */
- if (pc > 0x2000) {
- UINT32 volumeOP = *(UINT32 *)&OP_ROM[ADSP2100_PGM_OFFSET + ((pc+0x2b84-0x2b44)<<2)];
-
- ram1source = (UINT16 *)(dcslocals.cpuRegion + ADSP2100_DATA_OFFSET + (0x1000<<1));
- ram2source = dcslocals.RAMbankPtr;
- volume = ram1source[((volumeOP>>4)&0x3fff)-0x1000];
- /*DBGLOG(("OP=%6x addr=%4x V=%4x\n",volumeOP,(volumeOP>>4)&0x3fff,volume));*/
- }
- else {
- UINT32 volumeOP = *(UINT32 *)&OP_ROM[ADSP2100_PGM_OFFSET + ((pc+0x2b84-0x2b44)<<2)];
-
- ram1source = (UINT16 *)(dcslocals.cpuRegion + ADSP2100_DATA_OFFSET + (0x0700<<1));
- ram2source = (UINT16 *)(dcslocals.cpuRegion + ADSP2100_DATA_OFFSET + (0x3800<<1));
- volume = ram2source[((volumeOP>>4)&0x3fff)-0x3800];
- /*DBGLOG(("OP=%6x addr=%4x V=%4x\n",volumeOP,(volumeOP>>4)&0x3fff,volume));*/
- }
- {
- UINT16 *i0, *i2;
- /* 2B44 I0 = $2000 >>> (3800) <<< */
- i0 = &ram2source[0];
- /* 2B45: I2 = $2080 >>> (3880) <<< */
- i2 = &ram2source[0x0080];
- /* 2B46 M2 = $3FFF */
- /* 2B47 M3 = $3FFD */
- /* 2B48 CNTR = $0040 */
- /* 2B49 DO $2B53 UNTIL CE */
- /* M0 = 0, M1 = 1, M2 = -1 */
- for (ii = 0; ii < 0x0040; ii++) {
- INT16 ax0 , ay0, ax1, ay1, ar;
- /* 2B4A AX0 = DM(I0,M1) */
- ax0 = *i0++;
- /* 2B4B AY0 = DM(I2,M0) */
- ay0 = *i2;
- /* 2B4C AR = AX0 + AY0, AX1 = DM(I0,M2) */
- ax1 = *i0--;
- ar = ax0 + ay0;
- /* 2B4D AR = AX0 - AY0, DM(I0,M1) = AR */
- *i0++ = ar;
- ar = ax0 - ay0;
- /* 2B4E DM(I2,M1) = AR */
- *i2++ = ar;
- /* 2B4F AY1 = DM(I2,M0) */
- ay1 = *i2;
- /* 2B50 AR = AX1 + AY1 */
- ar = ax1 + ay1;
- /* 2B51 DM(I0,M1) = AR */
- *i0++ = ar;
- /* 2B52 AR = AX1 - AY1 */
- ar = ax1 - ay1;
- /* 2B53 DM(I2,M1) = AR */
- *i2++ = ar;
- }
- }
- {
- int mem63d, mem63e, mem63f;
- int jj,kk;
- /* 2B54 AR = $0002 */
- /* 2B55 DM($15EB) = AR (063d) */
- mem63d = 2;
- /* 2B56 SI = $0040 */
- /* 2B57 DM($15ED) = SI (063e) */
- mem63e = 0x40;
- /* 2B58 SR = LSHIFT SI BY -1 (LO) */
- /* 2B59 DM($15EF) = SR0 (063f) */
- mem63f = mem63e >> 1;
- /* 2B5A M0 = $3FFF */
- /* 2B5B CNTR = $0006 */
- /* 2B5C DO $2B80 UNTIL CE */
-
- /* M0 = -1, M1 = 1, M5 = 1 */
- for (ii = 0; ii < 6; ii++) {
- UINT16 *i0, *i1, *i2, *i4, *i5;
- INT16 m2, m3;
- /* 2B5D I4 = $1080 >>> (0780) <<< */
- i4 = &ram1source[0x0080];
- /* 2B5E I5 = $1000 >>> (0700) <<< */
- i5 = &ram1source[0x0000];
- /* 2B5F I0 = $2000 >>> (3800) <<< */
- i0 = &ram2source[0x0000];
- /* 2B60 I1 = $2000 >>> (3800) <<< */
- i1 = &ram2source[0x0000];
- /* 2B61 AY0 = DM($15ED) (063e) */
- /* 2B62 M2 = AY0 */
- m2 = mem63e;
- /* 2B63 MODIFY (I1,M2) */
- i1 += m2;
- /* 2B64 I2 = I1 */
- i2 = i1;
- /* 2B65 AR = AY0 - 1 */
- /* 2B66 M3 = AR */
- m3 = mem63e - 1;
- /* 2B67 CNTR = DM($15EB) (063d) */
- /* 2B68 DO $2B79 UNTIL CE */
-
- for (jj = 0; jj < mem63d; jj++) {
- INT16 mx0, mx1, my0, my1;
- /* 2B6A MY0 = DM(I4,M5) */
- my0 = *i4++;
- /* 2B6B MY1 = DM(I5,M5) */
- my1 = *i5++;
- /* 2B6C MX0 = DM(I1,M1) */
- mx0 = *i1++;
- /* 2B69 CNTR = DM($15EF) (063f) */
- /* 2B6D DO $2B76 UNTIL CE */
- for (kk = 0; kk < mem63f; kk++) {
- INT16 ax0, ay0, ay1, ar;
- INT32 tmp, mr;
- /* 2B6E MR = MX0 * MY0 (SS), MX1 = DM(I1,M1) */
- mx1 = *i1++;
- tmp = ((mx0 * my0)<<1);
- mr = tmp;
- /* 2B6F MR = MR - MX1 * MY1 (RND), AY0 = DM(I0,M1) */
- ay0 = *i0++;
- tmp = ((mx1 * my1)<<1);
- mr = (mr - tmp + 0x8000) & (((tmp & 0xffff) == 0x8000) ? 0xfffeffff : 0xffffffff);
- /* 2B70 MR = MX1 * MY0 (SS), AX0 = MR1 */
- ax0 = mr>>16;
- tmp = (mx1 * my0)<<1;
- mr = tmp;
- /* 2B71 MR = MR + MX0 * MY1 (RND), AY1 = DM(I0,M0) */
- ay1 = *i0--; /* M0 = -1 */
- tmp = ((mx0 * my1)<<1);
- mr = (mr + tmp + 0x8000) & (((tmp & 0xffff) == 0x8000) ? 0xfffeffff : 0xffffffff);
- /* 2B72 AR = AY0 - AX0, MX0 = DM(I1,M1) */
- mx0 = *i1++;
- ar = ay0 - ax0;
- /* 2B73 AR = AX0 + AY0, DM(I0,M1) = AR */
- *i0++ = ar;
- ar = ax0 + ay0;
- /* 2B74 AR = AY1 - MR1, DM(I2,M1) = AR */
- *i2++ = ar;
- ar = ay1 - (mr>>16);
- /* 2B75 AR = MR1 + AY1, DM(I0,M1) = AR */
- *i0++ = ar;
- ar = (mr>>16) + ay1;
- /* 2B76 DM(I2,M1) = AR */
- *i2++ = ar;
- }
- /* 2B77 MODIFY (I2,M2) */
- i2 += m2;
- /* 2B78 MODIFY (I1,M3) */
- i1 += m3;
- /* 2B79 MODIFY (I0,M2) */
- i0 += m2;
- }
- /* 2B7A SI = DM($15EB) (063d) */
- /* 2B7B: SR = LSHIFT SI BY 1 (LO) */
- /* 2B7C: DM($15EB) = SR0 (063d) */
- mem63d <<= 1;
- /* 2B7D SI = DM($15EF) (063f) */
- /* 2B7E DM($15ED) = SI (063e) */
- mem63e = mem63f;
- /* 2B7F SR = LSHIFT SI BY -1 (LO) */
- /* 2B80 DM($15EF) = SR0 (063f) */
- mem63f >>= 1;
- }
- }
- { /* Volume scaling */
- UINT16 *i0;
- UINT16 my0;
- /* 2B81 M0 = $0000 */
- /* 2B82 I0 = $2000 >>> (3800) <<< */
- i0 = &ram2source[0x0000];
- /* 2B84 MY0 = DM($15FD) (390e) */
- my0 = volume;
- /* 2B83 CNTR = $0100 */
- /* 2B85 DO $2B89 UNTIL CE */
- /* M0 = 0, M1 = 1 */
- for (ii = 0; ii < 0x0100; ii++) {
- INT16 mx0;
- INT32 mr;
- /* 2B86 MX0 = DM(I0,M0) */
- mx0 = *i0;
- /* 2B87 MR = MX0 * MY0 (SU) */
- mr = (mx0 * my0)<<1;
- /* 2B88 IF MV SAT MR */
- /* This instruction limits MR to 32 bits */
- /* In reality the volume will never be higher than 0x8000 so */
- /* this is not needed */
- /* 2B89 DM(I0,M1) = MR1 */
- *i0++ = mr>>16;
- }
- }
- activecpu_set_reg(ADSP2100_PC, pc + 0x2b89 - 0x2b44);
- return 0; /* execute a NOP */
-}
-
-#endif /* WPCDCSSPEEDUP */
-
-#endif
-
diff --git a/src/mame/drivers/p_wmssnd.h b/src/mame/drivers/p_wmssnd.h
deleted file mode 100644
index acd63fa8137..00000000000
--- a/src/mame/drivers/p_wmssnd.h
+++ /dev/null
@@ -1,398 +0,0 @@
-// new code to allow the PinMAME rom loading to compile
-
-/*-------------------------
-/ S9 sound on CPU board
-/--------------------------*/
-
-#define S9S_CPUREGION "s9s_cpu"
-//MACHINE_DRIVER_EXTERN(wmssnd_s9s);
-//MACHINE_DRIVER_EXTERN(wmssnd_s9ps); /* pennant fever */
-
-#define S9S_STDREG SOUNDREGION(0x10000, S9S_CPUREGION)
-
-#define S9S_SOUNDROM41111(u49,chk49, u4,chk4, u5,chk5, u6,chk6, u7,chk7) \
- S9S_STDREG \
- ROM_LOAD(u49, 0xc000, 0x4000, chk49) \
- ROM_LOAD(u7, 0x8000, 0x1000, chk7) \
- ROM_LOAD(u5, 0x9000, 0x1000, chk5) \
- ROM_LOAD(u6, 0xa000, 0x1000, chk6) \
- ROM_LOAD(u4, 0xb000, 0x1000, chk4)
-
-#define S9S_SOUNDROM4111(u49,chk49, u4,chk4, u5,chk5, u6,chk6) \
- S9S_STDREG \
- ROM_LOAD(u49, 0xc000, 0x4000, chk49) \
- ROM_LOAD(u5, 0x9000, 0x1000, chk5) \
- ROM_LOAD(u6, 0xa000, 0x1000, chk6) \
- ROM_LOAD(u4, 0xb000, 0x1000, chk4)
-
-#define S9S_SOUNDROM4(u49,chk49) \
- S9S_STDREG \
- ROM_LOAD(u49, 0xc000, 0x4000, chk49) \
- ROM_RELOAD(0x8000, 0x4000)
-
-#define S9RR_SOUNDROM(u49, chk49) \
- S9S_STDREG \
- ROM_LOAD(u49, 0xe000, 0x2000, chk49) \
- ROM_RELOAD(0xc000, 0x2000) \
- ROM_RELOAD(0xa000, 0x2000) \
- ROM_RELOAD(0x8000, 0x2000)
-
-/*-------------------------
-/ S11 sound on CPU board
-/--------------------------*/
-
-#define S11XS_CPUREGION "s11xs_cpu"
-#define S11XS_ROMREGION "sound2"
-#define S11S_CPUREGION "s11s_cpu"
-#define S11S_ROMREGION "sound2"
-//extern MACHINE_DRIVER_EXTERN(wmssnd_s11s); /* without extra sound board */
-//extern MACHINE_DRIVER_EXTERN(wmssnd_s11xs); /* with s11c sound board */
-//extern MACHINE_DRIVER_EXTERN(wmssnd_s11b2s); /* with jokerz sound board */
-
-#define S11XS_STDREG \
-
-#define S11XS_SOUNDROM44(n1, chk1, n2, chk2) \
- SOUNDREGION(0x10000, S11XS_CPUREGION) \
- SOUNDREGION(0x10000, S11XS_ROMREGION) \
- ROM_LOAD(n1, 0x4000, 0x4000, chk1) \
- ROM_LOAD(n2, 0xc000, 0x4000, chk2) \
- ROM_RELOAD( 0x8000, 0x4000)
-
-#define S11XS_SOUNDROMx8(n2, chk2) \
- SOUNDREGION(0x10000, S11XS_CPUREGION) \
- SOUNDREGION(0x10000, S11XS_ROMREGION) \
- ROM_LOAD(n2, 0x4000, 0x4000, chk2) \
- ROM_CONTINUE(0xc000, 0x4000)
-
-#define S11XS_SOUNDROM88(n1, chk1, n2, chk2) \
- SOUNDREGION(0x10000, S11XS_CPUREGION) \
- SOUNDREGION(0x10000, S11XS_ROMREGION) \
- ROM_LOAD(n1, 0x0000, 0x8000, chk1) \
- ROM_LOAD(n2, 0x8000, 0x8000, chk2)
-
-#define S11S_SOUNDROM88(n1, chk1, n2, chk2) \
- SOUNDREGION(0x10000, S11S_CPUREGION) \
- SOUNDREGION(0x10000, S11S_ROMREGION) \
- ROM_LOAD(n1, 0x0000, 0x8000, chk1) \
- ROM_LOAD(n2, 0x8000, 0x8000, chk2)
-
-/*-------------------------
-/ S11C sound board
-/--------------------------*/
-
-#define S11CS_CPUREGION "s11cs_cpu"
-#define S11CS_ROMREGION "sound1"
-//extern MACHINE_DRIVER_EXTERN(wmssnd_s11cs);
-
-#define S11CS_STDREG \
- SOUNDREGION(0x10000, S11CS_CPUREGION) \
- SOUNDREGION(0x30000, S11CS_ROMREGION)
-
-#define S11CS_ROMLOAD8(start, n, chk) \
- ROM_LOAD(n, start, 0x8000, chk) \
- ROM_RELOAD(start+0x8000, 0x8000)
-
-#define S11CS_ROMLOAD0(start, n, chk) \
- ROM_LOAD(n, start, 0x10000, chk)
-
-#define S11CS_SOUNDROM000(n1,chk1,n2,chk2,n3,chk3) \
- S11CS_STDREG \
- S11CS_ROMLOAD0(0x00000, n1, chk1) \
- S11CS_ROMLOAD0(0x10000, n2, chk2) \
- S11CS_ROMLOAD0(0x20000, n3, chk3)
-
-#define S11CS_SOUNDROM008(n1,chk1,n2,chk2,n3,chk3) \
- S11CS_STDREG \
- S11CS_ROMLOAD0(0x00000, n1, chk1) \
- S11CS_ROMLOAD0(0x10000, n2, chk2) \
- S11CS_ROMLOAD8(0x20000, n3, chk3)
-
-#define S11CS_SOUNDROM888(n1,chk1,n2,chk2,n3,chk3) \
- S11CS_STDREG \
- S11CS_ROMLOAD8(0x00000, n1, chk1) \
- S11CS_ROMLOAD8(0x10000, n2, chk2) \
- S11CS_ROMLOAD8(0x20000, n3, chk3)
-
-#define S11CS_SOUNDROM88(n1,chk1,n2,chk2) \
- S11CS_STDREG \
- S11CS_ROMLOAD8(0x00000, n1, chk1) \
- S11CS_ROMLOAD8(0x10000, n2, chk2)
-
-#define S11CS_SOUNDROM8(n1,chk1) \
- S11CS_STDREG \
- S11CS_ROMLOAD8(0x00000, n1, chk1)
-
-
-/*-------------------------
-/ Jokerz! sound board
-/--------------------------*/
-#define S11JS_CPUREGION "s11js_cpu"
-#define S11JS_ROMREGION "sound1"
-//extern MACHINE_DRIVER_EXTERN(wmssnd_s11js);
-
-#define S11JS_SOUNDROM(n1, chk1) \
- SOUNDREGION(0x10000, S11JS_CPUREGION) \
- ROM_LOAD(n1, 0x0000, 0x10000, chk1) \
- SOUNDREGION(0x10000, S11JS_ROMREGION) \
- ROM_LOAD(n1, 0x0000, 0x10000, chk1)
-
-/************************************************************************************************
-*************************************************************************************************
- Old PinMAME code below for reference ONLY
-*************************************************************************************************
-************************************************************************************************/
-
-#if 0
-
-#ifndef INC_WMSSND
-#define INC_WMSSND
-/* DCS sound needs this one */
-#include "cpu/adsp2100/adsp2100.h"
-
-/*-------------------------
-/ S3-S7 sound board
-/--------------------------*/
-#define S67S_CPUNO 1
-#define S67S_MEMREG_SCPU (REGION_CPU1+S67S_CPUNO)
-extern MACHINE_DRIVER_EXTERN(wmssnd_s67s);
-
-#define S67S_SOUNDROMS0(ic12, chk12) \
- SOUNDREGION(0x10000, S67S_MEMREG_SCPU) \
- ROM_LOAD(ic12, 0x7000, 0x1000, chk12) \
- ROM_RELOAD( 0xf000, 0x1000)
-
-#define S67S_SOUNDROMS8(ic12, chk12) \
- SOUNDREGION(0x10000, S67S_MEMREG_SCPU) \
- ROM_LOAD(ic12, 0x7800, 0x0800, chk12) \
- ROM_RELOAD( 0xf800, 0x0800)
-
-#define S67S_SPEECHROMS0000(ic7,chk7, ic5,chk5, ic6,chk6, ic4, chk4) \
- ROM_LOAD(ic7, 0x3000, 0x1000, chk7) \
- ROM_RELOAD( 0xb000, 0x1000) \
- ROM_LOAD(ic5, 0x4000, 0x1000, chk5) \
- ROM_RELOAD( 0xc000, 0x1000) \
- ROM_LOAD(ic6, 0x5000, 0x1000, chk6) \
- ROM_RELOAD( 0xd000, 0x1000) \
- ROM_LOAD(ic4, 0x6000, 0x1000, chk4) \
- ROM_RELOAD( 0xe000, 0x1000)
-
-#define S67S_SPEECHROMS000x(ic7,chk7, ic5,chk5, ic6,chk6) \
- ROM_LOAD(ic7, 0x3000, 0x1000, chk7) \
- ROM_RELOAD( 0xb000, 0x1000) \
- ROM_LOAD(ic5, 0x4000, 0x1000, chk5) \
- ROM_RELOAD( 0xc000, 0x1000) \
- ROM_LOAD(ic6, 0x5000, 0x1000, chk6) \
- ROM_RELOAD( 0xd000, 0x1000)
-
-
-
-
-
-
-/*-------------------------
-/ WPC sound board
-/--------------------------*/
-#define WPCS_CPUNO 1
-#define WPCS_CPUREGION (REGION_CPU1+WPCS_CPUNO)
-#define WPCS_ROMREGION (REGION_SOUND1)
-extern MACHINE_DRIVER_EXTERN(wmssnd_wpcs);
-
-#define WPCS_STDREG \
- SOUNDREGION(0x010000, WPCS_CPUREGION) \
- SOUNDREGION(0x180000, WPCS_ROMREGION)
-
-#define WPCS_ROMLOAD2(start, n, chk) \
- ROM_LOAD(n, start, 0x20000, chk) \
- ROM_RELOAD( start + 0x20000, 0x20000) \
- ROM_RELOAD( start + 0x40000, 0x20000) \
- ROM_RELOAD( start + 0x60000, 0x20000)
-
-#define WPCS_ROMLOAD4(start, n, chk) \
- ROM_LOAD(n, start, 0x40000, chk) \
- ROM_RELOAD( start + 0x40000, 0x40000)
-
-#define WPCS_ROMLOAD8(start, n, chk) \
- ROM_LOAD(n, start, 0x80000, chk)
-
-#define WPCS_SOUNDROM882(u18,chk18,u15,chk15,u14,chk14) \
- WPCS_STDREG \
- WPCS_ROMLOAD8(0x000000, u18, chk18) \
- WPCS_ROMLOAD8(0x080000, u15, chk15) \
- WPCS_ROMLOAD2(0x100000, u14, chk14)
-#define WPCS_SOUNDROM288(u18,chk18,u15,chk15,u14,chk14) \
- WPCS_STDREG \
- WPCS_ROMLOAD2(0x000000, u18, chk18) \
- WPCS_ROMLOAD8(0x080000, u15, chk15) \
- WPCS_ROMLOAD8(0x100000, u14, chk14)
-#define WPCS_SOUNDROM222(u18,chk18,u15,chk15,u14,chk14) \
- WPCS_STDREG \
- WPCS_ROMLOAD2(0x000000, u18, chk18) \
- WPCS_ROMLOAD2(0x080000, u15, chk15) \
- WPCS_ROMLOAD2(0x100000, u14, chk14)
-#define WPCS_SOUNDROM224(u18,chk18,u15,chk15,u14,chk14) \
- WPCS_STDREG \
- WPCS_ROMLOAD2(0x000000, u18, chk18) \
- WPCS_ROMLOAD2(0x080000, u15, chk15) \
- WPCS_ROMLOAD4(0x100000, u14, chk14)
-#define WPCS_SOUNDROM248(u18,chk18,u15,chk15,u14,chk14) \
- WPCS_STDREG \
- WPCS_ROMLOAD2(0x000000, u18, chk18) \
- WPCS_ROMLOAD4(0x080000, u15, chk15) \
- WPCS_ROMLOAD8(0x100000, u14, chk14)
-#define WPCS_SOUNDROM2x8(u18,chk18,u14,chk14) \
- WPCS_STDREG \
- WPCS_ROMLOAD2(0x000000, u18, chk18) \
- WPCS_ROMLOAD8(0x100000, u14, chk14)
-#define WPCS_SOUNDROM84x(u18,chk18,u15,chk15) \
- WPCS_STDREG \
- WPCS_ROMLOAD8(0x000000, u18, chk18) \
- WPCS_ROMLOAD4(0x080000, u15, chk15)
-#define WPCS_SOUNDROM22x(u18,chk18,u15,chk15) \
- WPCS_STDREG \
- WPCS_ROMLOAD2(0x000000, u18, chk18) \
- WPCS_ROMLOAD2(0x080000, u15, chk15)
-#define WPCS_SOUNDROM888(u18,chk18,u15,chk15,u14,chk14) \
- WPCS_STDREG \
- WPCS_ROMLOAD8(0x000000, u18, chk18) \
- WPCS_ROMLOAD8(0x080000, u15, chk15) \
- WPCS_ROMLOAD8(0x100000, u14, chk14)
-#define WPCS_SOUNDROM8xx(u18,chk18) \
- WPCS_STDREG \
- WPCS_ROMLOAD8(0x000000, u18, chk18)
-
-/*-------------------------
-/ DCS sound board
-/--------------------------*/
-#define DCS_CPUNO 1
-#define DCS_CPUREGION (REGION_CPU1+DCS_CPUNO)
-#define DCS_ROMREGION (REGION_SOUND1)
-#define DCS_BANKREGION (REGION_USER3)
-extern MACHINE_DRIVER_EXTERN(wmssnd_dcs1);
-/* DCS on WPC95 audio/visual board */
-extern MACHINE_DRIVER_EXTERN(wmssnd_dcs2);
-
-#define DCS_STDREG(size) \
- SOUNDREGION(ADSP2100_SIZE, DCS_CPUREGION) \
- SOUNDREGION(0x1000*2, DCS_BANKREGION) \
- SOUNDREGION(0x800000, DCS_ROMREGION)
-
-#define DCS_ROMLOADx(start, n, chk) \
- ROM_LOAD(n, start, 0x080000, chk) ROM_RELOAD(start+0x080000, 0x080000)
-#define DCS_ROMLOADm(start, n,chk) \
- ROM_LOAD(n, start, 0x100000, chk)
-
-#define DCS_SOUNDROM1x(n2,chk2) \
- DCS_STDREG(0x100000) \
- DCS_ROMLOADx(0x000000,n2,chk2)
-
-#define DCS_SOUNDROM1m(n2,chk2) \
- DCS_STDREG(0x100000) \
- DCS_ROMLOADm(0x000000,n2,chk2)
-
-#define DCS_SOUNDROM2m(n2,chk2,n3,chk3) \
- DCS_STDREG(0x200000) \
- DCS_ROMLOADm(0x000000,n2,chk2) \
- DCS_ROMLOADm(0x100000,n3,chk3)
-
-#define DCS_SOUNDROM3m(n2,chk2,n3,chk3,n4,chk4) \
- DCS_STDREG(0x300000) \
- DCS_ROMLOADm(0x000000,n2,chk2) \
- DCS_ROMLOADm(0x100000,n3,chk3) \
- DCS_ROMLOADm(0x200000,n4,chk4)
-
-#define DCS_SOUNDROM4m(n2,chk2,n3,chk3,n4,chk4,n5,chk5) \
- DCS_STDREG(0x400000) \
- DCS_ROMLOADm(0x000000,n2,chk2) \
- DCS_ROMLOADm(0x100000,n3,chk3) \
- DCS_ROMLOADm(0x200000,n4,chk4) \
- DCS_ROMLOADm(0x300000,n5,chk5)
-
-#define DCS_SOUNDROM4xm(n2,chk2,n3,chk3,n4,chk4,n5,chk5) \
- DCS_STDREG(0x400000) \
- DCS_ROMLOADx(0x000000,n2,chk2) \
- DCS_ROMLOADm(0x100000,n3,chk3) \
- DCS_ROMLOADm(0x200000,n4,chk4) \
- DCS_ROMLOADm(0x300000,n5,chk5)
-
-#define DCS_SOUNDROM4mx(n2,chk2,n3,chk3,n4,chk4,n5,chk5) \
- DCS_STDREG(0x400000) \
- DCS_ROMLOADm(0x000000,n2,chk2) \
- DCS_ROMLOADm(0x100000,n3,chk3) \
- DCS_ROMLOADm(0x200000,n4,chk4) \
- DCS_ROMLOADx(0x300000,n5,chk5)
-
-#define DCS_SOUNDROM5xm(n2,chk2,n3,chk3,n4,chk4,n5,chk5,n6,chk6) \
- DCS_STDREG(0x500000) \
- DCS_ROMLOADx(0x000000,n2,chk2) \
- DCS_ROMLOADm(0x100000,n3,chk3) \
- DCS_ROMLOADm(0x200000,n4,chk4) \
- DCS_ROMLOADm(0x300000,n5,chk5) \
- DCS_ROMLOADm(0x400000,n6,chk6)
-
-#define DCS_SOUNDROM5x(n2,chk2,n3,chk3,n4,chk4,n5,chk5,n6,chk6) \
- DCS_STDREG(0x500000) \
- DCS_ROMLOADx(0x000000,n2,chk2) \
- DCS_ROMLOADx(0x100000,n3,chk3) \
- DCS_ROMLOADx(0x200000,n4,chk4) \
- DCS_ROMLOADx(0x300000,n5,chk5) \
- DCS_ROMLOADx(0x400000,n6,chk6)
-
-#define DCS_SOUNDROM5m(n2,chk2,n3,chk3,n4,chk4,n5,chk5,n6,chk6) \
- DCS_STDREG(0x500000) \
- DCS_ROMLOADm(0x000000,n2,chk2) \
- DCS_ROMLOADm(0x100000,n3,chk3) \
- DCS_ROMLOADm(0x200000,n4,chk4) \
- DCS_ROMLOADm(0x300000,n5,chk5) \
- DCS_ROMLOADm(0x400000,n6,chk6)
-
-#define DCS_SOUNDROM6x(n2,chk2,n3,chk3,n4,chk4,n5,chk5,n6,chk6,n7,chk7) \
- DCS_STDREG(0x600000) \
- DCS_ROMLOADx(0x000000,n2,chk2) \
- DCS_ROMLOADx(0x100000,n3,chk3) \
- DCS_ROMLOADx(0x200000,n4,chk4) \
- DCS_ROMLOADx(0x300000,n5,chk5) \
- DCS_ROMLOADx(0x400000,n6,chk6) \
- DCS_ROMLOADx(0x500000,n7,chk7)
-
-#define DCS_SOUNDROM6m(n2,chk2,n3,chk3,n4,chk4,n5,chk5,n6,chk6,n7,chk7) \
- DCS_STDREG(0x600000) \
- DCS_ROMLOADm(0x000000,n2,chk2) \
- DCS_ROMLOADm(0x100000,n3,chk3) \
- DCS_ROMLOADm(0x200000,n4,chk4) \
- DCS_ROMLOADm(0x300000,n5,chk5) \
- DCS_ROMLOADm(0x400000,n6,chk6) \
- DCS_ROMLOADm(0x500000,n7,chk7)
-
-#define DCS_SOUNDROM6xm(n2,chk2,n3,chk3,n4,chk4,n5,chk5,n6,chk6,n7,chk7) \
- DCS_STDREG(0x600000) \
- DCS_ROMLOADx(0x000000,n2,chk2) \
- DCS_ROMLOADm(0x100000,n3,chk3) \
- DCS_ROMLOADm(0x200000,n4,chk4) \
- DCS_ROMLOADm(0x300000,n5,chk5) \
- DCS_ROMLOADm(0x400000,n6,chk6) \
- DCS_ROMLOADm(0x500000,n7,chk7)
-
-#define DCS_SOUNDROM7x(n2,chk2,n3,chk3,n4,chk4,n5,chk5,n6,chk6,n7,chk7,n8,chk8) \
- DCS_STDREG(0x700000) \
- DCS_ROMLOADx(0x000000,n2,chk2) \
- DCS_ROMLOADx(0x100000,n3,chk3) \
- DCS_ROMLOADx(0x200000,n4,chk4) \
- DCS_ROMLOADx(0x300000,n5,chk5) \
- DCS_ROMLOADx(0x400000,n6,chk6) \
- DCS_ROMLOADx(0x500000,n7,chk7) \
- DCS_ROMLOADx(0x600000,n8,chk8)
-
-#define DCS_SOUNDROM8x(n2,chk2,n3,chk3,n4,chk4,n5,chk5,n6,chk6,n7,chk7,n8,chk8,n9,chk9) \
- DCS_STDREG(0x800000) \
- DCS_ROMLOADx(0x000000,n2,chk2) \
- DCS_ROMLOADx(0x100000,n3,chk3) \
- DCS_ROMLOADx(0x200000,n4,chk4) \
- DCS_ROMLOADx(0x300000,n5,chk5) \
- DCS_ROMLOADx(0x400000,n6,chk6) \
- DCS_ROMLOADx(0x500000,n7,chk7) \
- DCS_ROMLOADx(0x600000,n8,chk8) \
- DCS_ROMLOADx(0x700000,n9,chk9)
-
-#endif /* INC_WMSSND */
-
-#endif
diff --git a/src/mame/mame.mak b/src/mame/mame.mak
index 013d5b2f126..d54b8ed059a 100644
--- a/src/mame/mame.mak
+++ b/src/mame/mame.mak
@@ -1521,15 +1521,6 @@ $(MAMEOBJ)/zaccaria.a: \
#-------------------------------------------------
-# Pinball drivers
-#-------------------------------------------------
-
-$(MAMEOBJ)/zaccaria.a: \
- $(DRIVERS)/p_s11.o \
- $(DRIVERS)/p_core.o \
- $(DRIVERS)/p_wmssnd.o \
-
-#-------------------------------------------------
# remaining drivers
#-------------------------------------------------
diff --git a/src/mame/mamedriv.c b/src/mame/mamedriv.c
index 01ab60398d7..4169652820a 100644
--- a/src/mame/mamedriv.c
+++ b/src/mame/mamedriv.c
@@ -8856,85 +8856,4 @@ Other Sun games
/* MPU5 */
DRIVER( m_honmon )
- /* Drivers below are pinball machines
- There is currently no way of fully supporting these in MAME
- */
-
- DRIVER( sshtl_l7 )
- DRIVER( sorcr_l1 )
- DRIVER( sorcr_l2 )
- DRIVER( comet_l4 )
- DRIVER( comet_l5 )
- DRIVER( hs_l4 )
- DRIVER( hs_l3 )
- DRIVER( grand_l4 )
- DRIVER( rdkng_l4 )
- DRIVER( rdkng_l1 )
- DRIVER( rdkng_l2 )
- DRIVER( rdkng_l3 )
- DRIVER( pb_l5 )
- DRIVER( pb_l2 )
- DRIVER( pb_l3 )
- DRIVER( f14_l1 )
- DRIVER( fire_l3 )
- DRIVER( bguns_l8 )
- DRIVER( bguns_l7 )
- DRIVER( bguns_la )
- DRIVER( bguns_p1 )
- DRIVER( spstn_l5 )
- DRIVER( cycln_l5 )
- DRIVER( cycln_l4 )
- DRIVER( bnzai_l3 )
- DRIVER( bnzai_g3 )
- DRIVER( bnzai_l1 )
- DRIVER( bnzai_pa )
- DRIVER( swrds_l2 )
- DRIVER( taxi_l4 )
- DRIVER( taxi_l3 )
- DRIVER( taxi_lg1 )
- DRIVER( jokrz_l6 )
- DRIVER( jokrz_l3 )
- DRIVER( esha_la3 )
- DRIVER( esha_pr4 )
- DRIVER( esha_lg1 )
- DRIVER( esha_lg2 )
- DRIVER( esha_la1 )
- DRIVER( esha_pa1 )
- DRIVER( bk2k_l4 )
- DRIVER( bk2k_lg1 )
- DRIVER( bk2k_lg3 )
- DRIVER( bk2k_pu1 )
- DRIVER( polic_l4 )
- DRIVER( polic_l3 )
- DRIVER( polic_l2 )
- DRIVER( tsptr_l3 )
- DRIVER( bcats_l5 )
- DRIVER( bcats_l2 )
- DRIVER( mousn_l4 )
- DRIVER( mousn_l1 )
- DRIVER( mousn_lu )
- DRIVER( mousn_lx )
- DRIVER( whirl_l3 )
- DRIVER( whirl_l2 )
- DRIVER( gs_l3 )
- DRIVER( gs_l4 )
- DRIVER( rollr_l2 )
- DRIVER( rollr_ex )
- DRIVER( rollr_e1 )
- DRIVER( rollr_p2 )
- DRIVER( rollr_l3 )
- DRIVER( rollr_g3 )
- DRIVER( pool_l7 )
- DRIVER( diner_l4 )
- DRIVER( diner_l3 )
- DRIVER( diner_l1 )
- DRIVER( radcl_l1 )
- DRIVER( radcl_g1 )
- DRIVER( radcl_p3 )
- DRIVER( strax_p7 )
- DRIVER( rvrbt_l3 )
- DRIVER( bbnny_l2 )
- DRIVER( bbnny_lu )
-
-
#endif /* DRIVER_RECURSIVE */