mirror of https://github.com/mgba-emu/mgba.git
GB: Presets for Game Boy palettes
This commit is contained in:
parent
fe195923a4
commit
a713d51e05
1
CHANGES
1
CHANGES
|
@ -1,5 +1,6 @@
|
|||
0.10.0: (Future)
|
||||
Features:
|
||||
- Presets for Game Boy palettes
|
||||
- Tool for converting scanned pictures of e-Reader cards to raw dotcode data
|
||||
- Cheat code support in homebrew ports
|
||||
Emulation fixes:
|
||||
|
|
|
@ -20,11 +20,18 @@ struct GBCartridgeOverride {
|
|||
uint32_t gbColors[12];
|
||||
};
|
||||
|
||||
struct GBColorPreset {
|
||||
const char* name;
|
||||
uint32_t colors[12];
|
||||
};
|
||||
|
||||
struct Configuration;
|
||||
bool GBOverrideFind(const struct Configuration*, struct GBCartridgeOverride* override);
|
||||
bool GBOverrideColorFind(struct GBCartridgeOverride* override);
|
||||
void GBOverrideSave(struct Configuration*, const struct GBCartridgeOverride* override);
|
||||
|
||||
size_t GBColorPresetList(const struct GBColorPreset** presets);
|
||||
|
||||
struct GB;
|
||||
void GBOverrideApply(struct GB*, const struct GBCartridgeOverride*);
|
||||
void GBOverrideApplyDefaults(struct GB*);
|
||||
|
|
|
@ -500,6 +500,37 @@ static const struct GBCartridgeOverride _overrides[] = {
|
|||
{ 0, 0, 0, { 0 } }
|
||||
};
|
||||
|
||||
static const struct GBColorPreset _colorPresets[] = {
|
||||
{
|
||||
"Grayscale",
|
||||
{
|
||||
PAL_ENTRY(0x7FFF, 0x56B5, 0x294A, 0x0000),
|
||||
PAL_ENTRY(0x7FFF, 0x56B5, 0x294A, 0x0000),
|
||||
PAL_ENTRY(0x7FFF, 0x56B5, 0x294A, 0x0000)
|
||||
}
|
||||
},
|
||||
{
|
||||
"DMG Green",
|
||||
{
|
||||
PAL_ENTRY(0x2691, 0x19A9, 0x1105, 0x04A3),
|
||||
PAL_ENTRY(0x2691, 0x19A9, 0x1105, 0x04A3),
|
||||
PAL_ENTRY(0x2691, 0x19A9, 0x1105, 0x04A3)
|
||||
}
|
||||
},
|
||||
{ "GBC Right", PALETTE(18, 18, 18), },
|
||||
{ "GBC Left", PALETTE(4, 3, 28), },
|
||||
{ "GBC Up", PALETTE(0, 0, 0), },
|
||||
{ "GBC Down", PALETTE(12, 12, 12), },
|
||||
{ "GBC Right + A", PALETTE(4, 4, 29), },
|
||||
{ "GBC Left + A", PALETTE(4, 0, 2), },
|
||||
{ "GBC Up + A", PALETTE(3, 28, 4), },
|
||||
{ "GBC Down + A", PALETTE(24, 24, 24), },
|
||||
{ "GBC Right + B", PALETTE(27, 27, 27), },
|
||||
{ "GBC Left + B", PALETTE(5, 5, 5), },
|
||||
{ "GBC Up + B", PALETTE(0, 0, 1), },
|
||||
{ "GBC Down + B", PALETTE(28, 3, 6), },
|
||||
};
|
||||
|
||||
bool GBOverrideColorFind(struct GBCartridgeOverride* override) {
|
||||
int i;
|
||||
for (i = 0; _colorOverrides[i].headerCrc32; ++i) {
|
||||
|
@ -635,6 +666,11 @@ void GBOverrideSave(struct Configuration* config, const struct GBCartridgeOverri
|
|||
}
|
||||
}
|
||||
|
||||
size_t GBColorPresetList(const struct GBColorPreset** presets) {
|
||||
*presets = _colorPresets;
|
||||
return sizeof(_colorPresets) / sizeof(*_colorPresets);
|
||||
}
|
||||
|
||||
void GBOverrideApply(struct GB* gb, const struct GBCartridgeOverride* override) {
|
||||
if (override->model != GB_MODEL_AUTODETECT) {
|
||||
gb->model = override->model;
|
||||
|
|
|
@ -30,20 +30,9 @@ protected slots:
|
|||
void updateTiles(bool force);
|
||||
|
||||
protected:
|
||||
#ifdef M_CORE_GBA
|
||||
virtual void updateTilesGBA(bool force) = 0;
|
||||
#endif
|
||||
#ifdef M_CORE_GB
|
||||
virtual void updateTilesGB(bool force) = 0;
|
||||
#endif
|
||||
|
||||
void resizeEvent(QResizeEvent*) override;
|
||||
void showEvent(QShowEvent*) override;
|
||||
|
||||
mCacheSet* const m_cacheSet;
|
||||
std::shared_ptr<CoreController> m_controller;
|
||||
|
||||
protected:
|
||||
struct ObjInfo {
|
||||
unsigned tile;
|
||||
unsigned width;
|
||||
|
@ -70,6 +59,16 @@ protected:
|
|||
|
||||
bool lookupObj(int id, struct ObjInfo*);
|
||||
|
||||
#ifdef M_CORE_GBA
|
||||
virtual void updateTilesGBA(bool force) = 0;
|
||||
#endif
|
||||
#ifdef M_CORE_GB
|
||||
virtual void updateTilesGB(bool force) = 0;
|
||||
#endif
|
||||
|
||||
void resizeEvent(QResizeEvent*) override;
|
||||
void showEvent(QShowEvent*) override;
|
||||
|
||||
private:
|
||||
#ifdef M_CORE_GBA
|
||||
bool lookupObjGBA(int id, struct ObjInfo*);
|
||||
|
|
|
@ -83,6 +83,20 @@ OverrideView::OverrideView(ConfigController* config, QWidget* parent)
|
|||
m_gbColors[colorId] = color.rgb() | 0xFF000000;
|
||||
});
|
||||
}
|
||||
|
||||
const GBColorPreset* colorPresets;
|
||||
size_t nPresets = GBColorPresetList(&colorPresets);
|
||||
for (size_t i = 0; i < nPresets; ++i) {
|
||||
m_ui.colorPreset->addItem(QString(colorPresets[i].name));
|
||||
}
|
||||
connect(m_ui.colorPreset, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), this, [this, colorPresets](int n) {
|
||||
const GBColorPreset* preset = &colorPresets[n];
|
||||
for (int colorId = 0; colorId < 12; ++colorId) {
|
||||
uint32_t color = preset->colors[colorId] | 0xFF000000;
|
||||
m_colorPickers[colorId].setColor(color);
|
||||
m_gbColors[colorId] = color;
|
||||
}
|
||||
});
|
||||
#endif
|
||||
|
||||
#ifndef M_CORE_GBA
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>444</width>
|
||||
<height>284</height>
|
||||
<height>288</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="sizePolicy">
|
||||
|
@ -249,14 +249,14 @@
|
|||
</item>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="0">
|
||||
<item row="3" column="0">
|
||||
<widget class="QLabel" name="label_5">
|
||||
<property name="text">
|
||||
<string>Background Colors</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="1">
|
||||
<item row="3" column="1">
|
||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||
<item>
|
||||
<widget class="QFrame" name="color0">
|
||||
|
@ -336,21 +336,21 @@
|
|||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item row="3" column="0">
|
||||
<item row="4" column="0">
|
||||
<widget class="QLabel" name="label_6">
|
||||
<property name="text">
|
||||
<string>Sprite Colors 1</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="0">
|
||||
<item row="5" column="0">
|
||||
<widget class="QLabel" name="label_7">
|
||||
<property name="text">
|
||||
<string>Sprite Colors 2</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="1">
|
||||
<item row="4" column="1">
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_3">
|
||||
<item>
|
||||
<widget class="QFrame" name="color4">
|
||||
|
@ -430,7 +430,7 @@
|
|||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item row="4" column="1">
|
||||
<item row="5" column="1">
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_4">
|
||||
<item>
|
||||
<widget class="QFrame" name="color8">
|
||||
|
@ -510,6 +510,16 @@
|
|||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item row="2" column="1">
|
||||
<widget class="QComboBox" name="colorPreset"/>
|
||||
</item>
|
||||
<item row="2" column="0">
|
||||
<widget class="QLabel" name="label_15">
|
||||
<property name="text">
|
||||
<string>Palette preset</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</widget>
|
||||
|
|
|
@ -17,6 +17,7 @@
|
|||
|
||||
#ifdef M_CORE_GB
|
||||
#include "GameBoy.h"
|
||||
#include <mgba/internal/gb/overrides.h>
|
||||
#endif
|
||||
|
||||
#include <mgba/core/serialize.h>
|
||||
|
@ -258,6 +259,20 @@ SettingsView::SettingsView(ConfigController* controller, InputController* inputC
|
|||
m_gbColors[colorId] = color.rgb();
|
||||
});
|
||||
}
|
||||
|
||||
const GBColorPreset* colorPresets;
|
||||
size_t nPresets = GBColorPresetList(&colorPresets);
|
||||
for (size_t i = 0; i < nPresets; ++i) {
|
||||
m_ui.colorPreset->addItem(QString(colorPresets[i].name));
|
||||
}
|
||||
connect(m_ui.colorPreset, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), this, [this, colorPresets](int n) {
|
||||
const GBColorPreset* preset = &colorPresets[n];
|
||||
for (int colorId = 0; colorId < 12; ++colorId) {
|
||||
uint32_t color = preset->colors[colorId] | 0xFF000000;
|
||||
m_colorPickers[colorId].setColor(color);
|
||||
m_gbColors[colorId] = color;
|
||||
}
|
||||
});
|
||||
#else
|
||||
m_ui.gbBiosBrowse->hide();
|
||||
m_ui.gbcBiosBrowse->hide();
|
||||
|
|
|
@ -1554,13 +1554,23 @@
|
|||
</widget>
|
||||
</item>
|
||||
<item row="6" column="0">
|
||||
<widget class="QLabel" name="label_40">
|
||||
<property name="text">
|
||||
<string>Preset:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="6" column="1">
|
||||
<widget class="QComboBox" name="colorPreset"/>
|
||||
</item>
|
||||
<item row="7" column="0">
|
||||
<widget class="QLabel" name="label_28">
|
||||
<property name="text">
|
||||
<string>Default BG colors:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="6" column="1">
|
||||
<item row="7" column="1">
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_9">
|
||||
<item>
|
||||
<widget class="QFrame" name="color0">
|
||||
|
@ -1640,14 +1650,14 @@
|
|||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item row="7" column="0">
|
||||
<item row="8" column="0">
|
||||
<widget class="QLabel" name="label_69">
|
||||
<property name="text">
|
||||
<string>Default sprite colors 1:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="7" column="1">
|
||||
<item row="8" column="1">
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_15">
|
||||
<item>
|
||||
<widget class="QFrame" name="color4">
|
||||
|
@ -1727,14 +1737,14 @@
|
|||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item row="8" column="0">
|
||||
<item row="9" column="0">
|
||||
<widget class="QLabel" name="label_70">
|
||||
<property name="text">
|
||||
<string>Default sprite colors 2:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="8" column="1">
|
||||
<item row="9" column="1">
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_37">
|
||||
<item>
|
||||
<widget class="QFrame" name="color8">
|
||||
|
@ -1814,35 +1824,35 @@
|
|||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item row="9" column="1">
|
||||
<item row="10" column="1">
|
||||
<widget class="QCheckBox" name="useCgbColors">
|
||||
<property name="text">
|
||||
<string>Use GBC colors in GB games</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="10" column="1">
|
||||
<item row="11" column="1">
|
||||
<widget class="QCheckBox" name="sgbBorders">
|
||||
<property name="text">
|
||||
<string>Super Game Boy borders</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="11" column="0" colspan="2">
|
||||
<item row="12" column="0" colspan="2">
|
||||
<widget class="Line" name="line_11">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="12" column="0">
|
||||
<item row="13" column="0">
|
||||
<widget class="QLabel" name="label_27">
|
||||
<property name="text">
|
||||
<string>Camera driver:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="12" column="1">
|
||||
<item row="13" column="1">
|
||||
<widget class="QComboBox" name="cameraDriver">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
|
||||
|
@ -1852,14 +1862,14 @@
|
|||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="13" column="0">
|
||||
<item row="14" column="0">
|
||||
<widget class="QLabel" name="label_35">
|
||||
<property name="text">
|
||||
<string>Camera:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="13" column="1">
|
||||
<item row="14" column="1">
|
||||
<widget class="QComboBox" name="camera">
|
||||
<property name="enabled">
|
||||
<bool>false</bool>
|
||||
|
|
Loading…
Reference in New Issue