Tôi đã thiết kế thiết bị chơi game cầm tay của riêng mình dựa trên bộ vi điều khiển AVR và màn hình OLED nhỏ.
Tôi bắt đầu với màn hình đơn sắc 128x64 pixel và có thể thoải mái vẽ lên nó với tốc độ hơn 60 khung hình mỗi giây.
Gần đây tôi đã làm lại nó để sử dụng OLED RGB, 128x128 pixel mà không thực sự suy nghĩ quá nhiều chỉ để tìm thấy tôi chỉ có thể đạt được khoảng 4 FPS. Sau một vài suy nghĩ và tái cấu trúc cẩn thận, tôi có thể đạt được điều đó lên tới ~ 12fps nếu tôi không quan tâm quá nhiều đến việc làm bất cứ điều gì khác!
Câu hỏi của tôi là - làm thế nào mà một thiết bị như GBA (Game Boy Advance) đạt được tốc độ khung hình gần 60fps? Tôi đã nghĩ về việc có một 'bộ xử lý đồ họa' riêng biệt nhưng nhận ra rằng tôi vẫn sẽ bị tắc nghẽn khi chuyển dữ liệu hiển thị sang đó.
Tôi cũng băn khoăn về việc sử dụng giao diện song song 8 bit, hầu hết các màn hình này có xu hướng tăng tốc, có thể giúp tôi tăng tốc độ 8 lần, ngoại trừ các MCU hiện đại không có xu hướng giao diện song song phần cứng như chúng làm cho nối tiếp và bit- đập có thể sẽ ăn rất nhiều tăng tốc.
Những lựa chọn khác tồn tại?
Tôi hiện đang sử dụng ATmega1284P được kết nối với bộ điều khiển OLED SSD1306 thông qua USART-SPI. Đó là phiên bản đơn sắc.
Màn hình màu là SSD1351, ban đầu không được kết nối với SPI phần cứng. Tôi không tin nó sẽ tạo ra đủ khác biệt, nó chỉ quá chậm nói chung
Tôi biết tôi có thể nhận được MCU nhanh hơn, nhưng tôi muốn biết những tùy chọn khác tôi có thể khám phá - bộ xử lý GBA chậm hơn nhiều so với 1284 của tôi!