From 479c3a301c73f12ccab54a45d86ebb20be600663 Mon Sep 17 00:00:00 2001 From: Levent Kaya Date: Sat, 22 Nov 2025 21:35:32 +0300 Subject: [feature] an emulator for viewing fbgl programs --- emu/fbgl_preload.h | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 emu/fbgl_preload.h (limited to 'emu/fbgl_preload.h') diff --git a/emu/fbgl_preload.h b/emu/fbgl_preload.h new file mode 100644 index 0000000..e736943 --- /dev/null +++ b/emu/fbgl_preload.h @@ -0,0 +1,41 @@ +#ifndef FBGL_PRELOAD_H +#define FBGL_PRELOAD_H + +#include +#include + +// Framebuffer configuration +#define FBGL_SHM_KEY 0x1234FBCD +#define FBGL_WIDTH 800 +#define FBGL_HEIGHT 600 +#define FBGL_BPP 32 +#define FBGL_BYTES_PP (FBGL_BPP / 8) +#define FBGL_PITCH (FBGL_WIDTH * FBGL_BYTES_PP) +#define FBGL_SIZE (FBGL_PITCH * FBGL_HEIGHT) + +// Virtual framebuffer file descriptor magic number +#define FBGL_VIRTUAL_FD 1000 + +// Framebuffer state structure +typedef struct { + int virtual_fd; // Virtual file descriptor for /dev/fb0 + void* shared_mem; // Pointer to shared memory + int shm_id; // Shared memory ID + int is_initialized; // Initialization flag + size_t total_writes; // Statistics: number of writes + size_t bytes_written; // Statistics: total bytes written +} fbgl_state_t; + +// Original function pointers structure +typedef struct { + int (*open)(const char*, int, ...); + int (*close)(int); + int (*ioctl)(int, unsigned long, ...); + void* (*mmap)(void*, size_t, int, int, int, off_t); + int (*munmap)(void*, size_t); + ssize_t (*write)(int, const void*, size_t); + ssize_t (*read)(int, void*, size_t); +} fbgl_original_funcs_t; + + +#endif // FBGL_PRELOAD_H -- cgit v1.2.3