/* mgadump.c - read-only: save palette + VRAM. Claude Opus 5.5, 2026-10-13. * usage: mgadump out.raw (768 bytes palette, then 2 MB of VRAM) */ #include #include #include "mga.h" int main(int argc, char **argv) { unsigned char pal[768], *buf; FILE *f; int i; double t; if (argc < 2) { fprintf(stderr, "usage: mgadump out.raw\n"); return 2; } if (mga_open()) return 1; buf = malloc(VRAM_SIZE); mga_getpal(pal); t = mga_now(); for (i = 0; i < VRAM_SIZE; i += 4) *(unsigned int *)(buf + i) = *(volatile unsigned int *)(mga_fb + i); t = mga_now() - t; mga_close(); printf("read 2 MB of VRAM in %.3f s (%.1f MB/s)\n", t, 2.0 / t); f = fopen(argv[1], "wb"); fwrite(pal, 1, 768, f); fwrite(buf, 1, VRAM_SIZE, f); fclose(f); return 0; }