From 8ca1e4a0800fb211dbfd22ba2308da3795cbd329 Mon Sep 17 00:00:00 2001 From: CasualPokePlayer <50538166+CasualPokePlayer@users.noreply.github.com> Date: Wed, 11 May 2022 00:00:43 -0700 Subject: [PATCH] pull in sameboy upstream and implement custom palettes for sameboy dmg (resolves #3239 for dmg, cgb should be fielded as an upstream request) --- Assets/dll/libsameboy.dll | Bin 280576 -> 282112 bytes .../MainForm.Designer.cs | 8 + src/BizHawk.Client.EmuHawk/MainForm.Events.cs | 10 + src/BizHawk.Client.EmuHawk/MainForm.cs | 2 + .../GB/SameBoyColorChooserForm.Designer.cs | 192 +++++++++++ .../config/GB/SameBoyColorChooserForm.cs | 325 ++++++++++++++++++ .../config/GB/SameBoyColorChooserForm.resx | 120 +++++++ .../Consoles/Nintendo/SameBoy/LibSameBoy.cs | 2 +- .../Nintendo/SameBoy/SameBoy.ISettable.cs | 16 +- submodules/sameboy/BizInterface.c | 22 +- submodules/sameboy/libsameboy | 2 +- 11 files changed, 694 insertions(+), 5 deletions(-) create mode 100644 src/BizHawk.Client.EmuHawk/config/GB/SameBoyColorChooserForm.Designer.cs create mode 100644 src/BizHawk.Client.EmuHawk/config/GB/SameBoyColorChooserForm.cs create mode 100644 src/BizHawk.Client.EmuHawk/config/GB/SameBoyColorChooserForm.resx diff --git a/Assets/dll/libsameboy.dll b/Assets/dll/libsameboy.dll index 7a054058fd2eed5dd0a3a95ccfab6113ed1fd4ee..0f0863740b2e8a07a3b0c4755748d8d2235f3faf 100644 GIT binary patch delta 88904 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 delta 87871 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 osa``LC7865zFK8nWm{!m(); diff --git a/src/BizHawk.Client.EmuHawk/MainForm.cs b/src/BizHawk.Client.EmuHawk/MainForm.cs index 614eede306..dd12a91bc9 100644 --- a/src/BizHawk.Client.EmuHawk/MainForm.cs +++ b/src/BizHawk.Client.EmuHawk/MainForm.cs @@ -33,6 +33,7 @@ using BizHawk.Emulation.Cores.Nintendo.Gameboy; using BizHawk.Emulation.Cores.Nintendo.GBA; using BizHawk.Emulation.Cores.Nintendo.N64; using BizHawk.Emulation.Cores.Nintendo.NES; +using BizHawk.Emulation.Cores.Nintendo.Sameboy; using BizHawk.Emulation.Cores.Nintendo.SNES; using BizHawk.Emulation.Cores.Nintendo.SNES9X; using BizHawk.Emulation.Cores.Sony.PSX; @@ -1991,6 +1992,7 @@ namespace BizHawk.Client.EmuHawk case VSystemID.Raw.GBC: case VSystemID.Raw.SGB when Emulator is Gameboy: GBSubMenu.Visible = true; + SameBoyColorChooserMenuItem.Visible = Emulator is Sameboy sameboy && !sameboy.IsCGBMode(); // palette config only works in DMG mode break; case VSystemID.Raw.SNES when Emulator is LibsnesCore { IsSGB: true }: // doesn't use "SGB" sysID SNESSubMenu.Text = "&SGB"; diff --git a/src/BizHawk.Client.EmuHawk/config/GB/SameBoyColorChooserForm.Designer.cs b/src/BizHawk.Client.EmuHawk/config/GB/SameBoyColorChooserForm.Designer.cs new file mode 100644 index 0000000000..8b0e71bc0f --- /dev/null +++ b/src/BizHawk.Client.EmuHawk/config/GB/SameBoyColorChooserForm.Designer.cs @@ -0,0 +1,192 @@ +namespace BizHawk.Client.EmuHawk +{ + partial class SameBoyColorChooserForm + { + ///

+ /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.panel1 = new System.Windows.Forms.Panel(); + this.panel2 = new System.Windows.Forms.Panel(); + this.panel3 = new System.Windows.Forms.Panel(); + this.panel4 = new System.Windows.Forms.Panel(); + this.panel5 = new System.Windows.Forms.Panel(); + this.label1 = new BizHawk.WinForms.Controls.LocLabelEx(); + this.OK = new System.Windows.Forms.Button(); + this.Cancel = new System.Windows.Forms.Button(); + this.buttonInterpolateBG = new System.Windows.Forms.Button(); + this.buttonLoad = new System.Windows.Forms.Button(); + this.buttonSave = new System.Windows.Forms.Button(); + this.SuspendLayout(); + // + // panel1 + // + this.panel1.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.panel1.Location = new System.Drawing.Point(56, 18); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(40, 32); + this.panel1.TabIndex = 0; + this.panel1.DoubleClick += new System.EventHandler(this.Panel12_DoubleClick); + // + // panel2 + // + this.panel2.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.panel2.Location = new System.Drawing.Point(103, 18); + this.panel2.Name = "panel2"; + this.panel2.Size = new System.Drawing.Size(40, 32); + this.panel2.TabIndex = 1; + this.panel2.DoubleClick += new System.EventHandler(this.Panel12_DoubleClick); + // + // panel3 + // + this.panel3.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.panel3.Location = new System.Drawing.Point(149, 18); + this.panel3.Name = "panel3"; + this.panel3.Size = new System.Drawing.Size(40, 32); + this.panel3.TabIndex = 2; + this.panel3.DoubleClick += new System.EventHandler(this.Panel12_DoubleClick); + // + // panel4 + // + this.panel4.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.panel4.Location = new System.Drawing.Point(195, 18); + this.panel4.Name = "panel4"; + this.panel4.Size = new System.Drawing.Size(40, 32); + this.panel4.TabIndex = 3; + this.panel4.DoubleClick += new System.EventHandler(this.Panel12_DoubleClick); + // + // panel5 + // + this.panel5.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.panel5.Location = new System.Drawing.Point(241, 18); + this.panel5.Name = "panel5"; + this.panel5.Size = new System.Drawing.Size(40, 32); + this.panel5.TabIndex = 4; + this.panel5.DoubleClick += new System.EventHandler(this.Panel12_DoubleClick); + // + // label1 + // + this.label1.Location = new System.Drawing.Point(14, 27); + this.label1.Name = "label1"; + this.label1.Text = "Colors"; + // + // OK + // + this.OK.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.OK.DialogResult = System.Windows.Forms.DialogResult.OK; + this.OK.Location = new System.Drawing.Point(206, 84); + this.OK.Name = "OK"; + this.OK.Size = new System.Drawing.Size(75, 23); + this.OK.TabIndex = 22; + this.OK.Text = "&OK"; + this.OK.UseVisualStyleBackColor = true; + this.OK.Click += new System.EventHandler(this.OK_Click); + // + // Cancel + // + this.Cancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.Cancel.DialogResult = System.Windows.Forms.DialogResult.Cancel; + this.Cancel.Location = new System.Drawing.Point(287, 84); + this.Cancel.Name = "Cancel"; + this.Cancel.Size = new System.Drawing.Size(75, 23); + this.Cancel.TabIndex = 23; + this.Cancel.Text = "&Cancel"; + this.Cancel.UseVisualStyleBackColor = true; + // + // buttonInterpolateBG + // + this.buttonInterpolateBG.Location = new System.Drawing.Point(287, 22); + this.buttonInterpolateBG.Name = "buttonInterpolateBG"; + this.buttonInterpolateBG.Size = new System.Drawing.Size(75, 23); + this.buttonInterpolateBG.TabIndex = 25; + this.buttonInterpolateBG.Text = "Interpolate"; + this.buttonInterpolateBG.UseVisualStyleBackColor = true; + this.buttonInterpolateBG.Click += new System.EventHandler(this.Button3_Click); + // + // buttonLoad + // + this.buttonLoad.Location = new System.Drawing.Point(17, 84); + this.buttonLoad.Name = "buttonLoad"; + this.buttonLoad.Size = new System.Drawing.Size(60, 23); + this.buttonLoad.TabIndex = 28; + this.buttonLoad.Text = "&Load..."; + this.buttonLoad.UseVisualStyleBackColor = true; + this.buttonLoad.Click += new System.EventHandler(this.Button6_Click); + // + // buttonSave + // + this.buttonSave.Location = new System.Drawing.Point(83, 84); + this.buttonSave.Name = "buttonSave"; + this.buttonSave.Size = new System.Drawing.Size(60, 23); + this.buttonSave.TabIndex = 29; + this.buttonSave.Text = "&Save..."; + this.buttonSave.UseVisualStyleBackColor = true; + this.buttonSave.Click += new System.EventHandler(this.Button7_Click); + // + // SameBoyColorChooserForm + // + this.AcceptButton = this.OK; + this.AllowDrop = true; + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.CancelButton = this.Cancel; + this.ClientSize = new System.Drawing.Size(373, 119); + this.Controls.Add(this.buttonSave); + this.Controls.Add(this.buttonLoad); + this.Controls.Add(this.buttonInterpolateBG); + this.Controls.Add(this.Cancel); + this.Controls.Add(this.OK); + this.Controls.Add(this.label1); + this.Controls.Add(this.panel5); + this.Controls.Add(this.panel4); + this.Controls.Add(this.panel3); + this.Controls.Add(this.panel2); + this.Controls.Add(this.panel1); + this.MinimumSize = new System.Drawing.Size(310, 140); + this.Name = "SameBoyColorChooserForm"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + this.Text = "SameBoy Palette Config"; + this.DragDrop += new System.Windows.Forms.DragEventHandler(this.ColorChooserForm_DragDrop); + this.DragEnter += new System.Windows.Forms.DragEventHandler(this.ColorChooserForm_DragEnter); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Panel panel1; + private System.Windows.Forms.Panel panel2; + private System.Windows.Forms.Panel panel3; + private System.Windows.Forms.Panel panel4; + private System.Windows.Forms.Panel panel5; + private BizHawk.WinForms.Controls.LocLabelEx label1; + private System.Windows.Forms.Button OK; + private System.Windows.Forms.Button Cancel; + private System.Windows.Forms.Button buttonInterpolateBG; + private System.Windows.Forms.Button buttonLoad; + private System.Windows.Forms.Button buttonSave; + } +} \ No newline at end of file diff --git a/src/BizHawk.Client.EmuHawk/config/GB/SameBoyColorChooserForm.cs b/src/BizHawk.Client.EmuHawk/config/GB/SameBoyColorChooserForm.cs new file mode 100644 index 0000000000..626cccdf97 --- /dev/null +++ b/src/BizHawk.Client.EmuHawk/config/GB/SameBoyColorChooserForm.cs @@ -0,0 +1,325 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Windows.Forms; +using System.IO; + +using BizHawk.Client.Common; +using BizHawk.Emulation.Common; +using BizHawk.Emulation.Cores.Nintendo.Sameboy; + +namespace BizHawk.Client.EmuHawk +{ + public partial class SameBoyColorChooserForm : Form + { + private readonly IMainFormForConfig _mainForm; + private readonly IGameInfo _game; + private readonly Config _config; + private readonly Sameboy.SameboySettings _settings; + + public SameBoyColorChooserForm(IMainFormForConfig mainForm, IGameInfo game, Config config, Sameboy.SameboySettings settings) + { + _mainForm = mainForm; + _game = game; + _config = config; + _settings = settings; + InitializeComponent(); + SetAllColors(_settings.GetCustomPalette()); + } + + private readonly Color[] _colors = new Color[5]; + + private void RefreshAllBackdrops() + { + panel1.BackColor = _colors[0]; + panel2.BackColor = _colors[1]; + panel3.BackColor = _colors[2]; + panel4.BackColor = _colors[3]; + panel5.BackColor = _colors[4]; + } + + private Color BetweenColor(Color left, Color right, double pos) + { + int r = (int)(right.R * pos + left.R * (1.0 - pos) + 0.5); + int g = (int)(right.G * pos + left.G * (1.0 - pos) + 0.5); + int b = (int)(right.B * pos + left.B * (1.0 - pos) + 0.5); + int a = (int)(right.A * pos + left.A * (1.0 - pos) + 0.5); + + return Color.FromArgb(a, r, g, b); + } + + private void InterpolateColors(int firstIndex, int lastIndex) + { + for (int i = firstIndex + 1; i < lastIndex; i++) + { + double pos = (i - firstIndex) / (double)(lastIndex - firstIndex); + _colors[i] = BetweenColor(_colors[firstIndex], _colors[lastIndex], pos); + } + + RefreshAllBackdrops(); + } + + private void Button3_Click(object sender, EventArgs e) + { + InterpolateColors(0, 3); // todo: interpolate disabled color + } + + private void Panel12_DoubleClick(object sender, EventArgs e) + { + Panel panel = (Panel)sender; + + int i; + if (panel == panel1) + i = 0; + else if (panel == panel2) + i = 1; + else if (panel == panel3) + i = 2; + else if (panel == panel4) + i = 3; + else if (panel == panel5) + i = 4; + else + return; // i = -1; + + using var dlg = new ColorDialog + { + AllowFullOpen = true, + AnyColor = true, + Color = _colors[i] + }; + + // custom colors are ints, not Color structs? + // and they don't work right unless the alpha bits are set to 0 + // and the rgb order is switched + int[] customs = new int[5]; + for (int j = 0; j < customs.Length; j++) + { + customs[j] = _colors[j].R | _colors[j].G << 8 | _colors[j].B << 16; + } + + dlg.CustomColors = customs; + dlg.FullOpen = true; + + var result = dlg.ShowDialog(this); + + if (result == DialogResult.OK) + { + if (_colors[i] != dlg.Color) + { + _colors[i] = dlg.Color; + panel.BackColor = _colors[i]; + } + } + } + + // ini keys for gambatte palette file + // extra key for sameboy disabled screen color + private static readonly string[] PaletteIniKeys = + { + "Background0", + "Background1", + "Background2", + "Background3", + "Sprite%2010", + "Sprite%2011", + "Sprite%2012", + "Sprite%2013", + "Sprite%2020", + "Sprite%2021", + "Sprite%2022", + "Sprite%2023", + "Disabled", + }; + + /// + /// load gambatte-style .pal file + /// this code will not consider sprite colors + /// as sameboy only functions with 4 colors + /// (bg and sprites sharing all 4 colors) + /// if an extra disabled key is present, use it + /// otherwise fallback on background0 + /// + /// null on failure + public static int[] LoadPalFile(TextReader f) + { + var lines = new Dictionary(); + + string line; + while ((line = f.ReadLine()) != null) + { + int i = line.IndexOf('='); + if (i < 0) + { + continue; + } + + try + { + lines.Add(line.Substring(0, i), int.Parse(line.Substring(i + 1))); + } + catch (FormatException) + { + } + } + + int[] ret = new int[5]; + try + { + for (int i = 0; i < 4; i++) + { + ret[i] = lines[PaletteIniKeys[i]]; + } + } + catch (KeyNotFoundException) + { + return null; + } + + if (lines.TryGetValue(PaletteIniKeys[12], out int key)) + { + ret[4] = key; + } + else + { + ret[4] = ret[0]; + } + + return ret; + } + + // save gambatte-style palette file + // this will duplicate the 4 bg colors across sprite colors + private static void SavePalFile(TextWriter f, int[] colors) + { + f.WriteLine("[General]"); + for (int i = 0; i < 12; i++) + { + f.WriteLine($"{PaletteIniKeys[i]}={colors[i % 4]}"); + } + f.WriteLine($"{PaletteIniKeys[12]}={colors[4]}"); + } + + private void SetAllColors(int[] colors) + { + // fix alpha to 255 in created color objects, else problems + for (int i = 0; i < _colors.Length; i++) + { + _colors[i] = Color.FromArgb(255, Color.FromArgb(colors[i])); + } + + RefreshAllBackdrops(); + } + + private void LoadColorFile(string filename, bool alert) + { + try + { + using var f = new StreamReader(filename); + int[] newColors = LoadPalFile(f); + if (newColors == null) + { + throw new Exception(); + } + + SetAllColors(newColors); + } + catch + { + if (alert) + { + _mainForm.ModalMessageBox("Error loading .pal file!"); + } + } + } + + private void SaveColorFile(string filename) + { + try + { + using var f = new StreamWriter(filename); + int[] saveColors = new int[5]; + for (int i = 0; i < 5; i++) + { + // clear alpha because gambatte color files don't usually contain it + saveColors[i] = _colors[i].ToArgb() & 0xffffff; + } + + SavePalFile(f, saveColors); + } + catch + { + _mainForm.ModalMessageBox("Error saving .pal file!"); + } + } + + private void Button6_Click(object sender, EventArgs e) + { + using var ofd = new OpenFileDialog + { + InitialDirectory = _config.PathEntries.ScreenshotAbsolutePathFor(VSystemID.Raw.GB), + Filter = new FilesystemFilterSet(FilesystemFilter.Palettes).ToString(), + RestoreDirectory = true + }; + + var result = ofd.ShowDialog(this); + if (result.IsOk()) + { + LoadColorFile(ofd.FileName, true); + } + } + + private void ColorChooserForm_DragDrop(object sender, DragEventArgs e) + { + if (e.Data.GetDataPresent(DataFormats.FileDrop)) + { + var files = (string[])e.Data.GetData(DataFormats.FileDrop); + + if (files.Length > 1) + { + return; + } + + LoadColorFile(files[0], true); + } + } + + private void ColorChooserForm_DragEnter(object sender, DragEventArgs e) + { + e.Set(DragDropEffects.Move); + } + + private void Button7_Click(object sender, EventArgs e) + { + using var sfd = new SaveFileDialog + { + InitialDirectory = _config.PathEntries.PalettesAbsolutePathFor(VSystemID.Raw.GB), + FileName = $"{_game.Name}.pal", + Filter = new FilesystemFilterSet(FilesystemFilter.Palettes).ToString(), + RestoreDirectory = true + }; + + var result = sfd.ShowDialog(this); + if (result.IsOk()) + { + SaveColorFile(sfd.FileName); + } + } + + private void OK_Click(object sender, EventArgs e) + { + int[] colors = new int[5]; + for (int i = 0; i < 5; i++) + { + colors[i] = _colors[i].ToArgb(); + } + + _settings.SetCustomPalette(colors); + + _mainForm.PutCoreSettings(_settings); + + DialogResult = DialogResult.OK; + Close(); + } + } +} diff --git a/src/BizHawk.Client.EmuHawk/config/GB/SameBoyColorChooserForm.resx b/src/BizHawk.Client.EmuHawk/config/GB/SameBoyColorChooserForm.resx new file mode 100644 index 0000000000..29dcb1b3a3 --- /dev/null +++ b/src/BizHawk.Client.EmuHawk/config/GB/SameBoyColorChooserForm.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/src/BizHawk.Emulation.Cores/Consoles/Nintendo/SameBoy/LibSameBoy.cs b/src/BizHawk.Emulation.Cores/Consoles/Nintendo/SameBoy/LibSameBoy.cs index fb22d1d1df..8eabb51620 100644 --- a/src/BizHawk.Emulation.Cores/Consoles/Nintendo/SameBoy/LibSameBoy.cs +++ b/src/BizHawk.Emulation.Cores/Consoles/Nintendo/SameBoy/LibSameBoy.cs @@ -120,7 +120,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.Sameboy public abstract void sameboy_setscanlinecallback(IntPtr core, ScanlineCallback callback, int sl); [BizImport(cc)] - public abstract void sameboy_setpalette(IntPtr core, Sameboy.SameboySettings.GBPaletteType which); + public abstract void sameboy_setpalette(IntPtr core, Sameboy.SameboySettings.GBPaletteType which, int[] custompal); [BizImport(cc)] public abstract void sameboy_setcolorcorrection(IntPtr core, Sameboy.SameboySettings.ColorCorrectionMode which); diff --git a/src/BizHawk.Emulation.Cores/Consoles/Nintendo/SameBoy/SameBoy.ISettable.cs b/src/BizHawk.Emulation.Cores/Consoles/Nintendo/SameBoy/SameBoy.ISettable.cs index 63c38d2e6b..3658d7902a 100644 --- a/src/BizHawk.Emulation.Cores/Consoles/Nintendo/SameBoy/SameBoy.ISettable.cs +++ b/src/BizHawk.Emulation.Cores/Consoles/Nintendo/SameBoy/SameBoy.ISettable.cs @@ -18,7 +18,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.Sameboy public PutSettingsDirtyBits PutSettings(SameboySettings o) { - LibSameboy.sameboy_setpalette(SameboyState, o.GBPalette); + LibSameboy.sameboy_setpalette(SameboyState, o.GBPalette, o.GetCustomPalette()); LibSameboy.sameboy_setcolorcorrection(SameboyState, o.ColorCorrection); LibSameboy.sameboy_setlighttemperature(SameboyState, o.LightTemperature); LibSameboy.sameboy_sethighpassfilter(SameboyState, o.HighPassFilter); @@ -51,8 +51,12 @@ namespace BizHawk.Emulation.Cores.Nintendo.Sameboy MGB, [Display(Name = "Teal (Game Boy Light)")] GBL, + [Display(Name = "Custom")] + CUSTOM, } + private int[] _customPal; + [DisplayName("GB Mono Palette")] [Description("Selects which palette to use in GB mode. Does nothing in GBC mode.")] [DefaultValue(GBPaletteType.GREY)] @@ -141,9 +145,17 @@ namespace BizHawk.Emulation.Cores.Nintendo.Sameboy [DefaultValue(true)] public bool UseRGBDSSyntax { get; set; } - public SameboySettings() => SettingsUtil.SetDefaultValues(this); + public SameboySettings() + { + SettingsUtil.SetDefaultValues(this); + _customPal = new[] { 0x00ffffff, 0x00aaaaaa, 0x00555555, 0x00000000, 0x00ffffff, }; + } public SameboySettings Clone() => MemberwiseClone() as SameboySettings; + + public int[] GetCustomPalette() => _customPal.Clone() as int[]; + + public void SetCustomPalette(int[] pal) => _customPal = pal.Clone() as int[]; } public class SameboySyncSettings diff --git a/submodules/sameboy/BizInterface.c b/submodules/sameboy/BizInterface.c index ce25162a57..8f01d181ce 100644 --- a/submodules/sameboy/BizInterface.c +++ b/submodules/sameboy/BizInterface.c @@ -35,6 +35,7 @@ typedef struct u32 vbuf[256 * 224]; u32 bg_pal[0x20]; u32 obj_pal[0x20]; + GB_palette_t custom_pal; input_callback_t input_cb; trace_callback_t trace_cb; memory_callback_t read_cb; @@ -479,8 +480,24 @@ EXPORT void sameboy_setscanlinecallback(biz_t* biz, scanline_callback_t callback GB_set_lcd_line_callback(&biz->gb, callback ? ScanlineCallbackRelay : NULL); } -EXPORT void sameboy_setpalette(biz_t* biz, u32 which) +static struct GB_color_s argb_to_rgb(u32 argb) { + struct GB_color_s ret; + ret.r = argb >> 16 & 0xFF; + ret.g = argb >> 8 & 0xFF; + ret.b = argb >> 0 & 0xFF; + return ret; +} + +EXPORT void sameboy_setpalette(biz_t* biz, u32 which, u32* custom_pal) +{ + for (u32 i = 0; i < 4; i++) + { + biz->custom_pal.colors[3 - i] = argb_to_rgb(custom_pal[i]); + } + + biz->custom_pal.colors[4] = argb_to_rgb(custom_pal[4]); + switch (which) { case 0: @@ -495,6 +512,9 @@ EXPORT void sameboy_setpalette(biz_t* biz, u32 which) case 3: GB_set_palette(&biz->gb, &GB_PALETTE_GBL); break; + case 4: + GB_set_palette(&biz->gb, &biz->custom_pal); + break; } } diff --git a/submodules/sameboy/libsameboy b/submodules/sameboy/libsameboy index b31bd58642..f866284b49 160000 --- a/submodules/sameboy/libsameboy +++ b/submodules/sameboy/libsameboy @@ -1 +1 @@ -Subproject commit b31bd586427d486d556a0977084c0d0ab4f64089 +Subproject commit f866284b490cdb3fc45f6114cce3b1e620ae50ef