mirror of
https://github.com/holub/mame
synced 2025-05-29 17:13:05 +03:00
frontend: Recovered precious vertical space for system/software names!
Reduced the height of the bottom info panel by one line. The system shortname or list/software name tuple are now only displayed in the info box on the right. It's a bit out-of-the-way, but it's not something you need to see all the time. The main reason for having the quit or return to previous menu item always visible is to make it easy for someone to quit if they only have a mouse. However, we don't need waste space on the menu for this when we have a toolbar. Users without a mouse can exit using the keyboard/controller UI Cancel input (given how important this is, it's unlikely they won't have it mapped to something usable). There's now a toolbar button on the extreme right for returning to the previous menu or quitting. The tooltip and icon are appropriately context-sensitive. This recovers one line on the system selection menu, and two on the software selection menu since the separator is no longer needed. Replaced the toolbar icons bitmaps with SVGs. Colours/shapes may be tweaked before the release if people have good suggestions Flipped the simple system selection menu so the description is on the left. Moved the handling of special cases for the final menu item out of the base menu class. It's still hacky having it handled there at all, but it's less hacky without if menus that want to do something different can do it themselves.
This commit is contained in:
parent
1eb49fc86d
commit
fc906d7a17
@ -13,10 +13,13 @@
|
||||
|
||||
#include "ui/moptions.h"
|
||||
|
||||
#include "corestr.h"
|
||||
#include "language.h"
|
||||
|
||||
#include "drivenum.h"
|
||||
#include "softlist_dev.h"
|
||||
|
||||
#include "corestr.h"
|
||||
|
||||
#include <algorithm>
|
||||
#include <cstring>
|
||||
#include <iterator>
|
||||
@ -262,6 +265,14 @@ favorite_manager::favorite_manager(ui_options &options)
|
||||
tmpmatches.devicetype = chartrimcarriage(readbuf);
|
||||
file.gets(readbuf, std::size(readbuf));
|
||||
tmpmatches.available = atoi(readbuf);
|
||||
|
||||
// need to populate this, it isn't displayed anywhere else
|
||||
tmpmatches.infotext.append(_("swlist-info", "Software list/item"));
|
||||
tmpmatches.infotext.append(1, '\n');
|
||||
tmpmatches.infotext.append(tmpmatches.listname);
|
||||
tmpmatches.infotext.append(1, ':');
|
||||
tmpmatches.infotext.append(tmpmatches.shortname);
|
||||
|
||||
m_favorites.emplace(std::move(tmpmatches));
|
||||
}
|
||||
file.close();
|
||||
|
@ -46,6 +46,39 @@
|
||||
|
||||
namespace ui {
|
||||
|
||||
enum : unsigned {
|
||||
INPUT_GROUPS,
|
||||
INPUT_SPECIFIC,
|
||||
SETTINGS_DIP_SWITCHES,
|
||||
SETTINGS_DRIVER_CONFIG,
|
||||
ANALOG,
|
||||
BOOKKEEPING,
|
||||
GAME_INFO,
|
||||
WARN_INFO,
|
||||
IMAGE_MENU_IMAGE_INFO,
|
||||
IMAGE_MENU_FILE_MANAGER,
|
||||
TAPE_CONTROL,
|
||||
SLOT_DEVICES,
|
||||
NETWORK_DEVICES,
|
||||
KEYBOARD_MODE,
|
||||
SLIDERS,
|
||||
VIDEO_TARGETS,
|
||||
VIDEO_OPTIONS,
|
||||
CROSSHAIR,
|
||||
CHEAT,
|
||||
PLUGINS,
|
||||
BIOS_SELECTION,
|
||||
BARCODE_READ,
|
||||
PTY_INFO,
|
||||
EXTERNAL_DATS,
|
||||
ADD_FAVORITE,
|
||||
REMOVE_FAVORITE,
|
||||
ABOUT,
|
||||
QUIT_GAME,
|
||||
DISMISS,
|
||||
SELECT_GAME
|
||||
};
|
||||
|
||||
/***************************************************************************
|
||||
MENU HANDLERS
|
||||
***************************************************************************/
|
||||
@ -56,6 +89,7 @@ namespace ui {
|
||||
|
||||
menu_main::menu_main(mame_ui_manager &mui, render_container &container) : menu(mui, container)
|
||||
{
|
||||
set_needs_prev_menu_item(false);
|
||||
}
|
||||
|
||||
void menu_main::populate(float &customtop, float &custombottom)
|
||||
@ -143,7 +177,15 @@ void menu_main::populate(float &customtop, float &custombottom)
|
||||
|
||||
// item_append(_("Quit from Machine"), 0, (void *)QUIT_GAME);
|
||||
|
||||
item_append(_("Select New Machine"), 0, (void *)SELECT_GAME);
|
||||
if (machine().phase() == machine_phase::INIT)
|
||||
{
|
||||
item_append(_("Start Machine"), 0, (void *)DISMISS);
|
||||
}
|
||||
else
|
||||
{
|
||||
item_append(_("Select New Machine"), 0, (void *)SELECT_GAME);
|
||||
item_append(_("Return to Machine"), 0, (void *)DISMISS);
|
||||
}
|
||||
}
|
||||
|
||||
menu_main::~menu_main()
|
||||
@ -159,7 +201,7 @@ void menu_main::handle()
|
||||
/* process the menu */
|
||||
const event *menu_event = process(0);
|
||||
if (menu_event != nullptr && menu_event->iptkey == IPT_UI_SELECT) {
|
||||
switch((long long)(menu_event->itemref)) {
|
||||
switch(uintptr_t(menu_event->itemref)) {
|
||||
case INPUT_GROUPS:
|
||||
menu::stack_push<menu_input_groups>(ui(), container());
|
||||
break;
|
||||
@ -282,6 +324,10 @@ void menu_main::handle()
|
||||
ui().request_quit();
|
||||
break;
|
||||
|
||||
case DISMISS:
|
||||
stack_pop();
|
||||
return;
|
||||
|
||||
default:
|
||||
fatalerror("ui::menu_main::handle - unknown reference\n");
|
||||
}
|
||||
|
@ -230,6 +230,7 @@ menu::menu(mame_ui_manager &mui, render_container &container)
|
||||
, m_visible_items(0)
|
||||
, m_global_state(get_global_state(mui.machine()))
|
||||
, m_special_main_menu(false)
|
||||
, m_needs_prev_menu_item(true)
|
||||
, m_ui(mui)
|
||||
, m_container(container)
|
||||
, m_parent()
|
||||
@ -321,12 +322,9 @@ void menu::item_append(menu_item_type type, uint32_t flags)
|
||||
|
||||
void menu::item_append(std::string &&text, std::string &&subtext, uint32_t flags, void *ref, menu_item_type type)
|
||||
{
|
||||
// only allow multiline as the first item
|
||||
if ((flags & FLAG_MULTILINE) != 0)
|
||||
if ((flags & FLAG_MULTILINE) != 0) // only allow multiline as the first item
|
||||
assert(m_items.size() == 1);
|
||||
|
||||
// only allow a single multi-line item
|
||||
else if (m_items.size() >= 2)
|
||||
else if (m_items.size() >= 2) // only allow a single multi-line item
|
||||
assert((m_items[0].flags & FLAG_MULTILINE) == 0);
|
||||
|
||||
// allocate a new item and populate it
|
||||
@ -339,7 +337,7 @@ void menu::item_append(std::string &&text, std::string &&subtext, uint32_t flags
|
||||
|
||||
// append to array
|
||||
auto index = m_items.size();
|
||||
if (!m_items.empty())
|
||||
if (!m_items.empty() && m_needs_prev_menu_item)
|
||||
{
|
||||
m_items.emplace(m_items.end() - 1, std::move(pitem));
|
||||
--index;
|
||||
@ -892,7 +890,7 @@ void menu::handle_events(uint32_t flags, event &ev)
|
||||
{
|
||||
m_selected = m_hover;
|
||||
ev.iptkey = IPT_UI_SELECT;
|
||||
if (is_last_selected())
|
||||
if (is_last_selected() && m_needs_prev_menu_item)
|
||||
{
|
||||
ev.iptkey = IPT_UI_CANCEL;
|
||||
stack_pop();
|
||||
@ -976,7 +974,7 @@ void menu::handle_keys(uint32_t flags, int &iptkey)
|
||||
// if we hit select, return true or pop the stack, depending on the item
|
||||
if (exclusive_input_pressed(iptkey, IPT_UI_SELECT, 0))
|
||||
{
|
||||
if (is_last_selected())
|
||||
if (is_last_selected() && m_needs_prev_menu_item)
|
||||
{
|
||||
iptkey = IPT_UI_CANCEL;
|
||||
stack_pop();
|
||||
@ -1162,27 +1160,8 @@ void menu::do_handle()
|
||||
if (m_items.empty())
|
||||
{
|
||||
// add an item to return - this is a really hacky way of doing this
|
||||
if (!m_parent)
|
||||
{
|
||||
if (machine().phase() == machine_phase::INIT)
|
||||
item_append(_("Start Machine"), 0, nullptr);
|
||||
else
|
||||
item_append(_("Return to Machine"), 0, nullptr);
|
||||
}
|
||||
else if (m_parent->is_special_main_menu())
|
||||
{
|
||||
if (machine().options().ui() == emu_options::UI_SIMPLE)
|
||||
item_append(_("Exit"), 0, nullptr);
|
||||
else
|
||||
item_append(_("Exit"), FLAG_LEFT_ARROW | FLAG_RIGHT_ARROW, nullptr);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (machine().options().ui() != emu_options::UI_SIMPLE && stack_has_special_main_menu())
|
||||
item_append(_("Return to Previous Menu"), FLAG_LEFT_ARROW | FLAG_RIGHT_ARROW, nullptr);
|
||||
else
|
||||
item_append(_("Return to Previous Menu"), 0, nullptr);
|
||||
}
|
||||
if (m_needs_prev_menu_item)
|
||||
item_append(_("Return to Previous Menu"), 0, nullptr);
|
||||
|
||||
// let implementation add other items
|
||||
populate(m_customtop, m_custombottom);
|
||||
|
@ -50,38 +50,6 @@ public:
|
||||
FLAG_COLOR_BOX = 1U << 8
|
||||
};
|
||||
|
||||
enum : unsigned {
|
||||
INPUT_GROUPS,
|
||||
INPUT_SPECIFIC,
|
||||
SETTINGS_DIP_SWITCHES,
|
||||
SETTINGS_DRIVER_CONFIG,
|
||||
ANALOG,
|
||||
BOOKKEEPING,
|
||||
GAME_INFO,
|
||||
WARN_INFO,
|
||||
IMAGE_MENU_IMAGE_INFO,
|
||||
IMAGE_MENU_FILE_MANAGER,
|
||||
TAPE_CONTROL,
|
||||
SLOT_DEVICES,
|
||||
NETWORK_DEVICES,
|
||||
KEYBOARD_MODE,
|
||||
SLIDERS,
|
||||
VIDEO_TARGETS,
|
||||
VIDEO_OPTIONS,
|
||||
CROSSHAIR,
|
||||
CHEAT,
|
||||
PLUGINS,
|
||||
SELECT_GAME,
|
||||
BIOS_SELECTION,
|
||||
BARCODE_READ,
|
||||
PTY_INFO,
|
||||
EXTERNAL_DATS,
|
||||
ADD_FAVORITE,
|
||||
REMOVE_FAVORITE,
|
||||
QUIT_GAME,
|
||||
ABOUT
|
||||
};
|
||||
|
||||
virtual ~menu();
|
||||
|
||||
// append a new item to the end of the menu
|
||||
@ -171,6 +139,7 @@ protected:
|
||||
running_machine &machine() const { return m_ui.machine(); }
|
||||
render_container &container() const { return m_container; }
|
||||
|
||||
void set_needs_prev_menu_item(bool needs) { m_needs_prev_menu_item = needs; }
|
||||
void reset(reset_options options);
|
||||
void reset_parent(reset_options options) { m_parent->reset(options); }
|
||||
|
||||
@ -390,6 +359,7 @@ protected: // TODO: remove need to expose these
|
||||
private:
|
||||
global_state_ptr const m_global_state;
|
||||
bool m_special_main_menu;
|
||||
bool m_needs_prev_menu_item;
|
||||
mame_ui_manager &m_ui; // UI we are attached to
|
||||
render_container &m_container; // render_container we render to
|
||||
std::unique_ptr<menu> m_parent; // pointer to parent menu
|
||||
|
@ -853,21 +853,20 @@ void menu_select_game::populate(float &customtop, float &custombottom)
|
||||
});
|
||||
}
|
||||
|
||||
item_append(menu_item_type::SEPARATOR, FLAGS_UI);
|
||||
|
||||
// add special items
|
||||
if (stack_has_special_main_menu())
|
||||
{
|
||||
item_append(menu_item_type::SEPARATOR, FLAGS_UI);
|
||||
item_append(_("Configure Options"), FLAGS_UI, (void *)(uintptr_t)CONF_OPTS);
|
||||
item_append(_("Configure Machine"), FLAGS_UI, (void *)(uintptr_t)CONF_MACHINE);
|
||||
skip_main_items = 2;
|
||||
skip_main_items = 3;
|
||||
}
|
||||
else
|
||||
skip_main_items = 0;
|
||||
|
||||
// configure the custom rendering
|
||||
customtop = 3.0f * ui().get_line_height() + 5.0f * ui().box_tb_border();
|
||||
custombottom = 5.0f * ui().get_line_height() + 3.0f * ui().box_tb_border();
|
||||
custombottom = 4.0f * ui().get_line_height() + 3.0f * ui().box_tb_border();
|
||||
|
||||
// reselect prior game launched, if any
|
||||
if (old_item_selected != -1)
|
||||
@ -1289,194 +1288,6 @@ void menu_select_game::populate_search()
|
||||
[] (auto const &lhs, auto const &rhs) { return lhs.first < rhs.first; });
|
||||
}
|
||||
|
||||
//-------------------------------------------------
|
||||
// generate general info
|
||||
//-------------------------------------------------
|
||||
|
||||
void menu_select_game::general_info(ui_system_info const &system, std::string &buffer)
|
||||
{
|
||||
game_driver const &driver(*system.driver);
|
||||
system_flags const &flags(get_system_flags(driver));
|
||||
std::ostringstream str;
|
||||
|
||||
str << "#j2\n";
|
||||
|
||||
util::stream_format(str, _("Romset\t%1$-.100s\n"), driver.name);
|
||||
util::stream_format(str, _("Year\t%1$s\n"), driver.year);
|
||||
util::stream_format(str, _("Manufacturer\t%1$-.100s\n"), driver.manufacturer);
|
||||
|
||||
int cloneof = driver_list::non_bios_clone(driver);
|
||||
if (cloneof != -1)
|
||||
util::stream_format(str, _("Driver is Clone of\t%1$-.100s\n"), system.parent);
|
||||
else
|
||||
str << _("Driver is Parent\t\n");
|
||||
|
||||
if (flags.has_analog())
|
||||
str << _("Analog Controls\tYes\n");
|
||||
if (flags.has_keyboard())
|
||||
str << _("Keyboard Inputs\tYes\n");
|
||||
|
||||
if (flags.machine_flags() & machine_flags::NOT_WORKING)
|
||||
str << _("Overall\tNOT WORKING\n");
|
||||
else if ((flags.unemulated_features() | flags.imperfect_features()) & device_t::feature::PROTECTION)
|
||||
str << _("Overall\tUnemulated Protection\n");
|
||||
else
|
||||
str << _("Overall\tWorking\n");
|
||||
|
||||
if (flags.unemulated_features() & device_t::feature::GRAPHICS)
|
||||
str << _("Graphics\tUnimplemented\n");
|
||||
else if (flags.unemulated_features() & device_t::feature::PALETTE)
|
||||
str << _("Graphics\tWrong Colors\n");
|
||||
else if (flags.imperfect_features() & device_t::feature::PALETTE)
|
||||
str << _("Graphics\tImperfect Colors\n");
|
||||
else if (flags.imperfect_features() & device_t::feature::GRAPHICS)
|
||||
str << _("Graphics\tImperfect\n");
|
||||
else
|
||||
str << _("Graphics\tOK\n");
|
||||
|
||||
if (flags.machine_flags() & machine_flags::NO_SOUND_HW)
|
||||
str << _("Sound\tNone\n");
|
||||
else if (flags.unemulated_features() & device_t::feature::SOUND)
|
||||
str << _("Sound\tUnimplemented\n");
|
||||
else if (flags.imperfect_features() & device_t::feature::SOUND)
|
||||
str << _("Sound\tImperfect\n");
|
||||
else
|
||||
str << _("Sound\tOK\n");
|
||||
|
||||
if (flags.unemulated_features() & device_t::feature::CAPTURE)
|
||||
str << _("Capture\tUnimplemented\n");
|
||||
else if (flags.imperfect_features() & device_t::feature::CAPTURE)
|
||||
str << _("Capture\tImperfect\n");
|
||||
|
||||
if (flags.unemulated_features() & device_t::feature::CAMERA)
|
||||
str << _("Camera\tUnimplemented\n");
|
||||
else if (flags.imperfect_features() & device_t::feature::CAMERA)
|
||||
str << _("Camera\tImperfect\n");
|
||||
|
||||
if (flags.unemulated_features() & device_t::feature::MICROPHONE)
|
||||
str << _("Microphone\tUnimplemented\n");
|
||||
else if (flags.imperfect_features() & device_t::feature::MICROPHONE)
|
||||
str << _("Microphone\tImperfect\n");
|
||||
|
||||
if (flags.unemulated_features() & device_t::feature::CONTROLS)
|
||||
str << _("Controls\tUnimplemented\n");
|
||||
else if (flags.imperfect_features() & device_t::feature::CONTROLS)
|
||||
str << _("Controls\tImperfect\n");
|
||||
|
||||
if (flags.unemulated_features() & device_t::feature::KEYBOARD)
|
||||
str << _("Keyboard\tUnimplemented\n");
|
||||
else if (flags.imperfect_features() & device_t::feature::KEYBOARD)
|
||||
str << _("Keyboard\tImperfect\n");
|
||||
|
||||
if (flags.unemulated_features() & device_t::feature::MOUSE)
|
||||
str << _("Mouse\tUnimplemented\n");
|
||||
else if (flags.imperfect_features() & device_t::feature::MOUSE)
|
||||
str << _("Mouse\tImperfect\n");
|
||||
|
||||
if (flags.unemulated_features() & device_t::feature::MEDIA)
|
||||
str << _("Media\tUnimplemented\n");
|
||||
else if (flags.imperfect_features() & device_t::feature::MEDIA)
|
||||
str << _("Media\tImperfect\n");
|
||||
|
||||
if (flags.unemulated_features() & device_t::feature::DISK)
|
||||
str << _("Disk\tUnimplemented\n");
|
||||
else if (flags.imperfect_features() & device_t::feature::DISK)
|
||||
str << _("Disk\tImperfect\n");
|
||||
|
||||
if (flags.unemulated_features() & device_t::feature::PRINTER)
|
||||
str << _("Printer\tUnimplemented\n");
|
||||
else if (flags.imperfect_features() & device_t::feature::PRINTER)
|
||||
str << _("Printer\tImperfect\n");
|
||||
|
||||
if (flags.unemulated_features() & device_t::feature::TAPE)
|
||||
str << _("Mag. Tape\tUnimplemented\n");
|
||||
else if (flags.imperfect_features() & device_t::feature::TAPE)
|
||||
str << _("Mag. Tape\tImperfect\n");
|
||||
|
||||
if (flags.unemulated_features() & device_t::feature::PUNCH)
|
||||
str << _("Punch Tape\tUnimplemented\n");
|
||||
else if (flags.imperfect_features() & device_t::feature::PUNCH)
|
||||
str << _("Punch Tape\tImperfect\n");
|
||||
|
||||
if (flags.unemulated_features() & device_t::feature::DRUM)
|
||||
str << _("Mag. Drum\tUnimplemented\n");
|
||||
else if (flags.imperfect_features() & device_t::feature::DRUM)
|
||||
str << _("Mag. Drum\tImperfect\n");
|
||||
|
||||
if (flags.unemulated_features() & device_t::feature::ROM)
|
||||
str << _("(EP)ROM\tUnimplemented\n");
|
||||
else if (flags.imperfect_features() & device_t::feature::ROM)
|
||||
str << _("(EP)ROM\tImperfect\n");
|
||||
|
||||
if (flags.unemulated_features() & device_t::feature::COMMS)
|
||||
str << _("Communications\tUnimplemented\n");
|
||||
else if (flags.imperfect_features() & device_t::feature::COMMS)
|
||||
str << _("Communications\tImperfect\n");
|
||||
|
||||
if (flags.unemulated_features() & device_t::feature::LAN)
|
||||
str << _("LAN\tUnimplemented\n");
|
||||
else if (flags.imperfect_features() & device_t::feature::LAN)
|
||||
str << _("LAN\tImperfect\n");
|
||||
|
||||
if (flags.unemulated_features() & device_t::feature::WAN)
|
||||
str << _("WAN\tUnimplemented\n");
|
||||
else if (flags.imperfect_features() & device_t::feature::WAN)
|
||||
str << _("WAN\tImperfect\n");
|
||||
|
||||
if (flags.unemulated_features() & device_t::feature::TIMING)
|
||||
str << _("Timing\tUnimplemented\n");
|
||||
else if (flags.imperfect_features() & device_t::feature::TIMING)
|
||||
str << _("Timing\tImperfect\n");
|
||||
|
||||
str << ((flags.machine_flags() & machine_flags::MECHANICAL) ? _("Mechanical Machine\tYes\n") : _("Mechanical Machine\tNo\n"));
|
||||
str << ((flags.machine_flags() & machine_flags::REQUIRES_ARTWORK) ? _("Requires Artwork\tYes\n") : _("Requires Artwork\tNo\n"));
|
||||
str << ((flags.machine_flags() & machine_flags::CLICKABLE_ARTWORK) ? _("Requires Clickable Artwork\tYes\n") : _("Requires Clickable Artwork\tNo\n"));
|
||||
if (flags.machine_flags() & machine_flags::NO_COCKTAIL)
|
||||
str << _("Support Cocktail\tNo\n");
|
||||
str << ((flags.machine_flags() & machine_flags::IS_BIOS_ROOT) ? _("Driver is BIOS\tYes\n") : _("Driver is BIOS\tNo\n"));
|
||||
str << ((flags.machine_flags() & machine_flags::SUPPORTS_SAVE) ? _("Support Save\tYes\n") : _("Support Save\tNo\n"));
|
||||
str << ((flags.machine_flags() & ORIENTATION_SWAP_XY) ? _("Screen Orientation\tVertical\n") : _("Screen Orientation\tHorizontal\n"));
|
||||
bool found = false;
|
||||
for (romload::region const ®ion : romload::entries(driver.rom).get_regions())
|
||||
{
|
||||
if (region.is_diskdata())
|
||||
{
|
||||
found = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
str << (found ? _("Requires CHD\tYes\n") : _("Requires CHD\tNo\n"));
|
||||
|
||||
// audit the game first to see if we're going to work
|
||||
if (ui().options().info_audit())
|
||||
{
|
||||
driver_enumerator enumerator(machine().options(), driver);
|
||||
enumerator.next();
|
||||
media_auditor auditor(enumerator);
|
||||
media_auditor::summary summary = auditor.audit_media(AUDIT_VALIDATE_FAST);
|
||||
media_auditor::summary summary_samples = auditor.audit_samples();
|
||||
|
||||
// if everything looks good, schedule the new driver
|
||||
if (audit_passed(summary))
|
||||
str << _("ROM Audit Result\tOK\n");
|
||||
else
|
||||
str << _("ROM Audit Result\tBAD\n");
|
||||
|
||||
if (summary_samples == media_auditor::NONE_NEEDED)
|
||||
str << _("Samples Audit Result\tNone Needed\n");
|
||||
else if (audit_passed(summary_samples))
|
||||
str << _("Samples Audit Result\tOK\n");
|
||||
else
|
||||
str << _("Samples Audit Result\tBAD\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
str << _("ROM Audit \tDisabled\nSamples Audit \tDisabled\n");
|
||||
}
|
||||
|
||||
buffer = str.str();
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// get (possibly cached) icon texture
|
||||
|
@ -82,9 +82,6 @@ private:
|
||||
bool load_available_machines();
|
||||
void load_custom_filters();
|
||||
|
||||
// General info
|
||||
virtual void general_info(ui_system_info const &system, std::string &buffer) override;
|
||||
|
||||
// handlers
|
||||
void inkey_select(const event *menu_event);
|
||||
void inkey_select_favorite(const event *menu_event);
|
||||
|
@ -36,6 +36,7 @@
|
||||
#include "uiinput.h"
|
||||
#include "luaengine.h"
|
||||
|
||||
#include "util/nanosvg.h"
|
||||
#include "util/path.h"
|
||||
|
||||
#include <algorithm>
|
||||
@ -93,7 +94,7 @@ std::pair<char const *, char const *> const arts_info[] =
|
||||
};
|
||||
|
||||
char const *const hover_msg[] = {
|
||||
N_("Add or remove favorites"),
|
||||
N_("Add or remove favorite"),
|
||||
N_("Export displayed list to file"),
|
||||
N_("Show DATs view"),
|
||||
};
|
||||
@ -439,10 +440,8 @@ menu_select_launch::cache::cache(running_machine &machine)
|
||||
, m_no_avail_bitmap(256, 256)
|
||||
, m_star_bitmap(32, 32)
|
||||
, m_star_texture(nullptr, machine.render())
|
||||
, m_toolbar_bitmap()
|
||||
, m_sw_toolbar_bitmap()
|
||||
, m_toolbar_texture()
|
||||
, m_sw_toolbar_texture()
|
||||
, m_toolbar_bitmaps()
|
||||
, m_toolbar_textures()
|
||||
{
|
||||
render_manager &render(machine.render());
|
||||
|
||||
@ -455,37 +454,8 @@ menu_select_launch::cache::cache(running_machine &machine)
|
||||
m_star_texture.reset(render.texture_alloc());
|
||||
m_star_texture->set_bitmap(m_star_bitmap, m_star_bitmap.cliprect(), TEXFORMAT_ARGB32);
|
||||
|
||||
m_toolbar_bitmap.reserve(UI_TOOLBAR_BUTTONS);
|
||||
m_sw_toolbar_bitmap.reserve(UI_TOOLBAR_BUTTONS);
|
||||
m_toolbar_texture.reserve(UI_TOOLBAR_BUTTONS);
|
||||
m_sw_toolbar_texture.reserve(UI_TOOLBAR_BUTTONS);
|
||||
|
||||
for (std::size_t i = 0; i < UI_TOOLBAR_BUTTONS; ++i)
|
||||
{
|
||||
m_toolbar_bitmap.emplace_back(32, 32);
|
||||
m_sw_toolbar_bitmap.emplace_back(32, 32);
|
||||
m_toolbar_texture.emplace_back(render.texture_alloc(), render);
|
||||
m_sw_toolbar_texture.emplace_back(render.texture_alloc(), render);
|
||||
|
||||
std::memcpy(&m_toolbar_bitmap.back().pix(0), toolbar_bitmap_bmp[i], 32 * 32 * sizeof(uint32_t));
|
||||
if (m_toolbar_bitmap.back().valid())
|
||||
m_toolbar_texture.back()->set_bitmap(m_toolbar_bitmap.back(), m_toolbar_bitmap.back().cliprect(), TEXFORMAT_ARGB32);
|
||||
else
|
||||
m_toolbar_bitmap.back().reset();
|
||||
|
||||
if ((i == 0U) || (i == 2U))
|
||||
{
|
||||
std::memcpy(&m_sw_toolbar_bitmap.back().pix(0), toolbar_bitmap_bmp[i], 32 * 32 * sizeof(uint32_t));
|
||||
if (m_sw_toolbar_bitmap.back().valid())
|
||||
m_sw_toolbar_texture.back()->set_bitmap(m_sw_toolbar_bitmap.back(), m_sw_toolbar_bitmap.back().cliprect(), TEXFORMAT_ARGB32);
|
||||
else
|
||||
m_sw_toolbar_bitmap.back().reset();
|
||||
}
|
||||
else
|
||||
{
|
||||
m_sw_toolbar_bitmap.back().reset();
|
||||
}
|
||||
}
|
||||
m_toolbar_bitmaps.resize(UI_TOOLBAR_BUTTONS);
|
||||
m_toolbar_textures.reserve(UI_TOOLBAR_BUTTONS);
|
||||
}
|
||||
|
||||
|
||||
@ -494,6 +464,58 @@ menu_select_launch::cache::~cache()
|
||||
}
|
||||
|
||||
|
||||
void menu_select_launch::cache::cache_toolbar(running_machine &machine, float width, float height)
|
||||
{
|
||||
// not bothering to transform for non-square pixels greatly simplifies this
|
||||
render_manager &render(machine.render());
|
||||
render_target const &target(render.ui_target());
|
||||
int32_t const pix_size(std::ceil(std::max(width * target.width(), height * target.height())));
|
||||
if (m_toolbar_textures.empty() || (m_toolbar_bitmaps[0].width() != pix_size) || (m_toolbar_bitmaps[0].height() != pix_size))
|
||||
{
|
||||
m_toolbar_textures.clear();
|
||||
util::nsvg_rasterizer_ptr rasterizer(nsvgCreateRasterizer());
|
||||
std::string xml;
|
||||
for (unsigned i = 0; UI_TOOLBAR_BUTTONS > i; ++i)
|
||||
{
|
||||
// parse SVG and calculate scale
|
||||
xml = toolbar_icons_svg[i];
|
||||
util::nsvg_image_ptr svg(nsvgParse(xml.data(), "px", 72));
|
||||
float const xscale(float(pix_size) / svg->width);
|
||||
float const yscale(float(pix_size) / svg->height);
|
||||
float const drawscale((std::max)(xscale, yscale));
|
||||
|
||||
// rasterise the SVG and clear it out of memory
|
||||
bitmap_argb32 &bitmap(m_toolbar_bitmaps[i]);
|
||||
bitmap.resize(pix_size, pix_size);
|
||||
nsvgRasterize(
|
||||
rasterizer.get(),
|
||||
svg.get(),
|
||||
0, 0, drawscale,
|
||||
reinterpret_cast<unsigned char *>(&bitmap.pix(0)),
|
||||
pix_size, pix_size,
|
||||
bitmap.rowbytes());
|
||||
svg.reset();
|
||||
|
||||
// correct colour format
|
||||
for (int32_t y = 0; bitmap.height() > y; ++y)
|
||||
{
|
||||
uint32_t *dst(&bitmap.pix(y));
|
||||
for (int32_t x = 0; bitmap.width() > x; ++x, ++dst)
|
||||
{
|
||||
u8 const *const src(reinterpret_cast<u8 const *>(dst));
|
||||
rgb_t const d(src[3], src[0], src[1], src[2]);
|
||||
*dst = d;
|
||||
}
|
||||
}
|
||||
|
||||
// make a texture
|
||||
render_texture &texture(*m_toolbar_textures.emplace_back(render.texture_alloc(), render));
|
||||
texture.set_bitmap(bitmap, bitmap.cliprect(), TEXFORMAT_ARGB32);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
menu_select_launch::~menu_select_launch()
|
||||
{
|
||||
}
|
||||
@ -523,6 +545,7 @@ menu_select_launch::menu_select_launch(mame_ui_manager &mui, render_container &c
|
||||
, m_image_view(FIRST_VIEW)
|
||||
, m_flags(256)
|
||||
{
|
||||
set_needs_prev_menu_item(false);
|
||||
}
|
||||
|
||||
|
||||
@ -628,7 +651,7 @@ void menu_select_launch::launch_system(mame_ui_manager &mui, game_driver const &
|
||||
|
||||
void menu_select_launch::custom_render(void *selectedref, float top, float bottom, float origx1, float origy1, float origx2, float origy2)
|
||||
{
|
||||
std::string tempbuf[5];
|
||||
std::string tempbuf[4];
|
||||
|
||||
// determine the text for the header
|
||||
make_topbox_text(tempbuf[0], tempbuf[1], tempbuf[2]);
|
||||
@ -681,56 +704,50 @@ void menu_select_launch::custom_render(void *selectedref, float top, float botto
|
||||
tempbuf[3] = _("Supported: Yes");
|
||||
color = UI_GREEN_COLOR;
|
||||
}
|
||||
|
||||
// last line is romset name
|
||||
tempbuf[4] = string_format(_("Software list/item: %1$s:%2$s"), swinfo->listname, swinfo->shortname);
|
||||
}
|
||||
else if (system || (swinfo && swinfo->driver))
|
||||
{
|
||||
game_driver const &driver(system ? *system->driver : *swinfo->driver);
|
||||
isstar = mame_machine_manager::instance()->favorite().is_favorite_system(driver);
|
||||
|
||||
// first line is the ROM set
|
||||
tempbuf[0] = string_format(_("Romset: %1$-.100s"), driver.name);
|
||||
|
||||
// next line is year, manufacturer
|
||||
tempbuf[1] = string_format(_("%1$s, %2$-.100s"), driver.year, driver.manufacturer);
|
||||
// first line is year, manufacturer
|
||||
tempbuf[0] = string_format(_("%1$s, %2$-.100s"), driver.year, driver.manufacturer);
|
||||
|
||||
// next line is clone/parent status
|
||||
int cloneof = driver_list::non_bios_clone(driver);
|
||||
|
||||
if (0 > cloneof)
|
||||
tempbuf[2] = _("Driver is parent");
|
||||
tempbuf[1] = _("Driver is parent");
|
||||
else if (system)
|
||||
tempbuf[2] = string_format(_("Driver is clone of: %1$-.100s"), system->parent);
|
||||
tempbuf[1] = string_format(_("Driver is clone of: %1$-.100s"), system->parent);
|
||||
else
|
||||
tempbuf[2] = string_format(_("Driver is clone of: %1$-.100s"), driver_list::driver(cloneof).type.fullname());
|
||||
tempbuf[1] = string_format(_("Driver is clone of: %1$-.100s"), driver_list::driver(cloneof).type.fullname());
|
||||
|
||||
// next line is overall driver status
|
||||
system_flags const &flags(get_system_flags(driver));
|
||||
if (flags.machine_flags() & machine_flags::NOT_WORKING)
|
||||
tempbuf[3] = _("Overall: NOT WORKING");
|
||||
tempbuf[2] = _("Overall: NOT WORKING");
|
||||
else if ((flags.unemulated_features() | flags.imperfect_features()) & device_t::feature::PROTECTION)
|
||||
tempbuf[3] = _("Overall: Unemulated Protection");
|
||||
tempbuf[2] = _("Overall: Unemulated Protection");
|
||||
else
|
||||
tempbuf[3] = _("Overall: Working");
|
||||
tempbuf[2] = _("Overall: Working");
|
||||
|
||||
// next line is graphics, sound status
|
||||
if (flags.unemulated_features() & device_t::feature::GRAPHICS)
|
||||
tempbuf[4] = _("Graphics: Unimplemented, ");
|
||||
tempbuf[3] = _("Graphics: Unimplemented, ");
|
||||
else if ((flags.unemulated_features() | flags.imperfect_features()) & (device_t::feature::GRAPHICS | device_t::feature::PALETTE))
|
||||
tempbuf[4] = _("Graphics: Imperfect, ");
|
||||
tempbuf[3] = _("Graphics: Imperfect, ");
|
||||
else
|
||||
tempbuf[4] = _("Graphics: OK, ");
|
||||
tempbuf[3] = _("Graphics: OK, ");
|
||||
|
||||
if (driver.flags & machine_flags::NO_SOUND_HW)
|
||||
tempbuf[4].append(_("Sound: None"));
|
||||
tempbuf[3].append(_("Sound: None"));
|
||||
else if (flags.unemulated_features() & device_t::feature::SOUND)
|
||||
tempbuf[4].append(_("Sound: Unimplemented"));
|
||||
tempbuf[3].append(_("Sound: Unimplemented"));
|
||||
else if (flags.imperfect_features() & device_t::feature::SOUND)
|
||||
tempbuf[4].append(_("Sound: Imperfect"));
|
||||
tempbuf[3].append(_("Sound: Imperfect"));
|
||||
else
|
||||
tempbuf[4].append(_("Sound: OK"));
|
||||
tempbuf[3].append(_("Sound: OK"));
|
||||
|
||||
color = flags.status_color();
|
||||
}
|
||||
@ -743,7 +760,6 @@ void menu_select_launch::custom_render(void *selectedref, float top, float botto
|
||||
tempbuf[1] = string_format(_("%1$s %2$s"), emulator_info::get_appname(), build_version);
|
||||
tempbuf[2] = copyright.substr(0, found);
|
||||
tempbuf[3] = copyright.substr(found + 1);
|
||||
tempbuf[4].clear();
|
||||
}
|
||||
|
||||
// draw the footer
|
||||
@ -766,13 +782,16 @@ void menu_select_launch::rotate_focus(int dir)
|
||||
case focused_menu::MAIN:
|
||||
if (selected_index() <= m_available_items)
|
||||
{
|
||||
m_prev_selected = get_selection_ref();
|
||||
if ((0 < dir) || (ui_globals::panels_status == HIDE_BOTH))
|
||||
set_selected_index(m_available_items + 1);
|
||||
else if (ui_globals::panels_status == HIDE_RIGHT_PANEL)
|
||||
set_focus(focused_menu::LEFT);
|
||||
else
|
||||
set_focus(focused_menu::RIGHTBOTTOM);
|
||||
if (skip_main_items || (ui_globals::panels_status != HIDE_BOTH))
|
||||
{
|
||||
m_prev_selected = get_selection_ref();
|
||||
if ((0 < dir) || (ui_globals::panels_status == HIDE_BOTH))
|
||||
set_selected_index(m_available_items + 1);
|
||||
else if (ui_globals::panels_status == HIDE_RIGHT_PANEL)
|
||||
set_focus(focused_menu::LEFT);
|
||||
else
|
||||
set_focus(focused_menu::RIGHTBOTTOM);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -789,7 +808,10 @@ void menu_select_launch::rotate_focus(int dir)
|
||||
if (0 > dir)
|
||||
{
|
||||
set_focus(focused_menu::MAIN);
|
||||
set_selected_index(m_available_items + 1);
|
||||
if (skip_main_items)
|
||||
set_selected_index(m_available_items + 1);
|
||||
else
|
||||
select_prev();
|
||||
}
|
||||
else if (ui_globals::panels_status != HIDE_RIGHT_PANEL)
|
||||
{
|
||||
@ -1165,8 +1187,8 @@ bool menu_select_launch::scale_icon(bitmap_argb32 &&src, texture_and_bitmap &dst
|
||||
float const ratio((std::min)({ float(max_height) / src.height(), float(max_width) / src.width(), 1.0F }));
|
||||
if (1.0F > ratio)
|
||||
{
|
||||
float const pix_height(src.height() * ratio);
|
||||
float const pix_width(src.width() * ratio);
|
||||
float const pix_height(std::ceil(src.height() * ratio));
|
||||
float const pix_width(std::ceil(src.width() * ratio));
|
||||
tmp.allocate(int32_t(pix_width), int32_t(pix_height));
|
||||
render_resample_argb_bitmap_hq(tmp, src, render_color{ 1.0F, 1.0F, 1.0F, 1.0F }, true);
|
||||
}
|
||||
@ -1235,7 +1257,7 @@ bool menu_select_launch::select_part(mame_ui_manager &mui, render_container &con
|
||||
void menu_select_launch::draw_toolbar(float x1, float y1, float x2, float y2)
|
||||
{
|
||||
// draw a box
|
||||
ui().draw_outlined_box(container(), x1, y1, x2, y2, rgb_t(0xEF, 0x12, 0x47, 0x7B));
|
||||
ui().draw_outlined_box(container(), x1, y1, x2, y2, rgb_t(0xef, 0x12, 0x47, 0x7b));
|
||||
|
||||
// take off the borders
|
||||
float const aspect(machine().render().ui_aspect(&container()));
|
||||
@ -1245,33 +1267,61 @@ void menu_select_launch::draw_toolbar(float x1, float y1, float x2, float y2)
|
||||
y1 += ui().box_tb_border();
|
||||
y2 -= ui().box_tb_border();
|
||||
|
||||
texture_ptr_vector const &t_texture(m_is_swlist ? m_cache.sw_toolbar_texture() : m_cache.toolbar_texture());
|
||||
bitmap_vector const &t_bitmap(m_is_swlist ? m_cache.sw_toolbar_bitmap() : m_cache.toolbar_bitmap());
|
||||
// work out which buttons we're going to draw
|
||||
constexpr unsigned SYS_TOOLBAR_BITMAPS[] = { TOOLBAR_BITMAP_FAVORITE, TOOLBAR_BITMAP_SAVE, TOOLBAR_BITMAP_INFO };
|
||||
constexpr unsigned SW_TOOLBAR_BITMAPS[] = { TOOLBAR_BITMAP_FAVORITE, TOOLBAR_BITMAP_INFO };
|
||||
bool const have_parent = m_is_swlist || !stack_has_special_main_menu();
|
||||
unsigned const *const toolbar_bitmaps = m_is_swlist ? SW_TOOLBAR_BITMAPS : SYS_TOOLBAR_BITMAPS;
|
||||
unsigned const toolbar_count = m_is_swlist ? std::size(SW_TOOLBAR_BITMAPS) : std::size(SYS_TOOLBAR_BITMAPS);
|
||||
|
||||
auto const num_valid(std::count_if(std::begin(t_bitmap), std::end(t_bitmap), [](bitmap_argb32 const &e) { return e.valid(); }));
|
||||
// calculate metrics
|
||||
float const x_size = (y2 - y1) * aspect;
|
||||
float const x_spacing = x_size * 1.5f;
|
||||
float const backtrack_pos = x2 - x_size;
|
||||
float const total_width = (float(toolbar_count) + (float(toolbar_count - 1) * 0.5f)) * x_size;
|
||||
m_cache.cache_toolbar(machine(), x_size, y2 - y1);
|
||||
|
||||
float const space_x = (y2 - y1) * aspect;
|
||||
float const total = (float(num_valid) * space_x) + (float(num_valid - 1) * 0.001f);
|
||||
x1 += (x2 - x1) * 0.5f - total * 0.5f;
|
||||
x2 = x1 + space_x;
|
||||
|
||||
for (int z = 0; z < UI_TOOLBAR_BUTTONS; ++z)
|
||||
// add backtrack button
|
||||
rgb_t color(0xefefefef);
|
||||
if (mouse_in_rect(backtrack_pos, y1, x2, y2))
|
||||
{
|
||||
if (t_bitmap[z].valid())
|
||||
{
|
||||
rgb_t color(0xEFEFEFEF);
|
||||
if (mouse_in_rect(x1, y1, x2, y2))
|
||||
{
|
||||
set_hover(HOVER_B_FAV + z);
|
||||
color = rgb_t::white();
|
||||
float ypos = y2 + ui().get_line_height() + 2.0f * ui().box_tb_border();
|
||||
ui().draw_text_box(container(), _(hover_msg[z]), ui::text_layout::CENTER, 0.5f, ypos, ui().colors().background_color());
|
||||
}
|
||||
set_hover(HOVER_BACKTRACK);
|
||||
color = rgb_t::white();
|
||||
float const ypos = y2 + ui().get_line_height() + 2.0f * ui().box_tb_border();
|
||||
ui().draw_text_box(
|
||||
container(),
|
||||
have_parent ? _("Return to previous menu") : _("Exit"),
|
||||
ui::text_layout::RIGHT, 1.0f - lr_border, ypos,
|
||||
ui().colors().background_color());
|
||||
}
|
||||
container().add_quad(
|
||||
backtrack_pos, y1, x2, y2,
|
||||
color,
|
||||
m_cache.toolbar_textures()[have_parent ? TOOLBAR_BITMAP_PREVMENU : TOOLBAR_BITMAP_EXIT].get(),
|
||||
PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA));
|
||||
|
||||
container().add_quad(x1, y1, x2, y2, color, t_texture[z].get(), PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA));
|
||||
x1 += space_x + ((z < UI_TOOLBAR_BUTTONS - 1) ? 0.001f : 0.0f);
|
||||
x2 = x1 + space_x;
|
||||
// now add the other buttons
|
||||
x1 = (std::min)(backtrack_pos - (float(toolbar_count) * x_spacing), x1 + ((x2 - x1 - total_width) * 0.5f));
|
||||
for (int z = 0; toolbar_count > z; ++z, x1 += x_spacing)
|
||||
{
|
||||
x2 = x1 + x_size;
|
||||
color = rgb_t (0xefefefef);
|
||||
if (mouse_in_rect(x1, y1, x2, y2))
|
||||
{
|
||||
set_hover(HOVER_B_FAV + toolbar_bitmaps[z]);
|
||||
color = rgb_t::white();
|
||||
float ypos = y2 + ui().get_line_height() + 2.0f * ui().box_tb_border();
|
||||
ui().draw_text_box(
|
||||
container(),
|
||||
_(hover_msg[toolbar_bitmaps[z]]),
|
||||
ui::text_layout::CENTER, (x1 + x2) * 0.5f, ypos,
|
||||
ui().colors().background_color());
|
||||
}
|
||||
container().add_quad(
|
||||
x1, y1, x2, y2,
|
||||
color,
|
||||
m_cache.toolbar_textures()[toolbar_bitmaps[z]].get(),
|
||||
PRIMFLAG_BLENDMODE(BLENDMODE_ALPHA));
|
||||
}
|
||||
}
|
||||
|
||||
@ -1375,11 +1425,6 @@ void menu_select_launch::handle_keys(uint32_t flags, int &iptkey)
|
||||
m_prev_selected = nullptr;
|
||||
filter_selected();
|
||||
}
|
||||
if (is_last_selected() && (m_focus == focused_menu::MAIN))
|
||||
{
|
||||
iptkey = IPT_UI_CANCEL;
|
||||
stack_pop();
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
@ -1720,6 +1765,12 @@ void menu_select_launch::handle_events(uint32_t flags, event &ev)
|
||||
inkey_dats();
|
||||
stop = true;
|
||||
}
|
||||
else if (hover() == HOVER_BACKTRACK)
|
||||
{
|
||||
ev.iptkey = IPT_UI_CANCEL;
|
||||
stack_pop();
|
||||
stop = true;
|
||||
}
|
||||
else if (hover() >= HOVER_RP_FIRST && hover() <= HOVER_RP_LAST)
|
||||
{
|
||||
ui_globals::rpanel = (HOVER_RP_FIRST - hover()) * (-1);
|
||||
@ -1753,7 +1804,7 @@ void menu_select_launch::handle_events(uint32_t flags, event &ev)
|
||||
|
||||
// caught scroll event
|
||||
case ui_event::type::MOUSE_WHEEL:
|
||||
if (hover() >= 0 && hover() < item_count() - skip_main_items - 1)
|
||||
if (hover() >= 0 && hover() < item_count() - skip_main_items)
|
||||
{
|
||||
if (local_menu_event.zdelta > 0)
|
||||
{
|
||||
@ -1800,7 +1851,7 @@ void menu_select_launch::handle_events(uint32_t flags, event &ev)
|
||||
break;
|
||||
|
||||
case ui_event::type::MOUSE_RDOWN:
|
||||
if (hover() >= 0 && hover() < item_count() - skip_main_items - 1)
|
||||
if (hover() >= 0 && hover() < item_count() - skip_main_items)
|
||||
{
|
||||
set_selected_index(hover());
|
||||
m_prev_selected = get_selection_ref();
|
||||
@ -1866,8 +1917,8 @@ void menu_select_launch::draw(uint32_t flags)
|
||||
draw_background();
|
||||
|
||||
clear_hover();
|
||||
m_available_items = (m_is_swlist) ? item_count() - 2 : item_count() - 2 - skip_main_items;
|
||||
float extra_height = (m_is_swlist) ? 2.0f * line_height : (2.0f + skip_main_items) * line_height;
|
||||
m_available_items = item_count() - skip_main_items;
|
||||
float extra_height = skip_main_items * line_height;
|
||||
float visible_extra_menu_height = get_customtop() + get_custombottom() + extra_height;
|
||||
|
||||
// locate mouse
|
||||
@ -1926,7 +1977,7 @@ void menu_select_launch::draw(uint32_t flags)
|
||||
int const n_loop = (std::min)(m_visible_lines, m_available_items);
|
||||
for (int linenum = 0; linenum < n_loop; linenum++)
|
||||
{
|
||||
float line_y = visible_top + (float)linenum * line_height;
|
||||
float line_y = visible_top + (float(linenum) * line_height);
|
||||
int itemnum = top_line + linenum;
|
||||
const menu_item &pitem = item(itemnum);
|
||||
const std::string_view itemtext = pitem.text;
|
||||
@ -2629,7 +2680,7 @@ void menu_select_launch::infos_render(float origx1, float origy1, float origx2,
|
||||
int total;
|
||||
get_selection(software, system);
|
||||
|
||||
if (software && (!software->startempty || !system))
|
||||
if (software && !software->startempty)
|
||||
{
|
||||
m_info_driver = nullptr;
|
||||
first = N_("Software List Info");
|
||||
@ -2664,32 +2715,33 @@ void menu_select_launch::infos_render(float origx1, float origy1, float origx2,
|
||||
}
|
||||
total = ui_globals::cur_sw_dats_total;
|
||||
}
|
||||
else if (system)
|
||||
else if (system || (software && software->driver))
|
||||
{
|
||||
game_driver const &driver(system ? *system->driver : *software->driver);
|
||||
m_info_software = nullptr;
|
||||
first = N_("General Info");
|
||||
|
||||
if (system->driver != m_info_driver || ui_globals::curdats_view != m_info_view)
|
||||
if (&driver != m_info_driver || ui_globals::curdats_view != m_info_view)
|
||||
{
|
||||
m_info_buffer.clear();
|
||||
if (system->driver == m_info_driver)
|
||||
if (&driver == m_info_driver)
|
||||
{
|
||||
m_info_view = ui_globals::curdats_view;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_info_driver = system->driver;
|
||||
m_info_driver = &driver;
|
||||
m_info_view = 0;
|
||||
ui_globals::curdats_view = 0;
|
||||
|
||||
m_items_list.clear();
|
||||
mame_machine_manager::instance()->lua()->call_plugin("data_list", system->driver->name, m_items_list);
|
||||
mame_machine_manager::instance()->lua()->call_plugin("data_list", driver.name, m_items_list);
|
||||
ui_globals::curdats_total = m_items_list.size() + 1;
|
||||
}
|
||||
|
||||
if (m_info_view == 0)
|
||||
{
|
||||
general_info(*system, m_info_buffer);
|
||||
general_info(system, driver, m_info_buffer);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -2863,4 +2915,200 @@ void menu_select_launch::infos_render(float origx1, float origy1, float origx2,
|
||||
m_right_visible_lines = r_visible_lines - (m_topline_datsview != 0) - (m_topline_datsview + r_visible_lines != m_total_lines);
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// generate general info
|
||||
//-------------------------------------------------
|
||||
|
||||
void menu_select_launch::general_info(ui_system_info const *system, game_driver const &driver, std::string &buffer)
|
||||
{
|
||||
system_flags const &flags(get_system_flags(driver));
|
||||
std::ostringstream str;
|
||||
|
||||
str << "#j2\n";
|
||||
|
||||
util::stream_format(str, _("Romset\t%1$-.100s\n"), driver.name);
|
||||
util::stream_format(str, _("Year\t%1$s\n"), driver.year);
|
||||
util::stream_format(str, _("Manufacturer\t%1$-.100s\n"), driver.manufacturer);
|
||||
|
||||
int cloneof = driver_list::non_bios_clone(driver);
|
||||
if (0 <= cloneof)
|
||||
{
|
||||
// TODO: this shows the non-localised parent name in some situations
|
||||
util::stream_format(
|
||||
str,
|
||||
_("Driver is Clone of\t%1$-.100s\n"),
|
||||
system ? system->parent : driver_list::driver(cloneof).type.fullname());
|
||||
}
|
||||
else
|
||||
{
|
||||
str << _("Driver is Parent\t\n");
|
||||
}
|
||||
|
||||
if (flags.has_analog())
|
||||
str << _("Analog Controls\tYes\n");
|
||||
if (flags.has_keyboard())
|
||||
str << _("Keyboard Inputs\tYes\n");
|
||||
|
||||
if (flags.machine_flags() & machine_flags::NOT_WORKING)
|
||||
str << _("Overall\tNOT WORKING\n");
|
||||
else if ((flags.unemulated_features() | flags.imperfect_features()) & device_t::feature::PROTECTION)
|
||||
str << _("Overall\tUnemulated Protection\n");
|
||||
else
|
||||
str << _("Overall\tWorking\n");
|
||||
|
||||
if (flags.unemulated_features() & device_t::feature::GRAPHICS)
|
||||
str << _("Graphics\tUnimplemented\n");
|
||||
else if (flags.unemulated_features() & device_t::feature::PALETTE)
|
||||
str << _("Graphics\tWrong Colors\n");
|
||||
else if (flags.imperfect_features() & device_t::feature::PALETTE)
|
||||
str << _("Graphics\tImperfect Colors\n");
|
||||
else if (flags.imperfect_features() & device_t::feature::GRAPHICS)
|
||||
str << _("Graphics\tImperfect\n");
|
||||
else
|
||||
str << _("Graphics\tOK\n");
|
||||
|
||||
if (flags.machine_flags() & machine_flags::NO_SOUND_HW)
|
||||
str << _("Sound\tNone\n");
|
||||
else if (flags.unemulated_features() & device_t::feature::SOUND)
|
||||
str << _("Sound\tUnimplemented\n");
|
||||
else if (flags.imperfect_features() & device_t::feature::SOUND)
|
||||
str << _("Sound\tImperfect\n");
|
||||
else
|
||||
str << _("Sound\tOK\n");
|
||||
|
||||
if (flags.unemulated_features() & device_t::feature::CAPTURE)
|
||||
str << _("Capture\tUnimplemented\n");
|
||||
else if (flags.imperfect_features() & device_t::feature::CAPTURE)
|
||||
str << _("Capture\tImperfect\n");
|
||||
|
||||
if (flags.unemulated_features() & device_t::feature::CAMERA)
|
||||
str << _("Camera\tUnimplemented\n");
|
||||
else if (flags.imperfect_features() & device_t::feature::CAMERA)
|
||||
str << _("Camera\tImperfect\n");
|
||||
|
||||
if (flags.unemulated_features() & device_t::feature::MICROPHONE)
|
||||
str << _("Microphone\tUnimplemented\n");
|
||||
else if (flags.imperfect_features() & device_t::feature::MICROPHONE)
|
||||
str << _("Microphone\tImperfect\n");
|
||||
|
||||
if (flags.unemulated_features() & device_t::feature::CONTROLS)
|
||||
str << _("Controls\tUnimplemented\n");
|
||||
else if (flags.imperfect_features() & device_t::feature::CONTROLS)
|
||||
str << _("Controls\tImperfect\n");
|
||||
|
||||
if (flags.unemulated_features() & device_t::feature::KEYBOARD)
|
||||
str << _("Keyboard\tUnimplemented\n");
|
||||
else if (flags.imperfect_features() & device_t::feature::KEYBOARD)
|
||||
str << _("Keyboard\tImperfect\n");
|
||||
|
||||
if (flags.unemulated_features() & device_t::feature::MOUSE)
|
||||
str << _("Mouse\tUnimplemented\n");
|
||||
else if (flags.imperfect_features() & device_t::feature::MOUSE)
|
||||
str << _("Mouse\tImperfect\n");
|
||||
|
||||
if (flags.unemulated_features() & device_t::feature::MEDIA)
|
||||
str << _("Media\tUnimplemented\n");
|
||||
else if (flags.imperfect_features() & device_t::feature::MEDIA)
|
||||
str << _("Media\tImperfect\n");
|
||||
|
||||
if (flags.unemulated_features() & device_t::feature::DISK)
|
||||
str << _("Disk\tUnimplemented\n");
|
||||
else if (flags.imperfect_features() & device_t::feature::DISK)
|
||||
str << _("Disk\tImperfect\n");
|
||||
|
||||
if (flags.unemulated_features() & device_t::feature::PRINTER)
|
||||
str << _("Printer\tUnimplemented\n");
|
||||
else if (flags.imperfect_features() & device_t::feature::PRINTER)
|
||||
str << _("Printer\tImperfect\n");
|
||||
|
||||
if (flags.unemulated_features() & device_t::feature::TAPE)
|
||||
str << _("Mag. Tape\tUnimplemented\n");
|
||||
else if (flags.imperfect_features() & device_t::feature::TAPE)
|
||||
str << _("Mag. Tape\tImperfect\n");
|
||||
|
||||
if (flags.unemulated_features() & device_t::feature::PUNCH)
|
||||
str << _("Punch Tape\tUnimplemented\n");
|
||||
else if (flags.imperfect_features() & device_t::feature::PUNCH)
|
||||
str << _("Punch Tape\tImperfect\n");
|
||||
|
||||
if (flags.unemulated_features() & device_t::feature::DRUM)
|
||||
str << _("Mag. Drum\tUnimplemented\n");
|
||||
else if (flags.imperfect_features() & device_t::feature::DRUM)
|
||||
str << _("Mag. Drum\tImperfect\n");
|
||||
|
||||
if (flags.unemulated_features() & device_t::feature::ROM)
|
||||
str << _("(EP)ROM\tUnimplemented\n");
|
||||
else if (flags.imperfect_features() & device_t::feature::ROM)
|
||||
str << _("(EP)ROM\tImperfect\n");
|
||||
|
||||
if (flags.unemulated_features() & device_t::feature::COMMS)
|
||||
str << _("Communications\tUnimplemented\n");
|
||||
else if (flags.imperfect_features() & device_t::feature::COMMS)
|
||||
str << _("Communications\tImperfect\n");
|
||||
|
||||
if (flags.unemulated_features() & device_t::feature::LAN)
|
||||
str << _("LAN\tUnimplemented\n");
|
||||
else if (flags.imperfect_features() & device_t::feature::LAN)
|
||||
str << _("LAN\tImperfect\n");
|
||||
|
||||
if (flags.unemulated_features() & device_t::feature::WAN)
|
||||
str << _("WAN\tUnimplemented\n");
|
||||
else if (flags.imperfect_features() & device_t::feature::WAN)
|
||||
str << _("WAN\tImperfect\n");
|
||||
|
||||
if (flags.unemulated_features() & device_t::feature::TIMING)
|
||||
str << _("Timing\tUnimplemented\n");
|
||||
else if (flags.imperfect_features() & device_t::feature::TIMING)
|
||||
str << _("Timing\tImperfect\n");
|
||||
|
||||
str << ((flags.machine_flags() & machine_flags::MECHANICAL) ? _("Mechanical Machine\tYes\n") : _("Mechanical Machine\tNo\n"));
|
||||
str << ((flags.machine_flags() & machine_flags::REQUIRES_ARTWORK) ? _("Requires Artwork\tYes\n") : _("Requires Artwork\tNo\n"));
|
||||
str << ((flags.machine_flags() & machine_flags::CLICKABLE_ARTWORK) ? _("Requires Clickable Artwork\tYes\n") : _("Requires Clickable Artwork\tNo\n"));
|
||||
if (flags.machine_flags() & machine_flags::NO_COCKTAIL)
|
||||
str << _("Support Cocktail\tNo\n");
|
||||
str << ((flags.machine_flags() & machine_flags::IS_BIOS_ROOT) ? _("Driver is BIOS\tYes\n") : _("Driver is BIOS\tNo\n"));
|
||||
str << ((flags.machine_flags() & machine_flags::SUPPORTS_SAVE) ? _("Support Save\tYes\n") : _("Support Save\tNo\n"));
|
||||
str << ((flags.machine_flags() & ORIENTATION_SWAP_XY) ? _("Screen Orientation\tVertical\n") : _("Screen Orientation\tHorizontal\n"));
|
||||
bool found = false;
|
||||
for (romload::region const ®ion : romload::entries(driver.rom).get_regions())
|
||||
{
|
||||
if (region.is_diskdata())
|
||||
{
|
||||
found = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
str << (found ? _("Requires CHD\tYes\n") : _("Requires CHD\tNo\n"));
|
||||
|
||||
// audit the game first to see if we're going to work
|
||||
if (ui().options().info_audit())
|
||||
{
|
||||
driver_enumerator enumerator(machine().options(), driver);
|
||||
enumerator.next();
|
||||
media_auditor auditor(enumerator);
|
||||
media_auditor::summary summary = auditor.audit_media(AUDIT_VALIDATE_FAST);
|
||||
media_auditor::summary summary_samples = auditor.audit_samples();
|
||||
|
||||
// if everything looks good, schedule the new driver
|
||||
if (audit_passed(summary))
|
||||
str << _("ROM Audit Result\tOK\n");
|
||||
else
|
||||
str << _("ROM Audit Result\tBAD\n");
|
||||
|
||||
if (summary_samples == media_auditor::NONE_NEEDED)
|
||||
str << _("Samples Audit Result\tNone Needed\n");
|
||||
else if (audit_passed(summary_samples))
|
||||
str << _("Samples Audit Result\tOK\n");
|
||||
else
|
||||
str << _("Samples Audit Result\tBAD\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
str << _("ROM Audit \tDisabled\nSamples Audit \tDisabled\n");
|
||||
}
|
||||
|
||||
buffer = str.str();
|
||||
}
|
||||
|
||||
} // namespace ui
|
||||
|
@ -201,10 +201,10 @@ private:
|
||||
bitmap_argb32 &no_avail_bitmap() { return m_no_avail_bitmap; }
|
||||
render_texture *star_texture() { return m_star_texture.get(); }
|
||||
|
||||
bitmap_vector const &toolbar_bitmap() { return m_toolbar_bitmap; }
|
||||
bitmap_vector const &sw_toolbar_bitmap() { return m_sw_toolbar_bitmap; }
|
||||
texture_ptr_vector const &toolbar_texture() { return m_toolbar_texture; }
|
||||
texture_ptr_vector const &sw_toolbar_texture() { return m_sw_toolbar_texture; }
|
||||
bitmap_vector const &toolbar_bitmaps() { return m_toolbar_bitmaps; }
|
||||
texture_ptr_vector const &toolbar_textures() { return m_toolbar_textures; }
|
||||
|
||||
void cache_toolbar(running_machine &machine, float width, float height);
|
||||
|
||||
private:
|
||||
bitmap_ptr m_snapx_bitmap;
|
||||
@ -216,10 +216,8 @@ private:
|
||||
bitmap_argb32 m_star_bitmap;
|
||||
texture_ptr m_star_texture;
|
||||
|
||||
bitmap_vector m_toolbar_bitmap;
|
||||
bitmap_vector m_sw_toolbar_bitmap;
|
||||
texture_ptr_vector m_toolbar_texture;
|
||||
texture_ptr_vector m_sw_toolbar_texture;
|
||||
bitmap_vector m_toolbar_bitmaps;
|
||||
texture_ptr_vector m_toolbar_textures;
|
||||
};
|
||||
|
||||
// this is to satisfy the std::any requirement that objects be copyable
|
||||
@ -246,7 +244,7 @@ private:
|
||||
|
||||
// draw infos
|
||||
void infos_render(float x1, float y1, float x2, float y2);
|
||||
virtual void general_info(ui_system_info const &system, std::string &buffer) = 0;
|
||||
void general_info(ui_system_info const *system, game_driver const &driver, std::string &buffer);
|
||||
|
||||
// get selected software and/or driver
|
||||
virtual void get_selection(ui_software_info const *&software, ui_system_info const *&system) const = 0;
|
||||
|
@ -581,11 +581,10 @@ void menu_select_software::populate(float &customtop, float &custombottom)
|
||||
m_displaylist[curitem].get().parentname.empty() ? flags_ui : (FLAG_INVERT | flags_ui), (void *)&m_displaylist[curitem].get());
|
||||
}
|
||||
|
||||
item_append(menu_item_type::SEPARATOR, flags_ui);
|
||||
|
||||
// configure the custom rendering
|
||||
skip_main_items = 0;
|
||||
customtop = 4.0f * ui().get_line_height() + 5.0f * ui().box_tb_border();
|
||||
custombottom = 5.0f * ui().get_line_height() + 4.0f * ui().box_tb_border();
|
||||
custombottom = 4.0f * ui().get_line_height() + 4.0f * ui().box_tb_border();
|
||||
|
||||
if (old_software != -1)
|
||||
{
|
||||
|
@ -65,8 +65,6 @@ private:
|
||||
// handlers
|
||||
void inkey_select(const event *menu_event);
|
||||
|
||||
virtual void general_info(ui_system_info const &system, std::string &buffer) override { }
|
||||
|
||||
std::map<std::string, std::string> m_icon_paths;
|
||||
char const *const m_description;
|
||||
game_driver const &m_driver;
|
||||
|
@ -37,7 +37,6 @@ simple_menu_select_game::simple_menu_select_game(mame_ui_manager &mui, render_co
|
||||
: menu(mui, container)
|
||||
, m_error(false), m_rerandomize(false)
|
||||
, m_search()
|
||||
, m_skip_main_items(0)
|
||||
, m_driverlist(driver_list::total() + 1)
|
||||
, m_drivlist()
|
||||
, m_cached_driver(nullptr)
|
||||
@ -45,6 +44,7 @@ simple_menu_select_game::simple_menu_select_game(mame_ui_manager &mui, render_co
|
||||
, m_cached_unemulated(device_t::feature::NONE), m_cached_imperfect(device_t::feature::NONE)
|
||||
, m_cached_color(ui().colors().background_color())
|
||||
{
|
||||
set_needs_prev_menu_item(false);
|
||||
build_driver_list();
|
||||
if (gamename)
|
||||
m_search.assign(gamename);
|
||||
@ -116,7 +116,7 @@ void simple_menu_select_game::handle()
|
||||
|
||||
// process the menu
|
||||
const event *menu_event = process(0);
|
||||
if (menu_event && menu_event->itemref)
|
||||
if (menu_event)
|
||||
{
|
||||
if (m_error)
|
||||
{
|
||||
@ -162,17 +162,18 @@ void simple_menu_select_game::inkey_select(const event *menu_event)
|
||||
{
|
||||
const game_driver *driver = (const game_driver *)menu_event->itemref;
|
||||
|
||||
// special case for configure inputs
|
||||
if ((uintptr_t)driver == 1)
|
||||
if ((uintptr_t)driver == 1) // special case for configure inputs
|
||||
{
|
||||
menu::stack_push<menu_simple_game_options>(
|
||||
ui(),
|
||||
container(),
|
||||
[this] () { reset(reset_options::SELECT_FIRST); });
|
||||
}
|
||||
|
||||
// anything else is a driver
|
||||
else
|
||||
else if (!driver) // special case for previous menu
|
||||
{
|
||||
stack_pop();
|
||||
}
|
||||
else // anything else is a driver
|
||||
{
|
||||
// audit the game first to see if we're going to work
|
||||
driver_enumerator enumerator(machine().options(), *driver);
|
||||
@ -267,7 +268,11 @@ void simple_menu_select_game::populate(float &customtop, float &custombottom)
|
||||
if (curmatch != -1)
|
||||
{
|
||||
int cloneof = m_drivlist->non_bios_clone(curmatch);
|
||||
item_append(m_drivlist->driver(curmatch).name, m_drivlist->driver(curmatch).type.fullname(), (cloneof == -1) ? 0 : FLAG_INVERT, (void *)&m_drivlist->driver(curmatch));
|
||||
item_append(
|
||||
m_drivlist->driver(curmatch).type.fullname(),
|
||||
m_drivlist->driver(curmatch).name,
|
||||
(cloneof == -1) ? 0 : FLAG_INVERT,
|
||||
(void *)&m_drivlist->driver(curmatch));
|
||||
}
|
||||
}
|
||||
|
||||
@ -276,7 +281,12 @@ void simple_menu_select_game::populate(float &customtop, float &custombottom)
|
||||
{
|
||||
item_append(menu_item_type::SEPARATOR);
|
||||
item_append(_("Configure Options"), 0, (void *)1);
|
||||
m_skip_main_items = 1;
|
||||
item_append(_("Exit"), 0, nullptr);
|
||||
}
|
||||
else
|
||||
{
|
||||
item_append(menu_item_type::SEPARATOR);
|
||||
item_append(_("Return to Previous Menu"), 0, nullptr);
|
||||
}
|
||||
|
||||
// configure the custom rendering
|
||||
@ -308,7 +318,7 @@ void simple_menu_select_game::custom_render(void *selectedref, float top, float
|
||||
ui().colors().text_color(), ui().colors().background_color(), 1.0f);
|
||||
|
||||
// determine the text to render below
|
||||
driver = ((uintptr_t)selectedref > m_skip_main_items) ? (const game_driver *)selectedref : nullptr;
|
||||
driver = ((uintptr_t)selectedref > 1) ? (const game_driver *)selectedref : nullptr;
|
||||
if (driver)
|
||||
{
|
||||
// first line is game name
|
||||
|
@ -48,7 +48,6 @@ private:
|
||||
bool m_error;
|
||||
bool m_rerandomize;
|
||||
std::string m_search;
|
||||
int m_skip_main_items;
|
||||
int m_matchlist[VISIBLE_GAMES_IN_LIST];
|
||||
std::vector<const game_driver *> m_driverlist;
|
||||
std::unique_ptr<driver_enumerator> m_drivlist;
|
||||
|
@ -1,121 +1,65 @@
|
||||
// license:BSD-3-Clause
|
||||
// copyright-holders:Dankan1890
|
||||
// copyright-holders:Vas Crabb
|
||||
#ifndef MAME_FRONTEND_UI_TOOLBAR_IPP
|
||||
#define MAME_FRONTEND_UI_TOOLBAR_IPP
|
||||
#pragma once
|
||||
|
||||
namespace ui {
|
||||
namespace {
|
||||
// TODO: move this to an external image file and zlib compress it into a souce file as part of the build process
|
||||
|
||||
uint32_t const toolbar_bitmap_bmp[][1024] = {
|
||||
{
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x02D07A00, 0x15D07A00, 0x0FD07A00, 0x00D07A00, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x76D27F04, 0xBFDA9714, 0xB9D78F0E, 0x4DD17B01, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x3BD07A00, 0xFFE8B228, 0xFFFDEB50, 0xFFFBE34A, 0xD0E1A11C, 0x13D07A00, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0BD07A00, 0xA0D48306, 0xFFFACE42, 0xFFFBCE45, 0xFFFCD146, 0xFFF2BD34, 0x67D07A00, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x49D27E03, 0xE9EAAB26, 0xFFFDD044, 0xFFF9C741, 0xFFFAC942, 0xFFFED245, 0xD1DF9716, 0x27D07A00, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xA2DB8D0F, 0xFFF6C236, 0xFFFAC740, 0xFFF8C53F, 0xFFF8C53F, 0xFFFDCB41, 0xF7F0B62E, 0x71D68308, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x31D07A00, 0xFFE7A420, 0xFFFDCA3F, 0xFFF8C23D, 0xFFF8C23D, 0xFFF8C23D, 0xFFF8C23D, 0xFFFCC83D, 0xE0E19818, 0x11D07A00, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x08D07A00, 0x99D38004, 0xFFF9C237, 0xFFFAC43C, 0xFFF8BF3A, 0xFFF8BF3A, 0xFFF8BF3A, 0xFFF8BF3A, 0xFFFBC53C, 0xFFF1B32B, 0x63D07A00, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x01D07A00, 0x15D07A00, 0x24D07A00, 0x39D07A00, 0x4AD07A00, 0x79D48205, 0xE6E9A820, 0xFFFDC539, 0xFFF8BC37, 0xFFF8BC37, 0xFFF8BC37, 0xFFF8BC37, 0xFFF8BC37, 0xFFF9BD37, 0xFFFEC63A, 0xD8DF9613, 0x64D17C01, 0x3FD07A00, 0x2FD07A00, 0x1CD07A00, 0x0AD07A00, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x04D07A00, 0x3BD07A00, 0x8BD07A00, 0xA5D17B01, 0xBFDA940F, 0xCEE1A317, 0xE2E7B622, 0xF4EDC229, 0xFFF1C62D, 0xFFFAC735, 0xFFFABC35, 0xFFF8B934, 0xFFF8B934, 0xFFF8B934, 0xFFF8B934, 0xFFF8B934, 0xFFF8B934, 0xFFFCBF36, 0xFFF7C733, 0xFCEFC52C, 0xE9EABB24, 0xD8E4AE1D, 0xC6DD9C13, 0xB4D58608, 0x99D07A00, 0x75D07A00, 0x20D07A00, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x01D07A00, 0xBBD78608, 0xFFE9AE1F, 0xFFF9D133, 0xFFFCD839, 0xFFFCD338, 0xFFFCCC36, 0xFFFCC333, 0xFFFCBB32, 0xFFF7B630, 0xFFF7B630, 0xFFF7B630, 0xFFF7B630, 0xFFF7B630, 0xFFF7B630, 0xFFF7B630, 0xFFF7B630, 0xFFF7B630, 0xFFF7B630, 0xFFF7B630, 0xFFFAB831, 0xFFFCC033, 0xFFFCC735, 0xFFFCD037, 0xFFFCD739, 0xFFFBD536, 0xFFF5C92F, 0xE8E4A318, 0x55D78507, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x13D07A00, 0xFFDF9212, 0xFFFABC2F, 0xFFF9B72F, 0xFFF8B32E, 0xFFF7B22D, 0xFFF7B22D, 0xFFF7B22D, 0xFFF7B22D, 0xFFF7B22D, 0xFFF7B22D, 0xFFF7B22D, 0xFFF7B22D, 0xFFF7B22D, 0xFFF7B22D, 0xFFF7B22D, 0xFFF7B22D, 0xFFF7B22D, 0xFFF7B22D, 0xFFF7B22D, 0xFFF7B22D, 0xFFF7B22D, 0xFFF7B22D, 0xFFF7B22D, 0xFFF7B32D, 0xFFF9B52E, 0xFFF9B92F, 0xFFF6B52A, 0xC1DB8B0D, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x07D07A00, 0xE6DC8B0E, 0xFFF4AB27, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFEFA421, 0xAAD9860A, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x5ED58005, 0xE8E39213, 0xFFF7AB26, 0xFFF7AB26, 0xFFF7AB26, 0xFFF7AB26, 0xFFF7AB26, 0xFFF7AB26, 0xFFF7AB26, 0xFFF7AB26, 0xFFF7AB26, 0xFFF7AB26, 0xFFF7AB26, 0xFFF7AB26, 0xFFF7AB26, 0xFFF7AB26, 0xFFF7AB26, 0xFFF7AB26, 0xFFF7AB26, 0xFFF7AB26, 0xFFF7AB26, 0xFFF7AB26, 0xFFF7AB26, 0xFFF7AB26, 0xFFF7AB26, 0xFFF4A925, 0xE2DC890C, 0x45D27C02, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x41D07A00, 0xE7E18F11, 0xFFF3A420, 0xFFF6A823, 0xFFF6A823, 0xFFF6A823, 0xFFF6A823, 0xFFF6A823, 0xFFF6A823, 0xFFF6A823, 0xFFF6A823, 0xFFF6A823, 0xFFF6A823, 0xFFF6A823, 0xFFF6A823, 0xFFF6A823, 0xFFF6A823, 0xFFF6A823, 0xFFF6A823, 0xFFF6A823, 0xFFF6A823, 0xFFF6A823, 0xFFF6A823, 0xFFEFA11D, 0xE0DB880A, 0x35D07A00, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x5DD47E03, 0xE6E08D0D, 0xFFF5A41F, 0xFFF6A41F, 0xFFF6A41F, 0xFFF6A41F, 0xFFF6A41F, 0xFFF6A41F, 0xFFF6A41F, 0xFFF6A41F, 0xFFF6A41F, 0xFFF6A41F, 0xFFF6A41F, 0xFFF6A41F, 0xFFF6A41F, 0xFFF6A41F, 0xFFF6A41F, 0xFFF6A41F, 0xFFF6A41F, 0xFFF6A41F, 0xFFF6A41F, 0xFFF3A11D, 0xDFDB8609, 0x4FD27C01, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x40D07A00, 0xE6E08A0C, 0xFFF29D19, 0xFFF6A01C, 0xFFF6A01C, 0xFFF6A01C, 0xFFF6A01C, 0xFFF6A01C, 0xFFF6A01C, 0xFFF6A01C, 0xFFF6A01C, 0xFFF6A01C, 0xFFF6A01C, 0xFFF6A01C, 0xFFF6A01C, 0xFFF6A01C, 0xFFF6A01C, 0xFFF6A01C, 0xFFF6A01C, 0xFFEE9917, 0xDDDA8407, 0x30D07A00, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x5BD37D02, 0xE6DF880A, 0xFFF59C18, 0xFFF69D18, 0xFFF69D18, 0xFFF69D18, 0xFFF69D18, 0xFFF69D18, 0xFFF69D18, 0xFFF69D18, 0xFFF69D18, 0xFFF69D18, 0xFFF69D18, 0xFFF69D18, 0xFFF69D18, 0xFFF69D18, 0xFFF69D18, 0xFFF29A16, 0xDCD98306, 0x49D17B01, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x7BD07A00, 0xFFEF9311, 0xFFF69A15, 0xFFF59915, 0xFFF59915, 0xFFF59915, 0xFFF59915, 0xFFF59915, 0xFFF59915, 0xFFF59915, 0xFFF59915, 0xFFF59915, 0xFFF59915, 0xFFF59915, 0xFFF59915, 0xFFF69915, 0xFFE2890A, 0x3BD07A00, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x01D07A00, 0xA2D17B00, 0xFFF59612, 0xFFF69713, 0xFFF59612, 0xFFF59612, 0xFFF59612, 0xFFF59612, 0xFFF59612, 0xFFF59612, 0xFFF59612, 0xFFF59612, 0xFFF59612, 0xFFF59612, 0xFFF59612, 0xFFF59612, 0xFFF79712, 0xFFE98D0B, 0x4BD07A00, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x14D07A00, 0xBED87F03, 0xFFF6940E, 0xFFF5930E, 0xFFF5930E, 0xFFF5930E, 0xFFF5930E, 0xFFF5930E, 0xFFF5930E, 0xFFF5930E, 0xFFF5930E, 0xFFF5930E, 0xFFF5930E, 0xFFF5930E, 0xFFF5930E, 0xFFF5930E, 0xFFF7940E, 0xFFF1900B, 0x7ED07A00, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x27D07A00, 0xD1DE8205, 0xFFF8920C, 0xFFF5900C, 0xFFF5900C, 0xFFF5900C, 0xFFF5900C, 0xFFF5900C, 0xFFF5900C, 0xFFF5900C, 0xFFF5900C, 0xFFF5900C, 0xFFF5900C, 0xFFF5900C, 0xFFF5900C, 0xFFF5900C, 0xFFF6910C, 0xFFF5910C, 0xA5D27B01, 0x03D07A00, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x40D07A00, 0xEAE48505, 0xFFFA9009, 0xFFF58D09, 0xFFF58D09, 0xFFF58D09, 0xFFF58D09, 0xFFF58D09, 0xFFF58D09, 0xFFF58D09, 0xFFF58D09, 0xFFF58D09, 0xFFF58D09, 0xFFF58D09, 0xFFF58D09, 0xFFF58D09, 0xFFF58D09, 0xFFF78E09, 0xC1D97F02, 0x17D07A00, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x57D17B00, 0xFBE88504, 0xFFF78D06, 0xFFF48B06, 0xFFF48B06, 0xFFF48B06, 0xFFF48B06, 0xFFF48B06, 0xFFF38B06, 0xFFEC8705, 0xFFF18A06, 0xFFF48B06, 0xFFF48B06, 0xFFF48B06, 0xFFF48B06, 0xFFF48B06, 0xFFF48B06, 0xFFF88E06, 0xD6DF8102, 0x2CD07A00, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x83D67D01, 0xFFED8503, 0xFFF48804, 0xFFF48804, 0xFFF48804, 0xFFF48804, 0xFFF28804, 0xFFEA8503, 0xCDDC7F02, 0x79D17B00, 0xA1D47C01, 0xEFE18102, 0xFFEE8604, 0xFFF38804, 0xFFF48804, 0xFFF48804, 0xFFF48804, 0xFFF88B04, 0xEFE58203, 0x46D07A00, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xA0D87D01, 0xFFED8401, 0xFFF48602, 0xFFF48602, 0xFFF48602, 0xFFEF8501, 0xE9DE7F01, 0x8FD67D00, 0x23D07A00, 0x04D07A00, 0x0DD07A00, 0x46D07A00, 0xC3D97D01, 0xFFE28001, 0xFFF38602, 0xFFF48602, 0xFFF48602, 0xFFF58702, 0xFDE88201, 0x59D17A00, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x5FD47B00, 0xF3E58000, 0xFFF18400, 0xFFED8200, 0xDEE07F01, 0x90D37B00, 0x1FD07A00, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x01D07A00, 0x3BD07A00, 0xBDD67C00, 0xF2E48000, 0xFFEF8300, 0xFFF08300, 0xDEDF7E01, 0x34D07A00, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x10D07A00, 0x71D57C00, 0xD2DB7D00, 0x9AD87C00, 0x34D07A00, 0x0AD07A00, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x13D07A00, 0x52D27B00, 0xBBD97D00, 0xCBDA7D00, 0x5DD27B00, 0x0AD07A00, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
|
||||
},
|
||||
{
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x41D07A00, 0x8BD07A00, 0xAAD07A00, 0xAAD07A00, 0xAAC48715, 0xAAC08C1D, 0xAAC08C1D, 0xAAC08C1D, 0xAAC08C1D, 0xAAC08C1D, 0xAAC08C1D, 0xAAC08C1D, 0xAAC08C1D, 0xAAC08C1D, 0xAAC08C1D, 0xAAC08C1D, 0xAAC08C1D, 0xAAC08C1D, 0xAAC08C1D, 0xAAC08C1D, 0xAACA810B, 0xAAD07A00, 0xA4D07A00, 0x7DD07A00, 0x1CD07A00, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x07D07A00, 0x7BD38206, 0xFFE8B82B, 0xFFF9E24B, 0xFFFEEE55, 0xFFFDEE55, 0xFFCBA95F, 0xFFEBEBEB, 0xFFF1F1F1, 0xFFF3F3F3, 0xFFF7F7F7, 0xFFF9F9F9, 0xFFFCFCFC, 0xFFFEFEFE, 0xFFFEFEFE, 0xFFFEFEFE, 0xFFFCFCFC, 0xFFFAFAFA, 0xFFF7F7F7, 0xFFF5F5F5, 0xFFF2F2F2, 0xFFE9E9E9, 0xFFD4AC2F, 0xFFFDEE55, 0xFFFDEC53, 0xFFF6DE47, 0xE4DE9E19, 0x49D38105, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x2DD07A00, 0xD7E39E1C, 0xFFFDDC4A, 0xFFFBD047, 0xFFFACC45, 0xFFF9CB45, 0xFFC4A258, 0xFFD0D0D0, 0xFFD6D6D6, 0xFFDDDDDD, 0xFFE6E6E6, 0xFFEEEEEE, 0xFFF6F6F6, 0xFFFBFBFB, 0xFFF0E5CC, 0xFFD4B167, 0xFFD2B066, 0xFFD0AE64, 0xFFE9E9E9, 0xFFE1E1E1, 0xFFD8D8D8, 0xFFD2D2D2, 0xFFD3A12A, 0xFFF9CB45, 0xFFFACD46, 0xFFFBD348, 0xFFF7CD3E, 0xB2DB9112, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x52D07A00, 0xFCEBAD2C, 0xFFFCCC44, 0xFFF9C943, 0xFFF9C943, 0xFFF9C943, 0xFFC4A258, 0xFFD0D0D0, 0xFFD6D6D6, 0xFFDDDDDD, 0xFFE6E6E6, 0xFFEEEEEE, 0xFFF6F6F6, 0xFFFBFBFB, 0xFFE9D8B3, 0xFFE6B437, 0xFFF9C943, 0xFFD3A02A, 0xFFE9E9E9, 0xFFE1E1E1, 0xFFD8D8D8, 0xFFD2D2D2, 0xFFD3A02A, 0xFFF9C943, 0xFFF9C943, 0xFFF9C943, 0xFFFBCB44, 0xFADD9416, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x55D07A00, 0xFFEBAD2B, 0xFFF9C741, 0xFFF9C741, 0xFFF9C741, 0xFFF9C741, 0xFFC4A258, 0xFFD0D0D0, 0xFFD6D6D6, 0xFFDDDDDD, 0xFFE6E6E6, 0xFFEEEEEE, 0xFFF6F6F6, 0xFFFBFBFB, 0xFFE9D8B3, 0xFFE6B335, 0xFFF9C741, 0xFFD3A029, 0xFFE9E9E9, 0xFFE1E1E1, 0xFFD8D8D8, 0xFFD2D2D2, 0xFFD3A029, 0xFFF9C741, 0xFFF9C741, 0xFFF9C741, 0xFFF9C741, 0xFFDD9416, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x55D07A00, 0xFFEAAB2A, 0xFFF8C43F, 0xFFF8C43F, 0xFFF8C43F, 0xFFF8C43F, 0xFFC4A258, 0xFFD0D0D0, 0xFFD6D6D6, 0xFFDDDDDD, 0xFFE6E6E6, 0xFFEEEEEE, 0xFFF6F6F6, 0xFFFBFBFB, 0xFFE9D8B3, 0xFFE5B133, 0xFFF8C43F, 0xFFD29F28, 0xFFE9E9E9, 0xFFE1E1E1, 0xFFD8D8D8, 0xFFD2D2D2, 0xFFD29F28, 0xFFF8C43F, 0xFFF8C43F, 0xFFF8C43F, 0xFFF8C43F, 0xFFDD9315, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x55D07A00, 0xFFEAAA28, 0xFFF8C23C, 0xFFF8C23C, 0xFFF8C23C, 0xFFF8C23C, 0xFFC4A258, 0xFFD0D0D0, 0xFFD6D6D6, 0xFFDDDDDD, 0xFFE6E6E6, 0xFFEEEEEE, 0xFFF6F6F6, 0xFFFBFBFB, 0xFFE9D8B3, 0xFFE5B032, 0xFFF8C23C, 0xFFD29E27, 0xFFE9E9E9, 0xFFE1E1E1, 0xFFD8D8D8, 0xFFD2D2D2, 0xFFD29E27, 0xFFF8C23C, 0xFFF8C23C, 0xFFF8C23C, 0xFFF8C23C, 0xFFDD9214, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x55D07A00, 0xFFEAA826, 0xFFF8BF39, 0xFFF8BF39, 0xFFF8BF39, 0xFFF8BF39, 0xFFC9A352, 0xFFCFCDC7, 0xFFD6D6D6, 0xFFDDDDDD, 0xFFE6E6E6, 0xFFEEEEEE, 0xFFF6F6F6, 0xFFFBFBFB, 0xFFE9D8B3, 0xFFD8A329, 0xFFE5AE30, 0xFFCC9723, 0xFFECECEC, 0xFFE1E1E1, 0xFFD8D8D8, 0xFFD0CCC2, 0xFFD8A128, 0xFFF8BF39, 0xFFF8BF39, 0xFFF8BF39, 0xFFF8BF39, 0xFFDD9113, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x55D07A00, 0xFFEAA624, 0xFFF8BC36, 0xFFF8BC36, 0xFFF8BC36, 0xFFF8BC36, 0xFFD7A63B, 0xFFCCBFA3, 0xFFD6D6D6, 0xFFDDDDDD, 0xFFE6E6E6, 0xFFEEEEEE, 0xFFF6F6F6, 0xFFFBFBFB, 0xFFF8F2E6, 0xFFEAD8B3, 0xFFEAD8B3, 0xFFEAD8B3, 0xFFF5F5F5, 0xFFE1E1E1, 0xFFD8D7D5, 0xFFCBB280, 0xFFE9AF2F, 0xFFF8BC36, 0xFFF8BC36, 0xFFF8BC36, 0xFFF8BC36, 0xFFDD9012, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x55D07A00, 0xFFEAA422, 0xFFF8B933, 0xFFF8B933, 0xFFF8B933, 0xFFF8B933, 0xFFF1B430, 0xFFD6A02D, 0xFFD0B57B, 0xFFD3C099, 0xFFD9C8A3, 0xFFDFCDA8, 0xFFE4D3AE, 0xFFE7D6B1, 0xFFE9D8B3, 0xFFE8D7B2, 0xFFE5D3AE, 0xFFE1CFAA, 0xFFDBCAA5, 0xFFD5C298, 0xFFD0AB5D, 0xFFDDA42C, 0xFFF8B933, 0xFFF8B933, 0xFFF8B933, 0xFFF8B933, 0xFFF8B933, 0xFFDD8F11, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x55D07A00, 0xFFEAA120, 0xFFF7B530, 0xFFF7B530, 0xFFF7B530, 0xFFF7B530, 0xFFF7B530, 0xFFF4B32F, 0xFFE9AB2B, 0xFFE5A72A, 0xFFE4A729, 0xFFE4A729, 0xFFE4A729, 0xFFE4A729, 0xFFE4A729, 0xFFE4A729, 0xFFE4A729, 0xFFE4A729, 0xFFE4A729, 0xFFE5A82A, 0xFFEDAE2D, 0xFFF5B430, 0xFFF7B530, 0xFFF7B530, 0xFFF7B530, 0xFFF7B530, 0xFFF7B530, 0xFFDD8E10, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x55D07A00, 0xFFEA9F1E, 0xFFF7B22D, 0xFFF7B22D, 0xFFF7B22D, 0xFFF7B22D, 0xFFF7B22D, 0xFFF7B22D, 0xFFF7B22D, 0xFFF7B22D, 0xFFF7B22D, 0xFFF7B22D, 0xFFF7B22D, 0xFFF7B22D, 0xFFF7B22D, 0xFFF7B22D, 0xFFF7B22D, 0xFFF7B22D, 0xFFF7B22D, 0xFFF7B22D, 0xFFF7B22D, 0xFFF7B22D, 0xFFF7B22D, 0xFFF7B22D, 0xFFF7B22D, 0xFFF7B22D, 0xFFF7B22D, 0xFFDD8D0F, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x55D07A00, 0xFFEA9D1C, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFF7AF2A, 0xFFDD8B0E, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x55D07A00, 0xFFEA9A19, 0xFFF7AB26, 0xFFF7AB26, 0xFFF7AB26, 0xFFF7AB26, 0xFFF0A725, 0xFFE8A324, 0xFFE4A123, 0xFFE4A123, 0xFFE4A123, 0xFFE4A123, 0xFFE4A123, 0xFFE4A123, 0xFFE4A123, 0xFFE4A123, 0xFFE4A123, 0xFFE4A123, 0xFFE4A123, 0xFFE4A123, 0xFFE5A124, 0xFFE9A424, 0xFFF4AA26, 0xFFF7AB26, 0xFFF7AB26, 0xFFF7AB26, 0xFFF7AB26, 0xFFDD8A0D, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x55D07A00, 0xFFE99917, 0xFFF6A823, 0xFFF6A823, 0xFFF6A823, 0xFFE9A122, 0xFFD7A84A, 0xFFE5CC98, 0xFFEAD8B3, 0xFFEAD8B3, 0xFFEAD8B3, 0xFFEAD8B3, 0xFFEAD8B3, 0xFFEAD8B3, 0xFFEAD8B3, 0xFFEAD8B3, 0xFFEAD8B3, 0xFFEAD8B3, 0xFFEAD8B3, 0xFFEAD8B3, 0xFFE9D6AE, 0xFFE4C78C, 0xFFD89C2A, 0xFFF0A522, 0xFFF6A823, 0xFFF6A823, 0xFFF6A823, 0xFFDD890B, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x55D07A00, 0xFFE99614, 0xFFF6A41F, 0xFFF6A41F, 0xFFEFA11F, 0xFFD7A94D, 0xFFFBF9F6, 0xFFF7F7F7, 0xFFEFEFEF, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFF2F2F2, 0xFFF8F8F8, 0xFFEEE1C5, 0xFFDBA136, 0xFFF6A41F, 0xFFF6A41F, 0xFFF6A41F, 0xFFDC880A, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x55D07A00, 0xFFE99413, 0xFFF6A11C, 0xFFF6A11C, 0xFFE79B1C, 0xFFDDC594, 0xFFF3F3F3, 0xFFEDEDED, 0xFFECECEC, 0xFFECECEC, 0xFFECECEC, 0xFFECECEC, 0xFFECECEC, 0xFFECECEC, 0xFFECECEC, 0xFFECECEC, 0xFFECECEC, 0xFFECECEC, 0xFFECECEC, 0xFFECECEC, 0xFFECECEC, 0xFFEDEDED, 0xFFF2EFEA, 0xFFD2AA59, 0xFFF6A11C, 0xFFF6A11C, 0xFFF6A11C, 0xFFDC8709, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x55D07A00, 0xFFE99110, 0xFFF69D18, 0xFFF69D18, 0xFFE49719, 0xFFDCCAA5, 0xFFE9E9E9, 0xFFE2E2E2, 0xFFDEDEDE, 0xFFDEDEDE, 0xFFDEDEDE, 0xFFDEDEDE, 0xFFDEDEDE, 0xFFDEDEDE, 0xFFDEDEDE, 0xFFDEDEDE, 0xFFDEDEDE, 0xFFDEDEDE, 0xFFDEDEDE, 0xFFDEDEDE, 0xFFDEDEDE, 0xFFE6E6E6, 0xFFEAEAEA, 0xFFCEAB61, 0xFFF69D18, 0xFFF69D18, 0xFFF69D18, 0xFFDC8608, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x55D07A00, 0xFFE88F0E, 0xFFF59A15, 0xFFF59A15, 0xFFE39518, 0xFFDAC9A4, 0xFFE7E7E7, 0xFFE0E0E0, 0xFFDCDCDC, 0xFFDCDCDC, 0xFFDCDCDC, 0xFFDCDCDC, 0xFFDCDCDC, 0xFFDCDCDC, 0xFFDCDCDC, 0xFFDCDCDC, 0xFFDCDCDC, 0xFFDCDCDC, 0xFFDCDCDC, 0xFFDCDCDC, 0xFFDCDCDC, 0xFFE4E4E4, 0xFFE7E7E7, 0xFFCDAA60, 0xFFF59A15, 0xFFF59A15, 0xFFF59A15, 0xFFDC8507, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x55D07A00, 0xFFE88D0C, 0xFFF59712, 0xFFF59712, 0xFFE39315, 0xFFD8C6A1, 0xFFE4E4E4, 0xFFE4E4E4, 0xFFE4E4E4, 0xFFE4E4E4, 0xFFE4E4E4, 0xFFE4E4E4, 0xFFE4E4E4, 0xFFE4E4E4, 0xFFE4E4E4, 0xFFE4E4E4, 0xFFE4E4E4, 0xFFE4E4E4, 0xFFE4E4E4, 0xFFE4E4E4, 0xFFE4E4E4, 0xFFE4E4E4, 0xFFE4E4E4, 0xFFCCA95F, 0xFFF59712, 0xFFF59712, 0xFFF59712, 0xFFDC8406, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x55D07A00, 0xFFE88B0A, 0xFFF5930F, 0xFFF5930F, 0xFFE39114, 0xFFD5C49F, 0xFFE0E0E0, 0xFFE0E0E0, 0xFFE0E0E0, 0xFFE0E0E0, 0xFFE0E0E0, 0xFFE0E0E0, 0xFFE0E0E0, 0xFFE0E0E0, 0xFFE0E0E0, 0xFFE0E0E0, 0xFFE0E0E0, 0xFFE0E0E0, 0xFFE0E0E0, 0xFFE0E0E0, 0xFFE0E0E0, 0xFFE0E0E0, 0xFFE0E0E0, 0xFFCBA85E, 0xFFF5930F, 0xFFF5930F, 0xFFF5930F, 0xFFDC8205, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x55D07A00, 0xFFE88808, 0xFFF5900C, 0xFFF5900C, 0xFFE38E11, 0xFFD3C29D, 0xFFDCDCDC, 0xFFCECECE, 0xFFC7C7C7, 0xFFC7C7C7, 0xFFC7C7C7, 0xFFC7C7C7, 0xFFC7C7C7, 0xFFC7C7C7, 0xFFC7C7C7, 0xFFC7C7C7, 0xFFC7C7C7, 0xFFC7C7C7, 0xFFC7C7C7, 0xFFC7C7C7, 0xFFC7C7C7, 0xFFD6D6D6, 0xFFDDDDDD, 0xFFCAA75D, 0xFFF5900C, 0xFFF5900C, 0xFFF5900C, 0xFFDC8104, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x55D07A00, 0xFFE88706, 0xFFF58E09, 0xFFF58E09, 0xFFE38D10, 0xFFD1C09B, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFC8A65C, 0xFFF58E09, 0xFFF58E09, 0xFFF58E09, 0xFFDC8103, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x55D07A00, 0xFFE88504, 0xFFF48B07, 0xFFF48B07, 0xFFE38B0E, 0xFFCEBD98, 0xFFD6D6D6, 0xFFD6D6D6, 0xFFD6D6D6, 0xFFD6D6D6, 0xFFD6D6D6, 0xFFD6D6D6, 0xFFD6D6D6, 0xFFD6D6D6, 0xFFD6D6D6, 0xFFD6D6D6, 0xFFD6D6D6, 0xFFD6D6D6, 0xFFD6D6D6, 0xFFD6D6D6, 0xFFD6D6D6, 0xFFD6D6D6, 0xFFD6D6D6, 0xFFC7A55B, 0xFFF48B07, 0xFFF48B07, 0xFFF48B07, 0xFFDC8002, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x52D07A00, 0xFCE78404, 0xFFF48905, 0xFFF48905, 0xFFE28A0D, 0xFFCDBC97, 0xFFD3D3D3, 0xFFC6C6C6, 0xFFBFBFBF, 0xFFBFBFBF, 0xFFBFBFBF, 0xFFBFBFBF, 0xFFBFBFBF, 0xFFBFBFBF, 0xFFBFBFBF, 0xFFBFBFBF, 0xFFBFBFBF, 0xFFBFBFBF, 0xFFBFBFBF, 0xFFBFBFBF, 0xFFBFBFBF, 0xFFCDCDCD, 0xFFD4D4D4, 0xFFC7A45A, 0xFFF48905, 0xFFF48905, 0xFFF38905, 0xFADC7F02, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x2ED07A00, 0xD8DF7F01, 0xFFF38602, 0xFFF48602, 0xFFE2880B, 0xFFCBBA95, 0xFFD1D1D1, 0xFFD1D1D1, 0xFFD1D1D1, 0xFFD1D1D1, 0xFFD1D1D1, 0xFFD1D1D1, 0xFFD1D1D1, 0xFFD1D1D1, 0xFFD1D1D1, 0xFFD1D1D1, 0xFFD1D1D1, 0xFFD1D1D1, 0xFFD1D1D1, 0xFFD1D1D1, 0xFFD1D1D1, 0xFFD1D1D1, 0xFFD1D1D1, 0xFFC6A359, 0xFFF48602, 0xFFF48602, 0xFFED8402, 0xB2D97D01, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x08D07A00, 0x7BD37B00, 0xFFE27F00, 0xFFF08401, 0xFFE2870A, 0xFFCAB893, 0xFFCFCFCF, 0xFFCFCFCF, 0xFFCFCFCF, 0xFFCFCFCF, 0xFFCFCFCF, 0xFFCFCFCF, 0xFFCFCFCF, 0xFFCFCFCF, 0xFFCFCFCF, 0xFFCFCFCF, 0xFFCFCFCF, 0xFFCFCFCF, 0xFFCFCFCF, 0xFFCFCFCF, 0xFFCFCFCF, 0xFFCFCFCF, 0xFFCFCFCF, 0xFFC5A258, 0xFFF38501, 0xFFEE8301, 0xE4DB7D00, 0x49D27B00, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x43D07A00, 0x8DD07A00, 0xAACD7D05, 0xAAC28919, 0xAAC08C1D, 0xAAC08C1D, 0xAAC08C1D, 0xAAC08C1D, 0xAAC08C1D, 0xAAC08C1D, 0xAAC08C1D, 0xAAC08C1D, 0xAAC08C1D, 0xAAC08C1D, 0xAAC08C1D, 0xAAC08C1D, 0xAAC08C1D, 0xAAC08C1D, 0xAAC08C1D, 0xAAC08C1D, 0xAAC08C1D, 0xAAC48715, 0xA5D07A00, 0x7FD07A00, 0x1DD07A00, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
|
||||
},
|
||||
{
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0E999999, 0x59999999, 0x9E999999, 0xAA999999, 0xAA999999, 0xAA999999, 0xAA999999, 0xAA999999, 0xAA999999, 0xAA999999, 0xAA999999, 0xAA999999, 0xAA999999, 0xAA999999, 0xAA999999, 0xAA999999, 0xAA999999, 0xAA999999, 0xAA999999, 0xAA999999, 0xAA999999, 0xAA999999, 0x8B999999, 0x41999999, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x0F999999, 0xC8AEAEAE, 0xFFDADADA, 0xFFF7F7F7, 0xFFFAFAFA, 0xFFFAFAFA, 0xFFFAFAFA, 0xFFFAFAFA, 0xFFFAFAFA, 0xFFFAFAFA, 0xFFFAFAFA, 0xFFFAFAFA, 0xFFFAFAFA, 0xFFFAFAFA, 0xFFFAFAFA, 0xFFFAFAFA, 0xFFFAFAFA, 0xFFFAFAFA, 0xFFFAFAFA, 0xFFFAFAFA, 0xFFFAFAFA, 0xFFFAFAFA, 0xFFFAFAFA, 0xFFF1F1F1, 0xFFCDCDCD, 0x7BA1A1A1, 0x08999999, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x5B999999, 0xFFDADADA, 0xFFF8F8F8, 0xFFF2F2F2, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFF0F0F0, 0xFFF3F3F3, 0xFFFAFAFA, 0xD8BFBFBF, 0x2E999999, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0xA3999999, 0xFFEEEEEE, 0xFFF0F0F0, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFEFEFEF, 0xFFF2F2F2, 0xFCD1D1D1, 0x53999999, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0xAA999999, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFEEEEEE, 0xFFD1D1D1, 0x55999999, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0xAA999999, 0xFFEDEDED, 0xFFEDEDED, 0xFFEDEDED, 0xFFB5B5B5, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF9A9A9A, 0xFFD3D3D3, 0xFFEDEDED, 0xFFEDEDED, 0xFFD1D1D1, 0x55999999, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0xAA999999, 0xFFEDEDED, 0xFFEDEDED, 0xFFEDEDED, 0xFFDADADA, 0xFFD1D1D1, 0xFFD1D1D1, 0xFFD1D1D1, 0xFFD1D1D1, 0xFFD1D1D1, 0xFFD1D1D1, 0xFFD1D1D1, 0xFFD1D1D1, 0xFFD1D1D1, 0xFFD1D1D1, 0xFFD1D1D1, 0xFFD1D1D1, 0xFFD1D1D1, 0xFFD1D1D1, 0xFFD1D1D1, 0xFFD1D1D1, 0xFFD1D1D1, 0xFFE4E4E4, 0xFFEDEDED, 0xFFEDEDED, 0xFFD1D1D1, 0x55999999, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0xAA999999, 0xFFECECEC, 0xFFECECEC, 0xFFECECEC, 0xFFECECEC, 0xFFECECEC, 0xFFECECEC, 0xFFECECEC, 0xFFECECEC, 0xFFECECEC, 0xFFECECEC, 0xFFECECEC, 0xFFECECEC, 0xFFECECEC, 0xFFECECEC, 0xFFECECEC, 0xFFECECEC, 0xFFECECEC, 0xFFECECEC, 0xFFECECEC, 0xFFECECEC, 0xFFECECEC, 0xFFECECEC, 0xFFECECEC, 0xFFECECEC, 0xFFD0D0D0, 0x55999999, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0xAA999999, 0xFFEBEBEB, 0xFFEBEBEB, 0xFFEBEBEB, 0xFFEBEBEB, 0xFFEBEBEB, 0xFFEBEBEB, 0xFFEBEBEB, 0xFFEBEBEB, 0xFFEBEBEB, 0xFFEBEBEB, 0xFFEBEBEB, 0xFFEBEBEB, 0xFFEBEBEB, 0xFFEBEBEB, 0xFFEBEBEB, 0xFFEBEBEB, 0xFFEBEBEB, 0xFFEBEBEB, 0xFFEBEBEB, 0xFFEBEBEB, 0xFFEBEBEB, 0xFFEBEBEB, 0xFFEBEBEB, 0xFFEBEBEB, 0xFFCFCFCF, 0x55999999, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0xAA999999, 0xFFEAEAEA, 0xFFEAEAEA, 0xFFEAEAEA, 0xFFD8D8D8, 0xFFCFCFCF, 0xFFCFCFCF, 0xFFCFCFCF, 0xFFCFCFCF, 0xFFCFCFCF, 0xFFCFCFCF, 0xFFCFCFCF, 0xFFCFCFCF, 0xFFCFCFCF, 0xFFCFCFCF, 0xFFCFCFCF, 0xFFCFCFCF, 0xFFCFCFCF, 0xFFCFCFCF, 0xFFCFCFCF, 0xFFCFCFCF, 0xFFCFCFCF, 0xFFE1E1E1, 0xFFEAEAEA, 0xFFEAEAEA, 0xFFCFCFCF, 0x55999999, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0xAA999999, 0xFFE9E9E9, 0xFFE9E9E9, 0xFFE9E9E9, 0xFFB4B4B4, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF9A9A9A, 0xFFD0D0D0, 0xFFE9E9E9, 0xFFE9E9E9, 0xFFCECECE, 0x55999999, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0xAA999999, 0xFFE8E8E8, 0xFFE8E8E8, 0xFFE8E8E8, 0xFFE8E8E8, 0xFFE8E8E8, 0xFFE8E8E8, 0xFFE8E8E8, 0xFFE8E8E8, 0xFFE8E8E8, 0xFFE8E8E8, 0xFFE8E8E8, 0xFFE8E8E8, 0xFFE8E8E8, 0xFFE8E8E8, 0xFFE8E8E8, 0xFFE8E8E8, 0xFFE8E8E8, 0xFFE8E8E8, 0xFFE8E8E8, 0xFFE8E8E8, 0xFFE8E8E8, 0xFFE8E8E8, 0xFFE8E8E8, 0xFFE8E8E8, 0xFFCDCDCD, 0x55999999, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0xAA999999, 0xFFE7E7E7, 0xFFE7E7E7, 0xFFE7E7E7, 0xFFE7E7E7, 0xFFE7E7E7, 0xFFE7E7E7, 0xFFE7E7E7, 0xFFE7E7E7, 0xFFE7E7E7, 0xFFE7E7E7, 0xFFE7E7E7, 0xFFE7E7E7, 0xFFE7E7E7, 0xFFE7E7E7, 0xFFE7E7E7, 0xFFE7E7E7, 0xFFE7E7E7, 0xFFE7E7E7, 0xFFE7E7E7, 0xFFE7E7E7, 0xFFE7E7E7, 0xFFE7E7E7, 0xFFE7E7E7, 0xFFE7E7E7, 0xFFCDCDCD, 0x55999999, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0xAA999999, 0xFFE6E6E6, 0xFFE6E6E6, 0xFFE6E6E6, 0xFFE6E6E6, 0xFFE6E6E6, 0xFFE6E6E6, 0xFFE6E6E6, 0xFFE6E6E6, 0xFFE6E6E6, 0xFFE6E6E6, 0xFFE6E6E6, 0xFFE6E6E6, 0xFFE6E6E6, 0xFFE6E6E6, 0xFFE6E6E6, 0xFFE6E6E6, 0xFFE6E6E6, 0xFFE6E6E6, 0xFFE6E6E6, 0xFFE6E6E6, 0xFFE6E6E6, 0xFFE6E6E6, 0xFFE6E6E6, 0xFFE6E6E6, 0xFFCCCCCC, 0x55999999, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0xAA999999, 0xFFE5E5E5, 0xFFE5E5E5, 0xFFE5E5E5, 0xFFE5E5E5, 0xFFE5E5E5, 0xFFE5E5E5, 0xFFE5E5E5, 0xFFE5E5E5, 0xFFE5E5E5, 0xFFE5E5E5, 0xFFE5E5E5, 0xFFE5E5E5, 0xFFE5E5E5, 0xFFE5E5E5, 0xFFE5E5E5, 0xFFE5E5E5, 0xFFE5E5E5, 0xFFE5E5E5, 0xFFE5E5E5, 0xFFE5E5E5, 0xFFE5E5E5, 0xFFE5E5E5, 0xFFE5E5E5, 0xFFE5E5E5, 0xFFCBCBCB, 0x55999999, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0xAA999999, 0xFFE4E4E4, 0xFFE4E4E4, 0xFFE4E4E4, 0xFFB2B2B2, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF999999, 0xFF9A9A9A, 0xFFCCCCCC, 0xFFE4E4E4, 0xFFE4E4E4, 0xFFCBCBCB, 0x55999999, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0xAA999999, 0xFFE3E3E3, 0xFFE3E3E3, 0xFFE3E3E3, 0xFFD2D2D2, 0xFFCACACA, 0xFFCACACA, 0xFFCACACA, 0xFFCACACA, 0xFFCACACA, 0xFFCACACA, 0xFFCACACA, 0xFFCACACA, 0xFFCACACA, 0xFFCACACA, 0xFFCACACA, 0xFFCACACA, 0xFFCACACA, 0xFFCACACA, 0xFFCACACA, 0xFFB0BABD, 0xFFAEB9BC, 0xFFDADBDB, 0xFFABC1C8, 0xFFD9DDDE, 0xFFCACACA, 0x55999999, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0xAA999999, 0xFFE2E2E2, 0xFFE2E2E2, 0xFFE2E2E2, 0xFFE2E2E2, 0xFFE2E2E2, 0xFFE2E2E2, 0xFFE2E2E2, 0xFFE2E2E2, 0xFFE2E2E2, 0xFFE2E2E2, 0xFFE2E2E2, 0xFFE2E2E2, 0xFFE2E2E2, 0xFFE2E2E2, 0xFFE2E2E2, 0xFFE2E2E2, 0xFFDEE0E0, 0xFFBECFD4, 0xFFC5D1D4, 0xFF6CADC1, 0xFF53B4CE, 0xFF89B6C4, 0xFF35AAC8, 0xFFA8C3CC, 0xFFA6B9BE, 0x59758F96, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0xAA999999, 0xFFE1E1E1, 0xFFE1E1E1, 0xFFE1E1E1, 0xFFE1E1E1, 0xFFE1E1E1, 0xFFE1E1E1, 0xFFE1E1E1, 0xFFE1E1E1, 0xFFE1E1E1, 0xFFE1E1E1, 0xFFE1E1E1, 0xFFE1E1E1, 0xFFE1E1E1, 0xFFE1E1E1, 0xFFE1E1E1, 0xFFE1E1E1, 0xFFD2D7D9, 0xFF5CABC4, 0xFF4AB6D1, 0xFF35ACD0, 0xFF2ABAE5, 0xFF25B0D9, 0xFF28B6E3, 0xFF49ACC8, 0xFF3AACCB, 0x632385A4, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0xAA999999, 0xFFE0E0E0, 0xFFE0E0E0, 0xFFE0E0E0, 0xFFE0E0E0, 0xFFE0E0E0, 0xFFE0E0E0, 0xFFE0E0E0, 0xFFE0E0E0, 0xFFE0E0E0, 0xFFE0E0E0, 0xFFE0E0E0, 0xFFE0E0E0, 0xFFE0E0E0, 0xFFE0E0E0, 0xFFDEDFDF, 0xFFA7C0C9, 0xFF79B4C5, 0xFF3CA1C0, 0xFF29B3E0, 0xFF25B0DC, 0xFF5DC2E3, 0xFFB1E2F2, 0xFF59C2E3, 0xFF26B3DE, 0xFF26A8D2, 0xA41C8CAD, 0x661783A4, 0x180E6784,
|
||||
0x00000000, 0x00000000, 0x00000000, 0xAA999999, 0xFFDFDFDF, 0xFFDFDFDF, 0xFFDFDFDF, 0xFFC0C0C0, 0xFFB0B0B0, 0xFFB0B0B0, 0xFFB0B0B0, 0xFFB0B0B0, 0xFFB0B0B0, 0xFFB0B0B0, 0xFFB0B0B0, 0xFFB0B0B0, 0xFFB0B0B0, 0xFFB0B0B0, 0xFFDEDEDE, 0xFF87AEBA, 0xFF24A7D1, 0xFF25ABD5, 0xFF25A8D1, 0xFF1EA4CF, 0xFF9BD7EA, 0xFFFFFFFF, 0xFF91D3E8, 0xFF23A6D0, 0xFF25A9D2, 0xFD26ACD4, 0xD11E94B8, 0x280D647F,
|
||||
0x00000000, 0x00000000, 0x00000000, 0xAA999999, 0xFFDEDEDE, 0xFFDEDEDE, 0xFFDEDEDE, 0xFFBFBFBF, 0xFFB0B0B0, 0xFFB0B0B0, 0xFFB0B0B0, 0xFFB0B0B0, 0xFFB0B0B0, 0xFFB0B0B0, 0xFFB0B0B0, 0xFFB0B0B0, 0xFFB0B0B0, 0xFFB0B0B0, 0xFFBFCCD1, 0xFF85B3C2, 0xFF1F96BC, 0xFF229FC7, 0xFF229FC6, 0xFF1B9BC5, 0xFF95D1E4, 0xFFFFFFFF, 0xFF8DCDE2, 0xFF219DC6, 0xFF229FC6, 0xFF22A0C8, 0xBE1986A9, 0x46137696,
|
||||
0x00000000, 0x00000000, 0x00000000, 0xAA999999, 0xFFDDDDDD, 0xFFDDDDDD, 0xFFDDDDDD, 0xFFDDDDDD, 0xFFDDDDDD, 0xFFDDDDDD, 0xFFDDDDDD, 0xFFDDDDDD, 0xFFDDDDDD, 0xFFDDDDDD, 0xFFDDDDDD, 0xFFDDDDDD, 0xFFDDDDDD, 0xFFDDDDDD, 0xFF77A5B4, 0xFF2795B9, 0xFF2099C0, 0xFF2097BD, 0xFF2097BD, 0xFF1A95BC, 0xFF8BC9DD, 0xFFFEFEFF, 0xFF7CC2D8, 0xFF1D96BC, 0xFF2097BD, 0xFF2097BE, 0xFB219BC1, 0xDE1780A1,
|
||||
0x00000000, 0x00000000, 0x00000000, 0xAA999999, 0xFFDCDCDC, 0xFFDCDCDC, 0xFFDCDCDC, 0xFFDCDCDC, 0xFFDCDCDC, 0xFFDCDCDC, 0xFFDCDCDC, 0xFFDCDCDC, 0xFFDCDCDC, 0xFFDCDCDC, 0xFFDCDCDC, 0xFFDCDCDC, 0xFFDCDCDC, 0xFFDCDCDC, 0xFFCBD2D3, 0xFF5293A8, 0xFF1D8FB3, 0xFF1C8EB1, 0xFF1C8EB1, 0xFF198CB0, 0xFF77BAD0, 0xFFFCFDFE, 0xFF64B1CA, 0xFF178BAF, 0xFF1C8EB1, 0xFF1C8EB2, 0xF21984A6, 0x5E0F6884,
|
||||
0x00000000, 0x00000000, 0x00000000, 0xAA999999, 0xFFDBDBDB, 0xFFDBDBDB, 0xFFDBDBDB, 0xFFDBDBDB, 0xFFDBDBDB, 0xFFDBDBDB, 0xFFDBDBDB, 0xFFDBDBDB, 0xFFDBDBDB, 0xFFDBDBDB, 0xFFDBDBDB, 0xFFDBDBDB, 0xFFDBDBDB, 0xFFDBDBDB, 0xFF85ABB8, 0xFF2789AA, 0xFF1B87A9, 0xFF1A85A7, 0xFF1A85A7, 0xFF1884A6, 0xFF69AEC5, 0xFFF9FCFD, 0xFF51A2BC, 0xFF1683A5, 0xFF1A85A7, 0xFF1A85A7, 0xFB1B88AB, 0xC0147695,
|
||||
0x00000000, 0x00000000, 0x00000000, 0xAA999999, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFAFC0C6, 0xFF5F95A6, 0xFF177998, 0xFF187C9D, 0xFF187C9C, 0xFF177B9C, 0xFF2C87A4, 0xFF75B0C3, 0xFF1E7F9F, 0xFF177B9C, 0xFF187C9C, 0xFF177D9D, 0xD7147190, 0x7C0F6682,
|
||||
0x00000000, 0x00000000, 0x00000000, 0xAA999999, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFFDADADA, 0xFF94B1B9, 0xFF167695, 0xFF167695, 0xFF157593, 0xFF137492, 0xFF4E97AE, 0xFFA3CAD6, 0xFF4390A9, 0xFF147492, 0xFF157593, 0xFF177796, 0xBD126D8B, 0x190B5B75,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x91999999, 0xFFD2D2D2, 0xFFD9D9D9, 0xFFD9D9D9, 0xFFD9D9D9, 0xFFD9D9D9, 0xFFD9D9D9, 0xFFD9D9D9, 0xFFD9D9D9, 0xFFD9D9D9, 0xFFD9D9D9, 0xFFD9D9D9, 0xFFD9D9D9, 0xFFD9D9D9, 0xFFD9D9D9, 0xFFD6D7D8, 0xFF7FA4B0, 0xFF4D899B, 0xFF21718B, 0xFF136D8A, 0xFF0C6986, 0xFF7FB0BF, 0xFFE5EFF2, 0xFF78ABBB, 0xFF116C89, 0xFC136C88, 0xCA106682, 0x990F6580, 0x240B5E78,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x45999999, 0xFFBCBCBC, 0xFFD8D8D8, 0xFFD9D9D9, 0xFFD9D9D9, 0xFFD9D9D9, 0xFFD9D9D9, 0xFFD9D9D9, 0xFFD9D9D9, 0xFFD9D9D9, 0xFFD9D9D9, 0xFFD9D9D9, 0xFFD9D9D9, 0xFFD9D9D9, 0xFFD9D9D9, 0xFFD9D9D9, 0xFFD3D6D6, 0xFFBFC9CC, 0xFF3D7E93, 0xFF126681, 0xFF116682, 0xFF22728B, 0xFF44889D, 0xFF1F6F89, 0xF90F6480, 0xFC116681, 0x620D607A, 0x0A0A5A74, 0x020A5B75,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x7B9C9C9C, 0xD7B1B1B1, 0xFAC1C1C1, 0xFFC3C3C3, 0xFFC3C3C3, 0xFFC3C3C3, 0xFFC3C3C3, 0xFFC3C3C3, 0xFFC3C3C3, 0xFFC3C3C3, 0xFFC3C3C3, 0xFFC3C3C3, 0xFFC3C3C3, 0xFFC3C3C3, 0xFFC3C3C3, 0xFFC3C3C3, 0xFFBDBFC0, 0xFF819BA4, 0xFF96A8AD, 0xFF467C8E, 0xF220687F, 0xCB276A7F, 0xE90E607A, 0x520B5D77, 0x5F0B5D77, 0x2B0B5D77, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x07999999, 0x2D999999, 0x50999999, 0x55999999, 0x55999999, 0x55999999, 0x55999999, 0x55999999, 0x55999999, 0x55999999, 0x55999999, 0x55999999, 0x55999999, 0x55999999, 0x55999999, 0x55999999, 0x55999999, 0x55999999, 0x55999999, 0x72407283, 0x6626687D, 0x22467584, 0x800B5C76, 0x1A0A5B75, 0x00000000, 0x00000000, 0x00000000, 0x00000000
|
||||
}
|
||||
namespace {
|
||||
|
||||
// TODO: move this to external image files and zlib compress them into a source file as part of the build process
|
||||
char const *const toolbar_icons_svg[] = {
|
||||
// favourites star
|
||||
u8"<?xml version='1.0' encoding='UTF-8' standalone='no'?>"
|
||||
"<svg xmlns:svg='http://www.w3.org/2000/svg' xmlns='http://www.w3.org/2000/svg' version='1.1' height='104' width='104'>"
|
||||
"<path fill='#ffef0f' stroke='#ffdf1f' stroke-width='8' stroke-linejoin='round' d='m 50,6 11,35 h 37 l -30,22 12,35 -30,-21 -30,21 12,-35 -30,-22 h 37 z' />"
|
||||
"</svg>",
|
||||
// save diskette
|
||||
u8"<?xml version='1.0' encoding='UTF-8' standalone='no'?>"
|
||||
"<svg xmlns:svg='http://www.w3.org/2000/svg' xmlns='http://www.w3.org/2000/svg' version='1.1' height='100' width='100'>"
|
||||
"<path fill='#ffcf0f' d='m 0,3 a 3,3 0 0,1 3,-3 h 90 l 7,7 v 90 a 3,3 0 0,1 -3,3 h -94 a 3,3 0 0,1 -3,-3 z m 3,89 v 4 h 5 v -4 z m 89,0 v 4 h 5 v -4 z' />"
|
||||
"<path fill='#ffbf1f' d='m 10,0 h 67 v 32 a 3,3 0 0,1 -3,3 h -61 a 3,3 0 0,1 -3,-3 z' />"
|
||||
"<path fill='#b0b0b0' d='m 24,0 h 53 v 31 a 3,3 0 0,1 -3,3 h -47 a 3,3 0 0,1 -3,-3 z m 31,5 v 25 h 13 v -25 z' />"
|
||||
"<path fill='#ffbf1f' d='m 10,47 a 3,3 0 0,1 3,-3 h 74 a 3,3 0 0,1 3,3 v 53 h -80 z' />"
|
||||
"<path fill='#e7e7e7' d='m 11,48 a 3,3 0 0,1 3,-3 h 72 a 3,3 0 0,1 3,3 v 40 h -78 z' />"
|
||||
"<path fill='#f71f1f' d='m 11,87 h 78 v 9 a 3,3 0 0,1 -3,3 h -72 a 3,3 0 0,1 -3,-3 z' />"
|
||||
"</svg>",
|
||||
// info
|
||||
u8"<?xml version='1.0' encoding='UTF-8' standalone='no'?>"
|
||||
"<svg xmlns:svg='http://www.w3.org/2000/svg' xmlns='http://www.w3.org/2000/svg' version='1.1' height='100' width='100'>"
|
||||
"<circle cx='50' cy='50' r='47' fill='#001fff' stroke='#001bdf' stroke-width='6' />"
|
||||
"<circle cx='50' cy='20' r='10' fill='#ffffff' />"
|
||||
"<path fill='#ffffff' d='m 59,38 v 34 a 10,4 0 0,0 10,4 v 8 h -36 v -8 a 10,4 0 0,0 10,-4 v -23 a 8,4 0 0,0 -8,-4 v -6 z' />"
|
||||
"</svg>",
|
||||
// previous menu
|
||||
u8"<?xml version='1.0' encoding='UTF-8' standalone='no'?>"
|
||||
"<svg xmlns:svg='http://www.w3.org/2000/svg' xmlns='http://www.w3.org/2000/svg' version='1.1' height='100' width='100'>"
|
||||
"<rect y='8' x='8' height='84' width='84' fill='#001bdf' stroke='#001bdf' stroke-width='16' stroke-linejoin='round' />"
|
||||
"<rect y='10' x='10' height='80' width='80' fill='#001fff' stroke='#001fff' stroke-width='8' stroke-linejoin='round' />"
|
||||
"<path fill='#ffffff' stroke='#ffffff' stroke-width='8' stroke-linejoin='round' d='m 16,46 28,-28 v 16 q 40,12 40,48 q -10,-24 -40,-24 v 16 z' />"
|
||||
"</svg>",
|
||||
// exit
|
||||
u8"<?xml version='1.0' encoding='UTF-8' standalone='no'?>"
|
||||
"<svg xmlns:svg='http://www.w3.org/2000/svg' xmlns='http://www.w3.org/2000/svg' version='1.1' height='100' width='100'>"
|
||||
"<rect y='8' x='8' height='84' width='84' fill='#df0000' stroke='#df0000' stroke-width='16' stroke-linejoin='round' />"
|
||||
"<rect y='10' x='10' height='80' width='80' fill='#ff0000' stroke='#ff0000' stroke-width='8' stroke-linejoin='round' />"
|
||||
"<path fill='#ffffff' stroke='#ffffff' stroke-width='8' stroke-linejoin='round' d='m 16,24 8,-8 26,26 26,-26 8,8 -26,26 26,26 -8,8 -26,-26 -26,26 -8,-8 26,-26 z' />"
|
||||
"</svg>" };
|
||||
|
||||
enum
|
||||
{
|
||||
TOOLBAR_BITMAP_FAVORITE,
|
||||
TOOLBAR_BITMAP_SAVE,
|
||||
TOOLBAR_BITMAP_INFO,
|
||||
TOOLBAR_BITMAP_PREVMENU,
|
||||
TOOLBAR_BITMAP_EXIT
|
||||
};
|
||||
|
||||
#define UI_TOOLBAR_BUTTONS (std::size(toolbar_bitmap_bmp))
|
||||
constexpr size_t UI_TOOLBAR_BUTTONS = std::size(toolbar_icons_svg);
|
||||
|
||||
} // anonymous namespace
|
||||
|
||||
} // namespace ui
|
||||
|
||||
#endif // MAME_FRONTEND_UI_TOOLBAR_IPP
|
||||
|
@ -2042,14 +2042,18 @@ ui_software_info::ui_software_info(
|
||||
, alttitles()
|
||||
, available(false)
|
||||
{
|
||||
// show the list/item here
|
||||
infotext.append(_("swlist-info", "Software list/item"));
|
||||
infotext.append(1, '\n');
|
||||
infotext.append(listname);
|
||||
infotext.append(1, ':');
|
||||
infotext.append(shortname);
|
||||
|
||||
info.reserve(sw.info().size());
|
||||
bool firstinfo(true);
|
||||
for (software_info_item const &feature : sw.info())
|
||||
{
|
||||
// add info for the internal UI, localising recognised
|
||||
if (!firstinfo)
|
||||
infotext.append(2, '\n');
|
||||
firstinfo = false;
|
||||
// add info for the internal UI, localising recognised keys
|
||||
infotext.append(2, '\n');
|
||||
auto const found = std::lower_bound(
|
||||
std::begin(ui::SOFTWARE_INFO_NAMES),
|
||||
std::end(ui::SOFTWARE_INFO_NAMES),
|
||||
|
@ -377,6 +377,7 @@ enum
|
||||
HOVER_B_FAV,
|
||||
HOVER_B_EXPORT,
|
||||
HOVER_B_DATS,
|
||||
HOVER_BACKTRACK,
|
||||
HOVER_RPANEL_ARROW,
|
||||
HOVER_LPANEL_ARROW,
|
||||
HOVER_FILTER_FIRST,
|
||||
|
Loading…
Reference in New Issue
Block a user