Changes for MAME 0.122.

This commit is contained in:
Aaron Giles 2007-12-18 08:09:03 +00:00
parent 8a9ea25d74
commit 75265e5e23
78 changed files with 1619 additions and 1107 deletions

2
.gitattributes vendored
View File

@ -762,6 +762,8 @@ src/emu/sound/k053260.c svneol=native#text/plain
src/emu/sound/k053260.h svneol=native#text/plain src/emu/sound/k053260.h svneol=native#text/plain
src/emu/sound/k054539.c svneol=native#text/plain src/emu/sound/k054539.c svneol=native#text/plain
src/emu/sound/k054539.h svneol=native#text/plain src/emu/sound/k054539.h svneol=native#text/plain
src/emu/sound/m58817.c svneol=native#text/plain
src/emu/sound/m58817.h svneol=native#text/plain
src/emu/sound/msm5205.c svneol=native#text/plain src/emu/sound/msm5205.c svneol=native#text/plain
src/emu/sound/msm5205.h svneol=native#text/plain src/emu/sound/msm5205.h svneol=native#text/plain
src/emu/sound/msm5232.c svneol=native#text/plain src/emu/sound/msm5232.c svneol=native#text/plain

View File

@ -6,7 +6,7 @@
/* ======================================================================== */ /* ======================================================================== */
/* /*
* MUSASHI * MUSASHI
* Version 3.31 * Version 3.32
* *
* A portable Motorola M680x0 processor emulation engine. * A portable Motorola M680x0 processor emulation engine.
* Copyright 1998-2007 Karl Stenerud. All rights reserved. * Copyright 1998-2007 Karl Stenerud. All rights reserved.
@ -15,7 +15,7 @@
* copyright notice remains unaltered in the source code and any binary files * copyright notice remains unaltered in the source code and any binary files
* containing this code in compiled form. * containing this code in compiled form.
* *
* All other lisencing terms must be negotiated with the author * All other licensing terms must be negotiated with the author
* (Karl Stenerud). * (Karl Stenerud).
* *
* The latest version of this code can be obtained at: * The latest version of this code can be obtained at:

View File

@ -8,7 +8,7 @@ must fix:
/* ======================================================================== */ /* ======================================================================== */
/* /*
* MUSASHI * MUSASHI
* Version 3.31 * Version 3.32
* *
* A portable Motorola M680x0 processor emulation engine. * A portable Motorola M680x0 processor emulation engine.
* Copyright 1998-2007 Karl Stenerud. All rights reserved. * Copyright 1998-2007 Karl Stenerud. All rights reserved.
@ -17,7 +17,7 @@ must fix:
* copyright notice remains unaltered in the source code and any binary files * copyright notice remains unaltered in the source code and any binary files
* containing this code in compiled form. * containing this code in compiled form.
* *
* All other lisencing terms must be negotiated with the author * All other licensing terms must be negotiated with the author
* (Karl Stenerud). * (Karl Stenerud).
* *
* The latest version of this code can be obtained at: * The latest version of this code can be obtained at:
@ -141,7 +141,7 @@ typedef struct
/* Opcode handler table */ /* Opcode handler table */
static opcode_handler_struct m68k_opcode_handler_table[] = static const opcode_handler_struct m68k_opcode_handler_table[] =
{ {
/* function mask match 000 010 020 040 */ /* function mask match 000 010 020 040 */
@ -157,7 +157,7 @@ M68KMAKE_TABLE_FOOTER
/* Build the opcode handler jump table */ /* Build the opcode handler jump table */
void m68ki_build_opcode_table(void) void m68ki_build_opcode_table(void)
{ {
opcode_handler_struct *ostruct; const opcode_handler_struct *ostruct;
int instr; int instr;
int i; int i;
int j; int j;

View File

@ -3,7 +3,7 @@
/* ======================================================================== */ /* ======================================================================== */
/* /*
* MUSASHI * MUSASHI
* Version 3.31 * Version 3.32
* *
* A portable Motorola M680x0 processor emulation engine. * A portable Motorola M680x0 processor emulation engine.
* Copyright 1998-2007 Karl Stenerud. All rights reserved. * Copyright 1998-2007 Karl Stenerud. All rights reserved.
@ -12,7 +12,7 @@
* copyright notice remains unaltered in the source code and any binary files * copyright notice remains unaltered in the source code and any binary files
* containing this code in compiled form. * containing this code in compiled form.
* *
* All other lisencing terms must be negotiated with the author * All other licensing terms must be negotiated with the author
* (Karl Stenerud). * (Karl Stenerud).
* *
* The latest version of this code can be obtained at: * The latest version of this code can be obtained at:

View File

@ -3,9 +3,9 @@
/* ======================================================================== */ /* ======================================================================== */
#if 0 #if 0
static const char* copyright_notice = static const char copyright_notice[] =
"MUSASHI\n" "MUSASHI\n"
"Version 3.31 (2007-07-09)\n" "Version 3.32 (2007-12-15)\n"
"A portable Motorola M680x0 processor emulation engine.\n" "A portable Motorola M680x0 processor emulation engine.\n"
"Copyright 1998-2007 Karl Stenerud. All rights reserved.\n" "Copyright 1998-2007 Karl Stenerud. All rights reserved.\n"
"\n" "\n"
@ -13,7 +13,7 @@ static const char* copyright_notice =
"copyright notice remains unaltered in the source code and any binary files\n" "copyright notice remains unaltered in the source code and any binary files\n"
"containing this code in compiled form.\n" "containing this code in compiled form.\n"
"\n" "\n"
"All other lisencing terms must be negotiated with the author\n" "All other licensing terms must be negotiated with the author\n"
"(Karl Stenerud).\n" "(Karl Stenerud).\n"
"\n" "\n"
"The latest version of this code can be obtained at:\n" "The latest version of this code can be obtained at:\n"
@ -49,7 +49,7 @@ uint m68ki_tracing = 0;
uint m68ki_address_space; uint m68ki_address_space;
#ifdef M68K_LOG_ENABLE #ifdef M68K_LOG_ENABLE
const char* m68ki_cpu_names[] = const char *const m68ki_cpu_names[] =
{ {
"Invalid CPU", "Invalid CPU",
"M68000", "M68000",
@ -83,7 +83,7 @@ uint m68ki_aerr_write_mode;
uint m68ki_aerr_fc; uint m68ki_aerr_fc;
/* Used by shift & rotate instructions */ /* Used by shift & rotate instructions */
uint8 m68ki_shift_8_table[65] = const uint8 m68ki_shift_8_table[65] =
{ {
0x00, 0x80, 0xc0, 0xe0, 0xf0, 0xf8, 0xfc, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x00, 0x80, 0xc0, 0xe0, 0xf0, 0xf8, 0xfc, 0xfe, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
@ -92,7 +92,7 @@ uint8 m68ki_shift_8_table[65] =
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff 0xff, 0xff, 0xff, 0xff, 0xff
}; };
uint16 m68ki_shift_16_table[65] = const uint16 m68ki_shift_16_table[65] =
{ {
0x0000, 0x8000, 0xc000, 0xe000, 0xf000, 0xf800, 0xfc00, 0xfe00, 0xff00, 0x0000, 0x8000, 0xc000, 0xe000, 0xf000, 0xf800, 0xfc00, 0xfe00, 0xff00,
0xff80, 0xffc0, 0xffe0, 0xfff0, 0xfff8, 0xfffc, 0xfffe, 0xffff, 0xffff, 0xff80, 0xffc0, 0xffe0, 0xfff0, 0xfff8, 0xfffc, 0xfffe, 0xffff, 0xffff,
@ -103,7 +103,7 @@ uint16 m68ki_shift_16_table[65] =
0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
0xffff, 0xffff 0xffff, 0xffff
}; };
uint m68ki_shift_32_table[65] = const uint m68ki_shift_32_table[65] =
{ {
0x00000000, 0x80000000, 0xc0000000, 0xe0000000, 0xf0000000, 0xf8000000, 0x00000000, 0x80000000, 0xc0000000, 0xe0000000, 0xf0000000, 0xf8000000,
0xfc000000, 0xfe000000, 0xff000000, 0xff800000, 0xffc00000, 0xffe00000, 0xfc000000, 0xfe000000, 0xff000000, 0xff800000, 0xffc00000, 0xffe00000,
@ -122,7 +122,7 @@ uint m68ki_shift_32_table[65] =
/* Number of clock cycles to use for exception processing. /* Number of clock cycles to use for exception processing.
* I used 4 for any vectors that are undocumented for processing times. * I used 4 for any vectors that are undocumented for processing times.
*/ */
uint8 m68ki_exception_cycle_table[4][256] = const uint8 m68ki_exception_cycle_table[4][256] =
{ {
{ /* 000 */ { /* 000 */
4, /* 0: Reset - Initial Stack Pointer */ 4, /* 0: Reset - Initial Stack Pointer */
@ -418,7 +418,7 @@ uint8 m68ki_exception_cycle_table[4][256] =
} }
}; };
uint8 m68ki_ea_idx_cycle_table[64] = const uint8 m68ki_ea_idx_cycle_table[64] =
{ {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, /* ..01.000 no memory indirect, base NULL */ 0, /* ..01.000 no memory indirect, base NULL */

View File

@ -4,7 +4,7 @@
/* ======================================================================== */ /* ======================================================================== */
/* /*
* MUSASHI * MUSASHI
* Version 3.31 * Version 3.32
* *
* A portable Motorola M680x0 processor emulation engine. * A portable Motorola M680x0 processor emulation engine.
* Copyright 1998-2007 Karl Stenerud. All rights reserved. * Copyright 1998-2007 Karl Stenerud. All rights reserved.
@ -13,7 +13,7 @@
* copyright notice remains unaltered in the source code and any binary files * copyright notice remains unaltered in the source code and any binary files
* containing this code in compiled form. * containing this code in compiled form.
* *
* All other lisencing terms must be negotiated with the author * All other licensing terms must be negotiated with the author
* (Karl Stenerud). * (Karl Stenerud).
* *
* The latest version of this code can be obtained at: * The latest version of this code can be obtained at:
@ -591,7 +591,7 @@
#if M68K_LOG_ENABLE #if M68K_LOG_ENABLE
#include <stdio.h> #include <stdio.h>
extern FILE* M68K_LOG_FILEHANDLE extern FILE* M68K_LOG_FILEHANDLE
extern char* m68ki_cpu_names[]; extern const char *const m68ki_cpu_names[];
#define M68K_DO_LOG(A) if(M68K_LOG_FILEHANDLE) fprintf A #define M68K_DO_LOG(A) if(M68K_LOG_FILEHANDLE) fprintf A
#if M68K_LOG_1010_1111 #if M68K_LOG_1010_1111
@ -893,8 +893,8 @@ typedef struct
uint cyc_movem_l; uint cyc_movem_l;
uint cyc_shift; uint cyc_shift;
uint cyc_reset; uint cyc_reset;
uint8* cyc_instruction; const uint8* cyc_instruction;
uint8* cyc_exception; const uint8* cyc_exception;
/* Callbacks to host */ /* Callbacks to host */
int (*int_ack_callback)(int int_line); /* Interrupt Acknowledge */ int (*int_ack_callback)(int int_line); /* Interrupt Acknowledge */
@ -913,12 +913,12 @@ typedef struct
extern m68ki_cpu_core m68ki_cpu; extern m68ki_cpu_core m68ki_cpu;
extern sint m68ki_remaining_cycles; extern sint m68ki_remaining_cycles;
extern uint m68ki_tracing; extern uint m68ki_tracing;
extern uint8 m68ki_shift_8_table[]; extern const uint8 m68ki_shift_8_table[];
extern uint16 m68ki_shift_16_table[]; extern const uint16 m68ki_shift_16_table[];
extern uint m68ki_shift_32_table[]; extern const uint m68ki_shift_32_table[];
extern uint8 m68ki_exception_cycle_table[][256]; extern const uint8 m68ki_exception_cycle_table[][256];
extern uint m68ki_address_space; extern uint m68ki_address_space;
extern uint8 m68ki_ea_idx_cycle_table[]; extern const uint8 m68ki_ea_idx_cycle_table[];
extern uint m68ki_aerr_address; extern uint m68ki_aerr_address;
extern uint m68ki_aerr_write_mode; extern uint m68ki_aerr_write_mode;

View File

@ -3,7 +3,7 @@
/* ======================================================================== */ /* ======================================================================== */
/* /*
* MUSASHI * MUSASHI
* Version 3.31 * Version 3.32
* *
* A portable Motorola M680x0 processor emulation engine. * A portable Motorola M680x0 processor emulation engine.
* Copyright 1998-2007 Karl Stenerud. All rights reserved. * Copyright 1998-2007 Karl Stenerud. All rights reserved.
@ -12,7 +12,7 @@
* copyright notice remains unaltered in the source code and any binary files * copyright notice remains unaltered in the source code and any binary files
* containing this code in compiled form. * containing this code in compiled form.
* *
* All other lisencing terms must be negotiated with the author * All other licensing terms must be negotiated with the author
* (Karl Stenerud). * (Karl Stenerud).
* *
* The latest version of this code can be obtained at: * The latest version of this code can be obtained at:
@ -208,18 +208,18 @@ static const unsigned char* g_rawop;
static uint g_rawbasepc; static uint g_rawbasepc;
/* used by ops like asr, ror, addq, etc */ /* used by ops like asr, ror, addq, etc */
static uint g_3bit_qdata_table[8] = {8, 1, 2, 3, 4, 5, 6, 7}; static const uint g_3bit_qdata_table[8] = {8, 1, 2, 3, 4, 5, 6, 7};
static uint g_5bit_data_table[32] = static const uint g_5bit_data_table[32] =
{ {
32, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 32, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31
}; };
static const char* g_cc[16] = static const char *const g_cc[16] =
{"t", "f", "hi", "ls", "cc", "cs", "ne", "eq", "vc", "vs", "pl", "mi", "ge", "lt", "gt", "le"}; {"t", "f", "hi", "ls", "cc", "cs", "ne", "eq", "vc", "vs", "pl", "mi", "ge", "lt", "gt", "le"};
static const char* g_cpcc[64] = static const char *const g_cpcc[64] =
{/* 000 001 010 011 100 101 110 111 */ {/* 000 001 010 011 100 101 110 111 */
"f", "eq", "ogt", "oge", "olt", "ole", "ogl", "or", /* 000 */ "f", "eq", "ogt", "oge", "olt", "ole", "ogl", "or", /* 000 */
"un", "ueq", "ugt", "uge", "ult", "ule", "ne", "t", /* 001 */ "un", "ueq", "ugt", "uge", "ult", "ule", "ne", "t", /* 001 */

View File

@ -3,7 +3,7 @@
/* ======================================================================== */ /* ======================================================================== */
/* /*
* MUSASHI * MUSASHI
* Version 3.31 * Version 3.32
* *
* A portable Motorola M680x0 processor emulation engine. * A portable Motorola M680x0 processor emulation engine.
* Copyright 1998-2007 Karl Stenerud. All rights reserved. * Copyright 1998-2007 Karl Stenerud. All rights reserved.
@ -12,7 +12,7 @@
* copyright notice remains unaltered in the source code and any binary files * copyright notice remains unaltered in the source code and any binary files
* containing this code in compiled form. * containing this code in compiled form.
* *
* All other lisencing terms must be negotiated with the author * All other licensing terms must be negotiated with the author
* (Karl Stenerud). * (Karl Stenerud).
* *
* The latest version of this code can be obtained at: * The latest version of this code can be obtained at:
@ -52,7 +52,7 @@
*/ */
static const char* g_version = "3.31"; static const char g_version[] = "3.32";
/* ======================================================================== */ /* ======================================================================== */
/* =============================== INCLUDES =============================== */ /* =============================== INCLUDES =============================== */
@ -227,7 +227,6 @@ int extract_opcode_info(char* src, char* name, int* size, char* spec_proc, char*
void add_replace_string(replace_struct* replace, const char* search_str, const char* replace_str); void add_replace_string(replace_struct* replace, const char* search_str, const char* replace_str);
void write_body(FILE* filep, body_struct* body, replace_struct* replace); void write_body(FILE* filep, body_struct* body, replace_struct* replace);
void get_base_name(char* base_name, opcode_struct* op); void get_base_name(char* base_name, opcode_struct* op);
void write_prototype(FILE* filep, char* base_name);
void write_function_name(FILE* filep, char* base_name); void write_function_name(FILE* filep, char* base_name);
void add_opcode_output_table_entry(opcode_struct* op, char* name); void add_opcode_output_table_entry(opcode_struct* op, char* name);
static int DECL_SPEC compare_nof_true_bits(const void* aptr, const void* bptr); static int DECL_SPEC compare_nof_true_bits(const void* aptr, const void* bptr);
@ -265,7 +264,7 @@ opcode_struct g_opcode_input_table[MAX_OPCODE_INPUT_TABLE_LENGTH];
opcode_struct g_opcode_output_table[MAX_OPCODE_OUTPUT_TABLE_LENGTH]; opcode_struct g_opcode_output_table[MAX_OPCODE_OUTPUT_TABLE_LENGTH];
int g_opcode_output_table_length = 0; int g_opcode_output_table_length = 0;
ea_info_struct g_ea_info_table[13] = const ea_info_struct g_ea_info_table[13] =
{/* fname ea mask match */ {/* fname ea mask match */
{"", "", 0x00, 0x00}, /* EA_MODE_NONE */ {"", "", 0x00, 0x00}, /* EA_MODE_NONE */
{"ai", "AY_AI", 0x38, 0x10}, /* EA_MODE_AI */ {"ai", "AY_AI", 0x38, 0x10}, /* EA_MODE_AI */
@ -283,7 +282,7 @@ ea_info_struct g_ea_info_table[13] =
}; };
const char* g_cc_table[16][2] = const char *const g_cc_table[16][2] =
{ {
{ "t", "T"}, /* 0000 */ { "t", "T"}, /* 0000 */
{ "f", "F"}, /* 0001 */ { "f", "F"}, /* 0001 */
@ -304,7 +303,7 @@ const char* g_cc_table[16][2] =
}; };
/* size to index translator (0 -> 0, 8 and 16 -> 1, 32 -> 2) */ /* size to index translator (0 -> 0, 8 and 16 -> 1, 32 -> 2) */
int g_size_select_table[33] = const int g_size_select_table[33] =
{ {
0, /* unsized */ 0, /* unsized */
0, 0, 0, 0, 0, 0, 0, 1, /* 8 */ 0, 0, 0, 0, 0, 0, 0, 1, /* 8 */
@ -314,7 +313,7 @@ int g_size_select_table[33] =
/* Extra cycles required for certain EA modes */ /* Extra cycles required for certain EA modes */
/* TODO: correct timings for 040 */ /* TODO: correct timings for 040 */
int g_ea_cycle_table[13][NUM_CPUS][3] = const int g_ea_cycle_table[13][NUM_CPUS][3] =
{/* 000 010 020 040 */ {/* 000 010 020 040 */
{{ 0, 0, 0}, { 0, 0, 0}, { 0, 0, 0}, { 0, 0, 0}}, /* EA_MODE_NONE */ {{ 0, 0, 0}, { 0, 0, 0}, { 0, 0, 0}, { 0, 0, 0}}, /* EA_MODE_NONE */
{{ 0, 4, 8}, { 0, 4, 8}, { 0, 4, 4}, { 0, 4, 4}}, /* EA_MODE_AI */ {{ 0, 4, 8}, { 0, 4, 8}, { 0, 4, 4}, { 0, 4, 4}}, /* EA_MODE_AI */
@ -332,7 +331,7 @@ int g_ea_cycle_table[13][NUM_CPUS][3] =
}; };
/* Extra cycles for JMP instruction (000, 010) */ /* Extra cycles for JMP instruction (000, 010) */
int g_jmp_cycle_table[13] = const int g_jmp_cycle_table[13] =
{ {
0, /* EA_MODE_NONE */ 0, /* EA_MODE_NONE */
4, /* EA_MODE_AI */ 4, /* EA_MODE_AI */
@ -350,7 +349,7 @@ int g_jmp_cycle_table[13] =
}; };
/* Extra cycles for JSR instruction (000, 010) */ /* Extra cycles for JSR instruction (000, 010) */
int g_jsr_cycle_table[13] = const int g_jsr_cycle_table[13] =
{ {
0, /* EA_MODE_NONE */ 0, /* EA_MODE_NONE */
4, /* EA_MODE_AI */ 4, /* EA_MODE_AI */
@ -368,7 +367,7 @@ int g_jsr_cycle_table[13] =
}; };
/* Extra cycles for LEA instruction (000, 010) */ /* Extra cycles for LEA instruction (000, 010) */
int g_lea_cycle_table[13] = const int g_lea_cycle_table[13] =
{ {
0, /* EA_MODE_NONE */ 0, /* EA_MODE_NONE */
4, /* EA_MODE_AI */ 4, /* EA_MODE_AI */
@ -386,7 +385,7 @@ int g_lea_cycle_table[13] =
}; };
/* Extra cycles for PEA instruction (000, 010) */ /* Extra cycles for PEA instruction (000, 010) */
int g_pea_cycle_table[13] = const int g_pea_cycle_table[13] =
{ {
0, /* EA_MODE_NONE */ 0, /* EA_MODE_NONE */
6, /* EA_MODE_AI */ 6, /* EA_MODE_AI */
@ -404,7 +403,7 @@ int g_pea_cycle_table[13] =
}; };
/* Extra cycles for MOVEM instruction (000, 010) */ /* Extra cycles for MOVEM instruction (000, 010) */
int g_movem_cycle_table[13] = const int g_movem_cycle_table[13] =
{ {
0, /* EA_MODE_NONE */ 0, /* EA_MODE_NONE */
0, /* EA_MODE_AI */ 0, /* EA_MODE_AI */
@ -422,7 +421,7 @@ int g_movem_cycle_table[13] =
}; };
/* Extra cycles for MOVES instruction (010) */ /* Extra cycles for MOVES instruction (010) */
int g_moves_cycle_table[13][3] = const int g_moves_cycle_table[13][3] =
{ {
{ 0, 0, 0}, /* EA_MODE_NONE */ { 0, 0, 0}, /* EA_MODE_NONE */
{ 0, 4, 6}, /* EA_MODE_AI */ { 0, 4, 6}, /* EA_MODE_AI */
@ -440,7 +439,7 @@ int g_moves_cycle_table[13][3] =
}; };
/* Extra cycles for CLR instruction (010) */ /* Extra cycles for CLR instruction (010) */
int g_clr_cycle_table[13][3] = const int g_clr_cycle_table[13][3] =
{ {
{ 0, 0, 0}, /* EA_MODE_NONE */ { 0, 0, 0}, /* EA_MODE_NONE */
{ 0, 4, 6}, /* EA_MODE_AI */ { 0, 4, 6}, /* EA_MODE_AI */
@ -778,16 +777,10 @@ void get_base_name(char* base_name, opcode_struct* op)
sprintf(base_name+strlen(base_name), "_%s", op->spec_ea); sprintf(base_name+strlen(base_name), "_%s", op->spec_ea);
} }
/* Write the prototype of an opcode handler function */
void write_prototype(FILE* filep, char* base_name)
{
fprintf(filep, "void %s(void);\n", base_name);
}
/* Write the name of an opcode handler function */ /* Write the name of an opcode handler function */
void write_function_name(FILE* filep, char* base_name) void write_function_name(FILE* filep, char* base_name)
{ {
fprintf(filep, "void %s(void)\n", base_name); fprintf(filep, "static void %s(void)\n", base_name);
} }
void add_opcode_output_table_entry(opcode_struct* op, char* name) void add_opcode_output_table_entry(opcode_struct* op, char* name)
@ -870,7 +863,6 @@ void generate_opcode_handler(FILE* filep, body_struct* body, replace_struct* rep
/* Set the opcode structure and write the tables, prototypes, etc */ /* Set the opcode structure and write the tables, prototypes, etc */
set_opcode_struct(opinfo, op, ea_mode); set_opcode_struct(opinfo, op, ea_mode);
get_base_name(str, op); get_base_name(str, op);
write_prototype(g_prototype_file, str);
add_opcode_output_table_entry(op, str); add_opcode_output_table_entry(op, str);
write_function_name(filep, str); write_function_name(filep, str);

View File

@ -580,7 +580,7 @@ void m68000_get_info(UINT32 state, cpuinfo *info)
/* --- the following bits of info are returned as NULL-terminated strings --- */ /* --- the following bits of info are returned as NULL-terminated strings --- */
case CPUINFO_STR_NAME: strcpy(info->s, "68000"); break; case CPUINFO_STR_NAME: strcpy(info->s, "68000"); break;
case CPUINFO_STR_CORE_FAMILY: strcpy(info->s, "Motorola 68K"); break; case CPUINFO_STR_CORE_FAMILY: strcpy(info->s, "Motorola 68K"); break;
case CPUINFO_STR_CORE_VERSION: strcpy(info->s, "3.31"); break; case CPUINFO_STR_CORE_VERSION: strcpy(info->s, "3.32"); break;
case CPUINFO_STR_CORE_FILE: strcpy(info->s, __FILE__); break; case CPUINFO_STR_CORE_FILE: strcpy(info->s, __FILE__); break;
case CPUINFO_STR_CORE_CREDITS: strcpy(info->s, "Copyright 1998-2007 Karl Stenerud. All rights reserved. (2.1 fixes HJB)"); break; case CPUINFO_STR_CORE_CREDITS: strcpy(info->s, "Copyright 1998-2007 Karl Stenerud. All rights reserved. (2.1 fixes HJB)"); break;
@ -759,7 +759,7 @@ void m68008_get_info(UINT32 state, cpuinfo *info)
/* --- the following bits of info are returned as NULL-terminated strings --- */ /* --- the following bits of info are returned as NULL-terminated strings --- */
case CPUINFO_STR_NAME: strcpy(info->s, "68008"); break; case CPUINFO_STR_NAME: strcpy(info->s, "68008"); break;
case CPUINFO_STR_CORE_FAMILY: strcpy(info->s, "Motorola 68K"); break; case CPUINFO_STR_CORE_FAMILY: strcpy(info->s, "Motorola 68K"); break;
case CPUINFO_STR_CORE_VERSION: strcpy(info->s, "3.31"); break; case CPUINFO_STR_CORE_VERSION: strcpy(info->s, "3.32"); break;
case CPUINFO_STR_CORE_FILE: strcpy(info->s, __FILE__); break; case CPUINFO_STR_CORE_FILE: strcpy(info->s, __FILE__); break;
case CPUINFO_STR_CORE_CREDITS: strcpy(info->s, "Copyright 1998-2007 Karl Stenerud. All rights reserved. (2.1 fixes HJB)"); break; case CPUINFO_STR_CORE_CREDITS: strcpy(info->s, "Copyright 1998-2007 Karl Stenerud. All rights reserved. (2.1 fixes HJB)"); break;
@ -999,7 +999,7 @@ void m68020_get_info(UINT32 state, cpuinfo *info)
/* --- the following bits of info are returned as NULL-terminated strings --- */ /* --- the following bits of info are returned as NULL-terminated strings --- */
case CPUINFO_STR_NAME: strcpy(info->s, "68020"); break; case CPUINFO_STR_NAME: strcpy(info->s, "68020"); break;
case CPUINFO_STR_CORE_FAMILY: strcpy(info->s, "Motorola 68K"); break; case CPUINFO_STR_CORE_FAMILY: strcpy(info->s, "Motorola 68K"); break;
case CPUINFO_STR_CORE_VERSION: strcpy(info->s, "3.31"); break; case CPUINFO_STR_CORE_VERSION: strcpy(info->s, "3.32"); break;
case CPUINFO_STR_CORE_FILE: strcpy(info->s, __FILE__); break; case CPUINFO_STR_CORE_FILE: strcpy(info->s, __FILE__); break;
case CPUINFO_STR_CORE_CREDITS: strcpy(info->s, "Copyright 1998-2007 Karl Stenerud. All rights reserved. (2.1 fixes HJB)"); break; case CPUINFO_STR_CORE_CREDITS: strcpy(info->s, "Copyright 1998-2007 Karl Stenerud. All rights reserved. (2.1 fixes HJB)"); break;
@ -1240,7 +1240,7 @@ void m68040_get_info(UINT32 state, cpuinfo *info)
/* --- the following bits of info are returned as NULL-terminated strings --- */ /* --- the following bits of info are returned as NULL-terminated strings --- */
case CPUINFO_STR_NAME: strcpy(info->s, "68040"); break; case CPUINFO_STR_NAME: strcpy(info->s, "68040"); break;
case CPUINFO_STR_CORE_FAMILY: strcpy(info->s, "Motorola 68K"); break; case CPUINFO_STR_CORE_FAMILY: strcpy(info->s, "Motorola 68K"); break;
case CPUINFO_STR_CORE_VERSION: strcpy(info->s, "3.31"); break; case CPUINFO_STR_CORE_VERSION: strcpy(info->s, "3.32"); break;
case CPUINFO_STR_CORE_FILE: strcpy(info->s, __FILE__); break; case CPUINFO_STR_CORE_FILE: strcpy(info->s, __FILE__); break;
case CPUINFO_STR_CORE_CREDITS: strcpy(info->s, "Copyright 1998-2007 Karl Stenerud. All rights reserved. (2.1 fixes HJB)"); break; case CPUINFO_STR_CORE_CREDITS: strcpy(info->s, "Copyright 1998-2007 Karl Stenerud. All rights reserved. (2.1 fixes HJB)"); break;

View File

@ -1165,7 +1165,7 @@ static void probe_printf(void)
static void exception_trap(void) static void exception_trap(void)
{ {
if ((mips3.core->cpr[0][COP0_Cause] & 0xff) != 0) if ((mips3.core->cpr[0][COP0_Cause] & 0xff) != 0)
printf("Exception: EPC=%08X Cause=%08X BadVAddr=%08X Jmp=%08X\n", mips3.core->cpr[0][COP0_EPC], mips3.core->cpr[0][COP0_Cause], mips3.core->cpr[0][COP0_BadVAddr], mips3.core->pc); printf("Exception: EPC=%08X Cause=%08X BadVAddr=%08X Jmp=%08X\n", (UINT32)mips3.core->cpr[0][COP0_EPC], (UINT32)mips3.core->cpr[0][COP0_Cause], (UINT32)mips3.core->cpr[0][COP0_BadVAddr], mips3.core->pc);
} }
@ -2710,7 +2710,7 @@ static int compile_special(drc_core *drc, compiler_state *compiler, const opcode
{ {
UINT32 op = *desc->opptr.l; UINT32 op = *desc->opptr.l;
UINT8 opswitch = op & 63; UINT8 opswitch = op & 63;
emit_link link1; emit_link link1 = { 0 };
switch (opswitch) switch (opswitch)
{ {

View File

@ -164,6 +164,7 @@ void sid6581_get_info(void *token, UINT32 state, sndinfo *info);
void sid8580_get_info(void *token, UINT32 state, sndinfo *info); void sid8580_get_info(void *token, UINT32 state, sndinfo *info);
void sp0256_get_info(void *token, UINT32 state, sndinfo *info); void sp0256_get_info(void *token, UINT32 state, sndinfo *info);
void s14001a_get_info(void *token, UINT32 state, sndinfo *info); void s14001a_get_info(void *token, UINT32 state, sndinfo *info);
void m58817_get_info(void *token, UINT32 state, sndinfo *info);
void filter_volume_get_info(void *token, UINT32 state, sndinfo *info); void filter_volume_get_info(void *token, UINT32 state, sndinfo *info);
void filter_rc_get_info(void *token, UINT32 state, sndinfo *info); void filter_rc_get_info(void *token, UINT32 state, sndinfo *info);
@ -444,6 +445,9 @@ static const struct
#if (HAS_SP0256) #if (HAS_SP0256)
{ SOUND_SP0256, sp0256_get_info }, { SOUND_SP0256, sp0256_get_info },
#endif #endif
#if (HAS_M58817)
{ SOUND_M58817, m58817_get_info },
#endif
{ SOUND_FILTER_VOLUME, filter_volume_get_info }, { SOUND_FILTER_VOLUME, filter_volume_get_info },
{ SOUND_FILTER_RC, filter_rc_get_info }, { SOUND_FILTER_RC, filter_rc_get_info },

View File

@ -125,6 +125,7 @@ enum _sound_type
SOUND_SID8580, SOUND_SID8580,
SOUND_SP0256, SOUND_SP0256,
SOUND_S14001A, SOUND_S14001A,
SOUND_M58817,
/* filters start here */ /* filters start here */
SOUND_FILTER_VOLUME, SOUND_FILTER_VOLUME,

365
src/emu/sound/m58817.c Normal file
View File

@ -0,0 +1,365 @@
/******************************************************************************
M58817 interface
Written for MAME by couriersud
- structure from TMS5110 interface
- this is a wrapper around the TMS5110 interface
- M58817 & TMS5110 seem to be similar, however it is very probable
that they use different "coding" tables for energy, pitch
- Speech is understandable, but off
- This driver supports to use a "sample" interface instead as well
******************************************************************************/
#include <math.h>
#include "sndintrf.h"
#include "streams.h"
#include "tms5110.h"
#include "m58817.h"
#include "sound/samples.h"
#define MAX_SAMPLE_CHUNK 10000
enum {
WAIT_CMD,
WAIT_WRITE,
WAIT_DONE1,
WAIT_DONE2
} m58817_states;
/* the state of the streamed output */
struct m58817_info
{
const struct M58817interface *intf;
sound_stream *stream;
void *chip;
UINT8 state;
UINT8 drq;
UINT8 nibbles[4];
UINT8 command_latch;
INT32 count;
INT32 address;
INT32 speech_rom_bitnum;
};
/* static function prototypes */
static void m58817_update(void *param, stream_sample_t **inputs, stream_sample_t **buffer, int length);
static int speech_rom_read_bit(void)
{
struct m58817_info *info = sndti_token(SOUND_M58817, 0);
const UINT8 *table = memory_region(info->intf->rom_region);
int r;
if (info->speech_rom_bitnum<0)
r = 0;
else
r = (table[info->speech_rom_bitnum >> 3] >> (0x07 - (info->speech_rom_bitnum & 0x07))) & 1;
//r = (table[speech_rom_bitnum >> 3] >> ((speech_rom_bitnum & 0x07))) & 1;
info->speech_rom_bitnum++;
//printf("Byte: 0x%02x\n", speech_rom_bitnum>>3);
return r;
}
/******************************************************************************
m58817_state_loop -- process commands
******************************************************************************/
static void m58817_state_loop(void *chip, int data)
{
struct m58817_info *info = chip;
int i;
switch (info->state)
{
case WAIT_CMD:
switch (data)
{
case 0x00: // reset ????
info->count=0;
/*To be extremely accurate there should be a delays between each of
the function calls below. In real they happen with the frequency of 160 kHz.
*/
if (info->intf->rom_region != -1)
{
tms5110_CTL_set(info->chip, TMS5110_CMD_RESET);
tms5110_PDC_set(info->chip, 0);
tms5110_PDC_set(info->chip, 1);
tms5110_PDC_set(info->chip, 0);
tms5110_PDC_set(info->chip, 0);
tms5110_PDC_set(info->chip, 1);
tms5110_PDC_set(info->chip, 0);
tms5110_PDC_set(info->chip, 0);
tms5110_PDC_set(info->chip, 1);
tms5110_PDC_set(info->chip, 0);
info->speech_rom_bitnum = 0x0;
}
break;
case 0x02: // latch next nibbel
info->state=WAIT_WRITE;
break;
case 0x08: // play ????
info->state=WAIT_DONE1;
break;
default:
logerror("m58817: unknown cmd : 0x%02x\n", data);
}
break;
case WAIT_WRITE:
info->nibbles[info->count++] = data & 0x0f;
info->state=WAIT_CMD;
break;
case WAIT_DONE1:
if (data != 0x0A)
logerror("m58817: expected 0x0A got 0x%02x\n", data);
info->address = 0;
for (i=0;i<info->count;i++)
{
info->address |= (info->nibbles[i] << (i*4));
}
logerror("m58817: address: 0x%04x\n", info->address);
if (info->intf->rom_region != -1)
{
info->speech_rom_bitnum = info->address * 8 - 1;
tms5110_CTL_set(info->chip, TMS5110_CMD_SPEAK);
tms5110_PDC_set(info->chip, 0);
tms5110_PDC_set(info->chip, 1);
tms5110_PDC_set(info->chip, 0);
}
else
{
for (i=0;i<M58817_MAX_SAMPLES;i++)
if (info->intf->sample_addr[i] == info->address)
{
sample_start(0,i,0);
break;
}
}
info->state=WAIT_CMD;
break;
}
}
/******************************************************************************
m58817_start -- allocate buffers and reset the 5110
******************************************************************************/
static void *m58817_start(int sndindex, int clock, const void *config)
{
static const struct M58817interface dummy = { 0 };
struct m58817_info *info;
info = auto_malloc(sizeof(*info));
memset(info, 0, sizeof(*info));
info->intf = config ? config : &dummy;
if (info->intf->rom_region != -1)
{
info->chip = tms5110_create(sndindex);
if (!info->chip)
return NULL;
}
sndintrf_register_token(info);
/* initialize a stream */
if (info->intf->rom_region != -1)
{
info->stream = stream_create(0, 1, clock / 80, info, m58817_update);
tms5110_set_M0_callback(info->chip, speech_rom_read_bit );
/* reset the 58817 */
tms5110_reset_chip(info->chip);
}
state_save_register_item("m58817", sndindex, info->state);
state_save_register_item("m58817", sndindex, info->drq);
state_save_register_item_array("m58817", sndindex, info->nibbles);
state_save_register_item("m58817", sndindex, info->count);
state_save_register_item("m58817", sndindex, info->address);
state_save_register_item("m58817", sndindex, info->speech_rom_bitnum);
/* request a sound channel */
return info;
}
/******************************************************************************
m58817_stop -- free buffers
******************************************************************************/
static void m58817_stop(void *chip)
{
struct m58817_info *info = chip;
if (info->intf->rom_region != -1)
tms5110_destroy(info->chip);
}
static void m58817_reset(void *chip)
{
struct m58817_info *info = chip;
if (info->intf->rom_region != -1)
tms5110_reset_chip(info->chip);
info->state = WAIT_CMD;
info->drq = 0;
info->command_latch = 0;
info->count=0;
}
/******************************************************************************
m58817_CTL_w -- write Control Command to the sound chip
commands like Speech, Reset, etc., are loaded into the chip via the CTL pins
******************************************************************************/
WRITE8_HANDLER( m58817_CTL_w )
{
struct m58817_info *info = sndti_token(SOUND_M58817, 0);
/* bring up to date first */
//stream_update(info->stream);
info->command_latch = data & 0x0f;
}
/******************************************************************************
m58817_DRQ_w -- write to DRQ pin on the sound chip
******************************************************************************/
WRITE8_HANDLER( m58817_DRQ_w )
{
struct m58817_info *info = sndti_token(SOUND_M58817, 0);
/* bring up to date first */
if (info->intf->rom_region != -1)
stream_update(info->stream);
if (!data & info->drq)
m58817_state_loop(info, info->command_latch);
info->drq = data;
}
/******************************************************************************
m58817_status_r -- read status from the sound chip
******************************************************************************/
READ8_HANDLER( m58817_status_r )
{
struct m58817_info *info = sndti_token(SOUND_M58817, 0);
/* bring up to date first */
if (info->intf->rom_region != -1)
stream_update(info->stream);
if (info->intf->rom_region != -1)
return tms5110_status_read(info->chip);
else
return sample_playing(0);
}
/******************************************************************************
m58817_update -- update the sound chip so that it is in sync with CPU execution
******************************************************************************/
static void m58817_update(void *param, stream_sample_t **inputs, stream_sample_t **_buffer, int length)
{
struct m58817_info *info = param;
INT16 sample_data[MAX_SAMPLE_CHUNK];
stream_sample_t *buffer = _buffer[0];
/* loop while we still have samples to generate */
while (length)
{
int samples = (length > MAX_SAMPLE_CHUNK) ? MAX_SAMPLE_CHUNK : length;
int index;
/* generate the samples and copy to the target buffer */
tms5110_process(info->chip, sample_data, samples);
for (index = 0; index < samples; index++)
*buffer++ = sample_data[index];
/* account for the samples */
length -= samples;
}
}
/******************************************************************************
m58817_set_frequency -- adjusts the playback frequency
******************************************************************************/
void m58817_set_frequency(int frequency)
{
struct m58817_info *info = sndti_token(SOUND_M58817, 0);
stream_set_sample_rate(info->stream, frequency / 80);
}
/**************************************************************************
* Generic get_info
**************************************************************************/
static void m58817_set_info(void *token, UINT32 state, sndinfo *info)
{
switch (state)
{
/* no parameters to set */
}
}
void m58817_get_info(void *token, UINT32 state, sndinfo *info)
{
switch (state)
{
/* --- the following bits of info are returned as 64-bit signed integers --- */
/* --- the following bits of info are returned as pointers to data or functions --- */
case SNDINFO_PTR_SET_INFO: info->set_info = m58817_set_info; break;
case SNDINFO_PTR_START: info->start = m58817_start; break;
case SNDINFO_PTR_STOP: info->stop = m58817_stop; break;
case SNDINFO_PTR_RESET: info->reset = m58817_reset; break;
/* --- the following bits of info are returned as NULL-terminated strings --- */
case SNDINFO_STR_NAME: info->s = "M58817"; break;
case SNDINFO_STR_CORE_FAMILY: info->s = "Mitsubishi Speech"; break;
case SNDINFO_STR_CORE_VERSION: info->s = "1.0"; break;
case SNDINFO_STR_CORE_FILE: info->s = __FILE__; break;
case SNDINFO_STR_CORE_CREDITS: info->s = "Copyright (c) 2007, The MAME Team"; break;
}
}

24
src/emu/sound/m58817.h Normal file
View File

@ -0,0 +1,24 @@
#ifndef m58817_h
#define m58817_h
/* clock rate = 80 * output sample rate, */
/* usually 640000 for 8000 Hz sample rate or */
/* usually 800000 for 10000 Hz sample rate. */
#define M58817_MAX_SAMPLES 20
struct M58817interface
{
int rom_region; /* set to -1 to use samples */
int sample_addr[M58817_MAX_SAMPLES];
};
WRITE8_HANDLER( m58817_CTL_w );
WRITE8_HANDLER( m58817_DRQ_w );
READ8_HANDLER( m58817_status_r );
void m58817_set_frequency(int frequency);
#endif

View File

@ -2,14 +2,12 @@
Sega/Yamaha YMF292-F (SCSP = Saturn Custom Sound Processor) emulation Sega/Yamaha YMF292-F (SCSP = Saturn Custom Sound Processor) emulation
By ElSemi By ElSemi
MAME/M1 conversion and cleanup by R. Belmont MAME/M1 conversion and cleanup by R. Belmont
Additional code and bugfixes by kingshriek
This chip has 32 voices. Each voice can play a sample or be part of This chip has 32 voices. Each voice can play a sample or be part of
an FM construct. Unlike traditional Yamaha FM chips, the base waveform an FM construct. Unlike traditional Yamaha FM chips, the base waveform
for the FM still comes from the wavetable RAM. for the FM still comes from the wavetable RAM.
Unsupported:
- FM mode (VF3 uses it, Hanagumi might late in the title song...)
ChangeLog: ChangeLog:
* November 25, 2003 (ES) Fixed buggy timers and envelope overflows. * November 25, 2003 (ES) Fixed buggy timers and envelope overflows.
(RB) Improved sample rates other than 44100, multiple (RB) Improved sample rates other than 44100, multiple
@ -20,8 +18,10 @@
* January 8, 2005 (RB) Added ability to specify region offset for RAM. * January 8, 2005 (RB) Added ability to specify region offset for RAM.
* January 26, 2007 (ES) Added on-board DSP capability * January 26, 2007 (ES) Added on-board DSP capability
* September 24, 2007 (RB+ES) Removed fake reverb. Rewrote timers and IRQ handling. * September 24, 2007 (RB+ES) Removed fake reverb. Rewrote timers and IRQ handling.
Fixed case where voice frequency is updated while looping. Fixed case where voice frequency is updated while looping.
Enabled DSP again. Enabled DSP again.
* December 16, 2007 (kingshriek) Many EG bug fixes, implemented effects mixer,
implemented FM.
*/ */
#include <math.h> #include <math.h>
@ -76,7 +76,7 @@
#define SDIR(slot) ((slot->udata.data[0x6]>>0x0)&0x0100) #define SDIR(slot) ((slot->udata.data[0x6]>>0x0)&0x0100)
#define TL(slot) ((slot->udata.data[0x6]>>0x0)&0x00FF) #define TL(slot) ((slot->udata.data[0x6]>>0x0)&0x00FF)
#define MDL(slot) ((slot->udata.data[0x7]>>0xB)&0x0007) #define MDL(slot) ((slot->udata.data[0x7]>>0xC)&0x000F)
#define MDXSL(slot) ((slot->udata.data[0x7]>>0x6)&0x003F) #define MDXSL(slot) ((slot->udata.data[0x7]>>0x6)&0x003F)
#define MDYSL(slot) ((slot->udata.data[0x7]>>0x0)&0x003F) #define MDYSL(slot) ((slot->udata.data[0x7]>>0x0)&0x003F)
@ -138,6 +138,7 @@ struct _SLOT
UINT8 active; //this slot is currently playing UINT8 active; //this slot is currently playing
UINT8 *base; //samples base address UINT8 *base; //samples base address
UINT32 cur_addr; //current play address (24.8) UINT32 cur_addr; //current play address (24.8)
UINT32 nxt_addr; //next play address
UINT32 step; //pitch step (24.8) UINT32 step; //pitch step (24.8)
struct _EG EG; //Envelope struct _EG EG; //Envelope
struct _LFO PLFO; //Phase LFO struct _LFO PLFO; //Phase LFO
@ -375,7 +376,7 @@ static void Compute_EG(struct _SCSP *SCSP,struct _SLOT *slot)
int rate; int rate;
if(octave&8) octave=octave-16; if(octave&8) octave=octave-16;
if(KRS(slot)!=0xf) if(KRS(slot)!=0xf)
rate=2*(octave+KRS(slot))+((FNS(slot)>>9)&1); rate=octave+2*KRS(slot)+((FNS(slot)>>9)&1);
else else
rate=0; //rate=((FNS(slot)>>9)&1); rate=0; //rate=((FNS(slot)>>9)&1);
@ -443,7 +444,7 @@ static int EG_Update(struct _SLOT *slot)
static UINT32 SCSP_Step(struct _SLOT *slot) static UINT32 SCSP_Step(struct _SLOT *slot)
{ {
int octave=OCT(slot); int octave=OCT(slot);
int Fn; UINT64 Fn;
Fn=(FNS_Table[FNS(slot)]); //24.8 Fn=(FNS_Table[FNS(slot)]); //24.8
if(octave&8) if(octave&8)
@ -470,7 +471,8 @@ static void SCSP_StartSlot(struct _SCSP *SCSP, struct _SLOT *slot)
slot->active=1; slot->active=1;
start_offset = PCM8B(slot) ? SA(slot) : SA(slot) & 0x7FFFE; start_offset = PCM8B(slot) ? SA(slot) : SA(slot) & 0x7FFFE;
slot->base=SCSP->SCSPRAM + start_offset; slot->base=SCSP->SCSPRAM + start_offset;
slot->cur_addr=0; slot->cur_addr=0;
slot->nxt_addr=1<<SHIFT;
slot->step=SCSP_Step(slot); slot->step=SCSP_Step(slot);
Compute_EG(SCSP,slot); Compute_EG(SCSP,slot);
slot->EG.state=ATTACK; slot->EG.state=ATTACK;
@ -1158,7 +1160,9 @@ INLINE INT32 SCSP_UpdateSlot(struct _SCSP *SCSP, struct _SLOT *slot)
{ {
INT32 sample; INT32 sample;
int step=slot->step; int step=slot->step;
UINT32 addr; UINT32 addr1,addr2,addr_select; // current and next sample addresses
UINT32 *addr[2] = {&addr1, &addr2}; // used for linear interpolation
UINT32 *slot_addr[2] = {&(slot->cur_addr), &(slot->nxt_addr)}; //
if(SSCTL(slot)!=0) //no FM or noise yet if(SSCTL(slot)!=0) //no FM or noise yet
return 0; return 0;
@ -1169,50 +1173,58 @@ INLINE INT32 SCSP_UpdateSlot(struct _SCSP *SCSP, struct _SLOT *slot)
step>>=SHIFT; step>>=SHIFT;
} }
if(PCM8B(slot)) if(PCM8B(slot))
addr=slot->cur_addr>>SHIFT;
else
addr=(slot->cur_addr>>(SHIFT-1)) & 0x7fffe;
/*
if(MDL(slot)!=0 || MDXSL(slot)!=0 || MDYSL(slot)!=0)
{
INT32 smp;
smp=(SCSP->RINGBUF[(SCSP->BUFPTR+MDXSL(slot))&63]+SCSP->RINGBUF[(SCSP->BUFPTR+MDYSL(slot))&63])/2;
smp>>=11;
addr+=smp;
if(!PCM8B(slot))
addr&=0x7fffe;
else
addr&=0x7ffff;
}
*/
if(addr==LSA(slot))
{ {
if(LPSLNK(slot) && slot->EG.state==ATTACK) addr1=slot->cur_addr>>SHIFT;
slot->EG.state = DECAY1; addr2=slot->nxt_addr>>SHIFT;
} }
else
if(PCM8B(slot)) //8 bit signed {
addr1=(slot->cur_addr>>(SHIFT-1))&0x7fffe;
addr2=(slot->nxt_addr>>(SHIFT-1))&0x7fffe;
}
/*if(MDL(slot)!=0 || MDXSL(slot)!=0 || MDYSL(slot)!=0)
{ {
INT8 *p=(INT8 *) (slot->base+BYTE_XOR_BE((slot->cur_addr>>SHIFT))); INT32 smp=(SCSP->RINGBUF[(SCSP->BUFPTR+MDXSL(slot))&63]+SCSP->RINGBUF[(SCSP->BUFPTR+MDYSL(slot))&63])/2;
INT32 s; INT32 cycle=LEA(slot)-LSA(slot); // cycle corresponds to 2 pi
INT32 fpart=slot->cur_addr&((1<<SHIFT)-1);
s=(int) (p[0]<<8)*((1<<SHIFT)-fpart)+(int) slot->Prev*fpart;
sample=(s>>SHIFT);
slot->Prev=p[0]<<8;
} smp*=cycle; // associate cycle with full 16-bit sample range
else //16 bit signed smp>>=0x1A-MDL(slot); // ex. for MDL=0xF, sample range corresponds to +/- 64 pi (32=2^5 cycles) so shift by 11 (16-5 == 0x1A-0xF)
{ while(smp<0) smp+=cycle; smp%=cycle; // keep modulation sampler within a single cycle
INT16 *p=(INT16 *) (slot->base+addr); if(!PCM8B(slot)) smp<<=1;
INT32 s;
INT32 fpart=slot->cur_addr&((1<<SHIFT)-1); addr1+=smp; addr2+=smp;
s=(int) (p[0])*((1<<SHIFT)-fpart)+(int) slot->Prev*fpart; if(!PCM8B(slot))
sample=(s>>SHIFT); {
slot->Prev=p[0]; addr1&=0x7fffe; addr2&=0x7fffe;
}
} else
{
addr1&=0x7ffff; addr2&=0x7ffff;
}
}*/
if(PCM8B(slot)) //8 bit signed
{
INT8 *p1=(signed char *) (SCSP->SCSPRAM+((SA(slot)+addr1)^1));
INT8 *p2=(signed char *) (SCSP->SCSPRAM+((SA(slot)+addr2)^1));
//sample=(p[0])<<8;
INT32 s;
INT32 fpart=slot->cur_addr&((1<<SHIFT)-1);
s=(int) (p1[0]<<8)*((1<<SHIFT)-fpart)+(int) (p2[0]<<8)*fpart;
sample=(s>>SHIFT);
}
else //16 bit signed (endianness?)
{
INT16 *p1=(signed short *) (slot->base+addr1);
INT16 *p2=(signed short *) (slot->base+addr2);
//sample=LE16(p[0]);
INT32 s;
INT32 fpart=slot->cur_addr&((1<<SHIFT)-1);
s=(int) (p1[0])*((1<<SHIFT)-fpart)+(int) (p2[0])*fpart;
sample=(s>>SHIFT);
}
if(SBCTL(slot)&0x1) if(SBCTL(slot)&0x1)
sample ^= 0x7FFF; sample ^= 0x7FFF;
@ -1222,58 +1234,71 @@ INLINE INT32 SCSP_UpdateSlot(struct _SCSP *SCSP, struct _SLOT *slot)
if(slot->Backwards) if(slot->Backwards)
slot->cur_addr-=step; slot->cur_addr-=step;
else else
slot->cur_addr+=step; slot->cur_addr+=step;
addr=slot->cur_addr>>SHIFT; slot->nxt_addr=slot->cur_addr+(1<<SHIFT);
switch(LPCTL(slot))
addr1=slot->cur_addr>>SHIFT;
addr2=slot->nxt_addr>>SHIFT;
if(addr1>=LSA(slot) && !(slot->Backwards))
{ {
case 0: //no loop if(LPSLNK(slot) && slot->EG.state==ATTACK)
if(addr>=LEA(slot)) slot->EG.state = DECAY1;
{
//slot->active=0;
SCSP_StopSlot(slot,0);
}
break;
case 1: //normal loop
if(addr>=LEA(slot))
slot->cur_addr=LSA(slot)<<SHIFT;
break;
case 2: //reverse loop
if(addr>=LEA(slot))
{
slot->cur_addr=LEA(slot)<<SHIFT;
slot->Backwards=1;
}
if(addr<LSA(slot) || (addr&0x80000000))
slot->cur_addr=LEA(slot)<<SHIFT;
break;
case 3: //ping-pong
if(addr>=LEA(slot)) //reached end, reverse till start
{
slot->cur_addr=LEA(slot)<<SHIFT;
slot->Backwards=1;
}
if((addr<LSA(slot) || (addr&0x80000000)) && (slot->Backwards))//reached start or negative
{
slot->cur_addr=LSA(slot)<<SHIFT;
slot->Backwards=0;
}
break;
} }
for (addr_select=0;addr_select<2;addr_select++)
{
switch(LPCTL(slot))
{
case 0: //no loop
if(*addr[addr_select]>=LSA(slot) && *addr[addr_select]>=LEA(slot))
{
//slot->active=0;
SCSP_StopSlot(slot,0);
}
break;
case 1: //normal loop
if(*addr[addr_select]>=LEA(slot))
*slot_addr[addr_select]=LSA(slot)<<SHIFT;
break;
case 2: //reverse loop
if((*addr[addr_select]>=LSA(slot)) && !(slot->Backwards))
{
*slot_addr[addr_select]=LEA(slot)<<SHIFT;
slot->Backwards=1;
}
if((*addr[addr_select]<=LSA(slot) || (*slot_addr[addr_select]&0x80000000)) && slot->Backwards)
*slot_addr[addr_select]=LEA(slot)<<SHIFT;
break;
case 3: //ping-pong
if(*addr[addr_select]>=LEA(slot)) //reached end, reverse till start
{
*slot_addr[addr_select]=LEA(slot)<<SHIFT;
slot->Backwards=1;
}
if((*addr[addr_select]<=LSA(slot) || (*slot_addr[addr_select]&0x80000000)) && slot->Backwards)//reached start or negative
{
*slot_addr[addr_select]=LSA(slot)<<SHIFT;
slot->Backwards=0;
}
break;
}
}
if(ALFOS(slot)!=0) if(ALFOS(slot)!=0)
{ {
sample=sample*ALFO_Step(&(slot->ALFO)); sample=sample*ALFO_Step(&(slot->ALFO));
sample>>=SHIFT; sample>>=SHIFT;
} }
if(!STWINH(slot))
*RBUFDST=sample;
if(slot->EG.state==ATTACK) if(slot->EG.state==ATTACK)
sample=(sample*EG_Update(slot))>>SHIFT; sample=(sample*EG_Update(slot))>>SHIFT;
else else
sample=(sample*EG_TABLE[EG_Update(slot)>>(SHIFT-10)])>>SHIFT; sample=(sample*EG_TABLE[EG_Update(slot)>>(SHIFT-10)])>>SHIFT;
if(!STWINH(slot))
*RBUFDST=sample;
return sample; return sample;
} }
@ -1293,27 +1318,27 @@ static void SCSP_DoMasterSamples(struct _SCSP *SCSP, int nsamples)
for(sl=0;sl<32;++sl) for(sl=0;sl<32;++sl)
{ {
RBUFDST=SCSP->RINGBUF+SCSP->BUFPTR;
if(SCSP->Slots[sl].active) if(SCSP->Slots[sl].active)
{ {
struct _SLOT *slot=SCSP->Slots+sl; struct _SLOT *slot=SCSP->Slots+sl;
unsigned short Enc; unsigned short Enc;
signed int sample; signed int sample;
RBUFDST=SCSP->RINGBUF+SCSP->BUFPTR;
sample=SCSP_UpdateSlot(SCSP, slot); sample=SCSP_UpdateSlot(SCSP, slot);
++SCSP->BUFPTR;
SCSP->BUFPTR&=63;
#ifdef USEDSP #ifdef USEDSP
Enc=((TL(slot))<<0x0)|((IMXL(slot))<<0xd); Enc=((TL(slot))<<0x0)|((IMXL(slot))<<0xd);
SCSPDSP_SetSample(&SCSP->DSP,(sample*SCSP->LPANTABLE[Enc])>>SHIFT,ISEL(slot),IMXL(slot)); SCSPDSP_SetSample(&SCSP->DSP,(sample*SCSP->LPANTABLE[Enc])>>(SHIFT-2),ISEL(slot),IMXL(slot));
#endif #endif
Enc=((TL(slot))<<0x0)|((DIPAN(slot))<<0x8)|((DISDL(slot))<<0xd); Enc=((TL(slot))<<0x0)|((DIPAN(slot))<<0x8)|((DISDL(slot))<<0xd);
{ {
smpl+=(sample*SCSP->LPANTABLE[Enc])>>SHIFT; smpl+=(sample*SCSP->LPANTABLE[Enc])>>SHIFT;
smpr+=(sample*SCSP->RPANTABLE[Enc])>>SHIFT; smpr+=(sample*SCSP->RPANTABLE[Enc])>>SHIFT;
} }
} }
--SCSP->BUFPTR;
SCSP->BUFPTR&=63;
} }
SCSPDSP_Step(&SCSP->DSP); SCSPDSP_Step(&SCSP->DSP);

View File

@ -593,6 +593,18 @@ endif
#-------------------------------------------------
# Mitsubishi M58817 speech synthesizer
#-------------------------------------------------
SOUNDDEFS += -DHAS_M58817=$(if $(filter M58817,$(SOUNDS)),1,0)
ifneq ($(filter M58817,$(SOUNDS)),)
SOUNDOBJS += $(SOUNDOBJ)/m58817.o
endif
#------------------------------------------------- #-------------------------------------------------
# VLM5030 speech synthesizer # VLM5030 speech synthesizer
#------------------------------------------------- #-------------------------------------------------

View File

@ -176,8 +176,6 @@ static void bzone_sound_update(void *param, stream_sample_t **inputs, stream_sam
if( latch & 0x80 ) if( latch & 0x80 )
{ {
static double r0 = 1.0/1e12, r1 = 1.0/1e12;
/* NE5555 timer /* NE5555 timer
* C = 0.018u, Ra = 100k, Rb = 125k * C = 0.018u, Ra = 100k, Rb = 125k
* charge time = 0.693 * (Ra + Rb) * C = 3870us * charge time = 0.693 * (Ra + Rb) * C = 3870us
@ -201,6 +199,8 @@ static void bzone_sound_update(void *param, stream_sample_t **inputs, stream_sam
motor_counter -= motor_rate; motor_counter -= motor_rate;
while( motor_counter <= 0 ) while( motor_counter <= 0 )
{ {
double r0, r1;
motor_counter += OUTPUT_RATE; motor_counter += OUTPUT_RATE;
r0 = 1.0/1e12; r0 = 1.0/1e12;

View File

@ -6,6 +6,8 @@
#include "sound/discrete.h" #include "sound/discrete.h"
#include "sound/dac.h" #include "sound/dac.h"
#include "sound/m58817.h"
#include "includes/dkong.h" #include "includes/dkong.h"
/**************************************************************** /****************************************************************
@ -14,13 +16,19 @@
* *
****************************************************************/ ****************************************************************/
#define DEBUG_SPEECH (0) /* Set to 1 to use speech synthesizer instead of samples.
* Disabled by default since M58817 emulation is not
* complete due to missing information about coefficients.
*/
#define RADARSC1_USE_M58817 (0)
#define ACTIVELOW_PORT_BIT(P,A,D) (((P) & (~(1 << (A)))) | (((D) ^ 1) << (A))) #define ACTIVELOW_PORT_BIT(P,A,D) (((P) & (~(1 << (A)))) | (((D) ^ 1) << (A)))
/* Needed for dkongjr ... FIXME */ /* Needed for dkongjr ... FIXME */
#define I8035_T_R(N) ((portT >> (N)) & 1) //#define I8035_T_R(N) ((portT >> (N)) & 1)
#define I8035_T_W_AL(N,D) do { portT = ACTIVELOW_PORT_BIT(portT,N,D); soundlatch2_w(0, portT); } while (0) #define I8035_T_R(N) ((soundlatch2_r(0) >> (N)) & 1)
#define I8035_T_W_AL(N,D) do { state->portT = ACTIVELOW_PORT_BIT(state->portT,N,D); soundlatch2_w(0, state->portT); } while (0)
#define I8035_P1_R() (soundlatch3_r(0)) #define I8035_P1_R() (soundlatch3_r(0))
#define I8035_P2_R() (soundlatch4_r(0)) #define I8035_P2_R() (soundlatch4_r(0))
@ -85,29 +93,7 @@
* *
****************************************************************/ ****************************************************************/
static UINT8 dkongjr_latch[10];
static UINT8 sh_climb_count;
static UINT8 has_discrete_interface;
static UINT8 page,mcustatus;
static double envelope,tt;
static UINT8 decay;
static UINT8 sh1_count;
static UINT8 portT;
enum {
WAIT_CMD,
WAIT_WRITE,
WAIT_DONE1,
WAIT_DONE2
} m58817_states;
static UINT8 m58817_state;
static UINT8 m58817_drq;
static UINT8 m58817_nibbles[4];
static INT32 m58817_count;
static INT32 m58817_address;
/**************************************************************** /****************************************************************
* *
@ -669,82 +655,82 @@ DISCRETE_SOUND_END
static SOUND_START( dkong ) static SOUND_START( dkong )
{ {
state_save_register_global(page); dkong_state *state = machine->driver_data;
state_save_register_global(mcustatus);
state_save_register_global(envelope);
state_save_register_global(tt);
state_save_register_global(decay);
state_save_register_global(sh1_count);
state_save_register_global(portT);
has_discrete_interface = 1; state_save_register_global(state->page);
state_save_register_global(state->mcustatus);
state_save_register_global(state->portT);
state->has_discrete_interface = 1;
}
static SOUND_RESET( dkong )
{
sh1_count = 0;
mcustatus = 0;
envelope = 0;
tt = 0;
decay = 0;
page = 0;
I8035_T_W_AL(0,0);
I8035_T_W_AL(1,0);
I8035_P1_W(255);
I8035_P2_W(255);
} }
static SOUND_START( dkongjr ) static SOUND_START( dkongjr )
{ {
dkong_state *state = machine->driver_data;
sound_start_dkong(machine); sound_start_dkong(machine);
state_save_register_global(sh_climb_count); state_save_register_global(state->sh_climb_count);
state_save_register_global_array(dkongjr_latch); state_save_register_global_array(state->dkongjr_latch);
state_save_register_global(state->envelope);
state_save_register_global(state->tt);
state_save_register_global(state->decay);
sh_climb_count = 0; state->has_discrete_interface = 0;
has_discrete_interface = 0;
} }
static SOUND_START( radarsc1 ) static SOUND_START( radarsc1 )
{ {
dkong_state *state = machine->driver_data;
sound_start_dkong(machine); sound_start_dkong(machine);
state_save_register_global(m58817_state); state->has_discrete_interface = 1;
state_save_register_global(m58817_drq);
state_save_register_global_array(m58817_nibbles);
state_save_register_global(m58817_count);
state_save_register_global(m58817_address);
has_discrete_interface = 1;
} }
static SOUND_RESET( radarsc1 ) static SOUND_RESET( dkong )
{ {
dkong_state *state = machine->driver_data;
state->mcustatus = 0;
state->page = 0;
I8035_T_W_AL(0,0);
I8035_T_W_AL(1,0);
I8035_P1_W(255);
I8035_P2_W(255);
}
static SOUND_RESET( dkongjr )
{
dkong_state *state = machine->driver_data;
int i;
sound_reset_dkong(machine); sound_reset_dkong(machine);
m58817_state=WAIT_CMD; state->envelope = 0;
m58817_drq=0; state->tt = 0;
m58817_count=0; state->decay = 0;
m58817_address=0; state->sh_climb_count = 0;
for (i=0;i<10;i++)
state->dkongjr_latch[i]=0;
} }
/**************************************************************** /****************************************************************
* *
* M58817 Speech * M58817 Speech
* *
* Fixme: Move to src/emu/audio
*
****************************************************************/ ****************************************************************/
/* @0x510, cpu2 /*
http://www.freepatentsonline.com/4633500.html
@0x510, cpu2
10: 0000 00 00000000 ... 50 53 01010000 01010011 "scramble" 10: 0000 00 00000000 ... 50 53 01010000 01010011 "scramble"
12: 007a 44 01000100 ... 00 0f 00000000 00001111 "all pilots climb up" 12: 007a 44 01000100 ... 00 0f 00000000 00001111 "all pilots climb up"
14: 018b 13 00010011 ... dc f0 11011100 11110000 14: 018b 13 00010011 ... dc f0 11011100 11110000
@ -778,175 +764,12 @@ static SOUND_RESET( radarsc1 )
7: 20 engine trouble 7: 20 engine trouble
*/ */
#if DEBUG_SPEECH
static UINT8 m58817_getbit(int bitnum)
{
const UINT8 *table = memory_region(REGION_SOUND1);
return (table[bitnum >> 3] >> (0x07 - (bitnum & 0x07))) & 1;
}
static UINT32 m58817_getbits(int startbit, int num)
{
int i;
UINT32 r=0;
for (i=0;i<num;i++)
{
r = r << 1;
r = r | m58817_getbit(startbit++);
}
return r;
}
static int m58817_decodeframe(int startbit)
{
int energy;
int pitch;
int repeat;
UINT32 kx;
energy = m58817_getbits(startbit, 4);
logerror("frame @ bit %04d (%02x):", startbit, startbit>>3);
logerror(" energy = %d ", energy);
startbit += 4;
if (energy==0)
{
logerror(" - silence\n");
return startbit;
}
if (energy==15)
{
logerror(" - stop\n");
return -1; /* stop ... */
}
repeat = m58817_getbits(startbit, 1);
startbit += 1;
pitch = m58817_getbits(startbit, 6);
startbit += 6;
logerror(" pitch = %d ", pitch);
if (repeat)
{
logerror(" - repeat\n");
return startbit;
}
if (pitch == 0)
{
logerror(" - unvoiced skip %d\n", 18);
kx = m58817_getbits(startbit, 18);
startbit += 18;
return startbit;
}
else
{
logerror(" - voiced skip %d\n", 37);
kx = m58817_getbits(startbit, 30);
startbit += 30;
kx = m58817_getbits(startbit, 7);
startbit += 7;
return startbit;
}
}
static int m58817_dumpframe(int startbit)
{
while (startbit>=0)
startbit=m58817_decodeframe(startbit);
logerror("\n");
return startbit;
}
#endif
static void m58817_sampleframe(int addr)
{
printf("0x%x\n", addr);
switch (addr)
{
case 0x0000: /* 10 */
sample_start (0,0,0);
break;
case 0x007a: /* 12 */
sample_start (0,1,0);
break;
case 0x018b: /* 14 */
sample_start (0,2,0);
break;
case 0x0320: /* 16 */
sample_start (0,3,0);
break;
case 0x036c: /* 18 */
sample_start (0,4,0);
break;
case 0x03c4: /* 1A */
sample_start (0,5,0);
break;
case 0x041c: /* 1C */
sample_start (0,6,0);
break;
case 0x0520: /* 1E */
sample_start (0,7,0);
break;
case 0x063e: /* 20 */
sample_start (0,8,0);
break;
}
}
static void m58817_state_loop(int data)
{
int i;
switch (m58817_state)
{
case WAIT_CMD:
switch (data)
{
case 0x00: // reset ????
m58817_count=0;
break;
case 0x02: // latch next nibbel
m58817_state=WAIT_WRITE;
break;
case 0x08: // play ????
m58817_state=WAIT_DONE1;
break;
default:
logerror("m58817: unknown cmd : 0x%02x\n", data);
}
break;
case WAIT_WRITE:
m58817_nibbles[m58817_count++] = data & 0x0f;
m58817_state=WAIT_CMD;
break;
case WAIT_DONE1:
if (data != 0x0A)
logerror("m58817: expected 0x0A got 0x%02x\n", data);
m58817_address = 0;
for (i=0;i<m58817_count;i++)
{
m58817_address |= (m58817_nibbles[i] << (i*4));
}
logerror("m58817: address: 0x%04x\n", m58817_address);
//m58817_dumpframe(m58817_address * 8);
m58817_sampleframe(m58817_address);
m58817_state=WAIT_CMD;
break;
}
}
static READ8_HANDLER( M58817_status_r )
{
//return !(m58817_state == WAIT_CMD);
return sample_playing(0);
}
static WRITE8_HANDLER( M58817_command_w ) static WRITE8_HANDLER( M58817_command_w )
{ {
int drq = (data>>4) & 0x01; // FIXME 0x20 ??
int dat = data & 0x0f;
logerror("PA Write %x\n", data); logerror("PA Write %x\n", data);
if (!drq & m58817_drq)
m58817_state_loop(dat); m58817_CTL_w(0, data & 0x0f);
m58817_drq = drq; m58817_DRQ_w(0, (data>>4) & 0x01); // FIXME 0x20 ??
} }
/**************************************************************** /****************************************************************
@ -977,30 +800,38 @@ static READ8_HANDLER( dkong_sh_t1_r )
static READ8_HANDLER( dkong_sh_tune_r ) static READ8_HANDLER( dkong_sh_tune_r )
{ {
dkong_state *state = Machine->driver_data;
UINT8 *SND = memory_region(REGION_CPU2); UINT8 *SND = memory_region(REGION_CPU2);
if ( page & 0x40 )
if ( state->page & 0x40 )
{ {
return soundlatch_r(0); return soundlatch_r(0) & 0x0F;
} }
else else
return (SND[2048+(page & 7)*256+offset]); return (SND[0x1000+(state->page & 7)*256+offset]);
}
static READ8_HANDLER( dkongjr_sh_tune_r )
{
return soundlatch_r(0) & 0x01F;
} }
#define TSTEP 0.001 #define TSTEP 0.001
static WRITE8_HANDLER( dkong_sh_p1_w ) static WRITE8_HANDLER( dkong_sh_p1_w )
{ {
dkong_state *state = Machine->driver_data;
if (has_discrete_interface) if (state->has_discrete_interface)
discrete_sound_w(DS_DAC,data); discrete_sound_w(DS_DAC,data);
else else
{ {
envelope=exp(-tt); state->envelope=exp(-state->tt);
DAC_data_w(0,(int)(data*envelope)); DAC_data_w(0,(int)(data*state->envelope));
if (decay) if (state->decay)
tt+=TSTEP; state->tt+=TSTEP;
else else
tt=0; state->tt=0;
} }
} }
@ -1008,55 +839,31 @@ static WRITE8_HANDLER( dkong_sh_p1_w )
static READ8_HANDLER( radarsc1_sh_p1_r ) static READ8_HANDLER( radarsc1_sh_p1_r )
{ {
int r; int r;
r = (I8035_P1_R() & 0x80) | (M58817_status_r(0)<<6);
r = (I8035_P1_R() & 0x80) | (m58817_status_r(0)<<6);
return r; return r;
} }
static WRITE8_HANDLER( radarsc1_sh_p1_w )
{
M58817_command_w(0,data);
}
static WRITE8_HANDLER( radarsc1_sh_p2_w )
{
/* If P2.Bit7 -> external signal decay
* If P2.Bit6 -> not connected
* If P2.Bit5 -> Signal ANSN ==> Grid enable
* If P2.Bit4 -> status code to main cpu
* P2.Bit2-0 -> select the 256 byte bank for external ROM
*/
if (has_discrete_interface)
discrete_sound_w(DS_DAC_DISCHARGE, (data & 0x80) ? 0 : 1 );
else
decay = !(data & 0x80);
page = (data & 0x07);
mcustatus = ((~data & 0x10) >> 4);
radarsc1_ansn_w(0, (data & 0x20) >> 5);
}
static WRITE8_HANDLER( dkong_sh_p2_w ) static WRITE8_HANDLER( dkong_sh_p2_w )
{ {
/* If P2.Bit7 -> is apparently an external signal decay or other output control /* If P2.Bit7 -> is apparently an external signal decay or other output control
* If P2.Bit6 -> activates the external compressed sample ROM * If P2.Bit6 -> activates the external compressed sample ROM (not radarsc1)
* If P2.Bit5 -> Signal ANSN ==> Grid enable (radarsc1)
* If P2.Bit4 -> status code to main cpu * If P2.Bit4 -> status code to main cpu
* P2.Bit2-0 -> select the 256 byte bank for external ROM * P2.Bit2-0 -> select the 256 byte bank for external ROM
*/ */
if (has_discrete_interface) dkong_state *state = Machine->driver_data;
if (state->has_discrete_interface)
discrete_sound_w(DS_DAC_DISCHARGE, (data & 0x80) ? 0 : 1 ); discrete_sound_w(DS_DAC_DISCHARGE, (data & 0x80) ? 0 : 1 );
else else
decay = !(data & 0x80); state->decay = !(data & 0x80);
page = (data & 0x47); state->mcustatus = ((~data & 0x10) >> 4);
mcustatus = ((~data & 0x10) >> 4); radarsc1_ansn_w(0, (data & 0x20) >> 5);
state->page = (data & 0x47);
} }
static READ8_HANDLER( radarsc1_sh_tune_r )
{
return soundlatch_r(0);
}
/**************************************************************** /****************************************************************
* *
* I/O Handlers - global * I/O Handlers - global
@ -1076,7 +883,9 @@ WRITE8_HANDLER( dkongjr_sh_tuneselect_w )
READ8_HANDLER( dkong_audio_status_r ) READ8_HANDLER( dkong_audio_status_r )
{ {
return mcustatus; dkong_state *state = Machine->driver_data;
return state->mcustatus;
} }
WRITE8_HANDLER( dkong_audio_irq_w ) WRITE8_HANDLER( dkong_audio_irq_w )
@ -1091,7 +900,7 @@ WRITE8_HANDLER( dkong_snd_disc_w )
{ {
dkong_state *state = Machine->driver_data; dkong_state *state = Machine->driver_data;
if (!has_discrete_interface && (offset<3)) if (!state->has_discrete_interface && (offset<3))
{ {
logerror("dkong.c: Write to snd port %d (%d)\n", offset, data); logerror("dkong.c: Write to snd port %d (%d)\n", offset, data);
return; return;
@ -1122,11 +931,11 @@ WRITE8_HANDLER( dkong_snd_disc_w )
I8035_T_W_AL(0, data & 1); I8035_T_W_AL(0, data & 1);
break; break;
case 6: case 6:
if (has_discrete_interface) if (state->has_discrete_interface)
discrete_sound_w(DS_SOUND6_INP,data & 1); discrete_sound_w(DS_SOUND6_INP,data & 1);
break; break;
case 7: case 7:
if (has_discrete_interface) if (state->has_discrete_interface)
discrete_sound_w(DS_SOUND7_INP,data & 1); discrete_sound_w(DS_SOUND7_INP,data & 1);
break; break;
} }
@ -1140,24 +949,25 @@ WRITE8_HANDLER( dkong_sh_tuneselect_w )
WRITE8_HANDLER( dkongjr_snd_w1 ) WRITE8_HANDLER( dkongjr_snd_w1 )
{ {
dkong_state *state = Machine->driver_data;
static const int sample_order[7] = {1,2,1,2,0,1,0}; static const int sample_order[7] = {1,2,1,2,0,1,0};
if (dkongjr_latch[offset] != data) if (state->dkongjr_latch[offset] != data)
{ {
switch (offset) switch (offset)
{ {
case 0: /* climb */ case 0: /* climb */
if (data && dkongjr_latch[7] == 0) if (data && state->dkongjr_latch[7] == 0)
{ {
sample_start (3,sample_order[sh_climb_count]+3,0); sample_start (3,sample_order[state->sh_climb_count]+3,0);
sh_climb_count++; state->sh_climb_count++;
if (sh_climb_count == 7) sh_climb_count = 0; if (state->sh_climb_count == 7) state->sh_climb_count = 0;
} }
else if (data && dkongjr_latch[7] == 1) else if (data && state->dkongjr_latch[7] == 1)
{ {
sample_start (3,sample_order[sh_climb_count]+8,0); sample_start (3,sample_order[state->sh_climb_count]+8,0);
sh_climb_count++; state->sh_climb_count++;
if (sh_climb_count == 7) sh_climb_count = 0; if (state->sh_climb_count == 7) state->sh_climb_count = 0;
} }
break; break;
case 1: /* jump */ case 1: /* jump */
@ -1169,46 +979,62 @@ WRITE8_HANDLER( dkongjr_snd_w1 )
sample_stop (7); sample_stop (7);
sample_start (4,1,0); sample_start (4,1,0);
break; break;
case 3: /* Port 3 write ==> PB 5 */
I8035_P2_W_AL(5,data & 1);
break;
#if 0 // above verified from schematics
case 3: /* roar */ case 3: /* roar */
if (data) if (data)
sample_start (7,2,0); sample_start (7,2,0);
break; break;
#endif
case 4: /* Port 4 write */ case 4: /* Port 4 write */
I8035_T_W_AL(1, data & 1); I8035_T_W_AL(1, data & 1);
break; break;
case 5: /* Port 5 write */ case 5: /* Port 5 write */
I8035_T_W_AL(0, data & 1); I8035_T_W_AL(0, data & 1);
break; break;
case 6: /* Port 6 write ==> PB 4 */
I8035_P2_W_AL(4,data & 1);
break;
#if 0 // above verified from schematics
case 6: /* snapjaw */ case 6: /* snapjaw */
if (data) if (data)
sample_stop (7); sample_stop (7);
sample_start (4,11,0); sample_start (4,11,0);
break; break;
#endif
case 7: /* walk */ case 7: /* walk */
//walk = data; //walk = data;
break; break;
} }
dkongjr_latch[offset] = data; state->dkongjr_latch[offset] = data;
} }
} }
WRITE8_HANDLER( dkongjr_snd_w2 ) WRITE8_HANDLER( dkongjr_snd_w2 )
{ {
if (dkongjr_latch[offset+8] != data) dkong_state *state = Machine->driver_data;
if (state->dkongjr_latch[offset+8] != data)
{ {
switch (offset) switch (offset)
{ {
case 0:
dkong_audio_irq_w(0, data & 1);
break;
#if 0 // above verified from schematics
case 0: /* death */ case 0: /* death */
if (data) if (data)
sample_stop (7); sample_stop (7);
sample_start (6, 6, 0); sample_start (6, 6, 0);
break; break;
#endif
case 1: /* drop */ case 1: /* drop */
if (data) if (data)
sample_start (7, 7, 0); sample_start (7, 7, 0);
break; break;
} }
dkongjr_latch[offset+8] = data; state->dkongjr_latch[offset+8] = data;
} }
} }
@ -1233,11 +1059,19 @@ static ADDRESS_MAP_START( dkong_sound_io_map, ADDRESS_SPACE_IO, 8 )
AM_RANGE(I8039_t1, I8039_t1) AM_READ(dkong_sh_t1_r) AM_RANGE(I8039_t1, I8039_t1) AM_READ(dkong_sh_t1_r)
ADDRESS_MAP_END ADDRESS_MAP_END
static ADDRESS_MAP_START( dkongjr_sound_io_map, ADDRESS_SPACE_IO, 8 )
AM_RANGE(0x00, 0xff) AM_READ(dkongjr_sh_tune_r)
AM_RANGE(I8039_p1, I8039_p1) AM_READWRITE(dkong_sh_p1_r, dkong_sh_p1_w)
AM_RANGE(I8039_p2, I8039_p2) AM_READWRITE(dkong_sh_p2_r, dkong_sh_p2_w)
AM_RANGE(I8039_t0, I8039_t0) AM_READ(dkong_sh_t0_r)
AM_RANGE(I8039_t1, I8039_t1) AM_READ(dkong_sh_t1_r)
ADDRESS_MAP_END
static ADDRESS_MAP_START( radarsc1_sound_io_map, ADDRESS_SPACE_IO, 8 ) static ADDRESS_MAP_START( radarsc1_sound_io_map, ADDRESS_SPACE_IO, 8 )
AM_RANGE(0x00, 0xff) AM_READ(radarsc1_sh_tune_r) AM_RANGE(0x00, 0xff) AM_READ(soundlatch_r)
AM_RANGE(0x00, 0xff) AM_WRITE(dkong_sh_p1_w) // DAC here AM_RANGE(0x00, 0xff) AM_WRITE(dkong_sh_p1_w) // DAC here
AM_RANGE(I8039_p1, I8039_p1) AM_READWRITE(radarsc1_sh_p1_r, radarsc1_sh_p1_w) AM_RANGE(I8039_p1, I8039_p1) AM_READWRITE(radarsc1_sh_p1_r, M58817_command_w)
AM_RANGE(I8039_p2, I8039_p2) AM_READWRITE(dkong_sh_p2_r, radarsc1_sh_p2_w) AM_RANGE(I8039_p2, I8039_p2) AM_READWRITE(dkong_sh_p2_r, dkong_sh_p2_w)
AM_RANGE(I8039_t0, I8039_t0) AM_READ(dkong_sh_t0_r) AM_RANGE(I8039_t0, I8039_t0) AM_READ(dkong_sh_t0_r)
AM_RANGE(I8039_t1, I8039_t1) AM_READ(dkong_sh_t1_r) AM_RANGE(I8039_t1, I8039_t1) AM_READ(dkong_sh_t1_r)
ADDRESS_MAP_END ADDRESS_MAP_END
@ -1265,7 +1099,7 @@ ADDRESS_MAP_END
* *
*************************************/ *************************************/
static const char *const dkongjr_sample_names[] = static const char *dkongjr_sample_names[] =
{ {
"*dkongjr", "*dkongjr",
"jump.wav", "jump.wav",
@ -1283,13 +1117,14 @@ static const char *const dkongjr_sample_names[] =
0 /* end of array */ 0 /* end of array */
}; };
static const struct Samplesinterface dkongjr_samples_interface = static struct Samplesinterface dkongjr_samples_interface =
{ {
8, /* 8 channels */ 8, /* 8 channels */
dkongjr_sample_names dkongjr_sample_names
}; };
static const char *const radarsc1_sample_names[] = #if !RADARSC1_USE_M58817
static const char *radarsc1_sample_names[] =
{ {
"*radarsc1", "*radarsc1",
"10.wav", "10.wav",
@ -1304,14 +1139,25 @@ static const char *const radarsc1_sample_names[] =
0 /* end of array */ 0 /* end of array */
}; };
static const struct Samplesinterface radarsc1_samples_interface = static struct Samplesinterface radarsc1_samples_interface =
{ {
8, /* 8 channels */ 8, /* 8 channels */
radarsc1_sample_names radarsc1_sample_names
}; };
#endif
static const struct NESinterface nes_interface_1 = { REGION_CPU2 }; static struct NESinterface nes_interface_1 = { REGION_CPU2 };
static const struct NESinterface nes_interface_2 = { REGION_CPU3 }; static struct NESinterface nes_interface_2 = { REGION_CPU3 };
static struct M58817interface m58817_interface =
{
#if !RADARSC1_USE_M58817
-1,
#else
REGION_SOUND1, /* Sample Rom */
#endif
{ 0x0000, 0x007a, 0x018b, 0x0320, 0x036c, 0x03c4, 0x041c, 0x0520, 0x063e } /* sample address map */
};
/************************************* /*************************************
* *
@ -1352,22 +1198,27 @@ MACHINE_DRIVER_START( radarsc1_audio )
MDRV_CPU_IO_MAP(radarsc1_sound_io_map, 0) MDRV_CPU_IO_MAP(radarsc1_sound_io_map, 0)
MDRV_SOUND_START(radarsc1) MDRV_SOUND_START(radarsc1)
MDRV_SOUND_RESET(radarsc1)
MDRV_SOUND_ADD(M58817, 640000)
MDRV_SOUND_CONFIG(m58817_interface)
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.7)
#if !RADARSC1_USE_M58817
MDRV_SOUND_ADD(SAMPLES, 0) MDRV_SOUND_ADD(SAMPLES, 0)
MDRV_SOUND_CONFIG(radarsc1_samples_interface) MDRV_SOUND_CONFIG(radarsc1_samples_interface)
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 3.0) MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 3.0)
#endif
MACHINE_DRIVER_END MACHINE_DRIVER_END
MACHINE_DRIVER_START( dkongjr_audio ) MACHINE_DRIVER_START( dkongjr_audio )
MDRV_CPU_ADD(I8035,I8035_CLOCK) MDRV_CPU_ADD_TAG("sound", I8035,I8035_CLOCK)
MDRV_CPU_PROGRAM_MAP(dkong_sound_map,0) MDRV_CPU_PROGRAM_MAP(dkong_sound_map,0)
MDRV_CPU_IO_MAP(dkong_sound_io_map, 0) MDRV_CPU_IO_MAP(dkongjr_sound_io_map, 0)
MDRV_SOUND_START(dkongjr) MDRV_SOUND_START(dkongjr)
MDRV_SOUND_RESET(dkong) MDRV_SOUND_RESET(dkongjr)
MDRV_SPEAKER_STANDARD_MONO("mono") MDRV_SPEAKER_STANDARD_MONO("mono")
MDRV_SOUND_ADD(DAC, 0) MDRV_SOUND_ADD(DAC, 0)

View File

@ -149,10 +149,10 @@ static int echo_ptr;
static const int TS_CYC = CPU_RATE / SAMP_FREQ; static const int TS_CYC = CPU_RATE / SAMP_FREQ;
/* Ptrs to Gaussian table */ /* Ptrs to Gaussian table */
static const int * G1 = &gauss[ 256 ]; static const int *const G1 = &gauss[ 256 ];
static const int * G2 = &gauss[ 512 ]; static const int *const G2 = &gauss[ 512 ];
static const int * G3 = &gauss[ 255 ]; static const int *const G3 = &gauss[ 255 ];
static const int * G4 = &gauss[ -1 ]; static const int *const G4 = &gauss[ -1 ];
static const int mask = 0xFF; static const int mask = 0xFF;

View File

@ -1488,7 +1488,7 @@ ADDRESS_MAP_END
/* Most games use this */ /* Most games use this */
static INPUT_PORTS_START( cave ) static INPUT_PORTS_START( cave )
PORT_START // IN0 - Player 1 PORT_START_TAG("IN0") // IN0 - Player 1
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(1) PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(1)
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1) PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1)
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1) PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1)
@ -1507,7 +1507,7 @@ static INPUT_PORTS_START( cave )
PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START // IN1 - Player 2 PORT_START_TAG("IN1") // IN1 - Player 2
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(2) PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(2)
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(2) PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(2)
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2) PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2)
@ -1529,14 +1529,9 @@ INPUT_PORTS_END
/* Gaia Crusaders, no EEPROM. Has DIPS */ /* Gaia Crusaders, no EEPROM. Has DIPS */
static INPUT_PORTS_START( gaia ) static INPUT_PORTS_START( gaia )
PORT_START // IN0 - Player 1 + 2 PORT_INCLUDE( cave )
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(1)
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1) PORT_MODIFY("IN0") // IN0 - Player 1 + 2
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1)
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1)
PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1)
PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1)
PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(1) PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(1)
PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(2) PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(2)
@ -1548,7 +1543,7 @@ static INPUT_PORTS_START( gaia )
PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2) PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2)
PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(2) PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(2)
PORT_START // IN1 - Coins PORT_MODIFY("IN1") // IN1 - Coins
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(6) PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(6)
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(6) PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(6)
PORT_SERVICE_NO_TOGGLE(0x0004, IP_ACTIVE_LOW ) PORT_SERVICE_NO_TOGGLE(0x0004, IP_ACTIVE_LOW )
@ -1560,12 +1555,7 @@ static INPUT_PORTS_START( gaia )
PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START_TAG("DSW1") // Dips bank 1 PORT_START_TAG("DSW1") // Dips bank 1
PORT_DIPNAME( 0x01, 0x01, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW1:1") PORT_DIPNAME( 0x01, 0x01, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW1:1")
@ -1626,7 +1616,7 @@ static INPUT_PORTS_START( gaia )
INPUT_PORTS_END INPUT_PORTS_END
static INPUT_PORTS_START( theroes ) static INPUT_PORTS_START( theroes )
PORT_INCLUDE(gaia) PORT_INCLUDE( gaia )
PORT_MODIFY("DSW1") PORT_MODIFY("DSW1")
PORT_DIPNAME( 0x04, 0x00, DEF_STR( Language ) ) PORT_DIPLOCATION("SW1:3") PORT_DIPNAME( 0x04, 0x00, DEF_STR( Language ) ) PORT_DIPLOCATION("SW1:3")
@ -1652,45 +1642,9 @@ INPUT_PORTS_END
/* Mazinger Z (has region stored in Eeprom) */ /* Mazinger Z (has region stored in Eeprom) */
static INPUT_PORTS_START( mazinger ) static INPUT_PORTS_START( mazinger )
PORT_START // IN0 - Player 1 PORT_INCLUDE( cave )
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(1)
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1)
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1)
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1)
PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1)
PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1)
PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_START1 )
PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(6) PORT_START_TAG("EEPROM") // Eeprom Region
PORT_SERVICE_NO_TOGGLE(0x0200, IP_ACTIVE_LOW )
PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_UNKNOWN ) // sw? exit service mode
PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_UNKNOWN ) // sw? enter & exit service mode
PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START // IN1 - Player 2
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(2)
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(2)
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2)
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2)
PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2)
PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_START2 )
PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(6)
PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_SERVICE1)
PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x0800, IP_ACTIVE_HIGH, IPT_SPECIAL ) // eeprom bit
PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START // Eeprom Region
PORT_DIPNAME( 0xff, 0x31, DEF_STR( Region ) ) PORT_DIPNAME( 0xff, 0x31, DEF_STR( Region ) )
PORT_DIPSETTING( 0x30, DEF_STR( Japan ) ) PORT_DIPSETTING( 0x30, DEF_STR( Japan ) )
PORT_DIPSETTING( 0x31, DEF_STR( World ) ) PORT_DIPSETTING( 0x31, DEF_STR( World ) )
@ -1698,45 +1652,9 @@ INPUT_PORTS_END
/* Sailor Moon / Air Gallet (has region stored in Eeprom) */ /* Sailor Moon / Air Gallet (has region stored in Eeprom) */
static INPUT_PORTS_START( sailormn ) static INPUT_PORTS_START( sailormn )
PORT_START // IN0 - Player 1 PORT_INCLUDE( cave )
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(1)
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1)
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1)
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1)
PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1)
PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1)
PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_START1 )
PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(6) PORT_START_TAG("EEPROM") // Eeprom Region
PORT_SERVICE_NO_TOGGLE(0x0200, IP_ACTIVE_LOW )
PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_UNKNOWN ) // sw? exit service mode
PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_UNKNOWN ) // sw? enter & exit service mode
PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START // IN1 - Player 2
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(2)
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(2)
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2)
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2)
PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2)
PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_START2 )
PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(6)
PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_SERVICE1)
PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x0800, IP_ACTIVE_HIGH, IPT_SPECIAL ) // eeprom bit
PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START // Eeprom Region
PORT_DIPNAME( 0xff, 0x02, DEF_STR( Region ) ) PORT_DIPNAME( 0xff, 0x02, DEF_STR( Region ) )
PORT_DIPSETTING( 0x00, DEF_STR( Japan ) ) PORT_DIPSETTING( 0x00, DEF_STR( Japan ) )
PORT_DIPSETTING( 0x01, DEF_STR( USA ) ) PORT_DIPSETTING( 0x01, DEF_STR( USA ) )
@ -1746,9 +1664,20 @@ static INPUT_PORTS_START( sailormn )
PORT_DIPSETTING( 0x05, "Korea" ) PORT_DIPSETTING( 0x05, "Korea" )
INPUT_PORTS_END INPUT_PORTS_END
/* Normal layout but with 4 buttons */
static INPUT_PORTS_START( metmqstr )
PORT_INCLUDE( cave )
PORT_MODIFY("IN0") // IN0 - Player 1
PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(1)
PORT_MODIFY("IN0") // IN1 - Player 2
PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(2)
INPUT_PORTS_END
/* Different layout */ /* Different layout */
static INPUT_PORTS_START( guwange ) static INPUT_PORTS_START( guwange )
PORT_START // IN0 - Player 1 & 2 PORT_START_TAG("IN0") // IN0 - Player 1 & 2
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_START1 ) PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_START1 )
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(1) PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(1)
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1) PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1)
@ -1767,7 +1696,7 @@ static INPUT_PORTS_START( guwange )
PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2) PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2) PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2)
PORT_START // IN1 - Coins PORT_START_TAG("IN1") // IN1 - Coins
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(6) PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(6)
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(6) PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(6)
PORT_SERVICE_NO_TOGGLE(0x0004, IP_ACTIVE_LOW ) PORT_SERVICE_NO_TOGGLE(0x0004, IP_ACTIVE_LOW )
@ -1787,50 +1716,9 @@ static INPUT_PORTS_START( guwange )
PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
INPUT_PORTS_END INPUT_PORTS_END
/* Normal layout but with 4 buttons */
static INPUT_PORTS_START( metmqstr )
PORT_START // IN0 - Player 1
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(1)
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1)
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1)
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1)
PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1)
PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1)
PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_START1 )
PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(6)
PORT_SERVICE_NO_TOGGLE(0x0200, IP_ACTIVE_LOW )
PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(1)
PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_UNKNOWN ) // sw? enter & exit service mode
PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START // IN1 - Player 2
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(2)
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(2)
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2)
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2)
PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2)
PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_START2 )
PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(6)
PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_SERVICE1)
PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(2)
PORT_BIT( 0x0800, IP_ACTIVE_HIGH, IPT_SPECIAL ) // eeprom bit
PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
INPUT_PORTS_END
static INPUT_PORTS_START( korokoro ) static INPUT_PORTS_START( korokoro )
PORT_START // IN0 PORT_START_TAG("IN0") // IN0
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(10) // bit 0x0010 of leds (coin) PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(10) // bit 0x0010 of leds (coin)
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(10) // bit 0x0020 of leds (does coin sound) PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(10) // bit 0x0020 of leds (does coin sound)
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_COIN3 ) PORT_IMPULSE(10) // bit 0x0080 of leds PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_COIN3 ) PORT_IMPULSE(10) // bit 0x0080 of leds
@ -1849,7 +1737,7 @@ static INPUT_PORTS_START( korokoro )
PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_SERVICE1) // service coin PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_SERVICE1) // service coin
PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_SPECIAL) // motor / hopper status ??? PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_SPECIAL) // motor / hopper status ???
PORT_START // IN1 PORT_START_TAG("IN1") // IN1
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_UNKNOWN )
@ -4480,32 +4368,32 @@ static DRIVER_INIT( korokoro )
***************************************************************************/ ***************************************************************************/
GAME( 1994, pwrinst2, 0, pwrinst2, metmqstr, pwrinst2, ROT0, "Atlus/Cave", "Power Instinct 2 (USA)" , 0 ) /* 94.04.08 */ GAME( 1994, pwrinst2, 0, pwrinst2, metmqstr, pwrinst2, ROT0, "Atlus/Cave", "Power Instinct 2 (US, Ver. 94/04/08)" , 0 )
GAME( 1994, pwrins2j, pwrinst2, pwrinst2, metmqstr, pwrins2j, ROT0, "Atlus/Cave", "Gouketsuji Ichizoku 2 (Japan)" , 0 ) /* 94.04.08 */ GAME( 1994, pwrins2j, pwrinst2, pwrinst2, metmqstr, pwrins2j, ROT0, "Atlus/Cave", "Gouketsuji Ichizoku 2 (Japan, Ver. 94/04/08)" , 0 )
GAME( 1994, mazinger, 0, mazinger, mazinger, mazinger, ROT90, "Banpresto/Dynamic Pl. Toei Animation", "Mazinger Z" , 0 ) // region in eeprom GAME( 1994, mazinger, 0, mazinger, mazinger, mazinger, ROT90, "Banpresto/Dynamic Pl. Toei Animation", "Mazinger Z (International/Japan)" , 0 ) // region in eeprom
GAME( 1995, donpachi, 0, donpachi, cave, donpachi, ROT270, "Atlus/Cave", "DonPachi (US)" , 0 ) GAME( 1995, donpachi, 0, donpachi, cave, donpachi, ROT270, "Atlus/Cave", "DonPachi (US)" , 0 )
GAME( 1995, donpacjp, donpachi, donpachi, cave, donpachi, ROT270, "Atlus/Cave", "DonPachi (Japan)" , 0 ) GAME( 1995, donpacjp, donpachi, donpachi, cave, donpachi, ROT270, "Atlus/Cave", "DonPachi (Japan)" , 0 )
GAME( 1995, donpackr, donpachi, donpachi, cave, donpachi, ROT270, "Atlus/Cave", "DonPachi (Korea)" , 0 ) GAME( 1995, donpackr, donpachi, donpachi, cave, donpachi, ROT270, "Atlus/Cave", "DonPachi (Korea)" , 0 )
GAME( 1995, donpachk, donpachi, donpachi, cave, donpachi, ROT270, "Atlus/Cave", "DonPachi (Hong Kong)" , 0 ) GAME( 1995, donpachk, donpachi, donpachi, cave, donpachi, ROT270, "Atlus/Cave", "DonPachi (Hong Kong)" , 0 )
GAME( 1995, metmqstr, 0, metmqstr, metmqstr, metmqstr, ROT0, "Banpresto/Pandorabox", "Metamoqester" , 0 ) GAME( 1995, metmqstr, 0, metmqstr, metmqstr, metmqstr, ROT0, "Banpresto/Pandorabox", "Metamoqester (International)" , 0 )
GAME( 1995, nmaster, metmqstr, metmqstr, metmqstr, metmqstr, ROT0, "Banpresto/Pandorabox", "Oni - The Ninja Master (Japan)" , 0 ) GAME( 1995, nmaster, metmqstr, metmqstr, metmqstr, metmqstr, ROT0, "Banpresto/Pandorabox", "Oni - The Ninja Master (Japan)" , 0 )
GAME( 1995, plegends, 0, pwrinst2, metmqstr, pwrins2j, ROT0, "Atlus/Cave", "Power Instinct Legends (USA)" , 0 ) /* 95.06.20 */ GAME( 1995, plegends, 0, pwrinst2, metmqstr, pwrins2j, ROT0, "Atlus/Cave", "Power Instinct Legends (US, Ver. 95/06/20)" , 0 )
GAME( 1995, plegendj, plegends, pwrinst2, metmqstr, pwrins2j, ROT0, "Atlus/Cave", "Gouketsuji Ichizoku Saikyou Densetsu (Japan)", 0 ) /* 95.06.20 */ GAME( 1995, plegendj, plegends, pwrinst2, metmqstr, pwrins2j, ROT0, "Atlus/Cave", "Gouketsuji Ichizoku Saikyou Densetsu (Japan, Ver. 95/06/20)", 0 )
GAME( 1995, sailormn, 0, sailormn, sailormn, sailormn, ROT0, "Banpresto", "Pretty Soldier Sailor Moon (95/03/22B)" , 0 ) // region in eeprom GAME( 1995, sailormn, 0, sailormn, sailormn, sailormn, ROT0, "Banpresto", "Pretty Soldier Sailor Moon (JUEHTK, Ver. 95/03/22B)" , 0 ) // region in eeprom
GAME( 1995, sailormo, sailormn, sailormn, sailormn, sailormn, ROT0, "Banpresto", "Pretty Soldier Sailor Moon (95/03/22)" , 0 ) // region in eeprom GAME( 1995, sailormo, sailormn, sailormn, sailormn, sailormn, ROT0, "Banpresto", "Pretty Soldier Sailor Moon (JUEHTK, Ver. 95/03/22)" , 0 ) // region in eeprom
GAME( 1996, agallet, 0, sailormn, sailormn, agallet, ROT270, "Banpresto / Gazelle", "Air Gallet" , 0 ) // board was taiwan, region in eeprom GAME( 1996, agallet, 0, sailormn, sailormn, agallet, ROT270, "Banpresto / Gazelle", "Air Gallet (JUEHTK)" , 0 ) // board was taiwan, region in eeprom
GAME( 1996, hotdogst, 0, hotdogst, cave, hotdogst, ROT90, "Marble", "Hotdog Storm" , 0 ) GAME( 1996, hotdogst, 0, hotdogst, cave, hotdogst, ROT90, "Marble", "Hotdog Storm (International)" , 0 )
GAME( 1997, ddonpach, 0, ddonpach, cave, ddonpach, ROT270, "Atlus/Cave", "DoDonPachi (International)" , 0 ) GAME( 1997, ddonpach, 0, ddonpach, cave, ddonpach, ROT270, "Atlus/Cave", "DoDonPachi (International, Master Ver. 97/02/05)" , 0 )
GAME( 1997, ddonpchj, ddonpach, ddonpach, cave, ddonpach, ROT270, "Atlus/Cave", "DoDonPachi (Japan)" , 0 ) GAME( 1997, ddonpchj, ddonpach, ddonpach, cave, ddonpach, ROT270, "Atlus/Cave", "DoDonPachi (Japan, Master Ver. 97/02/05)" , 0 )
GAME( 1998, dfeveron, 0, dfeveron, cave, dfeveron, ROT270, "Cave (Nihon System license)", "Dangun Feveron (Japan)" , 0 ) GAME( 1998, dfeveron, feversos, dfeveron, cave, dfeveron, ROT270, "Cave (Nihon System license)", "Dangun Feveron (Japan, Ver. 98/09/17)" , 0 )
GAME( 1998, feversos, dfeveron, dfeveron, cave, feversos, ROT270, "Cave (Nihon System license)", "Fever SOS (International)" , 0 ) GAME( 1998, feversos, 0, dfeveron, cave, feversos, ROT270, "Cave (Nihon System license)", "Fever SOS (International, Ver. 98/09/25)" , 0 )
GAME( 1998, esprade, 0, esprade, cave, esprade, ROT270, "Atlus/Cave", "ESP Ra.De. (International Ver 1998 4/22)", 0 ) GAME( 1998, esprade, 0, esprade, cave, esprade, ROT270, "Atlus/Cave", "ESP Ra.De. (International, Ver. 98/04/22)" , 0 )
GAME( 1998, espradej, esprade, esprade, cave, esprade, ROT270, "Atlus/Cave", "ESP Ra.De. (Japan Ver 1998 4/21)" , 0 ) GAME( 1998, espradej, esprade, esprade, cave, esprade, ROT270, "Atlus/Cave", "ESP Ra.De. (Japan, Ver. 98/04/21)" , 0 )
GAME( 1998, espradeo, esprade, esprade, cave, esprade, ROT270, "Atlus/Cave", "ESP Ra.De. (Japan Ver 1998 4/14)" , 0 ) GAME( 1998, espradeo, esprade, esprade, cave, esprade, ROT270, "Atlus/Cave", "ESP Ra.De. (Japan, Ver. 98/04/14)" , 0 )
GAME( 1998, uopoko, 0, uopoko, cave, uopoko, ROT0, "Cave (Jaleco license)", "Puzzle Uo Poko (International)" , 0 ) GAME( 1998, uopoko, 0, uopoko, cave, uopoko, ROT0, "Cave (Jaleco license)", "Puzzle Uo Poko (International)" , 0 )
GAME( 1998, uopokoj, uopoko, uopoko, cave, uopoko, ROT0, "Cave (Jaleco license)", "Puzzle Uo Poko (Japan)" , 0 ) GAME( 1998, uopokoj, uopoko, uopoko, cave, uopoko, ROT0, "Cave (Jaleco license)", "Puzzle Uo Poko (Japan)" , 0 )
GAME( 1999, guwange, 0, guwange, guwange, guwange, ROT270, "Atlus/Cave", "Guwange (Japan)" , 0 ) GAME( 1999, guwange, 0, guwange, guwange, guwange, ROT270, "Atlus/Cave", "Guwange (Japan, Master Ver. 99/06/24)" , 0 )
GAME( 1999, gaia, 0, gaia, gaia, gaia, ROT0, "Noise Factory", "Gaia Crusaders", GAME_IMPERFECT_SOUND ) // cuts out occasionally GAME( 1999, gaia, 0, gaia, gaia, gaia, ROT0, "Noise Factory", "Gaia Crusaders", GAME_IMPERFECT_SOUND ) // cuts out occasionally
GAME( 2001, theroes, 0, gaia, theroes, gaia, ROT0, "Primetek Investments", "Thunder Heroes", GAME_IMPERFECT_SOUND ) // cuts out occasionally GAME( 2001, theroes, 0, gaia, theroes, gaia, ROT0, "Primetek Investments", "Thunder Heroes", GAME_IMPERFECT_SOUND ) // cuts out occasionally
GAME( 1999, korokoro, 0, korokoro, korokoro, korokoro, ROT0, "Takumi", "Koro Koro Quest (Japan)" , 0 ) GAME( 1999, korokoro, 0, korokoro, korokoro, korokoro, ROT0, "Takumi", "Koro Koro Quest (Japan)" , 0 )

View File

@ -9,9 +9,9 @@ TODO:
Clarify Clarify
- 8ballact: read 1507 no mapped - 8ballact: read 1507 no mapped
- drakton - add dkongjr conversion - drakton - add dkongjr conversion
- dkong3 dma (Z80 dma)
- implement 74LS259 (8bit addressable latches), 74LS175 (QUAD D FlipFlop), 74LS373 (Octal transparent latch) - implement 74LS259 (8bit addressable latches), 74LS175 (QUAD D FlipFlop), 74LS373 (Octal transparent latch)
Done: Done:
- when i am retired: implement 8257 DMA controller - when i am retired: implement 8257 DMA controller
- radarscp_grid_color_w() is wrong, it probably isn't supposed to change - radarscp_grid_color_w() is wrong, it probably isn't supposed to change
@ -54,6 +54,40 @@ Done:
Schematics show, that these boards actually were based on TRS-02 Schematics show, that these boards actually were based on TRS-02
- TKG-4 is a 2 board set. - TKG-4 is a 2 board set.
Couriersud: 12/2007
- changed dkong/radarscp based games to use hardware-conformant I8035 memory maps
- Added drakton clone drktnjr on dkongjr hardware
- wrote M58817 sound driver and hooked it up
Uses tms5110 speech synthesis. LPC format is identical, however coefficients
seem to be different. Until coefficients are known, samples are used.
- moved address remapping proms to REGION_USER1 (hunchbkd & co)
- Service now adds credit
- Hooked up coin_counters
- remove GAME_NOT_WORKING GAME_WRONG_COLORS from hunchbkd
- fixed shootgal0121u4red
- dkongjr: mapped more interface lines between sound board and cpu board
- tagged all inputs, all reads use tag names
- moved more static vars into dkong_state
General notes
The dma8257 is responsible for copying sprite data from 0x6900 (or where ever it is located) to 0x7400 (sprite banks).
2650 based games had a rom for address lookups. This is needed for proper operation of the 8257 code.
Where this was missing, I copied the entry from hunchbkd and marked it as BAD_DUMP.
Additional protection was done by pals. The only driver with a PAL entry is herbiedk.
I added NO_DUMP entries for the other 2650 games.
Thanks to Mike I was able to closer analyze TKG02/03/04 schematics. The radar scope to donkey kong conversions done
should lead to the same discrete sound as TKG04 (2 board boards). However the colours are different.
Red girders are back. Until the release of TKG04, the 2 board release, schematics were largely identical with radar scope.
There were slight modifications from release to release in the analog video logic. Already at TKG2-02(03) the
darlington amplifier for the blue channel was replaced with a emitter one by leaving away (OMIT in schematics)
a resistor and transistor. Later on, TKG3-06, 4066 switches and background generation circuits for radarscope were removed.
I have added a driver configuration switch to switch between TKG4 and TKG2-01 (radarscope) palettes.
At a later stage, a TKG2-02 will be added as well.
Donkey Kong and Donkey Kong Jr. memory map (preliminary) (DKong 3 follows) Donkey Kong and Donkey Kong Jr. memory map (preliminary) (DKong 3 follows)
0000-3fff ROM (Donkey Kong Jr.and Donkey Kong 3: 0000-5fff) 0000-3fff ROM (Donkey Kong Jr.and Donkey Kong 3: 0000-5fff)
@ -290,7 +324,7 @@ static MACHINE_START( dkong2b )
static MACHINE_START( hunchbkd ) static MACHINE_START( hunchbkd )
{ {
UINT8 *p = memory_region(REGION_PROMS); UINT8 *p = memory_region(REGION_USER1);
int i; int i;
dkong_state *state = Machine->driver_data; dkong_state *state = Machine->driver_data;
@ -301,7 +335,7 @@ static MACHINE_START( hunchbkd )
for (i=0;i<0x200;i++) for (i=0;i<0x200;i++)
state->rev_map[i] = -1; state->rev_map[i] = -1;
for (i=0;i<0x200;i++) for (i=0;i<0x200;i++)
state->rev_map[p[0x300+i]] = i; state->rev_map[p[0x0000+i]] = i;
state_save_register_global(state->hunchloopback); state_save_register_global(state->hunchloopback);
@ -438,6 +472,11 @@ static void p8257_ctl_w(UINT8 data)
* *
*************************************/ *************************************/
static WRITE8_HANDLER( dkong3_coin_counter_w )
{
coin_counter_w(offset, data & 0x01);
}
static WRITE8_HANDLER( p8257_drq_w ) static WRITE8_HANDLER( p8257_drq_w )
{ {
dma8257_drq_write(0, 0, data & 0x01); dma8257_drq_write(0, 0, data & 0x01);
@ -446,7 +485,13 @@ static WRITE8_HANDLER( p8257_drq_w )
static READ8_HANDLER( dkong_in2_r ) static READ8_HANDLER( dkong_in2_r )
{ {
return (readinputportbytag("IN2") & 0xBF) | (dkong_audio_status_r(0) << 6); UINT8 r;
r = (readinputportbytag("IN2") & 0xBF) | (dkong_audio_status_r(0) << 6);
coin_counter_w(offset, r >> 7);
if (r & 0x10)
r = (r & ~0x10) | 0x80; /* service ==> coint */
return r;
} }
static READ8_HANDLER( hunchbkd_mirror_r ) static READ8_HANDLER( hunchbkd_mirror_r )
@ -574,13 +619,6 @@ static WRITE8_HANDLER( dkong3_2a03_reset_w )
} }
} }
/*************************************
*
* NVRAM handling
*
*************************************/
/************************************* /*************************************
* *
@ -591,19 +629,19 @@ static WRITE8_HANDLER( dkong3_2a03_reset_w )
static ADDRESS_MAP_START( dkong_map, ADDRESS_SPACE_PROGRAM, 8 ) static ADDRESS_MAP_START( dkong_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x3fff) AM_ROM AM_RANGE(0x0000, 0x3fff) AM_ROM
AM_RANGE(0x6000, 0x6bff) AM_RAM AM_RANGE(0x6000, 0x6bff) AM_RAM
AM_RANGE(0x7000, 0x73ff) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size) /* sprite set 1 */ AM_RANGE(0x7000, 0x73ff) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size) /* sprite set 1 */
AM_RANGE(0x7400, 0x77ff) AM_READWRITE(MRA8_RAM, dkong_videoram_w) AM_BASE(&videoram) AM_RANGE(0x7400, 0x77ff) AM_READWRITE(MRA8_RAM, dkong_videoram_w) AM_BASE(&videoram)
AM_RANGE(0x7800, 0x780f) AM_READWRITE(dma8257_0_r, dma8257_0_w) /* P8257 control registers */ AM_RANGE(0x7800, 0x780f) AM_READWRITE(dma8257_0_r, dma8257_0_w) /* P8257 control registers */
AM_RANGE(0x7c00, 0x7c00) AM_READWRITE(input_port_0_r, dkong_sh_tuneselect_w) /* IN0, sound CPU intf */ AM_RANGE(0x7c00, 0x7c00) AM_READ_PORT("IN0") AM_WRITE(dkong_sh_tuneselect_w) /* IN0, sound CPU intf */
AM_RANGE(0x7c80, 0x7c80) AM_READWRITE(input_port_1_r, radarscp_grid_color_w) /* IN1 */ AM_RANGE(0x7c80, 0x7c80) AM_READ_PORT("IN1") AM_WRITE(radarscp_grid_color_w) /* IN1 */
AM_RANGE(0x7d00, 0x7d00) AM_READ(dkong_in2_r) /* IN2/DSW2 */ AM_RANGE(0x7d00, 0x7d00) AM_READ(dkong_in2_r) /* IN2 */
AM_RANGE(0x7d00, 0x7d07) AM_WRITE(dkong_snd_disc_w) /* Sound signals */ AM_RANGE(0x7d00, 0x7d07) AM_WRITE(dkong_snd_disc_w) /* Sound signals */
AM_RANGE(0x7d80, 0x7d80) AM_READWRITE(input_port_3_r, dkong_audio_irq_w) /* DSW1 */ AM_RANGE(0x7d80, 0x7d80) AM_READ_PORT("DSW0") AM_WRITE(dkong_audio_irq_w) /* DSW0 */
AM_RANGE(0x7d81, 0x7d81) AM_WRITE(radarscp_grid_enable_w) AM_RANGE(0x7d81, 0x7d81) AM_WRITE(radarscp_grid_enable_w)
AM_RANGE(0x7d82, 0x7d82) AM_WRITE(dkong_flipscreen_w) AM_RANGE(0x7d82, 0x7d82) AM_WRITE(dkong_flipscreen_w)
AM_RANGE(0x7d83, 0x7d83) AM_WRITE(dkong_spritebank_w) /* 2 PSL Signal */ AM_RANGE(0x7d83, 0x7d83) AM_WRITE(dkong_spritebank_w) /* 2 PSL Signal */
AM_RANGE(0x7d84, 0x7d84) AM_WRITE(interrupt_enable_w) AM_RANGE(0x7d84, 0x7d84) AM_WRITE(interrupt_enable_w)
AM_RANGE(0x7d85, 0x7d85) AM_WRITE(p8257_drq_w) /* P8257 ==> /DRQ0 /DRQ1 */ AM_RANGE(0x7d85, 0x7d85) AM_WRITE(p8257_drq_w) /* P8257 ==> /DRQ0 /DRQ1 */
AM_RANGE(0x7d86, 0x7d87) AM_WRITE(dkong_palettebank_w) AM_RANGE(0x7d86, 0x7d87) AM_WRITE(dkong_palettebank_w)
ADDRESS_MAP_END ADDRESS_MAP_END
@ -614,19 +652,21 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( hunchbkd_map, ADDRESS_SPACE_PROGRAM, 8 ) static ADDRESS_MAP_START( hunchbkd_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x0fff) AM_ROM AM_RANGE(0x0000, 0x0fff) AM_ROM
AM_RANGE(0x1000, 0x13ff) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size) /* 0x7000 */ AM_RANGE(0x1000, 0x13ff) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size) /* 0x7000 */
AM_RANGE(0x1400, 0x1400) AM_READWRITE(input_port_0_r, dkong_sh_tuneselect_w) AM_RANGE(0x1400, 0x1400) AM_READ_PORT("IN0") AM_WRITE(dkong_sh_tuneselect_w)
AM_RANGE(0x1480, 0x1480) AM_READ(input_port_1_r) AM_RANGE(0x1480, 0x1480) AM_READ_PORT("IN1")
AM_RANGE(0x1500, 0x1500) AM_READ(input_port_2_r) /* IN2/DSW2 */ AM_RANGE(0x1500, 0x1500) AM_READ(dkong_in2_r) /* IN2 */
AM_RANGE(0x1580, 0x1580) AM_READWRITE(input_port_3_r, dkong_audio_irq_w) /* DSW1 */ AM_RANGE(0x1500, 0x1507) AM_WRITE(dkong_snd_disc_w) /* Sound signals */
AM_RANGE(0x1580, 0x1580) AM_READ_PORT("DSW0") AM_WRITE(dkong_audio_irq_w) /* DSW0 */
AM_RANGE(0x1582, 0x1582) AM_WRITE(dkong_flipscreen_w) AM_RANGE(0x1582, 0x1582) AM_WRITE(dkong_flipscreen_w)
AM_RANGE(0x1584, 0x1584) AM_NOP /* Possibly still interupt enable */ AM_RANGE(0x1583, 0x1583) AM_WRITE(dkong_spritebank_w) /* 2 PSL Signal */
AM_RANGE(0x1585, 0x1585) AM_WRITE(p8257_drq_w) /* P8257 ==> /DRQ0 /DRQ1 */ AM_RANGE(0x1584, 0x1584) AM_NOP /* Possibly still interupt enable */
AM_RANGE(0x1585, 0x1585) AM_WRITE(p8257_drq_w) /* P8257 ==> /DRQ0 /DRQ1 */
AM_RANGE(0x1586, 0x1587) AM_WRITE(dkong_palettebank_w) AM_RANGE(0x1586, 0x1587) AM_WRITE(dkong_palettebank_w)
AM_RANGE(0x1600, 0x17ff) AM_RAM /* 0x6400 spriteram location */ AM_RANGE(0x1600, 0x17ff) AM_RAM /* 0x6400 spriteram location */
AM_RANGE(0x1800, 0x1bff) AM_READWRITE(MRA8_RAM, dkong_videoram_w) AM_BASE(&videoram) /* 0x7400 */ AM_RANGE(0x1800, 0x1bff) AM_READWRITE(MRA8_RAM, dkong_videoram_w) AM_BASE(&videoram) /* 0x7400 */
AM_RANGE(0x1C00, 0x1f7f) AM_RAM /* 0x6000 */ AM_RANGE(0x1C00, 0x1f7f) AM_RAM /* 0x6000 */
AM_RANGE(0x1f80, 0x1f8f) AM_READWRITE(dma8257_0_r, dma8257_0_w) /* P8257 control registers */ AM_RANGE(0x1f80, 0x1f8f) AM_READWRITE(dma8257_0_r, dma8257_0_w) /* P8257 control registers */
/* 0x6800 not remapped */ /* 0x6800 not remapped */
AM_RANGE(0x2000, 0x2fff) AM_ROM AM_RANGE(0x2000, 0x2fff) AM_ROM
AM_RANGE(0x3000, 0x3fff) AM_READWRITE(hunchbkd_mirror_r, hunchbkd_mirror_w) AM_RANGE(0x3000, 0x3fff) AM_READWRITE(hunchbkd_mirror_r, hunchbkd_mirror_w)
@ -639,31 +679,31 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( hunchbkd_io_map, ADDRESS_SPACE_IO, 8 ) static ADDRESS_MAP_START( hunchbkd_io_map, ADDRESS_SPACE_IO, 8 )
AM_RANGE(0x00, 0x00) AM_READ(hunchbkd_port0_r) AM_RANGE(0x00, 0x00) AM_READ(hunchbkd_port0_r)
AM_RANGE(0x01, 0x01) AM_READ(hunchbkd_port1_r) AM_RANGE(0x01, 0x01) AM_READ(hunchbkd_port1_r)
AM_RANGE(S2650_SENSE_PORT, S2650_SENSE_PORT) AM_READ(input_port_4_r) AM_RANGE(S2650_SENSE_PORT, S2650_SENSE_PORT) AM_READ_PORT("SENSE")
AM_RANGE(S2650_DATA_PORT, S2650_DATA_PORT) AM_WRITE(hunchbkd_data_w) AM_RANGE(S2650_DATA_PORT, S2650_DATA_PORT) AM_WRITE(hunchbkd_data_w)
ADDRESS_MAP_END ADDRESS_MAP_END
static ADDRESS_MAP_START( herbiedk_io_map, ADDRESS_SPACE_IO, 8 ) static ADDRESS_MAP_START( herbiedk_io_map, ADDRESS_SPACE_IO, 8 )
AM_RANGE(0x01, 0x01) AM_READ(herbiedk_port1_r) AM_RANGE(0x01, 0x01) AM_READ(herbiedk_port1_r)
AM_RANGE(S2650_SENSE_PORT, S2650_SENSE_PORT) AM_READ(input_port_4_r) AM_RANGE(S2650_SENSE_PORT, S2650_SENSE_PORT) AM_READ_PORT("SENSE")
AM_RANGE(S2650_DATA_PORT, S2650_DATA_PORT) AM_WRITE(hunchbkd_data_w) AM_RANGE(S2650_DATA_PORT, S2650_DATA_PORT) AM_WRITE(hunchbkd_data_w)
ADDRESS_MAP_END ADDRESS_MAP_END
static ADDRESS_MAP_START( spclforc_io_map, ADDRESS_SPACE_IO, 8 ) static ADDRESS_MAP_START( spclforc_io_map, ADDRESS_SPACE_IO, 8 )
AM_RANGE(0x00, 0x00) AM_READ(spclforc_port0_r) AM_RANGE(0x00, 0x00) AM_READ(spclforc_port0_r)
AM_RANGE(S2650_SENSE_PORT, S2650_SENSE_PORT) AM_READ(input_port_4_r) AM_RANGE(S2650_SENSE_PORT, S2650_SENSE_PORT) AM_READ_PORT("SENSE")
AM_RANGE(S2650_DATA_PORT, S2650_DATA_PORT) AM_WRITE(hunchbkd_data_w) AM_RANGE(S2650_DATA_PORT, S2650_DATA_PORT) AM_WRITE(hunchbkd_data_w)
ADDRESS_MAP_END ADDRESS_MAP_END
static ADDRESS_MAP_START( eightact_io_map, ADDRESS_SPACE_IO, 8 ) static ADDRESS_MAP_START( eightact_io_map, ADDRESS_SPACE_IO, 8 )
AM_RANGE(0x01, 0x01) AM_READ(eightact_port1_r) AM_RANGE(0x01, 0x01) AM_READ(eightact_port1_r)
AM_RANGE(S2650_SENSE_PORT, S2650_SENSE_PORT) AM_READ(input_port_4_r) AM_RANGE(S2650_SENSE_PORT, S2650_SENSE_PORT)AM_READ_PORT("SENSE")
AM_RANGE(S2650_DATA_PORT, S2650_DATA_PORT) AM_WRITE(hunchbkd_data_w) AM_RANGE(S2650_DATA_PORT, S2650_DATA_PORT) AM_WRITE(hunchbkd_data_w)
ADDRESS_MAP_END ADDRESS_MAP_END
static ADDRESS_MAP_START( shootgal_io_map, ADDRESS_SPACE_IO, 8 ) static ADDRESS_MAP_START( shootgal_io_map, ADDRESS_SPACE_IO, 8 )
AM_RANGE(0x00, 0x00) AM_READ(shootgal_port0_r) AM_RANGE(0x00, 0x00) AM_READ(shootgal_port0_r)
AM_RANGE(S2650_SENSE_PORT, S2650_SENSE_PORT) AM_READ(input_port_4_r) AM_RANGE(S2650_SENSE_PORT, S2650_SENSE_PORT) AM_READ_PORT("SENSE")
AM_RANGE(S2650_DATA_PORT, S2650_DATA_PORT) AM_WRITE(hunchbkd_data_w) AM_RANGE(S2650_DATA_PORT, S2650_DATA_PORT) AM_WRITE(hunchbkd_data_w)
ADDRESS_MAP_END ADDRESS_MAP_END
@ -674,16 +714,18 @@ static ADDRESS_MAP_START( dkong3_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x6a80, 0x6cff) AM_RAM /* 0x6b00: sprite set 2 */ AM_RANGE(0x6a80, 0x6cff) AM_RAM /* 0x6b00: sprite set 2 */
AM_RANGE(0x6d00, 0x6fff) AM_RAM /* ???? */ AM_RANGE(0x6d00, 0x6fff) AM_RAM /* ???? */
AM_RANGE(0x7400, 0x77ff) AM_READWRITE(MRA8_RAM, dkong_videoram_w) AM_BASE(&videoram) AM_RANGE(0x7400, 0x77ff) AM_READWRITE(MRA8_RAM, dkong_videoram_w) AM_BASE(&videoram)
AM_RANGE(0x7c00, 0x7c00) AM_READWRITE(input_port_0_r, soundlatch_w) AM_RANGE(0x7c00, 0x7c00) AM_READ_PORT("IN0") AM_WRITE(soundlatch_w)
AM_RANGE(0x7c80, 0x7c80) AM_READWRITE(input_port_1_r, soundlatch2_w) AM_RANGE(0x7c80, 0x7c80) AM_READ_PORT("IN1") AM_WRITE(soundlatch2_w)
AM_RANGE(0x7d00, 0x7d00) AM_READWRITE(input_port_2_r, soundlatch3_w) AM_RANGE(0x7d00, 0x7d00) AM_READ_PORT("DSW0") AM_WRITE(soundlatch3_w)
AM_RANGE(0x7d80, 0x7d80) AM_READWRITE(input_port_3_r, dkong3_2a03_reset_w) AM_RANGE(0x7d80, 0x7d80) AM_READ_PORT("DSW1") AM_WRITE(dkong3_2a03_reset_w)
AM_RANGE(0x7e80, 0x7e80) AM_WRITE(dkong3_coin_counter_w)
AM_RANGE(0x7e81, 0x7e81) AM_WRITE(dkong3_gfxbank_w) AM_RANGE(0x7e81, 0x7e81) AM_WRITE(dkong3_gfxbank_w)
AM_RANGE(0x7e82, 0x7e82) AM_WRITE(dkong_flipscreen_w) AM_RANGE(0x7e82, 0x7e82) AM_WRITE(dkong_flipscreen_w)
AM_RANGE(0x7e83, 0x7e83) AM_WRITE(dkong_spritebank_w) /* 2 PSL Signal */
AM_RANGE(0x7e84, 0x7e84) AM_WRITE(interrupt_enable_w) AM_RANGE(0x7e84, 0x7e84) AM_WRITE(interrupt_enable_w)
AM_RANGE(0x7e85, 0x7e85) AM_NOP /* ==> DMA Chip */ AM_RANGE(0x7e85, 0x7e85) AM_NOP /* ==> DMA Chip */
AM_RANGE(0x7e86, 0x7e87) AM_WRITE(dkong_palettebank_w) AM_RANGE(0x7e86, 0x7e87) AM_WRITE(dkong_palettebank_w)
AM_RANGE(0x8000, 0x9fff) AM_ROM /* DK3 and bootleg DKjr only */ AM_RANGE(0x8000, 0x9fff) AM_ROM /* DK3 and bootleg DKjr only */
ADDRESS_MAP_END ADDRESS_MAP_END
static ADDRESS_MAP_START( dkong3_io_map, ADDRESS_SPACE_IO, 8 ) static ADDRESS_MAP_START( dkong3_io_map, ADDRESS_SPACE_IO, 8 )
@ -694,25 +736,25 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( dkongjr_map, ADDRESS_SPACE_PROGRAM, 8 ) static ADDRESS_MAP_START( dkongjr_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x0000, 0x5fff) AM_ROM AM_RANGE(0x0000, 0x5fff) AM_ROM
AM_RANGE(0x6000, 0x6bff) AM_RAM AM_RANGE(0x6000, 0x6bff) AM_RAM
AM_RANGE(0x6c00, 0x6fff) AM_RAM /* DK3 bootleg only */ AM_RANGE(0x6c00, 0x6fff) AM_RAM /* DK3 bootleg only */
AM_RANGE(0x7000, 0x73ff) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size) /* sprite set 1 */ AM_RANGE(0x7000, 0x73ff) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size) /* sprite set 1 */
AM_RANGE(0x7400, 0x77ff) AM_READWRITE(MRA8_RAM, dkong_videoram_w) AM_BASE(&videoram) AM_RANGE(0x7400, 0x77ff) AM_READWRITE(MRA8_RAM, dkong_videoram_w) AM_BASE(&videoram)
AM_RANGE(0x7800, 0x780f) AM_READWRITE(dma8257_0_r, dma8257_0_w) /* P8257 control registers */ AM_RANGE(0x7800, 0x780f) AM_READWRITE(dma8257_0_r, dma8257_0_w) /* P8257 control registers */
AM_RANGE(0x7c00, 0x7c00) AM_READWRITE(input_port_0_r, dkongjr_sh_tuneselect_w) AM_RANGE(0x7c00, 0x7c00) AM_READ_PORT("IN0") AM_WRITE(dkongjr_sh_tuneselect_w)
AM_RANGE(0x7c80, 0x7c80) AM_READWRITE(input_port_1_r, dkongjr_gfxbank_w) AM_RANGE(0x7c80, 0x7c80) AM_READ_PORT("IN1") AM_WRITE(dkongjr_gfxbank_w)
AM_RANGE(0x7c81, 0x7c81) AM_WRITE(dkongjr_sh_test6_w) AM_RANGE(0x7c81, 0x7c81) AM_WRITE(dkongjr_sh_test6_w)
AM_RANGE(0x7d00, 0x7d00) AM_READ(dkong_in2_r) /* IN2/DSW2 */ AM_RANGE(0x7d00, 0x7d00) AM_READ(dkong_in2_r) /* IN2 */
AM_RANGE(0x7d00, 0x7d07) AM_WRITE(dkongjr_snd_w1) /* Sound addrs */ AM_RANGE(0x7d80, 0x7d80) AM_READ_PORT("DSW0") /* DSW0 */
AM_RANGE(0x7d80, 0x7d80) AM_READ(input_port_3_r) /* DSW1 */ AM_RANGE(0x7d00, 0x7d07) AM_WRITE(dkongjr_snd_w1) /* Sound addrs */
AM_RANGE(0x7d80, 0x7d81) AM_WRITE(dkongjr_snd_w2) /* Sound addrs */ AM_RANGE(0x7d80, 0x7d81) AM_WRITE(dkongjr_snd_w2) /* Sound addrs */
AM_RANGE(0x7d82, 0x7d82) AM_WRITE(dkong_flipscreen_w) AM_RANGE(0x7d82, 0x7d82) AM_WRITE(dkong_flipscreen_w)
AM_RANGE(0x7d83, 0x7d83) AM_WRITE(dkong_spritebank_w) /* 2 PSL Signal */ AM_RANGE(0x7d83, 0x7d83) AM_WRITE(dkong_spritebank_w) /* 2 PSL Signal */
AM_RANGE(0x7d84, 0x7d84) AM_WRITE(interrupt_enable_w) AM_RANGE(0x7d84, 0x7d84) AM_WRITE(interrupt_enable_w)
AM_RANGE(0x7d85, 0x7d85) AM_WRITE(p8257_drq_w) /* P8257 ==> /DRQ0 /DRQ1 */ AM_RANGE(0x7d85, 0x7d85) AM_WRITE(p8257_drq_w) /* P8257 ==> /DRQ0 /DRQ1 */
AM_RANGE(0x7d86, 0x7d87) AM_WRITE(dkong_palettebank_w) AM_RANGE(0x7d86, 0x7d87) AM_WRITE(dkong_palettebank_w)
AM_RANGE(0x8000, 0x9fff) AM_ROM /* bootleg DKjr only */ AM_RANGE(0x8000, 0x9fff) AM_ROM /* bootleg DKjr only */
AM_RANGE(0xb000, 0xbfff) AM_ROM /* pestplce only */ AM_RANGE(0xb000, 0xbfff) AM_ROM /* pestplce only */
AM_RANGE(0xd000, 0xdfff) AM_ROM /* DK3 bootleg only */ AM_RANGE(0xd000, 0xdfff) AM_ROM /* DK3 bootleg only */
ADDRESS_MAP_END ADDRESS_MAP_END
@ -800,15 +842,14 @@ static INPUT_PORTS_START( dkong_in2 )
* It should be a IPT_UNKNOWN. In fact, it will reset the game. * It should be a IPT_UNKNOWN. In fact, it will reset the game.
*/ */
PORT_START_TAG("IN2") /* IN2 */ PORT_START_TAG("IN2") /* IN2 */
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SERVICE ) PORT_NAME(DEF_STR( Service_Mode )) PORT_CODE(KEYCODE_F2) PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN ) /* connection not labeled in schematics - reset */
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNKNOWN ) /* connection not labeled in schematics */ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNKNOWN ) /* connection not labeled in schematics - freeze or reset */
/* This may freeze or reset dkong */
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START1 ) PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START1 )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_START2 ) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_START2 )
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN ) /* not connected - held to high */ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_SERVICE ) /* not connected - held to high - used as service */
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN ) /* not connected - held to high */ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN ) /* not connected - held to high */
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_SPECIAL ) /* status from sound cpu */ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_SPECIAL ) /* status from sound cpu */
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_COIN1 ) PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_COIN1 )
INPUT_PORTS_END INPUT_PORTS_END
static INPUT_PORTS_START( dkong_dsw0 ) static INPUT_PORTS_START( dkong_dsw0 )
@ -860,18 +901,8 @@ INPUT_PORTS_END
static INPUT_PORTS_START( radarscp ) static INPUT_PORTS_START( radarscp )
PORT_INCLUDE( radarscp_in0_2 ) PORT_INCLUDE( radarscp_in0_2 )
PORT_INCLUDE( radarscp_in1_2 ) PORT_INCLUDE( radarscp_in1_2 )
/* Bit 0x80 is (SERVICE OR COIN) !
* Bit 0x01 is going to the connector and is labeled test switch
* It should be a IPT_UNUSED. In fact, it will reset the game.
*/
PORT_INCLUDE( dkong_in2 ) PORT_INCLUDE( dkong_in2 )
PORT_MODIFY("IN2")
PORT_DIPNAME( 0x10, 0x10, "TP3" )
PORT_DIPSETTING( 0x00, "Gnd" )
PORT_DIPSETTING( 0x10, "Open" )
PORT_DIPNAME( 0x20, 0x20, "TP5" )
PORT_DIPSETTING( 0x00, "Gnd" )
PORT_DIPSETTING( 0x20, "Open" )
PORT_INCLUDE( dkong_dsw0 ) PORT_INCLUDE( dkong_dsw0 )
@ -1007,7 +1038,7 @@ static INPUT_PORTS_START( hunchbkd )
PORT_DIPSETTING( 0x08, "40000" ) PORT_DIPSETTING( 0x08, "40000" )
PORT_DIPSETTING( 0x0c, "80000" ) PORT_DIPSETTING( 0x0c, "80000" )
PORT_START /* Sense */ PORT_START_TAG("SENSE") /* Sense */
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_VBLANK ) PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_VBLANK )
PORT_INCLUDE( dkong_config ) PORT_INCLUDE( dkong_config )
@ -1022,8 +1053,10 @@ static INPUT_PORTS_START( shootgal )
PORT_INCLUDE( dkong_in2 ) PORT_INCLUDE( dkong_in2 )
PORT_MODIFY("IN2") PORT_MODIFY("IN2")
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("Start 1 / P1 Button 1") PORT_PLAYER(1)
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("Start 2 / P1 Button 2") PORT_PLAYER(1)
//PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN )
//PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
PORT_START_TAG("DSW0") /* DSW0 */ PORT_START_TAG("DSW0") /* DSW0 */
PORT_DIPNAME( 0x01, 0x00, "1" ) PORT_DIPNAME( 0x01, 0x00, "1" )
@ -1171,8 +1204,6 @@ static INPUT_PORTS_START( pestplce )
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
PORT_INCLUDE( dkong_in2 ) PORT_INCLUDE( dkong_in2 )
PORT_MODIFY("IN2")
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN )
PORT_START_TAG("DSW0") /* DSW0 */ PORT_START_TAG("DSW0") /* DSW0 */
PORT_DIPNAME( 0x03, 0x00, DEF_STR( Lives ) ) PORT_DIPNAME( 0x03, 0x00, DEF_STR( Lives ) )
@ -1288,8 +1319,6 @@ static INPUT_PORTS_START( drakton )
PORT_INCLUDE( dkong_in1_4 ) PORT_INCLUDE( dkong_in1_4 )
PORT_INCLUDE( dkong_in2 ) PORT_INCLUDE( dkong_in2 )
PORT_MODIFY("IN2")
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN )
PORT_START_TAG("DSW0") /* DSW0 */ PORT_START_TAG("DSW0") /* DSW0 */
PORT_DIPNAME( 0x01, 0x01, DEF_STR( Demo_Sounds ) ) PORT_DIPNAME( 0x01, 0x01, DEF_STR( Demo_Sounds ) )
@ -1343,8 +1372,6 @@ static INPUT_PORTS_START( strtheat )
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
PORT_INCLUDE( dkong_in2 ) PORT_INCLUDE( dkong_in2 )
PORT_MODIFY("IN2")
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN )
PORT_START_TAG("DSW0") /* DSW0 */ PORT_START_TAG("DSW0") /* DSW0 */
PORT_DIPNAME( 0x01, 0x01, DEF_STR( Demo_Sounds ) ) PORT_DIPNAME( 0x01, 0x01, DEF_STR( Demo_Sounds ) )
@ -1387,59 +1414,38 @@ INPUT_PORTS_END
* *
*************************************/ *************************************/
static const gfx_layout charlayout =
{
8,8, /* 8*8 characters */
RGN_FRAC(1,2),
2, /* 2 bits per pixel */
{ RGN_FRAC(1,2), RGN_FRAC(0,2) }, /* the two bitplanes are separated */
{ 0, 1, 2, 3, 4, 5, 6, 7 }, /* pretty straightforward layout */
{ 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
8*8 /* every char takes 8 consecutive bytes */
};
static const gfx_layout spritelayout = static const gfx_layout spritelayout =
{ {
16,16, /* 16*16 sprites */ 16,16, /* 16*16 sprites */
RGN_FRAC(1,4), /* 128 sprites */ RGN_FRAC(1,4), /* 128 sprites */
2, /* 2 bits per pixel */ 2, /* 2 bits per pixel */
{ RGN_FRAC(1,2), RGN_FRAC(0,2) }, /* the two bitplanes are separated */ { RGN_FRAC(1,2), RGN_FRAC(0,2) }, /* the two bitplanes are separated */
{ 0, 1, 2, 3, 4, 5, 6, 7, /* the two halves of the sprite are separated */ { STEP8(0,1), STEP8(RGN_FRAC(1,4),1) }, /* the two halves of the sprite are separated */
RGN_FRAC(1,4)+0, RGN_FRAC(1,4)+1, RGN_FRAC(1,4)+2, RGN_FRAC(1,4)+3, RGN_FRAC(1,4)+4, RGN_FRAC(1,4)+5, RGN_FRAC(1,4)+6, RGN_FRAC(1,4)+7 }, { STEP16(0,8) },
{ 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8, 16*8 /* every sprite takes 16 consecutive bytes */
8*8, 9*8, 10*8, 11*8, 12*8, 13*8, 14*8, 15*8 },
16*8 /* every sprite takes 16 consecutive bytes */
}; };
static const gfx_layout pestplce_spritelayout = static const gfx_layout pestplce_spritelayout =
{ {
16,16, /* 16*16 sprites */ 16,16, /* 16*16 sprites */
256, /* 256 sprites */ RGN_FRAC(1,2), /* 256 sprites */
2, /* 2 bits per pixel */ 2, /* 2 bits per pixel */
{ 0, 256*16*16 }, /* the two bitplanes are separated */ { RGN_FRAC(1,2), RGN_FRAC(0,2) }, /* the two bitplanes are separated */
{ 0, 1, 2, 3, 4, 5, 6, 7, /* the two halves of the sprite are separated */ { STEP8(0,1), STEP8(RGN_FRAC(1,4),1) }, /* the two halves of the sprite are separated */
256*16*8+0, 256*16*8+1, 256*16*8+2, 256*16*8+3, 256*16*8+4, 256*16*8+5, 256*16*8+6, 256*16*8+7 }, { STEP16(0,8) },
{ 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8, 16*8 /* every sprite takes 16 consecutive bytes */
8*8, 9*8, 10*8, 11*8, 12*8, 13*8, 14*8, 15*8 },
16*8 /* every sprite takes 16 consecutive bytes */
}; };
static GFXDECODE_START( dkong ) static GFXDECODE_START( dkong )
GFXDECODE_ENTRY( REGION_GFX1, 0x0000, charlayout, 0, 64 ) GFXDECODE_ENTRY( REGION_GFX1, 0x0000, gfx_8x8x2_planar, 0, 64 )
GFXDECODE_ENTRY( REGION_GFX2, 0x0000, spritelayout, 0, 64 ) GFXDECODE_ENTRY( REGION_GFX2, 0x0000, spritelayout, 0, 64 )
GFXDECODE_END GFXDECODE_END
static GFXDECODE_START( pestplce ) static GFXDECODE_START( pestplce )
GFXDECODE_ENTRY( REGION_GFX1, 0x0000, charlayout, 0, 64 ) GFXDECODE_ENTRY( REGION_GFX1, 0x0000, gfx_8x8x2_planar, 0, 64 )
GFXDECODE_ENTRY( REGION_GFX2, 0x0000, pestplce_spritelayout, 0, 64 ) GFXDECODE_ENTRY( REGION_GFX2, 0x0000, pestplce_spritelayout, 0, 64 )
GFXDECODE_END GFXDECODE_END
/*************************************
*
* Sound interfaces
*
*************************************/
/************************************* /*************************************
* *
@ -1527,22 +1533,13 @@ static MACHINE_DRIVER_START( hunchbkd )
MACHINE_DRIVER_END MACHINE_DRIVER_END
static MACHINE_DRIVER_START( epos )
MDRV_IMPORT_FROM(dkong2b)
MDRV_CPU_MODIFY("main")
MDRV_CPU_IO_MAP(epos_readport,0)
MACHINE_DRIVER_END
static MACHINE_DRIVER_START( dkong3 ) static MACHINE_DRIVER_START( dkong3 )
/* driver data */ /* driver data */
MDRV_DRIVER_DATA(dkong_state) MDRV_DRIVER_DATA(dkong_state)
/* basic machine hardware */ /* basic machine hardware */
MDRV_CPU_ADD(Z80,8000000/2) /* 4 MHz */ MDRV_CPU_ADD_TAG("main", Z80, 8000000/2) /* 4 MHz */
MDRV_CPU_PROGRAM_MAP(dkong3_map, 0) MDRV_CPU_PROGRAM_MAP(dkong3_map, 0)
MDRV_CPU_IO_MAP(0, dkong3_io_map) MDRV_CPU_IO_MAP(0, dkong3_io_map)
MDRV_CPU_VBLANK_INT(nmi_line_pulse,1) MDRV_CPU_VBLANK_INT(nmi_line_pulse,1)
@ -1628,7 +1625,6 @@ static MACHINE_DRIVER_START( shootgal )
MDRV_CPU_IO_MAP(shootgal_io_map, 0) MDRV_CPU_IO_MAP(shootgal_io_map, 0)
MACHINE_DRIVER_END MACHINE_DRIVER_END
static MACHINE_DRIVER_START( dkong3b ) static MACHINE_DRIVER_START( dkong3b )
/* basic machine hardware */ /* basic machine hardware */
@ -1636,19 +1632,35 @@ static MACHINE_DRIVER_START( dkong3b )
MDRV_PALETTE_INIT(dkong3) MDRV_PALETTE_INIT(dkong3)
MACHINE_DRIVER_END MACHINE_DRIVER_END
static MACHINE_DRIVER_START( strtheat ) static MACHINE_DRIVER_START( strtheat )
/* basic machine hardware */ /* basic machine hardware */
MDRV_IMPORT_FROM(epos) MDRV_IMPORT_FROM(dkong2b)
MDRV_CPU_MODIFY("main")
MDRV_CPU_IO_MAP(epos_readport,0)
MDRV_MACHINE_RESET(strtheat) MDRV_MACHINE_RESET(strtheat)
MACHINE_DRIVER_END MACHINE_DRIVER_END
static MACHINE_DRIVER_START( drakton ) static MACHINE_DRIVER_START( drakton )
/* basic machine hardware */ /* basic machine hardware */
MDRV_IMPORT_FROM(epos) MDRV_IMPORT_FROM(dkong2b)
MDRV_CPU_MODIFY("main")
MDRV_CPU_IO_MAP(epos_readport,0)
MDRV_MACHINE_RESET(drakton) MDRV_MACHINE_RESET(drakton)
MACHINE_DRIVER_END MACHINE_DRIVER_END
static MACHINE_DRIVER_START( drktnjr )
/* basic machine hardware */
MDRV_IMPORT_FROM(dkongjr)
MDRV_CPU_MODIFY("main")
MDRV_CPU_IO_MAP(epos_readport,0)
MDRV_MACHINE_RESET(drakton)
MACHINE_DRIVER_END
/************************************* /*************************************
* *
@ -1664,8 +1676,10 @@ ROM_START( radarscp )
ROM_LOAD( "trs2c5kc", 0x3000, 0x1000, CRC(1f0101f7) SHA1(b9f988847fdefa64dfeae06c2244215cb0d64dbe) ) ROM_LOAD( "trs2c5kc", 0x3000, 0x1000, CRC(1f0101f7) SHA1(b9f988847fdefa64dfeae06c2244215cb0d64dbe) )
/* space for diagnostic ROM */ /* space for diagnostic ROM */
ROM_REGION( 0x1000, REGION_CPU2, 0 ) /* sound */ ROM_REGION( 0x1800, REGION_CPU2, 0 ) /* sound */
ROM_LOAD( "trs2s3i", 0x0000, 0x0800, CRC(78034f14) SHA1(548b44ac69f39df6687da1c0f60968009b1e0767) ) ROM_LOAD( "trs2s3i", 0x0000, 0x0800, CRC(78034f14) SHA1(548b44ac69f39df6687da1c0f60968009b1e0767) )
ROM_RELOAD( 0x0800, 0x0800 )
ROM_FILL( 0x1000, 0x0800, 0xFF )
/* socket 3J is empty */ /* socket 3J is empty */
ROM_REGION( 0x1000, REGION_GFX1, ROMREGION_DISPOSE ) ROM_REGION( 0x1000, REGION_GFX1, ROMREGION_DISPOSE )
@ -1695,9 +1709,10 @@ ROM_START( radarsc1 )
ROM_LOAD( "trs01_5k", 0x3000, 0x1000, CRC(1f0101f7) SHA1(b9f988847fdefa64dfeae06c2244215cb0d64dbe) ) ROM_LOAD( "trs01_5k", 0x3000, 0x1000, CRC(1f0101f7) SHA1(b9f988847fdefa64dfeae06c2244215cb0d64dbe) )
/* space for diagnostic ROM */ /* space for diagnostic ROM */
//FIXME other drivers need to be updated ROM_REGION( 0x1800, REGION_CPU2, 0 ) /* sound */
ROM_REGION( 0x1000, REGION_CPU2, 0 ) /* sound */ ROM_LOAD( "trs015aa.bin", 0x0000, 0x0800, CRC(5166554c) SHA1(00bf501ca448929f6187598da6fdbc1ea488745a) )
ROM_LOAD( "trs015aa.bin", 0x0000, 0x0800, CRC(5166554c) SHA1(00bf501ca448929f6187598da6fdbc1ea488745a) ) ROM_RELOAD( 0x0800, 0x0800 )
ROM_FILL( 0x1000, 0x0800, 0xFF )
ROM_REGION( 0x0800, REGION_SOUND1, 0 ) /* speech rom */ ROM_REGION( 0x0800, REGION_SOUND1, 0 ) /* speech rom */
ROM_LOAD( "trs014ha.bin", 0x0000, 0x0800, CRC(d1f1b48c) SHA1(ee5584368d2e9f7bde271f5004585b53f5ff5c3f) ) // speech rom ROM_LOAD( "trs014ha.bin", 0x0000, 0x0800, CRC(d1f1b48c) SHA1(ee5584368d2e9f7bde271f5004585b53f5ff5c3f) ) // speech rom
@ -1736,9 +1751,10 @@ ROM_START( dkong )
ROM_LOAD( "c_5at_g.bin", 0x3000, 0x1000, CRC(b9005ac0) SHA1(3fe3599f6fa7c496f782053ddf7bacb453d197c4) ) ROM_LOAD( "c_5at_g.bin", 0x3000, 0x1000, CRC(b9005ac0) SHA1(3fe3599f6fa7c496f782053ddf7bacb453d197c4) )
/* space for diagnostic ROM */ /* space for diagnostic ROM */
ROM_REGION( 0x1000, REGION_CPU2, 0 ) /* sound */ ROM_REGION( 0x1800, REGION_CPU2, 0 ) /* sound */
ROM_LOAD( "s_3i_b.bin", 0x0000, 0x0800, CRC(45a4ed06) SHA1(144d24464c1f9f01894eb12f846952290e6e32ef) ) ROM_LOAD( "s_3i_b.bin", 0x0000, 0x0800, CRC(45a4ed06) SHA1(144d24464c1f9f01894eb12f846952290e6e32ef) )
ROM_LOAD( "s_3j_b.bin", 0x0800, 0x0800, CRC(4743fe92) SHA1(6c82b57637c0212a580591397e6a5a1718f19fd2) ) ROM_RELOAD( 0x0800, 0x0800 )
ROM_LOAD( "s_3j_b.bin", 0x1000, 0x0800, CRC(4743fe92) SHA1(6c82b57637c0212a580591397e6a5a1718f19fd2) )
ROM_REGION( 0x1000, REGION_GFX1, ROMREGION_DISPOSE ) ROM_REGION( 0x1000, REGION_GFX1, ROMREGION_DISPOSE )
ROM_LOAD( "v_5h_b.bin", 0x0000, 0x0800, CRC(12c8c95d) SHA1(a57ff5a231c45252a63b354137c920a1379b70a3) ) ROM_LOAD( "v_5h_b.bin", 0x0000, 0x0800, CRC(12c8c95d) SHA1(a57ff5a231c45252a63b354137c920a1379b70a3) )
@ -1764,9 +1780,10 @@ ROM_START( dkongo )
ROM_LOAD( "tkg3c.5k", 0x3000, 0x1000, CRC(553b89bb) SHA1(61611df9e2748fdcd31821038dcc0e16dc933873) ) ROM_LOAD( "tkg3c.5k", 0x3000, 0x1000, CRC(553b89bb) SHA1(61611df9e2748fdcd31821038dcc0e16dc933873) )
/* space for diagnostic ROM */ /* space for diagnostic ROM */
ROM_REGION( 0x1000, REGION_CPU2, 0 ) /* sound */ ROM_REGION( 0x1800, REGION_CPU2, 0 ) /* sound */
ROM_LOAD( "s_3i_b.bin", 0x0000, 0x0800, CRC(45a4ed06) SHA1(144d24464c1f9f01894eb12f846952290e6e32ef) ) ROM_LOAD( "s_3i_b.bin", 0x0000, 0x0800, CRC(45a4ed06) SHA1(144d24464c1f9f01894eb12f846952290e6e32ef) )
ROM_LOAD( "s_3j_b.bin", 0x0800, 0x0800, CRC(4743fe92) SHA1(6c82b57637c0212a580591397e6a5a1718f19fd2) ) ROM_RELOAD( 0x0800, 0x0800 )
ROM_LOAD( "s_3j_b.bin", 0x1000, 0x0800, CRC(4743fe92) SHA1(6c82b57637c0212a580591397e6a5a1718f19fd2) )
ROM_REGION( 0x1000, REGION_GFX1, ROMREGION_DISPOSE ) ROM_REGION( 0x1000, REGION_GFX1, ROMREGION_DISPOSE )
ROM_LOAD( "v_5h_b.bin", 0x0000, 0x0800, CRC(12c8c95d) SHA1(a57ff5a231c45252a63b354137c920a1379b70a3) ) ROM_LOAD( "v_5h_b.bin", 0x0000, 0x0800, CRC(12c8c95d) SHA1(a57ff5a231c45252a63b354137c920a1379b70a3) )
@ -1791,9 +1808,10 @@ ROM_START( dkongjp )
ROM_LOAD( "5h.cpu", 0x2000, 0x1000, CRC(ff31ac89) SHA1(9626a9e6df0d1b0ff273dbbe986f670200f91f75) ) ROM_LOAD( "5h.cpu", 0x2000, 0x1000, CRC(ff31ac89) SHA1(9626a9e6df0d1b0ff273dbbe986f670200f91f75) )
ROM_LOAD( "c_5k_b.bin", 0x3000, 0x1000, CRC(394d6007) SHA1(57e5ae76ef5d4a2fa9cd860b6c6be03b6d5ed5ba) ) ROM_LOAD( "c_5k_b.bin", 0x3000, 0x1000, CRC(394d6007) SHA1(57e5ae76ef5d4a2fa9cd860b6c6be03b6d5ed5ba) )
ROM_REGION( 0x1000, REGION_CPU2, 0 ) /* sound */ ROM_REGION( 0x1800, REGION_CPU2, 0 ) /* sound */
ROM_LOAD( "s_3i_b.bin", 0x0000, 0x0800, CRC(45a4ed06) SHA1(144d24464c1f9f01894eb12f846952290e6e32ef) ) ROM_LOAD( "s_3i_b.bin", 0x0000, 0x0800, CRC(45a4ed06) SHA1(144d24464c1f9f01894eb12f846952290e6e32ef) )
ROM_LOAD( "s_3j_b.bin", 0x0800, 0x0800, CRC(4743fe92) SHA1(6c82b57637c0212a580591397e6a5a1718f19fd2) ) ROM_RELOAD( 0x0800, 0x0800 )
ROM_LOAD( "s_3j_b.bin", 0x1000, 0x0800, CRC(4743fe92) SHA1(6c82b57637c0212a580591397e6a5a1718f19fd2) )
ROM_REGION( 0x1000, REGION_GFX1, ROMREGION_DISPOSE ) ROM_REGION( 0x1000, REGION_GFX1, ROMREGION_DISPOSE )
ROM_LOAD( "v_5h_b.bin", 0x0000, 0x0800, CRC(12c8c95d) SHA1(a57ff5a231c45252a63b354137c920a1379b70a3) ) ROM_LOAD( "v_5h_b.bin", 0x0000, 0x0800, CRC(12c8c95d) SHA1(a57ff5a231c45252a63b354137c920a1379b70a3) )
@ -1818,9 +1836,10 @@ ROM_START( dkongjo )
ROM_LOAD( "c_5h_b.bin", 0x2000, 0x1000, CRC(1d28895d) SHA1(63792cab215fc2a7b0e8ee61d8115045571e9d42) ) ROM_LOAD( "c_5h_b.bin", 0x2000, 0x1000, CRC(1d28895d) SHA1(63792cab215fc2a7b0e8ee61d8115045571e9d42) )
ROM_LOAD( "c_5k_b.bin", 0x3000, 0x1000, CRC(394d6007) SHA1(57e5ae76ef5d4a2fa9cd860b6c6be03b6d5ed5ba) ) ROM_LOAD( "c_5k_b.bin", 0x3000, 0x1000, CRC(394d6007) SHA1(57e5ae76ef5d4a2fa9cd860b6c6be03b6d5ed5ba) )
ROM_REGION( 0x1000, REGION_CPU2, 0 ) /* sound */ ROM_REGION( 0x1800, REGION_CPU2, 0 ) /* sound */
ROM_LOAD( "s_3i_b.bin", 0x0000, 0x0800, CRC(45a4ed06) SHA1(144d24464c1f9f01894eb12f846952290e6e32ef) ) ROM_LOAD( "s_3i_b.bin", 0x0000, 0x0800, CRC(45a4ed06) SHA1(144d24464c1f9f01894eb12f846952290e6e32ef) )
ROM_LOAD( "s_3j_b.bin", 0x0800, 0x0800, CRC(4743fe92) SHA1(6c82b57637c0212a580591397e6a5a1718f19fd2) ) ROM_RELOAD( 0x0800, 0x0800 )
ROM_LOAD( "s_3j_b.bin", 0x1000, 0x0800, CRC(4743fe92) SHA1(6c82b57637c0212a580591397e6a5a1718f19fd2) )
ROM_REGION( 0x1000, REGION_GFX1, ROMREGION_DISPOSE ) ROM_REGION( 0x1000, REGION_GFX1, ROMREGION_DISPOSE )
ROM_LOAD( "v_5h_b.bin", 0x0000, 0x0800, CRC(12c8c95d) SHA1(a57ff5a231c45252a63b354137c920a1379b70a3) ) ROM_LOAD( "v_5h_b.bin", 0x0000, 0x0800, CRC(12c8c95d) SHA1(a57ff5a231c45252a63b354137c920a1379b70a3) )
@ -1845,9 +1864,10 @@ ROM_START( dkongjo1 )
ROM_LOAD( "c_5h_b.bin", 0x2000, 0x1000, CRC(1d28895d) SHA1(63792cab215fc2a7b0e8ee61d8115045571e9d42) ) ROM_LOAD( "c_5h_b.bin", 0x2000, 0x1000, CRC(1d28895d) SHA1(63792cab215fc2a7b0e8ee61d8115045571e9d42) )
ROM_LOAD( "5k.bin", 0x3000, 0x1000, CRC(7961599c) SHA1(698a4c2b8d67840dca7526efb1ac0d3370a86925) ) ROM_LOAD( "5k.bin", 0x3000, 0x1000, CRC(7961599c) SHA1(698a4c2b8d67840dca7526efb1ac0d3370a86925) )
ROM_REGION( 0x1000, REGION_CPU2, 0 ) /* sound */ ROM_REGION( 0x1800, REGION_CPU2, 0 ) /* sound */
ROM_LOAD( "s_3i_b.bin", 0x0000, 0x0800, CRC(45a4ed06) SHA1(144d24464c1f9f01894eb12f846952290e6e32ef) ) ROM_LOAD( "s_3i_b.bin", 0x0000, 0x0800, CRC(45a4ed06) SHA1(144d24464c1f9f01894eb12f846952290e6e32ef) )
ROM_LOAD( "s_3j_b.bin", 0x0800, 0x0800, CRC(4743fe92) SHA1(6c82b57637c0212a580591397e6a5a1718f19fd2) ) ROM_RELOAD( 0x0800, 0x0800 )
ROM_LOAD( "s_3j_b.bin", 0x1000, 0x0800, CRC(4743fe92) SHA1(6c82b57637c0212a580591397e6a5a1718f19fd2) )
ROM_REGION( 0x1000, REGION_GFX1, ROMREGION_DISPOSE ) ROM_REGION( 0x1000, REGION_GFX1, ROMREGION_DISPOSE )
ROM_LOAD( "v_5h_b.bin", 0x0000, 0x0800, CRC(12c8c95d) SHA1(a57ff5a231c45252a63b354137c920a1379b70a3) ) ROM_LOAD( "v_5h_b.bin", 0x0000, 0x0800, CRC(12c8c95d) SHA1(a57ff5a231c45252a63b354137c920a1379b70a3) )
@ -2160,8 +2180,10 @@ ROM_START( hunchbkd )
ROM_LOAD( "hb.5b", 0x4000, 0x1000, CRC(4cde80f3) SHA1(3d93d8e454b2c517971a99c5700b6e943f975a11) ) ROM_LOAD( "hb.5b", 0x4000, 0x1000, CRC(4cde80f3) SHA1(3d93d8e454b2c517971a99c5700b6e943f975a11) )
ROM_LOAD( "hb.5a", 0x6000, 0x1000, CRC(d60ef5b2) SHA1(b2b5528cb837d58ef632d7670820ad8b07e5af1b) ) ROM_LOAD( "hb.5a", 0x6000, 0x1000, CRC(d60ef5b2) SHA1(b2b5528cb837d58ef632d7670820ad8b07e5af1b) )
ROM_REGION( 0x1000, REGION_CPU2, 0 ) /* sound */ ROM_REGION( 0x1800, REGION_CPU2, 0 ) /* sound */
ROM_LOAD( "hb.3h", 0x0000, 0x0800, CRC(a3c240d4) SHA1(8cb6057ca617909c73b09988ba65a1176696cb5d) ) ROM_LOAD( "hb.3h", 0x0000, 0x0800, CRC(a3c240d4) SHA1(8cb6057ca617909c73b09988ba65a1176696cb5d) )
ROM_RELOAD( 0x0800, 0x0800 )
ROM_FILL( 0x1000, 0x0800, 0xFF )
ROM_REGION( 0x1000, REGION_GFX1, ROMREGION_DISPOSE ) ROM_REGION( 0x1000, REGION_GFX1, ROMREGION_DISPOSE )
ROM_LOAD( "hb.3n", 0x0000, 0x0800, CRC(443ed5ac) SHA1(febed689e03abf25452aab6eff85ea01883e929c) ) ROM_LOAD( "hb.3n", 0x0000, 0x0800, CRC(443ed5ac) SHA1(febed689e03abf25452aab6eff85ea01883e929c) )
@ -2173,11 +2195,13 @@ ROM_START( hunchbkd )
ROM_LOAD( "hb.7e", 0x1000, 0x0800, CRC(f845e8ca) SHA1(4bedbbc74a637f6d60b3b2dbf41efc7390ee9091) ) ROM_LOAD( "hb.7e", 0x1000, 0x0800, CRC(f845e8ca) SHA1(4bedbbc74a637f6d60b3b2dbf41efc7390ee9091) )
ROM_LOAD( "hb.7f", 0x1800, 0x0800, CRC(52d20fea) SHA1(e3825f75f312d1e256f78a89098e328e8f307577) ) ROM_LOAD( "hb.7f", 0x1800, 0x0800, CRC(52d20fea) SHA1(e3825f75f312d1e256f78a89098e328e8f307577) )
ROM_REGION( 0x0500, REGION_PROMS, 0 ) ROM_REGION( 0x0300, REGION_PROMS, 0 )
ROM_LOAD( "hbprom.2e", 0x0000, 0x0100, CRC(37aab98f) SHA1(0b002ab82158854bdd4a9db05eee037711017313) ) /* palette low 4 bits (inverted) */ ROM_LOAD( "hbprom.2e", 0x0000, 0x0100, CRC(37aab98f) SHA1(0b002ab82158854bdd4a9db05eee037711017313) ) /* palette low 4 bits (inverted) */
ROM_LOAD( "hbprom.2f", 0x0100, 0x0100, CRC(845b8dcc) SHA1(eebd0c024172e54b509f1f99d9159438d5f3a905) ) /* palette high 4 bits (inverted) */ ROM_LOAD( "hbprom.2f", 0x0100, 0x0100, CRC(845b8dcc) SHA1(eebd0c024172e54b509f1f99d9159438d5f3a905) ) /* palette high 4 bits (inverted) */
ROM_LOAD( "hbprom.2n", 0x0200, 0x0100, CRC(dff9070a) SHA1(307b95749343b5106247d842f773b2b445faa156) ) /* character color codes on a per-column basis */ ROM_LOAD( "hbprom.2n", 0x0200, 0x0100, CRC(dff9070a) SHA1(307b95749343b5106247d842f773b2b445faa156) ) /* character color codes on a per-column basis */
ROM_LOAD( "82s147.prm", 0x0300, 0x0200, CRC(46e5bc92) SHA1(f4171f8650818c017d58ad7131a7aff100b1b99c) ) /* address mapping */
ROM_REGION( 0x0200, REGION_USER1, 0 )
ROM_LOAD( "82s147.prm", 0x0000, 0x0200, CRC(46e5bc92) SHA1(f4171f8650818c017d58ad7131a7aff100b1b99c) ) /* address mapping */
ROM_REGION( 0x0100, REGION_PLDS, ROMREGION_DISPOSE ) ROM_REGION( 0x0100, REGION_PLDS, ROMREGION_DISPOSE )
ROM_LOAD( "pls153h.bin", 0x0000, 0x00eb, NO_DUMP ) /* missing - pls153 ??? */ ROM_LOAD( "pls153h.bin", 0x0000, 0x00eb, NO_DUMP ) /* missing - pls153 ??? */
@ -2190,8 +2214,10 @@ ROM_START( sbdk )
ROM_LOAD( "sb-dk.as", 0x4000, 0x1000, CRC(e6d200f3) SHA1(3787334df76e629baa9ef5362495cd3af7777358) ) ROM_LOAD( "sb-dk.as", 0x4000, 0x1000, CRC(e6d200f3) SHA1(3787334df76e629baa9ef5362495cd3af7777358) )
ROM_LOAD( "sb-dk.5a", 0x6000, 0x1000, CRC(ca41ca56) SHA1(d862172b1cc6639d540efc140b63d1a598f75656) ) ROM_LOAD( "sb-dk.5a", 0x6000, 0x1000, CRC(ca41ca56) SHA1(d862172b1cc6639d540efc140b63d1a598f75656) )
ROM_REGION( 0x1000, REGION_CPU2, 0 ) /* sound */ ROM_REGION( 0x1800, REGION_CPU2, 0 ) /* sound */
ROM_LOAD( "sb-dk.3h", 0x0000, 0x0800, CRC(13e60b6e) SHA1(f5dca15db0f1a225ff0116726bb055bb7b9655cc) ) ROM_LOAD( "sb-dk.3h", 0x0000, 0x0800, CRC(13e60b6e) SHA1(f5dca15db0f1a225ff0116726bb055bb7b9655cc) )
ROM_RELOAD( 0x0800, 0x0800 )
ROM_FILL( 0x1000, 0x0800, 0xFF )
ROM_REGION( 0x1000, REGION_GFX1, ROMREGION_DISPOSE ) ROM_REGION( 0x1000, REGION_GFX1, ROMREGION_DISPOSE )
ROM_LOAD( "sb-dk.3n", 0x0000, 0x0800, CRC(b1d76b59) SHA1(aed57ec67d80abdff1a4bfc3a713fa01c0dd15a2) ) ROM_LOAD( "sb-dk.3n", 0x0000, 0x0800, CRC(b1d76b59) SHA1(aed57ec67d80abdff1a4bfc3a713fa01c0dd15a2) )
@ -2207,7 +2233,9 @@ ROM_START( sbdk )
ROM_LOAD( "sb.2e", 0x0000, 0x0100, CRC(4f06f789) SHA1(0b2775dd8da1c20121639871ed291a015a34e1f6) ) ROM_LOAD( "sb.2e", 0x0000, 0x0100, CRC(4f06f789) SHA1(0b2775dd8da1c20121639871ed291a015a34e1f6) )
ROM_LOAD( "sb.2f", 0x0100, 0x0100, CRC(2c15b1b2) SHA1(7c80eb77ba47e2f4d889fc10663a0391d4329a1d) ) ROM_LOAD( "sb.2f", 0x0100, 0x0100, CRC(2c15b1b2) SHA1(7c80eb77ba47e2f4d889fc10663a0391d4329a1d) )
ROM_LOAD( "sb.2n", 0x0200, 0x0100, CRC(dff9070a) SHA1(307b95749343b5106247d842f773b2b445faa156) ) ROM_LOAD( "sb.2n", 0x0200, 0x0100, CRC(dff9070a) SHA1(307b95749343b5106247d842f773b2b445faa156) )
ROM_LOAD( "82s147.prm", 0x0300, 0x0200, CRC(46e5bc92) SHA1(f4171f8650818c017d58ad7131a7aff100b1b99c) ) /* address mapping */
ROM_REGION( 0x0200, REGION_USER1, 0 )
ROM_LOAD( "82s147.prm", 0x0000, 0x0200, CRC(46e5bc92) SHA1(f4171f8650818c017d58ad7131a7aff100b1b99c) ) /* address mapping */
ROM_REGION( 0x0100, REGION_PLDS, ROMREGION_DISPOSE ) ROM_REGION( 0x0100, REGION_PLDS, ROMREGION_DISPOSE )
ROM_LOAD( "pls153h.bin", 0x0000, 0x00eb, NO_DUMP ) /* missing - pls153 ??? */ ROM_LOAD( "pls153h.bin", 0x0000, 0x00eb, NO_DUMP ) /* missing - pls153 ??? */
@ -2220,8 +2248,10 @@ ROM_START( herbiedk )
ROM_LOAD( "5h.cpu", 0x4000, 0x1000, CRC(c0daf551) SHA1(f39058fa05ad69e839e7c0281cb1fad80cfa3134) ) ROM_LOAD( "5h.cpu", 0x4000, 0x1000, CRC(c0daf551) SHA1(f39058fa05ad69e839e7c0281cb1fad80cfa3134) )
ROM_LOAD( "5k.cpu", 0x6000, 0x1000, CRC(67442242) SHA1(0241281e8cc721f7fe22822f2cf168c2eed7983d) ) ROM_LOAD( "5k.cpu", 0x6000, 0x1000, CRC(67442242) SHA1(0241281e8cc721f7fe22822f2cf168c2eed7983d) )
ROM_REGION( 0x1000, REGION_CPU2, 0 ) /* sound */ ROM_REGION( 0x1800, REGION_CPU2, 0 ) /* sound */
ROM_LOAD( "3i.snd", 0x0000, 0x0800, CRC(20e30406) SHA1(e2b9c6b731e53651d26455c2753a6dc3d5e9d066) ) ROM_LOAD( "3i.snd", 0x0000, 0x0800, CRC(20e30406) SHA1(e2b9c6b731e53651d26455c2753a6dc3d5e9d066) )
ROM_RELOAD( 0x0800, 0x0800 )
ROM_FILL( 0x1000, 0x0800, 0xFF )
ROM_REGION( 0x1000, REGION_GFX1, ROMREGION_DISPOSE ) ROM_REGION( 0x1000, REGION_GFX1, ROMREGION_DISPOSE )
ROM_LOAD( "5h.vid", 0x0000, 0x0800, CRC(ea2a2547) SHA1(ec714abe43ab86ef615e1105688bf3df209c8f5f) ) ROM_LOAD( "5h.vid", 0x0000, 0x0800, CRC(ea2a2547) SHA1(ec714abe43ab86ef615e1105688bf3df209c8f5f) )
@ -2237,7 +2267,9 @@ ROM_START( herbiedk )
ROM_LOAD( "74s287.2k", 0x0000, 0x0100, CRC(7dc0a381) SHA1(7d974b2249392160e3b800e7113d4899c3600b7f) ) /* palette high 4 bits (inverted) */ ROM_LOAD( "74s287.2k", 0x0000, 0x0100, CRC(7dc0a381) SHA1(7d974b2249392160e3b800e7113d4899c3600b7f) ) /* palette high 4 bits (inverted) */
ROM_LOAD( "74s287.2j", 0x0100, 0x0100, CRC(0a440c00) SHA1(e3249a646cd8aa50739e09ae101e796ea3aac37a) ) /* palette low 4 bits (inverted) */ ROM_LOAD( "74s287.2j", 0x0100, 0x0100, CRC(0a440c00) SHA1(e3249a646cd8aa50739e09ae101e796ea3aac37a) ) /* palette low 4 bits (inverted) */
ROM_LOAD( "74s287.vid", 0x0200, 0x0100, CRC(5a3446cc) SHA1(158de015006e6c400cb7ee758fda7ff760eb5835) ) /* character color codes on a per-column basis */ ROM_LOAD( "74s287.vid", 0x0200, 0x0100, CRC(5a3446cc) SHA1(158de015006e6c400cb7ee758fda7ff760eb5835) ) /* character color codes on a per-column basis */
ROM_LOAD( "82s147.hh", 0x0300, 0x0200, CRC(46e5bc92) SHA1(f4171f8650818c017d58ad7131a7aff100b1b99c) ) /* address mapping */
ROM_REGION( 0x0200, REGION_USER1, 0 )
ROM_LOAD( "82s147.hh", 0x0000, 0x0200, CRC(46e5bc92) SHA1(f4171f8650818c017d58ad7131a7aff100b1b99c) ) /* address mapping */
ROM_REGION( 0x0100, REGION_PLDS, ROMREGION_DISPOSE ) ROM_REGION( 0x0100, REGION_PLDS, ROMREGION_DISPOSE )
ROM_LOAD( "pls153h.bin", 0x0000, 0x00eb, CRC(d6a04bcc) SHA1(ef1ed4311869d46dec95c2bfb31875c2f022da4f) ) ROM_LOAD( "pls153h.bin", 0x0000, 0x00eb, CRC(d6a04bcc) SHA1(ef1ed4311869d46dec95c2bfb31875c2f022da4f) )
@ -2255,8 +2287,10 @@ ROM_START( herodk )
ROM_CONTINUE( 0x6000, 0x0e00 ) ROM_CONTINUE( 0x6000, 0x0e00 )
ROM_CONTINUE( 0x2e00, 0x0200 ) ROM_CONTINUE( 0x2e00, 0x0200 )
ROM_REGION( 0x1000, REGION_CPU2, 0 ) /* sound */ ROM_REGION( 0x1800, REGION_CPU2, 0 ) /* sound */
ROM_LOAD( "silver.3h", 0x0000, 0x0800, CRC(67863ce9) SHA1(2b78e3d32a64cdef34afc476fed7ff0ab6a0277c) ) ROM_LOAD( "silver.3h", 0x0000, 0x0800, CRC(67863ce9) SHA1(2b78e3d32a64cdef34afc476fed7ff0ab6a0277c) )
ROM_RELOAD( 0x0800, 0x0800 )
ROM_FILL( 0x1000, 0x0800, 0xFF )
ROM_REGION( 0x1000, REGION_GFX1, ROMREGION_DISPOSE ) ROM_REGION( 0x1000, REGION_GFX1, ROMREGION_DISPOSE )
ROM_LOAD( "pnk.3n", 0x0000, 0x0800, CRC(574dfd7a) SHA1(78bbe4ea83fdaec14ca92ceae03e8a3d0877d14b) ) ROM_LOAD( "pnk.3n", 0x0000, 0x0800, CRC(574dfd7a) SHA1(78bbe4ea83fdaec14ca92ceae03e8a3d0877d14b) )
@ -2272,7 +2306,9 @@ ROM_START( herodk )
ROM_LOAD( "82s129.2e", 0x0000, 0x0100, CRC(da4b47e6) SHA1(2cfc7d489002113eb91048cc29d24831dadbfabb) ) /* palette low 4 bits (inverted) */ ROM_LOAD( "82s129.2e", 0x0000, 0x0100, CRC(da4b47e6) SHA1(2cfc7d489002113eb91048cc29d24831dadbfabb) ) /* palette low 4 bits (inverted) */
ROM_LOAD( "82s129.2f", 0x0100, 0x0100, CRC(96e213a4) SHA1(38f21e7bce96fd2159aa61e64d66aa574d85873c) ) /* palette high 4 bits (inverted) */ ROM_LOAD( "82s129.2f", 0x0100, 0x0100, CRC(96e213a4) SHA1(38f21e7bce96fd2159aa61e64d66aa574d85873c) ) /* palette high 4 bits (inverted) */
ROM_LOAD( "82s126.2n", 0x0200, 0x0100, CRC(37aece4b) SHA1(08dbb470644278132b8126649fe41d70e7750bee) ) /* character color codes on a per-column basis */ ROM_LOAD( "82s126.2n", 0x0200, 0x0100, CRC(37aece4b) SHA1(08dbb470644278132b8126649fe41d70e7750bee) ) /* character color codes on a per-column basis */
ROM_LOAD( "82s147.prm", 0x0300, 0x0200, BAD_DUMP CRC(46e5bc92) SHA1(f4171f8650818c017d58ad7131a7aff100b1b99c) ) /* no dump - taken from hunchbkd */
ROM_REGION( 0x0200, REGION_USER1, 0 )
ROM_LOAD( "82s147.prm", 0x0000, 0x0200, BAD_DUMP CRC(46e5bc92) SHA1(f4171f8650818c017d58ad7131a7aff100b1b99c) ) /* no dump - taken from hunchbkd */
ROM_REGION( 0x0100, REGION_PLDS, ROMREGION_DISPOSE ) ROM_REGION( 0x0100, REGION_PLDS, ROMREGION_DISPOSE )
ROM_LOAD( "pls153h.bin", 0x0000, 0x00eb, NO_DUMP ) /* missing - pls153 ??? */ ROM_LOAD( "pls153h.bin", 0x0000, 0x00eb, NO_DUMP ) /* missing - pls153 ??? */
@ -2288,8 +2324,10 @@ ROM_START( herodku )
ROM_LOAD( "2764.8f", 0x4000, 0x1000, CRC(835e0074) SHA1(187358973f595033a4745759f554a3dfd398889b) ) ROM_LOAD( "2764.8f", 0x4000, 0x1000, CRC(835e0074) SHA1(187358973f595033a4745759f554a3dfd398889b) )
ROM_CONTINUE( 0x6000, 0x1000 ) ROM_CONTINUE( 0x6000, 0x1000 )
ROM_REGION( 0x1000, REGION_CPU2, 0 ) /* sound */ ROM_REGION( 0x1800, REGION_CPU2, 0 ) /* sound */
ROM_LOAD( "2716.3h", 0x0000, 0x0800, CRC(caf57bef) SHA1(60c19c65bf312b36c68631ccea5434ad8cf0f3df) ) ROM_LOAD( "2716.3h", 0x0000, 0x0800, CRC(caf57bef) SHA1(60c19c65bf312b36c68631ccea5434ad8cf0f3df) )
ROM_RELOAD( 0x0800, 0x0800 )
ROM_FILL( 0x1000, 0x0800, 0xFF )
ROM_REGION( 0x1000, REGION_GFX1, ROMREGION_DISPOSE ) ROM_REGION( 0x1000, REGION_GFX1, ROMREGION_DISPOSE )
ROM_LOAD( "pnk.3n", 0x0000, 0x0800, CRC(574dfd7a) SHA1(78bbe4ea83fdaec14ca92ceae03e8a3d0877d14b) ) ROM_LOAD( "pnk.3n", 0x0000, 0x0800, CRC(574dfd7a) SHA1(78bbe4ea83fdaec14ca92ceae03e8a3d0877d14b) )
@ -2305,7 +2343,9 @@ ROM_START( herodku )
ROM_LOAD( "82s129.2e", 0x0000, 0x0100, CRC(da4b47e6) SHA1(2cfc7d489002113eb91048cc29d24831dadbfabb) ) /* palette low 4 bits (inverted) */ ROM_LOAD( "82s129.2e", 0x0000, 0x0100, CRC(da4b47e6) SHA1(2cfc7d489002113eb91048cc29d24831dadbfabb) ) /* palette low 4 bits (inverted) */
ROM_LOAD( "82s129.2f", 0x0100, 0x0100, CRC(96e213a4) SHA1(38f21e7bce96fd2159aa61e64d66aa574d85873c) ) /* palette high 4 bits (inverted) */ ROM_LOAD( "82s129.2f", 0x0100, 0x0100, CRC(96e213a4) SHA1(38f21e7bce96fd2159aa61e64d66aa574d85873c) ) /* palette high 4 bits (inverted) */
ROM_LOAD( "82s126.2n", 0x0200, 0x0100, CRC(37aece4b) SHA1(08dbb470644278132b8126649fe41d70e7750bee) ) /* character color codes on a per-column basis */ ROM_LOAD( "82s126.2n", 0x0200, 0x0100, CRC(37aece4b) SHA1(08dbb470644278132b8126649fe41d70e7750bee) ) /* character color codes on a per-column basis */
ROM_LOAD( "82s147.prm", 0x0300, 0x0200, BAD_DUMP CRC(46e5bc92) SHA1(f4171f8650818c017d58ad7131a7aff100b1b99c) ) /* no dump - taken from hunchbkd */
ROM_REGION( 0x0200, REGION_USER1, 0 )
ROM_LOAD( "82s147.prm", 0x0000, 0x0200, BAD_DUMP CRC(46e5bc92) SHA1(f4171f8650818c017d58ad7131a7aff100b1b99c) ) /* no dump - taken from hunchbkd */
ROM_REGION( 0x0100, REGION_PLDS, ROMREGION_DISPOSE ) ROM_REGION( 0x0100, REGION_PLDS, ROMREGION_DISPOSE )
ROM_LOAD( "pls153h.bin", 0x0000, 0x00eb, NO_DUMP ) /* missing - pls153 ??? */ ROM_LOAD( "pls153h.bin", 0x0000, 0x00eb, NO_DUMP ) /* missing - pls153 ??? */
@ -2332,7 +2372,9 @@ ROM_START( spclforc )
ROM_LOAD( "82s126.2e", 0x0000, 0x0100, CRC(b3751a25) SHA1(4b444e8fd02ac8674ecaba2fee083cb9feb99fa0) ) ROM_LOAD( "82s126.2e", 0x0000, 0x0100, CRC(b3751a25) SHA1(4b444e8fd02ac8674ecaba2fee083cb9feb99fa0) )
ROM_LOAD( "82s126.2f", 0x0100, 0x0100, CRC(1026d438) SHA1(927009e6ed520c39c36c1d7966589c6778df1a3a) ) ROM_LOAD( "82s126.2f", 0x0100, 0x0100, CRC(1026d438) SHA1(927009e6ed520c39c36c1d7966589c6778df1a3a) )
ROM_LOAD( "82s126.2n", 0x0200, 0x0100, CRC(9735998d) SHA1(c3f50f97369547b1fd25da64507a5c8b725de6d0) ) ROM_LOAD( "82s126.2n", 0x0200, 0x0100, CRC(9735998d) SHA1(c3f50f97369547b1fd25da64507a5c8b725de6d0) )
ROM_LOAD( "82s147.prm", 0x0300, 0x0200, BAD_DUMP CRC(46e5bc92) SHA1(f4171f8650818c017d58ad7131a7aff100b1b99c) ) /* no dump - taken from hunchbkd */
ROM_REGION( 0x0200, REGION_USER1, 0 )
ROM_LOAD( "82s147.prm", 0x0000, 0x0200, BAD_DUMP CRC(46e5bc92) SHA1(f4171f8650818c017d58ad7131a7aff100b1b99c) ) /* no dump - taken from hunchbkd */
ROM_REGION( 0x0100, REGION_PLDS, ROMREGION_DISPOSE ) ROM_REGION( 0x0100, REGION_PLDS, ROMREGION_DISPOSE )
ROM_LOAD( "pls153h.bin", 0x0000, 0x00eb, NO_DUMP ) /* missing - pls153 ??? */ ROM_LOAD( "pls153h.bin", 0x0000, 0x00eb, NO_DUMP ) /* missing - pls153 ??? */
@ -2359,7 +2401,9 @@ ROM_START( spcfrcii )
ROM_LOAD( "spfc2.2e", 0x0000, 0x0100, CRC(b3751a25) SHA1(4b444e8fd02ac8674ecaba2fee083cb9feb99fa0) ) ROM_LOAD( "spfc2.2e", 0x0000, 0x0100, CRC(b3751a25) SHA1(4b444e8fd02ac8674ecaba2fee083cb9feb99fa0) )
ROM_LOAD( "spfc2.2f", 0x0100, 0x0100, CRC(1026d438) SHA1(927009e6ed520c39c36c1d7966589c6778df1a3a) ) ROM_LOAD( "spfc2.2f", 0x0100, 0x0100, CRC(1026d438) SHA1(927009e6ed520c39c36c1d7966589c6778df1a3a) )
ROM_LOAD( "spfc2.2n", 0x0200, 0x0100, CRC(9735998d) SHA1(c3f50f97369547b1fd25da64507a5c8b725de6d0) ) ROM_LOAD( "spfc2.2n", 0x0200, 0x0100, CRC(9735998d) SHA1(c3f50f97369547b1fd25da64507a5c8b725de6d0) )
ROM_LOAD( "82s147.prm", 0x0300, 0x0200, BAD_DUMP CRC(46e5bc92) SHA1(f4171f8650818c017d58ad7131a7aff100b1b99c) ) /* no dump - taken from hunchbkd */
ROM_REGION( 0x0200, REGION_USER1, 0 )
ROM_LOAD( "82s147.prm", 0x0000, 0x0200, BAD_DUMP CRC(46e5bc92) SHA1(f4171f8650818c017d58ad7131a7aff100b1b99c) ) /* no dump - taken from hunchbkd */
ROM_REGION( 0x0100, REGION_PLDS, ROMREGION_DISPOSE ) ROM_REGION( 0x0100, REGION_PLDS, ROMREGION_DISPOSE )
ROM_LOAD( "pls153h.bin", 0x0000, 0x00eb, NO_DUMP ) /* missing - pls153 ??? */ ROM_LOAD( "pls153h.bin", 0x0000, 0x00eb, NO_DUMP ) /* missing - pls153 ??? */
@ -2375,8 +2419,10 @@ ROM_START( 8ballact )
ROM_LOAD( "8b-dk.5b", 0x4000, 0x1000, CRC(f836a962) SHA1(5a45514ea59cd92092523d116b0dc4a1f8fc46b7) ) ROM_LOAD( "8b-dk.5b", 0x4000, 0x1000, CRC(f836a962) SHA1(5a45514ea59cd92092523d116b0dc4a1f8fc46b7) )
ROM_LOAD( "8b-dk.5a", 0x6000, 0x1000, CRC(d45866d4) SHA1(5dfb121aa87bc5e6efadd9412b9f8d360c3dabd3) ) ROM_LOAD( "8b-dk.5a", 0x6000, 0x1000, CRC(d45866d4) SHA1(5dfb121aa87bc5e6efadd9412b9f8d360c3dabd3) )
ROM_REGION( 0x1000, REGION_CPU2, 0 ) /* sound */ ROM_REGION( 0x1800, REGION_CPU2, 0 ) /* sound */
ROM_LOAD( "8b-dk.3h", 0x0000, 0x0800, CRC(a8752c60) SHA1(0d7d35fd271d796e884a33071b83c000b91208a0) ) ROM_LOAD( "8b-dk.3h", 0x0000, 0x0800, CRC(a8752c60) SHA1(0d7d35fd271d796e884a33071b83c000b91208a0) )
ROM_RELOAD( 0x0800, 0x0800 )
ROM_FILL( 0x1000, 0x0800, 0xFF )
ROM_REGION( 0x1000, REGION_GFX1, ROMREGION_DISPOSE ) ROM_REGION( 0x1000, REGION_GFX1, ROMREGION_DISPOSE )
ROM_LOAD( "8b-dk.3n", 0x0000, 0x0800, CRC(44830867) SHA1(29d34792b9193edcdac427367c360d6f01e1e094) ) ROM_LOAD( "8b-dk.3n", 0x0000, 0x0800, CRC(44830867) SHA1(29d34792b9193edcdac427367c360d6f01e1e094) )
@ -2392,7 +2438,9 @@ ROM_START( 8ballact )
ROM_LOAD( "8b.2e", 0x0000, 0x0100, CRC(c7379a12) SHA1(e128e7d7c71ec61b934651c29648d0d2fc69e306) ) ROM_LOAD( "8b.2e", 0x0000, 0x0100, CRC(c7379a12) SHA1(e128e7d7c71ec61b934651c29648d0d2fc69e306) )
ROM_LOAD( "8b.2f", 0x0100, 0x0100, CRC(116612b4) SHA1(9a7c5329f211b13d5a757fdac761d7096d78b65a) ) ROM_LOAD( "8b.2f", 0x0100, 0x0100, CRC(116612b4) SHA1(9a7c5329f211b13d5a757fdac761d7096d78b65a) )
ROM_LOAD( "8b.2n", 0x0200, 0x0100, CRC(30586988) SHA1(a9c246fd01cb3ff371ad33b55d5b2fe4898c4d1b) ) ROM_LOAD( "8b.2n", 0x0200, 0x0100, CRC(30586988) SHA1(a9c246fd01cb3ff371ad33b55d5b2fe4898c4d1b) )
ROM_LOAD( "82s147.prm", 0x0300, 0x0200, BAD_DUMP CRC(46e5bc92) SHA1(f4171f8650818c017d58ad7131a7aff100b1b99c) ) /* no dump - taken from hunchbkd */
ROM_REGION( 0x0200, REGION_USER1, 0 )
ROM_LOAD( "82s147.prm", 0x0000, 0x0200, BAD_DUMP CRC(46e5bc92) SHA1(f4171f8650818c017d58ad7131a7aff100b1b99c) ) /* no dump - taken from hunchbkd */
ROM_REGION( 0x0100, REGION_PLDS, ROMREGION_DISPOSE ) ROM_REGION( 0x0100, REGION_PLDS, ROMREGION_DISPOSE )
ROM_LOAD( "pls153h.bin", 0x0000, 0x00eb, NO_DUMP ) /* missing - pls153 ??? */ ROM_LOAD( "pls153h.bin", 0x0000, 0x00eb, NO_DUMP ) /* missing - pls153 ??? */
@ -2425,7 +2473,9 @@ ROM_START( 8ballat2 )
ROM_LOAD( "8b.2e", 0x0000, 0x0100, CRC(c7379a12) SHA1(e128e7d7c71ec61b934651c29648d0d2fc69e306) ) ROM_LOAD( "8b.2e", 0x0000, 0x0100, CRC(c7379a12) SHA1(e128e7d7c71ec61b934651c29648d0d2fc69e306) )
ROM_LOAD( "8b.2f", 0x0100, 0x0100, CRC(116612b4) SHA1(9a7c5329f211b13d5a757fdac761d7096d78b65a) ) ROM_LOAD( "8b.2f", 0x0100, 0x0100, CRC(116612b4) SHA1(9a7c5329f211b13d5a757fdac761d7096d78b65a) )
ROM_LOAD( "8b.2n", 0x0200, 0x0100, CRC(30586988) SHA1(a9c246fd01cb3ff371ad33b55d5b2fe4898c4d1b) ) ROM_LOAD( "8b.2n", 0x0200, 0x0100, CRC(30586988) SHA1(a9c246fd01cb3ff371ad33b55d5b2fe4898c4d1b) )
ROM_LOAD( "82s147.prm", 0x0300, 0x0200, BAD_DUMP CRC(46e5bc92) SHA1(f4171f8650818c017d58ad7131a7aff100b1b99c) ) /* no dump - taken from hunchbkd */
ROM_REGION( 0x0200, REGION_USER1, 0 )
ROM_LOAD( "82s147.prm", 0x0000, 0x0200, BAD_DUMP CRC(46e5bc92) SHA1(f4171f8650818c017d58ad7131a7aff100b1b99c) ) /* no dump - taken from hunchbkd */
ROM_REGION( 0x0100, REGION_PLDS, ROMREGION_DISPOSE ) ROM_REGION( 0x0100, REGION_PLDS, ROMREGION_DISPOSE )
ROM_LOAD( "pls153h.bin", 0x0000, 0x00eb, NO_DUMP ) /* missing - pls153 ??? */ ROM_LOAD( "pls153h.bin", 0x0000, 0x00eb, NO_DUMP ) /* missing - pls153 ??? */
@ -2437,10 +2487,39 @@ ROM_START( drakton )
ROM_LOAD( "2764.u2", 0x0000, 0x2000, CRC(d9a33205) SHA1(06dc96412e7162fd8a4f6ef4d14d1510c06b1d00) ) ROM_LOAD( "2764.u2", 0x0000, 0x2000, CRC(d9a33205) SHA1(06dc96412e7162fd8a4f6ef4d14d1510c06b1d00) )
ROM_LOAD( "2764.u3", 0x2000, 0x2000, CRC(69583a35) SHA1(061271be4e9ddfd8dff4217f1434215ad35ba505) ) ROM_LOAD( "2764.u3", 0x2000, 0x2000, CRC(69583a35) SHA1(061271be4e9ddfd8dff4217f1434215ad35ba505) )
/* one is used for dkong conversions, the other one for dkongjr conversions */
ROM_REGION( 0x1800, REGION_CPU2, 0 ) /* sound */
ROM_LOAD( "2716.3h", 0x0000, 0x0800, CRC(3489a35b) SHA1(9ebcf4b20b212d54e6b1a6d9abbda3109298631b) ) /* dkong */
ROM_RELOAD( 0x0800, 0x0800 )
ROM_FILL( 0x1000, 0x0800, 0x00 )
ROM_REGION( 0x1000, REGION_GFX1, ROMREGION_DISPOSE )
ROM_LOAD( "2716.3n", 0x0000, 0x0800, CRC(ea0e7f9a) SHA1(a8e2b43e15281d45e414eaae98e5248bad79c41b) )
ROM_LOAD( "2716.3p", 0x0800, 0x0800, CRC(46f51b68) SHA1(7d1c3a61cdd0ad471cb0064c0cbaf758325fc267) )
ROM_REGION( 0x2000, REGION_GFX2, ROMREGION_DISPOSE )
ROM_LOAD( "2716.7c", 0x0000, 0x0800, CRC(2925dc2d) SHA1(721748031714ba488191eb074643093c906e8ce2) )
ROM_LOAD( "2716.7d", 0x0800, 0x0800, CRC(bdf6b1b4) SHA1(ea9076a2bba909bfae8a10a92d857e8f0644fc8b) )
ROM_LOAD( "2716.7e", 0x1000, 0x0800, CRC(4d62e62f) SHA1(01e757110edcb24600a27b1505f54e3bd04b9e58) )
ROM_LOAD( "2716.7f", 0x1800, 0x0800, CRC(81d200e5) SHA1(5eb74f319756ba3fbc6d0d918799337f911e9419) )
ROM_REGION( 0x0300, REGION_PROMS, 0 )
ROM_LOAD( "82s126.2e", 0x0000, 0x0100, CRC(3ff45f76) SHA1(4068b5568f9e22e54f0df8a9e02bfed0bfb00db7) )
ROM_LOAD( "82s126.2f", 0x0100, 0x0100, CRC(38f905be) SHA1(a963aea9a92ac95850c90c43085376cb4e06696b) )
ROM_LOAD( "82s126.2n", 0x0200, 0x0100, CRC(3c343b9b) SHA1(f84f5fddcccc8499a2511877f5d706b37ddc7db8) )
ROM_END
/* encrypted */
ROM_START( drktnjr )
ROM_REGION( 0x20000, REGION_CPU1, 0 ) /* 64k for code + 4*16k for decrypted code */
ROM_LOAD( "2764.u2", 0x0000, 0x2000, CRC(d9a33205) SHA1(06dc96412e7162fd8a4f6ef4d14d1510c06b1d00) )
ROM_LOAD( "2764.u3", 0x2000, 0x2000, CRC(69583a35) SHA1(061271be4e9ddfd8dff4217f1434215ad35ba505) )
ROM_REGION( 0x1000, REGION_CPU2, 0 ) /* sound */ ROM_REGION( 0x1000, REGION_CPU2, 0 ) /* sound */
/* one is used for dkong conversions, the other one for dkongjr conversions */ /* one is used for dkong conversions, the other one for dkongjr conversions */
ROM_LOAD( "2716.3h", 0x0000, 0x0800, CRC(3489a35b) SHA1(9ebcf4b20b212d54e6b1a6d9abbda3109298631b) ) /* dkong */ ROM_LOAD( "2716.3h1", 0x0000, 0x0800, CRC(2a6ec016) SHA1(c95e185a39c8029f00798ce0a00759a4deb45677) ) /* dkongjr */
ROM_LOAD( "2716.3h1", 0x0800, 0x0800, CRC(2a6ec016) SHA1(c95e185a39c8029f00798ce0a00759a4deb45677) ) /* dkongjr */ //ROM_RELOAD( 0x0800, 0x0800 )
//ROM_FILL( 0x0800, 0x0800, 0xFF )
ROM_REGION( 0x1000, REGION_GFX1, ROMREGION_DISPOSE ) ROM_REGION( 0x1000, REGION_GFX1, ROMREGION_DISPOSE )
ROM_LOAD( "2716.3n", 0x0000, 0x0800, CRC(ea0e7f9a) SHA1(a8e2b43e15281d45e414eaae98e5248bad79c41b) ) ROM_LOAD( "2716.3n", 0x0000, 0x0800, CRC(ea0e7f9a) SHA1(a8e2b43e15281d45e414eaae98e5248bad79c41b) )
@ -2464,9 +2543,10 @@ ROM_START( strtheat )
ROM_LOAD( "2764.u2", 0x0000, 0x2000, CRC(8d3e82c3) SHA1(ec26fb1c6015721da1f61eca76a4b3390d8dcc76) ) ROM_LOAD( "2764.u2", 0x0000, 0x2000, CRC(8d3e82c3) SHA1(ec26fb1c6015721da1f61eca76a4b3390d8dcc76) )
ROM_LOAD( "2764.u3", 0x2000, 0x2000, CRC(f0759e76) SHA1(e086f02d1861269194c4cd2ada71696b48ed1a1d) ) ROM_LOAD( "2764.u3", 0x2000, 0x2000, CRC(f0759e76) SHA1(e086f02d1861269194c4cd2ada71696b48ed1a1d) )
ROM_REGION( 0x1000, REGION_CPU2, 0 ) /* sound */ ROM_REGION( 0x1800, REGION_CPU2, 0 ) /* sound */
ROM_LOAD( "2716.3h", 0x0000, 0x0800, CRC(4cd17174) SHA1(5ed9b5275b0779d1ca05d6e62d3ad8a682ebde37) ) ROM_LOAD( "2716.3h", 0x0000, 0x0800, CRC(4cd17174) SHA1(5ed9b5275b0779d1ca05d6e62d3ad8a682ebde37) )
ROM_RELOAD( 0x0800, 0x0800 ) ROM_RELOAD( 0x0800, 0x0800 )
ROM_FILL( 0x1000, 0x0800, 0xFF )
ROM_REGION( 0x2000, REGION_GFX1, ROMREGION_DISPOSE ) ROM_REGION( 0x2000, REGION_GFX1, ROMREGION_DISPOSE )
ROM_LOAD( "2716.3n", 0x0000, 0x0800, CRC(29e57678) SHA1(cbbb980c44c7f5c45d5f0b85209658f53b7ba4a7) ) ROM_LOAD( "2716.3n", 0x0000, 0x0800, CRC(29e57678) SHA1(cbbb980c44c7f5c45d5f0b85209658f53b7ba4a7) )
@ -2560,7 +2640,7 @@ ROM_START( shootgal )
ROM_LOAD( "sg-01snd", 0x0000, 0x1000, CRC(644a0728) SHA1(e249fd57bc49572a2246aaf7c68a547f319f51bc) ) //sg-01-snd ROM_LOAD( "sg-01snd", 0x0000, 0x1000, CRC(644a0728) SHA1(e249fd57bc49572a2246aaf7c68a547f319f51bc) ) //sg-01-snd
ROM_LOAD( "sg-01spk", 0x1000, 0x0800, CRC(aacaf730) SHA1(cd562093ab8931d165cb0877e332474fce131c67) ) //sg-01-spk ROM_LOAD( "sg-01spk", 0x1000, 0x0800, CRC(aacaf730) SHA1(cd562093ab8931d165cb0877e332474fce131c67) ) //sg-01-spk
ROM_REGION( 0x2000, REGION_USER1, 0 ) // gun proms? ROM_REGION( 0x2000, REGION_USER2, 0 ) // gun proms?
ROM_LOAD( "sg-1", 0x0000, 0x0200, CRC(fda82517) SHA1(b36bac69b6f8218b280aae59133ea0d22d7a99f6) ) ROM_LOAD( "sg-1", 0x0000, 0x0200, CRC(fda82517) SHA1(b36bac69b6f8218b280aae59133ea0d22d7a99f6) )
ROM_LOAD( "sg-2", 0x0200, 0x091d, CRC(6e065613) SHA1(26d048af5c302f921de8e2c1bc7c7bf48dc21b5a) ) ROM_LOAD( "sg-2", 0x0200, 0x091d, CRC(6e065613) SHA1(26d048af5c302f921de8e2c1bc7c7bf48dc21b5a) )
@ -2578,6 +2658,9 @@ ROM_START( shootgal )
ROM_LOAD( "sg-01-2e", 0x0000, 0x0200, CRC(34fb23ea) SHA1(6bd6de791c9e0a5f9c833c287663e9755e01c573) ) ROM_LOAD( "sg-01-2e", 0x0000, 0x0200, CRC(34fb23ea) SHA1(6bd6de791c9e0a5f9c833c287663e9755e01c573) )
ROM_LOAD( "sg-01-2f", 0x0100, 0x0200, CRC(c29b880a) SHA1(950017a0298f91e41db9865ed8ce388f4095f6cf) ) ROM_LOAD( "sg-01-2f", 0x0100, 0x0200, CRC(c29b880a) SHA1(950017a0298f91e41db9865ed8ce388f4095f6cf) )
ROM_LOAD( "sg-01-2n", 0x0200, 0x0200, CRC(e08ed788) SHA1(6982f6bcc70dbf4c75ff538a5df70da11bc89bb4) ) ROM_LOAD( "sg-01-2n", 0x0200, 0x0200, CRC(e08ed788) SHA1(6982f6bcc70dbf4c75ff538a5df70da11bc89bb4) )
ROM_REGION( 0x0200, REGION_USER1, 0 )
ROM_LOAD( "82s147.prm", 0x0000, 0x0200, BAD_DUMP CRC(46e5bc92) SHA1(f4171f8650818c017d58ad7131a7aff100b1b99c) ) /* no dump - taken from hunchbkd */
ROM_END ROM_END
/************************************* /*************************************
@ -2633,7 +2716,7 @@ GAME( 1984, dkong3b, dkong3, dkong3b, dkong3b, 0, ROT90, "bootleg", "D
GAME( 1984, herbiedk, huncholy, herbiedk, herbiedk, 0, ROT90, "CVS", "Herbie at the Olympics (DK conversion)", GAME_SUPPORTS_SAVE ) GAME( 1984, herbiedk, huncholy, herbiedk, herbiedk, 0, ROT90, "CVS", "Herbie at the Olympics (DK conversion)", GAME_SUPPORTS_SAVE )
GAME( 1983, hunchbkd, hunchbak, hunchbkd, hunchbkd, 0, ROT90, "Century Electronics", "Hunchback (DK conversion)", GAME_WRONG_COLORS | GAME_NOT_WORKING | GAME_SUPPORTS_SAVE ) GAME( 1983, hunchbkd, hunchbak, hunchbkd, hunchbkd, 0, ROT90, "Century Electronics", "Hunchback (DK conversion)", GAME_SUPPORTS_SAVE )
GAME( 1984, sbdk, superbik, hunchbkd, sbdk, 0, ROT90, "Century Electronics", "Super Bike (DK conversion)", GAME_SUPPORTS_SAVE ) GAME( 1984, sbdk, superbik, hunchbkd, sbdk, 0, ROT90, "Century Electronics", "Super Bike (DK conversion)", GAME_SUPPORTS_SAVE )
@ -2650,6 +2733,6 @@ GAME( 1983, pestplce, mario, pestplce, pestplce, 0, ROT180, "bootleg", "P
GAME( 1985, spclforc, 0, spclforc, spclforc, 0, ROT90, "Senko Industries (Magic Eletronics Inc. licence)", "Special Forces", GAME_NO_SOUND | GAME_SUPPORTS_SAVE ) GAME( 1985, spclforc, 0, spclforc, spclforc, 0, ROT90, "Senko Industries (Magic Eletronics Inc. licence)", "Special Forces", GAME_NO_SOUND | GAME_SUPPORTS_SAVE )
GAME( 1985, spcfrcii, 0, spclforc, spclforc, 0, ROT90, "Senko Industries (Magic Eletronics Inc. licence)", "Special Forces II", GAME_NO_SOUND | GAME_SUPPORTS_SAVE ) GAME( 1985, spcfrcii, 0, spclforc, spclforc, 0, ROT90, "Senko Industries (Magic Eletronics Inc. licence)", "Special Forces II", GAME_NO_SOUND | GAME_SUPPORTS_SAVE )
//FIXME: move DRIVER_INIT here GAME( 1984, drakton, 0, drakton, drakton, drakton, ROT90, "Epos Corporation", "Drakton (DK conversion)", GAME_SUPPORTS_SAVE )
GAME( 1984, drakton, 0, drakton, drakton, drakton, ROT90, "Epos Corporation", "Drakton", GAME_SUPPORTS_SAVE ) GAME( 1984, drktnjr, drakton, drktnjr, drakton, drakton, ROT90, "Epos Corporation", "Drakton (DKJr conversion)", GAME_SUPPORTS_SAVE )
GAME( 1985, strtheat, 0, strtheat, strtheat, strtheat, ROT90, "Epos Corporation", "Street Heat - Cardinal Amusements", GAME_SUPPORTS_SAVE ) GAME( 1985, strtheat, 0, strtheat, strtheat, strtheat, ROT90, "Epos Corporation", "Street Heat - Cardinal Amusements", GAME_SUPPORTS_SAVE )

View File

@ -850,7 +850,13 @@ static void atapi_cause_irq(void)
cpunum_set_input_line(0, INPUT_LINE_IRQ4, ASSERT_LINE); cpunum_set_input_line(0, INPUT_LINE_IRQ4, ASSERT_LINE);
} }
static void atapi_init(void) static void atapi_exit(running_machine* machine)
{
SCSIDeleteInstance(atapi_device_data[1]);
SCSIDeleteInstance(atapi_device_data[0]);
}
static void atapi_init(running_machine *machine)
{ {
memset(atapi_regs, 0, sizeof(atapi_regs)); memset(atapi_regs, 0, sizeof(atapi_regs));
@ -866,6 +872,7 @@ static void atapi_init(void)
SCSIAllocInstance( SCSI_DEVICE_CDROM, &atapi_device_data[0], 0 ); SCSIAllocInstance( SCSI_DEVICE_CDROM, &atapi_device_data[0], 0 );
// TODO: the slave drive can be either CD-ROM, DVD-ROM or HDD // TODO: the slave drive can be either CD-ROM, DVD-ROM or HDD
SCSIAllocInstance( SCSI_DEVICE_CDROM, &atapi_device_data[1], 1 ); SCSIAllocInstance( SCSI_DEVICE_CDROM, &atapi_device_data[1], 1 );
add_exit_callback(machine, atapi_exit);
} }
static void atapi_reset(void) static void atapi_reset(void)
@ -2244,7 +2251,7 @@ static void init_firebeat(running_machine *machine)
{ {
UINT8 *rom = memory_region(REGION_USER2); UINT8 *rom = memory_region(REGION_USER2);
atapi_init(); atapi_init(machine);
intelflash_init(0, FLASH_FUJITSU_29F016A, NULL); intelflash_init(0, FLASH_FUJITSU_29F016A, NULL);
intelflash_init(1, FLASH_FUJITSU_29F016A, NULL); intelflash_init(1, FLASH_FUJITSU_29F016A, NULL);
intelflash_init(2, FLASH_FUJITSU_29F016A, NULL); intelflash_init(2, FLASH_FUJITSU_29F016A, NULL);

View File

@ -9,6 +9,12 @@ TODO: Emulated sound
HD38882PA06 HD38882PA06
I think HD38880 is a CPU/MCU, because the game just sends it a sound command (0-0x1a) I think HD38880 is a CPU/MCU, because the game just sends it a sound command (0-0x1a)
couriersud:
The chips above are speech synthesis chips. HD38880 is the main chip
whereas HD38882 is an eprom interface. PARCOR based.
http://www.freepatentsonline.com/4435832.html
Datasheet lists no parcor coefficients
****************************************************************************/ ****************************************************************************/

View File

@ -1593,6 +1593,7 @@ static MACHINE_DRIVER_START( gt3dt )
MDRV_NVRAM_HANDLER( gt3dt ) /* Make Tournament sets load/store the Timekeeper info */ MDRV_NVRAM_HANDLER( gt3dt ) /* Make Tournament sets load/store the Timekeeper info */
MACHINE_DRIVER_END MACHINE_DRIVER_END
static MACHINE_DRIVER_START( wcbowlt ) static MACHINE_DRIVER_START( wcbowlt )
/* basic machine hardware */ /* basic machine hardware */
@ -1602,6 +1603,7 @@ static MACHINE_DRIVER_START( wcbowlt )
MACHINE_DRIVER_END MACHINE_DRIVER_END
/************************************* /*************************************
* *
* ROM definitions * ROM definitions

View File

@ -2628,8 +2628,6 @@ static DRIVER_INIT( slikshot )
memory_install_read8_handler (0, ADDRESS_SPACE_PROGRAM, 0x0180, 0x0180, 0, 0, slikshot_z80_r); memory_install_read8_handler (0, ADDRESS_SPACE_PROGRAM, 0x0180, 0x0180, 0, 0, slikshot_z80_r);
memory_install_read8_handler (0, ADDRESS_SPACE_PROGRAM, 0x01cf, 0x01cf, 0, 0, slikshot_z80_control_r); memory_install_read8_handler (0, ADDRESS_SPACE_PROGRAM, 0x01cf, 0x01cf, 0, 0, slikshot_z80_control_r);
memory_install_write8_handler(0, ADDRESS_SPACE_PROGRAM, 0x01cf, 0x01cf, 0, 0, slikshot_z80_control_w); memory_install_write8_handler(0, ADDRESS_SPACE_PROGRAM, 0x01cf, 0x01cf, 0, 0, slikshot_z80_control_w);
slikshot_set_crosshair_range(116 - 80, 116 + 80);
} }
@ -2638,8 +2636,6 @@ static DRIVER_INIT( sstrike )
memory_install_read8_handler (0, ADDRESS_SPACE_PROGRAM, 0x1180, 0x1180, 0, 0, slikshot_z80_r); memory_install_read8_handler (0, ADDRESS_SPACE_PROGRAM, 0x1180, 0x1180, 0, 0, slikshot_z80_r);
memory_install_read8_handler (0, ADDRESS_SPACE_PROGRAM, 0x11cf, 0x11cf, 0, 0, slikshot_z80_control_r); memory_install_read8_handler (0, ADDRESS_SPACE_PROGRAM, 0x11cf, 0x11cf, 0, 0, slikshot_z80_control_r);
memory_install_write8_handler(0, ADDRESS_SPACE_PROGRAM, 0x11cf, 0x11cf, 0, 0, slikshot_z80_control_w); memory_install_write8_handler(0, ADDRESS_SPACE_PROGRAM, 0x11cf, 0x11cf, 0, 0, slikshot_z80_control_w);
slikshot_set_crosshair_range(186 - 40, 186 + 40);
} }

View File

@ -876,7 +876,20 @@ static WRITE32_HANDLER( atapi_w )
} }
} }
static void atapi_init(void) static void atapi_exit(running_machine* machine)
{
int i;
for( i = 0; i < 2; i++ )
{
if( get_disk_handle( i ) != NULL )
{
SCSIDeleteInstance( available_cdroms[ i ] );
}
}
}
static void atapi_init(running_machine *machine)
{ {
int i; int i;
@ -906,6 +919,7 @@ static void atapi_init(void)
available_cdroms[ i ] = NULL; available_cdroms[ i ] = NULL;
} }
} }
add_exit_callback(machine, atapi_exit);
atapi_data = auto_malloc( ATAPI_DATA_SIZE ); atapi_data = auto_malloc( ATAPI_DATA_SIZE );
@ -1477,7 +1491,7 @@ static DRIVER_INIT( konami573 )
int i; int i;
psx_driver_init(); psx_driver_init();
atapi_init(); atapi_init(machine);
psx_dma_install_read_handler(5, cdrom_dma_read); psx_dma_install_read_handler(5, cdrom_dma_read);
psx_dma_install_write_handler(5, cdrom_dma_write); psx_dma_install_write_handler(5, cdrom_dma_write);

View File

@ -185,7 +185,7 @@ static WRITE32_HANDLER( invasn_gun_w )
if (((old_control ^ gun_control) & pmask) != 0 && (gun_control & pmask) == 0) if (((old_control ^ gun_control) & pmask) != 0 && (gun_control & pmask) == 0)
{ {
const rectangle *visarea = &Machine->screen[0].visarea; const rectangle *visarea = &Machine->screen[0].visarea;
static const char *names[2][2] = static const char *const names[2][2] =
{ {
{ "GUNX1", "GUNY1" }, { "GUNX1", "GUNY1" },
{ "GUNX2", "GUNY2" } { "GUNX2", "GUNY2" }

View File

@ -1118,7 +1118,7 @@ void
namco_roz_init( int gfxbank, int maskregion ) namco_roz_init( int gfxbank, int maskregion )
{ {
int i; int i;
static tile_get_info_callback roz_info[ROZ_TILEMAP_COUNT] = static const tile_get_info_callback roz_info[ROZ_TILEMAP_COUNT] =
{ {
roz_get_info0, roz_get_info0,
roz_get_info1 roz_get_info1

View File

@ -309,14 +309,14 @@ INPUT_PORTS_END
ROM_SYSTEM_BIOS( 7, "japan-s1", "Japan MVS (Ver. 1)" ) \ ROM_SYSTEM_BIOS( 7, "japan-s1", "Japan MVS (Ver. 1)" ) \
ROM_LOAD16_WORD_SWAP_BIOS( 7, "sp1.jipan.1024",0x00000, 0x020000, CRC(9fb0abe4) SHA1(18a987ce2229df79a8cf6a84f968f0e42ce4e59d) ) /* Japan, Older */ \ ROM_LOAD16_WORD_SWAP_BIOS( 7, "sp1.jipan.1024",0x00000, 0x020000, CRC(9fb0abe4) SHA1(18a987ce2229df79a8cf6a84f968f0e42ce4e59d) ) /* Japan, Older */ \
// ROM_SYSTEM_BIOS( 8, "uni-bios.10","Unibios MVS (Hack, Ver. 1.0)" ) // ROM_SYSTEM_BIOS( 8, "uni-bios","Universe Bios (Hack, Ver. 2.3)" )
// ROM_LOAD16_WORD_SWAP_BIOS( 8, "uni-bios.10", 0x00000, 0x020000, CRC(0ce453a0) SHA1(3b4c0cd26c176fc6b26c3a2f95143dd478f6abf9) ) /* Universe Bios v1.0 (hack) */ // ROM_LOAD16_WORD_SWAP_BIOS( 8, "uni-bios.rom", 0x00000, 0x020000, CRC(601720ae) SHA1(1b8a72c720cdb5ee3f1d735bbcf447b09204b8d9) ) /* Universe Bios v2.3 (hack) */
// ROM_SYSTEM_BIOS( 9, "uni-bios.11","Unibios MVS (Hack, Ver. 1.1)" ) // ROM_SYSTEM_BIOS( 9, "debug", "Debug MVS (Hack?)" )
// ROM_LOAD16_WORD_SWAP_BIOS( 9, "uni-bios.11", 0x00000, 0x020000, CRC(5dda0d84) SHA1(4153d533c02926a2577e49c32657214781ff29b7) ) /* Universe Bios v1.1 (hack) */ // ROM_LOAD16_WORD_SWAP_BIOS( 9, "neodebug.rom", 0x00000, 0x020000, CRC(698ebb7d) SHA1(081c49aa8cc7dad5939833dc1b18338321ea0a07) ) /* Debug (Development) Bios */
// ROM_SYSTEM_BIOS(10, "debug", "Debug MVS (Hack?)" ) // ROM_SYSTEM_BIOS(10, "asia-aes", "Asia AES" )
// ROM_LOAD16_WORD_SWAP_BIOS(10, "neodebug.rom", 0x00000, 0x020000, CRC(698ebb7d) SHA1(081c49aa8cc7dad5939833dc1b18338321ea0a07) ) /* Debug (Development) Bios */ // ROM_LOAD16_WORD_SWAP_BIOS(10, "neo-epo.bin", 0x00000, 0x020000, CRC(d27a71f1) SHA1(1b3b22092f30c4d1b2c15f04d1670eb1e9fbea07) ) /* AES Console (Asia?) Bios */
// ROM_SYSTEM_BIOS(11, "asia-aes", "Asia AES" ) // ROM_SYSTEM_BIOS(11, "jap-aes", "Japan AES" )
// ROM_LOAD16_WORD_SWAP_BIOS(11, "aes-bios.bin", 0x00000, 0x020000, CRC(d27a71f1) SHA1(1b3b22092f30c4d1b2c15f04d1670eb1e9fbea07) ) /* AES Console (Asia?) Bios */ // ROM_LOAD16_WORD_SWAP_BIOS(11, "neo-po.bin", 0x00000, 0x020000, CRC(16d0c132) SHA1(4e4a440cae46f3889d20234aebd7f8d5f522e22c) ) /* AES Console (Japan) Bios */
/* note you'll have to modify the last for lines of each block to use the extra bios roms, /* note you'll have to modify the last for lines of each block to use the extra bios roms,
they're hacks / homebrew / console bios roms so MAME doesn't list them by default */ they're hacks / homebrew / console bios roms so MAME doesn't list them by default */
@ -404,8 +404,103 @@ INPUT_PORTS_END
ROM_LOAD( "000-lo.lo", 0x00000, 0x10000, CRC(e09e253c) SHA1(2b1c719531dac9bb503f22644e6e4236b91e7cfc) ) ROM_LOAD( "000-lo.lo", 0x00000, 0x10000, CRC(e09e253c) SHA1(2b1c719531dac9bb503f22644e6e4236b91e7cfc) )
/***************************************************************************
Neo-Geo game pcb infos:
=======================
The Neo-Geo games for AES (home) and MVS (arcade) systems are cartridge based.
Each cartridge consists of two pcb's: CHA and PROG.
CHA pcb contains gfx data ('C' - rom), text layer data ('S' - rom) and sound driver ('M' - rom).
PROG pcb contains sample data ('V' - rom) and program code ('P' - rom).
On most pcb's various custom/protection chips can also be found:
CHA:
. NEO-273
. NEO-CMC
. NEO-ZMC
. NEO-ZMC2
. PRO-CT0
. SNK-9201
PROG:
. ALTERA
. NEO-COMA
. NEO-PCM2 (SNK 1999)
. NEO-PCM2 (PLAYMORE 2002)
. NEO-PVC
. NEO-SMA
. PCM
Known pcb's:
============
MVS CHA:
. NEO-MVS CHA-8M
. NEO-MVS CHA42G
. NEO-MVS CHA42G-1
. NEO-MVS CHA42G-2
. NEO-MVS CHA42G-3B
. NEO-MVS CHA256
. NEO-MVS CHA256B
. NEO-MVS PSTM CHA136
. NEO-MVS CHA512Y
. NEO-MVS CHAFIO
MVS PROG:
. NEO-MVS PROG8M42
. NEO-MVS PROG16
. NEO-MVS PROG42G
. NEO-MVS PROG42G-1
. NEO-MVS PROGGSC
. NEO-MVS PROGTOP
. NEO-MVS PROGSF1
. NEO-MVS PROGEOP
. NEO-MVS PROGLBA - LBA-SUB (2000.2.24)
. NEO-MVS PROGBK1
. NEO-MVS PROGBK2
. NEO-MVS PROGBK2R
. NEO-MVS PROGBK3R
. NEO-MVS PROGBK3S
AES CHA:
. NEO-AEG CHA-32
. NEO-AEG CHA42G-1
. NEO-AEG CHA42G-3
. NEO-AEG CHA42G-4
. NEO-AEG CHA256
. NEO-AEG CHA256[B]
. NEO-AEG CHA256RY
. NEO-AEG CHA512Y
. NEO-AEG CHAFIO (SNK 1999.8.10)
AES PROG:
. NEO-AEG PROG-NAM
. NEO-AEG PROG-HERO
. NEO-AEG PROG B
. NEO-AEG PROG-4A
. NEO-AEG PROG-4B
. NEO-AEG PROG16
. NEO-AEG PROG42G-COM
. NEO-AEG PROG42G-1
. NEO-AEG PROG4096B
. NEO-AEG PROGGS
. NEO-AEG PROGLBA
. NEO-AEG PROGRK
. NEO-AEG PROGRKB
. NEO-AEG PROGBK1Y
. NEO-AEG PROGBK2
. NEO-AEG PROGBK3R
The above only covers SNK / SNK-PLAYMORE pcb's. There also exists a
wide range of 'bootleg' pcb's.
****************************************************************************/
/******************************************************************************/
ROM_START( nam1975 ) ROM_START( nam1975 )
ROM_REGION( 0x100000, NEOGEO_REGION_MAIN_CPU_CARTRIDGE, 0 ) ROM_REGION( 0x100000, NEOGEO_REGION_MAIN_CPU_CARTRIDGE, 0 )
@ -710,18 +805,18 @@ ROM_END
ROM_START( superspy ) ROM_START( superspy )
ROM_REGION( 0x100000, NEOGEO_REGION_MAIN_CPU_CARTRIDGE, 0 ) ROM_REGION( 0x100000, NEOGEO_REGION_MAIN_CPU_CARTRIDGE, 0 )
ROM_LOAD16_WORD_SWAP( "011-p1.bin", 0x000000, 0x080000, CRC(c7f944b5) SHA1(da7560e09187c68f1d9f7656218497b4464c56c9) ) ROM_LOAD16_WORD_SWAP( "011-p1.bin", 0x000000, 0x080000, CRC(c7f944b5) SHA1(da7560e09187c68f1d9f7656218497b4464c56c9) )
ROM_LOAD16_WORD_SWAP( "011-p2.bin", 0x080000, 0x020000, CRC(811a4faf) SHA1(8169dfaf79f52d80ecec402ce1b1ab9cafb7ebdd) ) ROM_LOAD16_WORD_SWAP( "011-sp2.bin", 0x080000, 0x020000, CRC(811a4faf) SHA1(8169dfaf79f52d80ecec402ce1b1ab9cafb7ebdd) )
NEO_SFIX_128K( "011-s1.bin", CRC(ec5fdb96) SHA1(8003028025ac7bf531e568add6ba66c02d0b7e84) ) NEO_SFIX_128K( "011-s1.bin", CRC(ec5fdb96) SHA1(8003028025ac7bf531e568add6ba66c02d0b7e84) )
NEO_BIOS_AUDIO_128K( "011-m1.bin", BAD_DUMP CRC(d59d5d12) SHA1(0692b6f35c9ee3840f945703c4eb51ab83eb0714) ) NEO_BIOS_AUDIO_128K( "011-m1.bin", CRC(6f737b5a) SHA1(d52f7b6786b6e33f09ba0cf30889082c1dfb9336) )
ROM_REGION( 0x200000, NEOGEO_REGION_AUDIO_DATA_1, 0 ) ROM_REGION( 0x180000, NEOGEO_REGION_AUDIO_DATA_1, 0 )
ROM_LOAD( "011-v11.bin", 0x000000, 0x100000, CRC(5c674d5c) SHA1(d7b9beddeb247b584cea9ca6c43ec6869809b673) ) ROM_LOAD( "011-v11.bin", 0x000000, 0x100000, CRC(5c674d5c) SHA1(d7b9beddeb247b584cea9ca6c43ec6869809b673) )
ROM_LOAD( "011-v12.bin", 0x100000, 0x100000, CRC(7df8898b) SHA1(23dd6df47fa51b210af800ae551295300e125106) ) ROM_LOAD( "011-v12.bin", 0x100000, 0x080000, CRC(9f513d5a) SHA1(37b04962f0b8e2a74abd35c407337a6151dc4e95) )
ROM_REGION( 0x100000, NEOGEO_REGION_AUDIO_DATA_2, 0 ) ROM_REGION( 0x080000, NEOGEO_REGION_AUDIO_DATA_2, 0 )
ROM_LOAD( "011-v21.bin", 0x000000, 0x100000, CRC(1ebe94c7) SHA1(c186810523a7df880cb080c62aa322bbcaefca17) ) ROM_LOAD( "011-v21.bin", 0x000000, 0x080000, CRC(426cd040) SHA1(b2b45189837c8287223c2b8bd4df9525b72a3f16) )
ROM_REGION( 0x400000, NEOGEO_REGION_SPRITES, ROMREGION_DISPOSE ) ROM_REGION( 0x400000, NEOGEO_REGION_SPRITES, ROMREGION_DISPOSE )
ROM_LOAD16_BYTE( "011-c1.bin", 0x000000, 0x100000, CRC(cae7be57) SHA1(43b35b349594535689c358d9f324adda55e5281a) ) /* Plane 0,1 */ ROM_LOAD16_BYTE( "011-c1.bin", 0x000000, 0x100000, CRC(cae7be57) SHA1(43b35b349594535689c358d9f324adda55e5281a) ) /* Plane 0,1 */
@ -924,7 +1019,7 @@ ROM_START( gpilots )
ROM_LOAD16_BYTE( "020-c4.bin", 0x200001, 0x100000, CRC(edde439b) SHA1(79be7b10ecdab54c2f77062b8f5fda0e299fa982) ) ROM_LOAD16_BYTE( "020-c4.bin", 0x200001, 0x100000, CRC(edde439b) SHA1(79be7b10ecdab54c2f77062b8f5fda0e299fa982) )
ROM_END ROM_END
ROM_START( joyjoy ) ROM_START( joyjoy ) /* MVS AND AES VERSION */
ROM_REGION( 0x100000, NEOGEO_REGION_MAIN_CPU_CARTRIDGE, 0 ) ROM_REGION( 0x100000, NEOGEO_REGION_MAIN_CPU_CARTRIDGE, 0 )
ROM_LOAD16_WORD_SWAP( "021-p1.bin", 0x000000, 0x080000, CRC(39c3478f) SHA1(06ebe54c9c4e14c5c31e770013d58b7162359ecc) ) ROM_LOAD16_WORD_SWAP( "021-p1.bin", 0x000000, 0x080000, CRC(39c3478f) SHA1(06ebe54c9c4e14c5c31e770013d58b7162359ecc) )
@ -1134,7 +1229,28 @@ ROM_START( socbrawl )
NEO_SFIX_128K( "031-s1.bin", CRC(4c117174) SHA1(26e52c4f628338a9aa1c159517cdf873f738fb98) ) NEO_SFIX_128K( "031-s1.bin", CRC(4c117174) SHA1(26e52c4f628338a9aa1c159517cdf873f738fb98) )
NEO_BIOS_AUDIO_64K( "031-m1.bin", BAD_DUMP CRC(2f38d5d3) SHA1(0fc01750277e554978e68e7e6d596f8bd6b1e178) ) NEO_BIOS_AUDIO_128K( "031-m1.bin", CRC(3aa4e9e1) SHA1(65e53d799a0cb55b5bc55d57773e4682a72d7c2d) )
ROM_REGION( 0x200000, NEOGEO_REGION_AUDIO_DATA_1, 0 )
ROM_LOAD( "031-v1.bin", 0x000000, 0x100000, CRC(cc78497e) SHA1(895bd647150fae9b2259ef043ed681f4c4de66ea) )
ROM_LOAD( "031-v2.bin", 0x100000, 0x100000, CRC(dda043c6) SHA1(08165a59700ab6b1e523079dd2a3549e520cc594) )
NO_DELTAT_REGION
ROM_REGION( 0x300000, NEOGEO_REGION_SPRITES, ROMREGION_DISPOSE )
ROM_LOAD16_BYTE( "031-c1.bin", 0x000000, 0x100000, CRC(bd0a4eb8) SHA1(b67988cb3e550d083e81c9bd436da55b242785ed) ) /* Plane 0,1 */
ROM_LOAD16_BYTE( "031-c2.bin", 0x000001, 0x100000, CRC(efde5382) SHA1(e42789c8d87ee3d4549d0a903e990c03338cbbd8) ) /* Plane 2,3 */
ROM_LOAD16_BYTE( "031-c3.bin", 0x200000, 0x080000, CRC(580f7f33) SHA1(f4f95a7c8de00e1366a723fc4cd0e8c1905af636) ) /* Plane 0,1 */
ROM_LOAD16_BYTE( "031-c4.bin", 0x200001, 0x080000, CRC(ed297de8) SHA1(616f8fa4c86231f3e79faf9f69f8bb909cbc35f0) ) /* Plane 2,3 */
ROM_END
ROM_START( socbrala ) /* MVS VERSION */
ROM_REGION( 0x100000, NEOGEO_REGION_MAIN_CPU_CARTRIDGE, 0 )
ROM_LOAD16_WORD_SWAP( "031-pg1.bin", 0x000000, 0x080000, CRC(17f034a7) SHA1(2e66c7bd93a08efe63c4894494db50bbf58f60e4) )
NEO_SFIX_128K( "031-s1.bin", CRC(4c117174) SHA1(26e52c4f628338a9aa1c159517cdf873f738fb98) )
NEO_BIOS_AUDIO_128K( "031-m1.bin", CRC(3aa4e9e1) SHA1(65e53d799a0cb55b5bc55d57773e4682a72d7c2d) )
ROM_REGION( 0x200000, NEOGEO_REGION_AUDIO_DATA_1, 0 ) ROM_REGION( 0x200000, NEOGEO_REGION_AUDIO_DATA_1, 0 )
ROM_LOAD( "031-v1.bin", 0x000000, 0x100000, CRC(cc78497e) SHA1(895bd647150fae9b2259ef043ed681f4c4de66ea) ) ROM_LOAD( "031-v1.bin", 0x000000, 0x100000, CRC(cc78497e) SHA1(895bd647150fae9b2259ef043ed681f4c4de66ea) )
@ -1213,13 +1329,13 @@ ROM_START( fatfury1 )
ROM_LOAD16_BYTE( "033-c4.bin", 0x200001, 0x100000, CRC(9397476a) SHA1(a12dbb74020aeb6ebf24ec2abbfba5129cabcb7d) ) /* Plane 2,3 */ ROM_LOAD16_BYTE( "033-c4.bin", 0x200001, 0x100000, CRC(9397476a) SHA1(a12dbb74020aeb6ebf24ec2abbfba5129cabcb7d) ) /* Plane 2,3 */
ROM_END ROM_END
ROM_START( fbfrenzy ) ROM_START( fbfrenzy ) /* MVS AND AES VERSION */
ROM_REGION( 0x100000, NEOGEO_REGION_MAIN_CPU_CARTRIDGE, 0 ) ROM_REGION( 0x100000, NEOGEO_REGION_MAIN_CPU_CARTRIDGE, 0 )
ROM_LOAD16_WORD_SWAP( "034-p1.bin", 0x000000, 0x080000, CRC(cdef6b19) SHA1(97482db0dffc6d625fb41fa38449c0a74d741a72) ) ROM_LOAD16_WORD_SWAP( "034-p1.bin", 0x000000, 0x080000, CRC(cdef6b19) SHA1(97482db0dffc6d625fb41fa38449c0a74d741a72) )
NEO_SFIX_128K( "034-s1.bin", CRC(8472ed44) SHA1(42e1a9671dddd090d2a634cff986f6c73ba08b70) ) NEO_SFIX_128K( "034-s1.bin", CRC(8472ed44) SHA1(42e1a9671dddd090d2a634cff986f6c73ba08b70) )
NEO_BIOS_AUDIO_128K( "034-m1.bin", BAD_DUMP CRC(f41b16b8) SHA1(f3e1cfc4cd2c5baece176f169906aa796367d303) ) NEO_BIOS_AUDIO_128K( "034-m1.bin", CRC(f41b16b8) SHA1(f3e1cfc4cd2c5baece176f169906aa796367d303) )
ROM_REGION( 0x200000, NEOGEO_REGION_AUDIO_DATA_1, 0 ) ROM_REGION( 0x200000, NEOGEO_REGION_AUDIO_DATA_1, 0 )
ROM_LOAD( "034-v1.bin", 0x000000, 0x100000, CRC(50c9d0dd) SHA1(2b3f2875b00e5f307d274128bd73c1521a7d901b) ) ROM_LOAD( "034-v1.bin", 0x000000, 0x100000, CRC(50c9d0dd) SHA1(2b3f2875b00e5f307d274128bd73c1521a7d901b) )
@ -1582,6 +1698,7 @@ ROM_START( androdun )
ROM_REGION( 0x100000, NEOGEO_REGION_AUDIO_DATA_1, 0 ) ROM_REGION( 0x100000, NEOGEO_REGION_AUDIO_DATA_1, 0 )
ROM_LOAD( "049-v1.bin", 0x000000, 0x080000, CRC(577c85b3) SHA1(2c3072401fe73497dca0e9009ae2ba4053fe936d) ) ROM_LOAD( "049-v1.bin", 0x000000, 0x080000, CRC(577c85b3) SHA1(2c3072401fe73497dca0e9009ae2ba4053fe936d) )
ROM_LOAD( "049-v2.bin", 0x080000, 0x080000, CRC(e14551c4) SHA1(763a9912b9df55defb190af3f29ae034f6dd78d6) ) ROM_LOAD( "049-v2.bin", 0x080000, 0x080000, CRC(e14551c4) SHA1(763a9912b9df55defb190af3f29ae034f6dd78d6) )
/* The MVS version has only v1 rom, size 8mbit. */
NO_DELTAT_REGION NO_DELTAT_REGION
@ -1912,7 +2029,7 @@ ROM_START( fightfev )
ROM_LOAD16_WORD_SWAP( "060-p1.bin", 0x000000, 0x080000, CRC(3032041b) SHA1(4b8ed2e6f74579ea35a53e06ccac42d6905b0f51) ) ROM_LOAD16_WORD_SWAP( "060-p1.bin", 0x000000, 0x080000, CRC(3032041b) SHA1(4b8ed2e6f74579ea35a53e06ccac42d6905b0f51) )
ROM_LOAD16_WORD_SWAP( "060-p2.bin", 0x080000, 0x080000, CRC(b0801d5f) SHA1(085746d8f5d271d5f84ccbb7f577193c391f88d4) ) ROM_LOAD16_WORD_SWAP( "060-p2.bin", 0x080000, 0x080000, CRC(b0801d5f) SHA1(085746d8f5d271d5f84ccbb7f577193c391f88d4) )
NEO_SFIX_128K( "060-s1.bin", CRC(70727a1e) SHA1(e0d226be0578adbe7c1d41baba79e61d4d8fac39) ) NEO_SFIX_128K( "060-s1.bin", CRC(7f012104) SHA1(f366dcc3923655dff16ec08a40d5fce22a84257d) )
NEO_BIOS_AUDIO_128K( "060-m1.bin", CRC(0b7c4e65) SHA1(999a1e784de18db3f1332b30bc425836ea6970be) ) NEO_BIOS_AUDIO_128K( "060-m1.bin", CRC(0b7c4e65) SHA1(999a1e784de18db3f1332b30bc425836ea6970be) )
@ -1929,13 +2046,13 @@ ROM_START( fightfev )
ROM_LOAD16_BYTE( "060-c4.bin", 0x0400001, 0x200000, CRC(026f3b62) SHA1(d608483b70d60e7aa0e41f25a8b3fed508129eb7) ) /* Plane 2,3 */ ROM_LOAD16_BYTE( "060-c4.bin", 0x0400001, 0x200000, CRC(026f3b62) SHA1(d608483b70d60e7aa0e41f25a8b3fed508129eb7) ) /* Plane 2,3 */
ROM_END ROM_END
ROM_START( fightfva ) ROM_START( fightfva ) /* MVS VERSION */
ROM_REGION( 0x200000, NEOGEO_REGION_MAIN_CPU_CARTRIDGE, 0 ) ROM_REGION( 0x200000, NEOGEO_REGION_MAIN_CPU_CARTRIDGE, 0 )
ROM_LOAD16_WORD_SWAP( "060-p1a.bin", 0x0000000, 0x100000, CRC(2a104b50) SHA1(3eb663d3df7074e1cdf4c0e450a35c9cf55d8979) ) ROM_LOAD16_WORD_SWAP( "060-p1.rom", 0x0000000, 0x100000, CRC(2a104b50) SHA1(3eb663d3df7074e1cdf4c0e450a35c9cf55d8979) )
/* there was also a copy of the 060-p1.bin with the name 060-p2.bin maybe it should be loaded over the top or this /* there was also a copy of the 060-p1.bin with the name 060-p2.bin maybe it should be loaded over the top or this
larger rom is an older revision... */ larger rom is an older revision... */
NEO_SFIX_128K( "060-s1.bin", CRC(70727a1e) SHA1(e0d226be0578adbe7c1d41baba79e61d4d8fac39) ) NEO_SFIX_128K( "060-s1.bin", CRC(7f012104) SHA1(f366dcc3923655dff16ec08a40d5fce22a84257d) )
NEO_BIOS_AUDIO_128K( "060-m1.bin", CRC(0b7c4e65) SHA1(999a1e784de18db3f1332b30bc425836ea6970be) ) NEO_BIOS_AUDIO_128K( "060-m1.bin", CRC(0b7c4e65) SHA1(999a1e784de18db3f1332b30bc425836ea6970be) )
@ -2849,9 +2966,9 @@ ROM_START( sonicwi3 )
NEO_BIOS_AUDIO_128K( "097-m1.bin", CRC(b20e4291) SHA1(0e891ab53f9fded510295dfc7818bc59b4a9dd97) ) NEO_BIOS_AUDIO_128K( "097-m1.bin", CRC(b20e4291) SHA1(0e891ab53f9fded510295dfc7818bc59b4a9dd97) )
ROM_REGION( 0x500000, NEOGEO_REGION_AUDIO_DATA_1, 0 ) ROM_REGION( 0x600000, NEOGEO_REGION_AUDIO_DATA_1, 0 )
ROM_LOAD( "097-v1.bin", 0x000000, 0x400000, CRC(6f885152) SHA1(8175804d5c1420c5d37b733d4a8fa2aa81e59f1b) ) ROM_LOAD( "097-v1.bin", 0x000000, 0x400000, CRC(6f885152) SHA1(8175804d5c1420c5d37b733d4a8fa2aa81e59f1b) )
ROM_LOAD( "097-v2.bin", 0x400000, 0x100000, CRC(32187ccd) SHA1(35a93de2a23bdec181c504d9c21a871bf86edee1) ) ROM_LOAD( "097-v2.bin", 0x400000, 0x200000, CRC(3359e868) SHA1(b7efd9f1a6dab33271fe8356bcc863aeae1d3ed8) )
NO_DELTAT_REGION NO_DELTAT_REGION
@ -2928,7 +3045,7 @@ ROM_START( mosyougi )
ROM_REGION( 0x100000, NEOGEO_REGION_MAIN_CPU_CARTRIDGE, 0 ) ROM_REGION( 0x100000, NEOGEO_REGION_MAIN_CPU_CARTRIDGE, 0 )
ROM_LOAD16_WORD_SWAP( "203-p1.bin", 0x000000, 0x100000, CRC(7ba70e2d) SHA1(945f472cc3e7706f613c52df18de35c986d166e7) ) ROM_LOAD16_WORD_SWAP( "203-p1.bin", 0x000000, 0x100000, CRC(7ba70e2d) SHA1(945f472cc3e7706f613c52df18de35c986d166e7) )
NEO_SFIX_128K( "203-s1.bin", CRC(4e132fac) SHA1(ecc5552880cc0a771121efe2a60810b70f6121ff) ) NEO_SFIX_128K( "203-s1.bin", CRC(bfdc8309) SHA1(781337eab932a130b396a6c1080611d6f9c24c6e) )
NEO_BIOS_AUDIO_128K( "203-m1.bin", CRC(a602c2c2) SHA1(19fd5d0379244c528b58343f6cbf78b4766fb23d) ) NEO_BIOS_AUDIO_128K( "203-m1.bin", CRC(a602c2c2) SHA1(19fd5d0379244c528b58343f6cbf78b4766fb23d) )
@ -3898,7 +4015,7 @@ ROM_END
ROM_START( kof98 ) /* encrypted code + protection */ ROM_START( kof98 ) /* encrypted code + protection */
ROM_REGION( 0x600000, NEOGEO_REGION_MAIN_CPU_CARTRIDGE, 0 ) ROM_REGION( 0x600000, NEOGEO_REGION_MAIN_CPU_CARTRIDGE, 0 )
ROM_LOAD16_WORD_SWAP( "yz98-p1.160", 0x000000, 0x200000, CRC(8893df89) SHA1(0452828785110601c65f667209fc2d2926cd3751) ) ROM_LOAD16_WORD_SWAP( "242-p1.bin", 0x000000, 0x200000, CRC(8893df89) SHA1(0452828785110601c65f667209fc2d2926cd3751) )
ROM_LOAD16_WORD_SWAP( "242-p2.bin", 0x200000, 0x400000, CRC(980aba4c) SHA1(5e735929ec6c3ca5b2efae3c7de47bcbb8ade2c5) ) ROM_LOAD16_WORD_SWAP( "242-p2.bin", 0x200000, 0x400000, CRC(980aba4c) SHA1(5e735929ec6c3ca5b2efae3c7de47bcbb8ade2c5) )
NEO_SFIX_128K( "242-s1.bin", CRC(7f7b4805) SHA1(80ee6e5d0ece9c34ebca54b043a7cb33f9ff6b92) ) NEO_SFIX_128K( "242-s1.bin", CRC(7f7b4805) SHA1(80ee6e5d0ece9c34ebca54b043a7cb33f9ff6b92) )
@ -3926,7 +4043,7 @@ ROM_END
ROM_START( kof98k ) /* encrypted code + protection, only z80 rom is different to kof98 */ ROM_START( kof98k ) /* encrypted code + protection, only z80 rom is different to kof98 */
ROM_REGION( 0x600000, NEOGEO_REGION_MAIN_CPU_CARTRIDGE, 0 ) ROM_REGION( 0x600000, NEOGEO_REGION_MAIN_CPU_CARTRIDGE, 0 )
ROM_LOAD16_WORD_SWAP( "yz98-p1.160", 0x000000, 0x200000, CRC(8893df89) SHA1(0452828785110601c65f667209fc2d2926cd3751) ) ROM_LOAD16_WORD_SWAP( "242-p1.bin", 0x000000, 0x200000, CRC(8893df89) SHA1(0452828785110601c65f667209fc2d2926cd3751) )
ROM_LOAD16_WORD_SWAP( "242-p2.bin", 0x200000, 0x400000, CRC(980aba4c) SHA1(5e735929ec6c3ca5b2efae3c7de47bcbb8ade2c5) ) ROM_LOAD16_WORD_SWAP( "242-p2.bin", 0x200000, 0x400000, CRC(980aba4c) SHA1(5e735929ec6c3ca5b2efae3c7de47bcbb8ade2c5) )
NEO_SFIX_128K( "242-s1.bin", CRC(7f7b4805) SHA1(80ee6e5d0ece9c34ebca54b043a7cb33f9ff6b92) ) NEO_SFIX_128K( "242-s1.bin", CRC(7f7b4805) SHA1(80ee6e5d0ece9c34ebca54b043a7cb33f9ff6b92) )
@ -4185,7 +4302,7 @@ ROM_START( mslugx )
ROM_LOAD16_BYTE( "250-c6.bin", 0x2000001, 0x800000, CRC(83e3e69d) SHA1(39be66287696829d243fb71b3fb8b7dc2bc3298f) ) /* Plane 0,1 */ ROM_LOAD16_BYTE( "250-c6.bin", 0x2000001, 0x800000, CRC(83e3e69d) SHA1(39be66287696829d243fb71b3fb8b7dc2bc3298f) ) /* Plane 0,1 */
ROM_END ROM_END
ROM_START( kof99 ) /* Original Version - Encrypted Code & GFX */ ROM_START( kof99 ) /* Original Version - Encrypted Code & GFX */ /* AES VERSION */
ROM_REGION( 0x900000, NEOGEO_REGION_MAIN_CPU_CARTRIDGE, 0 ) ROM_REGION( 0x900000, NEOGEO_REGION_MAIN_CPU_CARTRIDGE, 0 )
ROM_LOAD16_WORD_SWAP( "251-sma.kc", 0x0c0000, 0x040000, CRC(6c9d0647) SHA1(2a0ce62ca6c18007e8fbe1b60475c7874ab79389) ) /* stored in the custom chip */ ROM_LOAD16_WORD_SWAP( "251-sma.kc", 0x0c0000, 0x040000, CRC(6c9d0647) SHA1(2a0ce62ca6c18007e8fbe1b60475c7874ab79389) ) /* stored in the custom chip */
ROM_LOAD16_WORD_SWAP( "251-p1.bin", 0x100000, 0x400000, CRC(006e4532) SHA1(47791ab4044ad55988b1d3412d95b65b91a163c8) ) ROM_LOAD16_WORD_SWAP( "251-p1.bin", 0x100000, 0x400000, CRC(006e4532) SHA1(47791ab4044ad55988b1d3412d95b65b91a163c8) )
@ -4221,7 +4338,7 @@ ROM_START( kof99 ) /* Original Version - Encrypted Code & GFX */
ROM_LOAD16_BYTE( "251-c8.bin", 0x3000001, 0x800000, CRC(8d921c68) SHA1(42acf1d27d52a8e3b6262eb7df50693c0b135565) ) /* Plane 2,3 */ ROM_LOAD16_BYTE( "251-c8.bin", 0x3000001, 0x800000, CRC(8d921c68) SHA1(42acf1d27d52a8e3b6262eb7df50693c0b135565) ) /* Plane 2,3 */
ROM_END ROM_END
ROM_START( kof99a ) /* Original Version - Encrypted Code & GFX */ ROM_START( kof99a ) /* Original Version - Encrypted Code & GFX */ /* MVS VERSION */
ROM_REGION( 0x900000, NEOGEO_REGION_MAIN_CPU_CARTRIDGE, 0 ) ROM_REGION( 0x900000, NEOGEO_REGION_MAIN_CPU_CARTRIDGE, 0 )
ROM_LOAD16_WORD_SWAP( "251-sma.ka", 0x0c0000, 0x040000, CRC(7766d09e) SHA1(4e0a49d1ad669a62676cb30f527c6590cde80194) ) /* stored in the custom chip */ ROM_LOAD16_WORD_SWAP( "251-sma.ka", 0x0c0000, 0x040000, CRC(7766d09e) SHA1(4e0a49d1ad669a62676cb30f527c6590cde80194) ) /* stored in the custom chip */
ROM_LOAD16_WORD_SWAP( "251-p1.bin", 0x100000, 0x400000, CRC(006e4532) SHA1(47791ab4044ad55988b1d3412d95b65b91a163c8) ) ROM_LOAD16_WORD_SWAP( "251-p1.bin", 0x100000, 0x400000, CRC(006e4532) SHA1(47791ab4044ad55988b1d3412d95b65b91a163c8) )
@ -5289,7 +5406,7 @@ ROM_START( pnyaa ) /* Encrypted Set */ /* MVS VERSION */
ROM_LOAD16_BYTE( "267-c2.bin", 0x0000001, 0x800000, CRC(2b67187b) SHA1(149c3efd3c444fd0d35a97fa2268102bf76be3ed) ) /* Plane 2,3 */ ROM_LOAD16_BYTE( "267-c2.bin", 0x0000001, 0x800000, CRC(2b67187b) SHA1(149c3efd3c444fd0d35a97fa2268102bf76be3ed) ) /* Plane 2,3 */
ROM_END ROM_END
ROM_START( mslug5 ) /* Encrypted Set */ ROM_START( mslug5 ) /* Encrypted Set */ /* MVS VERSION */
ROM_REGION( 0x800000, NEOGEO_REGION_MAIN_CPU_CARTRIDGE, 0 ) ROM_REGION( 0x800000, NEOGEO_REGION_MAIN_CPU_CARTRIDGE, 0 )
ROM_LOAD32_WORD_SWAP( "268-p1cr.bin", 0x000000, 0x400000, CRC(d0466792) SHA1(880819933d997fab398f91061e9dbccb959ae8a1) ) ROM_LOAD32_WORD_SWAP( "268-p1cr.bin", 0x000000, 0x400000, CRC(d0466792) SHA1(880819933d997fab398f91061e9dbccb959ae8a1) )
ROM_LOAD32_WORD_SWAP( "268-p2cr.bin", 0x000002, 0x400000, CRC(fbf6b61e) SHA1(9ec743d5988b5e3183f37f8edf45c72a8c0c893e) ) ROM_LOAD32_WORD_SWAP( "268-p2cr.bin", 0x000002, 0x400000, CRC(fbf6b61e) SHA1(9ec743d5988b5e3183f37f8edf45c72a8c0c893e) )
@ -5302,11 +5419,11 @@ ROM_START( mslug5 ) /* Encrypted Set */
ROM_REGION( 0x20000, NEOGEO_REGION_FIXED_LAYER_BIOS, 0 ) ROM_REGION( 0x20000, NEOGEO_REGION_FIXED_LAYER_BIOS, 0 )
ROM_LOAD( "sfix.sfx", 0x000000, 0x20000, CRC(354029fc) SHA1(4ae4bf23b4c2acff875775d4cbff5583893ce2a1) ) ROM_LOAD( "sfix.sfx", 0x000000, 0x20000, CRC(354029fc) SHA1(4ae4bf23b4c2acff875775d4cbff5583893ce2a1) )
ROM_REGION( 0x10000, NEOGEO_REGION_AUDIO_CPU_ENCRYPTED, 0 ) ROM_REGION( 0x80000, NEOGEO_REGION_AUDIO_CPU_ENCRYPTED, 0 )
/* Encrypted, we load it here for reference and replace with decrypted ROM */ /* Encrypted, we load it here for reference and replace with decrypted ROM */
ROM_LOAD( "268-m1.bin", 0x00000, 0x10000, CRC(58b107d0) SHA1(cc7fe66ff4f9c026cde4df06f86c848eb21f7af8) ) ROM_LOAD( "268-m1.bin", 0x00000, 0x80000, CRC(4a5a6e0e) SHA1(df0f660f2465e1db7be5adfcaf5e88ad61a74a42) )
/* Decrypted */ /* Decrypted */
NEO_BIOS_AUDIO_64K( "268-m1_decrypted.bin", CRC(3c0655a7) SHA1(ae839d4c2b87a7aa3dd8e5caddc43eb75ee9b732) ) //Incorrect data NEO_BIOS_AUDIO_64K( "268-m1_decrypted.bin", CRC(3c0655a7) SHA1(ae839d4c2b87a7aa3dd8e5caddc43eb75ee9b732) ) /* not a 100% match for encrypted version */
ROM_REGION( 0x1000000, NEOGEO_REGION_AUDIO_DATA_1, 0 ) ROM_REGION( 0x1000000, NEOGEO_REGION_AUDIO_DATA_1, 0 )
/* Encrypted */ /* Encrypted */
@ -7041,7 +7158,8 @@ GAME( 1991, legendos, neogeo, neogeo_s, neogeo, neogeo, ROT0, "SNK", "Legend
GAME( 1991, 2020bb, neogeo, neogeo_s, neogeo, neogeo, ROT0, "SNK / Pallas", "2020 Super Baseball (set 1)", 0 ) GAME( 1991, 2020bb, neogeo, neogeo_s, neogeo, neogeo, ROT0, "SNK / Pallas", "2020 Super Baseball (set 1)", 0 )
GAME( 1991, 2020bba, 2020bb, neogeo_s, neogeo, neogeo, ROT0, "SNK / Pallas", "2020 Super Baseball (set 2)", 0 ) GAME( 1991, 2020bba, 2020bb, neogeo_s, neogeo, neogeo, ROT0, "SNK / Pallas", "2020 Super Baseball (set 2)", 0 )
GAME( 1991, 2020bbh, 2020bb, neogeo_s, neogeo, neogeo, ROT0, "SNK / Pallas", "2020 Super Baseball (set 3)", 0 ) GAME( 1991, 2020bbh, 2020bb, neogeo_s, neogeo, neogeo, ROT0, "SNK / Pallas", "2020 Super Baseball (set 3)", 0 )
GAME( 1991, socbrawl, neogeo, neogeo_s, neogeo, neogeo, ROT0, "SNK", "Soccer Brawl", 0 ) GAME( 1991, socbrawl, neogeo, neogeo_s, neogeo, neogeo, ROT0, "SNK", "Soccer Brawl (set 1)", 0 )
GAME( 1991, socbrala, socbrawl, neogeo_s, neogeo, neogeo, ROT0, "SNK", "Soccer Brawl (set 2)", 0 )
GAME( 1991, fatfury1, neogeo, neogeo, neogeo, neogeo, ROT0, "SNK", "Fatal Fury - King of Fighters / Garou Densetsu - shukumei no tatakai", 0 ) GAME( 1991, fatfury1, neogeo, neogeo, neogeo, neogeo, ROT0, "SNK", "Fatal Fury - King of Fighters / Garou Densetsu - shukumei no tatakai", 0 )
GAME( 1991, roboarmy, neogeo, neogeo_s, neogeo, neogeo, ROT0, "SNK", "Robo Army (set 1)", 0 ) GAME( 1991, roboarmy, neogeo, neogeo_s, neogeo, neogeo, ROT0, "SNK", "Robo Army (set 1)", 0 )
GAME( 1991, roboarma, roboarmy, neogeo_s, neogeo, neogeo, ROT0, "SNK", "Robo Army (set 2)", 0 ) GAME( 1991, roboarma, roboarmy, neogeo_s, neogeo, neogeo, ROT0, "SNK", "Robo Army (set 2)", 0 )
@ -7134,9 +7252,9 @@ GAME( 2004, kof2k4se, kof2002, neogeo_s, neogeo, kof2k4se, ROT0, "bootleg", "Th
GAME( 2003, mslug5, neogeo, neogeo_s, neogeo, mslug5, ROT0, "SNK Playmore", "Metal Slug 5", 0 ) GAME( 2003, mslug5, neogeo, neogeo_s, neogeo, mslug5, ROT0, "SNK Playmore", "Metal Slug 5", 0 )
GAME ( 2003, ms5pcb, 0, neogeo_s, neogeo, ms5pcb, ROT0, "SNK Playmore", "Metal Slug 5 (JAMMA PCB)", 0 ) GAME ( 2003, ms5pcb, 0, neogeo_s, neogeo, ms5pcb, ROT0, "SNK Playmore", "Metal Slug 5 (JAMMA PCB)", 0 )
GAME( 2003, ms5plus, mslug5, neogeo_s, neogeo, ms5plus, ROT0, "bootleg", "Metal Slug 5 Plus (bootleg)",0 ) GAME( 2003, ms5plus, mslug5, neogeo_s, neogeo, ms5plus, ROT0, "bootleg", "Metal Slug 5 Plus (bootleg)",0 )
GAME ( 2003, svcpcb, 0, neogeo_s, svcpcb, svcpcb, ROT0, "Playmore", "SNK vs. CAPCOM SVC CHAOS (JAMMA PCB)", 0 ) // not a clone of neogeo because it's NOT a neogeo cart. GAME ( 2003, svcpcb, 0, neogeo_s, svcpcb, svcpcb, ROT0, "SNK Playmore", "SNK vs. CAPCOM SVC CHAOS (JAMMA PCB)", 0 ) // not a clone of neogeo because it's NOT a neogeo cart.
GAME ( 2003, svcpcba, svcpcb, neogeo_s, svcpcb, svcpcb, ROT0, "Playmore", "SNK vs. CAPCOM SVC CHAOS (JAMMA PCB, set 2)" , 0 ) /* Encrypted Code */ GAME ( 2003, svcpcba, svcpcb, neogeo_s, svcpcb, svcpcb, ROT0, "SNK Playmore", "SNK vs. CAPCOM SVC CHAOS (JAMMA PCB, set 2)" , 0 ) /* Encrypted Code */
GAME( 2003, svc, neogeo, neogeo_s, neogeo, svc, ROT0, "Playmore", "SNK vs. CAPCOM SVC CHAOS", 0 ) GAME( 2003, svc, neogeo, neogeo_s, neogeo, svc, ROT0, "SNK Playmore", "SNK vs. CAPCOM SVC CHAOS", 0 )
GAME( 2003, svcboot, svc, neogeo_s, neogeo, svcboot, ROT0, "bootleg", "SNK vs. CAPCOM SVC CHAOS (bootleg)",0 ) GAME( 2003, svcboot, svc, neogeo_s, neogeo, svcboot, ROT0, "bootleg", "SNK vs. CAPCOM SVC CHAOS (bootleg)",0 )
GAME( 2003, svcplus, svc, neogeo_s, neogeo, svcplus, ROT0, "bootleg", "SNK vs. CAPCOM SVC CHAOS Plus (set 1, bootleg)",0 ) GAME( 2003, svcplus, svc, neogeo_s, neogeo, svcplus, ROT0, "bootleg", "SNK vs. CAPCOM SVC CHAOS Plus (set 1, bootleg)",0 )
GAME( 2003, svcplusa, svc, neogeo_s, neogeo, svcplusa, ROT0, "bootleg", "SNK vs. CAPCOM SVC CHAOS Plus (set 2, bootleg)",0 ) GAME( 2003, svcplusa, svc, neogeo_s, neogeo, svcplusa, ROT0, "bootleg", "SNK vs. CAPCOM SVC CHAOS Plus (set 2, bootleg)",0 )
@ -7194,7 +7312,7 @@ GAME( 1997, magdrop3, neogeo, neogeo_s, neogeo, neogeo, ROT0, "Data East Corp
/* Eleven */ /* Eleven */
GAME( 2000, nitd, neogeo, neogeo, neogeo, nitd, ROT0, "Eleven / Gavaking", "Nightmare in the Dark" , 0) /* Encrypted GFX */ GAME( 2000, nitd, neogeo, neogeo, neogeo, nitd, ROT0, "Eleven / Gavaking", "Nightmare in the Dark" , 0) /* Encrypted GFX */
GAME( 2001, nitdbl, nitd, neogeo, neogeo, neogeo, ROT0, "Eleven / Gavaking", "Nightmare in the Dark (bootleg)" , 0) GAME( 2001, nitdbl, nitd, neogeo, neogeo, neogeo, ROT0, "bootleg", "Nightmare in the Dark (bootleg)" , 0)
/* Face */ /* Face */
GAME( 1994, gururin, neogeo, neogeo_s, neogeo, neogeo, ROT0, "Face", "Gururin", 0 ) GAME( 1994, gururin, neogeo, neogeo_s, neogeo, neogeo, ROT0, "Face", "Gururin", 0 )

View File

@ -61,7 +61,6 @@
the language is set to Japanese, maybe the English endings the language is set to Japanese, maybe the English endings
are incomplete / buggy? are incomplete / buggy?
* Graphical Glitches caused by incorrect timing? * Graphical Glitches caused by incorrect timing?
- Ninja Combat sometimes glitches
- Some raster effects are imperfect (off by a couple of lines) - Some raster effects are imperfect (off by a couple of lines)
* Mult-cart support not implementd - the MVS can take up to 6 carts * Mult-cart support not implementd - the MVS can take up to 6 carts
depending on the board being used depending on the board being used
@ -76,6 +75,7 @@
can display 320x240 but most of the games seem designed can display 320x240 but most of the games seem designed
to work with a width of 304, some less. to work with a width of 304, some less.
* Distorted jumping sound in Nightmare in the Dark * Distorted jumping sound in Nightmare in the Dark
* Ninja Combat sometimes glitches
****************************************************************************/ ****************************************************************************/

View File

@ -363,8 +363,8 @@ static WRITE8_HANDLER( peplus_output_bank_a_w )
output_set_value("pe_bnka7",(data >> 7) & 1); /* specific to a kind of machine */ output_set_value("pe_bnka7",(data >> 7) & 1); /* specific to a kind of machine */
coin_out_state = 0; coin_out_state = 0;
if((data >> 4) & 1) if(((data >> 4) & 1) || ((data >> 5) & 1))
coin_out_state = 1; coin_out_state = 3;
} }
static WRITE8_HANDLER( peplus_output_bank_b_w ) static WRITE8_HANDLER( peplus_output_bank_b_w )
@ -594,14 +594,32 @@ static READ8_HANDLER( peplus_input_bank_a_r )
last_door = activecpu_gettotalcycles(); last_door = activecpu_gettotalcycles();
} }
if (curr_cycles - last_coin_out > 60000) { // Guessing with 60000 if (curr_cycles - last_coin_out > 600000 && coin_out_state != 0) { // Guessing with 600000
if (coin_out_state == 1) { if (coin_out_state != 2) {
coin_out = 0x08; coin_out_state = 2; // Coin-Out Off
} } else {
coin_out_state = 0; coin_out_state = 3; // Coin-Out On
}
last_coin_out = activecpu_gettotalcycles(); last_coin_out = activecpu_gettotalcycles();
} }
switch (coin_out_state)
{
case 0x00: // No Coin-Out
coin_out = 0x00;
break;
case 0x01: // First Coin-Out On
coin_out = 0x08;
break;
case 0x02: // Coin-Out Off
coin_out = 0x00;
break;
case 0x03: // Additional Coin-Out On
coin_out = 0x08;
break;
}
bank_a = (sda<<7) | bank_a | (door_open<<5) | coin_optics | coin_out; bank_a = (sda<<7) | bank_a | (door_open<<5) | coin_optics | coin_out;
return bank_a; return bank_a;

View File

@ -413,13 +413,13 @@ static INPUT_PORTS_START( policetr )
PORT_BIT( 0xff, 0x80, IPT_LIGHTGUN_X ) PORT_CROSSHAIR(X, 1.012, 0.008, 0) PORT_SENSITIVITY(50) PORT_KEYDELTA(10) PORT_BIT( 0xff, 0x80, IPT_LIGHTGUN_X ) PORT_CROSSHAIR(X, 1.012, 0.008, 0) PORT_SENSITIVITY(50) PORT_KEYDELTA(10)
PORT_START_TAG("GUNY1") /* fake analog Y */ PORT_START_TAG("GUNY1") /* fake analog Y */
PORT_BIT( 0xff, 0x80, IPT_LIGHTGUN_Y ) PORT_CROSSHAIR(Y, 1.0, 0.002, 0) PORT_SENSITIVITY(70) PORT_KEYDELTA(10) PORT_BIT( 0xff, 0x80, IPT_LIGHTGUN_Y ) PORT_CROSSHAIR(Y, 1.05, 0.002, 0) PORT_SENSITIVITY(70) PORT_KEYDELTA(10)
PORT_START_TAG("GUNX2") /* fake analog X */ PORT_START_TAG("GUNX2") /* fake analog X */
PORT_BIT( 0xff, 0x80, IPT_LIGHTGUN_X ) PORT_CROSSHAIR(X, 1.012, 0.008, 0) PORT_SENSITIVITY(50) PORT_KEYDELTA(10) PORT_PLAYER(2) PORT_BIT( 0xff, 0x80, IPT_LIGHTGUN_X ) PORT_CROSSHAIR(X, 1.012, 0.008, 0) PORT_SENSITIVITY(50) PORT_KEYDELTA(10) PORT_PLAYER(2)
PORT_START_TAG("GUNY2") /* fake analog Y */ PORT_START_TAG("GUNY2") /* fake analog Y */
PORT_BIT( 0xff, 0x80, IPT_LIGHTGUN_Y ) PORT_CROSSHAIR(Y, 1.0, 0.002, 0) PORT_SENSITIVITY(70) PORT_KEYDELTA(10) PORT_PLAYER(2) PORT_BIT( 0xff, 0x80, IPT_LIGHTGUN_Y ) PORT_CROSSHAIR(Y, 1.05, 0.002, 0) PORT_SENSITIVITY(70) PORT_KEYDELTA(10) PORT_PLAYER(2)
INPUT_PORTS_END INPUT_PORTS_END

View File

@ -1417,6 +1417,32 @@ ROM_START( raiden2c )
ROM_LOAD( "r2_voi2.bin", 0x80000, 0x40000, CRC(8cf0d17e) SHA1(0fbe0b1e1ca5360c7c8329331408e3d799b4714c) ) ROM_LOAD( "r2_voi2.bin", 0x80000, 0x40000, CRC(8cf0d17e) SHA1(0fbe0b1e1ca5360c7c8329331408e3d799b4714c) )
ROM_END ROM_END
ROM_START( raiden2d )
ROM_REGION( 0x200000, REGION_USER1, 0 ) /* v30 main cpu */
ROM_LOAD16_BYTE("seibu1", 0x000000, 0x80000, CRC(c1fc70f5) SHA1(a054f5ae9583972c406d9cf871340d5e072d71a3) )
ROM_LOAD16_BYTE("seibu2", 0x000001, 0x80000, CRC(28d5365f) SHA1(21efe29c2d373229c2ff302d86e59c2c94fa6d03) )
ROM_REGION( 0x20000, REGION_CPU2, 0 ) /* 64k code for sound Z80 */
ROM_LOAD( "seibu5", 0x000000, 0x10000, CRC(5db9f922) SHA1(8257aab98657fe44df19d2a48d85fcf65b3d98c6) )
ROM_REGION( 0x020000, REGION_GFX1, ROMREGION_DISPOSE ) /* chars */
ROM_LOAD( "seibu7", 0x000000, 0x020000, CRC(c9ec9469) SHA1(a29f480a1bee073be7a177096ef58e1887a5af24) )
ROM_REGION( 0x400000, REGION_GFX2, ROMREGION_DISPOSE ) /* background gfx */
ROM_LOAD( "bg1", 0x000000, 0x200000, CRC(e61ad38e) SHA1(63b06cd38db946ad3fc5c1482dc863ef80b58fec) )
ROM_LOAD( "bg2", 0x200000, 0x200000, CRC(a694a4bb) SHA1(39c2614d0effc899fe58f735604283097769df77) )
ROM_REGION( 0x800000, REGION_GFX3, ROMREGION_DISPOSE ) /* sprite gfx (encrypted) */
ROM_LOAD32_WORD( "obj1", 0x000000, 0x200000, CRC(ff08ef0b) SHA1(a1858430e8171ca8bab785457ef60e151b5e5cf1) )
ROM_LOAD32_WORD( "obj2", 0x000002, 0x200000, CRC(638eb771) SHA1(9774cc070e71668d7d1d20795502dccd21ca557b) )
ROM_LOAD32_WORD( "obj3", 0x400000, 0x200000, CRC(897a0322) SHA1(abb2737a2446da5b364fc2d96524b43d808f4126) )
ROM_LOAD32_WORD( "obj4", 0x400002, 0x200000, CRC(b676e188) SHA1(19cc838f1ccf9c4203cd0e5365e5d99ff3a4ff0f) )
ROM_REGION( 0x100000, REGION_SOUND1, 0 ) /* ADPCM samples */
ROM_LOAD( "seibu6", 0x00000, 0x40000, CRC(fb0fca23) SHA1(4b2217b121a66c5ab6015537609cf908ffedaf86) )
ROM_LOAD( "r2_voi2.bin", 0x80000, 0x40000, CRC(8cf0d17e) SHA1(0fbe0b1e1ca5360c7c8329331408e3d799b4714c) )
ROM_END
/* /*
@ -1485,6 +1511,8 @@ ROM_START( raiden2e )
ROM_LOAD( "r2_voi2.bin", 0x80000, 0x40000, CRC(8cf0d17e) SHA1(0fbe0b1e1ca5360c7c8329331408e3d799b4714c) ) ROM_LOAD( "r2_voi2.bin", 0x80000, 0x40000, CRC(8cf0d17e) SHA1(0fbe0b1e1ca5360c7c8329331408e3d799b4714c) )
ROM_END ROM_END
/* Raiden DX sets */ /* Raiden DX sets */
/* /*
@ -2291,7 +2319,8 @@ GAME( 1993, raiden2, 0, raiden2, raiden2, raiden2, ROT270, "Seibu Kaih
GAME( 1993, raiden2a, raiden2, raiden2, raiden2, raiden2, ROT270, "Seibu Kaihatsu", "Raiden 2 (set 2, Metrotainment)", GAME_NOT_WORKING|GAME_NO_SOUND) GAME( 1993, raiden2a, raiden2, raiden2, raiden2, raiden2, ROT270, "Seibu Kaihatsu", "Raiden 2 (set 2, Metrotainment)", GAME_NOT_WORKING|GAME_NO_SOUND)
GAME( 1993, raiden2b, raiden2, raiden2, raiden2, raiden2, ROT270, "Seibu Kaihatsu", "Raiden 2 (set 3, Japan)", GAME_NOT_WORKING|GAME_NO_SOUND) GAME( 1993, raiden2b, raiden2, raiden2, raiden2, raiden2, ROT270, "Seibu Kaihatsu", "Raiden 2 (set 3, Japan)", GAME_NOT_WORKING|GAME_NO_SOUND)
GAME( 1993, raiden2c, raiden2, raiden2, raiden2, raiden2, ROT270, "Seibu Kaihatsu", "Raiden 2 (set 4, Japan)", GAME_NOT_WORKING|GAME_NO_SOUND) GAME( 1993, raiden2c, raiden2, raiden2, raiden2, raiden2, ROT270, "Seibu Kaihatsu", "Raiden 2 (set 4, Japan)", GAME_NOT_WORKING|GAME_NO_SOUND)
GAME( 1993, raiden2e, raiden2, raiden2, raiden2, raiden2, ROT270, "Seibu Kaihatsu", "Raiden 2 (easier?)", GAME_NOT_WORKING|GAME_NO_SOUND) GAME( 1993, raiden2d, raiden2, raiden2, raiden2, raiden2, ROT270, "Seibu Kaihatsu", "Raiden 2 (set 5)", GAME_NOT_WORKING|GAME_NO_SOUND)
GAME( 1993, raiden2e, raiden2, raiden2, raiden2, raiden2, ROT270, "Seibu Kaihatsu", "Raiden 2 (set 6, Easy Version)", GAME_NOT_WORKING|GAME_NO_SOUND)
GAME( 1993, raidndx, 0, raiden2, raidendx, raiden2, ROT270, "Seibu Kaihatsu", "Raiden DX (set 1)", GAME_NOT_WORKING|GAME_NO_SOUND) GAME( 1993, raidndx, 0, raiden2, raidendx, raiden2, ROT270, "Seibu Kaihatsu", "Raiden DX (set 1)", GAME_NOT_WORKING|GAME_NO_SOUND)
GAME( 1993, raidndxa, raidndx, raiden2, raidendx, raiden2, ROT270, "Seibu Kaihatsu", "Raiden DX (set 2)", GAME_NOT_WORKING|GAME_NO_SOUND) GAME( 1993, raidndxa, raidndx, raiden2, raidendx, raiden2, ROT270, "Seibu Kaihatsu", "Raiden DX (set 2)", GAME_NOT_WORKING|GAME_NO_SOUND)
GAME( 1993, raidndxm, raidndx, raiden2, raidendx, raiden2, ROT270, "Seibu Kaihatsu", "Raiden DX (Metrotainment license)", GAME_NOT_WORKING|GAME_NO_SOUND) GAME( 1993, raidndxm, raidndx, raiden2, raidendx, raiden2, ROT270, "Seibu Kaihatsu", "Raiden DX (Metrotainment license)", GAME_NOT_WORKING|GAME_NO_SOUND)

View File

@ -302,7 +302,7 @@ ADDRESS_MAP_END
*************************************/ *************************************/
static INPUT_PORTS_START( rpunch ) static INPUT_PORTS_START( rpunch )
PORT_START /* c0018 lower 8 bits */ PORT_START_TAG("P1") /* c0018 lower 8 bits */
PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1) PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1)
PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1) PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1)
PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1) PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1)
@ -311,7 +311,7 @@ static INPUT_PORTS_START( rpunch )
PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(1) PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(1)
PORT_BIT( 0xffc0, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_BIT( 0xffc0, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_START /* c001a lower 8 bits */ PORT_START_TAG("P2") /* c001a lower 8 bits */
PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2) PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2)
PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2) PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2)
PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2) PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2)
@ -320,19 +320,19 @@ static INPUT_PORTS_START( rpunch )
PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(2) PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(2)
PORT_BIT( 0xffc0, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_BIT( 0xffc0, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_START /* c0018/c001a upper 8 bits */ PORT_START_TAG("SERVICE") /* c0018/c001a upper 8 bits */
PORT_BIT( 0x00ff, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_BIT( 0x00ff, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_SERVICE1 )
PORT_SERVICE( 0x0200, IP_ACTIVE_HIGH ) PORT_BIT( 0x0200, IP_ACTIVE_HIGH, IPT_SERVICE ) /* Hold F2 at bootup */
PORT_BIT( 0x0400, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_BIT( 0x0400, IP_ACTIVE_HIGH, IPT_UNUSED ) /* Freeze game */
PORT_BIT( 0x0800, IP_ACTIVE_HIGH, IPT_COIN2 ) PORT_BIT( 0x0800, IP_ACTIVE_HIGH, IPT_COIN2 )
PORT_BIT( 0x1000, IP_ACTIVE_HIGH, IPT_COIN1 ) PORT_BIT( 0x1000, IP_ACTIVE_HIGH, IPT_COIN1 )
PORT_BIT( 0x2000, IP_ACTIVE_HIGH, IPT_START1 ) PORT_BIT( 0x2000, IP_ACTIVE_HIGH, IPT_START1 )
PORT_BIT( 0x4000, IP_ACTIVE_HIGH, IPT_START2 ) PORT_BIT( 0x4000, IP_ACTIVE_HIGH, IPT_START2 )
PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_START /* c001c DIP switches */ PORT_START_TAG("DSW") /* c001c DIP switches */
PORT_DIPNAME( 0x000f, 0x0000, DEF_STR( Coin_A )) PORT_DIPNAME( 0x000f, 0x0000, DEF_STR( Coin_A )) PORT_DIPLOCATION("SWA:1,2,3,4")
PORT_DIPSETTING( 0x000d, DEF_STR( 3C_1C )) PORT_DIPSETTING( 0x000d, DEF_STR( 3C_1C ))
PORT_DIPSETTING( 0x000c, DEF_STR( 2C_1C )) PORT_DIPSETTING( 0x000c, DEF_STR( 2C_1C ))
PORT_DIPSETTING( 0x0005, "6 Coins/4 Credits") PORT_DIPSETTING( 0x0005, "6 Coins/4 Credits")
@ -345,7 +345,7 @@ static INPUT_PORTS_START( rpunch )
PORT_DIPSETTING( 0x000a, DEF_STR( 1C_4C )) PORT_DIPSETTING( 0x000a, DEF_STR( 1C_4C ))
PORT_DIPSETTING( 0x000b, DEF_STR( 1C_5C )) PORT_DIPSETTING( 0x000b, DEF_STR( 1C_5C ))
PORT_DIPSETTING( 0x0004, DEF_STR( 1C_6C )) PORT_DIPSETTING( 0x0004, DEF_STR( 1C_6C ))
PORT_DIPNAME( 0x00f0, 0x0000, DEF_STR( Coin_B )) PORT_DIPNAME( 0x00f0, 0x0000, DEF_STR( Coin_B )) PORT_DIPLOCATION("SWA:5,6,7,8")
PORT_DIPSETTING( 0x00d0, DEF_STR( 3C_1C )) PORT_DIPSETTING( 0x00d0, DEF_STR( 3C_1C ))
PORT_DIPSETTING( 0x00c0, DEF_STR( 2C_1C )) PORT_DIPSETTING( 0x00c0, DEF_STR( 2C_1C ))
PORT_DIPSETTING( 0x0050, "6 Coins/4 Credits") PORT_DIPSETTING( 0x0050, "6 Coins/4 Credits")
@ -358,191 +358,78 @@ static INPUT_PORTS_START( rpunch )
PORT_DIPSETTING( 0x00a0, DEF_STR( 1C_4C )) PORT_DIPSETTING( 0x00a0, DEF_STR( 1C_4C ))
PORT_DIPSETTING( 0x00b0, DEF_STR( 1C_5C )) PORT_DIPSETTING( 0x00b0, DEF_STR( 1C_5C ))
PORT_DIPSETTING( 0x0040, DEF_STR( 1C_6C )) PORT_DIPSETTING( 0x0040, DEF_STR( 1C_6C ))
PORT_DIPNAME( 0x0300, 0x0000, DEF_STR( Difficulty ))
PORT_DIPNAME( 0x0300, 0x0000, DEF_STR( Difficulty )) PORT_DIPLOCATION("SWB:1,2")
PORT_DIPSETTING( 0x0200, DEF_STR( Easy ) ) PORT_DIPSETTING( 0x0200, DEF_STR( Easy ) )
PORT_DIPSETTING( 0x0000, DEF_STR( Normal ) ) PORT_DIPSETTING( 0x0000, DEF_STR( Normal ) )
PORT_DIPSETTING( 0x0100, DEF_STR( Hard ) ) PORT_DIPSETTING( 0x0100, DEF_STR( Hard ) )
PORT_DIPSETTING( 0x0300, DEF_STR( Hardest ) ) PORT_DIPSETTING( 0x0300, DEF_STR( Hardest ) )
PORT_DIPNAME( 0x0400, 0x0400, DEF_STR( Lives )) PORT_DIPNAME( 0x0400, 0x0000, DEF_STR( Lives )) PORT_DIPLOCATION("SWB:3")
PORT_DIPSETTING( 0x0000, "2" ) PORT_DIPSETTING( 0x0000, "2" )
PORT_DIPSETTING( 0x0400, "3" ) PORT_DIPSETTING( 0x0400, "3" )
PORT_DIPNAME( 0x0800, 0x0000, "Laser" ) PORT_DIPNAME( 0x0800, 0x0000, "Laser" ) PORT_DIPLOCATION("SWB:4")
PORT_DIPSETTING( 0x0000, "Manual" ) PORT_DIPSETTING( 0x0000, "Manual" )
PORT_DIPSETTING( 0x0800, "Semi-Automatic" ) PORT_DIPSETTING( 0x0800, "Semi-Automatic" )
PORT_DIPNAME( 0x1000, 0x0000, "Extended Play" ) PORT_DIPNAME( 0x1000, 0x0000, "Extended Play" ) PORT_DIPLOCATION("SWB:5")
PORT_DIPSETTING( 0x0000, "500000 points" ) PORT_DIPSETTING( 0x0000, "500000 points" )
PORT_DIPSETTING( 0x1000, DEF_STR( None ) ) PORT_DIPSETTING( 0x1000, DEF_STR( None ) )
PORT_DIPNAME( 0x2000, 0x2000, DEF_STR( Demo_Sounds )) PORT_DIPNAME( 0x2000, 0x2000, DEF_STR( Demo_Sounds )) PORT_DIPLOCATION("SWB:6")
PORT_DIPSETTING( 0x0000, DEF_STR( Off )) PORT_DIPSETTING( 0x0000, DEF_STR( Off ))
PORT_DIPSETTING( 0x2000, DEF_STR( On )) PORT_DIPSETTING( 0x2000, DEF_STR( On ))
PORT_DIPNAME( 0x4000, 0x0000, DEF_STR( Continues ) ) PORT_DIPNAME( 0x4000, 0x0000, DEF_STR( Continues ) ) PORT_DIPLOCATION("SWB:7")
PORT_DIPSETTING( 0x4000, DEF_STR( Off )) PORT_DIPSETTING( 0x4000, DEF_STR( Off ))
PORT_DIPSETTING( 0x0000, DEF_STR( On )) PORT_DIPSETTING( 0x0000, DEF_STR( On ))
PORT_DIPNAME( 0x8000, 0x0000, DEF_STR( Flip_Screen )) PORT_DIPNAME( 0x8000, 0x0000, DEF_STR( Flip_Screen )) PORT_DIPLOCATION("SWB:8")
PORT_DIPSETTING( 0x0000, DEF_STR( Off )) PORT_DIPSETTING( 0x0000, DEF_STR( Off ))
PORT_DIPSETTING( 0x8000, DEF_STR( On )) PORT_DIPSETTING( 0x8000, DEF_STR( On ))
INPUT_PORTS_END INPUT_PORTS_END
static INPUT_PORTS_START( rabiolep ) static INPUT_PORTS_START( rabiolep )
PORT_START /* c0018 lower 8 bits */ PORT_INCLUDE( rpunch )
PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1)
PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1)
PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1)
PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1)
PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(1)
PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(1)
PORT_BIT( 0xffc0, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_START /* c001a lower 8 bits */ PORT_MODIFY("DSW")
PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2) PORT_DIPNAME( 0x0400, 0x0000, DEF_STR( Lives )) PORT_DIPLOCATION("SWB:3")
PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2)
PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2)
PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2)
PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(2)
PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(2)
PORT_BIT( 0xffc0, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_START /* c0018/c001a upper 8 bits */
PORT_BIT( 0x00ff, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_SERVICE( 0x0200, IP_ACTIVE_HIGH )
PORT_BIT( 0x0400, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_BIT( 0x0800, IP_ACTIVE_HIGH, IPT_COIN2 )
PORT_BIT( 0x1000, IP_ACTIVE_HIGH, IPT_COIN1 )
PORT_BIT( 0x2000, IP_ACTIVE_HIGH, IPT_START1 )
PORT_BIT( 0x4000, IP_ACTIVE_HIGH, IPT_START2 )
PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_START /* c001c DIP switches */
PORT_DIPNAME( 0x000f, 0x0000, DEF_STR( Coin_A ))
PORT_DIPSETTING( 0x000d, DEF_STR( 3C_1C ))
PORT_DIPSETTING( 0x000c, DEF_STR( 2C_1C ))
PORT_DIPSETTING( 0x0005, "6 Coins/4 Credits")
PORT_DIPSETTING( 0x0000, DEF_STR( 1C_1C ))
PORT_DIPSETTING( 0x0003, "5 Coins/6 Credits" )
PORT_DIPSETTING( 0x0002, DEF_STR( 4C_5C ))
PORT_DIPSETTING( 0x0006, DEF_STR( 2C_3C ))
PORT_DIPSETTING( 0x0008, DEF_STR( 1C_2C ))
PORT_DIPSETTING( 0x0009, DEF_STR( 1C_3C ))
PORT_DIPSETTING( 0x000a, DEF_STR( 1C_4C ))
PORT_DIPSETTING( 0x000b, DEF_STR( 1C_5C ))
PORT_DIPSETTING( 0x0004, DEF_STR( 1C_6C ))
PORT_DIPNAME( 0x00f0, 0x0000, DEF_STR( Coin_B ))
PORT_DIPSETTING( 0x00d0, DEF_STR( 3C_1C ))
PORT_DIPSETTING( 0x00c0, DEF_STR( 2C_1C ))
PORT_DIPSETTING( 0x0050, "6 Coins/4 Credits")
PORT_DIPSETTING( 0x0000, DEF_STR( 1C_1C ))
PORT_DIPSETTING( 0x0030, "5 Coins/6 Credits" )
PORT_DIPSETTING( 0x0020, DEF_STR( 4C_5C ))
PORT_DIPSETTING( 0x0060, DEF_STR( 2C_3C ))
PORT_DIPSETTING( 0x0080, DEF_STR( 1C_2C ))
PORT_DIPSETTING( 0x0090, DEF_STR( 1C_3C ))
PORT_DIPSETTING( 0x00a0, DEF_STR( 1C_4C ))
PORT_DIPSETTING( 0x00b0, DEF_STR( 1C_5C ))
PORT_DIPSETTING( 0x0040, DEF_STR( 1C_6C ))
PORT_DIPNAME( 0x0300, 0x0000, DEF_STR( Difficulty ))
PORT_DIPSETTING( 0x0200, DEF_STR( Easy ) )
PORT_DIPSETTING( 0x0000, DEF_STR( Normal ) )
PORT_DIPSETTING( 0x0100, DEF_STR( Hard ) )
PORT_DIPSETTING( 0x0300, DEF_STR( Hardest ) )
PORT_DIPNAME( 0x0400, 0x0000, DEF_STR( Lives ))
PORT_DIPSETTING( 0x0400, "2" )
PORT_DIPSETTING( 0x0000, "3" ) PORT_DIPSETTING( 0x0000, "3" )
PORT_DIPNAME( 0x0800, 0x0000, "Laser" ) PORT_DIPSETTING( 0x0400, "2" )
PORT_DIPSETTING( 0x0800, "Manual" ) PORT_DIPNAME( 0x0800, 0x0000, "Laser" ) PORT_DIPLOCATION("SWB:4")
PORT_DIPSETTING( 0x0000, "Semi-Automatic" ) PORT_DIPSETTING( 0x0000, "Semi-Automatic" )
PORT_DIPNAME( 0x1000, 0x0000, "Extended Play" ) PORT_DIPSETTING( 0x0800, "Manual" )
PORT_DIPNAME( 0x1000, 0x0000, "Extended Play" ) PORT_DIPLOCATION("SWB:5")
PORT_DIPSETTING( 0x0000, "500000 points" ) PORT_DIPSETTING( 0x0000, "500000 points" )
PORT_DIPSETTING( 0x1000, "300000 points" ) PORT_DIPSETTING( 0x1000, "300000 points" )
PORT_DIPNAME( 0x2000, 0x0000, DEF_STR( Demo_Sounds )) PORT_DIPNAME( 0x2000, 0x0000, DEF_STR( Demo_Sounds )) PORT_DIPLOCATION("SWB:6")
PORT_DIPSETTING( 0x2000, DEF_STR( Off )) PORT_DIPSETTING( 0x2000, DEF_STR( Off ))
PORT_DIPSETTING( 0x0000, DEF_STR( On )) PORT_DIPSETTING( 0x0000, DEF_STR( On ))
PORT_DIPNAME( 0x4000, 0x0000, DEF_STR( Continues ) )
PORT_DIPSETTING( 0x4000, DEF_STR( Off ))
PORT_DIPSETTING( 0x0000, DEF_STR( On ))
PORT_DIPNAME( 0x8000, 0x0000, DEF_STR( Flip_Screen ))
PORT_DIPSETTING( 0x0000, DEF_STR( Off ))
PORT_DIPSETTING( 0x8000, DEF_STR( On ))
INPUT_PORTS_END INPUT_PORTS_END
static INPUT_PORTS_START( svolley ) static INPUT_PORTS_START( svolley )
PORT_START /* c0018 lower 8 bits */ PORT_INCLUDE( rpunch )
PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1)
PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1)
PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1)
PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1)
PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(1)
PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(1)
PORT_BIT( 0xffc0, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_START /* c001a lower 8 bits */ PORT_MODIFY("SERVICE")
PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2) PORT_BIT( 0x0200, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2)
PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2)
PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2)
PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(2)
PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(2)
PORT_BIT( 0xffc0, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_START /* c0018/c001a upper 8 bits */ PORT_MODIFY("DSW")
PORT_BIT( 0x00ff, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_DIPNAME( 0x0100, 0x0000, DEF_STR( Game_Time )) PORT_DIPLOCATION("SWB:1")
PORT_BIT( 0x0700, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_BIT( 0x0800, IP_ACTIVE_HIGH, IPT_COIN2 )
PORT_BIT( 0x1000, IP_ACTIVE_HIGH, IPT_COIN1 )
PORT_BIT( 0x2000, IP_ACTIVE_HIGH, IPT_START1 )
PORT_BIT( 0x4000, IP_ACTIVE_HIGH, IPT_START2 )
PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_START /* c001c DIP switches */
PORT_DIPNAME( 0x000f, 0x0000, DEF_STR( Coin_A ))
PORT_DIPSETTING( 0x000d, DEF_STR( 3C_1C ))
PORT_DIPSETTING( 0x000c, DEF_STR( 2C_1C ))
PORT_DIPSETTING( 0x0005, "6 Coins/4 Credits")
PORT_DIPSETTING( 0x0000, DEF_STR( 1C_1C ))
PORT_DIPSETTING( 0x0003, "5 Coins/6 Credits" )
PORT_DIPSETTING( 0x0002, DEF_STR( 4C_5C ))
PORT_DIPSETTING( 0x0006, DEF_STR( 2C_3C ))
PORT_DIPSETTING( 0x0008, DEF_STR( 1C_2C ))
PORT_DIPSETTING( 0x0009, DEF_STR( 1C_3C ))
PORT_DIPSETTING( 0x000a, DEF_STR( 1C_4C ))
PORT_DIPSETTING( 0x000b, DEF_STR( 1C_5C ))
PORT_DIPSETTING( 0x0004, DEF_STR( 1C_6C ))
PORT_DIPNAME( 0x00f0, 0x0000, DEF_STR( Coin_B ))
PORT_DIPSETTING( 0x00d0, DEF_STR( 3C_1C ))
PORT_DIPSETTING( 0x00c0, DEF_STR( 2C_1C ))
PORT_DIPSETTING( 0x0050, "6 Coins/4 Credits")
PORT_DIPSETTING( 0x0000, DEF_STR( 1C_1C ))
PORT_DIPSETTING( 0x0030, "5 Coins/6 Credits" )
PORT_DIPSETTING( 0x0020, DEF_STR( 4C_5C ))
PORT_DIPSETTING( 0x0060, DEF_STR( 2C_3C ))
PORT_DIPSETTING( 0x0080, DEF_STR( 1C_2C ))
PORT_DIPSETTING( 0x0090, DEF_STR( 1C_3C ))
PORT_DIPSETTING( 0x00a0, DEF_STR( 1C_4C ))
PORT_DIPSETTING( 0x00b0, DEF_STR( 1C_5C ))
PORT_DIPSETTING( 0x0040, DEF_STR( 1C_6C ))
PORT_DIPNAME( 0x0100, 0x0000, DEF_STR( Game_Time ))
PORT_DIPSETTING( 0x0100, "2 min/1 min" ) PORT_DIPSETTING( 0x0100, "2 min/1 min" )
PORT_DIPSETTING( 0x0000, "3 min/1.5 min" ) PORT_DIPSETTING( 0x0000, "3 min/1.5 min" )
PORT_DIPNAME( 0x0600, 0x0000, "2P Starting Score" ) PORT_DIPNAME( 0x0600, 0x0000, "2P Starting Score" ) PORT_DIPLOCATION("SWB:2,3")
PORT_DIPSETTING( 0x0600, "0-0" ) PORT_DIPSETTING( 0x0600, "0-0" )
PORT_DIPSETTING( 0x0400, "5-5" ) PORT_DIPSETTING( 0x0400, "5-5" )
PORT_DIPSETTING( 0x0000, "7-7" ) PORT_DIPSETTING( 0x0000, "7-7" )
PORT_DIPSETTING( 0x0200, "9-9" ) PORT_DIPSETTING( 0x0200, "9-9" )
PORT_DIPNAME( 0x1800, 0x0000, "1P Starting Score" ) PORT_DIPNAME( 0x1800, 0x0000, "1P Starting Score" ) PORT_DIPLOCATION("SWB:4,5")
PORT_DIPSETTING( 0x1000, "9-11" ) PORT_DIPSETTING( 0x1000, "9-11" )
PORT_DIPSETTING( 0x1800, "10-10" ) PORT_DIPSETTING( 0x1800, "10-10" )
PORT_DIPSETTING( 0x0800, "10-11" ) PORT_DIPSETTING( 0x0800, "10-11" )
PORT_DIPSETTING( 0x0000, "11-11" ) PORT_DIPSETTING( 0x0000, "11-11" )
PORT_SERVICE( 0x2000, IP_ACTIVE_HIGH ) PORT_SERVICE_DIPLOC( 0x2000, IP_ACTIVE_HIGH, "SWB:6" )
PORT_DIPNAME( 0x4000, 0x4000, DEF_STR( Demo_Sounds )) PORT_DIPNAME( 0x4000, 0x4000, DEF_STR( Demo_Sounds )) PORT_DIPLOCATION("SWB:7")
PORT_DIPSETTING( 0x0000, DEF_STR( Off )) PORT_DIPSETTING( 0x0000, DEF_STR( Off ))
PORT_DIPSETTING( 0x4000, DEF_STR( On )) PORT_DIPSETTING( 0x4000, DEF_STR( On ))
PORT_DIPNAME( 0x8000, 0x0000, DEF_STR( Flip_Screen ))
PORT_DIPSETTING( 0x0000, DEF_STR( Off ))
PORT_DIPSETTING( 0x8000, DEF_STR( On ))
INPUT_PORTS_END INPUT_PORTS_END

View File

@ -131,7 +131,7 @@ static const struct segaic16_memory_map_entry rom_171_5987_info[] =
{ 0 } { 0 }
}; };
static const struct segaic16_memory_map_entry *region_info_list[] = static const struct segaic16_memory_map_entry *const region_info_list[] =
{ {
&rom_171_shad_info[0], &rom_171_shad_info[0],
&rom_171_5874_info[0], &rom_171_5874_info[0],

View File

@ -55,6 +55,7 @@ bootleg 9? Triple Fun (4) bootleg (Comad?)
P0-100-A 93 Quiz Kokology 2 Tecmo P0-100-A 93 Quiz Kokology 2 Tecmo
P0-101-1 94 Pro Mahjong Kiwame Athena P0-101-1 94 Pro Mahjong Kiwame Athena
PO-102-A 93 Mad Shark Allumer PO-102-A 93 Mad Shark Allumer
PO-107-A (prototype?) 94 Orbs (prototype?) American Sammy
P0-114-A (SKB-001) 94 Krazy Bowl American Sammy P0-114-A (SKB-001) 94 Krazy Bowl American Sammy
P0-117-A (DH-01) 95 Extreme Downhill Sammy Japan P0-117-A (DH-01) 95 Extreme Downhill Sammy Japan
P0-117-A? 95 Sokonuke Taisen Game Sammy Industries P0-117-A? 95 Sokonuke Taisen Game Sammy Industries
@ -1992,6 +1993,41 @@ static ADDRESS_MAP_START( wrofaero_writemem, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0xf00000, 0xf00001) AM_WRITE(MWA16_NOP ) // ? Sound IRQ Ack AM_RANGE(0xf00000, 0xf00001) AM_WRITE(MWA16_NOP ) // ? Sound IRQ Ack
ADDRESS_MAP_END ADDRESS_MAP_END
/***************************************************************************
orbs
***************************************************************************/
static ADDRESS_MAP_START( orbs_readmem, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x000000, 0x07ffff) AM_READ(MRA16_ROM ) // ROM
AM_RANGE(0xf00000, 0xf0ffff) AM_READ(MRA16_RAM ) // RAM
AM_RANGE(0x100000, 0x100001) AM_READ(MRA16_NOP ) // ?
AM_RANGE(0x200000, 0x200001) AM_READ(MRA16_NOP ) // ?
AM_RANGE(0x300000, 0x300003) AM_READ(seta_dsw_r ) // DSW
AM_RANGE(0x500000, 0x500001) AM_READ(input_port_0_word_r ) // P1
AM_RANGE(0x500002, 0x500003) AM_READ(input_port_1_word_r ) // P2
AM_RANGE(0x500004, 0x500005) AM_READ(input_port_2_word_r ) // Coins
//AM_RANGE(0x600000, 0x60000f) AM_READ(krzybowl_input_r ) // P1
AM_RANGE(0x8000f0, 0x8000f1) AM_READ(MRA16_RAM ) // NVRAM
AM_RANGE(0x800100, 0x8001ff) AM_READ(MRA16_RAM ) // NVRAM
AM_RANGE(0xa00000, 0xa03fff) AM_READ(seta_sound_word_r ) // Sound
AM_RANGE(0xb00000, 0xb003ff) AM_READ(MRA16_RAM ) // Palette
AM_RANGE(0xc00000, 0xc03fff) AM_READ(MRA16_RAM ) // Sprites Code + X + Attr
/**/AM_RANGE(0xd00000, 0xd00001) AM_READ(MRA16_RAM ) // ? 0x4000
/**/AM_RANGE(0xe00000, 0xe00607) AM_READ(MRA16_RAM ) // Sprites Y
ADDRESS_MAP_END
static ADDRESS_MAP_START( orbs_writemem, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x000000, 0x07ffff) AM_WRITE(MWA16_ROM ) // ROM
AM_RANGE(0xf00000, 0xf0ffff) AM_WRITE(MWA16_RAM ) // RAM
AM_RANGE(0x400000, 0x400001) AM_WRITE(MWA16_NOP ) // ?
AM_RANGE(0x8000f0, 0x8000f1) AM_WRITE(MWA16_RAM ) // NVRAM
AM_RANGE(0x800100, 0x8001ff) AM_WRITE(MWA16_RAM ) // NVRAM
AM_RANGE(0xa00000, 0xa03fff) AM_WRITE(seta_sound_word_w ) // Sound
AM_RANGE(0xb00000, 0xb003ff) AM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE(&paletteram16 ) // Palette
AM_RANGE(0xc00000, 0xc03fff) AM_WRITE(MWA16_RAM) AM_BASE(&spriteram16_2 ) // Sprites Code + X + Attr
AM_RANGE(0xd00000, 0xd00001) AM_WRITE(MWA16_RAM ) // ? 0x4000
AM_RANGE(0xe00000, 0xe00607) AM_WRITE(MWA16_RAM) AM_BASE(&spriteram16 ) // Sprites Y
ADDRESS_MAP_END
/*************************************************************************** /***************************************************************************
@ -6026,6 +6062,75 @@ static INPUT_PORTS_START( pairlove )
PORT_DIPSETTING( 0x0000, DEF_STR( Free_Play ) ) PORT_DIPSETTING( 0x0000, DEF_STR( Free_Play ) )
INPUT_PORTS_END INPUT_PORTS_END
/***************************************************************************
Orbs
***************************************************************************/
static INPUT_PORTS_START( orbs )
PORT_START_TAG("IN0") //Player 1
JOY_TYPE1_1BUTTON(1)
PORT_START_TAG("IN1") //Player 2 ??
JOY_TYPE1_1BUTTON(2)
PORT_START_TAG("IN2") //Coins
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(5)
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(5)
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_IMPULSE(5)
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START_TAG("IN3") //2 DSWs - $600001 & 3.b
PORT_DIPNAME( 0x0001, 0x0001, DEF_STR( Flip_Screen ) )
PORT_DIPSETTING( 0x0001, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Demo_Sounds ) )
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0002, DEF_STR( On ) )
PORT_DIPNAME( 0x000c, 0x000c, DEF_STR( Difficulty ) )
PORT_DIPSETTING( 0x0008, DEF_STR( Easy ) )
PORT_DIPSETTING( 0x000c, DEF_STR( Normal ) )
PORT_DIPSETTING( 0x0004, DEF_STR( Hard ) )
PORT_DIPSETTING( 0x0000, DEF_STR( Hardest ) )
PORT_DIPNAME( 0x0010, 0x0010, "Stock" )
PORT_DIPSETTING( 0x0010, "1" )
PORT_DIPSETTING( 0x0000, "2" )
PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Level_Select ) )
PORT_DIPSETTING( 0x0020, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_DIPNAME( 0x0040, 0x0040, "Timer speed" )
PORT_DIPSETTING( 0x0040, DEF_STR( Normal ) )
PORT_DIPSETTING( 0x0000, "Fast" )
PORT_SERVICE( 0x0080, IP_ACTIVE_LOW )
PORT_DIPNAME( 0x0700, 0x0700, DEF_STR( Coin_A ) )
PORT_DIPSETTING( 0x0500, DEF_STR( 3C_1C ) )
PORT_DIPSETTING( 0x0600, DEF_STR( 2C_1C ) )
PORT_DIPSETTING( 0x0700, DEF_STR( 1C_1C ) )
PORT_DIPSETTING( 0x0400, DEF_STR( 1C_2C ) )
PORT_DIPSETTING( 0x0300, DEF_STR( 1C_3C ) )
PORT_DIPSETTING( 0x0200, DEF_STR( 1C_4C ) )
PORT_DIPSETTING( 0x0100, DEF_STR( 1C_5C ) )
PORT_DIPSETTING( 0x0000, DEF_STR( 1C_6C ) )
PORT_DIPNAME( 0x3800, 0x3800, DEF_STR( Coin_B ) )
PORT_DIPSETTING( 0x2800, DEF_STR( 3C_1C ) )
PORT_DIPSETTING( 0x3000, DEF_STR( 2C_1C ) )
PORT_DIPSETTING( 0x3800, DEF_STR( 1C_1C ) )
PORT_DIPSETTING( 0x2000, DEF_STR( 1C_2C ) )
PORT_DIPSETTING( 0x1800, DEF_STR( 1C_3C ) )
PORT_DIPSETTING( 0x1000, DEF_STR( 1C_4C ) )
PORT_DIPSETTING( 0x0800, DEF_STR( 1C_5C ) )
PORT_DIPSETTING( 0x0000, DEF_STR( 1C_6C ) )
PORT_DIPNAME( 0x4000, 0x4000, "Force Coinage (Half Coinn)" )
PORT_DIPSETTING( 0x4000, DEF_STR( No ) )
PORT_DIPSETTING( 0x0000, DEF_STR( 2C_1C ) )
PORT_DIPNAME( 0x8000, 0x8000, "Unknown 2-7" )
PORT_DIPSETTING( 0x8000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
INPUT_PORTS_END
/*************************************************************************** /***************************************************************************
Crazy Fight Crazy Fight
@ -6277,6 +6382,14 @@ static GFXDECODE_START( tndrcade )
GFXDECODE_ENTRY( REGION_GFX1, 0, layout_planes_2roms, 512*0, 32 ) // [0] Sprites GFXDECODE_ENTRY( REGION_GFX1, 0, layout_planes_2roms, 512*0, 32 ) // [0] Sprites
GFXDECODE_END GFXDECODE_END
/***************************************************************************
Orbs
***************************************************************************/
static GFXDECODE_START( orbs )
GFXDECODE_ENTRY( REGION_GFX1, 0, layout_planes, 512*0, 32 ) // [0] Sprites
GFXDECODE_END
/*************************************************************************** /***************************************************************************
Wiggie Waggle Wiggie Waggle
****************************************************************************/ ****************************************************************************/
@ -7148,6 +7261,40 @@ static MACHINE_DRIVER_START( kamenrid )
MDRV_SOUND_ROUTE(1, "right", 1.0) MDRV_SOUND_ROUTE(1, "right", 1.0)
MACHINE_DRIVER_END MACHINE_DRIVER_END
/***************************************************************************
Orbs
***************************************************************************/
static MACHINE_DRIVER_START( orbs )
/* basic machine hardware */
MDRV_CPU_ADD(M68000, 14318180)
MDRV_CPU_PROGRAM_MAP(orbs_readmem,orbs_writemem)
MDRV_CPU_VBLANK_INT(seta_interrupt_1_and_2,SETA_INTERRUPTS_NUM)
MDRV_SCREEN_REFRESH_RATE(60)
MDRV_SCREEN_VBLANK_TIME(DEFAULT_60HZ_VBLANK_DURATION)
/* video hardware */
MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER)
MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MDRV_SCREEN_SIZE(64*8, 32*8)
MDRV_SCREEN_VISIBLE_AREA(1*8, 39*8-1, 1*8, 31*8-1)
MDRV_GFXDECODE(orbs)
MDRV_PALETTE_LENGTH(512) /* sprites only */
MDRV_VIDEO_START(seta_no_layers)
MDRV_VIDEO_UPDATE(seta_no_layers) /* just draw the sprites */
/* sound hardware */
MDRV_SPEAKER_STANDARD_STEREO("left", "right")
MDRV_SOUND_ADD(X1_010, 16000000)
MDRV_SOUND_CONFIG(seta_sound_intf)
MDRV_SOUND_ROUTE(0, "left", 1.0)
MDRV_SOUND_ROUTE(1, "right", 1.0)
MACHINE_DRIVER_END
/*************************************************************************** /***************************************************************************
Krazy Bowl Krazy Bowl
@ -8609,6 +8756,25 @@ ROM_START( krzybowl )
ROM_LOAD( "fv001.006", 0x080000, 0x080000, CRC(572a15e7) SHA1(b6a3e99e14a473b78ff48d1a46b20a0862d128e9) ) ROM_LOAD( "fv001.006", 0x080000, 0x080000, CRC(572a15e7) SHA1(b6a3e99e14a473b78ff48d1a46b20a0862d128e9) )
ROM_END ROM_END
ROM_START( orbs )
//all eproms are socketed and labelled (handwritten) "ORBS 10\7\94"
//most of rom space is unused (filled with sound samples - same data in all roms)
ROM_REGION( 0x100000, REGION_CPU1, 0 ) /* 68000 Code */
ROM_LOAD16_BYTE( "orbs.u10", 0x000000, 0x080000, CRC(10f079c8) SHA1(0baf2b7e1e8be116a6fab609481c87fc7c86f305) )
ROM_LOAD16_BYTE( "orbs.u9", 0x000001, 0x080000, CRC(f269d16f) SHA1(34f38789cb3256e334b0ac8acd9f339d14481578) )
ROM_REGION( 0x200000, REGION_GFX1, ROMREGION_DISPOSE ) /* Sprites */
ROM_LOAD( "orbs.u14", 0x000000, 0x080000, CRC(1cc76541) SHA1(d8a233212bfb9a9c686a40e470524f95b34417fa) )
ROM_LOAD( "orbs.u13", 0x080000, 0x080000, CRC(784bdc1a) SHA1(de2c5b38561b8ba6bd800126d010b734c2751575) )
ROM_LOAD( "orbs.u12", 0x100000, 0x080000, CRC(b8c352c2) SHA1(7d6fd1425d9d5cf6a14a1ddceba0ad10e472dfa5) )
ROM_LOAD( "orbs.u11", 0x180000, 0x080000, CRC(58cb38ba) SHA1(1c6c5f7ccb9c81b71bc1cbad080799b97962f262) )
ROM_REGION( 0x100000, REGION_SOUND1, 0 ) /* Samples */
ROM_LOAD( "orbs.u15", 0x000000, 0x080000, CRC(bc0e9fe3) SHA1(758a44d07d59af8bbc87602df25dfcdc6cb8d9b3) )
ROM_LOAD( "orbs.u16", 0x080000, 0x080000, CRC(aecd8373) SHA1(5620bcb281a9ea4920cfe81d163827013289c5bf) )
ROM_END
ROM_START( extdwnhl ) ROM_START( extdwnhl )
ROM_REGION( 0x100000, REGION_CPU1, 0 ) /* 68000 Code */ ROM_REGION( 0x100000, REGION_CPU1, 0 ) /* 68000 Code */
ROM_LOAD16_BYTE( "fw001002.201", 0x000000, 0x080000, CRC(24d21924) SHA1(9914a68a578f884b06305ffcd9aeed7d83df1c7b) ) ROM_LOAD16_BYTE( "fw001002.201", 0x000000, 0x080000, CRC(24d21924) SHA1(9914a68a578f884b06305ffcd9aeed7d83df1c7b) )
@ -9086,6 +9252,7 @@ GAME( 1993, wrofaero, 0, wrofaero, wrofaero, 0, ROT270, "Yang Chen
GAME( 1994, eightfrc, 0, eightfrc, eightfrc, eightfrc, ROT90, "Tecmo", "Eight Forces", 0 ) GAME( 1994, eightfrc, 0, eightfrc, eightfrc, eightfrc, ROT90, "Tecmo", "Eight Forces", 0 )
GAME( 1994, kiwame, 0, kiwame, kiwame, kiwame, ROT0, "Athena", "Pro Mahjong Kiwame", 0 ) GAME( 1994, kiwame, 0, kiwame, kiwame, kiwame, ROT0, "Athena", "Pro Mahjong Kiwame", 0 )
GAME( 1994, krzybowl, 0, krzybowl, krzybowl, 0, ROT270, "American Sammy", "Krazy Bowl", 0 ) GAME( 1994, krzybowl, 0, krzybowl, krzybowl, 0, ROT270, "American Sammy", "Krazy Bowl", 0 )
GAME( 1994, orbs, 0, orbs, orbs, 0, ROT0, "American Sammy", "Orbs (10/7/94 prototype?)", 0 )
GAME( 1995, extdwnhl, 0, extdwnhl, extdwnhl, 0, ROT0, "Sammy Industries Japan", "Extreme Downhill (v1.5)", GAME_IMPERFECT_GRAPHICS ) GAME( 1995, extdwnhl, 0, extdwnhl, extdwnhl, 0, ROT0, "Sammy Industries Japan", "Extreme Downhill (v1.5)", GAME_IMPERFECT_GRAPHICS )
GAME( 1995, gundhara, 0, gundhara, gundhara, 0, ROT270, "Banpresto", "Gundhara", 0 ) GAME( 1995, gundhara, 0, gundhara, gundhara, 0, ROT270, "Banpresto", "Gundhara", 0 )
GAME( 1995, sokonuke, 0, extdwnhl, sokonuke, 0, ROT0, "Sammy Industries", "Sokonuke Taisen Game (Japan)", GAME_IMPERFECT_SOUND ) GAME( 1995, sokonuke, 0, extdwnhl, sokonuke, 0, ROT0, "Sammy Industries", "Sokonuke Taisen Game (Japan)", GAME_IMPERFECT_SOUND )

View File

@ -2704,6 +2704,8 @@ static MACHINE_START( stv )
state_save_register_global(scsp_last_line); state_save_register_global(scsp_last_line);
stv_register_protection_savestates(); // machine/stvprot.c stv_register_protection_savestates(); // machine/stvprot.c
add_exit_callback(machine, stvcd_exit);
} }
static MACHINE_RESET( stv ) static MACHINE_RESET( stv )

View File

@ -2003,7 +2003,7 @@ ROM_START( qtheater )
ROM_FILL ( 0x400000, 0x400000, 0 ) ROM_FILL ( 0x400000, 0x400000, 0 )
ROM_REGION(0x180000, REGION_CPU2, 0) /* 68000 sound CPU */ ROM_REGION(0x180000, REGION_CPU2, 0) /* 68000 sound CPU */
ROM_LOAD16_BYTE("d95-07.32", 0x100000, 0x40000, BAD_DUMP CRC(72183273) SHA1(d21f2ec24d1a9101bb9161d5e1bc5416e498ad01) ) ROM_LOAD16_BYTE("d95-07.32", 0x100000, 0x40000, CRC(3c201d70) SHA1(89fe4d363f4e1a847ba7d2894a2092708b287a33) )
ROM_LOAD16_BYTE("d95-08.33", 0x100001, 0x40000, CRC(01c23354) SHA1(7b332edc844b1b1c1513e879215089987645fa3f) ) ROM_LOAD16_BYTE("d95-08.33", 0x100001, 0x40000, CRC(01c23354) SHA1(7b332edc844b1b1c1513e879215089987645fa3f) )
ROM_REGION16_BE(0x800000, REGION_SOUND1 , ROMREGION_ERASE00 ) // V2: 4 banks, only 2 populated ROM_REGION16_BE(0x800000, REGION_SOUND1 , ROMREGION_ERASE00 ) // V2: 4 banks, only 2 populated

View File

@ -4351,10 +4351,10 @@ GAME( 1991, detatwin, blswhstl, detatwin, detatwin, gfx, ROT90, "Konami", "
GAME( 1991, glfgreat, 0, glfgreat, glfgreat, glfgreat, ROT0, "Konami", "Golfing Greats", GAME_UNEMULATED_PROTECTION | GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) GAME( 1991, glfgreat, 0, glfgreat, glfgreat, glfgreat, ROT0, "Konami", "Golfing Greats", GAME_UNEMULATED_PROTECTION | GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
GAME( 1991, glfgretj, glfgreat, glfgreat, glfgreat, glfgreat, ROT0, "Konami", "Golfing Greats (Japan)", GAME_UNEMULATED_PROTECTION | GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) GAME( 1991, glfgretj, glfgreat, glfgreat, glfgreat, glfgreat, ROT0, "Konami", "Golfing Greats (Japan)", GAME_UNEMULATED_PROTECTION | GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
GAME( 1991, tmnt2, 0, tmnt2, ssridr4p, gfx, ROT0, "Konami", "Teenage Mutant Ninja Turtles - Turtles in Time (4 Players ver UAA)", GAME_UNEMULATED_PROTECTION ) // ver. UAA GAME( 1991, tmnt2, 0, tmnt2, ssridr4p, gfx, ROT0, "Konami", "Teenage Mutant Ninja Turtles - Turtles in Time (4 Players ver UAA)", 0 ) // ver. UAA
GAME( 1991, tmnt2a, tmnt2, tmnt2, ssrid4ps, gfx, ROT0, "Konami", "Teenage Mutant Ninja Turtles - Turtles in Time (4 Players ver ADA)", GAME_UNEMULATED_PROTECTION ) // ver. ADA GAME( 1991, tmnt2a, tmnt2, tmnt2, ssrid4ps, gfx, ROT0, "Konami", "Teenage Mutant Ninja Turtles - Turtles in Time (4 Players ver ADA)", 0 ) // ver. ADA
GAME( 1991, tmht22pe, tmnt2, tmnt2, ssriders, gfx, ROT0, "Konami", "Teenage Mutant Hero Turtles - Turtles in Time (2 Players ver EBA)", GAME_UNEMULATED_PROTECTION ) // ver. EBA GAME( 1991, tmht22pe, tmnt2, tmnt2, ssriders, gfx, ROT0, "Konami", "Teenage Mutant Hero Turtles - Turtles in Time (2 Players ver EBA)", 0 ) // ver. EBA
GAME( 1991, tmnt22pu, tmnt2, tmnt2, ssriders, gfx, ROT0, "Konami", "Teenage Mutant Ninja Turtles - Turtles in Time (2 Players ver UDA)", GAME_UNEMULATED_PROTECTION ) // ver. UDA GAME( 1991, tmnt22pu, tmnt2, tmnt2, ssriders, gfx, ROT0, "Konami", "Teenage Mutant Ninja Turtles - Turtles in Time (2 Players ver UDA)", 0 ) // ver. UDA
GAME( 1993, qgakumon, 0, tmnt2, qgakumon, gfx, ROT0, "Konami", "Quiz Gakumon no Susume (Japan ver. JA2 Type L)", 0 ) GAME( 1993, qgakumon, 0, tmnt2, qgakumon, gfx, ROT0, "Konami", "Quiz Gakumon no Susume (Japan ver. JA2 Type L)", 0 )

View File

@ -63,6 +63,16 @@ struct _dkong_state
UINT8 hardware_type; UINT8 hardware_type;
/* sound state */ /* sound state */
UINT8 dkongjr_latch[10];
UINT8 sh_climb_count;
UINT8 has_discrete_interface;
UINT8 page,mcustatus;
double envelope,tt;
UINT8 decay;
UINT8 portT;
/* video state */ /* video state */
tilemap *bg_tilemap; tilemap *bg_tilemap;

View File

@ -19,7 +19,6 @@ READ8_HANDLER( slikshot_z80_r );
READ8_HANDLER( slikshot_z80_control_r ); READ8_HANDLER( slikshot_z80_control_r );
WRITE8_HANDLER( slikshot_z80_control_w ); WRITE8_HANDLER( slikshot_z80_control_w );
void slikshot_set_crosshair_range(int miny, int maxy);
VIDEO_UPDATE( slikshot ); VIDEO_UPDATE( slikshot );

View File

@ -295,7 +295,7 @@ static const struct cchip_mapping level08[] =
{ 0xff } { 0xff }
}; };
static const struct cchip_mapping* levelData[]= static const struct cchip_mapping *const levelData[]=
{ {
level00, level00,
level01, level01,

View File

@ -660,7 +660,7 @@ static WRITE8_HANDLER( unknown_w )
} }
/* Main bankswitching routine */ /* Main bankswitching routine */
static void set_bank(int banknum, bankhandler *handler) static void set_bank(int banknum, const bankhandler *handler)
{ {
int bankstart = (banknum & 7) * 0x2000; int bankstart = (banknum & 7) * 0x2000;
int cpunum = (banknum >> 3) & 1; int cpunum = (banknum >> 3) & 1;
@ -834,7 +834,7 @@ static void namcos1_build_banks(read8_handler key_r,write8_handler key_w)
MACHINE_RESET( namcos1 ) MACHINE_RESET( namcos1 )
{ {
static bankhandler unknown_handler = { unknown_r, unknown_w, 0, NULL }; static const bankhandler unknown_handler = { unknown_r, unknown_w, 0, NULL };
int bank; int bank;
/* Point all of our bankhandlers to the error handlers */ /* Point all of our bankhandlers to the error handlers */

View File

@ -272,7 +272,7 @@ static const UINT16 level_data_06[0xcc] =
0x0300,0x4e01,0x5006,0x0042 0x0300,0x4e01,0x5006,0x0042
}; };
static const UINT16* level_data_lookup[] = static const UINT16 *const level_data_lookup[] =
{ {
level_data_00, level_data_00,
level_data_01, level_data_01,

View File

@ -90,8 +90,6 @@ static int curxpos;
static int last_ytotal; static int last_ytotal;
static UINT8 crosshair_vis; static UINT8 crosshair_vis;
static int crosshair_min;
static int crosshair_max;
@ -532,22 +530,6 @@ WRITE8_HANDLER( slikshot_z80_control_w )
/*************************************
*
* slikshot_set_crosshair_range
*
* set the range for the crosshair
*
*************************************/
void slikshot_set_crosshair_range(int miny, int maxy)
{
crosshair_min = miny;
crosshair_max = maxy;
}
/************************************* /*************************************
* *
* video_update_slikshot * video_update_slikshot
@ -612,14 +594,6 @@ VIDEO_UPDATE( slikshot )
memset(ybuffer, 0, sizeof(ybuffer)); memset(ybuffer, 0, sizeof(ybuffer));
} }
/* draw a crosshair (rotated) */
if (crosshair_vis)
{
// if ((machine->gamedrv->flags & ORIENTATION_MASK) == ROT90)
// draw_crosshair(bitmap, 256 - 48, (crosshair_min + crosshair_max) / 2 - (curxpos * (crosshair_max - crosshair_min) / 0x100), cliprect, 0);
// else
// draw_crosshair(bitmap, 48, (crosshair_min + crosshair_max) / 2 + (curxpos * (crosshair_max - crosshair_min) / 0x100), cliprect, 0);
}
return 0; return 0;
} }

View File

@ -1550,6 +1550,15 @@ static void make_dir_current(UINT32 fad)
} }
} }
void stvcd_exit(running_machine* machine)
{
if (curdir != (direntryT *)NULL)
{
free((void *)curdir);
curdir = (direntryT *)NULL;
}
}
static void cd_readTOC(void) static void cd_readTOC(void)
{ {
int i, ntrks, toclen, tocptr, fad; int i, ntrks, toclen, tocptr, fad;

View File

@ -10,6 +10,7 @@
#define __STVCD_H__ #define __STVCD_H__
void stvcd_reset(void); void stvcd_reset(void);
void stvcd_exit(running_machine* machine);
READ32_HANDLER( stvcd_r ); READ32_HANDLER( stvcd_r );
WRITE32_HANDLER( stvcd_w ); WRITE32_HANDLER( stvcd_w );

View File

@ -7,7 +7,7 @@
#include "driver.h" #include "driver.h"
static INT16 AU_DATA; static INT16 AU_DATA;
static INT16 *AU_PTR = &AU_DATA; static INT16 *const AU_PTR = &AU_DATA;
static UINT16 inst_index; static UINT16 inst_index;
/* Internal registers and so forth */ /* Internal registers and so forth */

View File

@ -287,6 +287,7 @@ SOUNDS += RF5C400
SOUNDS += SPEAKER SOUNDS += SPEAKER
SOUNDS += CDP1869 SOUNDS += CDP1869
SOUNDS += S14001A SOUNDS += S14001A
SOUNDS += M58817
SOUNDS += BEEP SOUNDS += BEEP
#SOUNDS += WAVE #SOUNDS += WAVE
#SOUNDS += SID6581 #SOUNDS += SID6581

View File

@ -950,6 +950,7 @@ const game_driver * const drivers[] =
DRIVER( 8ballat2 ) /* (c) 1984 Seatongrove Ltd (Magic Eletronics USA licence) */ DRIVER( 8ballat2 ) /* (c) 1984 Seatongrove Ltd (Magic Eletronics USA licence) */
DRIVER( shootgal ) /* (c) 1984 Seatongrove Ltd (Zaccaria licence) */ DRIVER( shootgal ) /* (c) 1984 Seatongrove Ltd (Zaccaria licence) */
DRIVER( drakton ) /* (c) 1984 Epos Corporation */ DRIVER( drakton ) /* (c) 1984 Epos Corporation */
DRIVER( drktnjr ) /* (c) 1984 Epos Corporation */
DRIVER( strtheat ) /* (c) 1985 Epos Corporation */ DRIVER( strtheat ) /* (c) 1985 Epos Corporation */
DRIVER( hunchbkd ) /* (c) 1983 Century */ DRIVER( hunchbkd ) /* (c) 1983 Century */
DRIVER( sbdk ) /* (c) 1984 Century */ DRIVER( sbdk ) /* (c) 1984 Century */
@ -5458,6 +5459,7 @@ BOMULEUL CHAJARA SEGA ST-V 1997/04/11
DRIVER( 2020bba ) /* 0030 (c) 1991 SNK / Pallas */ DRIVER( 2020bba ) /* 0030 (c) 1991 SNK / Pallas */
DRIVER( 2020bbh ) /* 0030 (c) 1991 SNK / Pallas */ DRIVER( 2020bbh ) /* 0030 (c) 1991 SNK / Pallas */
DRIVER( socbrawl ) /* 0031 (c) 1991 SNK */ DRIVER( socbrawl ) /* 0031 (c) 1991 SNK */
DRIVER( socbrala ) /* 0031 (c) 1991 SNK */
DRIVER( roboarmy ) /* 0032 (c) 1991 SNK */ DRIVER( roboarmy ) /* 0032 (c) 1991 SNK */
DRIVER( roboarma ) /* 0032 (c) 1991 SNK */ DRIVER( roboarma ) /* 0032 (c) 1991 SNK */
DRIVER( fatfury1 ) /* 0033 (c) 1991 SNK */ DRIVER( fatfury1 ) /* 0033 (c) 1991 SNK */
@ -5539,6 +5541,7 @@ BOMULEUL CHAJARA SEGA ST-V 1997/04/11
DRIVER( sonicwi3 ) /* 0097 (c) 1995 Video System Co. */ DRIVER( sonicwi3 ) /* 0097 (c) 1995 Video System Co. */
/* 0098 Idol Mahjong - final romance 2 (CD only? not confirmed, MVS might exist) */ /* 0098 Idol Mahjong - final romance 2 (CD only? not confirmed, MVS might exist) */
/* 0099 Neo Pool Masters */ /* 0099 Neo Pool Masters */
/* 0160 Japanese MVS cart; No bootleg (c) 1997/1998 SNK */
DRIVER( turfmast ) /* 0200 (c) 1996 Nazca */ DRIVER( turfmast ) /* 0200 (c) 1996 Nazca */
DRIVER( mslug ) /* 0201 (c) 1996 Nazca */ DRIVER( mslug ) /* 0201 (c) 1996 Nazca */
DRIVER( puzzledp ) /* 0202 (c) 1995 Taito (Visco license) */ DRIVER( puzzledp ) /* 0202 (c) 1995 Taito (Visco license) */
@ -6173,6 +6176,7 @@ BOMULEUL CHAJARA SEGA ST-V 1997/04/11
DRIVER( raiden2a ) /* (c) 1993 Seibu Kaihatsu + Metrotainment license */ DRIVER( raiden2a ) /* (c) 1993 Seibu Kaihatsu + Metrotainment license */
DRIVER( raiden2b ) /* (c) 1993 Seibu Kaihatsu */ DRIVER( raiden2b ) /* (c) 1993 Seibu Kaihatsu */
DRIVER( raiden2c ) /* (c) 1993 Seibu Kaihatsu */ DRIVER( raiden2c ) /* (c) 1993 Seibu Kaihatsu */
DRIVER( raiden2d ) /* (c) 1993 Seibu Kaihatsu */
DRIVER( raiden2e ) /* (c) 1993 Seibu Kaihatsu */ DRIVER( raiden2e ) /* (c) 1993 Seibu Kaihatsu */
DRIVER( raidndx ) /* (c) 1993 Seibu Kaihatsu */ DRIVER( raidndx ) /* (c) 1993 Seibu Kaihatsu */
DRIVER( raidndxa ) /* (c) 1993 Seibu Kaihatsu */ DRIVER( raidndxa ) /* (c) 1993 Seibu Kaihatsu */

View File

@ -144,8 +144,8 @@ static void draw_sprites(running_machine *machine, mame_bitmap *bitmap, const re
VIDEO_UPDATE( aeroboto ) VIDEO_UPDATE( aeroboto )
{ {
static rectangle splitrect1 = { 0, 255, 0, 39 }; static const rectangle splitrect1 = { 0, 255, 0, 39 };
static rectangle splitrect2 = { 0, 255, 40, 255 }; static const rectangle splitrect2 = { 0, 255, 40, 255 };
static int sx=0, sy=0; static int sx=0, sy=0;
static UINT8 ox=0, oy=0; static UINT8 ox=0, oy=0;
UINT8 *src_base, *src_colptr, *src_rowptr; UINT8 *src_base, *src_colptr, *src_rowptr;

View File

@ -212,7 +212,7 @@ VIDEO_START( adder2 )
} }
// video update /////////////////////////////////////////////////////////// // video update ///////////////////////////////////////////////////////////
static rectangle visible1 = { 0, 400-1, 0, 280-1 }; //minx,maxx, miny,maxy static const rectangle visible1 = { 0, 400-1, 0, 280-1 }; //minx,maxx, miny,maxy
VIDEO_UPDATE( adder2 ) VIDEO_UPDATE( adder2 )
{ {

View File

@ -284,7 +284,7 @@ VIDEO_UPDATE( bking2 )
VIDEO_EOF( bking2 ) VIDEO_EOF( bking2 )
{ {
static rectangle rect = { 0, 7, 0, 15 }; static const rectangle rect = { 0, 7, 0, 15 };
int xld = 0; int xld = 0;
int yld = 0; int yld = 0;

View File

@ -248,7 +248,7 @@ WRITE8_HANDLER( digdug_PORT_w )
***************************************************************************/ ***************************************************************************/
static rectangle spritevisiblearea = static const rectangle spritevisiblearea =
{ {
2*8, 34*8-1, 2*8, 34*8-1,
0*8, 28*8-1 0*8, 28*8-1

View File

@ -547,7 +547,7 @@ WRITE8_HANDLER( radarscp_grid_color_w )
dkong_state *state = Machine->driver_data; dkong_state *state = Machine->driver_data;
state->grid_col = (data & 0x07) ^ 0x07; state->grid_col = (data & 0x07) ^ 0x07;
popmessage("Gridcol: %d", state->grid_col); //popmessage("Gridcol: %d", state->grid_col);
} }
WRITE8_HANDLER( dkong_flipscreen_w ) WRITE8_HANDLER( dkong_flipscreen_w )
@ -662,20 +662,23 @@ INLINE double CD4049(running_machine *machine, double x)
* a period of roughly 4.4 ms * a period of roughly 4.4 ms
*/ */
#define RC1 (2.2e3 * 22e-6) // 22e-6;
#define RC2 (10e3 * 33e-6)
#define RC31 (18e3 * 33e-6)
#define RC32 ((18e3 + 68e3) * 33e-6)
#define RC4 (90e3 * 0.47e-6)
#define dt (1./60./(double) VTOTAL)
#define period2 (((long long)(PIXEL_CLOCK) * ( 33L * 68L )) / (long)10000000L / 3) // period/2 in pixel ...
static void radarscp_step(running_machine *machine, int line_cnt) static void radarscp_step(running_machine *machine, int line_cnt)
{ {
dkong_state *state = machine->driver_data; dkong_state *state = machine->driver_data;
/* Condensator is illegible in schematics for TRS2 board. /* Condensator is illegible in schematics for TRS2 board.
* TRS1 board states 3.3u. * TRS1 board states 3.3u.
*/ */
const double RC1= 2.2e3 * 22e-6;// 22e-6;
const double RC2= 10e3 * 33e-6; static double cv1=0,cv2=0,vg1=0,vg2=0,vg3=0,cv3=0,cv4=0;
const double RC31= 18e3 * 33e-6; double vg3i;
const double RC32= (18e3 + 68e3) * 33e-6;
const double RC4= 90e3 * 0.47e-6;
const double dt= 1./60./(double) VTOTAL;
const int period2 = ((long long)(PIXEL_CLOCK) * ( 33L * 68L )) / (long)10000000L / 3; // period/2 in pixel ...
static double cv1=0,cv2=0,vg1=0,vg2=0,vg3=0,vg3i=0,cv3=0,cv4=0;
static int pixelcnt = 0; static int pixelcnt = 0;
double diff; double diff;
int sig; int sig;
@ -683,8 +686,7 @@ static void radarscp_step(running_machine *machine, int line_cnt)
line_cnt += 256; line_cnt += 256;
if (line_cnt>511) if (line_cnt>511)
line_cnt -= VTOTAL; line_cnt -= VTOTAL;
//FIXME: remove after testing
//return;
/* sound2 mixes in a 30Hz noise signal. /* sound2 mixes in a 30Hz noise signal.
* With the current model this has no real effect * With the current model this has no real effect
* Included for completeness * Included for completeness
@ -693,12 +695,16 @@ static void radarscp_step(running_machine *machine, int line_cnt)
line_cnt++; line_cnt++;
if (line_cnt>=512) if (line_cnt>=512)
line_cnt=512-VTOTAL; line_cnt=512-VTOTAL;
if ( ( !(line_cnt & 0x40) && ((line_cnt+1) & 0x40) ) && (mame_rand(Machine) > RAND_MAX/2)) if ( ( !(line_cnt & 0x40) && ((line_cnt+1) & 0x40) ) && (mame_rand(Machine) > RAND_MAX/2))
state->sig30Hz = (1-state->sig30Hz); state->sig30Hz = (1-state->sig30Hz);
state->rflip_sig = state->snd02_enable & state->sig30Hz; state->rflip_sig = state->snd02_enable & state->sig30Hz;
sig = state->rflip_sig ^ ((line_cnt & 0x80)>>7); sig = state->rflip_sig ^ ((line_cnt & 0x80)>>7);
if (state->hardware_type == HARDWARE_TRS01) if (state->hardware_type == HARDWARE_TRS01)
state->rflip_sig = !state->rflip_sig; state->rflip_sig = !state->rflip_sig;
if (sig) // 128VF if (sig) // 128VF
diff = (0.0 - cv1); diff = (0.0 - cv1);
else else

View File

@ -20,13 +20,13 @@ UINT8 *fastfred_attributesram;
UINT8 *imago_fg_videoram; UINT8 *imago_fg_videoram;
static rectangle spritevisiblearea = static const rectangle spritevisiblearea =
{ {
2*8, 32*8-1, 2*8, 32*8-1,
2*8, 30*8-1 2*8, 30*8-1
}; };
static rectangle spritevisibleareaflipx = static const rectangle spritevisibleareaflipx =
{ {
0*8, 30*8-1, 0*8, 30*8-1,
2*8, 30*8-1 2*8, 30*8-1

View File

@ -7,19 +7,19 @@
#include "driver.h" #include "driver.h"
#include "includes/galaxian.h" #include "includes/galaxian.h"
static rectangle _spritevisiblearea = static const rectangle _spritevisiblearea =
{ {
2*8+1, 32*8-1, 2*8+1, 32*8-1,
2*8, 30*8-1 2*8, 30*8-1
}; };
static rectangle _spritevisibleareaflipx = static const rectangle _spritevisibleareaflipx =
{ {
0*8, 30*8-2, 0*8, 30*8-2,
2*8, 30*8-1 2*8, 30*8-1
}; };
static rectangle* spritevisiblearea; static const rectangle* spritevisiblearea;
static rectangle* spritevisibleareaflipx; static const rectangle* spritevisibleareaflipx;
#define STARS_COLOR_BASE (memory_region_length(REGION_PROMS)) #define STARS_COLOR_BASE (memory_region_length(REGION_PROMS))

View File

@ -8,13 +8,13 @@ UINT8* mermaid_fg_scrollram;
static int rougien_gfxbank1, rougien_gfxbank2; static int rougien_gfxbank1, rougien_gfxbank2;
static rectangle spritevisiblearea = static const rectangle spritevisiblearea =
{ {
0*8, 26*8-1, 0*8, 26*8-1,
2*8, 30*8-1 2*8, 30*8-1
}; };
static rectangle flip_spritevisiblearea = static const rectangle flip_spritevisiblearea =
{ {
6*8, 31*8-1, 6*8, 31*8-1,
2*8, 30*8-1 2*8, 30*8-1

View File

@ -18,6 +18,8 @@
* *
*************************************/ *************************************/
#define DUMP_WAVE_RAM 0
#define WAVERAM_WIDTH 512 #define WAVERAM_WIDTH 512
#define WAVERAM_HEIGHT 2048 #define WAVERAM_HEIGHT 2048
@ -243,6 +245,7 @@ VIDEO_START( midzeus )
static void exit_handler(running_machine *machine) static void exit_handler(running_machine *machine)
{ {
#if DUMP_WAVE_RAM
FILE *f = fopen("waveram.dmp", "w"); FILE *f = fopen("waveram.dmp", "w");
int bank; int bank;
int i; int i;
@ -255,6 +258,7 @@ static void exit_handler(running_machine *machine)
if (i % 4 == 3) fprintf(f, "\n"); if (i % 4 == 3) fprintf(f, "\n");
} }
fclose(f); fclose(f);
#endif
poly_free(poly); poly_free(poly);
} }

View File

@ -571,7 +571,7 @@ static struct point *fclip_clip_right(struct point *p1, struct point *p2)
return pointpt++; return pointpt++;
} }
static struct { static const struct {
int (*isclipped)(struct point *p); int (*isclipped)(struct point *p);
struct point *(*clip)(struct point *p1, struct point *p2); struct point *(*clip)(struct point *p1, struct point *p2);
} clipfn[4] = { } clipfn[4] = {

View File

@ -26,19 +26,19 @@ static int bankreg;
// true if cabinet == cocktail -AND- handling player 2 // true if cabinet == cocktail -AND- handling player 2
int naughtyb_cocktail; int naughtyb_cocktail;
static rectangle scrollvisiblearea = static const rectangle scrollvisiblearea =
{ {
2*8, 34*8-1, 2*8, 34*8-1,
0*8, 28*8-1 0*8, 28*8-1
}; };
static rectangle leftvisiblearea = static const rectangle leftvisiblearea =
{ {
0*8, 2*8-1, 0*8, 2*8-1,
0*8, 28*8-1 0*8, 28*8-1
}; };
static rectangle rightvisiblearea = static const rectangle rightvisiblearea =
{ {
34*8, 36*8-1, 34*8, 36*8-1,
0*8, 28*8-1 0*8, 28*8-1

View File

@ -864,6 +864,12 @@ VIDEO_START( neogeo )
pens = auto_malloc(NUM_PENS * sizeof(pen_t)); pens = auto_malloc(NUM_PENS * sizeof(pen_t));
neogeo_videoram = auto_malloc(0x20000); neogeo_videoram = auto_malloc(0x20000);
/* clear allocated memory */
memset(palettes[0],0x00, NUM_PENS * sizeof(UINT16));
memset(palettes[1],0x00, NUM_PENS * sizeof(UINT16));
memset(pens,0x00, NUM_PENS * sizeof(pen_t));
memset(neogeo_videoram,0x00, 0x20000);
compute_rgb_weights(); compute_rgb_weights();
create_sprite_line_timer(); create_sprite_line_timer();
create_auto_animation_timer(); create_auto_animation_timer();

View File

@ -32,7 +32,7 @@ static int xoffsethack;
UINT8 *s2650games_spriteram; UINT8 *s2650games_spriteram;
UINT8 *s2650games_tileram; UINT8 *s2650games_tileram;
static rectangle spritevisiblearea = static const rectangle spritevisiblearea =
{ {
2*8, 34*8-1, 2*8, 34*8-1,
0*8, 28*8-1 0*8, 28*8-1

View File

@ -14,7 +14,7 @@ static tilemap *bg_tilemap;
/* This is strange; it's unlikely that the sprites actually have a hardware */ /* This is strange; it's unlikely that the sprites actually have a hardware */
/* clipping region, but I haven't found another way to have them masked by */ /* clipping region, but I haven't found another way to have them masked by */
/* the characters at the top and bottom of the screen. */ /* the characters at the top and bottom of the screen. */
static rectangle spritevisiblearea = static const rectangle spritevisiblearea =
{ {
0*8, 32*8-1, 0*8, 32*8-1,
4*8, 29*8-1 4*8, 29*8-1

View File

@ -185,7 +185,7 @@ WRITE8_HANDLER( retofinv_gfx_ctrl_w )
static void draw_sprites(running_machine *machine, mame_bitmap *bitmap) static void draw_sprites(running_machine *machine, mame_bitmap *bitmap)
{ {
int offs; int offs;
static rectangle spritevisiblearea = static const rectangle spritevisiblearea =
{ {
2*8, 34*8-1, 2*8, 34*8-1,
0*8, 28*8-1 0*8, 28*8-1

View File

@ -70,12 +70,17 @@ static INT32 f2_text_xoffs = 0;
static int f2_tilemap_col_base = 0; static int f2_tilemap_col_base = 0;
static INT32 f2_game = 0; static INT32 f2_game = 0;
static INT32 FOOTCHMP = 1;
static UINT8 f2_tilepri[6]; // todo - move into taitoic.c static UINT8 f2_tilepri[6]; // todo - move into taitoic.c
static UINT8 f2_spritepri[6]; // todo - move into taitoic.c static UINT8 f2_spritepri[6]; // todo - move into taitoic.c
static UINT8 f2_spriteblendmode; // todo - move into taitoic.c static UINT8 f2_spriteblendmode; // todo - move into taitoic.c
enum
{
FOOTCHMP = 1
};
/***********************************************************************************/ /***********************************************************************************/
static void taitof2_core_vh_start (running_machine *machine, int sprite_type,int hide,int flip_hide,int x_offs,int y_offs, static void taitof2_core_vh_start (running_machine *machine, int sprite_type,int hide,int flip_hide,int x_offs,int y_offs,

View File

@ -644,12 +644,12 @@ static void draw_sprites(running_machine *machine, mame_bitmap *bitmap)
Note that the clipping is asymmetrical. This matches the real thing. Note that the clipping is asymmetrical. This matches the real thing.
I'm not sure of what should happen when the screen is flipped, though. I'm not sure of what should happen when the screen is flipped, though.
*/ */
static rectangle spritevisiblearea = static const rectangle spritevisiblearea =
{ {
0*8+3, 32*8-1-1, 0*8+3, 32*8-1-1,
2*8, 30*8-1 2*8, 30*8-1
}; };
static rectangle spritevisibleareaflip = static const rectangle spritevisibleareaflip =
{ {
0*8+1, 32*8-3-1, 0*8+1, 32*8-3-1,
2*8, 30*8-1 2*8, 30*8-1

View File

@ -23,13 +23,13 @@ static tilemap *thepit_tilemap;
static UINT8 *dummy_tile; static UINT8 *dummy_tile;
static rectangle spritevisiblearea = static const rectangle spritevisiblearea =
{ {
2*8+1, 32*8-1, 2*8+1, 32*8-1,
2*8, 30*8-1 2*8, 30*8-1
}; };
static rectangle spritevisibleareaflipx = static const rectangle spritevisibleareaflipx =
{ {
0*8, 30*8-2, 0*8, 30*8-2,
2*8, 30*8-1 2*8, 30*8-1

View File

@ -279,12 +279,12 @@ WRITE8_HANDLER( travrusa_flipscreen_w )
static void draw_sprites(running_machine *machine, mame_bitmap *bitmap,const rectangle *cliprect) static void draw_sprites(running_machine *machine, mame_bitmap *bitmap,const rectangle *cliprect)
{ {
int offs; int offs;
static rectangle spritevisiblearea = static const rectangle spritevisiblearea =
{ {
1*8, 31*8-1, 1*8, 31*8-1,
0*8, 24*8-1 0*8, 24*8-1
}; };
static rectangle spritevisibleareaflip = static const rectangle spritevisibleareaflip =
{ {
1*8, 31*8-1, 1*8, 31*8-1,
8*8, 32*8-1 8*8, 32*8-1

View File

@ -17,7 +17,7 @@
#include "driver.h" #include "driver.h"
static rectangle bottomvisiblearea = static const rectangle bottomvisiblearea =
{ {
16*8, 48*8-1, 16*8, 48*8-1,
6*8, 32*8-1 6*8, 32*8-1

View File

@ -9,13 +9,13 @@
#include "driver.h" #include "driver.h"
static rectangle spritevisiblearea = static const rectangle spritevisiblearea =
{ {
2*8, 32*8-1, 2*8, 32*8-1,
2*8, 30*8-1 2*8, 30*8-1
}; };
static rectangle spritevisibleareaflipx = static const rectangle spritevisibleareaflipx =
{ {
0*8, 30*8-1, 0*8, 30*8-1,
2*8, 30*8-1 2*8, 30*8-1

View File

@ -26,13 +26,13 @@ static tilemap *bg_tilemap;
#define TOTAL_COLORS(gfxn) (machine->gfx[gfxn]->total_colors * machine->gfx[gfxn]->color_granularity) #define TOTAL_COLORS(gfxn) (machine->gfx[gfxn]->total_colors * machine->gfx[gfxn]->color_granularity)
#define COLOR(gfxn,offs) (colortable[machine->drv->gfxdecodeinfo[gfxn].color_codes_start + offs]) #define COLOR(gfxn,offs) (colortable[machine->drv->gfxdecodeinfo[gfxn].color_codes_start + offs])
static rectangle clippanel = static const rectangle clippanel =
{ {
26*8, 32*8-1, 26*8, 32*8-1,
1*8, 31*8-1 1*8, 31*8-1
}; };
static rectangle clippanelflip = static const rectangle clippanelflip =
{ {
0*8, 6*8-1, 0*8, 6*8-1,
1*8, 31*8-1 1*8, 31*8-1

View File

@ -14,12 +14,12 @@ UINT8 *zaccaria_videoram,*zaccaria_attributesram;
static tilemap *bg_tilemap; static tilemap *bg_tilemap;
static rectangle spritevisiblearea = static const rectangle spritevisiblearea =
{ {
2*8+1, 29*8-1, 2*8+1, 29*8-1,
2*8, 30*8-1 2*8, 30*8-1
}; };
static rectangle spritevisiblearea_flipx = static const rectangle spritevisiblearea_flipx =
{ {
3*8+1, 30*8-1, 3*8+1, 30*8-1,
2*8, 30*8-1 2*8, 30*8-1

View File

@ -2032,8 +2032,8 @@ static void rawinput_mouse_update(HANDLE device, RAWMOUSE *data)
// otherwise, update it as a lightgun // otherwise, update it as a lightgun
else else
{ {
devinfo->mouse.raw_x = normalize_absolute_axis(data->lLastX, 0, 0xffff); devinfo->mouse.state.lX = normalize_absolute_axis(data->lLastX, 0, 0xffff);
devinfo->mouse.raw_y = normalize_absolute_axis(data->lLastY, 0, 0xffff); devinfo->mouse.state.lY = normalize_absolute_axis(data->lLastY, 0, 0xffff);
// also clear the polling function so win32_lightgun_poll isn't called // also clear the polling function so win32_lightgun_poll isn't called
devinfo->poll = NULL; devinfo->poll = NULL;

View File

@ -59,7 +59,7 @@ static chd_error chdman_compress_chd(chd_file *chd, chd_file *source, UINT32 tot
GLOBAL VARIABLES GLOBAL VARIABLES
***************************************************************************/ ***************************************************************************/
static const char *error_strings[] = static const char *const error_strings[] =
{ {
"no error", "no error",
"no drive interface", "no drive interface",

View File

@ -88,7 +88,7 @@ static summary_file *filehash[128][128];
static summary_list lists[MAX_COMPARES]; static summary_list lists[MAX_COMPARES];
static int list_count; static int list_count;
static const char *bucket_name[] = static const char *const bucket_name[] =
{ {
"Unknown", "Unknown",
"Games That Have Improved", "Games That Have Improved",
@ -112,7 +112,7 @@ static const int bucket_output_order[] =
BUCKET_CONSISTENT_ERROR BUCKET_CONSISTENT_ERROR
}; };
static const char *status_text[] = static const char *const status_text[] =
{ {
"", "",
"Success", "Success",
@ -124,7 +124,7 @@ static const char *status_text[] =
"Other Unknown Error" "Other Unknown Error"
}; };
static const char *status_color[] = static const char *const status_color[] =
{ {
"", "",
"bgcolor=\"#00A000\"", "bgcolor=\"#00A000\"",

View File

@ -51,7 +51,7 @@ enum { MODE_A,
MODE_E, MODE_O, MODE_E, MODE_O,
MODE_E12, MODE_O12, MODE_E22, MODE_O22, MODE_E12, MODE_O12, MODE_E22, MODE_O22,
TOTAL_MODES }; TOTAL_MODES };
const char *modenames[] = const char *const modenames[] =
{ {
" ", " ",
"[bits 0-3]", "[bits 0-3]",

View File

@ -9,4 +9,4 @@
***************************************************************************/ ***************************************************************************/
char build_version[] = "0.121u4 ("__DATE__")"; const char build_version[] = "0.122 ("__DATE__")";