mirror of https://github.com/inolen/redream.git
added initial system page to ui
This commit is contained in:
parent
4009efb586
commit
e4087c56a8
|
@ -14,19 +14,6 @@
|
||||||
#include "guest/sh4/sh4.h"
|
#include "guest/sh4/sh4.h"
|
||||||
#include "options.h"
|
#include "options.h"
|
||||||
|
|
||||||
/* system settings */
|
|
||||||
static const char *regions[] = {
|
|
||||||
"japan", "usa", "europe",
|
|
||||||
};
|
|
||||||
|
|
||||||
static const char *languages[] = {
|
|
||||||
"japanese", "english", "german", "french", "spanish", "italian",
|
|
||||||
};
|
|
||||||
|
|
||||||
static const char *broadcasts[] = {
|
|
||||||
"ntsc", "pal", "pal_m", "pal_n",
|
|
||||||
};
|
|
||||||
|
|
||||||
/* address of syscall vectors */
|
/* address of syscall vectors */
|
||||||
enum {
|
enum {
|
||||||
VECTOR_SYSINFO = 0x0c0000b0,
|
VECTOR_SYSINFO = 0x0c0000b0,
|
||||||
|
@ -77,29 +64,29 @@ static void bios_override_settings(struct bios *bios) {
|
||||||
int bcast = 0;
|
int bcast = 0;
|
||||||
uint32_t time = bios_local_time();
|
uint32_t time = bios_local_time();
|
||||||
|
|
||||||
for (int i = 0; i < ARRAY_SIZE(regions); i++) {
|
for (int i = 0; i < NUM_REGIONS; i++) {
|
||||||
if (!strcmp(OPTION_region, regions[i])) {
|
if (!strcmp(OPTION_region, REGIONS[i])) {
|
||||||
region = i;
|
region = i;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int i = 0; i < ARRAY_SIZE(languages); i++) {
|
for (int i = 0; i < NUM_LANGUAGES; i++) {
|
||||||
if (!strcmp(OPTION_language, languages[i])) {
|
if (!strcmp(OPTION_language, LANGUAGES[i])) {
|
||||||
lang = i;
|
lang = i;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int i = 0; i < ARRAY_SIZE(broadcasts); i++) {
|
for (int i = 0; i < NUM_BROADCASTS; i++) {
|
||||||
if (!strcmp(OPTION_broadcast, broadcasts[i])) {
|
if (!strcmp(OPTION_broadcast, BROADCASTS[i])) {
|
||||||
bcast = i;
|
bcast = i;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
LOG_INFO("bios_override_settings region=%s lang=%s bcast=%s time=0x%08x",
|
LOG_INFO("bios_override_settings region=%s lang=%s bcast=%s time=0x%08x",
|
||||||
regions[region], languages[lang], broadcasts[bcast], time);
|
REGIONS[region], LANGUAGES[lang], BROADCASTS[bcast], time);
|
||||||
|
|
||||||
/* the region, language and broadcast settings exist in two locations:
|
/* the region, language and broadcast settings exist in two locations:
|
||||||
|
|
||||||
|
|
|
@ -694,43 +694,6 @@ static void host_debug_menu(struct host *host) {
|
||||||
|
|
||||||
if (igBeginMainMenuBar()) {
|
if (igBeginMainMenuBar()) {
|
||||||
if (igBeginMenu("HOST", 1)) {
|
if (igBeginMenu("HOST", 1)) {
|
||||||
if (igBeginMenu("sync", 1)) {
|
|
||||||
struct {
|
|
||||||
const char *desc;
|
|
||||||
int enabled;
|
|
||||||
} options[] = {
|
|
||||||
{"audio", audio_sync_enabled()}, /* */
|
|
||||||
{"video", video_sync_enabled()}, /* */
|
|
||||||
};
|
|
||||||
int num_options = (int)ARRAY_SIZE(options);
|
|
||||||
|
|
||||||
for (int i = 0; i < num_options; i++) {
|
|
||||||
const char *desc = options[i].desc;
|
|
||||||
int enabled = options[i].enabled;
|
|
||||||
|
|
||||||
if (igMenuItem(desc, NULL, enabled, 1)) {
|
|
||||||
int len = (int)strlen(OPTION_sync);
|
|
||||||
|
|
||||||
if (enabled) {
|
|
||||||
for (int i = 0; i < len; i++) {
|
|
||||||
if (OPTION_sync[i] == desc[0]) {
|
|
||||||
OPTION_sync[i] = OPTION_sync[len - 1];
|
|
||||||
OPTION_sync[len - 1] = 0;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
OPTION_sync[len] = desc[0];
|
|
||||||
OPTION_sync[len + 1] = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
OPTION_sync_dirty = 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
igEndMenu();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (igMenuItem("frame times", NULL, host->dbg.show_times, 1)) {
|
if (igMenuItem("frame times", NULL, host->dbg.show_times, 1)) {
|
||||||
host->dbg.show_times = !host->dbg.show_times;
|
host->dbg.show_times = !host->dbg.show_times;
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,12 +16,13 @@ enum {
|
||||||
IMFONT_NUM_FONTS,
|
IMFONT_NUM_FONTS,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/* note, any icon defined through IMICON_* must be listed here */
|
||||||
#define IMICON_RANGES \
|
#define IMICON_RANGES \
|
||||||
0xf00d, 0xf00d, 0xf028, 0xf028, 0xf067, 0xf067, 0xf07c, 0xf07c, 0xf0a0, \
|
0xf00d, 0xf00d, 0xf2db, 0xf2db, 0xf067, 0xf067, 0xf07c, 0xf07c, 0xf0a0, \
|
||||||
0xf0a0, 0xf108, 0xf108, 0xf11b, 0xf11b
|
0xf0a0, 0xf108, 0xf108, 0xf11b, 0xf11b
|
||||||
|
|
||||||
#define IMICON_TIMES u8"\uf00d"
|
#define IMICON_TIMES u8"\uf00d"
|
||||||
#define IMICON_VOLUME_UP u8"\uf028"
|
#define IMICON_MICROCHIP u8"\uf2db"
|
||||||
#define IMICON_PLUS u8"\uf067"
|
#define IMICON_PLUS u8"\uf067"
|
||||||
#define IMICON_FOLDER_OPEN u8"\uf07c"
|
#define IMICON_FOLDER_OPEN u8"\uf07c"
|
||||||
#define IMICON_HDD u8"\uf0a0"
|
#define IMICON_HDD u8"\uf0a0"
|
||||||
|
|
|
@ -8,8 +8,43 @@
|
||||||
#define DEFAULT_DEADZONE 4096
|
#define DEFAULT_DEADZONE 4096
|
||||||
|
|
||||||
/* clang-format off */
|
/* clang-format off */
|
||||||
|
const char *BROADCASTS[] = {
|
||||||
|
"ntsc",
|
||||||
|
"pal",
|
||||||
|
"pal_m",
|
||||||
|
"pal_n",
|
||||||
|
};
|
||||||
|
const int NUM_BROADCASTS = ARRAY_SIZE(BROADCASTS);
|
||||||
|
|
||||||
|
const char *REGIONS[] = {
|
||||||
|
"japan",
|
||||||
|
"usa",
|
||||||
|
"europe",
|
||||||
|
};
|
||||||
|
const int NUM_REGIONS = ARRAY_SIZE(REGIONS);
|
||||||
|
|
||||||
|
const char *LANGUAGES[] = {
|
||||||
|
"japanese",
|
||||||
|
"english",
|
||||||
|
"german",
|
||||||
|
"french",
|
||||||
|
"spanish",
|
||||||
|
"italian",
|
||||||
|
};
|
||||||
|
const int NUM_LANGUAGES = ARRAY_SIZE(LANGUAGES);
|
||||||
|
|
||||||
|
const char *TIMESYNCS[] = {
|
||||||
|
"audio and video",
|
||||||
|
"audio only",
|
||||||
|
"video only",
|
||||||
|
"none",
|
||||||
|
};
|
||||||
|
const int NUM_TIMESYNCS = ARRAY_SIZE(TIMESYNCS);
|
||||||
|
|
||||||
const char *ASPECT_RATIOS[] = {
|
const char *ASPECT_RATIOS[] = {
|
||||||
"stretch", "16:9", "4:3",
|
"stretch",
|
||||||
|
"16:9",
|
||||||
|
"4:3",
|
||||||
};
|
};
|
||||||
const int NUM_ASPECT_RATIOS = ARRAY_SIZE(ASPECT_RATIOS);
|
const int NUM_ASPECT_RATIOS = ARRAY_SIZE(ASPECT_RATIOS);
|
||||||
|
|
||||||
|
@ -40,43 +75,43 @@ int *DEADZONES[] = {
|
||||||
};
|
};
|
||||||
|
|
||||||
/* host */
|
/* host */
|
||||||
DEFINE_OPTION_STRING(sync, "av", "Sync control");
|
DEFINE_OPTION_INT(bios, 0, "Boot to bios");
|
||||||
DEFINE_OPTION_INT(bios, 0, "Boot to bios");
|
DEFINE_PERSISTENT_OPTION_STRING(sync, "audio and video", "Time sync");
|
||||||
DEFINE_PERSISTENT_OPTION_INT(fullscreen, 0, "Start window fullscreen");
|
DEFINE_PERSISTENT_OPTION_INT(fullscreen, 0, "Start window fullscreen");
|
||||||
DEFINE_PERSISTENT_OPTION_INT(key_a, 'l', "A button mapping");
|
DEFINE_PERSISTENT_OPTION_INT(key_a, 'l', "A button mapping");
|
||||||
DEFINE_PERSISTENT_OPTION_INT(key_b, 'p', "B button mapping");
|
DEFINE_PERSISTENT_OPTION_INT(key_b, 'p', "B button mapping");
|
||||||
DEFINE_PERSISTENT_OPTION_INT(key_x, 'k', "X button mapping");
|
DEFINE_PERSISTENT_OPTION_INT(key_x, 'k', "X button mapping");
|
||||||
DEFINE_PERSISTENT_OPTION_INT(key_y, 'o', "Y button mapping");
|
DEFINE_PERSISTENT_OPTION_INT(key_y, 'o', "Y button mapping");
|
||||||
DEFINE_PERSISTENT_OPTION_INT(key_start, ' ', "Start button mapping");
|
DEFINE_PERSISTENT_OPTION_INT(key_start, ' ', "Start button mapping");
|
||||||
DEFINE_PERSISTENT_OPTION_INT(key_dup, 't', "DPAD Up mapping");
|
DEFINE_PERSISTENT_OPTION_INT(key_dup, 't', "DPAD Up mapping");
|
||||||
DEFINE_PERSISTENT_OPTION_INT(key_ddown, 'g', "DPAD Down mapping");
|
DEFINE_PERSISTENT_OPTION_INT(key_ddown, 'g', "DPAD Down mapping");
|
||||||
DEFINE_PERSISTENT_OPTION_INT(key_dleft, 'f', "DPAD Left mapping");
|
DEFINE_PERSISTENT_OPTION_INT(key_dleft, 'f', "DPAD Left mapping");
|
||||||
DEFINE_PERSISTENT_OPTION_INT(key_dright, 'h', "DPAD Right mapping");
|
DEFINE_PERSISTENT_OPTION_INT(key_dright, 'h', "DPAD Right mapping");
|
||||||
DEFINE_PERSISTENT_OPTION_INT(key_joyx_neg, 'a', "Joystick -X axis mapping");
|
DEFINE_PERSISTENT_OPTION_INT(key_joyx_neg, 'a', "Joystick -X axis mapping");
|
||||||
DEFINE_PERSISTENT_OPTION_INT(key_joyx_pos, 'd', "Joystick +X axis mapping");
|
DEFINE_PERSISTENT_OPTION_INT(key_joyx_pos, 'd', "Joystick +X axis mapping");
|
||||||
DEFINE_PERSISTENT_OPTION_INT(key_joyy_neg, 'w', "Joystick -Y axis mapping");
|
DEFINE_PERSISTENT_OPTION_INT(key_joyy_neg, 'w', "Joystick -Y axis mapping");
|
||||||
DEFINE_PERSISTENT_OPTION_INT(key_joyy_pos, 's', "Joystick +Y axis mapping");
|
DEFINE_PERSISTENT_OPTION_INT(key_joyy_pos, 's', "Joystick +Y axis mapping");
|
||||||
DEFINE_PERSISTENT_OPTION_INT(key_ltrig, '[', "Left trigger mapping");
|
DEFINE_PERSISTENT_OPTION_INT(key_ltrig, '[', "Left trigger mapping");
|
||||||
DEFINE_PERSISTENT_OPTION_INT(key_rtrig, ']', "Right trigger mapping");
|
DEFINE_PERSISTENT_OPTION_INT(key_rtrig, ']', "Right trigger mapping");
|
||||||
|
|
||||||
DEFINE_PERSISTENT_OPTION_INT(deadzone_0, DEFAULT_DEADZONE, "Deadzone for controller on port 0");
|
DEFINE_PERSISTENT_OPTION_INT(deadzone_0, DEFAULT_DEADZONE, "Deadzone for controller on port 0");
|
||||||
DEFINE_PERSISTENT_OPTION_INT(deadzone_1, DEFAULT_DEADZONE, "Deadzone for controller on port 1");
|
DEFINE_PERSISTENT_OPTION_INT(deadzone_1, DEFAULT_DEADZONE, "Deadzone for controller on port 1");
|
||||||
DEFINE_PERSISTENT_OPTION_INT(deadzone_2, DEFAULT_DEADZONE, "Deadzone for controller on port 2");
|
DEFINE_PERSISTENT_OPTION_INT(deadzone_2, DEFAULT_DEADZONE, "Deadzone for controller on port 2");
|
||||||
DEFINE_PERSISTENT_OPTION_INT(deadzone_3, DEFAULT_DEADZONE, "Deadzone for controller on port 3");
|
DEFINE_PERSISTENT_OPTION_INT(deadzone_3, DEFAULT_DEADZONE, "Deadzone for controller on port 3");
|
||||||
|
|
||||||
/* emulator */
|
/* emulator */
|
||||||
DEFINE_PERSISTENT_OPTION_STRING(aspect, "4:3", "Video aspect ratio");
|
DEFINE_PERSISTENT_OPTION_STRING(aspect, "4:3", "Video aspect ratio");
|
||||||
|
|
||||||
/* bios */
|
/* bios */
|
||||||
DEFINE_PERSISTENT_OPTION_STRING(region, "usa", "System region");
|
DEFINE_PERSISTENT_OPTION_STRING(region, "usa", "System region");
|
||||||
DEFINE_PERSISTENT_OPTION_STRING(language, "english", "System language");
|
DEFINE_PERSISTENT_OPTION_STRING(language, "english", "System language");
|
||||||
DEFINE_PERSISTENT_OPTION_STRING(broadcast, "ntsc", "System broadcast mode");
|
DEFINE_PERSISTENT_OPTION_STRING(broadcast, "ntsc", "System broadcast mode");
|
||||||
|
|
||||||
/* jit */
|
/* jit */
|
||||||
DEFINE_OPTION_INT(perf, 0, "Create maps for compiled code for use with perf");
|
DEFINE_OPTION_INT(perf, 0, "Create maps for compiled code for use with perf");
|
||||||
|
|
||||||
/* ui */
|
/* ui */
|
||||||
DEFINE_PERSISTENT_OPTION_STRING(gamedir, "", "Directories to scan for games");
|
DEFINE_PERSISTENT_OPTION_STRING(gamedir, "", "Directories to scan for games");
|
||||||
|
|
||||||
/* clang-format on */
|
/* clang-format on */
|
||||||
|
|
||||||
|
|
|
@ -16,6 +16,18 @@ struct button_map {
|
||||||
int *dirty;
|
int *dirty;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
extern const char *BROADCASTS[];
|
||||||
|
extern const int NUM_BROADCASTS;
|
||||||
|
|
||||||
|
extern const char *LANGUAGES[];
|
||||||
|
extern const int NUM_LANGUAGES;
|
||||||
|
|
||||||
|
extern const char *REGIONS[];
|
||||||
|
extern const int NUM_REGIONS;
|
||||||
|
|
||||||
|
extern const char *TIMESYNCS[];
|
||||||
|
extern const int NUM_TIMESYNCS;
|
||||||
|
|
||||||
extern const char *ASPECT_RATIOS[];
|
extern const char *ASPECT_RATIOS[];
|
||||||
extern const int NUM_ASPECT_RATIOS;
|
extern const int NUM_ASPECT_RATIOS;
|
||||||
|
|
||||||
|
|
76
src/ui.c
76
src/ui.c
|
@ -134,7 +134,7 @@ static struct page pages[UI_NUM_PAGES];
|
||||||
#define UI_STR_BTN_CANCEL "Cancel"
|
#define UI_STR_BTN_CANCEL "Cancel"
|
||||||
#define UI_STR_BTN_ADD "Add"
|
#define UI_STR_BTN_ADD "Add"
|
||||||
#define UI_STR_CARD_LIBRARY " " IMICON_HDD "\nLibrary"
|
#define UI_STR_CARD_LIBRARY " " IMICON_HDD "\nLibrary"
|
||||||
#define UI_STR_CARD_AUDIO " " IMICON_VOLUME_UP "\nAudio"
|
#define UI_STR_CARD_SYSTEM " " IMICON_MICROCHIP "\nSystem"
|
||||||
#define UI_STR_CARD_VIDEO " " IMICON_DESKTOP "\nVideo"
|
#define UI_STR_CARD_VIDEO " " IMICON_DESKTOP "\nVideo"
|
||||||
#define UI_STR_CARD_INPUT " " IMICON_GAMEPAD "\nInput"
|
#define UI_STR_CARD_INPUT " " IMICON_GAMEPAD "\nInput"
|
||||||
#define UI_STR_LIBRARY_ADD "Add Directory"
|
#define UI_STR_LIBRARY_ADD "Add Directory"
|
||||||
|
@ -945,9 +945,9 @@ static void ui_video_build(struct ui *ui) {
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* audio page
|
* system page
|
||||||
*/
|
*/
|
||||||
static void ui_audio_build(struct ui *ui) {
|
static void ui_system_build(struct ui *ui) {
|
||||||
struct ImGuiIO *io = igGetIO();
|
struct ImGuiIO *io = igGetIO();
|
||||||
|
|
||||||
struct ImVec2 size = {UI_PAGE_MAX_WIDTH, UI_PAGE_MAX_HEIGHT};
|
struct ImVec2 size = {UI_PAGE_MAX_WIDTH, UI_PAGE_MAX_HEIGHT};
|
||||||
|
@ -956,9 +956,67 @@ static void ui_audio_build(struct ui *ui) {
|
||||||
struct ImVec2 btn_size = {-1.0f, VH(8.0f)};
|
struct ImVec2 btn_size = {-1.0f, VH(8.0f)};
|
||||||
|
|
||||||
igSetCursorPos(pos);
|
igSetCursorPos(pos);
|
||||||
igBeginChild("audio", size, false, ImGuiWindowFlags_NavFlattened);
|
igBeginChild("system", size, false, ImGuiWindowFlags_NavFlattened);
|
||||||
|
|
||||||
igText("Not available yet.");
|
igPushStyle_Btn();
|
||||||
|
|
||||||
|
{
|
||||||
|
if (igOptionString("Time sync", OPTION_sync, btn_size)) {
|
||||||
|
int next = 0;
|
||||||
|
for (int i = 0; i < NUM_TIMESYNCS; i++) {
|
||||||
|
if (!strcmp(TIMESYNCS[i], OPTION_sync)) {
|
||||||
|
next = (i + 1) % NUM_TIMESYNCS;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
strncpy(OPTION_sync, TIMESYNCS[next], sizeof(OPTION_sync));
|
||||||
|
OPTION_sync_dirty = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
if (igOptionString("Region", OPTION_region, btn_size)) {
|
||||||
|
int next = 0;
|
||||||
|
for (int i = 0; i < NUM_REGIONS; i++) {
|
||||||
|
if (!strcmp(REGIONS[i], OPTION_region)) {
|
||||||
|
next = (i + 1) % NUM_REGIONS;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
strncpy(OPTION_region, REGIONS[next], sizeof(OPTION_region));
|
||||||
|
OPTION_region_dirty = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
if (igOptionString("Language", OPTION_language, btn_size)) {
|
||||||
|
int next = 0;
|
||||||
|
for (int i = 0; i < NUM_LANGUAGES; i++) {
|
||||||
|
if (!strcmp(LANGUAGES[i], OPTION_language)) {
|
||||||
|
next = (i + 1) % NUM_LANGUAGES;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
strncpy(OPTION_language, LANGUAGES[next], sizeof(OPTION_language));
|
||||||
|
OPTION_language_dirty = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
if (igOptionString("Broadcast", OPTION_broadcast, btn_size)) {
|
||||||
|
int next = 0;
|
||||||
|
for (int i = 0; i < NUM_BROADCASTS; i++) {
|
||||||
|
if (!strcmp(BROADCASTS[i], OPTION_broadcast)) {
|
||||||
|
next = (i + 1) % NUM_BROADCASTS;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
strncpy(OPTION_broadcast, BROADCASTS[next], sizeof(OPTION_broadcast));
|
||||||
|
OPTION_broadcast_dirty = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
igPopStyle_Btn();
|
||||||
|
|
||||||
igEndChild();
|
igEndChild();
|
||||||
}
|
}
|
||||||
|
@ -1061,8 +1119,8 @@ static void ui_options_build(struct ui *ui) {
|
||||||
|
|
||||||
igSetCursorPosX(min.x + btn_size.x + btn_padding.x);
|
igSetCursorPosX(min.x + btn_size.x + btn_padding.x);
|
||||||
igSetCursorPosY(min.y);
|
igSetCursorPosY(min.y);
|
||||||
if (igButton(UI_STR_CARD_AUDIO, btn_size)) {
|
if (igButton(UI_STR_CARD_SYSTEM, btn_size)) {
|
||||||
ui_set_page(ui, UI_PAGE_AUDIO);
|
ui_set_page(ui, UI_PAGE_SYSTEM);
|
||||||
}
|
}
|
||||||
|
|
||||||
igSetCursorPosX(min.x);
|
igSetCursorPosX(min.x);
|
||||||
|
@ -1512,8 +1570,8 @@ struct ui *ui_create(struct host *host) {
|
||||||
pages[UI_PAGE_LIBRARY].name = NULL;
|
pages[UI_PAGE_LIBRARY].name = NULL;
|
||||||
pages[UI_PAGE_LIBRARY].build = ui_library_build;
|
pages[UI_PAGE_LIBRARY].build = ui_library_build;
|
||||||
|
|
||||||
pages[UI_PAGE_AUDIO].name = NULL;
|
pages[UI_PAGE_SYSTEM].name = NULL;
|
||||||
pages[UI_PAGE_AUDIO].build = ui_audio_build;
|
pages[UI_PAGE_SYSTEM].build = ui_system_build;
|
||||||
|
|
||||||
pages[UI_PAGE_VIDEO].name = NULL;
|
pages[UI_PAGE_VIDEO].name = NULL;
|
||||||
pages[UI_PAGE_VIDEO].build = ui_video_build;
|
pages[UI_PAGE_VIDEO].build = ui_video_build;
|
||||||
|
|
Loading…
Reference in New Issue