#ifndef NOVA64_FRAMEBUFFER_H #define NOVA64_FRAMEBUFFER_H #include "nova64_core.h" #include "nova64_ppu_interface.h" #include #include #include // Display dimensions #define NOVA64_DISPLAY_WIDTH 480 #define NOVA64_DISPLAY_HEIGHT 800 #define NOVA64_DISPLAY_PIXELS (NOVA64_DISPLAY_WIDTH * NOVA64_DISPLAY_HEIGHT) // Framebuffer size in bytes (768,000 bytes) #define NOVA64_FRAMEBUFFER_SIZE_BYTES (NOVA64_DISPLAY_PIXELS * sizeof(pixel_t)) // Alignment requirement for PPU/DMA2D on ESP32-P4 (cache line alignment) #define NOVA64_DMA_ALIGNMENT 64 typedef struct { pixel_t *front_buffer; // Buffer currently being read by display/MIPI-DSI pixel_t *back_buffer; // Buffer currently being written to by WASM/PPU volatile bool vsync_pending; // True when a buffer swap has been requested uint32_t frame_count; // Frame counter } nova64_framebuffer_t; // Global instance access NOVA64_API nova64_framebuffer_t nova64_framebuffer; // Function prototypes bool nova64_framebuffer_init(void); void nova64_framebuffer_destroy(void); void nova64_framebuffer_swap(void); void nova64_framebuffer_clear(pixel_t color); #endif // NOVA64_FRAMEBUFFER_H