Cleanups and version bump.

This commit is contained in:
Aaron Giles 2009-08-13 05:56:25 +00:00
parent 55480e3ce9
commit e3f1f454f8
36 changed files with 519 additions and 519 deletions

View File

@ -3,7 +3,7 @@
* 4004dasm.c * 4004dasm.c
* *
* Intel 4004 CPU Disassembly * Intel 4004 CPU Disassembly
* *
* Initial version by Miodrag Milanovic * Initial version by Miodrag Milanovic
* *
*****************************************************************************/ *****************************************************************************/
@ -18,7 +18,7 @@ CPU_DISASSEMBLE( i4004 )
UINT32 flags = 0; UINT32 flags = 0;
UINT8 op; UINT8 op;
unsigned PC = pc; unsigned PC = pc;
UINT16 page = PC & 0x0f00; UINT16 page = PC & 0x0f00;
switch (op = OP(pc++)) switch (op = OP(pc++))
{ {
case 0x00: sprintf (buffer,"nop"); break; case 0x00: sprintf (buffer,"nop"); break;
@ -26,75 +26,75 @@ CPU_DISASSEMBLE( i4004 )
case 0x12: sprintf (buffer,"jc $%03x",page | ARG(pc)); pc++; break; case 0x12: sprintf (buffer,"jc $%03x",page | ARG(pc)); pc++; break;
case 0x14: sprintf (buffer,"jz $%03x",page | ARG(pc)); pc++; break; case 0x14: sprintf (buffer,"jz $%03x",page | ARG(pc)); pc++; break;
case 0x19: sprintf (buffer,"jt $%03x",page | ARG(pc)); pc++; break; case 0x19: sprintf (buffer,"jt $%03x",page | ARG(pc)); pc++; break;
case 0x1a: sprintf (buffer,"jnc $%03x",page | ARG(pc)); pc++; break; case 0x1a: sprintf (buffer,"jnc $%03x",page | ARG(pc)); pc++; break;
case 0x1c: sprintf (buffer,"jnz $%03x",page | ARG(pc)); pc++; break; case 0x1c: sprintf (buffer,"jnz $%03x",page | ARG(pc)); pc++; break;
case 0x10: case 0x13: case 0x15: case 0x16: case 0x10: case 0x13: case 0x15: case 0x16:
case 0x17: case 0x18: case 0x1b: case 0x1d: case 0x17: case 0x18: case 0x1b: case 0x1d:
case 0x1e: case 0x1f: case 0x1e: case 0x1f:
sprintf (buffer,"jcn $%01x,$%03x",op & 0x0f,page | ARG(pc)); pc++; break; sprintf (buffer,"jcn $%01x,$%03x",op & 0x0f,page | ARG(pc)); pc++; break;
case 0x20: case 0x22: case 0x24: case 0x26: case 0x20: case 0x22: case 0x24: case 0x26:
case 0x28: case 0x2a: case 0x2c: case 0x2e: case 0x28: case 0x2a: case 0x2c: case 0x2e:
sprintf (buffer,"fim $%01x,$%02x",op & 0x0f,OP(pc)); pc++; break; sprintf (buffer,"fim $%01x,$%02x",op & 0x0f,OP(pc)); pc++; break;
case 0x21: case 0x23: case 0x25: case 0x27: case 0x21: case 0x23: case 0x25: case 0x27:
case 0x29: case 0x2b: case 0x2d: case 0x2f: case 0x29: case 0x2b: case 0x2d: case 0x2f:
sprintf (buffer,"src $%01x",(op & 0x0f)-1); break; sprintf (buffer,"src $%01x",(op & 0x0f)-1); break;
case 0x30: case 0x32: case 0x34: case 0x36: case 0x30: case 0x32: case 0x34: case 0x36:
case 0x38: case 0x3a: case 0x3c: case 0x3e: case 0x38: case 0x3a: case 0x3c: case 0x3e:
sprintf (buffer,"fin $%01x",op & 0x0f); break; sprintf (buffer,"fin $%01x",op & 0x0f); break;
case 0x31: case 0x33: case 0x35: case 0x37: case 0x31: case 0x33: case 0x35: case 0x37:
case 0x39: case 0x3b: case 0x3d: case 0x3f: case 0x39: case 0x3b: case 0x3d: case 0x3f:
sprintf (buffer,"jin $%01x",(op & 0x0f)-1); break; sprintf (buffer,"jin $%01x",(op & 0x0f)-1); break;
case 0x40: case 0x41: case 0x42: case 0x43: case 0x40: case 0x41: case 0x42: case 0x43:
case 0x44: case 0x45: case 0x46: case 0x47: case 0x44: case 0x45: case 0x46: case 0x47:
case 0x48: case 0x49: case 0x4a: case 0x4b: case 0x48: case 0x49: case 0x4a: case 0x4b:
case 0x4c: case 0x4d: case 0x4e: case 0x4f: case 0x4c: case 0x4d: case 0x4e: case 0x4f:
sprintf (buffer,"jun $%01x%02x",op & 0x0f,ARG(pc)); pc++; break; sprintf (buffer,"jun $%01x%02x",op & 0x0f,ARG(pc)); pc++; break;
case 0x50: case 0x51: case 0x52: case 0x53: case 0x50: case 0x51: case 0x52: case 0x53:
case 0x54: case 0x55: case 0x56: case 0x57: case 0x54: case 0x55: case 0x56: case 0x57:
case 0x58: case 0x59: case 0x5a: case 0x5b: case 0x58: case 0x59: case 0x5a: case 0x5b:
case 0x5c: case 0x5d: case 0x5e: case 0x5f: case 0x5c: case 0x5d: case 0x5e: case 0x5f:
sprintf (buffer,"jms $%01x%02x",op & 0x0f,ARG(pc)); pc++; break; sprintf (buffer,"jms $%01x%02x",op & 0x0f,ARG(pc)); pc++; break;
case 0x60: case 0x61: case 0x62: case 0x63: case 0x60: case 0x61: case 0x62: case 0x63:
case 0x64: case 0x65: case 0x66: case 0x67: case 0x64: case 0x65: case 0x66: case 0x67:
case 0x68: case 0x69: case 0x6a: case 0x6b: case 0x68: case 0x69: case 0x6a: case 0x6b:
case 0x6c: case 0x6d: case 0x6e: case 0x6f: case 0x6c: case 0x6d: case 0x6e: case 0x6f:
sprintf (buffer,"inc $%01x",op & 0x0f); break; sprintf (buffer,"inc $%01x",op & 0x0f); break;
case 0x70: case 0x71: case 0x72: case 0x73: case 0x70: case 0x71: case 0x72: case 0x73:
case 0x74: case 0x75: case 0x76: case 0x77: case 0x74: case 0x75: case 0x76: case 0x77:
case 0x78: case 0x79: case 0x7a: case 0x7b: case 0x78: case 0x79: case 0x7a: case 0x7b:
case 0x7c: case 0x7d: case 0x7e: case 0x7f: case 0x7c: case 0x7d: case 0x7e: case 0x7f:
sprintf (buffer,"isz $%01x,%03x",op & 0x0f,page | ARG(pc)); pc++; break; sprintf (buffer,"isz $%01x,%03x",op & 0x0f,page | ARG(pc)); pc++; break;
case 0x80: case 0x81: case 0x82: case 0x83: case 0x80: case 0x81: case 0x82: case 0x83:
case 0x84: case 0x85: case 0x86: case 0x87: case 0x84: case 0x85: case 0x86: case 0x87:
case 0x88: case 0x89: case 0x8a: case 0x8b: case 0x88: case 0x89: case 0x8a: case 0x8b:
case 0x8c: case 0x8d: case 0x8e: case 0x8f: case 0x8c: case 0x8d: case 0x8e: case 0x8f:
sprintf (buffer,"add $%01x",op & 0x0f); break; sprintf (buffer,"add $%01x",op & 0x0f); break;
case 0x90: case 0x91: case 0x92: case 0x93: case 0x90: case 0x91: case 0x92: case 0x93:
case 0x94: case 0x95: case 0x96: case 0x97: case 0x94: case 0x95: case 0x96: case 0x97:
case 0x98: case 0x99: case 0x9a: case 0x9b: case 0x98: case 0x99: case 0x9a: case 0x9b:
case 0x9c: case 0x9d: case 0x9e: case 0x9f: case 0x9c: case 0x9d: case 0x9e: case 0x9f:
sprintf (buffer,"sub $%01x",op & 0x0f); break; sprintf (buffer,"sub $%01x",op & 0x0f); break;
case 0xa0: case 0xa1: case 0xa2: case 0xa3: case 0xa0: case 0xa1: case 0xa2: case 0xa3:
case 0xa4: case 0xa5: case 0xa6: case 0xa7: case 0xa4: case 0xa5: case 0xa6: case 0xa7:
case 0xa8: case 0xa9: case 0xaa: case 0xab: case 0xa8: case 0xa9: case 0xaa: case 0xab:
case 0xac: case 0xad: case 0xae: case 0xaf: case 0xac: case 0xad: case 0xae: case 0xaf:
sprintf (buffer,"ld $%01x",op & 0x0f); break; sprintf (buffer,"ld $%01x",op & 0x0f); break;
case 0xb0: case 0xb1: case 0xb2: case 0xb3: case 0xb0: case 0xb1: case 0xb2: case 0xb3:
case 0xb4: case 0xb5: case 0xb6: case 0xb7: case 0xb4: case 0xb5: case 0xb6: case 0xb7:
case 0xb8: case 0xb9: case 0xba: case 0xbb: case 0xb8: case 0xb9: case 0xba: case 0xbb:
case 0xbc: case 0xbd: case 0xbe: case 0xbf: case 0xbc: case 0xbd: case 0xbe: case 0xbf:
sprintf (buffer,"xch $%01x",op & 0x0f); break; sprintf (buffer,"xch $%01x",op & 0x0f); break;
case 0xc0: case 0xc1: case 0xc2: case 0xc3: case 0xc0: case 0xc1: case 0xc2: case 0xc3:
case 0xc4: case 0xc5: case 0xc6: case 0xc7: case 0xc4: case 0xc5: case 0xc6: case 0xc7:
case 0xc8: case 0xc9: case 0xca: case 0xcb: case 0xc8: case 0xc9: case 0xca: case 0xcb:
case 0xcc: case 0xcd: case 0xce: case 0xcf: case 0xcc: case 0xcd: case 0xce: case 0xcf:
sprintf (buffer,"bbl $%01x",op & 0x0f); break; sprintf (buffer,"bbl $%01x",op & 0x0f); break;
case 0xd0: case 0xd1: case 0xd2: case 0xd3: case 0xd0: case 0xd1: case 0xd2: case 0xd3:
case 0xd4: case 0xd5: case 0xd6: case 0xd7: case 0xd4: case 0xd5: case 0xd6: case 0xd7:
case 0xd8: case 0xd9: case 0xda: case 0xdb: case 0xd8: case 0xd9: case 0xda: case 0xdb:
case 0xdc: case 0xdd: case 0xde: case 0xdf: case 0xdc: case 0xdd: case 0xde: case 0xdf:
sprintf (buffer,"ldm $%01x",op & 0x0f); break; sprintf (buffer,"ldm $%01x",op & 0x0f); break;
case 0xe0: sprintf (buffer,"wrm"); break; case 0xe0: sprintf (buffer,"wrm"); break;
case 0xe1: sprintf (buffer,"wmp"); break; case 0xe1: sprintf (buffer,"wmp"); break;
case 0xe2: sprintf (buffer,"wrr"); break; case 0xe2: sprintf (buffer,"wrr"); break;
@ -111,7 +111,7 @@ CPU_DISASSEMBLE( i4004 )
case 0xed: sprintf (buffer,"rd1"); break; case 0xed: sprintf (buffer,"rd1"); break;
case 0xee: sprintf (buffer,"rd2"); break; case 0xee: sprintf (buffer,"rd2"); break;
case 0xef: sprintf (buffer,"rd3"); break; case 0xef: sprintf (buffer,"rd3"); break;
case 0xf0: sprintf (buffer,"clb"); break; case 0xf0: sprintf (buffer,"clb"); break;
case 0xf1: sprintf (buffer,"clc"); break; case 0xf1: sprintf (buffer,"clc"); break;
case 0xf2: sprintf (buffer,"iac"); break; case 0xf2: sprintf (buffer,"iac"); break;

View File

@ -2,8 +2,8 @@
* *
* i4004.c * i4004.c
* *
* Intel 4004 CPU * Intel 4004 CPU
* *
* Initial version by Miodrag Milanovic * Initial version by Miodrag Milanovic
* *
*****************************************************************************/ *****************************************************************************/
@ -57,7 +57,7 @@ static const cpu_state_entry state_array[] =
{ {
I4004_STATE_ENTRY(PC, "%03X", PC.w.l, 0x0fff, 0) I4004_STATE_ENTRY(PC, "%03X", PC.w.l, 0x0fff, 0)
I4004_STATE_ENTRY(GENPC,"%03X", PC.w.l, 0x0fff, CPUSTATE_NOSHOW) I4004_STATE_ENTRY(GENPC,"%03X", PC.w.l, 0x0fff, CPUSTATE_NOSHOW)
I4004_STATE_ENTRY(A, "%01X", A, 0x0f, 0) I4004_STATE_ENTRY(A, "%01X", A, 0x0f, 0)
I4004_STATE_ENTRY(R01, "%02X", R[0], 0xff, 0) I4004_STATE_ENTRY(R01, "%02X", R[0], 0xff, 0)
I4004_STATE_ENTRY(R23, "%02X", R[1], 0xff, 0) I4004_STATE_ENTRY(R23, "%02X", R[1], 0xff, 0)
I4004_STATE_ENTRY(R45, "%02X", R[2], 0xff, 0) I4004_STATE_ENTRY(R45, "%02X", R[2], 0xff, 0)
@ -164,7 +164,7 @@ INLINE UINT8 GET_REG(i4004_state *cpustate, UINT8 num)
{ {
UINT8 r = cpustate->R[num>>1]; UINT8 r = cpustate->R[num>>1];
if (num & 1) { if (num & 1) {
return r & 0x0f; return r & 0x0f;
} else { } else {
return (r >> 4) & 0x0f; return (r >> 4) & 0x0f;
} }
@ -187,7 +187,7 @@ INLINE void PUSH_STACK(i4004_state *cpustate)
INLINE void POP_STACK(i4004_state *cpustate) INLINE void POP_STACK(i4004_state *cpustate)
{ {
cpustate->ADDR[cpustate->pc_pos].d = 0; cpustate->ADDR[cpustate->pc_pos].d = 0;
cpustate->pc_pos = (cpustate->pc_pos - 1) & cpustate->addr_mask; cpustate->pc_pos = (cpustate->pc_pos - 1) & cpustate->addr_mask;
} }
void i4004_set_test(const device_config *device, UINT8 val) void i4004_set_test(const device_config *device, UINT8 val)
@ -202,91 +202,91 @@ static void execute_one(i4004_state *cpustate, int opcode)
switch (opcode) switch (opcode)
{ {
case 0x00: /* NOP */ case 0x00: /* NOP */
/* no op */ /* no op */
break; break;
case 0x10: case 0x11: case 0x12: case 0x13: case 0x10: case 0x11: case 0x12: case 0x13:
case 0x14: case 0x15: case 0x16: case 0x17: case 0x14: case 0x15: case 0x16: case 0x17:
case 0x18: case 0x19: case 0x1a: case 0x1b: case 0x18: case 0x19: case 0x1a: case 0x1b:
case 0x1c: case 0x1d: case 0x1e: case 0x1f: /* JCN */ case 0x1c: case 0x1d: case 0x1e: case 0x1f: /* JCN */
{ {
UINT8 arg = ARG(cpustate); UINT8 arg = ARG(cpustate);
UINT8 C1 = BIT(opcode,3); UINT8 C1 = BIT(opcode,3);
UINT8 C2 = BIT(opcode,2); UINT8 C2 = BIT(opcode,2);
UINT8 C3 = BIT(opcode,1); UINT8 C3 = BIT(opcode,1);
UINT8 C4 = BIT(opcode,0); UINT8 C4 = BIT(opcode,0);
UINT8 JUMP = (((cpustate->A == 0) ? 1 : 0) & C2) | ((cpustate->C) & C3) | ((cpustate->TEST ^ 1) & C4); UINT8 JUMP = (((cpustate->A == 0) ? 1 : 0) & C2) | ((cpustate->C) & C3) | ((cpustate->TEST ^ 1) & C4);
cpustate->icount -= 8; cpustate->icount -= 8;
if(((C1 ^ 1) & JUMP) | (C1 & (JUMP ^ 1))) { if(((C1 ^ 1) & JUMP) | (C1 & (JUMP ^ 1))) {
GET_PC.w.l = (GET_PC.w.l & 0x0f00) | arg; GET_PC.w.l = (GET_PC.w.l & 0x0f00) | arg;
cpustate->PC = GET_PC; cpustate->PC = GET_PC;
} }
} }
break; break;
case 0x20: case 0x22: case 0x24: case 0x26: case 0x20: case 0x22: case 0x24: case 0x26:
case 0x28: case 0x2a: case 0x2c: case 0x2e: /* FIM */ case 0x28: case 0x2a: case 0x2c: case 0x2e: /* FIM */
cpustate->icount -= 8; cpustate->icount -= 8;
cpustate->R[(opcode & 0x0f)>>1] = ROP(cpustate); cpustate->R[(opcode & 0x0f)>>1] = ROP(cpustate);
break; break;
case 0x21: case 0x23: case 0x25: case 0x27: case 0x21: case 0x23: case 0x25: case 0x27:
case 0x29: case 0x2b: case 0x2d: case 0x2f: /* SRC */ case 0x29: case 0x2b: case 0x2d: case 0x2f: /* SRC */
cpustate->RAM.b.l = cpustate->R[(opcode & 0x0f)>>1]; cpustate->RAM.b.l = cpustate->R[(opcode & 0x0f)>>1];
break; break;
case 0x30: case 0x32: case 0x34: case 0x36: case 0x30: case 0x32: case 0x34: case 0x36:
case 0x38: case 0x3a: case 0x3c: case 0x3e: /* FIN */ case 0x38: case 0x3a: case 0x3c: case 0x3e: /* FIN */
cpustate->icount -= 8; cpustate->icount -= 8;
cpustate->R[(opcode & 0x0f)>>1] = READ_ROM(cpustate); cpustate->R[(opcode & 0x0f)>>1] = READ_ROM(cpustate);
break; break;
case 0x31: case 0x33: case 0x35: case 0x37: case 0x31: case 0x33: case 0x35: case 0x37:
case 0x39: case 0x3b: case 0x3d: case 0x3f: /* JIN */ case 0x39: case 0x3b: case 0x3d: case 0x3f: /* JIN */
GET_PC.w.l = (GET_PC.w.l & 0x0f00) | cpustate->R[(opcode & 0x0f)>>1]; GET_PC.w.l = (GET_PC.w.l & 0x0f00) | cpustate->R[(opcode & 0x0f)>>1];
cpustate->PC = GET_PC; cpustate->PC = GET_PC;
break; break;
case 0x40: case 0x41: case 0x42: case 0x43: case 0x40: case 0x41: case 0x42: case 0x43:
case 0x44: case 0x45: case 0x46: case 0x47: case 0x44: case 0x45: case 0x46: case 0x47:
case 0x48: case 0x49: case 0x4a: case 0x4b: case 0x48: case 0x49: case 0x4a: case 0x4b:
case 0x4c: case 0x4d: case 0x4e: case 0x4f: /* JUN */ case 0x4c: case 0x4d: case 0x4e: case 0x4f: /* JUN */
cpustate->icount -= 8; cpustate->icount -= 8;
GET_PC.w.l = ((opcode & 0x0f) << 8) | ARG(cpustate); GET_PC.w.l = ((opcode & 0x0f) << 8) | ARG(cpustate);
cpustate->PC = GET_PC; cpustate->PC = GET_PC;
break; break;
case 0x50: case 0x51: case 0x52: case 0x53: case 0x50: case 0x51: case 0x52: case 0x53:
case 0x54: case 0x55: case 0x56: case 0x57: case 0x54: case 0x55: case 0x56: case 0x57:
case 0x58: case 0x59: case 0x5a: case 0x5b: case 0x58: case 0x59: case 0x5a: case 0x5b:
case 0x5c: case 0x5d: case 0x5e: case 0x5f: /* JMS */ case 0x5c: case 0x5d: case 0x5e: case 0x5f: /* JMS */
{ {
UINT16 newPC = ((opcode & 0x0f) << 8) | ARG(cpustate); UINT16 newPC = ((opcode & 0x0f) << 8) | ARG(cpustate);
cpustate->icount -= 8; cpustate->icount -= 8;
PUSH_STACK(cpustate); PUSH_STACK(cpustate);
GET_PC.w.l = newPC; GET_PC.w.l = newPC;
cpustate->PC = GET_PC; cpustate->PC = GET_PC;
} }
break; break;
case 0x60: case 0x61: case 0x62: case 0x63: case 0x60: case 0x61: case 0x62: case 0x63:
case 0x64: case 0x65: case 0x66: case 0x67: case 0x64: case 0x65: case 0x66: case 0x67:
case 0x68: case 0x69: case 0x6a: case 0x6b: case 0x68: case 0x69: case 0x6a: case 0x6b:
case 0x6c: case 0x6d: case 0x6e: case 0x6f: /* INC */ case 0x6c: case 0x6d: case 0x6e: case 0x6f: /* INC */
SET_REG(cpustate, opcode & 0x0f, GET_REG(cpustate, opcode & 0x0f) + 1); SET_REG(cpustate, opcode & 0x0f, GET_REG(cpustate, opcode & 0x0f) + 1);
break; break;
case 0x70: case 0x71: case 0x72: case 0x73: case 0x70: case 0x71: case 0x72: case 0x73:
case 0x74: case 0x75: case 0x76: case 0x77: case 0x74: case 0x75: case 0x76: case 0x77:
case 0x78: case 0x79: case 0x7a: case 0x7b: case 0x78: case 0x79: case 0x7a: case 0x7b:
case 0x7c: case 0x7d: case 0x7e: case 0x7f: /* ISZ */ case 0x7c: case 0x7d: case 0x7e: case 0x7f: /* ISZ */
{ {
UINT8 val = (GET_REG(cpustate, opcode & 0x0f) + 1) & 0xf; UINT8 val = (GET_REG(cpustate, opcode & 0x0f) + 1) & 0xf;
UINT16 addr = ARG(cpustate); UINT16 addr = ARG(cpustate);
cpustate->icount -= 8; cpustate->icount -= 8;
SET_REG(cpustate, opcode & 0x0f, val); SET_REG(cpustate, opcode & 0x0f, val);
if (val!=0) { if (val!=0) {
GET_PC.w.l = (GET_PC.w.l & 0x0f00) | addr; GET_PC.w.l = (GET_PC.w.l & 0x0f00) | addr;
} }
cpustate->PC = GET_PC; cpustate->PC = GET_PC;
} }
break; break;
case 0x80: case 0x81: case 0x82: case 0x83: case 0x80: case 0x81: case 0x82: case 0x83:
case 0x84: case 0x85: case 0x86: case 0x87: case 0x84: case 0x85: case 0x86: case 0x87:
case 0x88: case 0x89: case 0x8a: case 0x8b: case 0x88: case 0x89: case 0x8a: case 0x8b:
case 0x8c: case 0x8d: case 0x8e: case 0x8f: /* ADD */ case 0x8c: case 0x8d: case 0x8e: case 0x8f: /* ADD */
{ {
UINT8 acc = cpustate->A + GET_REG(cpustate, opcode & 0x0f) + cpustate->C; UINT8 acc = cpustate->A + GET_REG(cpustate, opcode & 0x0f) + cpustate->C;
@ -294,47 +294,47 @@ static void execute_one(i4004_state *cpustate, int opcode)
cpustate->C = (acc >> 4) & 1; cpustate->C = (acc >> 4) & 1;
} }
break; break;
case 0x90: case 0x91: case 0x92: case 0x93: case 0x90: case 0x91: case 0x92: case 0x93:
case 0x94: case 0x95: case 0x96: case 0x97: case 0x94: case 0x95: case 0x96: case 0x97:
case 0x98: case 0x99: case 0x9a: case 0x9b: case 0x98: case 0x99: case 0x9a: case 0x9b:
case 0x9c: case 0x9d: case 0x9e: case 0x9f: /* SUB */ case 0x9c: case 0x9d: case 0x9e: case 0x9f: /* SUB */
{ {
UINT8 acc = cpustate->A + (GET_REG(cpustate, opcode & 0x0f) ^ 0x0f) + (cpustate->C ^ 1); UINT8 acc = cpustate->A + (GET_REG(cpustate, opcode & 0x0f) ^ 0x0f) + (cpustate->C ^ 1);
cpustate->A = acc & 0x0f; cpustate->A = acc & 0x0f;
cpustate->C = (acc >> 4) & 1; cpustate->C = (acc >> 4) & 1;
} }
break; break;
case 0xa0: case 0xa1: case 0xa2: case 0xa3: case 0xa0: case 0xa1: case 0xa2: case 0xa3:
case 0xa4: case 0xa5: case 0xa6: case 0xa7: case 0xa4: case 0xa5: case 0xa6: case 0xa7:
case 0xa8: case 0xa9: case 0xaa: case 0xab: case 0xa8: case 0xa9: case 0xaa: case 0xab:
case 0xac: case 0xad: case 0xae: case 0xaf: /* LD */ case 0xac: case 0xad: case 0xae: case 0xaf: /* LD */
cpustate->A = GET_REG(cpustate, opcode & 0x0f); cpustate->A = GET_REG(cpustate, opcode & 0x0f);
break; break;
case 0xb0: case 0xb1: case 0xb2: case 0xb3: case 0xb0: case 0xb1: case 0xb2: case 0xb3:
case 0xb4: case 0xb5: case 0xb6: case 0xb7: case 0xb4: case 0xb5: case 0xb6: case 0xb7:
case 0xb8: case 0xb9: case 0xba: case 0xbb: case 0xb8: case 0xb9: case 0xba: case 0xbb:
case 0xbc: case 0xbd: case 0xbe: case 0xbf: /* XCH */ case 0xbc: case 0xbd: case 0xbe: case 0xbf: /* XCH */
{ {
UINT8 temp = cpustate->A; UINT8 temp = cpustate->A;
cpustate->A = GET_REG(cpustate, opcode & 0x0f); cpustate->A = GET_REG(cpustate, opcode & 0x0f);
SET_REG(cpustate, opcode & 0x0f, temp); SET_REG(cpustate, opcode & 0x0f, temp);
} }
break; break;
case 0xc0: case 0xc1: case 0xc2: case 0xc3: case 0xc0: case 0xc1: case 0xc2: case 0xc3:
case 0xc4: case 0xc5: case 0xc6: case 0xc7: case 0xc4: case 0xc5: case 0xc6: case 0xc7:
case 0xc8: case 0xc9: case 0xca: case 0xcb: case 0xc8: case 0xc9: case 0xca: case 0xcb:
case 0xcc: case 0xcd: case 0xce: case 0xcf: /* BBL */ case 0xcc: case 0xcd: case 0xce: case 0xcf: /* BBL */
POP_STACK(cpustate); POP_STACK(cpustate);
cpustate->A = opcode & 0x0f; cpustate->A = opcode & 0x0f;
cpustate->PC = GET_PC; cpustate->PC = GET_PC;
break; break;
case 0xd0: case 0xd1: case 0xd2: case 0xd3: case 0xd0: case 0xd1: case 0xd2: case 0xd3:
case 0xd4: case 0xd5: case 0xd6: case 0xd7: case 0xd4: case 0xd5: case 0xd6: case 0xd7:
case 0xd8: case 0xd9: case 0xda: case 0xdb: case 0xd8: case 0xd9: case 0xda: case 0xdb:
case 0xdc: case 0xdd: case 0xde: case 0xdf: /* LDM */ case 0xdc: case 0xdd: case 0xde: case 0xdf: /* LDM */
cpustate->A = opcode & 0x0f; cpustate->A = opcode & 0x0f;
break; break;
case 0xe0: /* WRM */ case 0xe0: /* WRM */
WM(cpustate,cpustate->A); WM(cpustate,cpustate->A);
break; break;
case 0xe1: /* WMP */ case 0xe1: /* WMP */
@ -366,14 +366,14 @@ static void execute_one(i4004_state *cpustate, int opcode)
case 0xe9: /* RDM */ case 0xe9: /* RDM */
cpustate->A = RM(cpustate); cpustate->A = RM(cpustate);
break; break;
case 0xea: /* RDR */ case 0xea: /* RDR */
cpustate->A = RIO(cpustate); cpustate->A = RIO(cpustate);
break; break;
case 0xeb: /* ADM */ case 0xeb: /* ADM */
cpustate->A += RM(cpustate) + cpustate->C; cpustate->A += RM(cpustate) + cpustate->C;
cpustate->C = cpustate->A >> 4; cpustate->C = cpustate->A >> 4;
cpustate->A &= 0x0f; cpustate->A &= 0x0f;
break; break;
case 0xec: /* RD0 */ case 0xec: /* RD0 */
cpustate->A = RMS(cpustate,0); cpustate->A = RMS(cpustate,0);
break; break;
@ -386,16 +386,16 @@ static void execute_one(i4004_state *cpustate, int opcode)
case 0xef: /* RD3 */ case 0xef: /* RD3 */
cpustate->A = RMS(cpustate,3); cpustate->A = RMS(cpustate,3);
break; break;
case 0xf0: /* CLB */ case 0xf0: /* CLB */
cpustate->A = 0; cpustate->A = 0;
cpustate->C = 0; cpustate->C = 0;
break; break;
case 0xf1: /* CLC */ case 0xf1: /* CLC */
cpustate->C = 0; cpustate->C = 0;
break; break;
case 0xf2: /* IAC */ case 0xf2: /* IAC */
cpustate->A = cpustate->A++; cpustate->A = cpustate->A++;
cpustate->C = cpustate->A >> 4; cpustate->C = cpustate->A >> 4;
cpustate->A &= 0x0f; cpustate->A &= 0x0f;
break; break;
@ -424,7 +424,7 @@ static void execute_one(i4004_state *cpustate, int opcode)
case 0xf8: /* DAC */ case 0xf8: /* DAC */
cpustate->A = cpustate->A + 0x0f; cpustate->A = cpustate->A + 0x0f;
cpustate->C = cpustate->A >> 4; cpustate->C = cpustate->A >> 4;
cpustate->A &= 0x0f; cpustate->A &= 0x0f;
break; break;
case 0xf9: /* TCS */ case 0xf9: /* TCS */
cpustate->A = cpustate->C ? 10 : 9; cpustate->A = cpustate->C ? 10 : 9;
@ -481,20 +481,20 @@ static CPU_EXECUTE( i4004 )
static CPU_INIT( i4004 ) static CPU_INIT( i4004 )
{ {
i4004_state *cpustate = get_safe_token(device); i4004_state *cpustate = get_safe_token(device);
/* set up the state table */ /* set up the state table */
cpustate->state = state_table_template; cpustate->state = state_table_template;
cpustate->state.baseptr = cpustate; cpustate->state.baseptr = cpustate;
cpustate->state.subtypemask = 1; cpustate->state.subtypemask = 1;
cpustate->device = device; cpustate->device = device;
cpustate->program = memory_find_address_space(device, ADDRESS_SPACE_PROGRAM); cpustate->program = memory_find_address_space(device, ADDRESS_SPACE_PROGRAM);
cpustate->data = memory_find_address_space(device, ADDRESS_SPACE_DATA); cpustate->data = memory_find_address_space(device, ADDRESS_SPACE_DATA);
cpustate->io = memory_find_address_space(device, ADDRESS_SPACE_IO); cpustate->io = memory_find_address_space(device, ADDRESS_SPACE_IO);
state_save_register_device_item(device, 0, cpustate->PC); state_save_register_device_item(device, 0, cpustate->PC);
state_save_register_device_item(device, 0, cpustate->A); state_save_register_device_item(device, 0, cpustate->A);
state_save_register_device_item(device, 0, cpustate->C); state_save_register_device_item(device, 0, cpustate->C);
state_save_register_device_item(device, 0, cpustate->TEST); state_save_register_device_item(device, 0, cpustate->TEST);
state_save_register_device_item(device, 0, cpustate->pc_pos); state_save_register_device_item(device, 0, cpustate->pc_pos);
@ -509,8 +509,8 @@ static CPU_INIT( i4004 )
state_save_register_device_item(device, 0, cpustate->R[4]); state_save_register_device_item(device, 0, cpustate->R[4]);
state_save_register_device_item(device, 0, cpustate->R[5]); state_save_register_device_item(device, 0, cpustate->R[5]);
state_save_register_device_item(device, 0, cpustate->R[6]); state_save_register_device_item(device, 0, cpustate->R[6]);
state_save_register_device_item(device, 0, cpustate->R[7]); state_save_register_device_item(device, 0, cpustate->R[7]);
state_save_register_device_item(device, 0, cpustate->RAM); state_save_register_device_item(device, 0, cpustate->RAM);
} }
@ -531,7 +531,7 @@ static CPU_RESET( i4004 )
memset(cpustate->ADDR,0,sizeof(cpustate->ADDR)); memset(cpustate->ADDR,0,sizeof(cpustate->ADDR));
cpustate->RAM.d = 0; cpustate->RAM.d = 0;
cpustate->PC = GET_PC; cpustate->PC = GET_PC;
} }

View File

@ -10,13 +10,13 @@
enum enum
{ {
I4004_PC, I4004_PC,
I4004_A, I4004_A,
I4004_R01, I4004_R23, I4004_R45, I4004_R67, I4004_R89, I4004_RAB, I4004_RCD, I4004_REF, I4004_R01, I4004_R23, I4004_R45, I4004_R67, I4004_R89, I4004_RAB, I4004_RCD, I4004_REF,
I4004_ADDR1,I4004_ADDR2,I4004_ADDR3,I4004_ADDR4,I4004_RAM, I4004_ADDR1,I4004_ADDR2,I4004_ADDR3,I4004_ADDR4,I4004_RAM,
I4004_GENPC = REG_GENPC, I4004_GENPC = REG_GENPC,
I4004_GENSP = REG_GENSP, I4004_GENSP = REG_GENSP,
I4004_GENPCBASE = REG_GENPCBASE I4004_GENPCBASE = REG_GENPCBASE
}; };
/*************************************************************************** /***************************************************************************

View File

@ -652,10 +652,10 @@ static void execute_one(i8085_state *cpustate, int opcode)
if ((cpustate->AF.b.l&HF) | ((cpustate->AF.b.h&0xf)>9)) cpustate->XX.b.h+=6; if ((cpustate->AF.b.l&HF) | ((cpustate->AF.b.h&0xf)>9)) cpustate->XX.b.h+=6;
if ((cpustate->AF.b.l&CF) | (cpustate->AF.b.h>0x99)) cpustate->XX.b.h+=0x60; if ((cpustate->AF.b.l&CF) | (cpustate->AF.b.h>0x99)) cpustate->XX.b.h+=0x60;
} }
cpustate->AF.b.l=(cpustate->AF.b.l&3) | (cpustate->AF.b.h&0x28) | (cpustate->AF.b.h>0x99) | ((cpustate->AF.b.h^cpustate->XX.b.h)&0x10) | ZSP[cpustate->XX.b.h]; cpustate->AF.b.l=(cpustate->AF.b.l&3) | (cpustate->AF.b.h&0x28) | (cpustate->AF.b.h>0x99) | ((cpustate->AF.b.h^cpustate->XX.b.h)&0x10) | ZSP[cpustate->XX.b.h];
cpustate->AF.b.h=cpustate->XX.b.h; cpustate->AF.b.h=cpustate->XX.b.h;
if (IS_8080(cpustate)) if (IS_8080(cpustate))
{ {
cpustate->AF.b.l &= 0xd5; // Ignore not used flags cpustate->AF.b.l &= 0xd5; // Ignore not used flags

View File

@ -142,10 +142,10 @@ static int8 apu_square(nesapu_state *info, square_t *chan)
int8 output; int8 output;
/* reg0: 0-3=volume, 4=envelope, 5=hold, 6-7=duty cycle /* reg0: 0-3=volume, 4=envelope, 5=hold, 6-7=duty cycle
** reg1: 0-2=sweep shifts, 3=sweep inc/dec, 4-6=sweep length, 7=sweep on ** reg1: 0-2=sweep shifts, 3=sweep inc/dec, 4-6=sweep length, 7=sweep on
** reg2: 8 bits of freq ** reg2: 8 bits of freq
** reg3: 0-2=high freq, 7-4=vbl length counter ** reg3: 0-2=high freq, 7-4=vbl length counter
*/ */
if (FALSE == chan->enabled) if (FALSE == chan->enabled)
return 0; return 0;
@ -215,9 +215,9 @@ static int8 apu_triangle(nesapu_state *info, triangle_t *chan)
int freq; int freq;
int8 output; int8 output;
/* reg0: 7=holdnote, 6-0=linear length counter /* reg0: 7=holdnote, 6-0=linear length counter
** reg2: low 8 bits of frequency ** reg2: low 8 bits of frequency
** reg3: 7-3=length counter, 2-0=high 3 bits of frequency ** reg3: 7-3=length counter, 2-0=high 3 bits of frequency
*/ */
if (FALSE == chan->enabled) if (FALSE == chan->enabled)
return 0; return 0;
@ -275,9 +275,9 @@ static int8 apu_noise(nesapu_state *info, noise_t *chan)
uint8 output; uint8 output;
/* reg0: 0-3=volume, 4=envelope, 5=hold /* reg0: 0-3=volume, 4=envelope, 5=hold
** reg2: 7=small(93 byte) sample,3-0=freq lookup ** reg2: 7=small(93 byte) sample,3-0=freq lookup
** reg3: 7-4=vbl length counter ** reg3: 7-4=vbl length counter
*/ */
if (FALSE == chan->enabled) if (FALSE == chan->enabled)
return 0; return 0;
@ -352,10 +352,10 @@ static int8 apu_dpcm(nesapu_state *info, dpcm_t *chan)
int freq, bit_pos; int freq, bit_pos;
/* reg0: 7=irq gen, 6=looping, 3-0=pointer to clock table /* reg0: 7=irq gen, 6=looping, 3-0=pointer to clock table
** reg1: output dc level, 7 bits unsigned ** reg1: output dc level, 7 bits unsigned
** reg2: 8 bits of 64-byte aligned address offset : $C000 + (value * 64) ** reg2: 8 bits of 64-byte aligned address offset : $C000 + (value * 64)
** reg3: length, (value * 16) + 1 ** reg3: length, (value * 16) + 1
*/ */
if (chan->enabled) if (chan->enabled)
{ {
@ -394,10 +394,10 @@ static int8 apu_dpcm(nesapu_state *info, dpcm_t *chan)
} }
if (chan->cur_byte & (1 << bit_pos)) if (chan->cur_byte & (1 << bit_pos))
// chan->regs[1]++; // chan->regs[1]++;
chan->vol+=2; /* FIXED * DPCM channel only uses the upper 6 bits of the DAC */ chan->vol+=2; /* FIXED * DPCM channel only uses the upper 6 bits of the DAC */
else else
// chan->regs[1]--; // chan->regs[1]--;
chan->vol-=2; chan->vol-=2;
} }
} }
@ -473,19 +473,19 @@ INLINE void apu_regwrite(nesapu_state *info,int address, uint8 value)
info->APU.tri.regs[3] = value; info->APU.tri.regs[3] = value;
/* this is somewhat of a hack. there is some latency on the Real /* this is somewhat of a hack. there is some latency on the Real
** Thing between when trireg0 is written to and when the linear ** Thing between when trireg0 is written to and when the linear
** length counter actually begins its countdown. we want to prevent ** length counter actually begins its countdown. we want to prevent
** the case where the program writes to the freq regs first, then ** the case where the program writes to the freq regs first, then
** to reg 0, and the counter accidentally starts running because of ** to reg 0, and the counter accidentally starts running because of
** the sound queue's timestamp processing. ** the sound queue's timestamp processing.
** **
** set to a few NES sample -- should be sufficient ** set to a few NES sample -- should be sufficient
** **
** 3 * (1789772.727 / 44100) = ~122 cycles, just around one scanline ** 3 * (1789772.727 / 44100) = ~122 cycles, just around one scanline
** **
** should be plenty of time for the 6502 code to do a couple of table ** should be plenty of time for the 6502 code to do a couple of table
** dereferences and load up the other triregs ** dereferences and load up the other triregs
*/ */
/* used to be 3, but now we run the clock faster, so base it on samples/sync */ /* used to be 3, but now we run the clock faster, so base it on samples/sync */
info->APU.tri.write_latency = (info->samps_per_sync + 239) / 240; info->APU.tri.write_latency = (info->samps_per_sync + 239) / 240;
@ -548,7 +548,7 @@ INLINE void apu_regwrite(nesapu_state *info,int address, uint8 value)
case APU_IRQCTRL: case APU_IRQCTRL:
if(value & 0x80) if(value & 0x80)
info->APU.step_mode = 5; info->APU.step_mode = 5;
else else
info->APU.step_mode = 4; info->APU.step_mode = 4;
break; break;

View File

@ -6,16 +6,16 @@
driven by one or more output bits driven by one or more output bits
Original author: (unsigned) Original author: (unsigned)
Filtering: Anders Hallström Filtering: Anders Hallstr?m
****************************************************************************/ ****************************************************************************/
/* Discussion of oversampling and anti-alias filtering: (Anders Hallström) /* Discussion of oversampling and anti-alias filtering: (Anders Hallstr?m)
* *
* This driver is for machines that directly control * This driver is for machines that directly control
* one or more simple digital-to-analog converters (DAC) * one or more simple digital-to-analog converters (DAC)
* connected to one or more audio outputs (such as analog amp + speaker). * connected to one or more audio outputs (such as analog amp + speaker).
* Currently only 1-bit DAC is supported via the interface to this module. * Currently only 1-bit DAC is supported via the interface to this module.
* *
* Frequently such machines would oversample the DAC * Frequently such machines would oversample the DAC
* in order to overcome the limited DAC resolution. * in order to overcome the limited DAC resolution.
* For faithful reproduction of the sound, this must be carefully handled * For faithful reproduction of the sound, this must be carefully handled
@ -94,9 +94,9 @@ struct _speaker_state
int level; int level;
/* The volume of a composed sample grows incrementally each time the speaker is over-sampled. /* The volume of a composed sample grows incrementally each time the speaker is over-sampled.
* That is in effect a basic average filter. * That is in effect a basic average filter.
* Another filter can and will be applied to the array of composed samples. * Another filter can and will be applied to the array of composed samples.
*/ */
double composed_volume[FILTER_LENGTH]; /* integrator(s) */ double composed_volume[FILTER_LENGTH]; /* integrator(s) */
int composed_sample_index; /* array index for composed_volume */ int composed_sample_index; /* array index for composed_volume */
attoseconds_t channel_sample_period; /* in as */ attoseconds_t channel_sample_period; /* in as */
@ -159,25 +159,25 @@ static DEVICE_START( speaker )
sp->next_interm_sample_time = attotime_add_attoseconds(sp->channel_last_sample_time, sp->interm_sample_period); sp->next_interm_sample_time = attotime_add_attoseconds(sp->channel_last_sample_time, sp->interm_sample_period);
sp->interm_sample_index = 0; sp->interm_sample_index = 0;
/* Note: To avoid time drift due to floating point inaccuracies, /* Note: To avoid time drift due to floating point inaccuracies,
* it is good if the speaker time synchronizes itself with the stream timing regularly. * it is good if the speaker time synchronizes itself with the stream timing regularly.
*/ */
/* Compute filter kernel; */ /* Compute filter kernel; */
/* (Done for each device though the data is shared... /* (Done for each device though the data is shared...
* No problem really, but should be done as part of system init if I knew how) * No problem really, but should be done as part of system init if I knew how)
*/ */
#if 1 #if 1
/* This is an approximated sinc (a perfect sinc makes an ideal low-pass filter). /* This is an approximated sinc (a perfect sinc makes an ideal low-pass filter).
* FILTER_STEP determines the cutoff frequency, * FILTER_STEP determines the cutoff frequency,
* which should be below the Nyquist freq, i.e. half the sample rate. * which should be below the Nyquist freq, i.e. half the sample rate.
* Smaller step => kernel extends in time domain => lower cutoff freq * Smaller step => kernel extends in time domain => lower cutoff freq
* In this case, with sinc, filter step PI corresponds to the Nyq. freq. * In this case, with sinc, filter step PI corresponds to the Nyq. freq.
* Since we do not get a perfect filter => must lower the cutoff freq some more. * Since we do not get a perfect filter => must lower the cutoff freq some more.
* For example, step PI/(2*RATE_MULTIPLIER) corresponds to cutoff freq = sample rate / 4; * For example, step PI/(2*RATE_MULTIPLIER) corresponds to cutoff freq = sample rate / 4;
* With -samplerate 48000, cutoff freq is ca 12kHz while the Nyq. freq is 24kHz. * With -samplerate 48000, cutoff freq is ca 12kHz while the Nyq. freq is 24kHz.
* With -samplerate 96000, cutoff freq is ca 24kHz while the Nyq. freq is 48kHz. * With -samplerate 96000, cutoff freq is ca 24kHz while the Nyq. freq is 48kHz.
* For a steeper, more efficient filter, increase FILTER_LENGTH at the expense of CPU usage. * For a steeper, more efficient filter, increase FILTER_LENGTH at the expense of CPU usage.
*/ */
#define FILTER_STEP (M_PI / 2 / RATE_MULTIPLIER) #define FILTER_STEP (M_PI / 2 / RATE_MULTIPLIER)
/* Distribute symmetrically on x axis; center has x=0 if length is odd */ /* Distribute symmetrically on x axis; center has x=0 if length is odd */
for (i = 0, x = (0.5 - FILTER_LENGTH / 2.) * FILTER_STEP; for (i = 0, x = (0.5 - FILTER_LENGTH / 2.) * FILTER_STEP;
@ -191,9 +191,9 @@ static DEVICE_START( speaker )
} }
#else #else
/* Trivial average filter with poor frequency cutoff properties; /* Trivial average filter with poor frequency cutoff properties;
* First zero (frequency where amplification=0) = sample rate / filter length * First zero (frequency where amplification=0) = sample rate / filter length
* Cutoff frequency approx <= first zero / 2 * Cutoff frequency approx <= first zero / 2
*/ */
for (i = 0, i < FILTER_LENGTH; i++) for (i = 0, i < FILTER_LENGTH; i++)
ampl[i] = 1; ampl[i] = 1;
#endif #endif
@ -219,9 +219,9 @@ static STREAM_UPDATE( speaker_sound_update )
sampled_time = attotime_mul(sampled_time, samples); sampled_time = attotime_mul(sampled_time, samples);
/* Note: since the stream is in the process of being updated, /* Note: since the stream is in the process of being updated,
* stream_get_time() will return the time before the update! (MAME 0.130) * stream_get_time() will return the time before the update! (MAME 0.130)
* Avoid using it here in order to avoid a subtle dependence on the stream implementation. * Avoid using it here in order to avoid a subtle dependence on the stream implementation.
*/ */
} }
if (samples-- > 0) if (samples-- > 0)
@ -277,16 +277,16 @@ void speaker_level_w(const device_config *device, int new_level)
return; return;
} }
/* Reaching here means such time has passed since last stream update /* Reaching here means such time has passed since last stream update
* that we can add at least one complete sample to the stream. * that we can add at least one complete sample to the stream.
* The details have to be handled by speaker_sound_update() * The details have to be handled by speaker_sound_update()
*/ */
/* Force streams.c to update sound until this point in time now */ /* Force streams.c to update sound until this point in time now */
stream_update(sp->channel); stream_update(sp->channel);
/* This is redundant because time update has to be done within speaker_sound_update() anyway, /* This is redundant because time update has to be done within speaker_sound_update() anyway,
* however this ensures synchronization between the speaker and stream timing: * however this ensures synchronization between the speaker and stream timing:
*/ */
sp->channel_last_sample_time = stream_get_time(sp->channel); sp->channel_last_sample_time = stream_get_time(sp->channel);
sp->channel_next_sample_time = attotime_add_attoseconds(sp->channel_last_sample_time, sp->channel_sample_period); sp->channel_next_sample_time = attotime_add_attoseconds(sp->channel_last_sample_time, sp->channel_sample_period);
sp->next_interm_sample_time = attotime_add_attoseconds(sp->channel_last_sample_time, sp->interm_sample_period); sp->next_interm_sample_time = attotime_add_attoseconds(sp->channel_last_sample_time, sp->interm_sample_period);
@ -316,9 +316,9 @@ static void update_interm_samples(speaker_state *sp, attotime time, int volume)
init_next_interm_sample(sp); init_next_interm_sample(sp);
} }
/* Depending on status above: /* Depending on status above:
* a) Add latest fraction to unfinished composed sample * a) Add latest fraction to unfinished composed sample
* b) The overshooting fraction of time will start a new composed sample * b) The overshooting fraction of time will start a new composed sample
*/ */
fraction = make_fraction(time, sp->last_update_time, sp->interm_sample_period_secfrac); fraction = make_fraction(time, sp->last_update_time, sp->interm_sample_period_secfrac);
sp->composed_volume[sp->composed_sample_index] += volume * fraction; sp->composed_volume[sp->composed_sample_index] += volume * fraction;
sp->last_update_time = time; sp->last_update_time = time;
@ -357,8 +357,8 @@ static void finalize_interm_sample(speaker_state *sp, int volume)
double fraction; double fraction;
/* Fill the composed sample up if it was incomplete */ /* Fill the composed sample up if it was incomplete */
fraction = make_fraction(sp->next_interm_sample_time, fraction = make_fraction(sp->next_interm_sample_time,
sp->last_update_time, sp->last_update_time,
sp->interm_sample_period_secfrac); sp->interm_sample_period_secfrac);
sp->composed_volume[sp->composed_sample_index] += volume * fraction; sp->composed_volume[sp->composed_sample_index] += volume * fraction;
/* Update time state */ /* Update time state */
@ -395,7 +395,7 @@ static double get_filtered_volume(speaker_state *sp)
double filtered_volume = 0; double filtered_volume = 0;
double ampsum = 0; double ampsum = 0;
int i, c; int i, c;
/* Filter over composed samples (each composed sample is already average filtered) */ /* Filter over composed samples (each composed sample is already average filtered) */
for (i = sp->composed_sample_index + 1, c = 0; c < FILTER_LENGTH; i++, c++) for (i = sp->composed_sample_index + 1, c = 0; c < FILTER_LENGTH; i++, c++)
{ {

View File

@ -592,7 +592,7 @@ MACHINE_DRIVER_END
#define GAL_INP_FS2 NODE_21 /* FS2 9L Q1 */ #define GAL_INP_FS2 NODE_21 /* FS2 9L Q1 */
#define GAL_INP_FS3 NODE_22 /* FS3 9L Q2 */ #define GAL_INP_FS3 NODE_22 /* FS3 9L Q2 */
#define GAL_INP_HIT NODE_23 /* HIT 9L Q3 */ #define GAL_INP_HIT NODE_23 /* HIT 9L Q3 */
//#define GAL_9L_Q4 NODE_24 //#define GAL_9L_Q4 NODE_24
#define GAL_INP_FIRE NODE_25 /* FIRE 9L Q5 */ #define GAL_INP_FIRE NODE_25 /* FIRE 9L Q5 */
#define GAL_INP_VOL1 NODE_26 /* VOL1 9L Q6 */ #define GAL_INP_VOL1 NODE_26 /* VOL1 9L Q6 */
#define GAL_INP_VOL2 NODE_27 /* VOL2 9L Q7 */ #define GAL_INP_VOL2 NODE_27 /* VOL2 9L Q7 */
@ -640,7 +640,7 @@ MACHINE_DRIVER_END
/* The hit sound is too low compared with recordings /* The hit sound is too low compared with recordings
* There may be an issue with the op-amp band filter * There may be an issue with the op-amp band filter
*/ */
#define GAL_R40 (RES_K(2.2)*0.6) /* Volume adjust */ #define GAL_R40 (RES_K(2.2)*0.6) /* Volume adjust */
#define GAL_R41 RES_K(100) #define GAL_R41 RES_K(100)
#define GAL_R43 RES_K(2.2) #define GAL_R43 RES_K(2.2)
#define GAL_R44 RES_K(10) #define GAL_R44 RES_K(10)
@ -678,7 +678,7 @@ MACHINE_DRIVER_END
static const discrete_dac_r1_ladder galaxian_bck_dac = static const discrete_dac_r1_ladder galaxian_bck_dac =
{ {
4, // size of ladder 4, // size of ladder
{GAL_R18, GAL_R17, GAL_R16, GAL_R15, 0,0,0,0}, {GAL_R18, GAL_R17, GAL_R16, GAL_R15, 0,0,0,0},
4.4, // 5V - diode junction (0.6V) 4.4, // 5V - diode junction (0.6V)
GAL_R20, // rBIAS GAL_R20, // rBIAS
GAL_R19, // rGnd GAL_R19, // rGnd
@ -706,7 +706,7 @@ static const discrete_555_desc galaxian_555_fire_vco_desc =
DISC_555_OUT_DC, DISC_555_OUT_DC,
5.0, 5.0,
DEFAULT_555_CHARGE, DEFAULT_555_CHARGE,
1.0 // Logic output 1.0 // Logic output
}; };
static const discrete_mixer_desc galaxian_bck_mixer_desc = static const discrete_mixer_desc galaxian_bck_mixer_desc =
@ -742,7 +742,7 @@ static const discrete_mixer_desc galaxian_mixerpre_desc =
DISC_MIXER_IS_RESISTOR, DISC_MIXER_IS_RESISTOR,
{GAL_R51, 0, GAL_R50, 0, GAL_R34}, /* A, C, C, D */ {GAL_R51, 0, GAL_R50, 0, GAL_R34}, /* A, C, C, D */
{0, GAL_INP_VOL1, 0, GAL_INP_VOL2, 0}, {0, GAL_INP_VOL1, 0, GAL_INP_VOL2, 0},
{0,0,0,0,0}, {0,0,0,0,0},
0, 0, 0, 0,
0, 0,
0, 0,
@ -753,7 +753,7 @@ static const discrete_mixer_desc galaxian_mixer_desc =
DISC_MIXER_IS_RESISTOR, DISC_MIXER_IS_RESISTOR,
{GAL_R34, GAL_R40, GAL_R43}, /* A, C, C, D */ {GAL_R34, GAL_R40, GAL_R43}, /* A, C, C, D */
{0, 0, 0}, {0, 0, 0},
{0,0,GAL_C26}, {0,0,GAL_C26},
0, GAL_R91, 0, GAL_R91,
0, 0,
GAL_C46, GAL_C46,
@ -765,7 +765,7 @@ static const discrete_mixer_desc galaxian_mixer_desc =
DISC_MIXER_IS_RESISTOR, DISC_MIXER_IS_RESISTOR,
{GAL_R51, 0, GAL_R50, 0, GAL_R34, GAL_R40, GAL_R43}, /* A, C, C, D */ {GAL_R51, 0, GAL_R50, 0, GAL_R34, GAL_R40, GAL_R43}, /* A, C, C, D */
{0, GAL_INP_VOL1, 0, GAL_INP_VOL2, 0, 0, 0}, {0, GAL_INP_VOL1, 0, GAL_INP_VOL2, 0, 0, 0},
{0,0,0,0,0,0,GAL_C26}, {0,0,0,0,0,0,GAL_C26},
0, 0*GAL_R91, 0, 0*GAL_R91,
0, 0,
GAL_C46, GAL_C46,
@ -775,9 +775,9 @@ static const discrete_mixer_desc galaxian_mixer_desc =
static const discrete_op_amp_filt_info galaxian_bandpass_desc = static const discrete_op_amp_filt_info galaxian_bandpass_desc =
{ {
GAL_R35, GAL_R36, 0, 0, GAL_R35, GAL_R36, 0, 0,
GAL_R37, GAL_R37,
GAL_C22, GAL_C23, 0, GAL_C22, GAL_C23, 0,
5.0*GAL_R39/(GAL_R38+GAL_R39), 5.0*GAL_R39/(GAL_R38+GAL_R39),
5, 0 5, 0
}; };
@ -787,7 +787,7 @@ static DISCRETE_SOUND_START(galaxian)
/* Input register mapping for galaxian */ /* Input register mapping for galaxian */
/************************************************/ /************************************************/
DISCRETE_INPUT_DATA(GAL_INP_BG_DAC) DISCRETE_INPUT_DATA(GAL_INP_BG_DAC)
/* FS1 to FS3 */ /* FS1 to FS3 */
DISCRETE_INPUT_LOGIC(GAL_INP_FS1) DISCRETE_INPUT_LOGIC(GAL_INP_FS1)
DISCRETE_INPUT_LOGIC(GAL_INP_FS2) DISCRETE_INPUT_LOGIC(GAL_INP_FS2)
@ -795,21 +795,21 @@ static DISCRETE_SOUND_START(galaxian)
/* HIT */ /* HIT */
DISCRETE_INPUTX_DATA(GAL_INP_HIT, TTL_OUT, 0, 0) DISCRETE_INPUTX_DATA(GAL_INP_HIT, TTL_OUT, 0, 0)
/* FIRE */ /* FIRE */
DISCRETE_INPUT_LOGIC(GAL_INP_FIRE) DISCRETE_INPUT_LOGIC(GAL_INP_FIRE)
/* Turns on / off resistors in mixer */ /* Turns on / off resistors in mixer */
DISCRETE_INPUTX_DATA(GAL_INP_VOL1, GAL_R49, 0, 0) DISCRETE_INPUTX_DATA(GAL_INP_VOL1, GAL_R49, 0, 0)
DISCRETE_INPUTX_DATA(GAL_INP_VOL2, GAL_R52, 0, 0) DISCRETE_INPUTX_DATA(GAL_INP_VOL2, GAL_R52, 0, 0)
/* Pitch */ /* Pitch */
DISCRETE_INPUT_DATA(GAL_INP_PITCH_HIGH) DISCRETE_INPUT_DATA(GAL_INP_PITCH_HIGH)
/************************************************/ /************************************************/
/* Background */ /* Background */
/************************************************/ /************************************************/
DISCRETE_DAC_R1(NODE_100, 1, GAL_INP_BG_DAC, TTL_OUT, &galaxian_bck_dac) DISCRETE_DAC_R1(NODE_100, 1, GAL_INP_BG_DAC, TTL_OUT, &galaxian_bck_dac)
DISCRETE_555_CC(NODE_105, 1, NODE_100, GAL_R21, GAL_C15, 0, 0, 0, &galaxian_bck_vco) DISCRETE_555_CC(NODE_105, 1, NODE_100, GAL_R21, GAL_C15, 0, 0, 0, &galaxian_bck_vco)
// Next is mult/add opamp circuit // Next is mult/add opamp circuit
@ -828,9 +828,9 @@ static DISCRETE_SOUND_START(galaxian)
/************************************************/ /************************************************/
/* Needs to be replaced by timer ... */ /* Needs to be replaced by timer ... */
DISCRETE_BITSET(NODE_133, GAL_INP_PITCH_HIGH, 1, TTL_OUT) /* QA 74393 */ DISCRETE_BITSET(NODE_133, GAL_INP_PITCH_HIGH, 1, TTL_OUT) /* QA 74393 */
DISCRETE_BITSET(NODE_134, GAL_INP_PITCH_HIGH, 3, TTL_OUT) /* QC 74393 */ DISCRETE_BITSET(NODE_134, GAL_INP_PITCH_HIGH, 3, TTL_OUT) /* QC 74393 */
DISCRETE_BITSET(NODE_135, GAL_INP_PITCH_HIGH, 4, TTL_OUT) /* QD 74393 */ DISCRETE_BITSET(NODE_135, GAL_INP_PITCH_HIGH, 4, TTL_OUT) /* QD 74393 */
/************************************************/ /************************************************/
/* HIT */ /* HIT */
@ -850,22 +850,22 @@ static DISCRETE_SOUND_START(galaxian)
DISCRETE_MULTIPLY(NODE_156, 1, NODE_152, NODE_155) DISCRETE_MULTIPLY(NODE_156, 1, NODE_152, NODE_155)
DISCRETE_OP_AMP_FILTER(NODE_157, 1, NODE_156, 0, DISC_OP_AMP_FILTER_IS_BAND_PASS_1M, &galaxian_bandpass_desc) DISCRETE_OP_AMP_FILTER(NODE_157, 1, NODE_156, 0, DISC_OP_AMP_FILTER_IS_BAND_PASS_1M, &galaxian_bandpass_desc)
/************************************************/ /************************************************/
/* FIRE */ /* FIRE */
/************************************************/ /************************************************/
DISCRETE_LOGIC_INVERT(NODE_160, 1, GAL_INP_FIRE) DISCRETE_LOGIC_INVERT(NODE_160, 1, GAL_INP_FIRE)
DISCRETE_MULTIPLY(NODE_161, 1, TTL_OUT, GAL_INP_FIRE) DISCRETE_MULTIPLY(NODE_161, 1, TTL_OUT, GAL_INP_FIRE)
DISCRETE_MULTIPLY(NODE_162, 1, TTL_OUT, NODE_160) // inverted DISCRETE_MULTIPLY(NODE_162, 1, TTL_OUT, NODE_160) // inverted
DISCRETE_RCFILTER(NODE_163, 1, NODE_162, GAL_R47, GAL_C28) DISCRETE_RCFILTER(NODE_163, 1, NODE_162, GAL_R47, GAL_C28)
/* Mix noise and 163 */ /* Mix noise and 163 */
DISCRETE_TRANSFORM5(NODE_167, NODE_152, TTL_OUT, 1.0/GAL_R46, NODE_163, 1.0/GAL_R48, DISCRETE_TRANSFORM5(NODE_167, NODE_152, TTL_OUT, 1.0/GAL_R46, NODE_163, 1.0/GAL_R48,
"01*2*34*+" ) "01*2*34*+" )
//DISCRETE_MULTIPLY(NODE_164, 1, TTL_OUT, NODE_152) //DISCRETE_MULTIPLY(NODE_164, 1, TTL_OUT, NODE_152)
//DISCRETE_MULTIPLY(NODE_165, 1, 1.0/GAL_R46, NODE_164) //DISCRETE_MULTIPLY(NODE_165, 1, 1.0/GAL_R46, NODE_164)
//DISCRETE_MULTIPLY(NODE_166, 1, 1.0/GAL_R48, NODE_163) //DISCRETE_MULTIPLY(NODE_166, 1, 1.0/GAL_R48, NODE_163)
//DISCRETE_ADDER2(NODE_167, 1, NODE_165, NODE_166) //DISCRETE_ADDER2(NODE_167, 1, NODE_165, NODE_166)
DISCRETE_MULTIPLY(NODE_168, 1, RES_2_PARALLEL(GAL_R46, GAL_R48), NODE_167) DISCRETE_MULTIPLY(NODE_168, 1, RES_2_PARALLEL(GAL_R46, GAL_R48), NODE_167)
DISCRETE_RCDISC5(NODE_170, 1, NODE_161, (GAL_R41)*2, GAL_C25) DISCRETE_RCDISC5(NODE_170, 1, NODE_161, (GAL_R41)*2, GAL_C25)
DISCRETE_555_ASTABLE_CV(NODE_171, 1, GAL_R44, GAL_R45, GAL_C27, NODE_168, &galaxian_555_fire_vco_desc) DISCRETE_555_ASTABLE_CV(NODE_171, 1, GAL_R44, GAL_R45, GAL_C27, NODE_168, &galaxian_555_fire_vco_desc)
@ -900,7 +900,7 @@ static TIMER_CALLBACK( pitch_callback )
if (pitch_l < 255) if (pitch_l < 255)
{ {
/* performance tweak: The counter is always running, but /* performance tweak: The counter is always running, but
* most of the time with a very (unaudible) frequency */ * most of the time with a very (unaudible) frequency */
discrete_sound_w(device, GAL_INP_PITCH_HIGH, pitch_h ); discrete_sound_w(device, GAL_INP_PITCH_HIGH, pitch_h );
timer_adjust_oneshot(pitch_timer, ATTOTIME_IN_HZ(SOUND_CLOCK / (256 - pitch_l)), 0); timer_adjust_oneshot(pitch_timer, ATTOTIME_IN_HZ(SOUND_CLOCK / (256 - pitch_l)), 0);
} }
@ -919,7 +919,7 @@ static SOUND_START(galaxian)
WRITE8_DEVICE_HANDLER( galaxian_pitch_w ) WRITE8_DEVICE_HANDLER( galaxian_pitch_w )
{ {
UINT8 old_data; UINT8 old_data;
old_data = pitch_l; old_data = pitch_l;
pitch_l = data; pitch_l = data;
if (pitch_l < 255 && old_data == 255) /* turn the timer on again */ if (pitch_l < 255 && old_data == 255) /* turn the timer on again */
@ -929,7 +929,7 @@ WRITE8_DEVICE_HANDLER( galaxian_pitch_w )
WRITE8_DEVICE_HANDLER( galaxian_lfo_freq_w ) WRITE8_DEVICE_HANDLER( galaxian_lfo_freq_w )
{ {
UINT8 lfo_val_new = (lfo_val & ~(1<<offset)) | ((data & 0x01) << offset); UINT8 lfo_val_new = (lfo_val & ~(1<<offset)) | ((data & 0x01) << offset);
if (lfo_val != lfo_val_new) if (lfo_val != lfo_val_new)
{ {
lfo_val = lfo_val_new; lfo_val = lfo_val_new;
@ -991,10 +991,10 @@ WRITE8_DEVICE_HANDLER( galaxian_sound_w )
MACHINE_DRIVER_START( galaxian_audio ) MACHINE_DRIVER_START( galaxian_audio )
MDRV_SOUND_START(galaxian) MDRV_SOUND_START(galaxian)
MDRV_SOUND_ADD(GAL_AUDIO, DISCRETE, 0) MDRV_SOUND_ADD(GAL_AUDIO, DISCRETE, 0)
MDRV_SOUND_CONFIG_DISCRETE(galaxian) MDRV_SOUND_CONFIG_DISCRETE(galaxian)
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
MACHINE_DRIVER_END MACHINE_DRIVER_END

View File

@ -129,19 +129,19 @@ static READ32_HANDLER( pxa255_i2s_r )
static WRITE32_HANDLER( pxa255_i2s_w ) static WRITE32_HANDLER( pxa255_i2s_w )
{ {
/* /*
if(!audio_dump) if(!audio_dump)
{ {
int count = 0; int count = 0;
char filename[256]; char filename[256];
do do
{ {
sprintf(filename, "39in1_%04d.raw", count++); sprintf(filename, "39in1_%04d.raw", count++);
audio_dump = fopen(filename, "rb"); audio_dump = fopen(filename, "rb");
}while(audio_dump != NULL); }while(audio_dump != NULL);
count--; count--;
sprintf(filename, "39in1_%04d.raw", count); sprintf(filename, "39in1_%04d.raw", count);
audio_dump = fopen(filename, "wb"); audio_dump = fopen(filename, "wb");
}*/ }*/
switch(PXA255_I2S_BASE_ADDR | (offset << 2)) switch(PXA255_I2S_BASE_ADDR | (offset << 2))
{ {
case PXA255_SACR0: case PXA255_SACR0:
@ -183,9 +183,9 @@ static WRITE32_HANDLER( pxa255_i2s_w )
verboselog( space->machine, 4, "pxa255_i2s_w: Serial Audio Data Register: %08x & %08x\n", data, mem_mask ); verboselog( space->machine, 4, "pxa255_i2s_w: Serial Audio Data Register: %08x & %08x\n", data, mem_mask );
i2s_regs.sadr = data; i2s_regs.sadr = data;
/*if(audio_dump) /*if(audio_dump)
{ {
fwrite(&data, 4, 1, audio_dump); fwrite(&data, 4, 1, audio_dump);
}*/ }*/
break; break;
default: default:
verboselog( space->machine, 0, "pxa255_i2s_w: Unknown address: %08x = %08x & %08x\n", PXA255_I2S_BASE_ADDR | (offset << 2), data, mem_mask); verboselog( space->machine, 0, "pxa255_i2s_w: Unknown address: %08x = %08x & %08x\n", PXA255_I2S_BASE_ADDR | (offset << 2), data, mem_mask);
@ -1274,7 +1274,7 @@ static UINT32 seed, magic;
static UINT32 state = 0; static UINT32 state = 0;
static READ32_HANDLER( cpld_r ) static READ32_HANDLER( cpld_r )
{ {
// if (cpu_get_pc(space->cpu) != 0xe3af4) printf("CPLD read @ %x (PC %x state %d)\n", offset, cpu_get_pc(space->cpu), state); // if (cpu_get_pc(space->cpu) != 0xe3af4) printf("CPLD read @ %x (PC %x state %d)\n", offset, cpu_get_pc(space->cpu), state);
if (cpu_get_pc(space->cpu) == 0x3f04) if (cpu_get_pc(space->cpu) == 0x3f04)
{ {

View File

@ -1767,7 +1767,7 @@ static INPUT_PORTS_START( skylove )
PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_VBLANK ) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_VBLANK )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON1 )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_COIN1 ) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_COIN1 )
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_START1 ) PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_START1 )
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_START2 ) PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_START2 )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_2WAY PORT_PLAYER(1) PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_2WAY PORT_PLAYER(1)

View File

@ -928,16 +928,16 @@ ROM_END
// all checksums correctly match sum16 printed on rom labels // all checksums correctly match sum16 printed on rom labels
ROM_START( 9ballshtc ) ROM_START( 9ballshtc )
ROM_REGION16_LE( 0x80000, "user1", 0 ) /* 34010 code */ ROM_REGION16_LE( 0x80000, "user1", 0 ) /* 34010 code */
ROM_LOAD16_BYTE( "e-scape (c)1994 3990.u112", 0x00000, 0x40000, CRC(7ba2749a) SHA1(e2ddc2600234dbebbb423f201cc4061fd0b9911a) ) ROM_LOAD16_BYTE( "e-scape (c)1994 3990.u112", 0x00000, 0x40000, CRC(7ba2749a) SHA1(e2ddc2600234dbebbb423f201cc4061fd0b9911a) )
ROM_LOAD16_BYTE( "e-scape (c)1994 b72f.u113", 0x00001, 0x40000, CRC(1e0f3c62) SHA1(3c24a38dcb553fd84b0b44a5a8d93a14435e22b0) ) ROM_LOAD16_BYTE( "e-scape (c)1994 b72f.u113", 0x00001, 0x40000, CRC(1e0f3c62) SHA1(3c24a38dcb553fd84b0b44a5a8d93a14435e22b0) )
ROM_REGION16_LE( 0x100000, "gfx1", 0 ) /* gfx data read by main CPU */ ROM_REGION16_LE( 0x100000, "gfx1", 0 ) /* gfx data read by main CPU */
ROM_LOAD16_BYTE( "e-scape (c)1994 c316.u110", 0x00000, 0x80000, CRC(890ed5c0) SHA1(eaf06ee5b6c5ed0103b535396b4517012818a416) ) ROM_LOAD16_BYTE( "e-scape (c)1994 c316.u110", 0x00000, 0x80000, CRC(890ed5c0) SHA1(eaf06ee5b6c5ed0103b535396b4517012818a416) )
ROM_LOAD16_BYTE( "e-scape (c)1994 13f2.u111", 0x00001, 0x80000, CRC(1a9f1145) SHA1(ba52a6d1aca26484c320518f69c66ce3ceb4adcf) ) ROM_LOAD16_BYTE( "e-scape (c)1994 13f2.u111", 0x00001, 0x80000, CRC(1a9f1145) SHA1(ba52a6d1aca26484c320518f69c66ce3ceb4adcf) )
ROM_REGION( 0x40000, "dsp", 0 ) /* TMS320C26 */ ROM_REGION( 0x40000, "dsp", 0 ) /* TMS320C26 */
ROM_LOAD16_BYTE( "e-scape (c)1994 89bc.u34", 0x00000, 0x08000, CRC(dc1df70b) SHA1(e42fa7e34e50e0bd2aaeea5c55d750ed3286610d) ) ROM_LOAD16_BYTE( "e-scape (c)1994 89bc.u34", 0x00000, 0x08000, CRC(dc1df70b) SHA1(e42fa7e34e50e0bd2aaeea5c55d750ed3286610d) )
ROM_LOAD16_BYTE( "e-scape (c)1994 af4a.u35", 0x00001, 0x08000, CRC(ac999431) SHA1(7e4c2dcaedcb7e7c67072a179e4b8488d2bbdac7) ) ROM_LOAD16_BYTE( "e-scape (c)1994 af4a.u35", 0x00001, 0x08000, CRC(ac999431) SHA1(7e4c2dcaedcb7e7c67072a179e4b8488d2bbdac7) )
ROM_REGION( 0x100000, "user2", 0 ) /* TMS32026 data */ ROM_REGION( 0x100000, "user2", 0 ) /* TMS32026 data */
ROM_LOAD( "e-scape (c)1994 0000.u54", 0x00000, 0x80000, CRC(04b509a0) SHA1(093343741a3d8d0786fd443e68dd85b414c6cf9e) ) ROM_LOAD( "e-scape (c)1994 0000.u54", 0x00000, 0x80000, CRC(04b509a0) SHA1(093343741a3d8d0786fd443e68dd85b414c6cf9e) )

View File

@ -1903,7 +1903,7 @@ ROM_START( popn2 )
ROM_REGION( 0x100000, "maincpu", 0 ) /* MC68EC020FG25 MPU */ ROM_REGION( 0x100000, "maincpu", 0 ) /* MC68EC020FG25 MPU */
ROM_LOAD16_BYTE( "831jaa01.8a", 0x000000, 0x80000, CRC(D6214CAC) SHA1(18e74c81710228c91ab9eb554b63d9bd69b93ec8) ) ROM_LOAD16_BYTE( "831jaa01.8a", 0x000000, 0x80000, CRC(D6214CAC) SHA1(18e74c81710228c91ab9eb554b63d9bd69b93ec8) )
ROM_LOAD16_BYTE( "831jaa02.6a", 0x000001, 0x80000, CRC(AABE8689) SHA1(d51d277e9b5d0233d1c6bdfec40c32587f84b31a) ) ROM_LOAD16_BYTE( "831jaa02.6a", 0x000001, 0x80000, CRC(AABE8689) SHA1(d51d277e9b5d0233d1c6bdfec40c32587f84b31a) )
ROM_REGION( 0x200000, "gfx1", 0) /* SPRITE */ ROM_REGION( 0x200000, "gfx1", 0) /* SPRITE */
ROM_LOAD16_BYTE( "831jaa03.19a", 0x000000, 0x80000, CRC(A07AEB72) SHA1(4d957c15d1b989e955249c34b0aa5679fb3e4fbf) ) ROM_LOAD16_BYTE( "831jaa03.19a", 0x000000, 0x80000, CRC(A07AEB72) SHA1(4d957c15d1b989e955249c34b0aa5679fb3e4fbf) )
ROM_LOAD16_BYTE( "831jaa04.20a", 0x000001, 0x80000, CRC(9277D1D2) SHA1(6946845973f0ce15db383032343f6852873698eb) ) ROM_LOAD16_BYTE( "831jaa04.20a", 0x000001, 0x80000, CRC(9277D1D2) SHA1(6946845973f0ce15db383032343f6852873698eb) )

View File

@ -1218,20 +1218,20 @@ static ADDRESS_MAP_START( mooncrst_map_base, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0xa000, 0xa000) AM_MIRROR(0x07ff) AM_READ_PORT("IN0") AM_RANGE(0xa000, 0xa000) AM_MIRROR(0x07ff) AM_READ_PORT("IN0")
AM_RANGE(0xa000, 0xa002) AM_MIRROR(0x07f8) AM_WRITE(galaxian_gfxbank_w) AM_RANGE(0xa000, 0xa002) AM_MIRROR(0x07f8) AM_WRITE(galaxian_gfxbank_w)
AM_RANGE(0xa003, 0xa003) AM_MIRROR(0x07f8) AM_WRITE(coin_count_0_w) AM_RANGE(0xa003, 0xa003) AM_MIRROR(0x07f8) AM_WRITE(coin_count_0_w)
// AM_RANGE(0xa004, 0xa007) AM_MIRROR(0x07f8) AM_DEVWRITE(GAL_AUDIO, galaxian_lfo_freq_w) // AM_RANGE(0xa004, 0xa007) AM_MIRROR(0x07f8) AM_DEVWRITE(GAL_AUDIO, galaxian_lfo_freq_w)
AM_RANGE(0xa800, 0xa800) AM_MIRROR(0x07ff) AM_READ_PORT("IN1") AM_RANGE(0xa800, 0xa800) AM_MIRROR(0x07ff) AM_READ_PORT("IN1")
// AM_RANGE(0xa800, 0xa807) AM_MIRROR(0x07f8) AM_DEVWRITE(GAL_AUDIO, galaxian_sound_w) // AM_RANGE(0xa800, 0xa807) AM_MIRROR(0x07f8) AM_DEVWRITE(GAL_AUDIO, galaxian_sound_w)
AM_RANGE(0xb000, 0xb000) AM_MIRROR(0x07ff) AM_READ_PORT("IN2") AM_RANGE(0xb000, 0xb000) AM_MIRROR(0x07ff) AM_READ_PORT("IN2")
AM_RANGE(0xb000, 0xb000) AM_MIRROR(0x07f8) AM_WRITE(irq_enable_w) AM_RANGE(0xb000, 0xb000) AM_MIRROR(0x07f8) AM_WRITE(irq_enable_w)
AM_RANGE(0xb004, 0xb004) AM_MIRROR(0x07f8) AM_WRITE(galaxian_stars_enable_w) AM_RANGE(0xb004, 0xb004) AM_MIRROR(0x07f8) AM_WRITE(galaxian_stars_enable_w)
AM_RANGE(0xb006, 0xb006) AM_MIRROR(0x07f8) AM_WRITE(galaxian_flip_screen_x_w) AM_RANGE(0xb006, 0xb006) AM_MIRROR(0x07f8) AM_WRITE(galaxian_flip_screen_x_w)
AM_RANGE(0xb007, 0xb007) AM_MIRROR(0x07f8) AM_WRITE(galaxian_flip_screen_y_w) AM_RANGE(0xb007, 0xb007) AM_MIRROR(0x07f8) AM_WRITE(galaxian_flip_screen_y_w)
// AM_RANGE(0xb800, 0xb800) AM_MIRROR(0x07ff) AM_DEVWRITE(GAL_AUDIO, galaxian_pitch_w) // AM_RANGE(0xb800, 0xb800) AM_MIRROR(0x07ff) AM_DEVWRITE(GAL_AUDIO, galaxian_pitch_w)
AM_RANGE(0xb800, 0xb800) AM_MIRROR(0x07ff) AM_READ(watchdog_reset_r) AM_RANGE(0xb800, 0xb800) AM_MIRROR(0x07ff) AM_READ(watchdog_reset_r)
ADDRESS_MAP_END ADDRESS_MAP_END
static ADDRESS_MAP_START( mooncrst_map, ADDRESS_SPACE_PROGRAM, 8 ) static ADDRESS_MAP_START( mooncrst_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_IMPORT_FROM(mooncrst_map_base) AM_IMPORT_FROM(mooncrst_map_base)
AM_IMPORT_FROM(mooncrst_map_discrete) AM_IMPORT_FROM(mooncrst_map_discrete)
ADDRESS_MAP_END ADDRESS_MAP_END
@ -1838,7 +1838,7 @@ static MACHINE_DRIVER_START( zigzag )
/* sound hardware */ /* sound hardware */
MDRV_SOUND_ADD("ay", AY8910, 1789750) MDRV_SOUND_ADD("ay", AY8910, 1789750)
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
MACHINE_DRIVER_END MACHINE_DRIVER_END

View File

@ -2300,14 +2300,14 @@ static INPUT_PORTS_START( tdpgal )
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 ) PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 )
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_COIN2 ) PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_COIN2 )
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT )
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 )
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN )
PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) ) PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP )
PORT_START("IN1") PORT_START("IN1")
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_START1 ) PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_START1 )
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START2 ) PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START2 )

View File

@ -185,38 +185,38 @@ ROM usage - CRC (from ROM test
Game Sega Part No. ROM Type Byte Word Game Sega Part No. ROM Type Byte Word
-------------------------------------------------------------- --------------------------------------------------------------
Star Wars Racer Arcade Star Wars Racer Arcade
MPR-23086.IC37 64M SOP44 MASKROM 7993 8E18 MPR-23086.IC37 64M SOP44 MASKROM 7993 8E18
MPR-23087.IC38 " 4D44 D239 MPR-23087.IC38 " 4D44 D239
MPR-23088.IC39 " 4135 BEAB MPR-23088.IC39 " 4135 BEAB
MPR-23089.IC40 " F0C8 04E2 MPR-23089.IC40 " F0C8 04E2
MPR-23090.IC41 " 9532 4C1C MPR-23090.IC41 " 9532 4C1C
MPR-23091.IC42 " 925D 02FB MPR-23091.IC42 " 925D 02FB
MPR-23092.IC43 " 0809 7050 MPR-23092.IC43 " 0809 7050
MPR-23093.IC44 " 72BC 9311 MPR-23093.IC44 " 72BC 9311
MPR-23094.IC45 " DE84 9D8A MPR-23094.IC45 " DE84 9D8A
MPR-23095.IC46 " 7A5C E7FC MPR-23095.IC46 " 7A5C E7FC
MPR-23096.IC47 " 6806 1392 MPR-23096.IC47 " 6806 1392
MPR-23097.IC48 " EDF1 7BD1 MPR-23097.IC48 " EDF1 7BD1
MPR-23098.IC49 " B82D E114 MPR-23098.IC49 " B82D E114
MPR-23099.IC50 " 5792 E5E5 MPR-23099.IC50 " 5792 E5E5
MPR-23100.IC51 " 3AF3 A97C MPR-23100.IC51 " 3AF3 A97C
MPR-23101.IC52 " A8CC 721D MPR-23101.IC52 " A8CC 721D
MPR-23102.IC53 " CED7 D3CF MPR-23102.IC53 " CED7 D3CF
MPR-23103.IC54 " 6B67 FC76 MPR-23103.IC54 " 6B67 FC76
MPR-23104.IC55 " 586C 6954 MPR-23104.IC55 " 586C 6954
MPR-23105.IC56 " 13A0 DB38 MPR-23105.IC56 " 13A0 DB38
MPR-23106.IC57 " 4F03 42BF MPR-23106.IC57 " 4F03 42BF
MPR-23107.IC58 " 8EA6 ADB6 MPR-23107.IC58 " 8EA6 ADB6
MPR-23108.IC59 " 8645 FC30 MPR-23108.IC59 " 8645 FC30
MPR-23109.IC60 " 3847 CA6B MPR-23109.IC60 " 3847 CA6B
MPR-23110.IC61 " 4140 01C4 MPR-23110.IC61 " 4140 01C4
MPR-23111.IC62 " EBE6 8085 MPR-23111.IC62 " EBE6 8085
MPR-23112.IC63 " B68B 7467 MPR-23112.IC63 " B68B 7467
MPR-23113.IC64 " 4715 4787 MPR-23113.IC64 " 4715 4787
MPR-23114.IC65 " 3CD6 144A MPR-23114.IC65 " 3CD6 144A
MPR-23115.IC66 " E5D3 BA35 MPR-23115.IC66 " E5D3 BA35
MPR-23116.IC67 " E668 08ED MPR-23116.IC67 " E668 08ED
MPR-23117.IC68 " 1FE8 C4A1 MPR-23117.IC68 " 1FE8 C4A1
EPR-23174.IC29 27C322 EPROM 3B2E EPR-23174.IC29 27C322 EPROM 3B2E
EPR-23175.IC30 " F377 EPR-23175.IC30 " F377

View File

@ -32,7 +32,7 @@ To do:
- lhb: in the copyright screen the '5' in '1995' is drawn by the cpu on layer 5, - lhb: in the copyright screen the '5' in '1995' is drawn by the cpu on layer 5,
but with wrong colors (since the top nibble of the affected pixels is left to 0xf) but with wrong colors (since the top nibble of the affected pixels is left to 0xf)
(drgnwrld is like this too, maybe hacked, or a cheap year replacement by IGS) (drgnwrld is like this too, maybe hacked, or a cheap year replacement by IGS)
- dbc: in the title screen the '5' in '1995' is drawn by the cpu with wrong colors. - dbc: in the title screen the '5' in '1995' is drawn by the cpu with wrong colors.
(see above comment) (see above comment)
Also the background palette is wrong since the fade routine is called with wrong Also the background palette is wrong since the fade routine is called with wrong
@ -2668,7 +2668,7 @@ static DRIVER_INIT( drgnwrldv21 )
rom[0x25556/2] = 0x6000; // 025556: 6700 E584 beq 23adc (ASIC12 CHECK PORT ERROR 1) rom[0x25556/2] = 0x6000; // 025556: 6700 E584 beq 23adc (ASIC12 CHECK PORT ERROR 1)
rom[0x269de/2] = 0x606c; // ?? rom[0x269de/2] = 0x606c; // ??
rom[0x2766a/2] = 0x606c; // ?? rom[0x2766a/2] = 0x606c; // ??
rom[0x2a830/2] = 0x606c; // ?? rom[0x2a830/2] = 0x606c; // ??
} }

View File

@ -890,7 +890,7 @@ static MACHINE_DRIVER_START( prosport )
MDRV_CPU_PROGRAM_MAP(liberate_sound_map) MDRV_CPU_PROGRAM_MAP(liberate_sound_map)
MDRV_CPU_PERIODIC_INT(nmi_line_pulse,16*60) /* ??? */ MDRV_CPU_PERIODIC_INT(nmi_line_pulse,16*60) /* ??? */
// MDRV_QUANTUM_TIME(HZ(12000)) // MDRV_QUANTUM_TIME(HZ(12000))
/* video hardware */ /* video hardware */
MDRV_SCREEN_ADD("screen", RASTER) MDRV_SCREEN_ADD("screen", RASTER)

View File

@ -736,10 +736,10 @@ ROM_START( looping )
ROM_REGION( 0x1000, "mcu", 0 ) /* COP420 microcontroller code */ ROM_REGION( 0x1000, "mcu", 0 ) /* COP420 microcontroller code */
/* /*
ROM_LOAD( "cop.bin", 0x0000, 0x0400, BAD_DUMP CRC(bbfd26d5) SHA1(5f78b32b6e7c003841ef5b635084db2cdfebf0e1) ) // overdumped 4 times, and starting PC is not 0 ROM_LOAD( "cop.bin", 0x0000, 0x0400, BAD_DUMP CRC(bbfd26d5) SHA1(5f78b32b6e7c003841ef5b635084db2cdfebf0e1) ) // overdumped 4 times, and starting PC is not 0
ROM_CONTINUE( 0x0000, 0x0400) ROM_CONTINUE( 0x0000, 0x0400)
ROM_CONTINUE( 0x0000, 0x0400) ROM_CONTINUE( 0x0000, 0x0400)
ROM_CONTINUE( 0x0000, 0x0400) ROM_CONTINUE( 0x0000, 0x0400)
*/ */
ROM_LOAD( "cop.bin", 0x00c2, 0x033e, CRC(bbfd26d5) SHA1(5f78b32b6e7c003841ef5b635084db2cdfebf0e1) ) // overdumped 4 times and shifted ROM_LOAD( "cop.bin", 0x00c2, 0x033e, CRC(bbfd26d5) SHA1(5f78b32b6e7c003841ef5b635084db2cdfebf0e1) ) // overdumped 4 times and shifted
ROM_CONTINUE( 0x0000, 0x00c2) ROM_CONTINUE( 0x0000, 0x00c2)
@ -773,10 +773,10 @@ ROM_START( loopinga )
ROM_REGION( 0x1000, "mcu", 0 ) /* COP420 microcontroller code */ ROM_REGION( 0x1000, "mcu", 0 ) /* COP420 microcontroller code */
/* /*
ROM_LOAD( "cop.bin", 0x0000, 0x0400, BAD_DUMP CRC(bbfd26d5) SHA1(5f78b32b6e7c003841ef5b635084db2cdfebf0e1) ) // overdumped 4 times, and starting PC is not 0 ROM_LOAD( "cop.bin", 0x0000, 0x0400, BAD_DUMP CRC(bbfd26d5) SHA1(5f78b32b6e7c003841ef5b635084db2cdfebf0e1) ) // overdumped 4 times, and starting PC is not 0
ROM_CONTINUE( 0x0000, 0x0400) ROM_CONTINUE( 0x0000, 0x0400)
ROM_CONTINUE( 0x0000, 0x0400) ROM_CONTINUE( 0x0000, 0x0400)
ROM_CONTINUE( 0x0000, 0x0400) ROM_CONTINUE( 0x0000, 0x0400)
*/ */
ROM_LOAD( "cop.bin", 0x00c2, 0x033e, CRC(bbfd26d5) SHA1(5f78b32b6e7c003841ef5b635084db2cdfebf0e1) ) // overdumped 4 times and shifted ROM_LOAD( "cop.bin", 0x00c2, 0x033e, CRC(bbfd26d5) SHA1(5f78b32b6e7c003841ef5b635084db2cdfebf0e1) ) // overdumped 4 times and shifted
ROM_CONTINUE( 0x0000, 0x00c2) ROM_CONTINUE( 0x0000, 0x00c2)
@ -809,10 +809,10 @@ ROM_START( skybump )
ROM_REGION( 0x1000, "mcu", 0 ) /* COP420 microcontroller code */ ROM_REGION( 0x1000, "mcu", 0 ) /* COP420 microcontroller code */
/* /*
ROM_LOAD( "cop.bin", 0x0000, 0x0400, BAD_DUMP CRC(bbfd26d5) SHA1(5f78b32b6e7c003841ef5b635084db2cdfebf0e1) ) // overdumped 4 times, and starting PC is not 0 ROM_LOAD( "cop.bin", 0x0000, 0x0400, BAD_DUMP CRC(bbfd26d5) SHA1(5f78b32b6e7c003841ef5b635084db2cdfebf0e1) ) // overdumped 4 times, and starting PC is not 0
ROM_CONTINUE( 0x0000, 0x0400) ROM_CONTINUE( 0x0000, 0x0400)
ROM_CONTINUE( 0x0000, 0x0400) ROM_CONTINUE( 0x0000, 0x0400)
ROM_CONTINUE( 0x0000, 0x0400) ROM_CONTINUE( 0x0000, 0x0400)
*/ */
ROM_LOAD( "cop.bin", 0x00c2, 0x033e, CRC(bbfd26d5) SHA1(5f78b32b6e7c003841ef5b635084db2cdfebf0e1) ) // overdumped 4 times and shifted ROM_LOAD( "cop.bin", 0x00c2, 0x033e, CRC(bbfd26d5) SHA1(5f78b32b6e7c003841ef5b635084db2cdfebf0e1) ) // overdumped 4 times and shifted
ROM_CONTINUE( 0x0000, 0x00c2) ROM_CONTINUE( 0x0000, 0x00c2)

View File

@ -629,107 +629,107 @@ Notes:
ROM_START( spacefev ) ROM_START( spacefev )
ROM_REGION( 0x8000, "maincpu", 0 ) ROM_REGION( 0x8000, "maincpu", 0 )
ROM_LOAD( "f1-ro-.bin", 0x0000, 0x0400, CRC(35f295bd) SHA1(34d1df25fcdea598ca1191cecc2125e6f63dbce3) ) // "F1" ROM_LOAD( "f1-ro-.bin", 0x0000, 0x0400, CRC(35f295bd) SHA1(34d1df25fcdea598ca1191cecc2125e6f63dbce3) ) // "F1??"
ROM_LOAD( "f2-ro-.bin", 0x0400, 0x0400, CRC(0c633f4c) SHA1(a551ddbf21670fb1f000404b92da87a97f7ba157) ) // "F2" ROM_LOAD( "f2-ro-.bin", 0x0400, 0x0400, CRC(0c633f4c) SHA1(a551ddbf21670fb1f000404b92da87a97f7ba157) ) // "F2??"
ROM_LOAD( "g1-ro-.bin", 0x0800, 0x0400, CRC(f3d851cb) SHA1(535c52a56e54a064aa3d1c48a129f714234a1007) ) // "G1" ROM_LOAD( "g1-ro-.bin", 0x0800, 0x0400, CRC(f3d851cb) SHA1(535c52a56e54a064aa3d1c48a129f714234a1007) ) // "G1??"
ROM_LOAD( "g2-ro-.bin", 0x0c00, 0x0400, CRC(1faef63a) SHA1(68e1bfc45587bfb1ee2eb477b60efd4f69dffd2c) ) // "G2" ROM_LOAD( "g2-ro-.bin", 0x0c00, 0x0400, CRC(1faef63a) SHA1(68e1bfc45587bfb1ee2eb477b60efd4f69dffd2c) ) // "G2??"
ROM_LOAD( "h1-ro-.bin", 0x1000, 0x0400, CRC(b365389d) SHA1(e681f2c5e37cc07912915ef74184ff9336309de3) ) // "H1" ROM_LOAD( "h1-ro-.bin", 0x1000, 0x0400, CRC(b365389d) SHA1(e681f2c5e37cc07912915ef74184ff9336309de3) ) // "H1??"
ROM_LOAD( "h2-ro-.bin", 0x1400, 0x0400, CRC(a163e800) SHA1(e8817f3e17f099a0dc66213d2d3d3fdeb117b10e) ) // "H2" ROM_LOAD( "h2-ro-.bin", 0x1400, 0x0400, CRC(a163e800) SHA1(e8817f3e17f099a0dc66213d2d3d3fdeb117b10e) ) // "H2??"
ROM_LOAD( "i1-ro-p.bin", 0x1800, 0x0400, CRC(756b5582) SHA1(b7f3d218b7f4267ce6128624306396bcacb9b44e) ) // "I1P" ROM_LOAD( "i1-ro-p.bin", 0x1800, 0x0400, CRC(756b5582) SHA1(b7f3d218b7f4267ce6128624306396bcacb9b44e) ) // "I1??P"
ROM_REGION( 0x0400, "audiocpu", 0 ) ROM_REGION( 0x0400, "audiocpu", 0 )
ROM_LOAD( "ss3.ic2", 0x0000, 0x0400, CRC(95c2c1ee) SHA1(42a3a382fc7d2782052372d71f6d0e8a153e74d0) ) ROM_LOAD( "ss3.ic2", 0x0000, 0x0400, CRC(95c2c1ee) SHA1(42a3a382fc7d2782052372d71f6d0e8a153e74d0) )
ROM_REGION( 0x0020, "proms", 0 ) ROM_REGION( 0x0020, "proms", 0 )
ROM_LOAD( "f5-i-.bin", 0x0000, 0x0020, CRC(c5914ec1) SHA1(198875fcab36d09c8726bb21e2fdff9882f6721a) ) // "F5" ROM_LOAD( "f5-i-.bin", 0x0000, 0x0020, CRC(c5914ec1) SHA1(198875fcab36d09c8726bb21e2fdff9882f6721a) ) // "F5?C"
ROM_END ROM_END
ROM_START( spacefevo ) ROM_START( spacefevo )
ROM_REGION( 0x8000, "maincpu", 0 ) ROM_REGION( 0x8000, "maincpu", 0 )
ROM_LOAD( "f1-ro-.bin", 0x0000, 0x0400, CRC(35f295bd) SHA1(34d1df25fcdea598ca1191cecc2125e6f63dbce3) ) // "F1" ROM_LOAD( "f1-ro-.bin", 0x0000, 0x0400, CRC(35f295bd) SHA1(34d1df25fcdea598ca1191cecc2125e6f63dbce3) ) // "F1??"
ROM_LOAD( "f2-ro-.bin", 0x0400, 0x0400, CRC(0c633f4c) SHA1(a551ddbf21670fb1f000404b92da87a97f7ba157) ) // "F2" ROM_LOAD( "f2-ro-.bin", 0x0400, 0x0400, CRC(0c633f4c) SHA1(a551ddbf21670fb1f000404b92da87a97f7ba157) ) // "F2??"
ROM_LOAD( "g1-ro-.bin", 0x0800, 0x0400, CRC(f3d851cb) SHA1(535c52a56e54a064aa3d1c48a129f714234a1007) ) // "G1" ROM_LOAD( "g1-ro-.bin", 0x0800, 0x0400, CRC(f3d851cb) SHA1(535c52a56e54a064aa3d1c48a129f714234a1007) ) // "G1??"
ROM_LOAD( "g2-ro-.bin", 0x0c00, 0x0400, CRC(1faef63a) SHA1(68e1bfc45587bfb1ee2eb477b60efd4f69dffd2c) ) // "G2" ROM_LOAD( "g2-ro-.bin", 0x0c00, 0x0400, CRC(1faef63a) SHA1(68e1bfc45587bfb1ee2eb477b60efd4f69dffd2c) ) // "G2??"
ROM_LOAD( "h1-ro-.bin", 0x1000, 0x0400, CRC(b365389d) SHA1(e681f2c5e37cc07912915ef74184ff9336309de3) ) // "H1" ROM_LOAD( "h1-ro-.bin", 0x1000, 0x0400, CRC(b365389d) SHA1(e681f2c5e37cc07912915ef74184ff9336309de3) ) // "H1??"
ROM_LOAD( "h2-ro-.bin", 0x1400, 0x0400, CRC(a163e800) SHA1(e8817f3e17f099a0dc66213d2d3d3fdeb117b10e) ) // "H2" ROM_LOAD( "h2-ro-.bin", 0x1400, 0x0400, CRC(a163e800) SHA1(e8817f3e17f099a0dc66213d2d3d3fdeb117b10e) ) // "H2??"
ROM_LOAD( "i1-ro-.bin", 0x1800, 0x0400, CRC(00027be2) SHA1(551a779a2e5a6455b7a348d246731c094e0ec709) ) // "I1" ROM_LOAD( "i1-ro-.bin", 0x1800, 0x0400, CRC(00027be2) SHA1(551a779a2e5a6455b7a348d246731c094e0ec709) ) // "I1??"
ROM_REGION( 0x0400, "audiocpu", 0 ) ROM_REGION( 0x0400, "audiocpu", 0 )
ROM_LOAD( "ss3.ic2", 0x0000, 0x0400, CRC(95c2c1ee) SHA1(42a3a382fc7d2782052372d71f6d0e8a153e74d0) ) ROM_LOAD( "ss3.ic2", 0x0000, 0x0400, CRC(95c2c1ee) SHA1(42a3a382fc7d2782052372d71f6d0e8a153e74d0) )
ROM_REGION( 0x0020, "proms", 0 ) ROM_REGION( 0x0020, "proms", 0 )
ROM_LOAD( "f5-i-.bin", 0x0000, 0x0020, CRC(c5914ec1) SHA1(198875fcab36d09c8726bb21e2fdff9882f6721a) ) // "F5" ROM_LOAD( "f5-i-.bin", 0x0000, 0x0020, CRC(c5914ec1) SHA1(198875fcab36d09c8726bb21e2fdff9882f6721a) ) // "F5?C"
ROM_END ROM_END
ROM_START( spacefevo2 ) ROM_START( spacefevo2 )
ROM_REGION( 0x8000, "maincpu", 0 ) ROM_REGION( 0x8000, "maincpu", 0 )
ROM_LOAD( "f1-i-.bin", 0x0000, 0x0400, CRC(7fa305e8) SHA1(cda9fc9c76f57800de25ddf65f69fef19fd28481) ) // "F1" ROM_LOAD( "f1-i-.bin", 0x0000, 0x0400, CRC(7fa305e8) SHA1(cda9fc9c76f57800de25ddf65f69fef19fd28481) ) // "F1?C"
ROM_LOAD( "f2-i-.bin", 0x0400, 0x0400, CRC(7c1429aa) SHA1(8d8e0a4fc09fb1ecbfb86c67c20000ef30ab3fac) ) // "F2" ROM_LOAD( "f2-i-.bin", 0x0400, 0x0400, CRC(7c1429aa) SHA1(8d8e0a4fc09fb1ecbfb86c67c20000ef30ab3fac) ) // "F2?C"
ROM_LOAD( "g1-i-.bin", 0x0800, 0x0400, CRC(75f6efc1) SHA1(286bc75e35e8ad6277e9db7377e90731b9c2ec97) ) // "G1" ROM_LOAD( "g1-i-.bin", 0x0800, 0x0400, CRC(75f6efc1) SHA1(286bc75e35e8ad6277e9db7377e90731b9c2ec97) ) // "G1?C"
ROM_LOAD( "g2-i-.bin", 0x0c00, 0x0400, CRC(fb6bcf4a) SHA1(3edea04d67c2f3b1a6a73adadea83ddda0be3842) ) // "G2" ROM_LOAD( "g2-i-.bin", 0x0c00, 0x0400, CRC(fb6bcf4a) SHA1(3edea04d67c2f3b1a6a73adadea83ddda0be3842) ) // "G2?C"
ROM_LOAD( "h1-i-.bin", 0x1000, 0x0400, CRC(3beef037) SHA1(4bcc157e7d721b3a9e16e7a2efa807303d4be8ac) ) // "H1" ROM_LOAD( "h1-i-.bin", 0x1000, 0x0400, CRC(3beef037) SHA1(4bcc157e7d721b3a9e16e7a2efa807303d4be8ac) ) // "H1?C"
ROM_LOAD( "h2-i-.bin", 0x1400, 0x0400, CRC(bddbc94f) SHA1(f90cbc3cd0f695cbb9ae03b608f4bf5a4a000c64) ) // "H2" ROM_LOAD( "h2-i-.bin", 0x1400, 0x0400, CRC(bddbc94f) SHA1(f90cbc3cd0f695cbb9ae03b608f4bf5a4a000c64) ) // "H2?C"
ROM_LOAD( "i1-i-.bin", 0x1800, 0x0400, CRC(437786c5) SHA1(2ccdb0d48dbbfe47ae82e970ca37970602405cf6) ) // "I1" ROM_LOAD( "i1-i-.bin", 0x1800, 0x0400, CRC(437786c5) SHA1(2ccdb0d48dbbfe47ae82e970ca37970602405cf6) ) // "I1?C"
ROM_REGION( 0x0400, "audiocpu", 0 ) ROM_REGION( 0x0400, "audiocpu", 0 )
ROM_LOAD( "ss3.ic2", 0x0000, 0x0400, CRC(95c2c1ee) SHA1(42a3a382fc7d2782052372d71f6d0e8a153e74d0) ) ROM_LOAD( "ss3.ic2", 0x0000, 0x0400, CRC(95c2c1ee) SHA1(42a3a382fc7d2782052372d71f6d0e8a153e74d0) )
ROM_REGION( 0x0020, "proms", 0 ) ROM_REGION( 0x0020, "proms", 0 )
ROM_LOAD( "f5-i-.bin", 0x0000, 0x0020, CRC(c5914ec1) SHA1(198875fcab36d09c8726bb21e2fdff9882f6721a) ) // "F5" ROM_LOAD( "f5-i-.bin", 0x0000, 0x0020, CRC(c5914ec1) SHA1(198875fcab36d09c8726bb21e2fdff9882f6721a) ) // "F5?C"
ROM_END ROM_END
ROM_START( highsplt ) ROM_START( highsplt )
ROM_REGION( 0x8000, "maincpu", 0 ) ROM_REGION( 0x8000, "maincpu", 0 )
ROM_LOAD( "f1-ha-.bin", 0x0000, 0x0400, CRC(b8887351) SHA1(ccd49937f1cbd7a157b3715474ccc3e8fdcea2b2) ) // "F1" ROM_LOAD( "f1-ha-.bin", 0x0000, 0x0400, CRC(b8887351) SHA1(ccd49937f1cbd7a157b3715474ccc3e8fdcea2b2) ) // "F1?n"
ROM_LOAD( "f2-ha-.bin", 0x0400, 0x0400, CRC(cda933a7) SHA1(a0447c8c98e24674081c9bf4b1ef07dc186c6e2b) ) // "F2" ROM_LOAD( "f2-ha-.bin", 0x0400, 0x0400, CRC(cda933a7) SHA1(a0447c8c98e24674081c9bf4b1ef07dc186c6e2b) ) // "F2?n"
ROM_LOAD( "g1-ha-.bin", 0x0800, 0x0400, CRC(de17578a) SHA1(d9d5dbf38331f212d2a566c60756a788e169104d) ) // "G1" ROM_LOAD( "g1-ha-.bin", 0x0800, 0x0400, CRC(de17578a) SHA1(d9d5dbf38331f212d2a566c60756a788e169104d) ) // "G1?n"
ROM_LOAD( "g2-ha-.bin", 0x0c00, 0x0400, CRC(f1a90948) SHA1(850f27b42ca12bcba4aa95a1ad3e66206fa63554) ) // "G2" ROM_LOAD( "g2-ha-.bin", 0x0c00, 0x0400, CRC(f1a90948) SHA1(850f27b42ca12bcba4aa95a1ad3e66206fa63554) ) // "G2?n"
ROM_LOAD( "hs.h1", 0x1000, 0x0400, CRC(eefb4273) SHA1(853a62976a406516f10ac68dc2859399b8b7aae8) ) ROM_LOAD( "hs.h1", 0x1000, 0x0400, CRC(eefb4273) SHA1(853a62976a406516f10ac68dc2859399b8b7aae8) )
ROM_LOAD( "h2-ha-.bin", 0x1400, 0x0400, CRC(e91703e8) SHA1(f58606b0c7d945e94c3fccc7ebe17ca25675e6a0) ) // "H2" ROM_LOAD( "h2-ha-.bin", 0x1400, 0x0400, CRC(e91703e8) SHA1(f58606b0c7d945e94c3fccc7ebe17ca25675e6a0) ) // "H2?n"
ROM_LOAD( "hs.i1", 0x1800, 0x0400, CRC(41e18df9) SHA1(2212c836313775e7c507a875672c0b3635825e02) ) ROM_LOAD( "hs.i1", 0x1800, 0x0400, CRC(41e18df9) SHA1(2212c836313775e7c507a875672c0b3635825e02) )
ROM_LOAD( "i2-ha-.bin", 0x1c00, 0x0400, CRC(eff9f82d) SHA1(5004e52dfa652ceefca9ed4210c0fa8f0591dc08) ) // "I2" ROM_LOAD( "i2-ha-.bin", 0x1c00, 0x0400, CRC(eff9f82d) SHA1(5004e52dfa652ceefca9ed4210c0fa8f0591dc08) ) // "I2?n"
ROM_REGION( 0x0400, "audiocpu", 0 ) ROM_REGION( 0x0400, "audiocpu", 0 )
ROM_LOAD( "ss4.bin", 0x0000, 0x0400, CRC(939e01d4) SHA1(7c9ccd24e5da03831cd0aa821da17e3b81cd8381) ) ROM_LOAD( "ss4.bin", 0x0000, 0x0400, CRC(939e01d4) SHA1(7c9ccd24e5da03831cd0aa821da17e3b81cd8381) )
ROM_REGION( 0x0020, "proms", 0 ) ROM_REGION( 0x0020, "proms", 0 )
ROM_LOAD( "f5-i-.bin", 0x0000, 0x0020, CRC(c5914ec1) SHA1(198875fcab36d09c8726bb21e2fdff9882f6721a) ) // "F5" ROM_LOAD( "f5-i-.bin", 0x0000, 0x0020, CRC(c5914ec1) SHA1(198875fcab36d09c8726bb21e2fdff9882f6721a) ) // "F5?C"
ROM_END ROM_END
ROM_START( highsplta ) ROM_START( highsplta )
ROM_REGION( 0x10000, "maincpu", 0 ) ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "f1-ha-.bin", 0x0000, 0x0400, CRC(b8887351) SHA1(ccd49937f1cbd7a157b3715474ccc3e8fdcea2b2) ) // "F1" ROM_LOAD( "f1-ha-.bin", 0x0000, 0x0400, CRC(b8887351) SHA1(ccd49937f1cbd7a157b3715474ccc3e8fdcea2b2) ) // "F1?n"
ROM_LOAD( "f2-ha-.bin", 0x0400, 0x0400, CRC(cda933a7) SHA1(a0447c8c98e24674081c9bf4b1ef07dc186c6e2b) ) // "F2" ROM_LOAD( "f2-ha-.bin", 0x0400, 0x0400, CRC(cda933a7) SHA1(a0447c8c98e24674081c9bf4b1ef07dc186c6e2b) ) // "F2?n"
ROM_LOAD( "g1-ha-.bin", 0x0800, 0x0400, CRC(de17578a) SHA1(d9d5dbf38331f212d2a566c60756a788e169104d) ) // "G1" ROM_LOAD( "g1-ha-.bin", 0x0800, 0x0400, CRC(de17578a) SHA1(d9d5dbf38331f212d2a566c60756a788e169104d) ) // "G1?n"
ROM_LOAD( "g2-ha-.bin", 0x0c00, 0x0400, CRC(f1a90948) SHA1(850f27b42ca12bcba4aa95a1ad3e66206fa63554) ) // "G2" ROM_LOAD( "g2-ha-.bin", 0x0c00, 0x0400, CRC(f1a90948) SHA1(850f27b42ca12bcba4aa95a1ad3e66206fa63554) ) // "G2?n"
ROM_LOAD( "h1-ha-.bin", 0x1000, 0x0400, CRC(b0505da3) SHA1(f7b1f3a6dd06ff0cdeb6b13c948b7a262592514a) ) // "H1" ROM_LOAD( "h1-ha-.bin", 0x1000, 0x0400, CRC(b0505da3) SHA1(f7b1f3a6dd06ff0cdeb6b13c948b7a262592514a) ) // "H1?n"
ROM_LOAD( "h2-ha-.bin", 0x1400, 0x0400, CRC(e91703e8) SHA1(f58606b0c7d945e94c3fccc7ebe17ca25675e6a0) ) // "H2" ROM_LOAD( "h2-ha-.bin", 0x1400, 0x0400, CRC(e91703e8) SHA1(f58606b0c7d945e94c3fccc7ebe17ca25675e6a0) ) // "H2?n"
ROM_LOAD( "i1-ha-.bin", 0x1800, 0x0400, CRC(aa36b25d) SHA1(28f555aab27b206a8c6f550b6caa938cece6e204) ) // "I1" ROM_LOAD( "i1-ha-.bin", 0x1800, 0x0400, CRC(aa36b25d) SHA1(28f555aab27b206a8c6f550b6caa938cece6e204) ) // "I1?n"
ROM_LOAD( "i2-ha-.bin", 0x1c00, 0x0400, CRC(eff9f82d) SHA1(5004e52dfa652ceefca9ed4210c0fa8f0591dc08) ) // "I2" ROM_LOAD( "i2-ha-.bin", 0x1c00, 0x0400, CRC(eff9f82d) SHA1(5004e52dfa652ceefca9ed4210c0fa8f0591dc08) ) // "I2?n"
ROM_REGION( 0x0400, "audiocpu", 0 ) ROM_REGION( 0x0400, "audiocpu", 0 )
ROM_LOAD( "ss4.bin", 0x0000, 0x0400, CRC(939e01d4) SHA1(7c9ccd24e5da03831cd0aa821da17e3b81cd8381) ) ROM_LOAD( "ss4.bin", 0x0000, 0x0400, CRC(939e01d4) SHA1(7c9ccd24e5da03831cd0aa821da17e3b81cd8381) )
ROM_REGION( 0x0020, "proms", 0 ) ROM_REGION( 0x0020, "proms", 0 )
ROM_LOAD( "f5-i-.bin", 0x0000, 0x0020, CRC(c5914ec1) SHA1(198875fcab36d09c8726bb21e2fdff9882f6721a) ) // "F5" ROM_LOAD( "f5-i-.bin", 0x0000, 0x0020, CRC(c5914ec1) SHA1(198875fcab36d09c8726bb21e2fdff9882f6721a) ) // "F5?C"
ROM_END ROM_END
ROM_START( highspltb ) ROM_START( highspltb )
ROM_REGION( 0x10000, "maincpu", 0 ) ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "f1-ha-.bin", 0x0000, 0x0400, CRC(b8887351) SHA1(ccd49937f1cbd7a157b3715474ccc3e8fdcea2b2) ) // "F1" ROM_LOAD( "f1-ha-.bin", 0x0000, 0x0400, CRC(b8887351) SHA1(ccd49937f1cbd7a157b3715474ccc3e8fdcea2b2) ) // "F1?n"
ROM_LOAD( "f2-ha-.bin", 0x0400, 0x0400, CRC(cda933a7) SHA1(a0447c8c98e24674081c9bf4b1ef07dc186c6e2b) ) // "F2" ROM_LOAD( "f2-ha-.bin", 0x0400, 0x0400, CRC(cda933a7) SHA1(a0447c8c98e24674081c9bf4b1ef07dc186c6e2b) ) // "F2?n"
ROM_LOAD( "g1-ha-.bin", 0x0800, 0x0400, CRC(de17578a) SHA1(d9d5dbf38331f212d2a566c60756a788e169104d) ) // "G1" ROM_LOAD( "g1-ha-.bin", 0x0800, 0x0400, CRC(de17578a) SHA1(d9d5dbf38331f212d2a566c60756a788e169104d) ) // "G1?n"
ROM_LOAD( "g2-ha-.bin", 0x0c00, 0x0400, CRC(f1a90948) SHA1(850f27b42ca12bcba4aa95a1ad3e66206fa63554) ) // "G2" ROM_LOAD( "g2-ha-.bin", 0x0c00, 0x0400, CRC(f1a90948) SHA1(850f27b42ca12bcba4aa95a1ad3e66206fa63554) ) // "G2?n"
ROM_LOAD( "h1-ha-.bin", 0x1000, 0x0400, CRC(b0505da3) SHA1(f7b1f3a6dd06ff0cdeb6b13c948b7a262592514a) ) // "H1" ROM_LOAD( "h1-ha-.bin", 0x1000, 0x0400, CRC(b0505da3) SHA1(f7b1f3a6dd06ff0cdeb6b13c948b7a262592514a) ) // "H1?n"
ROM_LOAD( "h2-ha-.bin", 0x1400, 0x0400, CRC(e91703e8) SHA1(f58606b0c7d945e94c3fccc7ebe17ca25675e6a0) ) // "H2" ROM_LOAD( "h2-ha-.bin", 0x1400, 0x0400, CRC(e91703e8) SHA1(f58606b0c7d945e94c3fccc7ebe17ca25675e6a0) ) // "H2?n"
ROM_LOAD( "i1-ha-.bin", 0x1800, 0x0400, CRC(aa36b25d) SHA1(28f555aab27b206a8c6f550b6caa938cece6e204) ) // "I1" ROM_LOAD( "i1-ha-.bin", 0x1800, 0x0400, CRC(aa36b25d) SHA1(28f555aab27b206a8c6f550b6caa938cece6e204) ) // "I1?n"
ROM_LOAD( "i2-ha-.bin", 0x1c00, 0x0400, CRC(eff9f82d) SHA1(5004e52dfa652ceefca9ed4210c0fa8f0591dc08) ) // "I2" ROM_LOAD( "i2-ha-.bin", 0x1c00, 0x0400, CRC(eff9f82d) SHA1(5004e52dfa652ceefca9ed4210c0fa8f0591dc08) ) // "I2?n"
ROM_REGION( 0x0400, "audiocpu", 0 ) ROM_REGION( 0x0400, "audiocpu", 0 )
ROM_LOAD( "ss4.ic2", 0x0000, 0x0400, CRC(ce95dc5f) SHA1(20f7b8c565c408439dcfae240b7d1aa42c29651b) ) ROM_LOAD( "ss4.ic2", 0x0000, 0x0400, CRC(ce95dc5f) SHA1(20f7b8c565c408439dcfae240b7d1aa42c29651b) )
ROM_REGION( 0x0020, "proms", 0 ) ROM_REGION( 0x0020, "proms", 0 )
ROM_LOAD( "f5-i-.bin", 0x0000, 0x0020, CRC(c5914ec1) SHA1(198875fcab36d09c8726bb21e2fdff9882f6721a) ) // "F5" ROM_LOAD( "f5-i-.bin", 0x0000, 0x0020, CRC(c5914ec1) SHA1(198875fcab36d09c8726bb21e2fdff9882f6721a) ) // "F5?C"
ROM_END ROM_END
ROM_START( spacelnc ) ROM_START( spacelnc )

View File

@ -5675,7 +5675,7 @@ static DRIVER_INIT( aquajet )
GAME( 1995, cybrcomm, 0, namcos22, cybrcomm, cybrcomm, ROT0, "Namco", "Cyber Commando (Rev. CY1, Japan)" , GAME_IMPERFECT_SOUND|GAME_IMPERFECT_GRAPHICS|GAME_NOT_WORKING ) GAME( 1995, cybrcomm, 0, namcos22, cybrcomm, cybrcomm, ROT0, "Namco", "Cyber Commando (Rev. CY1, Japan)" , GAME_IMPERFECT_SOUND|GAME_IMPERFECT_GRAPHICS|GAME_NOT_WORKING )
GAME( 1995, raveracw, 0, namcos22, raveracw, raveracw, ROT0, "Namco", "Rave Racer (Rev. RV2, World)" , GAME_IMPERFECT_SOUND|GAME_IMPERFECT_GRAPHICS ) GAME( 1995, raveracw, 0, namcos22, raveracw, raveracw, ROT0, "Namco", "Rave Racer (Rev. RV2, World)" , GAME_IMPERFECT_SOUND|GAME_IMPERFECT_GRAPHICS )
GAME( 1995, raveracj, raveracw, namcos22, raveracw, raveracw, ROT0, "Namco", "Rave Racer (Rev. RV1 Ver.B, Japan)" , GAME_IMPERFECT_SOUND|GAME_IMPERFECT_GRAPHICS ) GAME( 1995, raveracj, raveracw, namcos22, raveracw, raveracw, ROT0, "Namco", "Rave Racer (Rev. RV1 Ver.B, Japan)" , GAME_IMPERFECT_SOUND|GAME_IMPERFECT_GRAPHICS )
GAME( 1995, raveracja, raveracw, namcos22, raveracw, raveracw, ROT0, "Namco", "Rave Racer (Rev. RV1, Japan)" , GAME_IMPERFECT_SOUND|GAME_IMPERFECT_GRAPHICS ) GAME( 1995, raveracja, raveracw, namcos22, raveracw, raveracw, ROT0, "Namco", "Rave Racer (Rev. RV1, Japan)" , GAME_IMPERFECT_SOUND|GAME_IMPERFECT_GRAPHICS )
GAME( 1993, ridgerac, 0, namcos22, ridgera, ridgeraj, ROT0, "Namco", "Ridge Racer (Rev. RR3, World)" , GAME_IMPERFECT_SOUND|GAME_IMPERFECT_GRAPHICS ) /* 1994-01-17 */ GAME( 1993, ridgerac, 0, namcos22, ridgera, ridgeraj, ROT0, "Namco", "Ridge Racer (Rev. RR3, World)" , GAME_IMPERFECT_SOUND|GAME_IMPERFECT_GRAPHICS ) /* 1994-01-17 */
GAME( 1993, ridgeracb, ridgerac, namcos22, ridgera, ridgeraj, ROT0, "Namco", "Ridge Racer (Rev. RR2, World)" , GAME_IMPERFECT_SOUND|GAME_IMPERFECT_GRAPHICS ) /* 1993-10-07 */ GAME( 1993, ridgeracb, ridgerac, namcos22, ridgera, ridgeraj, ROT0, "Namco", "Ridge Racer (Rev. RR2, World)" , GAME_IMPERFECT_SOUND|GAME_IMPERFECT_GRAPHICS ) /* 1993-10-07 */
GAME( 1993, ridgeracj, ridgerac, namcos22, ridgera, ridgeraj, ROT0, "Namco", "Ridge Racer (Rev. RR1, Japan)" , GAME_IMPERFECT_SOUND|GAME_IMPERFECT_GRAPHICS ) /* 1993-10-07 */ GAME( 1993, ridgeracj, ridgerac, namcos22, ridgera, ridgeraj, ROT0, "Namco", "Ridge Racer (Rev. RR1, Japan)" , GAME_IMPERFECT_SOUND|GAME_IMPERFECT_GRAPHICS ) /* 1993-10-07 */

View File

@ -244,9 +244,9 @@ ROM_END
Dump was made using custom adaptor, hence it is marked as bad dump. Dump was made using custom adaptor, hence it is marked as bad dump.
The real machine has following roms: The real machine has following roms:
0000...07FFh - ROM1 (D41) 0000...07FFh - ROM1 (D41)
0800...0FFFh - ROM2 (D42) 0800...0FFFh - ROM2 (D42)
1000...17FFh - ROM3 (D43) 1000...17FFh - ROM3 (D43)
*/ */
ROM_START( phpython ) ROM_START( phpython )
ROM_REGION( 0x20000, "maincpu", 0 ) ROM_REGION( 0x20000, "maincpu", 0 )

View File

@ -668,7 +668,7 @@ ROM_START( qixa )
ROM_LOAD( "u17_", 0xe800, 0x0800, CRC(bc091f21) SHA1(f3db149a794640e0826def688ab19a26750d9f1e) ) ROM_LOAD( "u17_", 0xe800, 0x0800, CRC(bc091f21) SHA1(f3db149a794640e0826def688ab19a26750d9f1e) )
ROM_LOAD( "u18_", 0xf000, 0x0800, CRC(610b19ce) SHA1(6d3d6012a4d0cd3ea82f4ab07582fa262feaaf97) ) ROM_LOAD( "u18_", 0xf000, 0x0800, CRC(610b19ce) SHA1(6d3d6012a4d0cd3ea82f4ab07582fa262feaaf97) )
ROM_LOAD( "u19_", 0xf800, 0x0800, CRC(11f957f4) SHA1(5700603b2d50eef6ab32316f59d70782a8ef4a6d) ) ROM_LOAD( "u19_", 0xf800, 0x0800, CRC(11f957f4) SHA1(5700603b2d50eef6ab32316f59d70782a8ef4a6d) )
ROM_REGION( 0x10000, "videocpu", 0 ) ROM_REGION( 0x10000, "videocpu", 0 )
ROM_LOAD( "u3_", 0xc000, 0x0800, CRC(79cf997c) SHA1(853cb88d371cd2d47caf60baa795caef9461815c) ) ROM_LOAD( "u3_", 0xc000, 0x0800, CRC(79cf997c) SHA1(853cb88d371cd2d47caf60baa795caef9461815c) )
ROM_LOAD( "u4_", 0xc800, 0x0800, CRC(e5ee74cd) SHA1(10fd95385d0d8667f739fe43a9fb26d2780840f9) ) ROM_LOAD( "u4_", 0xc800, 0x0800, CRC(e5ee74cd) SHA1(10fd95385d0d8667f739fe43a9fb26d2780840f9) )

View File

@ -26,7 +26,7 @@ Notes on version letters:
E = Export (It displays a "Outside USA use only" message) E = Export (It displays a "Outside USA use only" message)
R = ?? (In some games, it displays value of winning combinations, see e.g. fb4 Ver. R vs. Ver. LT) R = ?? (In some games, it displays value of winning combinations, see e.g. fb4 Ver. R vs. Ver. LT)
LT = ?? (It displays a "PT/TKT" message, so maybe it has a minimum amount of poits LT = ?? (It displays a "PT/TKT" message, so maybe it has a minimum amount of poits
needed to get a ticket) needed to get a ticket)
XT = Texas XT / Arkansas / Iowa XT = Texas XT / Arkansas / Iowa
N = ?? N = ??
@ -304,10 +304,10 @@ static INPUT_PORTS_START( amcoecommon )
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1) PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1)
INPUT_PORTS_END INPUT_PORTS_END
/* Games use 2 types of inputs: type 1 and type 2 (which is type 1 with reversed bits). /* Games use 2 types of inputs: type 1 and type 2 (which is type 1 with reversed bits).
Both come in 3 flavors (depending on the games): Both come in 3 flavors (depending on the games):
- fruit machines with 3 reels: Stop All, Stop 1, Stop 2, Stop 3, Bet; - fruit machines with 3 reels: Stop All, Stop 1, Stop 2, Stop 3, Bet;
- fruit machines with 4 reels: Stop 1, Stop 2, Stop 3, Stop 4, Bet; - fruit machines with 4 reels: Stop 1, Stop 2, Stop 3, Stop 4, Bet;
- poker: Hold 1, Hold 2, Hold 3, Hold 4, Hold 5 */ - poker: Hold 1, Hold 2, Hold 3, Hold 4, Hold 5 */
static INPUT_PORTS_START( amcoe1_reels3 ) static INPUT_PORTS_START( amcoe1_reels3 )
@ -796,7 +796,7 @@ static VIDEO_UPDATE(sfbonus)
sfbonus_1800_regs[7]); sfbonus_1800_regs[7]);
*/ */
if ((screen->machine->gamedrv->ipt == ipt_amcoe2_reels3) || (screen->machine->gamedrv->ipt == ipt_amcoe2_reels4) if ((screen->machine->gamedrv->ipt == ipt_amcoe2_reels3) || (screen->machine->gamedrv->ipt == ipt_amcoe2_reels4)
|| (screen->machine->gamedrv->ipt == ipt_amcoe2_poker)) || (screen->machine->gamedrv->ipt == ipt_amcoe2_poker))
{ {
// based on pirpok2 // based on pirpok2
@ -807,7 +807,7 @@ static VIDEO_UPDATE(sfbonus)
output_set_lamp_value(4, (sfbonus_1800_regs[4] & 0x4) >> 2); output_set_lamp_value(4, (sfbonus_1800_regs[4] & 0x4) >> 2);
output_set_lamp_value(5, (sfbonus_1800_regs[4] & 0x1) >> 0); output_set_lamp_value(5, (sfbonus_1800_regs[4] & 0x1) >> 0);
} }
else if ((screen->machine->gamedrv->ipt == ipt_amcoe1_reels3) || (screen->machine->gamedrv->ipt == ipt_amcoe1_reels4) else if ((screen->machine->gamedrv->ipt == ipt_amcoe1_reels3) || (screen->machine->gamedrv->ipt == ipt_amcoe1_reels4)
|| (screen->machine->gamedrv->ipt == ipt_amcoe1_poker)) || (screen->machine->gamedrv->ipt == ipt_amcoe1_poker))
{ {
output_set_lamp_value(0, (sfbonus_1800_regs[0] & 0x2) >> 1); output_set_lamp_value(0, (sfbonus_1800_regs[0] & 0x2) >> 1);
@ -5193,7 +5193,7 @@ static DRIVER_INIT( sfbonus_common)
// hack, because the debugger is broken // hack, because the debugger is broken
sfbonus_videoram = memory_region(machine, "debugram"); sfbonus_videoram = memory_region(machine, "debugram");
if (!sfbonus_videoram) if (!sfbonus_videoram)
sfbonus_videoram = auto_alloc_array(machine, UINT8, 0x10000); sfbonus_videoram = auto_alloc_array(machine, UINT8, 0x10000);
memset(sfbonus_videoram, 0xff, 0x10000); memset(sfbonus_videoram, 0xff, 0x10000);

View File

@ -10,32 +10,32 @@ OSC. : 3.579545MHz 18432.00KHz
Main processors are a pair of 68000 CPUs Main processors are a pair of 68000 CPUs
Sounds are generated by a Z80, a Yamaha 2151 and 3012, a Konami custom IC and a uPD7759C Sounds are generated by a Z80, a Yamaha 2151 and 3012, a Konami custom IC and a uPD7759C
Dark Adventure / Devil World / Majuu no Ohkoku Dark Adventure / Devil World / Majuu no Ohkoku
Vulcan Venture / Gradius II Vulcan Venture / Gradius II
Cuebrick Cuebrick
MIA (Japan) MIA (Japan)
Final Round / Hard Puncher (Japan) Final Round / Hard Puncher (Japan)
68000 Memory Map for Konami Twin System 68000 Memory Map for Konami Twin System
CPUA CPUB CPUA CPUB
0x000000..0x03ffff ROM 0x000000..0x03ffff 0x000000..0x03ffff ROM 0x000000..0x03ffff
0x040000..0x043fff communication RAM 0x040000..0x043fff (shared) 0x040000..0x043fff communication RAM 0x040000..0x043fff (shared)
0x060000..0x063fff work RAM 0x060000..0x063fff 0x060000..0x063fff work RAM 0x060000..0x063fff
0x080000..0x080fff palette 0x080000..0x080fff palette
0x080000..0x09ffff ROM (extra tile data) 0x080000..0x09ffff ROM (extra tile data)
0x0a0000..0x0a0001 IRQ control 0x0a0000..0x0a0001 0x0a0000..0x0a0001 IRQ control 0x0a0000..0x0a0001
0x0a0008..0x0a0009 sound command 0x0a0008..0x0a0009 sound command
0x0a0010..0xa00011 watchdog 0x0a0010..0xa00011 watchdog
0x0c0000..0x0c0001 screenflip 0x0c0000..0x0c0001 screenflip
0x0c0002..0x0c000f scroll registers 0x0c0002..0x0c000f scroll registers
0x100000..0x103fff FIXRAM (text layer) 0x100000..0x103fff FIXRAM (text layer)
0x120000..0x123fff VIDRAM (tilemaps) 0x480000..0x483fff (shared) 0x120000..0x123fff VIDRAM (tilemaps) 0x480000..0x483fff (shared)
0x140000..0x143fff OBJRAM (sprites) 0x400000..0x403fff (shared) 0x140000..0x143fff OBJRAM (sprites) 0x400000..0x403fff (shared)
ZIP RAM (tiles) 0x500000..0x53ffff ZIP RAM (tiles) 0x500000..0x53ffff
gfx ROM (banked) 0x600000..0x77ffff gfx ROM (banked) 0x600000..0x77ffff
sprite gfx RAM 0x780000..0x79ffff sprite gfx RAM 0x780000..0x79ffff
Known Issues: Known Issues:
- repeated uPD7759C samples in fround, disconnecting reset helps but doesn't fix it - repeated uPD7759C samples in fround, disconnecting reset helps but doesn't fix it
@ -115,13 +115,13 @@ static WRITE16_HANDLER( sound_command_w )
static WRITE16_HANDLER( twin16_CPUA_register_w ) static WRITE16_HANDLER( twin16_CPUA_register_w )
{ {
/* /*
7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0
X sprite processing disable X sprite processing disable
X IRQ5 enable (CPUA) X IRQ5 enable (CPUA)
X 0->1 trigger IRQ6 on CPUB X 0->1 trigger IRQ6 on CPUB
X 0->1 trigger IRQ on sound CPU X 0->1 trigger IRQ on sound CPU
x x x coin counters x x x coin counters
*/ */
UINT16 old = twin16_CPUA_register; UINT16 old = twin16_CPUA_register;
COMBINE_DATA(&twin16_CPUA_register); COMBINE_DATA(&twin16_CPUA_register);
if (twin16_CPUA_register != old) if (twin16_CPUA_register != old)
@ -144,11 +144,11 @@ static WRITE16_HANDLER( twin16_CPUA_register_w )
static WRITE16_HANDLER( twin16_CPUB_register_w ) static WRITE16_HANDLER( twin16_CPUB_register_w )
{ {
/* /*
7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0
X gfx bank select X gfx bank select
X IRQ5 enable X IRQ5 enable
X 0->1 trigger IRQ6 on CPUA X 0->1 trigger IRQ6 on CPUA
*/ */
UINT16 old = twin16_CPUB_register; UINT16 old = twin16_CPUB_register;
COMBINE_DATA(&twin16_CPUB_register); COMBINE_DATA(&twin16_CPUB_register);
if( twin16_CPUB_register!=old ) if( twin16_CPUB_register!=old )
@ -161,17 +161,17 @@ static WRITE16_HANDLER( twin16_CPUB_register_w )
static WRITE16_HANDLER( fround_CPU_register_w ) static WRITE16_HANDLER( fround_CPU_register_w )
{ {
/* /*
7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0
X 0->1 trigger IRQ on sound CPU X 0->1 trigger IRQ on sound CPU
x x coin counters x x coin counters
*/ */
UINT16 old = twin16_CPUA_register; UINT16 old = twin16_CPUA_register;
COMBINE_DATA(&twin16_CPUA_register); COMBINE_DATA(&twin16_CPUA_register);
if (twin16_CPUA_register != old) if (twin16_CPUA_register != old)
{ {
if ((old & 0x08) == 0 && (twin16_CPUA_register & 0x08)) if ((old & 0x08) == 0 && (twin16_CPUA_register & 0x08))
cputag_set_input_line_and_vector(space->machine, "audiocpu", 0, HOLD_LINE, 0xff); cputag_set_input_line_and_vector(space->machine, "audiocpu", 0, HOLD_LINE, 0xff);
coin_counter_w(0, twin16_CPUA_register & 0x01); coin_counter_w(0, twin16_CPUA_register & 0x01);
coin_counter_w(1, twin16_CPUA_register & 0x02); coin_counter_w(1, twin16_CPUA_register & 0x02);
} }
@ -240,7 +240,7 @@ static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 )
static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 16 ) static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x000000, 0x03ffff) AM_ROM AM_RANGE(0x000000, 0x03ffff) AM_ROM
AM_RANGE(0x040000, 0x043fff) AM_READWRITE(COMRAM_r, COMRAM_w) AM_RANGE(0x040000, 0x043fff) AM_READWRITE(COMRAM_r, COMRAM_w)
// AM_RANGE(0x044000, 0x04ffff) AM_NOP // miaj // AM_RANGE(0x044000, 0x04ffff) AM_NOP // miaj
AM_RANGE(0x060000, 0x063fff) AM_RAM AM_RANGE(0x060000, 0x063fff) AM_RAM
AM_RANGE(0x080000, 0x080fff) AM_RAM_WRITE(twin16_paletteram_word_w) AM_BASE(&paletteram16) AM_RANGE(0x080000, 0x080fff) AM_RAM_WRITE(twin16_paletteram_word_w) AM_BASE(&paletteram16)
AM_RANGE(0x081000, 0x081fff) AM_WRITENOP AM_RANGE(0x081000, 0x081fff) AM_WRITENOP
@ -253,7 +253,7 @@ static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x0c0000, 0x0c000f) AM_WRITE(twin16_video_register_w) AM_RANGE(0x0c0000, 0x0c000f) AM_WRITE(twin16_video_register_w)
AM_RANGE(0x0c000e, 0x0c000f) AM_READ(twin16_sprite_status_r) AM_RANGE(0x0c000e, 0x0c000f) AM_READ(twin16_sprite_status_r)
AM_RANGE(0x100000, 0x103fff) AM_RAM_WRITE(twin16_text_ram_w) AM_BASE(&twin16_text_ram) AM_RANGE(0x100000, 0x103fff) AM_RAM_WRITE(twin16_text_ram_w) AM_BASE(&twin16_text_ram)
// AM_RANGE(0x104000, 0x105fff) AM_NOP // miaj // AM_RANGE(0x104000, 0x105fff) AM_NOP // miaj
AM_RANGE(0x120000, 0x123fff) AM_RAM AM_BASE(&videoram16) AM_RANGE(0x120000, 0x123fff) AM_RAM AM_BASE(&videoram16)
AM_RANGE(0x140000, 0x143fff) AM_RAM AM_SHARE(1) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size) AM_RANGE(0x140000, 0x143fff) AM_RAM AM_SHARE(1) AM_BASE(&spriteram16) AM_SIZE(&spriteram_size)
ADDRESS_MAP_END ADDRESS_MAP_END
@ -261,7 +261,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( sub_map, ADDRESS_SPACE_PROGRAM, 16 ) static ADDRESS_MAP_START( sub_map, ADDRESS_SPACE_PROGRAM, 16 )
AM_RANGE(0x000000, 0x03ffff) AM_ROM AM_RANGE(0x000000, 0x03ffff) AM_ROM
AM_RANGE(0x040000, 0x043fff) AM_READWRITE(COMRAM_r, COMRAM_w) AM_RANGE(0x040000, 0x043fff) AM_READWRITE(COMRAM_r, COMRAM_w)
// AM_RANGE(0x044000, 0x04ffff) AM_NOP // miaj // AM_RANGE(0x044000, 0x04ffff) AM_NOP // miaj
AM_RANGE(0x060000, 0x063fff) AM_RAM AM_RANGE(0x060000, 0x063fff) AM_RAM
AM_RANGE(0x080000, 0x09ffff) AM_READ(extra_rom_r) AM_RANGE(0x080000, 0x09ffff) AM_READ(extra_rom_r)
AM_RANGE(0x0a0000, 0x0a0001) AM_WRITE(twin16_CPUB_register_w) AM_RANGE(0x0a0000, 0x0a0001) AM_WRITE(twin16_CPUB_register_w)
@ -704,11 +704,11 @@ static MACHINE_START( twin16 )
{ {
twin16_CPUA_register=0; twin16_CPUA_register=0;
twin16_CPUB_register=0; twin16_CPUB_register=0;
/* register for savestates */ /* register for savestates */
state_save_register_global(machine, twin16_CPUA_register); state_save_register_global(machine, twin16_CPUA_register);
state_save_register_global(machine, twin16_CPUB_register); state_save_register_global(machine, twin16_CPUB_register);
state_save_register_global(machine, twin16_sound_command); state_save_register_global(machine, twin16_sound_command);
state_save_register_global(machine, cuebrickj_nvram_bank); state_save_register_global(machine, cuebrickj_nvram_bank);
state_save_register_global_array(machine, cuebrickj_nvram); state_save_register_global_array(machine, cuebrickj_nvram);
@ -728,10 +728,10 @@ static MACHINE_DRIVER_START( twin16 )
MDRV_CPU_PROGRAM_MAP(sound_map) MDRV_CPU_PROGRAM_MAP(sound_map)
MDRV_QUANTUM_TIME(HZ(6000)) MDRV_QUANTUM_TIME(HZ(6000))
MDRV_MACHINE_START(twin16) MDRV_MACHINE_START(twin16)
MDRV_MACHINE_RESET(twin16) MDRV_MACHINE_RESET(twin16)
// video hardware // video hardware
MDRV_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS | VIDEO_BUFFERS_SPRITERAM) MDRV_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS | VIDEO_BUFFERS_SPRITERAM)
@ -783,10 +783,10 @@ static MACHINE_DRIVER_START( fround )
MDRV_CPU_PROGRAM_MAP(sound_map) MDRV_CPU_PROGRAM_MAP(sound_map)
MDRV_QUANTUM_TIME(HZ(6000)) MDRV_QUANTUM_TIME(HZ(6000))
MDRV_MACHINE_START(twin16) MDRV_MACHINE_START(twin16)
MDRV_MACHINE_RESET(twin16) MDRV_MACHINE_RESET(twin16)
/* video hardware */ /* video hardware */
MDRV_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS | VIDEO_BUFFERS_SPRITERAM) MDRV_VIDEO_ATTRIBUTES(VIDEO_HAS_SHADOWS | VIDEO_BUFFERS_SPRITERAM)

View File

@ -1851,11 +1851,11 @@ MACHINE_DRIVER_END
/******************************************************************************/ /******************************************************************************/
/* correct label format. revision number is stamped(red), other letters are printed(black) /* correct label format. revision number is stamped(red), other letters are printed(black)
game code in line 1, ROM position in line 2 game code in line 1, ROM position in line 2
i.e. i.e.
MDS-DH3 MDS-DH3
1B or 6B e 1B or 6B e
*/ */
@ -2508,7 +2508,7 @@ ROM_START( iceclmrj )
ROM_REGION( 0x4000,"gfx2", 0 ) /* PPU memory */ ROM_REGION( 0x4000,"gfx2", 0 ) /* PPU memory */
ROM_LOAD( "mds-ic4-4_8b a.bin", 0x0000, 0x2000, CRC(331460b4) SHA1(4cf94d711cdb5715d14f1ab3cadec245e0adfb1e) ) ROM_LOAD( "mds-ic4-4_8b a.bin", 0x0000, 0x2000, CRC(331460b4) SHA1(4cf94d711cdb5715d14f1ab3cadec245e0adfb1e) )
ROM_LOAD( "mds-ic4-4_8a a.bin", 0x2000, 0x2000, CRC(4ec44fb3) SHA1(676e0ab574dec08df562c6f278e8a9cc7c8afa41) ) ROM_LOAD( "mds-ic4-4_8a a.bin", 0x2000, 0x2000, CRC(4ec44fb3) SHA1(676e0ab574dec08df562c6f278e8a9cc7c8afa41) )
ROM_END ROM_END
/******************************************************************************/ /******************************************************************************/

View File

@ -493,7 +493,7 @@ struct SNES_PPU_STRUCT /* once all the regs are saved in this structure, it woul
UINT8 bg3_priority_bit; UINT8 bg3_priority_bit;
UINT8 direct_color; UINT8 direct_color;
UINT8 ppu_last_scroll; /* as per Anomie's doc and Theme Park, all scroll regs shares (but mode 7 ones) the same UINT8 ppu_last_scroll; /* as per Anomie's doc and Theme Park, all scroll regs shares (but mode 7 ones) the same
'previous' scroll value */ 'previous' scroll value */
UINT8 mode7_last_scroll; /* as per Anomie's doc mode 7 scroll regs use a different value, shared with mode 7 matrix! */ UINT8 mode7_last_scroll; /* as per Anomie's doc mode 7 scroll regs use a different value, shared with mode 7 matrix! */
UINT8 main_bg_enabled[5]; // these would probably better fit the layer struct, but it would make worse the code in snes_update_mode_X() UINT8 main_bg_enabled[5]; // these would probably better fit the layer struct, but it would make worse the code in snes_update_mode_X()

View File

@ -950,7 +950,7 @@ WRITE64_HANDLER( dc_g1_ctrl_w )
mame_printf_verbose("G1CTRL: unsupported transfer\n"); mame_printf_verbose("G1CTRL: unsupported transfer\n");
return; return;
} }
// printf("ROM board DMA to %x (PC %x)\n", g1bus_regs[SB_GDSTAR], cpu_get_pc(space->cpu)); // printf("ROM board DMA to %x (PC %x)\n", g1bus_regs[SB_GDSTAR], cpu_get_pc(space->cpu));
ROM = (UINT8 *)devtag_get_info_ptr(space->machine, "rom_board", DEVINFO_PTR_MEMORY); ROM = (UINT8 *)devtag_get_info_ptr(space->machine, "rom_board", DEVINFO_PTR_MEMORY);
dmaoffset = (UINT32)devtag_get_info_int(space->machine, "rom_board", DEVINFO_INT_DMAOFFSET); dmaoffset = (UINT32)devtag_get_info_int(space->machine, "rom_board", DEVINFO_INT_DMAOFFSET);
ddtdata.destination=g1bus_regs[SB_GDSTAR]; // destination address ddtdata.destination=g1bus_regs[SB_GDSTAR]; // destination address

View File

@ -330,7 +330,7 @@ static void init_save_state(const device_config *device)
state_save_register_device_item(device, 0, v->aw_offset); state_save_register_device_item(device, 0, v->aw_offset);
state_save_register_device_item(device, 0, v->aw_file_base); state_save_register_device_item(device, 0, v->aw_file_base);
state_save_register_device_item(device, 0, v->aw_file_offset); state_save_register_device_item(device, 0, v->aw_file_offset);
} }

View File

@ -555,18 +555,18 @@ static WRITE8_HANDLER( mmc1_rom_switch_w )
break; break;
case 1: /* video rom banking - bank 0 - 4k or 8k */ case 1: /* video rom banking - bank 0 - 4k or 8k */
if (vram) if (vram)
set_videoram_bank(space->machine, 0, (vrom4k) ? 4 : 8, (mmc1_shiftreg & 0x1f), 4); set_videoram_bank(space->machine, 0, (vrom4k) ? 4 : 8, (mmc1_shiftreg & 0x1f), 4);
else else
pc10_set_videorom_bank(space->machine, 0, (vrom4k) ? 4 : 8, (mmc1_shiftreg & 0x1f), 4); pc10_set_videorom_bank(space->machine, 0, (vrom4k) ? 4 : 8, (mmc1_shiftreg & 0x1f), 4);
break; break;
case 2: /* video rom banking - bank 1 - 4k only */ case 2: /* video rom banking - bank 1 - 4k only */
if (vrom4k) if (vrom4k)
{ {
if (vram) if (vram)
set_videoram_bank(space->machine, 0, (vrom4k) ? 4 : 8, (mmc1_shiftreg & 0x1f), 4); set_videoram_bank(space->machine, 0, (vrom4k) ? 4 : 8, (mmc1_shiftreg & 0x1f), 4);
else else
pc10_set_videorom_bank(space->machine, 4, 4, (mmc1_shiftreg & 0x1f), 4); pc10_set_videorom_bank(space->machine, 4, 4, (mmc1_shiftreg & 0x1f), 4);
} }
break; break;

View File

@ -72,7 +72,7 @@ static void snes_latch_counters(running_machine *machine)
snes_ppu.beam.latch_vert = video_screen_get_vpos(machine->primary_screen); snes_ppu.beam.latch_vert = video_screen_get_vpos(machine->primary_screen);
snes_ppu.beam.latch_horz = snes_ppu.beam.current_horz; snes_ppu.beam.latch_horz = snes_ppu.beam.current_horz;
snes_ram[STAT78] |= 0x40; // indicate we latched snes_ram[STAT78] |= 0x40; // indicate we latched
// read_ophct = read_opvct = 0; // clear read flags - 2009-08: I think we must clear these when STAT78 is read... // read_ophct = read_opvct = 0; // clear read flags - 2009-08: I think we must clear these when STAT78 is read...
// printf("latched @ H %d V %d\n", snes_ppu.beam.latch_horz, snes_ppu.beam.latch_vert); // printf("latched @ H %d V %d\n", snes_ppu.beam.latch_horz, snes_ppu.beam.latch_vert);
} }
@ -359,12 +359,12 @@ READ8_HANDLER( snes_r_io )
return snes_ppu.ppu1_open_bus; return snes_ppu.ppu1_open_bus;
// According to BSNES, these should return snes_open_bus_r! // According to BSNES, these should return snes_open_bus_r!
// case OAMADDL: // case OAMADDL:
// case OAMADDH: // case OAMADDH:
// case VMADDH: // case VMADDH:
// case CGADD: // case CGADD:
// case CGDATA: // case CGDATA:
// return snes_ram[offset]; // return snes_ram[offset];
case MPYL: /* Multiplication result (low) */ case MPYL: /* Multiplication result (low) */
{ {
/* Perform 16bit * 8bit multiply */ /* Perform 16bit * 8bit multiply */
@ -560,7 +560,7 @@ READ8_HANDLER( snes_r_io )
value = ((joypad[1].low | (joypad[1].high << 8) | 0x10000) >> (15 - (joypad[1].oldrol++ % 16))) & 0x1; value = ((joypad[1].low | (joypad[1].high << 8) | 0x10000) >> (15 - (joypad[1].oldrol++ % 16))) & 0x1;
if( !(joypad[1].oldrol % 17) ) if( !(joypad[1].oldrol % 17) )
value = 0x1; value = 0x1;
//value |= 0x1c; // bits 4, 3, and 2 are always set //value |= 0x1c; // bits 4, 3, and 2 are always set
return value | 0x1c | (snes_open_bus_r(space,0) & 0xe0); //correct? return value | 0x1c | (snes_open_bus_r(space,0) & 0xe0); //correct?
} }
case HTIMEL: case HTIMEL:
@ -649,7 +649,7 @@ READ8_HANDLER( snes_r_io )
} }
/* Unsupported reads returns open bus */ /* Unsupported reads returns open bus */
// printf("%02x %02x\n",offset,snes_open_bus_r(space,0)); // printf("%02x %02x\n",offset,snes_open_bus_r(space,0));
return snes_open_bus_r(space,0); return snes_open_bus_r(space,0);
} }

View File

@ -783,7 +783,7 @@ static WRITE8_HANDLER( drmario_rom_banking )
break; break;
case 1: /* video rom banking - bank 0 - 4k or 8k */ case 1: /* video rom banking - bank 0 - 4k or 8k */
if (!vram) if (!vram)
v_set_videorom_bank(space->machine, 0, (vrom4k) ? 4 : 8, drmario_shiftreg, (vrom4k) ? 4 : 8); v_set_videorom_bank(space->machine, 0, (vrom4k) ? 4 : 8, drmario_shiftreg, (vrom4k) ? 4 : 8);
break; break;

View File

@ -237,7 +237,7 @@ const game_driver * const drivers[] =
DRIVER( kkgalax ) /* 1981 bootleg */ DRIVER( kkgalax ) /* 1981 bootleg */
DRIVER( porter ) /* 1982 bootleg (Arcade TV Game List - P.98, Left, 15 from bottom) */ DRIVER( porter ) /* 1982 bootleg (Arcade TV Game List - P.98, Left, 15 from bottom) */
DRIVER( tdpgal ) /* 1983 Design Labs / Thomas Automatics */ DRIVER( tdpgal ) /* 1983 Design Labs / Thomas Automatics */
/* Has some similarities with Moon Cresta but Board is very different */ /* Has some similarities with Moon Cresta but Board is very different */
DRIVER( rockclim ) /* (c)1981 Taito */ DRIVER( rockclim ) /* (c)1981 Taito */
@ -9200,7 +9200,7 @@ Other Sun games
DRIVER( kgbirda ) /* (c) 1996 */ DRIVER( kgbirda ) /* (c) 1996 */
DRIVER( phantomp ) /* (c) 1998 */ DRIVER( phantomp ) /* (c) 1998 */
DRIVER( swtht2nz ) /* (c) 1998 */ DRIVER( swtht2nz ) /* (c) 1998 */
DRIVER( topgear ) /* (c) 1996 */ DRIVER( topgear ) /* (c) 1996 */
/* Aristocrat Mk5 hardware */ /* Aristocrat Mk5 hardware */
DRIVER( swthrt2v ) /* (c) 1995 */ DRIVER( swthrt2v ) /* (c) 1995 */
@ -9475,8 +9475,8 @@ Other Sun games
DRIVER( moneymacv1 )/* (c) 200? Amcoe */ DRIVER( moneymacv1 )/* (c) 200? Amcoe */
DRIVER( moneymacd2 )/* (c) 200? Amcoe */ DRIVER( moneymacd2 )/* (c) 200? Amcoe */
DRIVER( moneymacv2 )/* (c) 200? Amcoe */ DRIVER( moneymacv2 )/* (c) 200? Amcoe */
//DRIVER( atworld ) /* (c) 2007 Amcoe - Around The World (year listed on Amcoe web site) */ //DRIVER( atworld ) /* (c) 2007 Amcoe - Around The World (year listed on Amcoe web site) */
//DRIVER( atworldd1 ) /* (c) 2007 Amcoe (year listed on Amcoe web site) */ //DRIVER( atworldd1 ) /* (c) 2007 Amcoe (year listed on Amcoe web site) */
DRIVER( chsuper3 ) /* unknown */ DRIVER( chsuper3 ) /* unknown */

View File

@ -83,10 +83,10 @@ static TILE_GET_INFO( prosport_get_back_tile_info )
int tile; int tile;
/* /*
robiza notes: robiza notes:
- flip y (handled with a +0x10 tile banking) depends only by position of the tile in the screen - flip y (handled with a +0x10 tile banking) depends only by position of the tile in the screen
- bits 0-3 are not used by gfx hardware; the value is the color of the pixel in the map (golf) - bits 0-3 are not used by gfx hardware; the value is the color of the pixel in the map (golf)
*/ */
tile = (prosport_bg_vram[tile_index] & 0xf0)>>4; tile = (prosport_bg_vram[tile_index] & 0xf0)>>4;

View File

@ -1018,7 +1018,7 @@ READ8_HANDLER( ppu2c0x_palette_read )
if (this_ppu->regs[PPU_CONTROL1] & PPU_CONTROL1_DISPLAY_MONO) if (this_ppu->regs[PPU_CONTROL1] & PPU_CONTROL1_DISPLAY_MONO)
return (this_ppu->palette_ram[offset & 0x1f] & 0x30); return (this_ppu->palette_ram[offset & 0x1f] & 0x30);
else else
return (this_ppu->palette_ram[offset & 0x1f] & 0x3f); return (this_ppu->palette_ram[offset & 0x1f] & 0x3f);
} }
} }

View File

@ -404,8 +404,8 @@ INLINE void snes_update_line( UINT8 screen, UINT8 color_depth, UINT8 hires, UINT
/* scrolling */ /* scrolling */
UINT32 basevmap; UINT32 basevmap;
UINT16 vscroll, hscroll, vtilescroll; UINT16 vscroll, hscroll, vtilescroll;
// UINT16 offset_per_tile_valid; // UINT16 offset_per_tile_valid;
// UINT8 offset_per_tile_mode; // UINT8 offset_per_tile_mode;
UINT8 vshift, hshift, tile_size; UINT8 vshift, hshift, tile_size;
/* variables depending on color_depth */ /* variables depending on color_depth */
UINT8 color_shift = 0; UINT8 color_shift = 0;
@ -491,7 +491,7 @@ INLINE void snes_update_line( UINT8 screen, UINT8 color_depth, UINT8 hires, UINT
wrap_around_x = 0; /* Make sure we don't do this again */ wrap_around_x = 0; /* Make sure we don't do this again */
} }
//if (tmap > 0x10000) //<- causes corrupt tiles in places, needed? //if (tmap > 0x10000) //<- causes corrupt tiles in places, needed?
// tmap %= 0x10000; // tmap %= 0x10000;
vflip = snes_vram[tmap + ii + 1] & 0x80; vflip = snes_vram[tmap + ii + 1] & 0x80;
hflip = snes_vram[tmap + ii + 1] & 0x40; hflip = snes_vram[tmap + ii + 1] & 0x40;

View File

@ -77,7 +77,7 @@ WRITE16_HANDLER( twin16_video_register_w )
flip_screen_x_set(space->machine, video_register & TWIN16_SCREEN_FLIPX); flip_screen_x_set(space->machine, video_register & TWIN16_SCREEN_FLIPX);
flip_screen_y_set(space->machine, video_register & TWIN16_SCREEN_FLIPY); flip_screen_y_set(space->machine, video_register & TWIN16_SCREEN_FLIPY);
break; break;
case 1: COMBINE_DATA( &scrollx[0] ); break; case 1: COMBINE_DATA( &scrollx[0] ); break;
@ -130,9 +130,9 @@ WRITE16_HANDLER( twin16_video_register_w )
* 2 | -------xxxxxxxxx | xpos * 2 | -------xxxxxxxxx | xpos
* -----+------------------+ * -----+------------------+
* 3 | x--------------- | enable * 3 | x--------------- | enable
* 3 | -x-------------- | priority ? * 3 | -x-------------- | priority ?
* 3 | -----x---------- | no shadow ? * 3 | -----x---------- | no shadow ?
* 3 | ------x--------- | yflip ? * 3 | ------x--------- | yflip ?
* 3 | -------x-------- | xflip * 3 | -------x-------- | xflip
* 3 | --------xx------ | height * 3 | --------xx------ | height
* 3 | ----------xx---- | width * 3 | ----------xx---- | width
@ -153,11 +153,11 @@ static TIMER_CALLBACK( twin16_sprite_tick )
static int twin16_set_sprite_timer( running_machine *machine ) static int twin16_set_sprite_timer( running_machine *machine )
{ {
if (twin16_sprite_busy) return 1; if (twin16_sprite_busy) return 1;
// sprite system busy, maybe a dma? time is guessed, assume 4 scanlines // sprite system busy, maybe a dma? time is guessed, assume 4 scanlines
twin16_sprite_busy = 1; twin16_sprite_busy = 1;
timer_adjust_oneshot(twin16_sprite_timer, attotime_make(0,(((screen_config *)(machine->primary_screen)->inline_config)->refresh) / video_screen_get_height(machine->primary_screen) * 4), 0); timer_adjust_oneshot(twin16_sprite_timer, attotime_make(0,(((screen_config *)(machine->primary_screen)->inline_config)->refresh) / video_screen_get_height(machine->primary_screen) * 4), 0);
return 0; return 0;
} }
@ -165,13 +165,13 @@ void twin16_spriteram_process( running_machine *machine )
{ {
UINT16 dx = scrollx[0]; UINT16 dx = scrollx[0];
UINT16 dy = scrolly[0]; UINT16 dy = scrolly[0];
const UINT16 *source = &spriteram16[0x0000]; const UINT16 *source = &spriteram16[0x0000];
const UINT16 *finish = &spriteram16[0x1800]; const UINT16 *finish = &spriteram16[0x1800];
twin16_set_sprite_timer(machine); twin16_set_sprite_timer(machine);
memset(&spriteram16[0x1800],0xff,0x800*sizeof(UINT16)); memset(&spriteram16[0x1800],0xff,0x800*sizeof(UINT16));
while( source<finish ) while( source<finish )
{ {
UINT16 priority = source[0]; UINT16 priority = source[0];
@ -181,36 +181,36 @@ void twin16_spriteram_process( running_machine *machine )
UINT32 xpos = (0x10000*source[4])|source[5]; UINT32 xpos = (0x10000*source[4])|source[5];
UINT32 ypos = (0x10000*source[6])|source[7]; UINT32 ypos = (0x10000*source[6])|source[7];
/* notes on uncertain attributes: /* notes on uncertain attributes:
shadows: pen $F only (like other Konami hw), used in devilw, fround, shadows: pen $F only (like other Konami hw), used in devilw, fround,
miaj? (shadows are solid in tmnt hw version), miaj? (shadows are solid in tmnt hw version),
gradius2? (ship exhaust) gradius2? (ship exhaust)
sprite-background priority: in devilw, most sprites look best at high priority, sprite-background priority: in devilw, most sprites look best at high priority,
in gradius2, most sprites look best at low priority. exceptions: in gradius2, most sprites look best at low priority. exceptions:
- devilw prologue: sprites behind crowd (maybe more, haven't completed the game) - devilw prologue: sprites behind crowd (maybe more, haven't completed the game)
- gradius2 intro showing earlier games: sprites above layers - gradius2 intro showing earlier games: sprites above layers
currently using (priority&0x200), broken: currently using (priority&0x200), broken:
- devilw prologue: sprites should be behind crowd - devilw prologue: sprites should be behind crowd
- gradius2 level 7: bosses should be behind portal (ok except brain boss and mouth boss) - gradius2 level 7: bosses should be behind portal (ok except brain boss and mouth boss)
- gradius2 ending: sun should be behind planet - gradius2 ending: sun should be behind planet
does TWIN16_PLANE_ORDER affect it? does TWIN16_PLANE_ORDER affect it?
more? more?
devilw monster dens exploding monochrome, players fading to white in prologue, and trees in devilw monster dens exploding monochrome, players fading to white in prologue, and trees in
the 1st level shrinking with a solid green color look odd, maybe alpha blended? the 1st level shrinking with a solid green color look odd, maybe alpha blended?
fround, hpuncher, miaj, cuebrickj, don't use the preprocessor. all sprites are expected fround, hpuncher, miaj, cuebrickj, don't use the preprocessor. all sprites are expected
to be high priority, and shadows are enabled to be high priority, and shadows are enabled
*/ */
UINT16 attributes = 0x8000| // enabled UINT16 attributes = 0x8000| // enabled
(source[2]&0x03ff)| // scale,size,color (source[2]&0x03ff)| // scale,size,color
(source[2]&0x4000)>>4| // no-shadow? (gradius2 level 7 boss sets this bit and appears to expect pen $F to be solid) (source[2]&0x4000)>>4| // no-shadow? (gradius2 level 7 boss sets this bit and appears to expect pen $F to be solid)
(priority&0x200)<<5; // sprite-background priority? (priority&0x200)<<5; // sprite-background priority?
dest[0] = source[3]; /* gfx data */ dest[0] = source[3]; /* gfx data */
dest[1] = ((xpos>>8) - dx)&0xffff; dest[1] = ((xpos>>8) - dx)&0xffff;
dest[2] = ((ypos>>8) - dy)&0xffff; dest[2] = ((ypos>>8) - dy)&0xffff;
@ -236,7 +236,7 @@ static void draw_sprites( running_machine *machine, bitmap_t *bitmap )
int xpos = source[1]; int xpos = source[1];
int ypos = source[2]; int ypos = source[2];
int x,y; int x,y;
int pal_base = ((attributes&0xf)+0x10)*16; int pal_base = ((attributes&0xf)+0x10)*16;
int height = 16<<((attributes>>6)&0x3); int height = 16<<((attributes>>6)&0x3);
int width = 16<<((attributes>>4)&0x3); int width = 16<<((attributes>>4)&0x3);
@ -244,7 +244,7 @@ static void draw_sprites( running_machine *machine, bitmap_t *bitmap )
int flipy = attributes&0x0200; int flipy = attributes&0x0200;
int flipx = attributes&0x0100; int flipx = attributes&0x0100;
int priority = (attributes&0x4000)?TWIN16_SPRITE_PRI_L1:TWIN16_SPRITE_PRI_L2; int priority = (attributes&0x4000)?TWIN16_SPRITE_PRI_L1:TWIN16_SPRITE_PRI_L2;
if( twin16_custom_video ) { if( twin16_custom_video ) {
/* fround board */ /* fround board */
pen_data = twin16_gfx_rom + 0x80000; pen_data = twin16_gfx_rom + 0x80000;
@ -278,7 +278,7 @@ static void draw_sprites( running_machine *machine, bitmap_t *bitmap )
if ((height&width) == 64) code &= ~8; // gradius2 ending sequence 64*64 if ((height&width) == 64) code &= ~8; // gradius2 ending sequence 64*64
else if ((height&width) == 32) code &= ~3; // devilw 32*32 else if ((height&width) == 32) code &= ~3; // devilw 32*32
else if ((height|width) == 48) code &= ~1; // devilw 32*16 / 16*32 else if ((height|width) == 48) code &= ~1; // devilw 32*16 / 16*32
pen_data += code*0x40; pen_data += code*0x40;
if( video_register&TWIN16_SCREEN_FLIPY ) if( video_register&TWIN16_SCREEN_FLIPY )
@ -295,7 +295,7 @@ static void draw_sprites( running_machine *machine, bitmap_t *bitmap )
} }
if( xpos>=320 ) xpos -= 65536; if( xpos>=320 ) xpos -= 65536;
if( ypos>=256 ) ypos -= 65536; if( ypos>=256 ) ypos -= 65536;
/* slow slow slow, but it's ok for now */ /* slow slow slow, but it's ok for now */
for( y=0; y<height; y++, pen_data += width/4 ) for( y=0; y<height; y++, pen_data += width/4 )
{ {
@ -304,18 +304,18 @@ static void draw_sprites( running_machine *machine, bitmap_t *bitmap )
{ {
UINT16 *dest = BITMAP_ADDR16(bitmap, sy, 0); UINT16 *dest = BITMAP_ADDR16(bitmap, sy, 0);
UINT8 *pdest = BITMAP_ADDR8(machine->priority_bitmap, sy, 0); UINT8 *pdest = BITMAP_ADDR8(machine->priority_bitmap, sy, 0);
for( x=0; x<width; x++ ) for( x=0; x<width; x++ )
{ {
int sx = (flipx)?(xpos+width-1-x):(xpos+x); int sx = (flipx)?(xpos+width-1-x):(xpos+x);
if( sx>=0 && sx<320 ) if( sx>=0 && sx<320 )
{ {
UINT16 pen = pen_data[x>>2]>>((~x&3)<<2)&0xf; UINT16 pen = pen_data[x>>2]>>((~x&3)<<2)&0xf;
if( pen ) if( pen )
{ {
int shadow = (pen==0xf) & ((attributes&0x400)==0); int shadow = (pen==0xf) & ((attributes&0x400)==0);
if (pdest[sx]<priority) { if (pdest[sx]<priority) {
if (shadow) { if (shadow) {
dest[sx] = machine->shadow_table[dest[sx]]; dest[sx] = machine->shadow_table[dest[sx]];
@ -330,7 +330,7 @@ static void draw_sprites( running_machine *machine, bitmap_t *bitmap )
dest[sx] = machine->shadow_table[pal_base + pen]; dest[sx] = machine->shadow_table[pal_base + pen];
pdest[sx]^=TWIN16_SPRITE_CAST_SHADOW; pdest[sx]^=TWIN16_SPRITE_CAST_SHADOW;
} }
pdest[sx]|=TWIN16_SPRITE_OCCUPIED; pdest[sx]|=TWIN16_SPRITE_OCCUPIED;
} }
} }
@ -352,7 +352,7 @@ static void draw_layer( running_machine *machine, bitmap_t *bitmap, int opaque )
int dx, dy, palette; int dx, dy, palette;
int tile_flipx = video_register&TWIN16_TILE_FLIPX; int tile_flipx = video_register&TWIN16_TILE_FLIPX;
int tile_flipy = video_register&TWIN16_TILE_FLIPY; int tile_flipy = video_register&TWIN16_TILE_FLIPY;
if( ((video_register&TWIN16_PLANE_ORDER)?1:0) != opaque ) { if( ((video_register&TWIN16_PLANE_ORDER)?1:0) != opaque ) {
source += 0x1000; source += 0x1000;
dx = scrollx[2]; dx = scrollx[2];
@ -421,10 +421,10 @@ static void draw_layer( running_machine *machine, bitmap_t *bitmap, int opaque )
{ {
int code = source[i]; int code = source[i];
/* fedcba9876543210 /* fedcba9876543210
xxx------------- color xxx------------- color
---xx----------- tile bank ---xx----------- tile bank
-----xxxxxxxxxxx tile number -----xxxxxxxxxxx tile number
*/ */
const UINT16 *gfx_data = gfx_base + (code&0x7ff)*16 + bank_table[(code>>11)&0x3]*0x8000; const UINT16 *gfx_data = gfx_base + (code&0x7ff)*16 + bank_table[(code>>11)&0x3]*0x8000;
int color = (code>>13); int color = (code>>13);
int pal_base = 16*(0x20+color+8*palette); int pal_base = 16*(0x20+color+8*palette);
@ -477,18 +477,18 @@ static TILE_GET_INFO( get_text_tile_info )
const UINT16 *source = twin16_text_ram; const UINT16 *source = twin16_text_ram;
int attr = source[tile_index]; int attr = source[tile_index];
/* fedcba9876543210 /* fedcba9876543210
-x-------------- yflip -x-------------- yflip
--x------------- xflip --x------------- xflip
---xxxx--------- color ---xxxx--------- color
-------xxxxxxxxx tile number -------xxxxxxxxx tile number
*/ */
int code = attr & 0x1ff; int code = attr & 0x1ff;
int color = (attr >> 9) & 0x0f; int color = (attr >> 9) & 0x0f;
int flags=0; int flags=0;
if (attr&0x2000) flags|=TILE_FLIPX; if (attr&0x2000) flags|=TILE_FLIPX;
if (attr&0x4000) flags|=TILE_FLIPY; if (attr&0x4000) flags|=TILE_FLIPY;
SET_TILE_INFO(0, code, color, flags); SET_TILE_INFO(0, code, color, flags);
} }
@ -496,17 +496,17 @@ VIDEO_START( twin16 )
{ {
text_tilemap = tilemap_create(machine, get_text_tile_info, tilemap_scan_rows, 8, 8, 64, 32); text_tilemap = tilemap_create(machine, get_text_tile_info, tilemap_scan_rows, 8, 8, 64, 32);
tilemap_set_transparent_pen(text_tilemap, 0); tilemap_set_transparent_pen(text_tilemap, 0);
memset(twin16_sprite_buffer,0xff,0x800*sizeof(UINT16)); memset(twin16_sprite_buffer,0xff,0x800*sizeof(UINT16));
twin16_sprite_busy = 0; twin16_sprite_busy = 0;
twin16_sprite_timer = timer_alloc(machine, twin16_sprite_tick, NULL); twin16_sprite_timer = timer_alloc(machine, twin16_sprite_tick, NULL);
timer_adjust_oneshot(twin16_sprite_timer, attotime_never, 0); timer_adjust_oneshot(twin16_sprite_timer, attotime_never, 0);
/* register for savestates */ /* register for savestates */
state_save_register_global_array(machine, twin16_sprite_buffer); state_save_register_global_array(machine, twin16_sprite_buffer);
state_save_register_global_array(machine, scrollx); state_save_register_global_array(machine, scrollx);
state_save_register_global_array(machine, scrolly); state_save_register_global_array(machine, scrolly);
state_save_register_global(machine, need_process_spriteram); state_save_register_global(machine, need_process_spriteram);
state_save_register_global(machine, gfx_bank); state_save_register_global(machine, gfx_bank);
state_save_register_global(machine, video_register); state_save_register_global(machine, video_register);
@ -518,12 +518,12 @@ VIDEO_UPDATE( twin16 )
int text_flip=0; int text_flip=0;
if (video_register&TWIN16_SCREEN_FLIPX) text_flip|=TILEMAP_FLIPX; if (video_register&TWIN16_SCREEN_FLIPX) text_flip|=TILEMAP_FLIPX;
if (video_register&TWIN16_SCREEN_FLIPY) text_flip|=TILEMAP_FLIPY; if (video_register&TWIN16_SCREEN_FLIPY) text_flip|=TILEMAP_FLIPY;
bitmap_fill(screen->machine->priority_bitmap,cliprect,0); bitmap_fill(screen->machine->priority_bitmap,cliprect,0);
draw_layer( screen->machine, bitmap, 1 ); draw_layer( screen->machine, bitmap, 1 );
draw_layer( screen->machine, bitmap, 0 ); draw_layer( screen->machine, bitmap, 0 );
draw_sprites( screen->machine, bitmap ); draw_sprites( screen->machine, bitmap );
if (text_flip) tilemap_set_flip(text_tilemap, text_flip); if (text_flip) tilemap_set_flip(text_tilemap, text_flip);
tilemap_draw(bitmap, cliprect, text_tilemap, 0, 0); tilemap_draw(bitmap, cliprect, text_tilemap, 0, 0);
return 0; return 0;
@ -532,14 +532,14 @@ VIDEO_UPDATE( twin16 )
VIDEO_EOF( twin16 ) VIDEO_EOF( twin16 )
{ {
twin16_set_sprite_timer(machine); twin16_set_sprite_timer(machine);
if (twin16_spriteram_process_enable()) { if (twin16_spriteram_process_enable()) {
if (need_process_spriteram) twin16_spriteram_process(machine); if (need_process_spriteram) twin16_spriteram_process(machine);
need_process_spriteram = 1; need_process_spriteram = 1;
/* if the sprite preprocessor is used, sprite ram is copied to an external buffer first, /* if the sprite preprocessor is used, sprite ram is copied to an external buffer first,
as evidenced by 1-frame sprite lag in gradius2 and devilw otherwise, though there's probably as evidenced by 1-frame sprite lag in gradius2 and devilw otherwise, though there's probably
more to it than that */ more to it than that */
memcpy(&buffered_spriteram16[0x1800],twin16_sprite_buffer,0x800*sizeof(UINT16)); memcpy(&buffered_spriteram16[0x1800],twin16_sprite_buffer,0x800*sizeof(UINT16));
memcpy(twin16_sprite_buffer,&spriteram16[0x1800],0x800*sizeof(UINT16)); memcpy(twin16_sprite_buffer,&spriteram16[0x1800],0x800*sizeof(UINT16));
} }

View File

@ -10,4 +10,4 @@
***************************************************************************/ ***************************************************************************/
extern const char build_version[]; extern const char build_version[];
const char build_version[] = "0.133u1 ("__DATE__")"; const char build_version[] = "0.133u2 ("__DATE__")";