Cleanups and version bump.

This commit is contained in:
Aaron Giles 2008-09-26 13:42:51 +00:00
parent 6d7ed9b573
commit 229d598989
22 changed files with 283 additions and 283 deletions

View File

@ -8,17 +8,17 @@
/*
NOTES:
*** There seems to be a disagreement in dasm with bytes like this : 0500 0307
On one hand, you can dasm it like this : add Y1,A X:(R2+00),Y0
On the other, you can dasm it like this : move(m) P:(R2+00),B0
The interesting doc pages for this are the following : move(m) . A-155
mem move + short displacement . A-139
add . A-23
(POSSIBILITY : Maybe Add can't have a mem move + short displacement parallel move?)
(CURRENT SOLUTION : I'm completely ignoring mem move + short displacements for now)
*** There seems to be a disagreement in dasm with bytes like this : 0500 0307
On one hand, you can dasm it like this : add Y1,A X:(R2+00),Y0
On the other, you can dasm it like this : move(m) P:(R2+00),B0
The interesting doc pages for this are the following : move(m) . A-155
mem move + short displacement . A-139
add . A-23
(POSSIBILITY : Maybe Add can't have a mem move + short displacement parallel move?)
(CURRENT SOLUTION : I'm completely ignoring mem move + short displacements for now)
*** This disassembler has been 75% tested. There may remain some bugs, but it disassembles
Polygonet Commanders' memtest code 100% accurate (to my knowledge).
*** This disassembler has been 75% tested. There may remain some bugs, but it disassembles
Polygonet Commanders' memtest code 100% accurate (to my knowledge).
*/
#include "dsp56k.h"
@ -229,23 +229,23 @@ offs_t dsp56k_dasm(char *buffer, offs_t pc, const UINT8 *oprom, const UINT8 *opr
char opcode_str[128] = "";
char parallel_move_str[128] = "";
char parallel_move_str2[128] = "";
const UINT16 op = oprom[0] | (oprom[1] << 8);
const UINT16 op2 = oprom[2] | (oprom[3] << 8);
/* Dual X Memory Data Read : 011m mKKK -rr- ---- : A-142*/
if ((op & 0xe000) == 0x6000)
{
/* Quote: (MOVE, MAC(R), MPY(R), ADD, SUB, TFR) */
UINT16 op_byte = op & 0x00ff;
/* ADD : 011m mKKK 0rru Fuuu : A-22 */
if ((op & 0xe080) == 0x6000)
{
size = dsp56k_dasm_add_2(op_byte, opcode_str, arg_str);
}
/* MAC : 011m mKKK 1xx0 F1QQ : A-122 */
else if ((op & 0xe094) == 0x6084)
else if ((op & 0xe094) == 0x6084)
{
size = dsp56k_dasm_mac_1(op_byte, opcode_str, arg_str);
}
@ -260,7 +260,7 @@ offs_t dsp56k_dasm(char *buffer, offs_t pc, const UINT8 *oprom, const UINT8 *opr
size = dsp56k_dasm_move_1(op_byte, opcode_str, arg_str);
}
/* MPY : 011m mKKK 1xx0 F0QQ : A-160 */
else if ((op & 0xe094) == 0x6080)
else if ((op & 0xe094) == 0x6080)
{
size = dsp56k_dasm_mpy_1(op_byte, opcode_str, arg_str);
}
@ -279,7 +279,7 @@ offs_t dsp56k_dasm(char *buffer, offs_t pc, const UINT8 *oprom, const UINT8 *opr
{
size = dsp56k_dasm_tfr_2(op_byte, opcode_str, arg_str);
}
/* Now evaluate the parallel data move */
decode_dual_x_memory_data_read(op, parallel_move_str, parallel_move_str2);
}
@ -288,7 +288,7 @@ offs_t dsp56k_dasm(char *buffer, offs_t pc, const UINT8 *oprom, const UINT8 *opr
{
/* Quote: (MPY or MAC) */
UINT16 op_byte = op & 0x00ff;
/* MPY : 0001 0110 RRDD FQQQ : A-160 */
if ((op & 0xff00) == 0x1600)
{
@ -299,7 +299,7 @@ offs_t dsp56k_dasm(char *buffer, offs_t pc, const UINT8 *oprom, const UINT8 *opr
{
size = dsp56k_dasm_mac_2(op_byte, opcode_str, arg_str);
}
/* Now evaluate the parallel data move */
decode_x_memory_data_write_and_register_data_move(op, parallel_move_str, parallel_move_str2);
}
@ -310,8 +310,8 @@ offs_t dsp56k_dasm(char *buffer, offs_t pc, const UINT8 *oprom, const UINT8 *opr
/***************************************/
/* 32 General parallel move operations */
/***************************************/
enum pType { kNoParallelDataMove,
enum pType { kNoParallelDataMove,
kRegisterToRegister,
kAddressRegister,
kXMemoryDataMove,
@ -321,7 +321,7 @@ offs_t dsp56k_dasm(char *buffer, offs_t pc, const UINT8 *oprom, const UINT8 *opr
UINT16 op_byte = 0x0000;
char d_register[32] = "";
int parallelType = -1;
/* Note: it's important that NPDM comes before RtRDM here */
/* No Parallel Data Move : 0100 1010 ---- ---- : A-131 */
if ((op & 0xff00) == 0x4a00)
@ -361,13 +361,13 @@ offs_t dsp56k_dasm(char *buffer, offs_t pc, const UINT8 *oprom, const UINT8 *opr
/* parallelType = kXMemoryDataMoveWithDisp; */
/* DO NOTHING FOR NOW */
}
if (parallelType != -1)
{
/* Note: There is much overlap between opcodes down here */
/* To this end, certain ops must come before others in the list */
/* CLR : .... .... 0000 F001 : A-60 */
if ((op_byte & 0x00f7) == 0x0001)
{
@ -378,8 +378,8 @@ offs_t dsp56k_dasm(char *buffer, offs_t pc, const UINT8 *oprom, const UINT8 *opr
{
size = dsp56k_dasm_add(op_byte, opcode_str, arg_str, d_register);
}
/* MOVE : .... .... 0001 0001 : A-128 */
else if ((op_byte & 0x00ff) == 0x0011)
{
@ -390,8 +390,8 @@ offs_t dsp56k_dasm(char *buffer, offs_t pc, const UINT8 *oprom, const UINT8 *opr
{
size = dsp56k_dasm_tfr(op_byte, opcode_str, arg_str, d_register);
}
/* RND : .... .... 0010 F000 : A-188 */
else if ((op_byte & 0x00f7) == 0x0020)
{
@ -417,8 +417,8 @@ offs_t dsp56k_dasm(char *buffer, offs_t pc, const UINT8 *oprom, const UINT8 *opr
{
size = dsp56k_dasm_or(op_byte, opcode_str, arg_str, d_register);
}
/* ASR : .... .... 0011 F000 : A-32 */
else if ((op_byte & 0x00f7) == 0x0030)
{
@ -444,8 +444,8 @@ offs_t dsp56k_dasm(char *buffer, offs_t pc, const UINT8 *oprom, const UINT8 *opr
{
size = dsp56k_dasm_eor(op_byte, opcode_str, arg_str, d_register);
}
/* SUBL : .... .... 0100 F001 : A-204 */
else if ((op_byte & 0x00f7) == 0x0041)
{
@ -456,8 +456,8 @@ offs_t dsp56k_dasm(char *buffer, offs_t pc, const UINT8 *oprom, const UINT8 *opr
{
size = dsp56k_dasm_sub(op_byte, opcode_str, arg_str, d_register);
}
/* CLR24 : .... .... 0101 F001 : A-62 */
else if ((op_byte & 0x00f7) == 0x0051)
{
@ -473,8 +473,8 @@ offs_t dsp56k_dasm(char *buffer, offs_t pc, const UINT8 *oprom, const UINT8 *opr
{
size = dsp56k_dasm_cmp(op_byte, opcode_str, arg_str, d_register);
}
/* NEG : .... .... 0110 F000 : A-166 */
else if ((op_byte & 0x00f7) == 0x0060)
{
@ -500,8 +500,8 @@ offs_t dsp56k_dasm(char *buffer, offs_t pc, const UINT8 *oprom, const UINT8 *opr
{
size = dsp56k_dasm_and(op_byte, opcode_str, arg_str, d_register);
}
/* ABS : .... .... 0111 F001 : A-18 */
if ((op_byte & 0x00f7) == 0x0071)
{
@ -522,8 +522,8 @@ offs_t dsp56k_dasm(char *buffer, offs_t pc, const UINT8 *oprom, const UINT8 *opr
{
size = dsp56k_dasm_cmpm(op_byte, opcode_str, arg_str, d_register);
}
/* MPY : .... .... 1k00 FQQQ : A-160 -- CONFIRMED TYPO IN DOCS (HHHH vs HHHW) */
else if ((op_byte & 0x00b0) == 0x0080)
{
@ -544,8 +544,8 @@ offs_t dsp56k_dasm(char *buffer, offs_t pc, const UINT8 *oprom, const UINT8 *opr
{
size = dsp56k_dasm_macr(op_byte, opcode_str, arg_str, d_register);
}
/* Now evaluate the parallel data move */
switch (parallelType)
{
@ -569,14 +569,14 @@ offs_t dsp56k_dasm(char *buffer, offs_t pc, const UINT8 *oprom, const UINT8 *opr
decode_x_memory_data_move2(op, parallel_move_str, d_register);
size = 1;
break;
case kXMemoryDataMoveWithDisp:
case kXMemoryDataMoveWithDisp:
decode_x_memory_data_move_with_short_displacement(op, op2, parallel_move_str);
size = 2;
break;
}
}
}
/* Assemble and return parallel move operation */
if (size > 0)
{
@ -589,15 +589,15 @@ offs_t dsp56k_dasm(char *buffer, offs_t pc, const UINT8 *oprom, const UINT8 *opr
sprintf(space, " ");
sprintf(buffer, "%s%s%s%s%s", opcode_str, arg_str, parallel_move_str, space, parallel_move_str2);
return (size | DASMFLAG_SUPPORTED);
}
/******************************/
/* Remaining non-parallel ops */
/******************************/
/* ADC : 0001 0101 0000 F01J : A-20 */
if ((op & 0xfff6) == 0x1502)
{
@ -1060,8 +1060,8 @@ offs_t dsp56k_dasm(char *buffer, offs_t pc, const UINT8 *oprom, const UINT8 *opr
{
size = dsp56k_dasm_zero(op, opcode_str, arg_str);
}
/* Assemble opcode string buffer */
if (size >= 1)
{
@ -1074,7 +1074,7 @@ offs_t dsp56k_dasm(char *buffer, offs_t pc, const UINT8 *oprom, const UINT8 *opr
sprintf(buffer, "unknown");
size = 1;
}
return (size | DASMFLAG_SUPPORTED);
}
@ -1188,16 +1188,16 @@ static size_t dsp56k_dasm_tfr_2(const UINT16 op_byte, char* opcode_str, char* ar
/* MPY : 0001 0110 RRDD FQQQ : A-160 */
static size_t dsp56k_dasm_mpy_2(const UINT16 op_byte, char* opcode_str, char* arg_str)
{
/* TODO
// MPY - 0001 0110 RRDD FQQQ
decode_k_table(BITS(op,0x0100), Dnot);
Rnum = decode_RR_table(BITS(op,0x00c0));
decode_DD_table(BITS(op,0x0030), S);
decode_QQQF_table(BITS(op,0x0007), BITS(op,0x0008), S1, S2, D);
sprintf(buffer, "mpy %s,%s,%s %s,(R%d)+N%d %s,%s", S1, S2, D, Dnot, Rnum, Rnum, S, Dnot);
// Strange, but not entirely out of the question - this 'k' parameter is hardcoded
// I cheat here and do the parallel memory data move above - this specific one is only used twice
retSize = 1;
/* TODO
// MPY - 0001 0110 RRDD FQQQ
decode_k_table(BITS(op,0x0100), Dnot);
Rnum = decode_RR_table(BITS(op,0x00c0));
decode_DD_table(BITS(op,0x0030), S);
decode_QQQF_table(BITS(op,0x0007), BITS(op,0x0008), S1, S2, D);
sprintf(buffer, "mpy %s,%s,%s %s,(R%d)+N%d %s,%s", S1, S2, D, Dnot, Rnum, Rnum, S, Dnot);
// Strange, but not entirely out of the question - this 'k' parameter is hardcoded
// I cheat here and do the parallel memory data move above - this specific one is only used twice
retSize = 1;
*/
return 0;
}
@ -1205,16 +1205,16 @@ static size_t dsp56k_dasm_mpy_2(const UINT16 op_byte, char* opcode_str, char* ar
/* MAC : 0001 0111 RRDD FQQQ : A-122 */
static size_t dsp56k_dasm_mac_2(const UINT16 op_byte, char* opcode_str, char* arg_str)
{
/* TODO
// MAC - 0001 0111 RRDD FQQQ
decode_k_table(BITS(op,0x0100), Dnot);
Rnum = decode_RR_table(BITS(op,0x00c0));
decode_DD_table(BITS(op,0x0030), S);
decode_QQQF_table(BITS(op,0x0007), BITS(op,0x0008), S1, S2, D);
sprintf(buffer, "mac %s,%s,%s %s,(R%d)+N%d %s,%s", S1, S2, D, Dnot, Rnum, Rnum, S, Dnot);
// Strange, but not entirely out of the question - this 'k' parameter is hardcoded
// I cheat here and do the parallel memory data move above - this specific one is only used twice
retSize = 1;
/* TODO
// MAC - 0001 0111 RRDD FQQQ
decode_k_table(BITS(op,0x0100), Dnot);
Rnum = decode_RR_table(BITS(op,0x00c0));
decode_DD_table(BITS(op,0x0030), S);
decode_QQQF_table(BITS(op,0x0007), BITS(op,0x0008), S1, S2, D);
sprintf(buffer, "mac %s,%s,%s %s,(R%d)+N%d %s,%s", S1, S2, D, Dnot, Rnum, Rnum, S, Dnot);
// Strange, but not entirely out of the question - this 'k' parameter is hardcoded
// I cheat here and do the parallel memory data move above - this specific one is only used twice
retSize = 1;
*/
return 0;
}
@ -1619,7 +1619,7 @@ static size_t dsp56k_dasm_adc(const UINT16 op, char* opcode_str, char* arg_str)
decode_JF_table(BITS(op,0x0001), BITS(op,0x0008), S1, D);
sprintf(opcode_str, "adc");
sprintf(arg_str, "%s,%s", S1, D);
return 1;
return 1;
}
/* ANDI : 0001 1EE0 iiii iiii : A-26 */
@ -1629,7 +1629,7 @@ static size_t dsp56k_dasm_andi(const UINT16 op, char* opcode_str, char* arg_str)
decode_EE_table(BITS(op,0x0600), D);
sprintf(opcode_str, "and(i)");
sprintf(arg_str, "#%02x,%s", BITS(op,0x00ff), D);
return 1;
return 1;
}
/* ASL4 : 0001 0101 0011 F001 : A-30 */
@ -1639,7 +1639,7 @@ static size_t dsp56k_dasm_asl4(const UINT16 op, char* opcode_str, char* arg_str)
decode_F_table(BITS(op,0x0008), D);
sprintf(opcode_str, "asl4");
sprintf(arg_str, "%s", D);
return 1;
return 1;
}
/* ASR4 : 0001 0101 0011 F000 : A-34 */
@ -1649,7 +1649,7 @@ static size_t dsp56k_dasm_asr4(const UINT16 op, char* opcode_str, char* arg_str)
decode_F_table(BITS(op,0x0008), D);
sprintf(opcode_str, "asr4");
sprintf(arg_str, "%s", D);
return 1;
return 1;
}
/* ASR16 : 0001 0101 0111 F000 : A-36 */
@ -1659,7 +1659,7 @@ static size_t dsp56k_dasm_asr16(const UINT16 op, char* opcode_str, char* arg_str
decode_F_table(BITS(op,0x0008), D);
sprintf(opcode_str, "asr16");
sprintf(arg_str, "%s", D);
return 1;
return 1;
}
/* BFCHG : 0001 0100 11Pp pppp BBB1 0010 iiii iiii : A-38 */
@ -1743,7 +1743,7 @@ static size_t dsp56k_dasm_bcc_1(const UINT16 op, char* opcode_str, char* arg_str
relativeInt = get_6_bit_signed_value(BITS(op,0x003f));
sprintf(opcode_str, "b.%s", M);
sprintf(arg_str, "%d (0x%04x)", relativeInt, pc + 1 + relativeInt);
return 1;
return 1;
}
/* Bcc : 0000 0111 RR10 cccc : A-48 */
@ -1755,7 +1755,7 @@ static size_t dsp56k_dasm_bcc_2(const UINT16 op, char* opcode_str, char* arg_str
Rnum = decode_RR_table(BITS(op,0x00c0));
sprintf(opcode_str, "b.%s", M);
sprintf(arg_str, "R%d", Rnum);
return 1;
return 1;
}
/* BRA : 0000 0001 0011 11-- xxxx xxxx xxxx xxxx : A-50 */
@ -1771,7 +1771,7 @@ static size_t dsp56k_dasm_bra_1(const UINT16 op, char* opcode_str, char* arg_str
{
sprintf(opcode_str, "bra");
sprintf(arg_str, "%d (0x%02x)", (INT8)BITS(op,0x00ff), pc + 1 + (INT8)BITS(op,0x00ff));
return 1;
return 1;
}
/* BRA : 0000 0001 0010 11RR : A-50 */
@ -1781,7 +1781,7 @@ static size_t dsp56k_dasm_bra_2(const UINT16 op, char* opcode_str, char* arg_str
Rnum = decode_RR_table(BITS(op,0x0003));
sprintf(opcode_str, "bra");
sprintf(arg_str, "R%d", Rnum);
return 1;
return 1;
}
/* BRKc : 0000 0001 0001 cccc : A-52 */
@ -1791,7 +1791,7 @@ static size_t dsp56k_dasm_brkc(const UINT16 op, char* opcode_str, char* arg_str)
decode_cccc_table(BITS(op,0x000f), M);
sprintf(opcode_str, "brk.%s", M);
sprintf(arg_str, " ");
return 1;
return 1;
}
/* BScc : 0000 0111 --01 cccc xxxx xxxx xxxx xxxx : A-54 */
@ -1847,7 +1847,7 @@ static size_t dsp56k_dasm_debug(const UINT16 op, char* opcode_str, char* arg_str
{
sprintf(opcode_str, "debug");
sprintf(arg_str, " ");
return 1;
return 1;
}
/* DEBUGcc : 0000 0000 0101 cccc : A-70 */
@ -2545,12 +2545,12 @@ static void decode_x_memory_data_move(const UINT16 op, char* parallel_move_str)
char SD[32];
char ea[32];
char args[32];
Rnum = decode_RR_table(BITS(op,0x3000));
decode_HHH_table(BITS(op,0x0e00), SD);
assemble_ea_from_m_table(BITS(op,0x4000), Rnum, ea);
assemble_arguments_from_W_table(BITS(op,0x0100), args, 'X', SD, ea);
sprintf(parallel_move_str, "%s", args);
}
@ -2560,17 +2560,17 @@ static void decode_x_memory_data_move2(const UINT16 op, char* parallel_move_str,
char SD[32] ;
char args[32] ;
char dest[32] ;
if (d_register[0] == 'B')
sprintf(dest, "(A1)");
else if (d_register[0] == 'A')
sprintf(dest, "(B1)");
else
sprintf(dest, "(A1)");
decode_HHH_table(BITS(op,0x0e00), SD) ;
assemble_arguments_from_W_table(BITS(op,0x0100), args, 'X', SD, dest) ;
sprintf(parallel_move_str, "%s", args);
}
@ -2582,18 +2582,18 @@ static void decode_dual_x_memory_data_read(const UINT16 op, char* parallel_move_
char D2[32] = "";
char ea1[32] = "";
char ea2[32] = "";
Rnum = decode_rr_table(BITS(op,0x0060));
decode_KKK_table(BITS(op,0x0700), D1, D2);
assemble_eas_from_m_table(BITS(op,0x1800), Rnum, 3, ea1, ea2);
/* TODO : The ^F's should likely be replaced */
if (Rnum == -1)
{
sprintf(ea1, "(!!)!");
}
sprintf(parallel_move_str, "X:%s,%s", ea1, D1);
sprintf(parallel_move_str2, "X:%s,%s", ea2, D2);
}
@ -2603,9 +2603,9 @@ static void decode_register_to_register_data_move(const UINT16 op, char* paralle
{
char S[32];
char D[32];
decode_IIII_table(BITS(op,0x0f00), S, D);
if (D[0] == '^' && D[1] == 'F')
{
if (d_register[0] == 'B')
@ -2615,7 +2615,7 @@ static void decode_register_to_register_data_move(const UINT16 op, char* paralle
else
sprintf(D, "A");
}
sprintf(parallel_move_str, "%s,%s", S, D);
}
@ -2635,7 +2635,7 @@ static void decode_x_memory_data_write_and_register_data_move(const UINT16 op, c
int Rnum;
char S[32];
char Dnot[32];
/* TODO : Cross-check the Dnot stuff against the MPY & MAC things. */
/* It's likely correct as-is, since the ALU op and this guy probably decode the same bit, */
/* but i may have to pass in d_register just to be sure? */
@ -2654,7 +2654,7 @@ static void decode_x_memory_data_move_with_short_displacement(const UINT16 op, c
INT8 B;
char SD[32];
char args[32];
B = (char)(op & 0x00ff);
decode_HHH_table(BITS(op2,0x0e00), SD);
assemble_reg_from_W_table(BITS(op2,0x0100), args, 'X', SD, B);
@ -2674,7 +2674,7 @@ static int decode_BBB_table(UINT16 BBB)
case 0x2: return BBB_MIDDLE; break;
case 0x1: return BBB_LOWER ; break;
}
return BBB_LOWER; /* Not really safe... */
}
@ -2721,7 +2721,7 @@ static void decode_DDDDD_table(UINT16 DDDDD, char *SD)
case 0x0d: sprintf(SD, "B1"); break;
case 0x0e: sprintf(SD, "A2"); break;
case 0x0f: sprintf(SD, "B2"); break;
case 0x10: sprintf(SD, "R0"); break;
case 0x11: sprintf(SD, "R1"); break;
case 0x12: sprintf(SD, "R2"); break;
@ -2755,7 +2755,7 @@ static void decode_DD_table(UINT16 DD, char *SD)
static void decode_DDF_table(UINT16 DD, UINT16 F, char *S, char *D)
{
UINT16 switchVal = (DD << 1) | F;
switch (switchVal)
{
case 0x0: sprintf(S, "X0"); sprintf(D, "A"); break;
@ -2791,7 +2791,7 @@ static void decode_F_table(UINT16 F, char *SD)
static void decode_h0hF_table(UINT16 h0h, UINT16 F, char *S, char *D)
{
UINT16 switchVal = (h0h << 1) | F;
switch (switchVal)
{
case 0x8: sprintf(S, "X0"); sprintf(D, "A"); break;
@ -2857,7 +2857,7 @@ static void decode_IIII_table(UINT16 IIII, char *S, char *D)
static void decode_JJJF_table(UINT16 JJJ, UINT16 F, char *S, char *D)
{
UINT16 switchVal = (JJJ << 1) | F;
switch(switchVal)
{
case 0x0: sprintf(S, "B") ; sprintf(D, "A"); break;
@ -2882,7 +2882,7 @@ static void decode_JJJF_table(UINT16 JJJ, UINT16 F, char *S, char *D)
static void decode_JJF_table(UINT16 JJ, UINT16 F, char *S, char *D)
{
UINT16 switchVal = (JJ << 1) | F;
switch (switchVal)
{
case 0x0: sprintf(S, "X0"); sprintf(D, "A"); break;
@ -2899,7 +2899,7 @@ static void decode_JJF_table(UINT16 JJ, UINT16 F, char *S, char *D)
static void decode_JF_table(UINT16 J, UINT16 F, char *S, char *D)
{
UINT16 switchVal = (J << 1) | F;
switch(switchVal)
{
case 0x0: sprintf(S, "X"); sprintf(D, "A"); break;
@ -2955,7 +2955,7 @@ static int decode_TT_table(UINT16 TT)
static void decode_QQF_table(UINT16 QQ, UINT16 F, char *S1, char *S2, char *D)
{
UINT16 switchVal = (QQ << 1) | F;
switch(switchVal)
{
case 0x0: sprintf(S1, "X0"); sprintf(S2, "Y0"); sprintf(D, "A"); break;
@ -2972,7 +2972,7 @@ static void decode_QQF_table(UINT16 QQ, UINT16 F, char *S1, char *S2, char *D)
static void decode_QQF_special_table(UINT16 QQ, UINT16 F, char *S1, char *S2, char *D)
{
UINT16 switchVal = (QQ << 1) | F;
switch(switchVal)
{
case 0x0: sprintf(S1, "Y0"); sprintf(S2, "X0"); sprintf(D, "A"); break;
@ -2989,7 +2989,7 @@ static void decode_QQF_special_table(UINT16 QQ, UINT16 F, char *S1, char *S2, ch
static void decode_QQQF_table(UINT16 QQQ, UINT16 F, char *S1, char *S2, char *D)
{
UINT16 switchVal = (QQQ << 1) | F;
switch(switchVal)
{
case 0x0: sprintf(S1, "X0"); sprintf(S2, "X0"); sprintf(D, "A"); break;
@ -3047,7 +3047,7 @@ static void decode_ss_table(UINT16 ss, char *arithmetic)
static void decode_uuuuF_table(UINT16 uuuu, UINT16 F, char *arg, char *S, char *D)
{
UINT16 switchVal = (uuuu << 1) | F;
switch(switchVal)
{
case 0x00: sprintf(arg, "add"); sprintf(S, "X0"); sprintf(D, "A"); break;
@ -3149,7 +3149,7 @@ static void assemble_ea_from_z_table(UINT16 z, int n, char *ea)
static void assemble_D_from_P_table(UINT16 P, UINT16 ppppp, char *D)
{
char fullAddy[128]; /* Convert Short Absolute Address to full 16-bit */
switch(P)
{
case 0x0: sprintf(D, "X:%02x", ppppp); break;
@ -3182,7 +3182,7 @@ static void assemble_address_from_IO_short_address(UINT16 pp, char *ea)
{
UINT16 fullAddy = 0xffe0;
fullAddy |= pp;
sprintf(ea, "%.04x", fullAddy);
}
@ -3191,7 +3191,7 @@ static INT8 get_6_bit_signed_value(UINT16 bits)
UINT16 fullAddy = bits;
if (fullAddy & 0x0020)
fullAddy |= 0xffc0;
return (INT8)fullAddy;
}
@ -3203,11 +3203,11 @@ static INT8 get_6_bit_signed_value(UINT16 bits)
static UINT16 dsp56k_op_mask(UINT16 cur, UINT16 mask)
{
int i;
UINT16 retVal = (cur & mask);
UINT16 temp = 0x0000;
int offsetCount = 0;
/* Shift everything right, eliminating 'whitespace'... */
for (i = 0; i < 16; i++)
{
@ -3217,7 +3217,7 @@ static UINT16 dsp56k_op_mask(UINT16 cur, UINT16 mask)
offsetCount++;
}
}
return temp;
}

View File

@ -434,7 +434,7 @@ void debug_cpu_start_hook(running_machine *machine, int cpunum, attotime endtime
debug_view_update_all();
global.last_periodic_update_time = osd_ticks();
}
/* check for pending breaks */
else if (info == global.breakcpu)
{
@ -944,13 +944,13 @@ void debug_cpu_halt_on_next_instruction(running_machine *machine, int cpunum, co
{
debug_cpu_info *info;
va_list arg;
/* pick the best CPU to land on */
if (cpunum != -1)
info = &global.cpuinfo[cpunum];
else if (global.visiblecpu != NULL)
info = global.visiblecpu;
else
else
info = global.livecpu;
/* if something is pending on this CPU already, ignore this request */

View File

@ -151,7 +151,7 @@ static const ldplayer_interface *player_interfaces[] =
&simutrek_interface,
&ldv1000_interface,
// &ldp1450_interface,
// &vp932_interface,
// &vp932_interface,
&vp931_interface
};
@ -894,7 +894,7 @@ static void read_track_data(laserdisc_state *ld)
UINT32 vbiframe;
UINT32 readhunk;
INT32 chdtrack;
frame = &ldcore->frame[ldcore->videoindex];
/* special cases for playing forward */
@ -903,7 +903,7 @@ static void read_track_data(laserdisc_state *ld)
/* if the previous field had a frame number, force the new field to pair with the previous one */
if ((ldcore->metadata[fieldnum ^ 1].line1718 & VBI_MASK_CAV_PICTURE) == VBI_CODE_CAV_PICTURE)
frame->numfields = 1;
/* if the twice-previous field was a frame number, and we've moved one since then, consider this one done */
else if (frame->numfields >= 2 && (ldcore->metadata[fieldnum].line1718 & VBI_MASK_CAV_PICTURE) == VBI_CODE_CAV_PICTURE)
{
@ -912,7 +912,7 @@ static void read_track_data(laserdisc_state *ld)
frame->numfields = 0;
}
}
/* all other cases */
else
{

View File

@ -12,7 +12,7 @@
Still to do:
* determine actual slow/fast speeds
*
*
*************************************************************************/
@ -216,7 +216,7 @@ static void vp931_init(laserdisc_state *ld)
/* find our CPU */
astring_printf(tempstring, "%s:%s", ld->device->tag, "vp931");
player->cpunum = mame_find_cpu_index(ld->device->machine, astring_c(tempstring));
/* find our timer */
astring_printf(tempstring, "%s:%s", ld->device->tag, "tracktimer");
player->tracktimer = device_list_find_by_tag(ld->device->machine->config->devicelist, TIMER, astring_c(tempstring));
@ -277,7 +277,7 @@ static void vp931_data_w(laserdisc_state *ld, UINT8 prev, UINT8 data)
static UINT8 vp931_data_r(laserdisc_state *ld)
{
ldplayer_data *player = ld->player;
/* if data is pending, clear the pending flag and notify any callbacks */
if (player->tocontroller_pending)
{
@ -294,7 +294,7 @@ static UINT8 vp931_data_r(laserdisc_state *ld)
/*-------------------------------------------------
vp931_ready - return the status of "ready"
to the caller (ready to accept another
to the caller (ready to accept another
command)
-------------------------------------------------*/
@ -327,17 +327,17 @@ static WRITE8_HANDLER( output0_w )
{
laserdisc_state *ld = find_vp931(machine);
ldplayer_data *player = ld->player;
/*
$80 = n/c
$40 = LED (?) -> C335
$20 = LED (?)
$10 = LED (?) -> CX
$08 = EJECT
$04 = inverted -> AUDIO MUTE II
$02 = inverted -> AUDIO MUTE I
$01 = inverted -> VIDEO MUTE
*/
$80 = n/c
$40 = LED (?) -> C335
$20 = LED (?)
$10 = LED (?) -> CX
$08 = EJECT
$04 = inverted -> AUDIO MUTE II
$02 = inverted -> AUDIO MUTE I
$01 = inverted -> VIDEO MUTE
*/
if (LOG_PORTS && (player->out0 ^ data) & 0xff)
{
@ -371,15 +371,15 @@ static WRITE8_HANDLER( output1_w )
INT32 speed = 0;
/*
$80 = n/c
$40 = n/c
$20 = n/c
$10 = n/c
$08 = inverted -> SMS
$04 = inverted -> SSS
$02 = inverted -> SCAN CMD
$01 = OSM
*/
$80 = n/c
$40 = n/c
$20 = n/c
$10 = n/c
$08 = inverted -> SMS
$04 = inverted -> SSS
$02 = inverted -> SCAN CMD
$01 = OSM
*/
if (LOG_PORTS && (player->out1 ^ data) & 0x08)
{
@ -388,19 +388,19 @@ static WRITE8_HANDLER( output1_w )
mame_printf_debug("\n");
player->out1 = data;
}
/* speed is 0 unless SCAN CMD is clear */
speed = 0;
if (!(data & 0x02))
{
/* fast/slow is based on bit 2 */
speed = (data & 0x04) ? VP931_SCAN_FAST_SPEED : VP931_SCAN_SPEED;
/* direction is based on bit 0 */
if (data & 0x01)
speed = -speed;
}
/* update the speed */
ldcore_set_slider_speed(ld, speed);
}
@ -413,9 +413,9 @@ static WRITE8_HANDLER( output1_w )
static WRITE8_HANDLER( lcd_w )
{
/*
Frame number is written as 5 digits here; however, it is not actually
connected
*/
Frame number is written as 5 digits here; however, it is not actually
connected
*/
}
@ -426,16 +426,16 @@ static WRITE8_HANDLER( lcd_w )
static READ8_HANDLER( keypad_r )
{
/*
From the code, this is apparently a vestigial keypad with basic controls:
$01 = play
$02 = still
$04 = jump 25 frames backward
$08 = jump 25 frames forward
$10 = search for frame 50(?)
$20 = search for frame 350(?)
$40 = reset
$80 = play reverse
*/
From the code, this is apparently a vestigial keypad with basic controls:
$01 = play
$02 = still
$04 = jump 25 frames backward
$08 = jump 25 frames forward
$10 = search for frame 50(?)
$20 = search for frame 350(?)
$40 = reset
$80 = play reverse
*/
return 0x00;
}
@ -461,7 +461,7 @@ static READ8_HANDLER( from_controller_r )
{
laserdisc_state *ld = find_vp931(machine);
ldplayer_data *player = ld->player;
/* clear the pending flag and return the data */
player->fromcontroller_pending = FALSE;
return player->fromcontroller;
@ -477,11 +477,11 @@ static WRITE8_HANDLER( to_controller_w )
{
laserdisc_state *ld = find_vp931(machine);
ldplayer_data *player = ld->player;
/* set the pending flag and stash the data */
player->tocontroller_pending = TRUE;
player->tocontroller = data;
/* signal to the callback if provided */
if (player->data_ready_cb != NULL)
(*player->data_ready_cb)(ld->device, TRUE);
@ -502,14 +502,14 @@ static READ8_HANDLER( port1_r )
UINT8 result = 0x00;
/*
$80 = P17 = (in) unsure
$40 = P16 = (in) /ERP from datic circuit
$20 = P15 = (in) D105
*/
$80 = P17 = (in) unsure
$40 = P16 = (in) /ERP from datic circuit
$20 = P15 = (in) D105
*/
if (!player->daticerp)
result |= 0x40;
return result;
}
@ -522,14 +522,14 @@ static WRITE8_HANDLER( port1_w )
{
laserdisc_state *ld = find_vp931(machine);
ldplayer_data *player = ld->player;
/*
$10 = P14 = (out) D104 -> /SPEED
$08 = P13 = (out) D103 -> /TIMER ENABLE
$04 = P12 = (out) D102 -> /REV
$02 = P11 = (out) D101 -> /FORW
$01 = P10 = (out) D100 -> some op-amp then to C334, B56, B332
*/
$10 = P14 = (out) D104 -> /SPEED
$08 = P13 = (out) D103 -> /TIMER ENABLE
$04 = P12 = (out) D102 -> /REV
$02 = P11 = (out) D101 -> /FORW
$01 = P10 = (out) D100 -> some op-amp then to C334, B56, B332
*/
if (LOG_PORTS && (player->port1 ^ data) & 0x1f)
{
@ -541,7 +541,7 @@ static WRITE8_HANDLER( port1_w )
if (!(data & 0x01)) printf(" OPAMP");
printf("\n");
}
/* if bit 0 is set, we are not tracking */
if (data & 0x01)
player->trackdir = 0;
@ -550,14 +550,14 @@ static WRITE8_HANDLER( port1_w )
else if (player->trackdir == 0)
{
player->advanced = 0;
/* if bit 2 is clear, we are moving backwards */
if (!(data & 0x04))
{
player->trackdir = -1;
player->trackstate = 1;
}
/* if bit 1 is clear, we are moving forward */
else if (!(data & 0x02))
{
@ -572,13 +572,13 @@ static WRITE8_HANDLER( port1_w )
/* turn it off if we're not tracking */
if (player->trackdir == 0)
timer_device_adjust_periodic(player->tracktimer, attotime_never, 0, attotime_never);
/* if we just started tracking, or if the speed was changed, reprime the timer */
else if (((player->port1 ^ data) & 0x11) != 0)
{
/* speeds here are just guesses, but work with the player logic; this is the time per half-track */
attotime speed = (data & 0x10) ? ATTOTIME_IN_USEC(60) : ATTOTIME_IN_USEC(10);
/* always start with an initial long delay; the code expects this */
timer_device_adjust_periodic(player->tracktimer, ATTOTIME_IN_USEC(100), 0, speed);
}
@ -599,16 +599,16 @@ static READ8_HANDLER( port2_r )
UINT8 result = 0x00;
/*
$80 = P27 = (in) set/reset latch; set by FOC LS, reset by IGR
$20 = P25 = (in) D125 -> 0 when data written to controller is preset, reset to 1 when read
$10 = P24 = (in) D124 -> 0 when data from controller is present, reset to 1 on a read
*/
$80 = P27 = (in) set/reset latch; set by FOC LS, reset by IGR
$20 = P25 = (in) D125 -> 0 when data written to controller is preset, reset to 1 when read
$10 = P24 = (in) D124 -> 0 when data from controller is present, reset to 1 on a read
*/
if (!player->tocontroller_pending)
result |= 0x20;
if (!player->fromcontroller_pending)
result |= 0x10;
return result;
}
@ -620,9 +620,9 @@ static READ8_HANDLER( port2_r )
static WRITE8_HANDLER( port2_w )
{
/*
$40 = P26 = (out) cleared while data is sent back & forth; set afterwards
[Not actually connected, but this is done in the code]
*/
$40 = P26 = (out) cleared while data is sent back & forth; set afterwards
[Not actually connected, but this is done in the code]
*/
}
@ -664,18 +664,18 @@ static TIMER_CALLBACK( vbi_data_fetch )
int which = param & 3;
int line = param >> 2;
UINT32 code = 0;
/* fetch the code and compute the DATIC latched value */
if (line >= LASERDISC_CODE_LINE16 && line <= LASERDISC_CODE_LINE18)
code = laserdisc_get_field_code(ld->device, line);
/* at the start of each line, signal an interrupt and use a timer to turn it off */
if (which == 0)
{
cpunum_set_input_line(machine, player->cpunum, MCS48_INPUT_IRQ, ASSERT_LINE);
timer_set(ATTOTIME_IN_NSEC(5580), ld, 0, irq_off);
}
/* clock the data strobe on each subsequent callback */
else if (code != 0)
{
@ -683,7 +683,7 @@ static TIMER_CALLBACK( vbi_data_fetch )
player->datastrobe = 1;
timer_set(ATTOTIME_IN_NSEC(5000), ld, 0, datastrobe_off);
}
/* determine the next bit to fetch and reprime ourself */
if (++which == 4)
{
@ -708,7 +708,7 @@ static TIMER_CALLBACK( deferred_data_w )
/* set the value and mark it pending */
player->fromcontroller = param;
player->fromcontroller_pending = TRUE;
/* track the commands for debugging purposes */
if (player->cmdcount < ARRAY_LENGTH(player->cmdbuf))
{
@ -761,7 +761,7 @@ static TIMER_DEVICE_CALLBACK( track_timer )
{
laserdisc_state *ld = ptr;
ldplayer_data *player = ld->player;
/* advance by the count and toggle the state */
player->trackstate ^= 1;
if ((player->trackdir < 0 && !player->trackstate) || (player->trackdir > 0 && player->trackstate))

View File

@ -199,12 +199,12 @@ void bitmap_fill(bitmap_t *dest, const rectangle *cliprect, UINT32 color)
else
{
UINT16 *destrow, *destrow0;
/* Fill the first line the hard way */
destrow = BITMAP_ADDR16(dest, fill.min_y, 0);
for (x = fill.min_x; x <= fill.max_x; x++)
destrow[x] = (UINT16)color;
/* For the other lines, just copy the first one */
destrow0 = BITMAP_ADDR16(dest, fill.min_y, fill.min_x);
for (y = fill.min_y + 1; y <= fill.max_y; y++)
@ -230,7 +230,7 @@ void bitmap_fill(bitmap_t *dest, const rectangle *cliprect, UINT32 color)
destrow = BITMAP_ADDR32(dest, fill.min_y, 0);
for (x = fill.min_x; x <= fill.max_x; x++)
destrow[x] = (UINT32)color;
/* For the other lines, just copy the first one */
destrow0 = BITMAP_ADDR32(dest, fill.min_y, fill.min_x);
for (y = fill.min_y + 1; y <= fill.max_y; y++)

View File

@ -875,7 +875,7 @@ DISCRETE_SOUND_END
SOUND_START( dkong)
{
dkong_state *state = machine->driver_data;
state->snd_rom = memory_region(machine, "sound");
state->dev_vp2 = devtag_get_device(machine, LATCH8, "virtual_p2");
}

View File

@ -297,17 +297,17 @@ GFXDECODE_END
static WRITE8_HANDLER(chanbara_ay_out_0_w)
{
// printf("chanbara_ay_out_0_w %02x\n",data);
// printf("chanbara_ay_out_0_w %02x\n",data);
scroll=data;
}
static WRITE8_HANDLER(chanbara_ay_out_1_w)
{
// printf("chanbara_ay_out_1_w %02x\n",data);
// printf("chanbara_ay_out_1_w %02x\n",data);
memory_set_bankptr(1, memory_region(machine, "user1") + ((data&4)?0x4000:0x0000) );
scrollhi = data & 0x03;
//if (data&0xf8) printf("chanbara_ay_out_1_w unused bits set %02x\n",data&0xf8);
//if (data&0xf8) printf("chanbara_ay_out_1_w unused bits set %02x\n",data&0xf8);
}
static void sound_irq(running_machine *machine, int linestate)

View File

@ -73,13 +73,13 @@ static int m_n_disc_read_data;
static READ8_HANDLER( firefox_disc_status_r )
{
UINT8 result = 0xff;
result ^= 0x20;
if (!laserdisc_line_r(laserdisc, LASERDISC_LINE_READY))
result ^= 0x40;
if (laserdisc_line_r(laserdisc, LASERDISC_LINE_DATA_AVAIL))
result ^= 0x80;
return result;
}

View File

@ -39,23 +39,23 @@
CPUID info:
Original set:
CPUID Level: EAX: EBX: ECX: EDX:
00000000 00000003 756E6547 6C65746E 49656E69
00000001 0000068A 00000002 00000000 0387F9FF
00000002 03020101 00000000 00000000 0C040882
00000003 00000000 00000000 CA976D2E 000082F6
80000000 00000000 00000000 CA976D2E 000082F6
C0000000 00000000 00000000 CA976D2E 000082F6
CPUID Level: EAX: EBX: ECX: EDX:
00000000 00000003 756E6547 6C65746E 49656E69
00000001 0000068A 00000002 00000000 0387F9FF
00000002 03020101 00000000 00000000 0C040882
00000003 00000000 00000000 CA976D2E 000082F6
80000000 00000000 00000000 CA976D2E 000082F6
C0000000 00000000 00000000 CA976D2E 000082F6
Version 2:
CPUID Level: EAX: EBX: ECX: EDX:
00000000 00000003 756E6547 6C65746E 49656E69
00000001 0000068A 00000002 00000000 0387F9FF
00000002 03020101 00000000 00000000 0C040882
00000003 00000000 00000000 B8BA1941 00038881
80000000 00000000 00000000 B8BA1941 00038881
C0000000 00000000 00000000 B8BA1941 00038881
CPUID Level: EAX: EBX: ECX: EDX:
00000000 00000003 756E6547 6C65746E 49656E69
00000001 0000068A 00000002 00000000 0387F9FF
00000002 03020101 00000000 00000000 0C040882
00000003 00000000 00000000 B8BA1941 00038881
80000000 00000000 00000000 B8BA1941 00038881
C0000000 00000000 00000000 B8BA1941 00038881
*/

View File

@ -680,7 +680,7 @@ INPUT_PORTS_END
Port A of both chips is connected to a banking control
register.
All 6 (3*2) AY-3-8910/12 outputs are tied together
and put with 1000 Ohm to gnd.
The following is a approximation, since

View File

@ -465,7 +465,7 @@ static READ16_HANDLER( custom_key_r )
res = BITSWAP16(keyval, 22,26,31,23,18,20,16,30,24,21,25,19,17,29,28,27);
keyval >>= 1;
// printf("popcount(%08X) = %d\n", keyval & 0x58000c00, popcount(keyval & 0x58000c00));
// printf("popcount(%08X) = %d\n", keyval & 0x58000c00, popcount(keyval & 0x58000c00));
if((!keyval) || (popcount(keyval & 0x58000c00) & 1))
keyval ^= 0x80000000;

View File

@ -1802,7 +1802,7 @@ ROM_END
static INPUT_PORTS_START( gunbulet )
PORT_START("MISC")
PORT_DIPUNUSED_DIPLOC(0x01, 0x01, "SW1: 2")
PORT_SERVICE_DIPLOC(0x02, 0x02, "SW1: 1")
PORT_SERVICE_DIPLOC(0x02, 0x02, "SW1: 1")
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
@ -1856,7 +1856,7 @@ static INPUT_PORTS_START( outfxies )
PORT_DIPNAME( 0x01, 0x01, "Freeze Screen" ) PORT_DIPLOCATION("SW1: 2")
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_SERVICE_DIPLOC(0x02, 0x02, "SW1: 1")
PORT_SERVICE_DIPLOC(0x02, 0x02, "SW1: 1")
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN1 )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN2 )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
@ -1887,10 +1887,10 @@ static INPUT_PORTS_START( nbsports )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 )
PORT_START("MISC")
PORT_DIPNAME( 0x01, 0x01, "Freeze Screen" ) PORT_DIPLOCATION("SW1: 2")
PORT_DIPNAME( 0x01, 0x01, "Freeze Screen" ) PORT_DIPLOCATION("SW1: 2")
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_SERVICE_DIPLOC(0x02, 0x02, "SW1: 1")
PORT_SERVICE_DIPLOC(0x02, 0x02, "SW1: 1")
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN1 )
@ -1944,7 +1944,7 @@ static INPUT_PORTS_START( namconb1 )
PORT_DIPNAME( 0x01, 0x01, "Freeze Screen" ) PORT_DIPLOCATION("SW1: 2")
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_SERVICE_DIPLOC(0x02, 0x02, "SW1: 1")
PORT_SERVICE_DIPLOC(0x02, 0x02, "SW1: 1")
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN1 )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN2 )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN3 )

View File

@ -502,17 +502,17 @@ This game runs on hardware called "GORGON". It appears to be similar to
System 23 but the PCBs are slightly larger.
The system comprises Main PCB, ROM PCB and I/O PCB all located inside
a metal box with 3 separate power supplies for 5V, 12V and 3.3V. Main
a metal box with 3 separate power supplies for 5V, 12V and 3.3V. Main
input power is 115V.
The game is controlled by rotating a paddle (for thrust) and turning it
sideways (moves left/right).
The rotation action is done with a 5K potentiometer whereby the thrust
The rotation action is done with a 5K potentiometer whereby the thrust
is achieved by moving the pot from full left to full right continuously.
The left/right turning movement is just another 5K potentiometer connected
to the column of the paddle center shaft.
There are also some buttons just for test mode, including SELECT, UP & DOWN
The player's seat has movement controlled by a compressor and several
potentiometers. On bootup, the system tests the seat movement and displays
The player's seat has movement controlled by a compressor and several
potentiometers. On bootup, the system tests the seat movement and displays
a warning if it's not working. Pressing START allows the game to continue
and function normally without the seat movement.
@ -583,7 +583,7 @@ Notes:
J4/J5/J6 \
J8/J9 / Custom NAMCO connectors for connection of MEM(M1) PCB
J10 - Custom NAMCO connector for MSPM(FR) PCB
Namco Custom ICs
----------------
@ -687,7 +687,7 @@ Notes:
JP5 | Jumpers to set ROM sizes (32M/64M)
JP6/JP7 |
JP8/JP9 /
ROMs
----
PT* - Point ROMs, sizes configurable to either 16M or 32M (SOP44)
@ -696,11 +696,11 @@ Notes:
CCR* - Texture Tilemap ROMs, sizes fixed at 16M (SOP44)
SPR* - Sprite ROMs, sizes configurable to either 32M or 64M (SOP44)
WAVE*- Wave ROMs, sizes configurable to either 32M or 64M (SOP44)
I/O PCB
-------
V187 ASCA-2A PCB
V187 ASCA-2A PCB
2477960102 (2477970102)
|--------------------------------------------------------|
| J105 |
@ -873,7 +873,7 @@ static VIDEO_UPDATE( ss23 )
tilemap_mark_all_tiles_dirty(bgtilemap);
tilemap_draw( bitmap, cliprect, bgtilemap, 0/*flags*/, 0/*priority*/ ); /* opaque */
#if 0
static int bNew = 1;
static int code = 0x80;
@ -1379,27 +1379,27 @@ MACHINE_DRIVER_END
ROM_START( rapidrvr )
ROM_REGION32_BE( 0x400000, "user1", 0 ) /* 4 megs for main R4650 code */
ROM_LOAD16_BYTE( "rd3verc.ic2", 0x000000, 0x200000, CRC(c15c0f30) SHA1(9f529232818f3e184f81f62408a5cad615b05613) )
ROM_LOAD16_BYTE( "rd3verc.ic1", 0x000001, 0x200000, CRC(9d7f4411) SHA1(d049efaa539d36ed0f73ca3f50a8f7112e67f865) )
ROM_LOAD16_BYTE( "rd3verc.ic2", 0x000000, 0x200000, CRC(c15c0f30) SHA1(9f529232818f3e184f81f62408a5cad615b05613) )
ROM_LOAD16_BYTE( "rd3verc.ic1", 0x000001, 0x200000, CRC(9d7f4411) SHA1(d049efaa539d36ed0f73ca3f50a8f7112e67f865) )
ROM_REGION( 0x80000, "audio", 0 ) /* Hitachi H8/3002 MCU code */
ROM_LOAD16_WORD_SWAP( "rd3verc.ic3", 0x000000, 0x080000, CRC(6e26fbaf) SHA1(4ab6637d22f0d26f7e1d10e9c80059c56f64303d) )
ROM_LOAD16_WORD_SWAP( "rd3verc.ic3", 0x000000, 0x080000, CRC(6e26fbaf) SHA1(4ab6637d22f0d26f7e1d10e9c80059c56f64303d) )
ROM_REGION( 0x800000, "sprite", 0 ) /* sprite? tilemap? tiles */
ROM_LOAD16_BYTE( "rd1mtal.1j", 0x000000, 0x400000, CRC(8f0efa86) SHA1(9953461c258f2a96be275a7b18d6518ddfac3860) )
ROM_LOAD16_BYTE( "rd1mtah.3j", 0x000001, 0x400000, CRC(d8fa0f3d) SHA1(0d5bdb3a2e7be1dffe11b74baa2c10bfe011ae92) )
ROM_LOAD16_BYTE( "rd1mtal.1j", 0x000000, 0x400000, CRC(8f0efa86) SHA1(9953461c258f2a96be275a7b18d6518ddfac3860) )
ROM_LOAD16_BYTE( "rd1mtah.3j", 0x000001, 0x400000, CRC(d8fa0f3d) SHA1(0d5bdb3a2e7be1dffe11b74baa2c10bfe011ae92) )
ROM_REGION( 0x2000000, "textile", 0 ) /* texture tiles */
ROM_LOAD( "rd1cguu.5b", 0x0000000, 0x800000, CRC(611bab41) SHA1(84cddb2b63bf8336e92aecb06eddf1b34af73540) )
ROM_LOAD( "rd1cguu.5b", 0x0000000, 0x800000, CRC(611bab41) SHA1(84cddb2b63bf8336e92aecb06eddf1b34af73540) )
ROM_LOAD( "rd1cgum.6b", 0x0800000, 0x800000, CRC(c50de2ef) SHA1(24758a72b3569ce6a643a5786fce7c34b8aa692d) )
ROM_LOAD( "rd1cgll.8b", 0x1000000, 0x800000, CRC(b58b92ac) SHA1(70ee6e0e5347e05817aa30d53d766b8ce0fc44e4) )
ROM_LOAD( "rd1cglm.7b", 0x1800000, 0x800000, CRC(447067fa) SHA1(e2052373773594feb303e1924a4a820cf34ab55b) )
ROM_LOAD( "rd1cglm.7b", 0x1800000, 0x800000, CRC(447067fa) SHA1(e2052373773594feb303e1924a4a820cf34ab55b) )
ROM_REGION( 0x2000000, "textile2", 0 ) /* texture tiles bank 2? */
ROM_LOAD( "rd1spruu.9p", 0x0000000, 0x400000, CRC(f20a9673) SHA1(e5f1d552b0c42e102593ab578ff0b9ff814f8650) )
ROM_LOAD( "rd1sprum.10p", 0x0800000, 0x400000, CRC(8e08b2c6) SHA1(a17331a4e41f677f604d1b74e7694cf920b03b66) )
ROM_LOAD( "rd1sprum.10p", 0x0800000, 0x400000, CRC(8e08b2c6) SHA1(a17331a4e41f677f604d1b74e7694cf920b03b66) )
ROM_LOAD( "rd1sprll.12t", 0x1000000, 0x400000, CRC(8d450259) SHA1(27cccd1e7dad8880147bb85185982d8d27076e69) )
ROM_LOAD( "rd1sprlm.11p", 0x1800000, 0x400000, CRC(6c8db3a5) SHA1(24d81fa11e9c835cddadec4cbd530738e258346c) )
ROM_LOAD( "rd1sprlm.11p", 0x1800000, 0x400000, CRC(6c8db3a5) SHA1(24d81fa11e9c835cddadec4cbd530738e258346c) )
ROM_REGION( 0x2000000, "textiledup", 0 ) /* duplicate bank of texture tiles */
ROM_LOAD( "rd1cguu.5f", 0x0800000, 0x800000, CRC(611bab41) SHA1(84cddb2b63bf8336e92aecb06eddf1b34af73540) )
@ -1409,9 +1409,9 @@ ROM_START( rapidrvr )
ROM_REGION( 0x2000000, "textile2d", 0 ) /* duplicate of texture tiles bank 2? */
ROM_LOAD( "rd1spruu.9t", 0x0000000, 0x400000, CRC(f20a9673) SHA1(e5f1d552b0c42e102593ab578ff0b9ff814f8650) )
ROM_LOAD( "rd1sprum.10t", 0x0800000, 0x400000, CRC(8e08b2c6) SHA1(a17331a4e41f677f604d1b74e7694cf920b03b66) )
ROM_LOAD( "rd1sprum.10t", 0x0800000, 0x400000, CRC(8e08b2c6) SHA1(a17331a4e41f677f604d1b74e7694cf920b03b66) )
ROM_LOAD( "rd1sprll.12p", 0x1000000, 0x400000, CRC(8d450259) SHA1(27cccd1e7dad8880147bb85185982d8d27076e69) )
ROM_LOAD( "rd1sprlm.11t", 0x1800000, 0x400000, CRC(6c8db3a5) SHA1(24d81fa11e9c835cddadec4cbd530738e258346c) )
ROM_LOAD( "rd1sprlm.11t", 0x1800000, 0x400000, CRC(6c8db3a5) SHA1(24d81fa11e9c835cddadec4cbd530738e258346c) )
ROM_REGION( 0x400000, "textilemap", 0 ) /* texture tilemap */
ROM_LOAD( "rd1ccrl.11a", 0x000000, 0x200000, CRC(b0ea2b32) SHA1(0dc45846725b0de619bc6bae69e3eb166ed21bf0) )
@ -1422,15 +1422,15 @@ ROM_START( rapidrvr )
ROM_LOAD( "rd1ccrh.11f", 0x200000, 0x200000, CRC(fafffb86) SHA1(15b0ba0252b99d0cac29fcb374fb895643f528fe) )
ROM_REGION32_LE( 0x2000000, "pointrom", 0 ) /* 3D model data */
ROM_LOAD32_WORD( "rd1pt0l.9j", 0x0000000, 0x400000, CRC(47b1c5a5) SHA1(021d4ca7b8674d8ed5daa701bf41b4a7164d992a) )
ROM_LOAD32_WORD( "rd1pt0h.9l", 0x0000002, 0x400000, CRC(6f280eff) SHA1(9dd8c8903581d7a412146e50f4009e1d2b743f06) )
ROM_LOAD32_WORD( "rd1pt1l.10j", 0x0800000, 0x400000, CRC(91131cb3) SHA1(e42c5e190c719f1cf2d6e91444062ab901be0e73) )
ROM_LOAD32_WORD( "rd1pt1h.10l", 0x0800002, 0x400000, CRC(37bd9bdf) SHA1(b26c284024ea4ad4c67b2eefbfdd5ebb35a0118e) )
ROM_LOAD32_WORD( "rd1pt2l.11j", 0x1000000, 0x400000, CRC(3423ff9f) SHA1(73823c179c866cbb601a23417acbbf5b3dc97213) )
ROM_LOAD32_WORD( "rd1pt2h.11l", 0x1000002, 0x400000, CRC(fa601e83) SHA1(45c420538910f566e75d668306735f54c901669f) )
ROM_LOAD32_WORD( "rd1pt3l.12j", 0x1800000, 0x400000, CRC(7216d63e) SHA1(77088ff05c2630996f4bdc87fe466f9b97611467) )
ROM_LOAD32_WORD( "rd1pt3h.12l", 0x1800002, 0x400000, CRC(e82ff66a) SHA1(9e2c951136b26d969d2c9d030b7e0bad8bbbe3fb) )
ROM_LOAD32_WORD( "rd1pt0l.9j", 0x0000000, 0x400000, CRC(47b1c5a5) SHA1(021d4ca7b8674d8ed5daa701bf41b4a7164d992a) )
ROM_LOAD32_WORD( "rd1pt0h.9l", 0x0000002, 0x400000, CRC(6f280eff) SHA1(9dd8c8903581d7a412146e50f4009e1d2b743f06) )
ROM_LOAD32_WORD( "rd1pt1l.10j", 0x0800000, 0x400000, CRC(91131cb3) SHA1(e42c5e190c719f1cf2d6e91444062ab901be0e73) )
ROM_LOAD32_WORD( "rd1pt1h.10l", 0x0800002, 0x400000, CRC(37bd9bdf) SHA1(b26c284024ea4ad4c67b2eefbfdd5ebb35a0118e) )
ROM_LOAD32_WORD( "rd1pt2l.11j", 0x1000000, 0x400000, CRC(3423ff9f) SHA1(73823c179c866cbb601a23417acbbf5b3dc97213) )
ROM_LOAD32_WORD( "rd1pt2h.11l", 0x1000002, 0x400000, CRC(fa601e83) SHA1(45c420538910f566e75d668306735f54c901669f) )
ROM_LOAD32_WORD( "rd1pt3l.12j", 0x1800000, 0x400000, CRC(7216d63e) SHA1(77088ff05c2630996f4bdc87fe466f9b97611467) )
ROM_LOAD32_WORD( "rd1pt3h.12l", 0x1800002, 0x400000, CRC(e82ff66a) SHA1(9e2c951136b26d969d2c9d030b7e0bad8bbbe3fb) )
ROM_REGION( 0x1000000, "c352", 0 ) /* C352 PCM samples */
ROM_LOAD( "rd1wavel.2s", 0x000000, 0x800000, CRC(bf52c08c) SHA1(6745062e078e520484390fad1f723124aa4076d0) )
ROM_LOAD( "rd1waveh.3s", 0x800000, 0x800000, CRC(ef0136b5) SHA1(a6d923ededca168fe555e0b86a72f53bec5424cc) )

View File

@ -7163,8 +7163,8 @@ static DRIVER_INIT( kf2k3pcb )
neogeo_cmc50_m1_decrypt(machine);
/* extra little swap on the m1 - this must be performed AFTER the m1 decrypt
or the m1 checksum (used to generate the key) for decrypting the m1 is
incorrect */
or the m1 checksum (used to generate the key) for decrypting the m1 is
incorrect */
{
int i;
UINT8* rom = memory_region(machine, "audio");

View File

@ -478,7 +478,7 @@ static INPUT_PORTS_START( system1_generic )
PORT_DIPSETTING( 0xd0, DEF_STR( 1C_3C ) )
PORT_DIPSETTING( 0xc0, DEF_STR( 1C_4C ) )
PORT_DIPSETTING( 0xb0, DEF_STR( 1C_5C ) )
PORT_DIPSETTING( 0xa0, DEF_STR( 1C_6C ) )
PORT_DIPSETTING( 0xa0, DEF_STR( 1C_6C ) )
/* PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) ) Not allowed by mame coinage sorting, but valid */
INPUT_PORTS_END

View File

@ -93,11 +93,11 @@ struct _dkong_state
size_t sprite_ram_size;
/* radar scope */
UINT8 * gfx4;
UINT8 * gfx3;
int gfx3_len;
UINT8 sig30Hz;
UINT8 grid_sig;
UINT8 rflip_sig;

View File

@ -634,7 +634,7 @@ static void computedilated(void)
static void testdrawline(bitmap_t *bitmap, int index, int from, int to)
{
UINT32 *bmpaddr;
int ix, iy, i, inc, x, y, dx, dy, plotx, ploty;
int ix, iy, i, inc, x, y, dx, dy, plotx, ploty;
if ((state_ta.grab[index].showvertices[to].x < 0) || (state_ta.grab[index].showvertices[to].x > 639))
return;
@ -660,7 +660,7 @@ int ix, iy, i, inc, x, y, dx, dy, plotx, ploty;
if (x > inc)
{
x -= inc;
plotx += (dx ? dx/ix : 0);
plotx += (dx ? dx/ix : 0);
bmpaddr = BITMAP_ADDR32(bitmap,ploty,plotx);
*bmpaddr = MAKE_RGB(0, 0, 255);
}

View File

@ -55,17 +55,17 @@ static TIMER_CALLBACK( scanline_callback )
int scanline = param;
/* update the DACs */
if (!(leland_dac_control & 0x01))
leland_dac_update(0, leland_video_ram[(last_scanline) * 256 + 160]);
if (!(leland_dac_control & 0x02))
leland_dac_update(1, leland_video_ram[(last_scanline) * 256 + 161]);
last_scanline = scanline;
scanline = (scanline+1) % 256;
if (scanline == 0)
{
/* turn off the DACs at the start of the frame */
@ -90,7 +90,7 @@ static VIDEO_START( leland )
/* reset videoram */
memset(leland_video_ram, 0, VRAM_SIZE);
/* scanline timer */
scanline_timer = timer_alloc(scanline_callback, NULL);
timer_adjust_oneshot(scanline_timer, video_screen_get_time_until_pos(machine->primary_screen, 0, 0), 0);

View File

@ -903,7 +903,7 @@ VIDEO_START( neogeo )
state_save_register_global(auto_animation_frame_counter);
state_save_register_postload(machine, regenerate_pens, NULL);
region_zoomy = memory_region(machine, "zoomy");
}

View File

@ -2557,7 +2557,7 @@ static void scanline_draw(running_machine *machine, bitmap_t *bitmap, const rect
/*
sprite priority==playfield priority
GSEEKER (plane leaving hangar) --> sprite
GSEEKER (plane leaving hangar) --> sprite
BUBSYMPH (title) ---> sprite
DARIUSG (ZONE V' BOSS) ---> playfield
*/

View File

@ -198,7 +198,7 @@ WRITE16_HANDLER( tx1_bankcs_w )
if ( !(offset & 0x40) )
{
/* TODO: Looks safe to remove this */
// if ( offset & 2 )
// if ( offset & 2 )
tx1_vregs.h_val += tx1_vregs.h_inc;
}
}
@ -455,7 +455,7 @@ static void tx1_draw_road(running_machine *machine, UINT8 *bitmap)
UINT8 hc1_u, hc1_l;
UINT8 hc0_u, hc0_l;
UINT32 bnkls, bnkcs, bnkrs;
UINT32 rl, rc, rr;
@ -590,7 +590,7 @@ static void tx1_draw_road(running_machine *machine, UINT8 *bitmap)
stl = !stlf || v0 || (!v2 && !scchgf) || scchgf;
selb = (!v2 && !scchgf) || v2;
rltmp =
rltmp =
(v2 && !v0 && !va10)
|| (!v2 && v0 && !va10)
|| (v2 && !v0 && !va11)
@ -599,7 +599,7 @@ static void tx1_draw_road(running_machine *machine, UINT8 *bitmap)
|| (!v2 && v1 && !v0)
|| (!v2 && !v1 && v0);
rctmp =
rctmp =
(v2 && !v0 && va9 && va8)
|| (!v2 && v0 && va9 && va8)
|| (v2 && !v0 && !va11)
@ -608,7 +608,7 @@ static void tx1_draw_road(running_machine *machine, UINT8 *bitmap)
|| (!v2 && v1 && !v0)
|| (!v2 && !v1 && v0);
rrtmp =
rrtmp =
(v2 && !v0 && !va11 && !va10)
|| (!v2 && v0 && !va11 && !va10)
|| (v2 && !v0 && va9)
@ -834,8 +834,8 @@ static void tx1_draw_road(running_machine *machine, UINT8 *bitmap)
/* Update bank counter */
bank_cnt = (bank_cnt + 1) & 0x7ff;
}
}
tx1_vregs.h_val += tx1_vregs.h_inc;
/* Finally, increment the bank accumulator */
@ -1073,7 +1073,7 @@ static void tx1_draw_objects(running_machine *machine, UINT8 *bitmap)
else
color = ~ic162[prom_addr] & 0x3f;
// *BITMAP_ADDR16(bitmap, y, x) = machine->pens[TX1_COLORS_OBJ + color];
// *BITMAP_ADDR16(bitmap, y, x) = machine->pens[TX1_COLORS_OBJ + color];
*(bitmap + 768*y + x) = 0x40 | color;
}
}
@ -1378,7 +1378,7 @@ static void buggyboy_draw_char(running_machine *machine, UINT8 *bitmap, int wide
{
UINT32 tilenum;
UINT16 ram_val;
if (wide)
ram_val = buggyboy_vram[((y_offs << 4) & 0xf80) + ((x_offs >> 3) & 0x7f)];
else
@ -2122,11 +2122,11 @@ static void buggyboy_draw_objs(running_machine *machine, UINT8 *bitmap, int wide
UINT32 low_addr = ((x_acc >> (FRAC + 3)) & x_mask);
/*
Objects are grouped by width (either 16, 8 or 4 tiles) in
the LUT ROMs. The ROM address lines therefore indicate
width and are used to determine the correct scan order
when x-flip is set.
*/
Objects are grouped by width (either 16, 8 or 4 tiles) in
the LUT ROMs. The ROM address lines therefore indicate
width and are used to determine the correct scan order
when x-flip is set.
*/
if (gxflip)
{
UINT32 xor_mask;
@ -2455,7 +2455,7 @@ VIDEO_UPDATE( buggyboy )
memset(bb_obj_bmp, 0, 768*240);
buggyboy_draw_char(screen->machine, bb_chr_bmp, 1);
// buggyboy_draw_road(screen->machine, bb_rod_bmp, 1);
// buggyboy_draw_road(screen->machine, bb_rod_bmp, 1);
buggyboy_draw_objs(screen->machine, bb_obj_bmp, 1);
bb_combine_layers(screen->machine, bitmap, 0);

View File

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