mirror of https://github.com/mgba-emu/mgba.git
mGUI: Add GB palette overrides
This commit is contained in:
parent
6c3fb29d53
commit
ad14408739
|
@ -12,6 +12,7 @@
|
||||||
#include <mgba/internal/gba/gba.h>
|
#include <mgba/internal/gba/gba.h>
|
||||||
#ifdef M_CORE_GB
|
#ifdef M_CORE_GB
|
||||||
#include <mgba/internal/gb/gb.h>
|
#include <mgba/internal/gb/gb.h>
|
||||||
|
#include <mgba/internal/gb/overrides.h>
|
||||||
#endif
|
#endif
|
||||||
#include <mgba-util/gui/file-select.h>
|
#include <mgba-util/gui/file-select.h>
|
||||||
#include <mgba-util/gui/menu.h>
|
#include <mgba-util/gui/menu.h>
|
||||||
|
@ -40,6 +41,7 @@ void mGUIShowConfig(struct mGUIRunner* runner, struct GUIMenuItem* extra, size_t
|
||||||
.index = 0,
|
.index = 0,
|
||||||
.background = &runner->background.d
|
.background = &runner->background.d
|
||||||
};
|
};
|
||||||
|
size_t i;
|
||||||
GUIMenuItemListInit(&menu.items, 0);
|
GUIMenuItemListInit(&menu.items, 0);
|
||||||
*GUIMenuItemListAppend(&menu.items) = (struct GUIMenuItem) {
|
*GUIMenuItemListAppend(&menu.items) = (struct GUIMenuItem) {
|
||||||
.title = "Frameskip",
|
.title = "Frameskip",
|
||||||
|
@ -130,6 +132,18 @@ void mGUIShowConfig(struct mGUIRunner* runner, struct GUIMenuItem* extra, size_t
|
||||||
.title = "Select SGB BIOS path",
|
.title = "Select SGB BIOS path",
|
||||||
.data = "sgb.bios",
|
.data = "sgb.bios",
|
||||||
};
|
};
|
||||||
|
struct GUIMenuItem* palette = GUIMenuItemListAppend(&menu.items);
|
||||||
|
*palette = (struct GUIMenuItem) {
|
||||||
|
.title = "GB palette",
|
||||||
|
.data = "gb.pal",
|
||||||
|
};
|
||||||
|
const struct GBColorPreset* colorPresets;
|
||||||
|
palette->nStates = GBColorPresetList(&colorPresets);
|
||||||
|
const char** paletteStates = calloc(palette->nStates, sizeof(char*));
|
||||||
|
for (i = 0; i < palette->nStates; ++i) {
|
||||||
|
paletteStates[i] = colorPresets[i].name;
|
||||||
|
}
|
||||||
|
palette->validStates = paletteStates;
|
||||||
#endif
|
#endif
|
||||||
*GUIMenuItemListAppend(&menu.items) = (struct GUIMenuItem) {
|
*GUIMenuItemListAppend(&menu.items) = (struct GUIMenuItem) {
|
||||||
.title = "Interframe blending",
|
.title = "Interframe blending",
|
||||||
|
@ -189,7 +203,6 @@ void mGUIShowConfig(struct mGUIRunner* runner, struct GUIMenuItem* extra, size_t
|
||||||
.nStates = 2
|
.nStates = 2
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
size_t i;
|
|
||||||
const char* mapNames[GUI_MAX_INPUTS + 1];
|
const char* mapNames[GUI_MAX_INPUTS + 1];
|
||||||
if (runner->keySources) {
|
if (runner->keySources) {
|
||||||
for (i = 0; runner->keySources[i].id && i < GUI_MAX_INPUTS; ++i) {
|
for (i = 0; runner->keySources[i].id && i < GUI_MAX_INPUTS; ++i) {
|
||||||
|
@ -318,6 +331,23 @@ void mGUIShowConfig(struct mGUIRunner* runner, struct GUIMenuItem* extra, size_t
|
||||||
mCoreConfigSetValue(&runner->config, item->data, v->v.s);
|
mCoreConfigSetValue(&runner->config, item->data, v->v.s);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
#ifdef M_CORE_GB
|
||||||
|
} else if (!strcmp(item->data, "gb.pal")) {
|
||||||
|
const struct GBColorPreset* preset = &colorPresets[item->state];
|
||||||
|
mCoreConfigSetUIntValue(&runner->config, "gb.pal[0]", preset->colors[0] & 0xFFFFFF);
|
||||||
|
mCoreConfigSetUIntValue(&runner->config, "gb.pal[1]", preset->colors[1] & 0xFFFFFF);
|
||||||
|
mCoreConfigSetUIntValue(&runner->config, "gb.pal[2]", preset->colors[2] & 0xFFFFFF);
|
||||||
|
mCoreConfigSetUIntValue(&runner->config, "gb.pal[3]", preset->colors[3] & 0xFFFFFF);
|
||||||
|
mCoreConfigSetUIntValue(&runner->config, "gb.pal[4]", preset->colors[4] & 0xFFFFFF);
|
||||||
|
mCoreConfigSetUIntValue(&runner->config, "gb.pal[5]", preset->colors[5] & 0xFFFFFF);
|
||||||
|
mCoreConfigSetUIntValue(&runner->config, "gb.pal[6]", preset->colors[6] & 0xFFFFFF);
|
||||||
|
mCoreConfigSetUIntValue(&runner->config, "gb.pal[7]", preset->colors[7] & 0xFFFFFF);
|
||||||
|
mCoreConfigSetUIntValue(&runner->config, "gb.pal[8]", preset->colors[8] & 0xFFFFFF);
|
||||||
|
mCoreConfigSetUIntValue(&runner->config, "gb.pal[9]", preset->colors[9] & 0xFFFFFF);
|
||||||
|
mCoreConfigSetUIntValue(&runner->config, "gb.pal[10]", preset->colors[10] & 0xFFFFFF);
|
||||||
|
mCoreConfigSetUIntValue(&runner->config, "gb.pal[11]", preset->colors[11] & 0xFFFFFF);
|
||||||
|
mCoreConfigSetUIntValue(&runner->config, item->data, item->state);
|
||||||
|
#endif
|
||||||
} else {
|
} else {
|
||||||
mCoreConfigSetUIntValue(&runner->config, item->data, item->state);
|
mCoreConfigSetUIntValue(&runner->config, item->data, item->state);
|
||||||
}
|
}
|
||||||
|
@ -380,5 +410,8 @@ void mGUIShowConfig(struct mGUIRunner* runner, struct GUIMenuItem* extra, size_t
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#ifdef M_CORE_GB
|
||||||
|
free(paletteStates);
|
||||||
|
#endif
|
||||||
GUIMenuItemListDeinit(&menu.items);
|
GUIMenuItemListDeinit(&menu.items);
|
||||||
}
|
}
|
||||||
|
|
|
@ -651,6 +651,11 @@ void mGUIRun(struct mGUIRunner* runner, const char* path) {
|
||||||
}
|
}
|
||||||
mCoreConfigGetIntValue(&runner->config, "fpsCounter", &drawFps);
|
mCoreConfigGetIntValue(&runner->config, "fpsCounter", &drawFps);
|
||||||
mCoreConfigGetIntValue(&runner->config, "showOSD", &showOSD);
|
mCoreConfigGetIntValue(&runner->config, "showOSD", &showOSD);
|
||||||
|
#ifdef M_CORE_GB
|
||||||
|
if (runner->core->platform(runner->core) == mPLATFORM_GB) {
|
||||||
|
runner->core->reloadConfigOption(runner->core, "gb.pal", &runner->config);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
mLOG(GUI_RUNNER, DEBUG, "Shutting down...");
|
mLOG(GUI_RUNNER, DEBUG, "Shutting down...");
|
||||||
if (runner->gameUnloaded) {
|
if (runner->gameUnloaded) {
|
||||||
|
|
Loading…
Reference in New Issue