本文整理汇总了C++中bitmap_rgb32::pix32方法的典型用法代码示例。如果您正苦于以下问题:C++ bitmap_rgb32::pix32方法的具体用法?C++ bitmap_rgb32::pix32怎么用?C++ bitmap_rgb32::pix32使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类bitmap_rgb32
的用法示例。
在下文中一共展示了bitmap_rgb32::pix32方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: BIT
void pc1512_state::draw_alpha(bitmap_rgb32 &bitmap, const rectangle &cliprect, UINT16 ma, UINT8 ra, UINT16 y, UINT8 x_count, INT8 cursor_x, void *param)
{
offs_t char_rom_offset = get_char_rom_offset();
UINT32 *p = &bitmap.pix32(y + VFP_HIRES, HFP_HIRES);
if (get_display_mode(m_vdu_mode) == ALPHA_40)
p = &bitmap.pix32(y + VFP_LORES, HFP_LORES);
if (y > 199) return;
for (int column = 0; column < x_count; column++)
{
UINT8 code = m_video_ram[(ma + column) << 1];
UINT8 attr = m_video_ram[((ma + column) << 1) + 1];
int fg = attr & 0x0f;
int bg = attr >> 4;
if (m_vdu_mode & MODE_BLINK)
{
bg &= 0x07;
if (BIT(attr, 7) && !m_blink)
{
fg = bg;
}
}
offs_t addr = char_rom_offset | (code << 3) | (ra & 0x07);
UINT8 data = m_char_rom[addr & 0x1fff];
if ((column == cursor_x) && m_cursor)
{
data = 0xff;
}
for (int bit = 0; bit < 8; bit++)
{
int color = BIT(data, 7) ? fg : bg;
*p = PALETTE[color]; p++;
data <<= 1;
}
}
}
示例2: if
UINT32 decodmd_type1_device::screen_update( screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect )
{
UINT8 ptr = 0;
UINT8 x,y,dot;
UINT32 data1,data2,data3,data4;
UINT32 col;
if(m_frameswap)
ptr = 0x80;
for(y=0;y<16;y++) // scanline
{
for(x=0;x<128;x+=64)
{
data1 = m_pixels[ptr];
data2 = m_pixels[ptr+1];
data3 = m_pixels[ptr+2];
data4 = m_pixels[ptr+3];
for(dot=0;dot<64;dot+=2)
{
if((data1 & 0x01) != (data3 & 0x01))
col = rgb_t(0x7f,0x55,0x00);
else if (data1 & 0x01) // both are the same, so either high intensity or none at all
col = rgb_t(0xff,0xaa,0x00);
else
col = rgb_t::black;
bitmap.pix32(y,x+dot) = col;
if((data2 & 0x01) != (data4 & 0x01))
col = rgb_t(0x7f,0x55,0x00);
else if (data2 & 0x01) // both are the same, so either high intensity or none at all
col = rgb_t(0xff,0xaa,0x00);
else
col = rgb_t::black;
bitmap.pix32(y,x+dot+1) = col;
data1 >>= 1;
data2 >>= 1;
data3 >>= 1;
data4 >>= 1;
}
ptr+=4;
}
}
return 0;
}
示例3: draw_hline_moired
static void draw_hline_moired(bitmap_rgb32 &bitmap, int x1, int x2, int y, int color)
{
UINT32 *base = &bitmap.pix32(y);
while(x1 <= x2) {
if((x1^y)&1)
base[x1] = color;
x1++;
}
}
示例4: plot_pixel_rgb
void sliver_state::plot_pixel_rgb(int x, int y, UINT32 r, UINT32 g, UINT32 b)
{
// printf("plot %d %d %d\n", r,g,b);
if (y < 0 || x < 0 || x > 383 || y > 255)
return;
m_bitmap_bg.pix32(y, x) = r | (g<<8) | (b<<16);
}
示例5:
void model1_state::draw_hline(bitmap_rgb32 &bitmap, int x1, int x2, int y, int color)
{
UINT32 *base = &bitmap.pix32(y);
while(x1 <= x2)
{
base[x1] = color;
x1++;
}
}
示例6:
UINT32 cirrus_gd5428_device::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
int x,y,bit;
UINT32 ptr = (vga.svga_intf.vram_size - 0x4000); // cursor patterns are stored in the last 16kB of VRAM
svga_device::screen_update(screen, bitmap, cliprect);
/*UINT8 cur_mode =*/ pc_vga_choosevideomode();
if(m_cursor_attr & 0x01) // hardware cursor enabled
{
// draw hardware graphics cursor
if(m_cursor_attr & 0x04) // 64x64
{
ptr += ((m_cursor_addr & 0x3c) * 256);
for(y=0;y<64;y++)
{
for(x=0;x<64;x+=8)
{
for(bit=0;bit<8;bit++)
{
UINT8 pixel1 = vga.memory[ptr % vga.svga_intf.vram_size] >> (7-bit);
UINT8 pixel2 = vga.memory[(ptr+512) % vga.svga_intf.vram_size] >> (7-bit);
UINT8 output = ((pixel1 & 0x01) << 1) | (pixel2 & 0x01);
switch(output)
{
case 0: // transparent - do nothing
break;
case 1: // background
bitmap.pix32(m_cursor_y+y,m_cursor_x+x+bit) = (m_ext_palette[0].red << 16) | (m_ext_palette[0].green << 8) | (m_ext_palette[0].blue);
break;
case 2: // XOR
bitmap.pix32(m_cursor_y+y,m_cursor_x+x+bit) = ~bitmap.pix32(m_cursor_y+y,m_cursor_x+x+bit);
break;
case 3: // foreground
bitmap.pix32(m_cursor_y+y,m_cursor_x+x+bit) = (m_ext_palette[15].red << 16) | (m_ext_palette[15].green << 8) | (m_ext_palette[15].blue);
break;
}
}
}
}
}
else
{
示例7: draw_pixel
INLINE void draw_pixel(running_machine &machine, bitmap_rgb32 &bitmap,const rectangle &cliprect,int x,int y,int color,int flip)
{
if (flip)
{
x = bitmap.width() - x - 1;
y = bitmap.height() - y - 1;
}
if (cliprect.contains(x, y))
bitmap.pix32(y, x) = machine.pens[color];
}
示例8: draw_pixel
void gpworld_state::draw_pixel(bitmap_rgb32 &bitmap,const rectangle &cliprect,int x,int y,int color,int flip)
{
if (flip)
{
x = bitmap.width() - x - 1;
y = bitmap.height() - y - 1;
}
if (cliprect.contains(x, y))
bitmap.pix32(y, x) = m_palette->pen(color);
}
示例9: screen_update_calcune
uint32_t calcune_state::screen_update_calcune(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
const pen_t *paldata = m_palette->pens();
for (int y = cliprect.min_y; y <= cliprect.max_y; y++)
{
uint32_t *dst = &bitmap.pix32(y);
for (int x = cliprect.min_x; x <= cliprect.max_x; x++)
{
int pix;
pix = m_vdp2->m_render_line_raw[x] & 0x3f;
switch (pix & 0xc0)
{
case 0x00:
dst[x] = paldata[pix + 0x0000 + 0xc0];
break;
case 0x40:
case 0x80:
dst[x] = paldata[pix + 0x0040 + 0xc0];
break;
case 0xc0:
dst[x] = paldata[pix + 0x0080 + 0xc0];
break;
}
if (m_vdp->m_render_line_raw[x] & 0x100)
{
pix = m_vdp->m_render_line_raw[x] & 0x3f;
if (pix & 0xf)
{
switch (pix & 0xc0)
{
case 0x00:
dst[x] = paldata[pix + 0x0000];
break;
case 0x40:
case 0x80:
dst[x] = paldata[pix + 0x0040];
break;
case 0xc0:
dst[x] = paldata[pix + 0x0080];
break;
}
}
}
}
}
return 0;
}
示例10: screen_update
uint32_t mmagic_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
// draw playfield
for (int y = 0; y < 192 / 12; y++)
{
for (int x = 0; x < 256 / 8; x++)
{
uint8_t code = m_vram[(y * 32) + x] & 0x7f;
// normal palette 00..7f, alternate palette 80..ff
uint8_t color = m_colors[code | (BIT(m_color, 6) << 7)];
// draw one tile
for (int tx = 0; tx < 12; tx++)
{
uint8_t gfx = m_tiles[(code << 4) + tx];
bitmap.pix32(y * 12 + tx, x * 8 + 0) = BIT(gfx, 4) ? rgb_t::black() : m_palette->pen_color(color);
bitmap.pix32(y * 12 + tx, x * 8 + 1) = BIT(gfx, 5) ? rgb_t::black() : m_palette->pen_color(color);
bitmap.pix32(y * 12 + tx, x * 8 + 2) = BIT(gfx, 6) ? rgb_t::black() : m_palette->pen_color(color);
bitmap.pix32(y * 12 + tx, x * 8 + 3) = BIT(gfx, 7) ? rgb_t::black() : m_palette->pen_color(color);
bitmap.pix32(y * 12 + tx, x * 8 + 4) = BIT(gfx, 0) ? rgb_t::black() : m_palette->pen_color(color);
bitmap.pix32(y * 12 + tx, x * 8 + 5) = BIT(gfx, 1) ? rgb_t::black() : m_palette->pen_color(color);
bitmap.pix32(y * 12 + tx, x * 8 + 6) = BIT(gfx, 2) ? rgb_t::black() : m_palette->pen_color(color);
bitmap.pix32(y * 12 + tx, x * 8 + 7) = BIT(gfx, 3) ? rgb_t::black() : m_palette->pen_color(color);
}
}
}
// draw ball (if not disabled)
if (m_ball_x != 0xff)
{
static const int BALL_SIZE = 4;
int ball_y = (m_ball_y >> 4) * 12 + (m_ball_y & 0x0f);
bitmap.plot_box(m_ball_x - BALL_SIZE + 1, ball_y - BALL_SIZE + 1, BALL_SIZE, BALL_SIZE, rgb_t::white());
}
return 0;
}
示例11: if
UINT32 mw8080bw_state::screen_update_mw8080bw(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
UINT8 x = 0;
UINT8 y = MW8080BW_VCOUNTER_START_NO_VBLANK;
UINT8 video_data = 0;
while (1)
{
/* plot the current pixel */
pen_t pen = (video_data & 0x01) ? rgb_t::white : rgb_t::black;
bitmap.pix32(y - MW8080BW_VCOUNTER_START_NO_VBLANK, x) = pen;
/* next pixel */
video_data = video_data >> 1;
x = x + 1;
/* end of line? */
if (x == 0)
{
/* yes, flush out the shift register */
int i;
for (i = 0; i < 4; i++)
{
pen = (video_data & 0x01) ? rgb_t::white : rgb_t::black;
bitmap.pix32(y - MW8080BW_VCOUNTER_START_NO_VBLANK, 256 + i) = pen;
video_data = video_data >> 1;
}
/* next row, video_data is now 0, so the next line will start
with 4 blank pixels */
y = y + 1;
/* end of screen? */
if (y == 0)
break;
}
/* the video RAM is read at every 8 pixels starting with pixel 4 */
else if ((x & 0x07) == 0x04)
示例12: screen_update
uint32_t vixen_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
const pen_t *pen = m_palette->pens();
uint8_t x, y, chr, gfx, inv, ra;
for (y = 0; y < 26; y++)
{
for (ra = 0; ra < 10; ra++)
{
for (x = 0; x < 128; x++)
{
uint16_t sync_addr = ((y+1) << 7) + x + 1; // it's out by a row and a column
uint8_t sync_data = m_sync_rom[sync_addr & 0xfff];
bool blank = BIT(sync_data, 4);
/*
int clrchadr = BIT(sync_data, 7);
int hsync = BIT(sync_data, 6);
int clrtxadr = BIT(sync_data, 5);
int vsync = BIT(sync_data, 3);
int comp_sync = BIT(sync_data, 2);
logerror("SYNC %03x:%02x TXADR %u SCAN %u CHADR %u : COMPSYNC %u VSYNC %u BLANK %u CLRTXADR %u HSYNC %u CLRCHADR %u\n",
sync_addr,sync_data,txadr,scan,chadr,comp_sync,vsync,blank,clrtxadr,hsync,clrchadr);
*/
chr = m_video_ram[(y<<7) + x];
if (m_256)
{
gfx = m_char_rom[(BIT(chr, 7) << 11) | (ra << 7) | (chr & 0x7f)];
inv = m_alt ? 0xff : 0;
}
else
{
gfx = m_char_rom[(ra << 7) | (chr & 0x7f)];
inv = BIT(chr, 7) ? 0xff : 0;
}
gfx = (blank) ? 0 : (gfx ^ inv);
for (int b = 0; b < 8; b++)
{
int color = BIT(gfx, 7 - b);
bitmap.pix32((y * 10) + ra, (x * 8) + b) = pen[color];
}
}
}
}
return 0;
}
示例13: line_update
INPUT_PORTS_END
/****************************************************\
* Video hardware *
\****************************************************/
void uzebox_state::line_update()
{
uint32_t cycles = (uint32_t)(m_maincpu->get_elapsed_cycles() - m_line_start_cycles) / 2;
rgb_t color = rgb_t(pal3bit(m_port_c >> 0), pal3bit(m_port_c >> 3), pal2bit(m_port_c >> 6));
for (uint32_t x = m_line_pos_cycles; x < cycles; x++)
{
if (m_bitmap.cliprect().contains(x, m_vpos))
m_bitmap.pix32(m_vpos, x) = color;
if (!INTERLACED)
if (m_bitmap.cliprect().contains(x, m_vpos + 1))
m_bitmap.pix32(m_vpos + 1, x) = color;
}
m_line_pos_cycles = cycles;
}
示例14: plot_pixel_pal
void sliver_state::plot_pixel_pal(int x, int y, int addr)
{
UINT32 r,g,b;
if (y < 0 || x < 0 || x > 383 || y > 255)
return;
b=(m_colorram[addr] << 2) | (m_colorram[addr] & 0x3);
g=(m_colorram[addr+0x100] << 2) | (m_colorram[addr+0x100] & 3);
r=(m_colorram[addr+0x200] << 2) | (m_colorram[addr+0x200] & 3);
m_bitmap_fg.pix32(y, x) = r | (g<<8) | (b<<16);
}
示例15: mixdassaultlayer
void dassault_state::mixdassaultlayer(bitmap_rgb32 &bitmap, bitmap_ind16* sprite_bitmap, const rectangle &cliprect, uint16_t pri, uint16_t primask, uint16_t penbase, uint8_t alpha)
{
int y, x;
const pen_t *paldata = &m_palette->pen(0);
uint16_t* srcline;
uint32_t* dstline;
for (y=cliprect.top();y<=cliprect.bottom();y++)
{
srcline=&sprite_bitmap->pix16(y,0);
dstline=&bitmap.pix32(y,0);
for (x=cliprect.left();x<=cliprect.right();x++)
{
uint16_t pix = srcline[x];
if ((pix & primask) != pri)
continue;
if (pix&0xf)
{
uint16_t pen = pix&0x1ff;
if (pix & 0x800) pen += 0x200;
if (alpha!=0xff)
{
if (pix&0x400) // TODO, Additive/Subtractive Blending?
{
uint32_t base = dstline[x];
dstline[x] = alpha_blend_r32(base, paldata[pen+penbase], alpha);
}
else if (pix&0x200)
{
uint32_t base = dstline[x];
dstline[x] = alpha_blend_r32(base, paldata[pen+penbase], alpha);
}
else
{
dstline[x] = paldata[pen+penbase];
}
}
else
{
dstline[x] = paldata[pen+penbase];
}
}
}
}
}