// Apple II hires decoder. Reads an 8K hires page (the .po-derived // `loading_panel.bin` file), unpacks the interleaved scanline layout // into a flat 280x192 1-bit bitmap, and blits a row range into the // port framebuffer using a chosen colour for lit pixels. #ifndef APPLE2HIRES_H #define APPLE2HIRES_H #include #include #include "framebuffer.h" #define HIRES_WIDTH 280 #define HIRES_HEIGHT 192 #define HIRES_BYTES 8192 typedef struct HiresPageT { uint8_t bits[HIRES_WIDTH * HIRES_HEIGHT]; // 1 byte per pixel, 0/1 } HiresPageT; // Decode an 8K hires-page file from `path` into `out`. Returns true // on success. bool apple2HiresLoadFile(const char *path, HiresPageT *out); // Blit rows [srcTopRow, srcTopRow+rows) of the decoded page into // the framebuffer at (dstX, dstY), painting lit pixels with `litColor` // and (if `paintBackground`) unlit pixels with `bgColor`. void apple2HiresBlit(const HiresPageT *page, int16_t srcTopRow, int16_t rows, FramebufferT *fb, int16_t dstX, int16_t dstY, ColorE litColor, ColorE bgColor, bool paintBackground); #endif