summaryrefslogtreecommitdiffstatshomepage
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/mame/drivers/wiping.cpp26
-rw-r--r--src/mame/drivers/yunsung8.cpp15
-rw-r--r--src/tools/jedutil.cpp257
3 files changed, 275 insertions, 23 deletions
diff --git a/src/mame/drivers/wiping.cpp b/src/mame/drivers/wiping.cpp
index 04cf412bfc2..6c2d86abade 100644
--- a/src/mame/drivers/wiping.cpp
+++ b/src/mame/drivers/wiping.cpp
@@ -361,31 +361,31 @@ ROM_END
ROM_START( rugrats )
ROM_REGION( 0x10000, "maincpu", 0 ) /* main cpu code */
- ROM_LOAD( "rugr1d1", 0x0000, 0x2000, CRC(e7e1bd6d) SHA1(985799b1bfd001c6304e6166180745cb019f834e) )
- ROM_LOAD( "rugr2d2", 0x2000, 0x2000, CRC(5f47b9ad) SHA1(2d3eb737ea8e86691293e432e866d2623d6b6b1b) )
- ROM_LOAD( "rugr3d3", 0x4000, 0x2000, CRC(3d748d1a) SHA1(2b301119b6eb3f0f9bb2ad734cff1d25365dfe99) )
+ ROM_LOAD( "1.1d", 0x0000, 0x2000, CRC(e7e1bd6d) SHA1(985799b1bfd001c6304e6166180745cb019f834e) )
+ ROM_LOAD( "2.2d", 0x2000, 0x2000, CRC(5f47b9ad) SHA1(2d3eb737ea8e86691293e432e866d2623d6b6b1b) )
+ ROM_LOAD( "3.3d", 0x4000, 0x2000, CRC(3d748d1a) SHA1(2b301119b6eb3f0f9bb2ad734cff1d25365dfe99) )
ROM_REGION( 0x10000, "audiocpu", 0 ) /* sound cpu */
- ROM_LOAD( "rugr4c4", 0x0000, 0x2000, CRC(d4a92c38) SHA1(4a31cfef9f084b4d2934595155bf0f3dd589efb3) )
+ ROM_LOAD( "4.3b", 0x0000, 0x2000, CRC(d4a92c38) SHA1(4a31cfef9f084b4d2934595155bf0f3dd589efb3) )
ROM_REGION( 0x1000, "gfx1", 0 )
- ROM_LOAD( "rugr8d2", 0x0000, 0x1000, CRC(a3dcaca5) SHA1(d71f9090bf95dfd035ee0e0619a1cce575033cf3) ) /* chars */
+ ROM_LOAD( "8.2d", 0x0000, 0x1000, CRC(a3dcaca5) SHA1(d71f9090bf95dfd035ee0e0619a1cce575033cf3) ) /* chars */
ROM_REGION( 0x2000, "gfx2", 0 )
- ROM_LOAD( "rugr7c13", 0x0000, 0x2000, CRC(fe1191dd) SHA1(80ebf093f7a32f4cc9dc89dcc44cab6e3db4fca1) ) /* sprites */
+ ROM_LOAD( "7.13c", 0x0000, 0x2000, CRC(fe1191dd) SHA1(80ebf093f7a32f4cc9dc89dcc44cab6e3db4fca1) ) /* sprites */
ROM_REGION( 0x0220, "proms", 0 )
- ROM_LOAD( "prom.13g", 0x0000, 0x0020, CRC(f21238f0) SHA1(944627d1551453c7f828d96b83fd4eeb038b20ad) ) /* palette */
- ROM_LOAD( "prom.4f", 0x0020, 0x0100, CRC(cfc90f3d) SHA1(99f7dc0d14c62d4c676c96310c219c696c9a7897) ) /* char lookup table */
- ROM_LOAD( "prom.11e", 0x0120, 0x0100, CRC(cfc90f3d) SHA1(99f7dc0d14c62d4c676c96310c219c696c9a7897) ) /* sprite lookup table */
+ ROM_LOAD( "g13.13g", 0x0000, 0x0020, CRC(f21238f0) SHA1(944627d1551453c7f828d96b83fd4eeb038b20ad) ) /* palette */
+ ROM_LOAD( "eiif4.4f", 0x0020, 0x0100, CRC(cfc90f3d) SHA1(99f7dc0d14c62d4c676c96310c219c696c9a7897) ) /* char lookup table */
+ ROM_LOAD( "eiif4.11e", 0x0120, 0x0100, CRC(cfc90f3d) SHA1(99f7dc0d14c62d4c676c96310c219c696c9a7897) ) /* sprite lookup table */
ROM_REGION( 0x4000, "samples", 0 ) /* samples */
- ROM_LOAD( "rugr5c8", 0x0000, 0x2000, CRC(67bafbbf) SHA1(2085492b58ce44f61a42320c54595b79fdf7a91c) )
- ROM_LOAD( "rugr6c9", 0x2000, 0x2000, CRC(cac84a87) SHA1(90f6c514d0cdbeb4c8c979597db79ebcdf443df4) )
+ ROM_LOAD( "5.8c", 0x0000, 0x2000, CRC(67bafbbf) SHA1(2085492b58ce44f61a42320c54595b79fdf7a91c) )
+ ROM_LOAD( "6.9c", 0x2000, 0x2000, CRC(cac84a87) SHA1(90f6c514d0cdbeb4c8c979597db79ebcdf443df4) )
ROM_REGION( 0x0200, "soundproms", 0 ) /* 4bit->8bit sample expansion PROMs */
- ROM_LOAD( "wip-e8.bin", 0x0000, 0x0100, CRC(bd2c080b) SHA1(9782bb5001e96db56bc29df398187f700bce4f8e) ) /* low 4 bits */
- ROM_LOAD( "wip-e9.bin", 0x0100, 0x0100, CRC(4017a2a6) SHA1(dadef2de7a1119758c8e6d397aa42815b0218889) ) /* high 4 bits */
+ ROM_LOAD( "e8.8e", 0x0000, 0x0100, CRC(bd2c080b) SHA1(9782bb5001e96db56bc29df398187f700bce4f8e) ) /* low 4 bits */
+ ROM_LOAD( "e9.9e", 0x0100, 0x0100, CRC(4017a2a6) SHA1(dadef2de7a1119758c8e6d397aa42815b0218889) ) /* high 4 bits */
ROM_END
diff --git a/src/mame/drivers/yunsung8.cpp b/src/mame/drivers/yunsung8.cpp
index 8dff608fb5a..0be817736ad 100644
--- a/src/mame/drivers/yunsung8.cpp
+++ b/src/mame/drivers/yunsung8.cpp
@@ -16,7 +16,7 @@ Sound Chips : OKI M5205 + YM3812
Year + Game Board#
---------------------------------------------------------------------------
95 Cannon Ball YS-ROCK-970712 or 940712?
-95 Magix / Rock YS-ROCK-970712
+95 Magix / Rock YS-ROCK-940712
94? Rock Tris YS-ROCK-940712
---------------------------------------------------------------------------
@@ -395,10 +395,11 @@ void yunsung8_state::yunsung8(machine_config &config)
Magix
Yun Sung, 1995
-YS-ROCK-970712
+YS-ROCK-940712
+-------------------------------------+
|VOL YM3014 6116 04|
| M5205 400KHz 03|
+| 09 |
| Z80A CXK5118PN-15L 02|
| 08 GM76C28-10 01|
| MCM2018AN45 |
@@ -411,7 +412,7 @@ YS-ROCK-970712
| U66 +--------+ 06|
| HM6264 05|
| 07 HM6264 |
-| Z80B YM3812 16MHz |
+| Z80B YM3812 10 16MHz |
+-------------------------------------+
Main CPU: Z80B
@@ -442,6 +443,10 @@ ROM_START( magix )
ROM_REGION( 0x40000, "text", 0 ) /* Text */
ROM_LOAD( "yunsung8.05", 0x00000, 0x20000, CRC(862d378c) SHA1(a4e2cf14b5b25c6b8725dd285ddea65ce9ee257a) ) // only first $8000 bytes != 0
ROM_LOAD( "yunsung8.06", 0x20000, 0x20000, CRC(8b2ab901) SHA1(1a5c05dd0cf830b645357a62d8e6e876b44c6b7f) ) // only first $8000 bytes != 0
+
+ ROM_REGION( 0x0002, "plds", 0 ) /* PAL's and GAL's */
+ ROM_LOAD( "palce20v8h.09", 0x0000, 0x0001, NO_DUMP ) /* PALCE20V8H-25PC/4 - security fuse blown */
+ ROM_LOAD( "palce20v8h.10", 0x0000, 0x0001, NO_DUMP ) /* PALCE20V8H-25PC/4 - security fuse blown */
ROM_END
/***************************************************************************
@@ -470,6 +475,10 @@ ROM_START( magixb )
ROM_REGION( 0x40000, "text", 0 ) /* Text */
ROM_LOAD( "5.bin", 0x00000, 0x20000, CRC(11b99819) SHA1(4b20feea227cefd2e905601d934538a13ba6685b) ) // only first $8000 bytes != 0
ROM_LOAD( "6.bin", 0x20000, 0x20000, CRC(361a864c) SHA1(e0bb78b49fc3d461d6ac46ad97a9d04112783132) ) // only first $8000 bytes != 0
+
+ ROM_REGION( 0x0002, "plds", 0 ) /* PAL's and GAL's */
+ ROM_LOAD( "palce20v8h.09", 0x0000, 0x0001, NO_DUMP ) /* PALCE20V8H-25PC/4 - security fuse blown */
+ ROM_LOAD( "palce20v8h.10", 0x0000, 0x0001, NO_DUMP ) /* PALCE20V8H-25PC/4 - security fuse blown */
ROM_END
diff --git a/src/tools/jedutil.cpp b/src/tools/jedutil.cpp
index 49b5d00cd38..c342d1bbef9 100644
--- a/src/tools/jedutil.cpp
+++ b/src/tools/jedutil.cpp
@@ -94,11 +94,12 @@
PAL20X8 = QP24 QF1600
PAL20X10 = QP24 QF1600
- PAL22V10 = QP24 QF5828?
-
GAL20V8A = QP24 QF2706
GAL22V10 = QP24 QF5892
+ PALCE22V10 = QP24 QF5828
+ PAL22V10 = QP24 QF5828
+
28-pin devices:
PLS100 = QP28 QF1928 (Tri-State)
82S100 = QP20 QF1928 (Tri-State)
@@ -290,6 +291,7 @@ static void print_pal20ra10_product_terms(const pal_data* pal, const jed_data* j
static void print_pal20x4_product_terms(const pal_data* pal, const jed_data* jed);
static void print_pal20x8_product_terms(const pal_data* pal, const jed_data* jed);
static void print_pal20x10_product_terms(const pal_data* pal, const jed_data* jed);
+static void print_palce22v10_pal22v10_product_terms(const pal_data* pal, const jed_data* jed);
static void print_82s153_pls153_product_terms(const pal_data* pal, const jed_data* jed);
static void print_ck2605_product_terms(const pal_data* pal, const jed_data* jed);
#if defined(ricoh_pals)
@@ -353,6 +355,7 @@ static void config_pal20ra10_pins(const pal_data* pal, const jed_data* jed);
static void config_pal20x4_pins(const pal_data* pal, const jed_data* jed);
static void config_pal20x8_pins(const pal_data* pal, const jed_data* jed);
static void config_pal20x10_pins(const pal_data* pal, const jed_data* jed);
+static void config_palce22v10_pal22v10_pins(const pal_data* pal, const jed_data* jed);
static void config_82s153_pls153_pins(const pal_data* pal, const jed_data* jed);
static void config_ck2605_pins(const pal_data* pal, const jed_data* jed);
#if defined(ricoh_pals)
@@ -665,6 +668,18 @@ static pin_fuse_rows pal20x10pinfuserows[] = {
{22, NO_OUTPUT_ENABLE_FUSE_ROW, 160, 280}, /* Registered Output */
{23, NO_OUTPUT_ENABLE_FUSE_ROW, 0, 120}}; /* Registered Output */
+static pin_fuse_rows palce22v10_pal22v10pinfuserows[] = {
+ {14, 5368, 5412, 5720},
+ {15, 4884, 4928, 5324},
+ {16, 4312, 4356, 4840},
+ {17, 3652, 3696, 4268},
+ {18, 2904, 2948, 3608},
+ {19, 2156, 2200, 2860},
+ {20, 1496, 1540, 2112},
+ {21, 924, 968, 1452},
+ {22, 440, 484, 880},
+ {23, 44, 88, 396}};
+
static pin_fuse_rows _82s153_pls153pinfuserows[] = {
{9, 1472, 0, 0},
{11, 1508, 0, 0},
@@ -1456,6 +1471,30 @@ static pin_fuse_columns pal20x10pinfusecolumns[] = {
{23, 3, 2}
};
+static pin_fuse_columns palce22v10_pal22v10pinfusecolumns[] = {
+ {1, 1, 0},
+ {2, 5, 4},
+ {3, 9, 8},
+ {4, 13, 12},
+ {5, 17, 16},
+ {6, 21, 20},
+ {7, 25, 24},
+ {8, 29, 28},
+ {9, 33, 32},
+ {10, 37, 36},
+ {11, 41, 40},
+ {13, 43, 42},
+ {14, 39, 38},
+ {15, 35, 34},
+ {16, 31, 30},
+ {17, 27, 26},
+ {18, 23, 22},
+ {19, 19, 18},
+ {20, 15, 14},
+ {21, 11, 10},
+ {22, 7, 6},
+ {23, 3, 2}};
+
static pin_fuse_columns _82s153_pls153pinfusecolumns[] = {
{1, 1, 0},
{2, 3, 2},
@@ -2167,9 +2206,22 @@ static pal_data paldata[] = {
config_pal20x10_pins,
nullptr,
nullptr},
- /*{"PAL22V10", 0, NULL, 0, NULL, 0, NULL, NULL, NULL, NULL},
- {"GAL20V8A", 0, NULL, 0, NULL, 0, NULL, NULL, NULL, NULL},
+ /*{"GAL20V8A", 0, NULL, 0, NULL, 0, NULL, NULL, NULL, NULL},
{"GAL22V10", 0, NULL, 0, NULL, 0, NULL, NULL, NULL, NULL},*/
+ {"PAL22V10", 5828,
+ palce22v10_pal22v10pinfuserows, ARRAY_LENGTH(palce22v10_pal22v10pinfuserows),
+ palce22v10_pal22v10pinfusecolumns, ARRAY_LENGTH(palce22v10_pal22v10pinfusecolumns),
+ print_palce22v10_pal22v10_product_terms,
+ config_palce22v10_pal22v10_pins,
+ nullptr,
+ nullptr},
+ {"PALCE22V10", 5828,
+ palce22v10_pal22v10pinfuserows, ARRAY_LENGTH(palce22v10_pal22v10pinfuserows),
+ palce22v10_pal22v10pinfusecolumns, ARRAY_LENGTH(palce22v10_pal22v10pinfusecolumns),
+ print_palce22v10_pal22v10_product_terms,
+ config_palce22v10_pal22v10_pins,
+ nullptr,
+ nullptr},
{"82S153", 1842,
_82s153_pls153pinfuserows, ARRAY_LENGTH(_82s153_pls153pinfuserows),
_82s153_pls153pinfusecolumns, ARRAY_LENGTH(_82s153_pls153pinfusecolumns),
@@ -3710,6 +3762,42 @@ static void print_pal20x10_product_terms(const pal_data* pal, const jed_data* je
/*-------------------------------------------------
+ print_palce22v10_pal22v10_product_terms - prints the product
+ terms for a PALCE22V10 and PAL22V10
+-------------------------------------------------*/
+
+static void print_palce22v10_pal22v10_product_terms(const pal_data* pal, const jed_data* jed)
+{
+ char buffer[200];
+
+ print_product_terms(pal, jed);
+
+ /* Synchronous Preset */
+
+ generate_product_terms(pal, jed, 5764, buffer);
+
+ if (strlen(buffer))
+ {
+ printf("Synchronous Preset:\n\n");
+ printf("%s\n", buffer);
+ printf("\n");
+ }
+
+ /* Asynchronous Reset */
+
+ generate_product_terms(pal, jed, 0, buffer);
+
+ if (strlen(buffer))
+ {
+ printf("Asynchronous Reset:\n\n");
+ printf("%s\n", buffer);
+ printf("\n");
+ }
+}
+
+
+
+/*-------------------------------------------------
print_82s153_pls153_product_terms - prints the product
terms for a 82S153/PLS153
-------------------------------------------------*/
@@ -5930,6 +6018,87 @@ static void config_pal20x10_pins(const pal_data* pal, const jed_data* jed)
/*-------------------------------------------------
+ config_palce22v10_pal22v10_pins - configures the pins for
+ a PALCE22V10
+-------------------------------------------------*/
+
+static void config_palce22v10_pal22v10_pins(const pal_data* pal, const jed_data* jed)
+{
+ typedef struct _output_logic_macrocell output_logic_macrocell;
+ struct _output_logic_macrocell
+ {
+ uint16_t pin;
+ uint16_t s0_fuse; /* output polarity (0 - low, 1 - high) */
+ uint16_t s1_fuse; /* registers allowed (0 - registered, 1 - not registered) */
+ };
+
+ static output_logic_macrocell macrocells[] = {
+ {14, 5826, 5827},
+ {15, 5824, 5825},
+ {16, 5822, 5823},
+ {17, 5820, 5821},
+ {18, 5818, 5819},
+ {19, 5816, 5817},
+ {20, 5814, 5815},
+ {21, 5812, 5813},
+ {22, 5810, 5811},
+ {23, 5808, 5809}};
+ static uint16_t input_pins[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23};
+ pin_output_config output_pins[ARRAY_LENGTH(macrocells)];
+ uint16_t index, output_pin_count;
+
+ output_pin_count = 0;
+
+ for (index = 0; index < ARRAY_LENGTH(output_pins); ++index)
+ {
+ if (jed_get_fuse(jed, macrocells[index].s1_fuse))
+ {
+ /* Combinatorial output or dedicated input */
+
+ if (does_output_enable_fuse_row_allow_output(pal, jed, pal->pinfuserows[index].fuserowoutputenable))
+ {
+ output_pins[output_pin_count].pin = macrocells[index].pin;
+ output_pins[output_pin_count].flags = OUTPUT_COMBINATORIAL | OUTPUT_FEEDBACK_OUTPUT;
+
+ if (!jed_get_fuse(jed, macrocells[index].s0_fuse))
+ {
+ output_pins[output_pin_count].flags |= OUTPUT_ACTIVELOW;
+ }
+ else
+ {
+ output_pins[output_pin_count].flags |= OUTPUT_ACTIVEHIGH;
+ }
+
+ ++output_pin_count;
+ }
+ }
+ else
+ {
+ /* Registered output */
+
+ output_pins[output_pin_count].pin = macrocells[index].pin;
+ output_pins[output_pin_count].flags = OUTPUT_REGISTERED | OUTPUT_FEEDBACK_REGISTERED;
+
+ if (!jed_get_fuse(jed, macrocells[index].s0_fuse))
+ {
+ output_pins[output_pin_count].flags |= OUTPUT_ACTIVELOW;
+ }
+ else
+ {
+ output_pins[output_pin_count].flags |= OUTPUT_ACTIVEHIGH;
+ }
+
+ ++output_pin_count;
+ }
+ }
+
+ set_input_pins(input_pins, ARRAY_LENGTH(input_pins));
+ set_output_pins(output_pins, output_pin_count);
+}
+
+
+
+/*-------------------------------------------------
config_82s153_pls153_pins - configures the pins for
a 82S153/PLS153
-------------------------------------------------*/
@@ -7323,6 +7492,8 @@ static int print_usage()
" jedutil -view <source.jed> <device> -- dump JED logic equations\n"
" jedutil -view <source.bin> <device> -- dump binary logic equations\n"
" jedutil -viewlist -- view list of supported devices\n"
+ " jedutil -listcompatible <source.jed> -- list compatible devices\n"
+ " jedutil -listcompatible <source.bin> -- list compatible devices\n"
);
return 0;
@@ -7577,6 +7748,77 @@ static int command_viewlist(int argc, char *argv[])
}
+
+/*-------------------------------------------------
+ command_listcompatible - views the list of
+ compatible devices
+-------------------------------------------------*/
+
+static int command_listcompatible(int argc, char *argv[])
+{
+ int result = 0;
+ const char *srcfile;
+ int is_jed;
+ jed_data jed;
+ int err;
+ int index;
+
+ if (argc != 1)
+ {
+ return print_usage();
+ }
+
+ /* extract arguments */
+ srcfile = argv[0];
+
+ /* does the source end in '.jed'? */
+ is_jed = is_jed_file(srcfile);
+
+ /* read the source file */
+ err = read_source_file(srcfile);
+ if (err != 0)
+ {
+ result = 1;
+ goto end;
+ }
+
+ /* if the source is JED, convert to binary */
+ if (is_jed)
+ {
+ /* read the JEDEC data */
+ err = jed_parse(srcbuf, srcbuflen, &jed);
+ switch (err)
+ {
+ case JEDERR_INVALID_DATA: fprintf(stderr, "Fatal error: Invalid .JED file\n"); result = 1; goto end;
+ case JEDERR_BAD_XMIT_SUM: fprintf(stderr, "Fatal error: Bad transmission checksum\n"); result = 1; goto end;
+ case JEDERR_BAD_FUSE_SUM: fprintf(stderr, "Fatal error: Bad fusemap checksum\n"); result = 1; goto end;
+ }
+ }
+ else
+ {
+ /* read the binary data */
+ err = jedbin_parse(srcbuf, srcbuflen, &jed);
+ switch (err)
+ {
+ case JEDERR_INVALID_DATA: fprintf(stderr, "Fatal error: Invalid binary JEDEC file\n"); result = 1; goto end;
+ }
+ }
+
+ for (index = 0; index < ARRAY_LENGTH(paldata); ++index)
+ {
+ if (paldata[index].numfuses == jed.numfuses)
+ {
+ printf("%s\n", paldata[index].name);
+ }
+ }
+
+end:
+ free(srcbuf);
+ return result;
+}
+
+
+
/*-------------------------------------------------
main - primary entry point
-------------------------------------------------*/
@@ -7584,9 +7826,10 @@ static int command_viewlist(int argc, char *argv[])
int main(int argc, char *argv[])
{
command_entry command_entries[] = {
- {"-convert", &command_convert},
- {"-view", &command_view},
- {"-viewlist", &command_viewlist}};
+ {"-convert", &command_convert},
+ {"-view", &command_view},
+ {"-viewlist", &command_viewlist},
+ {"-listcompatible", &command_listcompatible}};
int index;
if (argc < 2)