diff options
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 |
commit | cd9086819ad0678f20598754cb52985e2853b75d (patch) | |
tree | 70cd547a826b0cab19cfbe5a44d5fd5cf3dcbdd4 | |
parent | 63a2d3125c60ffe4a61fb59fe1140f034d3ad27e (diff) |
Undo premature PinMAME stuff.
-rw-r--r-- | .gitattributes | 6 | ||||
-rw-r--r-- | src/mame/drivers/p_core.c | 1497 | ||||
-rw-r--r-- | src/mame/drivers/p_core.h | 511 | ||||
-rw-r--r-- | src/mame/drivers/p_s11.c | 1741 | ||||
-rw-r--r-- | src/mame/drivers/p_s11.h | 263 | ||||
-rw-r--r-- | src/mame/drivers/p_wmssnd.c | 1416 | ||||
-rw-r--r-- | src/mame/drivers/p_wmssnd.h | 398 | ||||
-rw-r--r-- | src/mame/mame.mak | 9 | ||||
-rw-r--r-- | src/mame/mamedriv.c | 81 |
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 */ |