From 79f8b8001554f8597265fcf3d4de6c73d0cf2018 Mon Sep 17 00:00:00 2001 From: henyxia Date: Thu, 7 May 2015 14:35:21 +0200 Subject: [PATCH] Initial verson --- .gitignore | 1 + Makefile | 19 +++++++++++++++++++ README.md | 1 + main.c | 85 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 106 insertions(+), 0 deletions(-) create mode 100644 .gitignore create mode 100644 Makefile create mode 100644 README.md create mode 100644 main.c diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..72271bd --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +bmp2map diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..fdb2d0d --- /dev/null +++ b/Makefile @@ -0,0 +1,19 @@ +CC=gcc +CC_FLAGS=-c -Wall -Werror -std=gnu99 -g +CC_LIBS= +INCLUDES= + +SOURCES=main.c +OBJECTS=$(SOURCES:.c=.o) +OUTPUT=bmp2map + +all: $(SOURCES) $(OUTPUT) + +$(OUTPUT): $(OBJECTS) + $(CC) $(OBJECTS) $(CC_LIBS) -o $@ + +%.o: %.c + $(CC) $(INCLUDES) $(CC_FLAGS) $< -o $@ + +clear: + rm -f $(OUTPUT) $(OBJECTS) diff --git a/README.md b/README.md new file mode 100644 index 0000000..e8d2bbb --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +# bmp2map diff --git a/main.c b/main.c new file mode 100644 index 0000000..1658b12 --- /dev/null +++ b/main.c @@ -0,0 +1,85 @@ +#include +#include + +int main(int argc, char *argv[]) +{ + if(argc != 3) + { + printf("bmp2map [BMP_SRC] [MAP_DEST]\n"); + return 1; + } + + FILE* src = NULL; + FILE* dst = NULL; + unsigned char buffer[5]; + int initOffsetBMP; + + src = fopen(argv[1], "r"); + dst = fopen(argv[2], "w"); + + if(src == NULL) + { + printf("Unable to open the BMP file\n"); + return 2; + } + + if(dst == NULL) + { + printf("Unable to open the MAP file\n"); + return 3; + } + + //printf("Reading BMP\n"); + + fseek(src, 0x0A, SEEK_SET); + buffer[0] = getc(src); + buffer[1] = getc(src); + buffer[2] = getc(src); + buffer[3] = getc(src); + //printf("Pixel array offset %02x %02x %02x %02x\n", buffer[3], buffer[2], buffer[1], buffer[0]); + initOffsetBMP = buffer[0] + ((int)buffer[1] * 256); + + fseek(src, 0x12, SEEK_SET); + buffer[0] = getc(src); + buffer[1] = getc(src); + buffer[2] = getc(src); + buffer[3] = getc(src); + //printf("Width %02x %02x %02x %02x\n", buffer[3], buffer[2], buffer[1], buffer[0]); + + //fseek(src, 0x12, SEEK_SET); + buffer[0] = getc(src); + buffer[1] = getc(src); + buffer[2] = getc(src); + buffer[3] = getc(src); + //printf("Height %02x %02x %02x %02x\n", buffer[3], buffer[2], buffer[1], buffer[0]); + + fseek(src, 0x1C, SEEK_SET); + buffer[0] = getc(src); + buffer[1] = getc(src); + //printf("Bits Per Pixel %02x %02x\n", buffer[0], buffer[1]); + + if(buffer[1] != 0 || buffer[0] != 0x08) + { + printf("Could not read BMP as it's in %d bits per pixel\n", buffer[0]); + return 1; + } + + fseek(src, initOffsetBMP, SEEK_SET); + + //printf("Now reading BMP pixels and printing them to the MAP file\n"); + while(1) + { + buffer[0] = getc(src); + if(feof(src)) + break; + //printf("Pixel BMP 24 bits Grey %02X\n", buffer[0]); + fprintf(dst, "%c", buffer[0]); + } + + //printf("Done !\n"); + + fclose(src); + fclose(dst); + + return 0; +} -- libgit2 0.21.2