From 4379ef9f4725ddc1553c6e12e69934690d655118 Mon Sep 17 00:00:00 2001 From: Mahyar Koshkouei Date: Sun, 27 Mar 2022 22:45:47 +0100 Subject: [PATCH] Fix orientation and offset Signed-off-by: Mahyar Koshkouei --- inc/mk_ili9225.h | 2 ++ src/main.c | 28 ++++++++++++++++++++++++---- src/mk_ili9225.c | 10 +++++++--- 3 files changed, 33 insertions(+), 7 deletions(-) diff --git a/inc/mk_ili9225.h b/inc/mk_ili9225.h index d0e731d..308b8df 100644 --- a/inc/mk_ili9225.h +++ b/inc/mk_ili9225.h @@ -129,6 +129,8 @@ void mk_ili9225_power_control(uint8_t drive_power, bool sleep); void mk_ili9225_set_drive_freq(uint16_t f); +void mk_ili9225_set_x(uint8_t x); + /** * Exit and stop using LCD. Currently does nothing. */ diff --git a/src/main.c b/src/main.c index 66b99d9..661e5a4 100644 --- a/src/main.c +++ b/src/main.c @@ -148,7 +148,8 @@ void core1_lcd_draw_line(const uint_fast8_t line) [pixels_buffer[x] & 3]; } - mk_ili9225_set_address(0, 15 + line); + mk_ili9225_set_address(line + 15, 0xDB - 30); + //mk_ili9225_set_x(line + 15); #if USE_DMA mk_ili9225_write_pixels_start(); dma_channel_transfer_from_buffer_now(dma_lcd, &fb[0], LCD_WIDTH); @@ -193,7 +194,7 @@ void main_core1(void) #endif /* Set LCD window to DMG size. */ - mk_ili9225_set_window(15, LCD_HEIGHT+15, 29, LCD_WIDTH+29); + //mk_ili9225_set_window(15, LCD_HEIGHT+15, 29, LCD_WIDTH+29); while(1) { @@ -205,7 +206,7 @@ void main_core1(void) break; case CORE_CMD_IDLE_SET: - mk_ili9225_display_control(false, cmd.data); + mk_ili9225_display_control(true, cmd.data); break; case CORE_CMD_NOP: @@ -256,7 +257,7 @@ int main(void) /* Initialise USB serial connection for debugging. */ stdio_init_all(); - (void) getchar(); + //(void) getchar(); puts_raw("Starting"); /* Initialise GPIO pins. */ @@ -313,6 +314,7 @@ int main(void) } while(HEDLEY_LIKELY(gb.gb_frame == 0)); frames++; + gb.direct.joypad = 0xFF; input = getchar_timeout_us(0); if(input == PICO_ERROR_TIMEOUT) continue; @@ -368,6 +370,24 @@ int main(void) break; } + case '\n': + { + gb.direct.joypad_bits.start = 0; + break; + } + + case 'z': + { + gb.direct.joypad_bits.a = 0; + break; + } + + case 'x': + { + gb.direct.joypad_bits.b = 0; + break; + } + case 'q': goto out; diff --git a/src/mk_ili9225.c b/src/mk_ili9225.c index 8fd1d96..f242def 100644 --- a/src/mk_ili9225.c +++ b/src/mk_ili9225.c @@ -68,7 +68,7 @@ * decrement (0). * W (0xXX1X): ID0: Control vertical address counter increment (1) or * decrement (0). - * W (0xXXX8): AM: GRAM update direction. "0" is horizontal. + * W (0xXXX8): AM: GRAM update direction. "1" is horizontal. */ #define MK_ILI9225_REG_ENTRY_MODE 0x03 /** @@ -391,8 +391,7 @@ unsigned mk_ili9225_init(void) * Increment vertical and horizontal address. * Use vertical image. * FIXME: Why is BGR enabled? */ - /* TODO: Change to horizontal mode. */ - { MK_ILI9225_REG_ENTRY_MODE, 0x1000 }, + { MK_ILI9225_REG_ENTRY_MODE, 0x0008 }, /* Turn off all display outputs. */ { MK_ILI9225_REG_DISPLAY_CTRL, 0x0000 }, /* Set porches to 8 lines. */ @@ -493,6 +492,11 @@ void mk_ili9225_set_window(uint16_t hor_start, uint16_t hor_end, set_register(MK_ILI9225_REG_VERT_WIN_ADDR2, vert_start); } +void mk_ili9225_set_x(uint8_t x) +{ + set_register(MK_ILI9225_REG_RAM_ADDR_SET1, x); +} + void mk_ili9225_set_address(uint8_t x, uint8_t y) { set_register(MK_ILI9225_REG_RAM_ADDR_SET1, x);