diff options
74 files changed, 665 insertions, 928 deletions
diff --git a/src/emu/bus/a2bus/a2videoterm.c b/src/emu/bus/a2bus/a2videoterm.c index 539f995621f..eaf84e9f26c 100644 --- a/src/emu/bus/a2bus/a2videoterm.c +++ b/src/emu/bus/a2bus/a2videoterm.c @@ -349,7 +349,7 @@ void a2bus_videx80_device::write_c800(address_space &space, UINT16 offset, UINT8 static MC6845_UPDATE_ROW( videoterm_update_row ) { a2bus_videx80_device *vterm = downcast<a2bus_videx80_device *>(device->owner()); - const rgb_t *palette = palette_entry_list_raw(bitmap.palette()); + const rgb_t *palette = bitmap.palette()->entry_list_raw(); UINT32 *p = &bitmap.pix32(y); UINT16 chr_base = ra; //( ra & 0x08 ) ? 0x800 | ( ra & 0x07 ) : ra; int i; diff --git a/src/emu/bus/ecbbus/grip.c b/src/emu/bus/ecbbus/grip.c index d88377b5f95..cbeacd06176 100644 --- a/src/emu/bus/ecbbus/grip.c +++ b/src/emu/bus/ecbbus/grip.c @@ -253,7 +253,7 @@ static MC6845_UPDATE_ROW( grip_update_row ) static MC6845_UPDATE_ROW( grip5_update_row ) { grip5_state *state = device->machine().driver_data<grip5_state>(); - const rgb_t *palette = palette_entry_list_raw(bitmap.palette()); + const rgb_t *palette = bitmap.palette()->entry_list_raw(); int column, bit; for (column = 0; column < x_count; column++) diff --git a/src/emu/emupal.c b/src/emu/emupal.c index 8de90e722e1..4b338f3e629 100644 --- a/src/emu/emupal.c +++ b/src/emu/emupal.c @@ -144,7 +144,7 @@ void palette_init(running_machine &machine) allocate_shadow_tables(machine, palette); /* set up save/restore of the palette */ - numcolors = palette_get_num_colors(machine.palette); + numcolors = machine.palette->num_colors(); palette->save_pen = auto_alloc_array(machine, pen_t, numcolors); palette->save_bright = auto_alloc_array(machine, float, numcolors); machine.save().save_pointer(NAME(palette->save_pen), numcolors); @@ -170,7 +170,7 @@ void palette_set_shadow_factor(running_machine &machine, double factor) palette_private *palette = machine.palette_data; assert(palette->shadow_group != 0); - palette_group_set_contrast(machine.palette, palette->shadow_group, factor); + machine.palette->group_set_contrast(palette->shadow_group, factor); } @@ -184,7 +184,7 @@ void palette_set_highlight_factor(running_machine &machine, double factor) palette_private *palette = machine.palette_data; assert(palette->hilight_group != 0); - palette_group_set_contrast(machine.palette, palette->hilight_group, factor); + machine.palette->group_set_contrast(palette->hilight_group, factor); } @@ -530,15 +530,15 @@ pen_t get_white_pen(running_machine &machine) static void palette_presave(running_machine &machine) { - int numcolors = palette_get_num_colors(machine.palette); + int numcolors = machine.palette->num_colors(); palette_private *palette = machine.palette_data; int index; /* fill the save arrays with updated pen and brightness information */ for (index = 0; index < numcolors; index++) { - palette->save_pen[index] = palette_entry_get_color(machine.palette, index); - palette->save_bright[index] = palette_entry_get_contrast(machine.palette, index); + palette->save_pen[index] = machine.palette->entry_color(index); + palette->save_bright[index] = machine.palette->entry_contrast(index); } } @@ -550,15 +550,15 @@ static void palette_presave(running_machine &machine) static void palette_postload(running_machine &machine) { - int numcolors = palette_get_num_colors(machine.palette); + int numcolors = machine.palette->num_colors(); palette_private *palette = machine.palette_data; int index; /* reset the pen and brightness for each entry */ for (index = 0; index < numcolors; index++) { - palette_entry_set_color(machine.palette, index, palette->save_pen[index]); - palette_entry_set_contrast(machine.palette, index, palette->save_bright[index]); + machine.palette->entry_set_color(index, palette->save_pen[index]); + machine.palette->entry_set_contrast(index, palette->save_bright[index]); } } @@ -571,7 +571,7 @@ static void palette_exit(running_machine &machine) { /* dereference the palette */ if (machine.palette != NULL) - palette_deref(machine.palette); + machine.palette->deref(); } @@ -593,26 +593,25 @@ static void allocate_palette(running_machine &machine, palette_private *palette) assert_always(machine.total_colors() * numgroups <= 65536, "Error: palette has more than 65536 colors."); /* allocate a palette object containing all the colors and groups */ - machine.palette = palette_alloc(machine.total_colors(), numgroups); - assert_always(machine.palette != NULL, "Failed to allocate system palette"); + machine.palette = new palette_t(machine.total_colors(), numgroups); /* configure the groups */ if (palette->shadow_group != 0) - palette_group_set_contrast(machine.palette, palette->shadow_group, (float)PALETTE_DEFAULT_SHADOW_FACTOR); + machine.palette->group_set_contrast(palette->shadow_group, (float)PALETTE_DEFAULT_SHADOW_FACTOR); if (palette->hilight_group != 0) - palette_group_set_contrast(machine.palette, palette->hilight_group, (float)PALETTE_DEFAULT_HIGHLIGHT_FACTOR); + machine.palette->group_set_contrast(palette->hilight_group, (float)PALETTE_DEFAULT_HIGHLIGHT_FACTOR); /* set the initial colors to a standard rainbow */ for (index = 0; index < machine.total_colors(); index++) - palette_entry_set_color(machine.palette, index, MAKE_RGB(pal1bit(index >> 0), pal1bit(index >> 1), pal1bit(index >> 2))); + machine.palette->entry_set_color(index, MAKE_RGB(pal1bit(index >> 0), pal1bit(index >> 1), pal1bit(index >> 2))); /* switch off the color mode */ switch (palette->format) { /* 16-bit paletteized case */ case BITMAP_FORMAT_IND16: - palette->black_pen = palette_get_black_entry(machine.palette); - palette->white_pen = palette_get_white_entry(machine.palette); + palette->black_pen = machine.palette->black_entry(); + palette->white_pen = machine.palette->white_entry(); if (palette->black_pen >= 65536) palette->black_pen = 0; if (palette->white_pen >= 65536) @@ -640,7 +639,7 @@ static void allocate_palette(running_machine &machine, palette_private *palette) static void allocate_color_tables(running_machine &machine, palette_private *palette) { - int total_colors = palette_get_num_colors(machine.palette) * palette_get_num_groups(machine.palette); + int total_colors = machine.palette->num_colors() * machine.palette->num_groups(); pen_t *pentable; int i; @@ -655,7 +654,7 @@ static void allocate_color_tables(running_machine &machine, palette_private *pal break; case BITMAP_FORMAT_RGB32: - machine.pens = palette_entry_list_adjusted(machine.palette); + machine.pens = machine.palette->entry_list_adjusted(); break; default: diff --git a/src/emu/emupal.h b/src/emu/emupal.h index 5b22b005d33..b3aedf58c2d 100644 --- a/src/emu/emupal.h +++ b/src/emu/emupal.h @@ -198,7 +198,7 @@ pen_t get_white_pen(running_machine &machine); INLINE void palette_set_color(running_machine &machine, pen_t pen, rgb_t rgb) { - palette_entry_set_color(machine.palette, pen, rgb); + machine.palette->entry_set_color(pen, rgb); } @@ -209,7 +209,7 @@ INLINE void palette_set_color(running_machine &machine, pen_t pen, rgb_t rgb) INLINE void palette_set_color_rgb(running_machine &machine, pen_t pen, UINT8 r, UINT8 g, UINT8 b) { - palette_entry_set_color(machine.palette, pen, MAKE_RGB(r, g, b)); + machine.palette->entry_set_color(pen, MAKE_RGB(r, g, b)); } @@ -220,7 +220,7 @@ INLINE void palette_set_color_rgb(running_machine &machine, pen_t pen, UINT8 r, INLINE rgb_t palette_get_color(running_machine &machine, pen_t pen) { - return palette_entry_get_color(machine.palette, pen); + return machine.palette->entry_color(pen); } @@ -231,7 +231,7 @@ INLINE rgb_t palette_get_color(running_machine &machine, pen_t pen) INLINE void palette_set_pen_contrast(running_machine &machine, pen_t pen, double bright) { - palette_entry_set_contrast(machine.palette, pen, bright); + machine.palette->entry_set_contrast(pen, bright); } @@ -243,7 +243,7 @@ INLINE void palette_set_pen_contrast(running_machine &machine, pen_t pen, double INLINE void palette_set_colors(running_machine &machine, pen_t color_base, const rgb_t *colors, int color_count) { while (color_count--) - palette_entry_set_color(machine.palette, color_base++, *colors++); + machine.palette->entry_set_color(color_base++, *colors++); } diff --git a/src/emu/machine/laserdsc.c b/src/emu/machine/laserdsc.c index 774b35222c7..8e5261da957 100644 --- a/src/emu/machine/laserdsc.c +++ b/src/emu/machine/laserdsc.c @@ -325,7 +325,7 @@ void laserdisc_device::device_stop() if (m_videotex != NULL) machine().render().texture_free(m_videotex); if (m_videopalette != NULL) - palette_deref(m_videopalette); + m_videopalette->deref(); if (m_overtex != NULL) machine().render().texture_free(m_overtex); } @@ -769,11 +769,11 @@ void laserdisc_device::init_video() m_screen->register_vblank_callback(vblank_state_delegate(FUNC(laserdisc_device::vblank_state_changed), this)); // allocate palette for applying brightness/contrast/gamma - m_videopalette = palette_alloc(256, 1); + m_videopalette = new palette_t(256); if (m_videopalette == NULL) throw emu_fatalerror("Out of memory allocating video palette"); for (int index = 0; index < 256; index++) - palette_entry_set_color(m_videopalette, index, MAKE_RGB(index, index, index)); + m_videopalette->entry_set_color(index, MAKE_RGB(index, index, index)); // allocate video frames for (int index = 0; index < ARRAY_LENGTH(m_frame); index++) diff --git a/src/emu/render.c b/src/emu/render.c index b18ddbf5766..717ef626c89 100644 --- a/src/emu/render.c +++ b/src/emu/render.c @@ -467,7 +467,7 @@ bool render_texture::get_scaled(UINT32 dwidth, UINT32 dheight, render_texinfo &t texinfo.osddata = m_osddata; // are we scaler-free? if so, just return the source bitmap - const rgb_t *palbase = (m_format == TEXFORMAT_PALETTE16 || m_format == TEXFORMAT_PALETTEA16) ? palette_entry_list_adjusted(m_bitmap->palette()) : NULL; + const rgb_t *palbase = (m_format == TEXFORMAT_PALETTE16 || m_format == TEXFORMAT_PALETTEA16) ? m_bitmap->palette()->entry_list_adjusted() : NULL; if (m_scaler == NULL || (m_bitmap != NULL && swidth == dwidth && sheight == dheight)) { // add a reference and set up the source bitmap @@ -554,7 +554,7 @@ const rgb_t *render_texture::get_adjusted_palette(render_container &container) // if no adjustment necessary, return the raw palette assert(m_bitmap->palette() != NULL); - adjusted = palette_entry_list_adjusted(m_bitmap->palette()); + adjusted = m_bitmap->palette()->entry_list_adjusted(); if (!container.has_brightness_contrast_gamma_changes()) return adjusted; @@ -564,7 +564,7 @@ const rgb_t *render_texture::get_adjusted_palette(render_container &container) return adjusted; // otherwise, ensure we have memory allocated and compute the adjusted result ourself - numentries = palette_get_num_colors(m_bitmap->palette()) * palette_get_num_groups(m_bitmap->palette()); + numentries = m_bitmap->palette()->num_colors() * m_bitmap->palette()->num_groups(); if (m_bcglookup == NULL || m_bcglookup_entries < numentries) { rgb_t *newlookup = auto_alloc_array(m_manager->machine(), rgb_t, numentries); @@ -637,7 +637,7 @@ render_container::render_container(render_manager &manager, screen_device *scree // allocate a client to the main palette if (manager.machine().palette != NULL) - m_palclient = palette_client_alloc(manager.machine().palette); + m_palclient = global_alloc(palette_client(*manager.machine().palette)); recompute_lookups(); } @@ -655,8 +655,7 @@ render_container::~render_container() m_manager.texture_free(m_overlaytexture); // release our palette client - if (m_palclient != NULL) - palette_client_free(m_palclient); + global_free(m_palclient); } @@ -772,7 +771,7 @@ const rgb_t *render_container::bcg_lookup_table(int texformat, palette_t *palett { case TEXFORMAT_PALETTE16: case TEXFORMAT_PALETTEA16: - return (palette != NULL && palette == palette_client_get_palette(m_palclient)) ? m_bcglookup : NULL; + return (palette != NULL && palette == &m_palclient->palette()) ? m_bcglookup : NULL; case TEXFORMAT_RGB32: case TEXFORMAT_ARGB32: @@ -858,9 +857,9 @@ void render_container::recompute_lookups() // recompute the palette entries if (m_palclient != NULL) { - palette_t *palette = palette_client_get_palette(m_palclient); - const pen_t *adjusted_palette = palette_entry_list_adjusted(palette); - int colors = palette_get_num_colors(palette) * palette_get_num_groups(palette); + palette_t &palette = m_palclient->palette(); + const pen_t *adjusted_palette = palette.entry_list_adjusted(); + int colors = palette.num_colors() * palette.num_groups(); for (int i = 0; i < colors; i++) { @@ -887,13 +886,13 @@ void render_container::update_palette() // get the dirty list UINT32 mindirty, maxdirty; - const UINT32 *dirty = palette_client_get_dirty_list(m_palclient, &mindirty, &maxdirty); + const UINT32 *dirty = m_palclient->dirty_list(mindirty, maxdirty); // iterate over dirty items and update them if (dirty != NULL) { - palette_t *palette = palette_client_get_palette(m_palclient); - const pen_t *adjusted_palette = palette_entry_list_adjusted(palette); + palette_t &palette = m_palclient->palette(); + const pen_t *adjusted_palette = palette.entry_list_adjusted(); // loop over chunks of 32 entries, since we can quickly examine 32 at a time for (UINT32 entry32 = mindirty / 32; entry32 <= maxdirty / 32; entry32++) diff --git a/src/emu/screen.c b/src/emu/screen.c index 4dd3e62b5b1..d8cd3e5c9ac 100644 --- a/src/emu/screen.c +++ b/src/emu/screen.c @@ -880,7 +880,7 @@ void screen_device::update_burnin() { UINT64 *dst = &m_burnin.pix64(y); const UINT16 *src = &srcbitmap.pix16(srcy >> 16); - const rgb_t *palette = palette_entry_list_adjusted(machine().palette); + const rgb_t *palette = machine().palette->entry_list_adjusted(); for (x = 0, srcx = xstart; x < dstwidth; x++, srcx += xstep) { rgb_t pixel = palette[src[srcx >> 16]]; diff --git a/src/emu/tilemap.c b/src/emu/tilemap.c index 27f1663d611..42f8e9062f8 100644 --- a/src/emu/tilemap.c +++ b/src/emu/tilemap.c @@ -1183,7 +1183,7 @@ void tilemap_t::draw_instance(_BitmapClass &dest, const blit_parameters &blit, i x_end = MIN(x_end, x2); // if we're rendering something, compute the pointers - const rgb_t *clut = (dest.palette() != NULL) ? palette_entry_list_raw(dest.palette()) : machine().pens; + const rgb_t *clut = (dest.palette() != NULL) ? dest.palette()->entry_list_raw() : machine().pens; if (prev_trans != WHOLLY_TRANSPARENT) { const UINT16 *source0 = source_baseaddr + x_start; @@ -1277,7 +1277,7 @@ void tilemap_t::draw_roz_core(_BitmapClass &destbitmap, const blit_parameters &b UINT32 startx, UINT32 starty, int incxx, int incxy, int incyx, int incyy, bool wraparound) { // pre-cache all the inner loop values - const rgb_t *clut = ((destbitmap.palette() != NULL) ? palette_entry_list_raw(destbitmap.palette()) : machine().pens) + (blit.tilemap_priority_code >> 16); + const rgb_t *clut = ((destbitmap.palette() != NULL) ? destbitmap.palette()->entry_list_raw() : machine().pens) + (blit.tilemap_priority_code >> 16); bitmap_ind8 &priority_bitmap = *blit.priority; const int xmask = m_pixmap.width() - 1; const int ymask = m_pixmap.height() - 1; diff --git a/src/emu/ui/viewgfx.c b/src/emu/ui/viewgfx.c index 5c584787826..f1868c559af 100644 --- a/src/emu/ui/viewgfx.c +++ b/src/emu/ui/viewgfx.c @@ -257,7 +257,7 @@ static void palette_handler(running_machine &machine, render_container *containe { int total = state->palette.which ? colortable_palette_get_size(machine.colortable) : machine.total_colors(); const char *title = state->palette.which ? "COLORTABLE" : "PALETTE"; - const rgb_t *raw_color = palette_entry_list_raw(machine.palette); + const rgb_t *raw_color = machine.palette->entry_list_raw(); render_font *ui_font = machine.ui().get_font(); float cellwidth, cellheight; float chwidth, chheight; @@ -787,7 +787,7 @@ static void gfxset_draw_item(running_machine &machine, gfx_element *gfx, int ind }; int width = (rotate & ORIENTATION_SWAP_XY) ? gfx->height() : gfx->width(); int height = (rotate & ORIENTATION_SWAP_XY) ? gfx->width() : gfx->height(); - const rgb_t *palette = (machine.total_colors() != 0) ? palette_entry_list_raw(machine.palette) : NULL; + const rgb_t *palette = (machine.total_colors() != 0) ? machine.palette->entry_list_raw() : NULL; UINT32 palette_mask = ~0; int x, y; diff --git a/src/emu/video.c b/src/emu/video.c index bf4ae762789..8e0e2f1c3d2 100644 --- a/src/emu/video.c +++ b/src/emu/video.c @@ -310,7 +310,7 @@ void video_manager::save_snapshot(screen_device *screen, emu_file &file) png_add_text(&pnginfo, "System", text2); // now do the actual work - const rgb_t *palette = (machine().palette != NULL) ? palette_entry_list_adjusted(machine().palette) : NULL; + const rgb_t *palette = (machine().palette != NULL) ? machine().palette->entry_list_adjusted() : NULL; png_error error = png_write_bitmap(file, &pnginfo, m_snap_bitmap, machine().total_colors(), palette); if (error != PNGERR_NONE) mame_printf_error("Error generating PNG for snapshot: png_error = %d\n", error); @@ -1230,7 +1230,7 @@ void video_manager::record_frame() } // write the next frame - const rgb_t *palette = (machine().palette != NULL) ? palette_entry_list_adjusted(machine().palette) : NULL; + const rgb_t *palette = (machine().palette != NULL) ? machine().palette->entry_list_adjusted() : NULL; png_error error = mng_capture_frame(*m_mngfile, &pnginfo, m_snap_bitmap, machine().total_colors(), palette); png_free(&pnginfo); if (error != PNGERR_NONE) @@ -1258,7 +1258,7 @@ bool video_assert_out_of_range_pixels(running_machine &machine, bitmap_ind16 &bi { #ifdef MAME_DEBUG // iterate over rows - int maxindex = palette_get_max_index(machine.palette); + int maxindex = machine.palette->max_index(); for (int y = 0; y < bitmap.height(); y++) { UINT16 *rowbase = &bitmap.pix16(y); diff --git a/src/emu/video/pc_cga.c b/src/emu/video/pc_cga.c index d22b9177bf2..428a6fa0537 100644 --- a/src/emu/video/pc_cga.c +++ b/src/emu/video/pc_cga.c @@ -482,7 +482,7 @@ static MC6845_UPDATE_ROW( cga_text_inten_update_row ) { UINT8 *videoram = cga.videoram; UINT32 *p = &bitmap.pix32(y); - const rgb_t *palette = palette_entry_list_raw(bitmap.palette()); + const rgb_t *palette = bitmap.palette()->entry_list_raw(); int i; running_machine &machine = device->machine(); @@ -522,7 +522,7 @@ static MC6845_UPDATE_ROW( cga_text_inten_comp_grey_update_row ) { UINT8 *videoram = cga.videoram; UINT32 *p = &bitmap.pix32(y); - const rgb_t *palette = palette_entry_list_raw(bitmap.palette()); + const rgb_t *palette = bitmap.palette()->entry_list_raw(); int i; running_machine &machine = device->machine(); @@ -561,7 +561,7 @@ static MC6845_UPDATE_ROW( cga_text_inten_alt_update_row ) { UINT8 *videoram = cga.videoram; UINT32 *p = &bitmap.pix32(y); - const rgb_t *palette = palette_entry_list_raw(bitmap.palette()); + const rgb_t *palette = bitmap.palette()->entry_list_raw(); int i; running_machine &machine = device->machine(); @@ -600,7 +600,7 @@ static MC6845_UPDATE_ROW( cga_text_blink_update_row ) { UINT8 *videoram = cga.videoram; UINT32 *p = &bitmap.pix32(y); - const rgb_t *palette = palette_entry_list_raw(bitmap.palette()); + const rgb_t *palette = bitmap.palette()->entry_list_raw(); int i; running_machine &machine = device->machine(); @@ -644,7 +644,7 @@ static MC6845_UPDATE_ROW( cga_text_blink_update_row_si ) { UINT8 *videoram = cga.videoram; UINT32 *p = &bitmap.pix32(y); - const rgb_t *palette = palette_entry_list_raw(bitmap.palette()); + const rgb_t *palette = bitmap.palette()->entry_list_raw(); int i; running_machine &machine = device->machine(); @@ -696,7 +696,7 @@ static MC6845_UPDATE_ROW( cga_text_blink_alt_update_row ) { UINT8 *videoram = cga.videoram; UINT32 *p = &bitmap.pix32(y); - const rgb_t *palette = palette_entry_list_raw(bitmap.palette()); + const rgb_t *palette = bitmap.palette()->entry_list_raw(); int i; running_machine &machine = device->machine(); @@ -744,7 +744,7 @@ static MC6845_UPDATE_ROW( cga_gfx_4bppl_update_row ) { UINT8 *videoram = cga.videoram; UINT32 *p = &bitmap.pix32(y); - const rgb_t *palette = palette_entry_list_raw(bitmap.palette()); + const rgb_t *palette = bitmap.palette()->entry_list_raw(); int i; running_machine &machine = device->machine(); @@ -802,7 +802,7 @@ static MC6845_UPDATE_ROW( cga_gfx_4bpph_update_row ) { UINT8 *videoram = cga.videoram; UINT32 *p = &bitmap.pix32(y); - const rgb_t *palette = palette_entry_list_raw(bitmap.palette()); + const rgb_t *palette = bitmap.palette()->entry_list_raw(); int i; running_machine &machine = device->machine(); @@ -846,7 +846,7 @@ static MC6845_UPDATE_ROW( cga_gfx_2bpp_update_row ) { UINT8 *videoram = cga.videoram; UINT32 *p = &bitmap.pix32(y); - const rgb_t *palette = palette_entry_list_raw(bitmap.palette()); + const rgb_t *palette = bitmap.palette()->entry_list_raw(); int i; running_machine &machine = device->machine(); @@ -882,7 +882,7 @@ static MC6845_UPDATE_ROW( cga_gfx_1bpp_update_row ) { UINT8 *videoram = cga.videoram; UINT32 *p = &bitmap.pix32(y); - const rgb_t *palette = palette_entry_list_raw(bitmap.palette()); + const rgb_t *palette = bitmap.palette()->entry_list_raw(); UINT8 fg = cga.color_select & 0x0F; int i; running_machine &machine = device->machine(); @@ -1460,7 +1460,7 @@ static MC6845_UPDATE_ROW( pc1512_gfx_4bpp_update_row ) { UINT8 *videoram = cga.videoram; UINT32 *p = &bitmap.pix32(y); - const rgb_t *palette = palette_entry_list_raw(bitmap.palette()); + const rgb_t *palette = bitmap.palette()->entry_list_raw(); UINT16 offset_base = ra << 13; int j; running_machine &machine = device->machine(); diff --git a/src/lib/util/bitmap.c b/src/lib/util/bitmap.c index 6f826ac6767..4d1f8502f50 100644 --- a/src/lib/util/bitmap.c +++ b/src/lib/util/bitmap.c @@ -271,14 +271,14 @@ void bitmap_t::set_palette(palette_t *palette) // first dereference any existing palette if (m_palette != NULL) { - palette_deref(m_palette); + m_palette->deref(); m_palette = NULL; } // then reference any new palette if (palette != NULL) { - palette_ref(palette); + palette->ref(); m_palette = palette; } } diff --git a/src/lib/util/palette.c b/src/lib/util/palette.c index a72b8c64314..719a832c088 100644 --- a/src/lib/util/palette.c +++ b/src/lib/util/palette.c @@ -14,669 +14,435 @@ -/*************************************************************************** - TYPE DEFINITIONS -***************************************************************************/ - -/* object to track dirty states */ -struct dirty_state -{ - UINT32 * dirty; /* bitmap of dirty entries */ - UINT32 mindirty; /* minimum dirty entry */ - UINT32 maxdirty; /* minimum dirty entry */ -}; +//************************************************************************** +// INLINE FUNCTIONS +//************************************************************************** +//------------------------------------------------- +// adjust_palette_entry - adjust a palette +// entry for brightness +//------------------------------------------------- -/* a single palette client */ -struct palette_client +inline rgb_t palette_t::adjust_palette_entry(rgb_t entry, float brightness, float contrast, const UINT8 *gamma_map) { - palette_client *next; /* pointer to next client */ - palette_t * palette; /* reference to the palette */ - dirty_state live; /* live dirty state */ - dirty_state previous; /* previous dirty state */ -}; - - -/* a palette object */ -struct palette_t -{ - UINT32 refcount; /* reference count on the palette */ - UINT32 numcolors; /* number of colors in the palette */ - UINT32 numgroups; /* number of groups in the palette */ - - float brightness; /* overall brightness value */ - float contrast; /* overall contrast value */ - float gamma; /* overall gamma value */ - UINT8 gamma_map[256]; /* gamma map */ - - rgb_t * entry_color; /* array of raw colors */ - float * entry_contrast; /* contrast value for each entry */ - rgb_t * adjusted_color; /* array of adjusted colors */ - rgb_t * adjusted_rgb15; /* array of adjusted colors as RGB15 */ - - float * group_bright; /* brightness value for each group */ - float * group_contrast; /* contrast value for each group */ - - palette_client *client_list; /* list of clients for this palette */ -}; - - - -/*************************************************************************** - FUNCTION PROTOTYPES -***************************************************************************/ - -static void internal_palette_free(palette_t *palette); -static void update_adjusted_color(palette_t *palette, UINT32 group, UINT32 index); - - - -/*************************************************************************** - INLINE FUNCTIONS -***************************************************************************/ - -/*------------------------------------------------- - adjust_palette_entry - adjust a palette - entry for brightness --------------------------------------------------*/ - -INLINE rgb_t adjust_palette_entry(rgb_t entry, float brightness, float contrast, const UINT8 *gamma_map) -{ - int r = rgb_clamp((float)gamma_map[RGB_RED(entry)] * contrast + brightness); - int g = rgb_clamp((float)gamma_map[RGB_GREEN(entry)] * contrast + brightness); - int b = rgb_clamp((float)gamma_map[RGB_BLUE(entry)] * contrast + brightness); + int r = rgb_clamp(float(gamma_map[RGB_RED(entry)]) * contrast + brightness); + int g = rgb_clamp(float(gamma_map[RGB_GREEN(entry)]) * contrast + brightness); + int b = rgb_clamp(float(gamma_map[RGB_BLUE(entry)]) * contrast + brightness); int a = RGB_ALPHA(entry); return MAKE_ARGB(a,r,g,b); } -/*************************************************************************** - PALETTE ALLOCATION -***************************************************************************/ +//************************************************************************** +// CLIENT DIRTY LIST MANAGEMENT +//************************************************************************** -/*------------------------------------------------- - palette_alloc - allocate a new palette object - and take a single reference on it --------------------------------------------------*/ +//------------------------------------------------- +// dirty_state - constructor +//------------------------------------------------- -palette_t *palette_alloc(UINT32 numcolors, UINT32 numgroups) +palette_client::dirty_state::dirty_state() + : m_mindirty(0), + m_maxdirty(0) { - palette_t *palette; - UINT32 index; - - /* allocate memory */ - palette = (palette_t *)malloc(sizeof(*palette)); - if (palette == NULL) - goto error; - memset(palette, 0, sizeof(*palette)); - - /* initialize overall controls */ - palette->brightness = 0.0f; - palette->contrast = 1.0f; - palette->gamma = 1.0f; - for (index = 0; index < 256; index++) - palette->gamma_map[index] = index; - - /* allocate an array of palette entries and individual contrasts for each */ - palette->entry_color = (rgb_t *)malloc(sizeof(*palette->entry_color) * numcolors); - palette->entry_contrast = (float *)malloc(sizeof(*palette->entry_contrast) * numcolors); - if (palette->entry_color == NULL || palette->entry_contrast == NULL) - goto error; - - /* initialize the entries */ - for (index = 0; index < numcolors; index++) - { - palette->entry_color[index] = RGB_BLACK; - palette->entry_contrast[index] = 1.0f; - } - - /* allocate an array of brightness and contrast for each group */ - palette->group_bright = (float *)malloc(sizeof(*palette->group_bright) * numgroups); - palette->group_contrast = (float *)malloc(sizeof(*palette->group_contrast) * numgroups); - if (palette->group_bright == NULL || palette->group_contrast == NULL) - goto error; - - /* initialize the entries */ - for (index = 0; index < numgroups; index++) - { - palette->group_bright[index] = 0.0f; - palette->group_contrast[index] = 1.0f; - } - - /* allocate arrays for the adjusted colors */ - palette->adjusted_color = (rgb_t *)malloc(sizeof(*palette->adjusted_color) * (numcolors * numgroups + 2)); - palette->adjusted_rgb15 = (rgb_t *)malloc(sizeof(*palette->adjusted_rgb15) * (numcolors * numgroups + 2)); - if (palette->adjusted_color == NULL || palette->adjusted_rgb15 == NULL) - goto error; - - /* initialize the arrays */ - for (index = 0; index < numcolors * numgroups; index++) - { - palette->adjusted_color[index] = RGB_BLACK; - palette->adjusted_rgb15[index] = rgb_to_rgb15(RGB_BLACK); - } - - /* add black and white as the last two colors */ - palette->adjusted_color[index] = RGB_BLACK; - palette->adjusted_rgb15[index++] = rgb_to_rgb15(RGB_BLACK); - palette->adjusted_color[index] = RGB_WHITE; - palette->adjusted_rgb15[index++] = rgb_to_rgb15(RGB_WHITE); - - /* initialize the remainder of the structure */ - palette->refcount = 1; - palette->numcolors = numcolors; - palette->numgroups = numgroups; - return palette; - -error: - if (palette != NULL) - internal_palette_free(palette); - - return NULL; } -/*------------------------------------------------- - palette_ref - reference a palette object, - incrementing its reference count --------------------------------------------------*/ +//------------------------------------------------- +// dirty_list - return the current list and +// min/max values +//------------------------------------------------- -void palette_ref(palette_t *palette) +const UINT32 *palette_client::dirty_state::dirty_list(UINT32 &mindirty, UINT32 &maxdirty) { - palette->refcount++; -} + // fill in the mindirty/maxdirty + mindirty = m_mindirty; + maxdirty = m_maxdirty; - -/*------------------------------------------------- - palette_deref - dereference a palette object; - if the reference count goes to 0, it is freed --------------------------------------------------*/ - -void palette_deref(palette_t *palette) -{ - /* if the reference count goes to 0, free */ - if (--palette->refcount == 0) - internal_palette_free(palette); + // if nothing to report, report nothing + return (m_mindirty > m_maxdirty) ? NULL : &m_dirty[0]; } +//------------------------------------------------- +// resize - resize the dirty array and mark all +// dirty +//------------------------------------------------- -/*************************************************************************** - PALETTE INFORMATION -***************************************************************************/ - -/*------------------------------------------------- - palette_get_num_colors - return the number of - colors allocated in the palette --------------------------------------------------*/ - -int palette_get_num_colors(palette_t *palette) +void palette_client::dirty_state::resize(UINT32 colors) { - return palette->numcolors; -} - + // resize to the correct number of dwords + UINT32 dirty_dwords = (colors + 31) / 32; + m_dirty.resize(dirty_dwords); -/*------------------------------------------------- - palette_get_num_groups - return the number of - groups managed by the palette --------------------------------------------------*/ + // mark all entries dirty + memset(&m_dirty[0], 0xff, dirty_dwords * sizeof(UINT32)); + m_dirty[dirty_dwords - 1] &= (1 << (colors % 32)) - 1; -int palette_get_num_groups(palette_t *palette) -{ - return palette->numgroups; + // set min/max + m_mindirty = 0; + m_maxdirty = colors - 1; } -/*------------------------------------------------- - palette_get_max_index - return the maximum - allowed index (i.e., length of arrays returned - by palette_entry_list*) --------------------------------------------------*/ +//------------------------------------------------- +// mark_dirty - mark a single entry dirty +//------------------------------------------------- -int palette_get_max_index(palette_t *palette) +void palette_client::dirty_state::mark_dirty(UINT32 index) { - return palette->numcolors * palette->numgroups + 2; + m_dirty[index / 32] |= 1 << (index % 32); + m_mindirty = MIN(m_mindirty, index); + m_maxdirty = MAX(m_maxdirty, index); } -/*------------------------------------------------- - palette_get_black_entry - return the index of - the black entry --------------------------------------------------*/ +//------------------------------------------------- +// reset - clear the dirty array to mark all +// entries as clean +//------------------------------------------------- -UINT32 palette_get_black_entry(palette_t *palette) +void palette_client::dirty_state::reset() { - return palette->numcolors * palette->numgroups + 0; + // erase relevant entries in the new live one + memset(&m_dirty[m_mindirty / 32], 0, ((m_maxdirty / 32) + 1 - (m_mindirty / 32)) * sizeof(UINT32)); + m_mindirty = m_dirty.count() * 32 - 1; + m_maxdirty = 0; } -/*------------------------------------------------- - palette_get_white_entry - return the index of - the white entry --------------------------------------------------*/ - -UINT32 palette_get_white_entry(palette_t *palette) -{ - return palette->numcolors * palette->numgroups + 1; -} +//************************************************************************** +// PALETTE CLIENT +//************************************************************************** +//------------------------------------------------- +// palette_client - constructor +//------------------------------------------------- -/*************************************************************************** - PALETTE CLIENTS -***************************************************************************/ +palette_client::palette_client(palette_t &palette) + : m_palette(palette), + m_next(NULL), + m_live(&m_dirty[0]), + m_previous(&m_dirty[1]) +{ + // add a reference to the palette + palette.ref(); -/*------------------------------------------------- - palette_client_alloc - add a new client to a - palette --------------------------------------------------*/ + // resize the dirty lists + UINT32 total_colors = palette.num_colors() * palette.num_groups(); + m_dirty[0].resize(total_colors); + m_dirty[1].resize(total_colors); -palette_client *palette_client_alloc(palette_t *palette) -{ - UINT32 total_colors = palette->numcolors * palette->numgroups; - UINT32 dirty_dwords = (total_colors + 31) / 32; - palette_client *client; - - /* allocate memory for the client */ - client = (palette_client *)malloc(sizeof(*client)); - if (client == NULL) - goto error; - memset(client, 0, sizeof(*client)); - - /* allocate dirty lists */ - client->live.dirty = (UINT32 *)malloc(dirty_dwords * sizeof(UINT32)); - client->previous.dirty = (UINT32 *)malloc(dirty_dwords * sizeof(UINT32)); - if (client->live.dirty == NULL || client->previous.dirty == NULL) - goto error; - - /* mark everything dirty to start with */ - memset(client->live.dirty, 0xff, dirty_dwords * sizeof(UINT32)); - memset(client->previous.dirty, 0xff, dirty_dwords * sizeof(UINT32)); - client->live.dirty[dirty_dwords - 1] &= (1 << (total_colors % 32)) - 1; - client->previous.dirty[dirty_dwords - 1] &= (1 << (total_colors % 32)) - 1; - - /* initialize the rest of the structure and add a reference to a palette */ - client->palette = palette; - palette_ref(palette); - client->live.mindirty = 0; - client->live.maxdirty = total_colors - 1; - - /* now add us to the list of clients */ - client->next = palette->client_list; - palette->client_list = client; - return client; - -error: - if (client != NULL) - { - if (client->live.dirty != NULL) - free(client->live.dirty); - if (client->previous.dirty != NULL) - free(client->previous.dirty); - free(client); - } - return NULL; + // now add us to the list of clients + m_next = palette.m_client_list; + palette.m_client_list = this; } -/*------------------------------------------------- - palette_client_free - remove a client from a - palette --------------------------------------------------*/ +//------------------------------------------------- +// ~palette_client - destructor +//------------------------------------------------- -void palette_client_free(palette_client *client) +palette_client::~palette_client() { - palette_client **curptr; - - /* first locate and remove ourself from the palette's list */ - for (curptr = &client->palette->client_list; *curptr != NULL; curptr = &(*curptr)->next) - if (*curptr == client) + // first locate and remove ourself from our palette's list + for (palette_client **curptr = &m_palette.m_client_list; *curptr != NULL; curptr = &(*curptr)->m_next) + if (*curptr == this) { - *curptr = client->next; + *curptr = m_next; break; } - /* now deref the palette */ - palette_deref(client->palette); - - /* free our data */ - if (client->live.dirty != NULL) - free(client->live.dirty); - if (client->previous.dirty != NULL) - free(client->previous.dirty); - free(client); -} - - -/*------------------------------------------------- - palette_client_get_palette - return a pointer - to the palette for this client --------------------------------------------------*/ - -palette_t *palette_client_get_palette(palette_client *client) -{ - return client->palette; + // now deref the palette + m_palette.deref(); } -/*------------------------------------------------- - palette_client_get_dirty_list - atomically get - the current dirty list for a client --------------------------------------------------*/ +//------------------------------------------------- +// dirty_list - atomically get the current dirty +// list for a client +//------------------------------------------------- -const UINT32 *palette_client_get_dirty_list(palette_client *client, UINT32 *mindirty, UINT32 *maxdirty) +const UINT32 *palette_client::dirty_list(UINT32 &mindirty, UINT32 &maxdirty) { - dirty_state temp; - - /* fill in the mindirty/maxdirty */ - if (mindirty != NULL) - *mindirty = client->live.mindirty; - if (maxdirty != NULL) - *maxdirty = client->live.maxdirty; - - /* if nothing to report, report nothing and don't swap */ - if (client->live.mindirty > client->live.maxdirty) + // if nothing to report, report nothing and don't swap + const UINT32 *result = m_live->dirty_list(mindirty, maxdirty); + if (result == NULL) return NULL; - /* swap the live and previous lists */ - temp = client->live; - client->live = client->previous; - client->previous = temp; + // swap the live and previous lists + dirty_state *temp = m_live; + m_live = m_previous; + m_previous = temp; - /* erase relevant entries in the new live one */ - if (client->live.mindirty <= client->live.maxdirty) - memset(client->live.dirty, client->live.mindirty / 8, (client->live.maxdirty / 8) + 1 - (client->live.mindirty / 8)); - client->live.mindirty = client->palette->numcolors * client->palette->numgroups; - client->live.maxdirty = 0; - - /* return a pointer to the previous table */ - return client->previous.dirty; + // reset new live one and return the pointer to the previous + m_live->reset(); + return result; } -/*************************************************************************** - PALETTE COLOR MANAGEMENT -***************************************************************************/ - -/*------------------------------------------------- - palette_entry_set_color - set the raw RGB - color for a given palette index --------------------------------------------------*/ - -void palette_entry_set_color(palette_t *palette, UINT32 index, rgb_t rgb) -{ - int groupnum; - - /* if out of range, or unchanged, ignore */ - if (index >= palette->numcolors || palette->entry_color[index] == rgb) - return; - - /* set the color */ - palette->entry_color[index] = rgb; - - /* update across all groups */ - for (groupnum = 0; groupnum < palette->numgroups; groupnum++) - update_adjusted_color(palette, groupnum, index); -} - - -/*------------------------------------------------- - palette_entry_get_color - return the raw RGB - color for a given palette index --------------------------------------------------*/ - -rgb_t palette_entry_get_color(palette_t *palette, UINT32 index) -{ - return (index < palette->numcolors) ? palette->entry_color[index] : RGB_BLACK; -} - - -/*------------------------------------------------- - palette_entry_get_adjusted_color - return the - adjusted RGB color (after all adjustments) for - a given palette index --------------------------------------------------*/ - -rgb_t palette_entry_get_adjusted_color(palette_t *palette, UINT32 index) -{ - return (index < palette->numcolors * palette->numgroups) ? palette->adjusted_color[index] : RGB_BLACK; -} +//************************************************************************** +// PALETTE_T +//************************************************************************** + +//------------------------------------------------- +// palette_t - constructor +//------------------------------------------------- + +palette_t::palette_t(UINT32 numcolors, UINT32 numgroups) + : m_refcount(1), + m_numcolors(numcolors), + m_numgroups(numgroups), + m_brightness(0.0f), + m_contrast(1.0f), + m_gamma(1.0f), + m_entry_color(numcolors), + m_entry_contrast(numcolors), + m_adjusted_color(numcolors * numgroups + 2), + m_adjusted_rgb15(numcolors * numgroups + 2), + m_group_bright(numgroups), + m_group_contrast(numgroups), + m_client_list(NULL) +{ + // initialize gamma map + for (UINT32 index = 0; index < 256; index++) + m_gamma_map[index] = index; + + // initialize the per-entry data + for (UINT32 index = 0; index < numcolors; index++) + { + m_entry_color[index] = RGB_BLACK; + m_entry_contrast[index] = 1.0f; + } + // initialize the per-group data + for (UINT32 index = 0; index < numgroups; index++) + { + m_group_bright[index] = 0.0f; + m_group_contrast[index] = 1.0f; + } -/*------------------------------------------------- - palette_entry_list_raw - return the entire - palette as an array of raw RGB values --------------------------------------------------*/ + // initialize the expanded data + for (UINT32 index = 0; index < numcolors * numgroups; index++) + { + m_adjusted_color[index] = RGB_BLACK; + m_adjusted_rgb15[index] = rgb_to_rgb15(RGB_BLACK); + } -const rgb_t *palette_entry_list_raw(palette_t *palette) -{ - return palette->entry_color; + // add black and white as the last two colors + m_adjusted_color[numcolors * numgroups + 0] = RGB_BLACK; + m_adjusted_rgb15[numcolors * numgroups + 0] = rgb_to_rgb15(RGB_BLACK); + m_adjusted_color[numcolors * numgroups + 1] = RGB_WHITE; + m_adjusted_rgb15[numcolors * numgroups + 1] = rgb_to_rgb15(RGB_WHITE); } -/*------------------------------------------------- - palette_entry_list_adjusted - return the - entire palette as an array of adjusted RGB - values --------------------------------------------------*/ +//------------------------------------------------- +// palette_t - destructor +//------------------------------------------------- -const rgb_t *palette_entry_list_adjusted(palette_t *palette) +palette_t::~palette_t() { - return palette->adjusted_color; } -/*------------------------------------------------- - palette_entry_list_adjusted_rgb15 - return the - entire palette as an array of adjusted RGB-15 - values --------------------------------------------------*/ +//------------------------------------------------- +// deref - dereference a palette object; if the +// reference count goes to 0, it is freed +//------------------------------------------------- -const rgb_t *palette_entry_list_adjusted_rgb15(palette_t *palette) +void palette_t::deref() { - return palette->adjusted_rgb15; + // if the reference count goes to 0, free + if (--m_refcount == 0) + delete this; } +//------------------------------------------------- +// set_brightness - set the overall brightness +// for the palette +//------------------------------------------------- -/*************************************************************************** - PALETTE ADJUSTMENTS -***************************************************************************/ - -/*------------------------------------------------- - palette_set_brightness - set the overall - brightness for the palette --------------------------------------------------*/ - -void palette_set_brightness(palette_t *palette, float brightness) +void palette_t::set_brightness(float brightness) { - int groupnum, index; - - /* convert incoming value to normalized result */ + // convert incoming value to normalized result brightness = (brightness - 1.0f) * 256.0f; - /* set the global brightness if changed */ - if (palette->brightness == brightness) + // set the global brightness if changed + if (m_brightness == brightness) return; - palette->brightness = brightness; + m_brightness = brightness; - /* update across all indices in all groups */ - for (groupnum = 0; groupnum < palette->numgroups; groupnum++) - for (index = 0; index < palette->numcolors; index++) - update_adjusted_color(palette, groupnum, index); + // update across all indices in all groups + for (int groupnum = 0; groupnum < m_numgroups; groupnum++) + for (int index = 0; index < m_numcolors; index++) + update_adjusted_color(groupnum, index); } -/*------------------------------------------------- - palette_set_contrast - set the overall - contrast for the palette --------------------------------------------------*/ +//------------------------------------------------- +// set_contrast - set the overall contrast for +// the palette +//------------------------------------------------- -void palette_set_contrast(palette_t *palette, float contrast) +void palette_t::set_contrast(float contrast) { - int groupnum, index; - - /* set the global contrast if changed */ - if (palette->contrast == contrast) + // set the global contrast if changed + if (m_contrast == contrast) return; - palette->contrast = contrast; + m_contrast = contrast; - /* update across all indices in all groups */ - for (groupnum = 0; groupnum < palette->numgroups; groupnum++) - for (index = 0; index < palette->numcolors; index++) - update_adjusted_color(palette, groupnum, index); + // update across all indices in all groups + for (int groupnum = 0; groupnum < m_numgroups; groupnum++) + for (int index = 0; index < m_numcolors; index++) + update_adjusted_color(groupnum, index); } -/*------------------------------------------------- - palette_set_gamma - set the overall - gamma for the palette --------------------------------------------------*/ +//------------------------------------------------- +// set_gamma - set the overall gamma for the +// palette +//------------------------------------------------- -void palette_set_gamma(palette_t *palette, float gamma) +void palette_t::set_gamma(float gamma) { - int groupnum, index; - - /* set the global gamma if changed */ - if (palette->gamma == gamma) + // set the global gamma if changed + if (m_gamma == gamma) return; - palette->gamma = gamma; + m_gamma = gamma; - /* recompute the gamma map */ + // recompute the gamma map gamma = 1.0f / gamma; - for (index = 0; index < 256; index++) + for (int index = 0; index < 256; index++) { - float fval = (float)index * (1.0f / 255.0f); + float fval = float(index) * (1.0f / 255.0f); float fresult = pow(fval, gamma); - palette->gamma_map[index] = rgb_clamp(255.0f * fresult); + m_gamma_map[index] = rgb_clamp(255.0f * fresult); } - /* update across all indices in all groups */ - for (groupnum = 0; groupnum < palette->numgroups; groupnum++) - for (index = 0; index < palette->numcolors; index++) - update_adjusted_color(palette, groupnum, index); + // update across all indices in all groups + for (int groupnum = 0; groupnum < m_numgroups; groupnum++) + for (int index = 0; index < m_numcolors; index++) + update_adjusted_color(groupnum, index); } -/*------------------------------------------------- - palette_entry_set_contrast - set the contrast - adjustment for a single palette index --------------------------------------------------*/ +//------------------------------------------------- +// entry_set_color - set the raw RGB color for a +// given palette index +//------------------------------------------------- -void palette_entry_set_contrast(palette_t *palette, UINT32 index, float contrast) +void palette_t::entry_set_color(UINT32 index, rgb_t rgb) { - int groupnum; - - /* if out of range, or unchanged, ignore */ - if (index >= palette->numcolors || palette->entry_contrast[index] == contrast) + // if out of range, or unchanged, ignore + if (index >= m_numcolors || m_entry_color[index] == rgb) return; - /* set the contrast */ - palette->entry_contrast[index] = contrast; + // set the color + m_entry_color[index] = rgb; - /* update across all groups */ - for (groupnum = 0; groupnum < palette->numgroups; groupnum++) - update_adjusted_color(palette, groupnum, index); + // update across all groups + for (int groupnum = 0; groupnum < m_numgroups; groupnum++) + update_adjusted_color(groupnum, index); } -/*------------------------------------------------- - palette_entry_get_contrast - return the - contrast adjustment for a single palette index --------------------------------------------------*/ +//------------------------------------------------- +// entry_set_contrast - set the contrast +// adjustment for a single palette index +//------------------------------------------------- -float palette_entry_get_contrast(palette_t *palette, UINT32 index) +void palette_t::entry_set_contrast(UINT32 index, float contrast) { - return (index < palette->numcolors) ? palette->entry_contrast[index] : 1.0f; + // if out of range, or unchanged, ignore + if (index >= m_numcolors || m_entry_contrast[index] == contrast) + return; + + // set the contrast + m_entry_contrast[index] = contrast; + + // update across all groups + for (int groupnum = 0; groupnum < m_numgroups; groupnum++) + update_adjusted_color(groupnum, index); } -/*------------------------------------------------- - palette_group_set_brightness - configure - overall brightness for a palette group --------------------------------------------------*/ +//------------------------------------------------- +// group_set_brightness - configure overall +// brightness for a palette group +//------------------------------------------------- -void palette_group_set_brightness(palette_t *palette, UINT32 group, float brightness) +void palette_t::group_set_brightness(UINT32 group, float brightness) { - int index; - - /* convert incoming value to normalized result */ + // convert incoming value to normalized result brightness = (brightness - 1.0f) * 256.0f; - /* if out of range, or unchanged, ignore */ - if (group >= palette->numgroups || palette->group_bright[group] == brightness) + // if out of range, or unchanged, ignore + if (group >= m_numgroups || m_group_bright[group] == brightness) return; - /* set the contrast */ - palette->group_bright[group] = brightness; + // set the contrast + m_group_bright[group] = brightness; - /* update across all colors */ - for (index = 0; index < palette->numcolors; index++) - update_adjusted_color(palette, group, index); + // update across all colors + for (int index = 0; index < m_numcolors; index++) + update_adjusted_color(group, index); } -/*------------------------------------------------- - palette_group_set_contrast - configure - overall contrast for a palette group --------------------------------------------------*/ +//------------------------------------------------- +// group_set_contrast - configure overall +// contrast for a palette group +//------------------------------------------------- -void palette_group_set_contrast(palette_t *palette, UINT32 group, float contrast) +void palette_t::group_set_contrast(UINT32 group, float contrast) { - int index; - - /* if out of range, or unchanged, ignore */ - if (group >= palette->numgroups || palette->group_contrast[group] == contrast) + // if out of range, or unchanged, ignore + if (group >= m_numgroups || m_group_contrast[group] == contrast) return; - /* set the contrast */ - palette->group_contrast[group] = contrast; + // set the contrast + m_group_contrast[group] = contrast; - /* update across all colors */ - for (index = 0; index < palette->numcolors; index++) - update_adjusted_color(palette, group, index); + // update across all colors + for (int index = 0; index < m_numcolors; index++) + update_adjusted_color(group, index); } +//------------------------------------------------- +// normalize_range - normalize a range of palette +// entries +//------------------------------------------------- -/*************************************************************************** - PALETTE UTILITIES -***************************************************************************/ - -/*------------------------------------------------- - palette_normalize_range - normalize a range - of palette entries --------------------------------------------------*/ - -void palette_normalize_range(palette_t *palette, UINT32 start, UINT32 end, int lum_min, int lum_max) +void palette_t::normalize_range(UINT32 start, UINT32 end, int lum_min, int lum_max) { - INT32 ymin = 1000 * 255, ymax = 0; - INT32 tmin, tmax; - UINT32 index; - - /* clamp within range */ + // clamp within range start = MAX(start, 0); - end = MIN(end, palette->numcolors - 1); + end = MIN(end, m_numcolors - 1); - /* find the minimum and maximum brightness of all the colors in the range */ - for (index = start; index <= end; index++) + // find the minimum and maximum brightness of all the colors in the range + INT32 ymin = 1000 * 255, ymax = 0; + for (UINT32 index = start; index <= end; index++) { - rgb_t rgb = palette->entry_color[index]; + rgb_t rgb = m_entry_color[index]; UINT32 y = 299 * RGB_RED(rgb) + 587 * RGB_GREEN(rgb) + 114 * RGB_BLUE(rgb); ymin = MIN(ymin, y); ymax = MAX(ymax, y); } - /* determine target minimum/maximum */ - tmin = (lum_min < 0) ? ((ymin + 500) / 1000) : lum_min; - tmax = (lum_max < 0) ? ((ymax + 500) / 1000) : lum_max; + // determine target minimum/maximum + INT32 tmin = (lum_min < 0) ? ((ymin + 500) / 1000) : lum_min; + INT32 tmax = (lum_max < 0) ? ((ymax + 500) / 1000) : lum_max; - /* now normalize the palette */ - for (index = start; index <= end; index++) + // now normalize the palette + for (UINT32 index = start; index <= end; index++) { - rgb_t rgb = palette->entry_color[index]; + rgb_t rgb = m_entry_color[index]; INT32 y = 299 * RGB_RED(rgb) + 587 * RGB_GREEN(rgb) + 114 * RGB_BLUE(rgb); INT32 u = ((INT32)RGB_BLUE(rgb)-y /1000)*492 / 1000; INT32 v = ((INT32)RGB_RED(rgb)-y / 1000)*877 / 1000; @@ -684,76 +450,34 @@ void palette_normalize_range(palette_t *palette, UINT32 start, UINT32 end, int l UINT8 r = rgb_clamp(target + 1140 * v / 1000); UINT8 g = rgb_clamp(target - 395 * u / 1000 - 581 * v / 1000); UINT8 b = rgb_clamp(target + 2032 * u / 1000); - palette_entry_set_color(palette, index, MAKE_RGB(r, g, b)); + entry_set_color(index, MAKE_RGB(r, g, b)); } } +//------------------------------------------------- +// update_adjusted_color - update a color index +// by group and index pair +//------------------------------------------------- -/*************************************************************************** - INTERNAL ROUTINES -***************************************************************************/ - -/*------------------------------------------------- - internal_palette_free - free all allocations - from a palette --------------------------------------------------*/ - -static void internal_palette_free(palette_t *palette) +void palette_t::update_adjusted_color(UINT32 group, UINT32 index) { - /* free per-color data */ - if (palette->entry_color != NULL) - free(palette->entry_color); - if (palette->entry_contrast != NULL) - free(palette->entry_contrast); - - /* free per-group data */ - if (palette->group_bright != NULL) - free(palette->group_bright); - if (palette->group_contrast != NULL) - free(palette->group_contrast); - - /* free adjusted data */ - if (palette->adjusted_color != NULL) - free(palette->adjusted_color); - if (palette->adjusted_rgb15 != NULL) - free(palette->adjusted_rgb15); - - /* and the palette itself */ - free(palette); -} - - -/*------------------------------------------------- - update_adjusted_color - update a color index - by group and index pair --------------------------------------------------*/ + // compute the adjusted value + rgb_t adjusted = adjust_palette_entry(m_entry_color[index], + m_group_bright[group] + m_brightness, + m_group_contrast[group] * m_entry_contrast[index] * m_contrast, + m_gamma_map); -static void update_adjusted_color(palette_t *palette, UINT32 group, UINT32 index) -{ - UINT32 finalindex = group * palette->numcolors + index; - palette_client *client; - rgb_t adjusted; - - /* compute the adjusted value */ - adjusted = adjust_palette_entry(palette->entry_color[index], - palette->group_bright[group] + palette->brightness, - palette->group_contrast[group] * palette->entry_contrast[index] * palette->contrast, - palette->gamma_map); - - /* if not different, ignore */ - if (palette->adjusted_color[finalindex] == adjusted) + // if not different, ignore + UINT32 finalindex = group * m_numcolors + index; + if (m_adjusted_color[finalindex] == adjusted) return; - /* otherwise, modify the adjusted color array */ - palette->adjusted_color[finalindex] = adjusted; - palette->adjusted_rgb15[finalindex] = rgb_to_rgb15(adjusted); + // otherwise, modify the adjusted color array + m_adjusted_color[finalindex] = adjusted; + m_adjusted_rgb15[finalindex] = rgb_to_rgb15(adjusted); - /* mark dirty in all clients */ - for (client = palette->client_list; client != NULL; client = client->next) - { - client->live.dirty[finalindex / 32] |= 1 << (finalindex % 32); - client->live.mindirty = MIN(client->live.mindirty, finalindex); - client->live.maxdirty = MAX(client->live.maxdirty, finalindex); - } + // mark dirty in all clients + for (palette_client *client = m_client_list; client != NULL; client = client->next()) + client->mark_dirty(finalindex); } diff --git a/src/lib/util/palette.h b/src/lib/util/palette.h index 46f01f962b5..06370118d05 100644 --- a/src/lib/util/palette.h +++ b/src/lib/util/palette.h @@ -14,162 +14,177 @@ #define __PALETTE_H__ #include "osdcore.h" +#include "coretmpl.h" -/*************************************************************************** - TYPE DEFINITIONS -***************************************************************************/ - -/* an rgb_t is a single combined R,G,B (and optionally alpha) value */ -typedef UINT32 rgb_t; - -/* an rgb15_t is a single combined 15-bit R,G,B value */ -typedef UINT16 rgb15_t; - -/* a palette is an opaque, reference counted object */ -struct palette_t; - -/* a palette client is someone who is tracking the dirty state of a palette */ -struct palette_client; - - - -/*************************************************************************** - MACROS -***************************************************************************/ +//************************************************************************** +// MACROS +//************************************************************************** -/* macros to assemble rgb_t values */ -#define MAKE_ARGB(a,r,g,b) ((((rgb_t)(a) & 0xff) << 24) | (((rgb_t)(r) & 0xff) << 16) | (((rgb_t)(g) & 0xff) << 8) | ((rgb_t)(b) & 0xff)) +// macros to assemble rgb_t values */ +#define MAKE_ARGB(a,r,g,b) (((rgb_t(a) & 0xff) << 24) | ((rgb_t(r) & 0xff) << 16) | ((rgb_t(g) & 0xff) << 8) | (rgb_t(b) & 0xff)) #define MAKE_RGB(r,g,b) (MAKE_ARGB(255,r,g,b)) -/* macros to extract components from rgb_t values */ +// macros to extract components from rgb_t values */ #define RGB_ALPHA(rgb) (((rgb) >> 24) & 0xff) #define RGB_RED(rgb) (((rgb) >> 16) & 0xff) #define RGB_GREEN(rgb) (((rgb) >> 8) & 0xff) #define RGB_BLUE(rgb) ((rgb) & 0xff) -/* common colors */ +// common colors */ #define RGB_BLACK (MAKE_ARGB(255,0,0,0)) #define RGB_WHITE (MAKE_ARGB(255,255,255,255)) -/*************************************************************************** - FUNCTION PROTOTYPES -***************************************************************************/ - - -/* ----- palette allocation ----- */ - -/* allocate a new palette object and take a single reference on it */ -palette_t *palette_alloc(UINT32 numcolors, UINT32 numgroups); - -/* reference a palette object, incrementing its reference count */ -void palette_ref(palette_t *palette); - -/* dereference a palette object; if the reference count goes to 0, it is freed */ -void palette_deref(palette_t *palette); - - - -/* ----- palette information ----- */ - -/* return the number of colors managed by the palette */ -int palette_get_num_colors(palette_t *palette); - -/* return the number of groups managed by the palette */ -int palette_get_num_groups(palette_t *palette); - -/* return the maximum allowed index (i.e., length of arrays returned by palette_entry_list*) */ -int palette_get_max_index(palette_t *palette); - -/* return the index of the black entry */ -UINT32 palette_get_black_entry(palette_t *palette); - -/* return the index of the white entry */ -UINT32 palette_get_white_entry(palette_t *palette); - - - -/* ----- palette clients ----- */ - -/* add a new client to a palette */ -palette_client *palette_client_alloc(palette_t *palette); - -/* remove a client from a palette */ -void palette_client_free(palette_client *client); - -/* return a pointer to the palette for this client */ -palette_t *palette_client_get_palette(palette_client *client); - -/* atomically get the current dirty list for a client */ -const UINT32 *palette_client_get_dirty_list(palette_client *client, UINT32 *mindirty, UINT32 *maxdirty); - - - -/* ----- color management ----- */ - -/* set the raw RGB color for a given palette index */ -void palette_entry_set_color(palette_t *palette, UINT32 index, rgb_t rgb); - -/* return the raw RGB color for a given palette index */ -rgb_t palette_entry_get_color(palette_t *palette, UINT32 index); - -/* return the adjusted RGB color (after all adjustments) for a given palette index */ -rgb_t palette_entry_get_adjusted_color(palette_t *palette, UINT32 index); - -/* return the entire palette as an array of raw RGB values */ -const rgb_t *palette_entry_list_raw(palette_t *palette); - -/* return the entire palette as an array of adjusted RGB values */ -const rgb_t *palette_entry_list_adjusted(palette_t *palette); - -/* return the entire palette as an array of adjusted RGB-15 values */ -const rgb_t *palette_entry_list_adjusted_rgb15(palette_t *palette); - - +//************************************************************************** +// TYPE DEFINITIONS +//************************************************************************** -/* ----- palette adjustments ----- */ - -/* set the overall brightness for the palette */ -void palette_set_brightness(palette_t *palette, float brightness); - -/* set the overall contrast for the palette */ -void palette_set_contrast(palette_t *palette, float contrast); - -/* set the overall gamma for the palette */ -void palette_set_gamma(palette_t *palette, float gamma); - -/* set the contrast adjustment for a single palette index */ -void palette_entry_set_contrast(palette_t *palette, UINT32 index, float contrast); - -/* return the contrast adjustment for a single palette index */ -float palette_entry_get_contrast(palette_t *palette, UINT32 index); - -/* configure overall brightness for a palette group */ -void palette_group_set_brightness(palette_t *palette, UINT32 group, float brightness); - -/* configure overall contrast for a palette group */ -void palette_group_set_contrast(palette_t *palette, UINT32 group, float contrast); - - - -/* ----- palette utilities ----- */ +// an rgb_t is a single combined R,G,B (and optionally alpha) value */ +typedef UINT32 rgb_t; -/* normalize a range of palette entries, mapping minimum brightness to lum_min and maximum - brightness to lum_max; if either value is < 0, that boundary value is not modified */ -void palette_normalize_range(palette_t *palette, UINT32 start, UINT32 end, int lum_min, int lum_max); +// an rgb15_t is a single combined 15-bit R,G,B value */ +typedef UINT16 rgb15_t; +// forward definitions +class palette_t; +// ======================> palette_client -/*************************************************************************** - INLINE FUNCTIONS -***************************************************************************/ +// a single palette client +class palette_client +{ +public: + // construction/destruction + palette_client(palette_t &palette); + ~palette_client(); + + // getters + palette_client *next() const { return m_next; } + palette_t &palette() const { return m_palette; } + const UINT32 *dirty_list(UINT32 &mindirty, UINT32 &maxdirty); + + // dirty marking + void mark_dirty(UINT32 index) { m_live->mark_dirty(index); } + +private: + // internal object to track dirty states + class dirty_state + { + public: + // construction + dirty_state(); + + // operations + const UINT32 *dirty_list(UINT32 &mindirty, UINT32 &maxdirty); + void resize(UINT32 colors); + void mark_dirty(UINT32 index); + void reset(); + + private: + // internal state + dynamic_array<UINT32> m_dirty; // bitmap of dirty entries + UINT32 m_mindirty; // minimum dirty entry + UINT32 m_maxdirty; // minimum dirty entry + }; + + // internal state + palette_t & m_palette; // reference to the palette + palette_client *m_next; // pointer to next client + dirty_state * m_live; // live dirty state + dirty_state * m_previous; // previous dirty state + dirty_state m_dirty[2]; // two dirty states +}; + + +// ======================> palette_t + +// a palette object +class palette_t +{ + friend class palette_client; + +public: + // construction/destruction + palette_t(UINT32 numcolors, UINT32 numgroups = 1); + + // reference counting + void ref() { m_refcount++; } + void deref(); + + // getters + int num_colors() const { return m_numcolors; } + int num_groups() const { return m_numgroups; } + int max_index() const { return m_numcolors * m_numgroups + 2; } + UINT32 black_entry() const { return m_numcolors * m_numgroups + 0; } + UINT32 white_entry() const { return m_numcolors * m_numgroups + 1; } + + // overall adjustments + void set_brightness(float brightness); + void set_contrast(float contrast); + void set_gamma(float gamma); + + // entry getters + rgb_t entry_color(UINT32 index) const { return (index < m_numcolors) ? m_entry_color[index] : RGB_BLACK; } + rgb_t entry_adjusted_color(UINT32 index) const { return (index < m_numcolors * m_numgroups) ? m_adjusted_color[index] : RGB_BLACK; } + float entry_contrast(UINT32 index) const { return (index < m_numcolors) ? m_entry_contrast[index] : 1.0f; } + + // entry setters + void entry_set_color(UINT32 index, rgb_t rgb); + void entry_set_contrast(UINT32 index, float contrast); + + // entry list getters + const rgb_t *entry_list_raw() const { return m_entry_color; } + const rgb_t *entry_list_adjusted() const { return m_adjusted_color; } + const rgb_t *entry_list_adjusted_rgb15() const { return m_adjusted_rgb15; } + + // group adjustments + void group_set_brightness(UINT32 group, float brightness); + void group_set_contrast(UINT32 group, float contrast); + + // utilities + void normalize_range(UINT32 start, UINT32 end, int lum_min = 0, int lum_max = 255); + +private: + // destructor -- can only destruct via + ~palette_t(); + + // internal helpers + rgb_t adjust_palette_entry(rgb_t entry, float brightness, float contrast, const UINT8 *gamma_map); + void update_adjusted_color(UINT32 group, UINT32 index); + + // internal state + UINT32 m_refcount; // reference count on the palette + UINT32 m_numcolors; // number of colors in the palette + UINT32 m_numgroups; // number of groups in the palette + + float m_brightness; // overall brightness value + float m_contrast; // overall contrast value + float m_gamma; // overall gamma value + UINT8 m_gamma_map[256]; // gamma map + + dynamic_array<rgb_t> m_entry_color; // array of raw colors + dynamic_array<float> m_entry_contrast; // contrast value for each entry + dynamic_array<rgb_t> m_adjusted_color; // array of adjusted colors + dynamic_array<rgb_t> m_adjusted_rgb15; // array of adjusted colors as RGB15 + + dynamic_array<float> m_group_bright; // brightness value for each group + dynamic_array<float> m_group_contrast; // contrast value for each group + + palette_client *m_client_list; // list of clients for this palette +}; + + + +//************************************************************************** +// INLINE FUNCTIONS +//************************************************************************** -/*------------------------------------------------- - rgb_to_rgb15 - convert an RGB triplet to - a 15-bit OSD-specified RGB value --------------------------------------------------*/ +//------------------------------------------------- +// rgb_to_rgb15 - convert an RGB triplet to +// a 15-bit OSD-specified RGB value +//------------------------------------------------- inline rgb15_t rgb_to_rgb15(rgb_t rgb) { @@ -177,9 +192,9 @@ inline rgb15_t rgb_to_rgb15(rgb_t rgb) } -/*------------------------------------------------- - rgb_clamp - clamp an RGB component to 0-255 --------------------------------------------------*/ +//------------------------------------------------- +// rgb_clamp - clamp an RGB component to 0-255 +//------------------------------------------------- inline UINT8 rgb_clamp(INT32 value) { @@ -191,9 +206,9 @@ inline UINT8 rgb_clamp(INT32 value) } -/*------------------------------------------------- - pal1bit - convert a 1-bit value to 8 bits --------------------------------------------------*/ +//------------------------------------------------- +// pal1bit - convert a 1-bit value to 8 bits +//------------------------------------------------- inline UINT8 pal1bit(UINT8 bits) { @@ -201,9 +216,9 @@ inline UINT8 pal1bit(UINT8 bits) } -/*------------------------------------------------- - pal2bit - convert a 2-bit value to 8 bits --------------------------------------------------*/ +//------------------------------------------------- +// pal2bit - convert a 2-bit value to 8 bits +//------------------------------------------------- inline UINT8 pal2bit(UINT8 bits) { @@ -212,9 +227,9 @@ inline UINT8 pal2bit(UINT8 bits) } -/*------------------------------------------------- - pal3bit - convert a 3-bit value to 8 bits --------------------------------------------------*/ +//------------------------------------------------- +// pal3bit - convert a 3-bit value to 8 bits +//------------------------------------------------- inline UINT8 pal3bit(UINT8 bits) { @@ -223,9 +238,9 @@ inline UINT8 pal3bit(UINT8 bits) } -/*------------------------------------------------- - pal4bit - convert a 4-bit value to 8 bits --------------------------------------------------*/ +//------------------------------------------------- +// pal4bit - convert a 4-bit value to 8 bits +//------------------------------------------------- inline UINT8 pal4bit(UINT8 bits) { @@ -234,9 +249,9 @@ inline UINT8 pal4bit(UINT8 bits) } -/*------------------------------------------------- - pal5bit - convert a 5-bit value to 8 bits --------------------------------------------------*/ +//------------------------------------------------- +// pal5bit - convert a 5-bit value to 8 bits +//------------------------------------------------- inline UINT8 pal5bit(UINT8 bits) { @@ -245,9 +260,9 @@ inline UINT8 pal5bit(UINT8 bits) } -/*------------------------------------------------- - pal6bit - convert a 6-bit value to 8 bits --------------------------------------------------*/ +//------------------------------------------------- +// pal6bit - convert a 6-bit value to 8 bits +//------------------------------------------------- inline UINT8 pal6bit(UINT8 bits) { @@ -256,9 +271,9 @@ inline UINT8 pal6bit(UINT8 bits) } -/*------------------------------------------------- - pal7bit - convert a 7-bit value to 8 bits --------------------------------------------------*/ +//------------------------------------------------- +// pal7bit - convert a 7-bit value to 8 bits +//------------------------------------------------- inline UINT8 pal7bit(UINT8 bits) { @@ -285,10 +300,10 @@ inline UINT8 palexpand(UINT8 data) } -/*------------------------------------------------- - pal332 - create a 3-3-2 color by extracting - bits from a UINT32 --------------------------------------------------*/ +//------------------------------------------------- +// pal332 - create a 3-3-2 color by extracting +// bits from a UINT32 +//------------------------------------------------- inline rgb_t pal332(UINT32 data, UINT8 rshift, UINT8 gshift, UINT8 bshift) { @@ -296,10 +311,10 @@ inline rgb_t pal332(UINT32 data, UINT8 rshift, UINT8 gshift, UINT8 bshift) } -/*------------------------------------------------- - pal444 - create a 4-4-4 color by extracting - bits from a UINT32 --------------------------------------------------*/ +//------------------------------------------------- +// pal444 - create a 4-4-4 color by extracting +// bits from a UINT32 +//------------------------------------------------- inline rgb_t pal444(UINT32 data, UINT8 rshift, UINT8 gshift, UINT8 bshift) { @@ -307,10 +322,10 @@ inline rgb_t pal444(UINT32 data, UINT8 rshift, UINT8 gshift, UINT8 bshift) } -/*------------------------------------------------- - pal555 - create a 5-5-5 color by extracting - bits from a UINT32 --------------------------------------------------*/ +//------------------------------------------------- +// pal555 - create a 5-5-5 color by extracting +// bits from a UINT32 +//------------------------------------------------- inline rgb_t pal555(UINT32 data, UINT8 rshift, UINT8 gshift, UINT8 bshift) { @@ -318,10 +333,10 @@ inline rgb_t pal555(UINT32 data, UINT8 rshift, UINT8 gshift, UINT8 bshift) } -/*------------------------------------------------- - pal565 - create a 5-6-5 color by extracting - bits from a UINT32 --------------------------------------------------*/ +//------------------------------------------------- +// pal565 - create a 5-6-5 color by extracting +// bits from a UINT32 +//------------------------------------------------- inline rgb_t pal565(UINT32 data, UINT8 rshift, UINT8 gshift, UINT8 bshift) { @@ -329,10 +344,10 @@ inline rgb_t pal565(UINT32 data, UINT8 rshift, UINT8 gshift, UINT8 bshift) } -/*------------------------------------------------- - pal888 - create a 8-8-8 color by extracting - bits from a UINT32 --------------------------------------------------*/ +//------------------------------------------------- +// pal888 - create a 8-8-8 color by extracting +// bits from a UINT32 +//------------------------------------------------- inline rgb_t pal888(UINT32 data, UINT8 rshift, UINT8 gshift, UINT8 bshift) { @@ -340,4 +355,4 @@ inline rgb_t pal888(UINT32 data, UINT8 rshift, UINT8 gshift, UINT8 bshift) } -#endif /* __PALETTE_H__ */ +#endif // __PALETTE_H__ */ diff --git a/src/mame/drivers/othello.c b/src/mame/drivers/othello.c index b23a5507d61..ba6a9ff5a9f 100644 --- a/src/mame/drivers/othello.c +++ b/src/mame/drivers/othello.c @@ -105,7 +105,7 @@ public: static MC6845_UPDATE_ROW( update_row ) { othello_state *state = device->machine().driver_data<othello_state>(); - const rgb_t *palette = palette_entry_list_raw(bitmap.palette()); + const rgb_t *palette = bitmap.palette()->entry_list_raw(); int cx, x; UINT32 data_address; UINT32 tmp; diff --git a/src/mame/video/carjmbre.c b/src/mame/video/carjmbre.c index c7957e2d8c4..d1295a6547f 100644 --- a/src/mame/video/carjmbre.c +++ b/src/mame/video/carjmbre.c @@ -37,7 +37,7 @@ void carjmbre_state::palette_init() rgb = compute_res_net_all(machine(), color_prom, &carjmbre_decode_info, &carjmbre_net_info); palette_set_colors(machine(), 0, rgb, 64); - palette_normalize_range(machine().palette, 0, 63, 0, 255); + machine().palette->normalize_range(0, 63); auto_free(machine(), rgb); } diff --git a/src/mame/video/dkong.c b/src/mame/video/dkong.c index 1d2a96e7a17..4a562838fa2 100644 --- a/src/mame/video/dkong.c +++ b/src/mame/video/dkong.c @@ -218,7 +218,7 @@ PALETTE_INIT_MEMBER(dkong_state,dkong2b) palette_set_color_rgb(machine(),i,r,g,b); } - palette_normalize_range(machine().palette, 0, 255, 0, 255); + machine().palette->normalize_range(0, 255); color_prom += 512; /* color_prom now points to the beginning of the character color codes */ @@ -257,7 +257,7 @@ PALETTE_INIT_MEMBER(dkong_state,dkong4b) palette_set_color_rgb(machine(),i,r,g,b); } - palette_normalize_range(machine().palette, 0, 255, 0, 255); + machine().palette->normalize_range(0, 255); color_prom += 256; /* color_prom now points to the beginning of the character color codes */ @@ -321,7 +321,7 @@ PALETTE_INIT_MEMBER(dkong_state,radarscp) palette_set_color_rgb(machine(),RADARSCP_GRID_COL_OFFSET + i,r,g,b); } - palette_normalize_range(machine().palette, 0, RADARSCP_GRID_COL_OFFSET+7, 0, 255); + machine().palette->normalize_range(0, RADARSCP_GRID_COL_OFFSET+7); color_prom += 256; /* color_prom now points to the beginning of the character color codes */ @@ -383,7 +383,7 @@ PALETTE_INIT_MEMBER(dkong_state,radarscp1) palette_set_color_rgb(machine(),RADARSCP_GRID_COL_OFFSET + i,r,g,b); } - palette_normalize_range(machine().palette, 0, RADARSCP_GRID_COL_OFFSET+7, 0, 255); + machine().palette->normalize_range(0, RADARSCP_GRID_COL_OFFSET+7); color_prom += 512; /* color_prom now points to the beginning of the character color codes */ @@ -434,7 +434,7 @@ PALETTE_INIT_MEMBER(dkong_state,dkong3) rgb = compute_res_net_all(machine(), color_prom, &dkong3_decode_info, &dkong3_net_info); palette_set_colors(machine(), 0, rgb, 256); - palette_normalize_range(machine().palette, 0, 255, 0, 255); + machine().palette->normalize_range(0, 255); auto_free(machine(), rgb); color_prom += 1024; diff --git a/src/mame/video/k001604.c b/src/mame/video/k001604.c index 6d03822cba7..cc7dfccb648 100644 --- a/src/mame/video/k001604.c +++ b/src/mame/video/k001604.c @@ -249,7 +249,7 @@ void k001604_device::draw_back_layer( bitmap_rgb32 &bitmap, const rectangle &cli int ex = cliprect.max_x; int ey = cliprect.max_y; - const rgb_t *clut = palette_entry_list_raw(bitmap.palette()); + const rgb_t *clut = bitmap.palette()->entry_list_raw(); int window_x, window_y, window_xmask, window_ymask; diff --git a/src/mame/video/m62.c b/src/mame/video/m62.c index c12ee31b11f..6d7380ed6d6 100644 --- a/src/mame/video/m62.c +++ b/src/mame/video/m62.c @@ -184,17 +184,17 @@ void m62_state::m62_amplify_contrast(palette_t *palette, UINT32 numcolors) { // m62 palette is very dark, so amplify default contrast UINT32 i, ymax=1; - if (!numcolors) numcolors = palette_get_num_colors(palette); + if (!numcolors) numcolors = palette->num_colors(); // find maximum brightness for (i=0;i < numcolors;i++) { - rgb_t rgb = palette_entry_get_color(palette,i); + rgb_t rgb = palette->entry_color(i); UINT32 y = 299 * RGB_RED(rgb) + 587 * RGB_GREEN(rgb) + 114 * RGB_BLUE(rgb); ymax = MAX(ymax, y); } - palette_set_contrast(palette, 255000.0/ymax); + palette->set_contrast(255000.0/ymax); } void m62_state::palette_init() diff --git a/src/mame/video/malzak.c b/src/mame/video/malzak.c index 70e3de07a97..4ad9c365ebe 100644 --- a/src/mame/video/malzak.c +++ b/src/mame/video/malzak.c @@ -18,7 +18,7 @@ UINT32 malzak_state::screen_update_malzak(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) { - const rgb_t *palette = palette_entry_list_raw(bitmap.palette()); + const rgb_t *palette = bitmap.palette()->entry_list_raw(); int sx, sy; int x,y; diff --git a/src/mame/video/mario.c b/src/mame/video/mario.c index dfc16e924ca..76011da0c3c 100644 --- a/src/mame/video/mario.c +++ b/src/mame/video/mario.c @@ -74,8 +74,8 @@ void mario_state::palette_init() palette_set_colors(machine(), 256, rgb, 256); auto_free(machine(), rgb); - palette_normalize_range(machine().palette, 0, 255, 0, 255); - palette_normalize_range(machine().palette, 256, 511, 0, 255); + machine().palette->normalize_range(0, 255); + machine().palette->normalize_range(256, 511); } WRITE8_MEMBER(mario_state::mario_videoram_w) diff --git a/src/mame/video/phoenix.c b/src/mame/video/phoenix.c index 467c6e3f067..913f9e23ce8 100644 --- a/src/mame/video/phoenix.c +++ b/src/mame/video/phoenix.c @@ -89,7 +89,7 @@ PALETTE_INIT_MEMBER(phoenix_state,phoenix) col = ((i << 3 ) & 0x18) | ((i>>2) & 0x07) | (i & 0x60); palette_set_color(machine(),i,rgb[col]); } - palette_normalize_range(machine().palette, 0, 255, 0, 255); + machine().palette->normalize_range(0, 255); auto_free(machine(), rgb); } @@ -107,7 +107,7 @@ PALETTE_INIT_MEMBER(phoenix_state,survival) col = ((i << 3 ) & 0x18) | ((i>>2) & 0x07) | (i & 0x60); palette_set_color(machine(),i,rgb[col]); } - palette_normalize_range(machine().palette, 0, 255, 0, 255); + machine().palette->normalize_range(0, 255); auto_free(machine(), rgb); } @@ -125,7 +125,7 @@ PALETTE_INIT_MEMBER(phoenix_state,pleiads) col = ((i << 3 ) & 0x18) | ((i>>2) & 0x07) | (i & 0xE0); palette_set_color(machine(),i,rgb[col]); } - palette_normalize_range(machine().palette, 0, 255, 0, 255); + machine().palette->normalize_range(0, 255); auto_free(machine(), rgb); } diff --git a/src/mame/video/popper.c b/src/mame/video/popper.c index 78d2ed72261..e1aa09634b6 100644 --- a/src/mame/video/popper.c +++ b/src/mame/video/popper.c @@ -45,7 +45,7 @@ void popper_state::palette_init() rgb = compute_res_net_all(machine(), color_prom, &popper_decode_info, &popper_net_info); palette_set_colors(machine(), 0, rgb, 64); - palette_normalize_range(machine().palette, 0, 63, 0, 255); + machine().palette->normalize_range(0, 63); auto_free(machine(), rgb); } diff --git a/src/mame/video/taito_b.c b/src/mame/video/taito_b.c index 926b28cd0c8..5d255595876 100644 --- a/src/mame/video/taito_b.c +++ b/src/mame/video/taito_b.c @@ -396,7 +396,7 @@ UINT32 taitob_state::screen_update_taitob(screen_device &screen, bitmap_ind16 &b UINT32 taitob_state::screen_update_realpunc(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) { address_space &space = machine().driver_data()->generic_space(); - const rgb_t *palette = palette_entry_list_adjusted(machine().palette); + const rgb_t *palette = machine().palette->entry_list_adjusted(); UINT8 video_control = m_tc0180vcu->get_videoctrl(space, 0); int x, y; diff --git a/src/mame/video/toobin.c b/src/mame/video/toobin.c index 530ed38fa79..949de01a99a 100644 --- a/src/mame/video/toobin.c +++ b/src/mame/video/toobin.c @@ -223,7 +223,7 @@ UINT32 toobin_state::screen_update_toobin(screen_device &screen, bitmap_rgb32 &b /* draw and merge the MO */ bitmap_ind16 &mobitmap = m_mob->bitmap(); - const rgb_t *palette = palette_entry_list_adjusted(machine().palette); + const rgb_t *palette = machine().palette->entry_list_adjusted(); for (int y = cliprect.min_y; y <= cliprect.max_y; y++) { UINT32 *dest = &bitmap.pix32(y); diff --git a/src/mess/drivers/a5105.c b/src/mess/drivers/a5105.c index d8984464efa..e7ae2cce5cb 100644 --- a/src/mess/drivers/a5105.c +++ b/src/mess/drivers/a5105.c @@ -92,7 +92,7 @@ public: static UPD7220_DISPLAY_PIXELS( hgdc_display_pixels ) { a5105_state *state = device->machine().driver_data<a5105_state>(); - const rgb_t *palette = palette_entry_list_raw(bitmap.palette()); + const rgb_t *palette = bitmap.palette()->entry_list_raw(); int xi,gfx; UINT8 pen; @@ -110,7 +110,7 @@ static UPD7220_DISPLAY_PIXELS( hgdc_display_pixels ) static UPD7220_DRAW_TEXT_LINE( hgdc_draw_text ) { a5105_state *state = device->machine().driver_data<a5105_state>(); - const rgb_t *palette = palette_entry_list_raw(bitmap.palette()); + const rgb_t *palette = bitmap.palette()->entry_list_raw(); int x; int xi,yi; int tile,color; diff --git a/src/mess/drivers/alphatro.c b/src/mess/drivers/alphatro.c index 888a08cb641..a50af5ea56a 100644 --- a/src/mess/drivers/alphatro.c +++ b/src/mess/drivers/alphatro.c @@ -156,7 +156,7 @@ void alphatro_state::video_start() static MC6845_UPDATE_ROW( alphatro_update_row ) { alphatro_state *state = device->machine().driver_data<alphatro_state>(); - const rgb_t *pens = palette_entry_list_raw(bitmap.palette()); + const rgb_t *pens = bitmap.palette()->entry_list_raw(); bool palette = BIT(state->ioport("CONFIG")->read(), 5); UINT8 chr,gfx,attr,fg,inv; UINT16 mem,x; diff --git a/src/mess/drivers/apc.c b/src/mess/drivers/apc.c index e7e3daaea98..2cf150a7832 100644 --- a/src/mess/drivers/apc.c +++ b/src/mess/drivers/apc.c @@ -190,7 +190,7 @@ static UPD7220_DISPLAY_PIXELS( hgdc_display_pixels ) static UPD7220_DRAW_TEXT_LINE( hgdc_draw_text ) { apc_state *state = device->machine().driver_data<apc_state>(); - const rgb_t *palette = palette_entry_list_raw(bitmap.palette()); + const rgb_t *palette = bitmap.palette()->entry_list_raw(); int xi,yi,yi_trans; int x; UINT8 char_size; diff --git a/src/mess/drivers/applix.c b/src/mess/drivers/applix.c index 163b9af48ed..908789ab8e5 100644 --- a/src/mess/drivers/applix.c +++ b/src/mess/drivers/applix.c @@ -774,7 +774,7 @@ static MC6845_UPDATE_ROW( applix_update_row ) // Need to display a border colour. // There is a monochrome mode, but no info found as yet. applix_state *state = device->machine().driver_data<applix_state>(); - const rgb_t *palette = palette_entry_list_raw(bitmap.palette()); + const rgb_t *palette = bitmap.palette()->entry_list_raw(); UINT8 i; UINT16 chr,x; UINT32 mem, vidbase = (state->m_video_latch & 15) << 14, *p = &bitmap.pix32(y); diff --git a/src/mess/drivers/bigbord2.c b/src/mess/drivers/bigbord2.c index 4fd96c3c1f7..c2bea830d54 100644 --- a/src/mess/drivers/bigbord2.c +++ b/src/mess/drivers/bigbord2.c @@ -585,7 +585,7 @@ GFXDECODE_END MC6845_UPDATE_ROW( bigbord2_update_row ) { bigbord2_state *state = device->machine().driver_data<bigbord2_state>(); - const rgb_t *palette = palette_entry_list_raw(bitmap.palette()); + const rgb_t *palette = bitmap.palette()->entry_list_raw(); UINT8 chr,gfx,inv; UINT16 mem,x; UINT32 *p = &bitmap.pix32(y); diff --git a/src/mess/drivers/bml3.c b/src/mess/drivers/bml3.c index 9a829d120f6..c6b7ceb752f 100644 --- a/src/mess/drivers/bml3.c +++ b/src/mess/drivers/bml3.c @@ -586,7 +586,7 @@ INPUT_PORTS_END static MC6845_UPDATE_ROW( update_row ) { bml3_state *state = device->machine().driver_data<bml3_state>(); - const rgb_t *palette = palette_entry_list_raw(bitmap.palette()); + const rgb_t *palette = bitmap.palette()->entry_list_raw(); // The MB-6890 has a 5-bit colour RAM region. The meaning of the bits are: // 0: blue // 1: red diff --git a/src/mess/drivers/camplynx.c b/src/mess/drivers/camplynx.c index 99494bf6c30..745fea461ce 100644 --- a/src/mess/drivers/camplynx.c +++ b/src/mess/drivers/camplynx.c @@ -384,7 +384,7 @@ void camplynx_state::palette_init() static MC6845_UPDATE_ROW( lynx48k_update_row ) { UINT8 *RAM = device->machine().root_device().memregion("maincpu")->base(); - const rgb_t *palette = palette_entry_list_raw(bitmap.palette()); + const rgb_t *palette = bitmap.palette()->entry_list_raw(); UINT8 r,g,b; UINT32 x, *p = &bitmap.pix32(y); @@ -408,7 +408,7 @@ static MC6845_UPDATE_ROW( lynx48k_update_row ) static MC6845_UPDATE_ROW( lynx128k_update_row ) { UINT8 *RAM = device->machine().root_device().memregion("maincpu")->base(); - const rgb_t *palette = palette_entry_list_raw(bitmap.palette()); + const rgb_t *palette = bitmap.palette()->entry_list_raw(); UINT8 r,g,b; UINT32 x, *p = &bitmap.pix32(y); diff --git a/src/mess/drivers/dim68k.c b/src/mess/drivers/dim68k.c index a1c0478e31a..5d83e3d38bd 100644 --- a/src/mess/drivers/dim68k.c +++ b/src/mess/drivers/dim68k.c @@ -225,7 +225,7 @@ void dim68k_state::video_start() MC6845_UPDATE_ROW( dim68k_update_row ) { dim68k_state *state = device->machine().driver_data<dim68k_state>(); - const rgb_t *palette = palette_entry_list_raw(bitmap.palette()); + const rgb_t *palette = bitmap.palette()->entry_list_raw(); UINT8 chr,gfx,x,xx,inv; UINT16 chr16=0x2020; // set to spaces if screen is off UINT32 *p = &bitmap.pix32(y); diff --git a/src/mess/drivers/dmv.c b/src/mess/drivers/dmv.c index 03eb061d69c..7d42154522b 100644 --- a/src/mess/drivers/dmv.c +++ b/src/mess/drivers/dmv.c @@ -151,7 +151,7 @@ static UPD7220_DISPLAY_PIXELS( hgdc_display_pixels ) static UPD7220_DRAW_TEXT_LINE( hgdc_draw_text ) { dmv_state *state = device->machine().driver_data<dmv_state>(); - const rgb_t *palette = palette_entry_list_raw(bitmap.palette()); + const rgb_t *palette = bitmap.palette()->entry_list_raw(); UINT8 * chargen = state->memregion("maincpu")->base() + 0x1000; for( int x = 0; x < pitch; x++ ) diff --git a/src/mess/drivers/ec65.c b/src/mess/drivers/ec65.c index 6fb0ca2e72d..2065e1b2931 100644 --- a/src/mess/drivers/ec65.c +++ b/src/mess/drivers/ec65.c @@ -134,7 +134,7 @@ void ec65_state::video_start() static MC6845_UPDATE_ROW( ec65_update_row ) { ec65_state *state = device->machine().driver_data<ec65_state>(); - const rgb_t *palette = palette_entry_list_raw(bitmap.palette()); + const rgb_t *palette = bitmap.palette()->entry_list_raw(); UINT8 chr,gfx,inv; UINT16 mem,x; UINT32 *p = &bitmap.pix32(y); diff --git a/src/mess/drivers/einstein.c b/src/mess/drivers/einstein.c index 8f3637fb94a..43fa006be90 100644 --- a/src/mess/drivers/einstein.c +++ b/src/mess/drivers/einstein.c @@ -102,7 +102,7 @@ READ8_MEMBER(einstein_state::einstein_80col_ram_r) static MC6845_UPDATE_ROW( einstein_6845_update_row ) { einstein_state *einstein = device->machine().driver_data<einstein_state>(); - const rgb_t *palette = palette_entry_list_raw(bitmap.palette()); + const rgb_t *palette = bitmap.palette()->entry_list_raw(); UINT8 *data = einstein->m_region_gfx1->base(); UINT8 char_code, data_byte; int i, x; diff --git a/src/mess/drivers/h19.c b/src/mess/drivers/h19.c index fcbc75bb431..6c833bf2973 100644 --- a/src/mess/drivers/h19.c +++ b/src/mess/drivers/h19.c @@ -321,7 +321,7 @@ void h19_state::video_start() static MC6845_UPDATE_ROW( h19_update_row ) { h19_state *state = device->machine().driver_data<h19_state>(); - const rgb_t *palette = palette_entry_list_raw(bitmap.palette()); + const rgb_t *palette = bitmap.palette()->entry_list_raw(); UINT8 chr,gfx; UINT16 mem,x; UINT32 *p = &bitmap.pix32(y); diff --git a/src/mess/drivers/if800.c b/src/mess/drivers/if800.c index eb5004cb9a1..4eab0039d7b 100644 --- a/src/mess/drivers/if800.c +++ b/src/mess/drivers/if800.c @@ -32,7 +32,7 @@ public: static UPD7220_DISPLAY_PIXELS( hgdc_display_pixels ) { if800_state *state = device->machine().driver_data<if800_state>(); - const rgb_t *palette = palette_entry_list_raw(bitmap.palette()); + const rgb_t *palette = bitmap.palette()->entry_list_raw(); int xi,gfx; UINT8 pen; diff --git a/src/mess/drivers/ipds.c b/src/mess/drivers/ipds.c index 472c62018e5..7ef475023ba 100644 --- a/src/mess/drivers/ipds.c +++ b/src/mess/drivers/ipds.c @@ -81,7 +81,7 @@ static I8275_DISPLAY_PIXELS(ipds_display_pixels) { int i; ipds_state *state = device->machine().driver_data<ipds_state>(); - const rgb_t *palette = palette_entry_list_raw(bitmap.palette()); + const rgb_t *palette = bitmap.palette()->entry_list_raw(); UINT8 *charmap = state->memregion("chargen")->base(); UINT8 pixels = charmap[(linecount & 7) + (charcode << 3)] ^ 0xff; diff --git a/src/mess/drivers/lola8a.c b/src/mess/drivers/lola8a.c index eb3231823be..6ad1b371811 100644 --- a/src/mess/drivers/lola8a.c +++ b/src/mess/drivers/lola8a.c @@ -197,7 +197,7 @@ static MC6845_UPDATE_ROW( lola8a_update_row ) { lola8a_state *state = device->machine().driver_data<lola8a_state>(); address_space &program = state->m_maincpu->space(AS_PROGRAM); - const rgb_t *palette = palette_entry_list_raw(bitmap.palette()); + const rgb_t *palette = bitmap.palette()->entry_list_raw(); for (int sx = 0; sx < x_count; sx++) { diff --git a/src/mess/drivers/mx2178.c b/src/mess/drivers/mx2178.c index cb875ade955..ca30c554dc7 100644 --- a/src/mess/drivers/mx2178.c +++ b/src/mess/drivers/mx2178.c @@ -106,7 +106,7 @@ static ACIA6850_INTERFACE( acia_intf ) static MC6845_UPDATE_ROW( update_row ) { mx2178_state *state = device->machine().driver_data<mx2178_state>(); - const rgb_t *pens = palette_entry_list_raw(bitmap.palette()); + const rgb_t *pens = bitmap.palette()->entry_list_raw(); UINT8 chr,gfx; UINT16 mem,x; UINT32 *p = &bitmap.pix32(y); diff --git a/src/mess/drivers/mycom.c b/src/mess/drivers/mycom.c index dc1b8daa2c2..c286ce74754 100644 --- a/src/mess/drivers/mycom.c +++ b/src/mess/drivers/mycom.c @@ -130,7 +130,7 @@ void mycom_state::video_start() static MC6845_UPDATE_ROW( mycom_update_row ) { mycom_state *state = device->machine().driver_data<mycom_state>(); - const rgb_t *palette = palette_entry_list_raw(bitmap.palette()); + const rgb_t *palette = bitmap.palette()->entry_list_raw(); UINT8 chr,gfx=0,z; UINT16 mem,x; UINT32 *p = &bitmap.pix32(y); diff --git a/src/mess/drivers/mz3500.c b/src/mess/drivers/mz3500.c index 82a3a57eb5e..6e4e3d93531 100644 --- a/src/mess/drivers/mz3500.c +++ b/src/mess/drivers/mz3500.c @@ -147,7 +147,7 @@ static UPD7220_DISPLAY_PIXELS( hgdc_display_pixels ) static UPD7220_DRAW_TEXT_LINE( hgdc_draw_text ) { mz3500_state *state = device->machine().driver_data<mz3500_state>(); - const rgb_t *palette = palette_entry_list_raw(bitmap.palette()); + const rgb_t *palette = bitmap.palette()->entry_list_raw(); int x; int xi,yi; int tile; diff --git a/src/mess/drivers/mz6500.c b/src/mess/drivers/mz6500.c index 49720c5bc81..b2c9b63de7a 100644 --- a/src/mess/drivers/mz6500.c +++ b/src/mess/drivers/mz6500.c @@ -37,7 +37,7 @@ public: static UPD7220_DISPLAY_PIXELS( hgdc_display_pixels ) { mz6500_state *state = device->machine().driver_data<mz6500_state>(); - const rgb_t *palette = palette_entry_list_raw(bitmap.palette()); + const rgb_t *palette = bitmap.palette()->entry_list_raw(); int gfx[3]; UINT8 i,pen; diff --git a/src/mess/drivers/pasopia.c b/src/mess/drivers/pasopia.c index 4d8e5569d8b..318d99004d1 100644 --- a/src/mess/drivers/pasopia.c +++ b/src/mess/drivers/pasopia.c @@ -86,7 +86,7 @@ void pasopia_state::video_start() MC6845_UPDATE_ROW( pasopia_update_row ) { pasopia_state *state = device->machine().driver_data<pasopia_state>(); - const rgb_t *palette = palette_entry_list_raw(bitmap.palette()); + const rgb_t *palette = bitmap.palette()->entry_list_raw(); UINT8 *m_p_chargen = state->memregion("chargen")->base(); UINT8 chr,gfx,fg=7,bg=0; // colours need to be determined UINT16 mem,x; diff --git a/src/mess/drivers/pc9801.c b/src/mess/drivers/pc9801.c index 03384d0e758..3247fb5daa3 100644 --- a/src/mess/drivers/pc9801.c +++ b/src/mess/drivers/pc9801.c @@ -787,7 +787,7 @@ UINT32 pc9801_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, static UPD7220_DISPLAY_PIXELS( hgdc_display_pixels ) { pc9801_state *state = device->machine().driver_data<pc9801_state>(); - const rgb_t *palette = palette_entry_list_raw(bitmap.palette()); + const rgb_t *palette = bitmap.palette()->entry_list_raw(); int xi; int res_x,res_y; UINT8 pen; @@ -849,7 +849,7 @@ static UPD7220_DISPLAY_PIXELS( hgdc_display_pixels ) static UPD7220_DRAW_TEXT_LINE( hgdc_draw_text ) { pc9801_state *state = device->machine().driver_data<pc9801_state>(); - const rgb_t *palette = palette_entry_list_raw(bitmap.palette()); + const rgb_t *palette = bitmap.palette()->entry_list_raw(); int xi,yi; int x; UINT8 char_size; diff --git a/src/mess/drivers/pyl601.c b/src/mess/drivers/pyl601.c index 1ea39b27246..b1edae25d4e 100644 --- a/src/mess/drivers/pyl601.c +++ b/src/mess/drivers/pyl601.c @@ -385,7 +385,7 @@ void pyl601_state::video_start() static MC6845_UPDATE_ROW( pyl601_update_row ) { pyl601_state *state = device->machine().driver_data<pyl601_state>(); - const rgb_t *palette = palette_entry_list_raw(bitmap.palette()); + const rgb_t *palette = bitmap.palette()->entry_list_raw(); UINT8 *charrom = state->memregion("chargen")->base(); int column, bit, i; @@ -428,7 +428,7 @@ static MC6845_UPDATE_ROW( pyl601_update_row ) static MC6845_UPDATE_ROW( pyl601a_update_row ) { pyl601_state *state = device->machine().driver_data<pyl601_state>(); - const rgb_t *palette = palette_entry_list_raw(bitmap.palette()); + const rgb_t *palette = bitmap.palette()->entry_list_raw(); UINT8 *charrom = state->memregion("chargen")->base(); int column, bit, i; diff --git a/src/mess/drivers/qx10.c b/src/mess/drivers/qx10.c index 52920c5b419..4ab93e02fce 100644 --- a/src/mess/drivers/qx10.c +++ b/src/mess/drivers/qx10.c @@ -152,7 +152,7 @@ public: static UPD7220_DISPLAY_PIXELS( hgdc_display_pixels ) { qx10_state *state = device->machine().driver_data<qx10_state>(); - const rgb_t *palette = palette_entry_list_raw(bitmap.palette()); + const rgb_t *palette = bitmap.palette()->entry_list_raw(); int xi,gfx[3]; UINT8 pen; @@ -182,7 +182,7 @@ static UPD7220_DISPLAY_PIXELS( hgdc_display_pixels ) static UPD7220_DRAW_TEXT_LINE( hgdc_draw_text ) { qx10_state *state = device->machine().driver_data<qx10_state>(); - const rgb_t *palette = palette_entry_list_raw(bitmap.palette()); + const rgb_t *palette = bitmap.palette()->entry_list_raw(); int x; int xi,yi; int tile; diff --git a/src/mess/drivers/samcoupe.c b/src/mess/drivers/samcoupe.c index e8991d7588b..5c94ff87d27 100644 --- a/src/mess/drivers/samcoupe.c +++ b/src/mess/drivers/samcoupe.c @@ -508,7 +508,7 @@ void samcoupe_state::palette_init() palette_set_color(machine(), i, MAKE_RGB(r, g, b)); } - palette_normalize_range(machine().palette, 0, 127, 0, 255); + machine().palette->normalize_range(0, 127); } diff --git a/src/mess/drivers/sapi1.c b/src/mess/drivers/sapi1.c index 69654e7ea59..40a7f8e528e 100644 --- a/src/mess/drivers/sapi1.c +++ b/src/mess/drivers/sapi1.c @@ -407,7 +407,7 @@ UINT32 sapi1_state::screen_update_sapi3(screen_device &screen, bitmap_ind16 &bit static MC6845_UPDATE_ROW( update_row ) { sapi1_state *state = device->machine().driver_data<sapi1_state>(); - const rgb_t *palette = palette_entry_list_raw(bitmap.palette()); + const rgb_t *palette = bitmap.palette()->entry_list_raw(); UINT8 chr,gfx,inv; UINT16 mem,x; UINT32 *p = &bitmap.pix32(y); diff --git a/src/mess/drivers/sm1800.c b/src/mess/drivers/sm1800.c index 4e0e05aa033..e6ba7dde7b0 100644 --- a/src/mess/drivers/sm1800.c +++ b/src/mess/drivers/sm1800.c @@ -88,7 +88,7 @@ static I8275_DISPLAY_PIXELS(sm1800_display_pixels) { int i; sm1800_state *state = device->machine().driver_data<sm1800_state>(); - const rgb_t *palette = palette_entry_list_raw(bitmap.palette()); + const rgb_t *palette = bitmap.palette()->entry_list_raw(); UINT8 *charmap = state->memregion("chargen")->base(); UINT8 pixels = charmap[(linecount & 7) + (charcode << 3)] ^ 0xff; if (vsp) diff --git a/src/mess/drivers/tavernie.c b/src/mess/drivers/tavernie.c index 0fdd7314c39..d754d87d6af 100644 --- a/src/mess/drivers/tavernie.c +++ b/src/mess/drivers/tavernie.c @@ -199,7 +199,7 @@ WRITE8_MEMBER( tavernie_state::ds_w ) static MC6845_UPDATE_ROW( update_row ) { tavernie_state *state = device->machine().driver_data<tavernie_state>(); - const rgb_t *palette = palette_entry_list_raw(bitmap.palette()); + const rgb_t *palette = bitmap.palette()->entry_list_raw(); UINT8 chr,gfx=0; UINT16 mem,x; UINT32 *p = &bitmap.pix32(y); diff --git a/src/mess/drivers/tiki100.c b/src/mess/drivers/tiki100.c index f71b01d81c2..a3456c47246 100644 --- a/src/mess/drivers/tiki100.c +++ b/src/mess/drivers/tiki100.c @@ -394,7 +394,7 @@ INPUT_PORTS_END UINT32 tiki100_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) { - const rgb_t *palette = palette_entry_list_raw(bitmap.palette()); + const rgb_t *palette = bitmap.palette()->entry_list_raw(); UINT16 addr = (m_scroll << 7); int sx, y, pixel, mode = (m_mode >> 4) & 0x03; diff --git a/src/mess/drivers/tim100.c b/src/mess/drivers/tim100.c index 92de929ffad..d100ae55215 100644 --- a/src/mess/drivers/tim100.c +++ b/src/mess/drivers/tim100.c @@ -82,7 +82,7 @@ static I8275_DISPLAY_PIXELS(tim100_display_pixels) { tim100_state *state = device->machine().driver_data<tim100_state>(); int i; - const rgb_t *palette = palette_entry_list_raw(bitmap.palette()); + const rgb_t *palette = bitmap.palette()->entry_list_raw(); UINT8 *charmap = state->memregion("chargen")->base(); UINT8 pixels = charmap[(linecount & 15) + (charcode << 4)]; if (vsp) diff --git a/src/mess/drivers/tvc.c b/src/mess/drivers/tvc.c index 2196ef5b2b1..22385115c2e 100644 --- a/src/mess/drivers/tvc.c +++ b/src/mess/drivers/tvc.c @@ -513,7 +513,7 @@ void tvc_state::machine_reset() static MC6845_UPDATE_ROW( tvc_update_row ) { tvc_state *state = device->machine().driver_data<tvc_state>(); - const rgb_t *palette = palette_entry_list_raw(bitmap.palette()); + const rgb_t *palette = bitmap.palette()->entry_list_raw(); UINT32 *p = &bitmap.pix32(y); UINT8 *vram = state->memregion("vram")->base() + ((state->m_vram_bank & 0x30)<<10); UINT16 offset = ((ma*4 + ra*0x40) & 0x3fff); diff --git a/src/mess/drivers/unior.c b/src/mess/drivers/unior.c index 2694e8825c3..1cf120dad48 100644 --- a/src/mess/drivers/unior.c +++ b/src/mess/drivers/unior.c @@ -252,7 +252,7 @@ WRITE8_MEMBER( unior_state::scroll_w ) static I8275_DISPLAY_PIXELS(display_pixels) { unior_state *state = device->machine().driver_data<unior_state>(); - const rgb_t *palette = palette_entry_list_raw(bitmap.palette()); + const rgb_t *palette = bitmap.palette()->entry_list_raw(); UINT8 gfx = state->m_p_chargen[(linecount & 7) | (charcode << 3)]; if (vsp) gfx = 0; diff --git a/src/mess/drivers/v6809.c b/src/mess/drivers/v6809.c index d6eb7276d21..afbb78d63a3 100644 --- a/src/mess/drivers/v6809.c +++ b/src/mess/drivers/v6809.c @@ -160,7 +160,7 @@ GFXDECODE_END MC6845_UPDATE_ROW( v6809_update_row ) { v6809_state *state = device->machine().driver_data<v6809_state>(); - const rgb_t *palette = palette_entry_list_raw(bitmap.palette()); + const rgb_t *palette = bitmap.palette()->entry_list_raw(); UINT8 chr,gfx; UINT16 mem,x; UINT32 *p = &bitmap.pix32(y); diff --git a/src/mess/drivers/victor9k.c b/src/mess/drivers/victor9k.c index 8fff4ec9bf5..682f40e1bc1 100644 --- a/src/mess/drivers/victor9k.c +++ b/src/mess/drivers/victor9k.c @@ -268,7 +268,7 @@ static MC6845_UPDATE_ROW( victor9k_update_row ) { victor9k_state *state = device->machine().driver_data<victor9k_state>(); address_space &program = state->m_maincpu->space(AS_PROGRAM); - const rgb_t *palette = palette_entry_list_raw(bitmap.palette()); + const rgb_t *palette = bitmap.palette()->entry_list_raw(); if (BIT(ma, 13)) { diff --git a/src/mess/drivers/zorba.c b/src/mess/drivers/zorba.c index 15810763e5d..930d9e7afee 100644 --- a/src/mess/drivers/zorba.c +++ b/src/mess/drivers/zorba.c @@ -278,7 +278,7 @@ static I8275_DISPLAY_PIXELS( zorba_update_chr ) { int i; zorba_state *state = device->machine().driver_data<zorba_state>(); - const rgb_t *palette = palette_entry_list_raw(bitmap.palette()); + const rgb_t *palette = bitmap.palette()->entry_list_raw(); UINT8 gfx = state->m_p_chargen[(linecount & 15) + (charcode << 4)]; if (vsp) diff --git a/src/mess/drivers/zrt80.c b/src/mess/drivers/zrt80.c index 91639642653..72092fbfb6d 100644 --- a/src/mess/drivers/zrt80.c +++ b/src/mess/drivers/zrt80.c @@ -214,7 +214,7 @@ void zrt80_state::video_start() static MC6845_UPDATE_ROW( zrt80_update_row ) { zrt80_state *state = device->machine().driver_data<zrt80_state>(); - const rgb_t *palette = palette_entry_list_raw(bitmap.palette()); + const rgb_t *palette = bitmap.palette()->entry_list_raw(); UINT8 chr,gfx,inv; UINT16 mem,x; UINT32 *p = &bitmap.pix32(y); diff --git a/src/mess/machine/svi318.c b/src/mess/machine/svi318.c index 707efa8fdfb..ff32a5632fa 100644 --- a/src/mess/machine/svi318.c +++ b/src/mess/machine/svi318.c @@ -326,7 +326,7 @@ READ8_MEMBER(svi318_state::svi318_fdc_irqdrq_r) MC6845_UPDATE_ROW( svi806_crtc6845_update_row ) { svi318_state *state = device->machine().driver_data<svi318_state>(); - const rgb_t *palette = palette_entry_list_raw(bitmap.palette()); + const rgb_t *palette = bitmap.palette()->entry_list_raw(); int i; for( i = 0; i < x_count; i++ ) diff --git a/src/mess/video/bbc.c b/src/mess/video/bbc.c index b0d902363f1..37d21946ba9 100644 --- a/src/mess/video/bbc.c +++ b/src/mess/video/bbc.c @@ -165,7 +165,7 @@ WRITE8_MEMBER(bbc_state::bbc_videoULA_w) static MC6845_UPDATE_ROW( vid_update_row ) { bbc_state *state = device->machine().driver_data<bbc_state>(); - const rgb_t *palette = palette_entry_list_raw(bitmap.palette()); + const rgb_t *palette = bitmap.palette()->entry_list_raw(); if (state->m_videoULA_teletext_normal_select) { diff --git a/src/mess/video/dgn_beta.c b/src/mess/video/dgn_beta.c index 96f6d58ff5b..6cb4d653b3c 100644 --- a/src/mess/video/dgn_beta.c +++ b/src/mess/video/dgn_beta.c @@ -99,7 +99,7 @@ the access to the video memory is unclear to me at the moment. static MC6845_UPDATE_ROW( dgnbeta_update_row ) { dgn_beta_state *state = device->machine().driver_data<dgn_beta_state>(); - const rgb_t *palette = palette_entry_list_raw(bitmap.palette()); + const rgb_t *palette = bitmap.palette()->entry_list_raw(); UINT8 *videoram = state->m_videoram; UINT32 *p = &bitmap.pix32(y); int i; diff --git a/src/mess/video/ef9345.c b/src/mess/video/ef9345.c index adc62c6e56d..abb84049a49 100644 --- a/src/mess/video/ef9345.c +++ b/src/mess/video/ef9345.c @@ -206,7 +206,7 @@ void ef9345_device::draw_char_40(UINT8 *c, UINT16 x, UINT16 y) if (y * 10 >= m_screen->height() || x * 8 >= m_screen->width()) return; - const rgb_t *palette = palette_entry_list_raw(m_screen_out.palette()); + const rgb_t *palette = m_screen_out.palette()->entry_list_raw(); for(int i = 0; i < 10; i++) for(int j = 0; j < 8; j++) m_screen_out.pix32(y * 10 + i, x * 8 + j) = palette[c[8 * i + j] & 0x07]; @@ -219,7 +219,7 @@ void ef9345_device::draw_char_80(UINT8 *c, UINT16 x, UINT16 y) if (y * 10 >= m_screen->height() || x * 6 >= m_screen->width()) return; - const rgb_t *palette = palette_entry_list_raw(m_screen_out.palette()); + const rgb_t *palette = m_screen_out.palette()->entry_list_raw(); for(int i = 0; i < 10; i++) for(int j = 0; j < 6; j++) m_screen_out.pix32(y * 10 + i, x * 6 + j) = palette[c[6 * i + j] & 0x07]; diff --git a/src/mess/video/isa_cga.c b/src/mess/video/isa_cga.c index 2ab2f89a1af..f8e6e619bef 100644 --- a/src/mess/video/isa_cga.c +++ b/src/mess/video/isa_cga.c @@ -841,7 +841,7 @@ static MC6845_UPDATE_ROW( cga_text_inten_update_row ) isa8_cga_device *cga = downcast<isa8_cga_device *>(device->owner()); UINT8 *videoram = cga->m_vram + cga->m_start_offset; UINT32 *p = &bitmap.pix32(y); - const rgb_t *palette = palette_entry_list_raw(bitmap.palette()); + const rgb_t *palette = bitmap.palette()->entry_list_raw(); int i; running_machine &machine = device->machine(); @@ -882,7 +882,7 @@ static MC6845_UPDATE_ROW( cga_text_inten_comp_grey_update_row ) isa8_cga_device *cga = downcast<isa8_cga_device *>(device->owner()); UINT8 *videoram = cga->m_vram + cga->m_start_offset; UINT32 *p = &bitmap.pix32(y); - const rgb_t *palette = palette_entry_list_raw(bitmap.palette()); + const rgb_t *palette = bitmap.palette()->entry_list_raw(); int i; running_machine &machine = device->machine(); @@ -922,7 +922,7 @@ static MC6845_UPDATE_ROW( cga_text_inten_alt_update_row ) isa8_cga_device *cga = downcast<isa8_cga_device *>(device->owner()); UINT8 *videoram = cga->m_vram + cga->m_start_offset; UINT32 *p = &bitmap.pix32(y); - const rgb_t *palette = palette_entry_list_raw(bitmap.palette()); + const rgb_t *palette = bitmap.palette()->entry_list_raw(); int i; running_machine &machine = device->machine(); @@ -962,7 +962,7 @@ static MC6845_UPDATE_ROW( cga_text_blink_update_row ) isa8_cga_device *cga = downcast<isa8_cga_device *>(device->owner()); UINT8 *videoram = cga->m_vram + cga->m_start_offset; UINT32 *p = &bitmap.pix32(y); - const rgb_t *palette = palette_entry_list_raw(bitmap.palette()); + const rgb_t *palette = bitmap.palette()->entry_list_raw(); int i; running_machine &machine = device->machine(); @@ -1007,7 +1007,7 @@ static MC6845_UPDATE_ROW( cga_text_blink_update_row_si ) isa8_cga_device *cga = downcast<isa8_cga_device *>(device->owner()); UINT8 *videoram = cga->m_vram + cga->m_start_offset; UINT32 *p = &bitmap.pix32(y); - const rgb_t *palette = palette_entry_list_raw(bitmap.palette()); + const rgb_t *palette = bitmap.palette()->entry_list_raw(); int i; running_machine &machine = device->machine(); @@ -1060,7 +1060,7 @@ static MC6845_UPDATE_ROW( cga_text_blink_alt_update_row ) isa8_cga_device *cga = downcast<isa8_cga_device *>(device->owner()); UINT8 *videoram = cga->m_vram + cga->m_start_offset; UINT32 *p = &bitmap.pix32(y); - const rgb_t *palette = palette_entry_list_raw(bitmap.palette()); + const rgb_t *palette = bitmap.palette()->entry_list_raw(); int i; running_machine &machine = device->machine(); @@ -1109,7 +1109,7 @@ static MC6845_UPDATE_ROW( cga_gfx_4bppl_update_row ) isa8_cga_device *cga = downcast<isa8_cga_device *>(device->owner()); UINT8 *videoram = cga->m_vram + cga->m_start_offset; UINT32 *p = &bitmap.pix32(y); - const rgb_t *palette = palette_entry_list_raw(bitmap.palette()); + const rgb_t *palette = bitmap.palette()->entry_list_raw(); int i; running_machine &machine = device->machine(); @@ -1168,7 +1168,7 @@ static MC6845_UPDATE_ROW( cga_gfx_4bpph_update_row ) isa8_cga_device *cga = downcast<isa8_cga_device *>(device->owner()); UINT8 *videoram = cga->m_vram + cga->m_start_offset; UINT32 *p = &bitmap.pix32(y); - const rgb_t *palette = palette_entry_list_raw(bitmap.palette()); + const rgb_t *palette = bitmap.palette()->entry_list_raw(); int i; running_machine &machine = device->machine(); @@ -1213,7 +1213,7 @@ static MC6845_UPDATE_ROW( cga_gfx_2bpp_update_row ) isa8_cga_device *cga = downcast<isa8_cga_device *>(device->owner()); UINT8 *videoram = cga->m_vram + cga->m_start_offset; UINT32 *p = &bitmap.pix32(y); - const rgb_t *palette = palette_entry_list_raw(bitmap.palette()); + const rgb_t *palette = bitmap.palette()->entry_list_raw(); int i; running_machine &machine = device->machine(); @@ -1250,7 +1250,7 @@ static MC6845_UPDATE_ROW( cga_gfx_1bpp_update_row ) isa8_cga_device *cga = downcast<isa8_cga_device *>(device->owner()); UINT8 *videoram = cga->m_vram + cga->m_start_offset; UINT32 *p = &bitmap.pix32(y); - const rgb_t *palette = palette_entry_list_raw(bitmap.palette()); + const rgb_t *palette = bitmap.palette()->entry_list_raw(); UINT8 fg = cga->m_color_select & 0x0F; int i; running_machine &machine = device->machine(); @@ -1720,7 +1720,7 @@ static MC6845_UPDATE_ROW( pc1512_gfx_4bpp_update_row ) isa8_cga_pc1512_device *cga = downcast<isa8_cga_pc1512_device *>(device->owner()); UINT8 *videoram = cga->m_vram + cga->m_start_offset; UINT32 *p = &bitmap.pix32(y); - const rgb_t *palette = palette_entry_list_raw(bitmap.palette()); + const rgb_t *palette = bitmap.palette()->entry_list_raw(); UINT16 offset_base = ra << 13; int j; running_machine &machine = device->machine(); @@ -2084,7 +2084,7 @@ void isa8_wyse700_device::device_reset() UINT32 isa8_wyse700_device::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) { if (m_control & 0x08) { - const rgb_t *palette = palette_entry_list_raw(bitmap.palette()); + const rgb_t *palette = bitmap.palette()->entry_list_raw(); UINT8 fg = m_color_select & 0x0F; UINT32 addr = 0; for (int y = 0; y < 800; y++) { diff --git a/src/mess/video/isa_mda.c b/src/mess/video/isa_mda.c index 662901b6b0d..ad3dbc02718 100644 --- a/src/mess/video/isa_mda.c +++ b/src/mess/video/isa_mda.c @@ -211,7 +211,7 @@ void isa8_mda_device::device_reset() static MC6845_UPDATE_ROW( mda_text_inten_update_row ) { isa8_mda_device *mda = downcast<isa8_mda_device *>(device->owner()); - const rgb_t *palette = palette_entry_list_raw(bitmap.palette()); + const rgb_t *palette = bitmap.palette()->entry_list_raw(); UINT32 *p = &bitmap.pix32(y); UINT16 chr_base = ( ra & 0x08 ) ? 0x800 | ( ra & 0x07 ) : ra; int i; @@ -285,7 +285,7 @@ static MC6845_UPDATE_ROW( mda_text_inten_update_row ) static MC6845_UPDATE_ROW( mda_text_blink_update_row ) { isa8_mda_device *mda = downcast<isa8_mda_device *>(device->owner()); - const rgb_t *palette = palette_entry_list_raw(bitmap.palette()); + const rgb_t *palette = bitmap.palette()->entry_list_raw(); UINT32 *p = &bitmap.pix32(y); UINT16 chr_base = ( ra & 0x08 ) ? 0x800 | ( ra & 0x07 ) : ra; int i; @@ -608,7 +608,7 @@ void isa8_hercules_device::device_reset() static MC6845_UPDATE_ROW( hercules_gfx_update_row ) { isa8_hercules_device *herc = downcast<isa8_hercules_device *>(device->owner()); - const rgb_t *palette = palette_entry_list_raw(bitmap.palette()); + const rgb_t *palette = bitmap.palette()->entry_list_raw(); UINT32 *p = &bitmap.pix32(y); UINT16 gfx_base = ( ( herc->m_mode_control & 0x80 ) ? 0x8000 : 0x0000 ) | ( ( ra & 0x03 ) << 13 ); int i; diff --git a/src/mess/video/kaypro.c b/src/mess/video/kaypro.c index e1a0925c25b..56e50c36971 100644 --- a/src/mess/video/kaypro.c +++ b/src/mess/video/kaypro.c @@ -137,7 +137,7 @@ UINT32 kaypro_state::screen_update_kaypro2x(screen_device &screen, bitmap_rgb32 MC6845_UPDATE_ROW( kaypro2x_update_row ) { kaypro_state *state = device->machine().driver_data<kaypro_state>(); - const rgb_t *palette = palette_entry_list_raw(bitmap.palette()); + const rgb_t *palette = bitmap.palette()->entry_list_raw(); UINT32 *p = &bitmap.pix32(y); UINT16 x; UINT8 gfx,fg,bg; diff --git a/src/mess/video/mbc55x.c b/src/mess/video/mbc55x.c index f8ba1646970..75843e7985b 100644 --- a/src/mess/video/mbc55x.c +++ b/src/mess/video/mbc55x.c @@ -90,7 +90,7 @@ static void video_debug(running_machine &machine, int ref, int params, const cha static MC6845_UPDATE_ROW( vid_update_row ) { mbc55x_state *mstate = device->machine().driver_data<mbc55x_state>(); - const rgb_t *palette = palette_entry_list_raw(bitmap.palette()); + const rgb_t *palette = bitmap.palette()->entry_list_raw(); UINT8 *ram = &mstate->m_ram->pointer()[0]; UINT8 *red = &mstate->m_video_mem[RED_PLANE_OFFSET]; diff --git a/src/mess/video/mbee.c b/src/mess/video/mbee.c index c7ec078323e..29f55d311c5 100644 --- a/src/mess/video/mbee.c +++ b/src/mess/video/mbee.c @@ -419,7 +419,7 @@ MC6845_ON_UPDATE_ADDR_CHANGED( mbee256_update_addr ) MC6845_UPDATE_ROW( mbee_update_row ) { mbee_state *state = device->machine().driver_data<mbee_state>(); - const rgb_t *palette = palette_entry_list_raw(bitmap.palette()); + const rgb_t *palette = bitmap.palette()->entry_list_raw(); UINT8 chr,gfx; UINT16 mem,x; UINT32 *p = &bitmap.pix32(y); @@ -458,7 +458,7 @@ MC6845_UPDATE_ROW( mbee_update_row ) MC6845_UPDATE_ROW( mbeeic_update_row ) { mbee_state *state = device->machine().driver_data<mbee_state>(); - const rgb_t *palette = palette_entry_list_raw(bitmap.palette()); + const rgb_t *palette = bitmap.palette()->entry_list_raw(); UINT8 chr,gfx,fg,bg; UINT16 mem,x,col; UINT16 colourm = (state->m_08 & 0x0e) << 7; @@ -502,7 +502,7 @@ MC6845_UPDATE_ROW( mbeeic_update_row ) MC6845_UPDATE_ROW( mbeeppc_update_row ) { mbee_state *state = device->machine().driver_data<mbee_state>(); - const rgb_t *palette = palette_entry_list_raw(bitmap.palette()); + const rgb_t *palette = bitmap.palette()->entry_list_raw(); UINT8 gfx,fg,bg; UINT16 mem,x,col,chr; UINT32 *p = &bitmap.pix32(y); diff --git a/src/mess/video/pc_aga.c b/src/mess/video/pc_aga.c index 46baa88ad50..7ca4d933690 100644 --- a/src/mess/video/pc_aga.c +++ b/src/mess/video/pc_aga.c @@ -124,7 +124,7 @@ static WRITE_LINE_DEVICE_HANDLER( aga_vsync_changed ) { /* colors need fixing in the mda_text_* functions ! */ static MC6845_UPDATE_ROW( mda_text_inten_update_row ) { - const rgb_t *palette = palette_entry_list_raw(bitmap.palette()); + const rgb_t *palette = bitmap.palette()->entry_list_raw(); UINT8 *videoram = aga.videoram; UINT32 *p = &bitmap.pix32(y); UINT16 chr_base = ( ra & 0x08 ) ? 0x800 | ( ra & 0x07 ) : ra; @@ -185,7 +185,7 @@ static MC6845_UPDATE_ROW( mda_text_inten_update_row ) { static MC6845_UPDATE_ROW( mda_text_blink_update_row ) { UINT8 *videoram = aga.videoram; - const rgb_t *palette = palette_entry_list_raw(bitmap.palette()); + const rgb_t *palette = bitmap.palette()->entry_list_raw(); UINT32 *p = &bitmap.pix32(y); UINT16 chr_base = ( ra & 0x08 ) ? 0x800 | ( ra & 0x07 ) : ra; int i; @@ -246,7 +246,7 @@ static MC6845_UPDATE_ROW( mda_text_blink_update_row ) { static MC6845_UPDATE_ROW( cga_text_inten_update_row ) { UINT8 *videoram = aga.videoram; - const rgb_t *palette = palette_entry_list_raw(bitmap.palette()); + const rgb_t *palette = bitmap.palette()->entry_list_raw(); UINT32 *p = &bitmap.pix32(y); int i; @@ -275,7 +275,7 @@ static MC6845_UPDATE_ROW( cga_text_inten_update_row ) { } static MC6845_UPDATE_ROW( cga_text_inten_alt_update_row ) { - const rgb_t *palette = palette_entry_list_raw(bitmap.palette()); + const rgb_t *palette = bitmap.palette()->entry_list_raw(); UINT8 *videoram = aga.videoram; UINT32 *p = &bitmap.pix32(y); int i; @@ -304,7 +304,7 @@ static MC6845_UPDATE_ROW( cga_text_inten_alt_update_row ) { } static MC6845_UPDATE_ROW( cga_text_blink_update_row ) { - const rgb_t *palette = palette_entry_list_raw(bitmap.palette()); + const rgb_t *palette = bitmap.palette()->entry_list_raw(); UINT8 *videoram = aga.videoram; UINT32 *p = &bitmap.pix32(y); int i; @@ -337,7 +337,7 @@ static MC6845_UPDATE_ROW( cga_text_blink_update_row ) { } static MC6845_UPDATE_ROW( cga_text_blink_alt_update_row ) { - const rgb_t *palette = palette_entry_list_raw(bitmap.palette()); + const rgb_t *palette = bitmap.palette()->entry_list_raw(); UINT8 *videoram = aga.videoram; UINT32 *p = &bitmap.pix32(y); int i; @@ -372,7 +372,7 @@ static MC6845_UPDATE_ROW( cga_text_blink_alt_update_row ) { } static MC6845_UPDATE_ROW( cga_gfx_4bppl_update_row ) { - const rgb_t *palette = palette_entry_list_raw(bitmap.palette()); + const rgb_t *palette = bitmap.palette()->entry_list_raw(); UINT8 *videoram = aga.videoram; UINT32 *p = &bitmap.pix32(y); int i; @@ -398,7 +398,7 @@ static MC6845_UPDATE_ROW( cga_gfx_4bppl_update_row ) { static MC6845_UPDATE_ROW( cga_gfx_4bpph_update_row ) { UINT8 *videoram = aga.videoram; - const rgb_t *palette = palette_entry_list_raw(bitmap.palette()); + const rgb_t *palette = bitmap.palette()->entry_list_raw(); UINT32 *p = &bitmap.pix32(y); int i; @@ -431,7 +431,7 @@ static MC6845_UPDATE_ROW( cga_gfx_4bpph_update_row ) { static MC6845_UPDATE_ROW( cga_gfx_2bpp_update_row ) { UINT8 *videoram = aga.videoram; - const rgb_t *palette = palette_entry_list_raw(bitmap.palette()); + const rgb_t *palette = bitmap.palette()->entry_list_raw(); UINT32 *p = &bitmap.pix32(y); int i; @@ -456,7 +456,7 @@ static MC6845_UPDATE_ROW( cga_gfx_2bpp_update_row ) { static MC6845_UPDATE_ROW( cga_gfx_1bpp_update_row ) { UINT8 *videoram = aga.videoram; - const rgb_t *palette = palette_entry_list_raw(bitmap.palette()); + const rgb_t *palette = bitmap.palette()->entry_list_raw(); UINT32 *p = &bitmap.pix32(y); UINT8 fg = aga.cga_color_select & 0x0F; int i; diff --git a/src/mess/video/pc_t1t.c b/src/mess/video/pc_t1t.c index a3d65e8fdb8..ad8cd12b47d 100644 --- a/src/mess/video/pc_t1t.c +++ b/src/mess/video/pc_t1t.c @@ -182,7 +182,7 @@ PALETTE_INIT_MEMBER( pc_t1t_device, pcjr ) static MC6845_UPDATE_ROW( t1000_text_inten_update_row ) { pc_t1t_device *t1t = downcast<pc_t1t_device *>(device->owner()); - const rgb_t *palette = palette_entry_list_raw(bitmap.palette()); + const rgb_t *palette = bitmap.palette()->entry_list_raw(); UINT32 *p = &bitmap.pix32(y); int i; @@ -216,7 +216,7 @@ static MC6845_UPDATE_ROW( t1000_text_inten_update_row ) static MC6845_UPDATE_ROW( t1000_text_blink_update_row ) { pc_t1t_device *t1t = downcast<pc_t1t_device *>(device->owner()); - const rgb_t *palette = palette_entry_list_raw(bitmap.palette()); + const rgb_t *palette = bitmap.palette()->entry_list_raw(); UINT32 *p = &bitmap.pix32(y); int i; @@ -258,7 +258,7 @@ static MC6845_UPDATE_ROW( t1000_text_blink_update_row ) static MC6845_UPDATE_ROW( pcjx_text_update_row ) { pcvideo_pcjr_device *pcjx = downcast<pcvideo_pcjr_device *>(device->owner()); - const rgb_t *palette = palette_entry_list_raw(bitmap.palette()); + const rgb_t *palette = bitmap.palette()->entry_list_raw(); UINT32 *p = &bitmap.pix32(y); int i; @@ -300,7 +300,7 @@ static MC6845_UPDATE_ROW( pcjx_text_update_row ) static MC6845_UPDATE_ROW( t1000_gfx_4bpp_update_row ) { pc_t1t_device *t1t = downcast<pc_t1t_device *>(device->owner()); - const rgb_t *palette = palette_entry_list_raw(bitmap.palette()); + const rgb_t *palette = bitmap.palette()->entry_list_raw(); UINT32 *p = &bitmap.pix32(y); UINT8 *vid = t1t->m_displayram + ( ra << 13 ); int i; @@ -328,7 +328,7 @@ static MC6845_UPDATE_ROW( t1000_gfx_4bpp_update_row ) static MC6845_UPDATE_ROW( t1000_gfx_2bpp_update_row ) { pc_t1t_device *t1t = downcast<pc_t1t_device *>(device->owner()); - const rgb_t *palette = palette_entry_list_raw(bitmap.palette()); + const rgb_t *palette = bitmap.palette()->entry_list_raw(); UINT32 *p = &bitmap.pix32(y); UINT8 *vid = t1t->m_displayram + ( ra << 13 ); int i; @@ -356,7 +356,7 @@ static MC6845_UPDATE_ROW( t1000_gfx_2bpp_update_row ) static MC6845_UPDATE_ROW( pcjr_gfx_2bpp_high_update_row ) { pcvideo_pcjr_device *pcjr = downcast<pcvideo_pcjr_device *>(device->owner()); - const rgb_t *palette = palette_entry_list_raw(bitmap.palette()); + const rgb_t *palette = bitmap.palette()->entry_list_raw(); UINT32 *p = &bitmap.pix32(y); UINT8 *vid = pcjr->m_displayram + ( ra << 13 ); int i; @@ -382,7 +382,7 @@ static MC6845_UPDATE_ROW( pcjr_gfx_2bpp_high_update_row ) static MC6845_UPDATE_ROW( t1000_gfx_2bpp_tga_update_row ) { pc_t1t_device *t1t = downcast<pc_t1t_device *>(device->owner()); - const rgb_t *palette = palette_entry_list_raw(bitmap.palette()); + const rgb_t *palette = bitmap.palette()->entry_list_raw(); UINT32 *p = &bitmap.pix32(y); UINT8 *vid = t1t->m_displayram + ( ra << 13 ); int i; @@ -410,7 +410,7 @@ static MC6845_UPDATE_ROW( t1000_gfx_2bpp_tga_update_row ) static MC6845_UPDATE_ROW( t1000_gfx_1bpp_update_row ) { pc_t1t_device *t1t = downcast<pc_t1t_device *>(device->owner()); - const rgb_t *palette = palette_entry_list_raw(bitmap.palette()); + const rgb_t *palette = bitmap.palette()->entry_list_raw(); UINT32 *p = &bitmap.pix32(y); UINT8 *vid = t1t->m_displayram + ( ra << 13 ); UINT8 fg = t1t->m_palette_base + t1t->m_reg.data[0x11]; diff --git a/src/mess/video/poisk1.c b/src/mess/video/poisk1.c index 4ba28ee83b0..f7c6b5bd6dc 100644 --- a/src/mess/video/poisk1.c +++ b/src/mess/video/poisk1.c @@ -184,7 +184,7 @@ void p1_state::set_palette_luts(void) POISK1_UPDATE_ROW( p1_state::cga_gfx_2bpp_update_row ) { - const rgb_t *palette = palette_entry_list_raw(bitmap.palette()); + const rgb_t *palette = bitmap.palette()->entry_list_raw(); UINT32 *p = &bitmap.pix32(ra); UINT16 odd, offset; int i; @@ -211,7 +211,7 @@ POISK1_UPDATE_ROW( p1_state::cga_gfx_2bpp_update_row ) POISK1_UPDATE_ROW( p1_state::cga_gfx_1bpp_update_row ) { - const rgb_t *palette = palette_entry_list_raw(bitmap.palette()); + const rgb_t *palette = bitmap.palette()->entry_list_raw(); UINT32 *p = &bitmap.pix32(ra); UINT8 fg = 15, bg = BG_COLOR(m_video.color_select_68); UINT16 odd, offset; @@ -243,7 +243,7 @@ POISK1_UPDATE_ROW( p1_state::cga_gfx_1bpp_update_row ) POISK1_UPDATE_ROW( p1_state::poisk1_gfx_1bpp_update_row ) { - const rgb_t *palette = palette_entry_list_raw(bitmap.palette()); + const rgb_t *palette = bitmap.palette()->entry_list_raw(); UINT32 *p = &bitmap.pix32(ra); UINT8 fg, bg = BG_COLOR(m_video.color_select_68); UINT16 odd, offset; diff --git a/src/mess/video/radio86.c b/src/mess/video/radio86.c index 50523c8c28d..26fc4e1d092 100644 --- a/src/mess/video/radio86.c +++ b/src/mess/video/radio86.c @@ -15,7 +15,7 @@ I8275_DISPLAY_PIXELS(radio86_display_pixels) { radio86_state *state = device->machine().driver_data<radio86_state>(); int i; - const rgb_t *palette = palette_entry_list_raw(bitmap.palette()); + const rgb_t *palette = bitmap.palette()->entry_list_raw(); const UINT8 *charmap = state->m_charmap; UINT8 pixels = charmap[(linecount & 7) + (charcode << 3)] ^ 0xff; if (vsp) { @@ -37,7 +37,7 @@ I8275_DISPLAY_PIXELS(mikrosha_display_pixels) { radio86_state *state = device->machine().driver_data<radio86_state>(); int i; - const rgb_t *palette = palette_entry_list_raw(bitmap.palette()); + const rgb_t *palette = bitmap.palette()->entry_list_raw(); const UINT8 *charmap = state->m_charmap + (state->m_mikrosha_font_page & 1) * 0x400; UINT8 pixels = charmap[(linecount & 7) + (charcode << 3)] ^ 0xff; if (vsp) { @@ -58,7 +58,7 @@ I8275_DISPLAY_PIXELS(apogee_display_pixels) { radio86_state *state = device->machine().driver_data<radio86_state>(); int i; - const rgb_t *palette = palette_entry_list_raw(bitmap.palette()); + const rgb_t *palette = bitmap.palette()->entry_list_raw(); const UINT8 *charmap = state->m_charmap + (gpa & 1) * 0x400; UINT8 pixels = charmap[(linecount & 7) + (charcode << 3)] ^ 0xff; if (vsp) { @@ -79,7 +79,7 @@ I8275_DISPLAY_PIXELS(partner_display_pixels) { radio86_state *state = device->machine().driver_data<radio86_state>(); int i; - const rgb_t *palette = palette_entry_list_raw(bitmap.palette()); + const rgb_t *palette = bitmap.palette()->entry_list_raw(); const UINT8 *charmap = state->m_charmap + 0x400 * (gpa * 2 + hlgt); UINT8 pixels = charmap[(linecount & 7) + (charcode << 3)] ^ 0xff; if (vsp) { diff --git a/src/mess/video/super80.c b/src/mess/video/super80.c index 54aefacf773..7c530455546 100644 --- a/src/mess/video/super80.c +++ b/src/mess/video/super80.c @@ -389,7 +389,7 @@ UINT32 super80_state::screen_update_super80v(screen_device &screen, bitmap_rgb32 MC6845_UPDATE_ROW( super80v_update_row ) { super80_state *state = device->machine().driver_data<super80_state>(); - const rgb_t *palette = palette_entry_list_raw(bitmap.palette()); + const rgb_t *palette = bitmap.palette()->entry_list_raw(); UINT8 chr,col,gfx,fg,bg=0; UINT16 mem,x; UINT32 *p = &bitmap.pix32(y); |