Skip to content

Commit b9e5c8c

Browse files
authored
retro-go: add support for new device brutzelboy (#266)
* add brutzelboy to target list * update hardware documentation
1 parent e141ab7 commit b9e5c8c

File tree

11 files changed

+294
-1
lines changed

11 files changed

+294
-1
lines changed

components/retro-go/config.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
#if defined(RG_TARGET_ODROID_GO)
1+
#if defined(RG_TARGET_BRUTZELBOY)
2+
#include "targets/brutzelboy/config.h"
3+
#elif defined(RG_TARGET_ODROID_GO)
24
#include "targets/odroid-go/config.h"
35
#elif defined(RG_TARGET_MRGC_G32)
46
#include "targets/mrgc-g32/config.h"
Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
2+
// REF: https://wiki.odroid.com/odroid_go/odroid_go
3+
4+
// Target definition
5+
#define RG_TARGET_NAME "brutzelboy"
6+
7+
// Storage
8+
#define RG_STORAGE_ROOT "/sd"
9+
#define RG_STORAGE_SDSPI_HOST SPI3_HOST
10+
#define RG_STORAGE_SDSPI_SPEED SDMMC_FREQ_DEFAULT
11+
// #define RG_STORAGE_SDMMC_HOST SDMMC_HOST_SLOT_1
12+
// #define RG_STORAGE_SDMMC_SPEED SDMMC_FREQ_DEFAULT
13+
// #define RG_STORAGE_FLASH_PARTITION "vfs"
14+
15+
// Audio
16+
#define RG_AUDIO_USE_INT_DAC 0 // 0 = Disable, 1 = GPIO25, 2 = GPIO26, 3 = Both
17+
#define RG_AUDIO_USE_EXT_DAC 1 // 0 = Disable, 1 = Enable
18+
19+
// Video
20+
#define RG_SCREEN_DRIVER 0 // 0 = ILI9341
21+
#define RG_SCREEN_HOST SPI2_HOST
22+
#define RG_SCREEN_SPEED SPI_MASTER_FREQ_40M // SPI_MASTER_FREQ_80M
23+
#define RG_SCREEN_BACKLIGHT 1
24+
#define RG_SCREEN_WIDTH 320
25+
#define RG_SCREEN_HEIGHT 240
26+
#define RG_SCREEN_ROTATE 0
27+
#define RG_SCREEN_MARGIN_TOP 0
28+
#define RG_SCREEN_MARGIN_BOTTOM 0
29+
#define RG_SCREEN_MARGIN_LEFT 0
30+
#define RG_SCREEN_MARGIN_RIGHT 36
31+
#define RG_SCREEN_INIT() \
32+
ILI9341_CMD(0xCF, 0x00, 0xc3, 0x30); \
33+
ILI9341_CMD(0xED, 0x64, 0x03, 0x12, 0x81); \
34+
ILI9341_CMD(0xE8, 0x85, 0x00, 0x78); \
35+
ILI9341_CMD(0xCB, 0x39, 0x2c, 0x00, 0x34, 0x02); \
36+
ILI9341_CMD(0xF7, 0x20); \
37+
ILI9341_CMD(0xEA, 0x00, 0x00); \
38+
ILI9341_CMD(0xC0, 0x1B); /* Power control //VRH[5:0] */ \
39+
ILI9341_CMD(0xC1, 0x12); /* Power control //SAP[2:0];BT[3:0] */ \
40+
ILI9341_CMD(0xC5, 0x32, 0x3C); /* VCM control */ \
41+
ILI9341_CMD(0xC7, 0x91); /* VCM control2 */ \
42+
ILI9341_CMD(0x36, (0x20 | 0x80 | 0x08)); /* Memory Access Control thebrutzler hat ((0x60|0x08)^0xC0))*/ \
43+
ILI9341_CMD(0xB1, 0x00, 0x10); /* Frame Rate Control (1B=70, 1F=61, 10=119) */ \
44+
ILI9341_CMD(0xB6, 0x0A, 0xA2); /* Display Function Control */ \
45+
ILI9341_CMD(0xF6, 0x01, 0x30); \
46+
ILI9341_CMD(0xF2, 0x00); /* 3Gamma Function Disable */ \
47+
ILI9341_CMD(0x26, 0x01); /* Gamma curve selected */ \
48+
ILI9341_CMD(0xE0, 0x0F, 0x31, 0x2B, 0x0C, 0x0E, 0x08, 0x4E, 0xF1, 0x37, 0x07, 0x10, 0x03, 0x0E, 0x09, 0x00); \
49+
ILI9341_CMD(0xE1, 0x00, 0x0E, 0x14, 0x03, 0x11, 0x07, 0x31, 0xC1, 0x48, 0x08, 0x0F, 0x0C, 0x31, 0x36, 0x0F);
50+
51+
52+
// Input
53+
#define RG_GAMEPAD_ADC_FILTER_WINDOW 150 // this is a filter value, to be sure, the adc is in stable situation (not falling or rizing)
54+
#define RG_GAMEPAD_ADC_MAP {\
55+
{RG_KEY_UP, ADC_UNIT_1, ADC_CHANNEL_6, ADC_ATTEN_DB_11, 2000, 4096},\
56+
{RG_KEY_RIGHT, ADC_UNIT_1, ADC_CHANNEL_5, ADC_ATTEN_DB_11, 1500, 1900},\
57+
{RG_KEY_DOWN, ADC_UNIT_1, ADC_CHANNEL_6, ADC_ATTEN_DB_11, 1500, 1900},\
58+
{RG_KEY_LEFT, ADC_UNIT_1, ADC_CHANNEL_5, ADC_ATTEN_DB_11, 2000, 4096},\
59+
}
60+
61+
#define RG_GAMEPAD_GPIO_MAP {\
62+
{RG_KEY_SELECT, GPIO_NUM_16, GPIO_PULLUP_ONLY, 0},\
63+
{RG_KEY_START, GPIO_NUM_17, GPIO_PULLUP_ONLY, 0},\
64+
{RG_KEY_MENU, GPIO_NUM_18, GPIO_PULLUP_ONLY, 0},\
65+
{RG_KEY_OPTION, GPIO_NUM_8, GPIO_PULLUP_ONLY, 0},\
66+
{RG_KEY_A, GPIO_NUM_15, GPIO_PULLUP_ONLY, 0},\
67+
{RG_KEY_B, GPIO_NUM_5, GPIO_PULLUP_ONLY, 0},\
68+
}
69+
70+
// Battery
71+
#define RG_BATTERY_DRIVER 1
72+
#define RG_BATTERY_ADC_UNIT ADC_UNIT_1
73+
#define RG_BATTERY_ADC_CHANNEL ADC1_CHANNEL_3
74+
#define RG_BATTERY_CALC_PERCENT(raw) (((raw) * 2.7f - 2000.f) / (2700.f - 2000.f) * 100.f)
75+
#define RG_BATTERY_CALC_VOLTAGE(raw) ((raw) * 2.7f * 0.001f)
76+
77+
// Status LED
78+
#define RG_GPIO_LED GPIO_NUM_38
79+
80+
// SPI Display (back up working)
81+
#define RG_GPIO_LCD_MISO GPIO_NUM_NC
82+
#define RG_GPIO_LCD_MOSI GPIO_NUM_12
83+
#define RG_GPIO_LCD_CLK GPIO_NUM_48
84+
#define RG_GPIO_LCD_CS GPIO_NUM_NC
85+
#define RG_GPIO_LCD_DC GPIO_NUM_47
86+
#define RG_GPIO_LCD_BCKL GPIO_NUM_39
87+
#define RG_GPIO_LCD_RST GPIO_NUM_3
88+
89+
#define RG_GPIO_SDSPI_MISO GPIO_NUM_9
90+
#define RG_GPIO_SDSPI_MOSI GPIO_NUM_11
91+
#define RG_GPIO_SDSPI_CLK GPIO_NUM_13
92+
#define RG_GPIO_SDSPI_CS GPIO_NUM_10
93+
94+
// External I2S DAC
95+
#define RG_GPIO_SND_I2S_BCK 41
96+
#define RG_GPIO_SND_I2S_WS 42
97+
#define RG_GPIO_SND_I2S_DATA 40
98+
// #define RG_GPIO_SND_AMP_ENABLE 18
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
# brutzelboy by theBrutzler
2+
- Status: online
3+
- Design files and BOM: https://github.com/theBrutzler/ESP32_GBC_RETROFIT
4+
- retrofit design fit in original GBC case
5+
6+
# Hardware info
7+
- Module: ESP32-S3 (16MB Flash)
8+
- Screen: 2.4" ILI9341 Screen
9+
- Battery: NiMh Akku 2xAA 2800mAh
10+
11+
# Images
12+
![front.jpg](front.jpg)
727 KB
Binary file not shown.
2.2 MB
Loading
2.83 MB
Loading
2.36 MB
Loading
2.56 MB
Loading
2.76 MB
Loading
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
2+
import os
3+
4+
os.environ["IDF_TARGET"] = "esp32s3"
5+
os.environ["FW_FORMAT"] = "esplay"

0 commit comments

Comments
 (0)