From c99f5b79df1472e0dfe2e376f8a670e2210db47a Mon Sep 17 00:00:00 2001 From: alpine9000 Date: Sun, 13 Mar 2016 18:06:33 +1100 Subject: [PATCH] Changes to imagecon to support dual playfield --- tools/imagecon/imagecon.c | 10 +++++++++- tools/imagecon/imagecon.h | 1 + tools/imagecon/palette.c | 2 +- 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/tools/imagecon/imagecon.c b/tools/imagecon/imagecon.c index 5f215a4..42f61b9 100644 --- a/tools/imagecon/imagecon.c +++ b/tools/imagecon/imagecon.c @@ -18,7 +18,8 @@ imagecon_config_t config = { .slicedHam = 0, .quantize = 0, .dither = 0, - .overridePalette = 0 + .overridePalette = 0, + .paletteOffset = 0 }; @@ -43,6 +44,7 @@ usage() " --sliced-ham\n"\ " --dither\n"\ " --use-palette \n"\ + " --palette-offset \n"\ " --verbose\n", config.argv[0]); exit(1); } @@ -478,6 +480,7 @@ main(int argc, char **argv) {"sliced-ham", no_argument, &config.slicedHam, 1}, {"dither", no_argument, &config.dither, 1}, {"use-palette", required_argument, 0, 'p'}, + {"palette-offset", required_argument, 0, 'l'}, {"output", required_argument, 0, 'o'}, {"colors", required_argument, 0, 'c'}, {"input", required_argument, 0, 'i'}, @@ -503,6 +506,11 @@ main(int argc, char **argv) case 'p': config.overridePalette = optarg; break; + case 'l': + if (sscanf(optarg, "%d", &config.paletteOffset) != 1) { + abort_("invalid palette offset"); + } + break; case 'c': if (sscanf(optarg, "%d", &config.maxColors) != 1) { abort_("invalid number of colors"); diff --git a/tools/imagecon/imagecon.h b/tools/imagecon/imagecon.h index b54b62c..5200f10 100644 --- a/tools/imagecon/imagecon.h +++ b/tools/imagecon/imagecon.h @@ -31,6 +31,7 @@ typedef struct { int slicedHam; int dither; char* overridePalette; + int paletteOffset; int quantize; int verbose; char** argv; diff --git a/tools/imagecon/palette.c b/tools/imagecon/palette.c index 3bb4671..b821869 100644 --- a/tools/imagecon/palette.c +++ b/tools/imagecon/palette.c @@ -66,7 +66,7 @@ palette_output(imagecon_image_t* ic, char* outFilename) fprintf(paletteFP, "%03x\n", RGB24TORGB12(ic->palette[i].r) << 8 | RGB24TORGB12(ic->palette[i].g) << 4 | RGB24TORGB12(ic->palette[i].b)); } if (paletteAsmFP) { - fprintf(paletteAsmFP, "\tlea COLOR%02d(a6),a0\n\tmove.w #$%03x,(a0)\n", i, RGB24TORGB12(ic->palette[i].r) << 8 | RGB24TORGB12(ic->palette[i].g) << 4 | RGB24TORGB12(ic->palette[i].b)); + fprintf(paletteAsmFP, "\tlea COLOR%02d(a6),a0\n\tmove.w #$%03x,(a0)\n", i+config.paletteOffset, RGB24TORGB12(ic->palette[i].r) << 8 | RGB24TORGB12(ic->palette[i].g) << 4 | RGB24TORGB12(ic->palette[i].b)); } if (paletteGreyFP) { // TODO: this is for compat, can be better