static void ui_gfx_count_devices(running_machine &machine, ui_gfx_state &state) { // count the palette devices state.palette.devcount = palette_device_iterator(machine.root_device()).count(); // set the pointer to the first palette if (state.palette.devcount > 0) palette_set_device(machine, state); // count the gfx devices state.gfxset.devcount = 0; for (device_gfx_interface &interface : gfx_interface_iterator(machine.root_device())) { // count the gfx sets in each device, skipping devices with none UINT8 count = 0; while (count < MAX_GFX_ELEMENTS && interface.gfx(count) != nullptr) count++; // count = index of first nullptr if (count > 0) { state.gfxdev[state.gfxset.devcount].interface = &interface; state.gfxdev[state.gfxset.devcount].setcount = count; if (++state.gfxset.devcount == MAX_GFX_DECODERS) break; } } state.started = true; }
static void ui_gfx_count_devices(running_machine &machine, ui_gfx_state &state) { // count the palette devices state.palette.devcount = palette_interface_iterator(machine.root_device()).count(); // set the pointer to the first palette if (state.palette.devcount > 0) palette_set_device(machine, state); // count the gfx devices state.gfxset.devcount = 0; for (device_gfx_interface &interface : gfx_interface_iterator(machine.root_device())) { // count the gfx sets in each device, skipping devices with none uint8_t count = 0; while (count < MAX_GFX_ELEMENTS && interface.gfx(count) != nullptr) count++; // count = index of first nullptr if (count > 0) { state.gfxdev[state.gfxset.devcount].interface = &interface; state.gfxdev[state.gfxset.devcount].setcount = count; for (uint8_t slot = 0; slot != count; slot++) { auto gfx = interface.gfx(slot); if (gfx->has_palette()) { state.gfxdev[state.gfxset.devcount].palette[slot] = &gfx->palette(); state.gfxdev[state.gfxset.devcount].color_count[slot] = gfx->colors(); } else { state.gfxdev[state.gfxset.devcount].palette[slot] = state.palette.interface; state.gfxdev[state.gfxset.devcount].color_count[slot] = state.palette.interface->entries() / gfx->granularity(); if (!state.gfxdev[state.gfxset.devcount].color_count[slot]) state.gfxdev[state.gfxset.devcount].color_count[slot] = 1; } } if (++state.gfxset.devcount == MAX_GFX_DECODERS) break; } } state.started = true; }