本文整理汇总了C++中COMBINE_DATA函数的典型用法代码示例。如果您正苦于以下问题:C++ COMBINE_DATA函数的具体用法?C++ COMBINE_DATA怎么用?C++ COMBINE_DATA使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了COMBINE_DATA函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: m68k_get_safe_token
void m68307_sim::write_pbdat(address_space &space, UINT16 data, UINT16 mem_mask)
{
int pc = space.device().safe_pc();
m68ki_cpu_core *m68k = m68k_get_safe_token(&space.device());
COMBINE_DATA(&m_pbdat);
if (m68k->m_m68307_portb_w)
{
m68k->m_m68307_portb_w(space, false, data, mem_mask);
}
else
{
logerror("%08x m68307_internal_sim_w %04x (%04x) (Port B (16-bit) Data Register - PBDAT)\n", pc, data,mem_mask);
}
}
示例2: COMBINE_DATA
void m68307_sim::write_licr1(UINT16 data, UINT16 mem_mask)
{
COMBINE_DATA(&m_licr1);
data = m_licr1;
logerror("m_licr1 value %04x : Details :\n", data);
logerror("int4ipl %01x\n", (data>>0)&7);
logerror("pir4 %01x\n", (data>>3)&1);
logerror("int3ipl %01x\n", (data>>4)&7);
logerror("pir3 %01x\n", (data>>7)&1);
logerror("int2ipl %01x\n", (data>>8)&7);
logerror("pir2 %01x\n", (data>>11)&1);
logerror("int1ipl %01x\n", (data>>12)&7);
logerror("pir1 %01x\n", (data>>15)&1);
logerror("\n");
}
示例3: WRITE32_HANDLER
static WRITE32_HANDLER( paletteram32_xRRRRRGGGGGBBBBB_dword_w )
{
int r,g,b;
COMBINE_DATA(&paletteram32[offset]);
r = (paletteram32[offset] & 0x7c000000) >> (10+16);
g = (paletteram32[offset] & 0x03e00000) >> (5+16);
b = (paletteram32[offset] & 0x001f0000) >> (0+16);
b = b << 3;
r = r << 3;
g = g << 3;
palette_set_color(offset,r,g,b);
}
示例4: WRITE16_HANDLER
static WRITE16_HANDLER(dbzcontrol_w)
{
/* bit 10 = enable '246 readback */
COMBINE_DATA(&dbz2_control);
if (data & 0x400)
{
K053246_set_OBJCHA_line(ASSERT_LINE);
}
else
{
K053246_set_OBJCHA_line(CLEAR_LINE);
}
}
示例5: WRITE32_HANDLER
static WRITE32_HANDLER( superchs_input_w )
{
#if 0
{
char t[64];
static UINT32 mem[2];
COMBINE_DATA(&mem[offset]);
sprintf(t,"%08x %08x",mem[0],mem[1]);
//ui_popup(t);
}
#endif
switch (offset)
{
case 0x00:
{
if (ACCESSING_MSB32) /* $300000 is watchdog */
{
watchdog_reset_w(0,data >> 24);
}
if (ACCESSING_LSB32)
{
EEPROM_set_clock_line((data & 0x20) ? ASSERT_LINE : CLEAR_LINE);
EEPROM_write_bit(data & 0x40);
EEPROM_set_cs_line((data & 0x10) ? CLEAR_LINE : ASSERT_LINE);
return;
}
return;
}
/* there are 'vibration' control bits somewhere! */
case 0x01:
{
if (ACCESSING_MSB32)
{
coin_lockout_w(0,~data & 0x01000000);
coin_lockout_w(1,~data & 0x02000000);
coin_counter_w(0, data & 0x04000000);
coin_counter_w(1, data & 0x08000000);
coin_word=(data >> 16) &0xffff;
}
}
}
}
示例6: COMBINE_DATA
inline void megasys1_state::scrollram_w(offs_t offset, UINT16 data, UINT16 mem_mask, int which)
{
COMBINE_DATA(&m_scrollram[which][offset]);
if (offset < 0x40000/2 && m_tmap[which])
{
if (m_scroll_flag[which] & 0x10) /* tiles are 8x8 */
{
m_tmap[which]->mark_tile_dirty(offset );
}
else
{
m_tmap[which]->mark_tile_dirty(offset*4 + 0);
m_tmap[which]->mark_tile_dirty(offset*4 + 1);
m_tmap[which]->mark_tile_dirty(offset*4 + 2);
m_tmap[which]->mark_tile_dirty(offset*4 + 3);
}
}
}
示例7: scrollram_w
INLINE void scrollram_w(int which, offs_t offset, UINT16 data, UINT16 mem_mask)
{
COMBINE_DATA(&megasys1_scrollram[which][offset]);
if (offset < 0x40000/2 && megasys1_tmap[which])
{
if (megasys1_scroll_flag[which] & 0x10) /* tiles are 8x8 */
{
tilemap_mark_tile_dirty(megasys1_tmap[which], offset );
}
else
{
tilemap_mark_tile_dirty(megasys1_tmap[which], offset*4 + 0);
tilemap_mark_tile_dirty(megasys1_tmap[which], offset*4 + 1);
tilemap_mark_tile_dirty(megasys1_tmap[which], offset*4 + 2);
tilemap_mark_tile_dirty(megasys1_tmap[which], offset*4 + 3);
}
}
}
示例8: WRITE16_HANDLER
static WRITE16_HANDLER( latch_w )
{
batman_state *state = space->machine().driver_data<batman_state>();
int oldword = state->m_latch_data;
COMBINE_DATA(&state->m_latch_data);
/* bit 4 is connected to the /RESET pin on the 6502 */
if (state->m_latch_data & 0x0010)
cputag_set_input_line(space->machine(), "jsa", INPUT_LINE_RESET, CLEAR_LINE);
else
cputag_set_input_line(space->machine(), "jsa", INPUT_LINE_RESET, ASSERT_LINE);
/* alpha bank is selected by the upper 4 bits */
if ((oldword ^ state->m_latch_data) & 0x7000)
{
space->machine().primary_screen->update_partial(space->machine().primary_screen->vpos());
tilemap_mark_all_tiles_dirty(state->m_alpha_tilemap);
state->m_alpha_tile_bank = (state->m_latch_data >> 12) & 7;
}
示例9: WRITE16_HANDLER
static WRITE16_HANDLER( jpeg2_w )
{
COMBINE_DATA(&jpeg2);
{
int idx=find_data((int)jpeg2+(((int)jpeg1)<<16));
if(idx>=0)
{
jpeg_addr=gfxlookup[idx][0];
jpeg_w=gfxlookup[idx][2];
jpeg_h=gfxlookup[idx][3];
render_jpeg();
}
else
{
jpeg_addr=-1;
}
}
}
示例10: scrollram_w
INLINE void scrollram_w(address_space *space, offs_t offset, UINT16 data, UINT16 mem_mask, int which)
{
megasys1_state *state = space->machine().driver_data<megasys1_state>();
COMBINE_DATA(&state->m_scrollram[which][offset]);
if (offset < 0x40000/2 && state->m_tmap[which])
{
if (state->m_scroll_flag[which] & 0x10) /* tiles are 8x8 */
{
tilemap_mark_tile_dirty(state->m_tmap[which], offset );
}
else
{
tilemap_mark_tile_dirty(state->m_tmap[which], offset*4 + 0);
tilemap_mark_tile_dirty(state->m_tmap[which], offset*4 + 1);
tilemap_mark_tile_dirty(state->m_tmap[which], offset*4 + 2);
tilemap_mark_tile_dirty(state->m_tmap[which], offset*4 + 3);
}
}
}
示例11: WRITE16_HANDLER
static WRITE16_HANDLER( jpeg2_w )
{
sliver_state *state = space->machine().driver_data<sliver_state>();
int idx;
COMBINE_DATA(&state->m_jpeg2);
idx = find_data((int)state->m_jpeg2 + (((int)state->m_jpeg1) << 16));
if (idx >= 0)
{
state->m_jpeg_addr = gfxlookup[idx][0];
state->m_jpeg_w = gfxlookup[idx][2];
state->m_jpeg_h = gfxlookup[idx][3];
render_jpeg(space->machine());
}
else
{
state->m_jpeg_addr = -1;
}
}
示例12: i82371ab_pci_ide_w
static void i82371ab_pci_ide_w(device_t *busdevice, device_t *device, int offset, UINT32 data, UINT32 mem_mask)
{
i82371ab_state *i82371ab = get_safe_token(device);
logerror("i82371ab_pci_ide_w, offset = %02x, data = %08x, mem_mask = %08x\n", offset, data, mem_mask);
switch (offset)
{
case 0x04:
COMBINE_DATA(&i82371ab->regs[1][offset]);
/* clear reserved bits */
i82371ab->regs[1][offset] &= 0x00000005;
/* set new status */
i82371ab->regs[1][offset] |= 0x02800000;
break;
}
}
示例13: WRITE32_HANDLER
static WRITE32_HANDLER( ps_intc_w )
{
pockstat_state *state = space->machine().driver_data<pockstat_state>();
switch(offset)
{
case 0x0000/4:
verboselog(space->machine(), 0, "ps_intc_w: Held Interrupt (Invalid Write) = %08x & %08x\n", data, mem_mask );
break;
case 0x0004/4:
verboselog(space->machine(), 0, "ps_intc_w: Interrupt Status (Invalid Write) = %08x & %08x\n", data, mem_mask );
break;
case 0x0008/4:
verboselog(space->machine(), 0, "ps_intc_w: Interrupt Enable = %08x & %08x\n", data, mem_mask );
state->m_intc_regs.enable |= data;
//COMBINE_DATA(&state->m_intc_regs.enable);
//state->m_intc_regs.status &= state->m_intc_regs.enable;
//state->m_intc_regs.hold &= state->m_intc_regs.enable;
ps_intc_set_interrupt_line(space->machine(), 0, 0);
break;
case 0x000c/4:
verboselog(space->machine(), 0, "ps_intc_w: Interrupt Mask = %08x & %08x\n", data, mem_mask );
state->m_intc_regs.enable &= ~data;
COMBINE_DATA(&state->m_intc_regs.mask);
//state->m_intc_regs.status &= state->m_intc_regs.enable;
//state->m_intc_regs.hold &= state->m_intc_regs.enable;
ps_intc_set_interrupt_line(space->machine(), 0, 0);
break;
case 0x0010/4:
verboselog(space->machine(), 0, "ps_intc_w: Interrupt Acknowledge = %08x & %08x\n", data, mem_mask );
state->m_intc_regs.hold &= ~data;
state->m_intc_regs.status &= ~data;
ps_intc_set_interrupt_line(space->machine(), 0, 0);
//COMBINE_DATA(&state->m_intc_regs.acknowledge);
break;
default:
verboselog(space->machine(), 0, "ps_intc_w: Unknown Register %08x = %08x & %08x\n", 0x0a000000 + (offset << 2), data, mem_mask );
break;
}
}
示例14: COMBINE_DATA
void m68307_sim::write_licr2(UINT16 data, UINT16 mem_mask)
{
COMBINE_DATA(&m_licr2);
UINT16 newdata = m_licr2;
logerror("m_licr2 value %04x : Details :\n", newdata);
logerror("int8ipl %01x\n", (newdata>>0)&7);
logerror("pir8 %01x\n", (newdata>>3)&1);
logerror("int7ipl %01x\n", (newdata>>4)&7);
logerror("pir7 %01x\n", (newdata>>7)&1);
logerror("int6ipl %01x\n", (newdata>>8)&7);
logerror("pir6 %01x\n", (newdata>>11)&1);
logerror("int5ipl %01x\n", (newdata>>12)&7);
logerror("pir5 %01x\n", (newdata>>15)&1);
logerror("\n");
if (data & 0x0008) m_licr2 = m_licr2 & ~0x0008;
if (data & 0x0080) m_licr2 = m_licr2 & ~0x0080;
if (data & 0x0800) m_licr2 = m_licr2 & ~0x0800;
if (data & 0x8000) m_licr2 = m_licr2 & ~0x8000;
}
示例15: WRITE32_HANDLER
static WRITE32_HANDLER( smbus_w )
{
COMBINE_DATA(smbusst.words);
if ((offset == 0) && (mem_mask == 0xff)) // 0 smbus status
smbusst.status &= ~data;
if ((offset == 0) && (mem_mask == 0xff0000)) // 2 smbus control
{
data=data>>16;
smbusst.control = data;
if ((smbusst.control & 6) == 2)
{
if (smbusst.devices[smbusst.address & 127]) {
if (smbusst.rw == 0) {
smbusst.devices[smbusst.address & 127](smbusst.command,smbusst.rw,smbusst.data);
}
else {
smbusst.data=smbusst.devices[smbusst.address & 127](smbusst.command,smbusst.rw,smbusst.data);
}
}
smbusst.status |= 0x10;
}
}