Cleanups and version bump.

This commit is contained in:
Aaron Giles 2010-01-28 08:03:44 +00:00
parent a8bd722f18
commit fe3d7c4af4
45 changed files with 388 additions and 388 deletions

View File

@ -225,7 +225,7 @@ static CPU_RESET( am29000 )
static CPU_EXIT( am29000 ) static CPU_EXIT( am29000 )
{ {
} }
@ -989,7 +989,7 @@ CPU_GET_INFO( am29000 )
am29000->cps & CPS_DA ? 'D' : '.', am29000->cps & CPS_DA ? 'D' : '.',
(am29000->r[1] >> 2) & 0x7f); break; (am29000->r[1] >> 2) & 0x7f); break;
case CPUINFO_STR_REGISTER + AM29000_PC: sprintf(info->s, "PC: %08X", am29000->pc); break; case CPUINFO_STR_REGISTER + AM29000_PC: sprintf(info->s, "PC: %08X", am29000->pc); break;
case CPUINFO_STR_REGISTER + AM29000_VAB: sprintf(info->s, "VAB: %08X", am29000->vab); break; case CPUINFO_STR_REGISTER + AM29000_VAB: sprintf(info->s, "VAB: %08X", am29000->vab); break;
case CPUINFO_STR_REGISTER + AM29000_OPS: sprintf(info->s, "OPS: %08X", am29000->ops); break; case CPUINFO_STR_REGISTER + AM29000_OPS: sprintf(info->s, "OPS: %08X", am29000->ops); break;
case CPUINFO_STR_REGISTER + AM29000_CPS: sprintf(info->s, "CPS: %08X", am29000->cps); break; case CPUINFO_STR_REGISTER + AM29000_CPS: sprintf(info->s, "CPS: %08X", am29000->cps); break;

View File

@ -334,7 +334,7 @@ enum
#define PROCESSOR_REL_FIELD (PRL_AM29000 | PRL_REV_D) #define PROCESSOR_REL_FIELD (PRL_AM29000 | PRL_REV_D)
#define VAB_SHIFT (16) #define VAB_SHIFT (16)
#define VAB_MASK (0xffff) #define VAB_MASK (0xffff)
#define CPS_CA (1 << 15) #define CPS_CA (1 << 15)

View File

@ -167,7 +167,7 @@ CPU_DISASSEMBLE( am29000 )
case 0x18: case 0x19: sprintf(buffer, "addcs %s", TYPE_1); break; case 0x18: case 0x19: sprintf(buffer, "addcs %s", TYPE_1); break;
case 0x1a: case 0x1b: sprintf(buffer, "addcu %s", TYPE_1); break; case 0x1a: case 0x1b: sprintf(buffer, "addcu %s", TYPE_1); break;
case 0x1c: case 0x1d: sprintf(buffer, "addc %s", TYPE_1); break; case 0x1c: case 0x1d: sprintf(buffer, "addc %s", TYPE_1); break;
case 0x1e: case 0x1f: sprintf(buffer, "store %s", TYPE_6); break; case 0x1e: case 0x1f: sprintf(buffer, "store %s", TYPE_6); break;
case 0x20: case 0x21: sprintf(buffer, "subs %s", TYPE_1); break; case 0x20: case 0x21: sprintf(buffer, "subs %s", TYPE_1); break;
case 0x22: case 0x23: sprintf(buffer, "subu %s", TYPE_1); break; case 0x22: case 0x23: sprintf(buffer, "subu %s", TYPE_1); break;
case 0x24: case 0x25: sprintf(buffer, "sub %s", TYPE_1); break; case 0x24: case 0x25: sprintf(buffer, "sub %s", TYPE_1); break;
@ -180,9 +180,9 @@ CPU_DISASSEMBLE( am29000 )
case 0x32: case 0x33: sprintf(buffer, "subru %s", TYPE_1); break; case 0x32: case 0x33: sprintf(buffer, "subru %s", TYPE_1); break;
case 0x34: case 0x35: sprintf(buffer, "subr %s", TYPE_1); break; case 0x34: case 0x35: sprintf(buffer, "subr %s", TYPE_1); break;
case 0x36: case 0x37: sprintf(buffer, "loadm %s", TYPE_6); break; case 0x36: case 0x37: sprintf(buffer, "loadm %s", TYPE_6); break;
case 0x38: case 0x39: sprintf(buffer, "subrcs %s", TYPE_1); break; case 0x38: case 0x39: sprintf(buffer, "subrcs %s", TYPE_1); break;
case 0x3a: case 0x3b: sprintf(buffer, "subrcu %s", TYPE_1); break; case 0x3a: case 0x3b: sprintf(buffer, "subrcu %s", TYPE_1); break;
case 0x3c: case 0x3d: sprintf(buffer, "subrc %s", TYPE_1); break; case 0x3c: case 0x3d: sprintf(buffer, "subrc %s", TYPE_1); break;
case 0x3e: case 0x3f: sprintf(buffer, "storem %s", TYPE_6); break; case 0x3e: case 0x3f: sprintf(buffer, "storem %s", TYPE_6); break;
case 0x40: case 0x41: sprintf(buffer, "cplt %s", TYPE_1); break; case 0x40: case 0x41: sprintf(buffer, "cplt %s", TYPE_1); break;
case 0x42: case 0x43: sprintf(buffer, "cpltu %s", TYPE_1); break; case 0x42: case 0x43: sprintf(buffer, "cpltu %s", TYPE_1); break;

View File

@ -194,9 +194,9 @@ static void write_spr(am29000_state *am29000, UINT32 idx, UINT32 val)
case SPR_CR: am29000->chc &= ~(CHC_CR_MASK << CHC_CR_SHIFT); case SPR_CR: am29000->chc &= ~(CHC_CR_MASK << CHC_CR_SHIFT);
am29000->chc |= (val & CHC_CR_MASK) << CHC_CR_SHIFT; am29000->chc |= (val & CHC_CR_MASK) << CHC_CR_SHIFT;
break; break;
// case SPR_FPE: // case SPR_FPE:
// case SPR_INTE: // case SPR_INTE:
// case SPR_FPS: // case SPR_FPS:
default: logerror("Unhandled SPR write (%d)\n", idx); default: logerror("Unhandled SPR write (%d)\n", idx);
} }
} }
@ -215,7 +215,7 @@ static void ADD(am29000_state *am29000)
UINT32 a = GET_RA_VAL; UINT32 a = GET_RA_VAL;
UINT32 b = INST_M_BIT ? I8: GET_RB_VAL; UINT32 b = INST_M_BIT ? I8: GET_RB_VAL;
UINT32 r = a + b; UINT32 r = a + b;
if (!FREEZE_MODE) if (!FREEZE_MODE)
{ {
SET_ALU_V_ADD(r, a, b); SET_ALU_V_ADD(r, a, b);
@ -247,7 +247,7 @@ static void ADDCS(am29000_state *am29000)
UINT32 a = GET_RA_VAL; UINT32 a = GET_RA_VAL;
UINT32 b = INST_M_BIT ? I8: GET_RB_VAL; UINT32 b = INST_M_BIT ? I8: GET_RB_VAL;
UINT32 r = a + b + GET_CARRY; UINT32 r = a + b + GET_CARRY;
if (!FREEZE_MODE) if (!FREEZE_MODE)
{ {
UINT32 carry = GET_CARRY; UINT32 carry = GET_CARRY;
@ -276,7 +276,7 @@ static void SUB(am29000_state *am29000)
UINT32 a = GET_RA_VAL; UINT32 a = GET_RA_VAL;
UINT32 b = INST_M_BIT ? I8 : GET_RB_VAL; UINT32 b = INST_M_BIT ? I8 : GET_RB_VAL;
UINT32 r = a - b; UINT32 r = a - b;
if (!FREEZE_MODE) if (!FREEZE_MODE)
{ {
SET_ALU_V_SUB(r, a, b); SET_ALU_V_SUB(r, a, b);
@ -294,7 +294,7 @@ static void SUBS(am29000_state *am29000)
UINT32 a = GET_RA_VAL; UINT32 a = GET_RA_VAL;
UINT32 b = INST_M_BIT ? I8 : GET_RB_VAL; UINT32 b = INST_M_BIT ? I8 : GET_RB_VAL;
UINT32 r = a - b; UINT32 r = a - b;
if (!FREEZE_MODE) if (!FREEZE_MODE)
{ {
SET_ALU_V_SUB(r, a, b); SET_ALU_V_SUB(r, a, b);
@ -334,7 +334,7 @@ static void SUBR(am29000_state *am29000)
UINT32 a = GET_RA_VAL; UINT32 a = GET_RA_VAL;
UINT32 b = INST_M_BIT ? I8 : GET_RB_VAL; UINT32 b = INST_M_BIT ? I8 : GET_RB_VAL;
UINT32 r = b - a; UINT32 r = b - a;
if (!FREEZE_MODE) if (!FREEZE_MODE)
{ {
SET_ALU_V_SUB(r, a, b); SET_ALU_V_SUB(r, a, b);
@ -361,7 +361,7 @@ static void SUBRC(am29000_state *am29000)
UINT32 a = GET_RA_VAL; UINT32 a = GET_RA_VAL;
UINT32 b = INST_M_BIT ? I8 : GET_RB_VAL; UINT32 b = INST_M_BIT ? I8 : GET_RB_VAL;
UINT32 r = b - a - 1 + GET_CARRY; UINT32 r = b - a - 1 + GET_CARRY;
if (!FREEZE_MODE) if (!FREEZE_MODE)
{ {
SET_ALU_V_SUB(r, a, b); SET_ALU_V_SUB(r, a, b);
@ -523,7 +523,7 @@ static void DIV(am29000_state *am29000)
c = (UINT32)(r) < (UINT32)(a); c = (UINT32)(r) < (UINT32)(a);
} }
df = (~(c ^ (am29000->alu >> ALU_DF_SHIFT) ^ (am29000->alu >> ALU_N_SHIFT)) & 1); df = (~(c ^ (am29000->alu >> ALU_DF_SHIFT) ^ (am29000->alu >> ALU_N_SHIFT)) & 1);
if (!FREEZE_MODE) if (!FREEZE_MODE)
@ -781,7 +781,7 @@ static void AND(am29000_state *am29000)
UINT32 a = GET_RA_VAL; UINT32 a = GET_RA_VAL;
UINT32 b = INST_M_BIT ? I8: GET_RB_VAL; UINT32 b = INST_M_BIT ? I8: GET_RB_VAL;
UINT32 r = a & b; UINT32 r = a & b;
if (!FREEZE_MODE) if (!FREEZE_MODE)
{ {
SET_ALU_Z(r); SET_ALU_Z(r);
@ -796,7 +796,7 @@ static void ANDN(am29000_state *am29000)
UINT32 a = GET_RA_VAL; UINT32 a = GET_RA_VAL;
UINT32 b = INST_M_BIT ? I8: GET_RB_VAL; UINT32 b = INST_M_BIT ? I8: GET_RB_VAL;
UINT32 r = a & ~b; UINT32 r = a & ~b;
if (!FREEZE_MODE) if (!FREEZE_MODE)
{ {
SET_ALU_Z(r); SET_ALU_Z(r);
@ -811,7 +811,7 @@ static void NAND(am29000_state *am29000)
UINT32 a = GET_RA_VAL; UINT32 a = GET_RA_VAL;
UINT32 b = INST_M_BIT ? I8: GET_RB_VAL; UINT32 b = INST_M_BIT ? I8: GET_RB_VAL;
UINT32 r = ~(a & b); UINT32 r = ~(a & b);
if (!FREEZE_MODE) if (!FREEZE_MODE)
{ {
SET_ALU_Z(r); SET_ALU_Z(r);
@ -826,7 +826,7 @@ static void OR(am29000_state *am29000)
UINT32 a = GET_RA_VAL; UINT32 a = GET_RA_VAL;
UINT32 b = INST_M_BIT ? I8: GET_RB_VAL; UINT32 b = INST_M_BIT ? I8: GET_RB_VAL;
UINT32 r = a | b; UINT32 r = a | b;
if (!FREEZE_MODE) if (!FREEZE_MODE)
{ {
SET_ALU_Z(r); SET_ALU_Z(r);
@ -841,7 +841,7 @@ static void NOR(am29000_state *am29000)
UINT32 a = GET_RA_VAL; UINT32 a = GET_RA_VAL;
UINT32 b = INST_M_BIT ? I8: GET_RB_VAL; UINT32 b = INST_M_BIT ? I8: GET_RB_VAL;
UINT32 r = ~(a | b); UINT32 r = ~(a | b);
if (!FREEZE_MODE) if (!FREEZE_MODE)
{ {
SET_ALU_Z(r); SET_ALU_Z(r);
@ -856,7 +856,7 @@ static void XOR(am29000_state *am29000)
UINT32 a = GET_RA_VAL; UINT32 a = GET_RA_VAL;
UINT32 b = INST_M_BIT ? I8: GET_RB_VAL; UINT32 b = INST_M_BIT ? I8: GET_RB_VAL;
UINT32 r = a ^ b; UINT32 r = a ^ b;
if (!FREEZE_MODE) if (!FREEZE_MODE)
{ {
SET_ALU_Z(r); SET_ALU_Z(r);
@ -871,7 +871,7 @@ static void XNOR(am29000_state *am29000)
UINT32 a = GET_RA_VAL; UINT32 a = GET_RA_VAL;
UINT32 b = INST_M_BIT ? I8: GET_RB_VAL; UINT32 b = INST_M_BIT ? I8: GET_RB_VAL;
UINT32 r = ~(a ^ b); UINT32 r = ~(a ^ b);
if (!FREEZE_MODE) if (!FREEZE_MODE)
{ {
SET_ALU_Z(r); SET_ALU_Z(r);
@ -891,7 +891,7 @@ static void SLL(am29000_state *am29000)
UINT32 a = GET_RA_VAL; UINT32 a = GET_RA_VAL;
UINT32 b = (INST_M_BIT ? I8: GET_RB_VAL) & 0x1f; UINT32 b = (INST_M_BIT ? I8: GET_RB_VAL) & 0x1f;
UINT32 r = a << b; UINT32 r = a << b;
am29000->r[RC] = r; am29000->r[RC] = r;
} }
@ -900,7 +900,7 @@ static void SRL(am29000_state *am29000)
UINT32 a = GET_RA_VAL; UINT32 a = GET_RA_VAL;
UINT32 b = (INST_M_BIT ? I8: GET_RB_VAL) & 0x1f; UINT32 b = (INST_M_BIT ? I8: GET_RB_VAL) & 0x1f;
UINT32 r = a >> b; UINT32 r = a >> b;
am29000->r[RC] = r; am29000->r[RC] = r;
} }
@ -909,7 +909,7 @@ static void SRA(am29000_state *am29000)
INT32 a = GET_RA_VAL; INT32 a = GET_RA_VAL;
UINT32 b = (INST_M_BIT ? I8: GET_RB_VAL) & 0x1f; UINT32 b = (INST_M_BIT ? I8: GET_RB_VAL) & 0x1f;
UINT32 r = a >> b; UINT32 r = a >> b;
am29000->r[RC] = r; am29000->r[RC] = r;
} }
@ -918,7 +918,7 @@ static void EXTRACT(am29000_state *am29000)
INT32 a = GET_RA_VAL; INT32 a = GET_RA_VAL;
UINT32 b = (INST_M_BIT ? I8: GET_RB_VAL); UINT32 b = (INST_M_BIT ? I8: GET_RB_VAL);
UINT64 r; UINT64 r;
r = (((UINT64)a << 32) | b) << GET_ALU_FC; r = (((UINT64)a << 32) | b) << GET_ALU_FC;
am29000->r[RC] = r >> 32; am29000->r[RC] = r >> 32;
@ -960,8 +960,8 @@ static void LOAD(am29000_state *am29000)
} }
} }
// if (opt & 2) // if (opt & 2)
// logerror("Am29000: Half word LOAD\n"); // logerror("Am29000: Half word LOAD\n");
if (!FREEZE_MODE) if (!FREEZE_MODE)
{ {
@ -1047,7 +1047,7 @@ static void LOADM(am29000_state *am29000)
{ {
am29000->r[r] = memory_read_dword_32be(am29000->data, addr); am29000->r[r] = memory_read_dword_32be(am29000->data, addr);
// SET_CHC_CR(cnt - 1); // SET_CHC_CR(cnt - 1);
addr += 4; addr += 4;
if (++r == 256) if (++r == 256)
@ -1161,7 +1161,7 @@ static void STOREM(am29000_state *am29000)
{ {
memory_write_dword_32be(am29000->data, addr, am29000->r[r]); memory_write_dword_32be(am29000->data, addr, am29000->r[r]);
// SET_CHC_CR(cnt - 1); // SET_CHC_CR(cnt - 1);
addr += 4; addr += 4;
if (++r == 256) if (++r == 256)

View File

@ -101,7 +101,7 @@ struct _v30mz_state
UINT32 ea; UINT32 ea;
UINT16 eo; UINT16 eo;
UINT16 e16; UINT16 e16;
const nec_config *config; const nec_config *config;
}; };
@ -944,7 +944,7 @@ static void nec_init(running_device *device, cpu_irq_callback irqcallback, int t
v30mz_state *cpustate = get_safe_token(device); v30mz_state *cpustate = get_safe_token(device);
const nec_config *config = &default_config; const nec_config *config = &default_config;
state_save_register_device_item_array(device, 0, cpustate->regs.w); state_save_register_device_item_array(device, 0, cpustate->regs.w);
state_save_register_device_item_array(device, 0, cpustate->sregs); state_save_register_device_item_array(device, 0, cpustate->sregs);

View File

@ -108,13 +108,13 @@ struct debug_view_xy
class registers_subview_item class registers_subview_item
{ {
DISABLE_COPYING(registers_subview_item); DISABLE_COPYING(registers_subview_item);
public: public:
registers_subview_item() registers_subview_item()
: next(NULL), : next(NULL),
index(0), index(0),
device(NULL) { } device(NULL) { }
registers_subview_item *next; /* link to next item */ registers_subview_item *next; /* link to next item */
int index; /* index of this item */ int index; /* index of this item */
astring name; /* name of the subview item */ astring name; /* name of the subview item */
@ -126,7 +126,7 @@ public:
class disasm_subview_item class disasm_subview_item
{ {
DISABLE_COPYING(disasm_subview_item); DISABLE_COPYING(disasm_subview_item);
public: public:
disasm_subview_item() disasm_subview_item()
: next(NULL), : next(NULL),
@ -144,7 +144,7 @@ public:
class memory_subview_item class memory_subview_item
{ {
DISABLE_COPYING(memory_subview_item); DISABLE_COPYING(memory_subview_item);
public: public:
memory_subview_item() memory_subview_item()
: next(NULL), : next(NULL),

View File

@ -73,7 +73,7 @@ void device_list::import_config_list(const device_config_list &list, running_mac
{ {
// remember the machine for later use // remember the machine for later use
machine = &_machine; machine = &_machine;
// append each device from the configuration list // append each device from the configuration list
for (const device_config *devconfig = list.first(); devconfig != NULL; devconfig = devconfig->next) for (const device_config *devconfig = list.first(); devconfig != NULL; devconfig = devconfig->next)
append(devconfig->tag, new running_device(_machine, *devconfig)); append(devconfig->tag, new running_device(_machine, *devconfig));
@ -97,7 +97,7 @@ void device_list::start_all()
int numstarted = 0; int numstarted = 0;
while (numstarted < devcount) while (numstarted < devcount)
{ {
// iterate over devices and start them // iterate over devices and start them
int prevstarted = numstarted; int prevstarted = numstarted;
for (running_device *device = first(); device != NULL; device = device->next) for (running_device *device = first(); device != NULL; device = device->next)
if (!device->started) if (!device->started)
@ -308,7 +308,7 @@ astring &device_config::subtag(astring &dest, const char *_tag) const
/*------------------------------------------------- /*-------------------------------------------------
siblingtag - create a tag for an object that siblingtag - create a tag for an object that
a sibling to this device a sibling to this device
-------------------------------------------------*/ -------------------------------------------------*/
@ -360,7 +360,7 @@ running_device::running_device(running_machine &_machine, const device_config &_
/*------------------------------------------------- /*-------------------------------------------------
~running_device - destructor for a ~running_device - destructor for a
running_device running_device
-------------------------------------------------*/ -------------------------------------------------*/

View File

@ -46,88 +46,88 @@ enum device_class
// state constants passed to the device_get_config_func // state constants passed to the device_get_config_func
enum enum
{ {
// --- the following bits of info are returned as 64-bit signed integers --- // --- the following bits of info are returned as 64-bit signed integers ---
DEVINFO_INT_FIRST = 0x00000, DEVINFO_INT_FIRST = 0x00000,
DEVINFO_INT_TOKEN_BYTES = DEVINFO_INT_FIRST, // R/O: bytes to allocate for the token DEVINFO_INT_TOKEN_BYTES = DEVINFO_INT_FIRST, // R/O: bytes to allocate for the token
DEVINFO_INT_INLINE_CONFIG_BYTES, // R/O: bytes to allocate for the inline configuration DEVINFO_INT_INLINE_CONFIG_BYTES, // R/O: bytes to allocate for the inline configuration
DEVINFO_INT_CLASS, // R/O: the device's class DEVINFO_INT_CLASS, // R/O: the device's class
DEVINFO_INT_ENDIANNESS, // R/O: either ENDIANNESS_BIG or ENDIANNESS_LITTLE DEVINFO_INT_ENDIANNESS, // R/O: either ENDIANNESS_BIG or ENDIANNESS_LITTLE
DEVINFO_INT_DATABUS_WIDTH, // R/O: data bus size for each address space (8,16,32,64) DEVINFO_INT_DATABUS_WIDTH, // R/O: data bus size for each address space (8,16,32,64)
DEVINFO_INT_DATABUS_WIDTH_0 = DEVINFO_INT_DATABUS_WIDTH + 0, DEVINFO_INT_DATABUS_WIDTH_0 = DEVINFO_INT_DATABUS_WIDTH + 0,
DEVINFO_INT_DATABUS_WIDTH_1 = DEVINFO_INT_DATABUS_WIDTH + 1, DEVINFO_INT_DATABUS_WIDTH_1 = DEVINFO_INT_DATABUS_WIDTH + 1,
DEVINFO_INT_DATABUS_WIDTH_2 = DEVINFO_INT_DATABUS_WIDTH + 2, DEVINFO_INT_DATABUS_WIDTH_2 = DEVINFO_INT_DATABUS_WIDTH + 2,
DEVINFO_INT_DATABUS_WIDTH_3 = DEVINFO_INT_DATABUS_WIDTH + 3, DEVINFO_INT_DATABUS_WIDTH_3 = DEVINFO_INT_DATABUS_WIDTH + 3,
DEVINFO_INT_DATABUS_WIDTH_LAST = DEVINFO_INT_DATABUS_WIDTH + ADDRESS_SPACES - 1, DEVINFO_INT_DATABUS_WIDTH_LAST = DEVINFO_INT_DATABUS_WIDTH + ADDRESS_SPACES - 1,
DEVINFO_INT_ADDRBUS_WIDTH, // R/O: address bus size for each address space (12-32) DEVINFO_INT_ADDRBUS_WIDTH, // R/O: address bus size for each address space (12-32)
DEVINFO_INT_ADDRBUS_WIDTH_0 = DEVINFO_INT_ADDRBUS_WIDTH + 0, DEVINFO_INT_ADDRBUS_WIDTH_0 = DEVINFO_INT_ADDRBUS_WIDTH + 0,
DEVINFO_INT_ADDRBUS_WIDTH_1 = DEVINFO_INT_ADDRBUS_WIDTH + 1, DEVINFO_INT_ADDRBUS_WIDTH_1 = DEVINFO_INT_ADDRBUS_WIDTH + 1,
DEVINFO_INT_ADDRBUS_WIDTH_2 = DEVINFO_INT_ADDRBUS_WIDTH + 2, DEVINFO_INT_ADDRBUS_WIDTH_2 = DEVINFO_INT_ADDRBUS_WIDTH + 2,
DEVINFO_INT_ADDRBUS_WIDTH_3 = DEVINFO_INT_ADDRBUS_WIDTH + 3, DEVINFO_INT_ADDRBUS_WIDTH_3 = DEVINFO_INT_ADDRBUS_WIDTH + 3,
DEVINFO_INT_ADDRBUS_WIDTH_LAST = DEVINFO_INT_ADDRBUS_WIDTH + ADDRESS_SPACES - 1, DEVINFO_INT_ADDRBUS_WIDTH_LAST = DEVINFO_INT_ADDRBUS_WIDTH + ADDRESS_SPACES - 1,
DEVINFO_INT_ADDRBUS_SHIFT, // R/O: shift applied to addresses each address space (+3 means >>3, -1 means <<1) DEVINFO_INT_ADDRBUS_SHIFT, // R/O: shift applied to addresses each address space (+3 means >>3, -1 means <<1)
DEVINFO_INT_ADDRBUS_SHIFT_0 = DEVINFO_INT_ADDRBUS_SHIFT + 0, DEVINFO_INT_ADDRBUS_SHIFT_0 = DEVINFO_INT_ADDRBUS_SHIFT + 0,
DEVINFO_INT_ADDRBUS_SHIFT_1 = DEVINFO_INT_ADDRBUS_SHIFT + 1, DEVINFO_INT_ADDRBUS_SHIFT_1 = DEVINFO_INT_ADDRBUS_SHIFT + 1,
DEVINFO_INT_ADDRBUS_SHIFT_2 = DEVINFO_INT_ADDRBUS_SHIFT + 2, DEVINFO_INT_ADDRBUS_SHIFT_2 = DEVINFO_INT_ADDRBUS_SHIFT + 2,
DEVINFO_INT_ADDRBUS_SHIFT_3 = DEVINFO_INT_ADDRBUS_SHIFT + 3, DEVINFO_INT_ADDRBUS_SHIFT_3 = DEVINFO_INT_ADDRBUS_SHIFT + 3,
DEVINFO_INT_ADDRBUS_SHIFT_LAST = DEVINFO_INT_ADDRBUS_SHIFT + ADDRESS_SPACES - 1, DEVINFO_INT_ADDRBUS_SHIFT_LAST = DEVINFO_INT_ADDRBUS_SHIFT + ADDRESS_SPACES - 1,
DEVINFO_INT_CLASS_SPECIFIC = 0x04000, // R/W: device-specific values start here DEVINFO_INT_CLASS_SPECIFIC = 0x04000, // R/W: device-specific values start here
DEVINFO_INT_DEVICE_SPECIFIC = 0x08000, // R/W: device-specific values start here DEVINFO_INT_DEVICE_SPECIFIC = 0x08000, // R/W: device-specific values start here
DEVINFO_INT_LAST = 0x0ffff, DEVINFO_INT_LAST = 0x0ffff,
// --- the following bits of info are returned as pointers --- // --- the following bits of info are returned as pointers ---
DEVINFO_PTR_FIRST = 0x10000, DEVINFO_PTR_FIRST = 0x10000,
DEVINFO_PTR_ROM_REGION = DEVINFO_PTR_FIRST, // R/O: pointer to device-specific ROM region DEVINFO_PTR_ROM_REGION = DEVINFO_PTR_FIRST, // R/O: pointer to device-specific ROM region
DEVINFO_PTR_MACHINE_CONFIG, // R/O: pointer to device-specific machine config DEVINFO_PTR_MACHINE_CONFIG, // R/O: pointer to device-specific machine config
DEVINFO_PTR_INTERNAL_MEMORY_MAP, // R/O: const addrmap_token *map DEVINFO_PTR_INTERNAL_MEMORY_MAP, // R/O: const addrmap_token *map
DEVINFO_PTR_INTERNAL_MEMORY_MAP_0 = DEVINFO_PTR_INTERNAL_MEMORY_MAP + 0, DEVINFO_PTR_INTERNAL_MEMORY_MAP_0 = DEVINFO_PTR_INTERNAL_MEMORY_MAP + 0,
DEVINFO_PTR_INTERNAL_MEMORY_MAP_1 = DEVINFO_PTR_INTERNAL_MEMORY_MAP + 1, DEVINFO_PTR_INTERNAL_MEMORY_MAP_1 = DEVINFO_PTR_INTERNAL_MEMORY_MAP + 1,
DEVINFO_PTR_INTERNAL_MEMORY_MAP_2 = DEVINFO_PTR_INTERNAL_MEMORY_MAP + 2, DEVINFO_PTR_INTERNAL_MEMORY_MAP_2 = DEVINFO_PTR_INTERNAL_MEMORY_MAP + 2,
DEVINFO_PTR_INTERNAL_MEMORY_MAP_3 = DEVINFO_PTR_INTERNAL_MEMORY_MAP + 3, DEVINFO_PTR_INTERNAL_MEMORY_MAP_3 = DEVINFO_PTR_INTERNAL_MEMORY_MAP + 3,
DEVINFO_PTR_INTERNAL_MEMORY_MAP_LAST = DEVINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACES - 1, DEVINFO_PTR_INTERNAL_MEMORY_MAP_LAST = DEVINFO_PTR_INTERNAL_MEMORY_MAP + ADDRESS_SPACES - 1,
DEVINFO_PTR_DEFAULT_MEMORY_MAP, // R/O: const addrmap_token *map DEVINFO_PTR_DEFAULT_MEMORY_MAP, // R/O: const addrmap_token *map
DEVINFO_PTR_DEFAULT_MEMORY_MAP_0 = DEVINFO_PTR_DEFAULT_MEMORY_MAP + 0, DEVINFO_PTR_DEFAULT_MEMORY_MAP_0 = DEVINFO_PTR_DEFAULT_MEMORY_MAP + 0,
DEVINFO_PTR_DEFAULT_MEMORY_MAP_1 = DEVINFO_PTR_DEFAULT_MEMORY_MAP + 1, DEVINFO_PTR_DEFAULT_MEMORY_MAP_1 = DEVINFO_PTR_DEFAULT_MEMORY_MAP + 1,
DEVINFO_PTR_DEFAULT_MEMORY_MAP_2 = DEVINFO_PTR_DEFAULT_MEMORY_MAP + 2, DEVINFO_PTR_DEFAULT_MEMORY_MAP_2 = DEVINFO_PTR_DEFAULT_MEMORY_MAP + 2,
DEVINFO_PTR_DEFAULT_MEMORY_MAP_3 = DEVINFO_PTR_DEFAULT_MEMORY_MAP + 3, DEVINFO_PTR_DEFAULT_MEMORY_MAP_3 = DEVINFO_PTR_DEFAULT_MEMORY_MAP + 3,
DEVINFO_PTR_DEFAULT_MEMORY_MAP_LAST = DEVINFO_PTR_DEFAULT_MEMORY_MAP + ADDRESS_SPACES - 1, DEVINFO_PTR_DEFAULT_MEMORY_MAP_LAST = DEVINFO_PTR_DEFAULT_MEMORY_MAP + ADDRESS_SPACES - 1,
DEVINFO_PTR_CLASS_SPECIFIC = 0x14000, // R/W: device-specific values start here DEVINFO_PTR_CLASS_SPECIFIC = 0x14000, // R/W: device-specific values start here
DEVINFO_PTR_DEVICE_SPECIFIC = 0x18000, // R/W: device-specific values start here DEVINFO_PTR_DEVICE_SPECIFIC = 0x18000, // R/W: device-specific values start here
DEVINFO_PTR_LAST = 0x1ffff, DEVINFO_PTR_LAST = 0x1ffff,
// --- the following bits of info are returned as pointers to functions --- // --- the following bits of info are returned as pointers to functions ---
DEVINFO_FCT_FIRST = 0x20000, DEVINFO_FCT_FIRST = 0x20000,
DEVINFO_FCT_START = DEVINFO_FCT_FIRST, // R/O: device_start_func DEVINFO_FCT_START = DEVINFO_FCT_FIRST, // R/O: device_start_func
DEVINFO_FCT_STOP, // R/O: device_stop_func DEVINFO_FCT_STOP, // R/O: device_stop_func
DEVINFO_FCT_RESET, // R/O: device_reset_func DEVINFO_FCT_RESET, // R/O: device_reset_func
DEVINFO_FCT_EXECUTE, // R/O: device_execute_func DEVINFO_FCT_EXECUTE, // R/O: device_execute_func
DEVINFO_FCT_VALIDITY_CHECK, // R/O: device_validity_check_func DEVINFO_FCT_VALIDITY_CHECK, // R/O: device_validity_check_func
DEVINFO_FCT_NVRAM, // R/O: device_nvram_func DEVINFO_FCT_NVRAM, // R/O: device_nvram_func
DEVINFO_FCT_CUSTOM_CONFIG, // R/O: device_custom_config_func DEVINFO_FCT_CUSTOM_CONFIG, // R/O: device_custom_config_func
DEVINFO_FCT_GET_RUNTIME_INFO, // R/O: device_get_runtime_info_func DEVINFO_FCT_GET_RUNTIME_INFO, // R/O: device_get_runtime_info_func
DEVINFO_FCT_CLASS_SPECIFIC = 0x24000, // R/W: device-specific values start here DEVINFO_FCT_CLASS_SPECIFIC = 0x24000, // R/W: device-specific values start here
DEVINFO_FCT_DEVICE_SPECIFIC = 0x28000, // R/W: device-specific values start here DEVINFO_FCT_DEVICE_SPECIFIC = 0x28000, // R/W: device-specific values start here
DEVINFO_FCT_LAST = 0x2ffff, DEVINFO_FCT_LAST = 0x2ffff,
// --- the following bits of info are returned as NULL-terminated strings --- // --- the following bits of info are returned as NULL-terminated strings ---
DEVINFO_STR_FIRST = 0x30000, DEVINFO_STR_FIRST = 0x30000,
DEVINFO_STR_NAME = DEVINFO_STR_FIRST, // R/O: name of the device DEVINFO_STR_NAME = DEVINFO_STR_FIRST, // R/O: name of the device
DEVINFO_STR_FAMILY, // R/O: family of the device DEVINFO_STR_FAMILY, // R/O: family of the device
DEVINFO_STR_VERSION, // R/O: version of the device DEVINFO_STR_VERSION, // R/O: version of the device
DEVINFO_STR_SOURCE_FILE, // R/O: file containing the device implementation DEVINFO_STR_SOURCE_FILE, // R/O: file containing the device implementation
DEVINFO_STR_CREDITS, // R/O: credits for the device implementation DEVINFO_STR_CREDITS, // R/O: credits for the device implementation
DEVINFO_STR_CLASS_SPECIFIC = 0x34000, // R/W: device-specific values start here DEVINFO_STR_CLASS_SPECIFIC = 0x34000, // R/W: device-specific values start here
DEVINFO_STR_DEVICE_SPECIFIC = 0x38000, // R/W: device-specific values start here DEVINFO_STR_DEVICE_SPECIFIC = 0x38000, // R/W: device-specific values start here
DEVINFO_STR_LAST = 0x3ffff DEVINFO_STR_LAST = 0x3ffff
}; };
@ -175,11 +175,11 @@ enum
#define DEVICE_NVRAM_CALL(name) DEVICE_NVRAM_NAME(name)(device, file, read_or_write) #define DEVICE_NVRAM_CALL(name) DEVICE_NVRAM_NAME(name)(device, file, read_or_write)
// macro for specifying a clock derived from an owning device // macro for specifying a clock derived from an owning device
#define DERIVED_CLOCK(num, den) (0xff000000 | ((num) << 12) | ((den) << 0)) #define DERIVED_CLOCK(num, den) (0xff000000 | ((num) << 12) | ((den) << 0))
// shorthand for accessing devices by machine/type/tag // shorthand for accessing devices by machine/type/tag
#define devtag_get_device(mach,tag) (mach)->device(tag) #define devtag_get_device(mach,tag) (mach)->device(tag)
#define devtag_reset(mach,tag) (mach)->device(tag)->reset() #define devtag_reset(mach,tag) (mach)->device(tag)->reset()
@ -222,14 +222,14 @@ typedef device_get_config_func device_type;
template<class T> class tagged_device_list : public tagged_list<T> template<class T> class tagged_device_list : public tagged_list<T>
{ {
typedef tagged_list<T> super; typedef tagged_list<T> super;
public: public:
// pull the generic forms forward // pull the generic forms forward
using super::first; using super::first;
using super::count; using super::count;
using super::index; using super::index;
using super::find; using super::find;
// provide type-specific overrides // provide type-specific overrides
T *first(device_type type) const T *first(device_type type) const
{ {
@ -237,14 +237,14 @@ public:
for (cur = super::first(); cur != NULL && cur->type != type; cur = cur->next) ; for (cur = super::first(); cur != NULL && cur->type != type; cur = cur->next) ;
return cur; return cur;
} }
int count(device_type type) const int count(device_type type) const
{ {
int num = 0; int num = 0;
for (const T *curdev = first(type); curdev != NULL; curdev = curdev->typenext()) num++; for (const T *curdev = first(type); curdev != NULL; curdev = curdev->typenext()) num++;
return num; return num;
} }
int index(device_type type, T *object) const int index(device_type type, T *object) const
{ {
int num = 0; int num = 0;
@ -252,13 +252,13 @@ public:
if (cur == object) return num; if (cur == object) return num;
return -1; return -1;
} }
int index(device_type type, const char *tag) const int index(device_type type, const char *tag) const
{ {
T *object = find(tag); T *object = find(tag);
return (object != NULL && object->type == type) ? index(type, object) : -1; return (object != NULL && object->type == type) ? index(type, object) : -1;
} }
T *find(device_type type, int index) const T *find(device_type type, int index) const
{ {
for (T *cur = first(type); cur != NULL; cur = cur->typenext()) for (T *cur = first(type); cur != NULL; cur = cur->typenext())
@ -273,14 +273,14 @@ public:
for (cur = super::first(); cur != NULL && cur->devclass != devclass; cur = cur->next) ; for (cur = super::first(); cur != NULL && cur->devclass != devclass; cur = cur->next) ;
return cur; return cur;
} }
int count(device_class devclass) const int count(device_class devclass) const
{ {
int num = 0; int num = 0;
for (const T *curdev = first(devclass); curdev != NULL; curdev = curdev->classnext()) num++; for (const T *curdev = first(devclass); curdev != NULL; curdev = curdev->classnext()) num++;
return num; return num;
} }
int index(device_class devclass, T *object) const int index(device_class devclass, T *object) const
{ {
int num = 0; int num = 0;
@ -288,13 +288,13 @@ public:
if (cur == object) return num; if (cur == object) return num;
return -1; return -1;
} }
int index(device_class devclass, const char *tag) const int index(device_class devclass, const char *tag) const
{ {
T *object = find(tag); T *object = find(tag);
return (object != NULL && object->devclass == devclass) ? index(devclass, object) : -1; return (object != NULL && object->devclass == devclass) ? index(devclass, object) : -1;
} }
T *find(device_class devclass, int index) const T *find(device_class devclass, int index) const
{ {
for (T *cur = first(devclass); cur != NULL; cur = cur->classnext()) for (T *cur = first(devclass); cur != NULL; cur = cur->classnext())
@ -312,10 +312,10 @@ typedef tagged_device_list<device_config> device_config_list;
class device_list : public tagged_device_list<running_device> class device_list : public tagged_device_list<running_device>
{ {
running_machine *machine; running_machine *machine;
static void static_reset(running_machine *machine); static void static_reset(running_machine *machine);
static void static_stop(running_machine *machine); static void static_stop(running_machine *machine);
public: public:
device_list(); device_list();
void import_config_list(const device_config_list &list, running_machine &machine); void import_config_list(const device_config_list &list, running_machine &machine);
@ -327,36 +327,36 @@ public:
// the actual deviceinfo union // the actual deviceinfo union
union deviceinfo union deviceinfo
{ {
INT64 i; // generic integers INT64 i; // generic integers
void * p; // generic pointers void * p; // generic pointers
genf * f; // generic function pointers genf * f; // generic function pointers
char * s; // generic strings char * s; // generic strings
device_start_func start; // DEVINFO_FCT_START device_start_func start; // DEVINFO_FCT_START
device_stop_func stop; // DEVINFO_FCT_STOP device_stop_func stop; // DEVINFO_FCT_STOP
device_reset_func reset; // DEVINFO_FCT_RESET device_reset_func reset; // DEVINFO_FCT_RESET
device_execute_func execute; // DEVINFO_FCT_EXECUTE device_execute_func execute; // DEVINFO_FCT_EXECUTE
device_validity_check_func validity_check; // DEVINFO_FCT_VALIDITY_CHECK device_validity_check_func validity_check; // DEVINFO_FCT_VALIDITY_CHECK
device_custom_config_func custom_config; // DEVINFO_FCT_CUSTOM_CONFIG device_custom_config_func custom_config; // DEVINFO_FCT_CUSTOM_CONFIG
device_nvram_func nvram; // DEVINFO_FCT_NVRAM device_nvram_func nvram; // DEVINFO_FCT_NVRAM
device_get_runtime_info_func get_runtime_info; // DEVINFO_FCT_GET_RUNTIME_INFO device_get_runtime_info_func get_runtime_info; // DEVINFO_FCT_GET_RUNTIME_INFO
const rom_entry * romregion; // DEVINFO_PTR_ROM_REGION const rom_entry * romregion; // DEVINFO_PTR_ROM_REGION
const machine_config_token *machine_config; // DEVINFO_PTR_MACHINE_CONFIG const machine_config_token *machine_config; // DEVINFO_PTR_MACHINE_CONFIG
const addrmap8_token * internal_map8; // DEVINFO_PTR_INTERNAL_MEMORY_MAP const addrmap8_token * internal_map8; // DEVINFO_PTR_INTERNAL_MEMORY_MAP
const addrmap16_token * internal_map16; // DEVINFO_PTR_INTERNAL_MEMORY_MAP const addrmap16_token * internal_map16; // DEVINFO_PTR_INTERNAL_MEMORY_MAP
const addrmap32_token * internal_map32; // DEVINFO_PTR_INTERNAL_MEMORY_MAP const addrmap32_token * internal_map32; // DEVINFO_PTR_INTERNAL_MEMORY_MAP
const addrmap64_token * internal_map64; // DEVINFO_PTR_INTERNAL_MEMORY_MAP const addrmap64_token * internal_map64; // DEVINFO_PTR_INTERNAL_MEMORY_MAP
const addrmap8_token * default_map8; // DEVINFO_PTR_DEFAULT_MEMORY_MAP const addrmap8_token * default_map8; // DEVINFO_PTR_DEFAULT_MEMORY_MAP
const addrmap16_token * default_map16; // DEVINFO_PTR_DEFAULT_MEMORY_MAP const addrmap16_token * default_map16; // DEVINFO_PTR_DEFAULT_MEMORY_MAP
const addrmap32_token * default_map32; // DEVINFO_PTR_DEFAULT_MEMORY_MAP const addrmap32_token * default_map32; // DEVINFO_PTR_DEFAULT_MEMORY_MAP
const addrmap64_token * default_map64; // DEVINFO_PTR_DEFAULT_MEMORY_MAP const addrmap64_token * default_map64; // DEVINFO_PTR_DEFAULT_MEMORY_MAP
}; };
// the configuration for a general device // the configuration for a general device
enum device_space enum device_space
{ {
AS_PROGRAM = 0, AS_PROGRAM = 0,
@ -369,7 +369,7 @@ enum device_space
class device_config class device_config
{ {
DISABLE_COPYING(device_config); DISABLE_COPYING(device_config);
public: public:
device_config(const device_config *owner, device_type type, const char *tag, UINT32 clock); device_config(const device_config *owner, device_type type, const char *tag, UINT32 clock);
virtual ~device_config(); virtual ~device_config();
@ -393,18 +393,18 @@ public:
virtual UINT8 databus_width(int spacenum = 0) const { return get_config_int(DEVINFO_INT_DATABUS_WIDTH + spacenum); } virtual UINT8 databus_width(int spacenum = 0) const { return get_config_int(DEVINFO_INT_DATABUS_WIDTH + spacenum); }
virtual UINT8 addrbus_width(int spacenum = 0) const { return get_config_int(DEVINFO_INT_ADDRBUS_WIDTH + spacenum); } virtual UINT8 addrbus_width(int spacenum = 0) const { return get_config_int(DEVINFO_INT_ADDRBUS_WIDTH + spacenum); }
virtual INT8 addrbus_shift(int spacenum = 0) const { return get_config_int(DEVINFO_INT_ADDRBUS_SHIFT + spacenum); } virtual INT8 addrbus_shift(int spacenum = 0) const { return get_config_int(DEVINFO_INT_ADDRBUS_SHIFT + spacenum); }
virtual const rom_entry *rom_region() const { return reinterpret_cast<const rom_entry *>(get_config_ptr(DEVINFO_PTR_ROM_REGION)); } virtual const rom_entry *rom_region() const { return reinterpret_cast<const rom_entry *>(get_config_ptr(DEVINFO_PTR_ROM_REGION)); }
virtual const machine_config_token *machine_config_tokens() const { return reinterpret_cast<const machine_config_token *>(get_config_ptr(DEVINFO_PTR_MACHINE_CONFIG)); } virtual const machine_config_token *machine_config_tokens() const { return reinterpret_cast<const machine_config_token *>(get_config_ptr(DEVINFO_PTR_MACHINE_CONFIG)); }
virtual const addrmap_token *internal_map(int spacenum = 0) const { return reinterpret_cast<const addrmap_token *>(get_config_ptr(DEVINFO_PTR_INTERNAL_MEMORY_MAP + spacenum)); } virtual const addrmap_token *internal_map(int spacenum = 0) const { return reinterpret_cast<const addrmap_token *>(get_config_ptr(DEVINFO_PTR_INTERNAL_MEMORY_MAP + spacenum)); }
virtual const addrmap_token *default_map(int spacenum = 0) const { return reinterpret_cast<const addrmap_token *>(get_config_ptr(DEVINFO_PTR_DEFAULT_MEMORY_MAP + spacenum)); } virtual const addrmap_token *default_map(int spacenum = 0) const { return reinterpret_cast<const addrmap_token *>(get_config_ptr(DEVINFO_PTR_DEFAULT_MEMORY_MAP + spacenum)); }
virtual const char *name() const { return get_config_string(DEVINFO_STR_NAME); } virtual const char *name() const { return get_config_string(DEVINFO_STR_NAME); }
virtual const char *family() const { return get_config_string(DEVINFO_STR_FAMILY); } virtual const char *family() const { return get_config_string(DEVINFO_STR_FAMILY); }
virtual const char *version() const { return get_config_string(DEVINFO_STR_VERSION); } virtual const char *version() const { return get_config_string(DEVINFO_STR_VERSION); }
virtual const char *source_file() const { return get_config_string(DEVINFO_STR_SOURCE_FILE); } virtual const char *source_file() const { return get_config_string(DEVINFO_STR_SOURCE_FILE); }
virtual const char *credits() const { return get_config_string(DEVINFO_STR_CREDITS); } virtual const char *credits() const { return get_config_string(DEVINFO_STR_CREDITS); }
INT64 get_config_int(UINT32 state) const; INT64 get_config_int(UINT32 state) const;
void *get_config_ptr(UINT32 state) const; void *get_config_ptr(UINT32 state) const;
genf *get_config_fct(UINT32 state) const; genf *get_config_fct(UINT32 state) const;
@ -413,20 +413,20 @@ public:
astring &subtag(astring &dest, const char *tag) const; astring &subtag(astring &dest, const char *tag) const;
astring &siblingtag(astring &dest, const char *tag) const; astring &siblingtag(astring &dest, const char *tag) const;
// device relationships // device relationships
device_config * next; // next device (of any type/class) device_config * next; // next device (of any type/class)
device_config * owner; // device that owns us, or NULL if nobody device_config * owner; // device that owns us, or NULL if nobody
// device properties // device properties
astring tag; // tag for this instance astring tag; // tag for this instance
device_type type; // device type device_type type; // device type
device_class devclass; // device class device_class devclass; // device class
// device configuration // device configuration
UINT32 clock; // device clock UINT32 clock; // device clock
const addrmap_token * address_map[ADDRESS_SPACES]; // address maps for each address space const addrmap_token * address_map[ADDRESS_SPACES]; // address maps for each address space
const void * static_config; // static device configuration const void * static_config; // static device configuration
void * inline_config; // inline device configuration void * inline_config; // inline device configuration
}; };
@ -434,16 +434,16 @@ public:
class running_device class running_device
{ {
DISABLE_COPYING(running_device); DISABLE_COPYING(running_device);
const device_config & m_baseconfig; const device_config & m_baseconfig;
public: // private eventually public: // private eventually
const address_space * addrspace[ADDRESS_SPACES]; // auto-discovered address spaces const address_space * addrspace[ADDRESS_SPACES]; // auto-discovered address spaces
public: public:
running_device(running_machine &machine, const device_config &config); running_device(running_machine &machine, const device_config &config);
virtual ~running_device(); virtual ~running_device();
const device_config &baseconfig() const { return m_baseconfig; } const device_config &baseconfig() const { return m_baseconfig; }
inline const address_space *space(int index = 0) const; inline const address_space *space(int index = 0) const;
@ -454,7 +454,7 @@ public:
const region_info *subregion(const char *tag) const; const region_info *subregion(const char *tag) const;
running_device *subdevice(const char *tag) const; running_device *subdevice(const char *tag) const;
running_device *typenext() const running_device *typenext() const
{ {
running_device *cur; running_device *cur;
@ -468,7 +468,7 @@ public:
for (cur = this->next; cur != NULL && cur->devclass != devclass; cur = cur->next) ; for (cur = this->next; cur != NULL && cur->devclass != devclass; cur = cur->next) ;
return cur; return cur;
} }
void start(); void start();
void reset(); void reset();
void stop(); void stop();
@ -479,12 +479,12 @@ public:
UINT8 databus_width(int spacenum = 0) const { return m_baseconfig.databus_width(spacenum); } UINT8 databus_width(int spacenum = 0) const { return m_baseconfig.databus_width(spacenum); }
UINT8 addrbus_width(int spacenum = 0) const { return m_baseconfig.addrbus_width(spacenum); } UINT8 addrbus_width(int spacenum = 0) const { return m_baseconfig.addrbus_width(spacenum); }
INT8 addrbus_shift(int spacenum = 0) const { return m_baseconfig.addrbus_shift(spacenum); } INT8 addrbus_shift(int spacenum = 0) const { return m_baseconfig.addrbus_shift(spacenum); }
const rom_entry *rom_region() const { return m_baseconfig.rom_region(); } const rom_entry *rom_region() const { return m_baseconfig.rom_region(); }
const machine_config_token *machine_config_tokens() const { return m_baseconfig.machine_config_tokens(); } const machine_config_token *machine_config_tokens() const { return m_baseconfig.machine_config_tokens(); }
const addrmap_token *internal_map(int spacenum = 0) const { return m_baseconfig.internal_map(spacenum); } const addrmap_token *internal_map(int spacenum = 0) const { return m_baseconfig.internal_map(spacenum); }
const addrmap_token *default_map(int spacenum = 0) const { return m_baseconfig.default_map(spacenum); } const addrmap_token *default_map(int spacenum = 0) const { return m_baseconfig.default_map(spacenum); }
const char *name() const { return m_baseconfig.name(); } const char *name() const { return m_baseconfig.name(); }
const char *family() const { return m_baseconfig.family(); } const char *family() const { return m_baseconfig.family(); }
const char *version() const { return m_baseconfig.version(); } const char *version() const { return m_baseconfig.version(); }
@ -499,31 +499,31 @@ public:
INT64 get_runtime_int(UINT32 state); INT64 get_runtime_int(UINT32 state);
void *get_runtime_ptr(UINT32 state); void *get_runtime_ptr(UINT32 state);
const char *get_runtime_string(UINT32 state); const char *get_runtime_string(UINT32 state);
void set_address_space(int spacenum, const address_space *space); void set_address_space(int spacenum, const address_space *space);
// these fields are only valid once the device is attached to a machine // these fields are only valid once the device is attached to a machine
running_machine * machine; // machine if device is live running_machine * machine; // machine if device is live
// device relationships // device relationships
running_device * next; // next device (of any type/class) running_device * next; // next device (of any type/class)
running_device * owner; // device that owns us, or NULL if nobody running_device * owner; // device that owns us, or NULL if nobody
// device properties // device properties
astring tag; // tag for this instance astring tag; // tag for this instance
device_type type; // device type device_type type; // device type
device_class devclass; // device class device_class devclass; // device class
// device configuration // device configuration
UINT32 clock; // device clock UINT32 clock; // device clock
// these fields are only valid if the device is live // these fields are only valid if the device is live
bool started; // true if the start function has succeeded bool started; // true if the start function has succeeded
void * token; // token if device is live void * token; // token if device is live
UINT32 tokenbytes; // size of the token data allocated UINT32 tokenbytes; // size of the token data allocated
const region_info * region; // our device-local region const region_info * region; // our device-local region
device_execute_func execute; // quick pointer to execute callback device_execute_func execute; // quick pointer to execute callback
device_get_runtime_info_func get_runtime_info; device_get_runtime_info_func get_runtime_info;
}; };

View File

@ -331,23 +331,23 @@ public:
tagged_list() : tagged_list() :
head(NULL), head(NULL),
tailptr(&head) { } tailptr(&head) { }
virtual ~tagged_list() virtual ~tagged_list()
{ {
while (head != NULL) while (head != NULL)
remove(head); remove(head);
} }
T *first() const { return head; } T *first() const { return head; }
int count() const int count() const
{ {
int num = 0; int num = 0;
for (T *cur = head; cur != NULL; cur = cur->next) for (T *cur = head; cur != NULL; cur = cur->next)
num++; num++;
return num; return num;
} }
int index(T *object) const int index(T *object) const
{ {
int num = 0; int num = 0;
@ -358,13 +358,13 @@ public:
num++; num++;
return -1; return -1;
} }
int index(const char *tag) const int index(const char *tag) const
{ {
T *object = find(tag); T *object = find(tag);
return (object != NULL) ? index(object) : -1; return (object != NULL) ? index(object) : -1;
} }
T *prepend(const char *tag, T *object, bool replace_if_duplicate = false) T *prepend(const char *tag, T *object, bool replace_if_duplicate = false)
{ {
if (map.add_unique_hash(tag, object, replace_if_duplicate) != TMERR_NONE) if (map.add_unique_hash(tag, object, replace_if_duplicate) != TMERR_NONE)
@ -375,7 +375,7 @@ public:
tailptr = &object->next; tailptr = &object->next;
return object; return object;
} }
T *append(const char *tag, T *object, bool replace_if_duplicate = false) T *append(const char *tag, T *object, bool replace_if_duplicate = false)
{ {
if (map.add_unique_hash(tag, object, replace_if_duplicate) != TMERR_NONE) if (map.add_unique_hash(tag, object, replace_if_duplicate) != TMERR_NONE)
@ -385,7 +385,7 @@ public:
tailptr = &object->next; tailptr = &object->next;
return object; return object;
} }
void remove(T *object) void remove(T *object)
{ {
for (T **objectptr = &head; *objectptr != NULL; objectptr = &(*objectptr)->next) for (T **objectptr = &head; *objectptr != NULL; objectptr = &(*objectptr)->next)
@ -399,14 +399,14 @@ public:
return; return;
} }
} }
void remove(const char *tag) void remove(const char *tag)
{ {
T *object = find(tag); T *object = find(tag);
if (object != NULL) if (object != NULL)
remove(object); remove(object);
} }
T *find(const char *tag) const T *find(const char *tag) const
{ {
return map.find_hash_only(tag); return map.find_hash_only(tag);

View File

@ -696,7 +696,7 @@ struct _input_field_user_settings
class input_port_config class input_port_config
{ {
DISABLE_COPYING(input_port_config); DISABLE_COPYING(input_port_config);
public: public:
input_port_config(const char *tag); input_port_config(const char *tag);
~input_port_config(); ~input_port_config();

View File

@ -1632,7 +1632,7 @@ static const ldplayer_interface *get_interface(const device_config *devconfig)
for (int pltype = 0; pltype < ARRAY_LENGTH(player_interfaces); pltype++) for (int pltype = 0; pltype < ARRAY_LENGTH(player_interfaces); pltype++)
if (player_interfaces[pltype]->type == config->type) if (player_interfaces[pltype]->type == config->type)
return player_interfaces[pltype]; return player_interfaces[pltype];
return NULL; return NULL;
} }

View File

@ -1777,7 +1777,7 @@ static void memory_init_spaces(running_machine *machine)
/* link us in */ /* link us in */
*nextptr = space; *nextptr = space;
nextptr = (address_space **)&space->next; nextptr = (address_space **)&space->next;
/* notify the deveice */ /* notify the deveice */
device->set_address_space(spacenum, space); device->set_address_space(spacenum, space);
} }

View File

@ -1996,7 +1996,7 @@ static void init_timetables(FM_OPN *OPN, double freqbase)
} }
/* there are 2048 FNUMs that can be generated using FNUM/BLK registers /* there are 2048 FNUMs that can be generated using FNUM/BLK registers
but LFO works with one more bit of a precision so we really need 4096 elements */ but LFO works with one more bit of a precision so we really need 4096 elements */
/* calculate fnumber -> increment counter table */ /* calculate fnumber -> increment counter table */
for(i = 0; i < 4096; i++) for(i = 0; i < 4096; i++)
{ {
@ -2111,7 +2111,7 @@ static void init_tables(void)
o = o / (ENV_STEP/4); o = o / (ENV_STEP/4);
n = (int)(2.0*o); n = (int)(2.0*o);
if (n&1) /* round to nearest */ if (n&1) /* round to nearest */
n = (n>>1)+1; n = (n>>1)+1;
else else
n = n>>1; n = n>>1;
@ -2283,8 +2283,8 @@ void ym2612_update_one(void *chip, FMSAMPLE **buffer, int length)
lt += ((out_fm[5]>>0) & OPN->pan[10]); lt += ((out_fm[5]>>0) & OPN->pan[10]);
rt += ((out_fm[5]>>0) & OPN->pan[11]); rt += ((out_fm[5]>>0) & OPN->pan[11]);
// Limit( lt, MAXOUT, MINOUT ); // Limit( lt, MAXOUT, MINOUT );
// Limit( rt, MAXOUT, MINOUT ); // Limit( rt, MAXOUT, MINOUT );
#ifdef SAVE_SAMPLE #ifdef SAVE_SAMPLE
SAVE_ALL_CHANNELS SAVE_ALL_CHANNELS

View File

@ -231,7 +231,7 @@ and off as it normally does during speech). Once START has gone low-high-low, th
* if mirrored mode is OFF, increment oddphone. if not, don't touch it here. if oddphone was 1 before the increment, increment phoneaddress and set oddphone to 0 * if mirrored mode is OFF, increment oddphone. if not, don't touch it here. if oddphone was 1 before the increment, increment phoneaddress and set oddphone to 0
* *
*/ */
#undef ACCURATE_SQUEAL #undef ACCURATE_SQUEAL
#include "emu.h" #include "emu.h"

View File

@ -3,7 +3,7 @@
#ifndef __S14001A_H__ #ifndef __S14001A_H__
#define __S14001A_H__ #define __S14001A_H__
int s14001a_bsy_r(running_device *device); /* read BUSY pin */ int s14001a_bsy_r(running_device *device); /* read BUSY pin */
void s14001a_reg_w(running_device *device, int data); /* write to input latch */ void s14001a_reg_w(running_device *device, int data); /* write to input latch */
void s14001a_rst_w(running_device *device, int data); /* write to RESET pin */ void s14001a_rst_w(running_device *device, int data); /* write to RESET pin */
void s14001a_set_clock(running_device *device, int clock); /* set VSU-1000 clock */ void s14001a_set_clock(running_device *device, int clock); /* set VSU-1000 clock */

View File

@ -76,7 +76,7 @@
Fix an issue with SN76489 and SN76489A having the wrong periodic noise periods. Fix an issue with SN76489 and SN76489A having the wrong periodic noise periods.
Note that properly emulating the noise cycle bit timing accurately may require Note that properly emulating the noise cycle bit timing accurately may require
extensive rewriting. extensive rewriting.
24/01/2010: Lord Nightmare 24/01/2010: Lord Nightmare
Implement periodic noise as forcing one of the XNOR or XOR taps to 1 or 0 respectively. Implement periodic noise as forcing one of the XNOR or XOR taps to 1 or 0 respectively.
Thanks to PlgDavid for providing samples which helped immensely here. Thanks to PlgDavid for providing samples which helped immensely here.
@ -388,7 +388,7 @@ static void generic_start(running_device *device, int feedbackmask, int noisetap
chip->Negate = negate; chip->Negate = negate;
chip->Stereo = stereo; chip->Stereo = stereo;
chip->ClockDivider = clockdivider; chip->ClockDivider = clockdivider;
chip->CurrentClock = clockdivider-1; chip->CurrentClock = clockdivider-1;
state_save_register_device_item_array(device, 0, chip->VolTable); state_save_register_device_item_array(device, 0, chip->VolTable);
state_save_register_device_item_array(device, 0, chip->Register); state_save_register_device_item_array(device, 0, chip->Register);

View File

@ -592,7 +592,7 @@ endif
#------------------------------------------------- #-------------------------------------------------
ifneq ($(filter YM2151,$(SOUNDS)),) ifneq ($(filter YM2151,$(SOUNDS)),)
SOUNDOBJS += $(SOUNDOBJ)/2151intf.o $(SOUNDOBJ)/ym2151.o SOUNDOBJS += $(SOUNDOBJ)/2151intf.o $(SOUNDOBJ)/ym2151.o
endif endif
ifneq ($(filter YM2203,$(SOUNDS)),) ifneq ($(filter YM2203,$(SOUNDS)),)

View File

@ -133,7 +133,7 @@ static void doclr16( running_device *device, int opcode, UINT16 fill, int *dst,
hd63484->ram[*dst] ^= fill; hd63484->ram[*dst] ^= fill;
break; break;
} }
if (ax == 0) if (ax == 0)
break; break;
else if (ax > 0) else if (ax > 0)
{ {
@ -151,14 +151,14 @@ static void doclr16( running_device *device, int opcode, UINT16 fill, int *dst,
if (_ay < 0) if (_ay < 0)
{ {
*dst = (*dst + (hd63484->reg[0xca/2] & 0x0fff) - ax) & (HD63484_RAM_SIZE - 1); *dst = (*dst + (hd63484->reg[0xca/2] & 0x0fff) - ax) & (HD63484_RAM_SIZE - 1);
if (ay == 0) if (ay == 0)
break; break;
ay++; ay++;
} }
else else
{ {
*dst = (*dst - (hd63484->reg[0xca/2] & 0x0fff) - ax) & (HD63484_RAM_SIZE - 1); *dst = (*dst - (hd63484->reg[0xca/2] & 0x0fff) - ax) & (HD63484_RAM_SIZE - 1);
if (ay == 0) if (ay == 0)
break; break;
ay--; ay--;
} }
@ -1481,14 +1481,14 @@ WRITE16_DEVICE_HANDLER( hd63484_data_w )
COMBINE_DATA(&hd63484->reg[hd63484->regno/2]); COMBINE_DATA(&hd63484->reg[hd63484->regno/2]);
if (hd63484->skattva_hack) if (hd63484->skattva_hack)
hd63484->reg[2/2] = (hd63484->reg[2/2] & 0xf8ff) | 0x0200; // hack to set proper color depth in skattva hd63484->reg[2/2] = (hd63484->reg[2/2] & 0xf8ff) | 0x0200; // hack to set proper color depth in skattva
if (hd63484->regno & 0x80) if (hd63484->regno & 0x80)
hd63484->regno += 2; /* autoincrement */ hd63484->regno += 2; /* autoincrement */
#if LOG_COMMANDS #if LOG_COMMANDS
// logerror("PC %05x: HD63484 register %02x write %04x\n", cpu_get_pc(space->cpu), hd63484->regno, hd63484->reg[hd63484->regno/2]); // logerror("PC %05x: HD63484 register %02x write %04x\n", cpu_get_pc(space->cpu), hd63484->regno, hd63484->reg[hd63484->regno/2]);
#endif #endif
if (hd63484->regno == 0) /* FIFO */ if (hd63484->regno == 0) /* FIFO */
@ -1505,14 +1505,14 @@ READ16_DEVICE_HANDLER( hd63484_data_r )
else if (hd63484->regno == 0) else if (hd63484->regno == 0)
{ {
#if LOG_COMMANDS #if LOG_COMMANDS
// logerror("%05x: HD63484 read FIFO\n", cpu_get_pc(space->cpu)); // logerror("%05x: HD63484 read FIFO\n", cpu_get_pc(space->cpu));
#endif #endif
res = hd63484->readfifo; res = hd63484->readfifo;
} }
else else
{ {
#if LOG_COMMANDS #if LOG_COMMANDS
// logerror("%05x: HD63484 read register %02x\n", cpu_get_pc(space->cpu), hd63484->regno); // logerror("%05x: HD63484 read register %02x\n", cpu_get_pc(space->cpu), hd63484->regno);
#endif #endif
res = 0; res = 0;
} }
@ -1557,9 +1557,9 @@ static DEVICE_START( hd63484 )
hd63484->skattva_hack = intf->skattva_hack; hd63484->skattva_hack = intf->skattva_hack;
hd63484->ram = auto_alloc_array_clear(device->machine, UINT16, HD63484_RAM_SIZE); hd63484->ram = auto_alloc_array_clear(device->machine, UINT16, HD63484_RAM_SIZE);
// state_save_register_device_item(device, 0, hd63484->clear_bitmap); // state_save_register_device_item(device, 0, hd63484->clear_bitmap);
// state_save_register_device_item_pointer(device, 0, hd63484->spriteram, 0x1000); // state_save_register_device_item_pointer(device, 0, hd63484->spriteram, 0x1000);
// state_save_register_device_item_bitmap(device, 0, hd63484->sprites_bitmap); // state_save_register_device_item_bitmap(device, 0, hd63484->sprites_bitmap);
} }
static DEVICE_RESET( hd63484 ) static DEVICE_RESET( hd63484 )

View File

@ -150,7 +150,7 @@ void tagmap_remove(tagmap *map, const char *tag)
/*------------------------------------------------- /*-------------------------------------------------
tagmap_remove_object - remove an entry from a tagmap_remove_object - remove an entry from a
tagmap by object pointer tagmap by object pointer
-------------------------------------------------*/ -------------------------------------------------*/

View File

@ -187,7 +187,7 @@ void micro3d_noise_sh_w(running_machine *machine, UINT8 data)
{ {
running_device *device = devtag_get_device(machine, data & 4 ? "noise_2" : "noise_1"); running_device *device = devtag_get_device(machine, data & 4 ? "noise_2" : "noise_1");
noise_state *nstate = (noise_state *)device->token; noise_state *nstate = (noise_state *)device->token;
if (state->dac_data != nstate->dac[data & 3]) if (state->dac_data != nstate->dac[data & 3])
{ {
double q; double q;
@ -323,7 +323,7 @@ static DEVICE_START( micro3d_sound )
configure_filter(&state->noise_filters[1], 2.7e3 + 1e3, 0.30e-6); configure_filter(&state->noise_filters[1], 2.7e3 + 1e3, 0.30e-6);
configure_filter(&state->noise_filters[2], 2.7e3 + 270, 0.15e-6); configure_filter(&state->noise_filters[2], 2.7e3 + 270, 0.15e-6);
configure_filter(&state->noise_filters[3], 2.7e3 + 0, 0.082e-6); configure_filter(&state->noise_filters[3], 2.7e3 + 0, 0.082e-6);
// configure_filter(&state->noise_filters[4], 33e3, 0.1e-6); // configure_filter(&state->noise_filters[4], 33e3, 0.1e-6);
} }
static DEVICE_RESET( micro3d_sound ) static DEVICE_RESET( micro3d_sound )

View File

@ -813,12 +813,12 @@ static const y8950_interface y8950_config = {
static MACHINE_DRIVER_START( cybertnk ) static MACHINE_DRIVER_START( cybertnk )
MDRV_CPU_ADD("maincpu", M68000,20000000/2) MDRV_CPU_ADD("maincpu", M68000,20000000/2)
MDRV_CPU_PROGRAM_MAP(master_mem) MDRV_CPU_PROGRAM_MAP(master_mem)
// MDRV_CPU_VBLANK_INT_HACK(master_irq,2) // MDRV_CPU_VBLANK_INT_HACK(master_irq,2)
MDRV_CPU_VBLANK_INT("screen", irq1_line_hold) MDRV_CPU_VBLANK_INT("screen", irq1_line_hold)
MDRV_CPU_ADD("slave", M68000,20000000/2) MDRV_CPU_ADD("slave", M68000,20000000/2)
MDRV_CPU_PROGRAM_MAP(slave_mem) MDRV_CPU_PROGRAM_MAP(slave_mem)
// MDRV_CPU_VBLANK_INT_HACK(slave_irq,2) // MDRV_CPU_VBLANK_INT_HACK(slave_irq,2)
MDRV_CPU_VBLANK_INT("screen", irq3_line_hold) MDRV_CPU_VBLANK_INT("screen", irq3_line_hold)
MDRV_CPU_ADD("audiocpu", Z80,3579500) MDRV_CPU_ADD("audiocpu", Z80,3579500)

View File

@ -42,8 +42,8 @@ ToDo:
PCB Layouts PCB Layouts
----------- -----------
Bad Dudes vs Dragonninja Bad Dudes vs Dragonninja
Data East, 1988 Data East, 1988

View File

@ -247,23 +247,23 @@ Stamp on disk:
===================================================================================== =====================================================================================
Quater Horse Classic Quater Horse Classic
Board silkscreend QUARTERHORSE Board silkscreend QUARTERHORSE
(C) ARJAY EXPORT CO.,INC/PRESTIGE GAMES> -1995 REV-C-95 (C) ARJAY EXPORT CO.,INC/PRESTIGE GAMES> -1995 REV-C-95
HYANNIS,MA.02601--MADE IN USA HYANNIS,MA.02601--MADE IN USA
.A10 - 27256 stickered QUARTERHORSE CLASSIC .A10 - 27256 stickered QUARTERHORSE CLASSIC
10A - V1.1 10A - V1.1
(c)1995 ARJAY EXPORT - PRESTIGE GAMES (c)1995 ARJAY EXPORT - PRESTIGE GAMES
.H6 - 27128 stickered QUARTERHORSE CLASSIC .H6 - 27128 stickered QUARTERHORSE CLASSIC
CGR - 6H - V1.0 CGR - 6H - V1.0
(c)1995 ARJAY EXPORT - PRESTIGE GAMES (c)1995 ARJAY EXPORT - PRESTIGE GAMES
.K6 - 27128 stickered QUARTERHORSE CLASSIC .K6 - 27128 stickered QUARTERHORSE CLASSIC
CGR - 6K - V1.0 CGR - 6K - V1.0
(c)1995 ARJAY EXPORT - PRESTIGE GAMES (c)1995 ARJAY EXPORT - PRESTIGE GAMES
.U9 - Lattice GAL22V10 on daughter board .U9 - Lattice GAL22V10 on daughter board
P8085 @ B8 P8085 @ B8
P8275 @ F4 P8275 @ F4

View File

@ -69,7 +69,7 @@ static MACHINE_DRIVER_START( kongambl )
MDRV_CPU_ADD("maincpu", M68000, 16000000) // ? MDRV_CPU_ADD("maincpu", M68000, 16000000) // ?
MDRV_CPU_PROGRAM_MAP(kongambl_map) MDRV_CPU_PROGRAM_MAP(kongambl_map)
//MDRV_CPU_VBLANK_INT("screen", irq1_line_hold) //MDRV_CPU_VBLANK_INT("screen", irq1_line_hold)
MDRV_GFXDECODE(kongambl) MDRV_GFXDECODE(kongambl)
MDRV_SCREEN_ADD("screen", RASTER) MDRV_SCREEN_ADD("screen", RASTER)

View File

@ -1349,7 +1349,7 @@ The bootleg has some gfx glitches (flickering of the text) and the colour of the
Encrypted custom z80 in epoxy block. Clock is 12mhz/2 Encrypted custom z80 in epoxy block. Clock is 12mhz/2
YM2413 clock is 3.75mhz. The 7.5mhz clock which is divided by 2 by a 74ls74 before going to the YM2413 is too YM2413 clock is 3.75mhz. The 7.5mhz clock which is divided by 2 by a 74ls74 before going to the YM2413 is too
difficult to follow. difficult to follow.
It is derived from the 10mhz pixel clock since shorting it the video goes out of sync and the music change in pitch/speed. It is derived from the 10mhz pixel clock since shorting it the video goes out of sync and the music change in pitch/speed.
Oki5205 clock is 384khz (resonator) Oki5205 clock is 384khz (resonator)

View File

@ -642,7 +642,7 @@ static MACHINE_RESET( island2a )
// this set expects these values set before it will boot // this set expects these values set before it will boot
// protection added on this bootleg? // protection added on this bootleg?
multfish_bram[0x2003] = 0x01; multfish_bram[0x2003] = 0x01;
multfish_bram[0x4003] = 0x02; multfish_bram[0x4003] = 0x02;
} }
static MACHINE_DRIVER_START( island2a ) static MACHINE_DRIVER_START( island2a )
/* basic machine hardware */ /* basic machine hardware */

View File

@ -39,15 +39,15 @@ static void mem_map_banks(running_machine *machine)
slot_select = (mem_map >> 0) & 0x03; slot_select = (mem_map >> 0) & 0x03;
switch(slot_select) switch(slot_select)
{ {
case 0: case 0:
{ {
memory_install_read_bank(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x0000, 0x3fff, 0, 0, "bank1" ); memory_install_read_bank(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x0000, 0x3fff, 0, 0, "bank1" );
memory_set_bankptr(machine, "bank1", memory_region(machine, "maincpu")); memory_set_bankptr(machine, "bank1", memory_region(machine, "maincpu"));
break; break;
}; };
case 1: case 1:
case 2: case 2:
case 3: case 3:
{ {
memory_unmap_read(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x0000, 0x3fff, 0, 0); memory_unmap_read(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x0000, 0x3fff, 0, 0);
break; break;
@ -58,24 +58,24 @@ static void mem_map_banks(running_machine *machine)
slot_select = (mem_map >> 2) & 0x03; slot_select = (mem_map >> 2) & 0x03;
switch(slot_select) switch(slot_select)
{ {
case 0: case 0:
{ {
memory_install_read_bank(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x4000, 0x5fff, 0, 0, "bank21" ); memory_install_read_bank(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x4000, 0x5fff, 0, 0, "bank21" );
memory_install_read_bank(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x6000, 0x7fff, 0, 0, "bank22" ); memory_install_read_bank(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x6000, 0x7fff, 0, 0, "bank22" );
memory_set_bankptr(machine, "bank21", memory_region(machine, "maincpu") + 0x4000); memory_set_bankptr(machine, "bank21", memory_region(machine, "maincpu") + 0x4000);
memory_set_bankptr(machine, "bank22", memory_region(machine, "maincpu") + 0x4000 + 0x2000); memory_set_bankptr(machine, "bank22", memory_region(machine, "maincpu") + 0x4000 + 0x2000);
break; break;
} }
case 1: case 1:
{ {
memory_install_read_bank(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x4000, 0x5fff, 0, 0, "bank21" ); memory_install_read_bank(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x4000, 0x5fff, 0, 0, "bank21" );
memory_install_read_bank(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x6000, 0x7fff, 0, 0, "bank22" ); memory_install_read_bank(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x6000, 0x7fff, 0, 0, "bank22" );
memory_set_bankptr(machine, "bank21", memory_region(machine, "game") + mem_banks[0]*0x2000); memory_set_bankptr(machine, "bank21", memory_region(machine, "game") + mem_banks[0]*0x2000);
memory_set_bankptr(machine, "bank22", memory_region(machine, "game") + mem_banks[1]*0x2000); memory_set_bankptr(machine, "bank22", memory_region(machine, "game") + mem_banks[1]*0x2000);
break; break;
} }
case 2: case 2:
case 3: case 3:
{ {
memory_unmap_read(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x4000, 0x7fff, 0, 0); memory_unmap_read(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x4000, 0x7fff, 0, 0);
break; break;
@ -86,7 +86,7 @@ static void mem_map_banks(running_machine *machine)
slot_select = (mem_map >> 4) & 0x03; slot_select = (mem_map >> 4) & 0x03;
switch(slot_select) switch(slot_select)
{ {
case 1: case 1:
{ {
memory_install_read_bank(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x8000, 0x9fff, 0, 0, "bank31" ); memory_install_read_bank(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x8000, 0x9fff, 0, 0, "bank31" );
memory_install_read_bank(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xa000, 0xbfff, 0, 0, "bank32" ); memory_install_read_bank(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xa000, 0xbfff, 0, 0, "bank32" );
@ -94,9 +94,9 @@ static void mem_map_banks(running_machine *machine)
memory_set_bankptr(machine, "bank32", memory_region(machine, "game") + mem_banks[3]*0x2000); memory_set_bankptr(machine, "bank32", memory_region(machine, "game") + mem_banks[3]*0x2000);
break; break;
} }
case 0: case 0:
case 2: case 2:
case 3: case 3:
{ {
memory_unmap_read(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x8000, 0xbfff, 0, 0); memory_unmap_read(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x8000, 0xbfff, 0, 0);
break; break;
@ -108,14 +108,14 @@ static void mem_map_banks(running_machine *machine)
switch(slot_select) switch(slot_select)
{ {
case 0: case 0:
case 1: case 1:
case 2: case 2:
{ {
memory_unmap_read(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xc000, 0xffff, 0, 0); memory_unmap_read(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xc000, 0xffff, 0, 0);
break; break;
} }
case 3: case 3:
{ {
memory_install_read_bank(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xc000, 0xffff, 0, 0, "bank4" ); memory_install_read_bank(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xc000, 0xffff, 0, 0, "bank4" );
memory_set_bankptr(machine, "bank4", main_mem); memory_set_bankptr(machine, "bank4", main_mem);

View File

@ -44,7 +44,7 @@ GFXDECODE_END
static MACHINE_DRIVER_START( pinkiri8 ) static MACHINE_DRIVER_START( pinkiri8 )
MDRV_CPU_ADD("maincpu",Z180,16000000) MDRV_CPU_ADD("maincpu",Z180,16000000)
MDRV_CPU_PROGRAM_MAP(pinkiri8_map) MDRV_CPU_PROGRAM_MAP(pinkiri8_map)
// MDRV_CPU_VBLANK_INT_HACK(irq0_line_hold,4) // MDRV_CPU_VBLANK_INT_HACK(irq0_line_hold,4)
MDRV_SCREEN_ADD("screen", RASTER) MDRV_SCREEN_ADD("screen", RASTER)
MDRV_SCREEN_REFRESH_RATE(60) MDRV_SCREEN_REFRESH_RATE(60)
@ -60,8 +60,8 @@ static MACHINE_DRIVER_START( pinkiri8 )
/* sound hardware */ /* sound hardware */
MDRV_SPEAKER_STANDARD_MONO("mono") MDRV_SPEAKER_STANDARD_MONO("mono")
// MDRV_SOUND_ADD("aysnd", AY8910, 8000000/4 /* guess */) // MDRV_SOUND_ADD("aysnd", AY8910, 8000000/4 /* guess */)
// MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) // MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
MACHINE_DRIVER_END MACHINE_DRIVER_END
/*************************************************************************** /***************************************************************************

View File

@ -724,10 +724,10 @@ static INPUT_PORTS_START( tgm2 )
/* sticks should actually be PORT_4WAY according to manual */ /* sticks should actually be PORT_4WAY according to manual */
PORT_START("JP4") /* jumper pads on the PCB. Checked and discarded. However, if you force word 0x6060000 to 1/2/3 you can have various effects. Disbled at compile time */ PORT_START("JP4") /* jumper pads on the PCB. Checked and discarded. However, if you force word 0x6060000 to 1/2/3 you can have various effects. Disbled at compile time */
// PORT_DIPNAME( 0x03000000, 0x01000000, DEF_STR( Region ) ) // PORT_DIPNAME( 0x03000000, 0x01000000, DEF_STR( Region ) )
// PORT_DIPSETTING( 0x00000000, DEF_STR( Japan ) ) // PORT_DIPSETTING( 0x00000000, DEF_STR( Japan ) )
// PORT_DIPSETTING( 0x02000000, "International Ver A." ) // PORT_DIPSETTING( 0x02000000, "International Ver A." )
// PORT_DIPSETTING( 0x01000000, "International Ver B." ) // PORT_DIPSETTING( 0x01000000, "International Ver B." )
PORT_BIT( 0x10000000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE("eeprom", eeprom_read_bit) PORT_BIT( 0x10000000, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE("eeprom", eeprom_read_bit)
INPUT_PORTS_END INPUT_PORTS_END

View File

@ -928,7 +928,7 @@ static DRIVER_INIT( endless )
{ {
INT32 i; INT32 i;
UINT8 *rom = memory_region(machine, "user3"); UINT8 *rom = memory_region(machine, "user3");
/* there is more to this, 0x800 based block swaps? */ /* there is more to this, 0x800 based block swaps? */
for(i=0;i<0x200000;i++) for(i=0;i<0x200000;i++)
{ {

View File

@ -362,7 +362,7 @@ static const gfx_layout tiles16x32_layout = {
3, 3,
{ RGN_FRAC(2,3), RGN_FRAC(1,3), RGN_FRAC(0,3) }, { RGN_FRAC(2,3), RGN_FRAC(1,3), RGN_FRAC(0,3) },
{ 64+0, 64+1, 64+2, 64+3, 64+4, 64+5, 64+6, 64+7, 0, 1, 2, 3, 4, 5, 6, 7 }, { 64+0, 64+1, 64+2, 64+3, 64+4, 64+5, 64+6, 64+7, 0, 1, 2, 3, 4, 5, 6, 7 },
{ 55*8, 54*8, 53*8, 52*8, 51*8, 50*8, 49*8, 48*8, { 55*8, 54*8, 53*8, 52*8, 51*8, 50*8, 49*8, 48*8,
39*8, 38*8, 37*8, 36*8, 35*8, 34*8, 33*8, 32*8, 39*8, 38*8, 37*8, 36*8, 35*8, 34*8, 33*8, 32*8,
23*8, 22*8, 21*8, 20*8, 19*8, 18*8, 17*8, 16*8, 23*8, 22*8, 21*8, 20*8, 19*8, 18*8, 17*8, 16*8,
7*8, 6*8, 5*8, 4*8, 3*8, 2*8, 1*8, 0*8 7*8, 6*8, 5*8, 4*8, 3*8, 2*8, 1*8, 0*8

View File

@ -274,7 +274,7 @@ static WRITE8_HANDLER( subsino_out_a_w )
coin_counter_w( space->machine, 2, data & 0x10 ); /* keyout */ coin_counter_w( space->machine, 2, data & 0x10 ); /* keyout */
coin_counter_w( space->machine, 3, data & 0x20 ); /* payout */ coin_counter_w( space->machine, 3, data & 0x20 ); /* payout */
// popmessage("Out A %02x",data); // popmessage("Out A %02x",data);
} }
@ -357,7 +357,7 @@ static WRITE8_HANDLER( subsino_out_b_w )
output_set_lamp_value(6, (data >> 6) & 1); /* Lamp 6 */ output_set_lamp_value(6, (data >> 6) & 1); /* Lamp 6 */
output_set_lamp_value(7, (data >> 7) & 1); /* Lamp 7 */ output_set_lamp_value(7, (data >> 7) & 1); /* Lamp 7 */
// popmessage("Out B %02x",data); // popmessage("Out B %02x",data);
} }
@ -444,7 +444,7 @@ static ADDRESS_MAP_START( victor21_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE( 0x0900b, 0x0900b ) AM_RAM //protection AM_RANGE( 0x0900b, 0x0900b ) AM_RAM //protection
// AM_RANGE( 0x0900c, 0x0900c ) AM_DEVWRITE( "oki", okim6295_w ) // AM_RANGE( 0x0900c, 0x0900c ) AM_DEVWRITE( "oki", okim6295_w )
AM_RANGE( 0x0900e, 0x0900f ) AM_DEVWRITE( "ymsnd", ym2413_w ) AM_RANGE( 0x0900e, 0x0900f ) AM_DEVWRITE( "ymsnd", ym2413_w )
@ -646,7 +646,7 @@ static INPUT_PORTS_START( victor21 )
PORT_START( "INA" ) PORT_START( "INA" )
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_CODE(KEYCODE_V) PORT_NAME("Split") PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_CODE(KEYCODE_V) PORT_NAME("Split")
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_GAMBLE_DEAL ) PORT_CODE(KEYCODE_Z) PORT_NAME("Deal / Hit") PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_GAMBLE_DEAL ) PORT_CODE(KEYCODE_Z) PORT_NAME("Deal / Hit")
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_POKER_BET ) PORT_IMPULSE(3) PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_POKER_BET ) PORT_IMPULSE(3)
@ -966,7 +966,7 @@ static INPUT_PORTS_START( sharkpy )
PORT_DIPSETTING( 0x10, "5" ) PORT_DIPSETTING( 0x10, "5" )
PORT_DIPSETTING( 0x08, "6" ) PORT_DIPSETTING( 0x08, "6" )
PORT_DIPSETTING( 0x00, "7" ) PORT_DIPSETTING( 0x00, "7" )
PORT_DIPUNKNOWN( 0x40, 0x40 ) PORT_DIPUNKNOWN( 0x40, 0x40 )
PORT_DIPUNKNOWN( 0x80, 0x80 ) PORT_DIPUNKNOWN( 0x80, 0x80 )
PORT_START( "DSW4" ) PORT_START( "DSW4" )
@ -1058,7 +1058,7 @@ static INPUT_PORTS_START( smoto16 )
PORT_DIPSETTING( 0x28, "5" ) PORT_DIPSETTING( 0x28, "5" )
PORT_DIPSETTING( 0x30, "6" ) PORT_DIPSETTING( 0x30, "6" )
PORT_DIPSETTING( 0x38, "7" ) PORT_DIPSETTING( 0x38, "7" )
PORT_DIPUNKNOWN( 0x40, 0x40 ) PORT_DIPUNKNOWN( 0x40, 0x40 )
PORT_DIPUNKNOWN( 0x80, 0x80 ) PORT_DIPUNKNOWN( 0x80, 0x80 )
PORT_START( "DSW4" ) PORT_START( "DSW4" )
@ -1152,7 +1152,7 @@ static INPUT_PORTS_START( smoto20 )
PORT_DIPSETTING( 0x28, "5" ) PORT_DIPSETTING( 0x28, "5" )
PORT_DIPSETTING( 0x30, "6" ) PORT_DIPSETTING( 0x30, "6" )
PORT_DIPSETTING( 0x38, "7" ) PORT_DIPSETTING( 0x38, "7" )
PORT_DIPUNKNOWN( 0x40, 0x40 ) PORT_DIPUNKNOWN( 0x40, 0x40 )
PORT_DIPUNKNOWN( 0x80, 0x80 ) PORT_DIPUNKNOWN( 0x80, 0x80 )
PORT_START( "DSW4" ) PORT_START( "DSW4" )

View File

@ -28,12 +28,12 @@
======== ========
In 1975, Si Redd founded A1-Supply. This was renamed to Sircoma in 1978, In 1975, Si Redd founded A1-Supply. This was renamed to Sircoma in 1978,
and eventually IGT (International Game Technology) in 1981. and eventually IGT (International Game Technology) in 1981.
Along the way, in 1978, Fortune Coin Company was acquired and contained Along the way, in 1978, Fortune Coin Company was acquired and contained
the basis to their Fortune I game machines. the basis to their Fortune I game machines.
The Fortune I hardware consisted of the following games: The Fortune I hardware consisted of the following games:
Regular Draw Poker Regular Draw Poker
Progressive Draw Poker Progressive Draw Poker
Joker Wild Draw Poker Joker Wild Draw Poker
@ -438,7 +438,7 @@ static PALETTE_INIT( fortune1 )
b = tb - (i * (tb / 5)); b = tb - (i * (tb / 5));
c = j; c = j;
// Swap Position of Inner-most Colors on Each 4 Color Palette // Swap Position of Inner-most Colors on Each 4 Color Palette
if ((c % 4) == 1 || (c % 4) == 2) if ((c % 4) == 1 || (c % 4) == 2)
c = ((int)(c / 4) * 4) + (3 - (c % 4)); c = ((int)(c / 4) * 4) + (3 - (c % 4));

View File

@ -52,7 +52,7 @@ struct _micro3d_state
} mc68901; } mc68901;
UINT16 *shared_ram; UINT16 *shared_ram;
running_device *duart68681; running_device *duart68681;
UINT8 m68681_tx0; UINT8 m68681_tx0;
/* Sound */ /* Sound */

View File

@ -168,7 +168,7 @@ WRITE16_HANDLER( micro3d_mc68901_w )
int mode = state->mc68901.tacr & 0xf; int mode = state->mc68901.tacr & 0xf;
state->mc68901.tadr = data; state->mc68901.tadr = data;
/* Timer stopped */ /* Timer stopped */
if (mode == 0) if (mode == 0)
{ {
@ -628,7 +628,7 @@ READ16_HANDLER( micro3d_encoder_l_r )
static TIMER_CALLBACK( adc_done_callback ) static TIMER_CALLBACK( adc_done_callback )
{ {
micro3d_state *state = (micro3d_state*)machine->driver_data; micro3d_state *state = (micro3d_state*)machine->driver_data;
switch (param) switch (param)
{ {
case 0: state->adc_val = input_port_read_safe(machine, "THROTTLE", 0); case 0: state->adc_val = input_port_read_safe(machine, "THROTTLE", 0);
@ -639,7 +639,7 @@ static TIMER_CALLBACK( adc_done_callback )
case 3: break; case 3: break;
} }
// mc68901_int_gen(machine, GPIP3); // mc68901_int_gen(machine, GPIP3);
} }
READ16_HANDLER( micro3d_adc_r ) READ16_HANDLER( micro3d_adc_r )
@ -685,7 +685,7 @@ WRITE16_HANDLER( host_drmath_int_w )
/************************************* /*************************************
* *
* *
* *
*************************************/ *************************************/
@ -732,14 +732,14 @@ DRIVER_INIT( micro3d )
state->duart68681 = devtag_get_device(machine, "duart68681"); state->duart68681 = devtag_get_device(machine, "duart68681");
/* The Am29000 program seems to rely on RAM from 0x00470000 onwards being /* The Am29000 program seems to rely on RAM from 0x00470000 onwards being
non-zero on a reset, otherwise the 3D object data doesn't get uploaded! */ non-zero on a reset, otherwise the 3D object data doesn't get uploaded! */
memory_write_dword(space, 0x00470000, 0xa5a5a5a5); memory_write_dword(space, 0x00470000, 0xa5a5a5a5);
state->mc68901.timer_a = timer_alloc(machine, mfp_timer_a_cb, NULL); state->mc68901.timer_a = timer_alloc(machine, mfp_timer_a_cb, NULL);
/* TODO? BOTSS crashes when starting the final stage because the 68000 /* TODO? BOTSS crashes when starting the final stage because the 68000
overwrites memory in use by the Am29000. Slowing down the 68000 slightly overwrites memory in use by the Am29000. Slowing down the 68000 slightly
avoids this */ avoids this */
cpu_set_clockscale(devtag_get_device(machine, "maincpu"), 0.945f); cpu_set_clockscale(devtag_get_device(machine, "maincpu"), 0.945f);
} }

View File

@ -1165,7 +1165,7 @@ DEVICE_GET_RUNTIME_INFO( naomibd )
/* --- the following bits of info are returned as pointers --- */ /* --- the following bits of info are returned as pointers --- */
case DEVINFO_PTR_MEMORY: info->p = get_safe_token(device)->memory; break; case DEVINFO_PTR_MEMORY: info->p = get_safe_token(device)->memory; break;
/* default to the standard info */ /* default to the standard info */
default: DEVICE_GET_INFO_NAME(naomibd)(&device->baseconfig(), state, info); break; default: DEVICE_GET_INFO_NAME(naomibd)(&device->baseconfig(), state, info); break;
} }

View File

@ -1125,8 +1125,8 @@ static void hng64_drawtilemap(running_machine* machine, bitmap_t *bitmap, const
if ((tileregs & 0x1800)==0x1000) // floor mode if ((tileregs & 0x1800)==0x1000) // floor mode
{ {
/* Floor mode - per pixel simple / complex modes? -- every other line? /* Floor mode - per pixel simple / complex modes? -- every other line?
(there doesn't seem to be enough data in Buriki for every line at least) (there doesn't seem to be enough data in Buriki for every line at least)
*/ */
if ((tileregs&0xf000) == 0x1000) if ((tileregs&0xf000) == 0x1000)
{ {
popmessage("Floor is Active"); popmessage("Floor is Active");
@ -1783,13 +1783,13 @@ static void set3dFlags(const UINT16* packet)
/*////////////// /*//////////////
// PACKET FORMAT // PACKET FORMAT
// [0] - 0011 ... ID // [0] - 0011 ... ID
// [1] - ???? ... // [1] - ???? ...
// [2] - ???? ... // [2] - ???? ...
// [3] - ???? ... // [3] - ???? ...
// [4] - ???? ... // [4] - ???? ...
// [5] - ???? ... // [5] - ???? ...
// [6] - ???? ... // [6] - ???? ...
// [7] - ???? ... // [7] - ???? ...
// [8] - xx?? ... Palette offset & ?? // [8] - xx?? ... Palette offset & ??
// [9] - ???? ... ? Very much used - seem to bounce around when characters are on screen // [9] - ???? ... ? Very much used - seem to bounce around when characters are on screen
// [10] - ???? ... ? '' '' // [10] - ???? ... ? '' ''
@ -1884,7 +1884,7 @@ void recoverPolygonBlock(running_machine* machine, const UINT16* packet, struct
UINT32 address[4]; UINT32 address[4];
UINT32 megaOffset; UINT32 megaOffset;
float eyeCoords[4]; // ObjectCoords transformed by the modelViewMatrix float eyeCoords[4]; // ObjectCoords transformed by the modelViewMatrix
// float clipCoords[4]; // EyeCoords transformed by the projectionMatrix // float clipCoords[4]; // EyeCoords transformed by the projectionMatrix
float ndCoords[4]; // Normalized device coordinates/clipCoordinates (x/w, y/w, z/w) float ndCoords[4]; // Normalized device coordinates/clipCoordinates (x/w, y/w, z/w)
float windowCoords[4]; // Mapped ndCoordinates to screen space float windowCoords[4]; // Mapped ndCoordinates to screen space
float cullRay[4]; float cullRay[4];
@ -1951,10 +1951,10 @@ void recoverPolygonBlock(running_machine* machine, const UINT16* packet, struct
// Debug - ajg // Debug - ajg
//UINT32 tdColor = 0xff000000; //UINT32 tdColor = 0xff000000;
//if (packet[1] & 0x1000) tdColor |= 0x00ff0000; //if (packet[1] & 0x1000) tdColor |= 0x00ff0000;
//if (packet[1] & 0x2000) tdColor |= 0x0000ff00; //if (packet[1] & 0x2000) tdColor |= 0x0000ff00;
//if (packet[1] & 0x4000) tdColor |= 0x000000ff; //if (packet[1] & 0x4000) tdColor |= 0x000000ff;
//if (packet[1] & 0x8000) tdColor |= 0xffffffff; //if (packet[1] & 0x8000) tdColor |= 0xffffffff;
// 3d ROM Offset // 3d ROM Offset
UINT16* threeDRoms = (UINT16*)(memory_region(machine, "verts")); UINT16* threeDRoms = (UINT16*)(memory_region(machine, "verts"));
@ -1969,16 +1969,16 @@ void recoverPolygonBlock(running_machine* machine, const UINT16* packet, struct
} }
/* /*
// Debug - ajg // Debug - ajg
printf("%08x : ", threeDOffset*3*2); printf("%08x : ", threeDOffset*3*2);
for (int k = 0; k < 7*3; k++) for (int k = 0; k < 7*3; k++)
{ {
printf("%04x ", threeDPointer[k]); printf("%04x ", threeDPointer[k]);
if ((k % 3) == 2) printf(" "); if ((k % 3) == 2) printf(" ");
} }
printf("\n"); printf("\n");
} }
*/ */
// There are 4 hunks per address. // There are 4 hunks per address.
address[0] = threeDPointer[0]; address[0] = threeDPointer[0];
@ -2029,9 +2029,9 @@ void recoverPolygonBlock(running_machine* machine, const UINT16* packet, struct
// [0] ??-- - ???? unused ???? // [0] ??-- - ???? unused ????
// [0] --xx - Chunk type // [0] --xx - Chunk type
// [1] ?--- - Flags [x000 = ??? // [1] ?--- - Flags [x000 = ???
0x00 = ??? 0x00 = ???
00x0 = ??? 00x0 = ???
000x = low-res texture flag] 000x = low-res texture flag]
// [1] -x-- - Explicit palette index. // [1] -x-- - Explicit palette index.
// [1] --?- - Unknown // [1] --?- - Unknown
// [1] ---x - Texture index // [1] ---x - Texture index
@ -2291,8 +2291,8 @@ void recoverPolygonBlock(running_machine* machine, const UINT16* packet, struct
{ {
// The sams64 games transform the geometry in front of a stationary camera. // The sams64 games transform the geometry in front of a stationary camera.
// This is fine in sams64_2, since it never calls the 'camera transformation' function // This is fine in sams64_2, since it never calls the 'camera transformation' function
// (thus using the identity matrix for this transform), but sams64 calls the // (thus using the identity matrix for this transform), but sams64 calls the
// camera transformation function with rotation values. // camera transformation function with rotation values.
// It remains to be seen what those might do... // It remains to be seen what those might do...
matmul4(modelViewMatrix, modelViewMatrix, cameraMatrix); matmul4(modelViewMatrix, modelViewMatrix, cameraMatrix);
} }
@ -2406,7 +2406,7 @@ void hng64_command3d(running_machine* machine, const UINT16* packet)
case 0x0100: case 0x0100:
case 0x0101: // Geometry with full transformations case 0x0101: // Geometry with full transformations
// HACK. Masks out a piece of geo bbust2's drawShaded() crashes on. // HACK. Masks out a piece of geo bbust2's drawShaded() crashes on.
if (packet[2] == 0x0003 && packet[3] == 0x8f37 && hng64_mcu_type == SHOOT_MCU) if (packet[2] == 0x0003 && packet[3] == 0x8f37 && hng64_mcu_type == SHOOT_MCU)
break; break;
recoverPolygonBlock(machine, packet, polys, &numPolys); recoverPolygonBlock(machine, packet, polys, &numPolys);

View File

@ -190,7 +190,7 @@ INLINE void K053936GP_copyroz32clip( running_machine *machine,
continue; continue;
if ((dst_ptr+ecx+dst_base2)<dst_size) dst_base[dst_ptr+ecx+dst_base2] = alpha_blend_r32(pal_base[pixel], dst_base[dst_ptr+ecx+dst_base2], alpha); if ((dst_ptr+ecx+dst_base2)<dst_size) dst_base[dst_ptr+ecx+dst_base2] = alpha_blend_r32(pal_base[pixel], dst_base[dst_ptr+ecx+dst_base2], alpha);
if (pixeldouble_output) if (pixeldouble_output)
{ {
ecx++; ecx++;

View File

@ -75,7 +75,7 @@ void micro3d_scanline_update(running_device *screen, bitmap_t *bitmap, int scanl
int x; int x;
UINT16 *frame_src; UINT16 *frame_src;
scanline = MAX((scanline - params->veblnk), 0); scanline = MAX((scanline - params->veblnk), 0);
frame_src = state->frame_buffers[state->display_buffer] + (scanline << 10); frame_src = state->frame_buffers[state->display_buffer] + (scanline << 10);
@ -87,9 +87,9 @@ void micro3d_scanline_update(running_device *screen, bitmap_t *bitmap, int scanl
UINT16 pix = src[coladdr++ & 0x1ff]; UINT16 pix = src[coladdr++ & 0x1ff];
/* /*
TODO: The upper four bits of the 3D buffer affect priority TODO: The upper four bits of the 3D buffer affect priority
0xfxx forces 3D priority? 0xfxx forces 3D priority?
*/ */
if (pix & 0x80) if (pix & 0x80)
dest[x + 0] = sd_11_7 | (pix & 0x7f); dest[x + 0] = sd_11_7 | (pix & 0x7f);
else else
@ -135,7 +135,7 @@ WRITE16_HANDLER( micro3d_xfer3dk_w )
void micro3d_tms_interrupt(running_device *device, int state) void micro3d_tms_interrupt(running_device *device, int state)
{ {
// mc68901_int_gen(device->machine, GPIP4); // mc68901_int_gen(device->machine, GPIP4);
} }
@ -334,7 +334,7 @@ void draw_line(micro3d_state *state, UINT32 x1, UINT32 y1, UINT32 x2, UINT32 y2)
tmp2 = dy << 1; tmp2 = dy << 1;
acc = tmp2 - dx; acc = tmp2 - dx;
dy = (dy - dx) << 1; dy = (dy - dx) << 1;
do do
{ {
if (~acc & 0x80000000) if (~acc & 0x80000000)
@ -352,7 +352,7 @@ void draw_line(micro3d_state *state, UINT32 x1, UINT32 y1, UINT32 x2, UINT32 y2)
} }
} while (y2 != y1); } while (y2 != y1);
} }
if (x2 != x1) if (x2 != x1)
write_span(state, y1, x2); write_span(state, y1, x2);
@ -421,10 +421,10 @@ void rasterise_spans(micro3d_state *state, UINT32 min_y, UINT32 max_y, UINT32 at
else else
{ {
/* /*
I don't know the LFSR arrangement inside the DRAW2 ASIC I don't know the LFSR arrangement inside the DRAW2 ASIC
but here are some possible tap arrangements but here are some possible tap arrangements
*/ */
static const UINT8 taps[8][4] = static const UINT8 taps[8][4] =
{ {
{9, 8, 7, 2}, {9, 8, 7, 2},
{9, 8, 6, 5}, {9, 8, 6, 5},
@ -435,7 +435,7 @@ void rasterise_spans(micro3d_state *state, UINT32 min_y, UINT32 max_y, UINT32 at
{9, 7, 5, 2}, {9, 7, 5, 2},
{9, 6, 5, 3}, {9, 6, 5, 3},
}; };
int noise_val = (attr >> 12) & 0x3ff; int noise_val = (attr >> 12) & 0x3ff;
int noise_taps = 0; int noise_taps = 0;
@ -629,15 +629,15 @@ MPGDRAW commands
85000xxx End of vertex list - draw (xxx = colour) [0] 85000xxx End of vertex list - draw (xxx = colour) [0]
8Axxxxxx End of vertex list - random fill shading (xxx = colour) [0] 8Axxxxxx End of vertex list - random fill shading (xxx = colour) [0]
90000000 Set clipping Z min [1] 90000000 Set clipping Z min [1]
94000000 Set clipping Z max [1] 94000000 Set clipping Z max [1]
98000000 Set clipping Y max [1] 98000000 Set clipping Y max [1]
9c000000 Set clipping X min [1] 9c000000 Set clipping X min [1]
a0000000 Set clipping X max [1] a0000000 Set clipping X max [1]
a4000001 Set clipping Y min [1] (what does 1 mean?) a4000001 Set clipping Y min [1] (what does 1 mean?)
d8000000 End of frame (will swap render buffer) [0] d8000000 End of frame (will swap render buffer) [0]
f8000000 Toggle health LED [0] f8000000 Toggle health LED [0]
b8000000-1fe Draw ASIC DPRAM address b8000000-1fe Draw ASIC DPRAM address
b80003ff Data b80003ff Data
@ -684,9 +684,9 @@ WRITE32_HANDLER( micro3d_fifo_w )
state->draw_state = STATE_DRAW_VTX_DATA; state->draw_state = STATE_DRAW_VTX_DATA;
/* Invalidate the draw RAM /* Invalidate the draw RAM
* TODO: Not sure this is the right place for it - * TODO: Not sure this is the right place for it -
* causes monitor mode draw tests to fail * causes monitor mode draw tests to fail
*/ */
for (addr = 0; addr < 512; ++addr) for (addr = 0; addr < 512; ++addr)
state->draw_dpram[addr << 1] = 0x3ff000; state->draw_dpram[addr << 1] = 0x3ff000;
@ -764,7 +764,7 @@ READ32_HANDLER( micro3d_pipe_r )
INTERRUPT_GEN( micro3d_vblank ) INTERRUPT_GEN( micro3d_vblank )
{ {
// mc68901_int_gen(device->machine, GPIP7); // mc68901_int_gen(device->machine, GPIP7);
micro3d_state *state = (micro3d_state*)device->machine->driver_data; micro3d_state *state = (micro3d_state*)device->machine->driver_data;
state->display_buffer = state->drawing_buffer ^ 1; state->display_buffer = state->drawing_buffer ^ 1;

View File

@ -146,7 +146,7 @@ do \
while (0) \ while (0) \
/*------------------------------------------------- /*-------------------------------------------------
draw_scanline32_alpha - take an RGB-encoded UINT32 draw_scanline32_alpha - take an RGB-encoded UINT32
scanline and alpha-blend it into the destination bitmap scanline and alpha-blend it into the destination bitmap
-------------------------------------------------*/ -------------------------------------------------*/
static void draw_scanline32_alpha(bitmap_t *bitmap, INT32 destx, INT32 desty, INT32 length, const UINT32 *srcptr, int alpha) static void draw_scanline32_alpha(bitmap_t *bitmap, INT32 destx, INT32 desty, INT32 length, const UINT32 *srcptr, int alpha)
@ -161,7 +161,7 @@ static void draw_scanline32_alpha(bitmap_t *bitmap, INT32 destx, INT32 desty, IN
} }
/*------------------------------------------------- /*-------------------------------------------------
draw_scanline32_argb - take an ARGB-encoded UINT32 draw_scanline32_argb - take an ARGB-encoded UINT32
scanline and alpha-blend it into the destination bitmap scanline and alpha-blend it into the destination bitmap
-------------------------------------------------*/ -------------------------------------------------*/
static void draw_scanline32_argb(bitmap_t *bitmap, INT32 destx, INT32 desty, INT32 length, const UINT32 *srcptr) static void draw_scanline32_argb(bitmap_t *bitmap, INT32 destx, INT32 desty, INT32 length, const UINT32 *srcptr)
@ -177,7 +177,7 @@ static void draw_scanline32_argb(bitmap_t *bitmap, INT32 destx, INT32 desty, INT
} }
/*------------------------------------------------- /*-------------------------------------------------
draw_scanline32_tranpens - take an RGB-encoded UINT32 draw_scanline32_tranpens - take an RGB-encoded UINT32
scanline and copy it into the destination bitmap, testing for the special ARGB transpen scanline and copy it into the destination bitmap, testing for the special ARGB transpen
-------------------------------------------------*/ -------------------------------------------------*/
static void draw_scanline32_transpen(bitmap_t *bitmap, INT32 destx, INT32 desty, INT32 length, const UINT32 *srcptr) static void draw_scanline32_transpen(bitmap_t *bitmap, INT32 destx, INT32 desty, INT32 length, const UINT32 *srcptr)
@ -194,11 +194,11 @@ static void draw_scanline32_transpen(bitmap_t *bitmap, INT32 destx, INT32 desty,
/*------------------------------------------------- /*-------------------------------------------------
drawgfx_alphastore - render a gfx element with drawgfx_alphastore - render a gfx element with
a single transparent pen, storing the alpha value a single transparent pen, storing the alpha value
in alpha field of ARGB32, negative alpha implies alphatable in alpha field of ARGB32, negative alpha implies alphatable
-------------------------------------------------*/ -------------------------------------------------*/
static void drawgfx_alphastore(bitmap_t *dest, const rectangle *cliprect, const gfx_element *gfx, static void drawgfx_alphastore(bitmap_t *dest, const rectangle *cliprect, const gfx_element *gfx,
UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty, UINT32 code, UINT32 color, int flipx, int flipy, INT32 destx, INT32 desty,
int fixedalpha) int fixedalpha)
{ {
bitmap_t *priority = NULL; /* dummy, no priority in this case */ bitmap_t *priority = NULL; /* dummy, no priority in this case */
@ -238,8 +238,8 @@ static void drawgfx_alphastore(bitmap_t *dest, const rectangle *cliprect, const
} }
/*------------------------------------------------- /*-------------------------------------------------
drawgfx_alphatable - render a sprite with either drawgfx_alphatable - render a sprite with either
a fixed alpha value, or if alpha==-1 then uses a fixed alpha value, or if alpha==-1 then uses
the per-pen alphatable[] array the per-pen alphatable[] array
-------------------------------------------------*/ -------------------------------------------------*/
static void drawgfx_alphatable(bitmap_t *dest, const rectangle *cliprect, const gfx_element *gfx, static void drawgfx_alphatable(bitmap_t *dest, const rectangle *cliprect, const gfx_element *gfx,
@ -277,7 +277,7 @@ static void drawgfx_alphatable(bitmap_t *dest, const rectangle *cliprect, const
/* Psikyo PS6406B */ /* Psikyo PS6406B */
/* --- BACKGROUNDS --- */ /* --- BACKGROUNDS --- */
/* 'Normal' layers, no line/columnscroll. No per-line effects. /* 'Normal' layers, no line/columnscroll. No per-line effects.
Zooming isn't supported just because it's not used and it would be slow */ Zooming isn't supported just because it's not used and it would be slow */
static void draw_bglayer( running_machine *machine, int layer, bitmap_t *bitmap, const rectangle *cliprect, UINT8 req_pri ) static void draw_bglayer( running_machine *machine, int layer, bitmap_t *bitmap, const rectangle *cliprect, UINT8 req_pri )
{ {
@ -349,7 +349,7 @@ static void cache_bitmap(int scanline, psikyosh_state *state, gfx_element *gfx,
assert(sy > 0 && sy < 32); assert(sy > 0 && sy < 32);
if(tilebank != last_bank[sy]) if(tilebank != last_bank[sy])
{ {
rectangle cliprect; rectangle cliprect;
@ -375,7 +375,7 @@ static void cache_bitmap(int scanline, psikyosh_state *state, gfx_element *gfx,
if(tileno) { // valid tile, but blank in all games? if(tileno) { // valid tile, but blank in all games?
drawgfx_alphastore(state->bg_bitmap, NULL, gfx, tileno, colour, 0, 0, (16 * sx) & 0x1ff, ((16 * sy) & (width - 1)), need_alpha); drawgfx_alphastore(state->bg_bitmap, NULL, gfx, tileno, colour, 0, 0, (16 * sx) & 0x1ff, ((16 * sy) & (width - 1)), need_alpha);
} }
offs++; offs++;
} }
last_bank[sy] = tilebank; last_bank[sy] = tilebank;
@ -384,8 +384,8 @@ static void cache_bitmap(int scanline, psikyosh_state *state, gfx_element *gfx,
/* Row Scroll/Zoom and/or Column Zoom, has per-column Alpha/Bank/Priority /* Row Scroll/Zoom and/or Column Zoom, has per-column Alpha/Bank/Priority
Bitmap is first rendered to an ARGB image, taking into account the per-pen alpha (if used). Bitmap is first rendered to an ARGB image, taking into account the per-pen alpha (if used).
From there we extract data as we compose the image, one scanline at a time, blending the ARGB pixels From there we extract data as we compose the image, one scanline at a time, blending the ARGB pixels
into the RGB32 bitmap (with either the alpha information from the ARGB, or per-line alpha */ into the RGB32 bitmap (with either the alpha information from the ARGB, or per-line alpha */
static void draw_bglayerscroll( running_machine *machine, int layer, bitmap_t *bitmap, const rectangle *cliprect, UINT8 req_pri ) static void draw_bglayerscroll( running_machine *machine, int layer, bitmap_t *bitmap, const rectangle *cliprect, UINT8 req_pri )
{ {
@ -402,20 +402,20 @@ static void draw_bglayerscroll( running_machine *machine, int layer, bitmap_t *b
int last_bank[32]; // corresponds to bank of bitmap in state->bg_bitmap. bg_bitmap is split into 16/32-rows of one-tile high each int last_bank[32]; // corresponds to bank of bitmap in state->bg_bitmap. bg_bitmap is split into 16/32-rows of one-tile high each
for(int ii = 0; ii < 32; ii++) last_bank[ii] = -1; for(int ii = 0; ii < 32; ii++) last_bank[ii] = -1;
int scr_width = (cliprect->max_x-cliprect->min_x + 1); int scr_width = (cliprect->max_x-cliprect->min_x + 1);
int scr_height = (cliprect->max_y-cliprect->min_y + 1); int scr_height = (cliprect->max_y-cliprect->min_y + 1);
UINT32 *scroll_reg = &state->bgram[(linebank * 0x800) / 4 - 0x4000 / 4]; UINT32 *scroll_reg = &state->bgram[(linebank * 0x800) / 4 - 0x4000 / 4];
UINT32 *pzab_reg = &state->bgram[(linebank * 0x800) / 4 - 0x4000 / 4 + 0x400 / 4]; // pri, zoom, alpha, bank UINT32 *pzab_reg = &state->bgram[(linebank * 0x800) / 4 - 0x4000 / 4 + 0x400 / 4]; // pri, zoom, alpha, bank
// now, for each scanline, check priority, // now, for each scanline, check priority,
// extract the relevant scanline from the bitmap, after applying per-scanline vscroll, // extract the relevant scanline from the bitmap, after applying per-scanline vscroll,
// stretch it and scroll it into another buffer // stretch it and scroll it into another buffer
// write it with alpha // write it with alpha
for(int scanline = 0; scanline < scr_height; scanline++) for(int scanline = 0; scanline < scr_height; scanline++)
{ {
int pri = (*pzab_reg & 0xff000000) >> 24; int pri = (*pzab_reg & 0xff000000) >> 24;
if(pri == req_pri) if(pri == req_pri)
{ {
int scrollx = (*scroll_reg & 0x000001ff) >> 0; int scrollx = (*scroll_reg & 0x000001ff) >> 0;
int scrolly = (*scroll_reg & 0x03ff0000) >> 16; int scrolly = (*scroll_reg & 0x03ff0000) >> 16;
@ -1098,8 +1098,8 @@ static void draw_sprites(running_machine *machine, bitmap_t *bitmap, const recta
However, sprite-sprite priority needs to be preserved. However, sprite-sprite priority needs to be preserved.
daraku and soldivid only use the lsb daraku and soldivid only use the lsb
? = unknown ? = unknown
Could be a sprite-sprite priority, tests seem to back this up Could be a sprite-sprite priority, tests seem to back this up
**- End Sprite Format -*/ **- End Sprite Format -*/
const int spr_keys[8] = {KEYCODE_Y, KEYCODE_U, KEYCODE_I, KEYCODE_O}; const int spr_keys[8] = {KEYCODE_Y, KEYCODE_U, KEYCODE_I, KEYCODE_O};
@ -1185,7 +1185,7 @@ static void draw_sprites(running_machine *machine, bitmap_t *bitmap, const recta
listcntr++; listcntr++;
if (listdat & 0x4000) break; if (listdat & 0x4000) break;
} }
} }
static void psikyosh_prelineblend( running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect ) static void psikyosh_prelineblend( running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect )
@ -1274,8 +1274,8 @@ VIDEO_START( psikyosh )
alphatable[i + 0xc0] = alpha; alphatable[i + 0xc0] = alpha;
} }
/* precompute the background zoom table. verified against hardware. /* precompute the background zoom table. verified against hardware.
unsure of the precision, we use .10 fixed point like the sprites */ unsure of the precision, we use .10 fixed point like the sprites */
for(i = 0; i < 0x100; i++) { for(i = 0; i < 0x100; i++) {
state->bg_zoom[i] = (64 * 0x400) / (i + 64); state->bg_zoom[i] = (64 * 0x400) / (i + 64);
} }

View File

@ -32,11 +32,11 @@
#define MAX_VIEWS (4) #define MAX_VIEWS (4)
enum { enum {
WIN_TYPE_MAIN = 0x01, WIN_TYPE_MAIN = 0x01,
WIN_TYPE_MEMORY = 0x02, WIN_TYPE_MEMORY = 0x02,
WIN_TYPE_DISASM = 0x04, WIN_TYPE_DISASM = 0x04,
WIN_TYPE_LOG = 0x08, WIN_TYPE_LOG = 0x08,
WIN_TYPE_ALL = 0x0f WIN_TYPE_ALL = 0x0f
}; };
//============================================================ //============================================================
@ -65,7 +65,7 @@ struct _win_i {
int type; int type;
win_i * next; win_i * next;
GtkWidget * win; GtkWidget * win;
edit ed; edit ed;
running_machine * machine; // machine running_machine * machine; // machine
DView * views[MAX_VIEWS]; DView * views[MAX_VIEWS];
running_device * cpu; // current CPU running_device * cpu; // current CPU
@ -1119,7 +1119,7 @@ on_memoryview_key_press_event (GtkWidget *widget,
DView *info = (DView *) widget; DView *info = (DView *) widget;
//printf("%s\n", event->string); //printf("%s\n", event->string);
//printf("The name of this keysym is `%s'\n", //printf("The name of this keysym is `%s'\n",
// gdk_keyval_name(event->keyval)); // gdk_keyval_name(event->keyval));
//if (/*waiting_for_debugger ||*/ !debugwin_seq_pressed(info->view-> owner->machine)) //if (/*waiting_for_debugger ||*/ !debugwin_seq_pressed(info->view-> owner->machine))
switch (event->keyval) switch (event->keyval)
{ {
@ -1169,15 +1169,15 @@ on_memoryview_key_press_event (GtkWidget *widget,
case GDK_Escape: case GDK_Escape:
//if (info->owner->focuswnd != NULL) //if (info->owner->focuswnd != NULL)
// SetFocus(info->owner->focuswnd); // SetFocus(info->owner->focuswnd);
//info->owner->ignore_char_lparam = lparam >> 16; //info->owner->ignore_char_lparam = lparam >> 16;
break; break;
case GDK_Tab: case GDK_Tab:
//if (GetAsyncKeyState(VK_SHIFT) & 0x8000) //if (GetAsyncKeyState(VK_SHIFT) & 0x8000)
// debugwin_view_prev_view(info->owner, info); // debugwin_view_prev_view(info->owner, info);
//else //else
// debugwin_view_next_view(info->view, dvw); // debugwin_view_next_view(info->view, dvw);
break; break;
default: default:
if (event->keyval >= 32 && event->keyval < 127 && debug_view_get_cursor_supported(info->view)) if (event->keyval >= 32 && event->keyval < 127 && debug_view_get_cursor_supported(info->view))

View File

@ -7,7 +7,7 @@
# Copyright (c) 1996-2010, Nicola Salmoria and the MAME Team. # Copyright (c) 1996-2010, Nicola Salmoria and the MAME Team.
# Visit http://mamedev.org for licensing and usage restrictions. # Visit http://mamedev.org for licensing and usage restrictions.
# #
# SDLMAME by Olivier Galibert and R. Belmont # SDLMAME by Olivier Galibert and R. Belmont
# #
########################################################################### ###########################################################################
@ -42,8 +42,8 @@
# this will also add a rpath to the executable # this will also add a rpath to the executable
# MESA_INSTALL_ROOT = /usr/local/dfb_GL # MESA_INSTALL_ROOT = /usr/local/dfb_GL
# uncomment the next line to build a binary using # uncomment the next line to build a binary using
# GL-dispatching. # GL-dispatching.
# This option takes precedence over MESA_INSTALL_ROOT # This option takes precedence over MESA_INSTALL_ROOT
USE_DISPATCH_GL = 1 USE_DISPATCH_GL = 1
@ -80,18 +80,18 @@ CCOMFLAGS += $(OPT_FLAGS)
#------------------------------------------------- #-------------------------------------------------
# distribution may change things # distribution may change things
#------------------------------------------------- #-------------------------------------------------
ifeq ($(DISTRO),) ifeq ($(DISTRO),)
DISTRO = generic DISTRO = generic
else else
ifeq ($(DISTRO),debian-stable) ifeq ($(DISTRO),debian-stable)
DEFS += -DNO_AFFINITY_NP DEFS += -DNO_AFFINITY_NP
else else
ifeq ($(DISTRO),ubuntu-intrepid) ifeq ($(DISTRO),ubuntu-intrepid)
# Force gcc-4.2 on ubuntu-intrepid # Force gcc-4.2 on ubuntu-intrepid
CC = @gcc -V 4.2 CC = @gcc -V 4.2
LD = g++-4.2 LD = g++-4.2
else else
ifeq ($(DISTRO),gcc44-generic) ifeq ($(DISTRO),gcc44-generic)
CC = @gcc -V 4.4 CC = @gcc -V 4.4
LD = @g++ -V 4.4 LD = @g++ -V 4.4
@ -139,11 +139,11 @@ endif
ifeq ($(TARGETOS),freebsd) ifeq ($(TARGETOS),freebsd)
BASE_TARGETOS = unix BASE_TARGETOS = unix
SYNC_IMPLEMENTATION = tc SYNC_IMPLEMENTATION = tc
DEFS += -DNO_AFFINITY_NP DEFS += -DNO_AFFINITY_NP
# /usr/local/include is not considered a system include directory # /usr/local/include is not considered a system include directory
# on FreeBSD. GL.h resides there and throws warnings # on FreeBSD. GL.h resides there and throws warnings
CCOMFLAGS += -isystem /usr/local/include CCOMFLAGS += -isystem /usr/local/include
# No clue here. There is a popmessage(NULL) in uimenu.c which # No clue here. There is a popmessage(NULL) in uimenu.c which
# triggers a non-null format warning on FreeBSD only. # triggers a non-null format warning on FreeBSD only.
CCOMFLAGS += -Wno-format CCOMFLAGS += -Wno-format
endif endif
@ -195,7 +195,7 @@ ifeq ($(TARGETOS),win32)
BASE_TARGETOS = win32 BASE_TARGETOS = win32
SYNC_IMPLEMENTATION = win32 SYNC_IMPLEMENTATION = win32
NO_X11 = 1 NO_X11 = 1
DEFS += -DSDLMAME_WIN32 -DX64_WINDOWS_ABI DEFS += -DSDLMAME_WIN32 -DX64_WINDOWS_ABI
LIBGL = -lopengl32 LIBGL = -lopengl32
SDLMAIN = $(SDLOBJ)/main.o SDLMAIN = $(SDLOBJ)/main.o
# needed for unidasm # needed for unidasm
@ -207,7 +207,7 @@ NO_DEBUGGER = 1
else else
DEBUGOBJS = $(SDLOBJ)/debugwin.o $(SDLOBJ)/dview.o $(SDLOBJ)/debug-sup.o $(SDLOBJ)/debug-intf.o DEBUGOBJS = $(SDLOBJ)/debugwin.o $(SDLOBJ)/dview.o $(SDLOBJ)/debug-sup.o $(SDLOBJ)/debug-intf.o
LIBS += -lgtk-win32-2.0 -lgdk-win32-2.0 -lgmodule-2.0 -lglib-2.0 -lgobject-2.0 \ LIBS += -lgtk-win32-2.0 -lgdk-win32-2.0 -lgmodule-2.0 -lglib-2.0 -lgobject-2.0 \
-lpango-1.0 -latk-1.0 -lgdk_pixbuf-2.0 -lpango-1.0 -latk-1.0 -lgdk_pixbuf-2.0
CCOMFLAGS += -mms-bitfields \ CCOMFLAGS += -mms-bitfields \
-I$(GTK_INSTALL_ROOT)/include/gtk-2.0 -I$(GTK_INSTALL_ROOT)/include/glib-2.0 \ -I$(GTK_INSTALL_ROOT)/include/gtk-2.0 -I$(GTK_INSTALL_ROOT)/include/glib-2.0 \
-I$(GTK_INSTALL_ROOT)/include/cairo -I$(GTK_INSTALL_ROOT)/include/pango-1.0 \ -I$(GTK_INSTALL_ROOT)/include/cairo -I$(GTK_INSTALL_ROOT)/include/pango-1.0 \
@ -256,11 +256,11 @@ OBJDIRS += $(SDLOBJ)
OSDCOREOBJS = \ OSDCOREOBJS = \
$(SDLOBJ)/strconv.o \ $(SDLOBJ)/strconv.o \
$(SDLOBJ)/sdldir.o \ $(SDLOBJ)/sdldir.o \
$(SDLOBJ)/sdlfile.o \ $(SDLOBJ)/sdlfile.o \
$(SDLOBJ)/sdlmisc_$(BASE_TARGETOS).o \ $(SDLOBJ)/sdlmisc_$(BASE_TARGETOS).o \
$(SDLOBJ)/sdlos_$(BASE_TARGETOS).o \ $(SDLOBJ)/sdlos_$(BASE_TARGETOS).o \
$(SDLOBJ)/sdlsync_$(SYNC_IMPLEMENTATION).o \ $(SDLOBJ)/sdlsync_$(SYNC_IMPLEMENTATION).o \
$(SDLOBJ)/sdlwork.o $(SDLOBJ)/sdlwork.o
# any "main" must be in LIBOSD or else the build will fail! # any "main" must be in LIBOSD or else the build will fail!
# for the windows build, we just add it to libocore as well. # for the windows build, we just add it to libocore as well.
@ -272,7 +272,7 @@ OSDOBJS = \
$(SDLOBJ)/video.o \ $(SDLOBJ)/video.o \
$(SDLOBJ)/drawsdl.o \ $(SDLOBJ)/drawsdl.o \
$(SDLOBJ)/window.o \ $(SDLOBJ)/window.o \
$(SDLOBJ)/output.o $(SDLOBJ)/output.o
# Add SDL1.3 support # Add SDL1.3 support
ifdef SDL_INSTALL_ROOT ifdef SDL_INSTALL_ROOT
@ -338,16 +338,16 @@ endif
ifndef SDL_INSTALL_ROOT ifndef SDL_INSTALL_ROOT
CCOMFLAGS += `sdl-config --cflags` CCOMFLAGS += `sdl-config --cflags`
LIBS += -lm `sdl-config --libs` LIBS += -lm `sdl-config --libs`
else else
CCOMFLAGS += -I$(SDL_INSTALL_ROOT)/include -D_GNU_SOURCE=1 CCOMFLAGS += -I$(SDL_INSTALL_ROOT)/include -D_GNU_SOURCE=1
LIBS += -lm -L$(SDL_INSTALL_ROOT)/lib -Wl,-rpath,$(SDL_INSTALL_ROOT)/lib -lSDL LIBS += -lm -L$(SDL_INSTALL_ROOT)/lib -Wl,-rpath,$(SDL_INSTALL_ROOT)/lib -lSDL
endif endif
endif # Unix endif # Unix
#------------------------------------------------- #-------------------------------------------------
# Windows # Windows
#------------------------------------------------- #-------------------------------------------------
# Win32: add the necessary libraries # Win32: add the necessary libraries
@ -358,7 +358,7 @@ OSDCOREOBJS += $(SDLMAIN)
ifdef SDL_INSTALL_ROOT ifdef SDL_INSTALL_ROOT
CCOMFLAGS += -I$(SDL_INSTALL_ROOT)/include CCOMFLAGS += -I$(SDL_INSTALL_ROOT)/include
LIBS += -L$(SDL_INSTALL_ROOT)/lib LIBS += -L$(SDL_INSTALL_ROOT)/lib
#-Wl,-rpath,$(SDL_INSTALL_ROOT)/lib #-Wl,-rpath,$(SDL_INSTALL_ROOT)/lib
endif endif
@ -366,13 +366,13 @@ endif
# Static linking # Static linking
LDFLAGS += -static-libgcc LDFLAGS += -static-libgcc
LIBS += -Wl,-Bstatic -lSDL -Wl,-Bdynamic LIBS += -Wl,-Bstatic -lSDL -Wl,-Bdynamic
LIBS += -luser32 -lgdi32 -lddraw -ldsound -ldxguid -lwinmm -ladvapi32 -lcomctl32 -lshlwapi LIBS += -luser32 -lgdi32 -lddraw -ldsound -ldxguid -lwinmm -ladvapi32 -lcomctl32 -lshlwapi
endif # Win32 endif # Win32
#------------------------------------------------- #-------------------------------------------------
# Mac OS X # Mac OS X
#------------------------------------------------- #-------------------------------------------------
ifeq ($(BASE_TARGETOS),macosx) ifeq ($(BASE_TARGETOS),macosx)
@ -380,7 +380,7 @@ ifeq ($(BASE_TARGETOS),macosx)
ifndef MACOSX_USE_LIBSDL ifndef MACOSX_USE_LIBSDL
# Compile using framework (compile using libSDL is the exception) # Compile using framework (compile using libSDL is the exception)
LIBS += -framework SDL -framework Cocoa -framework OpenGL -lpthread LIBS += -framework SDL -framework Cocoa -framework OpenGL -lpthread
else else
# Compile using installed libSDL (Fink or MacPorts): # Compile using installed libSDL (Fink or MacPorts):
# #
@ -395,7 +395,7 @@ endif
endif # Mac OS X endif # Mac OS X
#------------------------------------------------- #-------------------------------------------------
# OS/2 # OS/2
#------------------------------------------------- #-------------------------------------------------
ifeq ($(BASE_TARGETOS),os2) ifeq ($(BASE_TARGETOS),os2)
@ -406,7 +406,7 @@ LIBS += `sdl-config --libs`
endif # OS2 endif # OS2
#------------------------------------------------- #-------------------------------------------------
# Debugging # Debugging
#------------------------------------------------- #-------------------------------------------------
ifeq ($(NO_DEBUGGER),1) ifeq ($(NO_DEBUGGER),1)
@ -418,7 +418,7 @@ OSDOBJS += $(DEBUGOBJS)
endif # NO_DEBUGGER endif # NO_DEBUGGER
#------------------------------------------------- #-------------------------------------------------
# OPENGL # OPENGL
#------------------------------------------------- #-------------------------------------------------
ifeq ($(NO_OPENGL),1) ifeq ($(NO_OPENGL),1)
@ -442,7 +442,7 @@ endif
endif endif
#------------------------------------------------- #-------------------------------------------------
# X11 # X11
#------------------------------------------------- #-------------------------------------------------
ifeq ($(NO_X11),1) ifeq ($(NO_X11),1)
@ -454,7 +454,7 @@ LIBS += -lX11 -lXinerama
# the new debugger relies on GTK+ in addition to the base SDLMAME needs # the new debugger relies on GTK+ in addition to the base SDLMAME needs
# Non-X11 builds can not use the debugger # Non-X11 builds can not use the debugger
CCOMFLAGS += `pkg-config --cflags gtk+-2.0` `pkg-config --cflags gconf-2.0` CCOMFLAGS += `pkg-config --cflags gtk+-2.0` `pkg-config --cflags gconf-2.0`
LIBS += `pkg-config --libs gtk+-2.0` `pkg-config --libs gconf-2.0` LIBS += `pkg-config --libs gtk+-2.0` `pkg-config --libs gconf-2.0`
#CCOMFLAGS += -DGTK_DISABLE_DEPRECATED #CCOMFLAGS += -DGTK_DISABLE_DEPRECATED
@ -465,7 +465,7 @@ CCOMFLAGS += -I/usr/X11/include -I/usr/X11R6/include -I/usr/openwin/include
endif # NO_X11 endif # NO_X11
#------------------------------------------------- #-------------------------------------------------
# Dependencies # Dependencies
#------------------------------------------------- #-------------------------------------------------
# due to quirks of using /bin/sh, we need to explicitly specify the current path # due to quirks of using /bin/sh, we need to explicitly specify the current path
@ -491,16 +491,16 @@ $(LIBOCORE): $(OSDCOREOBJS)
$(LIBOSD): $(OSDOBJS) $(LIBOSD): $(OSDOBJS)
#------------------------------------------------- #-------------------------------------------------
# Tools # Tools
#------------------------------------------------- #-------------------------------------------------
TOOLS += \ TOOLS += \
testkeys$(EXE) testkeys$(EXE)
$(SDLOBJ)/testkeys.o: $(SDLSRC)/testkeys.c $(SDLOBJ)/testkeys.o: $(SDLSRC)/testkeys.c
@echo Compiling $<... @echo Compiling $<...
$(CC) $(CFLAGS) $(DEFS) -c $< -o $@ $(CC) $(CFLAGS) $(DEFS) -c $< -o $@
TESTKEYSOBJS = \ TESTKEYSOBJS = \
$(SDLOBJ)/testkeys.o \ $(SDLOBJ)/testkeys.o \
@ -529,7 +529,7 @@ BUILD_VERSION = $(shell grep 'build_version\[\] =' src/version.c | sed -e "s/.*=
DISTFILES = test_dist.sh whatsnew.txt whatsnew_$(BUILD_VERSION).txt makefile docs/ src/ DISTFILES = test_dist.sh whatsnew.txt whatsnew_$(BUILD_VERSION).txt makefile docs/ src/
EXCLUDES = -x "*/.svn/*" EXCLUDES = -x "*/.svn/*"
zip: zip:
zip -rq ../mame_$(BUILD_VERSION).zip $(DISTFILES) $(EXCLUDES) zip -rq ../mame_$(BUILD_VERSION).zip $(DISTFILES) $(EXCLUDES)
DEPENDFILE = .depend_$(EMULATOR) DEPENDFILE = .depend_$(EMULATOR)

View File

@ -208,7 +208,7 @@ DEFS += -Dmain=utf8_main
# debug build: enable guard pages on all memory allocations # debug build: enable guard pages on all memory allocations
ifdef DEBUG ifdef DEBUG
DEFS += -DMALLOC_DEBUG #DEFS += -DMALLOC_DEBUG
endif endif

View File

@ -451,7 +451,7 @@ static void soft_link_functions(void)
av_set_mm_max_thread_characteristics = (av_set_mm_max_thread_characteristics_ptr)GetProcAddress(library, "AvSetMmMaxThreadCharacteristics" UNICODE_POSTFIX); av_set_mm_max_thread_characteristics = (av_set_mm_max_thread_characteristics_ptr)GetProcAddress(library, "AvSetMmMaxThreadCharacteristics" UNICODE_POSTFIX);
av_revert_mm_thread_characteristics = (av_revert_mm_thread_characteristics_ptr)GetProcAddress(library, "AvRevertMmThreadCharacteristics"); av_revert_mm_thread_characteristics = (av_revert_mm_thread_characteristics_ptr)GetProcAddress(library, "AvRevertMmThreadCharacteristics");
} }
// psapi helpers (not available in win9x) // psapi helpers (not available in win9x)
library = LoadLibrary(TEXT("psapi.dll")); library = LoadLibrary(TEXT("psapi.dll"));
if (library != NULL) if (library != NULL)
@ -646,10 +646,10 @@ static LONG CALLBACK exception_filter(struct _EXCEPTION_POINTERS *info)
{ {
CONTEXT context = *info->ContextRecord; CONTEXT context = *info->ContextRecord;
STACKFRAME64 stackframe; STACKFRAME64 stackframe;
// initialize the symbol lookup // initialize the symbol lookup
sym_initialize(GetCurrentProcess(), NULL, TRUE); sym_initialize(GetCurrentProcess(), NULL, TRUE);
// reprint the actual exception address // reprint the actual exception address
fprintf(stderr, "-----------------------------------------------------\n"); fprintf(stderr, "-----------------------------------------------------\n");
fprintf(stderr, "Stack crawl:\n"); fprintf(stderr, "Stack crawl:\n");
@ -700,15 +700,15 @@ static const char *line_to_symbol(const char *line, FPTR &address)
{ {
#ifdef __GNUC__ #ifdef __GNUC__
/* /*
32-bit gcc map line: 32-bit gcc map line:
0x0089cb00 nbmj9195_palette_r(_address_space const*, unsigned int) 0x0089cb00 nbmj9195_palette_r(_address_space const*, unsigned int)
64-bit gcc map line: 64-bit gcc map line:
0x0000000000961afc nbmj9195_palette_r(_address_space const*, unsigned int) 0x0000000000961afc nbmj9195_palette_r(_address_space const*, unsigned int)
*/ */
char symbol[1024]; char symbol[1024];
void *temp; void *temp;
// find a matching start // find a matching start
if (strncmp(line, " 0x", 18) == 0) if (strncmp(line, " 0x", 18) == 0)
if (sscanf(line, " 0x%p %s", &temp, symbol) == 2) if (sscanf(line, " 0x%p %s", &temp, symbol) == 2)
@ -720,16 +720,16 @@ static const char *line_to_symbol(const char *line, FPTR &address)
#ifdef _MSC_VER #ifdef _MSC_VER
/* /*
32-bit MSVC map line: 32-bit MSVC map line:
0001:00387890 ?nbmj9195_palette_r@@YAEPBU_address_space@@I@Z 00788890 f nichibut:nbmj9195.o 0001:00387890 ?nbmj9195_palette_r@@YAEPBU_address_space@@I@Z 00788890 f nichibut:nbmj9195.o
64-bit MSVC map line: 64-bit MSVC map line:
0001:004d7510 ?nbmj9195_palette_r@@YAEPEBU_address_space@@I@Z 00000001404d8510 f nichibut:nbmj9195.o 0001:004d7510 ?nbmj9195_palette_r@@YAEPEBU_address_space@@I@Z 00000001404d8510 f nichibut:nbmj9195.o
*/ */
static char symbol[1024]; static char symbol[1024];
int dummy1, dummy2; int dummy1, dummy2;
void *temp; void *temp;
symbol[0] = 0; symbol[0] = 0;
if (line[0] == ' ' && line[5] == ':') if (line[0] == ' ' && line[5] == ':')
if (sscanf(line, " %04x:%08x %s %p", &dummy1, &dummy2, symbol, &temp) == 4) if (sscanf(line, " %04x:%08x %s %p", &dummy1, &dummy2, symbol, &temp) == 4)
@ -765,7 +765,7 @@ static const char *lookup_symbol(FPTR address)
{ {
IMAGEHLP_LINE64 lineinfo = { sizeof(lineinfo) }; IMAGEHLP_LINE64 lineinfo = { sizeof(lineinfo) };
DWORD linedisp; DWORD linedisp;
// try to get source info as well; again we are returned an ANSI string // try to get source info as well; again we are returned an ANSI string
if (sym_get_line_from_addr_64 != NULL && sym_get_line_from_addr_64(GetCurrentProcess(), address, &linedisp, &lineinfo)) if (sym_get_line_from_addr_64 != NULL && sym_get_line_from_addr_64(GetCurrentProcess(), address, &linedisp, &lineinfo))
sprintf(buffer, " (%s+0x%04x, %s:%d)", info.Name, (UINT32)displacement, lineinfo.FileName, (int)lineinfo.LineNumber); sprintf(buffer, " (%s+0x%04x, %s:%d)", info.Name, (UINT32)displacement, lineinfo.FileName, (int)lineinfo.LineNumber);
@ -1020,7 +1020,7 @@ static void start_profiler(void)
{ {
HANDLE currentThread; HANDLE currentThread;
BOOL result; BOOL result;
assert_always( assert_always(
// parse the map file, if present // parse the map file, if present

View File

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