enable gb color

This commit is contained in:
Tobias Gunkel
2025-08-12 01:05:12 +02:00
parent 65edf85f01
commit 7d815de240
4 changed files with 24 additions and 20 deletions
+6
View File
@@ -0,0 +1,6 @@
#define ENABLE_LCD 1
#define ENABLE_SOUND 0 // 1
#define ENABLE_SDCARD 0 // 1
#define PEANUT_GB_HIGH_LCD_ACCURACY 1
#define PEANUT_GB_USE_BIOS 0
#define PEANUT_FULL_GBC_SUPPORT 1
-5
View File
@@ -2,9 +2,6 @@
#include <Arduino.h> #include <Arduino.h>
#define GBCOLOR_HEADER_ONLY
#include "gbcolors.h"
enum class ScalingMode { enum class ScalingMode {
NORMAL = 0, NORMAL = 0,
STRETCH, STRETCH,
@@ -34,8 +31,6 @@ union core_cmd {
uint32_t full; uint32_t full;
}; };
extern palette_t palette; // Colour palette
void lcd_draw_line(struct gb_s* gb, const uint8_t* pixels, const uint_fast8_t line); void lcd_draw_line(struct gb_s* gb, const uint8_t* pixels, const uint_fast8_t line);
void core1_init(); void core1_init();
+12 -8
View File
@@ -1,6 +1,7 @@
#include <TFT_eSPI.h> #include <TFT_eSPI.h>
#define PEANUT_GB_HEADER_ONLY #define PEANUT_GB_HEADER_ONLY
#include "peanut_gb_options.h"
#include "peanut_gb.h" #include "peanut_gb.h"
// Note: must be included before core // Note: must be included before core
@@ -14,7 +15,8 @@ static uint8_t scaledLineOffsetTable[LCD_HEIGHT]; // scaled to 240 lines
/* Pixel data is stored in here. */ /* Pixel data is stored in here. */
static uint8_t pixels_buffer[LCD_WIDTH]; static uint8_t pixels_buffer[LCD_WIDTH];
palette_t palette; // Colour palette extern struct gb_s gb;
extern palette_t palette; // Colour palette
volatile ScalingMode scalingMode = ScalingMode::NORMAL; volatile ScalingMode scalingMode = ScalingMode::NORMAL;
@@ -131,16 +133,18 @@ void lcd_text(char* s, uint8_t x, uint8_t y, uint16_t color, uint16_t bgcolor) {
tft.drawString(s, x, y); tft.drawString(s, x, y);
} }
void lcd_display_control(bool invert, int /*ili9225_color_mode_e*/ colour_mode) {
// TODO
}
void core1_lcd_draw_line(const uint_fast8_t line) { void core1_lcd_draw_line(const uint_fast8_t line) {
static uint16_t fb[LCD_WIDTH]; static uint16_t fb[LCD_WIDTH];
for (unsigned int x = 0; x < LCD_WIDTH; x++) { if (gb.cgb.cgbMode) {
fb[x] = palette[(pixels_buffer[x] & LCD_PALETTE_ALL) >> 4] for (unsigned int x = 0; x < LCD_WIDTH; x++) {
[pixels_buffer[x] & 3]; fb[x] = gb.cgb.fixPalette[pixels_buffer[x]];
}
} else {
for (unsigned int x = 0; x < LCD_WIDTH; x++) {
fb[x] = palette[(pixels_buffer[x] & LCD_PALETTE_ALL) >> 4]
[pixels_buffer[x] & 3];
}
} }
lcd_write_pixels(fb, line, LCD_WIDTH); lcd_write_pixels(fb, line, LCD_WIDTH);
+6 -7
View File
@@ -14,11 +14,7 @@
*/ */
// Peanut-GB emulator settings // Peanut-GB emulator settings
#define ENABLE_LCD 1 #include "peanut_gb_options.h"
#define ENABLE_SOUND 0 // 1
#define ENABLE_SDCARD 0 // 1
#define PEANUT_GB_HIGH_LCD_ACCURACY 1
#define PEANUT_GB_USE_BIOS 0
#include "peanut_gb.h" #include "peanut_gb.h"
/* C Headers */ /* C Headers */
@@ -40,6 +36,9 @@
#include "game_bin.h" #include "game_bin.h"
#include "i2s.h" #include "i2s.h"
#define GBCOLOR_HEADER_ONLY
#include "gbcolors.h"
/* GPIO Connections. */ /* GPIO Connections. */
#ifdef USE_PAD_GPIO #ifdef USE_PAD_GPIO
#define PIN_UP 2 #define PIN_UP 2
@@ -87,6 +86,8 @@ static uint8_t manual_palette_selected = 0;
static PCF8574 pcf8574(0x20, 16, 17); static PCF8574 pcf8574(0x20, 16, 17);
struct gb_s gb;
palette_t palette; // Colour palette
static struct static struct
{ {
@@ -100,8 +101,6 @@ static struct
unsigned down : 1; unsigned down : 1;
} prev_joypad_bits; } prev_joypad_bits;
static struct gb_s gb;
#define putstdio(x) write(1, x, strlen(x)) #define putstdio(x) write(1, x, strlen(x))
/** /**