From 18a86e1038b20cb6f8922beead08dcc24ba2a4d3 Mon Sep 17 00:00:00 2001 From: raven Date: Wed, 8 Apr 2026 22:51:39 -0500 Subject: rewrite and port to SDL3 --- src/memory.h | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 src/memory.h (limited to 'src/memory.h') diff --git a/src/memory.h b/src/memory.h new file mode 100644 index 0000000..b472d31 --- /dev/null +++ b/src/memory.h @@ -0,0 +1,44 @@ +#ifndef MEMORY_H +#define MEMORY_H + +#include +#include +#include +#include +#include + +#ifndef PAGE_SIZE +#define PAGE_SIZE 4096 +#endif + +#ifndef PAGE_WIDTH +#define PAGE_WIDTH 256 +#endif +#define PAGE_HEIGHT (PAGE_SIZE * CHAR_BIT / PAGE_WIDTH) + +typedef struct page { + struct page_list *l; + uintptr_t address; + SDL_Texture *tex; + uint64_t hash; + bool in_use; + struct page *next; +} page; + +typedef struct page_list { + int fd; + page *first; +} page_list; + +uintptr_t to_addr(int x, int y); +void to_pos(uintptr_t addr, int *x, int *y); + +int init_page_list(page_list *l, int fd); +page *get_page(page_list *l, uintptr_t addr); +void free_unused_pages(page_list *l); +SDL_Texture *get_texture(page *p); +void free_page_list(page_list *l); + +void draw_line(page_list *l, + double x1, double y1, double x2, double y2, bool bit); +#endif -- cgit v1.2.3