diff --git a/include/arm11/hardware/i2c.h b/include/arm11/hardware/i2c.h index 940adad..ecd96a1 100644 --- a/include/arm11/hardware/i2c.h +++ b/include/arm11/hardware/i2c.h @@ -117,7 +117,7 @@ static inline bool i2cmcu_lcd_poweron(void) { - return I2C_writeReg(I2C_DEV_MCU, 0x22, 1<<1); // bit1 = lcd power enable for both screens + return I2C_writeReg(I2C_DEV_MCU, 0x22, 1<<5 | 1<<3 | 1<<1); // bit1 = lcd power enable for both screens } static inline bool i2cmcu_lcd_backlight_poweron(void) diff --git a/include/hardware/gfx.h b/include/hardware/gfx.h index 05a42f2..8f67eeb 100644 --- a/include/hardware/gfx.h +++ b/include/hardware/gfx.h @@ -25,17 +25,17 @@ #define SCREEN_TOP (1) #define SCREEN_SUB (0) -#define SCREEN_HEIGHT_TOP (240) #define SCREEN_WIDTH_TOP (400) -#define SCREEN_SIZE_TOP (SCREEN_HEIGHT_TOP * SCREEN_WIDTH_TOP * 2) -#define SCREEN_HEIGHT_SUB (240) +#define SCREEN_HEIGHT_TOP (240) +#define SCREEN_SIZE_TOP (SCREEN_WIDTH_TOP * SCREEN_HEIGHT_TOP * 2) #define SCREEN_WIDTH_SUB (320) -#define SCREEN_SIZE_SUB (SCREEN_HEIGHT_SUB * SCREEN_WIDTH_SUB * 2) +#define SCREEN_HEIGHT_SUB (240) +#define SCREEN_SIZE_SUB (SCREEN_WIDTH_SUB * SCREEN_HEIGHT_SUB * 2) #define FRAMEBUF_TOP_A_1 (VRAM_BASE) -#define FRAMEBUF_SUB_A_1 (FRAMEBUF_TOP_A_1 + (SCREEN_WIDTH_TOP * SCREEN_HEIGHT_TOP * 2)) +#define FRAMEBUF_SUB_A_1 (FRAMEBUF_TOP_A_1 + SCREEN_SIZE_TOP) #define FRAMEBUF_TOP_A_2 (VRAM_BASE + 0x100000) -#define FRAMEBUF_SUB_A_2 (FRAMEBUF_TOP_A_2 + (SCREEN_WIDTH_TOP * SCREEN_HEIGHT_TOP * 2)) +#define FRAMEBUF_SUB_A_2 (FRAMEBUF_TOP_A_2 + SCREEN_SIZE_TOP) #define RENDERBUF_TOP (VRAM_BASE + 0x200000 - SCREEN_SIZE_TOP - SCREEN_SIZE_SUB) #define RENDERBUF_SUB (VRAM_BASE + 0x200000 - SCREEN_SIZE_SUB) diff --git a/source/arm11/hardware/gfx.c b/source/arm11/hardware/gfx.c index 1105633..9f16f4c 100644 --- a/source/arm11/hardware/gfx.c +++ b/source/arm11/hardware/gfx.c @@ -295,7 +295,6 @@ { IRQ_registerHandler(IRQ_PDC0, 14, 0, true, gfxIrqHandler); i2cmcu_lcd_poweron(); - i2cmcu_lcd_backlight_poweron(); } void GFX_deinit(void) @@ -309,8 +308,10 @@ // Temporary Luma workaround GX_memoryFill((u64*)FRAMEBUF_TOP_A_1, 1u<<9, SCREEN_SIZE_TOP + SCREEN_SIZE_SUB + 0x2A300, 0, (u64*)FRAMEBUF_TOP_A_2, 1u<<9, SCREEN_SIZE_TOP + SCREEN_SIZE_SUB + 0x2A300, 0); - *((vu32*)(0x10400400+0x70)) = 0x00080341; // Format GL_RGB8_OES - *((vu32*)(0x10400400+0x90)) = SCREEN_HEIGHT_TOP * 3; // Stride 0 - *((vu32*)(0x10400500+0x70)) = 0x00080301; // Format GL_RGB8_OES - *((vu32*)(0x10400500+0x90)) = SCREEN_HEIGHT_SUB * 3; // Stride 0 + *((vu32*)(0x10400400+0x70)) = 0x00080341; // Format GL_RGB8_OES + *((vu32*)(0x10400400+0x90)) = SCREEN_HEIGHT_TOP * 3; // Stride 0 + *((vu32*)(0x10400500+0x68)) = FRAMEBUF_SUB_A_1 + 0x17700; // Sub framebuffer first address + *((vu32*)(0x10400500+0x6C)) = FRAMEBUF_SUB_A_2 + 0x17700; // Sub framebuffer second address + *((vu32*)(0x10400500+0x70)) = 0x00080301; // Format GL_RGB8_OES + *((vu32*)(0x10400500+0x90)) = SCREEN_HEIGHT_SUB * 3; // Stride 0 }